summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2001-05-28 05:21:37 +0000
committerobrien <obrien@FreeBSD.org>2001-05-28 05:21:37 +0000
commit328e45595b12375b6d16a846069507d25086abdb (patch)
treeae2a6f4f4987889b7bd2af7bdf0b86fa580df011
parent7fbb72605a1c3bcb81f8b6bb6297ffef30f84335 (diff)
downloadFreeBSD-src-328e45595b12375b6d16a846069507d25086abdb.zip
FreeBSD-src-328e45595b12375b6d16a846069507d25086abdb.tar.gz
Import of GNU Binutils version 2.11.0.
Believe it or not, this is heavily stripped down.
-rw-r--r--contrib/binutils/Makefile.in362
-rw-r--r--contrib/binutils/bfd/ChangeLog9206
-rw-r--r--contrib/binutils/bfd/ChangeLog-98995595
-rw-r--r--contrib/binutils/bfd/MAINTAINERS1
-rw-r--r--contrib/binutils/bfd/Makefile.am994
-rw-r--r--contrib/binutils/bfd/Makefile.in1390
-rw-r--r--contrib/binutils/bfd/README2
-rw-r--r--contrib/binutils/bfd/acinclude.m422
-rw-r--r--contrib/binutils/bfd/aclocal.m4794
-rw-r--r--contrib/binutils/bfd/aout-arm.c40
-rw-r--r--contrib/binutils/bfd/aout-encap.c12
-rw-r--r--contrib/binutils/bfd/aout-target.h17
-rw-r--r--contrib/binutils/bfd/aout-tic30.c44
-rw-r--r--contrib/binutils/bfd/aoutf1.h19
-rw-r--r--contrib/binutils/bfd/aoutx.h136
-rw-r--r--contrib/binutils/bfd/archive.c291
-rw-r--r--contrib/binutils/bfd/archures.c235
-rw-r--r--contrib/binutils/bfd/armnetbsd.c2
-rw-r--r--contrib/binutils/bfd/bfd-in.h61
-rw-r--r--contrib/binutils/bfd/bfd-in2.h1294
-rw-r--r--contrib/binutils/bfd/bfd.c103
-rw-r--r--contrib/binutils/bfd/binary.c13
-rw-r--r--contrib/binutils/bfd/cache.c21
-rw-r--r--contrib/binutils/bfd/coff-alpha.c29
-rw-r--r--contrib/binutils/bfd/coff-arm.c477
-rw-r--r--contrib/binutils/bfd/coff-aux.c8
-rw-r--r--contrib/binutils/bfd/coff-i386.c29
-rw-r--r--contrib/binutils/bfd/coff-ppc.c786
-rw-r--r--contrib/binutils/bfd/coff-sparc.c8
-rw-r--r--contrib/binutils/bfd/coff-tic30.c8
-rw-r--r--contrib/binutils/bfd/coff-z8k.c14
-rw-r--r--contrib/binutils/bfd/coffcode.h431
-rw-r--r--contrib/binutils/bfd/coffgen.c100
-rw-r--r--contrib/binutils/bfd/cofflink.c118
-rw-r--r--contrib/binutils/bfd/coffswap.h112
-rwxr-xr-xcontrib/binutils/bfd/config.bfd160
-rw-r--r--contrib/binutils/bfd/config.in24
-rwxr-xr-xcontrib/binutils/bfd/configure2016
-rw-r--r--contrib/binutils/bfd/configure.host6
-rw-r--r--contrib/binutils/bfd/configure.in100
-rw-r--r--contrib/binutils/bfd/corefile.c2
-rw-r--r--contrib/binutils/bfd/cpu-alpha.c2
-rw-r--r--contrib/binutils/bfd/cpu-arm.c14
-rw-r--r--contrib/binutils/bfd/cpu-i386.c42
-rw-r--r--contrib/binutils/bfd/cpu-powerpc.c136
-rw-r--r--contrib/binutils/bfd/cpu-sparc.c46
-rw-r--r--contrib/binutils/bfd/cpu-v850.c16
-rw-r--r--contrib/binutils/bfd/cpu-z8k.c8
-rw-r--r--contrib/binutils/bfd/dep-in.sed1
-rw-r--r--contrib/binutils/bfd/doc/ChangeLog31
-rw-r--r--contrib/binutils/bfd/doc/Makefile.in9
-rw-r--r--contrib/binutils/bfd/doc/aoutx.texi2
-rw-r--r--contrib/binutils/bfd/doc/archures.texi161
-rw-r--r--contrib/binutils/bfd/doc/bfd.texinfo409
-rw-r--r--contrib/binutils/bfd/doc/bfdint.texi7
-rw-r--r--contrib/binutils/bfd/doc/bfdt.texi65
-rw-r--r--contrib/binutils/bfd/doc/cache.texi2
-rw-r--r--contrib/binutils/bfd/doc/chew.c1810
-rw-r--r--contrib/binutils/bfd/doc/coffcode.texi12
-rw-r--r--contrib/binutils/bfd/doc/format.texi4
-rw-r--r--contrib/binutils/bfd/doc/hash.texi2
-rw-r--r--contrib/binutils/bfd/doc/libbfd.texi10
-rw-r--r--contrib/binutils/bfd/doc/linker.texi2
-rw-r--r--contrib/binutils/bfd/doc/reloc.texi172
-rw-r--r--contrib/binutils/bfd/doc/section.texi439
-rw-r--r--contrib/binutils/bfd/doc/syms.texi4
-rw-r--r--contrib/binutils/bfd/doc/targets.texi111
-rw-r--r--contrib/binutils/bfd/dwarf1.c240
-rw-r--r--contrib/binutils/bfd/dwarf2.c581
-rw-r--r--contrib/binutils/bfd/ecoff.c79
-rw-r--r--contrib/binutils/bfd/ecofflink.c52
-rw-r--r--contrib/binutils/bfd/ecoffswap.h117
-rw-r--r--contrib/binutils/bfd/elf-bfd.h78
-rw-r--r--contrib/binutils/bfd/elf.c1041
-rw-r--r--contrib/binutils/bfd/elf32-arm.h681
-rw-r--r--contrib/binutils/bfd/elf32-gen.c32
-rw-r--r--contrib/binutils/bfd/elf32-i386.c566
-rw-r--r--contrib/binutils/bfd/elf32-ppc.c454
-rw-r--r--contrib/binutils/bfd/elf32-sparc.c165
-rw-r--r--contrib/binutils/bfd/elf32-v850.c309
-rw-r--r--contrib/binutils/bfd/elf32.c1
-rw-r--r--contrib/binutils/bfd/elf64-alpha.c188
-rw-r--r--contrib/binutils/bfd/elf64-gen.c32
-rw-r--r--contrib/binutils/bfd/elf64-sparc.c274
-rw-r--r--contrib/binutils/bfd/elfarm-nabi.c73
-rw-r--r--contrib/binutils/bfd/elfarm-oabi.c16
-rw-r--r--contrib/binutils/bfd/elfcode.h118
-rw-r--r--contrib/binutils/bfd/elfcore.h76
-rw-r--r--contrib/binutils/bfd/elflink.c40
-rw-r--r--contrib/binutils/bfd/elflink.h480
-rw-r--r--contrib/binutils/bfd/elfxx-target.h17
-rw-r--r--contrib/binutils/bfd/format.c269
-rw-r--r--contrib/binutils/bfd/freebsd.h1
-rw-r--r--contrib/binutils/bfd/hash.c4
-rw-r--r--contrib/binutils/bfd/ieee.c62
-rw-r--r--contrib/binutils/bfd/libaout.h3
-rw-r--r--contrib/binutils/bfd/libbfd-in.h19
-rw-r--r--contrib/binutils/bfd/libbfd.c183
-rw-r--r--contrib/binutils/bfd/libbfd.h186
-rw-r--r--contrib/binutils/bfd/libcoff-in.h9
-rw-r--r--contrib/binutils/bfd/libcoff.h57
-rw-r--r--contrib/binutils/bfd/linker.c29
-rw-r--r--contrib/binutils/bfd/netbsd-core.c16
-rw-r--r--contrib/binutils/bfd/netbsd.h12
-rw-r--r--contrib/binutils/bfd/opncls.c4
-rw-r--r--contrib/binutils/bfd/pe-arm.c4
-rw-r--r--contrib/binutils/bfd/pe-i386.c1
-rw-r--r--contrib/binutils/bfd/pe-ppc.c1
-rw-r--r--contrib/binutils/bfd/po/POTFILES.in21
-rw-r--r--contrib/binutils/bfd/po/bfd.pot1014
-rw-r--r--contrib/binutils/bfd/ppcboot.c4
-rw-r--r--contrib/binutils/bfd/ptrace-core.c22
-rw-r--r--contrib/binutils/bfd/reloc.c334
-rw-r--r--contrib/binutils/bfd/reloc16.c121
-rw-r--r--contrib/binutils/bfd/sco5-core.c54
-rw-r--r--contrib/binutils/bfd/section.c570
-rw-r--r--contrib/binutils/bfd/sparclinux.c8
-rw-r--r--contrib/binutils/bfd/sparcnetbsd.c2
-rw-r--r--contrib/binutils/bfd/srec.c99
-rw-r--r--contrib/binutils/bfd/stab-syms.c6
-rw-r--r--contrib/binutils/bfd/stabs.c4
-rw-r--r--contrib/binutils/bfd/syms.c34
-rw-r--r--contrib/binutils/bfd/sysdep.h12
-rw-r--r--contrib/binutils/bfd/targets.c206
-rw-r--r--contrib/binutils/bfd/tekhex.c19
-rw-r--r--contrib/binutils/bfd/trad-core.c34
-rw-r--r--contrib/binutils/binutils/ChangeLog7764
-rw-r--r--contrib/binutils/binutils/ChangeLog-91975218
-rw-r--r--contrib/binutils/binutils/ChangeLog-98991908
-rw-r--r--contrib/binutils/binutils/MAINTAINERS78
-rw-r--r--contrib/binutils/binutils/Makefile.am43
-rw-r--r--contrib/binutils/binutils/Makefile.in177
-rw-r--r--contrib/binutils/binutils/NEWS12
-rw-r--r--contrib/binutils/binutils/README2
-rw-r--r--contrib/binutils/binutils/acinclude.m431
-rw-r--r--contrib/binutils/binutils/aclocal.m4805
-rw-r--r--contrib/binutils/binutils/addr2line.1380
-rw-r--r--contrib/binutils/binutils/addr2line.c21
-rw-r--r--contrib/binutils/binutils/ar.1392
-rw-r--r--contrib/binutils/binutils/ar.c23
-rw-r--r--contrib/binutils/binutils/binutils.texi488
-rw-r--r--contrib/binutils/binutils/bucomm.c2
-rw-r--r--contrib/binutils/binutils/bucomm.h11
-rw-r--r--contrib/binutils/binutils/coffgrok.c2
-rw-r--r--contrib/binutils/binutils/config.in3
-rw-r--r--contrib/binutils/binutils/config.texi2
-rwxr-xr-xcontrib/binutils/binutils/configure1654
-rw-r--r--contrib/binutils/binutils/configure.in33
-rw-r--r--contrib/binutils/binutils/dlltool.c9
-rw-r--r--contrib/binutils/binutils/dllwrap.c142
-rw-r--r--contrib/binutils/binutils/ieee.c31
-rw-r--r--contrib/binutils/binutils/nm.1392
-rw-r--r--contrib/binutils/binutils/nm.c40
-rw-r--r--contrib/binutils/binutils/objcopy.1400
-rw-r--r--contrib/binutils/binutils/objcopy.c52
-rw-r--r--contrib/binutils/binutils/objdump.1389
-rw-r--r--contrib/binutils/binutils/objdump.c46
-rw-r--r--contrib/binutils/binutils/po/POTFILES.in2
-rw-r--r--contrib/binutils/binutils/po/binutils.pot1965
-rw-r--r--contrib/binutils/binutils/ranlib.1392
-rw-r--r--contrib/binutils/binutils/rclex.c2
-rw-r--r--contrib/binutils/binutils/rcparse.c1453
-rw-r--r--contrib/binutils/binutils/rcparse.y98
-rw-r--r--contrib/binutils/binutils/rdcoff.c22
-rw-r--r--contrib/binutils/binutils/readelf.c1940
-rw-r--r--contrib/binutils/binutils/resrc.c42
-rw-r--r--contrib/binutils/binutils/size.1392
-rw-r--r--contrib/binutils/binutils/size.c18
-rw-r--r--contrib/binutils/binutils/srconv.c31
-rw-r--r--contrib/binutils/binutils/stabs.c22
-rw-r--r--contrib/binutils/binutils/strings.1390
-rw-r--r--contrib/binutils/binutils/strings.c4
-rw-r--r--contrib/binutils/binutils/strip.1392
-rw-r--r--contrib/binutils/binutils/sysdump.c4
-rw-r--r--contrib/binutils/binutils/version.c4
-rw-r--r--contrib/binutils/config-ml.in159
-rwxr-xr-xcontrib/binutils/config.guess547
-rw-r--r--contrib/binutils/config.if93
-rwxr-xr-xcontrib/binutils/config.sub129
-rw-r--r--contrib/binutils/config/ChangeLog17
-rwxr-xr-xcontrib/binutils/config/acinclude.m41
-rw-r--r--contrib/binutils/config/mh-openedition2
-rw-r--r--contrib/binutils/config/mh-sparcpic2
-rw-r--r--contrib/binutils/config/mt-sparcpic2
-rwxr-xr-xcontrib/binutils/configure35
-rw-r--r--contrib/binutils/configure.in351
-rw-r--r--contrib/binutils/gas/ChangeLog8430
-rw-r--r--contrib/binutils/gas/ChangeLog-96971
-rw-r--r--contrib/binutils/gas/ChangeLog-98994854
-rw-r--r--contrib/binutils/gas/MAINTAINERS1
-rw-r--r--contrib/binutils/gas/Makefile.am1533
-rw-r--r--contrib/binutils/gas/Makefile.in1599
-rw-r--r--contrib/binutils/gas/NEWS22
-rw-r--r--contrib/binutils/gas/README2
-rw-r--r--contrib/binutils/gas/acinclude.m416
-rw-r--r--contrib/binutils/gas/aclocal.m4788
-rw-r--r--contrib/binutils/gas/app.c124
-rw-r--r--contrib/binutils/gas/as.c210
-rw-r--r--contrib/binutils/gas/as.h205
-rw-r--r--contrib/binutils/gas/asintl.h15
-rw-r--r--contrib/binutils/gas/atof-generic.c52
-rw-r--r--contrib/binutils/gas/bignum-copy.c7
-rw-r--r--contrib/binutils/gas/bit_fix.h33
-rw-r--r--contrib/binutils/gas/cond.c153
-rw-r--r--contrib/binutils/gas/config.in6
-rw-r--r--contrib/binutils/gas/config/aout_gnu.h7
-rw-r--r--contrib/binutils/gas/config/atof-ieee.c205
-rw-r--r--contrib/binutils/gas/config/obj-aout.c140
-rw-r--r--contrib/binutils/gas/config/obj-aout.h10
-rw-r--r--contrib/binutils/gas/config/obj-coff.c292
-rw-r--r--contrib/binutils/gas/config/obj-coff.h72
-rw-r--r--contrib/binutils/gas/config/obj-ecoff.c23
-rw-r--r--contrib/binutils/gas/config/obj-elf.c341
-rw-r--r--contrib/binutils/gas/config/obj-elf.h43
-rw-r--r--contrib/binutils/gas/config/obj-generic.h16
-rw-r--r--contrib/binutils/gas/config/obj-ieee.c196
-rw-r--r--contrib/binutils/gas/config/obj-ieee.h14
-rw-r--r--contrib/binutils/gas/config/obj-multi.h63
-rw-r--r--contrib/binutils/gas/config/tc-alpha.c922
-rw-r--r--contrib/binutils/gas/config/tc-alpha.h7
-rw-r--r--contrib/binutils/gas/config/tc-arm.c3725
-rw-r--r--contrib/binutils/gas/config/tc-arm.h25
-rw-r--r--contrib/binutils/gas/config/tc-i386.c3568
-rw-r--r--contrib/binutils/gas/config/tc-i386.h326
-rw-r--r--contrib/binutils/gas/config/tc-m68851.h104
-rw-r--r--contrib/binutils/gas/config/tc-ppc.c470
-rw-r--r--contrib/binutils/gas/config/tc-ppc.h33
-rw-r--r--contrib/binutils/gas/config/tc-sparc.c808
-rw-r--r--contrib/binutils/gas/config/tc-sparc.h27
-rw-r--r--contrib/binutils/gas/config/tc-tic30.c152
-rw-r--r--contrib/binutils/gas/config/tc-tic30.h4
-rw-r--r--contrib/binutils/gas/config/tc-v850.c1349
-rw-r--r--contrib/binutils/gas/config/tc-v850.h16
-rw-r--r--contrib/binutils/gas/config/tc-z8k.c783
-rw-r--r--contrib/binutils/gas/config/tc-z8k.h8
-rw-r--r--contrib/binutils/gas/config/te-386bsd.h13
-rw-r--r--contrib/binutils/gas/config/te-aux.h2
-rw-r--r--contrib/binutils/gas/config/te-nbsd.h8
-rw-r--r--contrib/binutils/gas/config/te-ppcnw.h13
-rw-r--r--contrib/binutils/gas/config/te-sparcaout.h11
-rw-r--r--contrib/binutils/gas/config/te-sysv32.h2
-rwxr-xr-xcontrib/binutils/gas/configure1506
-rw-r--r--contrib/binutils/gas/configure.in134
-rw-r--r--contrib/binutils/gas/debug.c3
-rw-r--r--contrib/binutils/gas/dep-in.sed58
-rw-r--r--contrib/binutils/gas/depend.c17
-rw-r--r--contrib/binutils/gas/doc/Makefile.am4
-rw-r--r--contrib/binutils/gas/doc/Makefile.in14
-rw-r--r--contrib/binutils/gas/doc/all.texi3
-rw-r--r--contrib/binutils/gas/doc/as.1392
-rw-r--r--contrib/binutils/gas/doc/as.texinfo999
-rw-r--r--contrib/binutils/gas/doc/c-arm.texi33
-rw-r--r--contrib/binutils/gas/doc/c-i386.texi254
-rw-r--r--contrib/binutils/gas/doc/gasp.texi410
-rw-r--r--contrib/binutils/gas/doc/internals.texi62
-rw-r--r--contrib/binutils/gas/dwarf2dbg.c1566
-rw-r--r--contrib/binutils/gas/dwarf2dbg.h27
-rw-r--r--contrib/binutils/gas/ecoff.c376
-rw-r--r--contrib/binutils/gas/ehopt.c135
-rw-r--r--contrib/binutils/gas/expr.c546
-rw-r--r--contrib/binutils/gas/expr.h20
-rw-r--r--contrib/binutils/gas/flonum-copy.c39
-rw-r--r--contrib/binutils/gas/flonum-konst.c185
-rw-r--r--contrib/binutils/gas/flonum-mult.c78
-rw-r--r--contrib/binutils/gas/flonum.h18
-rw-r--r--contrib/binutils/gas/frags.c179
-rw-r--r--contrib/binutils/gas/frags.h75
-rw-r--r--contrib/binutils/gas/gasp.c813
-rw-r--r--contrib/binutils/gas/hash.c62
-rw-r--r--contrib/binutils/gas/input-file.c47
-rw-r--r--contrib/binutils/gas/input-file.h8
-rw-r--r--contrib/binutils/gas/input-scrub.c193
-rw-r--r--contrib/binutils/gas/itbl-ops.c166
-rw-r--r--contrib/binutils/gas/itbl-ops.h6
-rw-r--r--contrib/binutils/gas/listing.c282
-rw-r--r--contrib/binutils/gas/literal.c4
-rw-r--r--contrib/binutils/gas/macro.c133
-rw-r--r--contrib/binutils/gas/macro.h42
-rw-r--r--contrib/binutils/gas/messages.c160
-rw-r--r--contrib/binutils/gas/obj.h9
-rw-r--r--contrib/binutils/gas/po/POTFILES.in12
-rw-r--r--contrib/binutils/gas/po/gas.pot5383
-rw-r--r--contrib/binutils/gas/read.c1149
-rw-r--r--contrib/binutils/gas/read.h42
-rw-r--r--contrib/binutils/gas/sb.c22
-rw-r--r--contrib/binutils/gas/sb.h8
-rw-r--r--contrib/binutils/gas/stabs.c111
-rw-r--r--contrib/binutils/gas/struc-symbol.h21
-rw-r--r--contrib/binutils/gas/subsegs.c24
-rw-r--r--contrib/binutils/gas/subsegs.h26
-rw-r--r--contrib/binutils/gas/symbols.c441
-rw-r--r--contrib/binutils/gas/symbols.h6
-rw-r--r--contrib/binutils/gas/tc.h10
-rw-r--r--contrib/binutils/gas/write.c751
-rw-r--r--contrib/binutils/gas/write.h23
-rw-r--r--contrib/binutils/include/ChangeLog283
-rw-r--r--contrib/binutils/include/MAINTAINERS1
-rw-r--r--contrib/binutils/include/alloca-conf.h24
-rw-r--r--contrib/binutils/include/ansidecl.h8
-rw-r--r--contrib/binutils/include/aout/ChangeLog9
-rw-r--r--contrib/binutils/include/aout/aout64.h16
-rw-r--r--contrib/binutils/include/bfdlink.h24
-rw-r--r--contrib/binutils/include/bin-bugs.h2
-rw-r--r--contrib/binutils/include/coff/ChangeLog61
-rw-r--r--contrib/binutils/include/coff/internal.h9
-rw-r--r--contrib/binutils/include/coff/pe.h191
-rw-r--r--contrib/binutils/include/coff/ti.h434
-rw-r--r--contrib/binutils/include/demangle.h21
-rw-r--r--contrib/binutils/include/dis-asm.h17
-rw-r--r--contrib/binutils/include/elf/ChangeLog268
-rw-r--r--contrib/binutils/include/elf/alpha.h5
-rw-r--r--contrib/binutils/include/elf/arc.h24
-rw-r--r--contrib/binutils/include/elf/arm.h112
-rw-r--r--contrib/binutils/include/elf/avr.h4
-rw-r--r--contrib/binutils/include/elf/common.h94
-rw-r--r--contrib/binutils/include/elf/cris.h47
-rw-r--r--contrib/binutils/include/elf/d10v.h4
-rw-r--r--contrib/binutils/include/elf/d30v.h4
-rw-r--r--contrib/binutils/include/elf/fr30.h5
-rw-r--r--contrib/binutils/include/elf/hppa.h577
-rw-r--r--contrib/binutils/include/elf/i370.h2
-rw-r--r--contrib/binutils/include/elf/i386.h5
-rw-r--r--contrib/binutils/include/elf/i860.h66
-rw-r--r--contrib/binutils/include/elf/i960.h5
-rw-r--r--contrib/binutils/include/elf/ia64.h190
-rw-r--r--contrib/binutils/include/elf/internal.h5
-rw-r--r--contrib/binutils/include/elf/m32r.h5
-rw-r--r--contrib/binutils/include/elf/m68hc11.h42
-rw-r--r--contrib/binutils/include/elf/m68k.h5
-rw-r--r--contrib/binutils/include/elf/mcore.h5
-rw-r--r--contrib/binutils/include/elf/mips.h17
-rw-r--r--contrib/binutils/include/elf/mn10200.h4
-rw-r--r--contrib/binutils/include/elf/mn10300.h5
-rw-r--r--contrib/binutils/include/elf/pj.h5
-rw-r--r--contrib/binutils/include/elf/ppc.h16
-rw-r--r--contrib/binutils/include/elf/reloc-macros.h44
-rw-r--r--contrib/binutils/include/elf/sh.h17
-rw-r--r--contrib/binutils/include/elf/sparc.h5
-rw-r--r--contrib/binutils/include/elf/v850.h8
-rw-r--r--contrib/binutils/include/elf/x86-64.h46
-rw-r--r--contrib/binutils/include/floatformat.h5
-rw-r--r--contrib/binutils/include/getopt.h12
-rw-r--r--contrib/binutils/include/hashtab.h42
-rw-r--r--contrib/binutils/include/libiberty.h27
-rw-r--r--contrib/binutils/include/md5.h142
-rw-r--r--contrib/binutils/include/obstack.h3
-rw-r--r--contrib/binutils/include/opcode/ChangeLog249
-rw-r--r--contrib/binutils/include/opcode/i386.h2113
-rw-r--r--contrib/binutils/include/opcode/ppc.h8
-rw-r--r--contrib/binutils/include/opcode/sparc.h6
-rw-r--r--contrib/binutils/include/safe-ctype.h100
-rw-r--r--contrib/binutils/include/sort.h48
-rw-r--r--contrib/binutils/include/splay-tree.h10
-rw-r--r--contrib/binutils/include/symcat.h13
-rw-r--r--contrib/binutils/ld/ChangeLog10860
-rw-r--r--contrib/binutils/ld/ChangeLog-91977576
-rw-r--r--contrib/binutils/ld/ChangeLog-98992108
-rw-r--r--contrib/binutils/ld/MAINTAINERS1
-rw-r--r--contrib/binutils/ld/Makefile.am185
-rw-r--r--contrib/binutils/ld/Makefile.in217
-rw-r--r--contrib/binutils/ld/NEWS30
-rw-r--r--contrib/binutils/ld/acinclude.m415
-rw-r--r--contrib/binutils/ld/aclocal.m4769
-rw-r--r--contrib/binutils/ld/configdoc.texi1
-rwxr-xr-xcontrib/binutils/ld/configure1641
-rw-r--r--contrib/binutils/ld/configure.host57
-rw-r--r--contrib/binutils/ld/configure.in24
-rw-r--r--contrib/binutils/ld/configure.tgt83
-rw-r--r--contrib/binutils/ld/deffile.h136
-rw-r--r--contrib/binutils/ld/dep-in.sed2
-rw-r--r--contrib/binutils/ld/emulparams/armelf.sh3
-rw-r--r--contrib/binutils/ld/emulparams/armelf_linux.sh9
-rw-r--r--contrib/binutils/ld/emulparams/elf32lppc.sh16
-rw-r--r--contrib/binutils/ld/emulparams/elf32lppcsim.sh18
-rw-r--r--contrib/binutils/ld/emulparams/elf32ppc.sh12
-rw-r--r--contrib/binutils/ld/emulparams/elf32ppclinux.sh12
-rw-r--r--contrib/binutils/ld/emulparams/elf32ppcsim.sh18
-rw-r--r--contrib/binutils/ld/emulparams/elf64_sparc.sh15
-rw-r--r--contrib/binutils/ld/emulparams/elf64alpha.sh55
-rw-r--r--contrib/binutils/ld/emulparams/elf_i386_chaos.sh10
-rw-r--r--contrib/binutils/ld/emultempl/armcoff.em7
-rw-r--r--contrib/binutils/ld/emultempl/armelf.em1250
-rw-r--r--contrib/binutils/ld/emultempl/armelf_oabi.em7
-rw-r--r--contrib/binutils/ld/emultempl/elf32.em1319
-rw-r--r--contrib/binutils/ld/emultempl/generic.em10
-rw-r--r--contrib/binutils/ld/emultempl/linux.em7
-rw-r--r--contrib/binutils/ld/emultempl/pe.em579
-rw-r--r--contrib/binutils/ld/emultempl/ticoff.em202
-rw-r--r--contrib/binutils/ld/emultempl/vanilla.em9
-rw-r--r--contrib/binutils/ld/gen-doc.texi1
-rwxr-xr-xcontrib/binutils/ld/genscripts.sh31
-rw-r--r--contrib/binutils/ld/ld.1420
-rw-r--r--contrib/binutils/ld/ld.h49
-rw-r--r--contrib/binutils/ld/ld.texinfo615
-rw-r--r--contrib/binutils/ld/ldcref.c16
-rw-r--r--contrib/binutils/ld/ldctor.c11
-rw-r--r--contrib/binutils/ld/ldctor.h10
-rw-r--r--contrib/binutils/ld/ldemul.c153
-rw-r--r--contrib/binutils/ld/ldemul.h24
-rw-r--r--contrib/binutils/ld/ldexp.c706
-rw-r--r--contrib/binutils/ld/ldexp.h25
-rw-r--r--contrib/binutils/ld/ldfile.c166
-rw-r--r--contrib/binutils/ld/ldfile.h14
-rw-r--r--contrib/binutils/ld/ldgram.y7
-rw-r--r--contrib/binutils/ld/ldint.texinfo395
-rw-r--r--contrib/binutils/ld/ldlang.c1032
-rw-r--r--contrib/binutils/ld/ldlang.h200
-rw-r--r--contrib/binutils/ld/ldlex.h2
-rw-r--r--contrib/binutils/ld/ldlex.l2
-rw-r--r--contrib/binutils/ld/ldmain.c79
-rw-r--r--contrib/binutils/ld/ldmisc.c58
-rw-r--r--contrib/binutils/ld/ldver.c12
-rw-r--r--contrib/binutils/ld/ldwrite.c165
-rw-r--r--contrib/binutils/ld/lexsup.c234
-rw-r--r--contrib/binutils/ld/mri.c359
-rw-r--r--contrib/binutils/ld/pe-dll.c293
-rw-r--r--contrib/binutils/ld/po/ld.pot756
-rw-r--r--contrib/binutils/ld/scripttempl/elf.sc125
-rw-r--r--contrib/binutils/ld/scripttempl/v850.sc68
-rw-r--r--contrib/binutils/ld/scripttempl/z8000.sc45
-rw-r--r--contrib/binutils/libiberty/ChangeLog742
-rw-r--r--contrib/binutils/libiberty/Makefile.in75
-rw-r--r--contrib/binutils/libiberty/aclocal.m4136
-rw-r--r--contrib/binutils/libiberty/argv.c11
-rw-r--r--contrib/binutils/libiberty/basename.c4
-rw-r--r--contrib/binutils/libiberty/bsearch.c75
-rw-r--r--contrib/binutils/libiberty/choose-temp.c10
-rw-r--r--contrib/binutils/libiberty/config.in52
-rw-r--r--contrib/binutils/libiberty/config.table1
-rw-r--r--contrib/binutils/libiberty/config/mh-openedition2
-rwxr-xr-xcontrib/binutils/libiberty/configure803
-rw-r--r--contrib/binutils/libiberty/configure.in98
-rw-r--r--contrib/binutils/libiberty/cp-demangle.c1369
-rw-r--r--contrib/binutils/libiberty/cplus-dem.c280
-rw-r--r--contrib/binutils/libiberty/dyn-string.c24
-rw-r--r--contrib/binutils/libiberty/floatformat.c41
-rw-r--r--contrib/binutils/libiberty/fnmatch.c10
-rw-r--r--contrib/binutils/libiberty/getcwd.c6
-rw-r--r--contrib/binutils/libiberty/getopt.c4
-rw-r--r--contrib/binutils/libiberty/getopt1.c4
-rw-r--r--contrib/binutils/libiberty/getruntime.c14
-rw-r--r--contrib/binutils/libiberty/hashtab.c327
-rw-r--r--contrib/binutils/libiberty/md5.c421
-rw-r--r--contrib/binutils/libiberty/memcmp.c4
-rw-r--r--contrib/binutils/libiberty/mkstemps.c3
-rw-r--r--contrib/binutils/libiberty/objalloc.c7
-rw-r--r--contrib/binutils/libiberty/obstack.c4
-rw-r--r--contrib/binutils/libiberty/partition.c12
-rw-r--r--contrib/binutils/libiberty/pexecute.c53
-rw-r--r--contrib/binutils/libiberty/rename.c6
-rw-r--r--contrib/binutils/libiberty/safe-ctype.c163
-rw-r--r--contrib/binutils/libiberty/setenv.c14
-rw-r--r--contrib/binutils/libiberty/sigsetmask.c2
-rw-r--r--contrib/binutils/libiberty/sort.c190
-rw-r--r--contrib/binutils/libiberty/splay-tree.c115
-rw-r--r--contrib/binutils/libiberty/strerror.c19
-rw-r--r--contrib/binutils/libiberty/strncmp.c28
-rw-r--r--contrib/binutils/libiberty/strsignal.c19
-rw-r--r--contrib/binutils/libiberty/strtod.c13
-rw-r--r--contrib/binutils/libiberty/strtol.c23
-rw-r--r--contrib/binutils/libiberty/strtoul.c21
-rw-r--r--contrib/binutils/libiberty/vasprintf.c54
-rw-r--r--contrib/binutils/libiberty/vfork.c4
-rw-r--r--contrib/binutils/libiberty/waitpid.c7
-rw-r--r--contrib/binutils/libiberty/xexit.c9
-rw-r--r--contrib/binutils/libiberty/xmalloc.c97
-rw-r--r--contrib/binutils/libiberty/xmemdup.c3
-rwxr-xr-xcontrib/binutils/ltconfig2306
-rw-r--r--contrib/binutils/ltmain.sh2682
-rw-r--r--contrib/binutils/md5.sum2992
-rw-r--r--contrib/binutils/opcodes/ChangeLog6323
-rw-r--r--contrib/binutils/opcodes/ChangeLog-92973791
-rw-r--r--contrib/binutils/opcodes/ChangeLog-98991669
-rw-r--r--contrib/binutils/opcodes/MAINTAINERS1
-rw-r--r--contrib/binutils/opcodes/Makefile.am388
-rw-r--r--contrib/binutils/opcodes/Makefile.in397
-rw-r--r--contrib/binutils/opcodes/acinclude.m416
-rw-r--r--contrib/binutils/opcodes/aclocal.m4788
-rw-r--r--contrib/binutils/opcodes/arm-dis.c68
-rw-r--r--contrib/binutils/opcodes/arm-opc.h73
-rw-r--r--contrib/binutils/opcodes/config.in3
-rwxr-xr-xcontrib/binutils/opcodes/configure1515
-rw-r--r--contrib/binutils/opcodes/configure.in52
-rw-r--r--contrib/binutils/opcodes/disassemble.c53
-rw-r--r--contrib/binutils/opcodes/i386-dis.c2189
-rw-r--r--contrib/binutils/opcodes/opintl.h24
-rw-r--r--contrib/binutils/opcodes/po/POTFILES.in20
-rw-r--r--contrib/binutils/opcodes/po/opcodes.pot134
-rw-r--r--contrib/binutils/opcodes/ppc-dis.c14
-rw-r--r--contrib/binutils/opcodes/ppc-opc.c1099
-rw-r--r--contrib/binutils/opcodes/sparc-dis.c18
-rw-r--r--contrib/binutils/opcodes/sparc-opc.c43
-rw-r--r--contrib/binutils/opcodes/sysdep.h2
-rw-r--r--contrib/binutils/opcodes/tic30-dis.c70
-rw-r--r--contrib/binutils/opcodes/z8k-dis.c23
-rwxr-xr-xcontrib/binutils/symlink-tree5
496 files changed, 113393 insertions, 73329 deletions
diff --git a/contrib/binutils/Makefile.in b/contrib/binutils/Makefile.in
index ed19949..14a7756 100644
--- a/contrib/binutils/Makefile.in
+++ b/contrib/binutils/Makefile.in
@@ -1,7 +1,7 @@
#
# Makefile for directory with subdirs to build.
-# Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 97, 1998
-# Free Software Foundation
+# Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+# 1999, 2000, 2001 Free Software Foundation
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -37,7 +37,8 @@ infodir=${prefix}/info
mandir=${prefix}/man
gxx_include_dir=${includedir}/g++
-tooldir = $(exec_prefix)/$(target)
+tooldir = $(exec_prefix)/$(target_alias)
+build_tooldir = $(exec_prefix)/$(target_alias)
program_transform_name =
@@ -97,9 +98,9 @@ CHILL_LIB = -lchill
CXX = c++
# Use -O2 to stress test the compiler.
-LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates -fexceptions
+LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
CXXFLAGS_FOR_TARGET = $(CXXFLAGS)
-LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates -fexceptions
+LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
RANLIB = ranlib
@@ -111,6 +112,7 @@ NM = nm
LD = ld
BZIPPROG = bzip2
+MD5PROG = md5sum
# These values are substituted by configure.
DEFAULT_YACC = yacc
@@ -167,9 +169,7 @@ OTHERS =
# This is set by the configure script to the list of directories which
# should be built using the target tools.
-
-
-TARGET_CONFIGDIRS = libiberty libgloss $(SPECIAL_LIBS) newlib libio librx libstdc++ libg++ winsup opcodes bsp libstub cygmon
+TARGET_CONFIGDIRS = libiberty libgloss $(SPECIAL_LIBS) newlib libio librx libstdc++ libg++ winsup opcodes bsp libstub cygmon libf2c libchill libobjc
# Target libraries are put under this directory:
# Changed by configure to $(target_alias) if cross.
@@ -186,14 +186,19 @@ SET_LIB_PATH =
# the libraries. This may be changed by configure.in.
RPATH_ENVVAR = LD_LIBRARY_PATH
+# This is the list of directories that may be needed in RPATH_ENVVAR
+# so that programs built for the host machine work.
+HOST_LIB_PATH = $$r/bfd:$$r/opcodes
+
+# This is the list of directories that may be needed in RPATH_ENVVAR
+# so that prorgams built for the target machine work.
+TARGET_LIB_PATH = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs:$$r/$(TARGET_SUBDIR)/libstdc++
+
# configure.in sets SET_LIB_PATH to this if --enable-shared was used.
+# Some platforms don't like blank entries, so we remove duplicate,
+# leading and trailing colons.
REALLY_SET_LIB_PATH = \
- if [ x"$$$(RPATH_ENVVAR)" != x ]; then \
- $(RPATH_ENVVAR)=$$r/bfd:$$r/opcodes:$$$(RPATH_ENVVAR); \
- else \
- $(RPATH_ENVVAR)=$$r/bfd:$$r/opcodes; \
- fi; \
- export $(RPATH_ENVVAR);
+ $(RPATH_ENVVAR)=`echo "$(HOST_LIB_PATH):$(TARGET_LIB_PATH):$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR);
ALL = all.normal
INSTALL_TARGET = installdirs \
@@ -210,66 +215,17 @@ INSTALL_TARGET_CROSS = installdirs \
$(INSTALL_X11_MODULES) \
$(INSTALL_DOSREL)
-CC_FOR_TARGET = ` \
- if [ -f $$r/gcc/xgcc ] ; then \
- if [ -f $$r/$(TARGET_SUBDIR)/newlib/Makefile ] ; then \
- case "$(target_canonical)" in \
- i[3456]86-*-cygwin*) \
- echo $$r/gcc/xgcc -B$$r/gcc/ -B$$r/$(TARGET_SUBDIR)/newlib/ -L$$r/$(TARGET_SUBDIR)/winsup -idirafter $$r/$(TARGET_SUBDIR)/newlib/targ-include -idirafter $$s/winsup/include -idirafter $$s/newlib/libc/include -idirafter $$s/newlib/libc/sys/cygwin -idirafter $$s/newlib/libc/sys/cygwin32 -nostdinc; \
- ;; \
- *) \
- echo $$r/gcc/xgcc -B$$r/gcc/ -idirafter $$r/$(TARGET_SUBDIR)/newlib/targ-include -idirafter $$s/newlib/libc/include -nostdinc; \
- ;; \
- esac \
- else \
- echo $$r/gcc/xgcc -B$$r/gcc/; \
- fi; \
- else \
- if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \
- echo $(CC); \
- else \
- t='$(program_transform_name)'; echo gcc | sed -e 's/x/x/' $$t; \
- fi; \
- fi`
+# Should be substed by configure.in
+FLAGS_FOR_TARGET =
+CC_FOR_TARGET =
+CHILL_FOR_TARGET =
+CXX_FOR_TARGET =
-# If CC_FOR_TARGET is not overriden on the command line, then this
+# If GCC_FOR_TARGET is not overriden on the command line, then this
# variable is passed down to the gcc Makefile, where it is used to
# build libgcc2.a. We define it here so that it can itself be
# overridden on the command line.
-GCC_FOR_TARGET = $$r/gcc/xgcc -B$$r/gcc/
-
-CHILL_FOR_TARGET = ` \
- if [ -f $$r/gcc/xgcc ] ; then \
- echo $$r/gcc/xgcc -B$$r/gcc/ -L$$r/gcc/ch/runtime/; \
- else \
- if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \
- echo $(CC); \
- else \
- t='$(program_transform_name)'; echo gcc | sed -e 's/x/x/' $$t; \
- fi; \
- fi`
-
-CXX_FOR_TARGET = ` \
- if [ -f $$r/gcc/xgcc ] ; then \
- if [ -f $$r/$(TARGET_SUBDIR)/newlib/Makefile ] ; then \
- case "$(target_canonical)" in \
- i[3456]86-*-cygwin*) \
- echo $$r/gcc/xgcc -B$$r/gcc/ -B$$r/$(TARGET_SUBDIR)/newlib/ -L$$r/$(TARGET_SUBDIR)/winsup -idirafter $$r/$(TARGET_SUBDIR)/newlib/targ-include -idirafter $$s/winsup/include -idirafter $$s/newlib/libc/include -idirafter $$s/newlib/libc/sys/cygwin -idirafter $$s/newlib/libc/sys/cygwin32 -nostdinc; \
- ;; \
- *) \
- echo $$r/gcc/xgcc -B$$r/gcc/ -idirafter $$r/$(TARGET_SUBDIR)/newlib/targ-include -idirafter $$s/newlib/libc/include -nostdinc; \
- ;; \
- esac \
- else \
- echo $$r/gcc/xgcc -B$$r/gcc/; \
- fi; \
- else \
- if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \
- echo $(CXX); \
- else \
- t='$(program_transform_name)'; echo c++ | sed -e 's/x/x/' $$t; \
- fi; \
- fi`
+GCC_FOR_TARGET = $$r/gcc/xgcc -B$$r/gcc/ $(FLAGS_FOR_TARGET)
AS_FOR_TARGET = ` \
if [ -f $$r/gas/as-new ] ; then \
@@ -422,6 +378,7 @@ BASE_FLAGS_TO_PASS = \
"sharedstatedir=$(sharedstatedir)" \
"sysconfdir=$(sysconfdir)" \
"tooldir=$(tooldir)" \
+ "build_tooldir=$(build_tooldir)" \
"gxx_include_dir=$(gxx_include_dir)" \
"gcc_version=$(gcc_version)" \
"gcc_version_trigger=$(gcc_version_trigger)" \
@@ -521,6 +478,7 @@ ALL_MODULES = \
all-bison \
all-byacc \
all-bzip2 \
+ all-cgen \
all-cvssrc \
all-db \
all-dejagnu \
@@ -563,7 +521,9 @@ ALL_MODULES = \
all-sed \
all-send-pr \
all-shellutils \
+ all-sid \
all-sim \
+ all-snavigator \
all-tar \
all-tcl \
all-tcl8.1 \
@@ -574,6 +534,7 @@ ALL_MODULES = \
all-uudecode \
all-wdiff \
all-zip \
+ all-zlib \
$(EXTRA_TARGET_HOST_ALL_MODULES)
# This is a list of the check targets for all of the modules which are
@@ -597,6 +558,7 @@ CROSS_CHECK_MODULES = \
check-bfd \
check-binutils \
check-bzip2 \
+ check-cgen \
check-cvssrc \
check-db \
check-dejagnu \
@@ -635,6 +597,8 @@ CROSS_CHECK_MODULES = \
check-sed \
check-send-pr \
check-shellutils \
+ check-snavigator \
+ check-sid \
check-sim \
check-tar \
check-tcl \
@@ -667,6 +631,7 @@ INSTALL_MODULES = \
install-binutils \
install-bison \
install-byacc \
+ install-cgen \
install-cvssrc \
install-db \
install-dejagnu \
@@ -709,7 +674,9 @@ INSTALL_MODULES = \
install-sed \
install-send-pr \
install-shellutils \
+ install-sid \
install-sim \
+ install-snavigator \
install-tar \
install-textutils \
install-tgas \
@@ -764,9 +731,13 @@ INSTALL_X11_MODULES = \
ALL_TARGET_MODULES = \
all-target-libio \
all-target-libstdc++ \
+ all-target-libstdc++-v3 \
all-target-librx \
all-target-libg++ \
all-target-newlib \
+ all-target-libf2c \
+ all-target-libchill \
+ all-target-libobjc \
all-target-libtermcap \
all-target-winsup \
all-target-libgloss \
@@ -774,6 +745,11 @@ ALL_TARGET_MODULES = \
all-target-gperf \
all-target-examples \
all-target-libstub \
+ all-target-libffi \
+ all-target-libjava \
+ all-target-zlib \
+ all-target-boehm-gc \
+ all-target-qthreads \
all-target-bsp \
all-target-cygmon
@@ -782,9 +758,13 @@ ALL_TARGET_MODULES = \
CONFIGURE_TARGET_MODULES = \
configure-target-libio \
configure-target-libstdc++ \
+ configure-target-libstdc++-v3 \
configure-target-librx \
configure-target-libg++ \
configure-target-newlib \
+ configure-target-libf2c \
+ configure-target-libchill \
+ configure-target-libobjc \
configure-target-libtermcap \
configure-target-winsup \
configure-target-libgloss \
@@ -792,6 +772,11 @@ CONFIGURE_TARGET_MODULES = \
configure-target-gperf \
configure-target-examples \
configure-target-libstub \
+ configure-target-libffi \
+ configure-target-libjava \
+ configure-target-zlib \
+ configure-target-boehm-gc \
+ configure-target-qthreads \
configure-target-bsp \
configure-target-cygmon
@@ -800,10 +785,19 @@ CONFIGURE_TARGET_MODULES = \
CHECK_TARGET_MODULES = \
check-target-libio \
check-target-libstdc++ \
+ check-target-libstdc++-v3 \
check-target-libg++ \
check-target-newlib \
+ check-target-libf2c \
+ check-target-libchill \
+ check-target-libobjc \
check-target-winsup \
check-target-libiberty \
+ check-target-libffi \
+ check-target-libjava \
+ check-target-zlib \
+ check-target-boehm-gc \
+ check-target-qthreads \
check-target-gperf
# This is a list of the install targets for all of the modules which are
@@ -811,13 +805,21 @@ CHECK_TARGET_MODULES = \
INSTALL_TARGET_MODULES = \
install-target-libio \
install-target-libstdc++ \
+ install-target-libstdc++-v3 \
install-target-libg++ \
install-target-newlib \
+ install-target-libf2c \
+ install-target-libchill \
+ install-target-libobjc \
install-target-libtermcap \
install-target-winsup \
install-target-libgloss \
install-target-libiberty \
install-target-bsp \
+ install-target-libjava \
+ install-target-zlib \
+ install-target-boehm-gc \
+ install-target-qthreads \
install-target-gperf
# This is a list of the targets for which we can do a clean-{target}.
@@ -832,6 +834,7 @@ CLEAN_MODULES = \
clean-bison \
clean-byacc \
clean-bzip2 \
+ clean-cgen \
clean-cvssrc \
clean-db \
clean-dejagnu \
@@ -874,7 +877,9 @@ CLEAN_MODULES = \
clean-sed \
clean-send-pr \
clean-shellutils \
+ clean-sid \
clean-sim \
+ clean-snavigator \
clean-tar \
clean-tcl \
clean-texinfo \
@@ -883,21 +888,31 @@ CLEAN_MODULES = \
clean-time \
clean-uudecode \
clean-wdiff \
- clean-zip
+ clean-zip \
+ clean-zlib
# All of the target modules that can be cleaned
CLEAN_TARGET_MODULES = \
clean-target-libio \
clean-target-libstdc++ \
+ clean-target-libstdc++-v3 \
clean-target-librx \
clean-target-libg++ \
clean-target-newlib \
+ clean-target-libf2c \
+ clean-target-libchill \
+ clean-target-libobjc \
clean-target-winsup \
clean-target-libgloss \
clean-target-libiberty \
clean-target-gperf \
clean-target-examples \
clean-target-libstub \
+ clean-target-libffi \
+ clean-target-libjava \
+ clean-target-zlib \
+ clean-target-boehm-gc \
+ clean-target-qthreads \
clean-target-bsp \
clean-target-cygmon
@@ -1052,7 +1067,12 @@ $(CLEAN_TARGET_MODULES):
true; \
fi
-clean-target: $(CLEAN_TARGET_MODULES)
+clean-target: $(CLEAN_TARGET_MODULES) clean-target-libgcc
+clean-target-libgcc:
+ test ! -d gcc/libgcc || \
+ (cd gcc/libgcc && find . -type d -print) | \
+ while read d; do rm -f gcc/$$d/libgcc.a || : ; done
+ -rm -rf gcc/libgcc
# Check target.
@@ -1154,7 +1174,6 @@ gcc-no-fixedincludes:
mv gcc/tmp-include gcc/include 2>/dev/null; \
else true; fi
-
# This rule is used to build the modules which use FLAGS_TO_PASS. To
# build a target all-X means to cd to X and make all.
#
@@ -1433,12 +1452,12 @@ all-gcc:
# in parallel.
#
.PHONY: bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean
-bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean: all-texinfo all-bison all-byacc all-binutils all-gas all-ld
+bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean: all-bootstrap
@r=`pwd`; export r; \
s=`cd $(srcdir); pwd`; export s; \
$(SET_LIB_PATH) \
echo "Bootstrapping the compiler"; \
- cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) $@
+ cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) $@
@r=`pwd`; export r; \
s=`cd $(srcdir); pwd`; export s; \
case "$@" in \
@@ -1454,7 +1473,7 @@ bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean b
esac; \
$(SET_LIB_PATH) \
echo "$$msg"; \
- cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) $$compare
+ cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) $$compare
@r=`pwd`; export r; \
s=`cd $(srcdir); pwd` ; export s; \
$(SET_LIB_PATH) \
@@ -1467,7 +1486,7 @@ cross: all-texinfo all-bison all-byacc all-binutils all-gas all-ld
s=`cd $(srcdir); pwd`; export s; \
$(SET_LIB_PATH) \
echo "Building the C and C++ compiler"; \
- cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) LANGUAGES="c c++"
+ cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) LANGUAGES="c c++"
@r=`pwd`; export r; \
s=`cd $(srcdir); pwd` ; export s; \
$(SET_LIB_PATH) \
@@ -1533,20 +1552,23 @@ all-bash:
all-bfd: all-libiberty all-intl
all-binutils: all-libiberty all-opcodes all-bfd all-flex all-bison all-byacc all-intl
all-bison: all-texinfo
-configure-target-bsp: $(ALL_GCC)
-all-target-bsp: configure-target-bsp all-gcc all-binutils all-target-newlib
+configure-target-boehm-gc: $(ALL_GCC_CXX) configure-target-qthreads
+all-target-boehm-gc: configure-target-boehm-gc
+configure-target-bsp: $(ALL_GCC_C)
+all-target-bsp: configure-target-bsp
all-byacc:
all-bzip2:
+all-cgen: all-libiberty
all-cvssrc:
-configure-target-cygmon: $(ALL_GCC)
-all-target-cygmon: configure-target-cygmon all-gas all-ld all-gcc all-target-libiberty all-target-newlib all-target-libio all-target-libstub all-target-bsp
+configure-target-cygmon: $(ALL_GCC_C)
+all-target-cygmon: configure-target-cygmon all-target-libiberty all-target-libio all-target-libstub all-target-bsp
all-db:
all-dejagnu: all-tcl all-expect all-tk
all-diff: all-libiberty
all-emacs:
all-emacs19: all-bison all-byacc
all-etc:
-configure-target-examples: $(ALL_GCC)
+configure-target-examples: $(ALL_GCC_C)
all-target-examples: configure-target-examples
all-expect: all-tcl all-tk
all-fileutils: all-libiberty
@@ -1557,15 +1579,18 @@ all-gas: all-libiberty all-opcodes all-bfd all-intl
all-gash: all-tcl
all-gawk:
ALL_GCC = all-gcc
-all-gcc: all-bison all-byacc all-binutils all-gas all-ld
-all-bootstrap: all-libiberty all-bison all-byacc all-binutils all-gas all-ld
+ALL_GCC_C = $(ALL_GCC) all-target-newlib all-target-libgloss
+ALL_GCC_CXX = $(ALL_GCC_C) all-target-libstdc++ all-target-libstdc++-v3
+all-gcc: all-bison all-byacc all-binutils all-gas all-ld all-zlib
+all-bootstrap: all-libiberty all-texinfo all-bison all-byacc all-binutils all-gas all-ld all-zlib
GDB_TK = all-tk all-tcl all-itcl all-tix all-libgui
all-gdb: all-libiberty all-opcodes all-bfd all-mmalloc all-readline all-bison all-byacc all-sim $(gdbnlmrequirements) $(GDB_TK)
all-gettext:
all-gnuserv:
-configure-target-gperf: $(ALL_GCC)
+configure-target-gperf: $(ALL_GCC_C)
all-target-gperf: configure-target-gperf all-target-libiberty all-target-libstdc++
all-gprof: all-libiberty all-bfd all-opcodes all-intl
+all-grep: all-libiberty
all-grez: all-libiberty all-bfd all-opcodes
all-gui: all-gdb all-libproc all-target-librx
all-guile:
@@ -1577,40 +1602,56 @@ all-intl:
all-ispell: all-emacs19
all-itcl: all-tcl all-tk all-tcl8.1 all-tk8.1
all-ld: all-libiberty all-bfd all-opcodes all-bison all-byacc all-flex all-intl
-configure-target-libg++: $(ALL_GCC) configure-target-librx
-all-target-libg++: configure-target-libg++ all-gas all-ld all-gcc all-target-libiberty all-target-newlib all-target-libio all-target-librx all-target-libstdc++
+configure-target-libg++: $(ALL_GCC_CXX) configure-target-librx
+all-target-libg++: configure-target-libg++ all-target-libiberty all-target-librx
configure-target-libgloss: $(ALL_GCC)
all-target-libgloss: configure-target-libgloss configure-target-newlib
-configure-target-libio: $(ALL_GCC)
+configure-target-libio: $(ALL_GCC_C)
all-target-libio: configure-target-libio all-gas all-ld all-gcc all-target-libiberty all-target-newlib
-check-target-libio:
+check-target-libio: all-target-libstdc++
all-libgui: all-tcl all-tk all-tcl8.1 all-tk8.1 all-itcl
all-libiberty:
-configure-target-librx: $(ALL_GCC) configure-target-newlib
+configure-target-libffi: $(ALL_GCC_C)
+all-target-libffi: configure-target-libffi
+configure-target-libjava: $(ALL_GCC_CXX) configure-target-zlib configure-target-boehm-gc configure-target-qthreads configure-target-libffi
+all-target-libjava: configure-target-libjava all-zip all-target-zlib all-target-boehm-gc all-target-qthreads all-target-libffi
+configure-target-librx: $(ALL_GCC_C)
all-target-librx: configure-target-librx
-configure-target-libstdc++: $(ALL_GCC)
-all-target-libstdc++: configure-target-libstdc++ all-gas all-ld all-gcc all-target-libiberty all-target-newlib all-target-libio
-configure-target-libstub: $(ALL_GCC)
+configure-target-libstdc++: $(ALL_GCC_C)
+all-target-libstdc++: configure-target-libstdc++ all-target-libiberty all-target-libio
+configure-target-libstdc++-v3: $(ALL_GCC_C)
+all-target-libstdc++-v3: configure-target-libstdc++-v3 all-target-libiberty
+configure-target-libstub: $(ALL_GCC_C)
all-target-libstub: configure-target-libstub
all-libtool:
+configure-target-libf2c: $(ALL_GCC_C)
+all-target-libf2c: configure-target-libf2c all-target-libiberty
+configure-target-libchill: $(ALL_GCC_C)
+all-target-libchill: configure-target-libchill all-target-libiberty
+configure-target-libobjc: $(ALL_GCC_C)
+all-target-libobjc: configure-target-libobjc all-target-libiberty
all-m4: all-libiberty
all-make: all-libiberty
all-mmalloc:
configure-target-newlib: $(ALL_GCC)
-configure-target-libtermcap: $(ALL_GCC)
-all-target-newlib: configure-target-newlib all-binutils all-gas all-gcc
-all-target-libtermcap: configure-target-libtermcap all-binutils all-gas all-gcc
-all-opcodes: all-bfd all-libiberty
+all-target-newlib: configure-target-newlib
+configure-target-libtermcap: $(ALL_GCC_C)
+all-target-libtermcap: configure-target-libtermcap
+all-opcodes: all-bfd all-libiberty all-cgen
all-patch: all-libiberty
all-perl:
all-prms: all-libiberty
+configure-target-qthreads: $(ALL_GCC_C)
+all-target-qthreads: configure-target-qthreads
all-rcs:
all-readline:
all-recode: all-libiberty
all-sed: all-libiberty
all-send-pr: all-prms
all-shellutils:
-all-sim: all-libiberty all-bfd all-opcodes all-readline
+all-sid: all-tcl all-tk
+all-sim: all-libiberty all-bfd all-opcodes all-readline all-cgen
+all-snavigator: all-tcl all-tk all-itcl all-db all-grep all-libgui
all-tar: all-libiberty
all-tcl:
all-tcl8.1:
@@ -1623,15 +1664,19 @@ all-tgas: all-libiberty all-bfd all-opcodes
all-time:
all-tix: all-tcl all-tk all-tcl8.1 all-tk8.1
all-wdiff:
-all-target-winsup: all-target-newlib all-target-libiberty all-target-libtermcap configure-target-winsup
-configure-target-winsup: configure-target-newlib
+configure-target-winsup: $(ALL_GCC_C)
+all-target-winsup: all-target-libiberty all-target-libtermcap configure-target-winsup
all-uudecode: all-libiberty
all-zip:
-configure-target-libiberty: $(ALL_GCC)
-all-target-libiberty: configure-target-libiberty all-gcc all-ld all-target-newlib
+all-zlib:
+configure-target-zlib: $(ALL_GCC_C)
+all-target-zlib: configure-target-zlib
+configure-target-libiberty: $(ALL_GCC_C)
+all-target-libiberty: configure-target-libiberty
all-target: $(ALL_TARGET_MODULES)
install-target: $(INSTALL_TARGET_MODULES)
install-gdb: install-tcl install-tk install-itcl install-tix install-libgui
+install-sid: install-tcl install-tk
### other supporting targets
MAKEDIRS= \
@@ -1677,22 +1722,67 @@ DEVO_SUPPORT= README Makefile.in configure configure.in \
config.guess config.if config.sub config move-if-change \
mpw-README mpw-build.in mpw-config.in mpw-configure mpw-install \
COPYING COPYING.LIB install-sh config-ml.in symlink-tree \
- mkinstalldirs ltconfig ltmain.sh missing ylwrap
+ mkinstalldirs ltconfig ltmain.sh missing ylwrap \
+ libtool.m4 gettext.m4 ltcf-c.sh ltcf-cxx.sh ltcf-gcj.sh
# Files in devo/etc used in any net release.
# ChangeLog omitted because it may refer to files which are not in this
# distribution (perhaps it would be better to include it anyway).
ETC_SUPPORT= Makefile.in configure configure.in standards.texi \
make-stds.texi standards.info* configure.texi configure.info* \
- configbuild.* configdev.*
+ configbuild.* configdev.*
+
# When you use `make setup-dirs' or `make taz' you should always redefine
# this macro.
SUPPORT_FILES = list-of-support-files-for-tool-in-question
-.PHONY: taz
+# NOTE: No double quotes in the below. It is used within shell script
+# as VER="$(VER)"
+VER = ` if grep AM_INIT_AUTOMAKE $(TOOL)/configure.in >/dev/null 2>&1; then \
+ sed < $(TOOL)/configure.in -n 's/AM_INIT_AUTOMAKE[^,]*, *\([^)]*\))/\1/p'; \
+ else \
+ sed < $(TOOL)/Makefile.in -n 's/^VERSION *= *//p'; \
+ fi`
+PACKAGE = $(TOOL)
+.PHONY: taz
taz: $(DEVO_SUPPORT) $(SUPPORT_FILES) texinfo/texinfo.tex
+ $(MAKE) -f Makefile.in do-proto-toplev \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+ $(MAKE) -f Makefile.in do-md5sum \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+ $(MAKE) -f Makefile.in do-tar-bz2 \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+
+.PHONY: gdb-taz
+gdb-taz: $(DEVO_SUPPORT) $(SUPPORT_FILES) texinfo/texinfo.tex
+ $(MAKE) -f Makefile.in do-proto-toplev \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+ $(MAKE) -f Makefile.in do-md5sum \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+ $(MAKE) -f Makefile.in do-djunpack \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+ $(MAKE) -f Makefile.in do-tar-bz2 \
+ TOOL=$(TOOL) PACKAGE="$(PACKAGE)" VER="$(VER)" \
+ MD5PROG="$(MD5PROG)" \
+ SUPPORT_FILES="$(SUPPORT_FILES)"
+
+.PHONY: do-proto-toplev
+do-proto-toplev: $(DEVO_SUPPORT) $(SUPPORT_FILES) texinfo/texinfo.tex
+ echo "==> Making $(PACKAGE)-$(VER)/"
# Take out texinfo from a few places.
sed -e '/^all\.normal: /s/\all-texinfo //' \
-e '/^ install-texinfo /d' \
@@ -1701,7 +1791,8 @@ taz: $(DEVO_SUPPORT) $(SUPPORT_FILES) texinfo/texinfo.tex
#
./configure sun4
[ -z "$(CONFIGURE_TARGET_MODULES)" ] \
- || $(MAKE) $(CONFIGURE_TARGET_MODULES) ALL_GCC="" \
+ || $(MAKE) $(CONFIGURE_TARGET_MODULES) \
+ ALL_GCC="" ALL_GCC_C="" ALL_GCC_CXX="" \
CC_FOR_TARGET="$(CC)" CXX_FOR_TARGET="$(CXX)"
# Make links, and run "make diststuff" or "make info" when needed.
rm -rf proto-toplev ; mkdir proto-toplev
@@ -1721,7 +1812,7 @@ taz: $(DEVO_SUPPORT) $(SUPPORT_FILES) texinfo/texinfo.tex
fi ; \
else ln -s ../$$d proto-toplev/$$d ; fi ; \
done
- cd etc ; $(MAKE) info
+ cd etc && $(MAKE) info
$(MAKE) distclean
#
mkdir proto-toplev/etc
@@ -1742,25 +1833,35 @@ taz: $(DEVO_SUPPORT) $(SUPPORT_FILES) texinfo/texinfo.tex
ln -s ../../../texinfo/util/tex3patch proto-toplev/texinfo/util ; \
else true; fi
chmod -R og=u . || chmod og=u `find . -print`
- if grep AM_INIT_AUTOMAKE $(TOOL)/configure.in >/dev/null 2>&1; then \
- ver=`sed < $(TOOL)/configure.in -n 's/AM_INIT_AUTOMAKE[^,]*, *\([^)]*\))/\1/p'`; \
- else \
- ver=`sed <$(TOOL)/Makefile.in -n 's/^VERSION *= *//p'`; \
- fi; \
- if test x"$(PACKAGE)" = x; then \
- package="$(TOOL)"; \
- else \
- package="$(PACKAGE)"; \
- fi; \
- $(MAKE) -f Makefile.in do-tar-bz2 TOOL=$(TOOL) VER=$$ver PACKAGE=$$package
+ #
+ -rm -f $(PACKAGE)-$(VER)
+ ln -s proto-toplev $(PACKAGE)-$(VER)
+.PHONY: do-tar-bz2
do-tar-bz2:
echo "==> Making $(PACKAGE)-$(VER).tar.bz2"
- -rm -f $(PACKAGE)-$(VER)
- ln -s proto-toplev $(PACKAGE)-$(VER)
- tar cfh $(PACKAGE)-$(VER).tar $(PACKAGE)-$(VER)
+ -rm -f $(PACKAGE)-$(VER).tar.bz2
+ find $(PACKAGE)-$(VER) -follow -name CVS -prune -o -type f -print \
+ | tar cTfh - $(PACKAGE)-$(VER).tar
$(BZIPPROG) -v -9 $(PACKAGE)-$(VER).tar
+.PHONY: do-md5sum
+do-md5sum:
+ echo "==> Adding md5 checksum to top-level directory"
+ cd proto-toplev && find * -follow -name CVS -prune -o -type f -print \
+ | xargs $(MD5PROG) > ../md5.sum
+ mv md5.sum proto-toplev
+
+.PHONY: do-djunpack
+do-djunpack:
+ echo "==> Adding updated djunpack.bat to top-level directory"
+ echo - 's /gdb-[0-9\.]*/gdb-'"$(VER)"'/'
+ sed < djunpack.bat > djunpack.new \
+ -e 's/gdb-[0-9][0-9\.]*/gdb-'"$(VER)"'/'
+ mv djunpack.new djunpack.bat
+ -rm -f proto-toplev/djunpack.bat
+ ln -s ../djunpack.bat proto-toplev/djunpack.bat
+
TEXINFO_SUPPORT= texinfo/texinfo.tex
DIST_SUPPORT= $(DEVO_SUPPORT) $(TEXINFO_SUPPORT)
@@ -1768,6 +1869,7 @@ DIST_SUPPORT= $(DEVO_SUPPORT) $(TEXINFO_SUPPORT)
GAS_SUPPORT_DIRS= bfd include libiberty opcodes intl setup.com makefile.vms mkdep
gas.tar.bz2: $(DIST_SUPPORT) $(GAS_SUPPORT_DIRS) gas
$(MAKE) -f Makefile.in taz TOOL=gas \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(GAS_SUPPORT_DIRS)"
# The FSF "binutils" release includes gprof and ld.
@@ -1775,53 +1877,62 @@ gas.tar.bz2: $(DIST_SUPPORT) $(GAS_SUPPORT_DIRS) gas
BINUTILS_SUPPORT_DIRS= bfd gas include libiberty opcodes ld gprof intl setup.com makefile.vms mkdep
binutils.tar.bz2: $(DIST_SUPPORT) $(BINUTILS_SUPPORT_DIRS) binutils
$(MAKE) -f Makefile.in taz TOOL=binutils \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(BINUTILS_SUPPORT_DIRS)"
.PHONY: gas+binutils.tar.bz2
GASB_SUPPORT_DIRS= $(GAS_SUPPORT_DIRS) binutils ld gprof
gas+binutils.tar.bz2: $(DIST_SUPPORT) $(GASB_SUPPORT_DIRS) gas
$(MAKE) -f Makefile.in taz TOOL=gas \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(GASB_SUPPORT_DIRS)"
.PHONY: libg++.tar.bz2
LIBGXX_SUPPORT_DIRS=include libstdc++ libio librx libiberty
libg++.tar.bz2: $(DIST_SUPPORT) libg++
$(MAKE) -f Makefile.in taz TOOL=libg++ \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(LIBGXX_SUPPORT_DIRS)"
GNATS_SUPPORT_DIRS=include libiberty send-pr
gnats.tar.bz2: $(DIST_SUPPORT) $(GNATS_SUPPORT_DIRS) gnats
$(MAKE) -f Makefile.in taz TOOL=gnats \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(GNATS_SUPPORT_DIRS)"
.PHONY: gdb.tar.bz2
GDB_SUPPORT_DIRS= bfd include libiberty mmalloc opcodes readline sim utils intl
gdb.tar.bz2: $(DIST_SUPPORT) $(GDB_SUPPORT_DIRS) gdb
- $(MAKE) -f Makefile.in taz TOOL=gdb \
+ $(MAKE) -f Makefile.in gdb-taz TOOL=gdb \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(GDB_SUPPORT_DIRS)"
.PHONY: dejagnu.tar.bz2
DEJAGNU_SUPPORT_DIRS= tcl expect libiberty
dejagnu.tar.bz2: $(DIST_SUPPORT) $(DEJAGNU_SUPPORT_DIRS) dejagnu
$(MAKE) -f Makefile.in taz TOOL=dejagnu \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(DEJAGNU_SUPPORT_DIRS)"
.PHONY: gdb+dejagnu.tar.bz2
GDBD_SUPPORT_DIRS= $(GDB_SUPPORT_DIRS) tcl expect dejagnu
gdb+dejagnu.tar.bz2: $(DIST_SUPPORT) $(GDBD_SUPPORT_DIRS) gdb
- $(MAKE) -f Makefile.in taz TOOL=gdb PACKAGE=gdb+dejagnu \
+ $(MAKE) -f Makefile.in gdb-taz TOOL=gdb PACKAGE=gdb+dejagnu \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(GDBD_SUPPORT_DIRS)"
.PHONY: insight.tar.bz2
INSIGHT_SUPPORT_DIRS= $(GDB_SUPPORT_DIRS) tcl tk itcl tix libgui
insight.tar.bz2: $(DIST_SUPPORT) $(GDB_SUPPORT_DIRS) gdb
- $(MAKE) -f Makefile.in taz TOOL=gdb PACKAGE=insight \
+ $(MAKE) -f Makefile.in gdb-taz TOOL=gdb PACKAGE=insight \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(INSIGHT_SUPPORT_DIRS)"
.PHONY: insight+dejagnu.tar.bz2
INSIGHTD_SUPPORT_DIRS= $(INSIGHT_SUPPORT_DIRS) expect dejagnu
insight+dejagnu.tar.bz2: $(DIST_SUPPORT) $(INSIGHTD_SUPPORT_DIRS) gdb
- $(MAKE) -f Makefile.in taz TOOL=gdb PACKAGE="insight+dejagnu" \
+ $(MAKE) -f Makefile.in gdb-taz TOOL=gdb PACKAGE="insight+dejagnu" \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(INSIGHTD_SUPPORT_DIRS)"
.PHONY: newlib.tar.bz2
@@ -1839,6 +1950,7 @@ NEWLIB_SUPPORT_DIRS=libgloss
# supports newlib (if only minimally).
newlib.tar.bz2: $(DIST_SUPPORT) $(NEWLIB_SUPPORT_DIRS) newlib
$(MAKE) -f Makefile.in taz TOOL=newlib \
+ MD5PROG="$(MD5PROG)" \
SUPPORT_FILES="$(NEWLIB_SUPPORT_DIRS)" \
DEVO_SUPPORT="$(DEVO_SUPPORT) COPYING.NEWLIB" newlib
diff --git a/contrib/binutils/bfd/ChangeLog b/contrib/binutils/bfd/ChangeLog
index 638ea67..380d1ff 100644
--- a/contrib/binutils/bfd/ChangeLog
+++ b/contrib/binutils/bfd/ChangeLog
@@ -1,10 +1,1015 @@
+2001-03-31 Philip Blundell <philb@gnu.org>
+
+ From 2001-03-26 H.J. Lu <hjl@gnu.org>
+ * elf32-gen.c (elf32_generic_link_add_symbols): New. Check
+ if there are any relocations for generic ELF.
+ (bfd_elf32_bfd_link_add_symbols): Defined to
+ elf32_generic_link_add_symbols.
+ * elf64-gen.c (elf64_generic_link_add_symbols): New. Check
+ if there are any relocations for generic ELF.
+ (bfd_elf64_bfd_link_add_symbols): Defined to
+ elf64_generic_link_add_symbols.
+
+2001-03-21 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-hppa.c (elf32_hppa_set_gp): Check sec->output_section
+ non-NULL before attempting to dereference.
+
+2001-03-20 Andreas Schwab <schwab@suse.de>
+
+ * elf32-m68k.c (elf_m68k_relocate_section): Don't need the
+ relocation value when resolving a reference from a debugging
+ section.
+
+2001-03-16 Philip Blundell <philb@gnu.org>
+
+ * configure: Regenerate.
+
+2001-03-16 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-hppa.c (elf32_hppa_link_hash_entry): Add maybe_pic_call.
+ (hppa_link_hash_newfunc): Init it.
+ (hppa_type_of_stub): Only use non-PIC to PIC call stub if caller
+ section appears to be non-PIC.
+ (final_link_relocate): Likewise.
+ (elf32_hppa_adjust_dynamic_symbol): Set maybe_pic_call for any
+ possible candidate function, and set pic_call for those that will
+ only have a .plt entry for the PIC call stub.
+ (hppa_handle_PIC_calls): Set maybe_pic_call.
+
+ * elf32-hppa.c: Correct field selector in stub comments.
+ (clobber_millicode_symbols): Formatting fix.
+
+2001-03-11 Philip Blundell <philb@gnu.org>
+
+ * configure.in: Set version to 2.11.
+
+ * elf32-arm.h (elf32_arm_finish_dynamic_symbol): Don't make PLT
+ entries that could serve as a definition for a weak symbol.
+
+2001-03-07 Andreas Jaeger <aj@suse.de>
+
+ * elf64-x86-64.c (elf64_x86_64_relocate_section): Fix handling of
+ some relocation values.
+
+2001-02-28 Andreas Jaeger <aj@suse.de>
+
+ * elf64-x86-64.c (elf64_x86_64_relocate_section): Add relocation
+ to addend.
+
+2001-02-26 Andreas Jaeger <aj@suse.de>
+
+ * elf64-x86-64.c (x86_64_elf_howto_table): Fix order of entries.
+
+2001-02-21 David Mosberger <davidm@hpl.hp.com>
+
+ * cpu-ia64-opc.c (elf64_ia64_operands}: Fix typo: error string for
+ C8 said "1" instead of "8". Clarify error string for IMM22:
+ "signed integer" instead of just "integer".
+
+2001-02-20 Andreas Jaeger <aj@suse.de>
+
+ * elf64-x86-64.c (elf64_x86_64_finish_dynamic_symbol): Don't make
+ PLT entries that could serve as a definition for a weak symbol.
+
+2001-02-18 David O'Brien <obrien@FreeBSD>
+
+ * configure.in: Recognize FreeBSD/arm, FreeBSD/PowerPC, and treat
+ FreeBSD/i386-CURRENT differently until I can figure out the needed
+ corefile changes.
+ * configure: Regenerate.
+ * config.bfd: Recognize FreeBSD/x86-64, FreeBSD/ia64, FreeBSD/arm,
+ FreeBSD/PowerPC, and FreeBSD/sparc64.
+
+2001-02-14 Philip Blundell <pb@futuretv.com>
+
+ From 2001-02-06 H.J. Lu <hjl@gnu.org>
+ * bfd/peicode.h (coff_swap_filehdr_in): Remove the e_magic
+ checking.
+ (pe_bfd_object_p): Rewrite with external_PEI_DOS_hdr and
+ external_PEI_IMAGE_hdr.
+
+2001-02-14 Bo Thorsen <bo@suse.de>
+
+ * elf64-x86-64.c: Small formatting fixes and rearrangements of code.
+ (elf64_86_64_size_info): Struct added to fix a problem
+ with the hashtable string entries.
+ (elf64_x86_64_adjust_dynamic_symbol): Add generation of .got.plt.
+ (elf64_x86_64_size_dynamic_sections): A FIXME removed.
+ (elf64_x86_64_size_dynamic_sections): Fix a dynamic entry and
+ remove the FIXME for this.
+ (elf64_x86_64_adjust_dynamic_symbol): Fix check for unneeded .plt
+ section. Also removed the FIXME for it.
+ (x86_64_elf_howto_table): Use bfd_elf_generic_reloc.
+ (ELF_DYNAMIC_INTERPRETER): Fix the name of the dynamic linker.
+ (elf64_x86_64_finish_dynamic_sections): Enable .got.plt writing.
+
+2001-02-14 Philip Blundell <pb@futuretv.com>
+
+ From 2001-02-08 H.J. Lu <hjl@gnu.org>
+ * elf32-i386.c (elf_i386_check_relocs): Reserve R_386_32
+ relocation entries for weak definitions when building DSO with
+ -Bsymbolic.
+
+2001-02-13 Richard Henderson <rth@redhat.com>
+
+ * elfxx-ia64.c (elfNN_ia64_final_link): Set __gp if required
+ and not user provided.
+
+2001-02-13 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-hppa.c (elf32_hppa_set_gp): Handle weak $global$. If
+ $global$ referenced but not defined, set its value here.
+
+2001-02-09 Bo Thorsen <bo@suse.de>
+
+ * elf64-x86-64.c (elf64_x86_64_check_relocs): Set .rela.got section
+ alignment to 3.
+ (elf64_x86_64_check_relocs): Write R_X86_64_GOTPCREL GOT entry
+ and relocation.
+ (elf64_x86_64_relocate_section): Fix formatting.
+ (elf64_x86_64_relocate_section): Fix addend for relocation of
+ R_X86_64_(8|16|32|PC8|PC16|PC32).
+
+Mon Feb 12 17:44:39 CET 2001 Jan Hubicka <jh@suse.cz>
+
+ * elf64-x86-64.c (x86_64_elf_howto): Fix name of R_X86_64_GOTPCREL.
+
+2001-02-10 Nick Clifton <nickc@redhat.com>
+
+ * elf32-v850.c (v850_elf_reloc): Do not convert reloc addend to PC
+ rel, it will be handled later on.
+
+2001-02-09 David Mosberger <davidm@hpl.hp.com>
+
+ * elfxx-ia64.c (is_unwind_section_name): New function. Returns
+ true if section name is an unwind table section name.
+ (elfNN_ia64_additional_program_headers): Count each unwind section
+ separately.
+ (elfNN_ia64_modify_segment_map): Install one unwind program header
+ for each unwind separate section. Note: normally the linker
+ script merges the unwind sections that go into a single segment,
+ so this still generates at most one unwind program header per
+ segment.
+
+ * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Accept any section
+ name for SHT_IA_64_UNWIND, not just .IA_64.unwind.
+ (elfNN_ia64_fake_sections): Mark sections with names that start
+ with .IA_64.unwind but not with .IA_64.unwind_info as an IA-64
+ unwind section.
+
+ * elfxx-ia64.c (elfNN_ia64_final_write_processing): New function.
+ Use it to make sh_info in unwind section point to the text section
+ it applies to.
+
+2001-02-07 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * coffgen.c (coff_find_nearest_line): If stabs info is successfully
+ found, do not attempt to find dwarf2 info before returning.
+
+2001-01-30 Alan Modra <alan@linuxcare.com.au>
+
+ * elf64-hppa.c (elf64_hppa_elf_get_symbol_type): New function.
+ (elf_backend_get_symbol_type): Define.
+ (elf64_hppa_object_p): Set architecture and machine from elf
+ header flags.
+
+2001-01-30 Curtis L. Janssen <cljanss@ca.sandia.gov>
+
+ * elf64-alpha.c (elf64_alpha_find_nearest_line): Query dwarf2
+ before mdebug.
+
+2001-01-26 Richard Henderson <rth@redhat.com>
+
+ * elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Return false
+ for non-default visibility.
+ * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Likewise, but
+ delete ugly macro and replace with pretty function.
+
+2001-01-25 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * coff-go32.c: Update copyright.
+ * coff-stgo32.c: Likewise.
+ * coff-go32.c (COFF_LONG_FILENAMES): Define.
+ * coff-stgo32.c (COFF_LONG_FILENAMES): Likewise.
+ * coff-go32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Remove .bss entry.
+ * coff-stgo32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Likewise.
+
+2001-01-25 Kazu Hirata <kazu@hxi.com>
+
+ * bfd-in2.h: Rebuild.
+ * libbfd.h: Likewise.
+
+2001-01-23 H.J. Lu <hjl@gnu.org>
+
+ * bfd-in2.h: Rebuild.
+
+2001-01-23 H.J. Lu <hjl@gnu.org>
+
+ * vms-misc.c (_bfd_vms_next_record): Return -1 if PRIV(vms_buf)
+ is NULL or PRIV(vms_rec) is outside of the buffer.
+
+2001-01-23 Kazu Hirata <kazu@hxi.com>
+
+ * coff64-rs6000.c: Fix formatting.
+ * coff-arm.c: Likewise.
+ * coffgen.c: Likewise.
+ * cofflink.c: Likewise.
+ * coff-mcore.c: Likewise.
+ * coff-mips.c: Likewise.
+ * coff-pmac.c: Likewise.
+ * coff-ppc.c: Likewise.
+ * coff-rs6000.c: Likewise.
+ * elf32.c: Likewise.
+ * elf32-fr30.c: Likewise.
+ * elf32-i370.c: Likewise.
+ * elf32-i860.c: Likewise.
+ * elf32-m32r.c: Likewise.
+ * elf32-m68k.c: Likewise.
+ * elf32-mcore.c: Likewise.
+ * elf32-ppc.c: Likewise.
+ * elf32-sh.c: Likewise.
+ * elf32-v850.c: Likewise.
+ * elf64-alpha.c: Likewise.
+ * elf64-sparc.c: Likewise.
+ * elflink.c: Likewise.
+ * elflink.h: Likewise.
+ * elf-m10200.c: Likewise.
+ * elf-m10300.c: Likewise.
+ * elfxx-ia64.c: Likewise.
+
+ * aoutx.h: Fix formatting.
+ * bfd.c: Likewise.
+ * bfd-in2.h: Likewise.
+ * bfd-in.h: Likewise.
+ * cpu-i386.c: Likewise.
+ * cpu-m68hc11.c: Likewise.
+ * dwarf2.c: Likewise.
+ * elf64-x86-64.c: Likewise.
+ * format.c: Likewise.
+ * freebsd.h: Likewise.
+ * hash.c: Likewise.
+ * hp300hpux.c: Likewise.
+ * hppabsd-core.c: Likewise.
+ * hpux-core.c: Likewise.
+
+2001-01-22 Bo Thorsen <bo@suse.de>
+
+ * elf64-x86-64.c: Added PIC support for X86-64.
+ (elf64_x86_64_link_hash_newfunc): Function added.
+ (elf64_x86_64_link_hash_table_create): Likewise.
+ (elf64_x86_64_check_relocs): Likewise.
+ (elf64_x86_64_gc_mark_hook): Likewise.
+ (elf64_x86_64_gc_sweep_hook): Likewise.
+ (elf64_x86_64_adjust_dynamic_symbol): Likewise.
+ (elf64_x86_64_size_dynamic_sections): Likewise.
+ (elf64_x86_64_discard_copies): Likewise.
+ (elf64_x86_64_finish_dynamic_symbol): Likewise.
+ (elf64_x86_64_finish_dynamic_sections): Likewise.
+ (elf64_x86_64_relocate_section): Add relocation of PIC sections.
+
+2001-01-21 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * Makefile.am (install-data-local): Make use of $(DESTDIR).
+ * Makefile.in: Regenerate.
+
+2001-01-21 Kazu Hirata <kazu@hxi.com>
+
+ * coff-a29k.c: Fix formatting.
+
+2001-01-19 H.J. Lu <hjl@gnu.org>
+
+ * elf32-i386.c (elf_i386_check_relocs): Report files with bad
+ relocation section names.
+ (elf_i386_relocate_section): Report files with bad relocation
+ section names and return false.
+
+2001-01-17 Bo Thorsen <bo@suse.de>
+
+ * targets.c: Alphabetize list of xvecs.
+
+2001-01-14 Alan Modra <alan@linuxcare.com.au>
+
+ * config.bfd: Add linux target variant for elfxx-hppa.
+ * configure.in: Recognize bfd_elf32_hppa_linux_vec and
+ bfd_elf64_hppa_linux_vec.
+ * configure: Regenerate.
+ * elf64-hppa.c: Include elf64-target.h again to support linux
+ target variant.
+ (elf64_hppa_post_process_headers): Set ELFOSABI_LINUX for linux.
+ * elf32-hppa.c: Include elf32-target.h again to support linux
+ target variant.
+ (elf32_hppa_post_process_headers): New function.
+ (elf_backend_post_process_headers): Define.
+ * targets.c (bfd_target_vector): Add bfd_elf64_hppa_linux_vec and
+ bfd_elf32_hppa_linux_vec.
+
+ * elf32-hppa.c (elf32_hppa_link_hash_table): Add text_segment_base,
+ and data_segment_base fields.
+ (elf32_hppa_link_hash_table_create ): Init them.
+ (elf32_hppa_check_relocs): Update comments.
+ (hppa_record_segment_addr): New function.
+ (elf32_hppa_relocate_section): Call it.
+ (final_link_relocate): Handle R_PARISC_SEGREL32.
+ (elf32_hppa_final_link): New function.
+ (bfd_elf32_bfd_final_link): Define to call it.
+ (hppa_unwind_entry_compare): New function.
+ * cache.c (bfd_open_file): Create files in write+read mode.
+
+ * elf-hppa.h (elf_hppa_howto_table): Set bitsize value for
+ SEGREL32 and numerous other relocs. Change duplicate
+ R_PARISC_NONE relocs to R_PARISC_UNIMPLEMENTED.
+
+ * opncls.c (bfd_fdopenr): Add parens like the comment says around
+ O_ACCMODE.
+
+ * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Don't create
+ .plt entries for DT_INIT and DT_FINI.
+ (elf32_hppa_finish_dynamic_sections): Remove special handling of
+ DT_INIT and DT_FINI.
+
+ * elf64-hppa.c (elf64_hppa_finish_dynamic_symbol): Use 16-bit
+ offsets for stub .plt access if wide mode. Check offset in range.
+
+2001-01-13 Nick Clifton <nickc@redhat.com>
+
+ * elf32-fr30.c (fr30_elf_howto_table): Remove spurious blank
+ line.
+
+ * coffcode.h (coff_canonicalize_reloc): Remove spurious blank
+ line.
+
+2001-01-12 Alan Modra <alan@linuxcare.com.au>
+
+ * configure.in ([bfd_elf64_x86_64_vec]): Set target64.
+ * configure: Regenerate.
+
+2001-01-11 Peter Targett <peter.targett@arccores.com>
+
+ * bfd-in2.h (bfd_architecture): Add bfd_mach_arc_5,
+ bfd_mach_arc_6, bfd_mach_arc_7, bfd_mach_arc_8 for ARC variants.
+ * cpu-arc.c (arch_info_struct): Add entries for variants.
+ (bfd_arc_arch) Set default to bfd_mach_arc_5.
+ (arc_get_mach) Don't assume machine names prefixed arc- before
+ testing.
+ * elf32-arc.c (arc_elf_object_p): Set machine number based on new
+ selections.
+ (arc_elf_final_write_processing) Likewise.
+ (ELF_MACHINE_CODE) Use EM_ARC.
+
+2001-01-10 Nick Clifton <nickc@redhat.com>
+
+ * coff-arm.c (LOCAL_LABEL_PREFIX): Change definition to "".
+
+2001-01-07 Philip Blundell <philb@gnu.org>
+
+ * README: Replace `bug-gnu-utils@gnu.org' with
+ `bug-binutils@gnu.org'.
+
+2001-01-04 Kazu Hirata <kazu@hxi.com>
+
+ * som.c: Fix formatting.
+
+2001-01-03 Kazu Hirata <kazu@hxi.com>
+
+ * ecoffswap.h: Fix formatting.
+ * elf-bfd.h: Likewise.
+ * elfarm-nabi.c: Likewise.
+ * elfarm-oabi.c: Likewise.
+ * elfcode.h: Likewise.
+ * elfcore.h: Likewise.
+ * elflink.c: Likewise.
+ * elflink.h: Likewise.
+ * elfxx-ia64.c: Likewise.
+ * elfxx-target.h: Likewise.
+ * libbfd.c: Likewise
+ * linker.c: Likewise.
+ * lynx-core.c: Likewise.
+
+2001-01-02 Kazu Hirata <kazu@hxi.com>
+
+ * pc532-mach.c: Fix formatting.
+ * pe-arm.c: Likewise.
+ * pe-i386.c: Likewise.
+ * pe-mips.c: Likewise.
+ * pe-ppc.c: Likewise.
+ * pe-sh.c: Likewise.
+ * pei-mips.c: Likewise.
+ * pei-sh.c: Likewise.
+ * peicode.h: Likewise.
+ * ppcboot.c: Likewise.
+ * ptrace-core.c: Likewise.
+
+2001-01-01 Kazu Hirata <kazu@hxi.com>
+
+ * reloc.c: Fix formatting.
+ * riscix.c: Likewise.
+ * rs6000-core.c: Likewise.
+ * xcoff-target.h: Likewise.
+
+2000-12-29 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * elfcode.h (elf_object_p): Also restore the bfd mach field on
+ error, by calling bfd_default_set_arch_mach with incoming
+ values.
+
+2000-12-26 Kazu Hirata <kazu@hxi.com>
+
+ * vaxnetbsd.c: Fix formatting.
+ * versados.c: Likewise.
+ * vms-gsd.c: Likewise.
+ * vms-hdr.c: Likewise.
+ * vms-misc.c: Likewise.
+
+2000-12-25 Alexandre Oliva <aoliva@redhat.com>
+
+ * archive.c (coff_write_armap): Don't write more than symbol_count
+ `archive_member_file_ptr's.
+
+2000-12-25 Kazu Hirata <kazu@hxi.com>
+
+ * vms-tir.c: Fix formatting.
+
+2000-12-23 Kazu Hirata <kazu@hxi.com>
+
+ * vms.c: Fix formatting.
+ * vms.h: Likewise.
+
+2000-12-21 Santeri Paavolainen <santtu@ssh.com>
+
+ * vms-hdr.c: Include alloca.h if HAVE_ALLOCA_H is defined.
+
+ * peicode.h (pe_ILF_object_p): Add const to import of TARGET_LITTLE_SYM.
+
+ * elf32-m32r.c (m32r_elf_generic_reloc): Add cast to avoid (void *)
+ arithmetic.
+
+ * elf32-fr30.c: Add casts to avoid (void *) arithmetic.
+
+ * coffcode.h (styp_to_sec_flags): Add empty statement after label.
+
+2000-12-21 Richard Sandiford <rsandifo@redhat.com>
+
+ * libbfd.c (bfd_get_bits): Added
+ (bfd_put_bits): Likewise
+ * bfd-in.h: Declared the above.
+ * bfd-in2.h: Regenerated.
+
+2000-12-20 Kazu Hirata <kazu@hxi.com>
+
+ * targets.c: Fix formatting.
+ * tekhex.c: Likewise.
+ * trad-core.c: Likewise.
+
+2000-12-19 Kazu Hirata <kazu@hxi.com>
+
+ * sco5-core.c: Fix formatting.
+ * section.c: Likewise.
+ * sparclinux.c: Likewise.
+ * sparclynx.c: Likewise.
+ * sparcnetbsd.c: Likewise.
+ * srec.c: Likewise.
+ * stabs.c: Likewise.
+ * stab-syms.c: Likewise.
+ * sunos.c: Likewise.
+ * syms.c: Likewise.
+ * sysdep.h: Likewise.
+
+2000-12-18 Nick Clifton <nickc@redhat.com>
+
+ * coff-arm.c (EXTRA_S_FLAGS): Only define if not already
+ defined.
+ * epoc-pe-arm.c (EXTRA_S_FLAGS): Define.
+ * epoc-pei-arm.c (EXTRA_S_FLAGS): Define.
+
+2000-12-18 Nick Clifton <nickc@redhat.com>
+
+ * vms-misc.c (_bfd_vms_get_record): Add default case to
+ file_format switch.
+
+2000-12-15 Miloslav Trmac <mitr@volny.cz>
+
+ * elfcore.h (elf_core_file_p): Move to the start of the program
+ headers before attempting to read them.
+
+2000-12-14 Kazu Hirata <kazu@hxi.com>
+
+ * peigen.c: Fix formatting.
+ * som.c: Likewise.
+ * som.h: Likewise.
+
+2000-12-13 Kazu Hirata <kazu@hxi.com>
+
+ * peigen.c: Fix formatting.
+
+2000-12-12 Jim Wilson <wilson@redhat.com>
+
+ * elfxx-ia64.c (get_dyn_sym_info): Cast %p argument to void *.
+
+2000-12-08 Mark Salter <msalter@redhat.com>
+
+ * binary.c (binary_set_section_contents): Ignore sections
+ with zero size.
+
+2000-12-12 Kazu Hirata <kazu@hxi.com>
+
+ * m68klinux.c: Fix formatting.
+ * m68knetbsd.c: Likewise.
+ * mipsbsd.c: Likewise.
+ * netbsd-core.c: Likewise.
+ * netbsd.h: Likewise.
+ * newsos3.c: Likewise.
+ * nlm32-alpha.c: Likewise.
+ * nlm32-i386.c: Likewise.
+ * nlm32-ppc.c: Likewise.
+ * nlm32-sparc.c: Likewise.
+ * nlmcode.h: Likewise.
+ * nlmswap.h: Likewise.
+ * nlm-target.h: Likewise.
+ * ns32knetbsd.c: Likewise.
+
+2000-12-10 Fred Fish <fnf@be.com>
+
+ * elflink.h (elf_link_output_extsym): Don't complain about undefined
+ symbols in shared objects if allow_shlib_undefined is true.
+
+2000-12-12 Nick Clifton <nickc@redhat.com>
+
+ * cpu-sh.c: Fix formattng.
+ * elf.c: Fix formattng.
+ * elf32-mips.c: Fix formattng.
+ * elf32-sh.c: Fix formattng.
+ * elf64-alpha.c: Fix formattng.
+
+2000-12-09 Nick Clifton <nickc@redhat.com>
+
+ * elf32-mips.c (_bfd_mips_elf_find_nearest_line): Pass
+ dwarf2_find_line_info as last parameter to invocation of
+ _bfd_dwarf2_find_nearest_line.
+ * elf32-arm.h (elf32_arm_find_nearest_line): Pass
+ dwarf2_find_line_info as last parameter to invocation of
+ _bfd_dwarf2_find_nearest_line.
+
+2000-12-08 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * Makefile.am (BFD32_BACKENDS): Move dwarf2.lo from here...
+ (BFD_LIBS): ...to here.
+ (BFD32_BACKENDS_CFILES): Move dwarf2.c from here...
+ (BFD_LIBS_CFILES): ...to here.
+ * Makefile.in: Regenerate.
+ * configure.in: Remove dwarf.lo from the elf shell variable.
+ * configure: Regenerate.
+ * libcoff-in.h (coff_tdata): Add pointer dwarf2_find_line_info.
+ * libcoff.h: Regenerate.
+ * coffgen.c (coff_find_nearest_line): Call
+ _bfd_dwarf2_find_nearest_line.
+ * dwarf2.c (_bfd_dwarf2_find_nearest_line): Add parameter. Update
+ accordingly.
+ (read_abbrevs): Likewise
+ (decode_line_info): Likewise.
+ (parse_comp_unit): Likewise.
+ (comp_unit_find_nearest_line): Likewise.
+ * libbfd-in.h (_bfd_dwarf2_find_nearest_line): Update prototype.
+ * libbfd.h: Regenerate.
+ * elf.c (_bfd_elf_find_nearest_line): Update call.
+ * elf-bfd.h (elf_obj_tdata): Change dwarf2_find_line_info to type PTR.
+ * dwarf2.c (concat_filename): Use IS_ABSOLUTE_PATH.
+ * coffcode.h (STYP_XCOFF_DEBUG, STYP_DEBUG_INFO): New macros.
+ (sec_to_styp_flags): Use them. Handle DWARF2 sections.
+ (styp_to_sec_flags): Handle DWARF2 sections.
+ * elf32-arm.h (elf32_arm_find_nearest_line): Add parameter to call
+ to _bfd_find_nearest_line.
+ * elf32-mips.c (_bfd_mips_elf_find_nearest_line): Add parameter to
+ call to _bfd_find_nearest_line.
+
+2000-12-08 Kazu Hirata <kazu@hxi.com>
+
+ * coffgen.c: Fix formatting.
+ * elf-m10300.c: Likewise.
+ * elf32-i386.c: Likewise.
+ * elf32-i960.c: Likewise.
+ * elf32-m68k.c: Likewise.
+ * elf32-mcore.c: Likewise.
+ * elf32-ppc.c: Likewise.
+ * elf32-sh.c: Likewise.
+ * elf32-sparc.c: Likewise.
+ * elf32-v850.c: Likewise.
+ * elf64-alpha.c: Likewise.
+ * elf64-hppa.c: Likewise.
+ * elf64-mips.c: Likewise.
+ * elf64-sparc.c: Likewise.
+
+2000-12-07 Kazu Hirata <kazu@hxi.com>
+
+ * elf32-ppc.c: Fix formatting.
+ * elf64-x86-64.c: Likewise.
+
+2000-12-06 Ulf Carlsson <ulfc@engr.sgi.com>
+
+ From Ralf Baechle <ralf@gnu.org>
+
+ * elf32-mips.c (elf32_mips_merge_private_bfd_data): Always permit
+ BFDs containing no sections or empty .text, .data or .bss sections
+ to be merged, regardless of their flags.
+
+2000-12-06 Kazu Hirata <kazu@hxi.com>
+
+ * elf32-m32r.c: Fix formatting.
+ * elf32-m68hc11.c: Likewise.
+ * elf32-m68hc12.c: Likewise.
+ * elf32-m68k.c: Likewise.
+ * elf32-mcore.c: Likewise.
+ * elf32-pj.c: Likewise.
+ * elf32-ppc.c: Likewise.
+
+2000-12-05 Kazu Hirata <kazu@hxi.com>
+
+ * elf32-fr30.c: Fix formatting.
+ * elf32-hppa.c: Likewise.
+ * elf32-i370.c: Likewise.
+ * elf32-i386.c: Likewise.
+ * elf32-i860.c: Likewise.
+ * elf32-i960.c: Likewise.
+
+2000-12-03 Kazu Hirata <kazu@hxi.com>
+
+ * elf32-arm.h: Fix formatting.
+ * elf32-avr.c: Likewise.
+ * elf32-cris.c: Likewise.
+ * elf32-d10v.c: Likewise.
+ * elf32-d30v.c: Likewise.
+ * elf-hppa.h: Likewise.
+ * elf-m10200.c: Likewise.
+ * elf-m10300.c: Likewise.
+
+2000-12-01 Chris Demetriou <cgd@sibyte.com>
+
+ * aoutx.h (NAME(aout,machine_type)): Add bfd_mach_mips32 and
+ bfd_mach_mips32_4k. Update FIXME comment.
+ * archures.c (bfd_mach_mips32): New constant.
+ (bfd_mach_mips4K, bfd_mach_mips32_4k) Rename the former to
+ the latter, renumber it.
+ * bfd-in2.h (bfd_mach_mips32): New constant.
+ (bfd_mach_mips4K, bfd_mach_mips32_4k) Rename the former to
+ the latter, renumber it.
+ * cpu-mips.c (I_mips32): New constant.
+ (I_mips4K, I_mips32_4k): Rename the former to the latter.
+ (arch_info_struct): Add bfd_mach_mips32 entry, replace
+ bfd_mach_mips4K entry with bfd_mach_mips32_4k entry.
+ * elf32-mips.c (elf_mips_isa): Add E_MIPS_ARCH_32 case.
+ (elf_mips_mach): Likewise. Also, replace E_MIPS_MACH_MIPS32
+ with E_MIPS_MACH_MIPS32_4K.
+ (_bfd_mips_elf_final_write_processing): Replace
+ bfd_mach_mips4K with bfd_mach_mips32_4k case, add
+ bfd_mach_mips32 case.
+ (_bfd_mips_elf_merge_private_bfd_data): Generalize ISA mixing
+ comparison with support for MIPS32.
+ (_bfd_mips_elf_print_private_bfd_data): Print ISA name for
+ MIPS32.
+
+ * aoutx.h (NAME(aout,machine_type)): Add cases for
+ bfd_mach_mips5 and bfd_mach_mips64.
+ * archures.c (bfd_mach_mips5, bfd_mach_mips64): New constants.
+ * bfd-in2.h (bfd_mach_mips5, bfd_mach_mips64): Likewise.
+ * cpu_mips.c (I_mips5, I_mips64): New definitions.
+ (arch_info_struct): Add entries for bfd_mach_mips5 and
+ bfd_mach_mips64.
+ * elf32-mips.c (elf_mips_isa, elf_mips_mach,
+ _bfd_mips_elf_print_private_bfd_data): Add cases for
+ E_MIPS_ARCH_5 and E_MIPS_ARCH_64.
+ (_bfd_mips_elf_final_write_processing): Add cases for
+ bfd_mach_mips5 and bfd_mach_mips64.
+
+ * bfd/aoutx.h (NAME(aout,machine_type)): Add a
+ bfd_mach_mips_sb1 case.
+ * bfd/archures.c (bfd_mach_mips_sb1): New constant.
+ * bfd/bfd-in2.h (bfd_mach_mips_sb1): New constant.
+ * bfd/cpu-mips.c (I_sb1): New constant.
+ (arch_info_struct): Add entry for bfd_mach_mips_sb1.
+ * bfd/elf32-mips.c (elf_mips_mach): Add case for
+ E_MIPS_MACH_SB1.
+ (_bfd_mips_elf_final_write_processing): Add case for
+ bfd_mach_mips_sb1.
+
+2000-12-01 Joel Sherrill <joel@OARcorp.com>
+
+ * config.bfd (arm-*-rtems*, a29k-*rtems*): New targets.
+ (sparc*-*-rtemself*, sparc*-*-rtemsaout*): New targets.
+ (sparc*-*-rtems*): Switched from a.out to ELF.
+
+2000-11-30 Jan Hubicka <jh@suse.cz>
+
+ * Makefile.am (BFD64_BACKENDS): Add elf64-x86-64.lo
+ BFD64_BACKENDS_CFILES): Add elf64-x86-64.c
+ (elf64-x86-64.lo): Add dependencies.
+ * archures.c (DESCRIPTION): Add bfd_mach_x86_64,
+ bfd_mach_x86_64_intel_syntax.
+ * elf.c (prep_headers): Use EM_x86_64 for 64bit output.
+ * config.bfd (x86_64): Add.
+ * configure.in: Add support for bfd_elf64_x86_64_vec.
+ * cpu-i386.c (bfd_x86_64_arch_intel_syntax, bfd_x86_64_arch): Add.
+ (bfd_i386_arch, i8086_ar): Link in.
+ * elf64-x86-64.c: New file.
+ * reloc.c (ENUMDOC): Add BFD_RELOC_X86_64*.
+ * targets.c (bfd_elf64_x86_64_vec): Add.
+ (bfd_target_vect): Add bfd_elf64_x86_64_vec.
+
+2000-11-30 Kazu Hirata <kazu@hxi.com>
+
+ * xcofflink.c: Fix formatting.
+
+2000-11-28 Kazu Hirata <kazu@hxi.com>
+
+ * aoutx.h: Fix formatting.
+ * bfd-in.h: Likewise.
+ * bfd-in2.h: Likewise.
+ * cache.c: Likewise.
+ * cisco-core.c: Likewise.
+ * coff64-rs6000.c: Likewise.
+ * coffcode.h: Likewise.
+ * coffswap.h: Likewise.
+ * corefile.c: Likewise.
+ * elf32-mips.c: Likewise.
+
+2000-11-27 Kazu Hirata <kazu@hxi.com>
+
+ * aout-adobe.c: Fix formatting.
+ * coff64-rs6000.c: Likewise.
+ * coffgen.c: Likewise.
+ * cofflink.c: Likewise.
+
+2000-11-27 Philip Blundell <pb@futuretv.com>
+
+ * libcoff-in.h (coff_tdata): Add `strings_written' flag.
+ (obj_coff_strings_written): New accessor macro for above.
+ * libcoff.h: Regenerate.
+ * cofflink.c (_bfd_coff_final_link): Say that we wrote the
+ strings.
+ * coffcode.h (coff_write_object_contents): No need to write out
+ the string table if it's already been done.
+
+2000-11-22 Philip Blundell <pb@futuretv.com>
+
+ * cofflink.c (_bfd_coff_generic_relocate_section): Don't object to
+ weak undefined symbols.
+
+2000-11-24 Nick Clifton <nickc@redhat.com>
+
+ * archures.c (bfd_mach_arm_5TE): Define.
+ (bfd_mach_arm+XScale): Define.
+ * bfd-in2.h: Regenerate.
+
+ * coff-arm.c (coff_arm_reloc_type_lookup): Accept
+ BFD_RELOC_ARM_PCREL_BLX.
+
+ * coffcode.h (coff_set_flags): Set flags for 5t, 5te and
+ XScale machine numbers.
+
+ * config.bfd (xscale-elf): Add target.
+ (xscale-coff): Add target.
+
+ * cpu-arm.c: Add xscale machine name.
+ Add v5t, v5te and XScale machine numbers.
+
+2000-11-23 Kazu Hirata <kazu@hxi.com>
+
+ * aix386-core.c: Fix formatting.
+
+2000-11-22 Jim Wilson <wilson@redhat.com>
+
+ * coff-ia64.c (howto_table): Use EMPTY_HOWTO.
+ (in_reloc_p): Add ATTRIBUTE_UNUSED to unused parameters.
+ * cpu-ia64-opc.c (ins_rsvd, ext_rsvd, ins_const, ext_const): Likewise.
+ (ins_imms_scaled): Initialize sign_bit at function entry.
+ (elf64_ia64_operands): Add missing initializers.
+ * elfxx-ia64.c (elfNN_ia64_reloc, elfNN_ia64_reloc_type_lookup,
+ elfNN_ia64_info_to_howto, elfNN_ia64_fake_sections,
+ elfNN_ia64_add_symbol_hook, elfNN_ia64_is_local_label_name,
+ elfNN_ia64_local_hash_table_init, get_fptr, get_pltoff,
+ elfNN_ia64_adjust_dynamic_symbol): Add ATTRIBUTE_UNUSED for unused
+ parameters.
+ (elfNN_ia64_info_to_howto): Initialize free_relocs, free_contents,
+ and free_extsyms at function entry.
+ (elfNN_add_symbol_hook): Add unsigned cast to bfd_get_gp_size result.
+ (elfNN_ia64_create_dynamic_sections): Delete unused local h.
+ (get_got): Delete unused local srel.
+ (elfNN_ia64_check_relocs): Initialize dynrel_type when declared.
+ (elfNN_ia64_relocate_section): Delete unused local dynindx.
+
+2000-11-21 Kazu Hirata <kazu@hxi.com>
+
+ * coff-a29k.c: Fix formatting.
+ * coff-h8500.c: Likewise.
+ * coff-i960.c: Likewise.
+ * coff-ppc.c: Likewise.
+ * coff-rs6000.c: Likewise.
+ * coff-stgo32.c: Likewise.
+ * coff-tic54x.c: Likewise.
+ * coff-w65.c: Likewise.
+ * cpu-h8500.c: Likewise.
+ * cpu-hppa.c: Likewise.
+ * cpu-ns32k.c: Likewise.
+ * ecoff.c: Likewise.
+ * ecofflink.c: Likewise.
+
+2000-11-21 Nick Clifton <nickc@redhat.com>
+
+ * elf32-sh.c (sh_elf_reloc_loop): Fix compile time warning, and
+ remove possibility of infinite loop.
+
+2000-11-20 Kazu Hirata <kazu@hxi.com>
+
+ * aix386-core.c: Fix formatting.
+ * aout-adobe.c: Likewise.
+ * aout-arm.c: Likewise.
+ * aout-encap.c: Likewise.
+ * aout-ns32k.c: Likewise.
+ * aout-target.h: Likewise.
+ * aout-tic30.c: Likewise.
+ * aoutf1.h: Likewise.
+ * aoutx.h: Likewise.
+ * archive.c: Likewise.
+ * bfd-in.h: Likewise.
+ * bfd-in2.h: Likewise.
+ * bfd.c: Likewise.
+ * bout.c: Likewise.
+
+2000-11-17 H.J. Lu <hjl@gnu.org>
+
+ * elfxx-ia64.c (elfNN_ia64_size_dynamic_sections): Don't create
+ pltoff entries for DT_INIT and DT_FINI.
+ (elfNN_ia64_final_link): Don't set DT_INIT/FINI entries.
+ (elfNN_ia64_finish_dynamic_sections): Don't fill in DT_INIT/FINI
+ entries.
+
+2000-11-16 Richard Henderson <rth@redhat.com>
+
+ * elfxx-ia64.c (elfNN_ia64_check_relocs): Handle IPLT relocs.
+ (allocate_dynrel_entries): Likewise.
+ (elfNN_ia64_relocate_section): Likewise. Set REL addends correctly.
+ (set_pltoff_entry): Likewise.
+ (ia64_howto_table): Remove R_IA64_SEGBASE, and R_IA64_EPLT[ML]SB
+ (elfNN_ia64_reloc_type_lookup): Likewise.
+ (elfNN_ia64_install_value): Likewise.
+ (elfNN_ia64_relocate_section): Likewise.
+ * reloc.c (BFD_RELOC_IA64_SEGBASE): Remove.
+ (BFD_RELOC_IA64_EPLTMSB, BFD_RELOC_IA64_EPLTLSB): Remove.
+
+2000-11-16 Kazu Hirata <kazu@hxi.com>
+
+ * cpu-a29k.c: Fix formatting.
+ * cpu-alpha.c: Likewise.
+ * cpu-arm.c: Likewise.
+ * cpu-avr.c: Likewise.
+ * cpu-d10v.c: Likewise.
+ * cpu-h8500.c: Likewise.
+ * cpu-hppa.c: Likewise.
+ * cpu-i370.c: Likewise.
+ * cpu-i386.c: Likewise.
+ * cpu-i960.c: Likewise.
+ * cpu-ia64-opc.c: Likewise.
+ * cpu-ia64.c: Likewise.
+ * cpu-m32r.c: Likewise.
+ * cpu-m68hc11.c: Likewise.
+ * cpu-m68hc12.c: Likewise.
+ * cpu-m68k.c: Likewise.
+ * cpu-m88k.c: Likewise.
+ * cpu-mips.c: Likewise.
+ * cpu-ns32k.c: Likewise.
+ * cpu-pj.c: Likewise.
+ * cpu-powerpc.c: Likewise.
+ * cpu-sh.c: Likewise.
+ * cpu-sparc.c: Likewise.
+ * cpu-tic54x.c: Likewise.
+ * cpu-v850.c: Likewise.
+ * cpu-vax.c: Likewise.
+ * cpu-w65.c: Likewise.
+ * cpu-we32k.c: Likewise.
+ * cpu-z8k.c: Likewise.
+ * dwarf1.c: Likewise.
+ * dwarf2.c: Likewise.
+
+2000-11-15 Kazu Hirata <kazu@hxi.com>
+
+ * coff-arm.c: Fix formatting.
+ * coff-ppc.c: Likewise.
+ * coff-rs6000.c: Likewise.
+ * coff-sh.c: Likewise.
+ * coff-sparc.c: Likewise.
+ * coff-tic30.c: Likewise.
+ * coff-tic54x.c: Likewise.
+ * coff-tic80.c: Likewise.
+ * coff-w65.c: Likewise.
+ * coff-we32k.c: Likewise.
+ * coff-z8k.c: Likewise.
+
+2000-11-15 Richard Henderson <rth@redhat.com>
+
+ * elf64-alpha.c (elf64_alpha_check_relocs): Create the reloc
+ section with the same ALLOC|LOAD flags as the source section.
+
+2000-11-14 Jakub Jelinek <jakub@redhat.com>
+
+ * elf64-alpha.c (elf64_alpha_relax_opt_call): Only check bits used
+ by STO_ALPHA constants.
+
+2000-11-14 Kazu Hirata <kazu@hxi.com>
+
+ * coff-pmac.c: Fix formatting.
+ * coff-ppc.c: Likewise.
+
+2000-11-13 H.J. Lu <hjl@gnu.org>
+
+ * elflink.h (elf_link_add_object_symbols): Also add indirect
+ symbols for common symbols with the default version.
+
+2000-11-09 Philip Blundell <pb@futuretv.com>
+
+ * section.c (STD_SECTION): Set gc_mark flag.
+
+2000-11-11 Kazu Hirata <kazu@hxi.com>
+
+ * coff-i960.c: Likewise.
+ * coff-m68k.c: Likewise.
+ * coff-m88k.c: Likewise.
+ * coff-mcore.c: Likewise.
+ * coff-mips.c: Likewise.
+
+2000-11-11 Bernd Schmidt <bernds@cygnus.co.uk>
+
+ * elf32-sh.c (sh_elf_relocate_section): Ignore R_SH_NONE relocs.
+
+2000-11-10 Kazu Hirata <kazu@hxi.com>
+
+ * coff-h8300.c: Fix formatting.
+ * coff-h8500.c: Likewise.
+ * coff-i386.c: Likewise.
+ * coff-i860.c: Likewise.
+ * coff-i960.c: Likewise.
+ * coff-ia64.c: Likewise.
+
+2000-11-09 Kazu Hirata <kazu@hxi.com>
+
+ * archive.c: Fix formatting.
+ * archures.c: Likewise.
+
+2000-11-07 Richard Henderson <rth@redhat.com>
+
+ * elfxx-ia64.c (elf64_ia64_final_link): New local unwind_output_sec.
+ Set it before bfd_elf64_bfd_final_link call. Use it after the call.
+ * section.c (bfd_set_section_contents): Call memcpy if
+ section->contents set and location not equal to contents plus offset.
+
+2000-11-08 Kazu Hirata <kazu@hxi.com>
+
+ * bfd-in.h: Fix formatting.
+ * bfd-in2.h: Likewise.
+ * bfd.c: Likewise.
+ * binary.c: Likewise.
+ * bout.c: Likewise.
+ * coff-a29k.c: Likewise.
+ * coff-alpha.c: Likewise.
+ * coff-apollo.c: Likewise.
+ * coff-aux.c: Likewise.
+
+2000-11-07 Kazu Hirata <kazu@hxi.com>
+
+ * aix386-core.c: Fix formatting.
+ * aoutf1.h: Likewise.
+ * aoutx.h: Likewise.
+ * archures.c: Likewise.
+ * armnetbsd.c: Likewise.
+
2000-11-07 Alan Modra <alan@linuxcare.com.au>
* coff-h8300.c (special): Adjust reloc address.
- From mainline 2000-04-03 Kazu Hirata <kazu@hxi.com>
- * coff-h8300.c (h8300_reloc16_extra_cases): Add bsr:16 -> bsr:8 to
- the R_PCRWORD_B case.
+2000-11-06 Steve Ellcey <sje@cup.hp.com>
+
+ * archures.c (bfd_mach_ia64_elf64, bfd_mach_ia64_elf32): Add defines
+ to differentiate elf32 and elf64 on ia64.
+ * bfd-in2.h: Regenerate.
+ * config.bfd: Add target for "ia64*-*-hpux*".
+ * configure.in: Add bfd_elf32_ia64_big_vec to selvecs switch.
+ * configure: Regenerate.
+ * cpu-ia64.c (bfd_ia64_elf32_arch): Add elf32 arch info structure.
+ * targets.c: Add bfd_target bfd_elf32_ia64_big_vec.
+
+ * Makefile.am: Make elf32-ia64.c and elf64-ia64.c derived objects
+ from elfxx-ia64.c. Add depenency rules for making elf32-ia64.lo.
+ * Makefile.in: Regnerate.
+ * elf64-ia64.c: Deleted.
+ * elfxx-ia64.c: New file, paramaterized version of elf64-ia64.c.
+
+2000-11-06 Kazu Hirata <kazu@hxi.com>
+
+ * aout-adobe.c: Fix formatting.
+ * aout-arm.c: Likewise.
+ * aout-cris.c: Likewise.
+ * aout-encap.c: Likewise.
+ * aout-ns32k.c: Likewise.
+ * aout-target.h: Likewise.
+ * aout-tic30.c: Likewise.
2000-11-05 Philip Blundell <philb@gnu.org>
@@ -17,148 +1022,1854 @@
if a relocation for an undefined symbol also results in an
overflow.
+2000-11-06 Christopher Faylor <cgf@cygnus.com>
+
+ * config.bfd: Add support for Sun Chorus.
+
+2000-11-05 David O'Brien <obrien@FreeBSD.org>
+
+ * configure.in: Recognize alpha-*-freebsd*.
+ * configure: Regenerate.
+
+2000-11-02 Luciano Gemme <ishitawa@yahoo.com>
+
+ * srec.c (CHUNK): Rename to DEFAULT_CHUNK.
+ (Chunk): New global variable set by a parameter in objcopy.c.
+ (S3Forced): New global variable set by a parameter in
+ objcopy.c.
+ (srec_set_section_contents): If S3Forced is true, always generate
+ S3 records.
+ (srec_write_section): Use 'Chunk' to limit maximum length of S
+ records.
+
+2000-11-02 Per Lundberg <plundis@chaosdev.org>
+
+ * config.bfd: Add support for i[3456]86-chaosdev-storm-chaos.
+ * Makefile.in: Regenerate.
+ * bfd-in2.h: Regenerate.
+ * po/bfd.pot: Regenerate.
+
2000-10-31 Philip Blundell <philb@gnu.org>
* elf32-arm.h (elf32_arm_merge_private_bfd_data): Only handle
EF_SOFT_FLOAT if it is defined.
- From 2000-05-23 H.J. Lu <hjl@gnu.org>
- * elf32-ppc.c (ppc_elf_relocate_section): Fix a typo.
-
2000-10-27 Philip Blundell <philb@gnu.org>
* elf32-arm.h (elf32_arm_copy_private_bfd_data): Don't refuse
attempts to mix PIC code with non-PIC, just mark the output as
being position dependent.
- (elf32_arm_merge_private_bfd_data): Likewise. Print an error
- message for EF_SOFT_FLOAT mismatches. Display diagnostics for
+ (elf32_arm_merge_private_bfd_data): Likewise. Print an error
+ message for EF_SOFT_FLOAT mismatches. Display diagnostics for
all mismatches, not just the first one.
-
-2000-10-23 Philip Blundell <pb@futuretv.com>
- From 2000-05-23 H.J. Lu <hjl@gnu.org>
- * elf64-alpha.c (elf64_alpha_relocate_section): Check
- h->root.other not h->other.
- * elf32-mips.c (mips_elf_calculate_relocation): Likewise.
+2000-10-25 Chris Demetriou <cgd@sibyte.com>
-2000-10-23 Philip Blundell <pb@futuretv.com>
+ * ieee.c (ieee_archive_p): Plug one of many possible
+ memory leaks in error handling.
- * elf32-arm.h (elf32_arm_finish_dynamic_symbol): Undo previous
- accidental checkin.
+2000-10-20 Jakub Jelinek <jakub@redhat.com>
-2000-10-22 Philip Blundell <philb@gnu.org>
+ * elf32-sparc.c (elf32_sparc_merge_private_bfd_data,
+ elf32_sparc_object_p, elf32_sparc_final_write_processing):
+ Support v8plusb.
+ * elf64-sparc.c (sparc64_elf_merge_private_bfd_data,
+ sparc64_elf_object_p): Support v9b.
+ * archures.c: Declare v8plusb and v9b machines.
+ * bfd-in2.h: Ditto.
+ * cpu-sparc.c: Ditto.
- * elf32-arm.h (elf32_arm_finish_dynamic_symbol): Don't make
- PLT entries that could serve as a definition for a weak symbol.
+2000-10-16 Geoffrey Keating <geoffk@shoggoth.cygnus.com>
- From 2000-06-05 H.J. Lu <hjl@gnu.org>
- * elflink.c (_bfd_elf_link_record_dynamic_symbol): Don't flag
- an error when seeing an undefined symbol with hidden/internal
- attribute. It is handled in *_relocate_section ().
+ * elf64-sparc.c (sparc64_elf_relocate_section): Clear the location
+ of a GOT reloc.
- From 2000-05-23 H.J. Lu <hjl@gnu.org>
- * elf32-i386.c (elf_i386_relocate_section): Don't allow the
- undefined symbol with the non-default visibility attributes.
- * elf-hppa.h (elf_hppa_relocate_section): Likewise.
- * elf32-arm.h (elf32_arm_relocate_section): Likewise.
- * elf32-i370.c (i370_elf_relocate_section): Likewise.
- * elf32-m68k.c (elf_m68k_relocate_section): Likewise.
- * elf32-mcore.c (mcore_elf_relocate_section): Likewise.
- * elf32-mips.c (mips_elf_calculate_relocation): Likewise.
- * elf32-ppc.c (ppc_elf_relocate_section): Likewise.
- * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
- * elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
- * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
+ * elf32-ppc.c (SYMBOL_REFERENCES_LOCAL): New macro.
+ (SYMBOL_CALLS_LOCAL): New macro.
+ (ppc_elf_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL.
+ (ppc_elf_check_relocs): Use SYMBOL_REFERENCES_LOCAL.
+ (ppc_elf_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL.
+ (ppc_elf_relocate_section): Use flag variable to determine
+ whether the relocation refers to a local symbol.
+ Test whether a PLTREL24 reloc will produce a reloc by looking
+ to see whether a PLT entry was made.
-2000-10-16 Geoffrey Keating <geoffk@cygnus.com>
+2000-10-14 Geoffrey Keating <geoffk@shoggoth.cygnus.com>
- From 2000-10-14 Geoffrey Keating <geoffk@cygnus.com>
* elf32-ppc.c (ppc_elf_finish_dynamic_symbol): Don't make PLT
entries that could serve as a definition for a weak symbol.
-2000-10-15 Philip Blundell <philb@gnu.org>
+2000-10-13 Ulf Carlsson <ulfc@engr.sgi.com>
+
+ From Ralf Baechle <ralf@gnu.org>
+
+ * elf32-mips.c (mips_elf_create_dynamic_relocation): New argument
+ local_p. Add symbol value only for non-R_MIPS_REL32 relocations
+ against local symbols.
+ (_bfd_mips_elf_finish_dynamic_sections): Undo patch from 2000-10-01.
+
+2000-10-12 Alan Modra <alan@linuxcare.com.au>
+
+ * section.c (struct sec): Add kept_section.
+ (struct bfd_comdat_info): Remove sec, we can use above.
+ (STD_SECTION): Add initializer.
+ (bfd_make_section_anyway): Init here too.
+
+ * bfd-in2.h: Regenerate.
+
+ * elflink.h (elf_link_add_object_symbols): Remove unnecessary
+ zeroing of `flags'.
+ (elf_link_input_bfd): Set all asection->symbol->value's here, and
+ fudge values for discarded link-once section symbols.
+
+ * elf64-hppa.c: Include alloca-conf.h
+
+2000-10-11 Alan Modra <alan@linuxcare.com.au>
+
+ * elf.c (swap_out_syms): Revert 2000-10-07 changes.
+
+ * ieee.c (ieee_make_empty_symbol): Oops, bfd_zalloc needs another arg.
+
+2000-10-10 Alan Modra <alan@linuxcare.com.au>
+
+ * ieee.c (ieee_make_empty_symbol): Use bfd_zalloc, not bfd_zmalloc.
+
+2000-10-10 Tom Rix <trix@redhat.com>
+
+ * section.c (bfd_make_section_anyway): Release newsect ptr when
+ newsect->symbol fails to alloc. Use bfd_release instead of free.
+
+2000-10-09 Richard Henderson <rth@cygnus.com
+
+ * elf64-ia64.c (elf64_ia64_unwind_entry_compare_bfd): New.
+ (elf64_ia64_unwind_entry_compare): New.
+ (elf64_ia64_final_link): Sort the .IA_64.unwind section.
+
+2000-10-07 Alan Modra <alan@linuxcare.com.au>
+
+ * elflink.h (size_dynamic_sections): Don't create various tags if
+ .dynstr is excluded from the link. Don't set first dynsym entry
+ if dynsymcount is zero.
+ (elf_bfd_final_link): Don't try to swap out dynamic syms if
+ .dynsym excluded from the link. Don't try to write any dynamic
+ sections excluded from the link.
+
+ * elf.c (swap_out_syms): Handle global section symbols.
+
+2000-10-05 DJ Delorie <dj@redhat.com>
+
+ * peigen.c (_bfd_pei_swap_scnhdr_out): note extended relocs
+ * coffcode.h (coff_set_alignment_hook): read extended reloc count
+ (coff_write_relocs): write extended reloc count
+ (coff_write_object_contents): account for extended relocs
+
+2000-10-05 Jim Wilson <wilson@cygnus.com>
+
+ * elf-bfd.h (struct elf_backend_data): Add elf_backend_section_flags
+ field.
+ * elf.c (_bfd_elf_make_section_from_shdr): Call the
+ elf_backend_section_flags function.
+ * elf64-ia64.c (elf64_ia64_section_from_shdr): Delete flag conversion
+ code.
+ (elf64_ia64_section_flags): New function containing flag conversion
+ code.
+ (elf_backend_section_flags): Define to elf64_ia64_section_flags.
+ * elfxx-target.h (elf_backend_section_flags): Define.
+ (elfNN_bed): Initialize elf_backend_section_flags field.
+
+2000-10-02 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-hppa.c (elf32_hppa_check_relocs): Correct call to
+ _bfd_elf32_gc_record_vtable. Correct a comment.
+
+2000-10-01 Ulf Carlsson <ulfc@engr.sgi.com>
+
+ From Ralf Baechle <ralf@gnu.org>
+
+ * elf32-mips.c (_bfd_mips_elf_finish_dynamic_sections): Mark gld
+ produces binaries with got[1] = 0x80000001 to differenciate them
+ for the dynamic linker from the broken binaries produced by old
+ versions.
+
+2000-09-30 Petr Sorfa <petrs@sco.com>
+
+ * elf.c (elfcore_grok_pstatus): Check for size of pxstatus_t.
+ (elfcore_grok_lwpstatus): Check for size of lwpxstatus_t.
+ * configure.in: Add check for pxstatus_t and lwpxstatus_t.
+ * configure: Regenerate.
+
+2000-09-27 Hans-Peter Nilsson <hp@axis.com>
+
+ Define two bfd_targets for absence and presence of leading
+ underscore on symbols. Make sure to only link same kind.
+ * elf32-cris.c (cris_elf_object_p,
+ cris_elf_final_write_processing, cris_elf_print_private_bfd_data,
+ cris_elf_merge_private_bfd_data): New.
+ (elf_backend_object_p, elf_backend_final_write_processing,
+ bfd_elf32_bfd_print_private_bfd_data,
+ bfd_elf32_bfd_merge_private_bfd_data): Define.
+ <Target vector definition>: Include elf32-target.h twice with
+ different macro settings:
+ (TARGET_LITTLE_SYM): First as bfd_elf32_cris_vec, then as
+ bfd_elf32_us_cris_vec.
+ (TARGET_LITTLE_NAME): First as "elf32-cris", then "elf32-us-cris".
+ (elf_symbol_leading_char): First as 0, then '_'.
+ (INCLUDED_TARGET_FILE): Define for second include of elf32-target.h.
+ * config.bfd (cris-*-*): Add bfd_elf32_us_cris_vec to targ_selvecs.
+ * configure.in (bfd_elf32_cris_vec, cris_aout_vec): New vector.
+ * configure: Regenerate.
+ * targets.c: Declare bfd_elf32_us_cris_vec.
+ * po/bfd.pot: Regenerate.
+
+2000-09-29 Momchil Velikov <velco@fadata.bg>
+
+ * elf32-arm.h (arm_add_to_rel): Correctly adjust the addend for
+ R_ARM_THM_PC22 relocations.
+
+2000-09-29 NIIBE Yutaka <gniibe@chroot.org>
+
+ * elflink.h (elf_link_add_object_symbols): Don't bfd_release runpath.
+
+2000-09-29 Momchil Velikov <velco@fadata.bg>
+
+ * elf.c (elf_fake_sections): Do not mark the section SHT_NOBITS if
+ is has the SEC_HAS_CONTENTS flag set.
+
+2000-09-28 Örjan Friberg <orjanf@axis.com>
+ Hans-Peter Nilsson <hp@axis.com>
+
+ * aout-cris.c (N_TXTADDR): Define.
+
+2000-09-28 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * som.c: Include alloca-conf.h.
+ * Makefile.am: "make dep-am"
+ * Makefile.in: Regenerate.
+
+2000-09-27 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-hppa.c (plt_stub): New.
+ (PLT_STUB_ENTRY): Define.
+ (elf32_hppa_link_hash_table): Change multi_subspace to packed
+ boolean. Add need_plt_stub, has_12bit_branch and has_17bit_branch.
+ (elf32_hppa_link_hash_table_create): Init to suit.
+ (elf32_hppa_check_relocs): Set has_12bit_branch and
+ has_17bit_branch as appropriate.
+ (elf32_hppa_adjust_dynamic_symbol): Set need_plt_stub for
+ non-local functions.
+ (elf32_hppa_size_dynamic_sections): Correct setting of reltext.
+ Add space for plt_stub as needed.
+ (elf32_hppa_finish_dynamic_symbol): Point .plt entries for global
+ functions at plt_stub.
+ (elf32_hppa_finish_dynamic_sections): Write plt_stub.
+ (elf32_hppa_create_dynamic_sections): Leave .plt executable.
+
+ * elf32-hppa.h (elf32_hppa_size_stubs): Add group_size param.
+ * elf32-hppa.c (elf32_hppa_size_stubs): Likewise. Use it instead
+ of fixed size, and if negative, disable handling of input sections
+ before stub section. Set up default stub group size depending
+ on detected branch relocs.
+ (hppa_build_one_stub): Use lrsel and rrsel for import stubs to
+ ensure different offsets from sym_value aren't rounded to
+ different 2k blocks. Use lrsel and rrsel for other stubs too for
+ consistency rather than necessity.
+ (elf32_hppa_check_relocs): Handle R_PARISC_DIR14F.
+ (final_link_relocate): Likewise.
+ (elf32_hppa_relocate_section): Likewise.
+
+ * elf-hppa.h (elf_hppa_howto_table): Add R_PARISC_DIR14F reloc.
+ (_bfd_elf_hppa_gen_reloc_type): Generate them.
+ (elf_hppa_final_link_relocate): Handle them.
+ (elf_hppa_relocate_insn): Likewise.
+ (_bfd_elf_hppa_gen_reloc_type): Add missing e_ldsel and e_rdsel cases.
+
+2000-09-26 Hans-Peter Nilsson <hp@axis.com>
+
+ * elfcode.h (elf_object_p): Preserve and clear abfd section
+ information. Restore at error.
+
+2000-09-26 Paul Sokolovsky <Paul.Sokolovsky@technologist.com>
+
+ * peigen.c (_bfd_pei_swap_aouthdr_in): If some DataDirectory
+ is empty, make sure that its rva also 0. NT loader dislikes
+ having otherwise.
+
+2000-09-26 Steve Ellcey <sje@cup.hp.com>
+
+ * som.c (som_bfd_derive_misc_symbol_info): Make weak symbols
+ global by default.
+
+2000-09-21 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-hppa.c (elf32_hppa_check_relocs): Fix weak sym handling in
+ currently unused RELATIVE_DYNAMIC_RELOCS code.
+ (hppa_discard_copies): Likewise.
+ (elf32_hppa_size_stubs): Size `input_list' array correctly. Correct
+ comments. Don't check non-code output sections for stub grouping.
+
+2000-09-20 Alan Modra <alan@linuxcare.com.au>
+
+ * section.c (bfd_get_unique_section_name): Return NULL if
+ bfd_malloc fails.
+
+2000-09-19 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * elf32-m68k.c (elf_cpu32_plt0_entry): Change the PLT entry 0
+ instruction sequence to actually work.
+ (elf_m68k_finish_dynamic_sections): Change the patch-in offset
+ accordingly.
+
+2000-09-18 Alexandre Oliva <aoliva@redhat.com>
+
+ * elf32-sh.c (sh_elf_relocate_section): Use
+ _bfd_final_link_relocate to apply the relocation against a section
+ symbol, when doing relocatable links.
+
+2000-09-18 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-hppa.c (elf32_hppa_stub_hash_entry): Rename input_section
+ to id_sec.
+ (stub_hash_newfunc): Here too.
+ (hppa_add_stub): And here.
+ (elf32_hppa_link_hash_table): Remove stub_section_created,
+ reloc_section_created, first_init_sec and first_fini_sec. Add
+ stub_group.
+ (elf32_hppa_link_hash_table_create): Init to suit.
+ (hppa_get_stub_entry): Add support for grouping stub sections.
+ (hppa_add_stub): Likewise. Remove sec_count param and init/fini
+ section code. Index stub vars by section->id.
+ (elf32_hppa_size_stubs): Likewise. Remove duplicated function
+ exit paths. Zap allocation of above removed vars. Refine
+ link-once test.
+
+ * elf32-hppa.h (elf32_hppa_size_stubs): Add output_bfd param.
+ * elf32-hppa.c (elf32_hppa_size_stubs): Likewise.
+ (hppa_get_stub_entry): Pass in pointer to elf32_hppa_link_hash_table
+ rather than pointer to bfd_link_info.
+ (hppa_add_stub): Likewise.
+ (final_link_relocate): Likewise.
+
+2000-09-17 David Huggins-Daines <dhd@linuxcare.com>
+
+ (elf32_hppa_size_stubs): Don't try to build stubs for discarded
+ link-once sections.
+
+2000-09-16 Alexandre Oliva <aoliva@redhat.com>
+
+ * elf32-sh.c (ELF_MAXPAGESIZE): Define to 128, to match
+ ld/emulparams/shelf.sh.
+
+2000-09-10 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): New function.
+ * bfd-in.h (bfd_m68k_elf32_create_embedded_relocs): Add declaration.
+ * bfd-in2.h: Regenerate.
+
+2000-09-15 Kenneth Block <Kenneth.Block@compaq.com>
+
+ * bfd/elf64-alpha.c (elf64_alpha_relax_with_lituse): ld performs
+ LITUSE relocations incorrectly if -relax is specified on the ld
+ command line and the displacement field of the load or store
+ instruction is non-zero. (Patch by paul.winalski@compaq.com)
+
+2000-09-15 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-hppa.c (hppa_add_stub): Dont set first_init_sec and
+ first_fini_sec here.
+ (elf32_hppa_size_stubs): Instead correctly find the first .init
+ and .fini section here.
+
+2000-09-15 David Huggins-Daines <dhd@linuxcare.com>
+
+ * elf32-hppa.c (clobber_millicode_symbols): New function.
+ (elf32_hppa_size_dynamic_sections): Call it.
+
+2000-09-14 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-hppa.c (elf32_hppa_link_hash_entry): Make pic_call
+ packed. Add plabel, plt_abs packed booleans.
+ (hppa_link_hash_newfunc): Init new fields.
+ (PLABEL_PLT_ENTRY_SIZE): Define.
+ (hppa_stub_name): Use size_t len vars.
+ (hppa_add_stub): Likewise.
+ (elf32_hppa_build_stubs): Likewise.
+ (hppa_build_one_stub): Kill some compiler warnings.
+ (elf32_hppa_check_relocs): Always generate a plt entry for PLABELs
+ if dynamic linking. Munge the local plt offsets into
+ local_got_refcounts. Set h->plabel for all global PLABELs. Use
+ size_t len vars. Add assert for plabel addend.
+ (elf32_hppa_gc_sweep_hook): Sweep local plt entries too.
+ (elf32_hppa_hide_symbol): New function.
+ (elf_backend_hide_symbol): Define.
+ (elf32_hppa_adjust_dynamic_symbol): Don't throw away plt entries
+ with h->plabel set. Don't make plt entries to have dynamic syms
+ when they have been forced local. If plt entry is used by a
+ plabel, make it PLABEL_PLT_ENTRY_SIZE.
+ (elf32_hppa_size_dynamic_sections): Set plt_abs for init fns.
+ Set up .plt offsets for local syms.
+ (elf32_hppa_relocate_section): Initialise plt entries for local
+ syms. Leave weak undefined plabels zero. Make global plabel
+ relocs against function symbol, and leave the addend zero.
+ Use *ABS* DIR32 relocs instead of SEGREL32 for dynamic got relocs.
+ (elf32_hppa_finish_dynamic_symbol): Set up IPLT relocs for
+ non-dynamic syms. Init extra plt for plabels. Use *ABS* DIR32
+ relocs instead of SEGREL32 for dynamic got relocs.
+ (elf32_hppa_finish_dynamic_sections): Reserve one more .got entry.
+ (elf_backend_got_header_size): Adjust.
+ (elf32_hppa_set_gp): Calculate an "ideal" LTP.
+
+ * elf32-hppa.c (LONG_BRANCH_VIA_PLT): Define.
+ (hppa_type_of_stub): Use it instead of #if 0
+ (hppa_discard_copies): Use it here too.
+ (elf32_hppa_size_dynamic_sections): And here.
+
+ * elf32-hppa.c (elf32_hppa_link_hash_table): Remove `offset' field.
+ (elf32_hppa_link_hash_table_create): And here.
+ (hppa_build_one_stub): And here. Instead keep track of stub
+ offset using _raw_size.
+ (elf32_hppa_size_stubs): Likewise.
+ (elf32_hppa_build_stubs): Likewise.
+ (hppa_size_one_stub): Likewise. Resize reloc section too.
+
+ * elf32-hppa.c (hppa_add_stub): Correct first_init_sec and
+ first_fini_sec handling. Don't search for reloc section or set
+ hplink->reloc_section_created here.
+ (elf32_hppa_size_stubs): Instead search for reloc sections, and
+ set reloc_section_created here.
+ (hppa_handle_PIC_calls): Set ELF_LINK_HASH_NEEDS_PLT.
+ (elf32_hppa_size_dynamic_sections): Make a .plt entry for DT_INIT
+ and DT_FINI.
+ (elf32_hppa_finish_dynamic_sections): Set DT_INIT and DT_FINI.
+
+ * elf32-hppa.c (hppa_build_one_stub): Replace `elf_hash_table (info)'
+ with `hplink->root.'.
+ (elf32_hppa_check_relocs): Likewise.
+ (elf32_hppa_gc_sweep_hook): Likewise.
+ (elf32_hppa_adjust_dynamic_symbol): Likewise.
+ (hppa_handle_PIC_calls): Likewise.
+ (elf32_hppa_size_dynamic_sections): Likewise.
+ (elf32_hppa_set_gp): Likewise.
+ (elf32_hppa_relocate_section): Likewise.
+ (elf32_hppa_finish_dynamic_symbol): Likewise.
+ (elf32_hppa_finish_dynamic_sections): Likewise.
+
+ From David Huggins-Daines <dhd@linuxcare.com>
+ * elf32-hppa.c (hppa_type_of_stub): Generate import stubs for
+ defined weak symbols in shared links.
+ (final_link_relocate): Calls to defined weak symbols in shared
+ objects must go via import stubs, as the target might not be known
+ at link time.
+
+2000-09-14 Alexandre Oliva <aoliva@redhat.com>
+
+ * elf32-sh.c (sh_elf_howto_table): Moved R_SH_GOT32, R_SH_PLT32,
+ R_SH_COPY, R_SH_GLOB_DAT, R_SH_JMP_SLOT, R_SH_RELATIVE,
+ R_SH_GOTOFF, R_SH_GOTPC) to the range from 160 to 167. Replaced
+ the original entries with EMPTY_HOWTOs, and added new ones to fill
+ in the gap.
+ (sh_elf_info_to_howto): Make sure the new gap isn't used.
+ (sh_elf_relocate_section): Likewise.
+
+2000-09-13 Anders Norlander <anorland@acc.umu.se>
+
+ * cpu-mips.c (arch_info_struct): Add mips:4K
+ * bfd-in2.h (bfd_mach_mips4K): New define.
+ * archures.c: Add bfd_mach_mips4K to comment.
+ * elf32-mips.c (_bfd_mips_elf_final_write_processing): Return
+ E_MIPS_ARCH_2 for bfd_mach_mips4K.
+
+2000-09-13 Marco Franzen <marcof@thyron.com>
+
+ * som.c (som_write_symbol_strings): Do not used fixed buffers,
+ use size_t as a counter.
+ (som_write_space_strings): Similarly.
+
+2000-09-12 Jason Eckhardt <jle@cygnus.com>
+
+ * elf32-i860.c (elf32_i860_relocate_pc26): New function
+ and prototype.
+ (elf32_i860_relocate_section): Invoke new function from here.
+
+2000-09-11 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * elf.c (_bfd_elf_make_section_from_shdr): Make debug_sec_names
+ static.
+
+2000-09-10 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * coff-m68k.c (bfd_m68k_coff_create_embedded_relocs): Emit 8 NULs for
+ target section name instead of dumping core when the target symbol is
+ undefined.
+
+2000-09-09 Kazu Hirata <kazu@hxi.com>
+
+ * riscix.c: Remove DEFUN.
+
+2000-09-08 Nick Clifton <nickc@redhat.com>
- From 2000-09-08 Nick Clifton <nickc@redhat.com>
* elf32-arm.h (elf32_arm_merge_private_bfd_data): Do not
initialise flags in output bfd if the input bfd is the default
architecture with the default flags.
- From 2000-09-03 Philip Blundell <philb@gnu.org>
+2000-09-08 Kazu Hirata <kazu@hxi.com>
+
+ * archive.c: Fix formatting.
+ * coff-arm.c: Likewise.
+ * doc/chew.c: Likewise.
+
+2000-09-08 Alan Modra <alan@linuxcare.com.au>
+
+ * section.c (bfd_get_unique_section_name): Put a dot before the
+ numeric suffix.
+
+2000-09-07 Kazu Hirata <kazu@hxi.com>
+
+ * doc/chew.c: Remove all uses of DEFUN and DEFUN_VOID.
+ * elf.c: Fix formatting.
+
+2000-09-07 Alexandre Oliva <aoliva@redhat.com>
+
+ * config.bfd (sh-*-linux*): Added.
+ * configure.in (bfd_elf32_shlin_vec, bfd_elf32_shblin_vec): New.
+ * targets.c: Declare them.
+ * elf32-sh-lin.c: New file.
+ * Makefile.am: Compile it.
+ * elf32-sh.c: Don't override defines from elf32-sh-lin.c.
+ * configure, Makefile.in: Rebuilt.
+
+2000-09-06 Geoffrey Keating <geoffk@cygnus.com>
+
+ * xcofflink.c (xcoff_link_input_bfd): Include the .tocbss
+ pseduo-section when determining where the TOC ends.
+
+ * coff-rs6000.c (_bfd_xcoff_swap_aux_out): Use bfd_h_put_16 to
+ output x_tvndx as it is only two bytes wide.
+
+ * coff-rs6000.c (xcoff_howto_table): A modifiable branch-absolute
+ reloc is 26 or 32 bits wide.
+
+ * coff-rs6000.c (_bfd_xcoff_rtype2howto): The bitsize is irrelevant
+ for relocs that don't change anything. Also look at the full
+ 6 bits of bitsize.
+
+2000-09-06 Philip Blundell <philb@gnu.org>
+
+ * config.bfd (arm*-*-uclinux*): New target.
+
+2000-09-06 Alexandre Oliva <aoliva@redhat.com>
+
+ * configure: Rebuilt with new libtool.m4.
+
+2000-09-06 Alan Modra <alan@linuxcare.com.au>
+
+ * section.c (bfd_get_unique_section_name): Avoid c++ reserved
+ word for variable name.
+ * bfd-in2.h: Regenerate.
+
+2000-09-05 Nick Clifton <nickc@redhat.com>
+
+ * config.in: Regenerate.
+ * libbfd.h: Regenerate.
+ * po/bfd.pot: Regenerate.
+ * doc/bfdint.texi: Remove CVS date string - it foils compares with
+ local versions.
+
+2000-09-05 Steven Johnson <sbjohnson@ozemail.com.au>
+
+ * cpu-powerpc.c (arch_info_struct): Added MPC860 Family entry.
+
+2000-09-05 Alan Modra <alan@linuxcare.com.au>
+
+ Shared library and PIC support.
+ * elf32-hppa.c (PLT_ENTRY_SIZE): New.
+ (GOT_ENTRY_SIZE): New.
+ (ELF_DYNAMIC_INTERPRETER): New.
+ (STUB_SUFFIX): Define.
+ (LONG_BRANCH_PIC_IN_SHLIB): Define.
+ (RELATIVE_DYNAMIC_RELOCS): Define.
+ (enum elf32_hppa_stub_type): New.
+ (struct elf32_hppa_stub_hash_entry): Rename offset to
+ stub_offset. Add a number of new fields.
+ (struct elf32_hppa_link_hash_entry): New.
+ (struct elf32_hppa_link_hash_table): Add numerous fields. Remove
+ global_value.
+ (elf32_hppa_hash_table): Rename to hppa_link_hash_table.
+ (elf32_hppa_stub_hash_lookup): Rename to hppa_stub_hash_lookup.
+ (elf32_hppa_stub_hash_newfunc): Rename to stub_hash_newfunc. Init
+ new fields.
+ (hppa_link_hash_newfunc): New function.
+ (elf32_hppa_link_hash_table_create): Use above function. Init new
+ fields.
+ (elf32_hppa_stub_name): Rename to hppa_stub_name. Pass in reloc
+ instead of addend, and remove sym_name from args. Don't use
+ symbol name for local syms, instead use sym index.
+ (elf32_hppa_size_of_stub): Rename to hppa_type_of_stub, and return
+ stub type rather than size. Pass in hash and handle import stub
+ case. Also pass in reloc instead of offset so we can calculate
+ PCREL22F and PCREL12F branches properly.
+ (elf32_hppa_build_one_stub): Rename to hppa_build_one_stub. Build
+ import and export stubs too.
+ (elf32_hppa_size_one_stub): Rename to hppa_size_one_stub. Handle
+ import and export stub sizing.
+ (elf32_hppa_check_relocs): New function.
+ (elf32_hppa_adjust_dynamic_symbol): New function.
+ (hppa_discard_copies): New function.
+ (elf32_hppa_size_dynamic_sections): New function.
+ (elf_backend_size_dynamic_sections): Define.
+ (elf32_hppa_finish_dynamic_symbol): New function.
+ (elf_backend_finish_dynamic_symbol): Define.
+ (elf32_hppa_size_stubs): Stash params in link hash table, and move
+ some local vars into the link hash table too. For shared links,
+ trundle over function syms, generating export stubs. Handle
+ PCREL22F branches. Break out stub creation code from here..
+ (hppa_add_stub): .. to here. New function.
+ (elf32_hppa_final_link): Rename to elf32_hppa_set_gp, and don't
+ call the bfd linker. Use elf_gp to record global pointer.
+ Calculate a value from sections if $global$ is missing.
+ (bfd_elf32_bfd_final_link): Define as _bfd_elf32_gc_common_final_link.
+ (elf32_hppa_gc_mark_hook): New function.
+ (elf_backend_gc_mark_hook): Define.
+ (elf32_hppa_gc_sweep_hook): New function.
+ (elf_backend_gc_sweep_hook): Define.
+ (elf32_hppa_bfd_final_link_relocate): Rename to final_link_relocate.
+ Add rel to args, and remove howto, input_bfd, offset, addend,
+ sym_name as we can recalculate these locally. Handle calls to
+ dynamic objects, extra PIC relocs, PCREL22F branches. Change
+ handling of undefined weak syms. Check that stubs are in range.
+ Only look for import stubs on PCREL17F and PCREL22F relocs. Add
+ message on hitting a DPREL21L reloc that needs fixing. Subtract
+ off PC for PCREL14F. Break out code that does a stub lookup from
+ here..
+ (hppa_get_stub_entry): ..to here. New function.
+ (elf32_hppa_relocate_insn): Merge into final_link_relocate.
+ (elf32_hppa_relocate_section): Handle got and plt relocs, dynamic
+ relocs, etc. etc.
+ (elf32_hppa_finish_dynamic_sections): New function.
+ (elf_backend_finish_dynamic_sections): Define.
+ (elf_backend_final_write_processing) Define.
+ (hppa_handle_PIC_calls): New function.
+ (elf32_hppa_build_stubs): Call it. Pass link_info to
+ hppa_build_one_stub.
+ (elf32_hppa_create_dynamic_sections): New function
+ to create .plt and .got then set .plt flags correctly.
+ (elf_backend_create_dynamic_sections): Define.
+ (elf32_hppa_object_p): New function.
+ (elf_backend_object_p): Define.
+ (elf32_hppa_elf_get_symbol_type): New function.
+ (elf_backend_get_symbol_type): Define.
+ (elf_backend_can_gc_sections): Define.
+ (elf_backend_want_got_plt): Define.
+ (elf_backend_plt_alignment): Set to 2.
+ (elf_backend_plt_readonly): Define.
+ (elf_backend_want_plt_sym): Define.
+ (elf_backend_got_header_size): Reserve one entry.
+
+ * elf32-hppa.h (elf32_hppa_build_stubs): Don't pass stub bfd.
+ (elf32_hppa_size_stubs): Pass in multi_subspace.
+ (elf32_hppa_set_gp): Declare.
+
+ * section.c (SEC_HAS_GOT_REF): Define new flag for asection.
+ (bfd_get_unique_section_name): New function.
+ * bfd_in2.h: Regenerate.
+
+ * elf64-hppa.c (elf64_hppa_check_relocs): Handle R_PARISC_PCREL12F.
+ (elf64_hppa_size_dynamic_sections): Remove the FIXME at bfd_zalloc
+ comment.
+
+ From David Huggins-Daines <dhd@linuxcare.com>
+ * elf64-hppa.c (elf64_hppa_check_relocs): Fix a warning.
+ (elf64_hppa_mark_exported_functions): Set dyn_h->st_shndx.
+ (elf64_hppa_link_output_symbol_hook): Test dyn_h->st_shndx has
+ been updated in finish_dynamic_symbol before modifying function
+ symbol.
+
+ * elf-hppa.h (elf_hppa_howto_table): Restructure into groups of
+ eight entries. Replace NULL with bfd_elf_generic_reloc. Add
+ R_PARISC_GNU_VTENTRY, R_PARISC_GNU_VTINHERIT and R_PARISC_PCREL12F.
+ (_bfd_elf_hppa_gen_reloc_type): Handle R_PARISC_GNU_VT*. Add some
+ comments. Handle format == 12 for R_HPPA_PCREL_CALL.
+ (elf_hppa_final_link_relocate): Handle R_PARISC_PCREL12F.
+ (elf_hppa_relocate_insn): Likewise. Reformat some comments.
+ (elf_hppa_final_write_processing): Expose it for ARCH_SIZE == 32.
+
+ From David Huggins-Daines <dhd@linuxcare.com>
+ * elf-hppa.h (elf_hppa_is_local_label_name): Accept the SysV/ELF
+ style of local labels as well.
+
+2000-09-03 Philip Blundell <philb@gnu.org>
+
* elf32-arm.h (elf32_arm_relocate_section): Don't try to relocate
references to undefined symbols in debugging sections.
- From 2000-05-30 H.J. Lu <hjl@gnu.org>
- * elflink.c (_bfd_elf_link_record_dynamic_symbol): Clear the
- visibility bits if the symbol is undefined. Correctly handle
- weak undefined symbols with hidden and internal attributes.
- * elflink.h (elf_link_add_object_symbols): Always turn the
- symbol into local if it has the hidden or internal attribute.
+2000-09-02 H.J. Lu <hjl@gnu.org>
- From 2000-05-22 H.J. Lu <hjl@gnu.org>
- * elflink.h (elf_link_output_extsym): Clear the visibility
- field for symbols not defined locally.
+ * reloc.c (BFD_RELOC_SH_COPY, BFD_RELOC_SH_GLOB_DAT,
+ BFD_RELOC_SH_JMP_SLOT, BFD_RELOC_SH_RELATIVE,
+ BFD_RELOC_SH_GOTPC): Move them from the MIPS section to the SH
+ section.
- From 2000-05-03 Martin v. Löwis <loewis@informatik.hu-berlin.de>
- * elflink.h (elf_link_add_object_symbols): Reset dynindx for
- hidden and internal symbols.
- (elf_fix_symbol_flags): Clear NEEDS_PLT for symbols with
- visibility.
- * elflink.c (_bfd_elf_link_record_dynamic_symbol): Do not
- assign a PLT or GOT entry to symbols with hidden and
- internal visibility.
+2000-09-02 Jason Eckhardt <jle@cygnus.com>
-2000-10-16 Philip Blundell <pb@futuretv.com>
+ * elf32-i860.c (bfd_elf32_bfd_is_local_label_name): Define macro.
+ (elf32_i860_is_local_label_name): New function and prototype.
- * configure.in: Set version to 2.10.1.
+2000-09-02 Nick Clifton <nickc@redhat.com>
+
+ * configure.in: Increase version number to 2.10.91.
* configure: Regenerate.
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * po/bfd.pot: Regenerate.
-2000-09-24 H.J. Lu <hjl@gnu.org>
+2000-09-02 Daniel Berlin <dberlin@redhat.com>
- From 2000-04-20 H.J. Lu <hjl@gnu.org>
- * elf32-i386.c (elf_i386_relocate_section): Restrict 1998-12-10
- patch to symbols defined by a shared object.
+ * elf.c (_bfd_elf_make_section_from_shdr): Add
+ .gnu.linkobce.wi. to the list of debug section names.
-2000-09-06 Philip Blundell <philb@gnu.org>
+2000-09-02 Nick Clifton <nickc@redhat.com>
- Merge from mainline:
-
- 2000-05-31 Ulrich Drepper <drepper@redhat.com>
+ * dwarf2.c (find_debug_info): New function: Locate a section
+ containing dwarf2 debug information.
+ (bfd_dwarf2_find_nearest_line): Find all sections containing
+ debug information and include them in the stash.
- * elf.c (_bfd_elf_slurp_version_tables): Correct reading of version
- definitions. We must not assume they are sorted in the file
- according to their index numbers.
+2000-09-01 Niibe Yutaka <gniibe@m17n.org>, Kaz Kojima <kkojima@rr.iij4u.or.jp>, Alexandre Oliva <aoliva@redhat.com>
-2000-09-06 Philip Blundell <philb@gnu.org>
+ * elf32-sh.c (R_SH_GOT32, R_SH_PLT32, R_SH_COPY, R_SH_GLOB_DAT,
+ R_SH_JMP_SLOT, R_SH_RELATIVE, R_SH_GOTOFF, R_SH_GOTPC): New.
+ (sh_reloc_map): Add new relocs.
+ (sh_elf_check_relocs, sh_elf_link_hash_newfunc,
+ sh_elf_link_hash_table_create, sh_elf_adjust_dynamic_symbol,
+ sh_elf_size_dynamic_sections, sh_elf_finish_dynamic_symbol,
+ sh_elf_finishe_dynamic_sections, sh_elf_discard_copies): New
+ functions.
+ (ELF_DYNAMIC_INTERPRETER, PLT_ENTRY_SIZE): Define.
+ (elf_sh_plt0_entry_be, elf_sh_plt0_entry_le,
+ elf_sh_plt_entry_be, elf_sh_plt_entry_le,
+ elf_sh_pic_plt_entry_be, elf_sh_pic_plt_entry_le):
+ New array constants.
+ (elf_sh_plt0_entry, elf_sh_plt_entry, elf_sh_pic_plt_entry):
+ New variables.
+ (elf_sh_sizeof_plt, elf_sh_plt_plt0_offset,
+ elf_sh_plt0_linker_offset, elf_sh_plt0_gotid_offset,
+ elf_sh_plt_temp_offset, elf_sh_plt_symbol_offset,
+ elf_sh_plt_reloc_offset): Define.
+ (elf_sh_pcrel_relocs_copied, elf_sh_link_hash_entry,
+ elf_sh_link_hash_table): New structs.
+ (sh_elf_link_hash_traverse, sh_elf_hash_table): New macros.
+ (sh_elf_relocate_section, sh_elf_check_relocs): Handle new
+ relocation types.
+ (elf_backend_create_dynamic_sections,
+ bfd_elf32_bfd_link_hash_table_create,
+ elf_backend_adjust_dynamic_symbol,
+ elf_backend_size_dynamic_sections,
+ elf_backend_finish_dynamic_symbol,
+ elf_backend_finish_dynamic_sections, elf_backend_want_got_plt,
+ elf_backend_plt_readonly, elf_backend_want_plt_sym,
+ elf_backend_got_header_size, elf_backend_plt_header_size):
+ Define.
+ * reloc.c (BFD_RELOC_SH_COPY, BFD_RELOC_SH_GLOB_DAT,
+ BFD_RELOC_SH_JMP_SLOT, BFD_RELOC_SH_RELATIVE, BFD_RELOC_SH_GOTPC):
+ New relocs.
+ * bfd-in2.h, libbfd.h: Rebuilt.
- * config.bfd (arm*-*-uclinux*): New target.
- (armeb-*-elf, arm*b-*-linux-gnu*): Likewise.
+2000-09-01 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-i386.c (elf_i386_finish_dynamic_symbol): Revert 2000-08-27
+ change.
+
+2000-08-31 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * elf32-sh.c (sh_elf_merge_private_data): If ibfd's elf header flags
+ not initialized, set them to indicate the SH1 instruction set.
+
+2000-08-31 Alexandre Oliva <aoliva@redhat.com>
+
+ * acinclude.m4: Include libtool and gettext macros from the
+ top level.
+ * aclocal.m4, configure: Rebuilt.
+
+2000-08-29 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * elf.c: Eliminate references to __sparcv9 macro; replace with
+ autoconf variables HAVE_PSINFO32_T etc.
+ * configure.in: Auto-configure HAVE_PSINFO_32_T, HAVE_PRPSINFO32_T,
+ HAVE_PSTATUS32_T, HAVE_PRSTATUS32_T, HAVE_PRSTATUS32_T_PR_WHO.
+ * config.in: Ditto.
+ * acinclude.m4 (BFD_HAVE_SYS_PROCFS_TYPE) define _SYSCALL32 so it can
+ detect the above typedefs. (BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): Ditto.
+ * aclocal.m4: Ditto.
+ * configure: Regenerate.
+
+2000-08-27 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-i386.c (elf_i386_check_relocs): Keep info on relocs copied
+ for any shared link, not just shared -Bsymbolic.
+ (elf_i386_size_dynamic_sections): Call elf_i386_discard_copies on
+ any shared link, and pass link info to it.
+ (elf_i386_size_dynamic_sections): Update comment.
+ (elf_i386_discard_copies): Modify to discard relocs for symbols
+ that have been forced local.
+ (elf_i386_finish_dynamic_symbol): Don't copy relocs for symbols
+ that have been forced local.
+
+2000-08-24 Denis Chertykov <denisc@overta.ru> & Nick Clifton <nickc@redhat.com>
+
+ * elflink.h (elf_link_add_object_symbols): Allow common
+ symbols to have an alignment of 1 if explicitly requested, and
+ not overridden by other definitions.
2000-08-22 Doug Kwan <dkwan@transmeta.com>
* coff-w65.c (CREATE_LITTLE_COFF_TARGET): Fix typo.
* coffcode.h (coff_set_flags): Add detection of w65 architecture.
-2000-04-14 Matthew Green <mrg@cygnus.com>
-
- * config.bfd: Add NetBSD/sparc64 support.
+2000-08-22 H.J. Lu <hjl@gnu.org>
+
+ * elf-bfd.h (elf_link_hash_table): Add runpath.
+
+ * bfd-in.h (bfd_elf_get_runpath_list): New prototype.
+ * bfd-in2.h: Rebuilt.
+
+ * elf.c (_bfd_elf_link_hash_table_init): Initialize the
+ "runpath" field to NULL.
+ (bfd_elf_get_runpath_list): New function.
+
+ * elflink.h (elf_link_add_object_symbols): Record DT_RPATH and
+ DT_RUNPATH entries.
+
+2000-08-22 Alexandre Oliva <aoliva@redhat.com>
+
+ * elf32-sh.c (sh_elf_relocate_section) [R_SH_IND12W,
+ R_SH_DIR8WPN, R_SH_DIR8WPZ, R_SH_DIR8WPL]: Handle them
+ explicitly. Improve validation of r_type.
+
+2000-08-21 H.J. Lu <hjl@gnu.org>
+
+ * elf32-i386.c (elf_i386_size_dynamic_sections): Zero out the
+ dynamic allocated content space. Add a comment to remind us that
+ one day this ought to be fixed.
+ * elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise.
+ * elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise.
+ * elf64-hppa.c (elf64_hppa_size_dynamic_sections): Likewise.
+
+2000-08-21 Jason Eckhardt <jle@cygnus.com>
+
+ * elf32-i860.c (elf32_i860_relocate_pc16): Just write the immediate
+ field with the newly relocated value instead of adding it to the
+ existing immediate field.
+ (elf32_i860_relocate_splitn): Likewise.
+ (elf32_i860_relocate_highadj): Likewise.
+
+2000-08-16 Jason Eckhardt <jle@cygnus.com>
+
+ * elf32-i860.c (elf32_i860_relocate_pc16): Implemented function (it
+ was previously just a stub).
+
+2000-08-16 Alexandre Oliva <aoliva@redhat.com>
+
+ * elflink.c (_bfd_elf_create_got_section): Don't abort().
+ Formatting fixes.
+ (_bfd_elf_create_dynamic_sections): Likewise.
+
+2000-08-16 Andrew Macleod <amacleod@cygnus.com>
+
+ * elf64-sparc.c (sparc64_elf_relocate_section): Set relocation address
+ for undefined symbols to be the beginning of the section.
+
+ * elf64-sparc.c (sparc64_elf_adjust_dynamic_symbol): Don't allocate
+ four extra entries at the beginning of the .rela.plt section.
+ (sparc64_elf_finish_dynamic_symbol): Adjust the offset in the .rela.plt
+ section to account for the four reserved entries in the .plt section.
+
+2000-08-15 Geoffrey Keating <geoffk@cygnus.com>
+
+ * xcofflink.c (_bfd_ppc_xcoff_relocate_section): Add ori r0,r0,0
+ to the list of NOPs we recognize after a branch-and-link.
+ Use the ori NOP when one is needed.
+
+ * coff-rs6000.c (_bfd_xcoff_slurp_armap): Finish implementation
+ for large archives.
+
+2000-08-14 Jim Wilson <wilson@cygnus.com>
+
+ * elf64-ia64.c (elf64_ia64_merge_private_bfd_data): Handle
+ EF_IA_64_REDUCEDFP, EF_IA_64_CONS_GP, and EF_IA_64_NOFUNCDESC_CONS_GP.
+ (elf64_ia64_print_private_bfd_data): Likewise. Also handle
+ EF_IA_64_ABSOLUTE.
+
+2000-08-11 Alexandre Oliva <aoliva@redhat.com>
+
+ * elf32-sh.c (sh_elf_set_mach_from_flags): Make it static.
+
+2000-08-10 Jason Eckhardt <jle@cygnus.com>
+
+ * elf32-i860.c (elf32_i860_relocate_section): New function.
+ (i860_final_link_relocate): New function.
+ (elf32_i860_relocate_splitn): New function.
+ (elf32_i860_relocate_pc16): New function.
+ (elf32_i860_relocate_highadj): New function.
+ (elf32_i860_howto): Minor adjustments to some relocations.
+ (elf_info_to_howto_rel): Define.
+ (elf_backend_relocate_section): Define.
+
+2000-08-10 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-arm.h: Fix formatting.
+
+2000-08-10 Bernd Schmidt <bernds@cygnus.co.uk>
+
+ * elf32-sh.c (sh_elf_reloc_loop): Make LAST_SYMBOL_SECTION static.
+
+2000-08-08 Jason Eckhardt <jle@cygnus.com>
+
+ * elf32-i860.c (elf32_i860_howto_table): Updated some fields.
+
+2000-08-07 Kazu Hirata <kazu@hxi.com>
+
+ * ieee.c (ieee_write_debug_part): Rewrite a comment.
+ * elf64-ia64.c: Fix a typo.
+
+2000-08-05 Jason Eckhardt <jle@cygnus.com>
+
+ * elf32-i860 (elf32_i860_howto_table): New structure.
+ (lookup_howto): New function.
+ (elf32_i860_reloc_type_lookup): New function.
+ (elf32_i860_info_to_howto_rela): New function.
+ (elf_code_to_howto_index): New structure.
+ (elf_info_to_howto): Re-define as elf32_i860_info_to_howto_rela.
+ (bfd_elf32_bfd_reloc_type_lookup): Re-define as
+ elf32_i860_reloc_type_lookup.
+
+2000-08-04 Rodney Brown <RodneyBrown@pmsc.com>
+
+ * som.c (struct fixup_format): Constify `format'.
+ (som_hppa_howto_table): Use SOM_HOWTO macro.
+ (try_prev_fixup, hppa_som_reloc): Decorate unused parameter.
+ (som_bfd_reloc_type_lookup): Likewise.
+ (compare_subspaces): Remove unused `count1', `count2'.
+ (som_begin_writing): Remove unused `total_reloc_size'.
+ (som_bfd_derive_misc_symbol_info): Decorate unused parameter.
+ (som_print_symbol, som_bfd_is_local_label_name): Likewise.
+ (som_set_reloc_info): Constify `cp'. Remove unused `addend'.
+ (som_find_nearest_line): Decorate unused parameter(s).
+ (som_sizeof_headers, som_get_symbol_info, som_write_armap): Likewise.
+ (som_bfd_link_split_section): Likewise.
+
+2000-08-03 Nick Clifton <nickc@cygnus.com>
+
+ * section.c: Restore backed out code.
+ * elf.c: Restore backed out code.
+ (copy_private_bfd_data): Fix bug preventing stipped dynamic
+ binaries from working.
+ * bfd-in2.h: Regenerate.
+
+2000-08-03 H.J. Lu <hjl@gnu.org>
+
+ * section.c: Back out the change made by Nick Clifton
+ <nickc@cygnus.com> on 2000-07-31. It breaks stripping dynamic
+ binaries.
+ * bfd-in2.h: Likewise.
+ * elf.c: Likewise.
+
+2000-08-03 Alexandre Oliva <aoliva@redhat.com>
+
+ * elf32-sh.c (sh_elf_reloc_loop): Warning removal.
+
+2000-07-31 Jason Eckhardt <jle@cygnus.com>
+
+ * reloc.c (BFD_RELOC_860_*): New bfd relocs for i860.
+ * bfd-in2.h, libbfd.h: Regenerate.
+
+2000-07-31 Nick Clifton <nickc@cygnus.com>
+
+ * section.c (struct sec): Add new boolean field 'segment_mark'.
+ (STD_SECTION): Initialise new field to zero.
+
+ * bfd-in2.h: Regenerate.
+
+ * elf.c (copy_private_bfd_data): Reorganise section to segment
+ mapping to cope with moved sections requiring new segments,
+ and overlapping segments.
+ (SEGMENT_END): New macro: Return the end address of a segment.
+ (IS_CONTAINED_BY_VMA): New macro: Determine if a segment
+ contains a section by comparing their VMA addresses.
+ (IS_CONTAINED_BY_LMA): New macro: Determine if a segment
+ contains a section by comparing their LMA addresses.
+ (INCLUDE_SECTION_IN_SEGMENT): New macro: Determine if a
+ section should be included in a segment.
+ (SEGMENT_AFTER_SEGMENT): New macro: Determine if one segment
+ follows another in memory.
+ (SEGMENT_OVERLAPS_SEGMENT): New macro: Determine if two
+ segments overlap.
+
+2000-07-22 Jason Eckhardt <jle@cygnus.com>
+
+ * cpu-i860.c: Added comments.
+
+ * elf32-i860.c (TARGET_LITTLE_SYM): Defined to
+ bfd_elf32_i860_little_vec.
+ (TARGET_LITTLE_NAME): Defined to "elf32-i860-little".
+ (ELF_MAXPAGESIZE): Changed to 4096.
+
+ * targets.c (bfd_elf32_i860_little_vec): Declaration of
+ new target.
+ (bfd_target_vector): Added bfd_elf32_i860_little_vec.
+
+ * config.bfd (i860-stardent-sysv4*, i860-stardent-elf*): Added
+ config for little endian elf32 i860.
+ (targ_defvec): Define for the new config above
+ as "bfd_elf32_i860_little_vec".
+ (targ_selvecs): Define for the new config above
+ as "bfd_elf32_i860_vec bfd_elf32_i860_little_vec"
+
+ * configure.in (bfd_elf32_i860_little_vec): Added recognition
+ of new target vec.
+
+ * configure: Regenerated.
+
+2000-07-27 H.J. Lu <hjl@gnu.org>
+
+ * elflink.h (elf_merge_symbol): Take one more argument,
+ dt_needed, to indicate if the symbol comes from a DT_NEEDED
+ entry. Don't overide the existing weak definition if dt_needed
+ is true.
+ (elf_link_add_object_symbols): Pass dt_needed to
+ elf_merge_symbol ().
+
+2000-07-27 Nick Clifton <nickc@cygnus.com>
+
+ * elflink.h (elf_link_size_reloc_section): Zeroes the section's
+ allocated contents.
+
+2000-07-25 Geoffrey Keating <geoffk@cygnus.com>
+
+ * configure.host (*-*-aix*): AIX has 'long long' always.
+
+ * coff-rs6000.c (xcoff_write_one_armap_big): New procedure.
+ (xcoff_write_armap_big): Write both 32-bit and 64-bit armaps.
+ (xcoff_write_archive_contents_big): Don't update the offset
+ of the symbol table, xcoff_write_armap will do it.
+
+2000-07-23 Ulf Carlsson <ulfc@engr.sgi.com>
+
+ * elf32-mips.c (_bfd_mips_elf_check_relocs): Use abfd instead
+ of dynobj for SGI_COMPAT checks.
+
+2000-07-21 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * coff-m68k.c (bfd_m68k_coff_create_embedded_relocs): New function.
+ * bfd-in.h (bfd_m68k_coff_create_embedded_relocs): Add declaration.
+ * bfd-in2.h: Regenerate.
+
+2000-07-21 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-mips.c (_bfd_mips_elf_check_relocs): Detect out of
+ range symbol indices in relocs and issue an error message.
+
+2000-07-20 H.J. Lu <hjl@gnu.org>
+
+ * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Don't check
+ info->new_dtags when setting DT_FLAGS_1. It will only be set
+ by the new linker options. It shouldn't break anything.
+
+2000-07-20 H.J. Lu <hjl@gnu.org>
+
+ * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set DT_FLAGS_1
+ only if info->new_dtags is true.
+
+2000-07-20 H.J. Lu <hjl@gnu.org>
+
+ * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set
+ DT_RUNPATH and DT_FLAGS only if info->new_dtags is true.
+
+2000-07-20 Hans-Peter Nilsson <hp@axis.com>
+
+ * Makefile.am (ALL_MACHINES): Add cpu-cris.lo.
+ (ALL_MACHINES_CFILES): Add cpu-cris.c.
+ (BFD32_BACKENDS): Add aout-cris.lo and elf32-cris.lo.
+ (BFD32_BACKENDS_CFILES): Add aout-cris.c and elf32-cris.c.
+ (cpu-cris.lo, aout-cris.lo, elf32-cris.lo): New rules.
+ * Makefile.in: Rebuild.
+ * aclocal.m4: Rebuild.
+ * aoutx.h (NAME(aout,machine_type)): Add case for bfd_arch_cris.
+ * archures.c (enum bfd_architecture): Add bfd_arch_cris.
+ (bfd_cris_arch): Declare.
+ (bfd_archures_list): Add bfd_cris_arch.
+ * bfd-in2.h: Rebuild.
+ * config.bfd: (cris-*-*): New target.
+ * configure.in (bfd_elf32_cris_vec, cris_aout_vec): New vectors.
+ * configure: Rebuild.
+ * elf.c (prep_headers): Add bfd_arch_cris.
+ * libbfd.h: Rebuild.
+ * libaout.h (enum machine_type): Add M_CRIS.
+ * reloc.c: Add CRIS relocations.
+ * targets.c (bfd_elf32_cris_vec, cris_aout_vec): Declare.
+ (bfd_target_vect): Add bfd_elf32_cris_vec and cris_aout_vec.
+ * cpu-cris.c, aout-cris.c, elf32-cris.c: New files.
+ * po/POTFILES.in, po/bfd.pot: Regenerate.
+
+2000-07-19 H.J. Lu <hjl@gnu.org>
+
+ * elf32-arm.h (elf32_arm_size_dynamic_sections): Also set
+ DF_TEXTREL if DT_TEXTREL is set.
+ * elf32-i370.c (i370_elf_size_dynamic_sections): Likewise.
+ * elf32-i386.c (elf_i386_size_dynamic_sections): Likewise.
+ * elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise.
+ * elf32-mips.c (_bfd_mips_elf_size_dynamic_sections): Likewise.
+ * elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise.
+ * elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise.
+ * elf64-alpha.c (elf64_alpha_size_dynamic_sections): Likewise.
+ * elf64-hppa.c (elf64_hppa_size_dynamic_sections): Likewise.
+ * elf64-ia64.c (elf64_ia64_size_dynamic_sections): Likewise.
+ * elf64-sparc.c (sparc64_elf_size_dynamic_sections): Likewise.
+
+ * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Also
+ set DF_SYMBOLIC for symbolic link. Also set DT_RUNPATH if
+ DT_RPATH is set.
+ Set the DT_FLAGS and DT_FLAGS_1 entries if necessary.
+
+2000-07-19 H.J. Lu <hjl@gnu.org>
+
+ * bfd-in.h (bfd_elf_set_dt_needed_soname): New.
+ * bfd-in2.h: Rebuild.
+
+ * elf-bfd.h (elf_obj_tdata): Add dt_soname.
+ (elf_dt_soname): New.
+
+ * elf.c (bfd_elf_set_dt_needed_soname): New.
+
+ * elflink.h (elf_link_add_object_symbols): Add the DT_NEEDED
+ entry if the shared object loaded by DT_NEEDED is used to
+ resolve the reference in a regular object.
+
+2000-07-19 H.J. Lu <hjl@gnu.org>
+
+ * elf.c (_bfd_elf_print_private_bfd_data): Handle DT_CONFIG,
+ DT_DEPAUDIT and DT_AUDIT as strings.
+
+2000-07-19 Nick Clifton <nickc@cygnus.com>
+
+ * format.c: Fix formatting.
+
+2000-07-19 H.J. Lu <hjl@gnu.org>
+
+ * elf.c (_bfd_elf_print_private_bfd_data): Fix DT_CHECKSUM.
+
+2000-07-19 H.J. Lu <hjl@gnu.org>
+
+ * elf.c (_bfd_elf_print_private_bfd_data): Handle DT_BIND_NOW,
+ DT_INIT_ARRAY, DT_FINI_ARRAY, DT_INIT_ARRAYSZ, DT_FINI_ARRAYSZ,
+ DT_RUNPATH, DT_FLAGS, DT_PREINIT_ARRAY, DT_PREINIT_ARRAYSZ,
+ DT_PLTPADSZ, DT_MOVEENT, DT_MOVESZ, DT_FEATURE, DT_POSFLAG_1,
+ DT_SYMINSZ, DT_SYMINENT, DT_CONFIG, DT_DEPAUDIT, DT_AUDIT,
+ DT_PLTPAD, DT_MOVETAB, DT_SYMINFO, DT_RELACOUNT, DT_RELCOUNT,
+ DT_FLAGS_1, DT_USED and DT_CHECKSUM.
+
+2000-07-18 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * elf.c (bfd_elf_get_sign_extend_vma, bfd_elf_get_arch_size): Move
+ renamed functions from here...
+ (assign_section_numbers): Use renamed functions.
+ (prep_headers): Use renamed functions.
+
+ * bfd.c (bfd_get_sign_extend_vma, bfd_get_arch_size): ...To here.
+ * bfd-in.h (bfd_get_sign_extend_vma, bfd_get_arch_size): Update.
+ * bfd-in2.h: Regenerate.
+
+2000-07-18 Ulf Carlsson <ulfc@engr.sgi.com>
+
+ * elf32-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Add
+ parenthesis in if statement.
+
+2000-07-17 Koundinya K <kk@ddeorg.soft.net>
+
+ Enable the support for Traditional MIPS.
+ * elf32-mips.c (IRIX_COMPAT): Recognize bfd_elf32_tradbigmips_vecand
+ return ict_none appropriately for traditional mips targets.
+ (STUB_LW): Change 0x8f998000 to 0x8f998010 for traditional mips.
+ (STUB_MOVE): Conditionalize for traditonal mips.
+ (STUB_LI16): Likewise.
+ (_bfd_mips_elf_modify_segment_map): Conditionalize to avoid making
+ room for RTPROC header.
+ (_bfd_mips_elf_modify_segment_map): For a normal mips executable set
+ the permission for the PT_DYNAMIC as read, write and execute.
+ (mips_elf_calculate_relocation): Check for the symbol _DYNAMIC_LINKING
+ for traditonal mips.
+ (_bfd_mips_elf_create_dynamic_sections): Add the symbol
+ _DYNAMIC_LINKING for traditonal mips.
+ (_bfd_mips_elf_create_dynamic_sections): Add the symbol __RLD_MAP
+ in case of traditonal mips.
+ (_bfd_mips_elf_adjust_dynamic_symbol): Create a stub only if a PLT
+ entry is required. For a function if PLT is not required then set the
+ corresponding hash table entry to 0.
+ (_bfd_mips_elf_size_dynamic_sections): Add DT_DEBUG entry for
+ traditonal mips.
+ (_bfd_mips_elf_finish_dynamic_symbol): for a undefined symbol in a
+ shared object set the value to 0.
+ (_bfd_mips_elf_finish_dynamic_symbol): Check for the symbol
+ _DYNAMIC_LINKING for traditonal mips.
+ (_bfd_mips_elf_finish_dynamic_symbol): Check for the symbol __RLD_MAP
+ for traditonal mips.
+
+2000-07-15 H.J. Lu <hjl@gnu.org>
+
+ * aoutx.h (translate_to_native_sym_flags): Handle BSF_LOCAL.
+
+2000-07-12 Charles Wilson <cwilson@ece.gatech.edu>
+
+ * libbfd.c (bfd_seek): fix 'seek beyond EOF' error when writing
+ out a structure that is BFD_IN_MEMORY.
+
+2000-07-11 Alan Modra <alan@linuxcare.com.au>
+
+ * elf64-hppa.c (get_dyn_name): Pass in section pointer instead of
+ bfd pointer. Print section id instead of bfd pointer for local
+ syms. Prefix addend with `+' for global syms as well as local.
+ Correct calculation of name component lengths.
+ (elf64_hppa_check_relocs): Update call to get_dyn_name.
+
+ From David Huggins-Daines <dhd@linuxcare.com>
+ * elf-hppa.h (elf_hppa_relocate_section): Update calls here too.
+ * elf64-hppa.c (elf64_hppa_check_relocs): Fix some warnings.
+ (elf64_hppa_modify_segment_map): Likewise.
+
+2000-07-11 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * elf.c (bfd_elf_get_sign_extend_vma): Return tendency of VMA
+ addresses to be "naturally" sign extended. Return -1 if unknown.
+ * bfd-in.h (bfd_elf_get_sign_extend_vma): Add declaration.
+ * bfd-in2.h: Regenerate.
+
+2000-07-11 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * ecoffswap.h (ecoff_get_off, ecoff_put_off): Add ECOFF_SIGNED_32
+ and ECOF_SIGNED_64 to list ways to extract an offset.
+ (ecoff_swap_fdr_in, ecoff_swap_fdr_out, ecoff_swap_pdr_in,
+ ecoff_swap_pdr_out, ecoff_swap_ext_in, ecoff_swap_ext_out):
+ Update.
+ * elf64-mips.c (ECOFF_SIGNED_64): Define instead of ECOFF_64.
+ * elf32-mips.c (ECOFF_SIGNED_32): Define instead of ECOFF_32.
+
+2000-07-11 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * elfcode.h (elf_object_p): Use bfd_set_start_address and not
+ bfd_get_start_address.
+ (elf_swap_ehdr_in): Sign extend e_entry when applicable.
+ (elf_swap_ehdr_out): Ditto.
+
+2000-07-10 Alexander Aganichev <AAganichev@hypercom.com>
+
+ * archures.c (bfd_default_scan): Add set of bfd_mach_ cases for
+ compatibility with older binutils.
+
+2000-07-10 Alan Modra <alan@linuxcare.com.au>
+
+ * section.c (bfd_make_section_anyway): Start section_id at 0x10.
+ (STD_SECTION): Avoid negative ids, instead use 0 to 3.
+
+ From Ryan Bradetich <rbradetich@uswest.net>
+ * dwarf1.c (parse_die): Cure signed/unsigned char warnings.
+ (parse_line_table): Ditto.
+ (_bfd_dwarf1_find_nearest_line): Ditto.
+ * syms.c (cmpindexentry): Remove extra `*' from params.
+
+2000-07-09 Koundinya K <kk@ddeorg.soft.net>
+
+ * elf32-mips.c (sort_dynamic_relocs): New Function.
+ (_bfd_mips_elf_finish_dynamic_sections): Call sort_dynamic_relocs
+ via qsort to sort the dynamic relocations in increasing r_symndx
+ value.
+
+2000-07-09 Alan Modra <alan@linuxcare.com.au>
+
+ * elf64-hppa.c (elf64_hppa_dyn_hash_table_init): Add
+ ATTRIBUTE_UNUSED to unused args.
+ (get_opd): Likewise.
+ (get_plt): Likewise.
+ (get_dlt): Likewise.
+ (get_stub): Likewise.
+ (elf64_hppa_adjust_dynamic_symbol): Likewise.
+ (elf64_hppa_link_output_symbol_hook): Likewise.
+ (elf64_hppa_check_relocs): Delete unused var.
+ (elf64_hppa_size_dynamic_sections): Likewise.
+ (elf64_hppa_finalize_opd): Likewise.
+ (elf64_hppa_finalize_dynreloc): Likewise.
+ (elf64_hppa_modify_segment_map): Likewise.
+ (elf64_hppa_finish_dynamic_sections): Likewise.
+
+ * elf-hppa.h (elf_hppa_final_write_processing): Add
+ ATTRIBUTE_UNUSED to unused args.
+ (elf_hppa_final_link_relocate): Likewise.
+ (elf_hppa_record_segment_addrs): Add paretheses.
+ (elf_hppa_relocate_section): Constify dyn_name.
+
+ From David Huggins-Daines <dhd@linuxcare.com>
+ * config.bfd: Add hppa*64*-*-linux-gnu 64-bit target, and
+ rearrange case statement so that it gets preferred to 32-bit ones.
+
+ * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Use
+ asection->id instead of address of asection structure.
+ (elf32_hppa_size_stubs): Likewise.
+
+ * elf32-hppa.c (elf32_hppa_size_stubs): Use just one stub section
+ for .init* and .fini*.
+
+ * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Mask pointers
+ and addends used in stub names to 32 bits.
+ (elf32_hppa_size_stubs): Likewise.
+
+ * elf-hppa.h (elf_hppa_final_link_relocate): Don't sum addend
+ twice for R_PARISC_GPREL64. Use bfd_put_32 for R_PARISC_PCREL32,
+ not bfd_put_64. Fix minor comment typo and formatting.
+
+ Changes to create multiple linker stubs, positioned immediately
+ before the section where they are required.
+ * elf32-hppa.c: Don't include hppa_stubs.h.
+ (elf32_hppa_stub_hash_entry): Add a pointer to the stub section.
+ (elf32_hppa_stub_hash_table): Delete.
+ (elf32_hppa_link_hash_entry): Delete.
+ (elf32_hppa_link_hash_table): Use plain bfd_hash_table for
+ stub_hash_table, and store the struct here rather than a pointer.
+ Delete output_symbol_count. Add offset array. Change
+ global_value to a bfd_vma.
+ (elf32_hppa_stub_hash_lookup): Use table instead of table->root.
+ (elf32_hppa_stub_hash_traverse): Delete.
+ (elf32_hppa_name_of_stub): Delete.
+ (elf32_hppa_link_hash_lookup): Delete.
+ (elf32_hppa_link_hash_traverse): Delete.
+ (elf32_hppa_stub_hash_table_init): Delete.
+ (elf32_hppa_size_of_stub): Pass input section and offset rather
+ than location and calculate location here. Don't pass name as all
+ stubs are now the same size.
+ (elf32_hppa_stub_hash_newfunc): Init new fields.
+ (elf32_hppa_link_hash_table_create): Likewise, and stub_hash_table
+ too.
+ (elf32_hppa_bfd_final_link_relocate): Cast enums to int before
+ comparing against ints. Rewrite stub handling code.
+ (elf32_hppa_relocate_section): Make r_type and r_symndx unsigned.
+ Case enums to int before comparing against ints. Remove
+ bfd_reloc_dangerous case.
+ (elf32_hppa_build_one_stub): Rewrite.
+ (elf32_hppa_size_one_stub): New function.
+ (elf32_hppa_build_stubs): Rewrite.
+ (elf32_hppa_size_stubs): Pass in linker call-back functions.
+ Rewrite stub-handling specific code.
+
+ * elf32-hppa.h (elf32_hppa_size_stubs): Update prototype.
+
+ * elf64-hppa.c (elf64_hppa_dyn_hash_entry): Fix a comment typo.
+
+ * hppa_stubs.h: Delete.
+ * Makefile.am (SOURCE_HFILES): Remove hppa_stubs.h
+ (elf32-hppa.lo): Remove hppa_stubs.h from dependencies.
+ * Makefile.in: Regenerate.
+
+ * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Handle e_nlsel and
+ e_nlrsel.
+
+ * libhppa.h (hppa_field_adjust): Correct e_nsel case.
+
+ * elf32-hppa.c (elf32_hppa_relocate_section): Mention the offset
+ and section name for bfd_reloc_notsupported error message.
+ (elf32_hppa_bfd_final_link_relocate): Print reasons for returning
+ bfd_reloc_notsupported.
+ (elf32_hppa_relocate_section): Add ATTRIBUTE_UNUSED to output_bfd.
+
+ * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Handle
+ undefined weak symbols for all relocs.
+ (elf32_hppa_size_of_stub): Adjust calculation by 8 since branch
+ offsets are relative to one past the delay slot.
+ (elf32_hppa_size_stubs): Account for reloc addend when calculating
+ branch destination. Put addend into stub name too.
+ (elf32_hppa_bfd_final_link_relocate): Account for reloc addend and
+ adjust by 8 when deciding whether a linker stub is needed. Put
+ addend into stub name as for above.
+
+ * elf32-hppa.c (hppa_elf_relocate_insn): Change signed/unsigned on
+ various args and vars.
+ (elf32_hppa_bfd_final_link_relocate): Here too.
+ (elf32_hppa_size_stubs): Rename index -> indx. Use e_indx for
+ inner block var to avoid shadowing.
+
+ * elf32-hppa.h (_bfd_elf32_hppa_gen_reloc_type): Make `field' arg
+ unsigned.
+ * elf64-hppa.h (_bfd_elf64_hppa_gen_reloc_type): Ditto.
+ * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Ditto.
+ (elf_hppa_fake_sections): Rename local var to avoid shadowing.
+
+ * libhppa.h: Change practically all unsigned ints to plain ints.
+ Remove tests on gcc version. Instead use ATTRIBUTE_UNUSED for
+ prototypes.
+
+ From Ryan Bradetich <rbradetich@uswest.net>
+ * libhppa.h (hppa_opcode_type): New enum to replace #define's.
+ * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Modify to
+ suit above.
+ From David Huggins-Daines <dhd@linuxcare.com>
+ * elf-hppa.h (elf_hppa_relocate_insn): Update the opcode constants
+ to the new OP_* ones.
+
+ * elf32-hppa.c (elf32_hppa_size_stubs): Consolidate freeing on
+ error exit. Bail out earlier on plabel relocs that we aren't
+ interested in. Don't tell elf32_hppa_stub_hash_lookup to copy
+ string, and then don't free our copy.
+ (elf32_hppa_build_one_stub): Make insn unsigned int.
+
+ * libhppa.h (bfd_hppa_insn2fmt): 22 bit branches are only
+ available with BL, not BE and BLE.
+
+ * elf32-hppa.c (hppa_elf_relocate_insn): Add some more example
+ code for elf arg relocs.
+ (elf32_hppa_bfd_final_link_relocate): Replace boolean is_local
+ argument with elf_link_hash_entry h. Handle undefined weak
+ symbols. Move $global$ lookup from here...
+ (elf32_hppa_relocate_section): ...to here. Return correct error
+ message for non-handled relocs.
+ (elf32_hppa_size_of_stub): Correctly test branch range. Previous
+ wrong test was -0x3ffff to +0x40000.
+
+ * elf-hppa.h (elf_hppa_final_link_relocate): R_PARISC_DIR17R,
+ R_PARISC_DIR17F, and R_PARISC_DIR21L are for absolute branches;
+ Handle them as such.
+ (elf_hppa_relocate_insn): Fix a typo.
+
+ * libhppa.h (GET_FIELD, GET_BIT, MASK, CATENATE, ELEVEN): Delete.
+ (assemble_3, assemble_6, assemble_12, assemble_16, assemble_16a,
+ assemble_17, assemble_21): Delete.
+ Supply defines for all 64 possible opcodes.
+ (bfd_hppa_insn2fmt): Add bfd argument, and use to select wide mode
+ formats. Handle COMICLR.
+ (hppa_rebuild_insn): Delete bfd argument. Handle formats 10, -11,
+ -10, -16, 16, 22.
+
+ * elf32-hppa.c (hppa_elf_relocate_insn): Complete rewrite.
+ (elf32_hppa_bfd_final_link_relocate): Major rewrite.
+ (elf32_hppa_build_one_stub): Modify hppa_elf_relocate_insn calls
+ to suit.
+ (elf32_hppa_size_stubs): Don't free stub_name twice. Read in all
+ the local syms - did this code get deleted accidentally? Ignore
+ undefined and undefweak syms.
+
+ * elf-hppa.h (elf_hppa_final_link): Move hppa_info to outermost
+ block. Use it instead of elf64_hppa_hash_table (info).
+ (elf_hppa_final_link_relocate): Use hppa_info instead of
+ elf64_hppa_hash_table (info).
+
+ * libhppa.h (re_assemble_3, re_assemble_12, re_assemble_16,
+ re_assemble_17, re_assemble_21, re_assemble_22): Don't mask insn.
+ (hppa_rebuild_insn): Mask immediate bits here instead.
+ * elf-hppa.h (elf_hppa_relocate_insn): Mask here too.
+
+2000-07-08 Alan Modra <alan@linuxcare.com.au>
+
+ * section.c (struct sec): Add id field. Tidy comment formatting.
+ (bfd_make_section_anyway): Set id.
+ (STD_SECTION): Init id too.
+ Change CONST to const throughout.
+ * archures.c (bfd_arch_info): Tidy comment.
+ (bfd_arch_list): Change a CONST to const.
+ * libbfd-in.h: Tidy comments and replace CONST with const.
+ * elf-bfd.h: Likewise.
+ * libbfd.h: Regenerate.
+ * bfd-in2.h: Regenerate.
+ * libcoff.h: Regenerate.
+
+2000-07-07 DJ Delorie <dj@redhat.com>
+
+ * archive.c (_bfd_write_archive_contents): Add an informative
+ comment.
+
+2000-07-06 Kazu Hirata <kazu@hxi.com>
+
+ * srec.c: Fix formatting.
+
+2000-06-05 DJ Delorie <dj@redhat.com>
+
+ * MAINTAINERS: new
+
+2000-07-04 Alexandre Oliva <aoliva@redhat.com>
+
+ * coff-arm.c (coff_arm_relocate_section): Do not ignore the symbol
+ value of PC-relative offsets.
+
+2000-07-03 Jim Wilson <wilson@cygnus.com>
+
+ * elf64-alpha.c (alpha_elf_size_info): New.
+ (elf_backend_size_info): Define to alpha_elf_size_info.
+ * elfcode.h (elf_size_info): Change hash bucket size to 4.
+
+2000-07-03 Ulf Carlsson <ulfc@engr.sgi.com>
+
+ * elf32-mips.c: Include elf32-target.h again for the traditional
+ MIPS targets.
-2000-05-31 Mark Kettenis <kettenis@gnu.org>
+2000-07-03 Marek Michalkiewicz <marekm@linux.org.pl>
+
+ * elf32-avr.c (bfd_elf32_bfd_reloc_type_lookup):
+ Add ATTRIBUTE_UNUSED to unused arguments to avoid warnings.
+ (avr_info_to_howto_rela): Likewise.
+ (elf32_avr_gc_mark_hook): Likewise.
+ (elf32_avr_gc_sweep_hook): Likewise.
+ (elf32_avr_relocate_section): Likewise.
+
+2000-07-03 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * cofflink.c (_bfd_coff_write_global_sym): Turn a weak symbol into
+ an external symbol for a non-shared, non-relocatable link.
+
+2000-07-03 Nick Clifton <nickc@redhat.com>
+
+ * cofflink.c (IS_EXTERNAL): New macro: Return true if the symbol
+ is an external symbol.
+ (IS_WEAK_EXTERNAL): New macro: Return true if the symbol is a weak
+ external symbol.
+
+2000-07-03 Kazu Hirata <kazu@hxi.com>
+
+ * reloc16.c: Fix formatting.
+
+2000-07-01 Koundinya K <kk@ddeorg.soft.net>
+
+ * config.bfd: Change targ_defvec and targ_selvecs for mips*-*-sysv4*
+ to add a new target for traditional mips i.e
+ bfd_elf32_tradbigmips_vec and bfd_elf32_tradlittlemips_vec.
+ * configure.in: Likewise.
+ * configure: Rebuild.
+ * targets.c (bfd_elf32_tradbigmips_vec): Declare and put in
+ bfd_target_vector.
+ (bfd_elf32_tradlittlemips_vec): Likewise.
+ * elfxx-target.h: Add macro INCLUDED_TARGET_FILE which is more a test
+ to see that elfNN_bed does not get redefined even if the target file
+ is included twice for a chip. See elf32-mips.c.
+
+2000-07-01 Alan Modra <alan@linuxcare.com.au>
+
+ * Makefile.am (DEP): Fix 2000-06-22. grep after running dep.sed
+ (CLEANFILES): Add DEPA.
+ * Makefile.in: Regenerate.
+
+2000-06-30 DJ Delorie <dj@cygnus.com>
+
+ * peicode.h (coff_swap_filehdr_in): can't use e_magic because we
+ can't assume the PE header is at 0x80.
+
+2000-06-29 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * syms.c (_bfd_stab_section_find_nearest_line): Use IS_ABSOLUTE_PATH.
+
+2000-06-28 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * go32stub.h: Update stub.
+
+2000-06-26 Marek Michalkiewicz <marekm@linux.org.pl>
+
+ * archures.c (bfd_mach_avr5): Define.
+ * bfd-in2.h (bfd_mach_avr5): Define.
+ * cpu-avr.c (arch_info_struct): Rename bfd_mach_avr4 to
+ bfd_mach_avr5, add bfd_mach_avr4. Update comments.
+ (compatible): Update comment. Add missing test.
+ * elf32-avr.c (avr_final_link_relocate): Support 8K wrap
+ for avr2 and avr4. Simplify 8K wrap code.
+ (bfd_elf_avr_final_write_processing): Recognize bfd_mach_avr5.
+ (elf32_avr_object_p): Recognize E_AVR_MACH_AVR5.
+
+2000-06-26 Kazu Hirata <kazu@hxi.com>
+
+ * coff-h8300.c: Fix formatting.
+ * cpu-h8300.c: Likewise.
+
+2000-06-24 Alexandre Oliva <aoliva@redhat.com>
+
+ * elf32-arm.h (elf32_arm_final_link_relocate): Print `(local)'
+ for local symbols whose names are unknown.
+
+2000-06-22 Alan Modra <alan@linuxcare.com.au>
+
+ * Makefile.am (DEP): grep for leading `/' in DEP1, and fail if we
+ find one.
+ * Makefile.in: Regenerate.
+ * doc/Makefile.in: Regenerate.
+
+2000-06-20 H.J. Lu <hjl@gnu.org>
+
+ * Makefile.am: Rebuild dependency.
+ * Makefile.in: Rebuild.
+
+2000-06-20 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * elf32-mips.c (_bfd_mips_elf_copy_indirect_symbol): New function.
+ (elf_backend_copy_indirect_symbol): Map to the new function.
+
+2000-06-20 Alan Modra <alan@linuxcare.com.au>
+
+ * archive.c (normalize): Correct pointer comparison when checking
+ for backslashes.
+ (bfd_bsd_truncate_arname): Likewise.
+ (bfd_gnu_truncate_arname): Likewise.
+
+2000-06-20 Ulf Carlsson <ulfc@engr.sgi.com>
+
+ * elf-bfd.h (struct elf_obj_tdata): Define per BFD Irix 5 virtual
+ sections elf_{text,data}_{section,symbol}.
+ * elf32-mips.c: mips_elf_{text,data}_{section,symbol}{,_ptr}: Remove.
+ (_bfd_mips_elf_hide_symbol): New function.
+ (elf_backend_hide_symbol): Map to the new function.
+ (_bfd_mips_elf_add_symbol_hook): Change to use new per BFD
+ definitions of mips_elf_{text,data}_{section,symbol}.
+ (mips_elf_local_relocation_p): Try to find the direct symbol
+ based on new check_forced argument.
+ (mips_elf_calculate_relocation): Use new version of
+ mips_elf_local_relocation_p.
+ (mips_elf_relocate_section): Likewise.
+ (_bfd_mips_elf_relocate_section): Likewise.
+ (mips_elf_sort_hash_table): Only assert that have enough GOT
+ space.
+ (mips_elf_got16_entry): Match all 32 bits to the existing GOT
+ entry if the relocation based on the new external argument.
+ (mips_elf_create_dynamic_relocation): Assert that we have a
+ section contents allocated where we can swap out the dynamic
+ relocations.
+ (mips_elf_calculate_relocation): Find the real hash-table entry
+ correctly by using h->root.root.type. Only create a dynamic
+ relocation entry if the symbol is defined in a shared library.
+ Create an external GOT entry for the GOT16 relocation if the
+ symbol was forced local.
+ (_bfd_mips_elf_finish_dynamic_symbol): Don't assert there is a
+ dynamic index if the symbol was forced local.
+
+2000-06-20 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * elf32-mips.c: Fix typos in comments.
+
+2000-06-19 Mark Kettenis <kettenis@gnu.org>
+
+ * rs6000-core.c: Wrap definition of `union VmInfo' within #ifdef
+ CORE_VERSION_1.
+
+2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
+
+ * Makefile.in, bfd-in2.h, libbfd.h, configure: Rebuild.
+ * Makefile.am (ALL_MACHINES, ALL_MACHINES_CFILES, BFD32_BACKENDS,
+ BFD32_BACKENDS_CFILES): Add 68hc12, 68hc11 files.
+ * configure.in (bfd_elf32_m68hc12_vec): Recognize.
+ (bfd_elf32_m68hc11_vec): Likewise.
+ * config.bfd (targ_cpu): Recognize 68hc12 and 68hc11.
+ Supports 68hc11 & 68hc12 at the same time.
+ * targets.c (bfd_elf32_m68hc12_vec): Declare and put in
+ bfd_target_vector.
+ (bfd_elf32_m68hc11_vec): Likewise.
+ * elf.c (prep_headers): Recognize bfd_arch_m68hc12 and 68hc11.
+ * archures.c (bfd_m68hc12_arch): Define and register in global list
+ (bfd_m68hc11_arch): Likewise.
+ * reloc.c (BFD_RELOC_M68HC11_HI8, BFD_RELOC_M68HC11_LO8,
+ BFD_RELOC_M68HC11_3B): Define.
+ * cpu-m68hc12.c, elf32-m68hc12.c: New files for 68hc12 support.
+ * cpu-m68hc11.c, elf32-m68hc11.c: New files for 68hc11 support.
+
+2000-06-18 Ulf Carlsson <ulfc@engr.sgi.com>
+
+ * elf_bfd.h (struct elf_backend_data): Add info argument to
+ elf_backend_hide_symbol.
+ (_bfd_elf_link_hash_hide_symbol): Likewise.
+ * elf.c (_bfd_elf_link_hash_hide_symbol): Likewise.
+ * elf64-ia64.c (elf64_ia64_hash_hide_symbol): Likewise.
+ * elflink.h (elf_link_add_object_symbols): Likewise.
+ (elf_link_assign_sym_version): Likewise.
+
+2000-06-18 H.J. Lu <hjl@gnu.org>
+
+ * coff-i386.c (coff_i386_reloc): Don't return in case of
+ output_bfd == (bfd *) NULL if COFF_WITH_PE is defined.
+ Compensate PE relocations when linking with non-PE object
+ files to generate a non-PE executable.
+
+2000-06-17 Ulf Carlsson <ulfc@engr.sgi.com>
+
+ * elf32-mips.c (mips_elf_calculate_relocation): Explicitly write
+ GOT entries if we're doing a static link or -Bsymbolic link.
+
+2000-06-15 Ulf Carlsson <ulfc@engr.sgi.com>
+
+ * elflink.h (elf_link_adjust_relocs): Check for and call backend
+ specifific swap_reloc_{in,out} and swap_reloca_{in,out} if
+ available.
+ (elf_link_output_relocs): Likewise.
+ (elf_reloc_link_order): Likewise.
+
+2000-06-16 Nicholas Duffek <nsd@redhat.com>
+
+ * archures.c (enum bfd_architecture): #define constants for
+ PowerPc and RS6000 machine numbers.
+ * bfd-in2.h: Regenerate.
+ * coffcode.h (coff_set_arch_mach_hook): #ifdef XCOFF64, set arch
+ to bfd_arch_powerpc instead of bfd_arch_rs6000. Refer to PowerPc
+ and RS6000 machine numbers using #defined constants from
+ archures.c.
+ * cpu-powerpc.c (arch_info_struct): Refer to PowerPc and RS6000
+ machine numbers using #defined constants from archures.c. Add
+ entries for EC603e, 630, A35, RS64II, RS64III, 7400. Specify
+ 64-bit words in 620 entry.
+ * cpu-rs6000.c (arch_info_struct): Create with entries for RS1,
+ RSC, and RS2.
+ (bfd_rs6000_arch): Change default machine to 0 (bfd_mach_rs6k).
+
+2000-06-16 Nicholas Duffek <nsd@cygnus.com>
+
+ * coffcode.h (coff_mkobject_hook): Set xcoff_tdata.xcoff64.
+ * libcoff-in.h (struct xcoff_tdata): Define xcoff64 field.
+ * libcoff.h (struct xcoff_tdata): Define xcoff64 field.
+
+2000-06-16 Nicholas Duffek <nsd@redhat.com>
+
+ * bfd-in.h (bfd_family_coff): Define.
+ * bfd-in2.h: Regenerate.
+ * coffgen.c (coff_count_linenumbers, coff_symbol_from,
+ coff_find_nearest_line): Check COFFness using bfd_family_coff()
+ instead of bfd_target_coff_flavour.
+ * cofflink.c (_bfd_coff_final_link): Likewise.
+ * cpu-ns32k.c (do_ns32k_reloc): Don't strcmp() target name to
+ exclude XCOFF files.
+ * reloc.c (bfd_perform_relocation, bfd_install_relocation):
+ Likewise.
+ * targets.c (enum bfd_flavour): Add bfd_target_xcoff_flavour.
+ * xcoff-target.h (TARGET_SYM): Use bfd_target_xcoff_flavour.
+ * xcofflink.c (XCOFF_XVECP): Delete.
+ (bfd_xcoff_link_record_set, bfd_xcoff_import_symbol,
+ bfd_xcoff_export_symbol, bfd_xcoff_link_count_reloc,
+ bfd_xcoff_record_link_assignment,
+ bfd_xcoff_size_dynamic_sections): Replace XCOFF_XVECP() with
+ check for bfd_target_xcoff_flavour.
+
+2000-06-16 Nicholas Duffek <nsd@redhat.com>
+
+ * rs6000-core.c: Support 64-bit core files, support pre-4.3 core
+ files on AIX 4.3.
+ (read_hdr): New function.
+ (rs6000coff_core_p): Store mstsave or __context64 struct instead
+ of trying to extract individual registers. Set abfd->arch_info
+ to match the architecture that created the core file.
+ (rs6000coff_get_section_contents): Delete.
+ * xcoff-target.h (rs6000coff_get_section_contents): Delete.
+
+2000-06-14 H.J. Lu <hjl@gnu.org>
+
+ * vms-misc.c (_bfd_vms_next_record): Return -1 if PRIV(vms_rec)
+ is NULL.
+
+2000-06-13 H.J. Lu <hjl@gnu.org>
- Add support for FreeBSD/Alpha.
- * configure.in: Add alpha*-*-freebsd* entry to prevent including
- OSF core file support.
* configure: Regenerate.
+2000-06-13 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * peicode.h (pe_ILF_object_p): Use TARGET_LITTLE_SYM instead of
+ armpei_little_vec.
+
+2000-06-08 David O'Brien <obrien@FreeBSD.org>
+
+ * configure.in (VERSION): Update to show this is the CVS mainline.
+
+2000-06-07 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-d10v.c: Include elf/d10v.h
+ (enum reloc_type): Delete.
+ * elf32-d30v.c: Include elf/d30v.h
+ (enum reloc_type): Delete.
+
+ * Makefile.am: Run "make dep-am" to regenerate dependencies.
+ * Makefile.in: Regenerate.
+
+ * elf32-i386.c (elf_howto_table): Remove EMPTY_HOWTOs.
+ (elf32_i386_vtinherit_howto, elf32_i386_vtentry_howto): Delete and
+ move HOWTOs into elf_howto_table.
+ (R_386_standard, R_386_ext_offset): Define.
+ (R_386_ext, R_386_vt_offset, R_386_vt): Define.
+ (elf_i386_reloc_type_lookup): Modify calculation of index into
+ elf_howto_table since we've removed the padding.
+ (elf_i386_info_to_howto_rel): Likewise.
+ (elf_i386_relocate_section): Likewise.
+
+2000-06-06 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * elf.c (elf_grok_pr_status): Eliminate reference to prgregset_t.
+
+2000-06-05 H.J. Lu <hjl@gnu.org>
+
+ * elflink.c (_bfd_elf_link_record_dynamic_symbol): Don't flag
+ an error when seeing an undefined symbol with hidden/internal
+ attribute. It is handled in *_relocate_section ().
+
+2000-06-05 H.J. Lu <hjl@gnu.org>
+
+ * elflink.h (elf_fix_symbol_flags): Follow the link for the
+ indirect symbol for the ELF_LINK_NON_ELF bit.
+ (elf_link_output_extsym): Don't output the indirect symbol even
+ if the ELF_LINK_NON_ELF bit is set.
+
+2000-06-01 J.T. Conklin <jtc@redback.com>
+
+ * config.bfd (i[3456]86-*-netbsdelf*): New target.
+ (i[3456]86-*-netbsdaout*): New target.
+ (i[3456]86-*-netbsd*): Add bfd_elf32_i386_vec to targ_selvecs.
+ (i[3456]86-*-openbsd*): Likewise.
+
+2000-05-30 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * trad-core.c: From hpux-core.c, include <dirent.h> or
+ <sys/ndir.h> when possible.
+
+2000-05-31 Nick Clifton <nickc@cygnus.com>
+
+ * opintl.h (_(String)): Explain why dgettext is used instead
+ of gettext.
+
+2000-05-31 Ulrich Drepper <drepper@redhat.com>
+
+ * elf.c (_bfd_elf_slurp_version_tables): Correct reading of version
+ definitions. We must not assume they are sorted in the file
+ according to their index numbers.
+
+2000-05-31 Alan Modra <alan@linuxcare.com.au>
+
+ * elf-hppa.h: (elf_hppa_final_link_relocate): Use e_rsel field
+ selector for R_PARISC_PCREL17R. R_PARISC_DIR17R and
+ R_PARISC_DIR17F are for absolute branches; Handle them as such.
+
+2000-05-30 Nick Clifton <nickc@cygnus.com>
+
+ * cpu-i960.c (scan_960_mach): Accept 80960KA, 80960KB,
+ 80960CA, 80960MC as valid machine names.
+
+2000-05-30 H.J. Lu <hjl@gnu.org>
+
+ * elflink.c (_bfd_elf_link_record_dynamic_symbol): Clear the
+ visibility bits if the symbol is undefined. Correctly handle
+ weak undefined symbols with hidden and internal attributes.
+
+ * elflink.h (elf_link_add_object_symbols): Always turn the
+ symbol into local if it has the hidden or internal attribute.
+
2000-05-29 Philip Blundell <philb@gnu.org>
- * ppcboot.c: Add packed attribute if compiling with GCC.
+ * ppcboot.c: Add packed attribute if compiling with GCC.
2000-05-29 Anatoly Vorobey <mellon@pobox.com>
* elf.c (_bfd_elf_link_hash_table_init): Initialize dynlocal.
+2000-05-26 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * elf.c (elfcore_grok_prstatus, elfcore_grok_pstatus,
+ elfcore_grok_psinfo): Add code to allow debugging a 32-bit
+ corefile on a 64-bit (Sparc Solaris) host. Also clean up
+ a few old comments.
+
2000-05-26 Alan Modra <alan@linuxcare.com.au>
+ * Makefile.am: Update dependencies with "make dep-am"
+ * Makefile.in: Regenerate.
+
* sysdep.h (gettext, dgettext, dcgettext, textdomain,
bindtextdomain): Replace defines with those from intl/libgettext.h
to quieten gcc warnings.
@@ -180,18 +2891,150 @@
* opncls.c (bfd_close_all_done): Mask file perms with 0777 not 0x777.
-2000-05-23 Philip Blundell <pb@futuretv.com>
+2000-05-26 Jakub Jelinek <jakub@redhat.com>
+
+ * elf64-sparc.c (sparc64_elf_relax_section): New.
+ (sparc64_elf_relocate_section): Optimize tail call into branch always
+ if possible.
+ * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
+ (elf32_sparc_relax_section): New.
- * configure.in: Set version to 2.10.
+2000-05-26 Jakub Jelinek <jakub@redhat.com>
+
+ * elf64-sparc.c: Add ATTRIBUTE_UNUSED to unused function parameters.
+ Remove unusued variables.
+ (sparc64_elf_relocate_section): Change r_symndx type to unsigned long.
+ (sparc64_elf_merge_private_bfd_data): Fix shared library case from
+ previous fix, so that shared libs really don't influence targets
+ extension mask and memory model.
+
+2000-05-23 H.J. Lu <hjl@gnu.org>
+
+ * elf64-alpha.c (elf64_alpha_relocate_section): Check
+ h->root.other not h->other.
+ * elf32-mips.c (mips_elf_calculate_relocation): Likewise.
+
+ * elf32-ppc.c (ppc_elf_relocate_section): Fix a typo.
+
+2000-05-23 H.J. Lu <hjl@gnu.org>
+
+ * elf32-i386.c (elf_i386_relocate_section): Don't allow the
+ undefined symbol with the non-default visibility attributes.
+ * elf-hppa.h (elf_hppa_relocate_section): Likewise.
+ * elf32-arm.h (elf32_arm_relocate_section): Likewise.
+ * elf32-i370.c (i370_elf_relocate_section): Likewise.
+ * elf32-m68k.c (elf_m68k_relocate_section): Likewise.
+ * elf32-mcore.c (mcore_elf_relocate_section): Likewise.
+ * elf32-mips.c (mips_elf_calculate_relocation): Likewise.
+ * elf32-ppc.c (ppc_elf_relocate_section): Likewise.
+ * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
+ * elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
+ * elf64-ia64.c (elf64_ia64_relocate_section): Likewise.
+ * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
+
+2000-05-22 Richard Henderson <rth@cygnus.com>
+
+ * elf64-ia64.c (ia64_howto_table): Add PCREL60B, PCREL21BI,
+ PCREL22, PCREL64I. Zero size of special relocs.
+ (elf64_ia64_reloc_type_lookup): Likewise.
+ (USE_BRL, oor_brl, oor_ip): New.
+ (elf64_ia64_relax_section): New.
+ (elf64_ia64_check_relocs): Handle PCREL60B, PCREL22, PCREL64I.
+ (elf64_ia64_install_value): Likewise, plus PCREL21BI.
+ (elf64_ia64_relocate_section): Likewise.
+ (bfd_elf64_bfd_relax_section): New.
+ * reloc.c (BFD_RELOC_IA64_PCREL21BI): New.
+ (BFD_RELOC_IA64_{PCREL22,PCREL60B,PCREL64I}): New.
+ * bfd-in2.h, libbfd.h: Regenerate.
+
+2000-05-22 Nick Clifton <nickc@cygnus.com>
+
+ * configure.in : Add peigen.lo to MIPS PE targets.
* configure: Regenerate.
-Sat Jul 3 10:35:19 CDT 1999 Joel Sherrill <joel@OARcorp.com>
+2000-05-22 Momchil Velikov <velco@fadata.bg>
+
+ * libbfd.c (_bfd_generic_verify_endian_match): Compare endianess
+ only if it is known for both input and output bfds. Separate
+ error message strings as in some languages, it may be necessary
+ to change more than one place in the string to change between
+ 'big' and 'little'.
+
+ * elf32-ppc.c (ppc_elf_merge_private_bfd_data): Remove inline
+ endianess checks, call _bfd_generic_verify_endian_match() instead.
- * config.bfd (sparc-rtemself): Added.
- (sparc-rtemsaout): Added as alternate name for current sparc-rtems.
- (sparc-rtems): Switched to ELF from a.out
- (i386-rtemscoff): Added as alternate name for current i386-rtems.
- (i386-rtems): Switched to ELF.
+ * elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data): Likewise.
+
+ * elf32-mcore.c (mcore_elf_merge_private_bfd_data): Likewise.
+
+ * elf32-arm.h (elf32_arm_merge_private_bfd_data): Likewise. Verify
+ endianess before checking bfd flavours.
+
+2000-05-22 H.J. Lu <hjl@gnu.org>
+
+ * elflink.h (elf_link_output_extsym): Clear the visibility
+ field for symbols not defined locally.
+
+2000-05-18 Alan Modra <alan@linuxcare.com.au>
+
+ * libhppa.h (re_assemble_3, re_assemble_12, re_assemble_16,
+ re_assemble_17, re_assemble_21, re_assemble_22): Don't mask insn.
+ (hppa_rebuild_insn): Mask immediate bits here instead.
+ * elf-hppa.h (elf_hppa_relocate_insn): Mask here too.
+
+2000-05-18 Momchil Velikov <velco@fadata.bg>
+
+ * elflink.h (elf_bfd_final_link, elf_link_input_bfd): When emiting
+ relocs for an executable, ensure that they are virtual addresses.
+
+2000-05-18 Jeffrey A Law (law@cygnus.com)
+
+ * config.bfd (hppa*64*-*-hpux11*): New target triplet.
+
+2000-05-17 S. Bharadwaj Yadavalli <sby@scrugs.lkg.dec.com>
+ Rick Gorton <gorton@scrugs.lkg.dec.com>
+
+ * elflink.h: Add emitrelocations support: when enabled, relocation
+ information and relocation sections are put into final output
+ executables. If the emitrelocations flag is set, do the following:
+ (elf_bfd_final_link): Emit relocation sections.
+ (elf_link_input_bfd): Compute relocation section contents.
+ (elf_gc_sections): Don't clean relocation sections.
+
+2000-05-16 Catherine Moore <clm@cygnus.com>
+
+ * som.c (som_decode_symclass): Recognize weak symbols.
+
+2000-05-16 Szabolcs Szakacsits <szaka@F-Secure.com>
+
+ * peigen.c (pe_print_idata): Undo part of 2000-05-12 change that
+ read idata section only from dataoff.
+ (pe_print_edata): Correctly check for valid eat_member.
+
+2000-05-16 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * elf32-sh.c (sh_elf_relax_delete_bytes): Handle R_SH_SWITCH8.
+
+2000-05-14 Philip Blundell <philb@gnu.org>
+
+ * config.bfd (armeb-*-elf, arm*b-*-linux-gnu*): New targets.
+
+2000-05-12 Alan Modra <alan@linuxcare.com.au>
+
+ * targets.c (bfd_target_vector): #ifdef BFD64 rs6000coff64_vec
+
+ * peigen.c (pe_print_idata): Look for .idata section and print
+ info even if data directory has zero entries. Read idata section
+ starting from dataoff, and adjust all data offsets to suit. Cast
+ all bfd_vma vars to unsigned long before passing to fprintf.
+ * peigen.c (pe_print_edata): Similarly, look for .edata section
+ and print info even if data directory has zero entries. Cast
+ all bfd_vma vars to unsigned long before passing to fprintf.
+
+ From Szabolcs Szakacsits <szaka@F-Secure.com>
+ * peigen.c (pe_print_idata): Use bfd_section_size rather than data
+ directory size which may be bogus.
+ * peigen.c (pe_print_edata): Similarly.
2000-05-09 Alan Modra <alan@linuxcare.com.au>
@@ -222,6 +3065,40 @@ Sat Jul 3 10:35:19 CDT 1999 Joel Sherrill <joel@OARcorp.com>
(_bfd_pe_print_private_bfd_data_common): Print Reserved1 field as
Win32Version.
+2000-05-05 Clinton Popetz <cpopetz@cygnus.com>
+
+ * xcoff.h: Rename to xcoff-target.h
+ * Makefile.am: Change all instances of xcoff.h to xcoff-target.h
+ * coff-rs6000.c: Ditto.
+ * coff64-rs6000.c: Ditto.
+ * coff-pmac.c: Ditto.
+ * Makefile.in: Regenerate.
+
+2000-05-05 Clinton Popetz <cpopetz@cygnus.com>
+
+ * coffcode.h (coff_set_arch_mach_hook, coff_set_flags):
+ Change U802TOC64MAGIC to U803XTOCMAGIC.
+
+2000-05-04 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * elf.c (bfd_elf_get_arch_size): New function, return 32 | 64 | -1.
+ * bfd-in.h: Prototype bfd_elf_get_arch_size.
+ * bfd-in2.h: Prototype bfd_elf_get_arch_size.
+
+2000-05-04 Alan Modra <alan@linuxcare.com.au>
+
+ * libhppa.h (HPPA_R_CONSTANT): Cast argument to bfd_signed_vma.
+
+2000-05-03 Martin v. Löwis <loewis@informatik.hu-berlin.de>
+
+ * elflink.h (elf_link_add_object_symbols): Reset dynindx for
+ hidden and internal symbols.
+ (elf_fix_symbol_flags): Clear NEEDS_PLT for symbols with
+ visibility.
+ * elflink.c (_bfd_elf_link_record_dynamic_symbol): Do not
+ assign a PLT or GOT entry to symbols with hidden and
+ internal visibility.
+
2000-05-03 Mark Elbrecht <snowball3@bigfoot.com>
* bfd/coff-go32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Add entry for
@@ -233,6 +3110,109 @@ Sat Jul 3 10:35:19 CDT 1999 Joel Sherrill <joel@OARcorp.com>
* elf.c (prep_headers): Use ELFOSABI_NONE instead of
ELFOSABI_SYSV.
+2000-05-02 Alan Modra <alan@linuxcare.com.au>
+
+ * targets.c (bfd_target_vector): Restore bfd_elf32_hppa_vec.
+ * Makefile.am (BFD32_BACKENDS): Restore elf32-hppa.lo. Regenerate
+ dependencies.
+ * Makefile.in: Regenerate.
+
+2000-05-01 Jim Wilson <wilson@cygnus.com>
+
+ * Makefile.am (BFD32_BACKENDS): Add efi-app-ia32.lo.
+ (BFD32_BACKENDS_CFILES): Add efi-app-ia32.c.
+ (BFD64_BACKENDS): Delete coff-ia64.lo. Add efi-app-ia64.lo.
+ (BFD64_BACKENDS_CFILES): Delete coff-ia64.c. Add efi-app-ia64.c.
+ * Makefile.in: Rebuild.
+
+2000-05-02 Alan Modra <alan@linuxcare.com.au>
+
+ * config.bfd: Re-enable elf32-hppa. It now compiles, even if it
+ doesn't work very well.
+
+ * elf-hppa.h (elf_hppa_internal_shdr): Define.
+ (elf_hppa_fake_sections): hdr is elf_hppa_internal_shdr.
+ Set hdr->s_type to 1 if ARCH_SIZE == 32.
+ (_bfd_elf_hppa_gen_reloc_type): Add prototype.
+ (elf_hppa_info_to_howto): Likewise.
+ (elf_hppa_info_to_howto_rel): Likewise.
+ (elf_hppa_reloc_type_lookup): Likewise.
+ (elf_hppa_is_local_label_name): Likewise.
+ (elf_hppa_fake_sections): Likewise.
+ (elf_hppa_final_write_processing): Likewise.
+ (elf_hppa_howto_table): Fully initialise all entries.
+ (_bfd_elf_hppa_gen_reloc_type): Add ATTRIBUTE_UNUSED to args.
+ (elf_hppa_info_to_howto): Likewise.
+ (elf_hppa_info_to_howto_rel): Likewise.
+ (elf_hppa_reloc_type_lookup): Likewise.
+ (elf_hppa_final_write_processing, elf_hppa_add_symbol_hook,
+ elf_hppa_unmark_useless_dynamic_symbols,
+ elf_hppa_remark_useless_dynamic_symbols,
+ elf_hppa_record_segment_addrs, elf_hppa_final_link,
+ elf_hppa_relocate_section, elf_hppa_final_link_relocate,
+ elf_hppa_relocate_insn): Compile only if ARCH_SIZE == 64 until
+ elf32-hppa.c mess is cleaned up.
+ (elf_hppa_final_link_relocate): Make insn and r_type unsigned
+ int. Delete r_field. In case R_PARISC_PCREL21L, don't set
+ r_field then call hppa_field_adjust inline func with variable
+ r_field arg, instead call hppa_field_adjust with fixed arg.
+ In case R_PARISC_PCREL22F, don't set r_field.
+ (elf_hppa_relocate_insn): Change args and return type to unsigned
+ int. Call re_assemble_* funcs to do the work.
+
+ * elf32-hppa.c (hppa_elf_relocate_insn): Don't assume 32 bit when
+ sign extending.
+
+ * libhppa.h (HPPA_R_CONSTANT): Don't assume 32 bit when sign
+ extending.
+ (sign_extend): Mask first before sign extending.
+ (low_sign_extend): Rewrite without condition expression.
+ (ones, dis_assemble_3, dis_assemble_12, dis_assemble_16,
+ dis_assemble_17, dis_assemble_21, dis_assemble_22): Delete.
+ (assemble_3, assemble_6, assemble_12, assemble_16, assemble_16a,
+ assemble_17, assemble_21, sign_unext, low_sign_unext): Return
+ result as function return value rather than through pointer arg.
+ Accept unsigned int args, and return unsigned int.
+ (re_assemble_3): New. Combines function of dis_assemble_3 with
+ re-assembly of opcode and immediate.
+ (re_assemble_12): Likewise.
+ (re_assemble_16): Likewise.
+ (re_assemble_17): Likewise.
+ (re_assemble_21): Likewise.
+ (re_assemble_22): Likewise.
+ (hppa_field_adjust): Rewrite and document, paying attention to
+ size of types and signed/unsigned issues.
+ (get_opcode): Shift before masking.
+ (FDLW): Rename to FLDW.
+ (bfd_hppa_insn2fmt): Change arg to unsigned int. Delete fmt.
+ (hppa_rebuild_insn): Change args and return value to unsigned
+ int. Make use of re_assemble_*. Correct case 11.
+
+ * dep-in.sed: Handle ../opcodes/.
+ * Makefile.am (SOURCE_HFILES): Add elf-hppa.h, elf32-hppa.h,
+ elf64-hppa.h, hppa_stubs.h, xcoff.h.
+ (BFD32_BACKENDS_CFILES): Restore elf32-hppa.c.
+ Remove elf64-hppa.lo, cpu-ia64.lo, elf64-ia64.lo, elfarm-oabi.lo,
+ elfarm-nabi.lo dependencies outside of auto-dependency area.
+ Regenerate dependencies.
+ * Makefile.in: Regenerate.
+
+ * configure.in (TRAD_HEADER): Test non-null before
+ AC_DEFINE_UNQUOTED.
+ * configure: Regenerate.
+
+ * reloc.c: Fix mis-spelling in comment.
+
+2000-05-01 Alan Modra <alan@linuxcare.com.au>
+
+ * coff-sh.c (bfd_coff_small_swap_table): Fix Fri Apr 28 change.
+ * vms.c (vms_openr_next_archived_file): Return NULL.
+
+2000-04-28 Clinton Popetz <cpopetz@cygnus.com>
+
+ * coffcode.h Copy changes mistakenly done to libcoff.h in
+ 4/24/2000 patch.
+
2000-04-29 Andreas Jaeger <aj@suse.de>
* libbfd-in.h: Correctly check GCC version.
@@ -241,12 +3221,286 @@ Sat Jul 3 10:35:19 CDT 1999 Joel Sherrill <joel@OARcorp.com>
* libbfd.h: Regenerate.
* bfd-in2.h: Regenerate.
+2000-04-28 Clinton Popetz <cpopetz@cygnus.com>
+
+ * Makefile.am (BFD64_BACKENDS, BFD64_BACKENDS_CFILES): Add
+ coffdu-rs6000.{lo,c}.
+ (coff-pmac.lo, coff-rs6000.lo, coff64-rs6000.lo): Add dependency
+ on xcoff.h
+ * Makefile.in: Regenerate.
+ * xcoff.h: New file.
+ * coff-pmac.c: Use xcoff.h instead of coff-rs6000.c.
+ * coff-rs6000.c: Move all declarations and defines that are
+ common to the xcoff backends into xcoff.h
+ * coff64-rs6000.c: Ditto,
+
+2000-04-28 Clinton Popetz <cpopetz@cygnus.com>
+
+ * coff-mips.c (mips_ecoff_backend_data): Add initialization of
+ _bfd_coff_force_symnames in strings and
+ _bfd_coff_debug_string_prefix_length to their default values.
+ * coff-sh.c: (bfd_coff_small_swap_table): Ditto.
+
+2000-04-28 Clinton Popetz <cpopetz@cygnus.com>
+
+ * coff-alpha.c (alpha_ecoff_backend_data): Add initialization of
+ _bfd_coff_force_symnames in strings and
+ _bfd_coff_debug_string_prefix_length to their default values.
+
+2000-04-27 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-m68k.c (elf_m68k_gc_sweep_hook): Return if dynobj NULL.
+ Check local_got_refcounts before dereferencing.
+
+ * elf32-ppc.c (ppc_elf_relocate_section): Check splt != NULL
+ before deciding we don't need R_PPC_PLT32 relocation.
+ (ppc_elf_gc_sweep_hook): Check local_got_refcounts before
+ dereferencing.
+
+ * elflink.h (elf_gc_common_finalize_got_offsets): Fix comment.
+
+ * elf32-i386.c (elf_i386_check_relocs): Reference count .got and
+ .plt entries.
+ (elf_i386_gc_sweep_hook): Garbage collect .got and .plt entries.
+ (elf_i386_adjust_dynamic_symbol): Recognize unused .plt entries.
+ (elf_i386_relocate_section): Allow for .plt to go missing.
+ (elf_i386_finish_dynamic_symbol): Use same test to decide if we
+ can use a relative reloc for got as elf_i386_relocate_section.
+ (bfd_elf32_bfd_final_link): Define to use gc form of final link.
+
+2000-04-26 Clinton Popetz <cpopetz@cygnus.com>
+
+ * config.bfd: Remove extraneous bfd_powerpc_64_arch.
+
+2000-04-24 Clinton Popetz <cpopetz@cygnus.com>
+
+ * Makefile.am (coff64-rs6000.lo): New rule.
+ * Makefile.in: Regenerate.
+ * coff-rs6000.c (xcoff_mkobject, xcoff_copy_private_bfd_data,
+ xcoff_is_local_label_name, xcoff_rtype2howto,
+ xcoff_reloc_type_lookup, xcoff_slurp_armap, xcoff_archive_p,
+ xcoff_read_ar_hdr, xcoff_openr_next_archived_file, xcoff_write_armap,
+ xcoff_write_archive_contents): No longer static, and prefix with _bfd_.
+ (NO_COFF_SYMBOLS): Define.
+ (xcoff64_swap_sym_in, xcoff64_swap_sym_out, xcoff64_swap_aux_in,
+ xcoff64_swap_aux_out): New functions; handle xcoff symbol tables
+ internally.
+ (MINUS_ONE): New macro.
+ (xcoff_howto_tabl, xcoff_reloc_type_lookup): Add 64 bit POS
+ relocation.
+ (coff_SWAP_sym_in, coff_SWAP_sym_out, coff_SWAP_aux_in,
+ coff_SWAP_aux_out): Map to the new functions.
+ * coff64-rs6000.c: New file.
+ * libcoff.h (bfd_coff_backend_data): Add new fields
+ _bfd_coff_force_symnames_in_strings and
+ _bfd_coff_debug_string_prefix_length.
+ (bfd_coff_force_symnames_in_strings,
+ bfd_coff_debug_string_prefix_length): New macros for above fields.
+ * coffcode.h (coff_set_arch_mach_hook): Handle XCOFF64 magic.
+ Set machine to 620 for XCOFF64. Use bfd_coff_swap_sym_in instead
+ of using coff_swap_sym_in directly.
+ (FORCE_SYMNAMES_IN_STRINGS): New macro, defined for XCOFF64.
+ (coff_set_flags) Set magic for XCOFF64.
+ (coff_compute_section_file_positions): Add symbol name length to
+ string section length if bfd_coff_debug_string_prefix_length is
+ true.
+ (coff_write_object_contents): Don't do reloc overflow for XCOFF64.
+ (coff_slurp_line_table): Use bfd_coff_swap_lineno_in instead of
+ using coff_swap_lineno_in directly.
+ (bfd_coff_backend_data): Add _bfd_coff_force_symnames_in_strings
+ and _bfd_coff_debug_string_prefix_length fields.
+ * coffgen.c (coff_fix_symbol_name, coff_write_symbols): Force
+ symbol names into strings table when
+ bfd_coff_force_symnames_in_strings is true.
+ * coffswap.h (MAX_SCNHDR_NRELOC, MAX_SCNHDR_NLNNO, GET_RELOC_VADDR,
+ SET_RELOC_VADDR): New macros.
+ (coff_swap_reloc_in, coff_swap_reloc_out): Use above macros.
+ (coff_swap_aux_in, coff_swap_aux_out): Remove RS6000COFF_C
+ code.
+ (coff_swap_aouthdr_in, coff_swap_aouthdr_out): Handle XCOFF64
+ changes within RS6000COFF_C specific code.
+ (coff_swap_scnhdr_out): Use PUT_SCNHDR_NLNNO, PUT_SCNHDR_NRELOC,
+ MAX_SCNHDR_NRELOC, and MAX_SCNHDR_NLNNO.
+ * reloc.c (bfd_perform_relocation, bfd_install_relocation):
+ Extend existing hack on target name.
+ * xcofflink.c (XCOFF_XVECP): Extend existing hack on
+ target name.
+ * coff-tic54x.c (ticof): Keep up to date with new fields
+ in bfd_coff_backend_data.
+ * config.bfd: Add bfd_powerpc_64_arch to targ_arch and define
+ targ_selvecs to include rs6000coff64_vec for rs6000.
+ * configure.in: Add rs6000coff64_vec case.
+ * cpu-powerpc.c: New bfd_arch_info_type.
+
+2000-04-24 Jeffrey A Law (law@cygnus.com)
+
+ * config.bfd: Only disable elf32-hppa vectors, not all of the
+ BSD and OSF configuration support. Provide (disabled) clauses
+ for PA64 support.
+ * configure.in: Add clause for PA64 support.
+ * configure: Rebuilt.
+
+ * targets.c (bfd_target_vector): Add bfd_elf64_hppa_vec.
+ (bfd_elf64_hppa_vec): Declare.
+
+ * Makefile.am (BFD64_BACKENDS): Add elf64-hppa.lo
+ (BFD64_BACKENDS_CFILES): Add elf64-hppa.c
+ (elf64-hppa.lo): Add dependencies.
+ * Makefile.in: Rebuilt.
+
+ * elf64-hppa.c, elf64-hppa.h: New files with PA64 support.
+
+2000-04-24 Jason Eckhardt <jle@cygnus.com>
+
+ * libhppa.h (dis_assemble_16): New function.
+ (pa_arch): Added pa20w element.
+
+2000-04-24 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf-bfd.h: Add prototypes for bfd_elf32_write_relocs,
+ bfd_elf32_slurp_reloc_table, bfd_elf64_write_relocs, and
+ bfd_elf64_slurp_reloc_table.
+
+ * elfcode.h (elf_write_relocs, elf_slurp_reloc_table): New
+ definitions to get external names.
+ (elf_write_relocs): Renamed from write_relocs and make global.
+ (elf_slurp_reloc_table): Make global.
+ (_bfd_elf,size_info): Use elf_write_relocs instead of write_relocs.
+
+ * archive.c (hpux_uid_gid_encode): New function.
+ (bfd_ar_hdr_from_filesystem): Use it if HPUX_LARGE_AR_IDS is
+ defined and the ID is greater than 99999.
+ (bfd_generic_stat_arch_elt): If HPUX_LARGE_AR_IDS is defined decode
+ special uid/gid fields into 32 bit values.
+
+2000-04-21 Matthew Green <mrg@cygnus.com>
+
+ * config.bfd: Add NetBSD/sparc64 support.
+
+Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com>
+ David Mosberger <davidm@hpl.hp.com>
+ Timothy Wall <twall@cygnus.com>
+ Jim Wilson <wilson@cygnus.com>
+
+ * Makefile.am (ALL_MACHINES): Add cpu-ia64.lo.
+ (ALL_MACHINES_CFILES): Add cpu-ia64.c.
+ (BFD64_BACKENDS): Add elf64-ia64.lo.
+ (BFD64_BACKENDS_CFILES): Add elf64-ia64.c.
+ (cpu-ia64.lo, elf64-ia64.lo): New rules.
+ * Makefile.in: Rebuild.
+ * archures.c (enum bfd_architecture): Add bfd_arch_ia64.
+ (bfd_ia64_arch): Declare.
+ (bfd_archures_list): Add bfd_ia64_arch.
+ * bfd-in2.h: Rebuild.
+ * config.bfd: (ia64*-*-linux-gnu*, ia64*-*-elf*): New targets.
+ * configure: Rebuild.
+ * configure.host: (ia64-*-linux*): New host.
+ * configure.in (bfd_elf64_ia64_little_vec, bfd_elf64_ia64_big_vec,
+ bfd_efi_app_ia64_vec, bfd_efi_app_ia64_vec): New vectors.
+ * elf.c (prep_headers): Add bfd_arch_ia64.
+ * libbfd.h: Rebuild.
+ * reloc.c: Add IA-64 relocations.
+ * targets.c (bfd_elf64_ia64_little_vec, bfd_elf64_ia64_big_vec):
+ Declare.
+ (bfd_target_vect): Add bfd_elf64_ia64_little_vec.
+ * cpu-ia64-opc.c, cpu-ia64.c, elf64-ia64.c: New files.
+
+2000-04-21 Richard Henderson <rth@cygnus.com>
+
+ * elf32-d30v.c (bfd_elf_d30v_reloc): Don't modify section
+ contents when performing a partial link.
+ (bfd_elf_d30v_reloc_21): Likewise.
+
+2000-04-20 H.J. Lu <hjl@gnu.org>
+
+ * elf32-i386.c (elf_i386_relocate_section): Restrict 1998-12-10
+ patch to symbols defined by a shared object.
+ * elf32-ppc.c (ppc_elf_relocate_section): Similarly.
+
2000-04-19 Michael Sokolov <msokolov@ivan.Harhan.ORG>
K&R compiler fixes.
* dwarf2.c (concat_filename): Avoid string literal concatenation.
* ieee.c (ieee_get_symtab): Don't initialise union in struct.
+Mon Apr 17 19:14:36 2000 David Mosberger <davidm@hpl.hp.com>
+
+ * Makefile.am (BFD64_BACKENDS): Mention coff-ia64.lo.
+ (BFD64_BACKENDS_CFILES): Mention coff-ia64.c
+ (coff-ia64.lo): Add dependency.
+ * Makefile.in: Regenerate.
+ * coff-ia64.c: New file.
+ * efi-app-ia32.c: Ditto.
+ * efi-app-ia64.c: Ditto.
+ * coffcode.h (coff_set_arch_mach_hook): Handle IA64MAGIC.
+ (coff_set_flags): Ditto.
+ (coff_write_object_contents) [IA64]: Set magic number to ZMAGIC.
+ * config.bfd (i[3456]86-*-linux-gnu*): Mention bfd_efi_app_ia32_vec.
+ * configure.in (elf): Handle bfd_efi_app_ia32 and bfd_efi_app_ia64_vec.
+ * configure: Regenerate.
+ * libpei.h (GET_OPTHDR_IMAGE_BASE): New macro.
+ (PUT_OPTHDR_IMAGE_BASE): Ditto.
+ (GET_OPTHDR_SIZE_OF_STACK_RESERVE): Ditto.
+ (PUT_OPTHDR_SIZE_OF_STACK_RESERVE): Ditto.
+ (GET_OPTHDR_SIZE_OF_STACK_COMMIT): Ditto.
+ (PUT_OPTHDR_SIZE_OF_STACK_COMMIT): Ditto.
+ (GET_OPTHDR_SIZE_OF_HEAP_RESERVE): Ditto.
+ (PUT_OPTHDR_SIZE_OF_HEAP_RESERVE): Ditto.
+ (GET_OPTHDR_SIZE_OF_HEAP_COMMIT): Ditto.
+ (PUT_OPTHDR_SIZE_OF_HEAP_COMMIT): Ditto.
+ (GET_PDATA_ENTRY): Ditto.
+ * peigen.c (_bfd_pei_swap_aouthdr_in) [COFF_WITH_PEP64]: Don't read
+ data_start. Use above macros to read fields that are 64 bit wide for
+ COFF_WITH_PEP64. Don't truncate entry and text_start to 32 bits.
+ (_bfd_pei_swap_aouthdr_out) [PEI_FORCE_MINIMUM_ALIGNMENT]: Force
+ FileAlignment and SectionAlignment to minimum alignment if they
+ are zero.
+ (_bfd_pei_swap_aouthdr_out) [PEI_DEFAULT_TARGET_SUBSYSTEM]: Set
+ Subsystem to default PEI_DEFAULT_TARGET_SUBSYSTEM.
+ (_bfd_pei_swap_aouthdr_out) [COFF_WITH_PEP64]: Don't set data_start.
+ Use above macros to write fields that are 64 bit wide for
+ COFF_WITH_PEP64.
+ (pe_print_pdata): Set PDATA_ROW_SIZE to 3*8 for COFF_WITH_PEP64,
+ 5*4 otherwise. This should be right for IA-32 and IA-64, but may
+ be wrong for platforms. Use PDATA_ROW_SIZE instead of hardcoded
+ value of 20 bytes. Modify printing for COFF_WITH_PEP64 to print
+ begin address, end address, and unwind info address only. Use
+ GET_PDATA_ENTRY() to read .pdata entries. Use fprintf_vma() to
+ print addresses.
+ (tbl): Add SECTION, REL32, RESERVED1, MIPS_JMPADDR16, DIR64, and
+ HIGH3ADJ relocation names.
+ (_bfd_pe_print_private_bfd_data): Print Subsystem name in legible form.
+ * targets.c: Declare bfd_efi_app_ia32_vec and
+ bfd_efi_app_ia64_vec.
+ (bfd_target_vector): Mention bfd_efi_app_ia32_vec and
+ bfd_efi_app_ia64_vec.
+
+2000-04-17 Timothy Wall <twall@cygnus.com>
+
+ * bfd-in2.h: Add prototypes for tic54x load page access.
+ * bfd-in.h: Regenerate.
+ * coff-tic54x.c: Add load page functions; allow bfd_arch_unknown
+ in customized _set_arch_mach function.
+ * coffcode.h (coff_set_alignment_hook): Set section load page if
+ the appropriate macro is defined.
+ (write_object_contents): Read section load page.
+
+2000-04-13 Alan Modra <alan@linuxcare.com.au>
+
+ * elf32-hppa.h: Update copyright date.
+
+ * elf32-fr30.c (fr30_elf_i20_reloc): Don't use U suffix.
+ * elf32-mips.c (_bfd_mips_elf_relocate_section): And here.
+
+ * elf32-d30v.c (MAX32): Don't use LL suffix.
+ (MIN32): Define in terms of MAX32.
+ (bfd_elf_d30v_reloc): Make relocation a bfd_signed_vma.
+
+ * coff-a29k.c (SIGN_EXTEND_HWORD): Replace with more concise
+ expression.
+
+ * peicode.h (pe_ILF_build_a_bfd): Remove UL from hex constants.
+
2000-04-12 Alan Modra <alan@linuxcare.com.au>
* dep-in.sed: Match space before file name, not after.
@@ -257,6 +3511,117 @@ Sat Jul 3 10:35:19 CDT 1999 Joel Sherrill <joel@OARcorp.com>
case, allow address wrap-around stupidly removed 2000-03-17. Sign
extend without an if statement.
+2000-04-11 Alan Modra <alan@linuxcare.com.au>
+
+ * coff-mips.c (mips_gprel_reloc): Test for 16 bit range using
+ signed quantites.
+ * elf32-mips.c (gprel16_with_gp): Likewise.
+ * elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Test range
+ here using -0x40000, not (int)0xfffc0000.
+ (elf32_hppa_size_of_stub): Likewise.
+
+2000-04-11 Timothy Wall <twall@cygnus.com>
+
+ * coff-tic54x.c: Now builds with all targets.
+ * Makefile.am: Add coff/tic54x.h to coff-tic54x.o dependencies.
+ * Makefile.in: Regenerate.
+ * coffcode.h (coff_set_arch_mach_hook): Eliminate warning on
+ unitialized variable.
+
+Fri Apr 7 15:56:57 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add
+ --enable-build-warnings option.
+ * Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions.
+ * Makefile.in, configure: Re-generate.
+
+2000-04-07 Nick Clifton <nickc@cygnus.com>
+
+ * reloc.c: Add BFD_RELOC_ARM_PCREL_BLX and
+ BFD_RELOC_THUMB_PCREL_BLX.
+
+ * elf32-arm.h (elf32_arm_final_link_relocate): Handle
+ R_ARM_XPC25 and R_ARM_THM_PC22.
+
+ * elfarm-nabi.c (elf32_arm_howto_): Fix definitions of
+ R_ARM_XPC25 and R_ARM_THM_XPC22.
+ (elf32_arm_reloc_map): Make BFD_RELOC_{ARM|THUMB}_PCREL_BLX to
+ R_ARM_[XPC25|THM_XPC22].
+
+ * elfarm-oabi.c: Define OLD_ARM_ABI and change include from
+ elf/arm-oabi.h to elf/arm.h
+
+ * Makefile.am: Fix dependency for elfarm-oabi.c
+ * Makefile.in: Regenerate.
+
+ * bfd-in2.h: Regenerate.
+ * libbfd.h: Regenerate.
+
+2000-04-06 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * elfcore.h (elf_core_file_p): preserve value of tdata at entry,
+ and restore it on failure. Release newly allocated tdata on
+ failure.
+
+Fri Apr 7 11:33:47 2000 Jim Wilson <wilson@cygnus.com>
+
+ * dwarf2.c (struct dwarf2_debug): New field dwarf_line_size.
+ (decode_line_info): Set it. Report error if unit->line_offset is
+ equal to or larger than it.
+
+2000-04-07 Timothy Wall <twall@cygnus.com>
+
+ * targets.c: Added vecs for tic54x.
+ * reloc.c: Added relocs for tic54x.
+ * libbfd.h: Regenerated.
+ * configure: Add TI COFF vecs for tic54x.
+ * configure.in: Ditto.
+ * config.bfd (targ_cpu): Recognize new tic54x target.
+ * coffcode.h (coff_slurp_symbol_table): Additions for TI COFF handling.
+ * bfd-in2.h: Add tic54x target and relocations.
+ * Makefile.am, Makefile.in: Add tic54x target.
+ * archures.c (bfd_archures_list): Add tic54x target.
+ * coff-tic54x.c: New.
+ * cpu-tic54x.c: New.
+
+2000-04-06 Michael Snyder <msnyder@seadog.cygnus.com>
+
+ * elfcore.h (elf_core_file_p): call backend_object_p which
+ thereby gets an opportunity to update the arch/machine type.
+
+2000-04-06 Timothy Wall <twall@cygnus.com>
+
+ * coffcode.h (coff_slurp_symbol_table): Handle C_STATLAB storage
+ class. Handle SEC_CLINK and SEC_BLOCK flags.
+ * section.c: Add SEC_CLINK and SEC_BLOCK flags.
+ * bfd-in2.h: Add SEC_CLINK and SEC_BLOCK flags.
+
+2000-04-06 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-arm.h (elf32_arm_set_private_flags): Only check for
+ EF_INTERWORK if this is an unknown EABI.
+ (elf32_arm_merge_private_bfd_data): Check EABI version
+ numbers. Only check EF_xxx flags if the EABI version number
+ is unknown.
+ (elf32_arm_check_private_bfd_data): Only check EF_xxx flags
+ if the EABI version number is unknown.
+ (elf32_arm_print_private_bfd_data): Only decode EF_xxx flags
+ if the EABI version number is unknown.
+
+Wed Apr 5 22:04:20 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * reloc.c (_bfd_relocate_contents): Add BFD_RELOC_SH_LOOP_START and
+ BFD_RELOC_SH_LOOP_END.
+ * elf32-sh.c (sh_elf_howto_tab): Change special_func to
+ sh_elf_ignore_reloc for all entries that sh_elf_reloc used to ignore.
+ Add entries for R_SH_LOOP_START and R_SH_LOOP_END.
+ (sh_elf_reloc_loop): New function.
+ (sh_elf_reloc): No need to test for always-to-be-ignored relocs
+ any more.
+ (sh_rel): Add entries for BFD_RELOC_SH_LOOP_{START,END}.
+ (sh_elf_relocate_section): Handle BFD_RELOC_SH_LOOP_{START,END}.
+ * bfd-in2.h, libbfd.h: Regenerate.
+
2000-04-04 Alan Modra <alan@linuxcare.com.au>
* po/bfd.pot: Regenerate.
@@ -270,6 +3635,13 @@ Sat Jul 3 10:35:19 CDT 1999 Joel Sherrill <joel@OARcorp.com>
Update dependencies.
* Makefile.in: Regenerate.
+2000-04-03 Kevin Buettner <kevinb@redhat.com>
+
+ * configure.in: Added corefile support for AIX 4.3. In particular,
+ AIX_CORE_DUMPX_CORE will be defined in addition to AIX_CORE when
+ compiling rs6000-core.c.
+ * configure: Regenerated.
+
2000-04-03 H.J. Lu <hjl@gnu.org>
* cache.c (bfd_open_file): Unlink the output file only if
@@ -281,6 +3653,23 @@ Sat Jul 3 10:35:19 CDT 1999 Joel Sherrill <joel@OARcorp.com>
relative relocations for non-loaded sections in shared objects.
(elf64_alpha_check_relocs): Similarly.
+Mon Apr 3 13:37:15 2000 Hans-Peter Nilsson <hp@axis.com>
+
+ * aoutx.h (NAME(aout,reloc_type_lookup)): Add BFD_RELOC_8 and
+ BFD_RELOC_16 to switch for extended relocs.
+ (MY_swap_ext_reloc_in): New.
+ (MY_swap_ext_reloc_out): New.
+ (NAME(aout,slurp_reloc_table)): Use MY_swap_ext_reloc_in rather
+ than NAME(aout,swap_ext_reloc_in) for extended relocs.
+ (NAME(aout,squirt_out_relocs)): Similarly use
+ MY_swap_ext_reloc_out.
+ (aout_link_reloc_link_order): Use MY_put_ext_reloc if defined.
+
+2000-04-03 Kazu Hirata <kazu@hxi.com>
+
+ * coff-h8300.c (h8300_reloc16_extra_cases): Add bsr:16 -> bsr:8 to
+ the R_PCRWORD_B case.
+
2000-03-31 Thomas de Lellis <tdel@wrs.com>
* srec.c : Set CHUNK size to 16 bytes to prevent download failures
@@ -352,7 +3741,7 @@ Wed Mar 30 15:28:00 2000 Donald Lindsay <dlindsay@cygnus.com>
2000-03-11 Alan Modra <alan@linuxcare.com.au>
- * ieee.c (ieee_archive_p): Return bfd_error_wrong_format on
+ * ieee.c (ieee_archive_p): Return bfd_error_wrong_format on
a format mismatch rather than an "error" from bfd_read such as
bfd_error_file_truncated.
@@ -462,7 +3851,7 @@ Wed Mar 30 15:28:00 2000 Donald Lindsay <dlindsay@cygnus.com>
'srelgot'.
* elf32-mcore.c (mcore_elf_relocate_section): Initialise
- 'oldinst'.
+ 'oldinst'.
* elf32-mips.c: Add ATTRIBUTE_UNUSED to unused function
parameters.
@@ -473,13 +3862,13 @@ Wed Mar 30 15:28:00 2000 Donald Lindsay <dlindsay@cygnus.com>
* elflink.h (elf_bfd_link_add_symbols): Add ATTRIBUTE_UNUSED
to unused function parameter.
-
+
* pe-mips.c: Add ATTRIBUTE_UNUSED to unused function
parameters.
Use EMPTY_HOWTO to initialise empty howto slots.
Remove unused variables.
- * peicode.h (pe_ILF_build_a_bfd): Initialise id6.
+ * peicode.h (pe_ILF_build_a_bfd): Initialise id6.
2000-03-01 H.J. Lu <hjl@gnu.org>
@@ -538,7 +3927,7 @@ Wed Mar 30 15:28:00 2000 Donald Lindsay <dlindsay@cygnus.com>
* configure: regenerate.
* config.bfd: Add support for arm-wince, mips-pe and sh-pe
- targets.
+ targets.
* targets.c: Add mips and sh pe vectors.
@@ -613,7 +4002,7 @@ Fri Feb 25 18:39:26 2000 Rodney Brown (RodneyBrown@pmsc.com)
2000-02-24 Catherine Moore <clm@cygnus.com>
* som.c (som_misc_symbol_info): Add field
- secondary_def.
+ secondary_def.
(som_bfd_derive_misc_symbol_info): Initialize
secondary_def.
(som_build_and_write_symbol_table): Keep track
@@ -627,7 +4016,7 @@ Fri Feb 25 18:39:26 2000 Rodney Brown (RodneyBrown@pmsc.com)
* dwarf2.c (read_address): Read 16-bits addresses.
(parse_comp_unit): Accept addr_size == 2.
-
+
2000-02-23 Alan Modra <alan@spri.levels.unisa.edu.au>
* bfd-in.h: Update copyright date.
@@ -808,7 +4197,7 @@ Thu Feb 17 00:04:48 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
hide_symbol members.
(elf_link_hash_copy_indirect): New.
(elf_link_hash_hide_symbol): New.
- * elflink.h (elf_link_add_object_symbols): Break out copy from
+ * elflink.h (elf_link_add_object_symbols): Break out copy from
indirect new new symbol to elf.c.
(elf_link_assign_sym_version): Break out privatization of
non-exported symbol to elf.c.
@@ -846,7 +4235,7 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
* (sh_insn_sets_reg, sh_insn_uses_or_sets_reg, sh_insns_sets_freg,
sh_insns_uses_or_sets_freg): New functions.
* (sh_insn_uses_reg, sh_insn_uses_freg): Use new macros.
- * (sh_insns_conflict): Use new functions and new macros to
+ * (sh_insns_conflict): Use new functions and new macros to
detect conflicts when two instructions both set same integer registers,
both set same fp register, and both set special register.
@@ -857,7 +4246,7 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
the arch/mach info.
2000-02-08 Mark Elbrecht <snowball3@bigfoot.com>
-
+
* coff-go32.c: Update comment. Update copyright.
2000-01-27 Thomas de Lellis <tdel@windriver.com>
@@ -874,12 +4263,12 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
(bfd_is_undefined_symclass): New function. Return true if the
given symbol class represents and undefined/unresolved symbol.
-
+
(bfd_symbol_info): Use bfd_is_undefined_symclass to check for
unresolved symbols.
* bfd-in2.h: Add prototype for bfd_is_undefined_symbol().
-
+
* elf32-arm.h (elf32_arm_get_symbol_type): If a symbol has the
STT_ARM_16BIT flag set, but it is not attached to a data object
return STT_ARM_16BIT so that it will be treated as code by the
@@ -918,8 +4307,8 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
* coffcode.h: Use bfd_coff_xxx instead of the macro XXX (where xxx
= scnhsz, filhsz, relsz, aoutsz, etc)
- * coffswap.h: Ditto.
-
+ * coffswap.h: Ditto.
+
2000-01-13 Nick Clifton <nickc@cygnus.com>
* elf32-arm.h (elf32_thumb_to_arm_stub): Fix offset in branch to
@@ -940,27 +4329,27 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
* coffgen.c: Indicate that the offset parameter is in bytes, not
octets.
-
+
* cofflink.c (bfd_coff_link_input_bfd): Use bfd_octets_per_byte
where appropriate to get the octet offset when calling
bfd_set_section_contents.
(bfd_coff_reloc_link_order): Ditto.
-
+
* linker.c (bfd_generic_reloc_link_order): Ditto.
(_bfd_default_link_order): Ditto.
-
+
* reloc.c (bfd_perform_relocation): Distinguish between octets
and bytes. Use octets when indexing into octet data; use bytes
when calculating target addresses.
(bfd_install_relocation): Ditto.
-
+
* srec.c (srec_write_section): Ditto.
-
+
2000-01-13 Nick Clifton <nickc@cygnus.com>
* coff-mcore.c (COFF_DEFAULT_SECTION_ALIGNMENT_POWER): Change from
3 to 2. This allows 4 byte sized sections, which is necessary for
- dlltool to build funcitoning DLLs.
+ dlltool to build functioning DLLs.
2000-01-10 Philip Blundell <pb@futuretv.com>
@@ -969,14 +4358,14 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
2000-01-10 Egor Duda <deo@logos-m.ru>
- * config.bfd: Include elf32_i386 vector to target list for cygwin
+ * config.bfd: Include elf32_i386 vector to target list for cygwin
and mingw.
-
+
* config.in: Undefine HAVE_WIN32_PSTATUS_T.
* configure.in: Test for structure win32_pstatus_t in
<sys/procfs.h>
* configure: Regenerate.
-
+
* elf.c (elfcore_grok_win32pstatus): New function: process
win32_pstatus_t notes in elf core file.
(elfcore_grok_note): Detect win32_pstatus notes.
@@ -988,5594 +4377,7 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
* elflink.h (elf_link_add_object_symbols): Combine visibilities.
* elf.c (bfd_elf_print_symbol): Interpret st_other as visibility.
-1999-12-29 Richard Henderson <rth@cygnus.com>
-
- * elflink.h (bfd_elf,size_dynamic_sections): Don't export all
- if no dynamic sections created.
-
-1999-12-27 Nick Clifton <nickc@cygnus.com>
-
- * peicode.h (pe_bfd_object_p): Only define for PE format
- targets.
-
-1999-12-17 Nick Clifton <nickc@cygnus.com>
-
- * coff-i386.c (i3coff_object_p): Delete.
- (i386coff_vec): Replace reference to i3coff_object_p with a
- reference to coff_object_p.
-
- * coff-mcore.c (pe_object_p): Delete.
-
- * peicode.h (pe_bfd_object_p): New function: Detect the
- presence of a PE format COFF object file. Also detect and
- warn about the presence of LINK6 format Image Library Format
- object files.
-
-1999-12-16 Nick Clifton <nickc@cygnus.com>
-
- * coff-arm.c (NUM_ELEM): New macro.
- (NUM_RELOCS): New macro: The number of known ARM relocs.
- (RTYPE2HOWTO): Return NULL if the reloc type is out of range.
- (coff_arm_rtype_to_howto): Return NULL if the reloc type is out
- of range.
- (bfd_arm_process_before_allocation): Produce a warning message if
- an out of range symbol index is encountered.
-
-1999-12-14 Nick Clifton <nickc@cygnus.com>
-
- * elflink.h (is_global_symbol_definition): New Function: Return
- true iff the symbol is being given a global definition in this
- bfd.
- (elf_link_is_defined_archive_symbol): Do not bother processing
- symbols for an archive element that has already been included
- in the link.
- Use is_global_symbol_definition().
-
-1999-12-09 Andrew Cagney <cagney@cygnus.com>
-
- * config.bfd: Add support for sparc-*-netbsdelf* and
- sparc-*-netbsdaout*.
-
-1999-12-13 Nick Clifton <nickc@cygnus.com>
-
- * elflink.h (elf_link_is_defined_archive_symbol): Check to see
- if the symbol is in the common section.
-
-1999-12-10 Nick Clifton <nickc@cygnus.com>
-
- * elflink.h (elf_link_is_defined_archive_symbol): New
- function: Decide if a symbol, in an archive map is there
- because it is defined in the archive element, or because it is
- just another common declaration of it.
- (elf_link_add_archive_symbols): Use
- elf_link_is_defined_archive_symbol to decide if an archive
- element contain a reference to a common symbol should be
- linked in or not.
-
-1999-12-10 Nick Clifton <nickc@cygnus.com>
-
- * elflink.h: Revert previous patch.
- * targets.c: Revert previous patch.
- * libbfd-in2.h: Revert previous patch.
- * libbfd.h: Revert previous patch.
- * elfxx-target.h: Revert previous patch.
- * archive.c: Revert previous patch.
- * aout-target.h: Revert previous patch.
- * aout-tic30.h: Revert previous patch.
- * bfd.c: Revert previous patch.
- * coff-alpha.c: Revert previous patch.
- * coff-rs6000.c: Revert previous patch.
- * elf64-mips.c: Revert previous patch.
- * ieee.c: Revert previous patch.
- * libecoff.h: Revert previous patch.
- * oasys.c: Revert previous patch.
- * som.c: Revert previous patch.
- * vms.c: Revert previous patch.
-
-1999-12-09 Nick Clifton <nickc@cygnus.com>
-
- * elflink.h (elf_link_add_archive_symbols): Add an archive
- element even if contains a symbol which is currently only
- considered to be a common.
-
- * targets.c (struct bfd_target): Add new field
- _bfd_allow_commons_in_armap.
- * bfd-in2.h:Regenerate.
-
- * libbfd-in2.h (_bfd_noarchive_allow_commons_in_armap):
- Define.
- (_bfd_archive_bsd_allow_commons_in_armap): Define.
- * libbfd.h: Regenerate.
-
- * elfxx-target.h: If using COFF archive map, override
- definition of allow_commons_in_armap and replace with
- bfd_false.
-
- * archive.c (bfd_compute_and_write_armap): Do not place common
- symbols into the archive map unless _bfd_allow_commons_in_armap
- returns true.
-
- * aout-target.h (MY_allow_commons_in_armap): Define.
- * aout-tic30.h (MY_allow_commons_in_armap): Define.
- * bfd.c (bfd_allow_commons_in_armap): Define.
- * coff-alpha.h (alpha_ecoff_allow_commons_in_armap): Define.
- * coff-rs6000.h (xcoff_allow_commons_in_armap): Define.
- * elf64-mips.c (bfd_elf64_allow_commons_in_armap): Define.
- * ieee.c (ieee_ecoff_allow_commons_in_armap): Define.
- * libecoff.h (_bfd_ecoff_allow_commons_in_armap): Define.
- * oasys.c (oasys_allow_commons_in_armap): Define.
- * som.c (som_allow_commons_in_armap): Define.
- * vms.c (vms_allow_commons_in_armap): Define.
-
-1999-12-07 Jim Blandy <jimb@cygnus.com>
-
- Add support for SSE registers in ELF core files.
- * elf.c (elfcore_make_note_pseudosection): New function.
- (elfcore_grok_prfpreg): Use it.
- (elfcore_grok_prxfpreg): New function.
- (elfcore_grok_note): Recognize Linux NT_PRXFPREG notes.
-
-1999-12-03 Ian Lance Taylor <ian@zembu.com>
-
- * elf32-mips.c (mips_elf_calculate_relocation): Divide R_MIPS_PC16
- value by 4 before storing it back in the field. From
- Koundinya. K <kk@ddeorg.soft.net>.
-
-Tue Nov 30 22:41:14 1999 Jeffrey A Law (law@cygnus.com)
-
- * archures.c (bfd_mach_am33): Define.
- * bfd-in2.h: Rebuilt.
- * cpu-m10300.c (bfd_am33_arch): Add to the mn103 architecture list
- * elf-m10300.c (mn10300_elf_relax_section): Handle am33 instructions.
- (compute_function_info): Handle additional registers saved by
- movm on the am33.
- (elf_mn10300_mach): Handle E_MN10300_MACH_AM33.
- (_bfd_mn10300_elf_final_write_processing): Handle bfd_mach_am33.
-
-1999-11-29 Jim Blandy <jimb@cygnus.com>
-
- * elf.c (bfd_get_elf_phdrs, bfd_get_elf_phdr_upper_bound): New
- functions.
- * bfd-in2.h (bfd_get_elf_phdrs, bfd_get_elf_phdr_upper_bound): New
- declarations.
-
-1999-11-27 Michael Meissner <meissner@cygnus.com>
-
- * reloc.c (BFD_RELOC_ALPHA_USER_LITERAL): New relocation for
- internal use within gas for alpha explicit relocations.
- (BFD_RELOC_ALPHA_USER_LITUSE_BASE): Ditto.
- (BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF): Ditto.
- (BFD_RELOC_ALPHA_USER_LITUSE_JSR): Ditto.
- (BFD_RELOC_ALPHA_USER_GPDISP): Ditto.
- (BFD_RELOC_ALPHA_USER_GPRELHIGH): Ditto.
- (BFD_RELOC_ALPHA_USER_GPRELLOW): Ditto.
-
- * elf64-alpha.c (elf64_alpha_reloc_map): Add mappings for
- BFD_RELOC_ALPHA_USER_*.
-
- * bfd-in2.h: Regenerate.
- * libbfd.h: Regenerate.
-
-1999-11-26 Fred Fish <fnf@cygnus.com>
-
- * elf.c (elfcore_read_notes): Add prototype for static function.
- (_bfd_elf_make_section_from_phdr): Renamed from bfd_section_from_phdr.
- (bfd_section_from_phdr): Replacement function that calls
- _bfd_elf_make_section_from_phdr for generic segment types and
- backend fucntion pointed to by elf_backend_section_from_phdr for
- backend specific segment types.
- (_bfd_elfcore_section_from_phdr): Remove call to elfcore_read_notes,
- now called by _bfd_elf_make_section_from_phdr. Note that this func
- is now just a stub between the caller and bfd_section_from_phdr.
-
- * elf-bfd.h (struct elf_backend_data): Add new function pointer
- elf_backend_section_from_phdr.
- (elf_backend_section_from_phdr): Add prototype.
-
- * elfxx-target.h (elf_backend_section_from_phdr): Define default.
- (elfNN_bed): Add elf_backend_section_from_phdr.
-
-1999-11-25 Nick Clifton <nickc@cygnus.com>
-
- * coff-arm.c (bfd_arm_get_bfd_for_interworking): Add
- SEC_CODE and SEC_READONLY flags to glue sections.
-
- * elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Add
- SEC_CODE and SEC_READONLY flags to glue sections.
-
-1999-11-20 Nick Clifton <nickc@cygnus.com>
-
- * coff-mcore.c (coff_mcore_relocate_section): Fix typo in previous
- delta.
-
-1999-11-19 Catherine Moore <clm@cygnus.com>
-
- * elf32-m68k.c (elf_cpu32_plt0_entry): Fix encoding.
- (elf_cpu32_plt_entry): Likewise.
-
-1999-11-18 Nick Clifton <nickc@cygnus.com>
-
- * coff-mcore.c (coff_mcore_rtype_to_howto): Special case handling
- for RVA relocs.
- (coff_mcore_relocate_section): Initialise addend to 0.
- Special case processing of RVA reloc.
-
-1999-11-17 Richard Henderson <rth@cygnus.com>
-
- * elf-bfd.h (struct elf_backend_data): Reorder collect and
- type_change_ok; add sign_extend_vma.
- * elf32-mips.c (elf_backend_sign_extend_vma): Define.
- * elfcode.h (elf_swap_symbol_in): Mind be->sign_extend_vma.
- (elf_swap_shdr_in, elf_swap_phdr_in): Likewise.
- * elfxx-target.h (elf_backend_sign_extend_vma): Default.
- (elfNN_bed): Follow struture changes.
-
-1999-11-09 Ian Lance Taylor <ian@zembu.com>
-
- * libbfd.c (bfd_read): Check result of read against desired result
- using !=, not <.
- (_bfd_generic_get_section_contents): Set bfd_error if the seek is
- invalid compared to the section size.
-
- * ieee.c (ieee_slurp_debug): Get the length of the debug
- information right if there is no data part.
-
-Tue Nov 2 01:44:41 1999 Jeffrey A Law (law@cygnus.com)
-
- * som.c (som_fixup_formats): Improve handling of R_AUX_UNWIND,
- R_LINETAB, R_LINETAB_ESC, and R_COMMENT.
-
-1999-10-28 Ian Lance Taylor <ian@zembu.com>
-
- * elflink.h (elf_bfd_final_link): Make last_local signed.
-
-1999-10-27 Ian Lance Taylor <ian@zembu.com>
-
- * stabs.c (_bfd_link_section_stabs): Make sure .stabstr section
- starts with a zero.
-
-Sat Oct 23 17:36:12 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * archures.c: Add definitions bfd_mach_d10v, bfd_mach_d10v_ts2 and
- bfd_mach_d10v_ts3.
- * cpu-d10v.c (d10v_ts3_info, d10v_ts2_info): Add.
- * bfd-in2.h: Regenerate.
-
-1999-10-15 Andrew Haley <aph@cygnus.com>
-
- * dwarf1.c (parse_die): Fail to parse a die if its length is zero.
-
-Sun Oct 17 17:19:00 1999 Jeffrey A Law (law@cygnus.com)
-
- * libhppa.h (bfd_hppa_insn2fmt): Change to return an int.
-
-1999-10-08 Ian Lance Taylor <ian@zembu.com>
-
- * elflink.h (elf_merge_symbol): When overriding a weak symbol with
- a defined symbol in a shared library, clear the DEF_DYNAMIC flag
- too.
-
-Fri Oct 8 13:03:45 1999 Geoffrey Keating <geoffk@cygnus.com>
-
- * elf32-mips.c (mips_elf_calculate_relocation): R_MIPS_LITERAL
- relocs also need the GP value.
- (_bfd_mips_elf_relocate_section): Handle unpaired LO16 relocs
- properly. Handle sign-extension for R_MIPS_64 correctly. Correct
- the GP value for R_MIPS_LITERAL relocs too. Handle
- R_MIPS_64 relocs properly on big-endian MIPS.
- (mips_elf_sign_extend): Behave properly with 'long long'.
- (mips_elf_highest): Correct typo.
-
-Mon Oct 4 17:49:45 1999 Nick Clifton <nickc@cygnus.com>
-
- * cpu-m32r.c (arch_info_struct): New static global.
- (bfd_m32r_arch): Refer to it.
- * elf32-m32r.c (m32r_elf_object_p): Recognize E_M32RX_ARCH.
- (m32r_elf_print_private_bfd_data): Ditto.
- (m32r_elf_final_write_processing): Handle bfd_mach_m32rx.
- * archures.c (bfd_mach_m32rx): Define it.
- * bfd-in2.h: Rebuild.
-
-1999-09-28 Fred Fish <fnf@cygnus.com>
-
- * targets.c (cisco_core_vec): Replaced with two new vecs ...
- (cisco_core_big_vec): Add new bigendian vec.
- (cisco_core_little_vec): Add new little endian vec.
-
- * cisco-core.c (CRASH_INFO): Fixed offset replaced with ...
- (crash_info_locs): Add array of possible offsets.
- (MASK_ADDR): Mask to apply to crash info offset.
- (crashinfo_external): Add textbase, database, bssbase and
- turn into a typedef.
- (cisco_core_file_validate): Renamed from cisco_core_file_p.
- Many small changes to account for additional hardware versions.
- Pick a reasonable size for ".reg" section. Add a ".crash"
- section to allow access to crashinfo_external struct.
- (cisco_core_file_p): New version of this function that
- iterates over crash_info_locs, calling cisco_core_file_validate.
- (cisco_core_vec): Old big endian only vec replaced with ...
- (cisco_core_big_vec): Add big endian version.
- (cisco_core_little_vec): Add little endian version.
-
- * configure.in (cisco_core_vec): Split to two new vectors ...
- (cisco_core_big_vec): New target vector.
- (cisco_core_little_vec): New target vector.
- * configure: Regenerate.
- * config.bfd (targ): For m68*-*-aout* targ, change cisco_core_vec
- to cisco_core_big_vec in targ_selvecs.
-
-1999-09-28 Geoffrey Keating <geoffk@cygnus.com>
-
- * elf32-mips.c (mips_elf_relocate_hi16): Unused, delete.
- (mips_elf_relocate_got_local): Unused, delete.
- (mips_elf_relocate_global_got): Unused, delete.
-
-1999-09-24 Fred Fish <fnf@cygnus.com>
-
- * elf.c (bfd_section_from_phdr): Add typename variable. Use p_type
- to initialize it to something meaningful. Then use it to generate
- more useful segment names.
-
-Sun Sep 19 12:16:47 1999 Jeffrey A Law (law@cygnus.com)
-
- * som.c (NO_PCREL_MODES): Define if the system does not define
- R_SHORT_PCREL_MODE.
- (hppa_som_gen_reloc_type): Handle both short and long pcrel branches.
- (som_write_fixups): Eliminate redundant pcrel mode relocs. Handle
- R_LONG_PCREL_MODE and R_SHORT_PCREL_MODE
- * libhppa.h (dis_assemble_22): New function.
- (bfd_hppa_insn2fmt): Handle long branch.
-
- * libhppa.h (bfd_hppa_insn2fmt): Decode and handle formats found
- in PA2.0.
-
-1999-09-17 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * coff-i386.c (coff_i386_reloc_type_lookup): Support BFD_RELOC_16,
- BFD_RELOC_16_PCREL, BFD_RELOC_8, BFD_RELOC_8_PCREL relocs.
- (reloc_howto_type howto_table): Tidy comments and whitespace.
-
-1999-09-17 Nick Clifton <nickc@cygnus.com>
-
- * elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Undo
- previous delta. Set sec->gc_mark instead.
-
-Thu Sep 16 11:21:13 1999 Catherine Moore <clm@cygnus.com>
-
- * elf32-m68k.c (elf_cpu32_plt0_entry): Use a1 instead of a0.
- (elf_cpu32_plt_entry): Likewise.
-
-Thu Sep 16 10:48:17 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (elf_hppa_final_write_processing): Turn on TRAPNIL.
-
- * elf-hppa.h (elf_hppa_final_link): If unable to find __gp in the
- symbol table, then just compute a suitable value (but do not
- create a __gp symbol).
-
- * elf-hppa.h (elf_hppa_relocate_section): Allow undefined
- symbols when building shared libraries.
- (elf_hppa_final_link_relocate): Correct handling of PCREL
- relocations against undefined symbols.
-
-1999-09-16 Nick Clifton <nickc@cygnus.com>
-
- * elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Mark
- interworking sections as linker created so that they will not
- be removed by garbage collection.
-
-Wed Sep 15 02:31:57 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (elf_hppa_final_link): Revamp __gp handling.
- (elf_hppa_final_link_relocate): Consistently create an absolute
- address, then subtract out the value of __gp.
-
-1999-09-14 Michael Meissner <meissner@cygnus.com>
-
- * configure.in (Canonicalization of target names): Remove adding
- ${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
- generates $ac_config_sub with a ${CONFIG_SHELL} already.
- * configure: Regenerate.
-
-1999-09-14 Nick Clifton <nickc@cygnus.com>
-
- * elf32-m32r.c (ELF_MAXPAGESIZE): Change to 0x1 (at request of
- Mitsubishi).
-
-Mon Sep 13 20:01:47 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (elf_hppa_record_segment_addrs): New function.
- (elf_hppa_final_link): Initialize text_segment_base and
- data_segment_base.
- (elf_hppa_final_link_relocate): Handle SEGREL relocations.
-
- * elf-hppa.h (elf_hppa_final_link): Remove unused variables.
- (elf_hppa_final_link_relocate): Likewise.
- (elf_hppa_relocate_insn): Likewise.
- (elf_hppa_relocate_section): Initialize HOWTO.
-
-1999-09-13 Donn Terry <donn@interix.com>
-
- * coffcode.h (styp_to_sec_flags): Further refinement of COMDAT
- handling to support both GNU and MS objects.
-
- * coffcode.h (coff_write_object_contents): Don't check reloc_count
- when determining whether to set F_RELFLG.
-
-1999-09-13 Philip Blundell <pb@nexus.co.uk>
-
- * elf32-arm.h (elf32_arm_final_link_relocate): Don't range-check
- PC24 relocs if the target is an undefined weak symbol.
- (arm_add_to_rel): Fix compiler warning.
- (elf32_arm_plt0_entry): Correct comments.
-
-1999-09-13 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * elfcode.h (write_relocs): Check for the_bfd NULL when handling
- an absolute symbol in REL relocs.
-
-Sun Sep 12 23:47:58 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (elf_hppa_final_link_relocate): Handle SECREL32.
- Stub SEGREL32. Return an error for any relocation not handled.
-
-1999-09-12 Ian Lance Taylor <ian@zembu.com>
-
- * cofflink.c (coff_link_add_symbols): Look for special MSVC string
- constant symbols, and avoid multiple definition errors on them.
-
-1999-09-12 Donn Terry <donn@interix.com>
-
- * libbfd.c (bfd_log2): Rewrite to avoid infinite loop if most
- significant bit is set.
-
-1999-09-11 Ian Lance Taylor <ian@zembu.com>
-
- * coff-ppc.c (COFF_SECTION_ALIGNMENT_ENTRIES): Define.
-
- * elfcode.h (write_relocs): Handle an absolute symbol in REL
- relocs as we do for RELA relocs.
-
-1999-09-11 Donn Terry <donn@interix.com>
-
- * libpei.h (_bfd_pei_final_link_postscript): Declare.
- (coff_final_link_postscript): Define.
- * peigen.c (_bfd_pei_swap_aouthdr_out): Don't set value for data
- directory entries here.
- (_bfd_pei_final_link_postscript): New function.
-
- * peigen.c (_bfd_pei_swap_scnhdr_out): Remove code which sets
- section flags based on the section name.
-
- * peicode.h (coff_swap_scnhdr_in): If COFF_IMAGE_WITH_PE, the
- get the overflow of the s_nlnno field from the s_nreloc field.
- * peigen.c (_bfd_pei_swap_scnhdr_out): If doing a final link, swap
- the s_nlnno overflow of the .text section into the s_nreloc
- field.
-
- * peigen.c (add_data_entry): Declare.
- (pei_swap_aouthdr_out): Get image size right. Set linker version
- more intuitively.
- (pei_swap_scnhdr_out): Test for UNINIT section, not .bss.
- (pe_print_idata): Code cleanup, print more info, get rid of (now)
- extraneous ImageBase.
- (pe_print_edata): Likewise.
- (pe_print_pdata): Likewise. Print exception entries.
- (pe_print_reloc): Likewise. Print MIPS_JMPADDR.
- (tbl): Make const, add "UNKNOWN".
- (_bfd_pe_print_private_bfd_data_common): Print timestamp.
- (_bfd_pe_bfd_copy_private_bfd_data_common): Don't copy deleted
- section data directory.
- (_bfd_pe_bfd_copy_private_section_data): Copy pe_flags.
-
- * libpei.h (_bfd_pe_bfd_get_symbol_info): Declare.
- * peigen.c (_bfd_pe_bfd_get_symbol_info): New function.
- * peicode.h (coff_get_symbol_info): Define.
-
- * config.bfd (i[3456]86-*-interix*): Set targ_cflags to
- -DSTRICT_PE_FORMAT.
- * coffcode.h (styp_to_sec_flags): Check STRICT_PE_FORMAT rather
- than __INTERIX.
- (coff_classify_symbol): Re-revert 1999-08-08 patch if
- STRICT_PE_FORMAT.
-
- * libpei.h: New file, broken out of peicode.h.
- * peigen.c: New file, broken out of peicode.h.
- * peicode.h: A bunch of code moved out to libpei.h and peigen.c.
- * configure.in: Add peigen.lo to list of files required for each
- PE target.
- * Makefile.am: Rebuild dependencies.
- (BFD32_BACKENDS): Add peigen.lo.
- (BFD32_BACKENDS_CFILES): Add peigen.c.
- (SOURCE_HFILES): Add libpei.h.
- * configure, Makefile.in: Rebuild.
-
- * peicode.h (coff_swap_scnhdr_in): Don't check for a special
- section name of _BSS; check IMAGE_SCN_CNT_UNINITIALIZED_DATA
- instead. Don't clear the s_paddr field for an uninitialized data
- section.
-
- * coffcode.h (coff_mkobject_hook): Set timestamp field in
- coff_data_type to f_timdat.
- * peicode.h (pe_mkobject_hook): Likewise.
-
- * peicode.h (coff_swap_filehdr_in): Check the NT executable magic
- number if COFF_IMAGE_WITH_PE.
-
- * coffcode.h (coff_mkobject_hook): If COFF_WITH_PE, set HAS_DEBUG
- to the reverse of IMAGE_FILE_DEBUG_STRIPPED.
- (coff_write_object_contents): Set IMAGE_FILE_DEBUG_STRIPPED if
- there is no SEC_DEBUGGING section.
- * peicode.h (pe_mkobject_hook): Set HAS_DEBUG to the reverse of
- IMAGE_FILE_DEBUG_STRIPPED.
-
- * pe-i386.c (COFF_LONG_FILENAMES): Define.
- (COFF_SECTION_ALIGNMENT_ENTRIES): Define.
- * pei-i386.c (COFF_LONG_FILENAMES): Define.
- (COFF_SECTION_ALIGNMENT_ENTRIES): Define.
-
- * coffswap.h (IMAGE_BASE): Don't define.
- * pei-arm.c (IMAGE_BASE): Don't define.
- * pei-i386.c (IMAGE_BASE): Don't define.
- * pei-mcore.c (IMAGE_BASE): Don't define.
- * pei-ppc.c (IMAGE_BASE): Don't define.
-
- * cofflink.c (_bfd_coff_link_input_bfd): When writing out a
- symbol, switch on the class when determining whether to modify the
- value. For PE, don't modify the value of a C_FCN symbol not named
- .bf.
-
- * libbfd-in.h (_bfd_abort): Declare.
- (abort): Define.
- * bfd.c (_bfd_abort): New function.
- * libbfd.h: Rebuild.
-
- * coffcode.h (coff_set_alignment_hook): Delete POWERPC_LE_PE
- special handling.
-
- * cofflink.c (_bfd_coff_link_input_bfd): If a symbol is stripped,
- don't write out the associated line numbers.
-
- * cofflink.c (_bfd_coff_write_global_sym): Handle section symbol
- aux entries.
-
- * cofflink.c (coff_link_add_symbols): Don't warn about symbol type
- changes when the base type is unknown.
-
- * coffgen.c (coff_print_symbol): Fix printing of aux record for
- function symbols.
-
- * syms.c (BSF_DEBUGGING_RELOC): Define.
- * coffcode.h (coff_slurp_symbol_table): If PE, set BSF_DEBUGGING
- for C_FCN/C_EFCN symbols, and set BSF_DEBUGGING_RELOC for such
- symbols named .bf.
- * coffgen.c (fixup_symbol_value): Relocate a symbol which has
- BSF_DEBUGGING_RELOC set.
- * bfd-in2.h: Rebuild.
-
-1999-09-10 Ian Lance Taylor <ian@zembu.com>
-
- * ecoff.c (bfd_debug_section): Update initialization for new
- comdat_info field.
- (_bfd_ecoff_styp_to_sec_flags): Add section parameter.
- * libecoff.h (_bfd_ecoff_styp_to_sec_flags): Update declaration.
-
-1999-09-10 H.J. Lu <hjl@gnu.org>
-
- * coff-alpha.c (alpha_ecoff_backend_data): Initialize the new
- _bfd_filnmlen field.
- * coff-mips.c (mips_ecoff_backend_data): Likewise.
-
-Fri Sep 10 00:35:14 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (elf_hppa_final_link_relocate): Create .opd entries
- for FPTR relocs involving local symbols.
-
- * elf-hppa.h (elf_hppa_final_link_relocate): Get the right
- value for the stub address in a call through a stub.
- Install the value for a local symbol directly into the DLT
- instead of generating a reloc. Correctly handle FPTR64 relocs.
-
- * elf-hppa.h (elf_hppa_unmark_useless_dynamic_symbols): New function.
- (elf_hppa_remark_useless_dynamic_symbols): Similarly.
- (elf_hppa_final_link): Call them.
-
-1999-09-10 Ian Lance Taylor <ian@zembu.com>
-
- * elflink.h (elf_fix_symbol_flags): Move weakdef handling here...
- (elf_adjust_dynamic_symbol): ...from here.
-
-Wed Sep 8 17:56:11 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (elf_hppa_howto_table); There is no DIR64WR, DIR64DR
- relocation, remove them. SECREL64->LTOFF16WF.
- (elf_hppa_final_link_relocate): Handle LTOFF* relocations. Handle
- DIR* relocations.
- (elf_hppa_relocate_insn): Similarly.
-
- * elf-hppa.h (elf_hppa_final_link_relocate): Handle PLTOFF* relocs.
- (elf_hppa_relocate_insn): Similarly.
-
- * elf-hppa.h (elf_hppa_final_link_relocate): Handle DPREL* and
- GPREL* relocations.
- (elf_hppa_relocate_insn): Similarly.
-
- * elf-hppa.h (elf_hppa_link_final_relocate): Fix typos.
- Handle LTOFF_TP* relocs.
- (elf_hppa_relocate_insn): Similarly.
-
- * elf-hppa.h (elf_hppa_final_link_relocate): Handle PCREL* relocs.
- Consistently deal with addends. Handle DLTIND14F and DLTREL14F.
- (elf_hppa_relocate_insn): Handle PCREL* relocs.
-
- * elf-hppa.h (elf_hppa_final_link_relocate): Handle LT_OFF_FPTR*,
- DIR32, DIR64 and FPTR64 relocations.
- (elf_hppa_relocate_insn): Similarly.
-
- * elf-hppa.h (elf_hppa_final_link): Set the value of __gp to the
- address of the .PARISC.global section.
- (elf_hppa_relocate_section): Lookup and pass the PA64 hash
- table entry elf_hppa_final_link_relocate. Do not give a warning
- for a reloc against an external symbol if it has a PA64 hash
- table entry.
- (elf_hppa_final_link_relocate): Significantly rework. Handle
- DLTIND relocations. Compute the final value of the relocation
- before passing the value of elf_hppa_relocate_insn.
- (elf_hppa_relocate_insn): Revamp to handle just bit tiwiddling
- relocation support. Handle DLTIND relocation requests just like
- DLTREL relocation requests. Simplify branch handling.
-
-1999-09-08 Ulrich Drepper <drepper@cygnus.com>
-
- * elf-hppa.h (elf_hppa_relocate_section): Catch problems with
- non-allocated section as done in i386 version.
- (elf_hppa_final_link_relocate): Uncomment R_PARISC_14F in switch
- statement since this is no know relocation.
-
-Tue Sep 7 17:25:12 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (elf_hppa_final_link_relocate): Handle DLTREL14F
- relocs.
- (elf_hppa_relocate_insn): Similarly.
-
- * elf-hppa.h (elf_hppa_final_link_relocate): Handle DLTREL14WR and
- DLTREL14WD relocs.
- (elf_hppa_relocate_insn): Similarly.
-
- * elf-hppa.h (elf_hppa_final_link_relocate): Handle DLTREL14R and
- DLTREL21L relocs. Pass the output bfd to elf_hppa_relocate_insn.
- Pass the relocate type rather than the insn format to
- elf_hppa_relocate_insn.
- (elf_hppa_relocate_insn): Make switch dependent on relocation type
- rather than the opcode. Handle DLTREL21L and DLTREL14R relocs.
-
-1999-09-07 Ian Lance Taylor <ian@zembu.com>
-
- * coffcode.h (bfd_coff_backend_data): Add _bfd_filnmlen field.
- (bfd_coff_filnmlen): Define.
- (bfd_coff_std_swap_table): Initialize new field.
- * coffgen.c (coff_fix_symbol_name): Use bfd_coff_filnmlen rather
- than FILNMLEN.
- (coff_write_symbols): Likewise.
- (coff_get_normalized_symtab): Likewise.
- * coff-sh.c (bfd_coff_small_swap_table): Initialize new field.
- * libcoff.h: Rebuild.
-
-1999-09-06 Donn Terry <donn@interix.com>
-
- * coffcode.h (sort_by_secaddr): New static function if
- COFF_IMAGE_WITH_PE.
- (coff_compute_section_file_positions): If COFF_IMAGE_WITH_PE, sort
- sections by VMA when assigning target_index values. Always set
- virt_size.
-
- * libcoff-in.h (struct pei_section_tdata): Add pe_flags field.
- * coffcode.h (coff_set_alignment_hook) [COFF_WITH_PE version]: Set
- pe_flags field.
- * libcoff.h: Rebuild.
-
- * coffcode.h (coff_set_custom_section_alignment): Add const to
- declaration to match definition.
- (coff_write_object_contents): Don't set F_AR32W(R)? if
- COFF_WITH_PE.
-
- * coff-i386.c (in_reloc_p): Add declaration.
- (i386coff_vec): Simplify initialization of
- application_section_flags.
-
- * coffcode.h (sec_to_styp_flags): Write separate COFF_WITH_PE
- version. Move COFF_WITH_PE specific code to new version.
- (stype_to_sec_flags): Likewise. Add section parameter.
- * coffgen.c (make_a_section_from_file): Set target_index before
- calling styp_to_sec_flags. Pass section to styp_to_sec_flags.
- * libcoff.h: Rebuild.
-
- * syms.c (stt): Add some PE/PEI section names.
- (bfd_decode_symclass): Return 'w', not 'U', for a weak undefined
- symbol.
- (bfd_symbol_info): Check for 'w'.
-
- * section.c (struct bfd_comdat_info): Define.
- (asection): Add comdat field.
- (STD_SECTION): Initialize comdat field.
- (bfd_make_section_anyway): Likewise.
- * bfd-in2.h: Rebuild.
-
-1999-09-06 Andreas Schwab <schwab@suse.de>
-
- * elflink.h (elf_link_add_object_symbols): Copy NON_GOT_REF flag
- to version symbols.
-
-1999-09-06 Nick Clifton <nickc@cygnus.com>
-
- * elflink.h (elf_gc_record_vtentry): Use bfd_zmalloc and
- bfd_realloc instead of calloc and realloc.
-
-1999-09-04 Steve Chamberlain <sac@pobox.com>
-
- * cpu-pj.c: New file.
- * elf32-pj.c: New file.
- * config.bfd (pj*): New cpu.
- (pj-*-*, pjl-*-*): New targets.
- * configure.in (bfd_elf32_pj_vec): New target vector.
- (bfd_elf32_pjl_vec): New target vector.
- * archures.c (bfd_arch_pj): Define.
- * elf.c (prep_headers): Handle bfd_arch_pj.
- * reloc.c: Define BFD_RELOC_PJ_* relocations.
- * targets.c (bfd_elf32_pj_vec, bfd_elf32_pjl_vec): Declare and add
- to target vector list.
- * Makefile.am: Rebuild dependencies.
- (ALL_MACHINES): Add cpu-pj.lo.
- (ALL_MACHINES_CFILES): Add cpu-pj.c.
- (BFD32_BACKENDS): Add elf32-pj.lo.
- (BFD32_BACKENDS_CFILES): Add elf32-pj.c.
- * configure, Makefile.in, bfd-in2.h, libbfd.h: Rebuild.
-
-1999-09-04 Ian Lance Taylor <ian@zembu.com>
-
- * elf-bfd.h (ELF_LINK_NON_GOT_REF): Define.
- * elflink.h (elf_adjust_dynamic_symbol): Copy REF_REGULAR_NONWEAK
- and NON_GOT_REF from weak defined symbol to real symbol.
- * elf32-i386.c (elf_i386_check_relocs): Set NON_GOT_REF.
- (elf_i386_adjust_dynamic_symbol): If NON_GOT_REF is not set, don't
- create a COPY reloc.
- * elf32-sparc.c (elf32_sparc_check_relocs): Set NON_GOT_REF.
- (elf32_sparc_adjust_dynamic_symbol): If NON_GOT_REF is not set,
- don't create a COPY reloc.
-
-1999-09-03 Ian Lance Taylor <ian@zembu.com>
-
- * elflink.h (elf_bfd_final_link): When counting relocations, don't
- count those in sections we are not including in the link.
-
-Thu Sep 2 17:41:20 1999 Jeffrey A Law (law@cygnus.com)
-
- * elflink.h (elf_link_add_object_symbols): Work around bogus SH_LINK
- field in hpux11 shared libraries.
-
-1999-09-02 Nick Clifton <nickc@cygnus.com>
-
- * elflink.h (elf_gc_record_vtentry): Fix memory leak.
-
-Wed Sep 1 13:34:29 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (elf_hppa_add_symbol_hook): New function.
- (elf_hppa_final_link, elf_hppa_relocate_section): Likewise.
- (elf_hppa_final_link_relocate, elf_hppa_relocate_insn): Likewise.
-
-1999-08-31 Alexandre Petit-Bianco <apbianco@cygnus.com>
-
- * elflink.h (record_link_assignment): When possible, keep the
- original type of the symbol.
-
-Mon Aug 30 15:26:48 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Allow both
- R_PARISC_DIR32 and R_PARISC_DIR64 regardless of how the
- tools were configured.
- * elf32-hppa.h (_bfd_elf32_hppa_gen_reloc_type): Declare.
-
-1999-08-26 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (_bfd_mips_elf_check_relocs): Don't allocate local
- GOT entries for GOT16 relocations; they're not required.
-
-1999-08-24 Nick Clifton <nickc@cygnus.com>
-
- From a patch submitted by Roland McGrath <roland@baalperazim.frob.com>
-
- * config.bfd (arm-*-netbsd*): New target.
- * configure.in (armnetbsd_vec): New target vector.
- * configure: Regenerate
- * targets.c (bfd_target_vector): Add &armnetbsd_vec.
-
- * Makefile.am (BFD32_BACKENDS): Add armnetbsd.lo.
- (ALL_MACHINES_CFILES): Add armnetbsd.c.
- (armnetbsd.lo): New rule with deps.
- * Makefile.in: Regenerate.
-
- * armnetbsd.c: New file: Definitions specific to arm-netbsd
- target.
-
-Tue Aug 24 00:25:58 1999 Jeffrey A Law (law@cygnus.com)
-
- * som.c (som_slurp_symbol_table): Fix typo in comment.
-
-Fri Aug 20 17:01:23 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (elf_hppa_fake_sections): Compute section indices
- here instead of using elf_section_data...
-
-1999-08-19 Nick Clifton <nickc@cygnus.com>
-
- * coff-mcore.c (mcore_emit_base_file_entry): New function: Emit
- relocations into the base file.
- (coff_mcore_relocate_section): Call mcore_emit_base_file_entry if
- we are building a base file.
-
-1999-08-19 Nick Clifton <nickc@cygnus.com>
-
- * elf32-arm.h (arm_add_to_rel): New function. Add a value to
- a REL style reloc.
- (elf32_arm_relocate_section): Use arm_add_to_rel to increment
- REL relocs when performing a partial relocation.
-
-1999-08-18 Donn Terry <donn@interix.com>
-
- * cofflink.c: Move definitions of N_TMASK, et. al., out of
- _bfd_coff_link_input_bfd into top level.
-
- * coff-i386.c (coff_i386_reloc): Handle R_IMAGEBASE.
- (RTYPE2HOWTO): Return NULL if reloc type is out of range.
- (coff_i386_rtype_to_howto): Likewise.
- * coffcode.h (coff_slurp_symbol_table): Change a -2 to N_DEBUG.
- Completely ignore symbols which are all zero.
- (dummy_reloc16_estimate): Add return 0.
- * cofflink.c (_bfd_coff_link_input_bfd): Rename inner scope
- variable copy to name_copy to avoid shadowing outer scope
- variable.
- * libcoff-in.h (coff_data_type): Change raw_syment_count field
- from unsigned int to unsigned long. Add timestamp field.
- * libcoff.h: Rebuild.
-
-1999-08-17 H.J. Lu <hjl@gnu.org>
-
- * elf32-hppa.c (bfd_elf32_bfd_is_local_label_name): Fix typo in
- macro definition.
-
-1999-08-17 Ian Lance Taylor <ian@zembu.com>
-
- * elf32-mips.c (_bfd_mips_elf_add_symbol_hook): Set BSF_DYNAMIC
- for special section symbols.
- * elflink.h (elf_merge_symbol): If we have no old BFD, check
- BSF_DYNAMIC on the section symbol to see whether the old BFD is
- dynamic.
-
-1999-08-15 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (mips_elf_calculate_relocation): Fix unfortunate
- coincidence of variable names between old and new code.
-
-1999-08-12 Nick Clifton <nickc@cygnus.com>
-
- * elf32-arm.h (elf32_arm_to_thumb_stub): Make 'offset' parameter
- into a bfd_vma and 'addend' parameter a 'bfd_signed_vma'.
- (elf32_thumb_to_arm_stub): Make 'offset' parameter into a bfd_vma
- and 'addend' parameter a 'bfd_signed_vma'.
- (elf32_arm_final_link_relocate): Do not involve stubs in
- R_ARM_THM_PC22 relocs relative to section symbols, they are long
- jumps, not function calls.
-
-1999-08-11 Robin Farine <advanc@dial.eunet.ch>
-
- * elf32-arm.h (elf32_arm_final_link_relocate): Check for overflow
- in R_ARM_PC24 relocs.
-
-Tue Aug 10 12:48:09 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (elf_hppa_fake_sections): New function.
- * elf32-hppa.c (elf_backend_fake_sections): Define.
-
- * elf-hppa.h (elf_hppa_final_write_processing): Update for
- recent changes to the arch_info structure.
-
- * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Handle
- R_HPPA_SEGBASE and R_HPPA_SEGREL32.
- * cpu-hppa.c (bfd_hppa20w_arch): New entry in architecture info
- list.
-
-Tue Aug 10 00:34:29 1999 Mark P. Mitchell <mark@codesourcery.com>
- Ralf Baechle <ralf@uni-koblenz.de>
-
- * elf32-mips.c (_bfd_mips_elf_size_dynamic_sections): Always
- output DT_MIPS_GOTSYM.
- (_bfd_mips_elf_finish_dynamic_sections): Use the same value as
- DT_MIPS_SYMTABNO if there are no global GOT symbols.
-
-Tue Aug 10 00:21:08 1999 Mark P. Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (mips_elf_create_dynamic_relocation): Change
- prototype. Handle local symbols. Add commentary.
- (mips_elf_calculate_relocation): Adjust accordingly.
- (_bfd_mips_elf_check_relocs): Handle local symbols in R_MIPS_32
- relocations.
-
- * elflink.h (elf_bfd_final_link): Tweak last change.
-
-1999-08-09 Mark Mitchell <mark@codesourcery.com>
-
- * elflink.h (elf_link_size_reloc_section): Use the counts in the
- elf-section data to allocate just the right amount of relocation
- space. Don't allocate the hash space twice.
- (elf_bfd_final_link): Calculate the amount of space to allocate in
- each relocation section.
-
-Mon Aug 9 17:37:30 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type, case 32): When in
- 64bit mode, generate a section relative relocation for a 32bit
- wide relocation.
- (elf_hppa_is_local_label_name): New function.
- * elf32-hppa.c (elf_hppa_is_local_label_name): Deleted. To be
- shared between 32bit and 64bit port.
-
-1999-08-09 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (elf_mips_howto_table): Fix src_mask for
- R_MIPS_GOT16 and R_MIPS_CALL16.
- (mips_elf_got16_entry): Use mips_elf_high to calculate the value
- to use when looking for a preexisting GOT entry.
-
-1999-08-09 Jakub Jelinek <jj@ultra.linux.cz>
-
- * elf64-sparc.c (sparc64_elf_relocate_section): Back out part of
- the Sep. 4th, 1998 change. glibc 2.0.x dynamic linker had bug,
- not binutils.
- * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
-
-1999-08-09 Geoff Keating <geoffk@cygnus.com>
-
- * elflink.h (elf_link_output_extsym): Don't output a weak
- reference to an undefined symbol just because it was defined weak
- in a shared object.
-
-1999-08-09 Eli Zaretskii <eliz@is.elta.co.il>
-
- * coffgen.c (coff_find_nearest_line): When looking for file, use
- last best match rather than first. If address is beyond last line
- number record, don't return the last line as the correct value.
-
-1999-08-08 Ian Lance Taylor <ian@zembu.com>
-
- * section.c (SEC_SMALL_DATA): Rename from SEC_SHORT.
- * bfd-in2.h: Rebuild.
-
-1999-08-08 Mark Elbrecht <snowball3@bigfoot.com>
-
- * libcoff-in.h (struct coff_section_alignment_entry): Define.
- * coffcode.h (coff_set_custom_section_alignment): New static
- function.
- (coff_section_alignment_table): New static array.
- (coff_new_section_hook): Use coff_set_customer_section_alignment.
- * coff-go32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Define.
- * coff-stgo32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Define.
- * libcoff.h: Rebuild.
-
-1999-08-08 Ian Lance Taylor <ian@zembu.com>
-
- * Makefile.am: Rename .dep* files to DEP*. Change DEP variable to
- MKDEP.
- * Makefile.in: Rebuild.
-
-1999-08-08 Mumit Khan <khan@xraylith.wisc.edu>
-
- * section.c (SEC_SHARED): Define.
- * coffcode.h (sec_to_styp_flags): Handle SEC_SHARED.
- (styp_to_sec_flags): Likewise.
- * peicode.h (coff_swap_scnhdr_out): Likewise.
- * bfd-in2.h: Rebuild.
-
-1999-08-08 Ian Lance Taylor <ian@zembu.com>
-
- * coffcode.h (coff_classify_symbol): Comment out part of
- 1999-08-05 change which breaks cygwin DLLs.
-
- * acinclude.m4 (BFD_BINARY_FOPEN): Change -windows to -windows*.
- * aclocal.m4, configure: Rebuild.
-
-1999-08-06 Ian Lance Taylor <ian@zembu.com>
-
- * section.c (global_syms): Only initialize union field if
- __STDC__.
-
-1999-08-04 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (mips_elf_got16_entry): Don't multiply GOT index by
- the size of a GOT entry here.
- (mips_elf_calculate_relocation): Don't create a local GOT entry
- for the symbol in a GOT16 relocation; just for it's high-order bit
- (_bfd_mips_elf_relocate_section): Fix thinko.
-
-1999-08-05 Ian Lance Taylor <ian@zembu.com>
-
- Based on patches from Donn Terry <donn@interix.com>:
- * coffcode.h (enum coff_symbol_classification): Define.
- (bfd_coff_backend_data): Rename _bfd_coff_sym_is_global to
- _bfd_coff_classify_symbol. Change return type.
- (bfd_coff_classify_symbol): Rename from bfd_coff_sym_is_global.
- (coff_slurp_symbol_table): Use coff_classify_symbol.
- (coff_classify_symbol): New static function.
- (coff_sym_is_global): Never define.
- (bfd_coff_std_swap_table): Initialize with coff_classify_symbol.
- * cofflink.c (coff_link_check_ar_symbols): Use
- bfd_coff_classify_symbol rather than bfd_coff_sym_is_global.
- (coff_link_add_symbols): Likewise.
- (_bfd_coff_link_input_bfd): Likewise.
- * coff-sh.c (bfd_coff_small_swap_table): Initialize with
- coff_classify_symbol.
- * libcoff.h: Rebuild.
-
-Wed Aug 4 18:08:07 1999 Jeffrey A Law (law@cygnus.com)
-
- * libhppa.h (R_HPPA_LTPSEL, R_HPPA_RTPSEL): New field selectors
- (e_ltpsel, e_rtpsel): Similarly.
-
- * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Handle 21bit e_ltpsel
- and 14bit ertpsel. Handle 64bit psel.
-
-1999-08-04 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (_bfd_mips_elf_relocate_section): Tweak HI16/LO16
- handling for REL relocations. And only left-shift R_MIPS26
- relocation addends where necessary.
-
-1999-08-03 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (mips_elf_next_lo16_addend): Rename to ...
- (mips_elf_next_lo16_relocation): Don't compute the addend here.
- Just return the relocation found.
- (mips_elf_relocate_section): Pull the LO16 addend out of the
- section itself when using REL relocations.
-
- * elf32-mips.c (mips_elf_calculate_relocation): Restore
- _DYNAMIC_LINK handling and handling of undefined symbols in shared
- libraries.
-
-1999-08-03 Ian Lance Taylor <ian@zembu.com>
-
- * elf32-ppc.c (ppc_elf_relocate_section): Don't use the relocation
- value of a symbol in a SEC_DEBUGGING section. Warn when doing a
- relocation against a symbol in an input section with no output
- section. From Daniel Jacobowitz <drow@false.org>.
-
- * coff-stgo32.c (go32_stubbed_coff_object_p): Remove; not used.
-
- * acinclude.m4 (BFD_CC_FOR_BUILD): Change to use conftest, and to
- look for generated file correctly.
- * aclocal.m4, configure: Rebuild.
-
-1999-08-02 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (_bfd_mips_elf_relocate_section): Handle R_MIPS_26
- and R_MIPS16_26 relocations correctly when relocating.
- (_bfd_mips_elf_check_relocs): Don't assume that R_MIPS_CALL_HI16
- and R_MIPS_CALL_LO16 are for global symbols.
-
-1999-08-02 Jakub Jelinek <jj@ultra.linux.cz>
-
- * elflink.h (elf_bfd_final_link): Copy the whole isym, not just
- some fields.
- * elf64-sparc.c (sparc64_elf_output_arch_syms): Declare used
- variables and initialize them.
-
-1999-08-01 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (_bfd_mips_elf_final_link): Handle the case where
- there are no global symbols requiring GOT entries.
- (_bfd_mips_elf_size_dynamic_sections): Likewise.
- (_bfd_mips_elf_finish_dynamic_symbol): Likewise.
- (_bfd_mips_elf_finish_dynamic_sections): Likewise.
-
- * elf32-mips.c (mips_elf_calculate_relocation): Undefined weak
- symbols are considered to have the value zero.
- (_bfd_mips_elf_relocate_section): Don't try to perform a
- relocation for an undefined symbol.
- (_bfd_mips_elf_check_relocs): Allocate locate GOT space for local
- GOT16 relocations.
-
-1999-07-30 Jakub Jelinek <jj@ultra.linux.cz>
-
- * elf64-sparc.c (sparc64_elf_build_plt): Cosmetic change - ABI
- wants ba,a,pt %xcc instead of %icc.
- Emit correct .PLT0-(.PLTN+4) initial value into the pointer slots
- of large PLT entries.
- (sparc64_elf_plt_ptr_offset): Fix calculation.
- (sparc64_elf_finish_dynamic_symbol): Negative value of R_SPARC_JMP_SLOT
- addend should be relative to load address, not .plt section start.
- (sparc64_elf_size_info): Sparc64 uses 32bit .hash entries.
-
-1999-07-30 Jakub Jelinek <jj@ultra.linux.cz>
-
- * elf-bfd.h (struct elf_backend_data): Add
- print_symbol_all and output_arch_syms backend methods.
- * elfxx-target.h: Likewise.
- * elf64-sparc.c (sparc64_elf_bfd_link_hash_table_create,
- sparc64_elf_add_symbol_hook, sparc64_elf_output_arch_syms,
- sparc64_elf_get_symbol_type, sparc64_elf_symbol_processing): New
- functions.
- (sparc64_elf_size_dynamic_sections): Leave space for STT_REGISTER
- symbols in .dynsym, add their names into .dynstr. Put those symbols
- into dynlocal.
- (sparc64_elf_finish_dynamic_sections): Fix up DT_SPARC_REGISTER
- pointers to STT_REGISTER symbols in dynsym section.
- (sparc64_elf_print_symbol_all): New function.
- * elf.c (bfd_elf_print_symbol): Allow special backend symbol
- printing using the print_symbol_all hook.
-
-1999-07-30 Catherine Moore <clm@cygnus.com>
-
- * elf32-arm.h (elf32_arm_check_relocs): Use r_offset for
- R_ARM_GNU_VTENTRY.
-
-1999-07-29 Richard Henderson <rth@cygnus.com>
-
- * elf32-mips.c (_bfd_mips_elf_final_link): Only re-sort dynsyms if
- dynamic_sections_created.
-
-1999-07-29 Richard Henderson <rth@cygnus.com>
-
- * elf32-mips.c (mips_info_to_howto_rel): Split out switch to ...
- (mips_rtype_to_howto): ... new function.
- (_bfd_mips_elf_relocate_section): Use it.
-
-1999-07-28 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (_bfd_mips_elf_relocate_section): Fix typo.
-
-1999-07-27 Nick Clifton <nickc@cygnus.com>
-
- Patch generated by Bernd Schmidt. <bernds@cygnus.co.uk>
-
- * coff-arm.c (coff_arm_is_local_label_name): Change to strip
- out only symbols that start with LOCAL_LABEL_PREFIX followed by 'L'.
-
-1999-07-23 Donn Terry <donn@interix.com>
-
- * libcoff-in.h (coff_link_hash_entry): Add coff_link_hash_flags
- field, and define COFF_LINK_HASH_PE_SECTION_SYMBOL.
- * cofflink.c (coff_link_add_symbols): If PE, handle section
- symbols specially.
- * libcoff.h: Rebuild.
-
- * config.bfd (i[3456]86-*-interix*): New target.
-
-1999-07-21 Mark Elbrecht <snowball3@bigfoot.com>
-
- * coffcode.h (styp_to_sec_flags): If COFF_LONG_SECTION_NAMES and
- COFF_SUPPORT_GNU_LINKONCE, mark sections whose names begin with
- .gnu.linkonce with SEC_LINKONCE and SEC_LINK_DUPLICATES_DISCARD.
- * coff-go32.c: (COFF_LONG_SECTION_NAMES): Define.
- (COFF_SUPPORT_GNU_LINKONCE): Define.
- * coff-stgo32.c: (COFF_LONG_SECTION_NAMES): Define.
- (COFF_SUPPORT_GNU_LINKONCE): Define.
-
-1999-07-21 Ian Lance Taylor <ian@zembu.com>
-
- From Mark Elbrecht:
- * makefile.dos: Remove; obsolete.
- * configure.bat: Remove; obsolete.
-
-1999-07-21 H.J. Lu <hjl@gnu.org>
-
- * config.bfd (i[3456]86-*-vxworks*): Add targ_underscore=yes.
-
-1999-07-21 Philippe De Muyter <phdm@macqel.be>
-
- * cofflink.c (_bfd_coff_generic_relocate_section): Issue an error
- message and fail if a symbol index is out of range.
-
-1999-07-21 Ian Lance Taylor <ian@zembu.com>
-
- * elf32-mips.c (mips_elf_calculate_relocation): Get the GP value
- when looking at a R_MIPS_GOT16 relocation.
-
-1999-07-20 Nick Clifton <nickc@cygnus.com>
-
- * coff-m88k.c: Use CREATE_BIG_COFF_TARGET_VEC.
-
-Mon Jul 19 14:03:44 1999 Mark P. Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (_bfd_mips_elf_final_link): Restore setting of GP
- removed in previous change.
- (_bfd_mips_elf_relocate_section): Adjust GP relative relocations
- in relocateable output.
-
-1999-07-19 Ian Lance Taylor <ian@zembu.com>
-
- * coff-m88k.c (m88kbcs_vec): Initialize new field of bfd_target
- structure.
-
- * elflink.h (elf_merge_symbol): Do merge symbols from the same BFD
- if they appear to be specially created by the linker.
-
-1999-07-19 Nick Clifton <nickc@cygnus.com>
-
- * targets.c (alternative_target): New field in bfd_target
- structure.
- (bfd_search_for_target): New function: Find a target that
- satisifies a search function.
- * bfd-in2.h: Regenerate.
-
- * elfxx-target.h: Initialise the alternative_target field of
- the bfd_target structures to point to the other target (if
- defined).
- * nlm-target.h: Initialise the alternative_target field of
- the bfd_target structures to point to the other target (if
- defined).
-
- * coffcode.h (CREATE_BIG_COFF_TARGET_VEC): New macro.
- (CREATE_LITTLE_COFF_TARGET_VEC): New macro.
-
- * aix386-core.c: Initialise new field of bfd_target structure.
- * aout-adobe.c: Initialise new field of bfd_target structure.
- * aout-arm.c: Initialise new field of bfd_target structure.
- * aout-target.h: Initialise new field of bfd_target structure.
- * aout-tic30.c: Initialise new field of bfd_target structure.
- * binary.c: Initialise new field of bfd_target structure.
- * bout.c: Initialise new field of bfd_target structure.
- * cisco-core.c: Initialise new field of bfd_target structure.
- * coff-a29k.c: Use CREATE_BIG_COFF_TARGET_VEC.
- * coff-alpha.c: Initialise new field of bfd_target structure.
- * coff-apollo.c: Use CREATE_BIG_COFF_TARGET_VEC.
- * coff-arm.c: Use CREATE_{BIG|LITTLE}_COFF_TARGET_VEC.
- * coff-h8300.c: Use CREATE_BIG_COFF_TARGET_VEC.
- * coff-h8500.c: Use CREATE_BIG_COFF_TARGET_VEC.
- * coff-i386.c: Initialise new field of bfd_target structure.
- * coff-i860.c: Initialise new field of bfd_target structure.
- * coff-i960.c: Use CREATE_LITTLE_COFF_TARGET_VEC.
- * coff-m68k.c: Use CREATE_BIG_COFF_TARGET_VEC.
- * coff-mcore.c: Use CREATE_{BIG|LITTLE}_COFF_TARGET_VEC.
- * coff-mips.c: Initialise new field of bfd_target structure.
- * coff-ppc.c: Initialise new field of bfd_target structure.
- * coff-rs6000.c: Initialise new field of bfd_target structure.
- * coff-sh.c: Use CREATE_{BIG|LITTLE}_COFF_TARGET_VEC.
- * coff-sparc.c: Use CREATE_BIG_COFF_TARGET_VEC.
- * coff-tic30.c: Initialise new field of bfd_target structure.
- * coff-tic80.c: Use CREATE_LITTLE_COFF_TARGET_VEC.
- * coff-w65.c: Use CREATE_LITTLE_COFF_TARGET_VEC.
- * coff-we32k.c: Use CREATE_BIG_COFF_TARGET_VEC.
- * coff-z8k.c: Use CREATE_BIG_COFF_TARGET_VEC.
- * hppabsd-core.c: Initialise new field of bfd_target structure.
- * hpux-core.c: Initialise new field of bfd_target structure.
- * i386msdos.c: Initialise new field of bfd_target structure.
- * i386os9k.c: Initialise new field of bfd_target structure.
- * ieee.c: Initialise new field of bfd_target structure.
- * ihex.c: Initialise new field of bfd_target structure.
- * irix-core.c: Initialise new field of bfd_target structure.
- * mipsbsd.c: Initialise new field of bfd_target structure.
- * netbsd-core.c: Initialise new field of bfd_target structure.
- * oasys.c: Initialise new field of bfd_target structure.
- * osf-core.c: Initialise new field of bfd_target structure.
- * ppcboot.c: Initialise new field of bfd_target structure.
- * ptrace-core.c: Initialise new field of bfd_target structure.
- * sco5-core.c: Initialise new field of bfd_target structure.
- * som.c: Initialise new field of bfd_target structure.
- * srec.c: Initialise new field of bfd_target structure.
- * tekhex.c: Initialise new field of bfd_target structure.
- * trad-core.c: Initialise new field of bfd_target structure.
- * versados.c: Initialise new field of bfd_target structure.
- * vms.c: Initialise new field of bfd_target structure.
-
-1999-07-19 Andreas Schwab <schwab@suse.de>
-
- * elflink.h (elf_bfd_final_link): Remove unused variables rel_hash
- and rel_hdr.
-
-Sat Jul 17 02:28:28 1999 Mark P. Mitchell <mark@codesourcery.com>
-
- * elflink.h (elf_link_adjust_relocs): New function.
- (elf_bfd_final_link): Use it.
- (elf_link_input_bfd): Deal with the fact that there can be
- two relocation sections for a single section.
- (elf_reloc_link_order): Likewise.
-
- * elf32-mips.c (_bfd_mips_elf_final_link): Don't set GP for
- a relocateable object.
- (_bfd_mips_elf_relocate_section): Handle relocateable links.
-
-1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
-
- * elf64-sparc.c (sparc64_elf_info_to_howto): Use ELF64_R_TYPE_ID.
- (sparc64_elf_get_reloc_upper_bound,
- sparc64_elf_get_dynamic_reloc_upper_bound,
- sparc64_elf_slurp_one_reloc_table, sparc64_elf_slurp_reloc_table,
- sparc64_elf_canonicalize_dynamic_reloc, sparc64_elf_write_relocs):
- New functions.
- (sparc64_elf_check_relocs, sparc64_elf_relocate_section): Use
- ELF64_R_TYPE_ID/DATA where appropriate.
-
-1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
-
- * elf64-sparc.c (sparc64_elf_size_dynamic_sections): Remove
- DT_SPARC_PLTFMT.
-
-1999-07-16 Ian Lance Taylor <ian@zembu.com>
-
- * elf32-mips.c (mips_elf_local_relocation_p): New static
- function.
- (mips_elf_next_lo16_addend): Call bfd_set_error on failure.
- (mips_elf_calculate_relocation): Use mips_elf_local_relocation_p.
- Always set *require_jalxp.
- (mips_elf_stub_section_p): Mark abfd parameter as unused.
- (_bfd_mips_elf_relocate_section): Only look for LO16 following
- GOT16 if the GOT16 is against a local symbol. Don't return false
- for an undefined symbol. If there is an overflow, assert that we
- have a name.
-
-1999-07-16 Andreas Schwab <schwab@suse.de>
-
- * elflink.h (elf_link_record_local_dynamic_symbol): Remove unused
- variables `link' and `elfsec'.
- (elf_bfd_final_link): Remove unused variable `os'.
-
-Thu Jul 15 17:55:31 1999 Mark P. Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (_bfd_mips_elf_modify_segment_map): Don't require
- a PT_PHDR program headers.
- (_bfd_mips_elf_final_link): Don't assume there are going to be
- section symbols when we're not building a shared object.
- (_bfd_mips_elf_check_relocs): Make sure we have a GOT when
- we need one.
-
-1999-07-15 J.T. Conklin <jtc@redback.com>
-
- * config.bfd (i[3456]86-*-vxworks*): New target.
-
-1999-07-15 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (mips_elf_stub_section_p): New function.
- (mips_elf_calculate_relocation): Handle MIPS16 stub functions.
- (mips_elf_relocate_section): Adjust calling sequence for
- mips_elf_calculate_relocation and mips_elf_perform_relocation.
- (mips_elf_perform_relocation): Turn `jal' into `jalx' where
- required.
-
-1999-07-15 Ian Lance Taylor <ian@zembu.com>
-
- * configure.in: Bump version number to 2.9.5.
- * configure: Rebuild.
-
-Thu Jul 15 02:56:15 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type, case R_HPPA): Handle
- 64bit format.
- (_bfd_elf_hppa_gen_reloc_type, case R_GOTOFF): Use base reloc type
- to derive final type instead of hardwiring a selection.
-
-1999-07-14 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (mips_elf_obtain_contents): Swap 16-bit halves of
- things relocated by R_MIPS16_GPREL.
- (mips_elf_perform_relocation): Likewise.
-
-Wed Jul 14 15:23:19 1999 Jim Wilson <wilson@cygnus.com>
-
- * elfxx-target.h (elfNN_bed): Add elf_backend_want_dynbss.
-
-1999-07-14 Richard Henderson <rth@cygnus.com>
-
- * elf32-mips.c (struct mips_got_info): Add global_gotno.
- (_bfd_mips_elf_size_dynamic_sections): Set it.
- (_bfd_mips_elf_final_link): Re-sort; verify the got did not grow.
- (mips_elf_sort_hash_table): Set max_non_got_dynindex based off
- new argument max_local.
-
-1999-07-14 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (mips_elf_obtain_contents): Swap the 16-bit
- subwords when handling an R_MIPS16_26 relocation.
- (mips_elf_perform_relocation): Don't be paranoid abour right-shift
- semantics.
-
- * elf32-mips.c (elf_mips16_gprel_howto): Adjust src_mask and
- dst_mask to match reality.
- (_bfd_mips_elf_calculate_relocation): Handle R_MIPS16_GPREL.
- (mips_elf_obtain_contents): Use bfd_get.
- (mips_elf_perform_relocation): Handle R_MIPS16_GPREL.
- (mips_elf_relocate_section): Likewise.
-
-1999-07-13 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (mips_elf_calculate_relocation): Handle R_MIPS16_26.
- (mips_elf_relocate_section): Adjust calling sequence for
- mips_elf_perform_relocation.
- (mips_elf_perform_relocation): Take additional argument. Handle
- R_MIPS16_26. Use bfd_put for convenience.
-
-1999-07-13 Richard Henderson <rth@cygnus.com>
-
- * elf.c (assign_file_positions_for_segments): Thinko last change.
- Always overwrite p_flags.
-
-1999-07-13 Richard Henderson <rth@cygnus.com>
-
- * elf-bfd.h (struct elf_backend_data): Add want_dynbss.
- * elflink.c (_bfd_elf_create_dynamic_sections): Only create
- .dynbss and .rel[a].bss if want_dynbss.
- * elfxx-target.h (elf_backend_want_dynbss): Provide default.
-
-1999-07-13 Richard Henderson <rth@cygnus.com>
-
- * elf.c (assign_file_positions_for_segments): Don't overwrite p_flags.
-
-1999-07-13 Richard Henderson <rth@cygnus.com>
-
- * elf-bfd.h (struct elf_link_local_dynamic_entry): New.
- (struct elf_link_hash_table): Add dynlocal.
- (_bfd_elf_link_lookup_local_dynindx): Prototype.
- (_bfd_elf_link_adjust_dynindx): Delete.
- (_bfd_elf_link_renumber_dynsyms): Prototype.
- (_bfd_elf,link_record_local_dynamic_symbol): Prototype.
- * elfcode.h (elf_link_record_local_dynamic_symbol): New alias.
- * elflink.c (_bfd_elf_link_adjust_dynindx): Delete.
- (_bfd_elf_link_lookup_local_dynindx): New function.
- (elf_link_renumber_hash_table_dynsyms): New function.
- (_bfd_elf_link_renumber_dynsyms): New function.
- * elflink.h (elf_link_record_local_dynamic_symbol): New function.
- (struct elf_assign_sym_version_info): Delete removed_dynamic.
- (bfd_elf,size_dynamic_sections): Use _bfd_strip_section_from_output
- instead of elf_link_remove_section_and_adjust_dynindices.
- Remove removed_dynamic code. Use _bfd_elf_link_renumber_dynsyms.
- (elf_link_assign_sym_version): Remove removed_dynamic code.
- (elf_link_renumber_dynsyms): Delete.
- (elf_bfd_final_link): Install section and local symbols into .dynsym.
-
- * elf32-m68k.c (elf_m68k_adjust_dynindx): Delete.
- (elf_m68k_size_dynamic_sections): Don't set section dynindicies.
- (elf_m68k_finish_dynamic_sections): Don't write section dynsyms.
- * elf32-mips.c: Similarly.
- * elf32-ppc.c: Similarly.
- * elf32-sparc.c: Similarly.
- * elf64-alpha.c: Similarly.
- * elf64-sparc.c: Similarly.
-
-1999-07-13 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (mips_elf_calculate_relocation): Do not complain
- when _gp_disp is undefined. Do not check R_MIPS_LO16 for overflow
- when the relocation is against _gp_disp.
-
-1999-07-12 Mark Mitchell <mark@codesourcery.com>
-
- * dwarf2.c (read_attribute): Support DW_FORM_ref8.
- * elf32-mips.c (mips_elf_link_hash_entry): Change mips_32_relocs
- to possibly_dynamic_relocs. Adjust usage throughout code.
- (elf_mips_howto_table): Handle R_MIPS_64 correctly.
- (elf_mips_ctor64_howto): Likewise.
- (mips_elf_calculate_relocation): Handle R_MIPS_64 like R_MIPS_32.
- Adjust indentation.
- (mips_elf_relocate_section): Handle R_MIPS_64 in 32-bit mode.
- (_bfd_mips_elf_check_relocs): Handle R_MIPS_64 like R_MIPS_32.
- Use MIPS_ELF_GOT_SIZE to calculate the size of GOT entries.
- * elf64-mips.c (elf_backend_may_use_rel_p): Define.
-
-1999-07-12 Ian Lance Taylor <ian@zembu.com>
-
- * Makefile.am: Rebuild dependencies.
- * Makefile.in: Rebuild.
-
- * bfd-in.h: Remove tests of COFF_IMAGE_WITH_PE.
- * bfd-in2.h: Rebuild.
-
- * Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
- as appropriate. Use EMPTY_HOWTO as appropriate. Fill in
- structure initializations. Add casts.
- * reloc.c (EMPTY_HOWTO): Define.
- * bfd-in2.h: Rebuild.
- * coff-h8300.c (h8300_reloc16_extra_cases): Remove useless
- comparisons against 0.
- * elf32-sparc.c (elf32_sparc_merge_private_bfd_data): Change
- previous_ibfd_e_flags to unsigned long.
- * vms.h (struct vms_private_data_struct): Change section_count to
- unsigned.
- * vms-gsd.c (_bfd_vms_slurp_gsd): Change psect_idx to unsigned.
- (_bfd_vms_write_gsd): Change symnum to unsigned.
- * vms-hdr.c (_bfd_vms_write_hdr): Change symnum to unsigned.
- * vms-tir.c (etir_sta): Change psect to unsigned.
- (alloc_section): Change idx to unsigned.
- (tir_sta, tir_ctl): Change psect to unsigned.
- (_bfd_vms_write_tir): Change len and before to bfd_size_type.
- * vms.c (priv_section_count): Change to unsigned.
-
-1999-07-12 Andreas Schwab <schwab@suse.de>
-
- * elf32-m68k.c: Add some ATTRIBUTE_UNUSED.
- * m68klinux.c: Likewise.
-
-1999-07-12 Ian Lance Taylor <ian@zembu.com>
-
- * Many files: Changes to avoid gcc warnings: Remove unused local
- variables. Add default case to enum switches.
- * coff-arm.c (bfd_arm_allocate_interworking_sections): Only
- compile if not COFF_IMAGE_WITH_PE.
- (record_arm_to_thumb_glue, record_thumb_to_arm_glue): Likewise.
- (bfd_arm_get_bfd_for_interworking): Likewise.
- (bfd_arm_process_before_allocation): Likewise.
- * epoc-pei-arm.c: Don't rename bfd_arm functions.
- * pei-arm.c: Likewise.
- * elf32-mips.c (mips_elf_link_hash_table_create): Don't declare.
- (MIPS_ELF_ADD_DYNAMIC_ENTRY): Correct last change.
- (mips_elf_got16_entry): Put parens around & in body of ==.
- (mips_elf_calculate_relocation): Correct test for empty string.
- * vms-gsd.c: Use _bfd_error_handler rather than fprintf to
- stderr.
- * vms-misc.c (_bfd_vms_length_hash_symbol): Correct sprintf
- format.
-
-1999-07-11 Ian Lance Taylor <ian@zembu.com>
-
- * Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
- as appropriate. Fill in structure initializations. Add variable
- initializations. Add casts.
- * dwarf1.c (parse_line_table): Change eachLine to unsigned long.
- (dwarf1_unit_find_nearest_line): Change i to unsigned long.
-
- * elf.c (bfd_elf_hash): Change parameter from unsigned char * to
- char *.
- * elf-bfd.h (bfd_elf_hash): Update declaration.
- * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Remove casts
- when calling bfd_elf_hash.
-
-1999-07-11 Mark Mitchell <mark@codesourcery.com>
-
- * libbfd.c (bfd_put_8): Make it of type `void'.
- * bfd-in2.h: Regenerated.
- * elf32-mips.c (MIPS_ELF_ADD_DYNAMIC_ENTRY): Conditionalize
- for 32-bit hosts.
- (_bfd_mips_elf_final_link): Likewise.
-
- * elflink.h (elf_link_read_relocs_from_section): Be type-correct.
-
-Thu Jul 8 12:32:23 1999 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * config.bfd (hppa*-*-linux-gnu*): New target
-
-1999-07-07 Mark Mitchell <mark@codesourcery.com>
-
- * elf-bfd.h (_bfd_mips_elf_section_from_shdr): Constify.
- (_bfd_mips_elf_create_dynamic_sections): New function.
- (_bfd_mips_elf_add_symbol_hook): Likewise.
- (_bfd_mips_elf_adjust_dynamic_symbol): Likewise.
- (_bfd_mips_elf_finish_dynamic_symbol): Likewise.
- (_bfd_mips_elf_finish_dynamic_sections): Likewise.
- (_bfd_mips_elf_gc_mark_hook): Likewise.
- (_bfd_mips_elf_gc_sweep_hook): Likewise.
- (_bfd_mips_elf_always_size_sections): Likewise.
- (_bfd_mips_elf_size_dynamic_sections): Likewise.
- (_bfd_mips_elf_check_relocs): Likewise.
- (_bfd_mips_elf_link_hash_table_create): Likewise.
- (_bfd_mips_elf_print_private_data): Likewise.
- (_bfd_mips_elf_link_output_symbol_hook): Likewise.
- (_bfd_mips_elf_final_link): Likewise.
- (_bfd_mips_elf_additional_program_headers): Likewise.
- (_bfd_mips_elf_modify_segment_map): Likewise.
- (_bfd_mips_elf_relocate_section): Likewise.
- * elf32-mips.c (mips_elf32_object_p): Move contents into
- _bfd_mips_elf_object_p.
- (mips_elf_additional_program_headers): Rename to
- _bfd_mips_elf_additional_program_headers.
- (mips_elf_modify_segment_map): Rename to
- _bfd_mips_elf_modify_segment_map.
- (elf_mips_abi_name): Change prototype.
- (mips_elf32_section_from_shdr): Merge into
- _bfd_mips_elf_section_from_shdr.
- (mips_elf32_section_processing): Merge into
- _bfd_mips_elf_section_processing.
- (mips_elf_final_link): Rename to _bfd_mips_elf_final_link. Invoke
- the right back-end ELF linker.
- (mips_elf_relocate_section): Rename to
- _bfd_mips_elf_relocate_section. Clean up. Adjust for 64-bit code.
- (mips_elf_link_output_symbol_hook): Rename to
- _bfd_mips_elf_link_output_symbol_hook.
- (mips_elf_create_dynamic_section): Rename to
- _bfd_mips_elf_create_dynamic_section.
- (mips_elf_check_relocs): Rename to _bfd_mips_elf_check_relocs.
- Adjust for 64-bit code. Use mips_elf_got_section.
- (mips_elf_adjust_dynamic_symbol): Rename to
- _bfd_mips_elf_adjust_dynamic_symbol. Use
- mips_elf_allocate_dynamic_relocations.
- (mips_elf_finish_dynamic_symbol): Rename to
- _bfd_mips_elf_finish_dynamic_symbol. Use mips_elf_got_section.
- Adjust for 64-bit code.
- (mips_elf_finish_dynamic_sections): Rename to
- _bfd_mips_elf_finish_dynamic_sections. Adjust for 64-bit code.
- (mips_elf_always_size_sections): Rename to
- _bfd_mips_elf_always_size_sections.
- (mips_elf_add_symbol_hook): Rename to
- _bfd_mips_elf_add_symbol_hook.
- (mips_elf_next_lo16_addend): Constify.
- (mips_elf_calculate_relocation): Likewise.
- (mips_elf_obtain_contents): Likewise.
- (mips_elf_perform_relocation): Likewise.
- (mips_elf_create_dynamic_relocation): Likewise.
- (mips_elf_allocate_dynamic_relocations): New function.
- (MIPS_ELF_REL_DYN_SECTION_NAME): New macro.
- (MIPS_ELF_REL_SIZE): Likewise.
- (MIPS_ELF_DYN_SIZE): Likewise.
- (MIPS_ELF_GOT_SIZE): Likewise.
- (MIPS_ELF_SYM_SIZE): Likewise.
- (MIPS_ELF_LOG_FILE_ALIGN): Likewise.
- (MIPS_ELF_GET_WORD): Likewise.
- (MIPS_ELF_PUT_WORD): Likewise.
- (MIPS_ELF_ADD_DYNAMIC_ENTRY): Likewise.
- (STUB_LW): Conditionalize for 64-bit value.
- (elf_mips_howto_table): Add R_MIPS_HIGHER and R_MIPS_HIGHEST
- entries.
- (_bfd_mips_elf_merge_private_bfd_data): Merge e_ident[EI_CLASS].
- Check it for inconsistency.
- (_bfd_mips_elf_print_private_bfd_data): Print ABI=64 for 64-bit
- ABI.
- (_bfd_mips_elf_fake_sections): Remove duplicate handling of
- .msym.
- (mips_elf_global_got_index): Use MIPS_ELF_GOT_SIZE.
- (mips_elf_got_offset_from_index): Use misp_elf_got_section.
- (mips_elf_create_local_got_entry): Use MIPS_ELF_GOT_SIZE.
- (mips_elf_local_got_index): Likewise.
- (mips_elf_got_page): Likewise.
- (mips_elf_got_info): Likewise.
- (mips_elf_create_dynamic_relocation): Handle 32-bit/64-bit split.
- (ELF_DYNAMIC_INTERPRETER): Handle 64-bit code.
- (mips_elf_create_dynamic_sections): Use MIPS_ELF_LOG_FILE_ALIGN,
- instead of constant `2'.
- (mips_elf_create_got_section): Tidy. Use MIPS_ELF_GOT_SIZE.
- (mips_elf_create_msym_section): Use MIPS_ELF_LOG_FILE_ALIGN.
- (mips_elf_size_dynamic_sections): Use
- MIPS_ELF_REL_DYN_SECTION_NAME, MIPS_ELF_GOT_SIZE,
- MIPS_ELF_ADD_DYNAMIC_ENTRY. Remove #if 0'd code.
- Adjust all releveant entries in elf backend table.
- * elf64-mips.c (mips_elf64_section_from_shdr): Remove.
- (mips_elf64_section_processing): Likewise.
- Adjust elf backend entries to use _bfd_mips_elf variants now
- publicly available.
-
- * elflink.h (elf_link_create_dynamic_sections): Handle non-standard
- hash-entry sizes.
- (size_dynamic_sections): Likewise.
- (elf_link_output_extsym): Likewise.
- * elf.c: (elf_fake_sections): Likewise.
- * libbfd.c (bfd_get): New macro.
- (bfd_put): Likewise.
- * bfd-in2.h: Regenerated.
-
-1999-07-07 Mark Mitchell <mark@codesourcery.com>
-
- * elf-bfd.h (elf_size_info): Add hash_entry_size,
- int_rels_per_ext_rel, swap_dyn_out, swap_reloc_in, swap_reloc_out,
- wap_reloca_in, and swap_reloca_out.
- * elflink.h (elf_link_read_relocs_from_section): Adjust to handle
- multiple internal relocations per external relocation.
- (link_read_relocs): Likewise.
- (elf_bfd_final_link): Likewise.
- (elf_link_input_bfd): Likewise.
- (elf_gc_mark): Likewise.
- (elf_gc_smash_unused_vtentry_relocs): Likewise.
- * elfcode.h (elf_swap_dyn_out): Adjust type to match
- elf_swap_dyn_in.
- (size_info): Add entries for new fields.
- * elf64-mips.c (mips_elf64_swap_reloc_out): Enable.
- (mips_elf64_be_swap_reloc_in): New function.
- (mips_elf64_be_swap_reloc_out): Likewise.
- (mips_elf64_be_swap_reloca_in): Likewise.
- (mips_elf64_be_swap_reloca_out): Likewise.
- (mips_elf64_size_info): Add entries for new fields.
-
-1999-07-07 Ian Lance Taylor <ian@zembu.com>
-
- * elflink.h (elf_bfd_final_link): Assert that section reloc_count
- field equals the new rel_count field.
- (elf_link_input_bfd): When doing a relocateable link, use the new
- rel_count field rather than the reloc_count field.
- (elf_reloc_link_order): Likewise.
- (elf_finish_pointer_linker_section): Likewise.
-
- Based on patch from H.J. Lu <hjl@gnu.org>:
- * elflink.h (elf_merge_symbol): Permit a non-weak definition in a
- shared library to override a weak definition in a regular object.
-
-Tue Jul 6 10:23:39 1999 Jeffrey A Law (law@cygnus.com)
-
- * libhppa.h: Revert July 2, 1999 patch.
-
- * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): T mode selectors
- need to generate DLTIND relocations, not DLTREL relocations.
-
-1999-07-05 Nick Clifton <nickc@cygnus.com>
-
- * coffcode.h (coff_set_arch_mach_hook): Recognise arm 5
- architectures.
- (coff_set_flags): Recognise arm 5 architectures.
-
- * cpu-arm.c: Add support for strongarm and arm9 cpus.
- Add support for armv5 architecture.
-
- * archures.c: Add bfd_mach_arm_5 and bfd_mach_arm_5T.
-
- * reloc.c: Add new, assembler only, ARM reloc:
- BFD_RELOC_ARM_ADRL_IMMEDIATE.
-
- * bfd-in2.h: Regenerate.
-
-1999-07-02 Mark Mitchell <mark@codesourcery.com>
-
- * dwarf2.c (parse_comp_unit): Add ABBREV_LENGTH parameter.
- (_bfd_dwarf2_find_nearest_line): Add ADDR_SIZE parameter.
- * elf.c (_bfd_elf_find_nearest_line): Pass it.
- * elf32-arm.h (elf32_arm_find_nearest_line): Likewise.
- * elf32-mips.c (ABI_64_P): New macro.
- (IRIX_COMPAT): We are IRIX6-compatible if ABI_64_P.
- (_bfd_mips_elf_find_nearest_line): Adjust call to
- _bfd_dwarf2_find_nearest_line.
- * libbfd-in.h (_bfd_dwarf2_find_nearest_line): Update prototype.
- * libbfd.h: Regenerated.
-
-1999-07-02 Ian Lance Taylor <ian@zembu.com>
-
- * config.bfd: Add * at the end of i[3456]86-*-unixware.
-
-Fri Jul 2 12:21:10 1999 Jeffrey A Law (law@cygnus.com)
-
- * libhppa.h (HPPA_R_ARG_RELOC): Delete.
- (HPPA_R_CONSTANT, HPPA_R_ADDEND): Likewise.
-
-1999-07-01 Mark Mitchell <mark@codesourcery.com>
-
- * elf-bfd.h (bfd_elf_section_data): Add rel_count and rel_count2
- fields.
- (_bfd_elf_init_reloc_shdr): New function.
- * elf.c (_bfd_elf_new_section_hook): Use bfd_zalloc, rather than
- bfd_alloc followed by memset.
- (_bfd_elf_init_reloc_shdr): New function, split out from ...
- (elf_fake_sections): Here.
- (assign_section_numbers): Assign section numbers for the second
- relocation section, if required.
- * elflink.h (elf_link_output_relocs): New function.
- (elf_link_size_reloc_section): Likewise.
- (elf_bfd_final_link): Use elf_link_size_reloc_section.
- (elf_link_input_bfd): Use elf_link_output_relocs.
-
- * elf32-mips.c (_bfd_mips_elf_fake_sections): Use
- _bfd_elf_init_reloc_shdr to initialize rel_hdr2.
-
-Thu Jul 1 13:58:48 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Handle R_PCREL_CALL
- with 22bit format.
-
-1999-06-28 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (mips_elf_got_info): Move declaration before
- prototypes. Change global_gotsym to be a pointer to a hash entry,
- rather than a number index.
- (mips_elf_link_hash_entry): Move declaration before prototypes.
- (mips_elf_irix6_finish_dynamic_symbol): New function.
- (mips_elf_sign_extend): Likewise.
- (mips_elf_high): Likewise.
- (mips_elf_higher): Likewise.
- (mips_elf_highest): Likewise.
- (mips_elf_global_got_index): Likewise.
- (mips_elf_local_got_index): Likewise.
- (mips_elf_got_offset_from_index): Likeiwse.
- (mips_elf_record_global_got_symbol): Likewise.
- (mips_elf_got_page): Likewise.
- (mips_elf_next_lo16_addend): Likewise.
- (mips_elf_calculate_relocation): Likewise.
- (mips_elf_obtain_contents): Likewise.
- (mips_elf_perform_relocation): Likewise.
- (mips_elf_assign_gp): Likewise.
- (mips_elf_sort_hash_table_f): Likewise.
- (mips_elf_sort_hash_table): Likewise.
- (mips_elf_got_section): Likewise.
- (mips_elf_got_info): Likewise.
- (mips_elf_create_local_got_entry): Likewise.
- (mips_elf_got16_entry): Likewise.
- (mips_elf_create_dynamic_relocation): Likewise.
- (elf_mips_howto_table): Add description of R_MIPS_SCN_DISP.
- (mips_elf_final_gp): Use mips_elf_assign_gp.
- (_bfd_mips_elf_symbol_processing): Don't move SHN_COMMON symbols
- into SHN_SCOMMON automatically on IRIX6.
- (mips_elf_add_symbol_hook): Likewise.
- (mips_elf_relocate_section): Rewrite, using
- mips_elf_calculate_relocation and mips_elf_perform_relocation.
- (mips_elf_create_dynamic_section): Use MIPS_ELF_STUB_SECTION_NAME.
- Don't deal with .rld_map on IRIX6.
- (mips_elf_create_got_section): Adjust use of global_gotsym. Set
- section flags appropriately for .got.
- (mips_elf_check_relocs): Handle IRIX6 relocations making use of
- the got. Call mips_elf_record_global_got_symbol and allocate
- local got space appropriately.
- (mips_elf_size_dynamic_sections): Use bfd_byte *, not unsigned
- char *. Rework calculation of GOT size. Sort dynamic symbol
- table entries so entries that do not require GOT entries appear at
- the beginning. Don't use DT_MIPS_HIPAGENO on IRIX6. Remove dead
- code dealing with DT_INIT and DT_FINI. Remove fiddling with
- global_gotsym.
- (mips_elf_finish_dynamic_symbol): Adjust creation of global GOT
- entries.
- (mips_elf_finish_dynamic_symbol): Use
- mips_elf_irix6_finish_dynamic_symbol.
- (mips_elf_finish_dynamic_sections): Correct off-by-one error
- setting DT_MIPS_UNREFEXTNO. Adjust setting of DT_MIPS_GOTSYM for
- change to global_gotsym. Set DT_MIPS_OPTIONS on IRIX6.
-
-1999-06-30 Ian Lance Taylor <ian@zembu.com>
-
- * elf32-mips.c (mips_elf_final_link): Don't set CPIC when doing a
- relocateable link. From Ralf Baechle <ralf@uni-koblenz.de>.
-
-1999-06-04 Philip Blundell <philb@gnu.org>
-
- * elf32-arm.h (elf_backend_got_header_size): Define.
- (elf_backend_plt_header_size): Likewise.
-
-1999-06-28 Jim Pick <jim@jimpick.com>
-
- * elf32-arm.h (elf32_arm_relocate_section): Mind no_undefined
-
-Tue Jun 29 02:25:03 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.c (elf_hppa_howto_table): Use bfd_elf_generic_reloc as
- relocation function.
- * elf32-hppa.c (hppa_elf_reloc): Kill unused/unwanted function.
-
-1999-06-27 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (MIPS_ELF_SRDATA_SECTION_NAME): New macro.
- (MIPS_ELF_OPTIONS_SECTION_NAME): Likewise.
- (MIPS_ELF_STUB_SECTION_NAME): Likewise.
- (_bfd_mips_elf_section_from_shdr): Use them.
- (_bfd_mips_elf_fake_sections): Likewise. Add .srdata to the list
- of GP-relative sections.
- (_bfd_mips_elf_set_section_contents): Use them.
- (_bfd_mips_elf_section_processing): Share code between .sdata and
- .lit4/.lit8 sections. Set appropriate flags for .srdata.
- (mips_elf_additional_program_headers): Add handling for
- PT_MIPS_OPTIONS segment on IRIX6.
- (mips_elf_modify_segment_map): Likeiwse.
- (mips_elf_final_link): Set EF_MIPS_CPIC when required by the ABI.
- Include the options sections on IRIX6. Don't look for GP-relative
- sections by name; use SHF_MIPS_GPREL instead.
- (ELF_DYNAMIC_INTERPRETER): Adjust to use /usr/lib32/libc.so.1 for
- the N32 ABI.
- (mips_elf_create_dynamic_sections): Don't muck about with section
- alignments and such on IRIX6.
- (mips_elf_adjust_dynamic_symbol): Use MIPS_ELF_STUB_SECTION_NAME.
- (mips_elf_size_dynamic_sections): Likewise. Adjust to handle the
- fact that ELF_DYNAMIC_INTERPRETER is no longer a constant. Use
- bfd_zalloc rather than bfd_alloc and memset.
- (mips_elf_finish_dynamic_symbol): Use MIPS_ELF_STUB_SECTION_NAME.
- Don't assert the existence of .rld_map on IRIX6.
- (mips_elf_finish_dynamic_sections): Use MIPS_ELF_STUB_SECTION_NAME.
-
- * elf32-mips.c (mips_elf_adjust_dynindx): Remove.
- (mips_elf_size_dynamic_sections): Use _bfd_elf_link_adjust_dynindx
- instead.
-
-1999-06-26 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (mips_elf_swap_msym_in): New function.
- (mips_elf_swap_msym_out): New function.
- (mips_elf_create_msym_section): Likewise.
- (MIPS_ELF_MSYM_SECTION_NAME): New macro.
- (_bfd_mips_elf_final_write_processing): Set sh_link for .msym.
- (_bfd_mips_elf_section_from_shdr): Reject an SHT_MIPS_MSYM
- section not named .msym.
- (_bfd_mips_elf_fake_sections): Use MIPS_ELF_MSYM_SECTION_NAME, not
- .msym directly. Set appropriate attributes for the .msym
- section.
- (mips_elf_link_hash_entry): Add min_dyn_reloc_index field.
- (mips_elf_link_hash_newfunc): Clear it.
- (mips_elf_create_dynamic_sections): Create the .msym section
- on IRIX6.
- (mips_elf_size_dynamic_sections): Allocate space for the
- .msym section. Add a DT_MIPS_MSYM entry.
- (mips_elf_finish_dynamic_symbol): Write out a .msym entry for
- the symbol.
- (mips_elf_finish_dynamic_sections): Assign a value for
- DT_MIPS_MSYM. Add .msym entries for the section symbols as well.
-
- * elf32-mips.c (irix_compat_t): New enumeration.
- (ABI_N32_P): New macro.
- (IRIX_COMPAT): Likewise.
- (SGI_COMPAT): Implement in terms of IRIX_COMPAT.
- (mips_elf_relocate_section): Fix typo.
-
-1999-06-26 Mumit Khan <khan@xraylith.wisc.edu>
-
- * peicode.h (coff_swap_scnhdr_out): Mark non readonly BFD sections
- as writable PE sections.
-
-1999-06-26 David Mosberger <davidm@hpl.hp.com>
-
- * dwarf2.c (struct arange): New type.
- (struct comp_unit): Replace LOW and HIGH by member ARANGE.
- (arange_add): New function.
- (decode_line_info): Keep track of address ranges that a compilation
- unit covers.
- (comp_unit_contains_address): Return true if address is contained
- in _any_ of the address ranges associated with a compilation unit.
- (_bfd_dwarf2_find_nearest_line): Call comp_unit_find_nearest_line
- on the first comp_unit that contains the address.
-
-1999-06-26 David Mosberger <davidm@hpl.hp.com>
-
- * dwarf2.c (struct dwarf2_debug): Add member dwarf_line_buffer.
- (decode_line_info): Add variable STASH and initialize it to point
- to the per-bfd dwarf2_debug info. Remove static variable
- dwarf_line_buffer and use stash->dwarf_line_buffer in its place.
-
-1999-06-26 Ian Lance Taylor <ian@zembu.com>
-
- * elflink.h (elf_link_output_extsym): It's OK for a -Bsymbolic
- shared library to have an undefined symbol.
-
- From Franz Sirl <Franz.Sirl-kernel@lauterbach.com>:
- * elf32-ppc.c (ppc_elf_relocate_section): Fix last patch.
-
-Thu Jun 24 20:59:11 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.c (elf_hppa_final_write_processing): New function.
- * elf32-hppa.c: Remove everything related to symbol extension
- sections & records. Use the common elf_hppa_final_write_processing.
-
-1999-06-22 Mark Mitchell <mark@codesourcery.com>
-
- * elflink.h (size_dynamic_sections): Use user-specified init/fini
- functions instead of _init/_fini if requested.
-
-1999-06-23 Ian Lance Taylor <ian@zembu.com>
-
- * elf.c (bfd_section_from_shdr): Avoid crashing on a bogus sh_link
- field.
-
-1999-06-22 Ian Lance Taylor <ian@zembu.com>
-
- From Franz Sirl <Franz.Sirl-kernel@lauterbach.com>:
- * elf32-ppc.c (ppc_elf_size_dynamic_sections): Set unused dynindx
- field to 0, not -1.
- (ppc_elf_finish_dynamic_sections): Check for positive section
- dynindx field, rather than comparing against -1.
- (ppc_elf_relocate_section): Only return false if undefined_symbol
- or reloc_overflow fail, not always upon encountering an error.
-
-1999-06-22 Mark Mitchell <mark@codesourcery.com>
-
- * elflink.h (link_read_relocs): Explicitly cast external_relocs to
- bfd_byte * before performing pointer arithmetic.
-
-Tue Jun 22 13:06:25 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf-hppa.h: New file. Common stuff for elf32 and elf64 PA
- support.
- * elf32-hppa.c: Include elf-hppa.h.
- (ARCH_SIZE): Define.
- (elf_hppa_reloc_type_lookup): Delete. Found in the common code
- now.
- (elf32_hppa_info_to_howto): Similarly.
- (elf_hppa_howto_table): Similarly.
- (elf_hppa_reloc_type_lookup): Similarly.
- (hppa_elf_gen_reloc_type): Similarly.
- * elf32-hppa.h (ELF_HOWTO_TALBE, N_PARISC_RELOCS): Delete.
-
-1999-06-22 Nick Clifton <nickc@cygnus.com>
-
- * elf32-v850.c (v850_elf_final_link_relocate): Catch overflow
- handling R_V850_22_PCREL relocation.
-
-1999-06-21 Ian Lance Taylor <ian@zembu.com>
-
- * coff-arm.c (arm_emit_base_file_entry): Explicitly declare return
- type.
-
-Sun Jun 20 14:13:57 1999 Richard Henderson <rth@cygnus.com>
-
- * section.c (_bfd_strip_section_from_output): Ignore sections
- DISCARDed by the link script.
-
-1999-06-19 Ian Lance Taylor <ian@zembu.com>
-
- * elflink.h (elf_link_remove_section_and_adjust_dynindices):
- Remove unused local variable spp.
-
- * xcofflink.c (bfd_xcoff_size_dynamic_sections): Don't crash if
- the entry symbol is not set.
-
-Fri Jun 18 04:24:57 1999 Richard Henderson <rth@cygnus.com>
-
- * elf64-alpha.c (elf64_alpha_relocate_section): Don't adjust
- GPDISP or LITUSE in a relocatable link.
-
-Thu Jun 17 21:24:43 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * dwarf1.c (alloc_dwarf1_unit): Allocate using bfd_zalloc.
- * (alloc_dwarf1_func): Likewise.
-
-Wed Jun 16 03:09:57 1999 Jeffrey A Law (law@cygnus.com)
-
- * libhppa.h: Fix various formatting errors.
- (assemble_3); Rewrite using CATENATE.
- (assemble_17): Fix various bugs.
-
-1999-06-16 Nick Clifton <nickc@cygnus.com>
-
- * elf32-mcore.c (R_MCORE_RAW): Fix definition.
-
-1999-06-15 Richard Henderson <rth@cygnus.com>
-
- * section.c (SEC_SHORT): Define.
- * bfd-in2.h: Rebuild.
-
-1999-06-13 Mark Mitchell <mark@codesourcery.com>
-
- * elflink.h (elf_link_remove_section_and_adjust_dynindices):
- Remove abfd parameter. Use _bfd_strip_section_from_output.
- (bfd_elf_size_dynamic_sections): Adjust callers accordingly.
-
- * elf-bfd.h (_bfd_elf_link_adjust_dynindx): New function.
- * elflink.c (_bfd_elf_link_adjust_dynindx): Define it.
- * elflink.h (elf_link_remove_section_and_adjust_dynindices): New
- function.
- (bfd_elf_size_dynamic_sections): Use it.
-
-1999-06-13 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * elf32-i386.c (elf_howto_table): Change R_386_PC8 from
- complain_overflow_bitfield to complain_overflow_signed.
-
-1999-06-13 Mark Mitchell <mark@codesourcery.com>
-
- * elflink.h (elf_link_read_relocs_from_section): New function,
- split out from ...
- (elf_link_read_relocs): Here. Use it for both relocation
- sections.
-
-1999-06-12 Mark Mitchell <mark@codesourcery.com>
-
- * elfcode.h (elf_slurp_reloc_table_from_section): Don't assume
- asect->reloc_count is valid.
-
-1999-06-12 Ian Lance Taylor <ian@zembu.com>
-
- * elf32-mips.c (mips_elf32_section_processing): Permit a
- SHT_MIPS_REGINFO section to have a size of 0.
-
-1999-06-12 David O'Brien <obrien@freebsd.org>
-
- * config.bfd (alpha*-*-freebsd*): New target.
- (i[3456]86-*-freebsd*): Now defaults to ELF.
-
-1999-06-11 Ian Lance Taylor <ian@zembu.com>
-
- * reloc.c (_bfd_relocate_contents): Permit bitfield relocations to
- wrap if the relocation covers the high bit of an address.
-
- * dwarf2.c (decode_line_info): Remove unused variable first_time.
-
-1999-06-10 Jakub Jelinek <jj@ultra.linux.cz>
-
- * elf64_sparc.c (sparc64_elf_relocate_section): Use R_SPARC_max_std
- instead of R_SPARC_max.
- (sparc64_elf_info_to_howto): Likewise.
- * elf32_sparc.c (elf32_sparc_relocate_section): Likewise.
- (elf32_sparc_info_to_howto): Likewise; handle vtable relocations.
-
-1999-06-07 Richard Henderson <rth@cygnus.com>
-
- * section.c (_bfd_strip_section_from_output): Remove output
- sections with no initial link_order.
-
-1999-06-07 Nick Clifton <nickc@cygnus.com>
-
- * elf32-m88k.c (ELF_MAXPAGESIZE): Define.
-
-Mon Jun 7 11:49:43 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * Makefile.am (SOURCE_HFILES): Add missing headers.
- * Makefile.in: Regenerated.
-
-1999-06-06 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-mips.c (_bfd_mips_elf_print_private_data): Recognize
- the N32 ABI.
-
-1999-06-04 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
-
- * elf32-ppc.c (ppc_elf_relocate_section): Don't barf on out of
- range undefweak symbols.
- * hash.c: Add missing comma after @xref{}
- * linker.c: Likewise.
-
-1999-06-04 Nick Clifton <nickc@cygnus.com>
-
- * elfxx-target.h (ELF_MAXPAGESIZE): Produce an error message
- if not defined.
- * elf32-gen.c (ELF_MAXPAGESIZE): Define.
- * elf32-i860.c (ELF_MAXPAGESIZE): Define.
- * elf32-i960.c (ELF_MAXPAGESIZE): Define.
- * elf64-gen.c (ELF_MAXPAGESIZE): Define.
-
-1999-06-04 Ian Lance Taylor <ian@zembu.com>
-
- * Makefile.am: Rebuild dependencies.
- (BFD32_BACKENDS): Add dwarf1.lo.
- (BFD32_BACKENDS_CFILES): Add dwarf1.c.
- * Makefile.in: Rebuild.
-
-1999-06-04 Nick Clifton <nickc@cygnus.com>
-
- * Makefile.am: Add epoc-arm-pe target.
- * Makefile.in: Regenerate.
- * pe-arm.c: Only redefine interworking function names if they have
- not already been redefined.
- * pei-arm.c: Only redefine interworking function names if they have
- not already been redefined.
- * epoc-pe-arm.c: Redefine interworking function names to avoid a
- name space clash.
- * epoc-pei-arm.c: Redefine interworking function names to avoid a
- name space clash.
-
-1999-06-03 Nick Clifton <nickc@cygnus.com>
-
- * elfxx-target.h (ELF_MAXPAGESIZE): Default to 0x1000 not 1.
-
-Fri Jun 4 10:05:11 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * elf.c (elf_fake_sections): Undo change of 1999-05-10.
-
-Fri Jun 4 03:10:49 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * elf32-sh.c (sh_elf_relax_delete_bytes): Fix setting of
- start / stop for recalculating of r_addend of R_SH_SWITCH*.
-
-Fri Jun 4 02:53:13 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * elf32-sh.c (sh_elf_relax_delete_bytes): Handle R_SH_SWITCH32
- in other text sections.
-
-Fri Jun 4 02:29:34 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * libbfd.c (_bfd_generic_verify_endian_match): New function.
- * libbfd-in.h (_bfd_generic_verify_endian_match): Declare.
- * libbfd.h: Regenerate.
- * coff-sh.c (sh_merge_private_data): Delete.
- (coff_bfd_merge_private_bfd_data): Change to
- _bfd_generic_verify_endian_match.
- (elf32-sh.c): bfd_elf32_bfd_merge_private_bfd_data: Define.
-
-1999-06-03 Ulrich Drepper <drepper@cygnus.com>
-
- * elf32-arm.h: Fix typo: change ELF_MAXPAGE_SIZE to ELF_MAXPAGESIZE.
-
-1999-06-03 Ian Lance Taylor <ian@zembu.com>
-
- * bfd-in.h (bfd_elf32_arm_allocate_interworking_sections): Correct
- prototype.
- (bfd_elf32_arm_process_before_allocation): Likewise.
- * bfd-in2.h: Rebuild.
-
-1999-06-03 David Mosberger <davidm@hpl.hp.com>
-
- * dwarf2.c (struct line_info): Add member END_SEQUENCE to keep
- track of end_sequence markers.
- (add_line_info): Add END_SEQUENCE arg.
- (decode_line_info): Don't try to infer lo_pc and hi_pc from the
- debug-line info---it doesn't work right if a compilation unit
- consists of multiple discontiguous code-sequences. It would be
- worthwhile to optimize for the common case where a compilation
- unit results in a contiguous set of code sequences, but this is
- quite tricky to get right for arbitrary DWARF2 files.
- (lookup_address_in_line_info_table): Don't use the last line entry
- for a compilation unit for anything with an address higher than
- this line entry. Also, check for end_sequence markers to
- correctly handle discontinuities.
- (_bfd_dwarf2_find_nearest_line): When checking previously loaded
- compilation units, check all compilation units with each->high==0
- just like when reading compilation units.
-
- * dwarf2.c (decode_line_info): Initialize table->files and
- table->last_line to NULL to avoid segfaults due to random
- values in these members.
- (concat_filename): Check for out-of-range file number before
- indexing filename table. Segfaults suck.
-
- * dwarf2.c (decode_line_info): Don't truncate address to least
- significant 32 bits (breaks 64 bit targets).
- (lookup_address_in_function_table): Ditto.
- (comp_unit_contains_address): Ditto.
-
-1999-06-02 Mark Mitchell <Mark Mitchell <mark@codesourcery.com>>
-
- * elf32-mips.c (elf_mips_howto_table): Add R_MIPS_JALR.
- * elf64-mips.c (mips_elf64_howto_table_rel): Likewise.
- (mips_elf64_howto_table_rela): Likewise.
-
- * elfcode.h (elf_slurp_reloc_table_from_section): New function,
- split out from ...
- (elf_slurp_reloc_table): Here. Use it to handle the case where a
- single section has two associated relocation sections.
-
-1999-06-02 Mark Salter <msalter@cygnus.com>
-
- * coffcode.h (coff_set_alignment_hook): Set lma from s_vaddr if
- COFF_WITH_PE defined.
-
-1999-06-02 Nick Clifton <nickc@cygnus.com>
-
- * pe-arm.c: Rename global arm interworking functions to avoid name
- collision when all targets BFD is built.
- * pei-arm.c: Ditto.
-
-1999-05-31 Mark Mitchell <mark@codesourcery.com>
-
- * elf-bfd.h (elf_backend_data): Remove use_rela_p. Add
- may_use_rel_p, may_use_rela_p, default_use_rela_p.
- (bfd_elf_section_data): Add use_rela_p.
- * elf.c (bfd_section_from_shdr): Set use_rela_p appropriately.
- (_bfd_elf_new_section_hook): Likewise.
- (elf_fake_sections): Use may_use_rela_p, etc., instead of
- use_rela_p.
- (_bfd_elf_copy_private_section_data): Copy use_rela_p.
- * elfcode.h (write_relocs): Determine whether or not use rela
- relocs based on the relocation section header.
- * elflink.c (_bfd_elf_create_dynamic_sections): Use default_use_rela_p
- instead of use_rela_p.
- * elfxx-target.h (elf_backend_may_use_relp): New macro.
- (elf_backend_may_use_rela_p): Likewise.
- (elf_backend_default_use_rela_p): Likewise.
- (elfNN_bed): Use them.
-
-Wed Jun 2 12:38:49 1999 Miodrag Vallat <miodrag@multimania.com>
-
- * hosts/alphalinux.h (TRAD_CORE_EXTRA_SIZE_ALLOWED): Expand to 4096.
-
-Tue Jun 1 17:57:58 1999 Mark P. Mitchell <mitchell@n02.acl.lanl.gov>
-
- * reloc.c (BFD_RELOC_MIPS_SUB): New relocation.
- (BFD_RELOC_MIPS_GOT_PAGE): Likewise.
- (BFD_RELOC_MIPS_GOT_OFST): Likewise.
- (BFD_RELOC_MIPS_GOT_DISP): Likewise.
- * bfd-in2.h: Regenerated.
- * libbfd.h: Likewise.
- * elf32-mips.c (mips_info_to_howto_rela): New function.
- (USE_REL): Adjust for new conventions.
- (MINUS_ONE): New macro.
- (elf_mips_howto_table): Add R_MIPS_SUB.
- (mips_r): Add entries for MIPS_SUB, MIPS_GOT_PAGE, MIPS_GOT_OFST,
- and MIPS_GOT_DISP.
- (mips_elf_final_write_processing): Set sh_link, not sh_info, for a
- .MIPS.content section.
- (_bfd_mips_elf_fake_sections): Treat all sections that begin
- with .MIPS.content as .MIPS.content sections. Set
- SHF_MNIPS_NOSTRIP for such section.
- (elf_info_to_howto): Define to mips_info_to_howto_rela.
- * elf64-mips.c (mips_r): Add entries for MIPS_SUB, MIPS_GOT_PAGE,
- MIPS_GOT_OFST, and MIPS_GOT_DISP.
-
-Wed Jun 2 11:51:12 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * vms-misc.c (_bfd_vms_hash_newfunc): Fix use of uninitialized
- variable.
-
- * elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Avoid ambigous
- `else'.
-
-1999-05-30 Philip Blundell <philb@gnu.org>
-
- * elf32-arm.h (elf32_arm_relocate_section): Reinstate change of
- 1993-03-25 (!!). Take into account the bitmasks for the reloc so
- the addend does not overflow into the rest of the word.
-
-1999-05-29 Nick Clifton <nickc@cygnus.com>
-
- * bfd-in.h: Amend prototype for
- bfd_elf32_arm_process_before_allocation .
- * bfd-in.h: Regenerate.
-
- * elfarm-oabi.c (NUM_ELEM): New macro: Compute the number of
- elements in a fixed sized array.
- (ARM_ELF_ABI_VERSION): Define.
- (ARM_ELF_OS_ABI_VERSION): Define.
- (R_ARM_THM_ABS5): Fix rightshift and size.
- (R_ARM_THM_PC22): Fix size.
- (R_ARM_PLT32): Define Howto.
- (find_howto): New function: Locate a howto based on a reloc
- number.
- (elf32_arm_info_to_howto): Use find_howto if necessary.
- (elf32_arm_reloc_map): Change type of field bfd_reloc_val to
- bfd_reloc_code_real_type.
- (elf32_arm_reloc_map[]): Add entries for BFD_RELOC_VTABLE_INHERIT
- and BFD_RELOC_VTABLE_ENTRY.
- (elf32_arm_reloc_type_lookup): Use find_howto if necessary.
-
- * elfarm-nabi.c (NUM_ELEM): New macro: Compute the number of
- elements in a fixed sized array.
- (ARM_ELF_ABI_VERSION): Define.
- (ARM_ELF_OS_ABI_VERSION): Define.
- (R_ARM_THM_ABS5): Fix rightshift and size.
- (R_ARM_THM_PC22): Fix size.
- (elf32_arm_info_to_howto_rel): Rename to elf32_arm_info_to_howto.
- (elf32_arm_reloc_map): Change type of field bfd_reloc_val to
- bfd_reloc_code_real_type.
-
- * elf32-arm.h (struct elf32_arm_link_hash_table): Add new field:
- no_pipeline_knowledge.
- (elf32_arm_link_hash_create): Initialise new field to zero.
- (bfd_elf32_arm_process_before_allocation): Add new paraemter:
- no_pipeline_knowledge. Use this parameter to initialise the field
- in the globals data structure.
- (elf32_arm_final_link_relocate): Only add in pipeline offset if
- no_pipeline_knowledge is false and the binary is from an old
- toolchain.
- (elf32_arm_merge_private_data): Generate an error if an attempt is
- made to linl together big endian and little endian code.
- (elf32_arm_post_process_headers): New function: Initialise the
- EI_OSABI and EI_ABIVERSION fields of the newly created ELF program
- header.
- (elf_backend_post_process_headers): Define.
-
-1999-05-28 Nick Clifton <nickc@cygnus.com>
-
- * elf-bfd.h (struct elf_backend_data): Add new field:
- elf_backend_post_process_headers.
-
- * elfxx-target.h (elf_backend_post_process_headers): Define to
- NULL if not already defined.
- (elfNN_bed): Initialise elf_backend_post_process_headers field.
-
- * elf.c (prep_headers): Set the EI_OSABI and EI_ABIVERSION fields
- to zero.
- (_bfd_elf_compute_section_file_positions): Call
- elf_backend_post_process_headers if defined.
-
-1999-05-28 Ian Lance Taylor <ian@zembu.com>
-
- * configure.in: Check whether getuid and getgid exist.
- * archive.c: Define getuid and getgid as macros if HAVE_GETUID or
- HAVE_GETGID are not defined, respectively.
- (bfd_write_armap): Don't special case on _WIN32 for getuid and
- getgid.
- * configure.host: Set ac_cv_func_get{ug}id for *-*-windows*.
- * configure, config.in: Rebuild.
-
-1999-05-28 Martin Dorey <mdorey@madge.com>
-
- * elf32-i960.c: New file.
- * elf.c (prep_headers): Handle bfd_arch_i960.
- * targets.c (bfd_target_vector): Add &bfd_elf32_i960_vec.
- * config.bfd (i960-*-elf*): New target.
- * configure.in (bfd_elf32_i960_vec): New target vector.
- * Makefile.am (BFD32_BACKENDS): Add elf32-i960.lo.
- (BFD32_BACKENDS_CFILES): Add elf32-i960.c.
- * Makefile.in, aclocal.m4, configure: Rebuild.
-
-1999-05-27 Nick Clifton <nickc@cygnus.com>
-
- * elfarm-oabi.c (elf32_arm_howto_table): Add entry for
- R_ARM_PLT32.
- (find_howto): New function: Find entries in the
- elf32_arm_howto_table.
- (elf32_arm_info_to_howto): Use find_howto if the entry cannot be
- computed simply.
- (elf32_arm_reloc_type_lookup): Add lookup for
- BFD_RELOC_ARM_PLT32.
-
-1999-05-25 Philip Blundell <pb@nexus.co.uk>
-
- * bfd/elf32-arm.h (elf32_arm_link_hash_newfunc): New function.
- (elf32_arm_link_hash_table_create): Use above function as the
- constructor for hash table entries.
- (elf32_arm_relocate_section): Avoid crash when there is no output
- section.
- (elf32_arm_final_link_relocate): New parameter h.
- (elf32_arm_relocate_section): Pass symbol hash entry to above
- routine.
- (elf32_arm_gc_sweep_hook, elf32_arm_check relocs): Correct
- comments.
-
-1999-05-25 Catherine Moore <clm@cygnus.com>
-
- * coff-arm.c (coff_arm_relocate_section): Don't emit
- base file entries for pc-relative values.
-
-1999-05-25 DJ Delorie <dj@cygnus.com>
-
- * peicode.h (coff_swap_sym_in): When we create the actual section
- to reflect the not-there section C_SECTION symbols refer to,
- change the symbol class to C_STAT as the section is now really
- there.
-
-1999-05-24 Philip Blundell <pb@nexus.co.uk>
-
- * elf32-arm.h (elf32_arm_relocate_section): Undo change of
- 1999-03-25.
-
-Mon May 17 13:35:35 1999 Stan Cox <scox@cygnus.com>
-
- * coff-arm.c (_bfd_coff_arm_set_private_flags): Changed
- F_PIC_INT to F_PIC.
- * coffcode.h (coff_set_arch_mach_hook): Added F_ARM_2a, and
- F_ARM_3M labels. Changed F_PIC_INT to F_PIC.
-
-1999-05-16 Nick Clifton <nickc@cygnus.com>
-
- * coff-mcore.c (in_reloc_p): Reinstate.
-
-1999-05-15 Nick Clifton <nickc@cygnus.com>
-
- * reloc.c (BFD_RELOC_MCORE_RVA): Define.
- * bfd-in2.h: Regenerate.
- * coff-mcore.c (in_reloc_p): Remove defintion.
- (mcore_coff_howto): Add IMAGE_REL_MCORE_RVA.
- (mcore_coff_reloc_type_lookup): Map BFD_RELOC_RVA to
- IMAGE_REL_MCORE_RVA.
- (coff_mcore_rtype_to_howto): Add special processing for
- IMAGE_REL_MCORE_RVA.
- (coff_mcore_relocate_section): Add support for
- IMAGE_REL_MCORE_RVA.
- * elf32-mcore (mcore_elf_howto_): Add R_MCORE_RELATIVE.
- (mcore_elf_reloc_type_lookup): Map BFD_RELOC_RVA to
- R_MCORE_RELATIVE.
- (mcore_elf_relocate_section): Delete redundant case labels.
-
-Fri May 14 10:59:55 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * elf32-arm.h (elf32_arm_relocate_section): Fix operator
- precedence between bit-and and comparison.
-
-Thu May 13 09:45:23 1999 Joel Sherrill (joel@OARcorp.com)
-
- * config.bfd (i[3456]86*-*-rtems*, m68k*-*-rtems*): Added to
- list of target formats (targ_selvecs).
- (i[3456]86*-*-rtemself*, mips*el-*-rtems*): New targets.
- (powerpcle*-*rtems*, sh-*-rtemself*): New targets.
-
-1999-05-10 DJ Delorie <dj@cygnus.com>
-
- * ecoff.c (_bfd_ecoff_write_armap): give the symtab element a
- reasonable mode until "ar x" is smart enough to skip it (fixes
- gcc/libgcc.a builds on mips-ecoff targets
-
- * coffcode.h (styp_to_sec_flags): Explain how COMDATs are supposed
- to work. Hack to support MS import libraries, which use different
- COMDAT types than GNU.
- (coff_slurp_symbol_table): C_SECTION symbols are local; they refer
- to implied zero-length sections (see peicode below)
- * coffgen.c (coff_get_normalized_symtab): Properly read long MS
- filename symbols, which use one *or more* auxents.
- * coffswap.h (coff_swap_aux_in): ditto
- * peicode.h (coff_swap_sym_in): Build the implied zero-length
- sections
-
-Tue May 11 15:51:58 1999 Jeffrey A Law (law@cygnus.com)
-
- * elf32-v850.c (v850_elf_howto_table): Make partial_inplace false
- for all relocations.
-
-1999-05-10 Catherine Moore <clm@cygnus.com>
-
- * bfd-in.h (bfd_arm_allocate_interworking_sections): Static
- if COFF_IMAGE_WITH_PE.
- (bfd_arm_process_before_allocation): Likewise.
- (bfd_arm_get_bfd_for_interworking): Likewise.
- * coff-arm.c: Likewise.
- * bfd-in2.h: Regenerate.
- * configure.in (armpe_little_vec): Remove coff-arm.lo.
- (armpe_big_vec): Likewise.
- * configure: Rebuild.
-
-1999-05-10 Nick Clifton <nickc@cygnus.com>
-
- * elf.c (elf_fake_sections): Check for .rel. as start of rel
- section, not just .rel. Same for .rela.
-
-1999-05-07 Nick Clifton <nickc@cygnus.com>
-
- * coff-mcore.c (coff_mcore_relocate_section): Replace assert about
- endianism with an error message.
-
-Thu May 6 17:09:09 1999 Fred Fish <fnf@be.com>
-
- * dwarf2.c (read_abbrevs): Change cast of dwarf_abbrev_buffer
- assignment from "unsigned char *" to "char *".
- (decode_line_info): Likewise for dwarf_line_buffer assignment.
-
-1999-05-05 Catherine Moore <clm@cygnus.com>
-
- * coff-arm.c (coff_arm_relocate_section): Add one to
- address of ARM_RVA32 thumb functions.
-
-1999-05-05 Catherine Moore <clm@cygnus.com>
-
- * elf32-m68k.c (elf32_m68k_set_private_flags): New.
- (elf32_m68k_copy_private_bfd_data): New.
- (elf32_m68k_merge_private_bfd_data): New.
- (elf32_m68k_print_private_bfd_data): New.
- (CPU32_FLAG): Define.
- (PLT_CPU32_ENTRY_SIZE): Define.
- (elf_cpu32_plt0_entry): Declare.
- (elf_cpu32_plt_entry): Declare.
- (elf_m68k_adjust_dynamic_symbol): Generate cpu32 plt entries.
- (elf_m68k_finish_dynamic_symbol): Likewise.
- (elf_m68k_finish_dynamic_sections): Likewise.
- (elf_backend_plt_header_size): Remove definition.
- (bfd_elf32_bfd_copy_private_bfd_data): Define.
- (bfd_elf32_bfd_merge_private_bfd_data): Define.
- (bfd_elf32_bfd_set_private_flags): Define.
- (bfd_elf32_bfd_print_private_bfd_data): Define.
-
-Mon May 3 09:24:49 1999 Jeffrey A Law (law@cygnus.com)
-
- * som.c (som_fixup_formats): Fix comments for R_SHORT_PCREL_MODE
- and R_LONG_PCREL_MODE.
-
-1999-04-29 Nick Clifton <nickc@cygnus.com>
-
- * coff-mcore.c (coff_mcore_relocate_section): Fix typos.
-
-Fri Apr 28 16:36:19 1999 Stan Cox <scox@cygnus.com>
-
- * elf32-sh.c (sh_elf_relocate_section): Include relocation addend
- in relocation calculation.
-
-1999-04-26 Tom Tromey <tromey@cygnus.com>
-
- * aclocal.m4, configure: Updated for new version of libtool.
-
-1999-04-21 Nick Clifton <nickc@cygnus.com>
-
- * coff-mcore.c: Add support for mcore relocs.
-
-1999-04-20 Gavin Romig-Koch <gavin@cygnus.com>
-
- * elf32-mips.c (_bfd_mips_elf_print_private_bfd_data): Scrap the
- incorrect use EF_MIPS_xxBITPTRS.
-
-1999-04-18 Ian Lance Taylor <ian@zembu.com>
-
- * elf64-alpha.c (elf64_alpha_relax_section): Remove unused local
- variable insn.
-
- * bfd-in2.h: Rebuild.
- * libbfd.h: Rebuild.
-
-Sat Apr 17 20:55:15 1999 Catherine Moore <clm@cygnus.com>
-
- * coff-arm.c (coff_arm_rtype_to_howto): Remove ARM26D transform.
- (coff_arm_relocate_section): Add ARM26D transform. Only
- change to ARM26D for relocateable links.
-
-1999-04-16 Gavin Romig-Koch <gavin@cygnus.com>
-
- * elf32-mips.c (_bfd_mips_elf_print_private_bfd_data): New.
- (bfd_elf32_bfd_print_private_bfd_data): New.
-
-1999-04-15 Doug Evans <devans@casey.cygnus.com>
-
- * elf32-arm.h (elf32_arm_final_link_relocate): For R_ARM_THM_ABS5,
- refetch addend if USE_REL, add many comments regarding current state.
- For R_ARM_THM_PC22, refetch addend if USE_REL, simplify.
- * elfarm-nabi.c (elf32_arm_howto_table): For R_ARM_THM_ABS5, fix
- size and rightshift. For R_ARM_THM_PC22, fix bitsize.
- * elfarm-oabi.c (elf32_arm_howto_table): Ditto.
-
-Wed Apr 14 14:33:08 1999 Richard Henderson <rth@cygnus.com>
-
- * elf32-mips.c (_bfd_mips_elf_read_ecoff_info): Zero `debug'.
- * elf64-alpha.c (elf64_alpha_read_ecoff_info): Likewise.
-
-1999-04-13 David Mosberger <davidm@hpl.hp.com>
-
- * dwarf2.c (decode_line_info): Don't truncate address to least
- significant 32 bits (breaks 64 bit targets).
- (lookup_address_in_function_table): Ditto.
- (comp_unit_contains_address): Ditto.
-
-Tue Apr 13 21:27:19 1999 Catherine Moore <clm@cygnus.com>
-
- * coff-arm.c (arm_emit_base_file_entry): New routine.
- (A2T3_OFFSET): Define.
- (T2A3_OFFSET): Define.
- (coff_arm_relocate_section): Emit base file entries for interworking
- stubs.
-
-1999-04-13 Philip Blundell <philb@gnu.org>
-
- * elfarm-nabi.c (elf32_arm_howto_table): Add dummy entries for
- relocs 17 through 19.
-
-Sun Apr 11 01:25:17 1999 Richard Henderson <rth@cygnus.com>
-
- * elfcode.h: Remove fnmatch.h.
- * elflink.h (elf_link_assign_sym_version): Call back to ld
- instead of calling fnmatch.
-
- * config.bfd (i?86-*-beoself): Include pe vecs.
-
-Sun Apr 11 01:14:06 1999 Richard Henderson <rth@cygnus.com>
-
- * elf32-i386.c (elf_i386_finish_dynamic_sections): Allow .plt
- to go missing.
-
-1999-04-10 Richard Henderson <rth@cygnus.com>
-
- * elf32-i386.c (elf_i386_relocate_section): Mind no_undefined
- when trying to resolve dynamic symbol references.
- * elf32-m68k.c (elf_m68k_relocate_section): Likewise.
- * elf32-mips.c (mips_elf_relocate_section): Likewise.
- * elf32-ppc.c (ppc_elf_relocate_section): Likewise.
- * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
- * elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
- * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
- * elflink.h (elf_link_output_extsym): Likewise.
-
-Sat Apr 10 15:12:09 1999 Richard Henderson <rth@cygnus.com>
-
- * section.c (_bfd_strip_section_from_output): New function moved from
- * elf64-alpha.c (elf64_alpha_strip_section_from_output): ... here.
- * elf32-i386.c (elf_i386_size_dynamic_sections): Use it.
- * elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise.
- * elf32-mips.c (mips_elf_size_dynamic_sections): Likewise.
- * elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise.
- * elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise.
- * elf64-sparc.c (sparc64_elf_size_dynamic_sections): Likewise.
- * bfd-in2.h: Update.
-
-1999-04-09 Ian Lance Taylor <ian@zembu.com>
-
- * elf64-sparc.c: Fix incorrect calls to bfd_check_overflow.
-
-1999-04-08 Nick Clifton <nickc@cygnus.com>
-
- * coff-mcore.c: New File: Support for mcore-pe targets.
- * cpu-mcore.c: New File: Support for mcore targets.
- * elf32-mcore.c: New File: Support for mcore-elf target.
- * pe-mcore.c: New File: Definitions for mcore-pe target.
- * pei-mcore.c: New File: Definitions for mcore-pei target.
- * Makefile.am: Add support for MCore targets.
- * Makefile.in: Regenerate.
- * config.bfd: Add support for MCore targets.
- * configure.in: Add support for MCore targets.
- * configure: Regenerate.
- * archures.c: Add support for MCore architecture.
- * bfd-in2.h: Regenerate.
- * coffcode.h: Add support for mcore-pe targets.
- * elf.c: Add support for mcore-elf target.
- * reloc.c: Add support for MCore relocs.
- * targets.c: Add support for MCore targets.
-
-1999-04-07 Nick Clifton <nickc@cygnus.com>
-
- * elfarm-nabi.c (elf32_arm_howto_table): Add entries for
- R_ARM_XPC25 and R_ARM_THM_XPC22.
- (elf32_arm_reloc_map): Remove redundant entries.
-
-1999-04-06 Ian Lance Taylor <ian@zembu.com>
-
- * sysdep.h (LC_MESSAGES): Never define.
-
-1999-04-06 Chris Torek <torek@bsdi.com>
-
- * reloc.c (bfd_check_overflow): Add addrsize parameter. Change
- all callers. Rewrite completely.
- (_bfd_relocate_contents): Rewrite overflow checking.
- * bfd-in2.h: Rebuild.
-
-1999-04-05 Ian Lance Taylor <ian@zembu.com>
-
- From Gabriel Paubert <paubert@iram.es>:
- * elf32-ppc.c (ppc_elf_howto_raw): Set R_PPC_GOT16_LO,
- R_PPC_PLT16_LO and R_PPC_SECTOFF_LO to be complain_overflow_dont.
- Set R_PPC_PLT16_HA, R_PPC_SECTOFF_HA and R_PPC_EMB_NADDR16_HA to
- have a rightshift of 16 and use ppc_elf_addr16_ha_reloc.
- * ppcboot.c (ppcboot_vec): Use little endian routines for
- headers.
-
- * elf.c (elfcore_strndup): Only define if it will be used.
- * elf32-ppc.c (ppc_elf_relax_section): Remove unused locals irel
- and irelend.
- (ppc_elf_check_relocs): Remove unused local i.
- (ppc_elf_gc_mark_hook): Add default case to switch.
-
- From Bernd Nitzler <nitzler@kagcpd01.ag01.kodak.COM>:
- * srec.c (srec_scan): Accept \r in symbol definitions.
- (srec_object_p): Set HAS_SYMS if we saw any symbols.
- (symbolsrec_object_p): Likewise.
-
-1999-04-04 Don Bowman <don@pixsci.com>
-
- * config.bfd: Add mips*el-*-vxworks* and mips*-*-vxworks*.
-
-1999-04-04 Ian Lance Taylor <ian@zembu.com>
-
- * dwarf1.c (parse_line_table): Remove unused locals last_pc and
- last_line.
- * elf-bfd.h (_bfd_elfcore_section_from_phdr): Declare.
- * elf32-i386.c (elf_i386_gc_mark_hook): Add default case to
- switch.
- * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Remove unused
- local i.
- * syms.c (_bfd_stab_section_find_nearest_line): Remove unused
- local val.
-
-1999-03-31 Nick Clifton <nickc@cygnus.com>
-
- * config.bfd: Add support for arm-epoc-pe target.
- * configure.in: Add support for arm-epoc-pe target.
- * configure: Regenerate.
- * targets.c: Add support for arm-epoc-pe target.
- * coff-arm.c: Allow header files to override definition of
- TARGET_UNDERSCORE and USER_LABEL_PREFIX.
- * pe-arm.h: Allow previous header files to override definition of
- TARGET_LITTLE_SYM and TARGET_BIG_SYM.
- * pei-arm.h: Allow previous header files to override definition of
- TARGET_LITTLE_SYM and TARGET_BIG_SYM.
- * epoc-pe-arm.c: New file. Support arm-epoc-pe target.
- * epoc-pei-arm.c: New file. Support arm-epoc-pei target.
-
-1999-03-30 Nick Clifton <nickc@cygnus.com>
-
- * elf.c (elf_map_symbols): Handle the case where section
- symbols are generated for content-less sections which are
- not mapped to the output file.
-
- * linker.c: Replace direct references to fields in BFD structure
- with accessor macros.
-
- * elflink.h: Replace direct references to fields in BFD structure
- with accessor macros.
-
-1999-03-25 Philip Blundell <pb@nexus.co.uk>
-
- * config.bfd: Eliminate redundancy in checks for Linux/ARM.
-
- * elf32-arm.h (elf32_arm_relocate_section): Take the rightshift into
- account when adjusting section symbols during a partial link.
-
-1999-03-24 Nick Clifton <nickc@cygnus.com>
-
- * coff-sparc.c (struct coff_reloc_map): Change type of field
- 'bfd_reloc_val' to bfd_reloc_code_real_type.
- * elf-m10200.c (struct mn10200_reloc_map): Ditto.
- * elf-m10300.c (struct mn10300_reloc_map): Ditto.
- * elf32-arc.c (struct arc_reloc_map): Ditto.
- * elf32-d10v.c (struct d10v_reloc_map): Ditto.
- * elf32-d30v.c (struct d30v_reloc_map): Ditto.
- * elf32-fr30.c (struct fr30_reloc_map): Ditto.
- * elf32-m32r.c (struct m32r_reloc_map): Ditto.
- * elf32-sh.c (struct elf_reloc_map): Ditto.
- * elf32-sparc.c (struct elf_reloc_map): Ditto.
- * elf32-v850.c (struct v850_reloc_map): Ditto.
- * elf64-sparc.c (struct elf_reloc_map): Ditto.
- * elfarm-nabi.c (struct elf32_arm_reloc_map): Ditto.
- * elfarm-oabi.c (struct elf32_arm_reloc_map): Ditto.
-
-1999-03-17 Martin Hunt <hunt@cygnus.com>
-
- * syms.c (_bfd_stab_section_find_nearest_line): Changed this
- function so source-level assembly works. If multiple N_SOs
- are seen without and N_FUNs, create an indextable entry with
- a NULL function name.
-
-1999-03-16 Gavin Romig-Koch <gavin@cygnus.com>
-
- * elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data) Allow merging
- of certian similar cpus.
-
-1999-03-16 Gavin Romig-Koch <gavin@cygnus.com>
-
- * elf32-mips.c (_bfd_mips_elf_final_write_processing):
- Add the 5000. Change the architecture for the 5400 to mips4.
- (elf_mips_mach): Add r5000.
-
-1999-03-11 Doug Evans <devans@casey.cygnus.com>
-
- * cpu-i960.c (scan_i960_mach): Recognize i960:ka_sa and i960:kb_sb.
-
-1999-03-11 Nick Clifton <nickc@cygnus.com>
-
- * binary.c (binary_set_section_contents): Generate warning about
- huge file offsets for any section that will occupy file space, not
- just those that are loadable.
-
-1999-02-24 Jim Blandy <jimb@zwingli.cygnus.com>
-
- * libbfd.h: Regenerate after Nick Clifton's Feb 17 changes.
-
-1999-02-22 Jim Lemke <jlemke@cygnus.com>
-
- * elf32-ppc.c: Add ppc_elf_relax_section() for the ld option mpc860c0.
-
-Mon Feb 22 18:26:51 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * elf-bfd.h (ELF_LINK_HASH_REF_REGULAR_NONWEAK): Define.
- * elflink.h: Revert all changes since Feb 16. Instead:
- (elf_link_add_object_symbols): Set REF_REGULAR_NONWEAK flag if
- appropriate. Copy it to version symbols.
- (elf_fix_symbol_flags): Set REF_REGULAR_NONWEAK for non ELF
- symbols if appropriate.
- (elf_adjust_dynamic_symbol): Set REF_REGULAR_NONWEAK for weakdef
- symbol if appropriate.
- (elf_link_output_extsym): If symbol is marked as undefined, and
- has no nonweak references, mark it as weak undefined.
-
-Fri Feb 19 16:01:12 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * elflink.h (elf_merge_symbol): When overriding a dynamic
- definition with a weak undefined symbol, set NEEDS_PLT if it is a
- function.
- (elf_link_add_object_symbols): Don't copy the other field if we
- are overridding.
-
-Thu Feb 18 18:07:43 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * elflink.h (elf_merge_symbol): Do not merge any symbol from a
- shared object with a weak undefined symbol.
-
-1999-02-18 Nick Clifton <nickc@cygnus.com>
-
- * elfarm-nabi.c: Set partial_inplace back to false.
-
-1999-02-17 Nick Clifton <nickc@cygnus.com>
-
- * coff-arm.c (TARGET_UNDERSCORE): Re-enable.
- (USER_LABEL_PREFIX): Set to "_".
-
- The following patches are from: Scott Bambrough
- <scottb@corelcomputer.com>
-
- * libaout.h (M_ARM6_NETBSD): Set to 143.
-
- * reloc.c: Add ARM PIC relocs: BFD_RELOC_ARM_GOT12,
- BFD_RELOC_ARM_GOT32, BFD_RELOC_ARM_JUMP_SLOT, BFD_RELOC_ARM_COPY,
- BFD_RELOC_ARM_GLOB_DAT, BFD_RELOC_ARM_PLT32,
- BFD_RELOC_ARM_RELATIVE, BFD_RELOC_ARM_GOTOFF, BFD_RELOC_ARM_GOTPC.
- * bfd-in2.h: Regenerate.
-
- * elfarm-nabi.c (elf32_arm_howto_table): Set partial_inplace to
- 'true' as REL relocs are now being used. Add new PIC relocs:
- R_ARM_COPY, R_ARM_GLOB_DAT, R_ARM_JUMP_SLOT, R_ARM_RELATIVE,
- R_ARM_GOTOFF, R_ARM_GOTPC, R_ARM_GOT32, R_ARM_PLT32.
-
- * elf32-arm.h (elf32_arm_merge_private_bfd_data): Check byte order
- of targets.
- (elf32_arm_final_link_relocate): Change parameters so that entire
- reloc is passed. Add support for PIC relocs.
- (elf32_arm_relocate_section): Pass entire reloc to
- elf32_arm_final_link_relocate.
- (elf32_arm_check_relocs): Handle new PIC relocs.
- (elf32_arm_adjust_dynamic_symbol): New function.
- (elf32_arm_size_dynamic_sections): New function.
- (elf32_arm_discard_copies): New function.
- (elf32_arm_finish_dynamic_symbol): New function.
- (elf32_arm_finish_dynamic_sections): New function.
- (ELF_MAXPAGE_SIZE): Define.
- (bfd_elf32_bfd_reloc_type_lookup): Define.
- (elf_backend_relocate_section): Define.
- (elf_backend_adjust_dynamic_symbol): Define.
- (elf_backend_create_dynamic_sections): Define.
- (elf_backend_finish_dynamic_symbol): Define.
- (elf_backend_finish_dynamic_sections): Define.
- (elf_backend_size_dynamic_sections): Define.
- (elf_backend_plt_readonly): Define.
- (elf_backend_want_got_plt): Define.
- (elf_backend_want_plt_sym): Define.
-
-Wed Feb 17 12:02:26 1999 Stan Cox <scox@cygnus.com>
-
- * elf32-mips.c (_bfd_mips_elf_section_from_shdr): Make reginfo
- sections SEC_LINK_ONCE and SEC_LINK_DUPLICATES_SAME_SIZE.
- (_bfd_mips_elf_fake_sections): Likewise.
-
-Wed Feb 17 12:07:23 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * elfarm-oabi.c (bfd_elf32_arm_allocate_interworking_sections,
- bfd_elf32_arm_get_bfd_for_interworking,
- bfd_elf32_arm_process_before_allocation): Define to avoid clash
- with elfarm-nabi.c.
-
- * elf32-arm.h: Don't declare elf32_arm_info_to_howto.
- (elf32_thumb_to_arm_stub, elf32_arm_to_thumb_stub,
- elf32_arm_find_nearest_line): Make them static.
-
-Tue Feb 16 22:44:37 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * elflink.h (elf_merge_symbol): Add pflags parameter. Change all
- callers. Do not merge a definition from a shared object with a
- weak undefined symbol.
- (elf_link_add_object_symbols): Do not change the symbol type or
- size if the old symbol overrides the new one.
-
-1999-02-08 Nick Clifton <nickc@cygnus.com>
-
- * config.bfd: Add support for strongarm target.
-
-Mon Feb 8 11:18:14 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * elf32-m68k.c (reloc_map): Use the correct types for the struct
- fields instead of unsigned char.
-
-Fri Feb 5 00:22:36 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am: Rebuild dependencies.
- * Makefile.in: Rebuild.
-
-Thu Feb 4 22:30:13 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Change AC_PREREQ to 2.13. Remove AM_CYGWIN32.
- Change AM_EXEEXT to AC_EXEEXT and AM_PROG_INSTALL to
- AC_PROG_INSTALL. Add comments to uses of AC_DEFINE.
- * acinclude.m4: Add comments to uses of AC_DEFINE.
- * acconfig.h: Remove.
- * configure: Rebuild with current autoconf/automake.
- * aclocal.m4: Likewise.
- * config.in: Likewise.
- * Makefile.in: Likewise.
-
-1999-02-04 DJ Delorie <dj@cygnus.com>
-
- * libbfd.c (real_read): don't call fread for zero bytes. This
- covers up a bug (or misuse of bfd) that's exposed by Solaris.
-
-Thu Feb 4 12:38:10 1999 Stan Cox <scox@cygnus.com>
-
- * elf32-mips.c (mips_elf_relocate_section): Insure that the target
- of a jump is in the current 256 MB region.
-
-Thu Feb 4 12:15:38 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * format.c (bfd_check_format_matches): Change last patch to only
- take effect for the binary target.
-
-Wed Feb 3 19:40:12 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * elf32-i386.c (elf_i386_reloc_type_lookup): Add BFD_RELOC_CTOR.
-
-Wed Feb 3 15:02:44 1999 Catherine Moore <clm@cygnus.com>
-
- * elf32-fr30.c (fr30_elf_check_relocs): New routine.
-
-Tue Feb 2 21:38:28 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * format.c (bfd_check_format_matches): If the target was
- previously specified, don't check other targets when checking for
- an archive file.
-
-Tue Feb 2 18:16:43 1999 Catherine Moore <clm@cygnus.com>
-
- * elf32-arm.h (elf32_arm_reloc_map): Removed.
- (elf32_arm_reloc_type_lookup): Removed
- * elfarm-nabi.c (elf32_arm_reloc_map): New.
- (elf32_arm_reloc_type_lookup): New.
- * elfarm-oabi.c (elf32_arm_reloc_map): New.
- (elf32_arm_reloc_type_lookup): New.
-
-Mon Feb 1 19:49:21 1999 Catherine Moore <clm@cygnus.com>
-
- * elfarm-nabi.c: Renamed from elf32-arm-newabi.c.
- * elfarm-oabi.c: Renamed from elf32-arm-oldabi.c
- * Makefile.am: Use new files.
- * Makefile.in: Regenerate.
- * configure.in: Use new files.
- * configure: Regenerate.
-
-1999-02-01 Nick Clifton <nickc@cygnus.com>
-
- * elf32-fr30.c (fr30_elf_gc_mark_hook): New function.
- (fr30_elf_gc_sweep_hook): New function.
- (elf_backend_can_gc_sections): Define.
-
-Mon Feb 1 12:21:47 1999 Catherine Moore <clm@cygnus.com>
-
- * targets.c (bfd_target_vector): Add bfd_elf32_littlearm_oabi_vec
- and bfd_elf32_bigarm_oabi_vec.
-
-Mon Feb 1 11:46:31 1999 Catherine Moore <clm@cygnus.com>
-
- * Makefile.am (elf32-arm-oldabi.lo): New.
- (elf32-arm-newabi.lo): New.
- * Makefile.in: Regenerate.
- * config.bfd (thumb-*-elf): Remove definition of targ_underscore.
- (arm-*-elf): Likewise.
- (arm-*-oabi): New.
- (thumb-*-oabi): New.
- * configure: Regenerate.
- * configure.in (bfd_elf32_littlearm_oabi_vec): New.
- (bfd_elf32_bigarm_oabi_vec): New.
- * elf32-arm-newabi.c: New.
- * elf32-arm-oldabi.c: New.
- * elf32-arm.c: Removed.
- * elf32-arm.h: New.
-
-Mon Feb 1 11:52:12 1999 Frank Ch. Eigler <fche@cygnus.com>
-
- * binary.c (binary_set_section_contents): Omit warnings for
- unloadable sections.
-
-1999-01-31 Michael Meissner <meissner@cygnus.com>
-
- * config.bfd (powerpc{,le}-*-vxworks*): Add aliases to
- powerpc{,le}-*-eabi.
-
-1999-01-29 Nick Clifton <nickc@cygnus.com>
-
- * dwarf2.c (read_unsigned_leb128): Remove unused variables.
- * dwarf2.c (read_signed_leb128): Remove unused variables.
-
-Fri Jan 29 00:47:21 1999 H.J. Lu <hjl@gnu.org>
-
- * elf.c (assign_file_positions_for_segments): Only adjust
- p_align when needed.
-
-Thu Jan 28 20:05:22 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * binary.c (binary_set_section_contents): Don't return early for a
- non-loadable section, in case the first section is non-loadable.
- Don't set the low lma for a SEC_NEVER_LOAD section. From Maciej
- W. Rozycki <macro@ds2.pg.gda.pl>.
-
-1999-01-28 Nick Clifton <nickc@cygnus.com>
-
- * elf32-fr30.c (fr30_reloc_map): Add R_FR30_GNU_VTINHERIT and
- R_FR30_GNU_VTENTRY relocs.
-
-Thu Jan 28 11:08:16 1999 Catherine Moore <clm@cygnus.com>
-
- * elflink.h (elf_link_output_sym): Zero syms which are
- part of sections which have been excluded.
-
-Wed Jan 27 13:35:35 1999 Stan Cox <scox@cygnus.com>
-
- * coff-arm.c (_bfd_coff_arm_set_private_flags): Changed F_PIC
- to F_PIC_INT.
- * coffcode.h (coff_set_arch_mach_hook): Removed F_ARM_2a and
- F_ARM_3M labels. Changed F_PIC to F_PIC_INT.
-
-1999-01-27 Nick Clifton <nickc@cygnus.com>
-
- * elf32-fr30.c (fr30_elf_howto_table): Fix name of R_FR30_48
- relocation.
- (fr30_final_link_relocate): Use computed value as result of
- relocation.
-
-1999-01-26 Frank Ch. Eigler <fche@cygnus.com>
-
- * binary.c (binary_set_section_contents): Emit warning for
- huge file offsets due to widely-dispersed section LMAs.
-
-Mon Jan 18 03:35:35 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * elf.c (assign_file_positions_for_segments): If not D_PAGED,
- align first section to largest section alignment, not first
- section alignment.
-
-1999-01-04 Jason Molenda (jsm@bugshack.cygnus.com)
-
- * configure.in: Require autoconf 2.12.1 or higher.
-
-Tue Dec 22 15:21:41 1998 Catherine Moore <clm@cygnus.com>
-
- * archures.c (bfd_mach_i386_i386_intel_syntax): Define.
- * bfd-in2.h: Likewise.
- * cpu-i386.c (bfd_i386_arch_intel_syntax): New.
-
-1998-12-16 Gavin Romig-Koch <gavin@cygnus.com>
-
- * archures.c,bfd-in2.h (bfd_mach_mips4111): New.
- * cpu-mips.c: Add support for and independent 4111.
- * elf32-mips.c (elf_mips_mach): E_MIPS_MACH_4111 -> bfd_mach_mips4111.
- (_bfd_mips_elf_final_write_processing):
- bfd_mach_mips4111 -> E_MIPS_ARCH_3 | E_MIPS_MACH_4111.
-
-1998-12-15 Gavin Romig-Koch <gavin@cygnus.com>
-
- * elf32-mips.c (elf_mips_abi_name): New.
- (_bfd_mips_elf_merge_private_bfd_data): Compare EF_MIPS_ABI flags.
-
-1998-12-12 Gavin Romig-Koch <gavin@cygnus.com>
-
- * elf32-mips.c (_bfd_mips_elf_final_write_processing):
- Handle bfd_mach_mips4300.
-
-1998-12-11 Ulrich Drepper <drepper@cygnus.com>
-
- * elf32-i386.c: Remove leaked development code from patch
- 1998-12-10 by Richard Henderson.
-
-1998-12-10 Richard Henderson <rth@cygnus.com>
-
- * elf32-i386.c (elf_i386_relocate_section): Don't fail relocations
- in debug sections for symbol defined externally.
-
-Thu Dec 10 10:58:38 1998 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * targets.c (bfd_target_vector): Remove duplicate entry for
- tekhex_vec.
-
-1998-12-09 Nick Clifton <nickc@cygnus.com>
-
- * elf32-fr30.c (fr30_elf_howto_table): Set src_mask fields to 0
- since we are using RELAs.
-
-Tue Dec 8 22:15:48 1998 Ian Lance Taylor <ian@cygnus.com>
-
- SCO Open Server Release 5 core file support, from Jouke Numan
- <jnuman@hiscom.nl>:
- * sco5-core.c: New file.
- * configure.in (i[3456]86-*-sco3.2v5*): Use sco5-core.lo.
- (sco5-core.lo): Define SCO5_CORE in COREFLAG.
- * Makefile.am: Rebuild dependencies.
- (OPTIONAL_BACKENDS): Add sco5-core.lo.
- (OPTIONAL_BACKENDS_CFILES): Add sco5-core.c.
- * bfd.c (struct _bfd): Add sco5_core_data field to tdata.
- * targets.c (sco5_core_vec): Add to target list if SCO5_CORE.
- * bfd-in2.h, configure, Makefile.in: Rebuild.
-
-Tue Dec 8 19:38:42 1998 Mark Klein <mklein@dis.com>
-
- * config.bfd (hppa*-*-mpeix*): New target.
- * configure.in: Add AC_HEADER_DIRENT.
- (hppa*-*-mpeix*): New target.
- * configure.host (hppa*-*-mpeix*): New host.
- * hpux-core.c: Check HOST_HPPAMPEIX. Use HAVE_DIRENT_H and
- friends rather than just including <sys/dir.h>.
- * som.h (struct som_symbol): Add hppa_priv_level and apto
- tc_data. Change all users.
- (struct somdata): Add comp_unit field.
- (obj_som_compilation_unit): Define.
- (bfd_som_attach_compilation_unix): Declare.
- * som.c: Check HOST_HPPAMPEIX.
- (struct som_misc_symbol_info): Add new field priv_level.
- (som_object_setup): Add current_offset parameter. Change all
- callers.
- (setup_sections): Likewise.
- (som_object_p): For EXECLIBMAGIC, read the lst header.
- (som_write_symbol_strings): Add compilation_unit parameter.
- Change all callers.
- (som_finish_writing): Write out compilation_unit.
- (som_bfd_derive_misc_symbol_info): Set priv_level.
- (som_build_and_write_symbol_table): Set xleast field to 3.
- (som_slurp_symbol_table): Set symbol priv_level.
- (bfd_som_attach_compilation_unit): New function.
- (som_bfd_ar_write_symbol_stuff): Set xleast field to 3. Set
- priv_level into symbol_value.
- * configure, config.in: Rebuild.
-
-Tue Dec 8 16:21:35 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * hpux-core.c (hpux_core_core_file_p): Change call to nonexistent
- warning function to call _bfd_error_handler instead.
-
- * libbfd.c (COERCE32): Cast through unsigned long and long to
- avoid bug in old version of gcc.
-
- * elf64-alpha.c (elf64_alpha_additional_program_headers): Remove.
- (elf_backend_additional_program_headers): Don't define.
-
-1998-12-08 Nick Clifton <nickc@cygnus.com>
-
- * elf32-fr30.c (fr30_final_link_relocate): Fix PC relative
- relocations to include offset of 2 included in the insns, and the
- offset of the relocs within the section.
-
-Wed Dec 2 15:03:59 1998 David Taylor <taylor@texas.cygnus.com>
-
- The following changes were made by David Taylor
- <taylor@texas.cygnus.com>, Edith Epstein
- <eepstein@sophia.cygnus.com>, Jim Blandy
- <jimb@zwingli.cygnus.com>, and Elena Zannoni
- <ezannoni@kwikemart.cygnus.com> as part of the project to merge in
- changes originally made by HP; HP did not create ChangeLog
- entries.
-
- * aclocal.m4, configure, Makefile.in: Rebuilt using latest
- automake macro library.
-
- * hpux-core.c (hpux_core_core_file_p): this function now
- understands HPUX 10.30 thread info. Yes, the thread stacks can be
- found in the corefile! Also, in hpux_core_core_file_p, if we
- encounter a section with an unknown type, don't punt. Instead,
- just skip it. Also, count the number of sections of known type
- that we encounter. If we encounter at least one good one, then
- we'll declare that the file is a core file. If we encounter any
- unknown ones but some known ones, then we'll issue a warning (but
- still declare it to be a core file). Also, correctly decide when a
- file is not a core.
- (PROC_INFO_HAS_THREAD_ID): define if CORE_ANON_SHMEM defined.
- (CORE_ANON_SHMEM): define if not defined.
- (hpux_core_struct): add members lwpid and user_tid.
- (core_kernel_thread_id, core_user_thread_id): new macros.
- (make_bfd_asection): use bfd_alloc to allocate room for a copy of
- the name before storing it in the bfd.
- (hpux_core_core_file_p): handle threads.
-
- * libhppa.h (GET_FIELD): protect against redefinition.
- (HPPA_WIDE): define.
- (GET_FIELD): define.
- (GET_BIT): define.
- (MASK): define.
- (CATENATE): define.
- (ELEVEN): define.
- (sign_extend): redefine.
- (assemble_6): define.
- (assemble_12): rewrite.
- (assemble_16): define.
- (assemble_16a): define.
- (assemble_17): rewrite.
- (assemble_22): define.
-
-1998-12-07 Nick Clifton <nickc@cygnus.com>
-
- * elf32-fr30.c (fr30_final_link_relocate): Using signed
- relocations for signed values.
-
-Sun Dec 6 16:30:33 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * mipsbsd.c (MY(set_arch_mach)): Make static.
- * aoutx.h (NAME(aout,machine_type)): For bfd_arch_mips, use
- bfd_mach_mips* macros rather than simple numbers.
-
- COFF weak symbol support, based on patches from Mark Elbrecht
- <snowball3@usa.net>:
- * coffcode.h (coff_slurp_symbol_table): Handle C_WEAKEXT.
- * coffgen.c (coff_renumber_symbols): Handle weak symbols.
- (coff_write_alien_symbol): Likewise.
- * cofflink.c (coff_link_check_ar_symbols): Likewise.
- (coff_link_add_symbols): Likewise.
- (_bfd_coff_link_input_bfd): Likewise.
- (_bfd_coff_write_global_sym): Likewise.
-
- * elf.c (copy_private_bfd_data): Always initialize the
- includes_phdrs field.
-
- * elflink.h (elf_fix_symbol_flags): Check for case where a non-ELF
- file defines a symbol first mentioned in an ELF file.
-
- * bfd-in.h: Always define BFD_HOST_64_BIT and BFD_HOST_U_64_BIT if
- possible, rather than only if BFD64.
- * elflink.h (compute_bucket_count): Just check BFD_HOST_U_64_BIT,
- not __GNUC__.
- * bfd-in2.h: Rebuild.
-
- * srec.c (srec_set_section_contents): Correct test to avoid
- switching to 4 byte addresses after seeing a second section which
- requires 3 byte addresses. From Joel Schantz
- <joel.schantz@argosys.boeing.com>.
-
- * config.bfd (m68*-*-gnu*): New target. From Aymeric Vincent
- <aymeric.vincent@emi.u-bordeaux.fr>.
-
-1998-12-04 Jim Blandy <jimb@zwingli.cygnus.com>
-
- * elf32-ppc.c (ppc_elf_merge_private_bfd_data): Fix logic to
- decide whether the output file is -mrelocatable-lib,
- -mrelocatable, or neither. (gdb.base/nodebug.exp)
-
-1998-12-03 Nick Clifton <nickc@cygnus.com>
-
- * elf32-fr30.c: Add support for R_FR30_48 reloc.
- * reloc.c: Add BFD_RELOC_FR30_48 relocation.
- * bfd-in2.h: Regenerate.
- * libbfd.h: Regenerate
-
-Wed Dec 2 00:58:37 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elflink.h (elf_adjust_dynamic_symbol): Warn on an attempt to
- link against a dynamic symbol with no type or size.
-
-1998-12-01 Ulrich Drepper <drepper@cygnus.com>
-
- * elf32-i386.c (i386_check_relocs) [R_386_32]: Don't emit
- relocation for section which does not get loaded.
- (elf_i386_relocate_section) [R_386_32]: Likewise.
-
-Tue Dec 1 11:33:33 1998 Jim Wilson <wilson@cygnus.com>
-
- * coff-h8300.c (h8300_bfd_link_add_symbols): Make reloc_size,
- reloc_count and i long instead of unsigned long. Handle error
- return from bfd_canonicalize_reloc.
-
-1998-12-01 Nick Clifton <nickc@cygnus.com>
-
- * elf32-v850.c (v850_elf_relocate_section): Detect the absence of
- a hash table.
-
-Mon Nov 30 15:28:09 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * elf32-sh.c (elf/sh.h): Include.
- sh_reloc_type: Delete. Changed all references to elf_sh_reloc_type.
- (sh_elf_howto_tab): Add HOWTO for R_SH_SWITCH8.
- (sh_reloc_map): Map BFD_RELOC_8_PCREL to R_SH_SWITCH8.
- (sh_elf_relax_delete_bytes): Handle R_SH_SWITCH8.
- * Makefile.in: Add dependency of elf32-sh.lo on $(INCDIR)/elf/sh.h.
-
-Fri Nov 27 17:51:38 1998 Geoff Keating <geoffk@ozemail.com.au>
-
- * elflink.h (compute_bucket_count): Don't allow minsize==0, it
- causes division by zero later on.
-
-Thu Nov 26 11:19:35 1998 Dave Brolley <brolley@cygnus.com>
-
- * elf32-fr30.c (fr30_elf_pc9_reloc,fr30_elf_pc12_reloc): Not
- needed.
-
-1998-11-25 DJ Delorie <dj@cygnus.com>
-
- * coff-i386.c (i3coff_object_p): Remove hack. Use new emulation
- hook now.
-
-Tue Nov 24 10:25:27 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-fr30.c (fr30_elf_relocate_section): Call
- fr30_final_link_relocate.
- (fr30_final_link_relocate): New function: Handle I20 and I32
- relocs.
- (fr30_elf_i32_reloc): New function: Handle I32 relocs.
- (fr30_elf_pc9_reloc): New function: Handle 9_PCREL relocs.
- (fr30_elf_pc12_reloc): New function: Handle 12_PCREL relocs.
-
- * elf32-v850.c (v850_elf_relocate_section): Reset hi16s reloc
- chain to empty.
-
- The following changes are based on a patch submitted by Gianluca
- Moro <glctr@abc.it>:
-
- (v850_elf_perform_relocation): Only update a hi16s reloc if it has
- not already been updated.
- (find_remembered_hi16s_reloc): New parameter 'already_found'
- returns state of remembered hi16s reloc.
- (remember_hi16s_reloc): Set 'found' field to false.
- (hi16s_location): Add 'found' field.
-
-1998-11-23 DJ Delorie <dj@cygnus.com>
-
- * coff-i386.c (bfd_pe_dll_not_recognized_hack): the linker wants
- to see .DLL files as unrecognized.
- (i3coff_object_p): Sorry, had to hack it to not recognize these
- files (pei-i386) on request.
-
-1998-11-23 DJ Delorie <dj@cygnus.com>
-
- * opncls.c (bfd_make_readable): need more cleanup for symbols and
- relents. Call bfd_check_format to reinitialize.
-
-Fri Nov 20 14:21:36 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-fr30.c (fr30_elf_relocate_section): Remove spurious
- warnings.
-
-Thu Nov 19 14:42:15 1998 Geoffrey Noer <noer@cygnus.com>
-
- * aclocal.m4: regenerate
- * configure: regenerate
-
-Tue Nov 17 20:23:35 1998 Richard Henderson <rth@cygnus.com>
-
- * elf-bfd.h (struct elf_link_hash_entry): Add vtable_entries_size.
- * elf.c (_bfd_elf_link_hash_newfunc): Clear it.
- * elflink.h (elf_gc_propagate_vtable_entries_used): Copy it, and
- respect it as an upper bound on what memory to reference.
- (elf_gc_smash_unused_vtentry_relocs): Likewise.
- (elf_gc_record_vtentry): Handle as-yet undefined vtables. Set and
- update vtable_entries_size appropriately.
-
-Tue Nov 17 15:28:31 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-fr30.c (fr30_reloc_type_lookup): Used integers to hold
- reloc number.
-
-Mon Nov 16 22:19:21 1998 DJ Delorie <dj@cygnus.com>
-
- * archive.c (bfd_ar_hdr_from_filesystem): support BFD_IN_MEMORY
- bfds; they have no "file" so we fake it.
- * bfd-in2.h: add bfd_make_writable and bfd_make_readable (regen)
- * libbfd.c (bfd_write): Allow writing to BFD_IN_MEMORY bfds by
- resizing the memory buffer.
- * opncls.c (bfd_make_writable): New function; lets you write a
- bfd_create'd bfd to an in-memory buffer.
- (bfd_make_readable): New function; lets you read back that buffer
- as if it were from bfd_openr. Used to build generated archive
- members (winsup's ld's dlltool)
-
-Mon Nov 16 19:15:19 1998 Dave Brolley <brolley@cygnus.com>
-
- * po/bfd.pot: Regenerated.
-
-Mon Nov 16 10:57:06 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-v850.c (hi16s_location): Replaced fixed size array with
- linked list.
-
-Sun Nov 15 20:28:25 1998 Richard Henderson <rth@cygnus.com>
-
- * elf64-alpha.c (elf64_alpha_relax_section): Search for the proper
- element of the gotentry list for local symbols too.
- (elf64_alpha_relocate_section): Unify local and global handling.
- Assert that gotent->use_count > 0.
-
-Sat Nov 14 15:16:01 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in (vms_alpha_vec): Rename from evax_alpha_vec, and
- update for file name changes of July 2, 1998.
- (vms_vax_vec): New.
- * configure: Rebuild.
-
-Thu Nov 12 19:19:54 1998 Dave Brolley <brolley@cygnus.com>
-
- * po/bfd.pot: Regenerated.
-
-Tue Nov 10 16:17:06 1998 Geoffrey Noer <noer@cygnus.com>
-
- * acinclude.m4, config.bfd: detect cygwin* instead of cygwin32*.
- * aclocal.m4, configure: regenerate
-
-Tue Nov 10 15:13:59 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf.c (prep_headers): Add support for bfd_arch_fr30.
-
-Tue Nov 10 13:37:36 1998 Felix Lee <flee@cygnus.com>
-
- * acinclude.m4 (BFD_HAVE_SYS_PROCFS_TYPE,
- BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): didn't define macro when value
- was cached.
- * aclocal.m4, configure: regenerated.
-
-Tue Nov 10 14:31:01 1998 Catherine Moore <clm@cygnus.com>
-
- * elf32-d10v.c (reloc_type): Add R_D10V_GNU_VTINHERIT and
- R_D10V_GNU_VTENTRY relocs.
- (elf_d10v_howto_table): Likewise.
- (d10v_reloc_map d10v_reloc_map): Likewise.
- (elf32_d10v_gc_mark_hook): New.
- (elf32_d10v_gc_sweep_hook): New.
- (elf32_d10v_check_relocs): New.
- (elf32_d10v_relocate_section): New.
- (elf_backend_relocate_section): Define.
- (elf_backend_can_gc_sections): Define.
-
-Sat Nov 7 18:07:51 1998 Peter Schauer <peter.schauer@regent.e-technik.tu-muenchen.de>
-
- * Makefile.am (BFD32_BACKENDS): Move vms files here...
- (BFD64_BACKENDS): ...from here.
- (BFD32_BACKENDS_CFILES): Move vms files here...
- (BFD64_BACKENDS_CFILES): ...from here.
- * Makefile.in: Rebuild.
-
-Wed Nov 4 15:58:48 1998 Nick Clifton <nickc@cygnus.com>
-
- * Makefile.am: Add FR30 target.
- * Makefile.in: Add FR30 target.
- * archures.c: Add support for FR30.
- * config.bfd: Add support for FR30.
- * configure.in: Add support for FR30.
- * reloc.c: Add support for FR30 relocations.
- * targets.c: Add support for FR30 relocations.
- * bfd-in2.h: Regenerate.
- * configure: Regenerate.
- * libbfd.h: Regenerate.
- * cpu-fr30.c: New file.
- * elf32-fr30.c: New file.
-
-Mon Nov 2 14:59:33 1998 Geoffrey Noer <noer@cygnus.com>
-
- * configure.in: detect cygwin* instead of cygwin32*
- * configure: regenerate
-
-Sun Nov 1 19:32:28 1998 Jeffrey A Law (law@cygnus.com)
-
- * elf-m10300.c (mn10300_elf_relax_section): Do not use alloca,
- use bfd_malloc and free instead and check return value from bfd_malloc.
-
-Sun Nov 1 16:20:35 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * libbfd-in.h (_bfd_dwarf1_find_nearest_line): Declare.
- * libbfd.h: Rebuild.
-
- * elf32-mips.c (mips_elf_dynsym_sec_names): Comment out.
- (SIZEOF_MIPS_DYNSYM_SECNAMES): Likewise.
- (MIPS_TEXT_DYNSYM_SECN): Likewise.
- (_bfd_mips_elf_fake_sections): Don't set sh_info field of a .hash
- section.
- (struct mips_elf_link_hash_table): Remove dynsym_sec_strindex
- field.
- (mips_elf_link_hash_table_create): Don't initialize
- dynsym_sec_strindex.
- (mips_elf_gc_mark_hook): Add default case to avoid warning.
- (mips_elf_size_dynamic_sections): Generate a section symbol for
- every output section.
- (mips_elf_finish_dynamic_sections): Count all sections for
- DT_MIPS_UNREFEXTNO.
- (mips_elf_finish_dynamic_sections): Use dynamic symbols for all
- output sections.
-
-Sun Nov 1 12:46:53 1998 Geoff Keating <geoffk@ozemail.com.au>
-
- * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Allocate two slots
- for later PLT entries in large PLTs.
- (ppc_elf_finish_dynamic_symbol): Allow for the extra slots.
-
-Sat Oct 31 20:10:09 1998 Jeffrey A Law (law@cygnus.com)
-
- * elf32-ppc.c (ppc_elf_reload_section): Fix typo.
-
-1998-10-26 15:58 Ulrich Drepper <drepper@cygnus.com>
-
- * elf-bfd.h (struct elf_link_hash_entry): Add new field elf_hash_value.
- * elflink.h (elf_collect_hash_codes): New function. This function is
- called for each exported symbol and we compute the ELF hash value for
- it.
- (compute_bucket_value): New function. It is called from
- size_dynamic_sections to determine the hash table size. When we are
- optimizing a better, but slower, algorithm is used.
- (size_dynamic_sections): Call compute_bucket_value.
-
- * elf.c (bfd_elf_hash): Optimize the hash function a bit.
-
-Mon Oct 19 20:03:21 1998 Catherine Moore <clm@cygnus.com>
-
- * elf32-sh.c: Add HOWTO entries for R_SH_GNU_VTINHERIT and
- R_SH_GNU_VTENTRY.
- (sh_elf_gc_mark_hook): New.
- (sh_elf_gc_sweep_hook): New.
- (sh_elf_check_relocs): New.
- (elf_backend_can_gc_sections): Define.
-
-Mon Oct 19 16:57:05 1998 Felix Lee <flee@cygnus.com>
-
- * acinclude.m4: undo previous gettext change
- * aclocal.m4: rebuild with right version of aclocal.
-
-Mon Oct 19 01:47:21 1998 Felix Lee <flee@cygnus.com>
-
- * acinclude.m4, aclocal.m4: move gettext-related fragments from
- aclocal.m4 to acinclude.m4, so they don't get lost.
-
- * elfcore.h: rewrite for better corefile support.
- * elf.c (elfcore_*): new functions.
- * elf-bfd.h (elf_obj_tdata): new structure members.
- * acconfig.h, acinclude.m4, configure.in: add feature-tests for
- flavor of procfs.
- * aclocal.m4, config.in, configure, Makefile.in: regenerated.
-
-Fri Oct 16 14:07:45 1998 Catherine Moore <clm@cygnus.com>
-
- * elf32-m32r.c: Add HOWTO entries for R_M32R_GNU_VTINHERIT
- and R_M32R_GNU_VTENTRY.
- (elf_backend_can_gc_sections): Define.
- (m32r_elf_check_relocs): New.
- (m32r_elf_gc_mark_hook): New.
- (m32r_elf_gc_sweep_hook): New.
- (m32r_elf_relocate_section): Handle VT relocs.
-
-Mon Oct 12 14:18:40 1998 Nick Clifton <nickc@cygnus.com>
-
- * coff-arm.c (arm_relocate_section): Remove redundant test.
-
- * bfd-in2.h (struct reloc_howto_struct): Improve comment to make
- cleat that the 'bitsize' field is the size of the bitfield AFTER
- relocation not before.
-
- * elf32-m32r.c (R_M32R_18_PCREL): Fix size of bitfield.
-
- * coff-mips.c (mips_relocate_hi): Cope with missing refhi or reflo
- relocs.
-
-Tue Oct 6 09:20:44 1998 Catherine Moore <clm@cygnus.com>
-
- * elf32-sparc.c: Add HOWTO entries for R_SPARC_GNU_VTINHERIT and
- R_SPARC_GNU_VTENTRY.
- (elf32_sparc_check_relocs): Handle them.
- (elf32_sparc_reloc_type_lookup): Likewise.
- (elf32_sparc_relocate_section): Likewise.
- (elf32_sparc_gc_mark_hook): New.
- (elf32_sparc_gc_sweep_hook): New.
-
-Mon Oct 5 14:55:30 1998 Jeffrey A Law (law@cygnus.com)
-
- * som.c (som_finish_writing): Perform some sanity checks when
- writing an executable or shared library.
-
-Mon Oct 5 12:02:31 1998 Gavin Romig-Koch <gavin@cygnus.com>
-
- * dwarf1.c : New file. Adds _bfd_dwarf1_find_nearest_line.
- * configure.in (elf): Add dwarf1.lo.
- * elf_bfd.h (elf_ob_tdata): Add dwarf1_find_line_info.
- * elf.c (_bfd_elf_find_nearest_line): Add call to
- _bfd_dwarf1_find_nearest_line.
- * elf32-mips.c (_bfd_mips_elf_find_nearest_line):
- Add call to _bfd_dwarf1_find_nearest_line.
- * configure: Rebuilt.
-
-Mon Oct 5 10:06:22 1998 Catherine Moore <clm@cygnus.com>
-
- * elflink.h (elf_gc_sections): Do not allow garbage
- collection if dynamic sections have been created.
-
-Mon Oct 5 09:07:37 1998 Catherine Moore <clm@cygnus.com>
-
- * elf32-v850.c: Add HOWTO entries for R_V850_GNU_VTINHERIT and
- R_V850_GNU_VTENTRY.
- (v850_elf_check_relocs): Handle VTINHERIT and VTENTRY relocs.
- (v850_elf_perform_relocation): Likewise.
- (v850_elf_final_link_relocate): Likewise.
- (v850_elf_relocate_section): Likewise.
- (v850_elf_gc_sweep_hook): New routine.
- (v850_elf_gc_mark_hook): New routine.
- (elf_backend_can_gc_sections): Define.
-
-Mon Oct 5 09:04:25 1998 Catherine Moore <clm@cygnus.com>
-
- * elf32-m68k.c (elf_m68k_gc_sweep_hook): Don't assume
- that dynobj exists.
-
-Sun Oct 4 23:29:34 1998 David Edelsohn <edelsohn@mhpcc.edu>
-
- * rs6000-core.c (rs6000coff_core_file_matches_executable_p):
- Declare size as bfd_size_type.
- (rs6000coff_get_section_contents): Declare count as bfd_size_type.
-
-Sun Oct 4 20:38:29 1998 Jeffrey A Law (law@cygnus.com)
-
- * cpu-hppa.c (bfd_hppa20_arch): Define. Link it into the bfd_hppa_arch
- structure.
- * som.c (CPU_PA_RISC2_0): Define.
- (_PA_RISC2_0_ID): Likewise.
- (som_finish_writing): Use CPU_PA_RISC2_0 for the system_id as needed.
-
-Sun Oct 4 21:19:09 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elflink.h (elf_link_add_object_symbols): When a versioned symbol
- has a base which is already defined, only add the referenced
- symbol to the dynamic symbol table if it is defined or referenced
- by a regular file.
-
- * elf32-i386.c (elf_i386_info_to_howto_rel): Handle vtable relocs
- correctly.
-
-1998-09-27 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * elflink.h (elf_link_add_object_symbols): Undo last change.
-
-Wed Sep 23 16:09:31 1998 Richard Henderson <rth@cygnus.com>
-
- * elflink.h (elf_link_add_object_symbols): Don't record a dynamic
- symbol for the indirect alias to a versioned symbol.
-
-Mon Sep 21 12:15:22 1998 Catherine Moore <clm@cygnus.com>
-
- * elf32-i386.c (elf32_i386_vtinherit_howto): New.
- (elf32_i386_vtentry_howto): New.
- (elf_i386_reloc_type_lookup): Return elf32_i386_vtentry_howto
- or elf32_i386_vtinherit_howto on lookup.
-
-Sun Sep 20 00:48:07 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * elf32-m68k.c: Include "elf/m68k.h". Remove definition of enum
- reloc_type. Rename R_68K__max to R_68K_max.
- (howto_table): Use _bfd_elf_rel_vtable_reloc_fn for a VTENTRY
- reloc.
-
-Sun Sep 20 00:09:25 1998 Chris Torek <torek@bsdi.com>
-
- * libbfd.c (bfd_getb32): Rewrite expression to get better code.
- (bfd_getl32, bfd_getb_signed_32, bfd_getl_signed_32): Likewise.
-
- * libbfd.c (bfd_log2): Cast to bfd_vma before shifting, not
- after.
-
-Sat Sep 19 22:42:23 1998 Doug Rabson <dfr@nlsystems.com>
-
- * elflink.h (elf_link_add_object_symbols): Ensure that the warning
- message has a null byte terminator.
-
-Fri Sep 18 14:35:29 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-v850.c (v850_elf_perform_relocation): Ignore contents of
- word subject to R_V850_32 relocation.
-
-Thu Sep 17 17:20:36 1998 Nick Clifton <nickc@cygnus.com>
-
- * dwarf2.c: Add comment describing problem computing line numbers
- for undefined symbols at link time.
-
-Thu Sep 17 16:03:28 1998 Richard Henderson <rth@cygnus.com>
-
- * elf64-alpha.c (elf64_alpha_adjust_dynamic_symbol): Don't
- transform a defweak into a plt entry.
- (elf64_alpha_calc_dynrel_sizes): Allow room for secondary
- plt entry references to receive a RELATIVE reloc.
- (elf64_alpha_finish_dynamic_symbol): Fill them in.
- (elf64_alpha_relocate_section): Assert we don't overrun
- the allocated relocation space.
-
-Wed Sep 16 18:03:13 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf.c (swap_out_syms): Always treat section symbols as
- special, even if they are attached to a common section.
-
-Wed Sep 16 10:34:13 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-v850.c (v850_elf_symbol_processing): Move symbols in
- sections with v850 common section attributes into named v850
- common sections.
- (v850_elf_add_symbol_hook): Move symbols in sections with v850
- common section attributes into named v850 common sections.
-
-Wed Sep 16 11:26:49 CDT 1998 Catherine Moore <clm@cygnus.com>
-
- * elf32-arm.c (elf32_arm_gc_mark_hook): Remove print
- statement.
-
-1998-09-15 Geoff Keating <geoffk@ozemail.com.au>
-
- * elf32-ppc.c (ppc_elf_relocate_section): Reverse output_offset
- part of Vladimir's change of 1998-08-19. Make a R_PPC_SDAREL16
- reloc to the wrong section a warning, not an error. .dynsbss
- is not an output section, so there is no need to check for it.
-
-Tue Sep 15 12:40:05 1998 Catherine Moore <clm@cygnus.com>
-
- * elf-bfd.h: Add argument to elf_backend_get_symbol_type.
-
-Tue Sep 15 08:34:40 1998 Catherine Moore <clm@cygnus.com>
-
- * elf.c (swap_out_syms): Pass type to elf_backend_get_symbol_type.
- * elf32-arm.c: Add HOWTO entries for R_ARM_GNU_VTINHERIT and
- R_ARM_GNU_VTENTRY.
- (elf32_arm_gc_mark_hook): New.
- (elf32_arm_gc_sweep_hook): New.
- (elf32_arm_check_relocs): New.
- (elf32_arm_final_link_relocate): Handle VTINHERIT and VTENTRY
- relocations.
- (elf32_arm_relocate_section): Handle VTINHERIT and VTENTRY
- relocations.
-
-1998-09-10 Geoff Keating <geoffk@ozemail.com.au>
-
- * elf32-ppc.c (ppc_elf_relocate_section): If dynobj is NULL,
- assume there is no PLT or GOT.
-
-Wed Sep 9 14:24:12 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-arm.c (elf32_arm_find_nearest_line): New function: just
- like _elf_bfd_find_nearest_line() except that STT_ARM_TFUNC is
- also accepted as a function symbol type.
-
-Mon Sep 7 13:24:03 1998 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
-
- * rs6000-core.c (_LONG_LONG): Define for AIX 4.x only.
-
-Sat Sep 5 20:40:18 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * libbfd-in.h (_bfd_nolink_bfd_gc_sections): Correct definition to
- match definition of _bfd_gc_sections field.
- * libbfd.h: Rebuild.
-
-Fri Sep 4 13:54:23 1998 David Miller <davem@dm.cobaltmicro.com>
-
- * elf32-sparc.c (elf32_sparc_relocate_section): Properly adjust
- the addend of a dynamic relocation referencing a section.
- * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
- (sparc64_elf_finish_dynamic_symbol): Fix the PLT relocation offset.
-
-Thu Sep 3 17:28:50 1998 Richard Henderson <rth@cygnus.com>
-
- * elflink.h (bfd_elfNN_size_dynamic_sections): Verify that the
- bed has a size_dynamic_sections routine before trying to use it.
-
-Mon Aug 31 14:49:22 1998 Richard Henderson <rth@cygnus.com>
-
- * elf32-mips.c (elf_mips_gnu_vtentry_howto): Use
- _bfd_elf_rel_vtable_reloc_fn.
-
-Mon Aug 31 10:23:40 1998 Catherine Moore <clm@cygnus.com>
-
- * Makefile.am: Add elf32-arm.c.
- * Makefile.in: Rebuild.
- * elf-bfd.h: Add elf_backend_get_symbol_type.
- * elf.c (swap_out_syms): If defined, call
- elf_backend_get_symbol_type.
- * elf32-arm.c: Define elf_backend_get_symbol_type.
- (elf32_arm_get_symbol-type): New routine.
- (record_thumb_to_arm_glue): Change to use STT_ARM_TFUNC.
- (bfd_elf32_arm_process_before_allocation): Change to
- check for STT_ARM_TFUNC.
- (elf32_arm_final_link_relocate): Likewise.
- * elfxx-target.h: Add elf_backend_get_symbol_type.
-
-Fri Aug 28 19:44:07 1998 Richard Henderson <rth@cygnus.com>
-
- * archures.c (bfd_mach_alpha_ev[456]): New.
- * cpu-alpha.c: Rework to match these types.
- * bfd-in2.h: Rebuild.
-
-Fri Aug 28 19:38:53 1998 Richard Henderson <rth@cygnus.com>
-
- * elf-bfd.h (_bfd_elf_rel_vtable_reloc_fn): Declare.
- * elf.c (_bfd_elf_rel_vtable_reloc_fn): New.
-
- * elf32-i386.c (elf_howto_table): Add vtable relocs.
- (elf_i386_reloc_type_lookup): Recognize them.
- (elf_i386_check_relocs): Pass them off to generic code.
- (elf_i386_relocate_section): Ignore them.
- (elf_i386_gc_mark_hook, elf_i386_gc_sweep_hook): New.
- (elf_backend_can_gc_sections): True.
-
-Thu Aug 20 15:03:45 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-arm.c (elf32_thumb_to_arm_stub): Check sym_sec is not NULL
- before looking at owner field.
- (elf32_arm_to_thumb_stub): Ditto.
- (elf32_arm_relocate_section): Compute name before calling
- elf32_arm_final_link_relocate().
-
-Thu Aug 20 11:30:17 1998 Michael Snyder <msnyder@cleaver.cygnus.com>
-
- * elf.c: comment and formatting cleanups.
- * elfcore.h: ditto.
-
-Wed Aug 19 15:43:26 1998 Michael Snyder <msnyder@cleaver.cygnus.com>
-
- * elfcode.h (elf_object_p): Reject files of header type ET_CORE
- (core files are treated differently than object files).
- * elf-bfd.h (_bfd_elf_write_corefile_contents,
- bfd_elf_mkcorefile): declare.
- * elfxx-target.h (_bfd_elf_write_corefile_contents,
- bfd_elf_mkcorefile): add to bfd_target vector.
- * elfcore.h (elf_core_file_p): save the program header table,
- and set the bfd architecture from the elf file header.
- * elf.c (bfd_elf_mkcorefile): new function.
- (_bfd_elf_write_corefile_contents): new function.
- (assign_file_positions_for_segments): add cases for handling
- PT_NOTE segments. (assign_file_positions_except_relocs):
- core files should be handled the same as exec files.
- (prep_headers): identify core files as type ET_CORE.
- (copy_private_bfd_data): identify the sections belonging to
- the PT_NOTE segment.
-
- * elf32-sparc.c (elf32_sparc_final_write_processing):
- add break statement to default case.
-
-1998-08-19 Vladimir N. Makarov <vmakarov@cygnus.com>
-
- * elf32-ppc.c (ppc_elf_relocate_section): Check that output
- section (not input) will be in sections ".sbss", ".sbss2",
- ".sdata", and ".sdata" for R_PPC_SDAREL16, R_PPC_EMB_SDA2REL,
- R_PPC_EMB_SDA21, R_PPC_EMB_RELSDA. In all these cases also ignore
- output_offset for correct evaluation of addend.
-
-Tue Aug 18 11:48:12 1998 Catherine Moore <clm@cygnus.com>
-
- * elf32-arm.c: Add prefix bfd_ to elf32_arm_get_bfd_for_interworking,
- elf32_arm_allocate_interworking_sections and
- elf32_arm_process_before_allocation.
-
-Tue Aug 18 11:46:00 1998 Nick Clifton <nickc@cygnus.com>
-
- * bfd-in.h: Ammend prototype for
- elf32_arm_process_before_allocation to remove surplus third
- argument.
-
- * bfd-in2.h: Regenerate.
-
-Sat Aug 15 20:55:08 1998 Richard Henderson <rth@cygnus.com>
-
- * elf64-alpha.c (elf64_alpha_relax_section): Handle indirect symbols.
-
-Fri Aug 14 09:12:28 1998 Stan Cox <scox@cygnus.com>
-
- * aoutx.h (aout_link_input_section_ext): Use the relocation already
- calculated for RELOC_SPARC_REV32 case.
-
-Thu Aug 13 14:02:02 1998 Catherine Moore <clm@cygnus.com>
-
- * bfd-in.h: Add prototypes for elf32_arm_get_bfd_for_interworking,
- elf32_arm_allocate_interworking_sections and
- elf32_arm_process_before_allocation.
- * bfd-in2.h: Regenerated.
- * elf32-arm.c Define elf32_arm_link_hash_table.
- (insert_thumb_branch): New routine.
- (find_thumb_glue): New routine.
- (find_arm_glue): New routine.
- (record_arm_to_thumb_glue): New routine.
- (record_thumb_to_arm_glue): New routine.
- (elf32_arm_link_hash_table_create): New routine.
- (elf32_arm_get_bfd_for_interworking): New routine.
- (elf32_arm_allocate_interworking_sections) New routine.
- (elf32_arm_process_before_allocation) New routine.
- (elf32_thumb_to_arm_stub): New routine.
- (elf32_arm_to_thumb_stub): New routine.
- (elf32_print_private_bfd_data): Fix typo.
- (elf32_arm_final_link_relocate): Add argument sym_sec.
- Check for branches to thumb symbols in case R_ARM_PC24.
- Check for branches to arm symbols in case R_ARM_THM_PC22.
- (elf32_arm_relocate_section): Pass symbol section to
- elf32_arm_final_link_relocate.
-
-Wed Aug 12 19:00:39 1998 Geoff Keating <geoffk@ozemail.com.au>
-
- * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Generate PLT
- entries unless the symbol is defined in the executable; in
- particular, undefined weak symbols get a PLT entry.
-
-Wed Aug 12 14:48:33 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * libaout.h: Remove nested comment to avoid warning.
-
-Wed Aug 12 08:10:11 1998 Catherine Moore <clm@cygnus.com>
-
- * elf32-arm.c (elf32_arm_final_link_relocate): Rework
- R_ARM_PC24 relocation.
-
-Tue Aug 11 14:42:26 1998 Catherine Moore <clm@cygnus.com>
-
- * elf32-arm.c (elf32_arm_final_link_relocate): Remove unused
- argument is_local. Add argument sym_flags. Check sym_flags
- in R_ARM_ABS32 case. Include addend for R_ARM_THM_PC22 case.
- (elf32_arm_relocate_section): Don't pass local sym and pass
- sym_flags to elf32_arm_final_link_relocate.
-
-Mon Aug 10 20:38:39 1998 Richard Henderson <rth@cygnus.com>
-
- * elf64-alpha.c (elf64_alpha_calc_dynrel_sizes): Correct last change
- to not count too few relocs for dynamicly linked executables.
-
-Mon Aug 10 15:35:34 1998 Richard Henderson <rth@cygnus.com>
-
- * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Never consider
- symbols without a dynamic index dynamic. Consider all weak
- symbols dynamic.
- (elf64_alpha_strip_section_from_output): Don't assume 1-1
- correspondance between input and output sections.
-
-Mon Aug 10 15:31:39 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * elflink.h (elf_gc_common_finalize_got_offsets): For backends
- that use a .got.plt section start the got offset at zero.
-
-Mon Aug 10 17:31:21 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c (ieee_write_processor): Correct the processor ID written
- out for bfd_arch_m68k, accommodating change of March 25.
-
-Sun Aug 9 20:55:44 1998 Catherine Moore <clm@cygnus.com>
-
- * elf32-arm.c (elf32_arm_final_link_relocate): Rework
- R_ARM_THM_RPC22 relocations.
-
-Sat Aug 8 15:15:30 1998 Richard Henderson <rth@cygnus.com>
-
- * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Undef weak symbols
- are always dynamic.
- (elf64_alpha_calc_dynrel_sizes): Allow enough room for RELATIVE
- .got relocs in -Bsymbolic shared objects.
-
-Wed Aug 5 15:48:08 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-arm.c: Add private flags to ELF header.
- (elf32_arm_print_private_bfd_data): New Function.
- (elf32_arm_set_private_flags): New Function.
- (elf32_arm_copy_private_flags): New Function.
- (elf32_arm_merge_private_bfd_data): New Function.
-
-Mon Aug 3 17:10:15 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elf32-sparc.c (elf32_sparc_check_relocs): Permit WPLT30 against
- a local symbol.
- (elf32_sparc_relocate_section): Likewise.
-
-Sun Aug 2 03:19:23 1998 Richard Henderson <rth@cygnus.com>
-
- * elf32-ppc.c (ppc_elf_check_relocs): Init sgot to NULL. Create the
- .got if any relocation referrs to _GLOBAL_OFFSET_TABLE_.
- (ppc_elf_relocate_section): Pull sgot and splt search to the start
- of the function. Recognize no .plt as static linking.
-
-1998-08-01 Ulrich Drepper <drepper@cygnus.com>
-
- * elf32-mips.c (_bfd_mips_elf_section_from_shdr): Don't pass
- ".liblist" string through gettext.
-
-Fri Jul 31 16:38:14 1998 Catherine Moore <clm@cygnus.com>
-
- * Makefile.am: Add support for elf32-arm.lo.
- * Makefile.in: Rebuild.
- * config.bfd (arm-*-elf): Define targ_defvec and targ_selvecs.
- (thumb-*-elf): Define targ_defvec and targ_selvecs.
- * configure.in: Handle bfd_elf32_littlearm_vec and bfd_elf32_bigarm_vec.
- * configure: Regenerate.
- * elf.c: (prep_headers): Support arch_type of EM_ARM.
- * targets.c: Support new targets bfd_elf32_bigarm_vec and
- bfd_target bfd_elf32_littlearm_vec.
- * elf32-arm.c: New file.
-
-Tue Jun 28 19:05:28 1998 Stan Cox <scox@cygnus.com>
-
- * libaout.h (M_SPARCLITE_LE): New machine.
- * sunos.c (MACHTYPE_OK): Add machine M_SPARCLITE_LE.
- * aoutf1.h (sunos_set_arch_mach): Add machine M_SPARCLITE_LE.
- (sunos_write_object_contents): Add machine bfd_mach_sparc_sparclite_le
- * aoutx.h (howto_table_ext): Add relocation R_SPARC_REV32.
- (NAME(aout,machine_type)) Add machine bfd_mach_sparc_sparclite_le
- (aout_link_input_section_ext): Add RELOC_SPARC_REV32 support.
- * elf32-sparc.c (_bfd_sparc_elf_howto_table, sparc_reloc_map,
- elf32_sparc_relocate_section): Rename R_SPARC_32LE to be R_SPARC_REV32
- * libbfd.h (bfd_reloc_code_real_names): Rename BFD_RELOC_SPARC_32LE to
- be BFD_RELOC_SPARC_REV32.
- * reloc.c: Ditto.
- * config.bfd (sparc86x-*-aout): New
-
-Fri Jul 24 13:54:19 1998 Nick Clifton <nickc@cygnus.com>
-
- * linker.c (_bfd_generic_final_link): Allocate NULL symbol before
- actually mapping the output sections.
-
-Fri Jul 24 11:24:29 1998 Jeffrey A Law (law@cygnus.com)
-
-
- * elf-m10300.c (mn10300_elf_howto): Add R_MN10300_24 entry.
- (mn10300_elf_reloc_map): Similarly.
- (mn10300_elf_final_link_relocate): Handle R_MN10300_24.
-
-Fri Jul 24 12:36:04 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elf32-mips.c (elf_mips_howto_table): Add reloc types used on
- Irix 6.
- (bfd_elf32_bfd_reloc_type_lookup): Add default case.
- * elf64-mips.c: Replace all uses of mips_elf64_reloc_type with
- elf_mips_reloc_type defined in elf/mips.h.
-
-1998-07-24 Ulrich Drepper <drepper@cygnus.com>
-
- * elf64-mips.c: Remove reloc_type definition completely. It's now
- in elf/mips.h.
-
-Thu Jul 23 13:33:19 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * elf64-mips.c (mips_elf64_reloc_type): #if 0 out more relocations
- as they are defined in elf/mips.h now.
-
-Thu Jul 23 11:29:43 1998 Jeffrey A Law (law@cygnus.com)
-
-
- * Re-add lost change:
- * elf-m10300.c (elf32_mn10300_link_hash_entry): Add new field
- "movm_stack_size".
- (mn10300_elf_relax_section): Include stack space for register saves
- in the imm8 field of a "call" instruction.
- (compute_function_info): Determine how much stack is allocated by
- the movm instruction. Fix typo.
- (elf32_mn10300_link_hash_newfunc): Initialize movm_stack_size.
-
-Thu Jul 23 11:38:05 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elf32-sparc.c (elf_backend_got_header_size): Define as 4.
- * elf64-sparc.c (elf_backend_got_header_size): Define as 8.
-
-1998-07-22 Ulrich Drepper <drepper@cygnus.com>
-
- * elf32-ppc.c: Change use of pp_reloc_type to elf_ppc_reloc_type.
-
-Wed Jul 22 16:27:18 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-hppa.h: Let ELF header define the enum containing the
- external reloc numbers.
- * elf32-i386.h: Likewise.
-
-1998-07-22 14:57 Ulrich Drepper <drepper@cygnus.com>
-
- * elf-m10300.c: Let ELF header now define the macros to get the enum.
- * elf32-mips.c: Likewise.
- * elf32-ppc.c: Likewise.
-
-Wed Jul 22 13:53:52 1998 Nick Clifton <nickc@cygnus.com>
-
- * bfd-in2.h: Change type of 'class' parameter to 'unsigned int' in
- bfd_coff_set_symbol_class(), in order to avoid K&R compatability
- prblems.
- * bfd-in.h: Regenerate.
- * coffgen.c (bfd_coff_set_symbol_class): Change type of 'class'
- parameter to 'unsigned int' to avoid K&R compatability problems.
-
-Wed Jul 22 16:43:24 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c (ieee_find_nearest_line): Change filename_ptr and
- functionname_ptr to be const. Change line_ptr to be unsigned.
-
- * coffcode.h (coff_link_output_has_begun): Simplify handling when
- macro is not defined. Change second parameter from bfd_link_info
- to coff_final_link_info. Add prototype.
- (coff_final_link_postscript): Simplify handling when macro is not
- defined. Add prototype.
-
-1998-07-22 13:08 Ulrich Drepper <drepper@cygnus.com>
-
- * elf-mn10300.c: Before include system specific ELF header define
- START_RELOC_NUMBERS, RELOC_NUMBER, and END_RELOC_NUMBERS.
- * elf32-mips.c: Likewise.
- * elf32-ppc.c: Likewise.
-
-Wed Jul 22 13:46:51 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elf64-mips.c (mips_elf64_reloc_type): Copy Ulrich's elf32-mips.c
- temporary patch over to elf64-mips.c as well.
-
-1998-07-21 Ulrich Drepper <drepper@cygnus.com>
-
- * elf32-mips.c (reloc_type): Temporarily disable definition of
- standard relocation since they are now defined in elf/mips.h.
-
-Tue Jul 21 09:47:00 1998 Catherine Moore <clm@cygnus.com>
-
- * elf-m10200.c (mn10200_elf_final_link_relocate):
- Modify range test for case R_MN10200_8.
-
- * elf-m10300.c (mn10300_elf_final_link_relocate):
- Modify range test for case R_MN10300_8.
-
-Mon Jul 20 18:50:54 1998 Richard Henderson <rth@cygnus.com>
-
- * elf-bfd.h (struct elf_backend_data): Add got_ & plt_header_size.
- * elf32-i386.c (elf_backend_got_header_size): Define.
- (elf_backend_plt_header_size): Define.
- * elf32-m68k.c, elf32-mips.c, elf32-ppc.c: Likewise.
- * elf32-sparc.c, elf64-alpha.c, elf64-sparc.c: Likewise.
- * elfxx-target.h: Provide a default of zero.
- * elflink.c (_bfd_elf_create_got_section): Use got_header_size.
- * elflink.h (elf_gc_common_finalize_got_offsets): Likewise.
-
- * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Don't remove a PLT
- entry from an executable, even if the plt refcount goes to 0.
-
-Mon Jul 20 12:47:26 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * aoutx.h (NAME(aout,find_nearest_line)): Also remember the
- directory name at the line number.
-
- * elf.c (_bfd_elf_find_nearest_line): Also consider symbols
- with an unspecified type.
-
-Wed Jul 15 11:20:01 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * sunos.c: Add undef of valid to avoid problem on SunOS.
-
-Tue Jul 14 15:30:59 1998 Richard Henderson <rth@cygnus.com>
-
- * config.bfd (i?86-pc-beos{pe,elf,}*): Recognize.
-
-Tue Jul 14 11:22:21 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * elf32-m68k.c (elf_m68k_check_relocs): Also reference count
- R_68K_PCxx and R_68K_xx relocations. Make sure that
- ELF_LINK_HASH_NEEDS_PLT is always set for a PLT reloc reference.
- (elf_m68k_gc_sweep_hook): Also reference count R_68K_PCxx and
- R_68K_xx relocations.
- (elf_m68k_adjust_dynamic_symbol): Reset the plt offset of a symbol
- that has no plt entry.
- (elf_m68k_relocate_section): Ignore the plt offset in a static
- link.
- * elflink.h (elf_adjust_dynamic_symbol): Reset the plt offset for
- an ignored symbol.
- (elf_gc_common_finalize_got_offsets): Set the got offsets also in
- a static link.
-
- * elf32-m68k.c (R_68K_GNU_VTINHERIT, R_68K_GNU_VTENTRY): New reloc
- types.
- (howto_table, reloc_map): Add entries for them.
- (elf_m68k_check_relocs): Handle them. Implement reference
- counting for got and plt entries.
- (elf_m68k_gc_mark_hook, elf_m68k_gc_sweep_hook): New functions.
- (elf_m68k_adjust_dynamic_symbol): Handle unreferenced plt
- symbols.
- (rtype_to_howto_rel, elf_info_to_howto_rel): Delete.
- (elf_m68k_relocate_section): Handle the new reloc types.
- (bfd_elf32_bfd_final_link, elf_backend_gc_mark_hook,
- elf_backend_gc_sweep_hook, elf_backend_can_gc_sections): Define.
- * elflink.h (elf_link_add_object_symbols): When creating an
- indirect reference for symbol versioning also copy the plt
- offset.
- (elf_fix_symbol_flags): When clearing the ELF_LINK_HASH_NEEDS_PLT
- flag also reset the plt offset.
- (elf_link_assign_sym_version): Likewise.
- (elf_gc_common_finalize_got_offsets): Increment the got offset by
- the size of the entry in bytes.
- (elf_gc_allocate_got_offsets): Likewise.
-
-Tue Jul 14 11:18:14 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elflink.h (elf_gc_sections): Return true rather than falling off
- the bottom.
-
- * coffgen.c (bfd_coff_set_symbol_class): Call bfd_alloc, not
- xmalloc.
-
-Mon Jul 13 11:06:31 1998 Nick Clifton <nickc@cygnus.com>
-
- * coff-arm.c: Supress definition of TARGET_UNDERSCORE and add a
- comment describing when it should be enabled.
- Changed definition of USER_LABEL_PREFIX to "", to fall into line
- with GCC sources.
-
-Mon Jul 13 13:06:54 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c (ieee_slurp_external_symbols): Handle call optimization
- information ATN records.
-
-Fri Jul 10 16:31:06 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c (ieee_slurp_external_symbols): Select an appropriate
- section for an absolute symbol in a fully linked file. Based on
- patch from Christian Holland <CHolland@de.lucent.com>.
-
-Wed Jul 8 11:29:56 1998 Manfred Hollstein <manfred@s-direktnet.de>
-
- * coff-m88k.c (m88k_special_reloc): Don't lose the information
- that a symbol is undefined.
-
-Tue Jul 7 21:47:02 1998 Jeffrey A Law (law@cygnus.com)
-
- * som.c (som_bfd_gc_sections): Define.
-
-Mon Jul 6 11:35:50 1998 Nick Clifton <nickc@cygnus.com>
-
- * coff-arm.c (aoutarm_std_reloc_howto): Do not complain about
- overflows in ARM_26D patches, since they have already been
- implmented. Patch submitted by Dr. R.J. Black <rjb@dcs.gla.ac.uk>
-
-Sat Jul 4 12:25:36 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * coffcode.h (coff_write_object_contents): If we have any long
- section names, call coff_write_symbols even if there are no
- symbols.
-
-Fri Jul 3 13:11:35 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elf.c (copy_private_bfd_data): Only set phdr_included once for a
- PT_LOAD segment, rather than only setting it once for the entire
- file.
-
- * elf.c (_bfd_elf_make_section_from_shdr): When setting the LMA,
- rather than ignoring every phdr with a p_paddr of 0, ignore all
- the phdrs if they all have a p_paddr of 0.
-
- * stabs.c (_bfd_write_stab_strings): Check whether the .stabstr
- section was discarded from the link.
-
-Fri Jul 3 14:39:05 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * coff-sh.c (sh_insn_uses_freg): Ignore lowest bit of register number.
-
-Fri Jul 3 14:35:48 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * coff-sh.c (sh_insns_conflict): Load of fpscr conflicts with
- floating point operations.
-
-Thu Jul 2 18:37:25 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * cofflink.c (_bfd_coff_link_input_bfd): Skip undefined global
- function symbols.
-
-Thu Jul 2 14:59:42 1998 Klaus Kaempf <kkaempf@rmi.de>
-
- Merge of vax/vms (read-only) support
- * configure.com: Support Vax target.
- * makefile.vms: Support Vax target.
- * vms.h: Renamed from evax.h, merged vax/vms (read-only) support.
- * vms.c: Renamed from evax-alpha.c, merged vax/vms (read-only)
- support.
- * vms-hdr.c: Renamed from evax-emh.c, merged vax/vms (read-only)
- support.
- * vms-gsd.c: Renamed from evax-egsd.c, merged vax/vms (read-only)
- support.
- * vms-tir.c: Renamed from evax-etir.c, merged vax/vms (read-only)
- support.
- * vms-misc.c: Renamed from evax-misc.c, merged vax/vms (read-only)
- support.
- * libbfd.c (real_read): Use unbuffered read on VMS/Vax.
- * targets.c (bfd_target_ovax_flavour): New flavour.
- (vms_alpha_vec): Renamed from evax_alpha_vec.
- (vms_vax_vec): New.
- (target_vector): Update accordingly.
- * config.bfd (alpha*-*-*vms*): Use vms_alpha_vec, not
- evax_alpha_vec.
- (vax*-*-*vms*): New target.
- * Makefile.am: Update for renamed files. Rebuild dependencies.
- * bfd-in2.h: Rebuild.
- * configure.in, Makefile.in, aclocal.m4: Rebuild.
-
-Thu Jul 2 13:31:55 1998 Ian Lance Taylor <ian@cygnus.com>
-
- Based on patch from Matt Semersky <matts@scd.hp.com>:
- * linker.c (_bfd_generic_final_link): Force a trailing NULL
- pointer on abfd->outsymbols.
- (generic_add_output_symbol): Handle NULL sym parameter.
-
-Wed Jul 1 17:05:53 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf.c (copy_private_bfd_data): Add support for changing VMA or
- LMA of sections.
-
-Wed Jul 1 16:58:50 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * coff-sh.c (sh_relax_delete_bytes): Correct address comparisons
- when handling 32 bit immediate relocs.
- * elf32-sh.c (sh_elf_relax_delete_bytes): Likewise.
-
-Tue Jun 30 09:55:03 1998 Jeffrey A Law (law@cygnus.com)
-
- * section.c (STD_SECTION): Account for recently added gc_mark
- field in struct asection.
-
- * elf-m10300.c (bfd_mn10300_elf_merge_private_bfd_data): New function.
- (bfd_elf32_bfd_merge_private_bfd_data): Define.
-
-Thu Jun 25 18:31:41 1998 Richard Henderson <rth@cygnus.com>
-
- ELF Section-level Garbage Collection:
- * bfd.c (bfd_gc_sections): New.
- * aout-adobe.c: Hook to default implementation.
- * aout-target.h, aout-tic30.c, binary.c, bout.c: Likewise.
- * coff-alpha.c, coff-mips.c, coff-rs6000.c, coffcode.h: Likewise.
- * evax-alpha.c, i386msdos.c, i386os9k.c, ieee.c: Likewise.
- * ihex.c, nlm-target.h, oasys.c, ppcboot.c, srec.c: Likewise.
- * tekhex.c, versados.c: Likewise.
- * libbfd-in.h (_bfd_nolink_bfd_gc_sections): New.
- * targets.c (BFD_JUMP_TABLE_LINK): Add _bfd_gc_sections.
-
- * reloc.c (BFD_RELOC_VTABLE_INHERIT, BFD_RELOC_VTABLE_ENTRY): New.
- (bfd_generic_gc_sections): New.
- * section.c (SEC_KEEP): New.
- (asection): Add gc_mark member.
-
- * elfcode.h (elf_gc*): New name remappings.
- * elflink.h (elf_link_input_bfd): Don't set contents on stabs
- sections to be excluded.
- (elf_gc_mark, elf_gc_sweep, elf_gc_sweep_symbol): New.
- (elf_gc_propogate_vtable_entries_used): New.
- (elf_gc_smash_unused_vtentry_relocs): New.
- (elf_gc_sections, elf_gc_record_vtinherit, elf_gc_record_vtentry): New.
- (elf_gc_common_finalize_got_offsets): New.
- (elf_gc_allocate_got_offsets, elf_gc_common_final_link): New.
- * elfxx-target.h: Add and default gc hooks.
-
- * elf-bfd.h (struct elf_link_hash_entry): Swap got_offset/plt_offset
- for unions.
- (struct elf_obj_tdata): Likewise for local_got_offsets.
- * elf.c, elf-i386.c, elf32-m68k.c, elf32-mips.c: Update all uses.
- * elf32-ppc.c, elf32-sparc.c, elf64-alpha.c: Likewise.
- * elf64-sparc.c, elflink.h: Likewise.
-
- * elf-bfd.h (struct elf_link_hash_entry): Add vtable members.
- (ELF_LINK_HASH_MARK): Define.
- (struct elf_backend_data): Add GC hooks.
- * elf.c (_bfd_elf_link_hash_newfunc): Zero vtable members.
-
- * elf-m10300.c (mn10300_elf_check_relocs): New.
- (mn10300_elf_gc_mark_hook): New.
- (R_MN10300_GNU_VTINHERIT, R_MN10300_GNU_VTENTRY): New.
- (elf_mn10300_howto, mn10300_reloc_map): Handle them.
- (mn10300_elf_final_link_relocate): Likewise.
- (mn10300_elf_relocate_section): Likewise.
- (elf_backend_can_gc_sections): Define.
- * elf32-mips.c (R_MIPS_GNU_VTINHERIT, R_MIPS_GNU_VTENTRY): New.
- (elf_mips_gnu_vtinherit_howto, elf_mips_gnu_vtentry_howto): New.
- (bfd_elf32_bfd_reloc_type_lookup): Handle them.
- (mips_info_to_howto_rel): Likewise.
- (mips_elf_relocate_section): Likewise.
- (mips_elf_check_relocs): Likewise.
- (mips_elf_gc_mark_hook, mips_elf_gc_sweep_hook): New.
- (elf_backend_can_gc_sections): Define.
- * elf32-ppc.c (R_PPC_GNU_VTINHERIT, R_PPC_GNU_VTENTRY): New.
- (ppc_elf_howto_raw): Handle them.
- (ppc_elf_reloc_type_lookup): Likewise.
- (ppc_elf_relocate_section): Likewise.
- (ppc_elf_check_relocs): Reference count .got and .plt entries.
- Handle new vtable relocs.
- (ppc_elf_adjust_dynamic_symbol): Recognize unused .plt entries.
- (ppc_elf_gc_mark_hook, ppc_elf_gc_sweep_hook): New.
- (elf_backend_can_gc_sections): Define.
-
-Fri Jun 26 10:48:23 1998 Jeffrey A Law (law@cygnus.com)
-
- * archures.c (bfd_mach_mn10300): Define.
- * elf-m10300.c: Include elf/mn10300.h
- (elf_mn10300_mach): New function.
- (_bfd_mn10300_elf_final_write_processing): Likewise.
- (_bfd_mn10300_elf_object_p): Likewise.
- (elf_backendfinal_write_processing): Define.
- (elf_backend_object_p): Likewise.
-
-Thu Jun 25 18:31:08 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-v850.c (v850_elf_perform_relocation): Fix HI16_S
- relocation.
-
-Wed Jun 24 17:17:57 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elflink.h (elf_bfd_final_link): Loop over input_bfds using the
- link_next field, not the next field.
-
-Sun Jun 21 19:38:39 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elf.c (map_sections_to_segments): Check the section address
- against the phdr size both with and without a modulo of
- maxpagesize.
-
-Fri Jun 19 17:08:18 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elf32-mips.c (mips_elf_size_dynamic_sections): Only strip a
- linker created empty input section if the output section has the
- same name.
-
- * elflink.h (elf_link_output_extsym): Print an error message if
- _bfd_elf_section_from_bfd_section fails.
-
- * elf.c (_bfd_elf_section_from_bfd_section): Call bfd_set_error on
- failure.
-
-Tue Jun 16 11:55:55 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elf.c (copy_private_bfd_data): Improve handling of Solaris
- native linker output. Avoid putting an empty section in more than
- one segment.
-
-Fri Jun 12 13:30:17 1998 Tom Tromey <tromey@cygnus.com>
-
- * po/Make-in (all-yes): If maintainer mode, depend on .pot file.
- ($(PACKAGE).pot): Unconditionally depend on POTFILES.
-
-Fri Jun 12 13:34:02 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * elf.c (swap_out_syms): New arg relocatable_p.
- Don't add section VMA to symbols for relocatable output.
- (_bfd_elf_compute_section_file_positions): Update call to
- swap_out_syms.
-
-Mon Jun 8 15:20:57 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-v850.c (v850_elf_perform_relocation): Make comparisons
- against 'addend' be signed rather than unsigned.
-
-Sat Jun 6 00:31:21 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-m32r.c: Add prototyps for static functions.
-
- * coff-arm.c: Add prototypes for static functions.
-
-Fri Jun 5 17:21:51 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf.c (elf_sort_sections): Sort by LMA first then VMA, since the
- LMA is used to order sections in a segment.
-
- * elf32-v850.c: Add prototypes for static functions.
- Change type of addend parameter to bfd_vma in various functions.
-
-Fri Jun 5 18:09:58 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * aoutx.h (howto_table_ext): Change RELOC_BASE13 to use
- complain_overflow_signed instead of complain_overflow_bitfield.
-
-Fri Jun 5 15:11:11 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * elf.c (elf_map_symbols): Don't add section VMA to symbol value
- when comparing against 0.
-
-Wed Jun 3 17:52:49 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (config.status): New target.
- * Makefile.in: Rebuild.
-
-Wed Jun 3 12:18:24 1998 Stan Cox <scox@equinox.cygnus.com>
-
- * elf32-sparc.c (elf32_sparc_merge_private_bfd_data): Give an
- error if previous object endianness doesn't match current object.
-
-Tue Jun 2 17:50:59 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-v850.c (v850_elf_print_private_bfd_data): Call
- _bfd_elf_print_private)bfd_data ().
-
-Tue Jun 2 15:29:35 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elflink.h (elf_merge_symbol): Don't always set type_change_ok
- and size_change_ok.
- (elf_link_add_object_symbols): Set type_change_ok and
- size_change_ok before calling elf_merge_symbol.
-
- * elf32-mips.c (mips_elf_relocate_section): If we issue an
- undefined symbol error, don't also issue an overflow error.
-
-Tue Jun 2 13:51:00 1998 Geoff Keating <geoffk@ozemail.com.au>
-
- * elf32-ppc.c (ppc_elf_relocate_section): The target of an
- R_PPC_LOCAL24PC relocation should be local; if not, print an error
- message instead of crashing.
-
-Mon Jun 1 18:23:12 1998 Yuli Barcohen <yuli.barcohen@telrad.co.il>
-
- * archures.c (bfd_mach_cpu32): Define.
- (bfd_default_scan): Add case for 68060. Fix 68332 case to use
- bfd_mach_cpu32.
- * cpu-m68k.c (arch_info_struct): Add m68k:cpu32.
- * ieee.c: Include <ctype.h>.
- (ieee_object_p): Parse out process ID string to make it more
- likely to be acceptable for bfd_scan_arch.
- * bfd-in2.h: Rebuild.
-
-Mon Jun 1 11:12:02 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-m32r.c (m32r_elf_print_private_bfd_data): Also call
- _bfd_elf_print_private_bfd_data() so that the program header will
- be displayed.
-
-Mon Jun 1 12:14:28 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * peicode.h (coff_swap_sym_in): Check for C_SECTION rather than
- 0x68. Reindent. Add some comments.
-
-Fri May 29 09:58:08 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf.c (copy_private_bfd_data): Adjust physical address of
- segment in output BFD to contain LMAs of its sections.
-
-Tue May 26 19:37:47 1998 Stan Cox <scox@equinox.cygnus.com>
-
- * elf32-sparc.c (_bfd_sparc_elf_howto_table, sparc_reloc_map,
- elf32_sparc_relocate_section): Added R_SPARC_32LE for little
- endian data 32 bit relocations.
- (elf32_sparc_merge_private_bfd_data): Check if linking little
- endian objects with big endian objects.
- (elf32_sparc_object_p): Set bfd_mach_sparc_sparclite_le.
- (elf32_sparc_final_write_processing): Set EF_SPARC_LEDATA in e_flags.
- * libbfd.h (bfd_reloc_code_real_names): Added BFD_RELOC_SPARC_32LE.
- * reloc.c: Same.
- * cpu-sparc.c (arch_info_struct): Added sparc:sparclite_le
- * archures.c (bfd_mach_sparc_sparclite_le): New.
- * bfd-in2.h (BFD_RELOC_SPARC_32LE, bfd_mach_sparc_sparclite_le): New.
-
-Thu May 21 16:59:28 1998 Nick Clifton <nickc@cygnus.com>
-
- * peicode.h (add_data_entry): Fix precedence of operators in if ()
- statement.
-
-Tue May 19 18:41:19 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * bfd-in.h: Move over patch to bfd-in2.h.
-
- * reloc.c (bfd_check_overflow): Add casts before shifts which may
- not fit in 32 bits.
- (_bfd_relocate_contents): Likewise.
-
-Mon May 18 14:44:15 1998 Nick Clifton <nickc@cygnus.com>
-
- * peicode.h (add_data_entry): If the section has no private data
- then do not create a Data Dictionary entry for it.
-
-Mon May 18 00:09:28 1998 Richard Henderson <rth@cygnus.com>
-
- * elf64-alpha.c (elf64_alpha_relax_section): Set again on changes.
- (elf64_alpha_can_merge_gots, elf64_alpha_merge_gots,
- elf64_alpha_size_got_sections): Rewrite, handling multiple got
- subsections during relaxation more correctly.
-
-Thu May 14 14:22:58 1998 Nick Clifton <nickc@cygnus.com>
-
- * bfd-in2.h: Add new prototype: bfd_coff_set_symbol_class ().
- Add extra argument to bfd_arm_process_before_allocation ().
- * bfd-in.h: Reflect changes made in bfd-in2.h.
- * coffgen.c (bfd_coff_set_symbol_class): New function. Set the
- coff class of a BFD symbol.
- * coff-arm.c: Add support for interworking between Thumb code and
- non-interworking aware ARM code.
-
-Sun May 10 22:33:59 1998 Jeffrey A Law (law@cygnus.com)
-
- * po/Make-in (install-info): New target.
-
-Thu May 7 17:40:56 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * filemode.c: Remove; not used.
-
- If sysdep.h includes a header file, don't include it again:
- * aix386-core.c: Don't include <stdio.h>, <stddef.h>, or
- <errno.h>.
- * aoutx.h: Don't include <string.h>. Use "sysdep.h" rather than
- <sysdep.h>.
- * archive.c: Don't include <string.h> or <errno.h>.
- * evax-alpha.c; Don't include <stdio.h>.
- * evax-egsd.c: Likewise.
- * evax-etir.c: Likewise.
- * evax-misc.c: Likewise.
- * evax-emh.c: Likewise. Also, don't include <sys/types.h>.
- * hppabsd-core.c: Don't include <stdio.h>, <sys/types.h>, or
- <errno.h>.
- * hpux-core.c: Likewise.
- * netbsd-core.c: Likewise.
- * som.c: Likewise.
- * libbfd.c: Don't include <sys/types.h>.
- * nlmcode.h: Don't include <string.h>.
- * osf-core.c: Don't include <string.h> or <stdio.h>.
- * ptrace-core.c: Don't include <stdio.h>, <sys/types.h>,
- <errno.h>, or <unistd.h>.
- * trad-core.c: Don't include <stdio.h> or <sys/types.h>.
-
-Thu May 7 13:12:50 1998 Klaus Kaempf <kkaempf@progis.de>
-
- * configure.com: If the version number can not be found in
- configure.in, set it to "unknown" rather than "2.8.1".
-
-Wed May 6 09:46:05 1998 Gavin Koch <gavin@cygnus.com>
-
- * elf32-mips.c (elf_mips_mach): New.
- (_bfd_mips_elf_object_p): Use elf_mips_mach.
- (_bfd_mips_elf_final_write_processing): Use the names
- of machines, rather than the numbers. Set both the ARCH
- and MACH in e_flags. Handle a few more specific machines.
- (_bfd_mips_elf_merge_private_bfd_data): Merge both
- EF_MIPS_ARCH and EF_MIPS_MACH.
-
-Tue May 5 21:01:53 1998 Richard Henderson <rth@cygnus.com>
-
- * syms.c (bfd_is_local_label): Revert last change.
- * srec.c (srec_write_symbols): Discard debugging symbols.
-
-Tue May 5 23:36:06 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * som.c: Include <ctype.h>.
- * som.h: Don't include sysdep.h.
-
-Tue May 5 18:29:24 1998 Tom Tromey <tromey@cygnus.com>
-
- * libbfd.h: Rebuilt.
- * libbfd-in.h: Removed gettext includes and defines.
- * sysdep.h: Moved gettext-related includes and defines here.
-
-Tue May 5 16:47:54 1998 Richard Henderson <rth@cygnus.com>
-
- * srec.c (srec_write_symbols): Use bfd_is_local_label rather than
- an ad-hoc test. Kill bogus #if 0 code.
- * syms.c (bfd_is_local_label): Consider BSF_DEBUGGING symbols local.
-
-Mon May 4 16:10:33 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * sunos.c (sunos_check_dynamic_reloc): Don't use the PLT address
- when generating a normal executable for a symbol defined in a
- regular file. When copying a reloc into the output file, adjust
- the addend for a PC relative reloc against a global symbol.
-
-Mon May 4 10:08:18 1998 Tom Tromey <tromey@cygnus.com>
-
- * libbfd.h: Rebuilt.
- * libbfd-in.h (_): Define as dgettext.
-
-Mon May 4 11:02:23 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * coff-arm.c (coff_arm_relocate_section): Cast to bfd_signed_vma,
- not signed.
- * peicode.h (pe_saved_coff_bfd_print_private_bfd_data): Use PARAMS
- when declaring parameter types.
- (pe_saved_coff_bfd_copy_private_bfd_data): Likewise.
-
-Wed Apr 29 15:35:03 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * config.bfd: If we include any ELF targets in targ_defvec and/or
- targ_selvecs, then add the generic ELF targets to targ_selvecs.
- * elf32-gen.c (dummy): New static const variable.
- (elf_generic_info_to_howto): New static function.
- (elf_generic_info_to_howto_rel): New static function.
- (elf_info_to_howto): Define as elf_generic_info_to_howto.
- (elf_info_to_howto_rel): Define as elf_generic_info_to_howto_rel.
- * elf64-gen.c: Same changes as elf32-gen.c.
- * elfcode.h (elf_object_p): For the generic target, ignore a
- failure of bfd_default_set_arch_mach. Fix indentation a bit.
-
-Tue Apr 28 20:05:52 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in (WIN32LIBADD): Add -lintl on cygwin32.
- * configure: Rebuild.
-
-Tue Apr 28 12:16:57 1998 Jason Molenda (crash@bugshack.cygnus.com)
-
- * config.bfd: Update OSR5/Unixware patterns.
-
-Mon Apr 27 18:02:24 1998 Richard Henderson <rth@cygnus.com>
-
- * elf.c (assign_file_positions_for_segments): Allow for holes
- between sections added by a link script.
-
-Mon Apr 27 11:49:55 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Change version number to 2.9.4
- * configure: Rebuild.
-
- Based on patch from H.J. Lu <hjl@gnu.org>:
- * elf.c (bfd_elf_get_bfd_needed_list): New function.
- * bfd-in.h (bfd_elf_get_bfd_needed_list): Declare.
- * bfd-in2.h: Rebuild.
-
-Sat Apr 25 20:07:53 1998 Richard Henderson <rth@cygnus.com>
-
- * elf64-alpha.c (struct alpha_relax_info): Replace elfsym with other.
- Change all users.
-
-Sat Apr 25 18:29:07 1998 Richard Henderson <rth@cygnus.com>
-
- * elf64-alpha.c (struct alpha_relax_info): Add tsec & elfsym members.
- (elf64_alpha_relax_section): Fill them in.
- (elf64_alpha_relax_opt_call): Implement more than a stub.
- (elf64_alpha_add_symbol_hook): Don't set SEC_LOAD or default
- alignment on .scommon.
- (elf64_alpha_merge_gots): Merge use counts as well.
-
-Sat Apr 25 14:07:29 1998 Richard Henderson <rth@cygnus.com>
-
- * elf64-alpha.c (elf64_alpha_relax_section): Use the proper section
- for calculating a local symbol's address.
- (elf64_alpha_calc_got_offsets): Skip entries with 0 use count.
- Set the .got's cooked size as well as the raw size.
-
-Fri Apr 24 09:16:00 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-v850.c (v850_elf_print_private_bfd_data): Add
- internationalisation of printed information.
-
- * coff-arm.c (coff_arm_print_private_bfd_data): Add
- internationalisation of printed information.
-
-Fri Apr 24 12:09:18 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * syms.c (struct indexentry): Change directory_name, file_name,
- and function_name fields to char *.
- (struct stab_find_info): Change cached_file_name field to char *.
-
-Thu Apr 23 08:13:04 1998 Nick Clifton <nickc@cygnus.com>
-
- * peicode.h (dir_names): Add missing N_() macros to dir_names array.
-
-Wed Apr 22 13:06:15 1998 Tom Tromey <tromey@cygnus.com>
-
- * po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).
-
-Wed Apr 22 17:48:48 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (install-data-local): Make $(includedir).
- * Makefile.in: Rebuild.
-
-Wed Apr 22 13:06:15 1998 Tom Tromey <tromey@cygnus.com>
-
- * libbfd-in.h: Use `gettext' and not `dgettext' for now.
-
-Wed Apr 22 12:53:40 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (INCLUDES): Add -I$(srcdir)/../intl -I../intl.
- * Makefile.in: Rebuild.
-
- * bfd-in2.h: Rebuild for Nick's changes.
-
-Tue Apr 21 23:11:51 1998 Richard Henderson <rth@cygnus.com>
-
- * archive.c (_bfd_generic_read_ar_hdr_mag): Fix lossage in last
- change wrt length == max_namelen.
-
-Tue Apr 21 21:19:36 1998 Tom Tromey <tromey@scribbles.cygnus.com>
-
- * Many files: Added gettext invocations around user-visible
- strings.
- * libbfd-in.h: Added gettext 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.
- * Makefile.am (SUBDIRS): Added po.
- (POTFILES): New macro.
- (po/POTFILES.in): New target.
- (SOURCE_HFILES): New macro.
- (HFILES): Use it.
- * po/Make-in, po/POTFILES.in, po/bfd.pot: New files.
-
-Tue Apr 21 13:38:18 1998 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * elfcore.h (bfd_prstatus): Copy core_prstatus from the first
- NT_PRSTATUS note section encountered, it contains the status of
- the currently executing thread when the core file was written.
-
-Tue Apr 21 10:00:12 1998 Nick Clifton <nickc@cygnus.com>
-
- * libcoff.h: Add extra parameter to
- bfd_coff_link_output_has_begun overrideable function.
- * cofflink.c: Pass extra parameter to
- bfd_coff_link_output_has_begun function.
- * bfd-in.h: Add prototypes for exported ARM interworking
- functions.
- * peicode.h: ARM specific code reorganised to conform to BFD
- coding conventions.
- * coffcode.h: ARM specific code reorganised to conform to BFD
- coding conventions.
- * coff-arm.c: Code reorganised to conform to the BFD coding
- conventions. Global variables have been moved into an ARM
- specific hash table structure and a new function:
- bfd_arm_get_bfd_for_interworking() has been created which is
- called from the linker scripts.
-
-Tue Apr 21 00:11:51 1998 Richard Henderson <rth@cygnus.com>
-
- * archive.c (_bfd_generic_read_ar_hdr_mag): Simplify end-of-name test.
-
- * elf64-alpha.c (elf64_alpha_find_reloc_at_ofs): Renamed from
- elf64_alpha_relax_find_reloc_ofs. Changed all callers.
- (elf64_alpha_add_symbol_hook): Put small commons in .scommon not .sbss.
- (elf64_alpha_size_got_sections): Don't merge .got sections twice.
-
-Sat Apr 18 01:21:04 1998 Stan Cox <scox@cygnus.com>
-
- * config.bfd: Added sparc86x support.
-
-Fri Apr 17 22:29:04 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elf32-mips.c (mips_elf_relocate_section): Do not complain about
- an out of range pc-relative jump/call to an undefined weak symbol.
-
-Thu Apr 16 13:49:00 1998 Richard Henderson <rth@cygnus.com>
-
- * elf64-alpha.c (elf64_alpha_do_reloc_gpdisp): Do all gpdisp
- comparisons signed.
-
-Thu Apr 16 11:43:33 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * archive.c (bfd_generic_archive_p): If a slurp subroutine returns
- an error other than bfd_error_system_call, set the error to
- bfd_error_wrong_format.
-
- * targets.c (bfd_target_vector) [SELECT_VECS not defined]: Add
- bfd_elf32_powerpcle_vec.
-
- * elf.c (copy_private_bfd_data): If all the p_paddr fields in the
- program segments are zero, don't set p_paddr_valid.
-
-Wed Apr 15 22:15:16 1998 Richard Henderson <rth@cygnus.com>
-
- * elf64-alpha.c: Initial implementation of relaxation --
- (struct alpha_elf_link_hash_entry): Add use_count member.
- (elf64_alpha_check_relocs): Initialize and increment it.
- (elf64_alpha_can_merge_gots): Check it when considering merging.
- (elf64_alpha_merge_gots): Drop entries with zero use.
- (elf64_alpha_calc_got_offsets_for_symbol): Likewise.
- (elf64_alpha_always_size_sections): Split out got sizing ...
- (elf64_alpha_size_got_sections): ... here. New function.
- (elf64_alpha_relax_find_reloc_ofs): New function.
- (elf64_alpha_relax_with_lituse): Likewise.
- (elf64_alpha_relax_without_lituse): Likewise.
- (elf64_alpha_relax_opt_call): Likewise.
- (elf64_alpha_relax_section): Likewise.
- (elf64_alpha_add_symbol_hook): Likewise.
- (elf64_alpha_howto_table): Implement GPRELHIGH/LOW & IMMED_GP_16.
- (elf64_alpha_relocate_section): Likewise.
- (bfd_elf64_bfd_relax_section): Define.
- (elf_backend_add_symbol_hook): Likewise.
-
-Wed Apr 15 16:08:46 1998 Richard Henderson <rth@cygnus.com>
-
- * elf.c (prep_headers): Use new EM_SPARCV9 symbol.
- * elf64-sparc.c (ELF_MACHINE_CODE): Likewise.
- (ELF_MACHINE_ALT1): New. Set to EM_OLD_SPARC64.
-
-Wed Apr 15 11:34:33 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Add -lkernel32 to WIN32LIBADD on cygwin32.
- * configure: Rebuild.
-
-Mon Apr 13 16:46:27 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (libbfd_la_LIBADD): Add @WIN32LIBADD@.
- (libbfd_la_LDFLAGS): Add @WIN32LDFLAGS@.
- * configure.in: Define and substitute WIN32LDFLAGS and
- WIN32LIBADD.
- * aclocal.m4: Rebuild with new libtool.
- * configure, Makefile.in: Rebuild.
-
-Fri Apr 10 13:44:27 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * coffcode.h (coff_write_object_contents): Move a PE COMDAT symbol
- before any other symbols in the same section.
-
-Wed Apr 8 14:50:23 1998 Michael Meissner <meissner@cygnus.com>
-
- * config.bfd (powerpc*-*-*): Remove PowerPC NT support from ELF
- systems.
-
-Tue Apr 7 16:25:31 1998 Gavin Romig-Koch <gavin@cygnus.com>
-
- * dwarf2.c (comp_unit): Move it earlier in the source. Add
- addr_size.
- (read_address): Replace 'bdf*' argument with 'comp_unit*' argument.
- Use addr_size for address size, rather than sizeof(bfd_vma).
- (read_attribute): Replace bdf* argument with 'comp_unit*' argument.
- Fix call to read_address.
- (decode_line_info): Replace bdf* argument with 'comp_unit*' argument.
- Scrap other unneeded arguments. Fix call to read_address.
- (scan_unit_for_functions): Fix call to read_attribute.
- (parse_comp_unit): We now handle more values for addr_size.
- Set addr_size in unit. Fix call to read_attribute and
- decode_line_info.
-
-Tue Apr 7 15:44:47 1998 Gavin Romig-Koch <gavin@cygnus.com>
-
- * dwarf2.c (parse_comp_unit): Drop use of unit->name when it is null.
-
-Tue Apr 7 12:35:18 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * archures.c (bfd_default_scan): Add m68k cases back to default
- switch, reverting patch of March 25, since IEEE support depends
- upon them.
-
-Mon Apr 6 14:06:40 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (diststuff): New target.
- * Makefile.in: Rebuild.
-
-Sun Apr 5 16:21:44 1998 Jeffrey A Law (law@cygnus.com)
-
- * som.c (som_bfd_ar_write_symbol_stuff): Fix computation of
- som_offset when we have an extended name table.
-
-Sun Apr 5 16:04:39 1998 H.J. Lu <hjl@gnu.org>
-
- * Makefile.am (stamp-lib): Check that .libs/libbfd.a exists before
- trying to copy it.
- * Makefile.in: Rebuild.
-
-Fri Apr 3 11:09:42 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * elf32-m68k.c (elf_m68k_size_dynamic_sections): Generate section
- symbols when creating a shared library.
- (elf_m68k_adjust_dynindx): New function, used by above code.
- (elf_m68k_finish_dynamic_sections): Initialize the section
- symbols.
- (elf_m68k_relocate_section): Change abort to BFD_ASSERT.
-
-Wed Apr 1 16:04:02 1998 Nick Clifton <nickc@cygnus.com>
-
- * coff-arm.c (in_reloc_p): Use ARM_RVA32 in place of constant
- value 11.
-
-Wed Apr 1 13:36:58 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * elf32-m68k.c (elf_m68k_relocate_section, case R_68K_PLT*O): Fix
- assertion.
-
-Tue Mar 31 00:12:12 1998 Jeffrey A Law (law@cygnus.com)
-
- * elf-m10300.c (mn10300_elf_relax_section): Correctly handle
- absolute symbols.
-
-Mon Mar 30 12:46:15 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Set version to 2.9.1.
- * configure: Rebuild.
-
- * Branched binutils 2.9.
-
-Mon Mar 30 12:20:50 1998 Brent Baccala <baccala@freesoft.org>
-
- * syms.c (ENABLE_CACHING): Define.
- (struct indexentry): Define.
- (struct stab_cache): Remove.
- (cmpindexentry): New static function.
- (struct stab_find_info): Add new fields: indextable,
- indextablesize, cached_indexentry, cached_offset, cached_stab, and
- cached_file_name. Remove fields: file_cache, function_cache, and
- line_cache.
- (_bfd_stab_section_find_nearest_line): Rewrite to build a sorted
- index table and search it.
-
-Mon Mar 30 10:39:34 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elf.c (_bfd_elf_copy_private_section_data): Call
- copy_private_bfd_data once we've seen the last SEC_ALLOC section.
-
- * cpu-mips.c: Remove trailing comma at end of enumeration list.
-
-Sat Mar 28 16:33:02 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * coff-arm.c: Define all globally visible variables and functions
- only when COFF_WITH_PE is not defined.
- * configure.in (armpe_little_vec, armpe_big_vec): Add
- coff-arm.lo.
- * configure: Rebuild.
-
-Fri Mar 27 16:06:02 1998 Ian Lance Taylor <ian@cygnus.com>
-
- Fix some gcc -Wall warnings:
- * aout-arm.c (MY(fix_pcrel_26)): Add casts to avoid warnings.
- * archive.c (_bfd_generic_read_ar_hdr_mag): Likewise.
- * archures.c (bfd_default_scan): Likewise.
- * bfd.c (bfd_scan_vma): Likewise.
- * binary.c (mangle_name): Likewise
- * coff-arm.c (aoutarm_fix_pcrel_26): Likewise.
- * coff-sh.c (sh_relocate_section): Likewise.
- * coff-stgo32.c (create_go32_stub): Likewise.
- * coffcode.h (coff_slurp_line_table): Likewise.
- * ecoff.c (_bfd_ecoff_write_armap): Likewise.
- * elf.c (_bfd_elf_make_section_from_shdr): Likewise.
- (assign_file_positions_for_segments): Likewise.
- * elf32-mips.c (mips_elf_relocate_section): Likewise.
- * elf32-ppc.c (ppc_elf_add_symbol_hook): Likewise.
- * oasys.c (oasys_write_sections): Likewise.
- * ppcboot.c (ppcboot_object_p): Likewise.
- (mangle_name): Likewise.
- * riscix.c (riscix_fix_pcrel_26): Likewise.
- * srec.c (srec_scan): Likewise.
- * stabs.c (_bfd_write_section_stabs): Likewise.
- * sunos.c (sunos_add_dynamic_symbols): Likewise.
- * aout-ns32k.c (_bfd_ns32k_relocate_contents): Add default case to
- switch. Declare parameters for function pointers.
- * archures.c (bfd_default_scan): Add braces to avoid ambiguous if
- warning.
- * elf.c (elf_sort_sections): Likewise.
- * coff-arm.c (coff_thumb_pcrel_common): Initialize relocation.
- Add default cases to switches.
- (coff_arm_relocate_section): Remove unused local variables.
- Always set rstat.
- (coff_arm_bfd_set_private_flags): Change flag variable to type
- flagword.
- * coff-mips.c (mips_relocate_section): Initialize use_lo.
- * coff-ppc.c (ppc_record_toc_entry): Change i to unsigned int.
- (dump_toc): Change cat to const, and initialize it.
- * coff-sh.c (sh_relax_delete_bytes): Initialize start and voff.
- * elf32-sh.c (sh_elf_relax_delete_bytes): Likewise.
- (sh_elf_relocate_section): Initialize r_symndx.
- * coffcode.h (coff_compute_section_file_positions): Only declare
- old_sofar if ALIGN_SECTIONS_IN_FILE.
- (coff_write_object_contents): Initialize csym.
- * coffgen.c (coff_pointerize_aux): Make type and class unsigned.
- * cpu-ns32k.c (_bfd_ns32k_get_displacement): Add default case to
- switch.
- * dwarf2.c: Include libiberty.h.
- (read_2_signed_bytes, read_4_signed_bytes): Comment out.
- (decode_line_info): Remove unused local variables.
- * elf32-m32r.c (m32r_elf_sda16_reloc): Likewise.
- (m32r_elf_relocate_section): Likewise.
- * elf32-v850.c (v850_elf_store_addend_in_insn): Likewise.
- (v850_elf_reloc): Likewise.
- * elf-bfd.h (elf_linker_section_t): Make alignment unsigned.
- (struct elf_obj_tdata): Make cverdefs and cverrefs unsigned.
- * elf.c (assign_file_positions_for_segments): Always set adjust.
- * elf32-d30v.c (bfd_elf_d30v_reloc): Initialize tmp_addr. Fully
- parenthesize expression.
- * elf32-m32r.c (m32r_elf_relocate_section): Always initialize h.
- (m32r_elf_object_p): Return a value.
- (m32r_elf_print_private_bfd_data): Change fprintf format string.
- * elf32-mips.c (mips_elf_final_link): Initialize last.
- (mips_elf_finish_dynamic_sections): Initialize last and dindx.
- * elf32-v850.c (v850_elf_object_p): Return a value.
- (v850_elf_print_private_bfd_data): Change fprintf format string.
- * elfcode.h (elf_slurp_symbol_table): Change symcount and i to
- unsigned long.
- * elflink.h (elf_link_add_object_symbols): Change vernum to
- unsigned int, and initialize it. Change fprintf format string.
- (NAME(bfd_elf,size_dynamic_sections)): Cast -1 to bfd_size_type
- when setting or comparing to soname_indx.
- (elf_create_pointer_linker_section): Change num_symbols to
- unsigned int.
- * libcoff-in.h (coff_data_type): Change flags to flagword.
- * peicode.h (pe_print_idata): Initialize idx. Change j to
- bfd_size_type. Initialize hint_member. Remove useless test to
- time_stamp.
- (pe_print_edata): Change num_functions and num_names in struct
- EDT_type to unsigned long. Remove cast. Change fprintf format
- string.
- * ppcboot.c (ppcboot_object_p): Change i to size_t.
- * reloc.c (bfd_get_reloc_size): Change return type to unsigned
- int.
- * reloc16.c (bfd_coff_reloc16_relax_section): Change shrinks to
- int *. Update uses. Change j to long.
- * bfd-in2.h, libcoff.h: Rebuild.
-
-Fri Mar 27 10:10:46 1998 Catherine Moore <clm@cygnus.com>
-
- * elf32-v850.c Remove definition of USE_REL.
- (v850_elf_info_to_howto_rela): New function.
- (v850_elf_perform_relocation): Renamed from
- v850_elf_store_addend_in_insn. Removed replace argument.
- (v850_elf_reloc): store the relocation in the addend field instead
- of the insn.
- (v850_elf_final_link_relocate): Now calls
- v850_elf_perform_relocation.
- (v850_elf_relocate_section): Remove code to generate REL
- relocations.
-
-Thu Mar 26 13:32:17 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * coffcode.h (coff_new_section_hook): Set the type and storage
- class in the native symbol information allocated for a new section
- symbol.
-
-Thu Mar 26 10:13:41 1998 Nick Clifton <nickc@cygnus.com>
-
- * peicode.h: Chain together calls to
- coff_bfd_copy_private_bfd_data and
- coff_bfd_print_private_bfd_data.
-
- * coff-arm.c: Add prototypes for
- coff_arm_bfd_print_private_bfd_data and
- coff_arm_bfd_copy_private_bfd_data.
-
-Wed Mar 25 15:45:55 1998 Nick Clifton <nickc@cygnus.com>
-
- * coffcode.h (coff_mkobject_hook): Set private falgs even for a PE
- build.
-
- * peicode.h: Call arm-coff private data functions after handling
- pe private data.
-
- * coff-arm.c: Turn statics into globals so that they can be shared
- both pe and pei backends.
-
-Wed Mar 25 15:19:38 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * aoutf1.h (sunos_set_arch_mach): Use bfd_mach_m68* rather than
- plain numbers.
- (sunos_write_object_contents): Likewise.
- * aoutx.h (NAME(aout,machine_type)): Likewise.
- * coffcode.h (coff_set_arch_mach_hook): Likewise.
-
-Wed Mar 25 13:59:24 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * archures.c (bfd_mach_m68*): Add definitions for various m68k
- variants.
- (bfd_default_scan): Remove m68k special cases.
- * bfd-in2.h: Rebuild.
- * mipsbsd.c (MY(write_object_contents)): Use bfd_mach_m68* rather
- than plain numbers.
- * sparclynx.c (NAME(lynx,set_arch_mach)): Likewise.
- * cpu-m68k.c (arch_info_struct): Likewise. Add entry for
- m68k:68000.
- (bfd_m68k_arch): Set mach field to zero to signal no explicit
- selection, change printable_name to just "m68k" and make that the
- default instead of m68k:68020.
-
- * aout-tic30.c (NAME): Define this to avoid multiple definitions
- from aoutx.h.
- (MY_get_section_contents): Define as aout_32_get_section_contents
- rather than NAME(aout,get_section_contents).
-
- * elf-m10300.c (elf32_mn10300_link_hash_table_create): Fix cast.
-
- * evax-alpha.c (evax_set_arch_mach): Only accept bfd_arch_alpha
- and call bfd_default_set_arch_mach to do the real work.
-
-Wed Mar 25 10:41:35 1998 Richard Henderson <rth@cygnus.com>
-
- * bout.c (BALX): Include return register g14 as part of the insn.
- (BALX_MASK): New.
- (calljx_callback): Use it.
-
-Wed Mar 25 11:19:28 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * libbfd-in.h (BFD_ALIGN): Cast this parameter to bfd_vma.
- * libbfd.h: Rebuild.
-
- * elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Change
- byte_count to unsigned int.
- (mn10300_elf_relax_section): Initialize internal_relocs. Remove
- unused local variables.
-
- * evax-alpha.c (evax_close_and_cleanup): Remove unused local
- variables er and er1.
-
- * cpu-v850.c: Include <ctype.h>.
- (scan): Case isdigit argument to unsigned char.
-
- From Yan Meroth <YAN.MEROTH@st.com>:
- * ihex.c (ihex_scan): Add extbase variable so that getting an
- extended linear address record does not ignore any previous
- extended address.
- (ihex_write_object_contents): When writing out an extended linear
- address record, zero out any previous extended address.
-
-Tue Mar 24 16:09:43 1998 Manfred Hollstein <manfred@s-direktnet.de>
-
- * ieee.c (do_one): Check section before dereferencing it.
- (ieee_canonicalize_reloc): Likewise with src->relent.sym_ptr_ptr.
- (ieee_generic_stat_arch_elt): Likewise with abfd->my_archive.
-
-Mon Mar 23 18:51:47 1998 Joel Sherrill <joel@OARcorp.com>
-
- * config.bfd: (sh*-*-rtems*): Switched from ELF to COFF.
-
-Mon Mar 23 14:23:36 1998 Nick Clifton <nickc@cygnus.com>
-
- * coff-arm.c: Add interworking functions to pe backends.
-
-Fri Mar 20 18:47:20 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Use AM_DISABLE_SHARED.
- * aclocal.m4, configure: Rebuild with libtool 1.2.
-
-Fri Mar 20 11:25:41 1998 Nick Clifton <nickc@cygnus.com>
-
- * coff-arm.c (coff_arm_relocate_section): Better error messages
- when interowrking conflucts occur. Courtesy of Jonathan Walton
- and Tony Thompson.
- (aoutarm_std_reloc_howto): Fixed bitsize fields of rightshifted
- relocations. Patch courtesy of Jonathan Walton and Tony
- Thompson.
-
-Fri Mar 20 02:26:43 1998 Richard Henderson <rth@cygnus.com>
-
- * elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Revert
- part of Feb 22 change controling when to override the existing
- symbol with the .plt entry.
-
-Wed Mar 18 09:26:25 1998 Nick Clifton <nickc@cygnus.com>
-
- * config.bfd (targ_cpu): Add thumb-pe target.
-
- * coffcode.h (OTHER_GLOBAL_CLASS): Support thumb external
- functions in PE build.
-
-Sun Mar 8 23:37:26 1998 Stan Cox <scox@equinox.cygnus.com>
-
- * config.bfd (sparclite-*-elf*): Added.
-
-Mon Feb 23 19:31:19 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Add elf.lo to elf shell variable.
- * Makefile.am (BFD_LIBS): Remove elf.lo.
- (BFD_LIBS_CFILES): Remove elf.c.
- (BFD32_BACKENDS): Add elf.lo.
- (BFD32_BACKENDS_CFILES): Add elf.c.
- * configure, Makefile.in: Rebuild.
-
-1998-02-23 15:53 Richard Henderson <rth@cygnus.com>
-
- * elf32-i386.c (elf_i386_relocate_section): A pc-relative
- relocation against a non-local symbol should not have a dynamic
- relocation.
-
-Mon Feb 23 16:17:08 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * peicode.h (coff_swap_filehdr_in): Don't set BFD flag HAS_SYMS in
- COFF filehdr flags.
- (pe_print_private_bfd_data): Print PE flags. From Mikey
- <jeffdb@netzone.com>.
-
-Sun Feb 22 20:39:00 1998 Richard Henderson <rth@cygnus.com>
-
- * elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Don't create
- a plt entry when we can determine that we authoritatively define
- the symbol.
-
-Sun Feb 22 20:33:05 1998 Richard Henderson <rth@cygnus.com>
-
- * configure.in (COREFILE selection): Remove sparc-*-linux*. They
- don't actually use trad-core, but a SunOS-style core file handled
- by gdb directly.
- * hosts/sparclinux.h: Remove.
-
-Wed Feb 18 15:31:06 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * peicode.h (pe_print_idata): If there is no .idata section, look
- for the import tables in some other section. Make the initial
- label line up better with the data. Print the import address
- table even if there is no import name table. If the import
- address table holds actual addresses, print them.
-
-Tue Feb 17 12:58:34 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * libbfd.c (bfd_seek): If fseek fails, save errno around call to
- bfd_tell. If errno is EINVAL, set bfd_error_file_truncated, not
- bfd_error_system_call.
-
-Fri Feb 13 13:11:33 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (AUTOMAKE_OPTIONS): Define.
- * configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.
-
- From H.J. Lu <hjl@gnu.org>:
- * Makefile.am (libbfd_la_LDFLAGS): Define.
- * Makefile.in: Rebuild.
-
-Thu Feb 12 17:31:11 1998 Ian Lance Taylor <ian@cygnus.com>
-
- NetBSD patches from Gordon W. Ross <gwr@mc.com>:
- * netbsd.h (MACHTYPE_OK): Define.
- (MY(write_object_contents)): Use DEFAULT_ARCH and DEFAULT_MID when
- calling N_SET_MACHTYPE, rather than having a switch.
- * libaout.h (enum machine_type): Add M_PMAX_NETBSD, M_VAX_NETBSD,
- and M_ALPHA_NETBSD.
- * i386netbsd.c (MACHTYPE_OK): Don't define.
- (DEFAULT_MID): Define.
- * m68k4knetbsd.c (SEGMENT_SIZE): Don't define.
- (MACHTYPE_OK): Don't define.
- (DEFAULT_MID): Define.
- * m68knetbsd.c: (MACHTYPE_OK): Don't define.
- (DEFAULT_MID): Define.
- * ns32knetbsd.c (MACHTYPE_OK): Don't define.
- (DEFAULT_MID): Define.
- * sparcnetbsd.c (MACHTYPE_OK): Don't define.
- (DEFAULT_MID): Define.
-
- NetBSD patches from Gordon W. Ross <gwr@mc.com>:
- * vaxnetbsd.c: New file.
- * netbsd-core.c: Clean up. Remove unused macros. Use netbsd
- rather than netbsd_core.
- * targets.c (vaxnetbsd_vec): Declare.
- (bfd_target_vector): Add vaxnetbsd_vec. If NETBSD_CORE is
- defined, add netbsd_core_vec.
- * configure.in: Set COREFILE for alpha*-*-netbsd* and
- powerpc-*-netbsd* to netbsd-core.lo. If COREFILE is
- netbsd-core.lo, set COREFLAG to -DNETBSD_CORE.
- * config.bfd (alpha*-*-netbsd*): New target.
- * Makefile.am: Rebuild dependencies.
- (BFD32_BACKENDS): Add vaxnetbsd.lo.
- (BFD32_BACKENDS_CFILES): Add vaxnetbsd.c.
- * configure, Makefile.in: Rebuild.
-
- * configure.host: Remove the old shared library build stuff. We
- now use libtool instead.
-
-Wed Feb 11 17:13:09 1998 Richard Henderson <rth@cygnus.com>
-
- * tekhex.c (tekhex_write_object_contents): Call tekhex_init.
-
-Tue Feb 10 19:23:28 1998 H.J. Lu <hjl@gnu.org>
-
- * configure.in: Take stab-syms.lo out of sparclinux_vec list.
- * configure: Rebuild.
-
-Tue Feb 10 15:16:38 1998 Nick Clifton <nickc@cygnus.com>
- * elf32-v850.c (remember_hi16s_reloc): New function.
- (find_remembered_hi16s_reloc): New function.
- (v850_elf_store_addend_in_insn): Use the above new functions to
- match up HI6S relocs with LO16 relocs.
-
-Tue Feb 10 15:01:39 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Change -linux* to -linux-gnu*.
- * config.bfd, configure.host: Likewise.
- * configure: Rebuild.
-
-Mon Feb 9 19:40:59 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-v850.c (v850_elf_store_addend_in_insn): Fix another
- LO16/HI16S bug and improve comments about what is going on.
-
-Sat Feb 7 15:27:03 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure, aclocal.m4: Rebuild with new libtool.
-
-Fri Feb 6 14:48:20 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-v850.c (v850_elf_merge_private_bfd_data): Do not complain
- when merging v850 code into v850e/v850ea code. Do not initialise
- output flags if the input is the default architecture.
-
-Fri Feb 6 11:50:22 1998 Jeffrey A Law (law@cygnus.com)
-
- * elf32-mips.c (bfd_elf32_bfd_reloc_type_lookup): For BFD_RELOC_CTOR
- get the size from bfd_arch_bits_per_address instead of directly
- from the isa.
-
-Thu Feb 5 14:21:34 1998 Michael Meissner <meissner@cygnus.com>
-
- * libbfd-in.h (BFD_ALIGN): If rounding up would cause the address
- to wrap, just return all 1's bits instead.
- * libbfd.h: Regenerate.
-
-Thu Feb 5 11:51:05 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * coff-i386.c (coff_pe_i386_relocate_section): New static function
- if COFF_WITH_PE.
- (coff_relocate_section): If COFF_WITH_PE, define as
- coff_pe_i386_relocate_section.
- * coffcode.h (coff_write_object_contents): If COFF_IMAGE_WITH_PE,
- skip empty sections, to match coff_write_object_contents.
-
- * elf64-mips.c (mips_elf64_swap_reloca_out): Swap out r_addend,
- rather than swapping out r_offset twice. From Luke Deller
- <luked@cse.unsw.edu.au>.
-
-Wed Feb 4 19:11:28 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Set libtool_enable_shared rather than
- libtool_shared. Remove diversion hack.
- * configure, Makefile.in, doc/Makefile.in, aclocal.m4: Rebuild
- with new libtool.
-
-Wed Feb 4 16:10:21 1998 Brent Baccala <baccala@freesoft.org>
-
- * syms.c (struct stab_cache): Define.
- (struct stab_find_info): Remove cached_offset, cached_stab,
- cached_str, and cached_stroff fields. Add file_cache,
- function_cache, and line_cache fields.
- (_bfd_stab_section_find_nearest_line): Use extensive caching to
- speed up searches.
-
-Wed Feb 4 13:34:22 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * peicode.h (pe_print_idata): Check for import of ordinal rather
- than name.
- (pe_print_edata): If there is no .edata section, look for the
- export data in some other section.
-
-Mon Feb 2 20:05:42 1998 Jason Molenda (crash@bugshack.cygnus.com)
-
- * configure.in: Change version to 2.8.4.
- * configure: Regenerated.
-
-Mon Feb 2 17:39:39 1998 Steve Haworth <steve@pm.cse.rmit.EDU.AU>
-
- Add tms320c30 support:
- * cpu-tic30.c: New file.
- * aout-tic30.c: New file.
- * coff-tic30.c: New file.
- * archures.c (bfd_arch_tic30): Define.
- (bfd_tic30_arch): Declare.
- (bfd_archures_list): Add bfd_tic30_arch.
- * targets.c (bfd_target_vector): Add tic30_aout_vec and
- tic30_coff_vec.
- * reloc.c (BFD_RELOC_TIC30_LDP): Define.
- * coffcode.h (coff_set_arch_mach_hook): Add tic30 case.
- (coff_set_flags): Likewise.
- * config.bfd (tic30-*-*aout*, tic30-*-*coff*): New targets.
- * configure.in (tic30_aout_vec, tic30_coff_vec): New vectors.
- * Makefile.am: Rebuild dependencies.
- (ALL_MACHINES): Add cpu-tic30.lo.
- (ALL_MACHINES_CFILES): Add cpu-tic30.c.
- (BFD32_BACKENDS): Add aout-tic30.lo and coff-tic30.lo.
- (BFD32_BACKENDS_CFILES): Add aout-tic30.c and coff-tic30.c.
- * configure, Makefile.in, bfd-in2.h, libbfd.h: Rebuild.
-
-Mon Feb 2 12:25:12 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-v850.c (v850_elf_store_addend_in_insn): Allow HI16_S reloc
- to lag behind LO16 reloc by a couple of instructions.
-
-Mon Feb 2 14:09:46 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am ($(srcdir)/bfd-in2.h): Add dummy command to force
- make to reexamine the file timestamp.
- ($(srcdir)/libbfd.h, $(srcddir)/libcoff.h): Likewise.
-
- * elf64-alpha.c (ELF_MAXPAGESIZE): Change to 0x10000 from
- 0x100000.
-
-Fri Jan 30 19:07:07 1998 Geoff Keating <geoffk@ozemail.com.au>
-
- * elf32-ppc.c (ppc_elf_create_dynamic_sections): New procedure
- to create .dynsbss and .rela.sbss sections.
- (ppc_elf_adjust_dynamic_symbol): Put space for small data to be
- copied from dynamic objects into .sbss.
- (ppc_elf_size_dynamic_sections): Strip .rela.sbss if we don't
- use it. Correct typo of .rela.sdata2.
- (ppc_elf_finish_dynamic_symbol): Generate reloc to where we
- put the data, which may now be in .sbss.
- (ppc_elf_relocate_section): A SDAREL16 reloc can be in dynsbss.
- (elf_backend_create_dynamic_sections): Define as
- ppc_elf_create_dynamic_sections.
-
- * elf32-ppc.c (ppc_elf_check_relocs): Don't emit R_PPC_REL* relocs
- against _GLOBAL_OFFSET_TABLE_.
- (ppc_elf_relocate_section): Don't emit R_PPC_REL32 relocs in
- shared libraries which refer to local symbols. Make sure that the
- test for allocating space for a reloc in a shared object is the
- same as the test for emitting a reloc.
-
-Thu Jan 29 15:55:35 1998 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>
-
- * config.bfd (i[3456]-*-mingw32*): New target.
- * acinclude.m4 (BFD_BINARY_OPEN): Check for mingw32.
- * aclocal.m4, configure: Rebuild.
-
-Wed Jan 28 13:41:26 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * elf.c (_bfd_elf_close_and_cleanup): Only check the strtab if we
- have a bfd_object.
-
-Tue Jan 27 21:43:55 1998 Richard Henderson <rth@cygnus.com>
-
- Sparc v9 ABI compliant PLT:
- * elf64-sparc.c (PLT_HEADER_SIZE): V9 ABI uses 4 entries.
- (plt_templates, sparc64_elf_build_plt_entry): Delete.
- (LARGE_PLT_THRESHOLD): New define.
- (GOT_RESERVED_ENTRIES): V9 ABI only uses 1.
- (sparc64_elf_build_plt): New function.
- (sparc64_elf_plt_entry_offset): Likewise.
- (sparc64_elf_plt_ptr_offset): Likewise.
- (sparc64_elf_adjust_dynamic_symbol): Change h->plt_offset to
- contain the index for convenience. Skip the initial entries
- in .rela.plt.
- (sparc64_elf_size_dynamic_sections): Zero the allocated contents
- memory for the benefit of .rela.plt.
- (sparc64_elf_relocate_section): Call sparc64_elf_plt_entry_offset.
- (sparc64_elf_finish_dynamic_symbol): Kill template stuff. Use
- sparc64_elf_plt_entry_offset & sparc64_elf_plt_ptr_offset for reloc.
- (sparc64_elf_finish_dynamic_sections): DT_PLTGOT points to .plt.
- Call sparc64_elf_build_plt.
- (elf_backend_want_got_plt): No.
- (elf_backend_plt_readonly): No.
- (elf_backend_plt_alignment): 8.
-
- * elf.c (_bfd_elf_close_and_cleanup): New function; free the shstrtab.
- * elf-bfd.h (_bfd_elf_close_and_cleanup): Declare it.
- * elfxx-target.h (bfd_elfNN_close_and_cleanup): Arrange for it
- to be called.
-
-Tue Jan 27 21:45:15 1998 Jeffrey A Law (law@cygnus.com)
-
- * archures.c (bfd_mach_mips*): Add definitions for various MIPS
- processors.
- * cpu-mips.c (arch_info_struct): Add mips variants.
- * bfd-in2.h: Rebuilt.
-
-Tue Jan 27 15:06:04 1998 Nick Clifton <nickc@cygnus.com>
-
- * coff-arm.c (coff_arm_relocate_section): Preserve the contents of
- t2a3_b_insn.
-
-Tue Jan 27 12:47:27 1998 Robert Lipe <robertl@dgii.com>
-
- * config.bfd (i[3456]86-sco3.2v5*): ELF now the default.
- (i[3456]86sco3.2v5*coff): New target.
-
-Mon Jan 26 15:41:30 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * bfd-in2.h: Rebuild with changes to chew--tab expansion.
-
-Thu Jan 22 21:26:48 1998 Richard Henderson <rth@cygnus.com>
-
- * bfd.c (bfd_get_error_handler): Add orthogonal function.
- * bfd-in2.h: Regenerate.
-
-Thu Jan 22 21:13:39 1998 Richard Henderson <rth@cygnus.com>
-
- * tekhex.c (tekhex_write_object_contents): Check for no symbols.
-
-Wed Jan 21 21:19:03 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * coff-i386.c (coff_i386_rtype_to_howto): If COFF_WITH_PE, don't
- adjust addend for an output common symbol (from Jimmy Blair
- <jimmyb@wrs.com>). If COFF_WITH_PE, adjust addend for PC relative
- defined symbol to counteract adjustment made in generic relocation
- code.
-
- * dwarf2.c: Include sysdep.h, not stdio.h and stdlib.h.
-
-Wed Jan 21 21:16:06 1998 Manfred Hollstein <manfred@s-direktnet.de>
-
- * coff-m88k.c (GET_SCNDHR_NRELOC): Fix typo in macro name.
- (GET_SCNDHR_NLNNO): Likewise.
-
-Mon Jan 19 12:49:52 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * cpu-sh.c (arch_info_struct): Correct next field of sh3e.
-
-Wed Jan 14 17:23:27 1998 Nick Clifton <nickc@cygnus.com>
-
- * elf32-m32r.c: Add macros to handle NOP insertion.
-
-Wed Jan 14 16:15:22 1998 Richard Henderson <rth@cygnus.com>
-
- * xcofflink.c (xcoff_mark_symbol): Don't mark the absolute section.
- (xcoff_mark): Likewise.
- (xcoff_build_ldsyms): Mark absolute symbols.
-
-Wed Jan 14 16:03:11 1998 Richard Henderson <rth@cygnus.com>
-
- * bout.c (b_out_write_object_contents): Sort symbols before output
- to keep {CALL,BAL}NAME symbols adjacent.
- (b_out_symbol_cmp): New function.
-
-For older changes see ChangeLog-9697
+For older changes see ChangeLog-9899
Local Variables:
mode: change-log
diff --git a/contrib/binutils/bfd/ChangeLog-9899 b/contrib/binutils/bfd/ChangeLog-9899
new file mode 100644
index 0000000..c6348c4
--- /dev/null
+++ b/contrib/binutils/bfd/ChangeLog-9899
@@ -0,0 +1,5595 @@
+1999-12-29 Richard Henderson <rth@cygnus.com>
+
+ * elflink.h (bfd_elf,size_dynamic_sections): Don't export all
+ if no dynamic sections created.
+
+1999-12-27 Nick Clifton <nickc@cygnus.com>
+
+ * peicode.h (pe_bfd_object_p): Only define for PE format
+ targets.
+
+1999-12-17 Nick Clifton <nickc@cygnus.com>
+
+ * coff-i386.c (i3coff_object_p): Delete.
+ (i386coff_vec): Replace reference to i3coff_object_p with a
+ reference to coff_object_p.
+
+ * coff-mcore.c (pe_object_p): Delete.
+
+ * peicode.h (pe_bfd_object_p): New function: Detect the
+ presence of a PE format COFF object file. Also detect and
+ warn about the presence of LINK6 format Image Library Format
+ object files.
+
+1999-12-16 Nick Clifton <nickc@cygnus.com>
+
+ * coff-arm.c (NUM_ELEM): New macro.
+ (NUM_RELOCS): New macro: The number of known ARM relocs.
+ (RTYPE2HOWTO): Return NULL if the reloc type is out of range.
+ (coff_arm_rtype_to_howto): Return NULL if the reloc type is out
+ of range.
+ (bfd_arm_process_before_allocation): Produce a warning message if
+ an out of range symbol index is encountered.
+
+1999-12-14 Nick Clifton <nickc@cygnus.com>
+
+ * elflink.h (is_global_symbol_definition): New Function: Return
+ true iff the symbol is being given a global definition in this
+ bfd.
+ (elf_link_is_defined_archive_symbol): Do not bother processing
+ symbols for an archive element that has already been included
+ in the link.
+ Use is_global_symbol_definition().
+
+1999-12-09 Andrew Cagney <cagney@cygnus.com>
+
+ * config.bfd: Add support for sparc-*-netbsdelf* and
+ sparc-*-netbsdaout*.
+
+1999-12-13 Nick Clifton <nickc@cygnus.com>
+
+ * elflink.h (elf_link_is_defined_archive_symbol): Check to see
+ if the symbol is in the common section.
+
+1999-12-10 Nick Clifton <nickc@cygnus.com>
+
+ * elflink.h (elf_link_is_defined_archive_symbol): New
+ function: Decide if a symbol, in an archive map is there
+ because it is defined in the archive element, or because it is
+ just another common declaration of it.
+ (elf_link_add_archive_symbols): Use
+ elf_link_is_defined_archive_symbol to decide if an archive
+ element contain a reference to a common symbol should be
+ linked in or not.
+
+1999-12-10 Nick Clifton <nickc@cygnus.com>
+
+ * elflink.h: Revert previous patch.
+ * targets.c: Revert previous patch.
+ * libbfd-in2.h: Revert previous patch.
+ * libbfd.h: Revert previous patch.
+ * elfxx-target.h: Revert previous patch.
+ * archive.c: Revert previous patch.
+ * aout-target.h: Revert previous patch.
+ * aout-tic30.h: Revert previous patch.
+ * bfd.c: Revert previous patch.
+ * coff-alpha.c: Revert previous patch.
+ * coff-rs6000.c: Revert previous patch.
+ * elf64-mips.c: Revert previous patch.
+ * ieee.c: Revert previous patch.
+ * libecoff.h: Revert previous patch.
+ * oasys.c: Revert previous patch.
+ * som.c: Revert previous patch.
+ * vms.c: Revert previous patch.
+
+1999-12-09 Nick Clifton <nickc@cygnus.com>
+
+ * elflink.h (elf_link_add_archive_symbols): Add an archive
+ element even if contains a symbol which is currently only
+ considered to be a common.
+
+ * targets.c (struct bfd_target): Add new field
+ _bfd_allow_commons_in_armap.
+ * bfd-in2.h:Regenerate.
+
+ * libbfd-in2.h (_bfd_noarchive_allow_commons_in_armap):
+ Define.
+ (_bfd_archive_bsd_allow_commons_in_armap): Define.
+ * libbfd.h: Regenerate.
+
+ * elfxx-target.h: If using COFF archive map, override
+ definition of allow_commons_in_armap and replace with
+ bfd_false.
+
+ * archive.c (bfd_compute_and_write_armap): Do not place common
+ symbols into the archive map unless _bfd_allow_commons_in_armap
+ returns true.
+
+ * aout-target.h (MY_allow_commons_in_armap): Define.
+ * aout-tic30.h (MY_allow_commons_in_armap): Define.
+ * bfd.c (bfd_allow_commons_in_armap): Define.
+ * coff-alpha.h (alpha_ecoff_allow_commons_in_armap): Define.
+ * coff-rs6000.h (xcoff_allow_commons_in_armap): Define.
+ * elf64-mips.c (bfd_elf64_allow_commons_in_armap): Define.
+ * ieee.c (ieee_ecoff_allow_commons_in_armap): Define.
+ * libecoff.h (_bfd_ecoff_allow_commons_in_armap): Define.
+ * oasys.c (oasys_allow_commons_in_armap): Define.
+ * som.c (som_allow_commons_in_armap): Define.
+ * vms.c (vms_allow_commons_in_armap): Define.
+
+1999-12-07 Jim Blandy <jimb@cygnus.com>
+
+ Add support for SSE registers in ELF core files.
+ * elf.c (elfcore_make_note_pseudosection): New function.
+ (elfcore_grok_prfpreg): Use it.
+ (elfcore_grok_prxfpreg): New function.
+ (elfcore_grok_note): Recognize Linux NT_PRXFPREG notes.
+
+1999-12-03 Ian Lance Taylor <ian@zembu.com>
+
+ * elf32-mips.c (mips_elf_calculate_relocation): Divide R_MIPS_PC16
+ value by 4 before storing it back in the field. From
+ Koundinya. K <kk@ddeorg.soft.net>.
+
+Tue Nov 30 22:41:14 1999 Jeffrey A Law (law@cygnus.com)
+
+ * archures.c (bfd_mach_am33): Define.
+ * bfd-in2.h: Rebuilt.
+ * cpu-m10300.c (bfd_am33_arch): Add to the mn103 architecture list
+ * elf-m10300.c (mn10300_elf_relax_section): Handle am33 instructions.
+ (compute_function_info): Handle additional registers saved by
+ movm on the am33.
+ (elf_mn10300_mach): Handle E_MN10300_MACH_AM33.
+ (_bfd_mn10300_elf_final_write_processing): Handle bfd_mach_am33.
+
+1999-11-29 Jim Blandy <jimb@cygnus.com>
+
+ * elf.c (bfd_get_elf_phdrs, bfd_get_elf_phdr_upper_bound): New
+ functions.
+ * bfd-in2.h (bfd_get_elf_phdrs, bfd_get_elf_phdr_upper_bound): New
+ declarations.
+
+1999-11-27 Michael Meissner <meissner@cygnus.com>
+
+ * reloc.c (BFD_RELOC_ALPHA_USER_LITERAL): New relocation for
+ internal use within gas for alpha explicit relocations.
+ (BFD_RELOC_ALPHA_USER_LITUSE_BASE): Ditto.
+ (BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF): Ditto.
+ (BFD_RELOC_ALPHA_USER_LITUSE_JSR): Ditto.
+ (BFD_RELOC_ALPHA_USER_GPDISP): Ditto.
+ (BFD_RELOC_ALPHA_USER_GPRELHIGH): Ditto.
+ (BFD_RELOC_ALPHA_USER_GPRELLOW): Ditto.
+
+ * elf64-alpha.c (elf64_alpha_reloc_map): Add mappings for
+ BFD_RELOC_ALPHA_USER_*.
+
+ * bfd-in2.h: Regenerate.
+ * libbfd.h: Regenerate.
+
+1999-11-26 Fred Fish <fnf@cygnus.com>
+
+ * elf.c (elfcore_read_notes): Add prototype for static function.
+ (_bfd_elf_make_section_from_phdr): Renamed from bfd_section_from_phdr.
+ (bfd_section_from_phdr): Replacement function that calls
+ _bfd_elf_make_section_from_phdr for generic segment types and
+ backend fucntion pointed to by elf_backend_section_from_phdr for
+ backend specific segment types.
+ (_bfd_elfcore_section_from_phdr): Remove call to elfcore_read_notes,
+ now called by _bfd_elf_make_section_from_phdr. Note that this func
+ is now just a stub between the caller and bfd_section_from_phdr.
+
+ * elf-bfd.h (struct elf_backend_data): Add new function pointer
+ elf_backend_section_from_phdr.
+ (elf_backend_section_from_phdr): Add prototype.
+
+ * elfxx-target.h (elf_backend_section_from_phdr): Define default.
+ (elfNN_bed): Add elf_backend_section_from_phdr.
+
+1999-11-25 Nick Clifton <nickc@cygnus.com>
+
+ * coff-arm.c (bfd_arm_get_bfd_for_interworking): Add
+ SEC_CODE and SEC_READONLY flags to glue sections.
+
+ * elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Add
+ SEC_CODE and SEC_READONLY flags to glue sections.
+
+1999-11-20 Nick Clifton <nickc@cygnus.com>
+
+ * coff-mcore.c (coff_mcore_relocate_section): Fix typo in previous
+ delta.
+
+1999-11-19 Catherine Moore <clm@cygnus.com>
+
+ * elf32-m68k.c (elf_cpu32_plt0_entry): Fix encoding.
+ (elf_cpu32_plt_entry): Likewise.
+
+1999-11-18 Nick Clifton <nickc@cygnus.com>
+
+ * coff-mcore.c (coff_mcore_rtype_to_howto): Special case handling
+ for RVA relocs.
+ (coff_mcore_relocate_section): Initialise addend to 0.
+ Special case processing of RVA reloc.
+
+1999-11-17 Richard Henderson <rth@cygnus.com>
+
+ * elf-bfd.h (struct elf_backend_data): Reorder collect and
+ type_change_ok; add sign_extend_vma.
+ * elf32-mips.c (elf_backend_sign_extend_vma): Define.
+ * elfcode.h (elf_swap_symbol_in): Mind be->sign_extend_vma.
+ (elf_swap_shdr_in, elf_swap_phdr_in): Likewise.
+ * elfxx-target.h (elf_backend_sign_extend_vma): Default.
+ (elfNN_bed): Follow struture changes.
+
+1999-11-09 Ian Lance Taylor <ian@zembu.com>
+
+ * libbfd.c (bfd_read): Check result of read against desired result
+ using !=, not <.
+ (_bfd_generic_get_section_contents): Set bfd_error if the seek is
+ invalid compared to the section size.
+
+ * ieee.c (ieee_slurp_debug): Get the length of the debug
+ information right if there is no data part.
+
+Tue Nov 2 01:44:41 1999 Jeffrey A Law (law@cygnus.com)
+
+ * som.c (som_fixup_formats): Improve handling of R_AUX_UNWIND,
+ R_LINETAB, R_LINETAB_ESC, and R_COMMENT.
+
+1999-10-28 Ian Lance Taylor <ian@zembu.com>
+
+ * elflink.h (elf_bfd_final_link): Make last_local signed.
+
+1999-10-27 Ian Lance Taylor <ian@zembu.com>
+
+ * stabs.c (_bfd_link_section_stabs): Make sure .stabstr section
+ starts with a zero.
+
+Sat Oct 23 17:36:12 1999 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * archures.c: Add definitions bfd_mach_d10v, bfd_mach_d10v_ts2 and
+ bfd_mach_d10v_ts3.
+ * cpu-d10v.c (d10v_ts3_info, d10v_ts2_info): Add.
+ * bfd-in2.h: Regenerate.
+
+1999-10-15 Andrew Haley <aph@cygnus.com>
+
+ * dwarf1.c (parse_die): Fail to parse a die if its length is zero.
+
+Sun Oct 17 17:19:00 1999 Jeffrey A Law (law@cygnus.com)
+
+ * libhppa.h (bfd_hppa_insn2fmt): Change to return an int.
+
+1999-10-08 Ian Lance Taylor <ian@zembu.com>
+
+ * elflink.h (elf_merge_symbol): When overriding a weak symbol with
+ a defined symbol in a shared library, clear the DEF_DYNAMIC flag
+ too.
+
+Fri Oct 8 13:03:45 1999 Geoffrey Keating <geoffk@cygnus.com>
+
+ * elf32-mips.c (mips_elf_calculate_relocation): R_MIPS_LITERAL
+ relocs also need the GP value.
+ (_bfd_mips_elf_relocate_section): Handle unpaired LO16 relocs
+ properly. Handle sign-extension for R_MIPS_64 correctly. Correct
+ the GP value for R_MIPS_LITERAL relocs too. Handle
+ R_MIPS_64 relocs properly on big-endian MIPS.
+ (mips_elf_sign_extend): Behave properly with 'long long'.
+ (mips_elf_highest): Correct typo.
+
+Mon Oct 4 17:49:45 1999 Nick Clifton <nickc@cygnus.com>
+
+ * cpu-m32r.c (arch_info_struct): New static global.
+ (bfd_m32r_arch): Refer to it.
+ * elf32-m32r.c (m32r_elf_object_p): Recognize E_M32RX_ARCH.
+ (m32r_elf_print_private_bfd_data): Ditto.
+ (m32r_elf_final_write_processing): Handle bfd_mach_m32rx.
+ * archures.c (bfd_mach_m32rx): Define it.
+ * bfd-in2.h: Rebuild.
+
+1999-09-28 Fred Fish <fnf@cygnus.com>
+
+ * targets.c (cisco_core_vec): Replaced with two new vecs ...
+ (cisco_core_big_vec): Add new bigendian vec.
+ (cisco_core_little_vec): Add new little endian vec.
+
+ * cisco-core.c (CRASH_INFO): Fixed offset replaced with ...
+ (crash_info_locs): Add array of possible offsets.
+ (MASK_ADDR): Mask to apply to crash info offset.
+ (crashinfo_external): Add textbase, database, bssbase and
+ turn into a typedef.
+ (cisco_core_file_validate): Renamed from cisco_core_file_p.
+ Many small changes to account for additional hardware versions.
+ Pick a reasonable size for ".reg" section. Add a ".crash"
+ section to allow access to crashinfo_external struct.
+ (cisco_core_file_p): New version of this function that
+ iterates over crash_info_locs, calling cisco_core_file_validate.
+ (cisco_core_vec): Old big endian only vec replaced with ...
+ (cisco_core_big_vec): Add big endian version.
+ (cisco_core_little_vec): Add little endian version.
+
+ * configure.in (cisco_core_vec): Split to two new vectors ...
+ (cisco_core_big_vec): New target vector.
+ (cisco_core_little_vec): New target vector.
+ * configure: Regenerate.
+ * config.bfd (targ): For m68*-*-aout* targ, change cisco_core_vec
+ to cisco_core_big_vec in targ_selvecs.
+
+1999-09-28 Geoffrey Keating <geoffk@cygnus.com>
+
+ * elf32-mips.c (mips_elf_relocate_hi16): Unused, delete.
+ (mips_elf_relocate_got_local): Unused, delete.
+ (mips_elf_relocate_global_got): Unused, delete.
+
+1999-09-24 Fred Fish <fnf@cygnus.com>
+
+ * elf.c (bfd_section_from_phdr): Add typename variable. Use p_type
+ to initialize it to something meaningful. Then use it to generate
+ more useful segment names.
+
+Sun Sep 19 12:16:47 1999 Jeffrey A Law (law@cygnus.com)
+
+ * som.c (NO_PCREL_MODES): Define if the system does not define
+ R_SHORT_PCREL_MODE.
+ (hppa_som_gen_reloc_type): Handle both short and long pcrel branches.
+ (som_write_fixups): Eliminate redundant pcrel mode relocs. Handle
+ R_LONG_PCREL_MODE and R_SHORT_PCREL_MODE
+ * libhppa.h (dis_assemble_22): New function.
+ (bfd_hppa_insn2fmt): Handle long branch.
+
+ * libhppa.h (bfd_hppa_insn2fmt): Decode and handle formats found
+ in PA2.0.
+
+1999-09-17 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * coff-i386.c (coff_i386_reloc_type_lookup): Support BFD_RELOC_16,
+ BFD_RELOC_16_PCREL, BFD_RELOC_8, BFD_RELOC_8_PCREL relocs.
+ (reloc_howto_type howto_table): Tidy comments and whitespace.
+
+1999-09-17 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Undo
+ previous delta. Set sec->gc_mark instead.
+
+Thu Sep 16 11:21:13 1999 Catherine Moore <clm@cygnus.com>
+
+ * elf32-m68k.c (elf_cpu32_plt0_entry): Use a1 instead of a0.
+ (elf_cpu32_plt_entry): Likewise.
+
+Thu Sep 16 10:48:17 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (elf_hppa_final_write_processing): Turn on TRAPNIL.
+
+ * elf-hppa.h (elf_hppa_final_link): If unable to find __gp in the
+ symbol table, then just compute a suitable value (but do not
+ create a __gp symbol).
+
+ * elf-hppa.h (elf_hppa_relocate_section): Allow undefined
+ symbols when building shared libraries.
+ (elf_hppa_final_link_relocate): Correct handling of PCREL
+ relocations against undefined symbols.
+
+1999-09-16 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Mark
+ interworking sections as linker created so that they will not
+ be removed by garbage collection.
+
+Wed Sep 15 02:31:57 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (elf_hppa_final_link): Revamp __gp handling.
+ (elf_hppa_final_link_relocate): Consistently create an absolute
+ address, then subtract out the value of __gp.
+
+1999-09-14 Michael Meissner <meissner@cygnus.com>
+
+ * configure.in (Canonicalization of target names): Remove adding
+ ${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
+ generates $ac_config_sub with a ${CONFIG_SHELL} already.
+ * configure: Regenerate.
+
+1999-09-14 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-m32r.c (ELF_MAXPAGESIZE): Change to 0x1 (at request of
+ Mitsubishi).
+
+Mon Sep 13 20:01:47 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (elf_hppa_record_segment_addrs): New function.
+ (elf_hppa_final_link): Initialize text_segment_base and
+ data_segment_base.
+ (elf_hppa_final_link_relocate): Handle SEGREL relocations.
+
+ * elf-hppa.h (elf_hppa_final_link): Remove unused variables.
+ (elf_hppa_final_link_relocate): Likewise.
+ (elf_hppa_relocate_insn): Likewise.
+ (elf_hppa_relocate_section): Initialize HOWTO.
+
+1999-09-13 Donn Terry <donn@interix.com>
+
+ * coffcode.h (styp_to_sec_flags): Further refinement of COMDAT
+ handling to support both GNU and MS objects.
+
+ * coffcode.h (coff_write_object_contents): Don't check reloc_count
+ when determining whether to set F_RELFLG.
+
+1999-09-13 Philip Blundell <pb@nexus.co.uk>
+
+ * elf32-arm.h (elf32_arm_final_link_relocate): Don't range-check
+ PC24 relocs if the target is an undefined weak symbol.
+ (arm_add_to_rel): Fix compiler warning.
+ (elf32_arm_plt0_entry): Correct comments.
+
+1999-09-13 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * elfcode.h (write_relocs): Check for the_bfd NULL when handling
+ an absolute symbol in REL relocs.
+
+Sun Sep 12 23:47:58 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (elf_hppa_final_link_relocate): Handle SECREL32.
+ Stub SEGREL32. Return an error for any relocation not handled.
+
+1999-09-12 Ian Lance Taylor <ian@zembu.com>
+
+ * cofflink.c (coff_link_add_symbols): Look for special MSVC string
+ constant symbols, and avoid multiple definition errors on them.
+
+1999-09-12 Donn Terry <donn@interix.com>
+
+ * libbfd.c (bfd_log2): Rewrite to avoid infinite loop if most
+ significant bit is set.
+
+1999-09-11 Ian Lance Taylor <ian@zembu.com>
+
+ * coff-ppc.c (COFF_SECTION_ALIGNMENT_ENTRIES): Define.
+
+ * elfcode.h (write_relocs): Handle an absolute symbol in REL
+ relocs as we do for RELA relocs.
+
+1999-09-11 Donn Terry <donn@interix.com>
+
+ * libpei.h (_bfd_pei_final_link_postscript): Declare.
+ (coff_final_link_postscript): Define.
+ * peigen.c (_bfd_pei_swap_aouthdr_out): Don't set value for data
+ directory entries here.
+ (_bfd_pei_final_link_postscript): New function.
+
+ * peigen.c (_bfd_pei_swap_scnhdr_out): Remove code which sets
+ section flags based on the section name.
+
+ * peicode.h (coff_swap_scnhdr_in): If COFF_IMAGE_WITH_PE, the
+ get the overflow of the s_nlnno field from the s_nreloc field.
+ * peigen.c (_bfd_pei_swap_scnhdr_out): If doing a final link, swap
+ the s_nlnno overflow of the .text section into the s_nreloc
+ field.
+
+ * peigen.c (add_data_entry): Declare.
+ (pei_swap_aouthdr_out): Get image size right. Set linker version
+ more intuitively.
+ (pei_swap_scnhdr_out): Test for UNINIT section, not .bss.
+ (pe_print_idata): Code cleanup, print more info, get rid of (now)
+ extraneous ImageBase.
+ (pe_print_edata): Likewise.
+ (pe_print_pdata): Likewise. Print exception entries.
+ (pe_print_reloc): Likewise. Print MIPS_JMPADDR.
+ (tbl): Make const, add "UNKNOWN".
+ (_bfd_pe_print_private_bfd_data_common): Print timestamp.
+ (_bfd_pe_bfd_copy_private_bfd_data_common): Don't copy deleted
+ section data directory.
+ (_bfd_pe_bfd_copy_private_section_data): Copy pe_flags.
+
+ * libpei.h (_bfd_pe_bfd_get_symbol_info): Declare.
+ * peigen.c (_bfd_pe_bfd_get_symbol_info): New function.
+ * peicode.h (coff_get_symbol_info): Define.
+
+ * config.bfd (i[3456]86-*-interix*): Set targ_cflags to
+ -DSTRICT_PE_FORMAT.
+ * coffcode.h (styp_to_sec_flags): Check STRICT_PE_FORMAT rather
+ than __INTERIX.
+ (coff_classify_symbol): Re-revert 1999-08-08 patch if
+ STRICT_PE_FORMAT.
+
+ * libpei.h: New file, broken out of peicode.h.
+ * peigen.c: New file, broken out of peicode.h.
+ * peicode.h: A bunch of code moved out to libpei.h and peigen.c.
+ * configure.in: Add peigen.lo to list of files required for each
+ PE target.
+ * Makefile.am: Rebuild dependencies.
+ (BFD32_BACKENDS): Add peigen.lo.
+ (BFD32_BACKENDS_CFILES): Add peigen.c.
+ (SOURCE_HFILES): Add libpei.h.
+ * configure, Makefile.in: Rebuild.
+
+ * peicode.h (coff_swap_scnhdr_in): Don't check for a special
+ section name of _BSS; check IMAGE_SCN_CNT_UNINITIALIZED_DATA
+ instead. Don't clear the s_paddr field for an uninitialized data
+ section.
+
+ * coffcode.h (coff_mkobject_hook): Set timestamp field in
+ coff_data_type to f_timdat.
+ * peicode.h (pe_mkobject_hook): Likewise.
+
+ * peicode.h (coff_swap_filehdr_in): Check the NT executable magic
+ number if COFF_IMAGE_WITH_PE.
+
+ * coffcode.h (coff_mkobject_hook): If COFF_WITH_PE, set HAS_DEBUG
+ to the reverse of IMAGE_FILE_DEBUG_STRIPPED.
+ (coff_write_object_contents): Set IMAGE_FILE_DEBUG_STRIPPED if
+ there is no SEC_DEBUGGING section.
+ * peicode.h (pe_mkobject_hook): Set HAS_DEBUG to the reverse of
+ IMAGE_FILE_DEBUG_STRIPPED.
+
+ * pe-i386.c (COFF_LONG_FILENAMES): Define.
+ (COFF_SECTION_ALIGNMENT_ENTRIES): Define.
+ * pei-i386.c (COFF_LONG_FILENAMES): Define.
+ (COFF_SECTION_ALIGNMENT_ENTRIES): Define.
+
+ * coffswap.h (IMAGE_BASE): Don't define.
+ * pei-arm.c (IMAGE_BASE): Don't define.
+ * pei-i386.c (IMAGE_BASE): Don't define.
+ * pei-mcore.c (IMAGE_BASE): Don't define.
+ * pei-ppc.c (IMAGE_BASE): Don't define.
+
+ * cofflink.c (_bfd_coff_link_input_bfd): When writing out a
+ symbol, switch on the class when determining whether to modify the
+ value. For PE, don't modify the value of a C_FCN symbol not named
+ .bf.
+
+ * libbfd-in.h (_bfd_abort): Declare.
+ (abort): Define.
+ * bfd.c (_bfd_abort): New function.
+ * libbfd.h: Rebuild.
+
+ * coffcode.h (coff_set_alignment_hook): Delete POWERPC_LE_PE
+ special handling.
+
+ * cofflink.c (_bfd_coff_link_input_bfd): If a symbol is stripped,
+ don't write out the associated line numbers.
+
+ * cofflink.c (_bfd_coff_write_global_sym): Handle section symbol
+ aux entries.
+
+ * cofflink.c (coff_link_add_symbols): Don't warn about symbol type
+ changes when the base type is unknown.
+
+ * coffgen.c (coff_print_symbol): Fix printing of aux record for
+ function symbols.
+
+ * syms.c (BSF_DEBUGGING_RELOC): Define.
+ * coffcode.h (coff_slurp_symbol_table): If PE, set BSF_DEBUGGING
+ for C_FCN/C_EFCN symbols, and set BSF_DEBUGGING_RELOC for such
+ symbols named .bf.
+ * coffgen.c (fixup_symbol_value): Relocate a symbol which has
+ BSF_DEBUGGING_RELOC set.
+ * bfd-in2.h: Rebuild.
+
+1999-09-10 Ian Lance Taylor <ian@zembu.com>
+
+ * ecoff.c (bfd_debug_section): Update initialization for new
+ comdat_info field.
+ (_bfd_ecoff_styp_to_sec_flags): Add section parameter.
+ * libecoff.h (_bfd_ecoff_styp_to_sec_flags): Update declaration.
+
+1999-09-10 H.J. Lu <hjl@gnu.org>
+
+ * coff-alpha.c (alpha_ecoff_backend_data): Initialize the new
+ _bfd_filnmlen field.
+ * coff-mips.c (mips_ecoff_backend_data): Likewise.
+
+Fri Sep 10 00:35:14 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (elf_hppa_final_link_relocate): Create .opd entries
+ for FPTR relocs involving local symbols.
+
+ * elf-hppa.h (elf_hppa_final_link_relocate): Get the right
+ value for the stub address in a call through a stub.
+ Install the value for a local symbol directly into the DLT
+ instead of generating a reloc. Correctly handle FPTR64 relocs.
+
+ * elf-hppa.h (elf_hppa_unmark_useless_dynamic_symbols): New function.
+ (elf_hppa_remark_useless_dynamic_symbols): Similarly.
+ (elf_hppa_final_link): Call them.
+
+1999-09-10 Ian Lance Taylor <ian@zembu.com>
+
+ * elflink.h (elf_fix_symbol_flags): Move weakdef handling here...
+ (elf_adjust_dynamic_symbol): ...from here.
+
+Wed Sep 8 17:56:11 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (elf_hppa_howto_table); There is no DIR64WR, DIR64DR
+ relocation, remove them. SECREL64->LTOFF16WF.
+ (elf_hppa_final_link_relocate): Handle LTOFF* relocations. Handle
+ DIR* relocations.
+ (elf_hppa_relocate_insn): Similarly.
+
+ * elf-hppa.h (elf_hppa_final_link_relocate): Handle PLTOFF* relocs.
+ (elf_hppa_relocate_insn): Similarly.
+
+ * elf-hppa.h (elf_hppa_final_link_relocate): Handle DPREL* and
+ GPREL* relocations.
+ (elf_hppa_relocate_insn): Similarly.
+
+ * elf-hppa.h (elf_hppa_link_final_relocate): Fix typos.
+ Handle LTOFF_TP* relocs.
+ (elf_hppa_relocate_insn): Similarly.
+
+ * elf-hppa.h (elf_hppa_final_link_relocate): Handle PCREL* relocs.
+ Consistently deal with addends. Handle DLTIND14F and DLTREL14F.
+ (elf_hppa_relocate_insn): Handle PCREL* relocs.
+
+ * elf-hppa.h (elf_hppa_final_link_relocate): Handle LT_OFF_FPTR*,
+ DIR32, DIR64 and FPTR64 relocations.
+ (elf_hppa_relocate_insn): Similarly.
+
+ * elf-hppa.h (elf_hppa_final_link): Set the value of __gp to the
+ address of the .PARISC.global section.
+ (elf_hppa_relocate_section): Lookup and pass the PA64 hash
+ table entry elf_hppa_final_link_relocate. Do not give a warning
+ for a reloc against an external symbol if it has a PA64 hash
+ table entry.
+ (elf_hppa_final_link_relocate): Significantly rework. Handle
+ DLTIND relocations. Compute the final value of the relocation
+ before passing the value of elf_hppa_relocate_insn.
+ (elf_hppa_relocate_insn): Revamp to handle just bit tiwiddling
+ relocation support. Handle DLTIND relocation requests just like
+ DLTREL relocation requests. Simplify branch handling.
+
+1999-09-08 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf-hppa.h (elf_hppa_relocate_section): Catch problems with
+ non-allocated section as done in i386 version.
+ (elf_hppa_final_link_relocate): Uncomment R_PARISC_14F in switch
+ statement since this is no know relocation.
+
+Tue Sep 7 17:25:12 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (elf_hppa_final_link_relocate): Handle DLTREL14F
+ relocs.
+ (elf_hppa_relocate_insn): Similarly.
+
+ * elf-hppa.h (elf_hppa_final_link_relocate): Handle DLTREL14WR and
+ DLTREL14WD relocs.
+ (elf_hppa_relocate_insn): Similarly.
+
+ * elf-hppa.h (elf_hppa_final_link_relocate): Handle DLTREL14R and
+ DLTREL21L relocs. Pass the output bfd to elf_hppa_relocate_insn.
+ Pass the relocate type rather than the insn format to
+ elf_hppa_relocate_insn.
+ (elf_hppa_relocate_insn): Make switch dependent on relocation type
+ rather than the opcode. Handle DLTREL21L and DLTREL14R relocs.
+
+1999-09-07 Ian Lance Taylor <ian@zembu.com>
+
+ * coffcode.h (bfd_coff_backend_data): Add _bfd_filnmlen field.
+ (bfd_coff_filnmlen): Define.
+ (bfd_coff_std_swap_table): Initialize new field.
+ * coffgen.c (coff_fix_symbol_name): Use bfd_coff_filnmlen rather
+ than FILNMLEN.
+ (coff_write_symbols): Likewise.
+ (coff_get_normalized_symtab): Likewise.
+ * coff-sh.c (bfd_coff_small_swap_table): Initialize new field.
+ * libcoff.h: Rebuild.
+
+1999-09-06 Donn Terry <donn@interix.com>
+
+ * coffcode.h (sort_by_secaddr): New static function if
+ COFF_IMAGE_WITH_PE.
+ (coff_compute_section_file_positions): If COFF_IMAGE_WITH_PE, sort
+ sections by VMA when assigning target_index values. Always set
+ virt_size.
+
+ * libcoff-in.h (struct pei_section_tdata): Add pe_flags field.
+ * coffcode.h (coff_set_alignment_hook) [COFF_WITH_PE version]: Set
+ pe_flags field.
+ * libcoff.h: Rebuild.
+
+ * coffcode.h (coff_set_custom_section_alignment): Add const to
+ declaration to match definition.
+ (coff_write_object_contents): Don't set F_AR32W(R)? if
+ COFF_WITH_PE.
+
+ * coff-i386.c (in_reloc_p): Add declaration.
+ (i386coff_vec): Simplify initialization of
+ application_section_flags.
+
+ * coffcode.h (sec_to_styp_flags): Write separate COFF_WITH_PE
+ version. Move COFF_WITH_PE specific code to new version.
+ (stype_to_sec_flags): Likewise. Add section parameter.
+ * coffgen.c (make_a_section_from_file): Set target_index before
+ calling styp_to_sec_flags. Pass section to styp_to_sec_flags.
+ * libcoff.h: Rebuild.
+
+ * syms.c (stt): Add some PE/PEI section names.
+ (bfd_decode_symclass): Return 'w', not 'U', for a weak undefined
+ symbol.
+ (bfd_symbol_info): Check for 'w'.
+
+ * section.c (struct bfd_comdat_info): Define.
+ (asection): Add comdat field.
+ (STD_SECTION): Initialize comdat field.
+ (bfd_make_section_anyway): Likewise.
+ * bfd-in2.h: Rebuild.
+
+1999-09-06 Andreas Schwab <schwab@suse.de>
+
+ * elflink.h (elf_link_add_object_symbols): Copy NON_GOT_REF flag
+ to version symbols.
+
+1999-09-06 Nick Clifton <nickc@cygnus.com>
+
+ * elflink.h (elf_gc_record_vtentry): Use bfd_zmalloc and
+ bfd_realloc instead of calloc and realloc.
+
+1999-09-04 Steve Chamberlain <sac@pobox.com>
+
+ * cpu-pj.c: New file.
+ * elf32-pj.c: New file.
+ * config.bfd (pj*): New cpu.
+ (pj-*-*, pjl-*-*): New targets.
+ * configure.in (bfd_elf32_pj_vec): New target vector.
+ (bfd_elf32_pjl_vec): New target vector.
+ * archures.c (bfd_arch_pj): Define.
+ * elf.c (prep_headers): Handle bfd_arch_pj.
+ * reloc.c: Define BFD_RELOC_PJ_* relocations.
+ * targets.c (bfd_elf32_pj_vec, bfd_elf32_pjl_vec): Declare and add
+ to target vector list.
+ * Makefile.am: Rebuild dependencies.
+ (ALL_MACHINES): Add cpu-pj.lo.
+ (ALL_MACHINES_CFILES): Add cpu-pj.c.
+ (BFD32_BACKENDS): Add elf32-pj.lo.
+ (BFD32_BACKENDS_CFILES): Add elf32-pj.c.
+ * configure, Makefile.in, bfd-in2.h, libbfd.h: Rebuild.
+
+1999-09-04 Ian Lance Taylor <ian@zembu.com>
+
+ * elf-bfd.h (ELF_LINK_NON_GOT_REF): Define.
+ * elflink.h (elf_adjust_dynamic_symbol): Copy REF_REGULAR_NONWEAK
+ and NON_GOT_REF from weak defined symbol to real symbol.
+ * elf32-i386.c (elf_i386_check_relocs): Set NON_GOT_REF.
+ (elf_i386_adjust_dynamic_symbol): If NON_GOT_REF is not set, don't
+ create a COPY reloc.
+ * elf32-sparc.c (elf32_sparc_check_relocs): Set NON_GOT_REF.
+ (elf32_sparc_adjust_dynamic_symbol): If NON_GOT_REF is not set,
+ don't create a COPY reloc.
+
+1999-09-03 Ian Lance Taylor <ian@zembu.com>
+
+ * elflink.h (elf_bfd_final_link): When counting relocations, don't
+ count those in sections we are not including in the link.
+
+Thu Sep 2 17:41:20 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elflink.h (elf_link_add_object_symbols): Work around bogus SH_LINK
+ field in hpux11 shared libraries.
+
+1999-09-02 Nick Clifton <nickc@cygnus.com>
+
+ * elflink.h (elf_gc_record_vtentry): Fix memory leak.
+
+Wed Sep 1 13:34:29 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (elf_hppa_add_symbol_hook): New function.
+ (elf_hppa_final_link, elf_hppa_relocate_section): Likewise.
+ (elf_hppa_final_link_relocate, elf_hppa_relocate_insn): Likewise.
+
+1999-08-31 Alexandre Petit-Bianco <apbianco@cygnus.com>
+
+ * elflink.h (record_link_assignment): When possible, keep the
+ original type of the symbol.
+
+Mon Aug 30 15:26:48 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Allow both
+ R_PARISC_DIR32 and R_PARISC_DIR64 regardless of how the
+ tools were configured.
+ * elf32-hppa.h (_bfd_elf32_hppa_gen_reloc_type): Declare.
+
+1999-08-26 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (_bfd_mips_elf_check_relocs): Don't allocate local
+ GOT entries for GOT16 relocations; they're not required.
+
+1999-08-24 Nick Clifton <nickc@cygnus.com>
+
+ From a patch submitted by Roland McGrath <roland@baalperazim.frob.com>
+
+ * config.bfd (arm-*-netbsd*): New target.
+ * configure.in (armnetbsd_vec): New target vector.
+ * configure: Regenerate
+ * targets.c (bfd_target_vector): Add &armnetbsd_vec.
+
+ * Makefile.am (BFD32_BACKENDS): Add armnetbsd.lo.
+ (ALL_MACHINES_CFILES): Add armnetbsd.c.
+ (armnetbsd.lo): New rule with deps.
+ * Makefile.in: Regenerate.
+
+ * armnetbsd.c: New file: Definitions specific to arm-netbsd
+ target.
+
+Tue Aug 24 00:25:58 1999 Jeffrey A Law (law@cygnus.com)
+
+ * som.c (som_slurp_symbol_table): Fix typo in comment.
+
+Fri Aug 20 17:01:23 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (elf_hppa_fake_sections): Compute section indices
+ here instead of using elf_section_data...
+
+1999-08-19 Nick Clifton <nickc@cygnus.com>
+
+ * coff-mcore.c (mcore_emit_base_file_entry): New function: Emit
+ relocations into the base file.
+ (coff_mcore_relocate_section): Call mcore_emit_base_file_entry if
+ we are building a base file.
+
+1999-08-19 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-arm.h (arm_add_to_rel): New function. Add a value to
+ a REL style reloc.
+ (elf32_arm_relocate_section): Use arm_add_to_rel to increment
+ REL relocs when performing a partial relocation.
+
+1999-08-18 Donn Terry <donn@interix.com>
+
+ * cofflink.c: Move definitions of N_TMASK, et. al., out of
+ _bfd_coff_link_input_bfd into top level.
+
+ * coff-i386.c (coff_i386_reloc): Handle R_IMAGEBASE.
+ (RTYPE2HOWTO): Return NULL if reloc type is out of range.
+ (coff_i386_rtype_to_howto): Likewise.
+ * coffcode.h (coff_slurp_symbol_table): Change a -2 to N_DEBUG.
+ Completely ignore symbols which are all zero.
+ (dummy_reloc16_estimate): Add return 0.
+ * cofflink.c (_bfd_coff_link_input_bfd): Rename inner scope
+ variable copy to name_copy to avoid shadowing outer scope
+ variable.
+ * libcoff-in.h (coff_data_type): Change raw_syment_count field
+ from unsigned int to unsigned long. Add timestamp field.
+ * libcoff.h: Rebuild.
+
+1999-08-17 H.J. Lu <hjl@gnu.org>
+
+ * elf32-hppa.c (bfd_elf32_bfd_is_local_label_name): Fix typo in
+ macro definition.
+
+1999-08-17 Ian Lance Taylor <ian@zembu.com>
+
+ * elf32-mips.c (_bfd_mips_elf_add_symbol_hook): Set BSF_DYNAMIC
+ for special section symbols.
+ * elflink.h (elf_merge_symbol): If we have no old BFD, check
+ BSF_DYNAMIC on the section symbol to see whether the old BFD is
+ dynamic.
+
+1999-08-15 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (mips_elf_calculate_relocation): Fix unfortunate
+ coincidence of variable names between old and new code.
+
+1999-08-12 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-arm.h (elf32_arm_to_thumb_stub): Make 'offset' parameter
+ into a bfd_vma and 'addend' parameter a 'bfd_signed_vma'.
+ (elf32_thumb_to_arm_stub): Make 'offset' parameter into a bfd_vma
+ and 'addend' parameter a 'bfd_signed_vma'.
+ (elf32_arm_final_link_relocate): Do not involve stubs in
+ R_ARM_THM_PC22 relocs relative to section symbols, they are long
+ jumps, not function calls.
+
+1999-08-11 Robin Farine <advanc@dial.eunet.ch>
+
+ * elf32-arm.h (elf32_arm_final_link_relocate): Check for overflow
+ in R_ARM_PC24 relocs.
+
+Tue Aug 10 12:48:09 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (elf_hppa_fake_sections): New function.
+ * elf32-hppa.c (elf_backend_fake_sections): Define.
+
+ * elf-hppa.h (elf_hppa_final_write_processing): Update for
+ recent changes to the arch_info structure.
+
+ * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Handle
+ R_HPPA_SEGBASE and R_HPPA_SEGREL32.
+ * cpu-hppa.c (bfd_hppa20w_arch): New entry in architecture info
+ list.
+
+Tue Aug 10 00:34:29 1999 Mark P. Mitchell <mark@codesourcery.com>
+ Ralf Baechle <ralf@uni-koblenz.de>
+
+ * elf32-mips.c (_bfd_mips_elf_size_dynamic_sections): Always
+ output DT_MIPS_GOTSYM.
+ (_bfd_mips_elf_finish_dynamic_sections): Use the same value as
+ DT_MIPS_SYMTABNO if there are no global GOT symbols.
+
+Tue Aug 10 00:21:08 1999 Mark P. Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (mips_elf_create_dynamic_relocation): Change
+ prototype. Handle local symbols. Add commentary.
+ (mips_elf_calculate_relocation): Adjust accordingly.
+ (_bfd_mips_elf_check_relocs): Handle local symbols in R_MIPS_32
+ relocations.
+
+ * elflink.h (elf_bfd_final_link): Tweak last change.
+
+1999-08-09 Mark Mitchell <mark@codesourcery.com>
+
+ * elflink.h (elf_link_size_reloc_section): Use the counts in the
+ elf-section data to allocate just the right amount of relocation
+ space. Don't allocate the hash space twice.
+ (elf_bfd_final_link): Calculate the amount of space to allocate in
+ each relocation section.
+
+Mon Aug 9 17:37:30 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type, case 32): When in
+ 64bit mode, generate a section relative relocation for a 32bit
+ wide relocation.
+ (elf_hppa_is_local_label_name): New function.
+ * elf32-hppa.c (elf_hppa_is_local_label_name): Deleted. To be
+ shared between 32bit and 64bit port.
+
+1999-08-09 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (elf_mips_howto_table): Fix src_mask for
+ R_MIPS_GOT16 and R_MIPS_CALL16.
+ (mips_elf_got16_entry): Use mips_elf_high to calculate the value
+ to use when looking for a preexisting GOT entry.
+
+1999-08-09 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * elf64-sparc.c (sparc64_elf_relocate_section): Back out part of
+ the Sep. 4th, 1998 change. glibc 2.0.x dynamic linker had bug,
+ not binutils.
+ * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
+
+1999-08-09 Geoff Keating <geoffk@cygnus.com>
+
+ * elflink.h (elf_link_output_extsym): Don't output a weak
+ reference to an undefined symbol just because it was defined weak
+ in a shared object.
+
+1999-08-09 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * coffgen.c (coff_find_nearest_line): When looking for file, use
+ last best match rather than first. If address is beyond last line
+ number record, don't return the last line as the correct value.
+
+1999-08-08 Ian Lance Taylor <ian@zembu.com>
+
+ * section.c (SEC_SMALL_DATA): Rename from SEC_SHORT.
+ * bfd-in2.h: Rebuild.
+
+1999-08-08 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * libcoff-in.h (struct coff_section_alignment_entry): Define.
+ * coffcode.h (coff_set_custom_section_alignment): New static
+ function.
+ (coff_section_alignment_table): New static array.
+ (coff_new_section_hook): Use coff_set_customer_section_alignment.
+ * coff-go32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Define.
+ * coff-stgo32.c (COFF_SECTION_ALIGNMENT_ENTRIES): Define.
+ * libcoff.h: Rebuild.
+
+1999-08-08 Ian Lance Taylor <ian@zembu.com>
+
+ * Makefile.am: Rename .dep* files to DEP*. Change DEP variable to
+ MKDEP.
+ * Makefile.in: Rebuild.
+
+1999-08-08 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * section.c (SEC_SHARED): Define.
+ * coffcode.h (sec_to_styp_flags): Handle SEC_SHARED.
+ (styp_to_sec_flags): Likewise.
+ * peicode.h (coff_swap_scnhdr_out): Likewise.
+ * bfd-in2.h: Rebuild.
+
+1999-08-08 Ian Lance Taylor <ian@zembu.com>
+
+ * coffcode.h (coff_classify_symbol): Comment out part of
+ 1999-08-05 change which breaks cygwin DLLs.
+
+ * acinclude.m4 (BFD_BINARY_FOPEN): Change -windows to -windows*.
+ * aclocal.m4, configure: Rebuild.
+
+1999-08-06 Ian Lance Taylor <ian@zembu.com>
+
+ * section.c (global_syms): Only initialize union field if
+ __STDC__.
+
+1999-08-04 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (mips_elf_got16_entry): Don't multiply GOT index by
+ the size of a GOT entry here.
+ (mips_elf_calculate_relocation): Don't create a local GOT entry
+ for the symbol in a GOT16 relocation; just for it's high-order bit
+ (_bfd_mips_elf_relocate_section): Fix thinko.
+
+1999-08-05 Ian Lance Taylor <ian@zembu.com>
+
+ Based on patches from Donn Terry <donn@interix.com>:
+ * coffcode.h (enum coff_symbol_classification): Define.
+ (bfd_coff_backend_data): Rename _bfd_coff_sym_is_global to
+ _bfd_coff_classify_symbol. Change return type.
+ (bfd_coff_classify_symbol): Rename from bfd_coff_sym_is_global.
+ (coff_slurp_symbol_table): Use coff_classify_symbol.
+ (coff_classify_symbol): New static function.
+ (coff_sym_is_global): Never define.
+ (bfd_coff_std_swap_table): Initialize with coff_classify_symbol.
+ * cofflink.c (coff_link_check_ar_symbols): Use
+ bfd_coff_classify_symbol rather than bfd_coff_sym_is_global.
+ (coff_link_add_symbols): Likewise.
+ (_bfd_coff_link_input_bfd): Likewise.
+ * coff-sh.c (bfd_coff_small_swap_table): Initialize with
+ coff_classify_symbol.
+ * libcoff.h: Rebuild.
+
+Wed Aug 4 18:08:07 1999 Jeffrey A Law (law@cygnus.com)
+
+ * libhppa.h (R_HPPA_LTPSEL, R_HPPA_RTPSEL): New field selectors
+ (e_ltpsel, e_rtpsel): Similarly.
+
+ * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Handle 21bit e_ltpsel
+ and 14bit ertpsel. Handle 64bit psel.
+
+1999-08-04 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (_bfd_mips_elf_relocate_section): Tweak HI16/LO16
+ handling for REL relocations. And only left-shift R_MIPS26
+ relocation addends where necessary.
+
+1999-08-03 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (mips_elf_next_lo16_addend): Rename to ...
+ (mips_elf_next_lo16_relocation): Don't compute the addend here.
+ Just return the relocation found.
+ (mips_elf_relocate_section): Pull the LO16 addend out of the
+ section itself when using REL relocations.
+
+ * elf32-mips.c (mips_elf_calculate_relocation): Restore
+ _DYNAMIC_LINK handling and handling of undefined symbols in shared
+ libraries.
+
+1999-08-03 Ian Lance Taylor <ian@zembu.com>
+
+ * elf32-ppc.c (ppc_elf_relocate_section): Don't use the relocation
+ value of a symbol in a SEC_DEBUGGING section. Warn when doing a
+ relocation against a symbol in an input section with no output
+ section. From Daniel Jacobowitz <drow@false.org>.
+
+ * coff-stgo32.c (go32_stubbed_coff_object_p): Remove; not used.
+
+ * acinclude.m4 (BFD_CC_FOR_BUILD): Change to use conftest, and to
+ look for generated file correctly.
+ * aclocal.m4, configure: Rebuild.
+
+1999-08-02 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (_bfd_mips_elf_relocate_section): Handle R_MIPS_26
+ and R_MIPS16_26 relocations correctly when relocating.
+ (_bfd_mips_elf_check_relocs): Don't assume that R_MIPS_CALL_HI16
+ and R_MIPS_CALL_LO16 are for global symbols.
+
+1999-08-02 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * elflink.h (elf_bfd_final_link): Copy the whole isym, not just
+ some fields.
+ * elf64-sparc.c (sparc64_elf_output_arch_syms): Declare used
+ variables and initialize them.
+
+1999-08-01 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (_bfd_mips_elf_final_link): Handle the case where
+ there are no global symbols requiring GOT entries.
+ (_bfd_mips_elf_size_dynamic_sections): Likewise.
+ (_bfd_mips_elf_finish_dynamic_symbol): Likewise.
+ (_bfd_mips_elf_finish_dynamic_sections): Likewise.
+
+ * elf32-mips.c (mips_elf_calculate_relocation): Undefined weak
+ symbols are considered to have the value zero.
+ (_bfd_mips_elf_relocate_section): Don't try to perform a
+ relocation for an undefined symbol.
+ (_bfd_mips_elf_check_relocs): Allocate locate GOT space for local
+ GOT16 relocations.
+
+1999-07-30 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * elf64-sparc.c (sparc64_elf_build_plt): Cosmetic change - ABI
+ wants ba,a,pt %xcc instead of %icc.
+ Emit correct .PLT0-(.PLTN+4) initial value into the pointer slots
+ of large PLT entries.
+ (sparc64_elf_plt_ptr_offset): Fix calculation.
+ (sparc64_elf_finish_dynamic_symbol): Negative value of R_SPARC_JMP_SLOT
+ addend should be relative to load address, not .plt section start.
+ (sparc64_elf_size_info): Sparc64 uses 32bit .hash entries.
+
+1999-07-30 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * elf-bfd.h (struct elf_backend_data): Add
+ print_symbol_all and output_arch_syms backend methods.
+ * elfxx-target.h: Likewise.
+ * elf64-sparc.c (sparc64_elf_bfd_link_hash_table_create,
+ sparc64_elf_add_symbol_hook, sparc64_elf_output_arch_syms,
+ sparc64_elf_get_symbol_type, sparc64_elf_symbol_processing): New
+ functions.
+ (sparc64_elf_size_dynamic_sections): Leave space for STT_REGISTER
+ symbols in .dynsym, add their names into .dynstr. Put those symbols
+ into dynlocal.
+ (sparc64_elf_finish_dynamic_sections): Fix up DT_SPARC_REGISTER
+ pointers to STT_REGISTER symbols in dynsym section.
+ (sparc64_elf_print_symbol_all): New function.
+ * elf.c (bfd_elf_print_symbol): Allow special backend symbol
+ printing using the print_symbol_all hook.
+
+1999-07-30 Catherine Moore <clm@cygnus.com>
+
+ * elf32-arm.h (elf32_arm_check_relocs): Use r_offset for
+ R_ARM_GNU_VTENTRY.
+
+1999-07-29 Richard Henderson <rth@cygnus.com>
+
+ * elf32-mips.c (_bfd_mips_elf_final_link): Only re-sort dynsyms if
+ dynamic_sections_created.
+
+1999-07-29 Richard Henderson <rth@cygnus.com>
+
+ * elf32-mips.c (mips_info_to_howto_rel): Split out switch to ...
+ (mips_rtype_to_howto): ... new function.
+ (_bfd_mips_elf_relocate_section): Use it.
+
+1999-07-28 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (_bfd_mips_elf_relocate_section): Fix typo.
+
+1999-07-27 Nick Clifton <nickc@cygnus.com>
+
+ Patch generated by Bernd Schmidt. <bernds@cygnus.co.uk>
+
+ * coff-arm.c (coff_arm_is_local_label_name): Change to strip
+ out only symbols that start with LOCAL_LABEL_PREFIX followed by 'L'.
+
+1999-07-23 Donn Terry <donn@interix.com>
+
+ * libcoff-in.h (coff_link_hash_entry): Add coff_link_hash_flags
+ field, and define COFF_LINK_HASH_PE_SECTION_SYMBOL.
+ * cofflink.c (coff_link_add_symbols): If PE, handle section
+ symbols specially.
+ * libcoff.h: Rebuild.
+
+ * config.bfd (i[3456]86-*-interix*): New target.
+
+1999-07-21 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * coffcode.h (styp_to_sec_flags): If COFF_LONG_SECTION_NAMES and
+ COFF_SUPPORT_GNU_LINKONCE, mark sections whose names begin with
+ .gnu.linkonce with SEC_LINKONCE and SEC_LINK_DUPLICATES_DISCARD.
+ * coff-go32.c: (COFF_LONG_SECTION_NAMES): Define.
+ (COFF_SUPPORT_GNU_LINKONCE): Define.
+ * coff-stgo32.c: (COFF_LONG_SECTION_NAMES): Define.
+ (COFF_SUPPORT_GNU_LINKONCE): Define.
+
+1999-07-21 Ian Lance Taylor <ian@zembu.com>
+
+ From Mark Elbrecht:
+ * makefile.dos: Remove; obsolete.
+ * configure.bat: Remove; obsolete.
+
+1999-07-21 H.J. Lu <hjl@gnu.org>
+
+ * config.bfd (i[3456]86-*-vxworks*): Add targ_underscore=yes.
+
+1999-07-21 Philippe De Muyter <phdm@macqel.be>
+
+ * cofflink.c (_bfd_coff_generic_relocate_section): Issue an error
+ message and fail if a symbol index is out of range.
+
+1999-07-21 Ian Lance Taylor <ian@zembu.com>
+
+ * elf32-mips.c (mips_elf_calculate_relocation): Get the GP value
+ when looking at a R_MIPS_GOT16 relocation.
+
+1999-07-20 Nick Clifton <nickc@cygnus.com>
+
+ * coff-m88k.c: Use CREATE_BIG_COFF_TARGET_VEC.
+
+Mon Jul 19 14:03:44 1999 Mark P. Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (_bfd_mips_elf_final_link): Restore setting of GP
+ removed in previous change.
+ (_bfd_mips_elf_relocate_section): Adjust GP relative relocations
+ in relocateable output.
+
+1999-07-19 Ian Lance Taylor <ian@zembu.com>
+
+ * coff-m88k.c (m88kbcs_vec): Initialize new field of bfd_target
+ structure.
+
+ * elflink.h (elf_merge_symbol): Do merge symbols from the same BFD
+ if they appear to be specially created by the linker.
+
+1999-07-19 Nick Clifton <nickc@cygnus.com>
+
+ * targets.c (alternative_target): New field in bfd_target
+ structure.
+ (bfd_search_for_target): New function: Find a target that
+ satisifies a search function.
+ * bfd-in2.h: Regenerate.
+
+ * elfxx-target.h: Initialise the alternative_target field of
+ the bfd_target structures to point to the other target (if
+ defined).
+ * nlm-target.h: Initialise the alternative_target field of
+ the bfd_target structures to point to the other target (if
+ defined).
+
+ * coffcode.h (CREATE_BIG_COFF_TARGET_VEC): New macro.
+ (CREATE_LITTLE_COFF_TARGET_VEC): New macro.
+
+ * aix386-core.c: Initialise new field of bfd_target structure.
+ * aout-adobe.c: Initialise new field of bfd_target structure.
+ * aout-arm.c: Initialise new field of bfd_target structure.
+ * aout-target.h: Initialise new field of bfd_target structure.
+ * aout-tic30.c: Initialise new field of bfd_target structure.
+ * binary.c: Initialise new field of bfd_target structure.
+ * bout.c: Initialise new field of bfd_target structure.
+ * cisco-core.c: Initialise new field of bfd_target structure.
+ * coff-a29k.c: Use CREATE_BIG_COFF_TARGET_VEC.
+ * coff-alpha.c: Initialise new field of bfd_target structure.
+ * coff-apollo.c: Use CREATE_BIG_COFF_TARGET_VEC.
+ * coff-arm.c: Use CREATE_{BIG|LITTLE}_COFF_TARGET_VEC.
+ * coff-h8300.c: Use CREATE_BIG_COFF_TARGET_VEC.
+ * coff-h8500.c: Use CREATE_BIG_COFF_TARGET_VEC.
+ * coff-i386.c: Initialise new field of bfd_target structure.
+ * coff-i860.c: Initialise new field of bfd_target structure.
+ * coff-i960.c: Use CREATE_LITTLE_COFF_TARGET_VEC.
+ * coff-m68k.c: Use CREATE_BIG_COFF_TARGET_VEC.
+ * coff-mcore.c: Use CREATE_{BIG|LITTLE}_COFF_TARGET_VEC.
+ * coff-mips.c: Initialise new field of bfd_target structure.
+ * coff-ppc.c: Initialise new field of bfd_target structure.
+ * coff-rs6000.c: Initialise new field of bfd_target structure.
+ * coff-sh.c: Use CREATE_{BIG|LITTLE}_COFF_TARGET_VEC.
+ * coff-sparc.c: Use CREATE_BIG_COFF_TARGET_VEC.
+ * coff-tic30.c: Initialise new field of bfd_target structure.
+ * coff-tic80.c: Use CREATE_LITTLE_COFF_TARGET_VEC.
+ * coff-w65.c: Use CREATE_LITTLE_COFF_TARGET_VEC.
+ * coff-we32k.c: Use CREATE_BIG_COFF_TARGET_VEC.
+ * coff-z8k.c: Use CREATE_BIG_COFF_TARGET_VEC.
+ * hppabsd-core.c: Initialise new field of bfd_target structure.
+ * hpux-core.c: Initialise new field of bfd_target structure.
+ * i386msdos.c: Initialise new field of bfd_target structure.
+ * i386os9k.c: Initialise new field of bfd_target structure.
+ * ieee.c: Initialise new field of bfd_target structure.
+ * ihex.c: Initialise new field of bfd_target structure.
+ * irix-core.c: Initialise new field of bfd_target structure.
+ * mipsbsd.c: Initialise new field of bfd_target structure.
+ * netbsd-core.c: Initialise new field of bfd_target structure.
+ * oasys.c: Initialise new field of bfd_target structure.
+ * osf-core.c: Initialise new field of bfd_target structure.
+ * ppcboot.c: Initialise new field of bfd_target structure.
+ * ptrace-core.c: Initialise new field of bfd_target structure.
+ * sco5-core.c: Initialise new field of bfd_target structure.
+ * som.c: Initialise new field of bfd_target structure.
+ * srec.c: Initialise new field of bfd_target structure.
+ * tekhex.c: Initialise new field of bfd_target structure.
+ * trad-core.c: Initialise new field of bfd_target structure.
+ * versados.c: Initialise new field of bfd_target structure.
+ * vms.c: Initialise new field of bfd_target structure.
+
+1999-07-19 Andreas Schwab <schwab@suse.de>
+
+ * elflink.h (elf_bfd_final_link): Remove unused variables rel_hash
+ and rel_hdr.
+
+Sat Jul 17 02:28:28 1999 Mark P. Mitchell <mark@codesourcery.com>
+
+ * elflink.h (elf_link_adjust_relocs): New function.
+ (elf_bfd_final_link): Use it.
+ (elf_link_input_bfd): Deal with the fact that there can be
+ two relocation sections for a single section.
+ (elf_reloc_link_order): Likewise.
+
+ * elf32-mips.c (_bfd_mips_elf_final_link): Don't set GP for
+ a relocateable object.
+ (_bfd_mips_elf_relocate_section): Handle relocateable links.
+
+1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * elf64-sparc.c (sparc64_elf_info_to_howto): Use ELF64_R_TYPE_ID.
+ (sparc64_elf_get_reloc_upper_bound,
+ sparc64_elf_get_dynamic_reloc_upper_bound,
+ sparc64_elf_slurp_one_reloc_table, sparc64_elf_slurp_reloc_table,
+ sparc64_elf_canonicalize_dynamic_reloc, sparc64_elf_write_relocs):
+ New functions.
+ (sparc64_elf_check_relocs, sparc64_elf_relocate_section): Use
+ ELF64_R_TYPE_ID/DATA where appropriate.
+
+1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * elf64-sparc.c (sparc64_elf_size_dynamic_sections): Remove
+ DT_SPARC_PLTFMT.
+
+1999-07-16 Ian Lance Taylor <ian@zembu.com>
+
+ * elf32-mips.c (mips_elf_local_relocation_p): New static
+ function.
+ (mips_elf_next_lo16_addend): Call bfd_set_error on failure.
+ (mips_elf_calculate_relocation): Use mips_elf_local_relocation_p.
+ Always set *require_jalxp.
+ (mips_elf_stub_section_p): Mark abfd parameter as unused.
+ (_bfd_mips_elf_relocate_section): Only look for LO16 following
+ GOT16 if the GOT16 is against a local symbol. Don't return false
+ for an undefined symbol. If there is an overflow, assert that we
+ have a name.
+
+1999-07-16 Andreas Schwab <schwab@suse.de>
+
+ * elflink.h (elf_link_record_local_dynamic_symbol): Remove unused
+ variables `link' and `elfsec'.
+ (elf_bfd_final_link): Remove unused variable `os'.
+
+Thu Jul 15 17:55:31 1999 Mark P. Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (_bfd_mips_elf_modify_segment_map): Don't require
+ a PT_PHDR program headers.
+ (_bfd_mips_elf_final_link): Don't assume there are going to be
+ section symbols when we're not building a shared object.
+ (_bfd_mips_elf_check_relocs): Make sure we have a GOT when
+ we need one.
+
+1999-07-15 J.T. Conklin <jtc@redback.com>
+
+ * config.bfd (i[3456]86-*-vxworks*): New target.
+
+1999-07-15 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (mips_elf_stub_section_p): New function.
+ (mips_elf_calculate_relocation): Handle MIPS16 stub functions.
+ (mips_elf_relocate_section): Adjust calling sequence for
+ mips_elf_calculate_relocation and mips_elf_perform_relocation.
+ (mips_elf_perform_relocation): Turn `jal' into `jalx' where
+ required.
+
+1999-07-15 Ian Lance Taylor <ian@zembu.com>
+
+ * configure.in: Bump version number to 2.9.5.
+ * configure: Rebuild.
+
+Thu Jul 15 02:56:15 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type, case R_HPPA): Handle
+ 64bit format.
+ (_bfd_elf_hppa_gen_reloc_type, case R_GOTOFF): Use base reloc type
+ to derive final type instead of hardwiring a selection.
+
+1999-07-14 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (mips_elf_obtain_contents): Swap 16-bit halves of
+ things relocated by R_MIPS16_GPREL.
+ (mips_elf_perform_relocation): Likewise.
+
+Wed Jul 14 15:23:19 1999 Jim Wilson <wilson@cygnus.com>
+
+ * elfxx-target.h (elfNN_bed): Add elf_backend_want_dynbss.
+
+1999-07-14 Richard Henderson <rth@cygnus.com>
+
+ * elf32-mips.c (struct mips_got_info): Add global_gotno.
+ (_bfd_mips_elf_size_dynamic_sections): Set it.
+ (_bfd_mips_elf_final_link): Re-sort; verify the got did not grow.
+ (mips_elf_sort_hash_table): Set max_non_got_dynindex based off
+ new argument max_local.
+
+1999-07-14 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (mips_elf_obtain_contents): Swap the 16-bit
+ subwords when handling an R_MIPS16_26 relocation.
+ (mips_elf_perform_relocation): Don't be paranoid abour right-shift
+ semantics.
+
+ * elf32-mips.c (elf_mips16_gprel_howto): Adjust src_mask and
+ dst_mask to match reality.
+ (_bfd_mips_elf_calculate_relocation): Handle R_MIPS16_GPREL.
+ (mips_elf_obtain_contents): Use bfd_get.
+ (mips_elf_perform_relocation): Handle R_MIPS16_GPREL.
+ (mips_elf_relocate_section): Likewise.
+
+1999-07-13 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (mips_elf_calculate_relocation): Handle R_MIPS16_26.
+ (mips_elf_relocate_section): Adjust calling sequence for
+ mips_elf_perform_relocation.
+ (mips_elf_perform_relocation): Take additional argument. Handle
+ R_MIPS16_26. Use bfd_put for convenience.
+
+1999-07-13 Richard Henderson <rth@cygnus.com>
+
+ * elf.c (assign_file_positions_for_segments): Thinko last change.
+ Always overwrite p_flags.
+
+1999-07-13 Richard Henderson <rth@cygnus.com>
+
+ * elf-bfd.h (struct elf_backend_data): Add want_dynbss.
+ * elflink.c (_bfd_elf_create_dynamic_sections): Only create
+ .dynbss and .rel[a].bss if want_dynbss.
+ * elfxx-target.h (elf_backend_want_dynbss): Provide default.
+
+1999-07-13 Richard Henderson <rth@cygnus.com>
+
+ * elf.c (assign_file_positions_for_segments): Don't overwrite p_flags.
+
+1999-07-13 Richard Henderson <rth@cygnus.com>
+
+ * elf-bfd.h (struct elf_link_local_dynamic_entry): New.
+ (struct elf_link_hash_table): Add dynlocal.
+ (_bfd_elf_link_lookup_local_dynindx): Prototype.
+ (_bfd_elf_link_adjust_dynindx): Delete.
+ (_bfd_elf_link_renumber_dynsyms): Prototype.
+ (_bfd_elf,link_record_local_dynamic_symbol): Prototype.
+ * elfcode.h (elf_link_record_local_dynamic_symbol): New alias.
+ * elflink.c (_bfd_elf_link_adjust_dynindx): Delete.
+ (_bfd_elf_link_lookup_local_dynindx): New function.
+ (elf_link_renumber_hash_table_dynsyms): New function.
+ (_bfd_elf_link_renumber_dynsyms): New function.
+ * elflink.h (elf_link_record_local_dynamic_symbol): New function.
+ (struct elf_assign_sym_version_info): Delete removed_dynamic.
+ (bfd_elf,size_dynamic_sections): Use _bfd_strip_section_from_output
+ instead of elf_link_remove_section_and_adjust_dynindices.
+ Remove removed_dynamic code. Use _bfd_elf_link_renumber_dynsyms.
+ (elf_link_assign_sym_version): Remove removed_dynamic code.
+ (elf_link_renumber_dynsyms): Delete.
+ (elf_bfd_final_link): Install section and local symbols into .dynsym.
+
+ * elf32-m68k.c (elf_m68k_adjust_dynindx): Delete.
+ (elf_m68k_size_dynamic_sections): Don't set section dynindicies.
+ (elf_m68k_finish_dynamic_sections): Don't write section dynsyms.
+ * elf32-mips.c: Similarly.
+ * elf32-ppc.c: Similarly.
+ * elf32-sparc.c: Similarly.
+ * elf64-alpha.c: Similarly.
+ * elf64-sparc.c: Similarly.
+
+1999-07-13 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (mips_elf_calculate_relocation): Do not complain
+ when _gp_disp is undefined. Do not check R_MIPS_LO16 for overflow
+ when the relocation is against _gp_disp.
+
+1999-07-12 Mark Mitchell <mark@codesourcery.com>
+
+ * dwarf2.c (read_attribute): Support DW_FORM_ref8.
+ * elf32-mips.c (mips_elf_link_hash_entry): Change mips_32_relocs
+ to possibly_dynamic_relocs. Adjust usage throughout code.
+ (elf_mips_howto_table): Handle R_MIPS_64 correctly.
+ (elf_mips_ctor64_howto): Likewise.
+ (mips_elf_calculate_relocation): Handle R_MIPS_64 like R_MIPS_32.
+ Adjust indentation.
+ (mips_elf_relocate_section): Handle R_MIPS_64 in 32-bit mode.
+ (_bfd_mips_elf_check_relocs): Handle R_MIPS_64 like R_MIPS_32.
+ Use MIPS_ELF_GOT_SIZE to calculate the size of GOT entries.
+ * elf64-mips.c (elf_backend_may_use_rel_p): Define.
+
+1999-07-12 Ian Lance Taylor <ian@zembu.com>
+
+ * Makefile.am: Rebuild dependencies.
+ * Makefile.in: Rebuild.
+
+ * bfd-in.h: Remove tests of COFF_IMAGE_WITH_PE.
+ * bfd-in2.h: Rebuild.
+
+ * Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
+ as appropriate. Use EMPTY_HOWTO as appropriate. Fill in
+ structure initializations. Add casts.
+ * reloc.c (EMPTY_HOWTO): Define.
+ * bfd-in2.h: Rebuild.
+ * coff-h8300.c (h8300_reloc16_extra_cases): Remove useless
+ comparisons against 0.
+ * elf32-sparc.c (elf32_sparc_merge_private_bfd_data): Change
+ previous_ibfd_e_flags to unsigned long.
+ * vms.h (struct vms_private_data_struct): Change section_count to
+ unsigned.
+ * vms-gsd.c (_bfd_vms_slurp_gsd): Change psect_idx to unsigned.
+ (_bfd_vms_write_gsd): Change symnum to unsigned.
+ * vms-hdr.c (_bfd_vms_write_hdr): Change symnum to unsigned.
+ * vms-tir.c (etir_sta): Change psect to unsigned.
+ (alloc_section): Change idx to unsigned.
+ (tir_sta, tir_ctl): Change psect to unsigned.
+ (_bfd_vms_write_tir): Change len and before to bfd_size_type.
+ * vms.c (priv_section_count): Change to unsigned.
+
+1999-07-12 Andreas Schwab <schwab@suse.de>
+
+ * elf32-m68k.c: Add some ATTRIBUTE_UNUSED.
+ * m68klinux.c: Likewise.
+
+1999-07-12 Ian Lance Taylor <ian@zembu.com>
+
+ * Many files: Changes to avoid gcc warnings: Remove unused local
+ variables. Add default case to enum switches.
+ * coff-arm.c (bfd_arm_allocate_interworking_sections): Only
+ compile if not COFF_IMAGE_WITH_PE.
+ (record_arm_to_thumb_glue, record_thumb_to_arm_glue): Likewise.
+ (bfd_arm_get_bfd_for_interworking): Likewise.
+ (bfd_arm_process_before_allocation): Likewise.
+ * epoc-pei-arm.c: Don't rename bfd_arm functions.
+ * pei-arm.c: Likewise.
+ * elf32-mips.c (mips_elf_link_hash_table_create): Don't declare.
+ (MIPS_ELF_ADD_DYNAMIC_ENTRY): Correct last change.
+ (mips_elf_got16_entry): Put parens around & in body of ==.
+ (mips_elf_calculate_relocation): Correct test for empty string.
+ * vms-gsd.c: Use _bfd_error_handler rather than fprintf to
+ stderr.
+ * vms-misc.c (_bfd_vms_length_hash_symbol): Correct sprintf
+ format.
+
+1999-07-11 Ian Lance Taylor <ian@zembu.com>
+
+ * Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
+ as appropriate. Fill in structure initializations. Add variable
+ initializations. Add casts.
+ * dwarf1.c (parse_line_table): Change eachLine to unsigned long.
+ (dwarf1_unit_find_nearest_line): Change i to unsigned long.
+
+ * elf.c (bfd_elf_hash): Change parameter from unsigned char * to
+ char *.
+ * elf-bfd.h (bfd_elf_hash): Update declaration.
+ * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Remove casts
+ when calling bfd_elf_hash.
+
+1999-07-11 Mark Mitchell <mark@codesourcery.com>
+
+ * libbfd.c (bfd_put_8): Make it of type `void'.
+ * bfd-in2.h: Regenerated.
+ * elf32-mips.c (MIPS_ELF_ADD_DYNAMIC_ENTRY): Conditionalize
+ for 32-bit hosts.
+ (_bfd_mips_elf_final_link): Likewise.
+
+ * elflink.h (elf_link_read_relocs_from_section): Be type-correct.
+
+Thu Jul 8 12:32:23 1999 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * config.bfd (hppa*-*-linux-gnu*): New target
+
+1999-07-07 Mark Mitchell <mark@codesourcery.com>
+
+ * elf-bfd.h (_bfd_mips_elf_section_from_shdr): Constify.
+ (_bfd_mips_elf_create_dynamic_sections): New function.
+ (_bfd_mips_elf_add_symbol_hook): Likewise.
+ (_bfd_mips_elf_adjust_dynamic_symbol): Likewise.
+ (_bfd_mips_elf_finish_dynamic_symbol): Likewise.
+ (_bfd_mips_elf_finish_dynamic_sections): Likewise.
+ (_bfd_mips_elf_gc_mark_hook): Likewise.
+ (_bfd_mips_elf_gc_sweep_hook): Likewise.
+ (_bfd_mips_elf_always_size_sections): Likewise.
+ (_bfd_mips_elf_size_dynamic_sections): Likewise.
+ (_bfd_mips_elf_check_relocs): Likewise.
+ (_bfd_mips_elf_link_hash_table_create): Likewise.
+ (_bfd_mips_elf_print_private_data): Likewise.
+ (_bfd_mips_elf_link_output_symbol_hook): Likewise.
+ (_bfd_mips_elf_final_link): Likewise.
+ (_bfd_mips_elf_additional_program_headers): Likewise.
+ (_bfd_mips_elf_modify_segment_map): Likewise.
+ (_bfd_mips_elf_relocate_section): Likewise.
+ * elf32-mips.c (mips_elf32_object_p): Move contents into
+ _bfd_mips_elf_object_p.
+ (mips_elf_additional_program_headers): Rename to
+ _bfd_mips_elf_additional_program_headers.
+ (mips_elf_modify_segment_map): Rename to
+ _bfd_mips_elf_modify_segment_map.
+ (elf_mips_abi_name): Change prototype.
+ (mips_elf32_section_from_shdr): Merge into
+ _bfd_mips_elf_section_from_shdr.
+ (mips_elf32_section_processing): Merge into
+ _bfd_mips_elf_section_processing.
+ (mips_elf_final_link): Rename to _bfd_mips_elf_final_link. Invoke
+ the right back-end ELF linker.
+ (mips_elf_relocate_section): Rename to
+ _bfd_mips_elf_relocate_section. Clean up. Adjust for 64-bit code.
+ (mips_elf_link_output_symbol_hook): Rename to
+ _bfd_mips_elf_link_output_symbol_hook.
+ (mips_elf_create_dynamic_section): Rename to
+ _bfd_mips_elf_create_dynamic_section.
+ (mips_elf_check_relocs): Rename to _bfd_mips_elf_check_relocs.
+ Adjust for 64-bit code. Use mips_elf_got_section.
+ (mips_elf_adjust_dynamic_symbol): Rename to
+ _bfd_mips_elf_adjust_dynamic_symbol. Use
+ mips_elf_allocate_dynamic_relocations.
+ (mips_elf_finish_dynamic_symbol): Rename to
+ _bfd_mips_elf_finish_dynamic_symbol. Use mips_elf_got_section.
+ Adjust for 64-bit code.
+ (mips_elf_finish_dynamic_sections): Rename to
+ _bfd_mips_elf_finish_dynamic_sections. Adjust for 64-bit code.
+ (mips_elf_always_size_sections): Rename to
+ _bfd_mips_elf_always_size_sections.
+ (mips_elf_add_symbol_hook): Rename to
+ _bfd_mips_elf_add_symbol_hook.
+ (mips_elf_next_lo16_addend): Constify.
+ (mips_elf_calculate_relocation): Likewise.
+ (mips_elf_obtain_contents): Likewise.
+ (mips_elf_perform_relocation): Likewise.
+ (mips_elf_create_dynamic_relocation): Likewise.
+ (mips_elf_allocate_dynamic_relocations): New function.
+ (MIPS_ELF_REL_DYN_SECTION_NAME): New macro.
+ (MIPS_ELF_REL_SIZE): Likewise.
+ (MIPS_ELF_DYN_SIZE): Likewise.
+ (MIPS_ELF_GOT_SIZE): Likewise.
+ (MIPS_ELF_SYM_SIZE): Likewise.
+ (MIPS_ELF_LOG_FILE_ALIGN): Likewise.
+ (MIPS_ELF_GET_WORD): Likewise.
+ (MIPS_ELF_PUT_WORD): Likewise.
+ (MIPS_ELF_ADD_DYNAMIC_ENTRY): Likewise.
+ (STUB_LW): Conditionalize for 64-bit value.
+ (elf_mips_howto_table): Add R_MIPS_HIGHER and R_MIPS_HIGHEST
+ entries.
+ (_bfd_mips_elf_merge_private_bfd_data): Merge e_ident[EI_CLASS].
+ Check it for inconsistency.
+ (_bfd_mips_elf_print_private_bfd_data): Print ABI=64 for 64-bit
+ ABI.
+ (_bfd_mips_elf_fake_sections): Remove duplicate handling of
+ .msym.
+ (mips_elf_global_got_index): Use MIPS_ELF_GOT_SIZE.
+ (mips_elf_got_offset_from_index): Use misp_elf_got_section.
+ (mips_elf_create_local_got_entry): Use MIPS_ELF_GOT_SIZE.
+ (mips_elf_local_got_index): Likewise.
+ (mips_elf_got_page): Likewise.
+ (mips_elf_got_info): Likewise.
+ (mips_elf_create_dynamic_relocation): Handle 32-bit/64-bit split.
+ (ELF_DYNAMIC_INTERPRETER): Handle 64-bit code.
+ (mips_elf_create_dynamic_sections): Use MIPS_ELF_LOG_FILE_ALIGN,
+ instead of constant `2'.
+ (mips_elf_create_got_section): Tidy. Use MIPS_ELF_GOT_SIZE.
+ (mips_elf_create_msym_section): Use MIPS_ELF_LOG_FILE_ALIGN.
+ (mips_elf_size_dynamic_sections): Use
+ MIPS_ELF_REL_DYN_SECTION_NAME, MIPS_ELF_GOT_SIZE,
+ MIPS_ELF_ADD_DYNAMIC_ENTRY. Remove #if 0'd code.
+ Adjust all releveant entries in elf backend table.
+ * elf64-mips.c (mips_elf64_section_from_shdr): Remove.
+ (mips_elf64_section_processing): Likewise.
+ Adjust elf backend entries to use _bfd_mips_elf variants now
+ publicly available.
+
+ * elflink.h (elf_link_create_dynamic_sections): Handle non-standard
+ hash-entry sizes.
+ (size_dynamic_sections): Likewise.
+ (elf_link_output_extsym): Likewise.
+ * elf.c: (elf_fake_sections): Likewise.
+ * libbfd.c (bfd_get): New macro.
+ (bfd_put): Likewise.
+ * bfd-in2.h: Regenerated.
+
+1999-07-07 Mark Mitchell <mark@codesourcery.com>
+
+ * elf-bfd.h (elf_size_info): Add hash_entry_size,
+ int_rels_per_ext_rel, swap_dyn_out, swap_reloc_in, swap_reloc_out,
+ wap_reloca_in, and swap_reloca_out.
+ * elflink.h (elf_link_read_relocs_from_section): Adjust to handle
+ multiple internal relocations per external relocation.
+ (link_read_relocs): Likewise.
+ (elf_bfd_final_link): Likewise.
+ (elf_link_input_bfd): Likewise.
+ (elf_gc_mark): Likewise.
+ (elf_gc_smash_unused_vtentry_relocs): Likewise.
+ * elfcode.h (elf_swap_dyn_out): Adjust type to match
+ elf_swap_dyn_in.
+ (size_info): Add entries for new fields.
+ * elf64-mips.c (mips_elf64_swap_reloc_out): Enable.
+ (mips_elf64_be_swap_reloc_in): New function.
+ (mips_elf64_be_swap_reloc_out): Likewise.
+ (mips_elf64_be_swap_reloca_in): Likewise.
+ (mips_elf64_be_swap_reloca_out): Likewise.
+ (mips_elf64_size_info): Add entries for new fields.
+
+1999-07-07 Ian Lance Taylor <ian@zembu.com>
+
+ * elflink.h (elf_bfd_final_link): Assert that section reloc_count
+ field equals the new rel_count field.
+ (elf_link_input_bfd): When doing a relocateable link, use the new
+ rel_count field rather than the reloc_count field.
+ (elf_reloc_link_order): Likewise.
+ (elf_finish_pointer_linker_section): Likewise.
+
+ Based on patch from H.J. Lu <hjl@gnu.org>:
+ * elflink.h (elf_merge_symbol): Permit a non-weak definition in a
+ shared library to override a weak definition in a regular object.
+
+Tue Jul 6 10:23:39 1999 Jeffrey A Law (law@cygnus.com)
+
+ * libhppa.h: Revert July 2, 1999 patch.
+
+ * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): T mode selectors
+ need to generate DLTIND relocations, not DLTREL relocations.
+
+1999-07-05 Nick Clifton <nickc@cygnus.com>
+
+ * coffcode.h (coff_set_arch_mach_hook): Recognise arm 5
+ architectures.
+ (coff_set_flags): Recognise arm 5 architectures.
+
+ * cpu-arm.c: Add support for strongarm and arm9 cpus.
+ Add support for armv5 architecture.
+
+ * archures.c: Add bfd_mach_arm_5 and bfd_mach_arm_5T.
+
+ * reloc.c: Add new, assembler only, ARM reloc:
+ BFD_RELOC_ARM_ADRL_IMMEDIATE.
+
+ * bfd-in2.h: Regenerate.
+
+1999-07-02 Mark Mitchell <mark@codesourcery.com>
+
+ * dwarf2.c (parse_comp_unit): Add ABBREV_LENGTH parameter.
+ (_bfd_dwarf2_find_nearest_line): Add ADDR_SIZE parameter.
+ * elf.c (_bfd_elf_find_nearest_line): Pass it.
+ * elf32-arm.h (elf32_arm_find_nearest_line): Likewise.
+ * elf32-mips.c (ABI_64_P): New macro.
+ (IRIX_COMPAT): We are IRIX6-compatible if ABI_64_P.
+ (_bfd_mips_elf_find_nearest_line): Adjust call to
+ _bfd_dwarf2_find_nearest_line.
+ * libbfd-in.h (_bfd_dwarf2_find_nearest_line): Update prototype.
+ * libbfd.h: Regenerated.
+
+1999-07-02 Ian Lance Taylor <ian@zembu.com>
+
+ * config.bfd: Add * at the end of i[3456]86-*-unixware.
+
+Fri Jul 2 12:21:10 1999 Jeffrey A Law (law@cygnus.com)
+
+ * libhppa.h (HPPA_R_ARG_RELOC): Delete.
+ (HPPA_R_CONSTANT, HPPA_R_ADDEND): Likewise.
+
+1999-07-01 Mark Mitchell <mark@codesourcery.com>
+
+ * elf-bfd.h (bfd_elf_section_data): Add rel_count and rel_count2
+ fields.
+ (_bfd_elf_init_reloc_shdr): New function.
+ * elf.c (_bfd_elf_new_section_hook): Use bfd_zalloc, rather than
+ bfd_alloc followed by memset.
+ (_bfd_elf_init_reloc_shdr): New function, split out from ...
+ (elf_fake_sections): Here.
+ (assign_section_numbers): Assign section numbers for the second
+ relocation section, if required.
+ * elflink.h (elf_link_output_relocs): New function.
+ (elf_link_size_reloc_section): Likewise.
+ (elf_bfd_final_link): Use elf_link_size_reloc_section.
+ (elf_link_input_bfd): Use elf_link_output_relocs.
+
+ * elf32-mips.c (_bfd_mips_elf_fake_sections): Use
+ _bfd_elf_init_reloc_shdr to initialize rel_hdr2.
+
+Thu Jul 1 13:58:48 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): Handle R_PCREL_CALL
+ with 22bit format.
+
+1999-06-28 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (mips_elf_got_info): Move declaration before
+ prototypes. Change global_gotsym to be a pointer to a hash entry,
+ rather than a number index.
+ (mips_elf_link_hash_entry): Move declaration before prototypes.
+ (mips_elf_irix6_finish_dynamic_symbol): New function.
+ (mips_elf_sign_extend): Likewise.
+ (mips_elf_high): Likewise.
+ (mips_elf_higher): Likewise.
+ (mips_elf_highest): Likewise.
+ (mips_elf_global_got_index): Likewise.
+ (mips_elf_local_got_index): Likewise.
+ (mips_elf_got_offset_from_index): Likeiwse.
+ (mips_elf_record_global_got_symbol): Likewise.
+ (mips_elf_got_page): Likewise.
+ (mips_elf_next_lo16_addend): Likewise.
+ (mips_elf_calculate_relocation): Likewise.
+ (mips_elf_obtain_contents): Likewise.
+ (mips_elf_perform_relocation): Likewise.
+ (mips_elf_assign_gp): Likewise.
+ (mips_elf_sort_hash_table_f): Likewise.
+ (mips_elf_sort_hash_table): Likewise.
+ (mips_elf_got_section): Likewise.
+ (mips_elf_got_info): Likewise.
+ (mips_elf_create_local_got_entry): Likewise.
+ (mips_elf_got16_entry): Likewise.
+ (mips_elf_create_dynamic_relocation): Likewise.
+ (elf_mips_howto_table): Add description of R_MIPS_SCN_DISP.
+ (mips_elf_final_gp): Use mips_elf_assign_gp.
+ (_bfd_mips_elf_symbol_processing): Don't move SHN_COMMON symbols
+ into SHN_SCOMMON automatically on IRIX6.
+ (mips_elf_add_symbol_hook): Likewise.
+ (mips_elf_relocate_section): Rewrite, using
+ mips_elf_calculate_relocation and mips_elf_perform_relocation.
+ (mips_elf_create_dynamic_section): Use MIPS_ELF_STUB_SECTION_NAME.
+ Don't deal with .rld_map on IRIX6.
+ (mips_elf_create_got_section): Adjust use of global_gotsym. Set
+ section flags appropriately for .got.
+ (mips_elf_check_relocs): Handle IRIX6 relocations making use of
+ the got. Call mips_elf_record_global_got_symbol and allocate
+ local got space appropriately.
+ (mips_elf_size_dynamic_sections): Use bfd_byte *, not unsigned
+ char *. Rework calculation of GOT size. Sort dynamic symbol
+ table entries so entries that do not require GOT entries appear at
+ the beginning. Don't use DT_MIPS_HIPAGENO on IRIX6. Remove dead
+ code dealing with DT_INIT and DT_FINI. Remove fiddling with
+ global_gotsym.
+ (mips_elf_finish_dynamic_symbol): Adjust creation of global GOT
+ entries.
+ (mips_elf_finish_dynamic_symbol): Use
+ mips_elf_irix6_finish_dynamic_symbol.
+ (mips_elf_finish_dynamic_sections): Correct off-by-one error
+ setting DT_MIPS_UNREFEXTNO. Adjust setting of DT_MIPS_GOTSYM for
+ change to global_gotsym. Set DT_MIPS_OPTIONS on IRIX6.
+
+1999-06-30 Ian Lance Taylor <ian@zembu.com>
+
+ * elf32-mips.c (mips_elf_final_link): Don't set CPIC when doing a
+ relocateable link. From Ralf Baechle <ralf@uni-koblenz.de>.
+
+1999-06-04 Philip Blundell <philb@gnu.org>
+
+ * elf32-arm.h (elf_backend_got_header_size): Define.
+ (elf_backend_plt_header_size): Likewise.
+
+1999-06-28 Jim Pick <jim@jimpick.com>
+
+ * elf32-arm.h (elf32_arm_relocate_section): Mind no_undefined
+
+Tue Jun 29 02:25:03 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.c (elf_hppa_howto_table): Use bfd_elf_generic_reloc as
+ relocation function.
+ * elf32-hppa.c (hppa_elf_reloc): Kill unused/unwanted function.
+
+1999-06-27 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (MIPS_ELF_SRDATA_SECTION_NAME): New macro.
+ (MIPS_ELF_OPTIONS_SECTION_NAME): Likewise.
+ (MIPS_ELF_STUB_SECTION_NAME): Likewise.
+ (_bfd_mips_elf_section_from_shdr): Use them.
+ (_bfd_mips_elf_fake_sections): Likewise. Add .srdata to the list
+ of GP-relative sections.
+ (_bfd_mips_elf_set_section_contents): Use them.
+ (_bfd_mips_elf_section_processing): Share code between .sdata and
+ .lit4/.lit8 sections. Set appropriate flags for .srdata.
+ (mips_elf_additional_program_headers): Add handling for
+ PT_MIPS_OPTIONS segment on IRIX6.
+ (mips_elf_modify_segment_map): Likeiwse.
+ (mips_elf_final_link): Set EF_MIPS_CPIC when required by the ABI.
+ Include the options sections on IRIX6. Don't look for GP-relative
+ sections by name; use SHF_MIPS_GPREL instead.
+ (ELF_DYNAMIC_INTERPRETER): Adjust to use /usr/lib32/libc.so.1 for
+ the N32 ABI.
+ (mips_elf_create_dynamic_sections): Don't muck about with section
+ alignments and such on IRIX6.
+ (mips_elf_adjust_dynamic_symbol): Use MIPS_ELF_STUB_SECTION_NAME.
+ (mips_elf_size_dynamic_sections): Likewise. Adjust to handle the
+ fact that ELF_DYNAMIC_INTERPRETER is no longer a constant. Use
+ bfd_zalloc rather than bfd_alloc and memset.
+ (mips_elf_finish_dynamic_symbol): Use MIPS_ELF_STUB_SECTION_NAME.
+ Don't assert the existence of .rld_map on IRIX6.
+ (mips_elf_finish_dynamic_sections): Use MIPS_ELF_STUB_SECTION_NAME.
+
+ * elf32-mips.c (mips_elf_adjust_dynindx): Remove.
+ (mips_elf_size_dynamic_sections): Use _bfd_elf_link_adjust_dynindx
+ instead.
+
+1999-06-26 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (mips_elf_swap_msym_in): New function.
+ (mips_elf_swap_msym_out): New function.
+ (mips_elf_create_msym_section): Likewise.
+ (MIPS_ELF_MSYM_SECTION_NAME): New macro.
+ (_bfd_mips_elf_final_write_processing): Set sh_link for .msym.
+ (_bfd_mips_elf_section_from_shdr): Reject an SHT_MIPS_MSYM
+ section not named .msym.
+ (_bfd_mips_elf_fake_sections): Use MIPS_ELF_MSYM_SECTION_NAME, not
+ .msym directly. Set appropriate attributes for the .msym
+ section.
+ (mips_elf_link_hash_entry): Add min_dyn_reloc_index field.
+ (mips_elf_link_hash_newfunc): Clear it.
+ (mips_elf_create_dynamic_sections): Create the .msym section
+ on IRIX6.
+ (mips_elf_size_dynamic_sections): Allocate space for the
+ .msym section. Add a DT_MIPS_MSYM entry.
+ (mips_elf_finish_dynamic_symbol): Write out a .msym entry for
+ the symbol.
+ (mips_elf_finish_dynamic_sections): Assign a value for
+ DT_MIPS_MSYM. Add .msym entries for the section symbols as well.
+
+ * elf32-mips.c (irix_compat_t): New enumeration.
+ (ABI_N32_P): New macro.
+ (IRIX_COMPAT): Likewise.
+ (SGI_COMPAT): Implement in terms of IRIX_COMPAT.
+ (mips_elf_relocate_section): Fix typo.
+
+1999-06-26 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * peicode.h (coff_swap_scnhdr_out): Mark non readonly BFD sections
+ as writable PE sections.
+
+1999-06-26 David Mosberger <davidm@hpl.hp.com>
+
+ * dwarf2.c (struct arange): New type.
+ (struct comp_unit): Replace LOW and HIGH by member ARANGE.
+ (arange_add): New function.
+ (decode_line_info): Keep track of address ranges that a compilation
+ unit covers.
+ (comp_unit_contains_address): Return true if address is contained
+ in _any_ of the address ranges associated with a compilation unit.
+ (_bfd_dwarf2_find_nearest_line): Call comp_unit_find_nearest_line
+ on the first comp_unit that contains the address.
+
+1999-06-26 David Mosberger <davidm@hpl.hp.com>
+
+ * dwarf2.c (struct dwarf2_debug): Add member dwarf_line_buffer.
+ (decode_line_info): Add variable STASH and initialize it to point
+ to the per-bfd dwarf2_debug info. Remove static variable
+ dwarf_line_buffer and use stash->dwarf_line_buffer in its place.
+
+1999-06-26 Ian Lance Taylor <ian@zembu.com>
+
+ * elflink.h (elf_link_output_extsym): It's OK for a -Bsymbolic
+ shared library to have an undefined symbol.
+
+ From Franz Sirl <Franz.Sirl-kernel@lauterbach.com>:
+ * elf32-ppc.c (ppc_elf_relocate_section): Fix last patch.
+
+Thu Jun 24 20:59:11 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.c (elf_hppa_final_write_processing): New function.
+ * elf32-hppa.c: Remove everything related to symbol extension
+ sections & records. Use the common elf_hppa_final_write_processing.
+
+1999-06-22 Mark Mitchell <mark@codesourcery.com>
+
+ * elflink.h (size_dynamic_sections): Use user-specified init/fini
+ functions instead of _init/_fini if requested.
+
+1999-06-23 Ian Lance Taylor <ian@zembu.com>
+
+ * elf.c (bfd_section_from_shdr): Avoid crashing on a bogus sh_link
+ field.
+
+1999-06-22 Ian Lance Taylor <ian@zembu.com>
+
+ From Franz Sirl <Franz.Sirl-kernel@lauterbach.com>:
+ * elf32-ppc.c (ppc_elf_size_dynamic_sections): Set unused dynindx
+ field to 0, not -1.
+ (ppc_elf_finish_dynamic_sections): Check for positive section
+ dynindx field, rather than comparing against -1.
+ (ppc_elf_relocate_section): Only return false if undefined_symbol
+ or reloc_overflow fail, not always upon encountering an error.
+
+1999-06-22 Mark Mitchell <mark@codesourcery.com>
+
+ * elflink.h (link_read_relocs): Explicitly cast external_relocs to
+ bfd_byte * before performing pointer arithmetic.
+
+Tue Jun 22 13:06:25 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf-hppa.h: New file. Common stuff for elf32 and elf64 PA
+ support.
+ * elf32-hppa.c: Include elf-hppa.h.
+ (ARCH_SIZE): Define.
+ (elf_hppa_reloc_type_lookup): Delete. Found in the common code
+ now.
+ (elf32_hppa_info_to_howto): Similarly.
+ (elf_hppa_howto_table): Similarly.
+ (elf_hppa_reloc_type_lookup): Similarly.
+ (hppa_elf_gen_reloc_type): Similarly.
+ * elf32-hppa.h (ELF_HOWTO_TALBE, N_PARISC_RELOCS): Delete.
+
+1999-06-22 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-v850.c (v850_elf_final_link_relocate): Catch overflow
+ handling R_V850_22_PCREL relocation.
+
+1999-06-21 Ian Lance Taylor <ian@zembu.com>
+
+ * coff-arm.c (arm_emit_base_file_entry): Explicitly declare return
+ type.
+
+Sun Jun 20 14:13:57 1999 Richard Henderson <rth@cygnus.com>
+
+ * section.c (_bfd_strip_section_from_output): Ignore sections
+ DISCARDed by the link script.
+
+1999-06-19 Ian Lance Taylor <ian@zembu.com>
+
+ * elflink.h (elf_link_remove_section_and_adjust_dynindices):
+ Remove unused local variable spp.
+
+ * xcofflink.c (bfd_xcoff_size_dynamic_sections): Don't crash if
+ the entry symbol is not set.
+
+Fri Jun 18 04:24:57 1999 Richard Henderson <rth@cygnus.com>
+
+ * elf64-alpha.c (elf64_alpha_relocate_section): Don't adjust
+ GPDISP or LITUSE in a relocatable link.
+
+Thu Jun 17 21:24:43 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * dwarf1.c (alloc_dwarf1_unit): Allocate using bfd_zalloc.
+ * (alloc_dwarf1_func): Likewise.
+
+Wed Jun 16 03:09:57 1999 Jeffrey A Law (law@cygnus.com)
+
+ * libhppa.h: Fix various formatting errors.
+ (assemble_3); Rewrite using CATENATE.
+ (assemble_17): Fix various bugs.
+
+1999-06-16 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-mcore.c (R_MCORE_RAW): Fix definition.
+
+1999-06-15 Richard Henderson <rth@cygnus.com>
+
+ * section.c (SEC_SHORT): Define.
+ * bfd-in2.h: Rebuild.
+
+1999-06-13 Mark Mitchell <mark@codesourcery.com>
+
+ * elflink.h (elf_link_remove_section_and_adjust_dynindices):
+ Remove abfd parameter. Use _bfd_strip_section_from_output.
+ (bfd_elf_size_dynamic_sections): Adjust callers accordingly.
+
+ * elf-bfd.h (_bfd_elf_link_adjust_dynindx): New function.
+ * elflink.c (_bfd_elf_link_adjust_dynindx): Define it.
+ * elflink.h (elf_link_remove_section_and_adjust_dynindices): New
+ function.
+ (bfd_elf_size_dynamic_sections): Use it.
+
+1999-06-13 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * elf32-i386.c (elf_howto_table): Change R_386_PC8 from
+ complain_overflow_bitfield to complain_overflow_signed.
+
+1999-06-13 Mark Mitchell <mark@codesourcery.com>
+
+ * elflink.h (elf_link_read_relocs_from_section): New function,
+ split out from ...
+ (elf_link_read_relocs): Here. Use it for both relocation
+ sections.
+
+1999-06-12 Mark Mitchell <mark@codesourcery.com>
+
+ * elfcode.h (elf_slurp_reloc_table_from_section): Don't assume
+ asect->reloc_count is valid.
+
+1999-06-12 Ian Lance Taylor <ian@zembu.com>
+
+ * elf32-mips.c (mips_elf32_section_processing): Permit a
+ SHT_MIPS_REGINFO section to have a size of 0.
+
+1999-06-12 David O'Brien <obrien@freebsd.org>
+
+ * config.bfd (alpha*-*-freebsd*): New target.
+ (i[3456]86-*-freebsd*): Now defaults to ELF.
+
+1999-06-11 Ian Lance Taylor <ian@zembu.com>
+
+ * reloc.c (_bfd_relocate_contents): Permit bitfield relocations to
+ wrap if the relocation covers the high bit of an address.
+
+ * dwarf2.c (decode_line_info): Remove unused variable first_time.
+
+1999-06-10 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * elf64_sparc.c (sparc64_elf_relocate_section): Use R_SPARC_max_std
+ instead of R_SPARC_max.
+ (sparc64_elf_info_to_howto): Likewise.
+ * elf32_sparc.c (elf32_sparc_relocate_section): Likewise.
+ (elf32_sparc_info_to_howto): Likewise; handle vtable relocations.
+
+1999-06-07 Richard Henderson <rth@cygnus.com>
+
+ * section.c (_bfd_strip_section_from_output): Remove output
+ sections with no initial link_order.
+
+1999-06-07 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-m88k.c (ELF_MAXPAGESIZE): Define.
+
+Mon Jun 7 11:49:43 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * Makefile.am (SOURCE_HFILES): Add missing headers.
+ * Makefile.in: Regenerated.
+
+1999-06-06 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (_bfd_mips_elf_print_private_data): Recognize
+ the N32 ABI.
+
+1999-06-04 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ * elf32-ppc.c (ppc_elf_relocate_section): Don't barf on out of
+ range undefweak symbols.
+ * hash.c: Add missing comma after @xref{}
+ * linker.c: Likewise.
+
+1999-06-04 Nick Clifton <nickc@cygnus.com>
+
+ * elfxx-target.h (ELF_MAXPAGESIZE): Produce an error message
+ if not defined.
+ * elf32-gen.c (ELF_MAXPAGESIZE): Define.
+ * elf32-i860.c (ELF_MAXPAGESIZE): Define.
+ * elf32-i960.c (ELF_MAXPAGESIZE): Define.
+ * elf64-gen.c (ELF_MAXPAGESIZE): Define.
+
+1999-06-04 Ian Lance Taylor <ian@zembu.com>
+
+ * Makefile.am: Rebuild dependencies.
+ (BFD32_BACKENDS): Add dwarf1.lo.
+ (BFD32_BACKENDS_CFILES): Add dwarf1.c.
+ * Makefile.in: Rebuild.
+
+1999-06-04 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.am: Add epoc-arm-pe target.
+ * Makefile.in: Regenerate.
+ * pe-arm.c: Only redefine interworking function names if they have
+ not already been redefined.
+ * pei-arm.c: Only redefine interworking function names if they have
+ not already been redefined.
+ * epoc-pe-arm.c: Redefine interworking function names to avoid a
+ name space clash.
+ * epoc-pei-arm.c: Redefine interworking function names to avoid a
+ name space clash.
+
+1999-06-03 Nick Clifton <nickc@cygnus.com>
+
+ * elfxx-target.h (ELF_MAXPAGESIZE): Default to 0x1000 not 1.
+
+Fri Jun 4 10:05:11 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * elf.c (elf_fake_sections): Undo change of 1999-05-10.
+
+Fri Jun 4 03:10:49 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * elf32-sh.c (sh_elf_relax_delete_bytes): Fix setting of
+ start / stop for recalculating of r_addend of R_SH_SWITCH*.
+
+Fri Jun 4 02:53:13 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * elf32-sh.c (sh_elf_relax_delete_bytes): Handle R_SH_SWITCH32
+ in other text sections.
+
+Fri Jun 4 02:29:34 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * libbfd.c (_bfd_generic_verify_endian_match): New function.
+ * libbfd-in.h (_bfd_generic_verify_endian_match): Declare.
+ * libbfd.h: Regenerate.
+ * coff-sh.c (sh_merge_private_data): Delete.
+ (coff_bfd_merge_private_bfd_data): Change to
+ _bfd_generic_verify_endian_match.
+ (elf32-sh.c): bfd_elf32_bfd_merge_private_bfd_data: Define.
+
+1999-06-03 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf32-arm.h: Fix typo: change ELF_MAXPAGE_SIZE to ELF_MAXPAGESIZE.
+
+1999-06-03 Ian Lance Taylor <ian@zembu.com>
+
+ * bfd-in.h (bfd_elf32_arm_allocate_interworking_sections): Correct
+ prototype.
+ (bfd_elf32_arm_process_before_allocation): Likewise.
+ * bfd-in2.h: Rebuild.
+
+1999-06-03 David Mosberger <davidm@hpl.hp.com>
+
+ * dwarf2.c (struct line_info): Add member END_SEQUENCE to keep
+ track of end_sequence markers.
+ (add_line_info): Add END_SEQUENCE arg.
+ (decode_line_info): Don't try to infer lo_pc and hi_pc from the
+ debug-line info---it doesn't work right if a compilation unit
+ consists of multiple discontiguous code-sequences. It would be
+ worthwhile to optimize for the common case where a compilation
+ unit results in a contiguous set of code sequences, but this is
+ quite tricky to get right for arbitrary DWARF2 files.
+ (lookup_address_in_line_info_table): Don't use the last line entry
+ for a compilation unit for anything with an address higher than
+ this line entry. Also, check for end_sequence markers to
+ correctly handle discontinuities.
+ (_bfd_dwarf2_find_nearest_line): When checking previously loaded
+ compilation units, check all compilation units with each->high==0
+ just like when reading compilation units.
+
+ * dwarf2.c (decode_line_info): Initialize table->files and
+ table->last_line to NULL to avoid segfaults due to random
+ values in these members.
+ (concat_filename): Check for out-of-range file number before
+ indexing filename table. Segfaults suck.
+
+ * dwarf2.c (decode_line_info): Don't truncate address to least
+ significant 32 bits (breaks 64 bit targets).
+ (lookup_address_in_function_table): Ditto.
+ (comp_unit_contains_address): Ditto.
+
+1999-06-02 Mark Mitchell <Mark Mitchell <mark@codesourcery.com>>
+
+ * elf32-mips.c (elf_mips_howto_table): Add R_MIPS_JALR.
+ * elf64-mips.c (mips_elf64_howto_table_rel): Likewise.
+ (mips_elf64_howto_table_rela): Likewise.
+
+ * elfcode.h (elf_slurp_reloc_table_from_section): New function,
+ split out from ...
+ (elf_slurp_reloc_table): Here. Use it to handle the case where a
+ single section has two associated relocation sections.
+
+1999-06-02 Mark Salter <msalter@cygnus.com>
+
+ * coffcode.h (coff_set_alignment_hook): Set lma from s_vaddr if
+ COFF_WITH_PE defined.
+
+1999-06-02 Nick Clifton <nickc@cygnus.com>
+
+ * pe-arm.c: Rename global arm interworking functions to avoid name
+ collision when all targets BFD is built.
+ * pei-arm.c: Ditto.
+
+1999-05-31 Mark Mitchell <mark@codesourcery.com>
+
+ * elf-bfd.h (elf_backend_data): Remove use_rela_p. Add
+ may_use_rel_p, may_use_rela_p, default_use_rela_p.
+ (bfd_elf_section_data): Add use_rela_p.
+ * elf.c (bfd_section_from_shdr): Set use_rela_p appropriately.
+ (_bfd_elf_new_section_hook): Likewise.
+ (elf_fake_sections): Use may_use_rela_p, etc., instead of
+ use_rela_p.
+ (_bfd_elf_copy_private_section_data): Copy use_rela_p.
+ * elfcode.h (write_relocs): Determine whether or not use rela
+ relocs based on the relocation section header.
+ * elflink.c (_bfd_elf_create_dynamic_sections): Use default_use_rela_p
+ instead of use_rela_p.
+ * elfxx-target.h (elf_backend_may_use_relp): New macro.
+ (elf_backend_may_use_rela_p): Likewise.
+ (elf_backend_default_use_rela_p): Likewise.
+ (elfNN_bed): Use them.
+
+Wed Jun 2 12:38:49 1999 Miodrag Vallat <miodrag@multimania.com>
+
+ * hosts/alphalinux.h (TRAD_CORE_EXTRA_SIZE_ALLOWED): Expand to 4096.
+
+Tue Jun 1 17:57:58 1999 Mark P. Mitchell <mitchell@n02.acl.lanl.gov>
+
+ * reloc.c (BFD_RELOC_MIPS_SUB): New relocation.
+ (BFD_RELOC_MIPS_GOT_PAGE): Likewise.
+ (BFD_RELOC_MIPS_GOT_OFST): Likewise.
+ (BFD_RELOC_MIPS_GOT_DISP): Likewise.
+ * bfd-in2.h: Regenerated.
+ * libbfd.h: Likewise.
+ * elf32-mips.c (mips_info_to_howto_rela): New function.
+ (USE_REL): Adjust for new conventions.
+ (MINUS_ONE): New macro.
+ (elf_mips_howto_table): Add R_MIPS_SUB.
+ (mips_r): Add entries for MIPS_SUB, MIPS_GOT_PAGE, MIPS_GOT_OFST,
+ and MIPS_GOT_DISP.
+ (mips_elf_final_write_processing): Set sh_link, not sh_info, for a
+ .MIPS.content section.
+ (_bfd_mips_elf_fake_sections): Treat all sections that begin
+ with .MIPS.content as .MIPS.content sections. Set
+ SHF_MNIPS_NOSTRIP for such section.
+ (elf_info_to_howto): Define to mips_info_to_howto_rela.
+ * elf64-mips.c (mips_r): Add entries for MIPS_SUB, MIPS_GOT_PAGE,
+ MIPS_GOT_OFST, and MIPS_GOT_DISP.
+
+Wed Jun 2 11:51:12 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * vms-misc.c (_bfd_vms_hash_newfunc): Fix use of uninitialized
+ variable.
+
+ * elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Avoid ambigous
+ `else'.
+
+1999-05-30 Philip Blundell <philb@gnu.org>
+
+ * elf32-arm.h (elf32_arm_relocate_section): Reinstate change of
+ 1993-03-25 (!!). Take into account the bitmasks for the reloc so
+ the addend does not overflow into the rest of the word.
+
+1999-05-29 Nick Clifton <nickc@cygnus.com>
+
+ * bfd-in.h: Amend prototype for
+ bfd_elf32_arm_process_before_allocation .
+ * bfd-in.h: Regenerate.
+
+ * elfarm-oabi.c (NUM_ELEM): New macro: Compute the number of
+ elements in a fixed sized array.
+ (ARM_ELF_ABI_VERSION): Define.
+ (ARM_ELF_OS_ABI_VERSION): Define.
+ (R_ARM_THM_ABS5): Fix rightshift and size.
+ (R_ARM_THM_PC22): Fix size.
+ (R_ARM_PLT32): Define Howto.
+ (find_howto): New function: Locate a howto based on a reloc
+ number.
+ (elf32_arm_info_to_howto): Use find_howto if necessary.
+ (elf32_arm_reloc_map): Change type of field bfd_reloc_val to
+ bfd_reloc_code_real_type.
+ (elf32_arm_reloc_map[]): Add entries for BFD_RELOC_VTABLE_INHERIT
+ and BFD_RELOC_VTABLE_ENTRY.
+ (elf32_arm_reloc_type_lookup): Use find_howto if necessary.
+
+ * elfarm-nabi.c (NUM_ELEM): New macro: Compute the number of
+ elements in a fixed sized array.
+ (ARM_ELF_ABI_VERSION): Define.
+ (ARM_ELF_OS_ABI_VERSION): Define.
+ (R_ARM_THM_ABS5): Fix rightshift and size.
+ (R_ARM_THM_PC22): Fix size.
+ (elf32_arm_info_to_howto_rel): Rename to elf32_arm_info_to_howto.
+ (elf32_arm_reloc_map): Change type of field bfd_reloc_val to
+ bfd_reloc_code_real_type.
+
+ * elf32-arm.h (struct elf32_arm_link_hash_table): Add new field:
+ no_pipeline_knowledge.
+ (elf32_arm_link_hash_create): Initialise new field to zero.
+ (bfd_elf32_arm_process_before_allocation): Add new paraemter:
+ no_pipeline_knowledge. Use this parameter to initialise the field
+ in the globals data structure.
+ (elf32_arm_final_link_relocate): Only add in pipeline offset if
+ no_pipeline_knowledge is false and the binary is from an old
+ toolchain.
+ (elf32_arm_merge_private_data): Generate an error if an attempt is
+ made to link together big endian and little endian code.
+ (elf32_arm_post_process_headers): New function: Initialise the
+ EI_OSABI and EI_ABIVERSION fields of the newly created ELF program
+ header.
+ (elf_backend_post_process_headers): Define.
+
+1999-05-28 Nick Clifton <nickc@cygnus.com>
+
+ * elf-bfd.h (struct elf_backend_data): Add new field:
+ elf_backend_post_process_headers.
+
+ * elfxx-target.h (elf_backend_post_process_headers): Define to
+ NULL if not already defined.
+ (elfNN_bed): Initialise elf_backend_post_process_headers field.
+
+ * elf.c (prep_headers): Set the EI_OSABI and EI_ABIVERSION fields
+ to zero.
+ (_bfd_elf_compute_section_file_positions): Call
+ elf_backend_post_process_headers if defined.
+
+1999-05-28 Ian Lance Taylor <ian@zembu.com>
+
+ * configure.in: Check whether getuid and getgid exist.
+ * archive.c: Define getuid and getgid as macros if HAVE_GETUID or
+ HAVE_GETGID are not defined, respectively.
+ (bfd_write_armap): Don't special case on _WIN32 for getuid and
+ getgid.
+ * configure.host: Set ac_cv_func_get{ug}id for *-*-windows*.
+ * configure, config.in: Rebuild.
+
+1999-05-28 Martin Dorey <mdorey@madge.com>
+
+ * elf32-i960.c: New file.
+ * elf.c (prep_headers): Handle bfd_arch_i960.
+ * targets.c (bfd_target_vector): Add &bfd_elf32_i960_vec.
+ * config.bfd (i960-*-elf*): New target.
+ * configure.in (bfd_elf32_i960_vec): New target vector.
+ * Makefile.am (BFD32_BACKENDS): Add elf32-i960.lo.
+ (BFD32_BACKENDS_CFILES): Add elf32-i960.c.
+ * Makefile.in, aclocal.m4, configure: Rebuild.
+
+1999-05-27 Nick Clifton <nickc@cygnus.com>
+
+ * elfarm-oabi.c (elf32_arm_howto_table): Add entry for
+ R_ARM_PLT32.
+ (find_howto): New function: Find entries in the
+ elf32_arm_howto_table.
+ (elf32_arm_info_to_howto): Use find_howto if the entry cannot be
+ computed simply.
+ (elf32_arm_reloc_type_lookup): Add lookup for
+ BFD_RELOC_ARM_PLT32.
+
+1999-05-25 Philip Blundell <pb@nexus.co.uk>
+
+ * bfd/elf32-arm.h (elf32_arm_link_hash_newfunc): New function.
+ (elf32_arm_link_hash_table_create): Use above function as the
+ constructor for hash table entries.
+ (elf32_arm_relocate_section): Avoid crash when there is no output
+ section.
+ (elf32_arm_final_link_relocate): New parameter h.
+ (elf32_arm_relocate_section): Pass symbol hash entry to above
+ routine.
+ (elf32_arm_gc_sweep_hook, elf32_arm_check relocs): Correct
+ comments.
+
+1999-05-25 Catherine Moore <clm@cygnus.com>
+
+ * coff-arm.c (coff_arm_relocate_section): Don't emit
+ base file entries for pc-relative values.
+
+1999-05-25 DJ Delorie <dj@cygnus.com>
+
+ * peicode.h (coff_swap_sym_in): When we create the actual section
+ to reflect the not-there section C_SECTION symbols refer to,
+ change the symbol class to C_STAT as the section is now really
+ there.
+
+1999-05-24 Philip Blundell <pb@nexus.co.uk>
+
+ * elf32-arm.h (elf32_arm_relocate_section): Undo change of
+ 1999-03-25.
+
+Mon May 17 13:35:35 1999 Stan Cox <scox@cygnus.com>
+
+ * coff-arm.c (_bfd_coff_arm_set_private_flags): Changed
+ F_PIC_INT to F_PIC.
+ * coffcode.h (coff_set_arch_mach_hook): Added F_ARM_2a, and
+ F_ARM_3M labels. Changed F_PIC_INT to F_PIC.
+
+1999-05-16 Nick Clifton <nickc@cygnus.com>
+
+ * coff-mcore.c (in_reloc_p): Reinstate.
+
+1999-05-15 Nick Clifton <nickc@cygnus.com>
+
+ * reloc.c (BFD_RELOC_MCORE_RVA): Define.
+ * bfd-in2.h: Regenerate.
+ * coff-mcore.c (in_reloc_p): Remove defintion.
+ (mcore_coff_howto): Add IMAGE_REL_MCORE_RVA.
+ (mcore_coff_reloc_type_lookup): Map BFD_RELOC_RVA to
+ IMAGE_REL_MCORE_RVA.
+ (coff_mcore_rtype_to_howto): Add special processing for
+ IMAGE_REL_MCORE_RVA.
+ (coff_mcore_relocate_section): Add support for
+ IMAGE_REL_MCORE_RVA.
+ * elf32-mcore (mcore_elf_howto_): Add R_MCORE_RELATIVE.
+ (mcore_elf_reloc_type_lookup): Map BFD_RELOC_RVA to
+ R_MCORE_RELATIVE.
+ (mcore_elf_relocate_section): Delete redundant case labels.
+
+Fri May 14 10:59:55 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * elf32-arm.h (elf32_arm_relocate_section): Fix operator
+ precedence between bit-and and comparison.
+
+Thu May 13 09:45:23 1999 Joel Sherrill (joel@OARcorp.com)
+
+ * config.bfd (i[3456]86*-*-rtems*, m68k*-*-rtems*): Added to
+ list of target formats (targ_selvecs).
+ (i[3456]86*-*-rtemself*, mips*el-*-rtems*): New targets.
+ (powerpcle*-*rtems*, sh-*-rtemself*): New targets.
+
+1999-05-10 DJ Delorie <dj@cygnus.com>
+
+ * ecoff.c (_bfd_ecoff_write_armap): give the symtab element a
+ reasonable mode until "ar x" is smart enough to skip it (fixes
+ gcc/libgcc.a builds on mips-ecoff targets
+
+ * coffcode.h (styp_to_sec_flags): Explain how COMDATs are supposed
+ to work. Hack to support MS import libraries, which use different
+ COMDAT types than GNU.
+ (coff_slurp_symbol_table): C_SECTION symbols are local; they refer
+ to implied zero-length sections (see peicode below)
+ * coffgen.c (coff_get_normalized_symtab): Properly read long MS
+ filename symbols, which use one *or more* auxents.
+ * coffswap.h (coff_swap_aux_in): ditto
+ * peicode.h (coff_swap_sym_in): Build the implied zero-length
+ sections
+
+Tue May 11 15:51:58 1999 Jeffrey A Law (law@cygnus.com)
+
+ * elf32-v850.c (v850_elf_howto_table): Make partial_inplace false
+ for all relocations.
+
+1999-05-10 Catherine Moore <clm@cygnus.com>
+
+ * bfd-in.h (bfd_arm_allocate_interworking_sections): Static
+ if COFF_IMAGE_WITH_PE.
+ (bfd_arm_process_before_allocation): Likewise.
+ (bfd_arm_get_bfd_for_interworking): Likewise.
+ * coff-arm.c: Likewise.
+ * bfd-in2.h: Regenerate.
+ * configure.in (armpe_little_vec): Remove coff-arm.lo.
+ (armpe_big_vec): Likewise.
+ * configure: Rebuild.
+
+1999-05-10 Nick Clifton <nickc@cygnus.com>
+
+ * elf.c (elf_fake_sections): Check for .rel. as start of rel
+ section, not just .rel. Same for .rela.
+
+1999-05-07 Nick Clifton <nickc@cygnus.com>
+
+ * coff-mcore.c (coff_mcore_relocate_section): Replace assert about
+ endianism with an error message.
+
+Thu May 6 17:09:09 1999 Fred Fish <fnf@be.com>
+
+ * dwarf2.c (read_abbrevs): Change cast of dwarf_abbrev_buffer
+ assignment from "unsigned char *" to "char *".
+ (decode_line_info): Likewise for dwarf_line_buffer assignment.
+
+1999-05-05 Catherine Moore <clm@cygnus.com>
+
+ * coff-arm.c (coff_arm_relocate_section): Add one to
+ address of ARM_RVA32 thumb functions.
+
+1999-05-05 Catherine Moore <clm@cygnus.com>
+
+ * elf32-m68k.c (elf32_m68k_set_private_flags): New.
+ (elf32_m68k_copy_private_bfd_data): New.
+ (elf32_m68k_merge_private_bfd_data): New.
+ (elf32_m68k_print_private_bfd_data): New.
+ (CPU32_FLAG): Define.
+ (PLT_CPU32_ENTRY_SIZE): Define.
+ (elf_cpu32_plt0_entry): Declare.
+ (elf_cpu32_plt_entry): Declare.
+ (elf_m68k_adjust_dynamic_symbol): Generate cpu32 plt entries.
+ (elf_m68k_finish_dynamic_symbol): Likewise.
+ (elf_m68k_finish_dynamic_sections): Likewise.
+ (elf_backend_plt_header_size): Remove definition.
+ (bfd_elf32_bfd_copy_private_bfd_data): Define.
+ (bfd_elf32_bfd_merge_private_bfd_data): Define.
+ (bfd_elf32_bfd_set_private_flags): Define.
+ (bfd_elf32_bfd_print_private_bfd_data): Define.
+
+Mon May 3 09:24:49 1999 Jeffrey A Law (law@cygnus.com)
+
+ * som.c (som_fixup_formats): Fix comments for R_SHORT_PCREL_MODE
+ and R_LONG_PCREL_MODE.
+
+1999-04-29 Nick Clifton <nickc@cygnus.com>
+
+ * coff-mcore.c (coff_mcore_relocate_section): Fix typos.
+
+Fri Apr 28 16:36:19 1999 Stan Cox <scox@cygnus.com>
+
+ * elf32-sh.c (sh_elf_relocate_section): Include relocation addend
+ in relocation calculation.
+
+1999-04-26 Tom Tromey <tromey@cygnus.com>
+
+ * aclocal.m4, configure: Updated for new version of libtool.
+
+1999-04-21 Nick Clifton <nickc@cygnus.com>
+
+ * coff-mcore.c: Add support for mcore relocs.
+
+1999-04-20 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * elf32-mips.c (_bfd_mips_elf_print_private_bfd_data): Scrap the
+ incorrect use EF_MIPS_xxBITPTRS.
+
+1999-04-18 Ian Lance Taylor <ian@zembu.com>
+
+ * elf64-alpha.c (elf64_alpha_relax_section): Remove unused local
+ variable insn.
+
+ * bfd-in2.h: Rebuild.
+ * libbfd.h: Rebuild.
+
+Sat Apr 17 20:55:15 1999 Catherine Moore <clm@cygnus.com>
+
+ * coff-arm.c (coff_arm_rtype_to_howto): Remove ARM26D transform.
+ (coff_arm_relocate_section): Add ARM26D transform. Only
+ change to ARM26D for relocateable links.
+
+1999-04-16 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * elf32-mips.c (_bfd_mips_elf_print_private_bfd_data): New.
+ (bfd_elf32_bfd_print_private_bfd_data): New.
+
+1999-04-15 Doug Evans <devans@casey.cygnus.com>
+
+ * elf32-arm.h (elf32_arm_final_link_relocate): For R_ARM_THM_ABS5,
+ refetch addend if USE_REL, add many comments regarding current state.
+ For R_ARM_THM_PC22, refetch addend if USE_REL, simplify.
+ * elfarm-nabi.c (elf32_arm_howto_table): For R_ARM_THM_ABS5, fix
+ size and rightshift. For R_ARM_THM_PC22, fix bitsize.
+ * elfarm-oabi.c (elf32_arm_howto_table): Ditto.
+
+Wed Apr 14 14:33:08 1999 Richard Henderson <rth@cygnus.com>
+
+ * elf32-mips.c (_bfd_mips_elf_read_ecoff_info): Zero `debug'.
+ * elf64-alpha.c (elf64_alpha_read_ecoff_info): Likewise.
+
+1999-04-13 David Mosberger <davidm@hpl.hp.com>
+
+ * dwarf2.c (decode_line_info): Don't truncate address to least
+ significant 32 bits (breaks 64 bit targets).
+ (lookup_address_in_function_table): Ditto.
+ (comp_unit_contains_address): Ditto.
+
+Tue Apr 13 21:27:19 1999 Catherine Moore <clm@cygnus.com>
+
+ * coff-arm.c (arm_emit_base_file_entry): New routine.
+ (A2T3_OFFSET): Define.
+ (T2A3_OFFSET): Define.
+ (coff_arm_relocate_section): Emit base file entries for interworking
+ stubs.
+
+1999-04-13 Philip Blundell <philb@gnu.org>
+
+ * elfarm-nabi.c (elf32_arm_howto_table): Add dummy entries for
+ relocs 17 through 19.
+
+Sun Apr 11 01:25:17 1999 Richard Henderson <rth@cygnus.com>
+
+ * elfcode.h: Remove fnmatch.h.
+ * elflink.h (elf_link_assign_sym_version): Call back to ld
+ instead of calling fnmatch.
+
+ * config.bfd (i?86-*-beoself): Include pe vecs.
+
+Sun Apr 11 01:14:06 1999 Richard Henderson <rth@cygnus.com>
+
+ * elf32-i386.c (elf_i386_finish_dynamic_sections): Allow .plt
+ to go missing.
+
+1999-04-10 Richard Henderson <rth@cygnus.com>
+
+ * elf32-i386.c (elf_i386_relocate_section): Mind no_undefined
+ when trying to resolve dynamic symbol references.
+ * elf32-m68k.c (elf_m68k_relocate_section): Likewise.
+ * elf32-mips.c (mips_elf_relocate_section): Likewise.
+ * elf32-ppc.c (ppc_elf_relocate_section): Likewise.
+ * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
+ * elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
+ * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
+ * elflink.h (elf_link_output_extsym): Likewise.
+
+Sat Apr 10 15:12:09 1999 Richard Henderson <rth@cygnus.com>
+
+ * section.c (_bfd_strip_section_from_output): New function moved from
+ * elf64-alpha.c (elf64_alpha_strip_section_from_output): ... here.
+ * elf32-i386.c (elf_i386_size_dynamic_sections): Use it.
+ * elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise.
+ * elf32-mips.c (mips_elf_size_dynamic_sections): Likewise.
+ * elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise.
+ * elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise.
+ * elf64-sparc.c (sparc64_elf_size_dynamic_sections): Likewise.
+ * bfd-in2.h: Update.
+
+1999-04-09 Ian Lance Taylor <ian@zembu.com>
+
+ * elf64-sparc.c: Fix incorrect calls to bfd_check_overflow.
+
+1999-04-08 Nick Clifton <nickc@cygnus.com>
+
+ * coff-mcore.c: New File: Support for mcore-pe targets.
+ * cpu-mcore.c: New File: Support for mcore targets.
+ * elf32-mcore.c: New File: Support for mcore-elf target.
+ * pe-mcore.c: New File: Definitions for mcore-pe target.
+ * pei-mcore.c: New File: Definitions for mcore-pei target.
+ * Makefile.am: Add support for MCore targets.
+ * Makefile.in: Regenerate.
+ * config.bfd: Add support for MCore targets.
+ * configure.in: Add support for MCore targets.
+ * configure: Regenerate.
+ * archures.c: Add support for MCore architecture.
+ * bfd-in2.h: Regenerate.
+ * coffcode.h: Add support for mcore-pe targets.
+ * elf.c: Add support for mcore-elf target.
+ * reloc.c: Add support for MCore relocs.
+ * targets.c: Add support for MCore targets.
+
+1999-04-07 Nick Clifton <nickc@cygnus.com>
+
+ * elfarm-nabi.c (elf32_arm_howto_table): Add entries for
+ R_ARM_XPC25 and R_ARM_THM_XPC22.
+ (elf32_arm_reloc_map): Remove redundant entries.
+
+1999-04-06 Ian Lance Taylor <ian@zembu.com>
+
+ * sysdep.h (LC_MESSAGES): Never define.
+
+1999-04-06 Chris Torek <torek@bsdi.com>
+
+ * reloc.c (bfd_check_overflow): Add addrsize parameter. Change
+ all callers. Rewrite completely.
+ (_bfd_relocate_contents): Rewrite overflow checking.
+ * bfd-in2.h: Rebuild.
+
+1999-04-05 Ian Lance Taylor <ian@zembu.com>
+
+ From Gabriel Paubert <paubert@iram.es>:
+ * elf32-ppc.c (ppc_elf_howto_raw): Set R_PPC_GOT16_LO,
+ R_PPC_PLT16_LO and R_PPC_SECTOFF_LO to be complain_overflow_dont.
+ Set R_PPC_PLT16_HA, R_PPC_SECTOFF_HA and R_PPC_EMB_NADDR16_HA to
+ have a rightshift of 16 and use ppc_elf_addr16_ha_reloc.
+ * ppcboot.c (ppcboot_vec): Use little endian routines for
+ headers.
+
+ * elf.c (elfcore_strndup): Only define if it will be used.
+ * elf32-ppc.c (ppc_elf_relax_section): Remove unused locals irel
+ and irelend.
+ (ppc_elf_check_relocs): Remove unused local i.
+ (ppc_elf_gc_mark_hook): Add default case to switch.
+
+ From Bernd Nitzler <nitzler@kagcpd01.ag01.kodak.COM>:
+ * srec.c (srec_scan): Accept \r in symbol definitions.
+ (srec_object_p): Set HAS_SYMS if we saw any symbols.
+ (symbolsrec_object_p): Likewise.
+
+1999-04-04 Don Bowman <don@pixsci.com>
+
+ * config.bfd: Add mips*el-*-vxworks* and mips*-*-vxworks*.
+
+1999-04-04 Ian Lance Taylor <ian@zembu.com>
+
+ * dwarf1.c (parse_line_table): Remove unused locals last_pc and
+ last_line.
+ * elf-bfd.h (_bfd_elfcore_section_from_phdr): Declare.
+ * elf32-i386.c (elf_i386_gc_mark_hook): Add default case to
+ switch.
+ * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Remove unused
+ local i.
+ * syms.c (_bfd_stab_section_find_nearest_line): Remove unused
+ local val.
+
+1999-03-31 Nick Clifton <nickc@cygnus.com>
+
+ * config.bfd: Add support for arm-epoc-pe target.
+ * configure.in: Add support for arm-epoc-pe target.
+ * configure: Regenerate.
+ * targets.c: Add support for arm-epoc-pe target.
+ * coff-arm.c: Allow header files to override definition of
+ TARGET_UNDERSCORE and USER_LABEL_PREFIX.
+ * pe-arm.h: Allow previous header files to override definition of
+ TARGET_LITTLE_SYM and TARGET_BIG_SYM.
+ * pei-arm.h: Allow previous header files to override definition of
+ TARGET_LITTLE_SYM and TARGET_BIG_SYM.
+ * epoc-pe-arm.c: New file. Support arm-epoc-pe target.
+ * epoc-pei-arm.c: New file. Support arm-epoc-pei target.
+
+1999-03-30 Nick Clifton <nickc@cygnus.com>
+
+ * elf.c (elf_map_symbols): Handle the case where section
+ symbols are generated for content-less sections which are
+ not mapped to the output file.
+
+ * linker.c: Replace direct references to fields in BFD structure
+ with accessor macros.
+
+ * elflink.h: Replace direct references to fields in BFD structure
+ with accessor macros.
+
+1999-03-25 Philip Blundell <pb@nexus.co.uk>
+
+ * config.bfd: Eliminate redundancy in checks for Linux/ARM.
+
+ * elf32-arm.h (elf32_arm_relocate_section): Take the rightshift into
+ account when adjusting section symbols during a partial link.
+
+1999-03-24 Nick Clifton <nickc@cygnus.com>
+
+ * coff-sparc.c (struct coff_reloc_map): Change type of field
+ 'bfd_reloc_val' to bfd_reloc_code_real_type.
+ * elf-m10200.c (struct mn10200_reloc_map): Ditto.
+ * elf-m10300.c (struct mn10300_reloc_map): Ditto.
+ * elf32-arc.c (struct arc_reloc_map): Ditto.
+ * elf32-d10v.c (struct d10v_reloc_map): Ditto.
+ * elf32-d30v.c (struct d30v_reloc_map): Ditto.
+ * elf32-fr30.c (struct fr30_reloc_map): Ditto.
+ * elf32-m32r.c (struct m32r_reloc_map): Ditto.
+ * elf32-sh.c (struct elf_reloc_map): Ditto.
+ * elf32-sparc.c (struct elf_reloc_map): Ditto.
+ * elf32-v850.c (struct v850_reloc_map): Ditto.
+ * elf64-sparc.c (struct elf_reloc_map): Ditto.
+ * elfarm-nabi.c (struct elf32_arm_reloc_map): Ditto.
+ * elfarm-oabi.c (struct elf32_arm_reloc_map): Ditto.
+
+1999-03-17 Martin Hunt <hunt@cygnus.com>
+
+ * syms.c (_bfd_stab_section_find_nearest_line): Changed this
+ function so source-level assembly works. If multiple N_SOs
+ are seen without and N_FUNs, create an indextable entry with
+ a NULL function name.
+
+1999-03-16 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data) Allow merging
+ of certian similar cpus.
+
+1999-03-16 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * elf32-mips.c (_bfd_mips_elf_final_write_processing):
+ Add the 5000. Change the architecture for the 5400 to mips4.
+ (elf_mips_mach): Add r5000.
+
+1999-03-11 Doug Evans <devans@casey.cygnus.com>
+
+ * cpu-i960.c (scan_i960_mach): Recognize i960:ka_sa and i960:kb_sb.
+
+1999-03-11 Nick Clifton <nickc@cygnus.com>
+
+ * binary.c (binary_set_section_contents): Generate warning about
+ huge file offsets for any section that will occupy file space, not
+ just those that are loadable.
+
+1999-02-24 Jim Blandy <jimb@zwingli.cygnus.com>
+
+ * libbfd.h: Regenerate after Nick Clifton's Feb 17 changes.
+
+1999-02-22 Jim Lemke <jlemke@cygnus.com>
+
+ * elf32-ppc.c: Add ppc_elf_relax_section() for the ld option mpc860c0.
+
+Mon Feb 22 18:26:51 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf-bfd.h (ELF_LINK_HASH_REF_REGULAR_NONWEAK): Define.
+ * elflink.h: Revert all changes since Feb 16. Instead:
+ (elf_link_add_object_symbols): Set REF_REGULAR_NONWEAK flag if
+ appropriate. Copy it to version symbols.
+ (elf_fix_symbol_flags): Set REF_REGULAR_NONWEAK for non ELF
+ symbols if appropriate.
+ (elf_adjust_dynamic_symbol): Set REF_REGULAR_NONWEAK for weakdef
+ symbol if appropriate.
+ (elf_link_output_extsym): If symbol is marked as undefined, and
+ has no nonweak references, mark it as weak undefined.
+
+Fri Feb 19 16:01:12 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * elflink.h (elf_merge_symbol): When overriding a dynamic
+ definition with a weak undefined symbol, set NEEDS_PLT if it is a
+ function.
+ (elf_link_add_object_symbols): Don't copy the other field if we
+ are overridding.
+
+Thu Feb 18 18:07:43 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * elflink.h (elf_merge_symbol): Do not merge any symbol from a
+ shared object with a weak undefined symbol.
+
+1999-02-18 Nick Clifton <nickc@cygnus.com>
+
+ * elfarm-nabi.c: Set partial_inplace back to false.
+
+1999-02-17 Nick Clifton <nickc@cygnus.com>
+
+ * coff-arm.c (TARGET_UNDERSCORE): Re-enable.
+ (USER_LABEL_PREFIX): Set to "_".
+
+ The following patches are from: Scott Bambrough
+ <scottb@corelcomputer.com>
+
+ * libaout.h (M_ARM6_NETBSD): Set to 143.
+
+ * reloc.c: Add ARM PIC relocs: BFD_RELOC_ARM_GOT12,
+ BFD_RELOC_ARM_GOT32, BFD_RELOC_ARM_JUMP_SLOT, BFD_RELOC_ARM_COPY,
+ BFD_RELOC_ARM_GLOB_DAT, BFD_RELOC_ARM_PLT32,
+ BFD_RELOC_ARM_RELATIVE, BFD_RELOC_ARM_GOTOFF, BFD_RELOC_ARM_GOTPC.
+ * bfd-in2.h: Regenerate.
+
+ * elfarm-nabi.c (elf32_arm_howto_table): Set partial_inplace to
+ 'true' as REL relocs are now being used. Add new PIC relocs:
+ R_ARM_COPY, R_ARM_GLOB_DAT, R_ARM_JUMP_SLOT, R_ARM_RELATIVE,
+ R_ARM_GOTOFF, R_ARM_GOTPC, R_ARM_GOT32, R_ARM_PLT32.
+
+ * elf32-arm.h (elf32_arm_merge_private_bfd_data): Check byte order
+ of targets.
+ (elf32_arm_final_link_relocate): Change parameters so that entire
+ reloc is passed. Add support for PIC relocs.
+ (elf32_arm_relocate_section): Pass entire reloc to
+ elf32_arm_final_link_relocate.
+ (elf32_arm_check_relocs): Handle new PIC relocs.
+ (elf32_arm_adjust_dynamic_symbol): New function.
+ (elf32_arm_size_dynamic_sections): New function.
+ (elf32_arm_discard_copies): New function.
+ (elf32_arm_finish_dynamic_symbol): New function.
+ (elf32_arm_finish_dynamic_sections): New function.
+ (ELF_MAXPAGE_SIZE): Define.
+ (bfd_elf32_bfd_reloc_type_lookup): Define.
+ (elf_backend_relocate_section): Define.
+ (elf_backend_adjust_dynamic_symbol): Define.
+ (elf_backend_create_dynamic_sections): Define.
+ (elf_backend_finish_dynamic_symbol): Define.
+ (elf_backend_finish_dynamic_sections): Define.
+ (elf_backend_size_dynamic_sections): Define.
+ (elf_backend_plt_readonly): Define.
+ (elf_backend_want_got_plt): Define.
+ (elf_backend_want_plt_sym): Define.
+
+Wed Feb 17 12:02:26 1999 Stan Cox <scox@cygnus.com>
+
+ * elf32-mips.c (_bfd_mips_elf_section_from_shdr): Make reginfo
+ sections SEC_LINK_ONCE and SEC_LINK_DUPLICATES_SAME_SIZE.
+ (_bfd_mips_elf_fake_sections): Likewise.
+
+Wed Feb 17 12:07:23 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * elfarm-oabi.c (bfd_elf32_arm_allocate_interworking_sections,
+ bfd_elf32_arm_get_bfd_for_interworking,
+ bfd_elf32_arm_process_before_allocation): Define to avoid clash
+ with elfarm-nabi.c.
+
+ * elf32-arm.h: Don't declare elf32_arm_info_to_howto.
+ (elf32_thumb_to_arm_stub, elf32_arm_to_thumb_stub,
+ elf32_arm_find_nearest_line): Make them static.
+
+Tue Feb 16 22:44:37 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * elflink.h (elf_merge_symbol): Add pflags parameter. Change all
+ callers. Do not merge a definition from a shared object with a
+ weak undefined symbol.
+ (elf_link_add_object_symbols): Do not change the symbol type or
+ size if the old symbol overrides the new one.
+
+1999-02-08 Nick Clifton <nickc@cygnus.com>
+
+ * config.bfd: Add support for strongarm target.
+
+Mon Feb 8 11:18:14 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * elf32-m68k.c (reloc_map): Use the correct types for the struct
+ fields instead of unsigned char.
+
+Fri Feb 5 00:22:36 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am: Rebuild dependencies.
+ * Makefile.in: Rebuild.
+
+Thu Feb 4 22:30:13 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Change AC_PREREQ to 2.13. Remove AM_CYGWIN32.
+ Change AM_EXEEXT to AC_EXEEXT and AM_PROG_INSTALL to
+ AC_PROG_INSTALL. Add comments to uses of AC_DEFINE.
+ * acinclude.m4: Add comments to uses of AC_DEFINE.
+ * acconfig.h: Remove.
+ * configure: Rebuild with current autoconf/automake.
+ * aclocal.m4: Likewise.
+ * config.in: Likewise.
+ * Makefile.in: Likewise.
+
+1999-02-04 DJ Delorie <dj@cygnus.com>
+
+ * libbfd.c (real_read): don't call fread for zero bytes. This
+ covers up a bug (or misuse of bfd) that's exposed by Solaris.
+
+Thu Feb 4 12:38:10 1999 Stan Cox <scox@cygnus.com>
+
+ * elf32-mips.c (mips_elf_relocate_section): Insure that the target
+ of a jump is in the current 256 MB region.
+
+Thu Feb 4 12:15:38 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * format.c (bfd_check_format_matches): Change last patch to only
+ take effect for the binary target.
+
+Wed Feb 3 19:40:12 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf32-i386.c (elf_i386_reloc_type_lookup): Add BFD_RELOC_CTOR.
+
+Wed Feb 3 15:02:44 1999 Catherine Moore <clm@cygnus.com>
+
+ * elf32-fr30.c (fr30_elf_check_relocs): New routine.
+
+Tue Feb 2 21:38:28 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * format.c (bfd_check_format_matches): If the target was
+ previously specified, don't check other targets when checking for
+ an archive file.
+
+Tue Feb 2 18:16:43 1999 Catherine Moore <clm@cygnus.com>
+
+ * elf32-arm.h (elf32_arm_reloc_map): Removed.
+ (elf32_arm_reloc_type_lookup): Removed
+ * elfarm-nabi.c (elf32_arm_reloc_map): New.
+ (elf32_arm_reloc_type_lookup): New.
+ * elfarm-oabi.c (elf32_arm_reloc_map): New.
+ (elf32_arm_reloc_type_lookup): New.
+
+Mon Feb 1 19:49:21 1999 Catherine Moore <clm@cygnus.com>
+
+ * elfarm-nabi.c: Renamed from elf32-arm-newabi.c.
+ * elfarm-oabi.c: Renamed from elf32-arm-oldabi.c
+ * Makefile.am: Use new files.
+ * Makefile.in: Regenerate.
+ * configure.in: Use new files.
+ * configure: Regenerate.
+
+1999-02-01 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-fr30.c (fr30_elf_gc_mark_hook): New function.
+ (fr30_elf_gc_sweep_hook): New function.
+ (elf_backend_can_gc_sections): Define.
+
+Mon Feb 1 12:21:47 1999 Catherine Moore <clm@cygnus.com>
+
+ * targets.c (bfd_target_vector): Add bfd_elf32_littlearm_oabi_vec
+ and bfd_elf32_bigarm_oabi_vec.
+
+Mon Feb 1 11:46:31 1999 Catherine Moore <clm@cygnus.com>
+
+ * Makefile.am (elf32-arm-oldabi.lo): New.
+ (elf32-arm-newabi.lo): New.
+ * Makefile.in: Regenerate.
+ * config.bfd (thumb-*-elf): Remove definition of targ_underscore.
+ (arm-*-elf): Likewise.
+ (arm-*-oabi): New.
+ (thumb-*-oabi): New.
+ * configure: Regenerate.
+ * configure.in (bfd_elf32_littlearm_oabi_vec): New.
+ (bfd_elf32_bigarm_oabi_vec): New.
+ * elf32-arm-newabi.c: New.
+ * elf32-arm-oldabi.c: New.
+ * elf32-arm.c: Removed.
+ * elf32-arm.h: New.
+
+Mon Feb 1 11:52:12 1999 Frank Ch. Eigler <fche@cygnus.com>
+
+ * binary.c (binary_set_section_contents): Omit warnings for
+ unloadable sections.
+
+1999-01-31 Michael Meissner <meissner@cygnus.com>
+
+ * config.bfd (powerpc{,le}-*-vxworks*): Add aliases to
+ powerpc{,le}-*-eabi.
+
+1999-01-29 Nick Clifton <nickc@cygnus.com>
+
+ * dwarf2.c (read_unsigned_leb128): Remove unused variables.
+ * dwarf2.c (read_signed_leb128): Remove unused variables.
+
+Fri Jan 29 00:47:21 1999 H.J. Lu <hjl@gnu.org>
+
+ * elf.c (assign_file_positions_for_segments): Only adjust
+ p_align when needed.
+
+Thu Jan 28 20:05:22 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * binary.c (binary_set_section_contents): Don't return early for a
+ non-loadable section, in case the first section is non-loadable.
+ Don't set the low lma for a SEC_NEVER_LOAD section. From Maciej
+ W. Rozycki <macro@ds2.pg.gda.pl>.
+
+1999-01-28 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-fr30.c (fr30_reloc_map): Add R_FR30_GNU_VTINHERIT and
+ R_FR30_GNU_VTENTRY relocs.
+
+Thu Jan 28 11:08:16 1999 Catherine Moore <clm@cygnus.com>
+
+ * elflink.h (elf_link_output_sym): Zero syms which are
+ part of sections which have been excluded.
+
+Wed Jan 27 13:35:35 1999 Stan Cox <scox@cygnus.com>
+
+ * coff-arm.c (_bfd_coff_arm_set_private_flags): Changed F_PIC
+ to F_PIC_INT.
+ * coffcode.h (coff_set_arch_mach_hook): Removed F_ARM_2a and
+ F_ARM_3M labels. Changed F_PIC to F_PIC_INT.
+
+1999-01-27 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-fr30.c (fr30_elf_howto_table): Fix name of R_FR30_48
+ relocation.
+ (fr30_final_link_relocate): Use computed value as result of
+ relocation.
+
+1999-01-26 Frank Ch. Eigler <fche@cygnus.com>
+
+ * binary.c (binary_set_section_contents): Emit warning for
+ huge file offsets due to widely-dispersed section LMAs.
+
+Mon Jan 18 03:35:35 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf.c (assign_file_positions_for_segments): If not D_PAGED,
+ align first section to largest section alignment, not first
+ section alignment.
+
+1999-01-04 Jason Molenda (jsm@bugshack.cygnus.com)
+
+ * configure.in: Require autoconf 2.12.1 or higher.
+
+Tue Dec 22 15:21:41 1998 Catherine Moore <clm@cygnus.com>
+
+ * archures.c (bfd_mach_i386_i386_intel_syntax): Define.
+ * bfd-in2.h: Likewise.
+ * cpu-i386.c (bfd_i386_arch_intel_syntax): New.
+
+1998-12-16 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * archures.c,bfd-in2.h (bfd_mach_mips4111): New.
+ * cpu-mips.c: Add support for and independent 4111.
+ * elf32-mips.c (elf_mips_mach): E_MIPS_MACH_4111 -> bfd_mach_mips4111.
+ (_bfd_mips_elf_final_write_processing):
+ bfd_mach_mips4111 -> E_MIPS_ARCH_3 | E_MIPS_MACH_4111.
+
+1998-12-15 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * elf32-mips.c (elf_mips_abi_name): New.
+ (_bfd_mips_elf_merge_private_bfd_data): Compare EF_MIPS_ABI flags.
+
+1998-12-12 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * elf32-mips.c (_bfd_mips_elf_final_write_processing):
+ Handle bfd_mach_mips4300.
+
+1998-12-11 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf32-i386.c: Remove leaked development code from patch
+ 1998-12-10 by Richard Henderson.
+
+1998-12-10 Richard Henderson <rth@cygnus.com>
+
+ * elf32-i386.c (elf_i386_relocate_section): Don't fail relocations
+ in debug sections for symbol defined externally.
+
+Thu Dec 10 10:58:38 1998 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * targets.c (bfd_target_vector): Remove duplicate entry for
+ tekhex_vec.
+
+1998-12-09 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-fr30.c (fr30_elf_howto_table): Set src_mask fields to 0
+ since we are using RELAs.
+
+Tue Dec 8 22:15:48 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ SCO Open Server Release 5 core file support, from Jouke Numan
+ <jnuman@hiscom.nl>:
+ * sco5-core.c: New file.
+ * configure.in (i[3456]86-*-sco3.2v5*): Use sco5-core.lo.
+ (sco5-core.lo): Define SCO5_CORE in COREFLAG.
+ * Makefile.am: Rebuild dependencies.
+ (OPTIONAL_BACKENDS): Add sco5-core.lo.
+ (OPTIONAL_BACKENDS_CFILES): Add sco5-core.c.
+ * bfd.c (struct _bfd): Add sco5_core_data field to tdata.
+ * targets.c (sco5_core_vec): Add to target list if SCO5_CORE.
+ * bfd-in2.h, configure, Makefile.in: Rebuild.
+
+Tue Dec 8 19:38:42 1998 Mark Klein <mklein@dis.com>
+
+ * config.bfd (hppa*-*-mpeix*): New target.
+ * configure.in: Add AC_HEADER_DIRENT.
+ (hppa*-*-mpeix*): New target.
+ * configure.host (hppa*-*-mpeix*): New host.
+ * hpux-core.c: Check HOST_HPPAMPEIX. Use HAVE_DIRENT_H and
+ friends rather than just including <sys/dir.h>.
+ * som.h (struct som_symbol): Add hppa_priv_level and apto
+ tc_data. Change all users.
+ (struct somdata): Add comp_unit field.
+ (obj_som_compilation_unit): Define.
+ (bfd_som_attach_compilation_unix): Declare.
+ * som.c: Check HOST_HPPAMPEIX.
+ (struct som_misc_symbol_info): Add new field priv_level.
+ (som_object_setup): Add current_offset parameter. Change all
+ callers.
+ (setup_sections): Likewise.
+ (som_object_p): For EXECLIBMAGIC, read the lst header.
+ (som_write_symbol_strings): Add compilation_unit parameter.
+ Change all callers.
+ (som_finish_writing): Write out compilation_unit.
+ (som_bfd_derive_misc_symbol_info): Set priv_level.
+ (som_build_and_write_symbol_table): Set xleast field to 3.
+ (som_slurp_symbol_table): Set symbol priv_level.
+ (bfd_som_attach_compilation_unit): New function.
+ (som_bfd_ar_write_symbol_stuff): Set xleast field to 3. Set
+ priv_level into symbol_value.
+ * configure, config.in: Rebuild.
+
+Tue Dec 8 16:21:35 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * hpux-core.c (hpux_core_core_file_p): Change call to nonexistent
+ warning function to call _bfd_error_handler instead.
+
+ * libbfd.c (COERCE32): Cast through unsigned long and long to
+ avoid bug in old version of gcc.
+
+ * elf64-alpha.c (elf64_alpha_additional_program_headers): Remove.
+ (elf_backend_additional_program_headers): Don't define.
+
+1998-12-08 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-fr30.c (fr30_final_link_relocate): Fix PC relative
+ relocations to include offset of 2 included in the insns, and the
+ offset of the relocs within the section.
+
+Wed Dec 2 15:03:59 1998 David Taylor <taylor@texas.cygnus.com>
+
+ The following changes were made by David Taylor
+ <taylor@texas.cygnus.com>, Edith Epstein
+ <eepstein@sophia.cygnus.com>, Jim Blandy
+ <jimb@zwingli.cygnus.com>, and Elena Zannoni
+ <ezannoni@kwikemart.cygnus.com> as part of the project to merge in
+ changes originally made by HP; HP did not create ChangeLog
+ entries.
+
+ * aclocal.m4, configure, Makefile.in: Rebuilt using latest
+ automake macro library.
+
+ * hpux-core.c (hpux_core_core_file_p): this function now
+ understands HPUX 10.30 thread info. Yes, the thread stacks can be
+ found in the corefile! Also, in hpux_core_core_file_p, if we
+ encounter a section with an unknown type, don't punt. Instead,
+ just skip it. Also, count the number of sections of known type
+ that we encounter. If we encounter at least one good one, then
+ we'll declare that the file is a core file. If we encounter any
+ unknown ones but some known ones, then we'll issue a warning (but
+ still declare it to be a core file). Also, correctly decide when a
+ file is not a core.
+ (PROC_INFO_HAS_THREAD_ID): define if CORE_ANON_SHMEM defined.
+ (CORE_ANON_SHMEM): define if not defined.
+ (hpux_core_struct): add members lwpid and user_tid.
+ (core_kernel_thread_id, core_user_thread_id): new macros.
+ (make_bfd_asection): use bfd_alloc to allocate room for a copy of
+ the name before storing it in the bfd.
+ (hpux_core_core_file_p): handle threads.
+
+ * libhppa.h (GET_FIELD): protect against redefinition.
+ (HPPA_WIDE): define.
+ (GET_FIELD): define.
+ (GET_BIT): define.
+ (MASK): define.
+ (CATENATE): define.
+ (ELEVEN): define.
+ (sign_extend): redefine.
+ (assemble_6): define.
+ (assemble_12): rewrite.
+ (assemble_16): define.
+ (assemble_16a): define.
+ (assemble_17): rewrite.
+ (assemble_22): define.
+
+1998-12-07 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-fr30.c (fr30_final_link_relocate): Using signed
+ relocations for signed values.
+
+Sun Dec 6 16:30:33 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * mipsbsd.c (MY(set_arch_mach)): Make static.
+ * aoutx.h (NAME(aout,machine_type)): For bfd_arch_mips, use
+ bfd_mach_mips* macros rather than simple numbers.
+
+ COFF weak symbol support, based on patches from Mark Elbrecht
+ <snowball3@usa.net>:
+ * coffcode.h (coff_slurp_symbol_table): Handle C_WEAKEXT.
+ * coffgen.c (coff_renumber_symbols): Handle weak symbols.
+ (coff_write_alien_symbol): Likewise.
+ * cofflink.c (coff_link_check_ar_symbols): Likewise.
+ (coff_link_add_symbols): Likewise.
+ (_bfd_coff_link_input_bfd): Likewise.
+ (_bfd_coff_write_global_sym): Likewise.
+
+ * elf.c (copy_private_bfd_data): Always initialize the
+ includes_phdrs field.
+
+ * elflink.h (elf_fix_symbol_flags): Check for case where a non-ELF
+ file defines a symbol first mentioned in an ELF file.
+
+ * bfd-in.h: Always define BFD_HOST_64_BIT and BFD_HOST_U_64_BIT if
+ possible, rather than only if BFD64.
+ * elflink.h (compute_bucket_count): Just check BFD_HOST_U_64_BIT,
+ not __GNUC__.
+ * bfd-in2.h: Rebuild.
+
+ * srec.c (srec_set_section_contents): Correct test to avoid
+ switching to 4 byte addresses after seeing a second section which
+ requires 3 byte addresses. From Joel Schantz
+ <joel.schantz@argosys.boeing.com>.
+
+ * config.bfd (m68*-*-gnu*): New target. From Aymeric Vincent
+ <aymeric.vincent@emi.u-bordeaux.fr>.
+
+1998-12-04 Jim Blandy <jimb@zwingli.cygnus.com>
+
+ * elf32-ppc.c (ppc_elf_merge_private_bfd_data): Fix logic to
+ decide whether the output file is -mrelocatable-lib,
+ -mrelocatable, or neither. (gdb.base/nodebug.exp)
+
+1998-12-03 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-fr30.c: Add support for R_FR30_48 reloc.
+ * reloc.c: Add BFD_RELOC_FR30_48 relocation.
+ * bfd-in2.h: Regenerate.
+ * libbfd.h: Regenerate
+
+Wed Dec 2 00:58:37 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elflink.h (elf_adjust_dynamic_symbol): Warn on an attempt to
+ link against a dynamic symbol with no type or size.
+
+1998-12-01 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf32-i386.c (i386_check_relocs) [R_386_32]: Don't emit
+ relocation for section which does not get loaded.
+ (elf_i386_relocate_section) [R_386_32]: Likewise.
+
+Tue Dec 1 11:33:33 1998 Jim Wilson <wilson@cygnus.com>
+
+ * coff-h8300.c (h8300_bfd_link_add_symbols): Make reloc_size,
+ reloc_count and i long instead of unsigned long. Handle error
+ return from bfd_canonicalize_reloc.
+
+1998-12-01 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-v850.c (v850_elf_relocate_section): Detect the absence of
+ a hash table.
+
+Mon Nov 30 15:28:09 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * elf32-sh.c (elf/sh.h): Include.
+ sh_reloc_type: Delete. Changed all references to elf_sh_reloc_type.
+ (sh_elf_howto_tab): Add HOWTO for R_SH_SWITCH8.
+ (sh_reloc_map): Map BFD_RELOC_8_PCREL to R_SH_SWITCH8.
+ (sh_elf_relax_delete_bytes): Handle R_SH_SWITCH8.
+ * Makefile.in: Add dependency of elf32-sh.lo on $(INCDIR)/elf/sh.h.
+
+Fri Nov 27 17:51:38 1998 Geoff Keating <geoffk@ozemail.com.au>
+
+ * elflink.h (compute_bucket_count): Don't allow minsize==0, it
+ causes division by zero later on.
+
+Thu Nov 26 11:19:35 1998 Dave Brolley <brolley@cygnus.com>
+
+ * elf32-fr30.c (fr30_elf_pc9_reloc,fr30_elf_pc12_reloc): Not
+ needed.
+
+1998-11-25 DJ Delorie <dj@cygnus.com>
+
+ * coff-i386.c (i3coff_object_p): Remove hack. Use new emulation
+ hook now.
+
+Tue Nov 24 10:25:27 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-fr30.c (fr30_elf_relocate_section): Call
+ fr30_final_link_relocate.
+ (fr30_final_link_relocate): New function: Handle I20 and I32
+ relocs.
+ (fr30_elf_i32_reloc): New function: Handle I32 relocs.
+ (fr30_elf_pc9_reloc): New function: Handle 9_PCREL relocs.
+ (fr30_elf_pc12_reloc): New function: Handle 12_PCREL relocs.
+
+ * elf32-v850.c (v850_elf_relocate_section): Reset hi16s reloc
+ chain to empty.
+
+ The following changes are based on a patch submitted by Gianluca
+ Moro <glctr@abc.it>:
+
+ (v850_elf_perform_relocation): Only update a hi16s reloc if it has
+ not already been updated.
+ (find_remembered_hi16s_reloc): New parameter 'already_found'
+ returns state of remembered hi16s reloc.
+ (remember_hi16s_reloc): Set 'found' field to false.
+ (hi16s_location): Add 'found' field.
+
+1998-11-23 DJ Delorie <dj@cygnus.com>
+
+ * coff-i386.c (bfd_pe_dll_not_recognized_hack): the linker wants
+ to see .DLL files as unrecognized.
+ (i3coff_object_p): Sorry, had to hack it to not recognize these
+ files (pei-i386) on request.
+
+1998-11-23 DJ Delorie <dj@cygnus.com>
+
+ * opncls.c (bfd_make_readable): need more cleanup for symbols and
+ relents. Call bfd_check_format to reinitialize.
+
+Fri Nov 20 14:21:36 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-fr30.c (fr30_elf_relocate_section): Remove spurious
+ warnings.
+
+Thu Nov 19 14:42:15 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * aclocal.m4: regenerate
+ * configure: regenerate
+
+Tue Nov 17 20:23:35 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf-bfd.h (struct elf_link_hash_entry): Add vtable_entries_size.
+ * elf.c (_bfd_elf_link_hash_newfunc): Clear it.
+ * elflink.h (elf_gc_propagate_vtable_entries_used): Copy it, and
+ respect it as an upper bound on what memory to reference.
+ (elf_gc_smash_unused_vtentry_relocs): Likewise.
+ (elf_gc_record_vtentry): Handle as-yet undefined vtables. Set and
+ update vtable_entries_size appropriately.
+
+Tue Nov 17 15:28:31 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-fr30.c (fr30_reloc_type_lookup): Used integers to hold
+ reloc number.
+
+Mon Nov 16 22:19:21 1998 DJ Delorie <dj@cygnus.com>
+
+ * archive.c (bfd_ar_hdr_from_filesystem): support BFD_IN_MEMORY
+ bfds; they have no "file" so we fake it.
+ * bfd-in2.h: add bfd_make_writable and bfd_make_readable (regen)
+ * libbfd.c (bfd_write): Allow writing to BFD_IN_MEMORY bfds by
+ resizing the memory buffer.
+ * opncls.c (bfd_make_writable): New function; lets you write a
+ bfd_create'd bfd to an in-memory buffer.
+ (bfd_make_readable): New function; lets you read back that buffer
+ as if it were from bfd_openr. Used to build generated archive
+ members (winsup's ld's dlltool)
+
+Mon Nov 16 19:15:19 1998 Dave Brolley <brolley@cygnus.com>
+
+ * po/bfd.pot: Regenerated.
+
+Mon Nov 16 10:57:06 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-v850.c (hi16s_location): Replaced fixed size array with
+ linked list.
+
+Sun Nov 15 20:28:25 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf64-alpha.c (elf64_alpha_relax_section): Search for the proper
+ element of the gotentry list for local symbols too.
+ (elf64_alpha_relocate_section): Unify local and global handling.
+ Assert that gotent->use_count > 0.
+
+Sat Nov 14 15:16:01 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in (vms_alpha_vec): Rename from evax_alpha_vec, and
+ update for file name changes of July 2, 1998.
+ (vms_vax_vec): New.
+ * configure: Rebuild.
+
+Thu Nov 12 19:19:54 1998 Dave Brolley <brolley@cygnus.com>
+
+ * po/bfd.pot: Regenerated.
+
+Tue Nov 10 16:17:06 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * acinclude.m4, config.bfd: detect cygwin* instead of cygwin32*.
+ * aclocal.m4, configure: regenerate
+
+Tue Nov 10 15:13:59 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf.c (prep_headers): Add support for bfd_arch_fr30.
+
+Tue Nov 10 13:37:36 1998 Felix Lee <flee@cygnus.com>
+
+ * acinclude.m4 (BFD_HAVE_SYS_PROCFS_TYPE,
+ BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): didn't define macro when value
+ was cached.
+ * aclocal.m4, configure: regenerated.
+
+Tue Nov 10 14:31:01 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf32-d10v.c (reloc_type): Add R_D10V_GNU_VTINHERIT and
+ R_D10V_GNU_VTENTRY relocs.
+ (elf_d10v_howto_table): Likewise.
+ (d10v_reloc_map d10v_reloc_map): Likewise.
+ (elf32_d10v_gc_mark_hook): New.
+ (elf32_d10v_gc_sweep_hook): New.
+ (elf32_d10v_check_relocs): New.
+ (elf32_d10v_relocate_section): New.
+ (elf_backend_relocate_section): Define.
+ (elf_backend_can_gc_sections): Define.
+
+Sat Nov 7 18:07:51 1998 Peter Schauer <peter.schauer@regent.e-technik.tu-muenchen.de>
+
+ * Makefile.am (BFD32_BACKENDS): Move vms files here...
+ (BFD64_BACKENDS): ...from here.
+ (BFD32_BACKENDS_CFILES): Move vms files here...
+ (BFD64_BACKENDS_CFILES): ...from here.
+ * Makefile.in: Rebuild.
+
+Wed Nov 4 15:58:48 1998 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.am: Add FR30 target.
+ * Makefile.in: Add FR30 target.
+ * archures.c: Add support for FR30.
+ * config.bfd: Add support for FR30.
+ * configure.in: Add support for FR30.
+ * reloc.c: Add support for FR30 relocations.
+ * targets.c: Add support for FR30 relocations.
+ * bfd-in2.h: Regenerate.
+ * configure: Regenerate.
+ * libbfd.h: Regenerate.
+ * cpu-fr30.c: New file.
+ * elf32-fr30.c: New file.
+
+Mon Nov 2 14:59:33 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * configure.in: detect cygwin* instead of cygwin32*
+ * configure: regenerate
+
+Sun Nov 1 19:32:28 1998 Jeffrey A Law (law@cygnus.com)
+
+ * elf-m10300.c (mn10300_elf_relax_section): Do not use alloca,
+ use bfd_malloc and free instead and check return value from bfd_malloc.
+
+Sun Nov 1 16:20:35 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * libbfd-in.h (_bfd_dwarf1_find_nearest_line): Declare.
+ * libbfd.h: Rebuild.
+
+ * elf32-mips.c (mips_elf_dynsym_sec_names): Comment out.
+ (SIZEOF_MIPS_DYNSYM_SECNAMES): Likewise.
+ (MIPS_TEXT_DYNSYM_SECN): Likewise.
+ (_bfd_mips_elf_fake_sections): Don't set sh_info field of a .hash
+ section.
+ (struct mips_elf_link_hash_table): Remove dynsym_sec_strindex
+ field.
+ (mips_elf_link_hash_table_create): Don't initialize
+ dynsym_sec_strindex.
+ (mips_elf_gc_mark_hook): Add default case to avoid warning.
+ (mips_elf_size_dynamic_sections): Generate a section symbol for
+ every output section.
+ (mips_elf_finish_dynamic_sections): Count all sections for
+ DT_MIPS_UNREFEXTNO.
+ (mips_elf_finish_dynamic_sections): Use dynamic symbols for all
+ output sections.
+
+Sun Nov 1 12:46:53 1998 Geoff Keating <geoffk@ozemail.com.au>
+
+ * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Allocate two slots
+ for later PLT entries in large PLTs.
+ (ppc_elf_finish_dynamic_symbol): Allow for the extra slots.
+
+Sat Oct 31 20:10:09 1998 Jeffrey A Law (law@cygnus.com)
+
+ * elf32-ppc.c (ppc_elf_reload_section): Fix typo.
+
+1998-10-26 15:58 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf-bfd.h (struct elf_link_hash_entry): Add new field elf_hash_value.
+ * elflink.h (elf_collect_hash_codes): New function. This function is
+ called for each exported symbol and we compute the ELF hash value for
+ it.
+ (compute_bucket_value): New function. It is called from
+ size_dynamic_sections to determine the hash table size. When we are
+ optimizing a better, but slower, algorithm is used.
+ (size_dynamic_sections): Call compute_bucket_value.
+
+ * elf.c (bfd_elf_hash): Optimize the hash function a bit.
+
+Mon Oct 19 20:03:21 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf32-sh.c: Add HOWTO entries for R_SH_GNU_VTINHERIT and
+ R_SH_GNU_VTENTRY.
+ (sh_elf_gc_mark_hook): New.
+ (sh_elf_gc_sweep_hook): New.
+ (sh_elf_check_relocs): New.
+ (elf_backend_can_gc_sections): Define.
+
+Mon Oct 19 16:57:05 1998 Felix Lee <flee@cygnus.com>
+
+ * acinclude.m4: undo previous gettext change
+ * aclocal.m4: rebuild with right version of aclocal.
+
+Mon Oct 19 01:47:21 1998 Felix Lee <flee@cygnus.com>
+
+ * acinclude.m4, aclocal.m4: move gettext-related fragments from
+ aclocal.m4 to acinclude.m4, so they don't get lost.
+
+ * elfcore.h: rewrite for better corefile support.
+ * elf.c (elfcore_*): new functions.
+ * elf-bfd.h (elf_obj_tdata): new structure members.
+ * acconfig.h, acinclude.m4, configure.in: add feature-tests for
+ flavor of procfs.
+ * aclocal.m4, config.in, configure, Makefile.in: regenerated.
+
+Fri Oct 16 14:07:45 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf32-m32r.c: Add HOWTO entries for R_M32R_GNU_VTINHERIT
+ and R_M32R_GNU_VTENTRY.
+ (elf_backend_can_gc_sections): Define.
+ (m32r_elf_check_relocs): New.
+ (m32r_elf_gc_mark_hook): New.
+ (m32r_elf_gc_sweep_hook): New.
+ (m32r_elf_relocate_section): Handle VT relocs.
+
+Mon Oct 12 14:18:40 1998 Nick Clifton <nickc@cygnus.com>
+
+ * coff-arm.c (arm_relocate_section): Remove redundant test.
+
+ * bfd-in2.h (struct reloc_howto_struct): Improve comment to make
+ cleat that the 'bitsize' field is the size of the bitfield AFTER
+ relocation not before.
+
+ * elf32-m32r.c (R_M32R_18_PCREL): Fix size of bitfield.
+
+ * coff-mips.c (mips_relocate_hi): Cope with missing refhi or reflo
+ relocs.
+
+Tue Oct 6 09:20:44 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf32-sparc.c: Add HOWTO entries for R_SPARC_GNU_VTINHERIT and
+ R_SPARC_GNU_VTENTRY.
+ (elf32_sparc_check_relocs): Handle them.
+ (elf32_sparc_reloc_type_lookup): Likewise.
+ (elf32_sparc_relocate_section): Likewise.
+ (elf32_sparc_gc_mark_hook): New.
+ (elf32_sparc_gc_sweep_hook): New.
+
+Mon Oct 5 14:55:30 1998 Jeffrey A Law (law@cygnus.com)
+
+ * som.c (som_finish_writing): Perform some sanity checks when
+ writing an executable or shared library.
+
+Mon Oct 5 12:02:31 1998 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * dwarf1.c : New file. Adds _bfd_dwarf1_find_nearest_line.
+ * configure.in (elf): Add dwarf1.lo.
+ * elf_bfd.h (elf_ob_tdata): Add dwarf1_find_line_info.
+ * elf.c (_bfd_elf_find_nearest_line): Add call to
+ _bfd_dwarf1_find_nearest_line.
+ * elf32-mips.c (_bfd_mips_elf_find_nearest_line):
+ Add call to _bfd_dwarf1_find_nearest_line.
+ * configure: Rebuilt.
+
+Mon Oct 5 10:06:22 1998 Catherine Moore <clm@cygnus.com>
+
+ * elflink.h (elf_gc_sections): Do not allow garbage
+ collection if dynamic sections have been created.
+
+Mon Oct 5 09:07:37 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf32-v850.c: Add HOWTO entries for R_V850_GNU_VTINHERIT and
+ R_V850_GNU_VTENTRY.
+ (v850_elf_check_relocs): Handle VTINHERIT and VTENTRY relocs.
+ (v850_elf_perform_relocation): Likewise.
+ (v850_elf_final_link_relocate): Likewise.
+ (v850_elf_relocate_section): Likewise.
+ (v850_elf_gc_sweep_hook): New routine.
+ (v850_elf_gc_mark_hook): New routine.
+ (elf_backend_can_gc_sections): Define.
+
+Mon Oct 5 09:04:25 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf32-m68k.c (elf_m68k_gc_sweep_hook): Don't assume
+ that dynobj exists.
+
+Sun Oct 4 23:29:34 1998 David Edelsohn <edelsohn@mhpcc.edu>
+
+ * rs6000-core.c (rs6000coff_core_file_matches_executable_p):
+ Declare size as bfd_size_type.
+ (rs6000coff_get_section_contents): Declare count as bfd_size_type.
+
+Sun Oct 4 20:38:29 1998 Jeffrey A Law (law@cygnus.com)
+
+ * cpu-hppa.c (bfd_hppa20_arch): Define. Link it into the bfd_hppa_arch
+ structure.
+ * som.c (CPU_PA_RISC2_0): Define.
+ (_PA_RISC2_0_ID): Likewise.
+ (som_finish_writing): Use CPU_PA_RISC2_0 for the system_id as needed.
+
+Sun Oct 4 21:19:09 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elflink.h (elf_link_add_object_symbols): When a versioned symbol
+ has a base which is already defined, only add the referenced
+ symbol to the dynamic symbol table if it is defined or referenced
+ by a regular file.
+
+ * elf32-i386.c (elf_i386_info_to_howto_rel): Handle vtable relocs
+ correctly.
+
+1998-09-27 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * elflink.h (elf_link_add_object_symbols): Undo last change.
+
+Wed Sep 23 16:09:31 1998 Richard Henderson <rth@cygnus.com>
+
+ * elflink.h (elf_link_add_object_symbols): Don't record a dynamic
+ symbol for the indirect alias to a versioned symbol.
+
+Mon Sep 21 12:15:22 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf32-i386.c (elf32_i386_vtinherit_howto): New.
+ (elf32_i386_vtentry_howto): New.
+ (elf_i386_reloc_type_lookup): Return elf32_i386_vtentry_howto
+ or elf32_i386_vtinherit_howto on lookup.
+
+Sun Sep 20 00:48:07 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * elf32-m68k.c: Include "elf/m68k.h". Remove definition of enum
+ reloc_type. Rename R_68K__max to R_68K_max.
+ (howto_table): Use _bfd_elf_rel_vtable_reloc_fn for a VTENTRY
+ reloc.
+
+Sun Sep 20 00:09:25 1998 Chris Torek <torek@bsdi.com>
+
+ * libbfd.c (bfd_getb32): Rewrite expression to get better code.
+ (bfd_getl32, bfd_getb_signed_32, bfd_getl_signed_32): Likewise.
+
+ * libbfd.c (bfd_log2): Cast to bfd_vma before shifting, not
+ after.
+
+Sat Sep 19 22:42:23 1998 Doug Rabson <dfr@nlsystems.com>
+
+ * elflink.h (elf_link_add_object_symbols): Ensure that the warning
+ message has a null byte terminator.
+
+Fri Sep 18 14:35:29 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-v850.c (v850_elf_perform_relocation): Ignore contents of
+ word subject to R_V850_32 relocation.
+
+Thu Sep 17 17:20:36 1998 Nick Clifton <nickc@cygnus.com>
+
+ * dwarf2.c: Add comment describing problem computing line numbers
+ for undefined symbols at link time.
+
+Thu Sep 17 16:03:28 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf64-alpha.c (elf64_alpha_adjust_dynamic_symbol): Don't
+ transform a defweak into a plt entry.
+ (elf64_alpha_calc_dynrel_sizes): Allow room for secondary
+ plt entry references to receive a RELATIVE reloc.
+ (elf64_alpha_finish_dynamic_symbol): Fill them in.
+ (elf64_alpha_relocate_section): Assert we don't overrun
+ the allocated relocation space.
+
+Wed Sep 16 18:03:13 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf.c (swap_out_syms): Always treat section symbols as
+ special, even if they are attached to a common section.
+
+Wed Sep 16 10:34:13 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-v850.c (v850_elf_symbol_processing): Move symbols in
+ sections with v850 common section attributes into named v850
+ common sections.
+ (v850_elf_add_symbol_hook): Move symbols in sections with v850
+ common section attributes into named v850 common sections.
+
+Wed Sep 16 11:26:49 CDT 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf32-arm.c (elf32_arm_gc_mark_hook): Remove print
+ statement.
+
+1998-09-15 Geoff Keating <geoffk@ozemail.com.au>
+
+ * elf32-ppc.c (ppc_elf_relocate_section): Reverse output_offset
+ part of Vladimir's change of 1998-08-19. Make a R_PPC_SDAREL16
+ reloc to the wrong section a warning, not an error. .dynsbss
+ is not an output section, so there is no need to check for it.
+
+Tue Sep 15 12:40:05 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf-bfd.h: Add argument to elf_backend_get_symbol_type.
+
+Tue Sep 15 08:34:40 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf.c (swap_out_syms): Pass type to elf_backend_get_symbol_type.
+ * elf32-arm.c: Add HOWTO entries for R_ARM_GNU_VTINHERIT and
+ R_ARM_GNU_VTENTRY.
+ (elf32_arm_gc_mark_hook): New.
+ (elf32_arm_gc_sweep_hook): New.
+ (elf32_arm_check_relocs): New.
+ (elf32_arm_final_link_relocate): Handle VTINHERIT and VTENTRY
+ relocations.
+ (elf32_arm_relocate_section): Handle VTINHERIT and VTENTRY
+ relocations.
+
+1998-09-10 Geoff Keating <geoffk@ozemail.com.au>
+
+ * elf32-ppc.c (ppc_elf_relocate_section): If dynobj is NULL,
+ assume there is no PLT or GOT.
+
+Wed Sep 9 14:24:12 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-arm.c (elf32_arm_find_nearest_line): New function: just
+ like _elf_bfd_find_nearest_line() except that STT_ARM_TFUNC is
+ also accepted as a function symbol type.
+
+Mon Sep 7 13:24:03 1998 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
+
+ * rs6000-core.c (_LONG_LONG): Define for AIX 4.x only.
+
+Sat Sep 5 20:40:18 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * libbfd-in.h (_bfd_nolink_bfd_gc_sections): Correct definition to
+ match definition of _bfd_gc_sections field.
+ * libbfd.h: Rebuild.
+
+Fri Sep 4 13:54:23 1998 David Miller <davem@dm.cobaltmicro.com>
+
+ * elf32-sparc.c (elf32_sparc_relocate_section): Properly adjust
+ the addend of a dynamic relocation referencing a section.
+ * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
+ (sparc64_elf_finish_dynamic_symbol): Fix the PLT relocation offset.
+
+Thu Sep 3 17:28:50 1998 Richard Henderson <rth@cygnus.com>
+
+ * elflink.h (bfd_elfNN_size_dynamic_sections): Verify that the
+ bed has a size_dynamic_sections routine before trying to use it.
+
+Mon Aug 31 14:49:22 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf32-mips.c (elf_mips_gnu_vtentry_howto): Use
+ _bfd_elf_rel_vtable_reloc_fn.
+
+Mon Aug 31 10:23:40 1998 Catherine Moore <clm@cygnus.com>
+
+ * Makefile.am: Add elf32-arm.c.
+ * Makefile.in: Rebuild.
+ * elf-bfd.h: Add elf_backend_get_symbol_type.
+ * elf.c (swap_out_syms): If defined, call
+ elf_backend_get_symbol_type.
+ * elf32-arm.c: Define elf_backend_get_symbol_type.
+ (elf32_arm_get_symbol-type): New routine.
+ (record_thumb_to_arm_glue): Change to use STT_ARM_TFUNC.
+ (bfd_elf32_arm_process_before_allocation): Change to
+ check for STT_ARM_TFUNC.
+ (elf32_arm_final_link_relocate): Likewise.
+ * elfxx-target.h: Add elf_backend_get_symbol_type.
+
+Fri Aug 28 19:44:07 1998 Richard Henderson <rth@cygnus.com>
+
+ * archures.c (bfd_mach_alpha_ev[456]): New.
+ * cpu-alpha.c: Rework to match these types.
+ * bfd-in2.h: Rebuild.
+
+Fri Aug 28 19:38:53 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf-bfd.h (_bfd_elf_rel_vtable_reloc_fn): Declare.
+ * elf.c (_bfd_elf_rel_vtable_reloc_fn): New.
+
+ * elf32-i386.c (elf_howto_table): Add vtable relocs.
+ (elf_i386_reloc_type_lookup): Recognize them.
+ (elf_i386_check_relocs): Pass them off to generic code.
+ (elf_i386_relocate_section): Ignore them.
+ (elf_i386_gc_mark_hook, elf_i386_gc_sweep_hook): New.
+ (elf_backend_can_gc_sections): True.
+
+Thu Aug 20 15:03:45 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-arm.c (elf32_thumb_to_arm_stub): Check sym_sec is not NULL
+ before looking at owner field.
+ (elf32_arm_to_thumb_stub): Ditto.
+ (elf32_arm_relocate_section): Compute name before calling
+ elf32_arm_final_link_relocate().
+
+Thu Aug 20 11:30:17 1998 Michael Snyder <msnyder@cleaver.cygnus.com>
+
+ * elf.c: comment and formatting cleanups.
+ * elfcore.h: ditto.
+
+Wed Aug 19 15:43:26 1998 Michael Snyder <msnyder@cleaver.cygnus.com>
+
+ * elfcode.h (elf_object_p): Reject files of header type ET_CORE
+ (core files are treated differently than object files).
+ * elf-bfd.h (_bfd_elf_write_corefile_contents,
+ bfd_elf_mkcorefile): declare.
+ * elfxx-target.h (_bfd_elf_write_corefile_contents,
+ bfd_elf_mkcorefile): add to bfd_target vector.
+ * elfcore.h (elf_core_file_p): save the program header table,
+ and set the bfd architecture from the elf file header.
+ * elf.c (bfd_elf_mkcorefile): new function.
+ (_bfd_elf_write_corefile_contents): new function.
+ (assign_file_positions_for_segments): add cases for handling
+ PT_NOTE segments. (assign_file_positions_except_relocs):
+ core files should be handled the same as exec files.
+ (prep_headers): identify core files as type ET_CORE.
+ (copy_private_bfd_data): identify the sections belonging to
+ the PT_NOTE segment.
+
+ * elf32-sparc.c (elf32_sparc_final_write_processing):
+ add break statement to default case.
+
+1998-08-19 Vladimir N. Makarov <vmakarov@cygnus.com>
+
+ * elf32-ppc.c (ppc_elf_relocate_section): Check that output
+ section (not input) will be in sections ".sbss", ".sbss2",
+ ".sdata", and ".sdata" for R_PPC_SDAREL16, R_PPC_EMB_SDA2REL,
+ R_PPC_EMB_SDA21, R_PPC_EMB_RELSDA. In all these cases also ignore
+ output_offset for correct evaluation of addend.
+
+Tue Aug 18 11:48:12 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf32-arm.c: Add prefix bfd_ to elf32_arm_get_bfd_for_interworking,
+ elf32_arm_allocate_interworking_sections and
+ elf32_arm_process_before_allocation.
+
+Tue Aug 18 11:46:00 1998 Nick Clifton <nickc@cygnus.com>
+
+ * bfd-in.h: Ammend prototype for
+ elf32_arm_process_before_allocation to remove surplus third
+ argument.
+
+ * bfd-in2.h: Regenerate.
+
+Sat Aug 15 20:55:08 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf64-alpha.c (elf64_alpha_relax_section): Handle indirect symbols.
+
+Fri Aug 14 09:12:28 1998 Stan Cox <scox@cygnus.com>
+
+ * aoutx.h (aout_link_input_section_ext): Use the relocation already
+ calculated for RELOC_SPARC_REV32 case.
+
+Thu Aug 13 14:02:02 1998 Catherine Moore <clm@cygnus.com>
+
+ * bfd-in.h: Add prototypes for elf32_arm_get_bfd_for_interworking,
+ elf32_arm_allocate_interworking_sections and
+ elf32_arm_process_before_allocation.
+ * bfd-in2.h: Regenerated.
+ * elf32-arm.c Define elf32_arm_link_hash_table.
+ (insert_thumb_branch): New routine.
+ (find_thumb_glue): New routine.
+ (find_arm_glue): New routine.
+ (record_arm_to_thumb_glue): New routine.
+ (record_thumb_to_arm_glue): New routine.
+ (elf32_arm_link_hash_table_create): New routine.
+ (elf32_arm_get_bfd_for_interworking): New routine.
+ (elf32_arm_allocate_interworking_sections) New routine.
+ (elf32_arm_process_before_allocation) New routine.
+ (elf32_thumb_to_arm_stub): New routine.
+ (elf32_arm_to_thumb_stub): New routine.
+ (elf32_print_private_bfd_data): Fix typo.
+ (elf32_arm_final_link_relocate): Add argument sym_sec.
+ Check for branches to thumb symbols in case R_ARM_PC24.
+ Check for branches to arm symbols in case R_ARM_THM_PC22.
+ (elf32_arm_relocate_section): Pass symbol section to
+ elf32_arm_final_link_relocate.
+
+Wed Aug 12 19:00:39 1998 Geoff Keating <geoffk@ozemail.com.au>
+
+ * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Generate PLT
+ entries unless the symbol is defined in the executable; in
+ particular, undefined weak symbols get a PLT entry.
+
+Wed Aug 12 14:48:33 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * libaout.h: Remove nested comment to avoid warning.
+
+Wed Aug 12 08:10:11 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf32-arm.c (elf32_arm_final_link_relocate): Rework
+ R_ARM_PC24 relocation.
+
+Tue Aug 11 14:42:26 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf32-arm.c (elf32_arm_final_link_relocate): Remove unused
+ argument is_local. Add argument sym_flags. Check sym_flags
+ in R_ARM_ABS32 case. Include addend for R_ARM_THM_PC22 case.
+ (elf32_arm_relocate_section): Don't pass local sym and pass
+ sym_flags to elf32_arm_final_link_relocate.
+
+Mon Aug 10 20:38:39 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf64-alpha.c (elf64_alpha_calc_dynrel_sizes): Correct last change
+ to not count too few relocs for dynamicly linked executables.
+
+Mon Aug 10 15:35:34 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Never consider
+ symbols without a dynamic index dynamic. Consider all weak
+ symbols dynamic.
+ (elf64_alpha_strip_section_from_output): Don't assume 1-1
+ correspondance between input and output sections.
+
+Mon Aug 10 15:31:39 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * elflink.h (elf_gc_common_finalize_got_offsets): For backends
+ that use a .got.plt section start the got offset at zero.
+
+Mon Aug 10 17:31:21 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (ieee_write_processor): Correct the processor ID written
+ out for bfd_arch_m68k, accommodating change of March 25.
+
+Sun Aug 9 20:55:44 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf32-arm.c (elf32_arm_final_link_relocate): Rework
+ R_ARM_THM_RPC22 relocations.
+
+Sat Aug 8 15:15:30 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Undef weak symbols
+ are always dynamic.
+ (elf64_alpha_calc_dynrel_sizes): Allow enough room for RELATIVE
+ .got relocs in -Bsymbolic shared objects.
+
+Wed Aug 5 15:48:08 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-arm.c: Add private flags to ELF header.
+ (elf32_arm_print_private_bfd_data): New Function.
+ (elf32_arm_set_private_flags): New Function.
+ (elf32_arm_copy_private_flags): New Function.
+ (elf32_arm_merge_private_bfd_data): New Function.
+
+Mon Aug 3 17:10:15 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf32-sparc.c (elf32_sparc_check_relocs): Permit WPLT30 against
+ a local symbol.
+ (elf32_sparc_relocate_section): Likewise.
+
+Sun Aug 2 03:19:23 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf32-ppc.c (ppc_elf_check_relocs): Init sgot to NULL. Create the
+ .got if any relocation referrs to _GLOBAL_OFFSET_TABLE_.
+ (ppc_elf_relocate_section): Pull sgot and splt search to the start
+ of the function. Recognize no .plt as static linking.
+
+1998-08-01 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf32-mips.c (_bfd_mips_elf_section_from_shdr): Don't pass
+ ".liblist" string through gettext.
+
+Fri Jul 31 16:38:14 1998 Catherine Moore <clm@cygnus.com>
+
+ * Makefile.am: Add support for elf32-arm.lo.
+ * Makefile.in: Rebuild.
+ * config.bfd (arm-*-elf): Define targ_defvec and targ_selvecs.
+ (thumb-*-elf): Define targ_defvec and targ_selvecs.
+ * configure.in: Handle bfd_elf32_littlearm_vec and bfd_elf32_bigarm_vec.
+ * configure: Regenerate.
+ * elf.c: (prep_headers): Support arch_type of EM_ARM.
+ * targets.c: Support new targets bfd_elf32_bigarm_vec and
+ bfd_target bfd_elf32_littlearm_vec.
+ * elf32-arm.c: New file.
+
+Tue Jun 28 19:05:28 1998 Stan Cox <scox@cygnus.com>
+
+ * libaout.h (M_SPARCLITE_LE): New machine.
+ * sunos.c (MACHTYPE_OK): Add machine M_SPARCLITE_LE.
+ * aoutf1.h (sunos_set_arch_mach): Add machine M_SPARCLITE_LE.
+ (sunos_write_object_contents): Add machine bfd_mach_sparc_sparclite_le
+ * aoutx.h (howto_table_ext): Add relocation R_SPARC_REV32.
+ (NAME(aout,machine_type)) Add machine bfd_mach_sparc_sparclite_le
+ (aout_link_input_section_ext): Add RELOC_SPARC_REV32 support.
+ * elf32-sparc.c (_bfd_sparc_elf_howto_table, sparc_reloc_map,
+ elf32_sparc_relocate_section): Rename R_SPARC_32LE to be R_SPARC_REV32
+ * libbfd.h (bfd_reloc_code_real_names): Rename BFD_RELOC_SPARC_32LE to
+ be BFD_RELOC_SPARC_REV32.
+ * reloc.c: Ditto.
+ * config.bfd (sparc86x-*-aout): New
+
+Fri Jul 24 13:54:19 1998 Nick Clifton <nickc@cygnus.com>
+
+ * linker.c (_bfd_generic_final_link): Allocate NULL symbol before
+ actually mapping the output sections.
+
+Fri Jul 24 11:24:29 1998 Jeffrey A Law (law@cygnus.com)
+
+
+ * elf-m10300.c (mn10300_elf_howto): Add R_MN10300_24 entry.
+ (mn10300_elf_reloc_map): Similarly.
+ (mn10300_elf_final_link_relocate): Handle R_MN10300_24.
+
+Fri Jul 24 12:36:04 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf32-mips.c (elf_mips_howto_table): Add reloc types used on
+ Irix 6.
+ (bfd_elf32_bfd_reloc_type_lookup): Add default case.
+ * elf64-mips.c: Replace all uses of mips_elf64_reloc_type with
+ elf_mips_reloc_type defined in elf/mips.h.
+
+1998-07-24 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf64-mips.c: Remove reloc_type definition completely. It's now
+ in elf/mips.h.
+
+Thu Jul 23 13:33:19 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * elf64-mips.c (mips_elf64_reloc_type): #if 0 out more relocations
+ as they are defined in elf/mips.h now.
+
+Thu Jul 23 11:29:43 1998 Jeffrey A Law (law@cygnus.com)
+
+
+ * Re-add lost change:
+ * elf-m10300.c (elf32_mn10300_link_hash_entry): Add new field
+ "movm_stack_size".
+ (mn10300_elf_relax_section): Include stack space for register saves
+ in the imm8 field of a "call" instruction.
+ (compute_function_info): Determine how much stack is allocated by
+ the movm instruction. Fix typo.
+ (elf32_mn10300_link_hash_newfunc): Initialize movm_stack_size.
+
+Thu Jul 23 11:38:05 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf32-sparc.c (elf_backend_got_header_size): Define as 4.
+ * elf64-sparc.c (elf_backend_got_header_size): Define as 8.
+
+1998-07-22 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf32-ppc.c: Change use of pp_reloc_type to elf_ppc_reloc_type.
+
+Wed Jul 22 16:27:18 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-hppa.h: Let ELF header define the enum containing the
+ external reloc numbers.
+ * elf32-i386.h: Likewise.
+
+1998-07-22 14:57 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf-m10300.c: Let ELF header now define the macros to get the enum.
+ * elf32-mips.c: Likewise.
+ * elf32-ppc.c: Likewise.
+
+Wed Jul 22 13:53:52 1998 Nick Clifton <nickc@cygnus.com>
+
+ * bfd-in2.h: Change type of 'class' parameter to 'unsigned int' in
+ bfd_coff_set_symbol_class(), in order to avoid K&R compatability
+ prblems.
+ * bfd-in.h: Regenerate.
+ * coffgen.c (bfd_coff_set_symbol_class): Change type of 'class'
+ parameter to 'unsigned int' to avoid K&R compatability problems.
+
+Wed Jul 22 16:43:24 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (ieee_find_nearest_line): Change filename_ptr and
+ functionname_ptr to be const. Change line_ptr to be unsigned.
+
+ * coffcode.h (coff_link_output_has_begun): Simplify handling when
+ macro is not defined. Change second parameter from bfd_link_info
+ to coff_final_link_info. Add prototype.
+ (coff_final_link_postscript): Simplify handling when macro is not
+ defined. Add prototype.
+
+1998-07-22 13:08 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf-mn10300.c: Before include system specific ELF header define
+ START_RELOC_NUMBERS, RELOC_NUMBER, and END_RELOC_NUMBERS.
+ * elf32-mips.c: Likewise.
+ * elf32-ppc.c: Likewise.
+
+Wed Jul 22 13:46:51 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf64-mips.c (mips_elf64_reloc_type): Copy Ulrich's elf32-mips.c
+ temporary patch over to elf64-mips.c as well.
+
+1998-07-21 Ulrich Drepper <drepper@cygnus.com>
+
+ * elf32-mips.c (reloc_type): Temporarily disable definition of
+ standard relocation since they are now defined in elf/mips.h.
+
+Tue Jul 21 09:47:00 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf-m10200.c (mn10200_elf_final_link_relocate):
+ Modify range test for case R_MN10200_8.
+
+ * elf-m10300.c (mn10300_elf_final_link_relocate):
+ Modify range test for case R_MN10300_8.
+
+Mon Jul 20 18:50:54 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf-bfd.h (struct elf_backend_data): Add got_ & plt_header_size.
+ * elf32-i386.c (elf_backend_got_header_size): Define.
+ (elf_backend_plt_header_size): Define.
+ * elf32-m68k.c, elf32-mips.c, elf32-ppc.c: Likewise.
+ * elf32-sparc.c, elf64-alpha.c, elf64-sparc.c: Likewise.
+ * elfxx-target.h: Provide a default of zero.
+ * elflink.c (_bfd_elf_create_got_section): Use got_header_size.
+ * elflink.h (elf_gc_common_finalize_got_offsets): Likewise.
+
+ * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Don't remove a PLT
+ entry from an executable, even if the plt refcount goes to 0.
+
+Mon Jul 20 12:47:26 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * aoutx.h (NAME(aout,find_nearest_line)): Also remember the
+ directory name at the line number.
+
+ * elf.c (_bfd_elf_find_nearest_line): Also consider symbols
+ with an unspecified type.
+
+Wed Jul 15 11:20:01 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * sunos.c: Add undef of valid to avoid problem on SunOS.
+
+Tue Jul 14 15:30:59 1998 Richard Henderson <rth@cygnus.com>
+
+ * config.bfd (i?86-pc-beos{pe,elf,}*): Recognize.
+
+Tue Jul 14 11:22:21 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * elf32-m68k.c (elf_m68k_check_relocs): Also reference count
+ R_68K_PCxx and R_68K_xx relocations. Make sure that
+ ELF_LINK_HASH_NEEDS_PLT is always set for a PLT reloc reference.
+ (elf_m68k_gc_sweep_hook): Also reference count R_68K_PCxx and
+ R_68K_xx relocations.
+ (elf_m68k_adjust_dynamic_symbol): Reset the plt offset of a symbol
+ that has no plt entry.
+ (elf_m68k_relocate_section): Ignore the plt offset in a static
+ link.
+ * elflink.h (elf_adjust_dynamic_symbol): Reset the plt offset for
+ an ignored symbol.
+ (elf_gc_common_finalize_got_offsets): Set the got offsets also in
+ a static link.
+
+ * elf32-m68k.c (R_68K_GNU_VTINHERIT, R_68K_GNU_VTENTRY): New reloc
+ types.
+ (howto_table, reloc_map): Add entries for them.
+ (elf_m68k_check_relocs): Handle them. Implement reference
+ counting for got and plt entries.
+ (elf_m68k_gc_mark_hook, elf_m68k_gc_sweep_hook): New functions.
+ (elf_m68k_adjust_dynamic_symbol): Handle unreferenced plt
+ symbols.
+ (rtype_to_howto_rel, elf_info_to_howto_rel): Delete.
+ (elf_m68k_relocate_section): Handle the new reloc types.
+ (bfd_elf32_bfd_final_link, elf_backend_gc_mark_hook,
+ elf_backend_gc_sweep_hook, elf_backend_can_gc_sections): Define.
+ * elflink.h (elf_link_add_object_symbols): When creating an
+ indirect reference for symbol versioning also copy the plt
+ offset.
+ (elf_fix_symbol_flags): When clearing the ELF_LINK_HASH_NEEDS_PLT
+ flag also reset the plt offset.
+ (elf_link_assign_sym_version): Likewise.
+ (elf_gc_common_finalize_got_offsets): Increment the got offset by
+ the size of the entry in bytes.
+ (elf_gc_allocate_got_offsets): Likewise.
+
+Tue Jul 14 11:18:14 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elflink.h (elf_gc_sections): Return true rather than falling off
+ the bottom.
+
+ * coffgen.c (bfd_coff_set_symbol_class): Call bfd_alloc, not
+ xmalloc.
+
+Mon Jul 13 11:06:31 1998 Nick Clifton <nickc@cygnus.com>
+
+ * coff-arm.c: Supress definition of TARGET_UNDERSCORE and add a
+ comment describing when it should be enabled.
+ Changed definition of USER_LABEL_PREFIX to "", to fall into line
+ with GCC sources.
+
+Mon Jul 13 13:06:54 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (ieee_slurp_external_symbols): Handle call optimization
+ information ATN records.
+
+Fri Jul 10 16:31:06 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (ieee_slurp_external_symbols): Select an appropriate
+ section for an absolute symbol in a fully linked file. Based on
+ patch from Christian Holland <CHolland@de.lucent.com>.
+
+Wed Jul 8 11:29:56 1998 Manfred Hollstein <manfred@s-direktnet.de>
+
+ * coff-m88k.c (m88k_special_reloc): Don't lose the information
+ that a symbol is undefined.
+
+Tue Jul 7 21:47:02 1998 Jeffrey A Law (law@cygnus.com)
+
+ * som.c (som_bfd_gc_sections): Define.
+
+Mon Jul 6 11:35:50 1998 Nick Clifton <nickc@cygnus.com>
+
+ * coff-arm.c (aoutarm_std_reloc_howto): Do not complain about
+ overflows in ARM_26D patches, since they have already been
+ implmented. Patch submitted by Dr. R.J. Black <rjb@dcs.gla.ac.uk>
+
+Sat Jul 4 12:25:36 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * coffcode.h (coff_write_object_contents): If we have any long
+ section names, call coff_write_symbols even if there are no
+ symbols.
+
+Fri Jul 3 13:11:35 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf.c (copy_private_bfd_data): Only set phdr_included once for a
+ PT_LOAD segment, rather than only setting it once for the entire
+ file.
+
+ * elf.c (_bfd_elf_make_section_from_shdr): When setting the LMA,
+ rather than ignoring every phdr with a p_paddr of 0, ignore all
+ the phdrs if they all have a p_paddr of 0.
+
+ * stabs.c (_bfd_write_stab_strings): Check whether the .stabstr
+ section was discarded from the link.
+
+Fri Jul 3 14:39:05 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * coff-sh.c (sh_insn_uses_freg): Ignore lowest bit of register number.
+
+Fri Jul 3 14:35:48 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * coff-sh.c (sh_insns_conflict): Load of fpscr conflicts with
+ floating point operations.
+
+Thu Jul 2 18:37:25 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * cofflink.c (_bfd_coff_link_input_bfd): Skip undefined global
+ function symbols.
+
+Thu Jul 2 14:59:42 1998 Klaus Kaempf <kkaempf@rmi.de>
+
+ Merge of vax/vms (read-only) support
+ * configure.com: Support Vax target.
+ * makefile.vms: Support Vax target.
+ * vms.h: Renamed from evax.h, merged vax/vms (read-only) support.
+ * vms.c: Renamed from evax-alpha.c, merged vax/vms (read-only)
+ support.
+ * vms-hdr.c: Renamed from evax-emh.c, merged vax/vms (read-only)
+ support.
+ * vms-gsd.c: Renamed from evax-egsd.c, merged vax/vms (read-only)
+ support.
+ * vms-tir.c: Renamed from evax-etir.c, merged vax/vms (read-only)
+ support.
+ * vms-misc.c: Renamed from evax-misc.c, merged vax/vms (read-only)
+ support.
+ * libbfd.c (real_read): Use unbuffered read on VMS/Vax.
+ * targets.c (bfd_target_ovax_flavour): New flavour.
+ (vms_alpha_vec): Renamed from evax_alpha_vec.
+ (vms_vax_vec): New.
+ (target_vector): Update accordingly.
+ * config.bfd (alpha*-*-*vms*): Use vms_alpha_vec, not
+ evax_alpha_vec.
+ (vax*-*-*vms*): New target.
+ * Makefile.am: Update for renamed files. Rebuild dependencies.
+ * bfd-in2.h: Rebuild.
+ * configure.in, Makefile.in, aclocal.m4: Rebuild.
+
+Thu Jul 2 13:31:55 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patch from Matt Semersky <matts@scd.hp.com>:
+ * linker.c (_bfd_generic_final_link): Force a trailing NULL
+ pointer on abfd->outsymbols.
+ (generic_add_output_symbol): Handle NULL sym parameter.
+
+Wed Jul 1 17:05:53 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf.c (copy_private_bfd_data): Add support for changing VMA or
+ LMA of sections.
+
+Wed Jul 1 16:58:50 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * coff-sh.c (sh_relax_delete_bytes): Correct address comparisons
+ when handling 32 bit immediate relocs.
+ * elf32-sh.c (sh_elf_relax_delete_bytes): Likewise.
+
+Tue Jun 30 09:55:03 1998 Jeffrey A Law (law@cygnus.com)
+
+ * section.c (STD_SECTION): Account for recently added gc_mark
+ field in struct asection.
+
+ * elf-m10300.c (bfd_mn10300_elf_merge_private_bfd_data): New function.
+ (bfd_elf32_bfd_merge_private_bfd_data): Define.
+
+Thu Jun 25 18:31:41 1998 Richard Henderson <rth@cygnus.com>
+
+ ELF Section-level Garbage Collection:
+ * bfd.c (bfd_gc_sections): New.
+ * aout-adobe.c: Hook to default implementation.
+ * aout-target.h, aout-tic30.c, binary.c, bout.c: Likewise.
+ * coff-alpha.c, coff-mips.c, coff-rs6000.c, coffcode.h: Likewise.
+ * evax-alpha.c, i386msdos.c, i386os9k.c, ieee.c: Likewise.
+ * ihex.c, nlm-target.h, oasys.c, ppcboot.c, srec.c: Likewise.
+ * tekhex.c, versados.c: Likewise.
+ * libbfd-in.h (_bfd_nolink_bfd_gc_sections): New.
+ * targets.c (BFD_JUMP_TABLE_LINK): Add _bfd_gc_sections.
+
+ * reloc.c (BFD_RELOC_VTABLE_INHERIT, BFD_RELOC_VTABLE_ENTRY): New.
+ (bfd_generic_gc_sections): New.
+ * section.c (SEC_KEEP): New.
+ (asection): Add gc_mark member.
+
+ * elfcode.h (elf_gc*): New name remappings.
+ * elflink.h (elf_link_input_bfd): Don't set contents on stabs
+ sections to be excluded.
+ (elf_gc_mark, elf_gc_sweep, elf_gc_sweep_symbol): New.
+ (elf_gc_propogate_vtable_entries_used): New.
+ (elf_gc_smash_unused_vtentry_relocs): New.
+ (elf_gc_sections, elf_gc_record_vtinherit, elf_gc_record_vtentry): New.
+ (elf_gc_common_finalize_got_offsets): New.
+ (elf_gc_allocate_got_offsets, elf_gc_common_final_link): New.
+ * elfxx-target.h: Add and default gc hooks.
+
+ * elf-bfd.h (struct elf_link_hash_entry): Swap got_offset/plt_offset
+ for unions.
+ (struct elf_obj_tdata): Likewise for local_got_offsets.
+ * elf.c, elf-i386.c, elf32-m68k.c, elf32-mips.c: Update all uses.
+ * elf32-ppc.c, elf32-sparc.c, elf64-alpha.c: Likewise.
+ * elf64-sparc.c, elflink.h: Likewise.
+
+ * elf-bfd.h (struct elf_link_hash_entry): Add vtable members.
+ (ELF_LINK_HASH_MARK): Define.
+ (struct elf_backend_data): Add GC hooks.
+ * elf.c (_bfd_elf_link_hash_newfunc): Zero vtable members.
+
+ * elf-m10300.c (mn10300_elf_check_relocs): New.
+ (mn10300_elf_gc_mark_hook): New.
+ (R_MN10300_GNU_VTINHERIT, R_MN10300_GNU_VTENTRY): New.
+ (elf_mn10300_howto, mn10300_reloc_map): Handle them.
+ (mn10300_elf_final_link_relocate): Likewise.
+ (mn10300_elf_relocate_section): Likewise.
+ (elf_backend_can_gc_sections): Define.
+ * elf32-mips.c (R_MIPS_GNU_VTINHERIT, R_MIPS_GNU_VTENTRY): New.
+ (elf_mips_gnu_vtinherit_howto, elf_mips_gnu_vtentry_howto): New.
+ (bfd_elf32_bfd_reloc_type_lookup): Handle them.
+ (mips_info_to_howto_rel): Likewise.
+ (mips_elf_relocate_section): Likewise.
+ (mips_elf_check_relocs): Likewise.
+ (mips_elf_gc_mark_hook, mips_elf_gc_sweep_hook): New.
+ (elf_backend_can_gc_sections): Define.
+ * elf32-ppc.c (R_PPC_GNU_VTINHERIT, R_PPC_GNU_VTENTRY): New.
+ (ppc_elf_howto_raw): Handle them.
+ (ppc_elf_reloc_type_lookup): Likewise.
+ (ppc_elf_relocate_section): Likewise.
+ (ppc_elf_check_relocs): Reference count .got and .plt entries.
+ Handle new vtable relocs.
+ (ppc_elf_adjust_dynamic_symbol): Recognize unused .plt entries.
+ (ppc_elf_gc_mark_hook, ppc_elf_gc_sweep_hook): New.
+ (elf_backend_can_gc_sections): Define.
+
+Fri Jun 26 10:48:23 1998 Jeffrey A Law (law@cygnus.com)
+
+ * archures.c (bfd_mach_mn10300): Define.
+ * elf-m10300.c: Include elf/mn10300.h
+ (elf_mn10300_mach): New function.
+ (_bfd_mn10300_elf_final_write_processing): Likewise.
+ (_bfd_mn10300_elf_object_p): Likewise.
+ (elf_backendfinal_write_processing): Define.
+ (elf_backend_object_p): Likewise.
+
+Thu Jun 25 18:31:08 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-v850.c (v850_elf_perform_relocation): Fix HI16_S
+ relocation.
+
+Wed Jun 24 17:17:57 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elflink.h (elf_bfd_final_link): Loop over input_bfds using the
+ link_next field, not the next field.
+
+Sun Jun 21 19:38:39 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf.c (map_sections_to_segments): Check the section address
+ against the phdr size both with and without a modulo of
+ maxpagesize.
+
+Fri Jun 19 17:08:18 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf32-mips.c (mips_elf_size_dynamic_sections): Only strip a
+ linker created empty input section if the output section has the
+ same name.
+
+ * elflink.h (elf_link_output_extsym): Print an error message if
+ _bfd_elf_section_from_bfd_section fails.
+
+ * elf.c (_bfd_elf_section_from_bfd_section): Call bfd_set_error on
+ failure.
+
+Tue Jun 16 11:55:55 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf.c (copy_private_bfd_data): Improve handling of Solaris
+ native linker output. Avoid putting an empty section in more than
+ one segment.
+
+Fri Jun 12 13:30:17 1998 Tom Tromey <tromey@cygnus.com>
+
+ * po/Make-in (all-yes): If maintainer mode, depend on .pot file.
+ ($(PACKAGE).pot): Unconditionally depend on POTFILES.
+
+Fri Jun 12 13:34:02 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * elf.c (swap_out_syms): New arg relocatable_p.
+ Don't add section VMA to symbols for relocatable output.
+ (_bfd_elf_compute_section_file_positions): Update call to
+ swap_out_syms.
+
+Mon Jun 8 15:20:57 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-v850.c (v850_elf_perform_relocation): Make comparisons
+ against 'addend' be signed rather than unsigned.
+
+Sat Jun 6 00:31:21 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-m32r.c: Add prototyps for static functions.
+
+ * coff-arm.c: Add prototypes for static functions.
+
+Fri Jun 5 17:21:51 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf.c (elf_sort_sections): Sort by LMA first then VMA, since the
+ LMA is used to order sections in a segment.
+
+ * elf32-v850.c: Add prototypes for static functions.
+ Change type of addend parameter to bfd_vma in various functions.
+
+Fri Jun 5 18:09:58 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * aoutx.h (howto_table_ext): Change RELOC_BASE13 to use
+ complain_overflow_signed instead of complain_overflow_bitfield.
+
+Fri Jun 5 15:11:11 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * elf.c (elf_map_symbols): Don't add section VMA to symbol value
+ when comparing against 0.
+
+Wed Jun 3 17:52:49 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (config.status): New target.
+ * Makefile.in: Rebuild.
+
+Wed Jun 3 12:18:24 1998 Stan Cox <scox@equinox.cygnus.com>
+
+ * elf32-sparc.c (elf32_sparc_merge_private_bfd_data): Give an
+ error if previous object endianness doesn't match current object.
+
+Tue Jun 2 17:50:59 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-v850.c (v850_elf_print_private_bfd_data): Call
+ _bfd_elf_print_private)bfd_data ().
+
+Tue Jun 2 15:29:35 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elflink.h (elf_merge_symbol): Don't always set type_change_ok
+ and size_change_ok.
+ (elf_link_add_object_symbols): Set type_change_ok and
+ size_change_ok before calling elf_merge_symbol.
+
+ * elf32-mips.c (mips_elf_relocate_section): If we issue an
+ undefined symbol error, don't also issue an overflow error.
+
+Tue Jun 2 13:51:00 1998 Geoff Keating <geoffk@ozemail.com.au>
+
+ * elf32-ppc.c (ppc_elf_relocate_section): The target of an
+ R_PPC_LOCAL24PC relocation should be local; if not, print an error
+ message instead of crashing.
+
+Mon Jun 1 18:23:12 1998 Yuli Barcohen <yuli.barcohen@telrad.co.il>
+
+ * archures.c (bfd_mach_cpu32): Define.
+ (bfd_default_scan): Add case for 68060. Fix 68332 case to use
+ bfd_mach_cpu32.
+ * cpu-m68k.c (arch_info_struct): Add m68k:cpu32.
+ * ieee.c: Include <ctype.h>.
+ (ieee_object_p): Parse out process ID string to make it more
+ likely to be acceptable for bfd_scan_arch.
+ * bfd-in2.h: Rebuild.
+
+Mon Jun 1 11:12:02 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-m32r.c (m32r_elf_print_private_bfd_data): Also call
+ _bfd_elf_print_private_bfd_data() so that the program header will
+ be displayed.
+
+Mon Jun 1 12:14:28 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * peicode.h (coff_swap_sym_in): Check for C_SECTION rather than
+ 0x68. Reindent. Add some comments.
+
+Fri May 29 09:58:08 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf.c (copy_private_bfd_data): Adjust physical address of
+ segment in output BFD to contain LMAs of its sections.
+
+Tue May 26 19:37:47 1998 Stan Cox <scox@equinox.cygnus.com>
+
+ * elf32-sparc.c (_bfd_sparc_elf_howto_table, sparc_reloc_map,
+ elf32_sparc_relocate_section): Added R_SPARC_32LE for little
+ endian data 32 bit relocations.
+ (elf32_sparc_merge_private_bfd_data): Check if linking little
+ endian objects with big endian objects.
+ (elf32_sparc_object_p): Set bfd_mach_sparc_sparclite_le.
+ (elf32_sparc_final_write_processing): Set EF_SPARC_LEDATA in e_flags.
+ * libbfd.h (bfd_reloc_code_real_names): Added BFD_RELOC_SPARC_32LE.
+ * reloc.c: Same.
+ * cpu-sparc.c (arch_info_struct): Added sparc:sparclite_le
+ * archures.c (bfd_mach_sparc_sparclite_le): New.
+ * bfd-in2.h (BFD_RELOC_SPARC_32LE, bfd_mach_sparc_sparclite_le): New.
+
+Thu May 21 16:59:28 1998 Nick Clifton <nickc@cygnus.com>
+
+ * peicode.h (add_data_entry): Fix precedence of operators in if ()
+ statement.
+
+Tue May 19 18:41:19 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * bfd-in.h: Move over patch to bfd-in2.h.
+
+ * reloc.c (bfd_check_overflow): Add casts before shifts which may
+ not fit in 32 bits.
+ (_bfd_relocate_contents): Likewise.
+
+Mon May 18 14:44:15 1998 Nick Clifton <nickc@cygnus.com>
+
+ * peicode.h (add_data_entry): If the section has no private data
+ then do not create a Data Dictionary entry for it.
+
+Mon May 18 00:09:28 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf64-alpha.c (elf64_alpha_relax_section): Set again on changes.
+ (elf64_alpha_can_merge_gots, elf64_alpha_merge_gots,
+ elf64_alpha_size_got_sections): Rewrite, handling multiple got
+ subsections during relaxation more correctly.
+
+Thu May 14 14:22:58 1998 Nick Clifton <nickc@cygnus.com>
+
+ * bfd-in2.h: Add new prototype: bfd_coff_set_symbol_class ().
+ Add extra argument to bfd_arm_process_before_allocation ().
+ * bfd-in.h: Reflect changes made in bfd-in2.h.
+ * coffgen.c (bfd_coff_set_symbol_class): New function. Set the
+ coff class of a BFD symbol.
+ * coff-arm.c: Add support for interworking between Thumb code and
+ non-interworking aware ARM code.
+
+Sun May 10 22:33:59 1998 Jeffrey A Law (law@cygnus.com)
+
+ * po/Make-in (install-info): New target.
+
+Thu May 7 17:40:56 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * filemode.c: Remove; not used.
+
+ If sysdep.h includes a header file, don't include it again:
+ * aix386-core.c: Don't include <stdio.h>, <stddef.h>, or
+ <errno.h>.
+ * aoutx.h: Don't include <string.h>. Use "sysdep.h" rather than
+ <sysdep.h>.
+ * archive.c: Don't include <string.h> or <errno.h>.
+ * evax-alpha.c; Don't include <stdio.h>.
+ * evax-egsd.c: Likewise.
+ * evax-etir.c: Likewise.
+ * evax-misc.c: Likewise.
+ * evax-emh.c: Likewise. Also, don't include <sys/types.h>.
+ * hppabsd-core.c: Don't include <stdio.h>, <sys/types.h>, or
+ <errno.h>.
+ * hpux-core.c: Likewise.
+ * netbsd-core.c: Likewise.
+ * som.c: Likewise.
+ * libbfd.c: Don't include <sys/types.h>.
+ * nlmcode.h: Don't include <string.h>.
+ * osf-core.c: Don't include <string.h> or <stdio.h>.
+ * ptrace-core.c: Don't include <stdio.h>, <sys/types.h>,
+ <errno.h>, or <unistd.h>.
+ * trad-core.c: Don't include <stdio.h> or <sys/types.h>.
+
+Thu May 7 13:12:50 1998 Klaus Kaempf <kkaempf@progis.de>
+
+ * configure.com: If the version number can not be found in
+ configure.in, set it to "unknown" rather than "2.8.1".
+
+Wed May 6 09:46:05 1998 Gavin Koch <gavin@cygnus.com>
+
+ * elf32-mips.c (elf_mips_mach): New.
+ (_bfd_mips_elf_object_p): Use elf_mips_mach.
+ (_bfd_mips_elf_final_write_processing): Use the names
+ of machines, rather than the numbers. Set both the ARCH
+ and MACH in e_flags. Handle a few more specific machines.
+ (_bfd_mips_elf_merge_private_bfd_data): Merge both
+ EF_MIPS_ARCH and EF_MIPS_MACH.
+
+Tue May 5 21:01:53 1998 Richard Henderson <rth@cygnus.com>
+
+ * syms.c (bfd_is_local_label): Revert last change.
+ * srec.c (srec_write_symbols): Discard debugging symbols.
+
+Tue May 5 23:36:06 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * som.c: Include <ctype.h>.
+ * som.h: Don't include sysdep.h.
+
+Tue May 5 18:29:24 1998 Tom Tromey <tromey@cygnus.com>
+
+ * libbfd.h: Rebuilt.
+ * libbfd-in.h: Removed gettext includes and defines.
+ * sysdep.h: Moved gettext-related includes and defines here.
+
+Tue May 5 16:47:54 1998 Richard Henderson <rth@cygnus.com>
+
+ * srec.c (srec_write_symbols): Use bfd_is_local_label rather than
+ an ad-hoc test. Kill bogus #if 0 code.
+ * syms.c (bfd_is_local_label): Consider BSF_DEBUGGING symbols local.
+
+Mon May 4 16:10:33 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * sunos.c (sunos_check_dynamic_reloc): Don't use the PLT address
+ when generating a normal executable for a symbol defined in a
+ regular file. When copying a reloc into the output file, adjust
+ the addend for a PC relative reloc against a global symbol.
+
+Mon May 4 10:08:18 1998 Tom Tromey <tromey@cygnus.com>
+
+ * libbfd.h: Rebuilt.
+ * libbfd-in.h (_): Define as dgettext.
+
+Mon May 4 11:02:23 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * coff-arm.c (coff_arm_relocate_section): Cast to bfd_signed_vma,
+ not signed.
+ * peicode.h (pe_saved_coff_bfd_print_private_bfd_data): Use PARAMS
+ when declaring parameter types.
+ (pe_saved_coff_bfd_copy_private_bfd_data): Likewise.
+
+Wed Apr 29 15:35:03 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * config.bfd: If we include any ELF targets in targ_defvec and/or
+ targ_selvecs, then add the generic ELF targets to targ_selvecs.
+ * elf32-gen.c (dummy): New static const variable.
+ (elf_generic_info_to_howto): New static function.
+ (elf_generic_info_to_howto_rel): New static function.
+ (elf_info_to_howto): Define as elf_generic_info_to_howto.
+ (elf_info_to_howto_rel): Define as elf_generic_info_to_howto_rel.
+ * elf64-gen.c: Same changes as elf32-gen.c.
+ * elfcode.h (elf_object_p): For the generic target, ignore a
+ failure of bfd_default_set_arch_mach. Fix indentation a bit.
+
+Tue Apr 28 20:05:52 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in (WIN32LIBADD): Add -lintl on cygwin32.
+ * configure: Rebuild.
+
+Tue Apr 28 12:16:57 1998 Jason Molenda (crash@bugshack.cygnus.com)
+
+ * config.bfd: Update OSR5/Unixware patterns.
+
+Mon Apr 27 18:02:24 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf.c (assign_file_positions_for_segments): Allow for holes
+ between sections added by a link script.
+
+Mon Apr 27 11:49:55 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Change version number to 2.9.4
+ * configure: Rebuild.
+
+ Based on patch from H.J. Lu <hjl@gnu.org>:
+ * elf.c (bfd_elf_get_bfd_needed_list): New function.
+ * bfd-in.h (bfd_elf_get_bfd_needed_list): Declare.
+ * bfd-in2.h: Rebuild.
+
+Sat Apr 25 20:07:53 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf64-alpha.c (struct alpha_relax_info): Replace elfsym with other.
+ Change all users.
+
+Sat Apr 25 18:29:07 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf64-alpha.c (struct alpha_relax_info): Add tsec & elfsym members.
+ (elf64_alpha_relax_section): Fill them in.
+ (elf64_alpha_relax_opt_call): Implement more than a stub.
+ (elf64_alpha_add_symbol_hook): Don't set SEC_LOAD or default
+ alignment on .scommon.
+ (elf64_alpha_merge_gots): Merge use counts as well.
+
+Sat Apr 25 14:07:29 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf64-alpha.c (elf64_alpha_relax_section): Use the proper section
+ for calculating a local symbol's address.
+ (elf64_alpha_calc_got_offsets): Skip entries with 0 use count.
+ Set the .got's cooked size as well as the raw size.
+
+Fri Apr 24 09:16:00 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-v850.c (v850_elf_print_private_bfd_data): Add
+ internationalisation of printed information.
+
+ * coff-arm.c (coff_arm_print_private_bfd_data): Add
+ internationalisation of printed information.
+
+Fri Apr 24 12:09:18 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * syms.c (struct indexentry): Change directory_name, file_name,
+ and function_name fields to char *.
+ (struct stab_find_info): Change cached_file_name field to char *.
+
+Thu Apr 23 08:13:04 1998 Nick Clifton <nickc@cygnus.com>
+
+ * peicode.h (dir_names): Add missing N_() macros to dir_names array.
+
+Wed Apr 22 13:06:15 1998 Tom Tromey <tromey@cygnus.com>
+
+ * po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).
+
+Wed Apr 22 17:48:48 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (install-data-local): Make $(includedir).
+ * Makefile.in: Rebuild.
+
+Wed Apr 22 13:06:15 1998 Tom Tromey <tromey@cygnus.com>
+
+ * libbfd-in.h: Use `gettext' and not `dgettext' for now.
+
+Wed Apr 22 12:53:40 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (INCLUDES): Add -I$(srcdir)/../intl -I../intl.
+ * Makefile.in: Rebuild.
+
+ * bfd-in2.h: Rebuild for Nick's changes.
+
+Tue Apr 21 23:11:51 1998 Richard Henderson <rth@cygnus.com>
+
+ * archive.c (_bfd_generic_read_ar_hdr_mag): Fix lossage in last
+ change wrt length == max_namelen.
+
+Tue Apr 21 21:19:36 1998 Tom Tromey <tromey@scribbles.cygnus.com>
+
+ * Many files: Added gettext invocations around user-visible
+ strings.
+ * libbfd-in.h: Added gettext 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.
+ * Makefile.am (SUBDIRS): Added po.
+ (POTFILES): New macro.
+ (po/POTFILES.in): New target.
+ (SOURCE_HFILES): New macro.
+ (HFILES): Use it.
+ * po/Make-in, po/POTFILES.in, po/bfd.pot: New files.
+
+Tue Apr 21 13:38:18 1998 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * elfcore.h (bfd_prstatus): Copy core_prstatus from the first
+ NT_PRSTATUS note section encountered, it contains the status of
+ the currently executing thread when the core file was written.
+
+Tue Apr 21 10:00:12 1998 Nick Clifton <nickc@cygnus.com>
+
+ * libcoff.h: Add extra parameter to
+ bfd_coff_link_output_has_begun overrideable function.
+ * cofflink.c: Pass extra parameter to
+ bfd_coff_link_output_has_begun function.
+ * bfd-in.h: Add prototypes for exported ARM interworking
+ functions.
+ * peicode.h: ARM specific code reorganised to conform to BFD
+ coding conventions.
+ * coffcode.h: ARM specific code reorganised to conform to BFD
+ coding conventions.
+ * coff-arm.c: Code reorganised to conform to the BFD coding
+ conventions. Global variables have been moved into an ARM
+ specific hash table structure and a new function:
+ bfd_arm_get_bfd_for_interworking() has been created which is
+ called from the linker scripts.
+
+Tue Apr 21 00:11:51 1998 Richard Henderson <rth@cygnus.com>
+
+ * archive.c (_bfd_generic_read_ar_hdr_mag): Simplify end-of-name test.
+
+ * elf64-alpha.c (elf64_alpha_find_reloc_at_ofs): Renamed from
+ elf64_alpha_relax_find_reloc_ofs. Changed all callers.
+ (elf64_alpha_add_symbol_hook): Put small commons in .scommon not .sbss.
+ (elf64_alpha_size_got_sections): Don't merge .got sections twice.
+
+Sat Apr 18 01:21:04 1998 Stan Cox <scox@cygnus.com>
+
+ * config.bfd: Added sparc86x support.
+
+Fri Apr 17 22:29:04 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf32-mips.c (mips_elf_relocate_section): Do not complain about
+ an out of range pc-relative jump/call to an undefined weak symbol.
+
+Thu Apr 16 13:49:00 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf64-alpha.c (elf64_alpha_do_reloc_gpdisp): Do all gpdisp
+ comparisons signed.
+
+Thu Apr 16 11:43:33 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * archive.c (bfd_generic_archive_p): If a slurp subroutine returns
+ an error other than bfd_error_system_call, set the error to
+ bfd_error_wrong_format.
+
+ * targets.c (bfd_target_vector) [SELECT_VECS not defined]: Add
+ bfd_elf32_powerpcle_vec.
+
+ * elf.c (copy_private_bfd_data): If all the p_paddr fields in the
+ program segments are zero, don't set p_paddr_valid.
+
+Wed Apr 15 22:15:16 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf64-alpha.c: Initial implementation of relaxation --
+ (struct alpha_elf_link_hash_entry): Add use_count member.
+ (elf64_alpha_check_relocs): Initialize and increment it.
+ (elf64_alpha_can_merge_gots): Check it when considering merging.
+ (elf64_alpha_merge_gots): Drop entries with zero use.
+ (elf64_alpha_calc_got_offsets_for_symbol): Likewise.
+ (elf64_alpha_always_size_sections): Split out got sizing ...
+ (elf64_alpha_size_got_sections): ... here. New function.
+ (elf64_alpha_relax_find_reloc_ofs): New function.
+ (elf64_alpha_relax_with_lituse): Likewise.
+ (elf64_alpha_relax_without_lituse): Likewise.
+ (elf64_alpha_relax_opt_call): Likewise.
+ (elf64_alpha_relax_section): Likewise.
+ (elf64_alpha_add_symbol_hook): Likewise.
+ (elf64_alpha_howto_table): Implement GPRELHIGH/LOW & IMMED_GP_16.
+ (elf64_alpha_relocate_section): Likewise.
+ (bfd_elf64_bfd_relax_section): Define.
+ (elf_backend_add_symbol_hook): Likewise.
+
+Wed Apr 15 16:08:46 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf.c (prep_headers): Use new EM_SPARCV9 symbol.
+ * elf64-sparc.c (ELF_MACHINE_CODE): Likewise.
+ (ELF_MACHINE_ALT1): New. Set to EM_OLD_SPARC64.
+
+Wed Apr 15 11:34:33 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Add -lkernel32 to WIN32LIBADD on cygwin32.
+ * configure: Rebuild.
+
+Mon Apr 13 16:46:27 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (libbfd_la_LIBADD): Add @WIN32LIBADD@.
+ (libbfd_la_LDFLAGS): Add @WIN32LDFLAGS@.
+ * configure.in: Define and substitute WIN32LDFLAGS and
+ WIN32LIBADD.
+ * aclocal.m4: Rebuild with new libtool.
+ * configure, Makefile.in: Rebuild.
+
+Fri Apr 10 13:44:27 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * coffcode.h (coff_write_object_contents): Move a PE COMDAT symbol
+ before any other symbols in the same section.
+
+Wed Apr 8 14:50:23 1998 Michael Meissner <meissner@cygnus.com>
+
+ * config.bfd (powerpc*-*-*): Remove PowerPC NT support from ELF
+ systems.
+
+Tue Apr 7 16:25:31 1998 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * dwarf2.c (comp_unit): Move it earlier in the source. Add
+ addr_size.
+ (read_address): Replace 'bdf*' argument with 'comp_unit*' argument.
+ Use addr_size for address size, rather than sizeof(bfd_vma).
+ (read_attribute): Replace bdf* argument with 'comp_unit*' argument.
+ Fix call to read_address.
+ (decode_line_info): Replace bdf* argument with 'comp_unit*' argument.
+ Scrap other unneeded arguments. Fix call to read_address.
+ (scan_unit_for_functions): Fix call to read_attribute.
+ (parse_comp_unit): We now handle more values for addr_size.
+ Set addr_size in unit. Fix call to read_attribute and
+ decode_line_info.
+
+Tue Apr 7 15:44:47 1998 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * dwarf2.c (parse_comp_unit): Drop use of unit->name when it is null.
+
+Tue Apr 7 12:35:18 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * archures.c (bfd_default_scan): Add m68k cases back to default
+ switch, reverting patch of March 25, since IEEE support depends
+ upon them.
+
+Mon Apr 6 14:06:40 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (diststuff): New target.
+ * Makefile.in: Rebuild.
+
+Sun Apr 5 16:21:44 1998 Jeffrey A Law (law@cygnus.com)
+
+ * som.c (som_bfd_ar_write_symbol_stuff): Fix computation of
+ som_offset when we have an extended name table.
+
+Sun Apr 5 16:04:39 1998 H.J. Lu <hjl@gnu.org>
+
+ * Makefile.am (stamp-lib): Check that .libs/libbfd.a exists before
+ trying to copy it.
+ * Makefile.in: Rebuild.
+
+Fri Apr 3 11:09:42 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * elf32-m68k.c (elf_m68k_size_dynamic_sections): Generate section
+ symbols when creating a shared library.
+ (elf_m68k_adjust_dynindx): New function, used by above code.
+ (elf_m68k_finish_dynamic_sections): Initialize the section
+ symbols.
+ (elf_m68k_relocate_section): Change abort to BFD_ASSERT.
+
+Wed Apr 1 16:04:02 1998 Nick Clifton <nickc@cygnus.com>
+
+ * coff-arm.c (in_reloc_p): Use ARM_RVA32 in place of constant
+ value 11.
+
+Wed Apr 1 13:36:58 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * elf32-m68k.c (elf_m68k_relocate_section, case R_68K_PLT*O): Fix
+ assertion.
+
+Tue Mar 31 00:12:12 1998 Jeffrey A Law (law@cygnus.com)
+
+ * elf-m10300.c (mn10300_elf_relax_section): Correctly handle
+ absolute symbols.
+
+Mon Mar 30 12:46:15 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Set version to 2.9.1.
+ * configure: Rebuild.
+
+ * Branched binutils 2.9.
+
+Mon Mar 30 12:20:50 1998 Brent Baccala <baccala@freesoft.org>
+
+ * syms.c (ENABLE_CACHING): Define.
+ (struct indexentry): Define.
+ (struct stab_cache): Remove.
+ (cmpindexentry): New static function.
+ (struct stab_find_info): Add new fields: indextable,
+ indextablesize, cached_indexentry, cached_offset, cached_stab, and
+ cached_file_name. Remove fields: file_cache, function_cache, and
+ line_cache.
+ (_bfd_stab_section_find_nearest_line): Rewrite to build a sorted
+ index table and search it.
+
+Mon Mar 30 10:39:34 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf.c (_bfd_elf_copy_private_section_data): Call
+ copy_private_bfd_data once we've seen the last SEC_ALLOC section.
+
+ * cpu-mips.c: Remove trailing comma at end of enumeration list.
+
+Sat Mar 28 16:33:02 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * coff-arm.c: Define all globally visible variables and functions
+ only when COFF_WITH_PE is not defined.
+ * configure.in (armpe_little_vec, armpe_big_vec): Add
+ coff-arm.lo.
+ * configure: Rebuild.
+
+Fri Mar 27 16:06:02 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ Fix some gcc -Wall warnings:
+ * aout-arm.c (MY(fix_pcrel_26)): Add casts to avoid warnings.
+ * archive.c (_bfd_generic_read_ar_hdr_mag): Likewise.
+ * archures.c (bfd_default_scan): Likewise.
+ * bfd.c (bfd_scan_vma): Likewise.
+ * binary.c (mangle_name): Likewise
+ * coff-arm.c (aoutarm_fix_pcrel_26): Likewise.
+ * coff-sh.c (sh_relocate_section): Likewise.
+ * coff-stgo32.c (create_go32_stub): Likewise.
+ * coffcode.h (coff_slurp_line_table): Likewise.
+ * ecoff.c (_bfd_ecoff_write_armap): Likewise.
+ * elf.c (_bfd_elf_make_section_from_shdr): Likewise.
+ (assign_file_positions_for_segments): Likewise.
+ * elf32-mips.c (mips_elf_relocate_section): Likewise.
+ * elf32-ppc.c (ppc_elf_add_symbol_hook): Likewise.
+ * oasys.c (oasys_write_sections): Likewise.
+ * ppcboot.c (ppcboot_object_p): Likewise.
+ (mangle_name): Likewise.
+ * riscix.c (riscix_fix_pcrel_26): Likewise.
+ * srec.c (srec_scan): Likewise.
+ * stabs.c (_bfd_write_section_stabs): Likewise.
+ * sunos.c (sunos_add_dynamic_symbols): Likewise.
+ * aout-ns32k.c (_bfd_ns32k_relocate_contents): Add default case to
+ switch. Declare parameters for function pointers.
+ * archures.c (bfd_default_scan): Add braces to avoid ambiguous if
+ warning.
+ * elf.c (elf_sort_sections): Likewise.
+ * coff-arm.c (coff_thumb_pcrel_common): Initialize relocation.
+ Add default cases to switches.
+ (coff_arm_relocate_section): Remove unused local variables.
+ Always set rstat.
+ (coff_arm_bfd_set_private_flags): Change flag variable to type
+ flagword.
+ * coff-mips.c (mips_relocate_section): Initialize use_lo.
+ * coff-ppc.c (ppc_record_toc_entry): Change i to unsigned int.
+ (dump_toc): Change cat to const, and initialize it.
+ * coff-sh.c (sh_relax_delete_bytes): Initialize start and voff.
+ * elf32-sh.c (sh_elf_relax_delete_bytes): Likewise.
+ (sh_elf_relocate_section): Initialize r_symndx.
+ * coffcode.h (coff_compute_section_file_positions): Only declare
+ old_sofar if ALIGN_SECTIONS_IN_FILE.
+ (coff_write_object_contents): Initialize csym.
+ * coffgen.c (coff_pointerize_aux): Make type and class unsigned.
+ * cpu-ns32k.c (_bfd_ns32k_get_displacement): Add default case to
+ switch.
+ * dwarf2.c: Include libiberty.h.
+ (read_2_signed_bytes, read_4_signed_bytes): Comment out.
+ (decode_line_info): Remove unused local variables.
+ * elf32-m32r.c (m32r_elf_sda16_reloc): Likewise.
+ (m32r_elf_relocate_section): Likewise.
+ * elf32-v850.c (v850_elf_store_addend_in_insn): Likewise.
+ (v850_elf_reloc): Likewise.
+ * elf-bfd.h (elf_linker_section_t): Make alignment unsigned.
+ (struct elf_obj_tdata): Make cverdefs and cverrefs unsigned.
+ * elf.c (assign_file_positions_for_segments): Always set adjust.
+ * elf32-d30v.c (bfd_elf_d30v_reloc): Initialize tmp_addr. Fully
+ parenthesize expression.
+ * elf32-m32r.c (m32r_elf_relocate_section): Always initialize h.
+ (m32r_elf_object_p): Return a value.
+ (m32r_elf_print_private_bfd_data): Change fprintf format string.
+ * elf32-mips.c (mips_elf_final_link): Initialize last.
+ (mips_elf_finish_dynamic_sections): Initialize last and dindx.
+ * elf32-v850.c (v850_elf_object_p): Return a value.
+ (v850_elf_print_private_bfd_data): Change fprintf format string.
+ * elfcode.h (elf_slurp_symbol_table): Change symcount and i to
+ unsigned long.
+ * elflink.h (elf_link_add_object_symbols): Change vernum to
+ unsigned int, and initialize it. Change fprintf format string.
+ (NAME(bfd_elf,size_dynamic_sections)): Cast -1 to bfd_size_type
+ when setting or comparing to soname_indx.
+ (elf_create_pointer_linker_section): Change num_symbols to
+ unsigned int.
+ * libcoff-in.h (coff_data_type): Change flags to flagword.
+ * peicode.h (pe_print_idata): Initialize idx. Change j to
+ bfd_size_type. Initialize hint_member. Remove useless test to
+ time_stamp.
+ (pe_print_edata): Change num_functions and num_names in struct
+ EDT_type to unsigned long. Remove cast. Change fprintf format
+ string.
+ * ppcboot.c (ppcboot_object_p): Change i to size_t.
+ * reloc.c (bfd_get_reloc_size): Change return type to unsigned
+ int.
+ * reloc16.c (bfd_coff_reloc16_relax_section): Change shrinks to
+ int *. Update uses. Change j to long.
+ * bfd-in2.h, libcoff.h: Rebuild.
+
+Fri Mar 27 10:10:46 1998 Catherine Moore <clm@cygnus.com>
+
+ * elf32-v850.c Remove definition of USE_REL.
+ (v850_elf_info_to_howto_rela): New function.
+ (v850_elf_perform_relocation): Renamed from
+ v850_elf_store_addend_in_insn. Removed replace argument.
+ (v850_elf_reloc): store the relocation in the addend field instead
+ of the insn.
+ (v850_elf_final_link_relocate): Now calls
+ v850_elf_perform_relocation.
+ (v850_elf_relocate_section): Remove code to generate REL
+ relocations.
+
+Thu Mar 26 13:32:17 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * coffcode.h (coff_new_section_hook): Set the type and storage
+ class in the native symbol information allocated for a new section
+ symbol.
+
+Thu Mar 26 10:13:41 1998 Nick Clifton <nickc@cygnus.com>
+
+ * peicode.h: Chain together calls to
+ coff_bfd_copy_private_bfd_data and
+ coff_bfd_print_private_bfd_data.
+
+ * coff-arm.c: Add prototypes for
+ coff_arm_bfd_print_private_bfd_data and
+ coff_arm_bfd_copy_private_bfd_data.
+
+Wed Mar 25 15:45:55 1998 Nick Clifton <nickc@cygnus.com>
+
+ * coffcode.h (coff_mkobject_hook): Set private falgs even for a PE
+ build.
+
+ * peicode.h: Call arm-coff private data functions after handling
+ pe private data.
+
+ * coff-arm.c: Turn statics into globals so that they can be shared
+ both pe and pei backends.
+
+Wed Mar 25 15:19:38 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * aoutf1.h (sunos_set_arch_mach): Use bfd_mach_m68* rather than
+ plain numbers.
+ (sunos_write_object_contents): Likewise.
+ * aoutx.h (NAME(aout,machine_type)): Likewise.
+ * coffcode.h (coff_set_arch_mach_hook): Likewise.
+
+Wed Mar 25 13:59:24 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * archures.c (bfd_mach_m68*): Add definitions for various m68k
+ variants.
+ (bfd_default_scan): Remove m68k special cases.
+ * bfd-in2.h: Rebuild.
+ * mipsbsd.c (MY(write_object_contents)): Use bfd_mach_m68* rather
+ than plain numbers.
+ * sparclynx.c (NAME(lynx,set_arch_mach)): Likewise.
+ * cpu-m68k.c (arch_info_struct): Likewise. Add entry for
+ m68k:68000.
+ (bfd_m68k_arch): Set mach field to zero to signal no explicit
+ selection, change printable_name to just "m68k" and make that the
+ default instead of m68k:68020.
+
+ * aout-tic30.c (NAME): Define this to avoid multiple definitions
+ from aoutx.h.
+ (MY_get_section_contents): Define as aout_32_get_section_contents
+ rather than NAME(aout,get_section_contents).
+
+ * elf-m10300.c (elf32_mn10300_link_hash_table_create): Fix cast.
+
+ * evax-alpha.c (evax_set_arch_mach): Only accept bfd_arch_alpha
+ and call bfd_default_set_arch_mach to do the real work.
+
+Wed Mar 25 10:41:35 1998 Richard Henderson <rth@cygnus.com>
+
+ * bout.c (BALX): Include return register g14 as part of the insn.
+ (BALX_MASK): New.
+ (calljx_callback): Use it.
+
+Wed Mar 25 11:19:28 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * libbfd-in.h (BFD_ALIGN): Cast this parameter to bfd_vma.
+ * libbfd.h: Rebuild.
+
+ * elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Change
+ byte_count to unsigned int.
+ (mn10300_elf_relax_section): Initialize internal_relocs. Remove
+ unused local variables.
+
+ * evax-alpha.c (evax_close_and_cleanup): Remove unused local
+ variables er and er1.
+
+ * cpu-v850.c: Include <ctype.h>.
+ (scan): Case isdigit argument to unsigned char.
+
+ From Yan Meroth <YAN.MEROTH@st.com>:
+ * ihex.c (ihex_scan): Add extbase variable so that getting an
+ extended linear address record does not ignore any previous
+ extended address.
+ (ihex_write_object_contents): When writing out an extended linear
+ address record, zero out any previous extended address.
+
+Tue Mar 24 16:09:43 1998 Manfred Hollstein <manfred@s-direktnet.de>
+
+ * ieee.c (do_one): Check section before dereferencing it.
+ (ieee_canonicalize_reloc): Likewise with src->relent.sym_ptr_ptr.
+ (ieee_generic_stat_arch_elt): Likewise with abfd->my_archive.
+
+Mon Mar 23 18:51:47 1998 Joel Sherrill <joel@OARcorp.com>
+
+ * config.bfd: (sh*-*-rtems*): Switched from ELF to COFF.
+
+Mon Mar 23 14:23:36 1998 Nick Clifton <nickc@cygnus.com>
+
+ * coff-arm.c: Add interworking functions to pe backends.
+
+Fri Mar 20 18:47:20 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Use AM_DISABLE_SHARED.
+ * aclocal.m4, configure: Rebuild with libtool 1.2.
+
+Fri Mar 20 11:25:41 1998 Nick Clifton <nickc@cygnus.com>
+
+ * coff-arm.c (coff_arm_relocate_section): Better error messages
+ when interowrking conflucts occur. Courtesy of Jonathan Walton
+ and Tony Thompson.
+ (aoutarm_std_reloc_howto): Fixed bitsize fields of rightshifted
+ relocations. Patch courtesy of Jonathan Walton and Tony
+ Thompson.
+
+Fri Mar 20 02:26:43 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Revert
+ part of Feb 22 change controling when to override the existing
+ symbol with the .plt entry.
+
+Wed Mar 18 09:26:25 1998 Nick Clifton <nickc@cygnus.com>
+
+ * config.bfd (targ_cpu): Add thumb-pe target.
+
+ * coffcode.h (OTHER_GLOBAL_CLASS): Support thumb external
+ functions in PE build.
+
+Sun Mar 8 23:37:26 1998 Stan Cox <scox@equinox.cygnus.com>
+
+ * config.bfd (sparclite-*-elf*): Added.
+
+Mon Feb 23 19:31:19 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Add elf.lo to elf shell variable.
+ * Makefile.am (BFD_LIBS): Remove elf.lo.
+ (BFD_LIBS_CFILES): Remove elf.c.
+ (BFD32_BACKENDS): Add elf.lo.
+ (BFD32_BACKENDS_CFILES): Add elf.c.
+ * configure, Makefile.in: Rebuild.
+
+1998-02-23 15:53 Richard Henderson <rth@cygnus.com>
+
+ * elf32-i386.c (elf_i386_relocate_section): A pc-relative
+ relocation against a non-local symbol should not have a dynamic
+ relocation.
+
+Mon Feb 23 16:17:08 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * peicode.h (coff_swap_filehdr_in): Don't set BFD flag HAS_SYMS in
+ COFF filehdr flags.
+ (pe_print_private_bfd_data): Print PE flags. From Mikey
+ <jeffdb@netzone.com>.
+
+Sun Feb 22 20:39:00 1998 Richard Henderson <rth@cygnus.com>
+
+ * elf32-sparc.c (elf32_sparc_adjust_dynamic_symbol): Don't create
+ a plt entry when we can determine that we authoritatively define
+ the symbol.
+
+Sun Feb 22 20:33:05 1998 Richard Henderson <rth@cygnus.com>
+
+ * configure.in (COREFILE selection): Remove sparc-*-linux*. They
+ don't actually use trad-core, but a SunOS-style core file handled
+ by gdb directly.
+ * hosts/sparclinux.h: Remove.
+
+Wed Feb 18 15:31:06 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * peicode.h (pe_print_idata): If there is no .idata section, look
+ for the import tables in some other section. Make the initial
+ label line up better with the data. Print the import address
+ table even if there is no import name table. If the import
+ address table holds actual addresses, print them.
+
+Tue Feb 17 12:58:34 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * libbfd.c (bfd_seek): If fseek fails, save errno around call to
+ bfd_tell. If errno is EINVAL, set bfd_error_file_truncated, not
+ bfd_error_system_call.
+
+Fri Feb 13 13:11:33 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Define.
+ * configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.
+
+ From H.J. Lu <hjl@gnu.org>:
+ * Makefile.am (libbfd_la_LDFLAGS): Define.
+ * Makefile.in: Rebuild.
+
+Thu Feb 12 17:31:11 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ NetBSD patches from Gordon W. Ross <gwr@mc.com>:
+ * netbsd.h (MACHTYPE_OK): Define.
+ (MY(write_object_contents)): Use DEFAULT_ARCH and DEFAULT_MID when
+ calling N_SET_MACHTYPE, rather than having a switch.
+ * libaout.h (enum machine_type): Add M_PMAX_NETBSD, M_VAX_NETBSD,
+ and M_ALPHA_NETBSD.
+ * i386netbsd.c (MACHTYPE_OK): Don't define.
+ (DEFAULT_MID): Define.
+ * m68k4knetbsd.c (SEGMENT_SIZE): Don't define.
+ (MACHTYPE_OK): Don't define.
+ (DEFAULT_MID): Define.
+ * m68knetbsd.c: (MACHTYPE_OK): Don't define.
+ (DEFAULT_MID): Define.
+ * ns32knetbsd.c (MACHTYPE_OK): Don't define.
+ (DEFAULT_MID): Define.
+ * sparcnetbsd.c (MACHTYPE_OK): Don't define.
+ (DEFAULT_MID): Define.
+
+ NetBSD patches from Gordon W. Ross <gwr@mc.com>:
+ * vaxnetbsd.c: New file.
+ * netbsd-core.c: Clean up. Remove unused macros. Use netbsd
+ rather than netbsd_core.
+ * targets.c (vaxnetbsd_vec): Declare.
+ (bfd_target_vector): Add vaxnetbsd_vec. If NETBSD_CORE is
+ defined, add netbsd_core_vec.
+ * configure.in: Set COREFILE for alpha*-*-netbsd* and
+ powerpc-*-netbsd* to netbsd-core.lo. If COREFILE is
+ netbsd-core.lo, set COREFLAG to -DNETBSD_CORE.
+ * config.bfd (alpha*-*-netbsd*): New target.
+ * Makefile.am: Rebuild dependencies.
+ (BFD32_BACKENDS): Add vaxnetbsd.lo.
+ (BFD32_BACKENDS_CFILES): Add vaxnetbsd.c.
+ * configure, Makefile.in: Rebuild.
+
+ * configure.host: Remove the old shared library build stuff. We
+ now use libtool instead.
+
+Wed Feb 11 17:13:09 1998 Richard Henderson <rth@cygnus.com>
+
+ * tekhex.c (tekhex_write_object_contents): Call tekhex_init.
+
+Tue Feb 10 19:23:28 1998 H.J. Lu <hjl@gnu.org>
+
+ * configure.in: Take stab-syms.lo out of sparclinux_vec list.
+ * configure: Rebuild.
+
+Tue Feb 10 15:16:38 1998 Nick Clifton <nickc@cygnus.com>
+ * elf32-v850.c (remember_hi16s_reloc): New function.
+ (find_remembered_hi16s_reloc): New function.
+ (v850_elf_store_addend_in_insn): Use the above new functions to
+ match up HI6S relocs with LO16 relocs.
+
+Tue Feb 10 15:01:39 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Change -linux* to -linux-gnu*.
+ * config.bfd, configure.host: Likewise.
+ * configure: Rebuild.
+
+Mon Feb 9 19:40:59 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-v850.c (v850_elf_store_addend_in_insn): Fix another
+ LO16/HI16S bug and improve comments about what is going on.
+
+Sat Feb 7 15:27:03 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure, aclocal.m4: Rebuild with new libtool.
+
+Fri Feb 6 14:48:20 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-v850.c (v850_elf_merge_private_bfd_data): Do not complain
+ when merging v850 code into v850e/v850ea code. Do not initialise
+ output flags if the input is the default architecture.
+
+Fri Feb 6 11:50:22 1998 Jeffrey A Law (law@cygnus.com)
+
+ * elf32-mips.c (bfd_elf32_bfd_reloc_type_lookup): For BFD_RELOC_CTOR
+ get the size from bfd_arch_bits_per_address instead of directly
+ from the isa.
+
+Thu Feb 5 14:21:34 1998 Michael Meissner <meissner@cygnus.com>
+
+ * libbfd-in.h (BFD_ALIGN): If rounding up would cause the address
+ to wrap, just return all 1's bits instead.
+ * libbfd.h: Regenerate.
+
+Thu Feb 5 11:51:05 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * coff-i386.c (coff_pe_i386_relocate_section): New static function
+ if COFF_WITH_PE.
+ (coff_relocate_section): If COFF_WITH_PE, define as
+ coff_pe_i386_relocate_section.
+ * coffcode.h (coff_write_object_contents): If COFF_IMAGE_WITH_PE,
+ skip empty sections, to match coff_write_object_contents.
+
+ * elf64-mips.c (mips_elf64_swap_reloca_out): Swap out r_addend,
+ rather than swapping out r_offset twice. From Luke Deller
+ <luked@cse.unsw.edu.au>.
+
+Wed Feb 4 19:11:28 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Set libtool_enable_shared rather than
+ libtool_shared. Remove diversion hack.
+ * configure, Makefile.in, doc/Makefile.in, aclocal.m4: Rebuild
+ with new libtool.
+
+Wed Feb 4 16:10:21 1998 Brent Baccala <baccala@freesoft.org>
+
+ * syms.c (struct stab_cache): Define.
+ (struct stab_find_info): Remove cached_offset, cached_stab,
+ cached_str, and cached_stroff fields. Add file_cache,
+ function_cache, and line_cache fields.
+ (_bfd_stab_section_find_nearest_line): Use extensive caching to
+ speed up searches.
+
+Wed Feb 4 13:34:22 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * peicode.h (pe_print_idata): Check for import of ordinal rather
+ than name.
+ (pe_print_edata): If there is no .edata section, look for the
+ export data in some other section.
+
+Mon Feb 2 20:05:42 1998 Jason Molenda (crash@bugshack.cygnus.com)
+
+ * configure.in: Change version to 2.8.4.
+ * configure: Regenerated.
+
+Mon Feb 2 17:39:39 1998 Steve Haworth <steve@pm.cse.rmit.EDU.AU>
+
+ Add tms320c30 support:
+ * cpu-tic30.c: New file.
+ * aout-tic30.c: New file.
+ * coff-tic30.c: New file.
+ * archures.c (bfd_arch_tic30): Define.
+ (bfd_tic30_arch): Declare.
+ (bfd_archures_list): Add bfd_tic30_arch.
+ * targets.c (bfd_target_vector): Add tic30_aout_vec and
+ tic30_coff_vec.
+ * reloc.c (BFD_RELOC_TIC30_LDP): Define.
+ * coffcode.h (coff_set_arch_mach_hook): Add tic30 case.
+ (coff_set_flags): Likewise.
+ * config.bfd (tic30-*-*aout*, tic30-*-*coff*): New targets.
+ * configure.in (tic30_aout_vec, tic30_coff_vec): New vectors.
+ * Makefile.am: Rebuild dependencies.
+ (ALL_MACHINES): Add cpu-tic30.lo.
+ (ALL_MACHINES_CFILES): Add cpu-tic30.c.
+ (BFD32_BACKENDS): Add aout-tic30.lo and coff-tic30.lo.
+ (BFD32_BACKENDS_CFILES): Add aout-tic30.c and coff-tic30.c.
+ * configure, Makefile.in, bfd-in2.h, libbfd.h: Rebuild.
+
+Mon Feb 2 12:25:12 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-v850.c (v850_elf_store_addend_in_insn): Allow HI16_S reloc
+ to lag behind LO16 reloc by a couple of instructions.
+
+Mon Feb 2 14:09:46 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am ($(srcdir)/bfd-in2.h): Add dummy command to force
+ make to reexamine the file timestamp.
+ ($(srcdir)/libbfd.h, $(srcddir)/libcoff.h): Likewise.
+
+ * elf64-alpha.c (ELF_MAXPAGESIZE): Change to 0x10000 from
+ 0x100000.
+
+Fri Jan 30 19:07:07 1998 Geoff Keating <geoffk@ozemail.com.au>
+
+ * elf32-ppc.c (ppc_elf_create_dynamic_sections): New procedure
+ to create .dynsbss and .rela.sbss sections.
+ (ppc_elf_adjust_dynamic_symbol): Put space for small data to be
+ copied from dynamic objects into .sbss.
+ (ppc_elf_size_dynamic_sections): Strip .rela.sbss if we don't
+ use it. Correct typo of .rela.sdata2.
+ (ppc_elf_finish_dynamic_symbol): Generate reloc to where we
+ put the data, which may now be in .sbss.
+ (ppc_elf_relocate_section): A SDAREL16 reloc can be in dynsbss.
+ (elf_backend_create_dynamic_sections): Define as
+ ppc_elf_create_dynamic_sections.
+
+ * elf32-ppc.c (ppc_elf_check_relocs): Don't emit R_PPC_REL* relocs
+ against _GLOBAL_OFFSET_TABLE_.
+ (ppc_elf_relocate_section): Don't emit R_PPC_REL32 relocs in
+ shared libraries which refer to local symbols. Make sure that the
+ test for allocating space for a reloc in a shared object is the
+ same as the test for emitting a reloc.
+
+Thu Jan 29 15:55:35 1998 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>
+
+ * config.bfd (i[3456]-*-mingw32*): New target.
+ * acinclude.m4 (BFD_BINARY_OPEN): Check for mingw32.
+ * aclocal.m4, configure: Rebuild.
+
+Wed Jan 28 13:41:26 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * elf.c (_bfd_elf_close_and_cleanup): Only check the strtab if we
+ have a bfd_object.
+
+Tue Jan 27 21:43:55 1998 Richard Henderson <rth@cygnus.com>
+
+ Sparc v9 ABI compliant PLT:
+ * elf64-sparc.c (PLT_HEADER_SIZE): V9 ABI uses 4 entries.
+ (plt_templates, sparc64_elf_build_plt_entry): Delete.
+ (LARGE_PLT_THRESHOLD): New define.
+ (GOT_RESERVED_ENTRIES): V9 ABI only uses 1.
+ (sparc64_elf_build_plt): New function.
+ (sparc64_elf_plt_entry_offset): Likewise.
+ (sparc64_elf_plt_ptr_offset): Likewise.
+ (sparc64_elf_adjust_dynamic_symbol): Change h->plt_offset to
+ contain the index for convenience. Skip the initial entries
+ in .rela.plt.
+ (sparc64_elf_size_dynamic_sections): Zero the allocated contents
+ memory for the benefit of .rela.plt.
+ (sparc64_elf_relocate_section): Call sparc64_elf_plt_entry_offset.
+ (sparc64_elf_finish_dynamic_symbol): Kill template stuff. Use
+ sparc64_elf_plt_entry_offset & sparc64_elf_plt_ptr_offset for reloc.
+ (sparc64_elf_finish_dynamic_sections): DT_PLTGOT points to .plt.
+ Call sparc64_elf_build_plt.
+ (elf_backend_want_got_plt): No.
+ (elf_backend_plt_readonly): No.
+ (elf_backend_plt_alignment): 8.
+
+ * elf.c (_bfd_elf_close_and_cleanup): New function; free the shstrtab.
+ * elf-bfd.h (_bfd_elf_close_and_cleanup): Declare it.
+ * elfxx-target.h (bfd_elfNN_close_and_cleanup): Arrange for it
+ to be called.
+
+Tue Jan 27 21:45:15 1998 Jeffrey A Law (law@cygnus.com)
+
+ * archures.c (bfd_mach_mips*): Add definitions for various MIPS
+ processors.
+ * cpu-mips.c (arch_info_struct): Add mips variants.
+ * bfd-in2.h: Rebuilt.
+
+Tue Jan 27 15:06:04 1998 Nick Clifton <nickc@cygnus.com>
+
+ * coff-arm.c (coff_arm_relocate_section): Preserve the contents of
+ t2a3_b_insn.
+
+Tue Jan 27 12:47:27 1998 Robert Lipe <robertl@dgii.com>
+
+ * config.bfd (i[3456]86-sco3.2v5*): ELF now the default.
+ (i[3456]86sco3.2v5*coff): New target.
+
+Mon Jan 26 15:41:30 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * bfd-in2.h: Rebuild with changes to chew--tab expansion.
+
+Thu Jan 22 21:26:48 1998 Richard Henderson <rth@cygnus.com>
+
+ * bfd.c (bfd_get_error_handler): Add orthogonal function.
+ * bfd-in2.h: Regenerate.
+
+Thu Jan 22 21:13:39 1998 Richard Henderson <rth@cygnus.com>
+
+ * tekhex.c (tekhex_write_object_contents): Check for no symbols.
+
+Wed Jan 21 21:19:03 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * coff-i386.c (coff_i386_rtype_to_howto): If COFF_WITH_PE, don't
+ adjust addend for an output common symbol (from Jimmy Blair
+ <jimmyb@wrs.com>). If COFF_WITH_PE, adjust addend for PC relative
+ defined symbol to counteract adjustment made in generic relocation
+ code.
+
+ * dwarf2.c: Include sysdep.h, not stdio.h and stdlib.h.
+
+Wed Jan 21 21:16:06 1998 Manfred Hollstein <manfred@s-direktnet.de>
+
+ * coff-m88k.c (GET_SCNDHR_NRELOC): Fix typo in macro name.
+ (GET_SCNDHR_NLNNO): Likewise.
+
+Mon Jan 19 12:49:52 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * cpu-sh.c (arch_info_struct): Correct next field of sh3e.
+
+Wed Jan 14 17:23:27 1998 Nick Clifton <nickc@cygnus.com>
+
+ * elf32-m32r.c: Add macros to handle NOP insertion.
+
+Wed Jan 14 16:15:22 1998 Richard Henderson <rth@cygnus.com>
+
+ * xcofflink.c (xcoff_mark_symbol): Don't mark the absolute section.
+ (xcoff_mark): Likewise.
+ (xcoff_build_ldsyms): Mark absolute symbols.
+
+Wed Jan 14 16:03:11 1998 Richard Henderson <rth@cygnus.com>
+
+ * bout.c (b_out_write_object_contents): Sort symbols before output
+ to keep {CALL,BAL}NAME symbols adjacent.
+ (b_out_symbol_cmp): New function.
+
+For older changes see ChangeLog-9697
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/contrib/binutils/bfd/MAINTAINERS b/contrib/binutils/bfd/MAINTAINERS
new file mode 100644
index 0000000..d59a3bd
--- /dev/null
+++ b/contrib/binutils/bfd/MAINTAINERS
@@ -0,0 +1 @@
+See ../binutils/MAINTAINERS
diff --git a/contrib/binutils/bfd/Makefile.am b/contrib/binutils/bfd/Makefile.am
index 2d38959..b6741bc 100644
--- a/contrib/binutils/bfd/Makefile.am
+++ b/contrib/binutils/bfd/Makefile.am
@@ -12,6 +12,9 @@ docdir = doc
lib_LTLIBRARIES = libbfd.la
+WARN_CFLAGS = @WARN_CFLAGS@
+AM_CFLAGS = $(WARN_CFLAGS)
+
# bfd.h goes here, for now
BFD_H = bfd.h
@@ -26,13 +29,15 @@ BFD_LIBS = \
archive.lo archures.lo bfd.lo cache.lo coffgen.lo corefile.lo \
format.lo init.lo libbfd.lo opncls.lo reloc.lo \
section.lo syms.lo targets.lo hash.lo linker.lo \
- srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo
+ srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo \
+ dwarf2.lo
BFD_LIBS_CFILES = \
archive.c archures.c bfd.c cache.c coffgen.c corefile.c \
format.c init.c libbfd.c opncls.c reloc.c \
section.c syms.c targets.c hash.c linker.c \
- srec.c binary.c tekhex.c ihex.c stabs.c stab-syms.c
+ srec.c binary.c tekhex.c ihex.c stabs.c stab-syms.c \
+ dwarf2.c
# This list is alphabetized to make it easier to keep in sync
# with the decls and initializer in archures.c.
@@ -42,17 +47,21 @@ ALL_MACHINES = \
cpu-arc.lo \
cpu-arm.lo \
cpu-avr.lo \
+ cpu-cris.lo \
cpu-d10v.lo \
cpu-d30v.lo \
cpu-fr30.lo \
cpu-h8300.lo \
cpu-h8500.lo \
cpu-hppa.lo \
+ cpu-ia64.lo \
cpu-i370.lo \
cpu-i386.lo \
cpu-i860.lo \
cpu-i960.lo \
cpu-m32r.lo \
+ cpu-m68hc11.lo \
+ cpu-m68hc12.lo \
cpu-m68k.lo \
cpu-m88k.lo \
cpu-m10200.lo \
@@ -66,6 +75,7 @@ ALL_MACHINES = \
cpu-sh.lo \
cpu-sparc.lo \
cpu-tic30.lo \
+ cpu-tic54x.lo \
cpu-tic80.lo \
cpu-v850.lo \
cpu-vax.lo \
@@ -79,17 +89,21 @@ ALL_MACHINES_CFILES = \
cpu-arc.c \
cpu-arm.c \
cpu-avr.c \
+ cpu-cris.c \
cpu-d10v.c \
cpu-d30v.c \
cpu-fr30.c \
cpu-h8300.c \
cpu-h8500.c \
cpu-hppa.c \
+ cpu-ia64.c \
cpu-i370.c \
cpu-i386.c \
cpu-i860.c \
cpu-i960.c \
cpu-m32r.c \
+ cpu-m68hc11.c \
+ cpu-m68hc12.c \
cpu-m68k.c \
cpu-m88k.c \
cpu-m10200.c \
@@ -103,6 +117,7 @@ ALL_MACHINES_CFILES = \
cpu-sh.c \
cpu-sparc.c \
cpu-tic30.c \
+ cpu-tic54x.c \
cpu-tic80.c \
cpu-v850.c \
cpu-vax.c \
@@ -115,6 +130,7 @@ ALL_MACHINES_CFILES = \
BFD32_BACKENDS = \
aout-adobe.lo \
aout-arm.lo \
+ aout-cris.lo \
aout-ns32k.lo \
aout-sparcle.lo \
aout-tic30.lo \
@@ -145,6 +161,7 @@ BFD32_BACKENDS = \
coff-stgo32.lo \
coff-svm68k.lo \
coff-tic30.lo \
+ coff-tic54x.lo \
coff-tic80.lo \
coff-u68k.lo \
coff-we32k.lo \
@@ -152,23 +169,28 @@ BFD32_BACKENDS = \
coff-z8k.lo \
cofflink.lo \
dwarf1.lo \
- dwarf2.lo \
ecoff.lo \
ecofflink.lo \
+ efi-app-ia32.lo \
elf.lo \
elf32-arc.lo \
elfarm-oabi.lo \
elfarm-nabi.lo \
elf32-avr.lo \
+ elf32-cris.lo \
elf32-d10v.lo \
elf32-d30v.lo \
elf32-fr30.lo \
elf32-gen.lo \
+ elf32-hppa.lo \
elf32-i370.lo \
elf32-i386.lo \
elf32-i860.lo \
elf32-i960.lo \
+ elf32-ia64.lo \
elf32-m32r.lo \
+ elf32-m68hc11.lo \
+ elf32-m68hc12.lo \
elf32-m68k.lo \
elf32-m88k.lo \
elf-m10200.lo \
@@ -178,6 +200,7 @@ BFD32_BACKENDS = \
elf32-pj.lo \
elf32-ppc.lo \
elf32-sh.lo \
+ elf32-sh-lin.lo \
elf32-sparc.lo \
elf32-v850.lo \
elf32.lo \
@@ -245,6 +268,7 @@ BFD32_BACKENDS = \
BFD32_BACKENDS_CFILES = \
aout-adobe.c \
aout-arm.c \
+ aout-cris.c \
aout-ns32k.c \
aout-sparcle.c \
aout-tic30.c \
@@ -275,6 +299,7 @@ BFD32_BACKENDS_CFILES = \
coff-stgo32.c \
coff-svm68k.c \
coff-tic30.c \
+ coff-tic54x.c \
coff-tic80.c \
coff-u68k.c \
coff-we32k.c \
@@ -282,24 +307,28 @@ BFD32_BACKENDS_CFILES = \
coff-z8k.c \
cofflink.c \
dwarf1.c \
- dwarf2.c \
ecoff.c \
ecofflink.c \
+ efi-app-ia32.c \
elf.c \
elf32-arc.c \
elfarm-oabi.c \
elfarm-nabi.c \
elf32-avr.c \
+ elf32-cris.c \
elf32-d10v.c \
elf32-d30v.c \
elf32-fr30.c \
elf32-gen.c \
+ elf32-hppa.c \
elf32-i370.c \
elf32-i386.c \
elf32-i860.c \
elf32-i960.c \
elf32-m32r.c \
elf32-m68k.c \
+ elf32-m68hc11.c \
+ elf32-m68hc12.c \
elf32-m88k.c \
elf-m10200.c \
elf-m10300.c \
@@ -308,6 +337,7 @@ BFD32_BACKENDS_CFILES = \
elf32-pj.c \
elf32-ppc.c \
elf32-sh.c \
+ elf32-sh-lin.c \
elf32-sparc.c \
elf32-v850.c \
elf32.c \
@@ -378,8 +408,13 @@ BFD32_BACKENDS_CFILES = \
BFD64_BACKENDS = \
aout64.lo \
coff-alpha.lo \
+ coff64-rs6000.lo \
demo64.lo \
+ efi-app-ia64.lo \
+ elf64-x86-64.lo \
elf64-alpha.lo \
+ elf64-hppa.lo \
+ elf64-ia64.lo \
elf64-gen.lo \
elf64-mips.lo \
elf64-sparc.lo \
@@ -390,8 +425,13 @@ BFD64_BACKENDS = \
BFD64_BACKENDS_CFILES = \
aout64.c \
coff-alpha.c \
+ coff64-rs6000.c \
demo64.c \
+ efi-app-ia64.c \
+ elf64-x86-64.c \
elf64-alpha.c \
+ elf64-hppa.c \
+ elf64-ia64.c \
elf64-gen.c \
elf64-mips.c \
elf64-sparc.c \
@@ -438,12 +478,12 @@ CFILES = \
## This is a list of all .h files which are in the source tree.
SOURCE_HFILES = \
- aout-target.h aoutf1.h aoutx.h coffcode.h coffswap.h \
- ecoffswap.h elf32-arm.h elfcode.h elfcore.h \
- elflink.h freebsd.h genlink.h go32stub.h libaout.h \
- libbfd.h libcoff.h libecoff.h elf-bfd.h libhppa.h libieee.h \
- libnlm.h liboasys.h libpei.h netbsd.h nlm-target.h nlmcode.h \
- nlmswap.h ns32k.h peicode.h som.h vms.h
+ aout-target.h aoutf1.h aoutx.h coffcode.h coffswap.h ecoffswap.h \
+ elf-bfd.h elf-hppa.h elf32-arm.h elf32-hppa.h elf64-hppa.h \
+ elfcode.h elfcore.h elflink.h freebsd.h genlink.h go32stub.h \
+ libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
+ libieee.h libnlm.h liboasys.h libpei.h netbsd.h nlm-target.h \
+ nlmcode.h nlmswap.h ns32k.h peicode.h som.h vms.h xcoff-target.h
HFILES = \
elf32-target.h elf64-target.h targmatch.h \
@@ -528,6 +568,16 @@ elf64-target.h : elfxx-target.h
sed -e s/NN/64/g < $(srcdir)/elfxx-target.h > elf64-target.new
mv -f elf64-target.new elf64-target.h
+elf32-ia64.c : elfxx-ia64.c
+ rm -f elf32-ia64.c
+ sed -e s/NN/32/g < $(srcdir)/elfxx-ia64.c > elf32-ia64.new
+ mv -f elf32-ia64.new elf32-ia64.c
+
+elf64-ia64.c : elfxx-ia64.c
+ rm -f elf64-ia64.c
+ sed -e s/NN/64/g < $(srcdir)/elfxx-ia64.c > elf64-ia64.new
+ mv -f elf64-ia64.new elf64-ia64.c
+
BFD_H_DEPS= $(INCDIR)/ansidecl.h
LOCAL_H_DEPS= libbfd.h sysdep.h config.h
$(BFD_LIBS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
@@ -538,17 +588,23 @@ $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
# Install BFD include file, and others that it needs.
install-data-local: $(BFD_H)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(includedir)
- $(INSTALL_DATA) $(BFD_H) $(includedir)/bfd.h
- $(INSTALL_DATA) $(INCDIR)/ansidecl.h $(includedir)/ansidecl.h
- $(INSTALL_DATA) $(INCDIR)/bfdlink.h $(includedir)/bfdlink.h
+ $(mkinstalldirs) $(DESTDIR)$(includedir)
+ $(INSTALL_DATA) $(BFD_H) $(DESTDIR)$(includedir)/bfd.h
+ $(INSTALL_DATA) $(INCDIR)/ansidecl.h $(DESTDIR)$(includedir)/ansidecl.h
+ $(INSTALL_DATA) $(INCDIR)/bfdlink.h $(DESTDIR)$(includedir)/bfdlink.h
+
# Have to get rid of DEP1 here so that "$?" later includes all of $(CFILES).
DEP: dep.sed $(CFILES) $(HFILES) bfd.h
rm -f DEP1
$(MAKE) MKDEP="$(MKDEP)" DEP1
- sed -f dep.sed < DEP1 > $@
- echo '# IF YOU PUT ANYTHING HERE IT WILL GO AWAY' >> $@
+ 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)
echo '# DO NOT DELETE THIS LINE -- mkdep uses it.' > DEP2
@@ -637,7 +693,7 @@ stmp-lcoff-h: $(LIBCOFF_H_FILES)
MOSTLYCLEANFILES = elf32-target.h elf64-target.h ofiles stamp-ofiles \
targmatch.h
-CLEANFILES = bfd.h dep.sed stmp-bfd-h DEP DEP1 DEP2 libbfd.a stamp-lib \
+CLEANFILES = bfd.h dep.sed stmp-bfd-h DEP DEPA DEP1 DEP2 libbfd.a stamp-lib \
stmp-bin2-h stmp-lbfd-h stmp-lcoff-h
# We want to rerun configure if config.bfd or configure.host change.
@@ -645,481 +701,599 @@ config.status: $(srcdir)/configure $(srcdir)/config.bfd $(srcdir)/configure.host
$(SHELL) ./config.status --recheck
-elfarm-oabi.lo: elfarm-oabi.c elf32-arm.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-
-elfarm-nabi.lo: elfarm-nabi.c elf32-arm.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-
# 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.
-archive.lo: archive.c $(INCDIR)/aout/ar.h $(INCDIR)/aout/ranlib.h
-archures.lo: archures.c
-bfd.lo: bfd.c $(INCDIR)/libiberty.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h libcoff.h \
- libecoff.h $(INCDIR)/coff/ecoff.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
-cache.lo: cache.c
-coffgen.lo: coffgen.c $(INCDIR)/coff/internal.h libcoff.h \
- $(INCDIR)/bfdlink.h
-corefile.lo: corefile.c
-format.lo: format.c
-init.lo: init.c
-libbfd.lo: libbfd.c
-opncls.lo: opncls.c $(INCDIR)/objalloc.h
-reloc.lo: reloc.c $(INCDIR)/bfdlink.h
-section.lo: section.c $(INCDIR)/bfdlink.h
-syms.lo: syms.c $(INCDIR)/bfdlink.h $(INCDIR)/aout/stab_gnu.h \
+archive.lo: archive.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h \
+ $(INCDIR)/aout/ranlib.h
+archures.lo: archures.c $(INCDIR)/filenames.h
+bfd.lo: bfd.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h \
+ libcoff.h libecoff.h $(INCDIR)/coff/ecoff.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
+cache.lo: cache.c $(INCDIR)/filenames.h
+coffgen.lo: coffgen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
+ libcoff.h $(INCDIR)/bfdlink.h
+corefile.lo: corefile.c $(INCDIR)/filenames.h
+format.lo: format.c $(INCDIR)/filenames.h
+init.lo: init.c $(INCDIR)/filenames.h
+libbfd.lo: libbfd.c $(INCDIR)/filenames.h
+opncls.lo: opncls.c $(INCDIR)/filenames.h $(INCDIR)/objalloc.h
+reloc.lo: reloc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
+section.lo: section.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
+syms.lo: syms.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
+targets.lo: targets.c $(INCDIR)/filenames.h $(INCDIR)/fnmatch.h \
+ targmatch.h
+hash.lo: hash.c $(INCDIR)/filenames.h $(INCDIR)/objalloc.h
+linker.lo: linker.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h
+srec.lo: srec.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+binary.lo: binary.c $(INCDIR)/filenames.h
+tekhex.lo: tekhex.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+ihex.lo: ihex.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+stabs.lo: stabs.c $(INCDIR)/filenames.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def
-targets.lo: targets.c $(INCDIR)/fnmatch.h targmatch.h
-hash.lo: hash.c $(INCDIR)/objalloc.h
-linker.lo: linker.c $(INCDIR)/bfdlink.h genlink.h
-srec.lo: srec.c $(INCDIR)/libiberty.h
-binary.lo: binary.c
-tekhex.lo: tekhex.c $(INCDIR)/libiberty.h
-ihex.lo: ihex.c $(INCDIR)/libiberty.h
-stabs.lo: stabs.c $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
stab-syms.lo: stab-syms.c libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab.def
-cpu-a29k.lo: cpu-a29k.c
-cpu-alpha.lo: cpu-alpha.c
-cpu-arc.lo: cpu-arc.c
-cpu-arm.lo: cpu-arm.c
-cpu-avr.lo: cpu-avr.c
-cpu-d10v.lo: cpu-d10v.c
-cpu-d30v.lo: cpu-d30v.c
-cpu-fr30.lo: cpu-fr30.c
-cpu-h8300.lo: cpu-h8300.c
-cpu-h8500.lo: cpu-h8500.c
-cpu-hppa.lo: cpu-hppa.c
-cpu-i370.lo: cpu-i370.c
-cpu-i386.lo: cpu-i386.c
-cpu-i860.lo: cpu-i860.c
-cpu-i960.lo: cpu-i960.c
-cpu-m32r.lo: cpu-m32r.c
-cpu-m68k.lo: cpu-m68k.c
-cpu-m88k.lo: cpu-m88k.c
-cpu-m10200.lo: cpu-m10200.c
-cpu-m10300.lo: cpu-m10300.c
-cpu-mcore.lo: cpu-mcore.c
-cpu-mips.lo: cpu-mips.c
-cpu-ns32k.lo: cpu-ns32k.c ns32k.h
-cpu-pj.lo: cpu-pj.c
-cpu-powerpc.lo: cpu-powerpc.c
-cpu-rs6000.lo: cpu-rs6000.c
-cpu-sh.lo: cpu-sh.c
-cpu-sparc.lo: cpu-sparc.c
-cpu-tic30.lo: cpu-tic30.c
-cpu-tic80.lo: cpu-tic80.c
-cpu-v850.lo: cpu-v850.c
-cpu-vax.lo: cpu-vax.c
-cpu-we32k.lo: cpu-we32k.c
-cpu-w65.lo: cpu-w65.c
-cpu-z8k.lo: cpu-z8k.c
-aout-adobe.lo: aout-adobe.c $(INCDIR)/aout/adobe.h \
+cpu-a29k.lo: cpu-a29k.c $(INCDIR)/filenames.h
+cpu-alpha.lo: cpu-alpha.c $(INCDIR)/filenames.h
+cpu-arc.lo: cpu-arc.c $(INCDIR)/filenames.h
+cpu-arm.lo: cpu-arm.c $(INCDIR)/filenames.h
+cpu-avr.lo: cpu-avr.c $(INCDIR)/filenames.h
+cpu-cris.lo: cpu-cris.c $(INCDIR)/filenames.h
+cpu-d10v.lo: cpu-d10v.c $(INCDIR)/filenames.h
+cpu-d30v.lo: cpu-d30v.c $(INCDIR)/filenames.h
+cpu-fr30.lo: cpu-fr30.c $(INCDIR)/filenames.h
+cpu-h8300.lo: cpu-h8300.c $(INCDIR)/filenames.h
+cpu-h8500.lo: cpu-h8500.c $(INCDIR)/filenames.h
+cpu-hppa.lo: cpu-hppa.c $(INCDIR)/filenames.h
+cpu-ia64.lo: cpu-ia64.c $(INCDIR)/filenames.h cpu-ia64-opc.c \
+ $(srcdir)/../opcodes/ia64-opc.h $(INCDIR)/opcode/ia64.h
+cpu-i370.lo: cpu-i370.c $(INCDIR)/filenames.h
+cpu-i386.lo: cpu-i386.c $(INCDIR)/filenames.h
+cpu-i860.lo: cpu-i860.c $(INCDIR)/filenames.h
+cpu-i960.lo: cpu-i960.c $(INCDIR)/filenames.h
+cpu-m32r.lo: cpu-m32r.c $(INCDIR)/filenames.h
+cpu-m68hc11.lo: cpu-m68hc11.c $(INCDIR)/filenames.h
+cpu-m68hc12.lo: cpu-m68hc12.c $(INCDIR)/filenames.h
+cpu-m68k.lo: cpu-m68k.c $(INCDIR)/filenames.h
+cpu-m88k.lo: cpu-m88k.c $(INCDIR)/filenames.h
+cpu-m10200.lo: cpu-m10200.c $(INCDIR)/filenames.h
+cpu-m10300.lo: cpu-m10300.c $(INCDIR)/filenames.h
+cpu-mcore.lo: cpu-mcore.c $(INCDIR)/filenames.h
+cpu-mips.lo: cpu-mips.c $(INCDIR)/filenames.h
+cpu-ns32k.lo: cpu-ns32k.c $(INCDIR)/filenames.h ns32k.h
+cpu-pj.lo: cpu-pj.c $(INCDIR)/filenames.h
+cpu-powerpc.lo: cpu-powerpc.c $(INCDIR)/filenames.h
+cpu-rs6000.lo: cpu-rs6000.c $(INCDIR)/filenames.h
+cpu-sh.lo: cpu-sh.c $(INCDIR)/filenames.h
+cpu-sparc.lo: cpu-sparc.c $(INCDIR)/filenames.h
+cpu-tic30.lo: cpu-tic30.c $(INCDIR)/filenames.h
+cpu-tic54x.lo: cpu-tic54x.c $(INCDIR)/filenames.h
+cpu-tic80.lo: cpu-tic80.c $(INCDIR)/filenames.h
+cpu-v850.lo: cpu-v850.c $(INCDIR)/filenames.h
+cpu-vax.lo: cpu-vax.c $(INCDIR)/filenames.h
+cpu-we32k.lo: cpu-we32k.c $(INCDIR)/filenames.h
+cpu-w65.lo: cpu-w65.c $(INCDIR)/filenames.h
+cpu-z8k.lo: cpu-z8k.c $(INCDIR)/filenames.h
+aout-adobe.lo: aout-adobe.c $(INCDIR)/filenames.h $(INCDIR)/aout/adobe.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def libaout.h \
$(INCDIR)/bfdlink.h
-aout-arm.lo: aout-arm.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aoutx.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
+aout-arm.lo: aout-arm.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aoutx.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
+aout-cris.lo: aout-cris.c aout32.c aoutx.h $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
aout-ns32k.lo: aout-ns32k.c $(INCDIR)/aout/aout64.h \
ns32k.h libaout.h $(INCDIR)/bfdlink.h
aout-sparcle.lo: aout-sparcle.c $(INCDIR)/bfdlink.h \
- libaout.h aoutf1.h $(INCDIR)/aout/sun4.h $(INCDIR)/aout/aout64.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
- aout-target.h
-aout-tic30.lo: aout-tic30.c libaout.h $(INCDIR)/bfdlink.h \
+ libaout.h aoutf1.h $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h aoutx.h
-aout0.lo: aout0.c aoutf1.h $(INCDIR)/aout/sun4.h libaout.h \
+ $(INCDIR)/aout/ar.h aout-target.h
+aout-tic30.lo: aout-tic30.c $(INCDIR)/filenames.h libaout.h \
$(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
-aout32.lo: aout32.c aoutx.h $(INCDIR)/bfdlink.h libaout.h \
- $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h
-armnetbsd.lo: armnetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aoutx.h
+aout0.lo: aout0.c aoutf1.h $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h \
+ libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
+aout32.lo: aout32.c aoutx.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ libaout.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-bout.lo: bout.c $(INCDIR)/bfdlink.h genlink.h $(INCDIR)/bout.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def libaout.h
-cf-i386lynx.lo: cf-i386lynx.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
- coffcode.h coffswap.h
-cf-m68klynx.lo: cf-m68klynx.c coff-m68k.c $(INCDIR)/coff/m68k.h \
+armnetbsd.lo: armnetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+bout.lo: bout.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h $(INCDIR)/bout.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def libaout.h
+cf-i386lynx.lo: cf-i386lynx.c $(INCDIR)/filenames.h \
+ coff-i386.c $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+cf-m68klynx.lo: cf-m68klynx.c coff-m68k.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+cf-sparclynx.lo: cf-sparclynx.c coff-sparc.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/sparc.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-a29k.lo: coff-a29k.c $(INCDIR)/filenames.h $(INCDIR)/coff/a29k.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-cf-sparclynx.lo: cf-sparclynx.c coff-sparc.c $(INCDIR)/coff/sparc.h \
+coff-apollo.lo: coff-apollo.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/apollo.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-arm.lo: coff-arm.c $(INCDIR)/filenames.h $(INCDIR)/coff/arm.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-a29k.lo: coff-a29k.c $(INCDIR)/coff/a29k.h $(INCDIR)/coff/internal.h \
+coff-aux.lo: coff-aux.c $(INCDIR)/filenames.h $(INCDIR)/coff/aux-coff.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h coff-m68k.c \
libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-apollo.lo: coff-apollo.c $(INCDIR)/coff/apollo.h \
+coff-h8300.lo: coff-h8300.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h $(INCDIR)/coff/h8300.h $(INCDIR)/coff/internal.h \
+ libcoff.h coffcode.h coffswap.h
+coff-h8500.lo: coff-h8500.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/h8500.h $(INCDIR)/coff/internal.h libcoff.h \
+ coffcode.h coffswap.h
+coff-i386.lo: coff-i386.c $(INCDIR)/filenames.h $(INCDIR)/coff/i386.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-arm.lo: coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-aux.lo: coff-aux.c $(INCDIR)/coff/aux-coff.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/m68k.h coff-m68k.c libcoff.h $(INCDIR)/bfdlink.h \
+coff-i860.lo: coff-i860.c $(INCDIR)/filenames.h $(INCDIR)/coff/i860.h \
+ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-h8300.lo: coff-h8300.c $(INCDIR)/bfdlink.h genlink.h \
- $(INCDIR)/coff/h8300.h $(INCDIR)/coff/internal.h libcoff.h \
+coff-go32.lo: coff-go32.c coff-i386.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-i960.lo: coff-i960.c $(INCDIR)/filenames.h $(INCDIR)/coff/i960.h \
+ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-h8500.lo: coff-h8500.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/h8500.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-i386.lo: coff-i386.c $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-i860.lo: coff-i860.c $(INCDIR)/coff/i860.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-go32.lo: coff-go32.c coff-i386.c $(INCDIR)/coff/i386.h \
+coff-m68k.lo: coff-m68k.c $(INCDIR)/filenames.h $(INCDIR)/coff/m68k.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-i960.lo: coff-i960.c $(INCDIR)/coff/i960.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-m68k.lo: coff-m68k.c $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-m88k.lo: coff-m88k.c $(INCDIR)/coff/m88k.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-mips.lo: coff-mips.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- $(INCDIR)/coff/mips.h libcoff.h libecoff.h coffswap.h \
- ecoffswap.h
-coff-pmac.lo: coff-pmac.c coff-rs6000.c $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/rs6000.h libcoff.h $(INCDIR)/bfdlink.h \
+coff-m88k.lo: coff-m88k.c $(INCDIR)/filenames.h $(INCDIR)/coff/m88k.h \
+ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-rs6000.lo: coff-rs6000.c $(INCDIR)/coff/internal.h \
+coff-mips.lo: coff-mips.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h libcoff.h \
+ libecoff.h coffswap.h ecoffswap.h
+coff-pmac.lo: coff-pmac.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/rs6000.h libcoff.h $(INCDIR)/bfdlink.h \
+ xcoff-target.h coffcode.h coffswap.h
+coff-rs6000.lo: coff-rs6000.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h libcoff.h \
+ $(INCDIR)/bfdlink.h xcoff-target.h coffcode.h coffswap.h
+coff-sh.lo: coff-sh.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/sh.h $(INCDIR)/coff/internal.h libcoff.h \
coffcode.h coffswap.h
-coff-sh.lo: coff-sh.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-sparc.lo: coff-sparc.c $(INCDIR)/coff/sparc.h \
+coff-sparc.lo: coff-sparc.c $(INCDIR)/filenames.h $(INCDIR)/coff/sparc.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-stgo32.lo: coff-stgo32.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/go32exe.h \
+coff-stgo32.lo: coff-stgo32.c coff-i386.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/go32exe.h \
libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h \
go32stub.h
-coff-svm68k.lo: coff-svm68k.c coff-m68k.c $(INCDIR)/coff/m68k.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
+coff-svm68k.lo: coff-svm68k.c coff-m68k.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-tic30.lo: coff-tic30.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/tic30.h $(INCDIR)/coff/internal.h libcoff.h \
coffcode.h coffswap.h
-coff-tic30.lo: coff-tic30.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic30.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-tic80.lo: coff-tic80.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic80.h \
+coff-tic54x.lo: coff-tic54x.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \
$(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-u68k.lo: coff-u68k.c coff-m68k.c $(INCDIR)/coff/m68k.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
+coff-tic80.lo: coff-tic80.c $(INCDIR)/bfdlink.h $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/tic80.h $(INCDIR)/coff/internal.h libcoff.h \
coffcode.h coffswap.h
-coff-we32k.lo: coff-we32k.c $(INCDIR)/coff/we32k.h \
+coff-u68k.lo: coff-u68k.c coff-m68k.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-we32k.lo: coff-we32k.c $(INCDIR)/filenames.h $(INCDIR)/coff/we32k.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-w65.lo: coff-w65.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/w65.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-z8k.lo: coff-z8k.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/z8k.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-cofflink.lo: cofflink.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- libcoff.h
-dwarf1.lo: dwarf1.c $(INCDIR)/libiberty.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf.h
-dwarf2.lo: dwarf2.c $(INCDIR)/libiberty.h elf-bfd.h \
+coff-w65.lo: coff-w65.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/w65.h $(INCDIR)/coff/internal.h libcoff.h \
+ coffcode.h coffswap.h
+coff-z8k.lo: coff-z8k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/z8k.h $(INCDIR)/coff/internal.h libcoff.h \
+ coffcode.h coffswap.h
+cofflink.lo: cofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/internal.h libcoff.h
+dwarf1.lo: dwarf1.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf.h
+dwarf2.lo: dwarf2.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h
+ecoff.lo: ecoff.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/ar.h $(INCDIR)/aout/ranlib.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def libaout.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/ecoff.h libcoff.h libecoff.h
+ecofflink.lo: ecofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/objalloc.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/ecoff.h libcoff.h libecoff.h
+efi-app-ia32.lo: efi-app-ia32.c $(INCDIR)/filenames.h \
+ coff-i386.c $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+elf.lo: elf.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h
+elf32-arc.lo: elf32-arc.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h
-ecoff.lo: ecoff.c $(INCDIR)/bfdlink.h $(INCDIR)/aout/ar.h \
- $(INCDIR)/aout/ranlib.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- libaout.h $(INCDIR)/aout/aout64.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- libcoff.h libecoff.h
-ecofflink.lo: ecofflink.c $(INCDIR)/bfdlink.h $(INCDIR)/objalloc.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- libcoff.h libecoff.h
-elf.lo: elf.c $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
-elf32-arc.lo: elf32-arc.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elfarm-oabi.lo: elfarm-oabi.c $(INCDIR)/elf/arm-oabi.h \
- $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elfarm-oabi.lo: elfarm-oabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
elf32-arm.h elf32-target.h
elfarm-nabi.lo: elfarm-nabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
- elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
- $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h elf32-arm.h \
- elf32-target.h
-elf32-avr.lo: elf32-avr.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/avr.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-d10v.lo: elf32-d10v.c elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ elf32-arm.h elf32-target.h
+elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-d30v.lo: elf32-d30v.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+elf32-cris.lo: elf32-cris.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-fr30.lo: elf32-fr30.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-gen.lo: elf32-gen.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+elf32-d10v.lo: elf32-d10v.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/d10v.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-i370.lo: elf32-i370.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-d30v.lo: elf32-d30v.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/i370.h elf32-target.h
-elf32-i386.lo: elf32-i386.c $(INCDIR)/bfdlink.h elf-bfd.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32-fr30.lo: elf32-fr30.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-i860.lo: elf32-i860.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-i960.lo: elf32-i960.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/i960.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-m32r.lo: elf32-m32r.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/m32r.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-m68k.lo: elf32-m68k.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-gen.lo: elf32-gen.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-m88k.lo: elf32-m88k.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf32-hppa.lo: elf32-hppa.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h \
+ libhppa.h elf32-hppa.h elf-hppa.h elf32-target.h
+elf32-i370.lo: elf32-i370.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/i370.h elf32-target.h
+elf32-i386.lo: elf32-i386.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf-m10200.lo: elf-m10200.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+elf32-i860.lo: elf32-i860.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/i860.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf-m10300.lo: elf-m10300.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/mn10300.h $(INCDIR)/elf/reloc-macros.h \
+elf32-i960.lo: elf32-i960.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/i960.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-mcore.lo: elf32-mcore.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-ia64.lo: elf32-ia64.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
+elf32-m32r.lo: elf32-m32r.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/mcore.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/m32r.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-mips.lo: elf32-mips.c $(INCDIR)/bfdlink.h genlink.h \
+elf32-m68k.lo: elf32-m68k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
- $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h ecoffswap.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-pj.lo: elf32-pj.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/pj.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-ppc.lo: elf32-ppc.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-m68hc11.lo: elf32-m68hc11.c $(INCDIR)/filenames.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/m68hc11.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
+elf32-m68hc12.lo: elf32-m68hc12.c $(INCDIR)/filenames.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/m68hc11.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
+elf32-m88k.lo: elf32-m88k.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-sh.lo: elf32-sh.c $(INCDIR)/bfdlink.h elf-bfd.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf-m10200.lo: elf-m10200.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-sparc.lo: elf32-sparc.c $(INCDIR)/bfdlink.h elf-bfd.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf-m10300.lo: elf-m10300.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/mn10300.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-v850.lo: elf32-v850.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32.lo: elf32.c elfcode.h $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- elfcore.h elflink.h
-elflink.lo: elflink.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
-epoc-pe-arm.lo: epoc-pe-arm.c pe-arm.c coff-arm.c $(INCDIR)/coff/arm.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-epoc-pei-arm.lo: epoc-pei-arm.c pei-arm.c coff-arm.c \
- $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
- libpei.h
-hp300bsd.lo: hp300bsd.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+elf32-mcore.lo: elf32-mcore.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/mcore.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
+elf32-mips.lo: elf32-mips.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h ecoffswap.h \
+ elf32-target.h
+elf32-pj.lo: elf32-pj.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/pj.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32-ppc.lo: elf32-ppc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32-sh.lo: elf32-sh.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32-sh-lin.lo: elf32-sh-lin.c elf32-sh.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
+elf32-sparc.lo: elf32-sparc.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/sparc.h \
+ elf32-target.h
+elf32-v850.lo: elf32-v850.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h elfcore.h elflink.h
+elflink.lo: elflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h
+epoc-pe-arm.lo: epoc-pe-arm.c pe-arm.c $(INCDIR)/filenames.h \
+ coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+epoc-pei-arm.lo: epoc-pei-arm.c pei-arm.c $(INCDIR)/filenames.h \
+ coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+hp300bsd.lo: hp300bsd.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
hp300hpux.lo: hp300hpux.c $(INCDIR)/aout/hp300hpux.h \
- aoutx.h $(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
- aout-target.h
-som.lo: som.c
-i386aout.lo: i386aout.c $(INCDIR)/aout/aout64.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386bsd.lo: i386bsd.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
+ aoutx.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h libaout.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ar.h aout-target.h
+som.lo: som.c $(INCDIR)/alloca-conf.h $(INCDIR)/filenames.h
+i386aout.lo: i386aout.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386bsd.lo: i386bsd.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
i386dynix.lo: i386dynix.c $(INCDIR)/aout/dynix3.h aoutx.h \
- $(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h libaout.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ar.h aout-target.h
+i386freebsd.lo: i386freebsd.c freebsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386linux.lo: i386linux.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
- aout-target.h
-i386freebsd.lo: i386freebsd.c freebsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386linux.lo: i386linux.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-i386lynx.lo: i386lynx.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386msdos.lo: i386msdos.c libaout.h $(INCDIR)/bfdlink.h
-i386netbsd.lo: i386netbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386mach3.lo: i386mach3.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-i386os9k.lo: i386os9k.c $(INCDIR)/bfdlink.h libaout.h \
- $(INCDIR)/os9k.h
-ieee.lo: ieee.c $(INCDIR)/ieee.h libieee.h
-m68k4knetbsd.lo: m68k4knetbsd.c netbsd.h libaout.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+i386lynx.lo: i386lynx.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386msdos.lo: i386msdos.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h
+i386netbsd.lo: i386netbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386mach3.lo: i386mach3.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+i386os9k.lo: i386os9k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ libaout.h $(INCDIR)/os9k.h
+ieee.lo: ieee.c $(INCDIR)/filenames.h $(INCDIR)/ieee.h \
+ libieee.h
+m68k4knetbsd.lo: m68k4knetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+m68klinux.lo: m68klinux.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+m68klynx.lo: m68klynx.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+m68knetbsd.lo: m68knetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+m88kmach3.lo: m88kmach3.c $(INCDIR)/filenames.h libaout.h \
$(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-m68klinux.lo: m68klinux.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-m68klynx.lo: m68klynx.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-m68knetbsd.lo: m68knetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-m88kmach3.lo: m88kmach3.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-mipsbsd.lo: mipsbsd.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-newsos3.lo: newsos3.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-nlm.lo: nlm.c libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
- $(INCDIR)/nlm/external.h
-nlm32-i386.lo: nlm32-i386.c $(INCDIR)/nlm/i386-ext.h \
+mipsbsd.lo: mipsbsd.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+newsos3.lo: newsos3.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+nlm.lo: nlm.c $(INCDIR)/filenames.h libnlm.h $(INCDIR)/nlm/common.h \
+ $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
+nlm32-i386.lo: nlm32-i386.c $(INCDIR)/filenames.h $(INCDIR)/nlm/i386-ext.h \
libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
$(INCDIR)/nlm/external.h nlmswap.h nlm-target.h
-nlm32-sparc.lo: nlm32-sparc.c $(INCDIR)/nlm/sparc32-ext.h \
+nlm32-sparc.lo: nlm32-sparc.c $(INCDIR)/filenames.h \
+ $(INCDIR)/nlm/sparc32-ext.h libnlm.h $(INCDIR)/nlm/common.h \
+ $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h nlmswap.h \
+ nlm-target.h
+nlm32-ppc.lo: nlm32-ppc.c $(INCDIR)/filenames.h $(INCDIR)/nlm/ppc-ext.h \
libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
$(INCDIR)/nlm/external.h nlmswap.h nlm-target.h
-nlm32-ppc.lo: nlm32-ppc.c $(INCDIR)/nlm/ppc-ext.h libnlm.h \
- $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h \
- nlmswap.h nlm-target.h
-nlm32.lo: nlm32.c nlmcode.h libnlm.h $(INCDIR)/nlm/common.h \
- $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
-ns32knetbsd.lo: ns32knetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-oasys.lo: oasys.c $(INCDIR)/oasys.h liboasys.h
-pc532-mach.lo: pc532-mach.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-pe-arm.lo: pe-arm.c coff-arm.c $(INCDIR)/coff/arm.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-arm.lo: pei-arm.c coff-arm.c $(INCDIR)/coff/arm.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-i386.lo: pe-i386.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-i386.lo: pei-i386.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-mcore.lo: pe-mcore.c coff-mcore.c $(INCDIR)/coff/mcore.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-mcore.lo: pei-mcore.c coff-mcore.c $(INCDIR)/coff/mcore.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-ppc.lo: pe-ppc.c coff-ppc.c $(INCDIR)/coff/powerpc.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-ppc.lo: pei-ppc.c coff-ppc.c $(INCDIR)/coff/powerpc.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-sh.lo: pe-sh.c coff-sh.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- coffcode.h peicode.h libpei.h
-pei-sh.lo: pei-sh.c coff-sh.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- coffcode.h peicode.h libpei.h
-pe-mips.lo: pe-mips.c $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/internal.h \
+nlm32.lo: nlm32.c nlmcode.h $(INCDIR)/filenames.h libnlm.h \
+ $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
+ns32knetbsd.lo: ns32knetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+oasys.lo: oasys.c $(INCDIR)/filenames.h $(INCDIR)/oasys.h \
+ liboasys.h
+pc532-mach.lo: pc532-mach.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+pe-arm.lo: pe-arm.c $(INCDIR)/filenames.h coff-arm.c \
+ $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pei-arm.lo: pei-arm.c $(INCDIR)/filenames.h coff-arm.c \
+ $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pe-i386.lo: pe-i386.c $(INCDIR)/filenames.h coff-i386.c \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pei-i386.lo: pei-i386.c $(INCDIR)/filenames.h coff-i386.c \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pe-mcore.lo: pe-mcore.c $(INCDIR)/filenames.h coff-mcore.c \
+ $(INCDIR)/coff/mcore.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pei-mcore.lo: pei-mcore.c $(INCDIR)/filenames.h coff-mcore.c \
+ $(INCDIR)/coff/mcore.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pe-ppc.lo: pe-ppc.c $(INCDIR)/filenames.h coff-ppc.c \
+ $(INCDIR)/coff/powerpc.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
peicode.h libpei.h
-pei-mips.lo: pei-mips.c pe-mips.c $(INCDIR)/coff/mipspe.h \
+pei-ppc.lo: pei-ppc.c $(INCDIR)/filenames.h coff-ppc.c \
+ $(INCDIR)/coff/powerpc.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+pe-sh.lo: pe-sh.c $(INCDIR)/filenames.h coff-sh.c $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/sh.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h coffcode.h peicode.h libpei.h
+pei-sh.lo: pei-sh.c $(INCDIR)/filenames.h coff-sh.c \
+ $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h coffcode.h peicode.h \
+ libpei.h
+pe-mips.lo: pe-mips.c $(INCDIR)/filenames.h $(INCDIR)/coff/mipspe.h \
$(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
$(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-peigen.lo: peigen.c $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h libpei.h
-ppcboot.lo: ppcboot.c
-reloc16.lo: reloc16.c $(INCDIR)/bfdlink.h genlink.h \
- $(INCDIR)/coff/internal.h libcoff.h
-riscix.lo: riscix.c libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
- aout-target.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h
-sparclinux.lo: sparclinux.c $(INCDIR)/aout/aout64.h \
+pei-mips.lo: pei-mips.c $(INCDIR)/filenames.h pe-mips.c \
+ $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+peigen.lo: peigen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/pe.h libcoff.h \
+ $(INCDIR)/bfdlink.h libpei.h
+ppcboot.lo: ppcboot.c $(INCDIR)/filenames.h
+reloc16.lo: reloc16.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h $(INCDIR)/coff/internal.h libcoff.h
+riscix.lo: riscix.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+sparclinux.lo: sparclinux.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
libaout.h $(INCDIR)/bfdlink.h aout-target.h
-sparclynx.lo: sparclynx.c $(INCDIR)/aout/sun4.h libaout.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
-sparcnetbsd.lo: sparcnetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-sunos.lo: sunos.c $(INCDIR)/bfdlink.h libaout.h aoutf1.h \
- $(INCDIR)/aout/sun4.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
-vaxnetbsd.lo: vaxnetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-versados.lo: versados.c $(INCDIR)/libiberty.h
-vms.lo: vms.c $(INCDIR)/bfdlink.h vms.h
-vms-gsd.lo: vms-gsd.c $(INCDIR)/bfdlink.h vms.h
-vms-hdr.lo: vms-hdr.c $(INCDIR)/bfdlink.h vms.h
-vms-misc.lo: vms-misc.c $(INCDIR)/bfdlink.h vms.h
-vms-tir.lo: vms-tir.c $(INCDIR)/bfdlink.h vms.h
-xcofflink.lo: xcofflink.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- libcoff.h
-aout64.lo: aout64.c aoutx.h $(INCDIR)/bfdlink.h libaout.h \
- $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h
-coff-alpha.lo: coff-alpha.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
- libecoff.h coffswap.h ecoffswap.h
-demo64.lo: demo64.c aoutf1.h $(INCDIR)/aout/sun4.h \
+sparclynx.lo: sparclynx.c $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h \
libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
aout-target.h
-elf64-alpha.lo: elf64-alpha.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \
+sparcnetbsd.lo: sparcnetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+sunos.lo: sunos.c $(INCDIR)/bfdlink.h libaout.h aoutf1.h \
+ $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
+vaxnetbsd.lo: vaxnetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+versados.lo: versados.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+vms.lo: vms.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-gsd.lo: vms-gsd.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-hdr.lo: vms-hdr.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-misc.lo: vms-misc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-tir.lo: vms-tir.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+xcofflink.lo: xcofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/internal.h libcoff.h
+aout64.lo: aout64.c aoutx.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ libaout.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+coff-alpha.lo: coff-alpha.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
$(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
$(INCDIR)/coff/ecoff.h $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h \
- libcoff.h libecoff.h ecoffswap.h elf64-target.h
-elf64-gen.lo: elf64-gen.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- elf64-target.h
-elf64-mips.lo: elf64-mips.c $(INCDIR)/aout/ar.h $(INCDIR)/bfdlink.h \
- genlink.h elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
- $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/alpha.h ecoffswap.h \
- elf64-target.h
-elf64-sparc.lo: elf64-sparc.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ libcoff.h libecoff.h coffswap.h ecoffswap.h
+coff64-rs6000.lo: coff64-rs6000.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6k64.h libcoff.h \
+ $(INCDIR)/bfdlink.h xcoff-target.h coffcode.h coffswap.h
+demo64.lo: demo64.c aoutf1.h $(INCDIR)/filenames.h \
+ $(INCDIR)/aout/sun4.h libaout.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ar.h aout-target.h
+efi-app-ia64.lo: efi-app-ia64.c $(INCDIR)/filenames.h \
+ coff-ia64.c $(INCDIR)/coff/ia64.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+elf64-alpha.lo: elf64-alpha.c $(INCDIR)/filenames.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/alpha.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
+ $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
+ libecoff.h ecoffswap.h elf64-target.h
+elf64-hppa.lo: elf64-hppa.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h \
+ libhppa.h elf64-hppa.h elf-hppa.h elf64-target.h
+elf64-ia64.lo: elf64-ia64.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \
+ $(INCDIR)/elf/reloc-macros.h elf64-target.h
+elf64-x86-64.lo: elf64-x86-64.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/i386.h $(INCDIR)/elf/x86-64.h \
+ $(INCDIR)/elf/reloc-macros.h elf64-target.h
+elf64-gen.lo: elf64-gen.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h elf64-target.h
+elf64-mips.lo: elf64-mips.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h \
+ $(INCDIR)/bfdlink.h genlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/alpha.h \
+ ecoffswap.h elf64-target.h
+elf64-sparc.lo: elf64-sparc.c $(INCDIR)/filenames.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/sparc.h \
$(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \
elf64-target.h
-elf64.lo: elf64.c elfcode.h $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- elfcore.h elflink.h
-nlm32-alpha.lo: nlm32-alpha.c $(INCDIR)/nlm/alpha-ext.h \
- libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
- $(INCDIR)/nlm/external.h nlmswap.h nlm-target.h
-nlm64.lo: nlm64.c nlmcode.h libnlm.h $(INCDIR)/nlm/common.h \
- $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
-aix386-core.lo: aix386-core.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h
-hpux-core.lo: hpux-core.c
-irix-core.lo: irix-core.c
-lynx-core.lo: lynx-core.c
-osf-core.lo: osf-core.c
-sco5-core.lo: sco5-core.c libaout.h $(INCDIR)/bfdlink.h
-trad-core.lo: trad-core.c libaout.h $(INCDIR)/bfdlink.h
-cisco-core.lo: cisco-core.c
+elf64.lo: elf64.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h elfcore.h elflink.h
+nlm32-alpha.lo: nlm32-alpha.c $(INCDIR)/filenames.h \
+ $(INCDIR)/nlm/alpha-ext.h libnlm.h $(INCDIR)/nlm/common.h \
+ $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h nlmswap.h \
+ nlm-target.h
+nlm64.lo: nlm64.c nlmcode.h $(INCDIR)/filenames.h libnlm.h \
+ $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
+aix386-core.lo: aix386-core.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h
+hpux-core.lo: hpux-core.c $(INCDIR)/filenames.h
+irix-core.lo: irix-core.c $(INCDIR)/filenames.h
+lynx-core.lo: lynx-core.c $(INCDIR)/filenames.h
+osf-core.lo: osf-core.c $(INCDIR)/filenames.h
+sco5-core.lo: sco5-core.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h
+trad-core.lo: trad-core.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h
+cisco-core.lo: cisco-core.c $(INCDIR)/filenames.h
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/contrib/binutils/bfd/Makefile.in b/contrib/binutils/bfd/Makefile.in
index bb8e06c..0c60c1c 100644
--- a/contrib/binutils/bfd/Makefile.in
+++ b/contrib/binutils/bfd/Makefile.in
@@ -75,10 +75,14 @@ CC = @CC@
CC_FOR_BUILD = @CC_FOR_BUILD@
COREFILE = @COREFILE@
COREFLAG = @COREFLAG@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
DATADIRNAME = @DATADIRNAME@
DLLTOOL = @DLLTOOL@
EXEEXT = @EXEEXT@
EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
+GCJ = @GCJ@
+GCJFLAGS = @GCJFLAGS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GT_NO = @GT_NO@
@@ -96,10 +100,12 @@ MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
POFILES = @POFILES@
POSUB = @POSUB@
RANLIB = @RANLIB@
+STRIP = @STRIP@
TDEFINES = @TDEFINES@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
@@ -125,6 +131,9 @@ docdir = doc
lib_LTLIBRARIES = libbfd.la
+WARN_CFLAGS = @WARN_CFLAGS@
+AM_CFLAGS = $(WARN_CFLAGS)
+
# bfd.h goes here, for now
BFD_H = bfd.h
@@ -135,411 +144,41 @@ BFD_H = bfd.h
# for the debugger, so if you are downloading things as S-records you
# need two copies of the executable, one to download and one for the
# debugger).
-BFD_LIBS = \
- archive.lo archures.lo bfd.lo cache.lo coffgen.lo corefile.lo \
- format.lo init.lo libbfd.lo opncls.lo reloc.lo \
- section.lo syms.lo targets.lo hash.lo linker.lo \
- srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo
+BFD_LIBS = archive.lo archures.lo bfd.lo cache.lo coffgen.lo corefile.lo format.lo init.lo libbfd.lo opncls.lo reloc.lo section.lo syms.lo targets.lo hash.lo linker.lo srec.lo binary.lo tekhex.lo ihex.lo stabs.lo stab-syms.lo dwarf2.lo
-BFD_LIBS_CFILES = \
- archive.c archures.c bfd.c cache.c coffgen.c corefile.c \
- format.c init.c libbfd.c opncls.c reloc.c \
- section.c syms.c targets.c hash.c linker.c \
- srec.c binary.c tekhex.c ihex.c stabs.c stab-syms.c
+BFD_LIBS_CFILES = archive.c archures.c bfd.c cache.c coffgen.c corefile.c format.c init.c libbfd.c opncls.c reloc.c section.c syms.c targets.c hash.c linker.c srec.c binary.c tekhex.c ihex.c stabs.c stab-syms.c dwarf2.c
# This list is alphabetized to make it easier to keep in sync
# with the decls and initializer in archures.c.
-ALL_MACHINES = \
- cpu-a29k.lo \
- cpu-alpha.lo \
- cpu-arc.lo \
- cpu-arm.lo \
- cpu-avr.lo \
- cpu-d10v.lo \
- cpu-d30v.lo \
- cpu-fr30.lo \
- cpu-h8300.lo \
- cpu-h8500.lo \
- cpu-hppa.lo \
- cpu-i370.lo \
- cpu-i386.lo \
- cpu-i860.lo \
- cpu-i960.lo \
- cpu-m32r.lo \
- cpu-m68k.lo \
- cpu-m88k.lo \
- cpu-m10200.lo \
- cpu-m10300.lo \
- cpu-mcore.lo \
- cpu-mips.lo \
- cpu-ns32k.lo \
- cpu-pj.lo \
- cpu-powerpc.lo \
- cpu-rs6000.lo \
- cpu-sh.lo \
- cpu-sparc.lo \
- cpu-tic30.lo \
- cpu-tic80.lo \
- cpu-v850.lo \
- cpu-vax.lo \
- cpu-we32k.lo \
- cpu-w65.lo \
- cpu-z8k.lo
-
-
-ALL_MACHINES_CFILES = \
- cpu-a29k.c \
- cpu-alpha.c \
- cpu-arc.c \
- cpu-arm.c \
- cpu-avr.c \
- cpu-d10v.c \
- cpu-d30v.c \
- cpu-fr30.c \
- cpu-h8300.c \
- cpu-h8500.c \
- cpu-hppa.c \
- cpu-i370.c \
- cpu-i386.c \
- cpu-i860.c \
- cpu-i960.c \
- cpu-m32r.c \
- cpu-m68k.c \
- cpu-m88k.c \
- cpu-m10200.c \
- cpu-m10300.c \
- cpu-mcore.c \
- cpu-mips.c \
- cpu-ns32k.c \
- cpu-pj.c \
- cpu-powerpc.c \
- cpu-rs6000.c \
- cpu-sh.c \
- cpu-sparc.c \
- cpu-tic30.c \
- cpu-tic80.c \
- cpu-v850.c \
- cpu-vax.c \
- cpu-we32k.c \
- cpu-w65.c \
- cpu-z8k.c
+ALL_MACHINES = cpu-a29k.lo cpu-alpha.lo cpu-arc.lo cpu-arm.lo cpu-avr.lo cpu-cris.lo cpu-d10v.lo cpu-d30v.lo cpu-fr30.lo cpu-h8300.lo cpu-h8500.lo cpu-hppa.lo cpu-ia64.lo cpu-i370.lo cpu-i386.lo cpu-i860.lo cpu-i960.lo cpu-m32r.lo cpu-m68hc11.lo cpu-m68hc12.lo cpu-m68k.lo cpu-m88k.lo cpu-m10200.lo cpu-m10300.lo cpu-mcore.lo cpu-mips.lo cpu-ns32k.lo cpu-pj.lo cpu-powerpc.lo cpu-rs6000.lo cpu-sh.lo cpu-sparc.lo cpu-tic30.lo cpu-tic54x.lo cpu-tic80.lo cpu-v850.lo cpu-vax.lo cpu-we32k.lo cpu-w65.lo cpu-z8k.lo
+
+
+ALL_MACHINES_CFILES = cpu-a29k.c cpu-alpha.c cpu-arc.c cpu-arm.c cpu-avr.c cpu-cris.c cpu-d10v.c cpu-d30v.c cpu-fr30.c cpu-h8300.c cpu-h8500.c cpu-hppa.c cpu-ia64.c cpu-i370.c cpu-i386.c cpu-i860.c cpu-i960.c cpu-m32r.c cpu-m68hc11.c cpu-m68hc12.c cpu-m68k.c cpu-m88k.c cpu-m10200.c cpu-m10300.c cpu-mcore.c cpu-mips.c cpu-ns32k.c cpu-pj.c cpu-powerpc.c cpu-rs6000.c cpu-sh.c cpu-sparc.c cpu-tic30.c cpu-tic54x.c cpu-tic80.c cpu-v850.c cpu-vax.c cpu-we32k.c cpu-w65.c cpu-z8k.c
# The .o files needed by all of the 32 bit vectors that are configured into
# target_vector in targets.c if configured with --enable-targets=all.
-BFD32_BACKENDS = \
- aout-adobe.lo \
- aout-arm.lo \
- aout-ns32k.lo \
- aout-sparcle.lo \
- aout-tic30.lo \
- aout0.lo \
- aout32.lo \
- armnetbsd.lo \
- bout.lo \
- cf-i386lynx.lo \
- cf-m68klynx.lo \
- cf-sparclynx.lo \
- coff-a29k.lo \
- coff-apollo.lo \
- coff-arm.lo \
- coff-aux.lo \
- coff-h8300.lo \
- coff-h8500.lo \
- coff-i386.lo \
- coff-go32.lo \
- coff-i860.lo \
- coff-i960.lo \
- coff-m68k.lo \
- coff-m88k.lo \
- coff-mips.lo \
- coff-pmac.lo \
- coff-rs6000.lo \
- coff-sh.lo \
- coff-sparc.lo \
- coff-stgo32.lo \
- coff-svm68k.lo \
- coff-tic30.lo \
- coff-tic80.lo \
- coff-u68k.lo \
- coff-we32k.lo \
- coff-w65.lo \
- coff-z8k.lo \
- cofflink.lo \
- dwarf1.lo \
- dwarf2.lo \
- ecoff.lo \
- ecofflink.lo \
- elf.lo \
- elf32-arc.lo \
- elfarm-oabi.lo \
- elfarm-nabi.lo \
- elf32-avr.lo \
- elf32-d10v.lo \
- elf32-d30v.lo \
- elf32-fr30.lo \
- elf32-gen.lo \
- elf32-i370.lo \
- elf32-i386.lo \
- elf32-i860.lo \
- elf32-i960.lo \
- elf32-m32r.lo \
- elf32-m68k.lo \
- elf32-m88k.lo \
- elf-m10200.lo \
- elf-m10300.lo \
- elf32-mcore.lo \
- elf32-mips.lo \
- elf32-pj.lo \
- elf32-ppc.lo \
- elf32-sh.lo \
- elf32-sparc.lo \
- elf32-v850.lo \
- elf32.lo \
- elflink.lo \
- epoc-pe-arm.lo \
- epoc-pei-arm.lo \
- hp300bsd.lo \
- hp300hpux.lo \
- som.lo \
- i386aout.lo \
- i386bsd.lo \
- i386dynix.lo \
- i386freebsd.lo \
- i386linux.lo \
- i386lynx.lo \
- i386msdos.lo \
- i386netbsd.lo \
- i386mach3.lo \
- i386os9k.lo \
- ieee.lo \
- m68k4knetbsd.lo \
- m68klinux.lo \
- m68klynx.lo \
- m68knetbsd.lo \
- m88kmach3.lo \
- mipsbsd.lo \
- newsos3.lo \
- nlm.lo \
- nlm32-i386.lo \
- nlm32-sparc.lo \
- nlm32-ppc.lo \
- nlm32.lo \
- ns32knetbsd.lo \
- oasys.lo \
- pc532-mach.lo \
- pe-arm.lo \
- pei-arm.lo \
- pe-i386.lo \
- pei-i386.lo \
- pe-mcore.lo \
- pei-mcore.lo \
- pe-ppc.lo \
- pei-ppc.lo \
- pe-sh.lo \
- pei-sh.lo \
- pe-mips.lo \
- pei-mips.lo \
- peigen.lo \
- ppcboot.lo \
- reloc16.lo \
- riscix.lo \
- sparclinux.lo \
- sparclynx.lo \
- sparcnetbsd.lo \
- sunos.lo \
- vaxnetbsd.lo \
- versados.lo \
- vms.lo \
- vms-gsd.lo \
- vms-hdr.lo \
- vms-misc.lo \
- vms-tir.lo \
- xcofflink.lo
-
-
-BFD32_BACKENDS_CFILES = \
- aout-adobe.c \
- aout-arm.c \
- aout-ns32k.c \
- aout-sparcle.c \
- aout-tic30.c \
- aout0.c \
- aout32.c \
- armnetbsd.c \
- bout.c \
- cf-i386lynx.c \
- cf-m68klynx.c \
- cf-sparclynx.c \
- coff-a29k.c \
- coff-apollo.c \
- coff-arm.c \
- coff-aux.c \
- coff-h8300.c \
- coff-h8500.c \
- coff-i386.c \
- coff-i860.c \
- coff-go32.c \
- coff-i960.c \
- coff-m68k.c \
- coff-m88k.c \
- coff-mips.c \
- coff-pmac.c \
- coff-rs6000.c \
- coff-sh.c \
- coff-sparc.c \
- coff-stgo32.c \
- coff-svm68k.c \
- coff-tic30.c \
- coff-tic80.c \
- coff-u68k.c \
- coff-we32k.c \
- coff-w65.c \
- coff-z8k.c \
- cofflink.c \
- dwarf1.c \
- dwarf2.c \
- ecoff.c \
- ecofflink.c \
- elf.c \
- elf32-arc.c \
- elfarm-oabi.c \
- elfarm-nabi.c \
- elf32-avr.c \
- elf32-d10v.c \
- elf32-d30v.c \
- elf32-fr30.c \
- elf32-gen.c \
- elf32-i370.c \
- elf32-i386.c \
- elf32-i860.c \
- elf32-i960.c \
- elf32-m32r.c \
- elf32-m68k.c \
- elf32-m88k.c \
- elf-m10200.c \
- elf-m10300.c \
- elf32-mcore.c \
- elf32-mips.c \
- elf32-pj.c \
- elf32-ppc.c \
- elf32-sh.c \
- elf32-sparc.c \
- elf32-v850.c \
- elf32.c \
- elflink.c \
- epoc-pe-arm.c \
- epoc-pei-arm.c \
- hp300bsd.c \
- hp300hpux.c \
- som.c \
- i386aout.c \
- i386bsd.c \
- i386dynix.c \
- i386freebsd.c \
- i386linux.c \
- i386lynx.c \
- i386msdos.c \
- i386netbsd.c \
- i386mach3.c \
- i386os9k.c \
- ieee.c \
- m68k4knetbsd.c \
- m68klinux.c \
- m68klynx.c \
- m68knetbsd.c \
- m88kmach3.c \
- mipsbsd.c \
- newsos3.c \
- nlm.c \
- nlm32-i386.c \
- nlm32-sparc.c \
- nlm32-ppc.c \
- nlm32.c \
- ns32knetbsd.c \
- oasys.c \
- pc532-mach.c \
- pe-arm.c \
- pei-arm.c \
- pe-i386.c \
- pei-i386.c \
- pe-mcore.c \
- pei-mcore.c \
- pe-ppc.c \
- pei-ppc.c \
- pe-sh.c \
- pei-sh.c \
- pe-mips.c \
- pei-mips.c \
- peigen.c \
- ppcboot.c \
- reloc16.c \
- riscix.c \
- sparclinux.c \
- sparclynx.c \
- sparcnetbsd.c \
- sunos.c \
- vaxnetbsd.c \
- versados.c \
- vms.c \
- vms-gsd.c \
- vms-hdr.c \
- vms-misc.c \
- vms-tir.c \
- xcofflink.c
+BFD32_BACKENDS = aout-adobe.lo aout-arm.lo aout-cris.lo aout-ns32k.lo aout-sparcle.lo aout-tic30.lo aout0.lo aout32.lo armnetbsd.lo bout.lo cf-i386lynx.lo cf-m68klynx.lo cf-sparclynx.lo coff-a29k.lo coff-apollo.lo coff-arm.lo coff-aux.lo coff-h8300.lo coff-h8500.lo coff-i386.lo coff-go32.lo coff-i860.lo coff-i960.lo coff-m68k.lo coff-m88k.lo coff-mips.lo coff-pmac.lo coff-rs6000.lo coff-sh.lo coff-sparc.lo coff-stgo32.lo coff-svm68k.lo coff-tic30.lo coff-tic54x.lo coff-tic80.lo coff-u68k.lo coff-we32k.lo coff-w65.lo coff-z8k.lo cofflink.lo dwarf1.lo ecoff.lo ecofflink.lo efi-app-ia32.lo elf.lo elf32-arc.lo elfarm-oabi.lo elfarm-nabi.lo elf32-avr.lo elf32-cris.lo elf32-d10v.lo elf32-d30v.lo elf32-fr30.lo elf32-gen.lo elf32-hppa.lo elf32-i370.lo elf32-i386.lo elf32-i860.lo elf32-i960.lo elf32-ia64.lo elf32-m32r.lo elf32-m68hc11.lo elf32-m68hc12.lo elf32-m68k.lo elf32-m88k.lo elf-m10200.lo elf-m10300.lo elf32-mcore.lo elf32-mips.lo elf32-pj.lo elf32-ppc.lo elf32-sh.lo elf32-sh-lin.lo elf32-sparc.lo elf32-v850.lo elf32.lo elflink.lo epoc-pe-arm.lo epoc-pei-arm.lo hp300bsd.lo hp300hpux.lo som.lo i386aout.lo i386bsd.lo i386dynix.lo i386freebsd.lo i386linux.lo i386lynx.lo i386msdos.lo i386netbsd.lo i386mach3.lo i386os9k.lo ieee.lo m68k4knetbsd.lo m68klinux.lo m68klynx.lo m68knetbsd.lo m88kmach3.lo mipsbsd.lo newsos3.lo nlm.lo nlm32-i386.lo nlm32-sparc.lo nlm32-ppc.lo nlm32.lo ns32knetbsd.lo oasys.lo pc532-mach.lo pe-arm.lo pei-arm.lo pe-i386.lo pei-i386.lo pe-mcore.lo pei-mcore.lo pe-ppc.lo pei-ppc.lo pe-sh.lo pei-sh.lo pe-mips.lo pei-mips.lo peigen.lo ppcboot.lo reloc16.lo riscix.lo sparclinux.lo sparclynx.lo sparcnetbsd.lo sunos.lo vaxnetbsd.lo versados.lo vms.lo vms-gsd.lo vms-hdr.lo vms-misc.lo vms-tir.lo xcofflink.lo
+
+
+BFD32_BACKENDS_CFILES = aout-adobe.c aout-arm.c aout-cris.c aout-ns32k.c aout-sparcle.c aout-tic30.c aout0.c aout32.c armnetbsd.c bout.c cf-i386lynx.c cf-m68klynx.c cf-sparclynx.c coff-a29k.c coff-apollo.c coff-arm.c coff-aux.c coff-h8300.c coff-h8500.c coff-i386.c coff-i860.c coff-go32.c coff-i960.c coff-m68k.c coff-m88k.c coff-mips.c coff-pmac.c coff-rs6000.c coff-sh.c coff-sparc.c coff-stgo32.c coff-svm68k.c coff-tic30.c coff-tic54x.c coff-tic80.c coff-u68k.c coff-we32k.c coff-w65.c coff-z8k.c cofflink.c dwarf1.c ecoff.c ecofflink.c efi-app-ia32.c elf.c elf32-arc.c elfarm-oabi.c elfarm-nabi.c elf32-avr.c elf32-cris.c elf32-d10v.c elf32-d30v.c elf32-fr30.c elf32-gen.c elf32-hppa.c elf32-i370.c elf32-i386.c elf32-i860.c elf32-i960.c elf32-m32r.c elf32-m68k.c elf32-m68hc11.c elf32-m68hc12.c elf32-m88k.c elf-m10200.c elf-m10300.c elf32-mcore.c elf32-mips.c elf32-pj.c elf32-ppc.c elf32-sh.c elf32-sh-lin.c elf32-sparc.c elf32-v850.c elf32.c elflink.c epoc-pe-arm.c epoc-pei-arm.c hp300bsd.c hp300hpux.c som.c i386aout.c i386bsd.c i386dynix.c i386freebsd.c i386linux.c i386lynx.c i386msdos.c i386netbsd.c i386mach3.c i386os9k.c ieee.c m68k4knetbsd.c m68klinux.c m68klynx.c m68knetbsd.c m88kmach3.c mipsbsd.c newsos3.c nlm.c nlm32-i386.c nlm32-sparc.c nlm32-ppc.c nlm32.c ns32knetbsd.c oasys.c pc532-mach.c pe-arm.c pei-arm.c pe-i386.c pei-i386.c pe-mcore.c pei-mcore.c pe-ppc.c pei-ppc.c pe-sh.c pei-sh.c pe-mips.c pei-mips.c peigen.c ppcboot.c reloc16.c riscix.c sparclinux.c sparclynx.c sparcnetbsd.c sunos.c vaxnetbsd.c versados.c vms.c vms-gsd.c vms-hdr.c vms-misc.c vms-tir.c xcofflink.c
# The .o files needed by all of the 64 bit vectors that are configured into
# target_vector in targets.c if configured with --enable-targets=all
# and --enable-64-bit-bfd.
-BFD64_BACKENDS = \
- aout64.lo \
- coff-alpha.lo \
- demo64.lo \
- elf64-alpha.lo \
- elf64-gen.lo \
- elf64-mips.lo \
- elf64-sparc.lo \
- elf64.lo \
- nlm32-alpha.lo \
- nlm64.lo
-
-
-BFD64_BACKENDS_CFILES = \
- aout64.c \
- coff-alpha.c \
- demo64.c \
- elf64-alpha.c \
- elf64-gen.c \
- elf64-mips.c \
- elf64-sparc.c \
- elf64.c \
- nlm32-alpha.c \
- nlm64.c
-
-
-OPTIONAL_BACKENDS = \
- aix386-core.lo \
- hpux-core.lo \
- irix-core.lo \
- lynx-core.lo \
- osf-core.lo \
- sco5-core.lo \
- trad-core.lo \
- cisco-core.lo
-
-
-OPTIONAL_BACKENDS_CFILES = \
- aix386-core.c \
- hpux-core.c \
- irix-core.c \
- lynx-core.c \
- osf-core.c \
- sco5-core.c \
- trad-core.c \
- cisco-core.c
+BFD64_BACKENDS = aout64.lo coff-alpha.lo coff64-rs6000.lo demo64.lo efi-app-ia64.lo elf64-x86-64.lo elf64-alpha.lo elf64-hppa.lo elf64-ia64.lo elf64-gen.lo elf64-mips.lo elf64-sparc.lo elf64.lo nlm32-alpha.lo nlm64.lo
+
+
+BFD64_BACKENDS_CFILES = aout64.c coff-alpha.c coff64-rs6000.c demo64.c efi-app-ia64.c elf64-x86-64.c elf64-alpha.c elf64-hppa.c elf64-ia64.c elf64-gen.c elf64-mips.c elf64-sparc.c elf64.c nlm32-alpha.c nlm64.c
+
+
+OPTIONAL_BACKENDS = aix386-core.lo hpux-core.lo irix-core.lo lynx-core.lo osf-core.lo sco5-core.lo trad-core.lo cisco-core.lo
+
+
+OPTIONAL_BACKENDS_CFILES = aix386-core.c hpux-core.c irix-core.c lynx-core.c osf-core.c sco5-core.c trad-core.c cisco-core.c
# These are defined by configure.in:
@@ -552,26 +191,13 @@ TDEFAULTS = @tdefaults@
INCLUDES = -D_GNU_SOURCE @HDEFINES@ @COREFLAG@ @TDEFINES@ $(CSEARCH) $(CSWITCHES) -I$(srcdir)/../intl -I../intl
# C source files that correspond to .o's.
-CFILES = \
- $(BFD_LIBS_CFILES) \
- $(ALL_MACHINES_CFILES) \
- $(BFD32_BACKENDS_CFILES) \
- $(BFD64_BACKENDS_CFILES) \
- $(OPTIONAL_BACKENDS_CFILES)
+CFILES = $(BFD_LIBS_CFILES) $(ALL_MACHINES_CFILES) $(BFD32_BACKENDS_CFILES) $(BFD64_BACKENDS_CFILES) $(OPTIONAL_BACKENDS_CFILES)
-SOURCE_HFILES = \
- aout-target.h aoutf1.h aoutx.h coffcode.h coffswap.h \
- ecoffswap.h elf32-arm.h elfcode.h elfcore.h \
- elflink.h freebsd.h genlink.h go32stub.h libaout.h \
- libbfd.h libcoff.h libecoff.h elf-bfd.h libhppa.h libieee.h \
- libnlm.h liboasys.h libpei.h netbsd.h nlm-target.h nlmcode.h \
- nlmswap.h ns32k.h peicode.h som.h vms.h
+SOURCE_HFILES = aout-target.h aoutf1.h aoutx.h coffcode.h coffswap.h ecoffswap.h elf-bfd.h elf-hppa.h elf32-arm.h elf32-hppa.h elf64-hppa.h elfcode.h elfcore.h elflink.h freebsd.h genlink.h go32stub.h libaout.h libbfd.h libcoff.h libecoff.h libhppa.h libieee.h libnlm.h liboasys.h libpei.h netbsd.h nlm-target.h nlmcode.h nlmswap.h ns32k.h peicode.h som.h vms.h xcoff-target.h
-HFILES = \
- elf32-target.h elf64-target.h targmatch.h \
- $(SOURCE_HFILES)
+HFILES = elf32-target.h elf64-target.h targmatch.h $(SOURCE_HFILES)
POTFILES = $(CFILES) $(SOURCE_HFILES)
@@ -598,18 +224,15 @@ libbfd_a_SOURCES =
BFD_H_DEPS = $(INCDIR)/ansidecl.h
LOCAL_H_DEPS = libbfd.h sysdep.h config.h
-BFD_H_FILES = bfd-in.h init.c opncls.c libbfd.c section.c archures.c \
- reloc.c syms.c bfd.c archive.c corefile.c targets.c format.c
+BFD_H_FILES = bfd-in.h init.c opncls.c libbfd.c section.c archures.c reloc.c syms.c bfd.c archive.c corefile.c targets.c format.c
LIBBFD_H_FILES = libbfd-in.h init.c libbfd.c cache.c reloc.c archures.c elf.c
LIBCOFF_H_FILES = libcoff-in.h coffcode.h
-MOSTLYCLEANFILES = elf32-target.h elf64-target.h ofiles stamp-ofiles \
- targmatch.h
+MOSTLYCLEANFILES = elf32-target.h elf64-target.h ofiles stamp-ofiles targmatch.h
-CLEANFILES = bfd.h dep.sed stmp-bfd-h DEP DEP1 DEP2 libbfd.a stamp-lib \
- stmp-bin2-h stmp-lbfd-h stmp-lcoff-h
+CLEANFILES = bfd.h dep.sed stmp-bfd-h DEP DEPA DEP1 DEP2 libbfd.a stamp-lib stmp-bin2-h stmp-lbfd-h stmp-lcoff-h
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
@@ -629,7 +252,7 @@ LTLIBRARIES = $(lib_LTLIBRARIES)
libbfd_la_OBJECTS = archive.lo archures.lo bfd.lo cache.lo coffgen.lo \
corefile.lo format.lo init.lo libbfd.lo opncls.lo reloc.lo section.lo \
syms.lo targets.lo hash.lo linker.lo srec.lo binary.lo tekhex.lo \
-ihex.lo stabs.lo stab-syms.lo
+ihex.lo stabs.lo stab-syms.lo dwarf2.lo
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)
@@ -649,7 +272,7 @@ OBJECTS = $(libbfd_a_OBJECTS) $(libbfd_la_OBJECTS)
all: all-redirect
.SUFFIXES:
-.SUFFIXES: .S .c .lo .o .s
+.SUFFIXES: .S .c .lo .o .obj .s
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile
@@ -704,6 +327,11 @@ maintainer-clean-noinstLIBRARIES:
.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 $<
@@ -712,6 +340,7 @@ maintainer-clean-noinstLIBRARIES:
mostlyclean-compile:
-rm -f *.o core *.core
+ -rm -f *.$(OBJEXT)
clean-compile:
@@ -897,7 +526,7 @@ 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; \
+ cp -pr $$/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
@@ -1070,6 +699,16 @@ elf64-target.h : elfxx-target.h
rm -f elf64-target.h
sed -e s/NN/64/g < $(srcdir)/elfxx-target.h > elf64-target.new
mv -f elf64-target.new elf64-target.h
+
+elf32-ia64.c : elfxx-ia64.c
+ rm -f elf32-ia64.c
+ sed -e s/NN/32/g < $(srcdir)/elfxx-ia64.c > elf32-ia64.new
+ mv -f elf32-ia64.new elf32-ia64.c
+
+elf64-ia64.c : elfxx-ia64.c
+ rm -f elf64-ia64.c
+ sed -e s/NN/64/g < $(srcdir)/elfxx-ia64.c > elf64-ia64.new
+ mv -f elf64-ia64.new elf64-ia64.c
$(BFD_LIBS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
$(BFD_MACHINES): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
$(BFD_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
@@ -1078,17 +717,22 @@ $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
# Install BFD include file, and others that it needs.
install-data-local: $(BFD_H)
@$(NORMAL_INSTALL)
- $(mkinstalldirs) $(includedir)
- $(INSTALL_DATA) $(BFD_H) $(includedir)/bfd.h
- $(INSTALL_DATA) $(INCDIR)/ansidecl.h $(includedir)/ansidecl.h
- $(INSTALL_DATA) $(INCDIR)/bfdlink.h $(includedir)/bfdlink.h
+ $(mkinstalldirs) $(DESTDIR)$(includedir)
+ $(INSTALL_DATA) $(BFD_H) $(DESTDIR)$(includedir)/bfd.h
+ $(INSTALL_DATA) $(INCDIR)/ansidecl.h $(DESTDIR)$(includedir)/ansidecl.h
+ $(INSTALL_DATA) $(INCDIR)/bfdlink.h $(DESTDIR)$(includedir)/bfdlink.h
# Have to get rid of DEP1 here so that "$?" later includes all of $(CFILES).
DEP: dep.sed $(CFILES) $(HFILES) bfd.h
rm -f DEP1
$(MAKE) MKDEP="$(MKDEP)" DEP1
- sed -f dep.sed < DEP1 > $@
- echo '# IF YOU PUT ANYTHING HERE IT WILL GO AWAY' >> $@
+ 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)
echo '# DO NOT DELETE THIS LINE -- mkdep uses it.' > DEP2
@@ -1173,483 +817,601 @@ stmp-lcoff-h: $(LIBCOFF_H_FILES)
config.status: $(srcdir)/configure $(srcdir)/config.bfd $(srcdir)/configure.host
$(SHELL) ./config.status --recheck
-elfarm-oabi.lo: elfarm-oabi.c elf32-arm.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-
-elfarm-nabi.lo: elfarm-nabi.c elf32-arm.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-
# 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.
-archive.lo: archive.c $(INCDIR)/aout/ar.h $(INCDIR)/aout/ranlib.h
-archures.lo: archures.c
-bfd.lo: bfd.c $(INCDIR)/libiberty.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h libcoff.h \
- libecoff.h $(INCDIR)/coff/ecoff.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
-cache.lo: cache.c
-coffgen.lo: coffgen.c $(INCDIR)/coff/internal.h libcoff.h \
- $(INCDIR)/bfdlink.h
-corefile.lo: corefile.c
-format.lo: format.c
-init.lo: init.c
-libbfd.lo: libbfd.c
-opncls.lo: opncls.c $(INCDIR)/objalloc.h
-reloc.lo: reloc.c $(INCDIR)/bfdlink.h
-section.lo: section.c $(INCDIR)/bfdlink.h
-syms.lo: syms.c $(INCDIR)/bfdlink.h $(INCDIR)/aout/stab_gnu.h \
+archive.lo: archive.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h \
+ $(INCDIR)/aout/ranlib.h
+archures.lo: archures.c $(INCDIR)/filenames.h
+bfd.lo: bfd.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h \
+ libcoff.h libecoff.h $(INCDIR)/coff/ecoff.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
+cache.lo: cache.c $(INCDIR)/filenames.h
+coffgen.lo: coffgen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
+ libcoff.h $(INCDIR)/bfdlink.h
+corefile.lo: corefile.c $(INCDIR)/filenames.h
+format.lo: format.c $(INCDIR)/filenames.h
+init.lo: init.c $(INCDIR)/filenames.h
+libbfd.lo: libbfd.c $(INCDIR)/filenames.h
+opncls.lo: opncls.c $(INCDIR)/filenames.h $(INCDIR)/objalloc.h
+reloc.lo: reloc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
+section.lo: section.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h
+syms.lo: syms.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
+targets.lo: targets.c $(INCDIR)/filenames.h $(INCDIR)/fnmatch.h \
+ targmatch.h
+hash.lo: hash.c $(INCDIR)/filenames.h $(INCDIR)/objalloc.h
+linker.lo: linker.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h
+srec.lo: srec.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+binary.lo: binary.c $(INCDIR)/filenames.h
+tekhex.lo: tekhex.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+ihex.lo: ihex.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+stabs.lo: stabs.c $(INCDIR)/filenames.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def
-targets.lo: targets.c $(INCDIR)/fnmatch.h targmatch.h
-hash.lo: hash.c $(INCDIR)/objalloc.h
-linker.lo: linker.c $(INCDIR)/bfdlink.h genlink.h
-srec.lo: srec.c $(INCDIR)/libiberty.h
-binary.lo: binary.c
-tekhex.lo: tekhex.c $(INCDIR)/libiberty.h
-ihex.lo: ihex.c $(INCDIR)/libiberty.h
-stabs.lo: stabs.c $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
stab-syms.lo: stab-syms.c libaout.h $(INCDIR)/bfdlink.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab.def
-cpu-a29k.lo: cpu-a29k.c
-cpu-alpha.lo: cpu-alpha.c
-cpu-arc.lo: cpu-arc.c
-cpu-arm.lo: cpu-arm.c
-cpu-avr.lo: cpu-avr.c
-cpu-d10v.lo: cpu-d10v.c
-cpu-d30v.lo: cpu-d30v.c
-cpu-fr30.lo: cpu-fr30.c
-cpu-h8300.lo: cpu-h8300.c
-cpu-h8500.lo: cpu-h8500.c
-cpu-hppa.lo: cpu-hppa.c
-cpu-i370.lo: cpu-i370.c
-cpu-i386.lo: cpu-i386.c
-cpu-i860.lo: cpu-i860.c
-cpu-i960.lo: cpu-i960.c
-cpu-m32r.lo: cpu-m32r.c
-cpu-m68k.lo: cpu-m68k.c
-cpu-m88k.lo: cpu-m88k.c
-cpu-m10200.lo: cpu-m10200.c
-cpu-m10300.lo: cpu-m10300.c
-cpu-mcore.lo: cpu-mcore.c
-cpu-mips.lo: cpu-mips.c
-cpu-ns32k.lo: cpu-ns32k.c ns32k.h
-cpu-pj.lo: cpu-pj.c
-cpu-powerpc.lo: cpu-powerpc.c
-cpu-rs6000.lo: cpu-rs6000.c
-cpu-sh.lo: cpu-sh.c
-cpu-sparc.lo: cpu-sparc.c
-cpu-tic30.lo: cpu-tic30.c
-cpu-tic80.lo: cpu-tic80.c
-cpu-v850.lo: cpu-v850.c
-cpu-vax.lo: cpu-vax.c
-cpu-we32k.lo: cpu-we32k.c
-cpu-w65.lo: cpu-w65.c
-cpu-z8k.lo: cpu-z8k.c
-aout-adobe.lo: aout-adobe.c $(INCDIR)/aout/adobe.h \
+cpu-a29k.lo: cpu-a29k.c $(INCDIR)/filenames.h
+cpu-alpha.lo: cpu-alpha.c $(INCDIR)/filenames.h
+cpu-arc.lo: cpu-arc.c $(INCDIR)/filenames.h
+cpu-arm.lo: cpu-arm.c $(INCDIR)/filenames.h
+cpu-avr.lo: cpu-avr.c $(INCDIR)/filenames.h
+cpu-cris.lo: cpu-cris.c $(INCDIR)/filenames.h
+cpu-d10v.lo: cpu-d10v.c $(INCDIR)/filenames.h
+cpu-d30v.lo: cpu-d30v.c $(INCDIR)/filenames.h
+cpu-fr30.lo: cpu-fr30.c $(INCDIR)/filenames.h
+cpu-h8300.lo: cpu-h8300.c $(INCDIR)/filenames.h
+cpu-h8500.lo: cpu-h8500.c $(INCDIR)/filenames.h
+cpu-hppa.lo: cpu-hppa.c $(INCDIR)/filenames.h
+cpu-ia64.lo: cpu-ia64.c $(INCDIR)/filenames.h cpu-ia64-opc.c \
+ $(srcdir)/../opcodes/ia64-opc.h $(INCDIR)/opcode/ia64.h
+cpu-i370.lo: cpu-i370.c $(INCDIR)/filenames.h
+cpu-i386.lo: cpu-i386.c $(INCDIR)/filenames.h
+cpu-i860.lo: cpu-i860.c $(INCDIR)/filenames.h
+cpu-i960.lo: cpu-i960.c $(INCDIR)/filenames.h
+cpu-m32r.lo: cpu-m32r.c $(INCDIR)/filenames.h
+cpu-m68hc11.lo: cpu-m68hc11.c $(INCDIR)/filenames.h
+cpu-m68hc12.lo: cpu-m68hc12.c $(INCDIR)/filenames.h
+cpu-m68k.lo: cpu-m68k.c $(INCDIR)/filenames.h
+cpu-m88k.lo: cpu-m88k.c $(INCDIR)/filenames.h
+cpu-m10200.lo: cpu-m10200.c $(INCDIR)/filenames.h
+cpu-m10300.lo: cpu-m10300.c $(INCDIR)/filenames.h
+cpu-mcore.lo: cpu-mcore.c $(INCDIR)/filenames.h
+cpu-mips.lo: cpu-mips.c $(INCDIR)/filenames.h
+cpu-ns32k.lo: cpu-ns32k.c $(INCDIR)/filenames.h ns32k.h
+cpu-pj.lo: cpu-pj.c $(INCDIR)/filenames.h
+cpu-powerpc.lo: cpu-powerpc.c $(INCDIR)/filenames.h
+cpu-rs6000.lo: cpu-rs6000.c $(INCDIR)/filenames.h
+cpu-sh.lo: cpu-sh.c $(INCDIR)/filenames.h
+cpu-sparc.lo: cpu-sparc.c $(INCDIR)/filenames.h
+cpu-tic30.lo: cpu-tic30.c $(INCDIR)/filenames.h
+cpu-tic54x.lo: cpu-tic54x.c $(INCDIR)/filenames.h
+cpu-tic80.lo: cpu-tic80.c $(INCDIR)/filenames.h
+cpu-v850.lo: cpu-v850.c $(INCDIR)/filenames.h
+cpu-vax.lo: cpu-vax.c $(INCDIR)/filenames.h
+cpu-we32k.lo: cpu-we32k.c $(INCDIR)/filenames.h
+cpu-w65.lo: cpu-w65.c $(INCDIR)/filenames.h
+cpu-z8k.lo: cpu-z8k.c $(INCDIR)/filenames.h
+aout-adobe.lo: aout-adobe.c $(INCDIR)/filenames.h $(INCDIR)/aout/adobe.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def libaout.h \
$(INCDIR)/bfdlink.h
-aout-arm.lo: aout-arm.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aoutx.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
+aout-arm.lo: aout-arm.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aoutx.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
+aout-cris.lo: aout-cris.c aout32.c aoutx.h $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
aout-ns32k.lo: aout-ns32k.c $(INCDIR)/aout/aout64.h \
ns32k.h libaout.h $(INCDIR)/bfdlink.h
aout-sparcle.lo: aout-sparcle.c $(INCDIR)/bfdlink.h \
- libaout.h aoutf1.h $(INCDIR)/aout/sun4.h $(INCDIR)/aout/aout64.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
- aout-target.h
-aout-tic30.lo: aout-tic30.c libaout.h $(INCDIR)/bfdlink.h \
+ libaout.h aoutf1.h $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h \
$(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h aoutx.h
-aout0.lo: aout0.c aoutf1.h $(INCDIR)/aout/sun4.h libaout.h \
+ $(INCDIR)/aout/ar.h aout-target.h
+aout-tic30.lo: aout-tic30.c $(INCDIR)/filenames.h libaout.h \
$(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
-aout32.lo: aout32.c aoutx.h $(INCDIR)/bfdlink.h libaout.h \
- $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h
-armnetbsd.lo: armnetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aoutx.h
+aout0.lo: aout0.c aoutf1.h $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h \
+ libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
+aout32.lo: aout32.c aoutx.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ libaout.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-bout.lo: bout.c $(INCDIR)/bfdlink.h genlink.h $(INCDIR)/bout.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def libaout.h
-cf-i386lynx.lo: cf-i386lynx.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
- coffcode.h coffswap.h
-cf-m68klynx.lo: cf-m68klynx.c coff-m68k.c $(INCDIR)/coff/m68k.h \
+armnetbsd.lo: armnetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+bout.lo: bout.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h $(INCDIR)/bout.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def libaout.h
+cf-i386lynx.lo: cf-i386lynx.c $(INCDIR)/filenames.h \
+ coff-i386.c $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+cf-m68klynx.lo: cf-m68klynx.c coff-m68k.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+cf-sparclynx.lo: cf-sparclynx.c coff-sparc.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/sparc.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-a29k.lo: coff-a29k.c $(INCDIR)/filenames.h $(INCDIR)/coff/a29k.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-cf-sparclynx.lo: cf-sparclynx.c coff-sparc.c $(INCDIR)/coff/sparc.h \
+coff-apollo.lo: coff-apollo.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/apollo.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-arm.lo: coff-arm.c $(INCDIR)/filenames.h $(INCDIR)/coff/arm.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-a29k.lo: coff-a29k.c $(INCDIR)/coff/a29k.h $(INCDIR)/coff/internal.h \
+coff-aux.lo: coff-aux.c $(INCDIR)/filenames.h $(INCDIR)/coff/aux-coff.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h coff-m68k.c \
libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-apollo.lo: coff-apollo.c $(INCDIR)/coff/apollo.h \
+coff-h8300.lo: coff-h8300.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h $(INCDIR)/coff/h8300.h $(INCDIR)/coff/internal.h \
+ libcoff.h coffcode.h coffswap.h
+coff-h8500.lo: coff-h8500.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/h8500.h $(INCDIR)/coff/internal.h libcoff.h \
+ coffcode.h coffswap.h
+coff-i386.lo: coff-i386.c $(INCDIR)/filenames.h $(INCDIR)/coff/i386.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-arm.lo: coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-aux.lo: coff-aux.c $(INCDIR)/coff/aux-coff.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/m68k.h coff-m68k.c libcoff.h $(INCDIR)/bfdlink.h \
+coff-i860.lo: coff-i860.c $(INCDIR)/filenames.h $(INCDIR)/coff/i860.h \
+ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-h8300.lo: coff-h8300.c $(INCDIR)/bfdlink.h genlink.h \
- $(INCDIR)/coff/h8300.h $(INCDIR)/coff/internal.h libcoff.h \
+coff-go32.lo: coff-go32.c coff-i386.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-i960.lo: coff-i960.c $(INCDIR)/filenames.h $(INCDIR)/coff/i960.h \
+ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-h8500.lo: coff-h8500.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/h8500.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-i386.lo: coff-i386.c $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-i860.lo: coff-i860.c $(INCDIR)/coff/i860.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-go32.lo: coff-go32.c coff-i386.c $(INCDIR)/coff/i386.h \
+coff-m68k.lo: coff-m68k.c $(INCDIR)/filenames.h $(INCDIR)/coff/m68k.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-i960.lo: coff-i960.c $(INCDIR)/coff/i960.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-m68k.lo: coff-m68k.c $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-m88k.lo: coff-m88k.c $(INCDIR)/coff/m88k.h $(INCDIR)/coff/internal.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h
-coff-mips.lo: coff-mips.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- $(INCDIR)/coff/mips.h libcoff.h libecoff.h coffswap.h \
- ecoffswap.h
-coff-pmac.lo: coff-pmac.c coff-rs6000.c $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/rs6000.h libcoff.h $(INCDIR)/bfdlink.h \
+coff-m88k.lo: coff-m88k.c $(INCDIR)/filenames.h $(INCDIR)/coff/m88k.h \
+ $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-rs6000.lo: coff-rs6000.c $(INCDIR)/coff/internal.h \
+coff-mips.lo: coff-mips.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h libcoff.h \
+ libecoff.h coffswap.h ecoffswap.h
+coff-pmac.lo: coff-pmac.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/rs6000.h libcoff.h $(INCDIR)/bfdlink.h \
+ xcoff-target.h coffcode.h coffswap.h
+coff-rs6000.lo: coff-rs6000.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h libcoff.h \
+ $(INCDIR)/bfdlink.h xcoff-target.h coffcode.h coffswap.h
+coff-sh.lo: coff-sh.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/sh.h $(INCDIR)/coff/internal.h libcoff.h \
coffcode.h coffswap.h
-coff-sh.lo: coff-sh.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-sparc.lo: coff-sparc.c $(INCDIR)/coff/sparc.h \
+coff-sparc.lo: coff-sparc.c $(INCDIR)/filenames.h $(INCDIR)/coff/sparc.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-stgo32.lo: coff-stgo32.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/go32exe.h \
+coff-stgo32.lo: coff-stgo32.c coff-i386.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/go32exe.h \
libcoff.h $(INCDIR)/bfdlink.h coffcode.h coffswap.h \
go32stub.h
-coff-svm68k.lo: coff-svm68k.c coff-m68k.c $(INCDIR)/coff/m68k.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
+coff-svm68k.lo: coff-svm68k.c coff-m68k.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-tic30.lo: coff-tic30.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/tic30.h $(INCDIR)/coff/internal.h libcoff.h \
coffcode.h coffswap.h
-coff-tic30.lo: coff-tic30.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic30.h \
+coff-tic54x.lo: coff-tic54x.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h \
$(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-tic80.lo: coff-tic80.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/tic80.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-u68k.lo: coff-u68k.c coff-m68k.c $(INCDIR)/coff/m68k.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
+coff-tic80.lo: coff-tic80.c $(INCDIR)/bfdlink.h $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/tic80.h $(INCDIR)/coff/internal.h libcoff.h \
coffcode.h coffswap.h
-coff-we32k.lo: coff-we32k.c $(INCDIR)/coff/we32k.h \
+coff-u68k.lo: coff-u68k.c coff-m68k.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/m68k.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h coffcode.h coffswap.h
+coff-we32k.lo: coff-we32k.c $(INCDIR)/filenames.h $(INCDIR)/coff/we32k.h \
$(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h \
coffcode.h coffswap.h
-coff-w65.lo: coff-w65.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/w65.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-coff-z8k.lo: coff-z8k.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/z8k.h \
- $(INCDIR)/coff/internal.h libcoff.h coffcode.h coffswap.h
-cofflink.lo: cofflink.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- libcoff.h
-dwarf1.lo: dwarf1.c $(INCDIR)/libiberty.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf.h
-dwarf2.lo: dwarf2.c $(INCDIR)/libiberty.h elf-bfd.h \
+coff-w65.lo: coff-w65.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/w65.h $(INCDIR)/coff/internal.h libcoff.h \
+ coffcode.h coffswap.h
+coff-z8k.lo: coff-z8k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/z8k.h $(INCDIR)/coff/internal.h libcoff.h \
+ coffcode.h coffswap.h
+cofflink.lo: cofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/internal.h libcoff.h
+dwarf1.lo: dwarf1.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf.h
+dwarf2.lo: dwarf2.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h
+ecoff.lo: ecoff.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/ar.h $(INCDIR)/aout/ranlib.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def libaout.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/ecoff.h libcoff.h libecoff.h
+ecofflink.lo: ecofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/objalloc.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/ecoff.h libcoff.h libecoff.h
+efi-app-ia32.lo: efi-app-ia32.c $(INCDIR)/filenames.h \
+ coff-i386.c $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+elf.lo: elf.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h
+elf32-arc.lo: elf32-arc.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/dwarf2.h
-ecoff.lo: ecoff.c $(INCDIR)/bfdlink.h $(INCDIR)/aout/ar.h \
- $(INCDIR)/aout/ranlib.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- libaout.h $(INCDIR)/aout/aout64.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- libcoff.h libecoff.h
-ecofflink.lo: ecofflink.c $(INCDIR)/bfdlink.h $(INCDIR)/objalloc.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- libcoff.h libecoff.h
-elf.lo: elf.c $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
-elf32-arc.lo: elf32-arc.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elfarm-oabi.lo: elfarm-oabi.c $(INCDIR)/elf/arm-oabi.h \
- $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elfarm-oabi.lo: elfarm-oabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
elf32-arm.h elf32-target.h
elfarm-nabi.lo: elfarm-nabi.c $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
- elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
- $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h elf32-arm.h \
- elf32-target.h
-elf32-avr.lo: elf32-avr.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/avr.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-d10v.lo: elf32-d10v.c elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/filenames.h elf-bfd.h $(INCDIR)/elf/common.h \
$(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ elf32-arm.h elf32-target.h
+elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-d30v.lo: elf32-d30v.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+elf32-cris.lo: elf32-cris.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-fr30.lo: elf32-fr30.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-gen.lo: elf32-gen.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+elf32-d10v.lo: elf32-d10v.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/d10v.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-i370.lo: elf32-i370.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-d30v.lo: elf32-d30v.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/i370.h elf32-target.h
-elf32-i386.lo: elf32-i386.c $(INCDIR)/bfdlink.h elf-bfd.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32-fr30.lo: elf32-fr30.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-i860.lo: elf32-i860.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-i960.lo: elf32-i960.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/i960.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-m32r.lo: elf32-m32r.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/m32r.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-m68k.lo: elf32-m68k.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-gen.lo: elf32-gen.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-m88k.lo: elf32-m88k.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf32-hppa.lo: elf32-hppa.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h \
+ libhppa.h elf32-hppa.h elf-hppa.h elf32-target.h
+elf32-i370.lo: elf32-i370.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/i370.h elf32-target.h
+elf32-i386.lo: elf32-i386.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/i386.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf-m10200.lo: elf-m10200.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+elf32-i860.lo: elf32-i860.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/i860.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf-m10300.lo: elf-m10300.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/mn10300.h $(INCDIR)/elf/reloc-macros.h \
+elf32-i960.lo: elf32-i960.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/i960.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-mcore.lo: elf32-mcore.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-ia64.lo: elf32-ia64.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/mcore.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
+elf32-m32r.lo: elf32-m32r.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/m32r.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-mips.lo: elf32-mips.c $(INCDIR)/bfdlink.h genlink.h \
+elf32-m68k.lo: elf32-m68k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
- $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h ecoffswap.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-pj.lo: elf32-pj.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/pj.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-ppc.lo: elf32-ppc.c $(INCDIR)/bfdlink.h elf-bfd.h \
+elf32-m68hc11.lo: elf32-m68hc11.c $(INCDIR)/filenames.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/m68hc11.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
+elf32-m68hc12.lo: elf32-m68hc12.c $(INCDIR)/filenames.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/m68hc11.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
+elf32-m88k.lo: elf32-m88k.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-sh.lo: elf32-sh.c $(INCDIR)/bfdlink.h elf-bfd.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf-m10200.lo: elf-m10200.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32-sparc.lo: elf32-sparc.c $(INCDIR)/bfdlink.h elf-bfd.h \
+ $(INCDIR)/bfdlink.h elf32-target.h
+elf-m10300.lo: elf-m10300.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/mn10300.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
-elf32-v850.lo: elf32-v850.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
-elf32.lo: elf32.c elfcode.h $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- elfcore.h elflink.h
-elflink.lo: elflink.c $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h
-epoc-pe-arm.lo: epoc-pe-arm.c pe-arm.c coff-arm.c $(INCDIR)/coff/arm.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-epoc-pei-arm.lo: epoc-pei-arm.c pei-arm.c coff-arm.c \
- $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
- libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
- libpei.h
-hp300bsd.lo: hp300bsd.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+elf32-mcore.lo: elf32-mcore.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/mcore.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
+elf32-mips.lo: elf32-mips.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/mips.h ecoffswap.h \
+ elf32-target.h
+elf32-pj.lo: elf32-pj.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/pj.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32-ppc.lo: elf32-ppc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32-sh.lo: elf32-sh.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32-sh-lin.lo: elf32-sh-lin.c elf32-sh.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sh.h \
+ $(INCDIR)/elf/reloc-macros.h elf32-target.h
+elf32-sparc.lo: elf32-sparc.c $(INCDIR)/filenames.h \
+ $(INCDIR)/bfdlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/sparc.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/opcode/sparc.h \
+ elf32-target.h
+elf32-v850.lo: elf32-v850.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/elf/v850.h $(INCDIR)/elf/reloc-macros.h \
+ elf32-target.h
+elf32.lo: elf32.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h elfcore.h elflink.h
+elflink.lo: elflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h
+epoc-pe-arm.lo: epoc-pe-arm.c pe-arm.c $(INCDIR)/filenames.h \
+ coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+epoc-pei-arm.lo: epoc-pei-arm.c pei-arm.c $(INCDIR)/filenames.h \
+ coff-arm.c $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+hp300bsd.lo: hp300bsd.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
hp300hpux.lo: hp300hpux.c $(INCDIR)/aout/hp300hpux.h \
- aoutx.h $(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
- aout-target.h
-som.lo: som.c
-i386aout.lo: i386aout.c $(INCDIR)/aout/aout64.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386bsd.lo: i386bsd.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
+ aoutx.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h libaout.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ar.h aout-target.h
+som.lo: som.c $(INCDIR)/alloca-conf.h $(INCDIR)/filenames.h
+i386aout.lo: i386aout.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
$(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386bsd.lo: i386bsd.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
i386dynix.lo: i386dynix.c $(INCDIR)/aout/dynix3.h aoutx.h \
- $(INCDIR)/bfdlink.h libaout.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h libaout.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ar.h aout-target.h
+i386freebsd.lo: i386freebsd.c freebsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386linux.lo: i386linux.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
- aout-target.h
-i386freebsd.lo: i386freebsd.c freebsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386linux.lo: i386linux.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-i386lynx.lo: i386lynx.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386msdos.lo: i386msdos.c libaout.h $(INCDIR)/bfdlink.h
-i386netbsd.lo: i386netbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-i386mach3.lo: i386mach3.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-i386os9k.lo: i386os9k.c $(INCDIR)/bfdlink.h libaout.h \
- $(INCDIR)/os9k.h
-ieee.lo: ieee.c $(INCDIR)/ieee.h libieee.h
-m68k4knetbsd.lo: m68k4knetbsd.c netbsd.h libaout.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+i386lynx.lo: i386lynx.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386msdos.lo: i386msdos.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h
+i386netbsd.lo: i386netbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+i386mach3.lo: i386mach3.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+i386os9k.lo: i386os9k.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ libaout.h $(INCDIR)/os9k.h
+ieee.lo: ieee.c $(INCDIR)/filenames.h $(INCDIR)/ieee.h \
+ libieee.h
+m68k4knetbsd.lo: m68k4knetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+m68klinux.lo: m68klinux.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+m68klynx.lo: m68klynx.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+m68knetbsd.lo: m68knetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+m88kmach3.lo: m88kmach3.c $(INCDIR)/filenames.h libaout.h \
$(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-m68klinux.lo: m68klinux.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-m68klynx.lo: m68klynx.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-m68knetbsd.lo: m68knetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-m88kmach3.lo: m88kmach3.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-mipsbsd.lo: mipsbsd.c libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-newsos3.lo: newsos3.c $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h libaout.h \
- $(INCDIR)/bfdlink.h aout-target.h
-nlm.lo: nlm.c libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
- $(INCDIR)/nlm/external.h
-nlm32-i386.lo: nlm32-i386.c $(INCDIR)/nlm/i386-ext.h \
+mipsbsd.lo: mipsbsd.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+newsos3.lo: newsos3.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h
+nlm.lo: nlm.c $(INCDIR)/filenames.h libnlm.h $(INCDIR)/nlm/common.h \
+ $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
+nlm32-i386.lo: nlm32-i386.c $(INCDIR)/filenames.h $(INCDIR)/nlm/i386-ext.h \
libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
$(INCDIR)/nlm/external.h nlmswap.h nlm-target.h
-nlm32-sparc.lo: nlm32-sparc.c $(INCDIR)/nlm/sparc32-ext.h \
+nlm32-sparc.lo: nlm32-sparc.c $(INCDIR)/filenames.h \
+ $(INCDIR)/nlm/sparc32-ext.h libnlm.h $(INCDIR)/nlm/common.h \
+ $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h nlmswap.h \
+ nlm-target.h
+nlm32-ppc.lo: nlm32-ppc.c $(INCDIR)/filenames.h $(INCDIR)/nlm/ppc-ext.h \
libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
$(INCDIR)/nlm/external.h nlmswap.h nlm-target.h
-nlm32-ppc.lo: nlm32-ppc.c $(INCDIR)/nlm/ppc-ext.h libnlm.h \
- $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h \
- nlmswap.h nlm-target.h
-nlm32.lo: nlm32.c nlmcode.h libnlm.h $(INCDIR)/nlm/common.h \
- $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
-ns32knetbsd.lo: ns32knetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-oasys.lo: oasys.c $(INCDIR)/oasys.h liboasys.h
-pc532-mach.lo: pc532-mach.c libaout.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/aout/aout64.h aout-target.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-pe-arm.lo: pe-arm.c coff-arm.c $(INCDIR)/coff/arm.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-arm.lo: pei-arm.c coff-arm.c $(INCDIR)/coff/arm.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-i386.lo: pe-i386.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-i386.lo: pei-i386.c coff-i386.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-mcore.lo: pe-mcore.c coff-mcore.c $(INCDIR)/coff/mcore.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-mcore.lo: pei-mcore.c coff-mcore.c $(INCDIR)/coff/mcore.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-ppc.lo: pe-ppc.c coff-ppc.c $(INCDIR)/coff/powerpc.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pei-ppc.lo: pei-ppc.c coff-ppc.c $(INCDIR)/coff/powerpc.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- $(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-pe-sh.lo: pe-sh.c coff-sh.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- coffcode.h peicode.h libpei.h
-pei-sh.lo: pei-sh.c coff-sh.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
- coffcode.h peicode.h libpei.h
-pe-mips.lo: pe-mips.c $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/internal.h \
+nlm32.lo: nlm32.c nlmcode.h $(INCDIR)/filenames.h libnlm.h \
+ $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
+ns32knetbsd.lo: ns32knetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+oasys.lo: oasys.c $(INCDIR)/filenames.h $(INCDIR)/oasys.h \
+ liboasys.h
+pc532-mach.lo: pc532-mach.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+pe-arm.lo: pe-arm.c $(INCDIR)/filenames.h coff-arm.c \
+ $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pei-arm.lo: pei-arm.c $(INCDIR)/filenames.h coff-arm.c \
+ $(INCDIR)/coff/arm.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pe-i386.lo: pe-i386.c $(INCDIR)/filenames.h coff-i386.c \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pei-i386.lo: pei-i386.c $(INCDIR)/filenames.h coff-i386.c \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pe-mcore.lo: pe-mcore.c $(INCDIR)/filenames.h coff-mcore.c \
+ $(INCDIR)/coff/mcore.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pei-mcore.lo: pei-mcore.c $(INCDIR)/filenames.h coff-mcore.c \
+ $(INCDIR)/coff/mcore.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+pe-ppc.lo: pe-ppc.c $(INCDIR)/filenames.h coff-ppc.c \
+ $(INCDIR)/coff/powerpc.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+pei-ppc.lo: pei-ppc.c $(INCDIR)/filenames.h coff-ppc.c \
+ $(INCDIR)/coff/powerpc.h $(INCDIR)/coff/internal.h \
$(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
peicode.h libpei.h
-pei-mips.lo: pei-mips.c pe-mips.c $(INCDIR)/coff/mipspe.h \
+pe-sh.lo: pe-sh.c $(INCDIR)/filenames.h coff-sh.c $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/sh.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h coffcode.h peicode.h libpei.h
+pei-sh.lo: pei-sh.c $(INCDIR)/filenames.h coff-sh.c \
+ $(INCDIR)/bfdlink.h $(INCDIR)/coff/sh.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h coffcode.h peicode.h \
+ libpei.h
+pe-mips.lo: pe-mips.c $(INCDIR)/filenames.h $(INCDIR)/coff/mipspe.h \
$(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h libcoff.h \
$(INCDIR)/bfdlink.h coffcode.h peicode.h libpei.h
-peigen.lo: peigen.c $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h libpei.h
-ppcboot.lo: ppcboot.c
-reloc16.lo: reloc16.c $(INCDIR)/bfdlink.h genlink.h \
- $(INCDIR)/coff/internal.h libcoff.h
-riscix.lo: riscix.c libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
- aout-target.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h
-sparclinux.lo: sparclinux.c $(INCDIR)/aout/aout64.h \
+pei-mips.lo: pei-mips.c $(INCDIR)/filenames.h pe-mips.c \
+ $(INCDIR)/coff/mipspe.h $(INCDIR)/coff/internal.h $(INCDIR)/coff/pe.h \
+ libcoff.h $(INCDIR)/bfdlink.h coffcode.h peicode.h \
+ libpei.h
+peigen.lo: peigen.c $(INCDIR)/filenames.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/pe.h libcoff.h \
+ $(INCDIR)/bfdlink.h libpei.h
+ppcboot.lo: ppcboot.c $(INCDIR)/filenames.h
+reloc16.lo: reloc16.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ genlink.h $(INCDIR)/coff/internal.h libcoff.h
+riscix.lo: riscix.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h aout-target.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+sparclinux.lo: sparclinux.c $(INCDIR)/filenames.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
libaout.h $(INCDIR)/bfdlink.h aout-target.h
-sparclynx.lo: sparclynx.c $(INCDIR)/aout/sun4.h libaout.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
-sparcnetbsd.lo: sparcnetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-sunos.lo: sunos.c $(INCDIR)/bfdlink.h libaout.h aoutf1.h \
- $(INCDIR)/aout/sun4.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h aout-target.h
-vaxnetbsd.lo: vaxnetbsd.c netbsd.h libaout.h $(INCDIR)/bfdlink.h \
- aout-target.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
-versados.lo: versados.c $(INCDIR)/libiberty.h
-vms.lo: vms.c $(INCDIR)/bfdlink.h vms.h
-vms-gsd.lo: vms-gsd.c $(INCDIR)/bfdlink.h vms.h
-vms-hdr.lo: vms-hdr.c $(INCDIR)/bfdlink.h vms.h
-vms-misc.lo: vms-misc.c $(INCDIR)/bfdlink.h vms.h
-vms-tir.lo: vms-tir.c $(INCDIR)/bfdlink.h vms.h
-xcofflink.lo: xcofflink.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- libcoff.h
-aout64.lo: aout64.c aoutx.h $(INCDIR)/bfdlink.h libaout.h \
- $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
- $(INCDIR)/aout/ar.h
-coff-alpha.lo: coff-alpha.c $(INCDIR)/bfdlink.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
- $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
- libecoff.h coffswap.h ecoffswap.h
-demo64.lo: demo64.c aoutf1.h $(INCDIR)/aout/sun4.h \
+sparclynx.lo: sparclynx.c $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h \
libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
aout-target.h
-elf64-alpha.lo: elf64-alpha.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \
+sparcnetbsd.lo: sparcnetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+sunos.lo: sunos.c $(INCDIR)/bfdlink.h libaout.h aoutf1.h \
+ $(INCDIR)/filenames.h $(INCDIR)/aout/sun4.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h \
+ aout-target.h
+vaxnetbsd.lo: vaxnetbsd.c netbsd.h $(INCDIR)/filenames.h \
+ libaout.h $(INCDIR)/bfdlink.h aout-target.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+versados.lo: versados.c $(INCDIR)/filenames.h $(INCDIR)/libiberty.h
+vms.lo: vms.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-gsd.lo: vms-gsd.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-hdr.lo: vms-hdr.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-misc.lo: vms-misc.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+vms-tir.lo: vms-tir.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ vms.h
+xcofflink.lo: xcofflink.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/coff/internal.h libcoff.h
+aout64.lo: aout64.c aoutx.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ libaout.h $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h \
+ $(INCDIR)/aout/stab.def $(INCDIR)/aout/ar.h
+coff-alpha.lo: coff-alpha.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
$(INCDIR)/coff/internal.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
$(INCDIR)/coff/ecoff.h $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h \
- libcoff.h libecoff.h ecoffswap.h elf64-target.h
-elf64-gen.lo: elf64-gen.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
- elf64-target.h
-elf64-mips.lo: elf64-mips.c $(INCDIR)/aout/ar.h $(INCDIR)/bfdlink.h \
- genlink.h elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
- $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
- $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/alpha.h ecoffswap.h \
- elf64-target.h
-elf64-sparc.lo: elf64-sparc.c elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
+ libcoff.h libecoff.h coffswap.h ecoffswap.h
+coff64-rs6000.lo: coff64-rs6000.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6k64.h libcoff.h \
+ $(INCDIR)/bfdlink.h xcoff-target.h coffcode.h coffswap.h
+demo64.lo: demo64.c aoutf1.h $(INCDIR)/filenames.h \
+ $(INCDIR)/aout/sun4.h libaout.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ar.h aout-target.h
+efi-app-ia64.lo: efi-app-ia64.c $(INCDIR)/filenames.h \
+ coff-ia64.c $(INCDIR)/coff/ia64.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/pe.h libcoff.h $(INCDIR)/bfdlink.h coffcode.h \
+ peicode.h libpei.h
+elf64-alpha.lo: elf64-alpha.c $(INCDIR)/filenames.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/alpha.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h $(INCDIR)/coff/ecoff.h \
+ $(INCDIR)/coff/alpha.h $(INCDIR)/aout/ar.h libcoff.h \
+ libecoff.h ecoffswap.h elf64-target.h
+elf64-hppa.lo: elf64-hppa.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/reloc-macros.h \
+ libhppa.h elf64-hppa.h elf-hppa.h elf64-target.h
+elf64-ia64.lo: elf64-ia64.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/ia64.h $(INCDIR)/elf/ia64.h \
+ $(INCDIR)/elf/reloc-macros.h elf64-target.h
+elf64-x86-64.lo: elf64-x86-64.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/i386.h $(INCDIR)/elf/x86-64.h \
+ $(INCDIR)/elf/reloc-macros.h elf64-target.h
+elf64-gen.lo: elf64-gen.c $(INCDIR)/filenames.h elf-bfd.h \
+ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
+ $(INCDIR)/bfdlink.h elf64-target.h
+elf64-mips.lo: elf64-mips.c $(INCDIR)/filenames.h $(INCDIR)/aout/ar.h \
+ $(INCDIR)/bfdlink.h genlink.h elf-bfd.h $(INCDIR)/elf/common.h \
+ $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/mips.h \
+ $(INCDIR)/elf/reloc-macros.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/symconst.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/ecoff.h $(INCDIR)/coff/alpha.h \
+ ecoffswap.h elf64-target.h
+elf64-sparc.lo: elf64-sparc.c $(INCDIR)/filenames.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/sparc.h \
$(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h \
elf64-target.h
-elf64.lo: elf64.c elfcode.h $(INCDIR)/bfdlink.h elf-bfd.h \
- $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- elfcore.h elflink.h
-nlm32-alpha.lo: nlm32-alpha.c $(INCDIR)/nlm/alpha-ext.h \
- libnlm.h $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h \
- $(INCDIR)/nlm/external.h nlmswap.h nlm-target.h
-nlm64.lo: nlm64.c nlmcode.h libnlm.h $(INCDIR)/nlm/common.h \
- $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
-aix386-core.lo: aix386-core.c $(INCDIR)/coff/i386.h \
- $(INCDIR)/coff/internal.h libcoff.h $(INCDIR)/bfdlink.h
-hpux-core.lo: hpux-core.c
-irix-core.lo: irix-core.c
-lynx-core.lo: lynx-core.c
-osf-core.lo: osf-core.c
-sco5-core.lo: sco5-core.c libaout.h $(INCDIR)/bfdlink.h
-trad-core.lo: trad-core.c libaout.h $(INCDIR)/bfdlink.h
-cisco-core.lo: cisco-core.c
+elf64.lo: elf64.c elfcode.h $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
+ elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h elfcore.h elflink.h
+nlm32-alpha.lo: nlm32-alpha.c $(INCDIR)/filenames.h \
+ $(INCDIR)/nlm/alpha-ext.h libnlm.h $(INCDIR)/nlm/common.h \
+ $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h nlmswap.h \
+ nlm-target.h
+nlm64.lo: nlm64.c nlmcode.h $(INCDIR)/filenames.h libnlm.h \
+ $(INCDIR)/nlm/common.h $(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h
+aix386-core.lo: aix386-core.c $(INCDIR)/filenames.h \
+ $(INCDIR)/coff/i386.h $(INCDIR)/coff/internal.h libcoff.h \
+ $(INCDIR)/bfdlink.h
+hpux-core.lo: hpux-core.c $(INCDIR)/filenames.h
+irix-core.lo: irix-core.c $(INCDIR)/filenames.h
+lynx-core.lo: lynx-core.c $(INCDIR)/filenames.h
+osf-core.lo: osf-core.c $(INCDIR)/filenames.h
+sco5-core.lo: sco5-core.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h
+trad-core.lo: trad-core.c $(INCDIR)/filenames.h libaout.h \
+ $(INCDIR)/bfdlink.h
+cisco-core.lo: cisco-core.c $(INCDIR)/filenames.h
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/contrib/binutils/bfd/README b/contrib/binutils/bfd/README
index 51ce133..992c285 100644
--- a/contrib/binutils/bfd/README
+++ b/contrib/binutils/bfd/README
@@ -34,7 +34,7 @@ BFD supports the following configure options:
Use mmap when accessing files. This is faster on some hosts,
but slower on others. It may not work on all hosts.
-Report bugs with BFD to bug-gnu-utils@gnu.org.
+Report bugs with BFD to bug-binutils@gnu.org.
Patches are encouraged. When sending patches, always send the output
of diff -u or diff -c from the original file to the new file. Do not
diff --git a/contrib/binutils/bfd/acinclude.m4 b/contrib/binutils/bfd/acinclude.m4
index cac26e8..5391294 100644
--- a/contrib/binutils/bfd/acinclude.m4
+++ b/contrib/binutils/bfd/acinclude.m4
@@ -74,7 +74,9 @@ dnl Check for existence of a type $1 in sys/procfs.h
AC_DEFUN(BFD_HAVE_SYS_PROCFS_TYPE,
[AC_MSG_CHECKING([for $1 in sys/procfs.h])
AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_$1,
- [AC_TRY_COMPILE([#include <sys/procfs.h>],
+ [AC_TRY_COMPILE([
+#define _SYSCALL32
+#include <sys/procfs.h>],
[$1 avar],
bfd_cv_have_sys_procfs_type_$1=yes,
bfd_cv_have_sys_procfs_type_$1=no
@@ -92,7 +94,9 @@ dnl Check for existence of member $2 in type $1 in sys/procfs.h
AC_DEFUN(BFD_HAVE_SYS_PROCFS_TYPE_MEMBER,
[AC_MSG_CHECKING([for $1.$2 in sys/procfs.h])
AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_member_$1_$2,
- [AC_TRY_COMPILE([#include <sys/procfs.h>],
+ [AC_TRY_COMPILE([
+#define _SYSCALL32
+#include <sys/procfs.h>],
[$1 avar; void* aref = (void*) &avar.$2],
bfd_cv_have_sys_procfs_type_member_$1_$2=yes,
bfd_cv_have_sys_procfs_type_member_$1_$2=no
@@ -104,4 +108,18 @@ AC_DEFUN(BFD_HAVE_SYS_PROCFS_TYPE_MEMBER,
AC_MSG_RESULT($bfd_cv_have_sys_procfs_type_member_$1_$2)
])
+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([AM_DISABLE_SHARED],)
+AC_SUBST(LIBTOOL)
+])
+sinclude(../gettext.m4)
+ifelse(yes,no,[
+AC_DEFUN([CY_WITH_NLS],)
+AC_SUBST(INTLLIBS)
+])
diff --git a/contrib/binutils/bfd/aclocal.m4 b/contrib/binutils/bfd/aclocal.m4
index ca9d432..45cc339 100644
--- a/contrib/binutils/bfd/aclocal.m4
+++ b/contrib/binutils/bfd/aclocal.m4
@@ -86,7 +86,9 @@ dnl Check for existence of a type $1 in sys/procfs.h
AC_DEFUN(BFD_HAVE_SYS_PROCFS_TYPE,
[AC_MSG_CHECKING([for $1 in sys/procfs.h])
AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_$1,
- [AC_TRY_COMPILE([#include <sys/procfs.h>],
+ [AC_TRY_COMPILE([
+#define _SYSCALL32
+#include <sys/procfs.h>],
[$1 avar],
bfd_cv_have_sys_procfs_type_$1=yes,
bfd_cv_have_sys_procfs_type_$1=no
@@ -104,7 +106,9 @@ dnl Check for existence of member $2 in type $1 in sys/procfs.h
AC_DEFUN(BFD_HAVE_SYS_PROCFS_TYPE_MEMBER,
[AC_MSG_CHECKING([for $1.$2 in sys/procfs.h])
AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_member_$1_$2,
- [AC_TRY_COMPILE([#include <sys/procfs.h>],
+ [AC_TRY_COMPILE([
+#define _SYSCALL32
+#include <sys/procfs.h>],
[$1 avar; void* aref = (void*) &avar.$2],
bfd_cv_have_sys_procfs_type_member_$1_$2=yes,
bfd_cv_have_sys_procfs_type_member_$1_$2=no
@@ -116,7 +120,39 @@ AC_DEFUN(BFD_HAVE_SYS_PROCFS_TYPE_MEMBER,
AC_MSG_RESULT($bfd_cv_have_sys_procfs_type_member_$1_$2)
])
+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([AM_DISABLE_SHARED],)
+AC_SUBST(LIBTOOL)
+])
+
+sinclude(../gettext.m4)
+ifelse(yes,no,[
+AC_DEFUN([CY_WITH_NLS],)
+AC_SUBST(INTLLIBS)
+])
+#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.
@@ -210,415 +246,6 @@ else
fi
AC_SUBST($1)])
-
-# serial 40 AC_PROG_LIBTOOL
-AC_DEFUN(AC_PROG_LIBTOOL,
-[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
-
-# Save cache, so that ltconfig can load it
-AC_CACHE_SAVE
-
-# Actually configure libtool. ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
-$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
-|| AC_MSG_ERROR([libtool configure failed])
-
-# Reload cache, that may have been modified by ltconfig
-AC_CACHE_LOAD
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-# Redirect the config.log output again, so that the ltconfig log is not
-# clobbered by the next message.
-exec 5>>./config.log
-])
-
-AC_DEFUN(AC_LIBTOOL_SETUP,
-[AC_PREREQ(2.13)dnl
-AC_REQUIRE([AC_ENABLE_SHARED])dnl
-AC_REQUIRE([AC_ENABLE_STATIC])dnl
-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([AC_PROG_RANLIB])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_LD])dnl
-AC_REQUIRE([AC_PROG_NM])dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-dnl
-
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
-esac
-
-# 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 "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
-test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
-ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
-[libtool_flags="$libtool_flags --enable-dlopen"])
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[libtool_flags="$libtool_flags --enable-win32-dll"])
-AC_ARG_ENABLE(libtool-lock,
- [ --disable-libtool-lock avoid locking (might break parallel builds)])
-test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
-test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case "$lt_target" in
-*-*-irix6*)
- # Find out which ABI we are using.
- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- case "`/usr/bin/file conftest.o`" in
- *32-bit*)
- LD="${LD-ld} -32"
- ;;
- *N32*)
- LD="${LD-ld} -n32"
- ;;
- *64-bit*)
- LD="${LD-ld} -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"
- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
- [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
- 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
- ;;
-
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[*-*-cygwin* | *-*-mingw*)
- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
- AC_CHECK_TOOL(AS, as, false)
- AC_CHECK_TOOL(OBJDUMP, objdump, false)
- ;;
-])
-esac
-])
-
-# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
-AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
-
-# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
-AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
-
-# AC_ENABLE_SHARED - implement the --enable-shared flag
-# Usage: AC_ENABLE_SHARED[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_SHARED, [dnl
-define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(shared,
-changequote(<<, >>)dnl
-<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
-])
-
-# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
-AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_SHARED(no)])
-
-# AC_ENABLE_STATIC - implement the --enable-static flag
-# Usage: AC_ENABLE_STATIC[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_STATIC, [dnl
-define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(static,
-changequote(<<, >>)dnl
-<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
-])
-
-# AC_DISABLE_STATIC - set the default static flag to --disable-static
-AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_STATIC(no)])
-
-
-# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
-# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
-define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(fast-install,
-changequote(<<, >>)dnl
-<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
-])
-
-# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
-AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_FAST_INSTALL(no)])
-
-# AC_PROG_LD - find the path to the GNU or non-GNU linker
-AC_DEFUN(AC_PROG_LD,
-[AC_ARG_WITH(gnu-ld,
-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-ac_prog=ld
-if test "$ac_cv_prog_gcc" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by GCC])
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
- case "$ac_prog" in
- # Accept absolute paths.
-changequote(,)dnl
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
-changequote([,])dnl
- # 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
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(ac_cv_path_LD,
-[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
- ac_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 "$ac_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
- ac_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$ac_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT($LD)
-else
- AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_PROG_LD_GNU
-])
-
-AC_DEFUN(AC_PROG_LD_GNU,
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- ac_cv_prog_gnu_ld=yes
-else
- ac_cv_prog_gnu_ld=no
-fi])
-])
-
-# AC_PROG_NM - find the path to a BSD-compatible name lister
-AC_DEFUN(AC_PROG_NM,
-[AC_MSG_CHECKING([for BSD-compatible nm])
-AC_CACHE_VAL(ac_cv_path_NM,
-[if test -n "$NM"; then
- # Let the user override the test.
- ac_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=.
- if test -f $ac_dir/nm || test -f $ac_dir/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
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -B"
- break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -p"
- break
- else
- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/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 "$ac_cv_path_NM" && ac_cv_path_NM=nm
-fi])
-NM="$ac_cv_path_NM"
-AC_MSG_RESULT([$NM])
-])
-
-# AC_CHECK_LIBM - check for math library
-AC_DEFUN(AC_CHECK_LIBM,
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case "$lt_target" in
-*-*-beos* | *-*-cygwin*)
- # These system don't have libm
- ;;
-*-ncr-sysv4.3*)
- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
- AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
- ;;
-*)
- AC_CHECK_LIB(m, main, LIBM="-lm")
- ;;
-esac
-])
-
-# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl convenience library, adds --enable-ltdl-convenience to
-# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
-# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
-# to be `${top_builddir}/libltdl'. Make sure you start DIR with
-# '${top_builddir}/' (note the single quotes!) if your package is not
-# flat, and, if you're not using automake, define top_builddir as
-# appropriate in the Makefiles.
-AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- case "$enable_ltdl_convenience" in
- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
- "") enable_ltdl_convenience=yes
- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
- esac
- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
-])
-
-# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl installable library, and adds --enable-ltdl-install to
-# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
-# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
-# to be `${top_builddir}/libltdl'. Make sure you start DIR with
-# '${top_builddir}/' (note the single quotes!) if your package is not
-# flat, and, if you're not using automake, define top_builddir as
-# appropriate in the Makefiles.
-# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
-AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- AC_CHECK_LIB(ltdl, main,
- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
- [if test x"$enable_ltdl_install" = xno; then
- AC_MSG_WARN([libltdl not installed, but installation disabled])
- else
- enable_ltdl_install=yes
- fi
- ])
- if test x"$enable_ltdl_install" = x"yes"; then
- ac_configure_args="$ac_configure_args --enable-ltdl-install"
- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
- else
- ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
- LIBLTDL="-lltdl"
- INCLTDL=
- fi
-])
-
-dnl old names
-AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
-AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
-AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
-
-dnl This is just to silence aclocal about the macro not being used
-ifelse([AC_DISABLE_FAST_INSTALL])dnl
-
# Like AC_CONFIG_HEADER, but automatically create stamp file.
AC_DEFUN(AM_CONFIG_HEADER,
@@ -675,348 +302,3 @@ else
$1_FALSE=
fi])
-# This file is derived from `gettext.m4'. The difference is that the
-# included macros assume Cygnus-style source and build trees.
-
-# Macro to add for using GNU gettext.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
-#
-# 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.
-
-# serial 3
-
-AC_DEFUN(CY_WITH_NLS,
- [AC_MSG_CHECKING([whether NLS is requested])
- dnl Default is enabled NLS
- AC_ARG_ENABLE(nls,
- [ --disable-nls do not use Native Language Support],
- USE_NLS=$enableval, USE_NLS=yes)
- AC_MSG_RESULT($USE_NLS)
- AC_SUBST(USE_NLS)
-
- USE_INCLUDED_LIBINTL=no
-
- dnl If we use NLS figure out what method
- if test "$USE_NLS" = "yes"; then
- AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if NLS is requested])
- AC_MSG_CHECKING([whether included gettext is requested])
- AC_ARG_WITH(included-gettext,
- [ --with-included-gettext use the GNU gettext library included here],
- nls_cv_force_use_gnu_gettext=$withval,
- nls_cv_force_use_gnu_gettext=no)
- AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
-
- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
- dnl User does not insist on using GNU NLS library. Figure out what
- dnl to use. If gettext or catgets are available (in this order) we
- dnl use this. Else we have to fall back to GNU NLS library.
- dnl catgets is only used if permitted by option --with-catgets.
- nls_cv_header_intl=
- nls_cv_header_libgt=
- CATOBJEXT=NONE
-
- AC_CHECK_HEADER(libintl.h,
- [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
- [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
- gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
-
- if test "$gt_cv_func_gettext_libc" != "yes"; then
- AC_CHECK_LIB(intl, bindtextdomain,
- [AC_CACHE_CHECK([for gettext in libintl],
- gt_cv_func_gettext_libintl,
- [AC_TRY_LINK([], [return (int) gettext ("")],
- gt_cv_func_gettext_libintl=yes,
- gt_cv_func_gettext_libintl=no)])])
- fi
-
- if test "$gt_cv_func_gettext_libc" = "yes" \
- || test "$gt_cv_func_gettext_libintl" = "yes"; then
- AC_DEFINE(HAVE_GETTEXT, 1,
- [Define as 1 if you have gettext and don't want to use GNU gettext.])
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
- if test "$MSGFMT" != "no"; then
- AC_CHECK_FUNCS(dcgettext)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
- AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
- return _nl_msg_cat_cntr],
- [CATOBJEXT=.gmo
- DATADIRNAME=share],
- [CATOBJEXT=.mo
- DATADIRNAME=lib])
- INSTOBJEXT=.mo
- fi
- fi
- ])
-
- dnl In the standard gettext, we would now check for catgets.
- dnl However, we never want to use catgets for our releases.
-
- if test "$CATOBJEXT" = "NONE"; then
- dnl Neither gettext nor catgets in included in the C library.
- dnl Fall back on GNU gettext library.
- nls_cv_use_gnu_gettext=yes
- fi
- fi
-
- if test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Mark actions used to generate GNU NLS library.
- INTLOBJS="\$(GETTOBJS)"
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
- AC_SUBST(MSGFMT)
- 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
-
- dnl Test whether we really found GNU xgettext.
- if test "$XGETTEXT" != ":"; then
- dnl If it is no GNU xgettext we define it as : so that the
- dnl Makefiles still can work.
- if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
- : ;
- else
- AC_MSG_RESULT(
- [found xgettext programs is not GNU xgettext; ignore it])
- 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
-
- dnl These rules are solely for the distribution goal. While doing this
- dnl we only have to keep exactly one list of the available catalogs
- dnl in configure.in.
- for lang in $ALL_LINGUAS; do
- GMOFILES="$GMOFILES $lang.gmo"
- POFILES="$POFILES $lang.po"
- done
-
- dnl Make all variables we use known to autoconf.
- AC_SUBST(USE_INCLUDED_LIBINTL)
- AC_SUBST(CATALOGS)
- AC_SUBST(CATOBJEXT)
- AC_SUBST(DATADIRNAME)
- AC_SUBST(GMOFILES)
- AC_SUBST(INSTOBJEXT)
- AC_SUBST(INTLDEPS)
- AC_SUBST(INTLLIBS)
- AC_SUBST(INTLOBJS)
- AC_SUBST(POFILES)
- AC_SUBST(POSUB)
- ])
-
-AC_DEFUN(CY_GNU_GETTEXT,
- [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_PROG_RANLIB])dnl
- AC_REQUIRE([AC_ISC_POSIX])dnl
- AC_REQUIRE([AC_HEADER_STDC])dnl
- AC_REQUIRE([AC_C_CONST])dnl
- AC_REQUIRE([AC_C_INLINE])dnl
- AC_REQUIRE([AC_TYPE_OFF_T])dnl
- AC_REQUIRE([AC_TYPE_SIZE_T])dnl
- AC_REQUIRE([AC_FUNC_ALLOCA])dnl
- AC_REQUIRE([AC_FUNC_MMAP])dnl
-
- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
-unistd.h values.h sys/param.h])
- AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
-__argz_count __argz_stringify __argz_next])
-
- if test "${ac_cv_func_stpcpy+set}" != "set"; then
- AC_CHECK_FUNCS(stpcpy)
- fi
- if test "${ac_cv_func_stpcpy}" = "yes"; then
- AC_DEFINE(HAVE_STPCPY, 1, [Define if you have the stpcpy function])
- fi
-
- AM_LC_MESSAGES
- CY_WITH_NLS
-
- if test "x$CATOBJEXT" != "x"; then
- if test "x$ALL_LINGUAS" = "x"; then
- LINGUAS=
- else
- AC_MSG_CHECKING(for catalogs to be installed)
- NEW_LINGUAS=
- for lang in ${LINGUAS=$ALL_LINGUAS}; do
- case "$ALL_LINGUAS" in
- *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
- esac
- done
- LINGUAS=$NEW_LINGUAS
- AC_MSG_RESULT($LINGUAS)
- fi
-
- dnl Construct list of names of catalog files to be constructed.
- if test -n "$LINGUAS"; then
- for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
- fi
- fi
-
- dnl The reference to <locale.h> in the installed <libintl.h> file
- dnl must be resolved because we cannot expect the users of this
- dnl to define HAVE_LOCALE_H.
- if test $ac_cv_header_locale_h = yes; then
- INCLUDE_LOCALE_H="#include <locale.h>"
- else
- INCLUDE_LOCALE_H="\
-/* The system does not provide the header <locale.h>. Take care yourself. */"
- fi
- AC_SUBST(INCLUDE_LOCALE_H)
-
- dnl Determine which catalog format we have (if any is needed)
- dnl For now we know about two different formats:
- dnl Linux libc-5 and the normal X/Open format
- if test -f $srcdir/po2tbl.sed.in; then
- if test "$CATOBJEXT" = ".cat"; then
- AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
-
- dnl Transform the SED scripts while copying because some dumb SEDs
- dnl cannot handle comments.
- sed -e '/^#/d' $srcdir/$msgformat-msg.sed > po2msg.sed
- fi
- dnl po2tbl.sed is always needed.
- sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
- $srcdir/po2tbl.sed.in > po2tbl.sed
- fi
-
- dnl In the intl/Makefile.in we have a special dependency which makes
- dnl only sense for gettext. We comment this out for non-gettext
- dnl packages.
- if test "$PACKAGE" = "gettext"; then
- GT_NO="#NO#"
- GT_YES=
- else
- GT_NO=
- GT_YES="#YES#"
- fi
- AC_SUBST(GT_NO)
- AC_SUBST(GT_YES)
-
- MKINSTALLDIRS="\$(srcdir)/../../mkinstalldirs"
- AC_SUBST(MKINSTALLDIRS)
-
- dnl *** For now the libtool support in intl/Makefile is not for real.
- l=
- AC_SUBST(l)
-
- dnl Generate list of files to be processed by xgettext which will
- dnl be included in po/Makefile. But only do this if the po directory
- dnl exists in srcdir.
- if test -d $srcdir/po; 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
- ])
-
-# Search path for a program which passes the given test.
-# Ulrich Drepper <drepper@cygnus.com>, 1996.
-#
-# 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.
-
-# serial 1
-
-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN(AM_PATH_PROG_WITH_TEST,
-[# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL(ac_cv_path_$1,
-[case "[$]$1" in
- /*)
- ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in ifelse([$5], , $PATH, [$5]); do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if [$3]; then
- ac_cv_path_$1="$ac_dir/$ac_word"
- break
- fi
- fi
- done
- IFS="$ac_save_ifs"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
- ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test -n "[$]$1"; then
- AC_MSG_RESULT([$]$1)
-else
- AC_MSG_RESULT(no)
-fi
-AC_SUBST($1)dnl
-])
-
-# Check whether LC_MESSAGES is available in <locale.h>.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
-#
-# 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.
-
-# serial 1
-
-AC_DEFUN(AM_LC_MESSAGES,
- [if test $ac_cv_header_locale_h = yes; then
- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
- [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
- am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
- if test $am_cv_val_LC_MESSAGES = yes; then
- AC_DEFINE(HAVE_LC_MESSAGES, 1,
- [Define if your locale.h file contains LC_MESSAGES.])
- fi
- fi])
-
diff --git a/contrib/binutils/bfd/aout-arm.c b/contrib/binutils/bfd/aout-arm.c
index 7365f9d..182c1c6 100644
--- a/contrib/binutils/bfd/aout-arm.c
+++ b/contrib/binutils/bfd/aout-arm.c
@@ -1,7 +1,7 @@
/* BFD back-end for raw ARM a.out binaries.
Copyright (C) 1994, 95, 96, 97, 98, 1999 Free Software Foundation, Inc.
Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
-
+
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
@@ -18,7 +18,6 @@ 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 N_TXTADDR(x) \
((N_MAGIC(x) == NMAGIC) ? 0x8000 : \
(N_MAGIC(x) != ZMAGIC) ? 0 : \
@@ -44,7 +43,7 @@ reloc_howto_type *MYARM(bfd_reloc_type_lookup)
PARAMS((bfd *, bfd_reloc_code_real_type));
static boolean MYARM(write_object_contents) PARAMS((bfd *));
-/* Avoid multiple defininitions from aoutx if supporting standarad a.out
+/* Avoid multiple defininitions from aoutx if supporting standarad a.out
as well as our own. */
#define NAME(x,y) CAT3(aoutarm,_32_,y)
@@ -63,7 +62,7 @@ MY(fix_pcrel_26) PARAMS ((bfd *, arelent *, asymbol *, PTR,
static void MY(swap_std_reloc_in) PARAMS ((bfd *, struct reloc_std_external *,
arelent *, asymbol **,
bfd_size_type));
-void MY(swap_std_reloc_out) PARAMS ((bfd *, arelent *,
+void MY(swap_std_reloc_out) PARAMS ((bfd *, arelent *,
struct reloc_std_external *));
reloc_howto_type MY(howto_table)[] =
@@ -98,7 +97,7 @@ reloc_howto_type MY(howto_table)[] =
#define RELOC_ARM_BITS_NEG_LITTLE ((unsigned int) 0x10)
reloc_howto_type *
-MY(reloc_howto)(abfd, rel, r_index, r_extern, r_pcrel)
+MY(reloc_howto) (abfd, rel, r_index, r_extern, r_pcrel)
bfd *abfd;
struct reloc_std_external *rel;
int *r_index;
@@ -139,12 +138,12 @@ MY(reloc_howto)(abfd, rel, r_index, r_extern, r_pcrel)
return MY(howto_table) + index;
}
-
+
#define MY_reloc_howto(BFD, REL, IN, EX, PC) \
MY(reloc_howto) (BFD, REL, &IN, &EX, &PC)
void
-MY(put_reloc)(abfd, r_extern, r_index, value, howto, reloc)
+MY(put_reloc) (abfd, r_extern, r_index, value, howto, reloc)
bfd *abfd;
int r_extern;
int r_index;
@@ -159,7 +158,7 @@ MY(put_reloc)(abfd, r_extern, r_index, value, howto, reloc)
PUT_WORD (abfd, value, reloc->r_address);
r_length = howto->size ; /* Size as a power of two */
- /* Special case for branch relocations. */
+ /* Special case for branch relocations. */
if (howto->type == 3 || howto->type == 7)
r_length = 3;
@@ -188,12 +187,12 @@ MY(put_reloc)(abfd, r_extern, r_index, value, howto, reloc)
| (r_length << RELOC_STD_BITS_LENGTH_SH_LITTLE));
}
}
-
+
#define MY_put_reloc(BFD, EXT, IDX, VAL, HOWTO, RELOC) \
- MY(put_reloc)(BFD, EXT, IDX, VAL, HOWTO, RELOC)
+ MY(put_reloc) (BFD, EXT, IDX, VAL, HOWTO, RELOC)
void
-MY(relocatable_reloc)(howto, abfd, reloc, amount, r_addr)
+MY(relocatable_reloc) (howto, abfd, reloc, amount, r_addr)
reloc_howto_type *howto;
bfd *abfd;
struct reloc_std_external *reloc;
@@ -202,11 +201,11 @@ MY(relocatable_reloc)(howto, abfd, reloc, amount, r_addr)
{
if (howto->type == 3)
{
- if (reloc->r_type[0]
+ if (reloc->r_type[0]
& (bfd_header_big_endian (abfd)
? RELOC_STD_BITS_EXTERN_BIG : RELOC_STD_BITS_EXTERN_LITTLE))
{
- /* The reloc is still external, so don't modify anything. */
+ /* The reloc is still external, so don't modify anything. */
*amount = 0;
}
else
@@ -225,7 +224,7 @@ MY(relocatable_reloc)(howto, abfd, reloc, amount, r_addr)
}
#define MY_relocatable_reloc(HOW, BFD, REL, AMOUNT, ADDR) \
- MY(relocatable_reloc)(HOW, BFD, REL, &(AMOUNT), ADDR)
+ MY(relocatable_reloc) (HOW, BFD, REL, &(AMOUNT), ADDR)
static bfd_reloc_status_type
MY(fix_pcrel_26_done) (abfd, reloc_entry, symbol, data, input_section,
@@ -257,7 +256,7 @@ MY(fix_pcrel_26) (abfd, reloc_entry, symbol, data, input_section,
bfd_size_type addr = reloc_entry->address;
long target = bfd_get_32 (abfd, (bfd_byte *) data + addr);
bfd_reloc_status_type flag = bfd_reloc_ok;
-
+
/* If this is an undefined symbol, return error */
if (symbol->section == &bfd_und_section
&& (symbol->flags & BSF_WEAK) == 0)
@@ -297,12 +296,12 @@ MY(fix_pcrel_26) (abfd, reloc_entry, symbol, data, input_section,
/* Now the ARM magic... Change the reloc type so that it is marked as done.
Strictly this is only necessary if we are doing a partial relocation. */
reloc_entry->howto = &MY(howto_table)[7];
-
+
return flag;
}
reloc_howto_type *
-MY(bfd_reloc_type_lookup)(abfd,code)
+MY(bfd_reloc_type_lookup) (abfd,code)
bfd *abfd;
bfd_reloc_code_real_type code;
{
@@ -392,11 +391,10 @@ MY_swap_std_reloc_out (abfd, g, natptr)
r_pcrel = 0;
}
else if (g->howto->type == 7)
- {
+ {
r_length = 3;
r_pcrel = 1;
}
-
#if 0
/* For a standard reloc, the addend is in the object file. */
@@ -506,7 +504,7 @@ const bfd_target aout_arm_little_vec =
BFD_JUMP_TABLE_DYNAMIC (MY),
& aout_arm_big_vec,
-
+
(PTR) MY_backend_data,
};
@@ -547,6 +545,6 @@ const bfd_target aout_arm_big_vec =
BFD_JUMP_TABLE_DYNAMIC (MY),
& aout_arm_little_vec,
-
+
(PTR) MY_backend_data,
};
diff --git a/contrib/binutils/bfd/aout-encap.c b/contrib/binutils/bfd/aout-encap.c
index c25f903..5f8a511 100644
--- a/contrib/binutils/bfd/aout-encap.c
+++ b/contrib/binutils/bfd/aout-encap.c
@@ -53,12 +53,12 @@ encap_object_p (abfd)
bfd_set_error (bfd_error_wrong_format);
return 0;
}
-
+
coff_magic = bfd_h_get_16 (abfd, magicbuf);
if (coff_magic != COFF_MAGIC)
return 0; /* Not an encap coff file */
- __header_offset_temp==COFF_MAGIC ? sizeof(struct coffheader) : 0)
+ __header_offset_temp==COFF_MAGIC ? sizeof (struct coffheader) : 0)
(fseek ((f), HEADER_OFFSET((f)), 1))
magic = bfd_h_get_32 (abfd, magicbuf);
@@ -72,7 +72,7 @@ encap_object_p (abfd)
bfd_set_error (bfd_error_wrong_format);
return 0;
}
- NAME(aout,swap_exec_header_in)(abfd, &exec_bytes, &exec);
+ NAME(aout,swap_exec_header_in) (abfd, &exec_bytes, &exec);
return aout_32_some_aout_object_p (abfd, &exec, encap_realcallback);
}
@@ -83,9 +83,9 @@ encap_real_callback (abfd)
bfd *abfd;
{
struct internal_exec *execp = exec_hdr (abfd);
-
- MY(callback)(abfd, execp);
-
+
+ MY(callback) (abfd, execp);
+
/* If we have a coff header, it can give us better values for
text_start and exec_data_start. This is particularly useful
for remote debugging of embedded systems. */
diff --git a/contrib/binutils/bfd/aout-target.h b/contrib/binutils/bfd/aout-target.h
index 046417b..1902cdf 100644
--- a/contrib/binutils/bfd/aout-target.h
+++ b/contrib/binutils/bfd/aout-target.h
@@ -61,7 +61,7 @@ MY(callback) (abfd)
bfd_vma adjust;
adjust = execp->a_entry - obj_textsec (abfd)->vma;
- /* Adjust only by whole pages. */
+ /* Adjust only by whole pages. */
adjust &= ~(TARGET_PAGE_SIZE - 1);
obj_textsec (abfd)->vma += adjust;
obj_datasec (abfd)->vma += adjust;
@@ -84,7 +84,7 @@ MY(callback) (abfd)
/* The file offsets of the string table and symbol table. */
obj_sym_filepos (abfd) = N_SYMOFF (*execp);
obj_str_filepos (abfd) = N_STROFF (*execp);
-
+
/* Determine the architecture and machine type of the object file. */
#ifdef SET_ARCH_MACH
SET_ARCH_MACH(abfd, *execp);
@@ -164,7 +164,7 @@ MY(object_p) (abfd)
if (!(MACHTYPE_OK (N_MACHTYPE (exec)))) return 0;
#endif
- NAME(aout,swap_exec_header_in)(abfd, &exec_bytes, &exec);
+ NAME(aout,swap_exec_header_in) (abfd, &exec_bytes, &exec);
#ifdef SWAP_MAGIC
/* swap_exec_header_in read in a_info with the wrong byte order */
@@ -178,7 +178,7 @@ MY(object_p) (abfd)
* means that it isn't obvious if EXEC_P should be set.
* All of the following must be true for an executable:
* There must be no relocations, the bfd can be neither an
- * archive nor an archive element, and the file must be executable. */
+ * archive nor an archive element, and the file must be executable. */
if (exec.a_trsize + exec.a_drsize == 0
&& bfd_get_format(abfd) == bfd_object && abfd->my_archive == NULL)
@@ -197,7 +197,6 @@ MY(object_p) (abfd)
#define MY_object_p MY(object_p)
#endif
-
#ifndef MY_mkobject
static boolean MY(mkobject) PARAMS ((bfd *));
@@ -206,7 +205,7 @@ static boolean
MY(mkobject) (abfd)
bfd *abfd;
{
- if (NAME(aout,mkobject)(abfd) == false)
+ if (NAME(aout,mkobject) (abfd) == false)
return false;
#if 0 /* Sizes get set in set_sizes callback, later, after we know
the architecture and machine. */
@@ -230,7 +229,6 @@ MY(mkobject) (abfd)
static boolean MY_bfd_copy_private_section_data
PARAMS ((bfd *, asection *, bfd *, asection *));
-/*ARGSUSED*/
static boolean
MY_bfd_copy_private_section_data (ibfd, isec, obfd, osec)
bfd *ibfd;
@@ -530,7 +528,6 @@ MY_bfd_final_link (abfd, info)
#define MY_bfd_link_split_section _bfd_generic_link_split_section
#endif
-
#ifndef MY_bfd_copy_private_bfd_data
#define MY_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data
#endif
@@ -581,7 +578,7 @@ MY_bfd_final_link (abfd, info)
#endif
/* Aout symbols normally have leading underscores */
-#ifndef MY_symbol_leading_char
+#ifndef MY_symbol_leading_char
#define MY_symbol_leading_char '_'
#endif
@@ -643,7 +640,7 @@ const bfd_target MY(vec) =
/* Alternative_target */
NULL,
-
+
(PTR) MY_backend_data
};
#endif /* MY_BFD_TARGET */
diff --git a/contrib/binutils/bfd/aout-tic30.c b/contrib/binutils/bfd/aout-tic30.c
index 686c159..f0f4d3d 100644
--- a/contrib/binutils/bfd/aout-tic30.c
+++ b/contrib/binutils/bfd/aout-tic30.c
@@ -128,7 +128,7 @@ static CONST struct aout_backend_data tic30_aout_backend_data =
/* This table lists the relocation types for the TMS320C30. There are
only a few relocations required, and all must be divided by 4 (>>
2) to get the 32-bit addresses in the format the TMS320C30 likes
- it. */
+ it. */
reloc_howto_type tic30_aout_howto_table[] =
{
EMPTY_HOWTO (-1),
@@ -210,7 +210,7 @@ tic30_aout_reloc_howto (abfd, relocs, r_index, r_extern, r_pcrel)
requires that any relocations for the data section should point to
the end of the aligned text section, plus an offset. By default,
this does not happen, therefore this function takes care of
- that. */
+ that. */
static bfd_reloc_status_type
tic30_aout_fix_16 (abfd, reloc_entry, symbol, data, input_section, output_bfd, error_message)
@@ -224,11 +224,11 @@ tic30_aout_fix_16 (abfd, reloc_entry, symbol, data, input_section, output_bfd, e
{
bfd_vma relocation;
- /* Make sure that the symbol's section is defined. */
+ /* Make sure that the symbol's section is defined. */
if (symbol->section == &bfd_und_section && (symbol->flags & BSF_WEAK) == 0)
return output_bfd ? bfd_reloc_ok : bfd_reloc_undefined;
/* Get the size of the input section and turn it into the TMS320C30
- 32-bit address format. */
+ 32-bit address format. */
relocation = (symbol->section->vma >> 2);
relocation += bfd_get_16 (abfd, (bfd_byte *) data + reloc_entry->address);
bfd_put_16 (abfd, relocation, (bfd_byte *) data + reloc_entry->address);
@@ -236,7 +236,7 @@ tic30_aout_fix_16 (abfd, reloc_entry, symbol, data, input_section, output_bfd, e
}
/* This function does the same thing as tic30_aout_fix_16 except for 32
- bit relocations. */
+ bit relocations. */
static bfd_reloc_status_type
tic30_aout_fix_32 (abfd, reloc_entry, symbol, data, input_section,
@@ -251,11 +251,11 @@ tic30_aout_fix_32 (abfd, reloc_entry, symbol, data, input_section,
{
bfd_vma relocation;
- /* Make sure that the symbol's section is defined. */
+ /* Make sure that the symbol's section is defined. */
if (symbol->section == &bfd_und_section && (symbol->flags & BSF_WEAK) == 0)
return output_bfd ? bfd_reloc_ok : bfd_reloc_undefined;
/* Get the size of the input section and turn it into the TMS320C30
- 32-bit address format. */
+ 32-bit address format. */
relocation = (symbol->section->vma >> 2);
relocation += bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address);
bfd_put_32 (abfd, relocation, (bfd_byte *) data + reloc_entry->address);
@@ -267,7 +267,7 @@ tic30_aout_fix_32 (abfd, reloc_entry, symbol, data, input_section,
useless for a relocation, so we just get the offset value and place
a version of this within the object code.
tic30_aout_final_link_relocate will then calculate the required
- relocation to add on to the value in the object code. */
+ relocation to add on to the value in the object code. */
static bfd_reloc_status_type
tic30_aout_fix_pcrel_16 (abfd, reloc_entry, symbol, data, input_section,
@@ -285,7 +285,7 @@ tic30_aout_fix_pcrel_16 (abfd, reloc_entry, symbol, data, input_section,
/* The byte before the location of the fix contains bits 23-16 of
the pcrel instruction. Bit 21 is set for a delayed instruction
- which requires on offset of 3 instead of 1. */
+ which requires on offset of 3 instead of 1. */
if (offset_data & 0x20)
relocation -= 3;
else
@@ -295,14 +295,16 @@ tic30_aout_fix_pcrel_16 (abfd, reloc_entry, symbol, data, input_section,
}
/* These macros will get 24-bit values from the bfd definition.
- Big-endian only. */
-#define bfd_getb_24(BFD,ADDR) (bfd_get_8(BFD,ADDR) << 16) | \
- (bfd_get_8(BFD,ADDR+1) << 8) | \
- (bfd_get_8(BFD,ADDR+2))
+ Big-endian only. */
+#define bfd_getb_24(BFD,ADDR) \
+ (bfd_get_8 (BFD, ADDR ) << 16) | \
+ (bfd_get_8 (BFD, ADDR + 1) << 8) | \
+ (bfd_get_8 (BFD, ADDR + 2) )
-#define bfd_putb_24(BFD,DATA,ADDR) bfd_put_8(BFD,(bfd_byte)((DATA >> 16) & 0xFF),ADDR); \
- bfd_put_8(BFD,(bfd_byte)((DATA >> 8) & 0xFF),ADDR+1); \
- bfd_put_8(BFD,(bfd_byte)(DATA & 0xFF),ADDR+2)
+#define bfd_putb_24(BFD,DATA,ADDR) \
+ bfd_put_8 (BFD, (bfd_byte) ((DATA >> 16) & 0xFF), ADDR ); \
+ bfd_put_8 (BFD, (bfd_byte) ((DATA >> 8) & 0xFF), ADDR + 1); \
+ bfd_put_8 (BFD, (bfd_byte) ( DATA & 0xFF), ADDR + 2)
/* Set parameters about this a.out file that are machine-dependent.
This routine is called from some_aout_object_p just before it returns. */
@@ -563,7 +565,7 @@ tic30_aout_object_p (abfd)
* means that it isn't obvious if EXEC_P should be set.
* All of the following must be true for an executable:
* There must be no relocations, the bfd can be neither an
- * archive nor an archive element, and the file must be executable. */
+ * archive nor an archive element, and the file must be executable. */
if (exec.a_trsize + exec.a_drsize == 0
&& bfd_get_format (abfd) == bfd_object && abfd->my_archive == NULL)
@@ -586,7 +588,6 @@ tic30_aout_object_p (abfd)
section contents, and copy_private_bfd_data is not called until
after the section contents have been set. */
-/*ARGSUSED */
static boolean
MY_bfd_copy_private_section_data (ibfd, isec, obfd, osec)
bfd *ibfd;
@@ -720,7 +721,7 @@ MY_bfd_final_link (abfd, info)
int pad;
/* Set the executable header size to 0, as we don't want one for an
- output. */
+ output. */
adata (abfd).exec_bytes_size = 0;
pos = adata (abfd).exec_bytes_size;
/* Text. */
@@ -765,7 +766,7 @@ MY_bfd_final_link (abfd, info)
obj_bsssec (abfd)->vma = vma;
obj_bsssec (abfd)->user_set_vma = 1;
- /* We are fully resized, so don't readjust in final_link. */
+ /* We are fully resized, so don't readjust in final_link. */
adata (abfd).magic = z_magic;
return NAME (aout, final_link) (abfd, info, MY_final_link_callback);
@@ -961,7 +962,6 @@ tic30_aout_set_arch_mach (abfd, arch, machine)
#define MY_bfd_link_split_section _bfd_generic_link_split_section
#endif
-
#ifndef MY_bfd_copy_private_bfd_data
#define MY_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data
#endif
@@ -1058,7 +1058,7 @@ const bfd_target tic30_aout_vec =
BFD_JUMP_TABLE_DYNAMIC (MY),
NULL,
-
+
(PTR) MY_backend_data
};
#endif /* MY_BFD_TARGET */
diff --git a/contrib/binutils/bfd/aoutf1.h b/contrib/binutils/bfd/aoutf1.h
index fdf95b5..4ad49a1 100644
--- a/contrib/binutils/bfd/aoutf1.h
+++ b/contrib/binutils/bfd/aoutf1.h
@@ -33,7 +33,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* This is needed to reject a NewsOS file, e.g. in
gdb/testsuite/gdb.t10/crossload.exp. <kingdon@cygnus.com>
I needed to add M_UNKNOWN to recognize a 68000 object, so this will
- probably no longer reject a NewsOS object. <ian@cygnus.com>. */
+ probably no longer reject a NewsOS object. <ian@cygnus.com>. */
#ifndef MACHTYPE_OK
#define MACHTYPE_OK(mtype) \
(((mtype) == M_SPARC && bfd_lookup_arch (bfd_arch_sparc, 0) != NULL) \
@@ -123,7 +123,7 @@ sunos_set_arch_mach (abfd, machtype)
case M_UNKNOWN:
/* Some Sun3s make magic numbers without cpu types in them, so
- we'll default to the 68000. */
+ we'll default to the 68000. */
arch = bfd_arch_m68k;
machine = bfd_mach_m68000;
break;
@@ -180,7 +180,7 @@ sunos_set_arch_mach (abfd, machtype)
}
#define SET_ARCH_MACH(ABFD, EXEC) \
- NAME(sunos,set_arch_mach)(ABFD, N_MACHTYPE (EXEC)); \
+ NAME(sunos,set_arch_mach) (ABFD, N_MACHTYPE (EXEC)); \
choose_reloc_size(ABFD);
/* Determine the size of a relocation entry, based on the architecture */
@@ -275,11 +275,11 @@ sunos_write_object_contents (abfd)
Unfortunately, they don't document the FPA structure, or at least I
can't find it easily. Fortunately the core header contains its own
length. So this shouldn't cause problems, except for c_ucode, which
- so far we don't use but is easy to find with a little arithmetic. */
+ so far we don't use but is easy to find with a little arithmetic. */
/* But the reg structure can be gotten from the SPARC processor handbook.
This really should be in a GNU include file though so that gdb can use
- the same info. */
+ the same info. */
struct regs
{
int r_psr;
@@ -439,7 +439,7 @@ swapcore_sun3 (abfd, ext, intcore)
intcore->c_ssize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_ssize);
memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname));
intcore->fp_stuff_pos = (long) (((struct external_sun3_core *) 0)->fp_stuff);
- /* FP stuff takes up whole rest of struct, except c_ucode. */
+ /* FP stuff takes up whole rest of struct, except c_ucode. */
intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) -
(file_ptr) (((struct external_sun3_core *) 0)->fp_stuff);
/* Ucode is the last thing in the struct -- just before the end */
@@ -449,7 +449,6 @@ swapcore_sun3 (abfd, ext, intcore)
intcore->c_stacktop = 0x0E000000; /* By experimentation */
}
-
/* byte-swap in the Sparc core structure */
static void
swapcore_sparc (abfd, ext, intcore)
@@ -476,7 +475,7 @@ swapcore_sparc (abfd, ext, intcore)
intcore->c_ssize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_ssize);
memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname));
intcore->fp_stuff_pos = (long) (((struct external_sparc_core *) 0)->fp_stuff);
- /* FP stuff takes up whole rest of struct, except c_ucode. */
+ /* FP stuff takes up whole rest of struct, except c_ucode. */
intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) -
(file_ptr) (((struct external_sparc_core *) 0)->fp_stuff);
/* Ucode is the last thing in the struct -- just before the end */
@@ -544,7 +543,7 @@ swapcore_solaris_bcp (abfd, ext, intcore)
memcpy (intcore->c_cmdname, extcore->c_cmdname, sizeof (intcore->c_cmdname));
intcore->fp_stuff_pos =
(long) (((struct external_solaris_bcp_core *) 0)->fp_stuff);
- /* FP stuff takes up whole rest of struct, except c_ucode. */
+ /* FP stuff takes up whole rest of struct, except c_ucode. */
intcore->fp_stuff_size = intcore->c_len - (sizeof extcore->c_ucode) -
(file_ptr) (((struct external_solaris_bcp_core *) 0)->fp_stuff);
/* Ucode is the last thing in the struct -- just before the end */
@@ -764,7 +763,7 @@ sunos4_core_file_matches_executable_p (core_bfd, exec_bfd)
return false;
}
- /* Solaris core files do not include an aouthdr. */
+ /* Solaris core files do not include an aouthdr. */
if ((core_hdr (core_bfd)->hdr)->c_len == SOLARIS_BCP_CORE_LEN)
return true;
diff --git a/contrib/binutils/bfd/aoutx.h b/contrib/binutils/bfd/aoutx.h
index 920661b..94a46b0 100644
--- a/contrib/binutils/bfd/aoutx.h
+++ b/contrib/binutils/bfd/aoutx.h
@@ -23,7 +23,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
SECTION
a.out backends
-
DESCRIPTION
BFD supports a number of different flavours of a.out format,
@@ -165,10 +164,18 @@ DESCRIPTION
#define MY_swap_std_reloc_in NAME(aout,swap_std_reloc_in)
#endif
+#ifndef MY_swap_ext_reloc_in
+#define MY_swap_ext_reloc_in NAME(aout,swap_ext_reloc_in)
+#endif
+
#ifndef MY_swap_std_reloc_out
#define MY_swap_std_reloc_out NAME(aout,swap_std_reloc_out)
#endif
+#ifndef MY_swap_ext_reloc_out
+#define MY_swap_ext_reloc_out NAME(aout,swap_ext_reloc_out)
+#endif
+
#ifndef MY_final_link_relocate
#define MY_final_link_relocate _bfd_final_link_relocate
#endif
@@ -260,7 +267,7 @@ EMPTY_HOWTO (-1),
HOWTO(40, 0, 2, 0, false, 0, complain_overflow_bitfield,0,"BASEREL", false, 0,0x00000000, false),
};
-#define TABLE_SIZE(TABLE) (sizeof(TABLE)/sizeof(TABLE[0]))
+#define TABLE_SIZE(TABLE) (sizeof (TABLE)/sizeof (TABLE[0]))
reloc_howto_type *
NAME(aout,reloc_type_lookup) (abfd,code)
@@ -283,6 +290,8 @@ NAME(aout,reloc_type_lookup) (abfd,code)
if (ext)
switch (code)
{
+ EXT (BFD_RELOC_8, 0);
+ EXT (BFD_RELOC_16, 1);
EXT (BFD_RELOC_32, 2);
EXT (BFD_RELOC_HI22, 8);
EXT (BFD_RELOC_LO10, 11);
@@ -353,7 +362,7 @@ NAME(aout,swap_exec_header_in) (abfd, raw_bytes, execp)
/* The internal_exec structure has some fields that are unused in this
configuration (IE for i960), so ensure that all such uninitialized
fields are zero'd out. There are places where two of these structs
- are memcmp'd, and thus the contents do matter. */
+ are memcmp'd, and thus the contents do matter. */
memset ((PTR) execp, 0, sizeof (struct internal_exec));
/* Now fill in fields in the execp, from the bytes in the raw data. */
execp->a_info = bfd_h_get_32 (abfd, bytes->e_info);
@@ -390,7 +399,7 @@ NAME(aout,swap_exec_header_out) (abfd, execp, raw_bytes)
{
struct external_exec *bytes = (struct external_exec *)raw_bytes;
- /* Now fill in fields in the raw data, from the fields in the exec struct. */
+ /* Now fill in fields in the raw data, from the fields in the exec struct. */
bfd_h_put_32 (abfd, execp->a_info , bytes->e_info);
PUT_WORD (abfd, execp->a_text , bytes->e_text);
PUT_WORD (abfd, execp->a_data , bytes->e_data);
@@ -426,7 +435,7 @@ FUNCTION
SYNOPSIS
const bfd_target *aout_@var{size}_some_aout_object_p
(bfd *abfd,
- const bfd_target *(*callback_to_real_object_p)());
+ const bfd_target *(*callback_to_real_object_p) ());
DESCRIPTION
Some a.out variant thinks that the file open in @var{abfd}
@@ -507,7 +516,7 @@ NAME(aout,some_aout_object_p) (abfd, execp, callback_to_real_object_p)
/* The default relocation entry size is that of traditional V7 Unix. */
obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
- /* The default symbol entry size is that of traditional Unix. */
+ /* The default symbol entry size is that of traditional Unix. */
obj_symbol_entry_size (abfd) = EXTERNAL_NLIST_SIZE;
#ifdef USE_MMAP
@@ -591,7 +600,7 @@ NAME(aout,some_aout_object_p) (abfd, execp, callback_to_real_object_p)
header, should cope with them in this callback as well. */
#endif /* DOCUMENTATION */
- result = (*callback_to_real_object_p)(abfd);
+ result = (*callback_to_real_object_p) (abfd);
/* Now that the segment addresses have been worked out, take a better
guess at whether the file is executable. If the entry point
@@ -606,7 +615,7 @@ NAME(aout,some_aout_object_p) (abfd, execp, callback_to_real_object_p)
To fix this, we now accept any non-zero entry point as an indication of
executability. This will work most of the time, since only the linker
- sets the entry point, and that is likely to be non-zero for most systems. */
+ sets the entry point, and that is likely to be non-zero for most systems. */
if (execp->a_entry != 0
|| (execp->a_entry >= obj_textsec(abfd)->vma
@@ -683,7 +692,6 @@ NAME(aout,mkobject) (abfd)
return true;
}
-
/*
FUNCTION
aout_@var{size}_machine_type
@@ -747,7 +755,7 @@ NAME(aout,machine_type) (arch, machine, unknown)
case bfd_arch_arm:
if (machine == 0) arch_flags = M_ARM;
break;
-
+
case bfd_arch_mips:
switch (machine) {
case 0:
@@ -768,7 +776,12 @@ NAME(aout,machine_type) (arch, machine, unknown)
case bfd_mach_mips8000:
case bfd_mach_mips10000:
case bfd_mach_mips16:
- /* FIXME: These should be MIPS3 or MIPS4. */
+ case bfd_mach_mips32:
+ case bfd_mach_mips32_4k:
+ case bfd_mach_mips5:
+ case bfd_mach_mips64:
+ case bfd_mach_mips_sb1:
+ /* FIXME: These should be MIPS3, MIPS4, MIPS16, MIPS32, etc. */
arch_flags = M_MIPS2;
break;
default:
@@ -790,6 +803,10 @@ NAME(aout,machine_type) (arch, machine, unknown)
*unknown = false;
break;
+ case bfd_arch_cris:
+ if (machine == 0 || machine == 255) arch_flags = M_CRIS;
+ break;
+
default:
arch_flags = M_UNKNOWN;
}
@@ -800,7 +817,6 @@ NAME(aout,machine_type) (arch, machine, unknown)
return arch_flags;
}
-
/*
FUNCTION
aout_@var{size}_set_arch_mach
@@ -927,7 +943,7 @@ adjust_z_magic (abfd, execp)
file_ptr text_end;
CONST struct aout_backend_data *abdp;
int ztih; /* Nonzero if text includes exec header. */
-
+
abdp = aout_backend_info (abfd);
/* Text. */
@@ -995,7 +1011,7 @@ adjust_z_magic (abfd, execp)
}
obj_datasec(abfd)->filepos = (obj_textsec(abfd)->filepos
+ obj_textsec(abfd)->_raw_size);
-
+
/* Fix up exec header while we're at it. */
execp->a_text = obj_textsec(abfd)->_raw_size;
if (ztih && (!abdp || (abdp && !abdp->exec_header_not_counted)))
@@ -1040,7 +1056,7 @@ adjust_n_magic (abfd, execp)
file_ptr pos = adata(abfd).exec_bytes_size;
bfd_vma vma = 0;
int pad;
-
+
/* Text. */
obj_textsec(abfd)->filepos = pos;
if (!obj_textsec(abfd)->user_set_vma)
@@ -1055,7 +1071,7 @@ adjust_n_magic (abfd, execp)
if (!obj_datasec(abfd)->user_set_vma)
obj_datasec(abfd)->vma = BFD_ALIGN (vma, adata(abfd).segment_size);
vma = obj_datasec(abfd)->vma;
-
+
/* Since BSS follows data immediately, see if it needs alignment. */
vma += obj_datasec(abfd)->_raw_size;
pad = align_power (vma, obj_bsssec(abfd)->alignment_power) - vma;
@@ -1100,7 +1116,7 @@ NAME(aout,adjust_sizes_and_vmas) (abfd, text_size, text_end)
(TARGET_PAGE_SIZE). However, newer versions of SUNOS start the text
segment right after the exec header; the latter is counted in the
text segment size, and is paged in by the kernel with the rest of
- the text. */
+ the text. */
/* This perhaps isn't the right way to do this, but made it simpler for me
to understand enough to implement it. Better would probably be to go
@@ -1187,7 +1203,6 @@ NAME(aout,new_section_hook) (abfd, newsect)
/* align to double at least */
newsect->alignment_power = bfd_get_arch_info(abfd)->section_align_power;
-
if (bfd_get_format (abfd) == bfd_object)
{
if (obj_textsec(abfd) == NULL && !strcmp(newsect->name, ".text")) {
@@ -1297,7 +1312,7 @@ aout_get_external_symbols (abfd)
obj_aout_external_syms (abfd) = syms;
obj_aout_external_sym_count (abfd) = count;
}
-
+
if (obj_aout_external_strings (abfd) == NULL
&& exec_hdr (abfd)->a_syms != 0)
{
@@ -1626,7 +1641,7 @@ translate_to_native_sym_flags (abfd, cache_ptr, sym_pointer)
file. */
(*_bfd_error_handler)
(_("%s: can not represent section for symbol `%s' in a.out object file format"),
- bfd_get_filename (abfd),
+ bfd_get_filename (abfd),
cache_ptr->name != NULL ? cache_ptr->name : _("*unknown*"));
bfd_set_error (bfd_error_nonrepresentable_section);
return false;
@@ -1671,6 +1686,8 @@ translate_to_native_sym_flags (abfd, cache_ptr, sym_pointer)
sym_pointer->e_type[0] = ((aout_symbol_type *) cache_ptr)->type;
else if ((cache_ptr->flags & BSF_GLOBAL) != 0)
sym_pointer->e_type[0] |= N_EXT;
+ else if ((cache_ptr->flags & BSF_LOCAL) != 0)
+ sym_pointer->e_type[0] &= ~N_EXT;
if ((cache_ptr->flags & BSF_CONSTRUCTOR) != 0)
{
@@ -1706,7 +1723,7 @@ translate_to_native_sym_flags (abfd, cache_ptr, sym_pointer)
return true;
}
-/* Native-level interface to symbols. */
+/* Native-level interface to symbols. */
asymbol *
NAME(aout,make_empty_symbol) (abfd)
@@ -1773,7 +1790,7 @@ NAME(aout,translate_symbol_table) (abfd, in, ext, count, str, strsize, dynamic)
/* We read the symbols into a buffer, which is discarded when this
function exits. We read the strings into a buffer large enough to
- hold them all plus all the cached symbol entries. */
+ hold them all plus all the cached symbol entries. */
boolean
NAME(aout,slurp_symbol_table) (abfd)
@@ -1960,7 +1977,6 @@ error_return:
_bfd_stringtab_free (strtab);
return false;
}
-
long
NAME(aout,get_symtab) (abfd, location)
@@ -1970,18 +1986,17 @@ NAME(aout,get_symtab) (abfd, location)
unsigned int counter = 0;
aout_symbol_type *symbase;
- if (!NAME(aout,slurp_symbol_table)(abfd))
+ if (!NAME(aout,slurp_symbol_table) (abfd))
return -1;
for (symbase = obj_aout_symbols(abfd); counter++ < bfd_get_symcount (abfd);)
- *(location++) = (asymbol *)( symbase++);
+ *(location++) = (asymbol *) ( symbase++);
*location++ =0;
return bfd_get_symcount (abfd);
}
-
/* Standard reloc stuff */
-/* Output standard relocation information to a file in target byte order. */
+/* Output standard relocation information to a file in target byte order. */
extern void NAME(aout,swap_std_reloc_out)
PARAMS ((bfd *, arelent *, struct reloc_std_external *));
@@ -2024,7 +2039,6 @@ NAME(aout,swap_std_reloc_out) (abfd, g, natptr)
check for that here
*/
-
if (bfd_is_com_section (output_section)
|| bfd_is_abs_section (output_section)
|| bfd_is_und_section (output_section))
@@ -2077,9 +2091,8 @@ NAME(aout,swap_std_reloc_out) (abfd, g, natptr)
}
}
-
/* Extended stuff */
-/* Output extended relocation information to a file in target byte order. */
+/* Output extended relocation information to a file in target byte order. */
extern void NAME(aout,swap_ext_reloc_out)
PARAMS ((bfd *, arelent *, struct reloc_ext_external *));
@@ -2161,7 +2174,6 @@ NAME(aout,swap_ext_reloc_out) (abfd, g, natptr)
contain 60. This macro subs the base of each section from the value
to give the true offset from the section */
-
#define MOVE_ADDRESS(ad) \
if (r_extern) { \
/* undefined symbol */ \
@@ -2381,8 +2393,8 @@ NAME(aout,slurp_reloc_table) (abfd, asect, symbols)
(struct reloc_ext_external *) relocs;
for (; counter < count; counter++, rptr++, cache_ptr++)
- NAME(aout,swap_ext_reloc_in) (abfd, rptr, cache_ptr, symbols,
- bfd_get_symcount (abfd));
+ MY_swap_ext_reloc_in (abfd, rptr, cache_ptr, symbols,
+ bfd_get_symcount (abfd));
}
else
{
@@ -2432,7 +2444,8 @@ NAME(aout,squirt_out_relocs) (abfd, section)
for (natptr = native;
count != 0;
--count, natptr += each_size, ++generic)
- NAME(aout,swap_ext_reloc_out) (abfd, *generic, (struct reloc_ext_external *)natptr);
+ MY_swap_ext_reloc_out (abfd, *generic,
+ (struct reloc_ext_external *) natptr);
}
else
{
@@ -2468,7 +2481,7 @@ NAME(aout,canonicalize_reloc) (abfd, section, relptr, symbols)
return 0;
}
- if (!(tblptr || NAME(aout,slurp_reloc_table)(abfd, section, symbols)))
+ if (!(tblptr || NAME(aout,slurp_reloc_table) (abfd, section, symbols)))
return -1;
if (section->flags & SEC_CONSTRUCTOR) {
@@ -2523,19 +2536,17 @@ NAME(aout,get_reloc_upper_bound) (abfd, asect)
bfd_set_error (bfd_error_invalid_operation);
return -1;
}
-
long
NAME(aout,get_symtab_upper_bound) (abfd)
bfd *abfd;
{
- if (!NAME(aout,slurp_symbol_table)(abfd))
+ if (!NAME(aout,slurp_symbol_table) (abfd))
return -1;
return (bfd_get_symcount (abfd)+1) * (sizeof (aout_symbol_type *));
}
-/*ARGSUSED*/
alent *
NAME(aout,get_lineno) (ignore_abfd, ignore_symbol)
bfd *ignore_abfd ATTRIBUTE_UNUSED;
@@ -2544,7 +2555,6 @@ NAME(aout,get_lineno) (ignore_abfd, ignore_symbol)
return (alent *)NULL;
}
-/*ARGSUSED*/
void
NAME(aout,get_symbol_info) (ignore_abfd, symbol, ret)
bfd *ignore_abfd ATTRIBUTE_UNUSED;
@@ -2561,18 +2571,17 @@ NAME(aout,get_symbol_info) (ignore_abfd, symbol, ret)
if (stab_name == NULL)
{
- sprintf(buf, "(%d)", type_code);
+ sprintf (buf, "(%d)", type_code);
stab_name = buf;
}
ret->type = '-';
ret->stab_type = type_code;
- ret->stab_other = (unsigned)(aout_symbol(symbol)->other & 0xff);
- ret->stab_desc = (unsigned)(aout_symbol(symbol)->desc & 0xffff);
+ ret->stab_other = (unsigned) (aout_symbol(symbol)->other & 0xff);
+ ret->stab_desc = (unsigned) (aout_symbol(symbol)->desc & 0xffff);
ret->stab_name = stab_name;
}
}
-/*ARGSUSED*/
void
NAME(aout,print_symbol) (ignore_abfd, afile, symbol, how)
bfd *ignore_abfd ATTRIBUTE_UNUSED;
@@ -2585,27 +2594,26 @@ NAME(aout,print_symbol) (ignore_abfd, afile, symbol, how)
switch (how) {
case bfd_print_symbol_name:
if (symbol->name)
- fprintf(file,"%s", symbol->name);
+ fprintf (file,"%s", symbol->name);
break;
case bfd_print_symbol_more:
- fprintf(file,"%4x %2x %2x",(unsigned)(aout_symbol(symbol)->desc & 0xffff),
- (unsigned)(aout_symbol(symbol)->other & 0xff),
- (unsigned)(aout_symbol(symbol)->type));
+ fprintf (file,"%4x %2x %2x",(unsigned) (aout_symbol(symbol)->desc & 0xffff),
+ (unsigned) (aout_symbol(symbol)->other & 0xff),
+ (unsigned) (aout_symbol(symbol)->type));
break;
case bfd_print_symbol_all:
{
CONST char *section_name = symbol->section->name;
-
bfd_print_symbol_vandf((PTR)file,symbol);
- fprintf(file," %-5s %04x %02x %02x",
+ fprintf (file," %-5s %04x %02x %02x",
section_name,
- (unsigned)(aout_symbol(symbol)->desc & 0xffff),
- (unsigned)(aout_symbol(symbol)->other & 0xff),
- (unsigned)(aout_symbol(symbol)->type & 0xff));
+ (unsigned) (aout_symbol(symbol)->desc & 0xffff),
+ (unsigned) (aout_symbol(symbol)->other & 0xff),
+ (unsigned) (aout_symbol(symbol)->type & 0xff));
if (symbol->name)
- fprintf(file," %s", symbol->name);
+ fprintf (file," %s", symbol->name);
}
break;
}
@@ -2705,8 +2713,8 @@ NAME(aout,find_nearest_line)
CONST char *directory_name = NULL;
CONST char *main_file_name = NULL;
CONST char *current_file_name = NULL;
- CONST char *line_file_name = NULL; /* Value of current_file_name at line number. */
- CONST char *line_directory_name = NULL; /* Value of directory_name at line number. */
+ CONST char *line_file_name = NULL; /* Value of current_file_name at line number. */
+ CONST char *line_directory_name = NULL; /* Value of directory_name at line number. */
bfd_vma low_line_vma = 0;
bfd_vma low_func_vma = 0;
asymbol *func = 0;
@@ -2718,7 +2726,7 @@ NAME(aout,find_nearest_line)
*line_ptr = 0;
if (symbols != (asymbol **)NULL) {
for (p = symbols; *p; p++) {
- aout_symbol_type *q = (aout_symbol_type *)(*p);
+ aout_symbol_type *q = (aout_symbol_type *) (*p);
next:
switch (q->type){
case N_TEXT:
@@ -2765,15 +2773,15 @@ NAME(aout,find_nearest_line)
}
main_file_name = current_file_name = q->symbol.name;
- /* Look ahead to next symbol to check if that too is an N_SO. */
+ /* Look ahead to next symbol to check if that too is an N_SO. */
p++;
if (*p == NULL)
break;
- q = (aout_symbol_type *)(*p);
+ q = (aout_symbol_type *) (*p);
if (q->type != (int)N_SO)
goto next;
- /* Found a second N_SO First is directory; second is filename. */
+ /* Found a second N_SO First is directory; second is filename. */
directory_name = current_file_name;
main_file_name = current_file_name = q->symbol.name;
if (obj_textsec(abfd) != section)
@@ -2881,7 +2889,6 @@ NAME(aout,find_nearest_line)
return true;
}
-/*ARGSUSED*/
int
NAME(aout,sizeof_headers) (abfd, execable)
bfd *abfd;
@@ -4125,7 +4132,7 @@ aout_link_write_symbols (finfo, input_bfd)
/* We have saved the hash table entry for this symbol, if
there is one. Note that we could just look it up again
in the hash table, provided we first check that it is an
- external symbol. */
+ external symbol. */
h = *sym_hash;
/* Use the name from the hash table, in case the symbol was
@@ -4789,7 +4796,7 @@ aout_link_input_section_std (finfo, input_bfd, input_section, relocs,
#ifdef MY_reloc_howto
howto = MY_reloc_howto(input_bfd, rel, r_index, r_extern, r_pcrel);
-#else
+#else
{
int r_jmptable;
int r_relative;
@@ -5671,6 +5678,10 @@ aout_link_reloc_link_order (finfo, o, p)
}
else
{
+#ifdef MY_put_ext_reloc
+ MY_put_ext_reloc (finfo->output_bfd, r_extern, r_index, p->offset,
+ howto, &erel, pr->addend);
+#else
PUT_WORD (finfo->output_bfd, p->offset, erel.r_address);
if (bfd_header_big_endian (finfo->output_bfd))
@@ -5693,6 +5704,7 @@ aout_link_reloc_link_order (finfo, o, p)
}
PUT_WORD (finfo->output_bfd, pr->addend, erel.r_addend);
+#endif /* MY_put_ext_reloc */
rel_ptr = (PTR) &erel;
}
diff --git a/contrib/binutils/bfd/archive.c b/contrib/binutils/bfd/archive.c
index 27dfd39..14dc770 100644
--- a/contrib/binutils/bfd/archive.c
+++ b/contrib/binutils/bfd/archive.c
@@ -152,10 +152,8 @@ extern int errno;
the cache when we actually read one. We also don't sort the cache;
it's generally short enough to search linearly.
Note that the pointers here point to the front of the ar_hdr, not
- to the front of the contents!
-*/
-struct ar_cache
-{
+ to the front of the contents! */
+struct ar_cache {
file_ptr ptr;
bfd *arelt;
struct ar_cache *next;
@@ -164,7 +162,7 @@ struct ar_cache
#define ar_padchar(abfd) ((abfd)->xvec->ar_pad_char)
#define ar_maxnamelen(abfd) ((abfd)->xvec->ar_max_namelen)
-#define arch_eltdata(bfd) ((struct areltdata *)((bfd)->arelt_data))
+#define arch_eltdata(bfd) ((struct areltdata *) ((bfd)->arelt_data))
#define arch_hdr(bfd) ((struct ar_hdr *)arch_eltdata(bfd)->arch_header)
static char *get_extended_arelt_filename PARAMS ((bfd *arch,
@@ -316,7 +314,7 @@ _bfd_add_bfd_to_archive_cache (arch_bfd, filepos, new_elt)
}
/* The name begins with space. Hence the rest of the name is an index into
- the string table. */
+ the string table. */
static char *
get_extended_arelt_filename (arch, name)
@@ -326,9 +324,9 @@ get_extended_arelt_filename (arch, name)
unsigned long index = 0;
/* Should extract string so that I can guarantee not to overflow into
- the next region, but I'm too lazy. */
+ the next region, but I'm too lazy. */
errno = 0;
- /* Skip first char, which is '/' in SVR4 or ' ' in some other variants. */
+ /* Skip first char, which is '/' in SVR4 or ' ' in some other variants. */
index = strtol (name + 1, NULL, 10);
if (errno != 0)
{
@@ -411,7 +409,7 @@ _bfd_generic_read_ar_hdr_mag (abfd, mag)
}
}
/* BSD4.4-style long filename.
- Only implemented for reading, so far! */
+ Only implemented for reading, so far! */
else if (hdr.ar_name[0] == '#'
&& hdr.ar_name[1] == '1'
&& hdr.ar_name[2] == '/'
@@ -440,15 +438,15 @@ _bfd_generic_read_ar_hdr_mag (abfd, mag)
{
/* We judge the end of the name by looking for '/' or ' '.
Note: The SYSV format (terminated by '/') allows embedded
- spaces, so only look for ' ' if we don't find '/'. */
+ spaces, so only look for ' ' if we don't find '/'. */
char *e;
e = memchr (hdr.ar_name, '\0', ar_maxnamelen (abfd));
if (e == NULL)
{
- e = memchr (hdr.ar_name, '/', ar_maxnamelen (abfd));
+ e = memchr (hdr.ar_name, '/', ar_maxnamelen (abfd));
if (e == NULL)
- e = memchr (hdr.ar_name, ' ', ar_maxnamelen (abfd));
+ e = memchr (hdr.ar_name, ' ', ar_maxnamelen (abfd));
}
if (e != NULL)
@@ -526,7 +524,7 @@ _bfd_get_elt_at_filepos (archive, filepos)
if (_bfd_add_bfd_to_archive_cache (archive, filepos, n_nfd))
return n_nfd;
- /* huh? */
+ /* Huh? */
bfd_release (archive, (PTR) n_nfd);
bfd_release (archive, (PTR) new_areldata);
return NULL;
@@ -560,7 +558,6 @@ DESCRIPTION
the archive and the previous return value to return a created
BFD to the next contained element. NULL is returned when there
are no more.
-
*/
bfd *
@@ -595,7 +592,7 @@ bfd_generic_openr_next_archived_file (archive, last_file)
unsigned int size = arelt_size (last_file);
/* Pad to an even boundary...
Note that last_file->origin can be odd in the case of
- BSD-4.4-style element with a long odd size. */
+ BSD-4.4-style element with a long odd size. */
filestart = last_file->origin + size;
filestart += filestart % 2;
}
@@ -603,7 +600,6 @@ bfd_generic_openr_next_archived_file (archive, last_file)
return _bfd_get_elt_at_filepos (archive, filestart);
}
-
const bfd_target *
bfd_generic_archive_p (abfd)
bfd *abfd;
@@ -630,7 +626,7 @@ bfd_generic_archive_p (abfd)
#endif
/* We are setting bfd_ardata(abfd) here, but since bfd_ardata
- involves a cast, we can't do it as the left operand of assignment. */
+ involves a cast, we can't do it as the left operand of assignment. */
abfd->tdata.aout_ar_data = ((struct artdata *)
bfd_zalloc (abfd, sizeof (struct artdata)));
@@ -737,7 +733,7 @@ do_slurp_bsd_armap (abfd)
if (mapdata == NULL)
return false;
parsed_size = mapdata->parsed_size;
- bfd_release (abfd, (PTR) mapdata); /* Don't need it any more. */
+ bfd_release (abfd, (PTR) mapdata); /* Don't need it any more. */
raw_armap = (bfd_byte *) bfd_zalloc (abfd, parsed_size);
if (raw_armap == (bfd_byte *) NULL)
@@ -782,16 +778,17 @@ do_slurp_bsd_armap (abfd)
}
ardata->first_file_filepos = bfd_tell (abfd);
- /* Pad to an even boundary if you have to */
+ /* Pad to an even boundary if you have to. */
ardata->first_file_filepos += (ardata->first_file_filepos) % 2;
/* FIXME, we should provide some way to free raw_ardata when
we are done using the strings from it. For now, it seems
- to be allocated on an objalloc anyway... */
+ to be allocated on an objalloc anyway... */
bfd_has_map (abfd) = true;
return true;
}
-/* Returns false on error, true otherwise */
+/* Returns false on error, true otherwise. */
+
static boolean
do_slurp_coff_armap (abfd)
bfd *abfd;
@@ -803,7 +800,7 @@ do_slurp_coff_armap (abfd)
unsigned int stringsize;
unsigned int parsed_size;
carsym *carsyms;
- unsigned int nsymz; /* Number of symbols in armap. */
+ unsigned int nsymz; /* Number of symbols in armap. */
bfd_vma (*swap) PARAMS ((const bfd_byte *));
char int_buf[sizeof (long)];
unsigned int carsym_size, ptrsize, i;
@@ -812,7 +809,7 @@ do_slurp_coff_armap (abfd)
if (mapdata == NULL)
return false;
parsed_size = mapdata->parsed_size;
- bfd_release (abfd, (PTR) mapdata); /* Don't need it any more. */
+ bfd_release (abfd, (PTR) mapdata); /* Don't need it any more. */
if (bfd_read ((PTR) int_buf, 1, 4, abfd) != 4)
{
@@ -821,7 +818,7 @@ do_slurp_coff_armap (abfd)
return false;
}
/* It seems that all numeric information in a coff archive is always
- in big endian format, nomatter the host or target. */
+ in big endian format, nomatter the host or target. */
swap = bfd_getb32;
nsymz = bfd_getb32 ((PTR) int_buf);
stringsize = parsed_size - (4 * nsymz) - 4;
@@ -836,7 +833,7 @@ do_slurp_coff_armap (abfd)
&& bfd_get_arch (abfd) == bfd_arch_i960
&& bfd_get_flavour (abfd) == bfd_target_coff_flavour)
{
- /* This looks dangerous, let's do it the other way around */
+ /* This looks dangerous, let's do it the other way around. */
nsymz = bfd_getl32 ((PTR) int_buf);
stringsize = parsed_size - (4 * nsymz) - 4;
swap = bfd_getl32;
@@ -844,7 +841,7 @@ do_slurp_coff_armap (abfd)
#endif
/* The coff armap must be read sequentially. So we construct a
- bsd-style one in core all at once, for simplicity. */
+ bsd-style one in core all at once, for simplicity. */
carsym_size = (nsymz * sizeof (carsym));
ptrsize = (4 * nsymz);
@@ -855,7 +852,7 @@ do_slurp_coff_armap (abfd)
carsyms = ardata->symdefs;
stringbase = ((char *) ardata->symdefs) + carsym_size;
- /* Allocate and read in the raw offsets. */
+ /* Allocate and read in the raw offsets. */
raw_armap = (int *) bfd_alloc (abfd, ptrsize);
if (raw_armap == NULL)
goto release_symdefs;
@@ -867,7 +864,7 @@ do_slurp_coff_armap (abfd)
goto release_raw_armap;
}
- /* OK, build the carsyms */
+ /* OK, build the carsyms. */
for (i = 0; i < nsymz; i++)
{
rawptr = raw_armap + i;
@@ -880,27 +877,25 @@ do_slurp_coff_armap (abfd)
ardata->symdef_count = nsymz;
ardata->first_file_filepos = bfd_tell (abfd);
- /* Pad to an even boundary if you have to */
+ /* Pad to an even boundary if you have to. */
ardata->first_file_filepos += (ardata->first_file_filepos) % 2;
-
bfd_has_map (abfd) = true;
bfd_release (abfd, (PTR) raw_armap);
-
- /* Check for a second archive header (as used by PE) */
+ /* Check for a second archive header (as used by PE). */
{
struct areltdata *tmp;
bfd_seek (abfd, ardata->first_file_filepos, SEEK_SET);
tmp = (struct areltdata *) _bfd_read_ar_hdr (abfd);
- if (tmp != NULL)
+ if (tmp != NULL)
{
if (tmp->arch_header[0] == '/'
- && tmp->arch_header[1] == ' ')
+ && tmp->arch_header[1] == ' ')
{
ardata->first_file_filepos +=
- (tmp->parsed_size + sizeof(struct ar_hdr) + 1) & ~1;
+ (tmp->parsed_size + sizeof (struct ar_hdr) + 1) & ~1;
}
bfd_release (abfd, tmp);
}
@@ -952,7 +947,7 @@ bfd_slurp_armap (abfd)
/* Returns false on error, true otherwise */
/* flavor 2 of a bsd armap, similar to bfd_slurp_bsd_armap except the
header is in a slightly different order and the map name is '/'.
- This flavour is used by hp300hpux. */
+ This flavour is used by hp300hpux. */
#define HPUX_SYMDEF_COUNT_SIZE 2
@@ -975,7 +970,7 @@ bfd_slurp_bsd_armap_f2 (abfd)
if (i != 16)
return false;
- /* The archive has at least 16 bytes in it */
+ /* The archive has at least 16 bytes in it. */
if (bfd_seek (abfd, -16L, SEEK_CUR) != 0)
return false;
@@ -1024,7 +1019,7 @@ bfd_slurp_bsd_armap_f2 (abfd)
ardata->cache = 0;
stringsize = bfd_h_get_32 (abfd, raw_armap + HPUX_SYMDEF_COUNT_SIZE);
- /* skip sym count and string sz */
+ /* Skip sym count and string sz. */
stringbase = ((char *) raw_armap
+ HPUX_SYMDEF_COUNT_SIZE
+ BSD_STRING_COUNT_SIZE);
@@ -1044,11 +1039,11 @@ bfd_slurp_bsd_armap_f2 (abfd)
}
ardata->first_file_filepos = bfd_tell (abfd);
- /* Pad to an even boundary if you have to */
+ /* Pad to an even boundary if you have to. */
ardata->first_file_filepos += (ardata->first_file_filepos) % 2;
/* FIXME, we should provide some way to free raw_ardata when
we are done using the strings from it. For now, it seems
- to be allocated on an objalloc anyway... */
+ to be allocated on an objalloc anyway... */
bfd_has_map (abfd) = true;
return true;
}
@@ -1061,9 +1056,10 @@ bfd_slurp_bsd_armap_f2 (abfd)
element (the first in the archive, or second if there is an armap);
the name in the ar_hdr is replaced by <space><index into filename
element>. Index is the P.R. of an int (decimal). Data General have
- extended the format by using the prefix // for the special element */
+ extended the format by using the prefix // for the special element. */
+
+/* Returns false on error, true otherwise. */
-/* Returns false on error, true otherwise */
boolean
_bfd_slurp_extended_name_table (abfd)
bfd *abfd;
@@ -1117,22 +1113,25 @@ _bfd_slurp_extended_name_table (abfd)
{
char *temp = bfd_ardata (abfd)->extended_names;
char *limit = temp + namedata->parsed_size;
- for (; temp < limit; ++temp) {
- if (*temp == '\012')
- temp[temp[-1] == '/' ? -1 : 0] = '\0';
- if (*temp == '\\')
- *temp = '/';
- }
+ for (; temp < limit; ++temp)
+ {
+ if (*temp == '\012')
+ temp[temp[-1] == '/' ? -1 : 0] = '\0';
+ if (*temp == '\\')
+ *temp = '/';
+ }
}
- /* Pad to an even boundary if you have to */
+ /* Pad to an even boundary if you have to. */
bfd_ardata (abfd)->first_file_filepos = bfd_tell (abfd);
bfd_ardata (abfd)->first_file_filepos +=
(bfd_ardata (abfd)->first_file_filepos) % 2;
/* FIXME, we can't release namedata here because it was allocated
- below extended_names on the objalloc... */
- /* bfd_release (abfd, namedata); */
+ below extended_names on the objalloc... */
+#if 0
+ bfd_release (abfd, namedata);
+#endif
}
return true;
}
@@ -1140,7 +1139,8 @@ _bfd_slurp_extended_name_table (abfd)
#ifdef VMS
/* Return a copy of the stuff in the filename between any :]> and a
- semicolon */
+ semicolon. */
+
static const char *
normalize (abfd, file)
bfd *abfd;
@@ -1183,12 +1183,11 @@ normalize (abfd, file)
{
const char *filename = strrchr (file, '/');
-
#ifdef HAVE_DOS_BASED_FILE_SYSTEM
{
/* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
char *bslash = strrchr (file, '\\');
- if (bslash > filename)
+ if (filename == NULL || (bslash != NULL && bslash > filename))
filename = bslash;
if (filename == NULL && file[0] != '\0' && file[1] == ':')
filename = file + 1;
@@ -1250,7 +1249,7 @@ _bfd_construct_extended_name_table (abfd, trailing_slash, tabloc, tablen)
*tablen = 0;
- /* Figure out how long the table should be */
+ /* Figure out how long the table should be. */
for (current = abfd->archive_head; current != NULL; current = current->next)
{
const char *normal;
@@ -1318,7 +1317,7 @@ _bfd_construct_extended_name_table (abfd, trailing_slash, tabloc, tablen)
{
/* Works for now; may need to be re-engineered if we
encounter an oddball archive format and want to
- generalise this hack. */
+ generalise this hack. */
struct ar_hdr *hdr = arch_hdr (current);
strcpy (strptr, normal);
if (! trailing_slash)
@@ -1330,10 +1329,10 @@ _bfd_construct_extended_name_table (abfd, trailing_slash, tabloc, tablen)
}
hdr->ar_name[0] = ar_padchar (current);
/* We know there will always be enough room (one of the few
- cases where you may safely use sprintf). */
+ cases where you may safely use sprintf). */
sprintf ((hdr->ar_name) + 1, "%-d", (unsigned) (strptr - *tabloc));
/* Kinda Kludgy. We should just use the returned value of
- sprintf but not all implementations get this right */
+ sprintf but not all implementations get this right. */
{
char *temp = hdr->ar_name + 2;
for (; temp < hdr->ar_name + maxname; temp++)
@@ -1351,6 +1350,24 @@ _bfd_construct_extended_name_table (abfd, trailing_slash, tabloc, tablen)
/** A couple of functions for creating ar_hdrs */
+#ifdef HPUX_LARGE_AR_IDS
+/* Function to encode large UID/GID values according to HP. */
+
+static void
+hpux_uid_gid_encode (str, id)
+ char str[6];
+ long int id;
+{
+ int cnt;
+
+ str[5] = '@' + (id & 3);
+ id >>= 2;
+
+ for (cnt = 4; cnt >= 0; ++cnt, id >>= 6)
+ str[cnt] = ' ' + (id & 0x3f);
+}
+#endif /* HPUX_LARGE_AR_IDS */
+
#ifndef HAVE_GETUID
#define getuid() 0
#endif
@@ -1362,7 +1379,7 @@ _bfd_construct_extended_name_table (abfd, trailing_slash, tabloc, tablen)
/* Takes a filename, returns an arelt_data for it, or NULL if it can't
make one. The filename must refer to a filename in the filesystem.
The filename field of the ar_hdr will NOT be initialized. If member
- is set, and it's an in-memory bfd, we fake it. */
+ is set, and it's an in-memory bfd, we fake it. */
static struct areltdata *
bfd_ar_hdr_from_filesystem (abfd, filename, member)
@@ -1377,11 +1394,11 @@ bfd_ar_hdr_from_filesystem (abfd, filename, member)
if (member && (member->flags & BFD_IN_MEMORY) != 0)
{
- /* Assume we just "made" the member, and fake it */
+ /* Assume we just "made" the member, and fake it. */
struct bfd_in_memory *bim = (struct bfd_in_memory *) member->iostream;
- time(&status.st_mtime);
- status.st_uid = getuid();
- status.st_gid = getgid();
+ time (&status.st_mtime);
+ status.st_uid = getuid ();
+ status.st_gid = getgid ();
status.st_mode = 0644;
status.st_size = bim->size;
}
@@ -1397,20 +1414,34 @@ bfd_ar_hdr_from_filesystem (abfd, filename, member)
return NULL;
hdr = (struct ar_hdr *) (((char *) ared) + sizeof (struct areltdata));
- /* ar headers are space padded, not null padded! */
+ /* ar headers are space padded, not null padded! */
memset ((PTR) hdr, ' ', sizeof (struct ar_hdr));
strncpy (hdr->ar_fmag, ARFMAG, 2);
- /* Goddamned sprintf doesn't permit MAXIMUM field lengths */
+ /* Goddamned sprintf doesn't permit MAXIMUM field lengths. */
sprintf ((hdr->ar_date), "%-12ld", (long) status.st_mtime);
- sprintf ((hdr->ar_uid), "%ld", (long) status.st_uid);
+#ifdef HPUX_LARGE_AR_IDS
+ /* HP has a very "special" way to handle UID/GID's with numeric values
+ > 99999. */
+ if (status.st_uid > 99999)
+ hpux_uid_gid_encode (hdr->ar_gid, (long) status.st_uid);
+ else
+#endif
+ sprintf ((hdr->ar_uid), "%ld", (long) status.st_uid);
+#ifdef HPUX_LARGE_AR_IDS
+ /* HP has a very "special" way to handle UID/GID's with numeric values
+ > 99999. */
+ if (status.st_gid > 99999)
+ hpux_uid_gid_encode (hdr->ar_uid, (long) status.st_gid);
+ else
+#endif
sprintf ((hdr->ar_gid), "%ld", (long) status.st_gid);
sprintf ((hdr->ar_mode), "%-8o", (unsigned int) status.st_mode);
sprintf ((hdr->ar_size), "%-10ld", (long) status.st_size);
/* Correct for a lossage in sprintf whereby it null-terminates. I cannot
understand how these C losers could design such a ramshackle bunch of
- IO operations */
+ IO operations. */
temp = (char *) hdr;
temp1 = temp + sizeof (struct ar_hdr) - 2;
for (; temp < temp1; temp++)
@@ -1426,9 +1457,9 @@ bfd_ar_hdr_from_filesystem (abfd, filename, member)
}
/* This is magic required by the "ar" program. Since it's
- undocumented, it's undocumented. You may think that it would take
- a strong stomach to write this, and it does, but it takes even a
- stronger stomach to try to code around such a thing! */
+ undocumented, it's undocumented. You may think that it would take
+ a strong stomach to write this, and it does, but it takes even a
+ stronger stomach to try to code around such a thing! */
struct ar_hdr *bfd_special_undocumented_glue PARAMS ((bfd *, const char *));
@@ -1443,8 +1474,8 @@ bfd_special_undocumented_glue (abfd, filename)
return (struct ar_hdr *) ar_elt->arch_header;
}
+/* Analogous to stat call. */
-/* Analogous to stat call */
int
bfd_generic_stat_arch_elt (abfd, buf)
bfd *abfd;
@@ -1461,13 +1492,40 @@ bfd_generic_stat_arch_elt (abfd, buf)
hdr = arch_hdr (abfd);
-#define foo(arelt, stelt, size) \
- buf->stelt = strtol (hdr->arelt, &aloser, size); \
- if (aloser == hdr->arelt) return -1;
+#define foo(arelt, stelt, size) \
+ buf->stelt = strtol (hdr->arelt, &aloser, size); \
+ if (aloser == hdr->arelt) \
+ return -1;
+
+ /* Some platforms support special notations for large IDs. */
+#ifdef HPUX_LARGE_AR_IDS
+# define foo2(arelt, stelt, size) \
+ if (hdr->arelt[5] == ' ') \
+ { \
+ foo (arelt, stelt, size); \
+ } \
+ else \
+ { \
+ int cnt; \
+ for (buf->stelt = cnt = 0; cnt < 5; ++cnt) \
+ { \
+ if (hdr->arelt[cnt] < ' ' || hdr->arelt[cnt] > ' ' + 0x3f) \
+ return -1; \
+ buf->stelt <<= 6; \
+ buf->stelt += hdr->arelt[cnt] - ' '; \
+ } \
+ if (hdr->arelt[5] < '@' || hdr->arelt[5] > '@' + 3) \
+ return -1; \
+ buf->stelt <<= 2; \
+ buf->stelt += hdr->arelt[5] - '@'; \
+ }
+#else
+# define foo2(arelt, stelt, size) foo (arelt, stelt, size)
+#endif
foo (ar_date, st_mtime, 10);
- foo (ar_uid, st_uid, 10);
- foo (ar_gid, st_gid, 10);
+ foo2 (ar_uid, st_uid, 10);
+ foo2 (ar_gid, st_gid, 10);
foo (ar_mode, st_mode, 8);
buf->st_size = arch_eltdata (abfd)->parsed_size;
@@ -1484,7 +1542,7 @@ bfd_dont_truncate_arname (abfd, pathname, arhdr)
/* FIXME: This interacts unpleasantly with ar's quick-append option.
Fortunately ic960 users will never use that option. Fixing this
is very hard; fortunately I know how to do it and will do so once
- intel's release is out the door. */
+ intel's release is out the door. */
struct ar_hdr *hdr = (struct ar_hdr *) arhdr;
size_t length;
@@ -1530,7 +1588,7 @@ bfd_bsd_truncate_arname (abfd, pathname, arhdr)
{
/* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
char *bslash = strrchr (pathname, '\\');
- if (bslash > filename)
+ if (filename == NULL || (bslash != NULL && bslash > filename))
filename = bslash;
if (filename == NULL && pathname[0] != '\0' && pathname[1] == ':')
filename = pathname + 1;
@@ -1564,7 +1622,7 @@ bfd_bsd_truncate_arname (abfd, pathname, arhdr)
4> truncate it before the .o, append .o, stuff THAT in. */
/* This is what gnu ar does. It's better but incompatible with the
- bsd ar. */
+ bsd ar. */
void
bfd_gnu_truncate_arname (abfd, pathname, arhdr)
@@ -1581,7 +1639,7 @@ bfd_gnu_truncate_arname (abfd, pathname, arhdr)
{
/* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
char *bslash = strrchr (pathname, '\\');
- if (bslash > filename)
+ if (filename == NULL || (bslash != NULL && bslash > filename))
filename = bslash;
if (filename == NULL && pathname[0] != '\0' && pathname[1] == ':')
filename = pathname + 1;
@@ -1612,7 +1670,7 @@ bfd_gnu_truncate_arname (abfd, pathname, arhdr)
(hdr->ar_name)[length] = ar_padchar (abfd);
}
-/* The BFD is open for write and has its format set to bfd_archive */
+/* The BFD is open for write and has its format set to bfd_archive. */
boolean
_bfd_write_archive_contents (arch)
@@ -1623,7 +1681,7 @@ _bfd_write_archive_contents (arch)
bfd_size_type elength = 0;
const char *ename = NULL;
boolean makemap = bfd_has_map (arch);
- boolean hasobjects = false; /* if no .o's, don't bother to make a map */
+ boolean hasobjects = false; /* If no .o's, don't bother to make a map. */
bfd_size_type wrote;
unsigned int i;
int tries;
@@ -1633,6 +1691,11 @@ _bfd_write_archive_contents (arch)
then construct a fresh ar_hdr for them. */
for (current = arch->archive_head; current; current = current->next)
{
+ /* This check is checking the bfds for the objects we're reading
+ from (which are usually either an object file or archive on
+ disk), not the archive entries we're writing to. We don't
+ actually create bfds for the archive members, we just copy
+ them byte-wise when we write out the archive. */
if (bfd_write_p (current))
{
bfd_set_error (bfd_error_invalid_operation);
@@ -1645,14 +1708,14 @@ _bfd_write_archive_contents (arch)
if (!current->arelt_data)
return false;
- /* Put in the file name */
+ /* Put in the file name. */
BFD_SEND (arch, _bfd_truncate_arname, (arch,
current->filename,
(char *) arch_hdr (current)));
}
if (makemap && ! hasobjects)
- { /* don't bother if we won't make a map! */
+ { /* Don't bother if we won't make a map! */
if ((bfd_check_format (current, bfd_object))
#if 0 /* FIXME -- these are not set correctly */
&& ((bfd_get_file_flags (current) & HAS_SYMS))
@@ -1712,7 +1775,7 @@ _bfd_write_archive_contents (arch)
unsigned int remaining = arelt_size (current);
struct ar_hdr *hdr = arch_hdr (current);
- /* write ar header */
+ /* Write ar header. */
if (bfd_write ((char *) hdr, 1, sizeof (*hdr), arch) != sizeof (*hdr))
return false;
if (bfd_seek (current, (file_ptr) 0, SEEK_SET) != 0)
@@ -1762,7 +1825,7 @@ _bfd_write_archive_contents (arch)
return true;
}
-/* Note that the namidx for the first symbol is 0 */
+/* Note that the namidx for the first symbol is 0. */
boolean
_bfd_compute_and_write_armap (arch, elength)
@@ -1780,7 +1843,7 @@ _bfd_compute_and_write_armap (arch, elength)
long syms_max = 0;
boolean ret;
- /* Dunno if this is the best place for this info... */
+ /* Dunno if this is the best place for this info... */
if (elength != 0)
elength += sizeof (struct ar_hdr);
elength += elength % 2;
@@ -1795,13 +1858,12 @@ _bfd_compute_and_write_armap (arch, elength)
if (first_name == NULL)
goto error_return;
- /* Drop all the files called __.SYMDEF, we're going to make our
- own */
+ /* Drop all the files called __.SYMDEF, we're going to make our own. */
while (arch->archive_head &&
strcmp (arch->archive_head->filename, "__.SYMDEF") == 0)
arch->archive_head = arch->archive_head->next;
- /* Map over each element */
+ /* Map over each element. */
for (current = arch->archive_head;
current != (bfd *) NULL;
current = current->next, elt_no++)
@@ -1832,7 +1894,8 @@ _bfd_compute_and_write_armap (arch, elength)
if (symcount < 0)
goto error_return;
- /* Now map over all the symbols, picking out the ones we want */
+ /* Now map over all the symbols, picking out the ones we
+ want. */
for (src_count = 0; src_count < symcount; src_count++)
{
flagword flags = (syms[src_count])->flags;
@@ -1847,7 +1910,7 @@ _bfd_compute_and_write_armap (arch, elength)
size_t namelen;
struct orl *new_map;
- /* This symbol will go into the archive header */
+ /* This symbol will go into the archive header. */
if (orl_count == orl_max)
{
orl_max *= 2;
@@ -1886,7 +1949,7 @@ _bfd_compute_and_write_armap (arch, elength)
}
}
- /* OK, now we have collected all the data, let's write them out */
+ /* OK, now we have collected all the data, let's write them out. */
ret = BFD_SEND (arch, write_armap,
(arch, elength, map, orl_count, stridx));
@@ -1921,7 +1984,7 @@ bsd_write_armap (arch, elength, map, orl_count, stridx)
int padit = stridx & 1;
unsigned int ranlibsize = orl_count * BSD_SYMDEF_SIZE;
unsigned int stringsize = stridx + padit;
- /* Include 8 bytes to store ranlibsize and stringsize in output. */
+ /* Include 8 bytes to store ranlibsize and stringsize in output. */
unsigned int mapsize = ranlibsize + stringsize + 8;
file_ptr firstreal;
bfd *current = arch->archive_head;
@@ -1978,7 +2041,7 @@ bsd_write_armap (arch, elength, map, orl_count, stridx)
return false;
}
- /* now write the strings themselves */
+ /* Now write the strings themselves. */
bfd_h_put_32 (arch, stringsize, temp);
if (bfd_write (temp, 1, sizeof (temp), arch) != sizeof (temp))
return false;
@@ -1991,7 +2054,7 @@ bsd_write_armap (arch, elength, map, orl_count, stridx)
}
/* The spec sez this should be a newline. But in order to be
- bug-compatible for sun's ar we use a null. */
+ bug-compatible for sun's ar we use a null. */
if (padit)
{
if (bfd_write ("", 1, 1, arch) != 1)
@@ -2021,10 +2084,13 @@ _bfd_archive_bsd_update_armap_timestamp (arch)
if (bfd_stat (arch, &archstat) == -1)
{
perror (_("Reading archive file mod timestamp"));
- return true; /* Can't read mod time for some reason */
+
+ /* Can't read mod time for some reason. */
+ return true;
}
if (archstat.st_mtime <= bfd_ardata (arch)->armap_timestamp)
- return true; /* OK by the linker's rules */
+ /* OK by the linker's rules. */
+ return true;
/* Update the timestamp. */
bfd_ardata (arch)->armap_timestamp = archstat.st_mtime + ARMAP_TIME_OFFSET;
@@ -2045,10 +2111,13 @@ _bfd_archive_bsd_update_armap_timestamp (arch)
{
/* FIXME: bfd can't call perror. */
perror (_("Writing updated armap timestamp"));
- return true; /* Some error while writing */
+
+ /* Some error while writing. */
+ return true;
}
- return false; /* We updated the timestamp successfully. */
+ /* We updated the timestamp successfully. */
+ return false;
}
/* A coff armap looks like :
@@ -2074,7 +2143,7 @@ coff_write_armap (arch, elength, map, symbol_count, stridx)
int stridx;
{
/* The size of the ranlib is the number of exported symbols in the
- archive * the number of bytes in a int, + an int for the count */
+ archive * the number of bytes in a int, + an int for the count. */
unsigned int ranlibsize = (symbol_count * 4) + 4;
unsigned int stringsize = stridx;
unsigned int mapsize = stringsize + ranlibsize;
@@ -2088,7 +2157,7 @@ coff_write_armap (arch, elength, map, symbol_count, stridx)
if (padit)
mapsize++;
- /* work out where the first object file will go in the archive */
+ /* Work out where the first object file will go in the archive. */
archive_member_file_ptr = (mapsize
+ elength
+ sizeof (struct ar_hdr)
@@ -2098,7 +2167,7 @@ coff_write_armap (arch, elength, map, symbol_count, stridx)
hdr.ar_name[0] = '/';
sprintf (hdr.ar_size, "%-10d", (int) mapsize);
sprintf (hdr.ar_date, "%ld", (long) time (NULL));
- /* This, at least, is what Intel coff sets the values to.: */
+ /* This, at least, is what Intel coff sets the values to. */
sprintf ((hdr.ar_uid), "%d", 0);
sprintf ((hdr.ar_gid), "%d", 0);
sprintf ((hdr.ar_mode), "%-7o", (unsigned) 0);
@@ -2108,7 +2177,7 @@ coff_write_armap (arch, elength, map, symbol_count, stridx)
if (((char *) (&hdr))[i] == '\0')
(((char *) (&hdr))[i]) = ' ';
- /* Write the ar header for this item and the number of symbols */
+ /* Write the ar header for this item and the number of symbols. */
if (bfd_write ((PTR) &hdr, 1, sizeof (struct ar_hdr), arch)
!= sizeof (struct ar_hdr))
@@ -2126,23 +2195,23 @@ coff_write_armap (arch, elength, map, symbol_count, stridx)
count = 0;
while (current != (bfd *) NULL && count < symbol_count)
{
- /* For each symbol which is used defined in this object, write out
- the object file's address in the archive */
+ /* For each symbol which is used defined in this object, write
+ out the object file's address in the archive. */
- while (((bfd *) (map[count]).pos) == current)
+ while (count < symbol_count && ((bfd *) (map[count]).pos) == current)
{
bfd_write_bigendian_4byte_int (arch, archive_member_file_ptr);
count++;
}
- /* Add size of this archive entry */
+ /* Add size of this archive entry. */
archive_member_file_ptr += (arelt_size (current)
+ sizeof (struct ar_hdr));
- /* remember aboout the even alignment */
+ /* Remember aboout the even alignment. */
archive_member_file_ptr += archive_member_file_ptr % 2;
current = current->next;
}
- /* now write the strings themselves */
+ /* Now write the strings themselves. */
for (count = 0; count < symbol_count; count++)
{
size_t len = strlen (*map[count].name) + 1;
@@ -2152,7 +2221,7 @@ coff_write_armap (arch, elength, map, symbol_count, stridx)
}
/* The spec sez this should be a newline. But in order to be
- bug-compatible for arc960 we use a null. */
+ bug-compatible for arc960 we use a null. */
if (padit)
{
if (bfd_write ("", 1, 1, arch) != 1)
diff --git a/contrib/binutils/bfd/archures.c b/contrib/binutils/bfd/archures.c
index 7462592..84b7744 100644
--- a/contrib/binutils/bfd/archures.c
+++ b/contrib/binutils/bfd/archures.c
@@ -31,7 +31,7 @@ SECTION
BFD keeps one atom in a BFD describing the
architecture of the data attached to the BFD: a pointer to a
- <<bfd_arch_info_type>>.
+ <<bfd_arch_info_type>>.
Pointers to structures can be requested independently of a BFD
so that an architecture's information can be interrogated
@@ -41,13 +41,13 @@ SECTION
The set of default architectures is selected by the macro
<<SELECT_ARCHITECTURES>>. This is normally set up in the
@file{config/@var{target}.mt} file of your choice. If the name is not
- defined, then all the architectures supported are included.
+ defined, then all the architectures supported are included.
When BFD starts up, all the architectures are called with an
initialize method. It is up to the architecture back end to
insert as many items into the list of architectures as it wants to;
generally this would be one for each machine and one for the
- default case (an item with a machine field of 0).
+ default case (an item with a machine field of 0).
BFD's idea of an architecture is implemented in @file{archures.c}.
*/
@@ -64,9 +64,9 @@ DESCRIPTION
the family is in use. The machine gives a number which
distinguishes different versions of the architecture,
containing, for example, 2 and 3 for Intel i960 KA and i960 KB,
- and 68020 and 68030 for Motorola 68020 and 68030.
+ and 68020 and 68030 for Motorola 68020 and 68030.
-.enum bfd_architecture
+.enum bfd_architecture
.{
. bfd_arch_unknown, {* File arch not known *}
. bfd_arch_obscure, {* Arch known, not one of these *}
@@ -79,14 +79,14 @@ DESCRIPTION
.#define bfd_mach_m68040 6
.#define bfd_mach_m68060 7
.#define bfd_mach_cpu32 8
-. bfd_arch_vax, {* DEC Vax *}
+. bfd_arch_vax, {* DEC Vax *}
. bfd_arch_i960, {* Intel 960 *}
. {* The order of the following is important.
-. lower number indicates a machine type that
+. lower number indicates a machine type that
. only accepts a subset of the instructions
. available to machines with higher numbers.
. The exception is the "ca", which is
-. incompatible with all other machines except
+. incompatible with all other machines except
. "core". *}
.
.#define bfd_mach_i960_core 1
@@ -109,9 +109,12 @@ DESCRIPTION
.#define bfd_mach_sparc_sparclite_le 6
.#define bfd_mach_sparc_v9 7
.#define bfd_mach_sparc_v9a 8 {* with ultrasparc add'ns *}
+.#define bfd_mach_sparc_v8plusb 9 {* with cheetah add'ns *}
+.#define bfd_mach_sparc_v9b 10 {* with cheetah add'ns *}
.{* Nonzero if MACH has the v9 instruction set. *}
.#define bfd_mach_sparc_v9_p(mach) \
-. ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9a)
+. ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
+. && (mach) != bfd_mach_sparc_sparclite_le)
. bfd_arch_mips, {* MIPS Rxxxx *}
.#define bfd_mach_mips3000 3000
.#define bfd_mach_mips3900 3900
@@ -128,10 +131,17 @@ DESCRIPTION
.#define bfd_mach_mips8000 8000
.#define bfd_mach_mips10000 10000
.#define bfd_mach_mips16 16
+.#define bfd_mach_mips32 32
+.#define bfd_mach_mips32_4k 3204113 {* 32, 04, octal 'K' *}
+.#define bfd_mach_mips5 5
+.#define bfd_mach_mips64 64
+.#define bfd_mach_mips_sb1 12310201 {* octal 'SB', 01 *}
. bfd_arch_i386, {* Intel 386 *}
.#define bfd_mach_i386_i386 0
.#define bfd_mach_i386_i8086 1
.#define bfd_mach_i386_i386_intel_syntax 2
+.#define bfd_mach_x86_64 3
+.#define bfd_mach_x86_64_intel_syntax 4
. bfd_arch_we32k, {* AT&T WE32xxx *}
. bfd_arch_tahoe, {* CCI/Harris Tahoe *}
. bfd_arch_i860, {* Intel 860 *}
@@ -146,13 +156,36 @@ DESCRIPTION
.#define bfd_mach_h8300h 2
.#define bfd_mach_h8300s 3
. bfd_arch_powerpc, {* PowerPC *}
+.#define bfd_mach_ppc 0
+.#define bfd_mach_ppc_403 403
+.#define bfd_mach_ppc_403gc 4030
+.#define bfd_mach_ppc_505 505
+.#define bfd_mach_ppc_601 601
+.#define bfd_mach_ppc_602 602
+.#define bfd_mach_ppc_603 603
+.#define bfd_mach_ppc_ec603e 6031
+.#define bfd_mach_ppc_604 604
+.#define bfd_mach_ppc_620 620
+.#define bfd_mach_ppc_630 630
+.#define bfd_mach_ppc_750 750
+.#define bfd_mach_ppc_860 860
+.#define bfd_mach_ppc_a35 35
+.#define bfd_mach_ppc_rs64ii 642
+.#define bfd_mach_ppc_rs64iii 643
+.#define bfd_mach_ppc_7400 7400
. bfd_arch_rs6000, {* IBM RS/6000 *}
+.#define bfd_mach_rs6k 0
+.#define bfd_mach_rs6k_rs1 6001
+.#define bfd_mach_rs6k_rsc 6003
+.#define bfd_mach_rs6k_rs2 6002
. bfd_arch_hppa, {* HP PA RISC *}
. bfd_arch_d10v, {* Mitsubishi D10V *}
.#define bfd_mach_d10v 0
.#define bfd_mach_d10v_ts2 2
.#define bfd_mach_d10v_ts3 3
. bfd_arch_d30v, {* Mitsubishi D30V *}
+. bfd_arch_m68hc11, {* Motorola 68HC11 *}
+. bfd_arch_m68hc12, {* Motorola 68HC12 *}
. bfd_arch_z8k, {* Zilog Z8000 *}
.#define bfd_mach_z8001 1
.#define bfd_mach_z8002 2
@@ -178,16 +211,22 @@ DESCRIPTION
.#define bfd_mach_arm_4T 6
.#define bfd_mach_arm_5 7
.#define bfd_mach_arm_5T 8
+.#define bfd_mach_arm_5TE 9
+.#define bfd_mach_arm_XScale 10
. bfd_arch_ns32k, {* National Semiconductors ns32000 *}
. bfd_arch_w65, {* WDC 65816 *}
. bfd_arch_tic30, {* Texas Instruments TMS320C30 *}
+. bfd_arch_tic54x, {* Texas Instruments TMS320C54X *}
. bfd_arch_tic80, {* TI TMS320c80 (MVP) *}
. bfd_arch_v850, {* NEC V850 *}
.#define bfd_mach_v850 0
.#define bfd_mach_v850e 'E'
.#define bfd_mach_v850ea 'A'
-. bfd_arch_arc, {* Argonaut RISC Core *}
-.#define bfd_mach_arc_base 0
+. bfd_arch_arc, {* ARC Cores *}
+.#define bfd_mach_arc_5 0
+.#define bfd_mach_arc_6 1
+.#define bfd_mach_arc_7 2
+.#define bfd_mach_arc_8 3
. bfd_arch_m32r, {* Mitsubishi M32R/D *}
.#define bfd_mach_m32r 0 {* backwards compatibility *}
.#define bfd_mach_m32rx 'x'
@@ -198,20 +237,22 @@ DESCRIPTION
. bfd_arch_fr30,
.#define bfd_mach_fr30 0x46523330
. bfd_arch_mcore,
+. bfd_arch_ia64, {* HP/Intel ia64 *}
+.#define bfd_mach_ia64_elf64 0
+.#define bfd_mach_ia64_elf32 1
. bfd_arch_pj,
. bfd_arch_avr, {* Atmel AVR microcontrollers *}
.#define bfd_mach_avr1 1
.#define bfd_mach_avr2 2
.#define bfd_mach_avr3 3
.#define bfd_mach_avr4 4
+.#define bfd_mach_avr5 5
+. bfd_arch_cris, {* Axis CRIS *}
. bfd_arch_last
. };
-
-
*/
/*
-
SUBSECTION
bfd_arch_info
@@ -220,7 +261,7 @@ DESCRIPTION
within BFD.
.
-.typedef struct bfd_arch_info
+.typedef struct bfd_arch_info
.{
. int bits_per_word;
. int bits_per_address;
@@ -230,8 +271,8 @@ DESCRIPTION
. const char *arch_name;
. const char *printable_name;
. unsigned int section_align_power;
-. {* true if this is the default machine for the architecture *}
-. boolean the_default;
+. {* True if this is the default machine for the architecture. *}
+. boolean the_default;
. const struct bfd_arch_info * (*compatible)
. PARAMS ((const struct bfd_arch_info *a,
. const struct bfd_arch_info *b));
@@ -246,6 +287,7 @@ extern const bfd_arch_info_type bfd_a29k_arch;
extern const bfd_arch_info_type bfd_alpha_arch;
extern const bfd_arch_info_type bfd_arc_arch;
extern const bfd_arch_info_type bfd_arm_arch;
+extern const bfd_arch_info_type bfd_cris_arch;
extern const bfd_arch_info_type bfd_d10v_arch;
extern const bfd_arch_info_type bfd_d30v_arch;
extern const bfd_arch_info_type bfd_h8300_arch;
@@ -256,6 +298,8 @@ extern const bfd_arch_info_type bfd_i386_arch;
extern const bfd_arch_info_type bfd_i860_arch;
extern const bfd_arch_info_type bfd_i960_arch;
extern const bfd_arch_info_type bfd_m32r_arch;
+extern const bfd_arch_info_type bfd_m68hc11_arch;
+extern const bfd_arch_info_type bfd_m68hc12_arch;
extern const bfd_arch_info_type bfd_m68k_arch;
extern const bfd_arch_info_type bfd_m88k_arch;
extern const bfd_arch_info_type bfd_mips_arch;
@@ -267,6 +311,7 @@ extern const bfd_arch_info_type bfd_pj_arch;
extern const bfd_arch_info_type bfd_sh_arch;
extern const bfd_arch_info_type bfd_sparc_arch;
extern const bfd_arch_info_type bfd_tic30_arch;
+extern const bfd_arch_info_type bfd_tic54x_arch;
extern const bfd_arch_info_type bfd_tic80_arch;
extern const bfd_arch_info_type bfd_vax_arch;
extern const bfd_arch_info_type bfd_we32k_arch;
@@ -277,9 +322,9 @@ extern const bfd_arch_info_type bfd_v850_arch;
extern const bfd_arch_info_type bfd_fr30_arch;
extern const bfd_arch_info_type bfd_mcore_arch;
extern const bfd_arch_info_type bfd_avr_arch;
+extern const bfd_arch_info_type bfd_ia64_arch;
-static const bfd_arch_info_type * const bfd_archures_list[] =
-{
+static const bfd_arch_info_type * const bfd_archures_list[] = {
#ifdef SELECT_ARCHITECTURES
SELECT_ARCHITECTURES,
#else
@@ -287,6 +332,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
&bfd_alpha_arch,
&bfd_arc_arch,
&bfd_arm_arch,
+ &bfd_cris_arch,
&bfd_d10v_arch,
&bfd_d30v_arch,
&bfd_h8300_arch,
@@ -297,6 +343,8 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
&bfd_i860_arch,
&bfd_i960_arch,
&bfd_m32r_arch,
+ &bfd_m68hc11_arch,
+ &bfd_m68hc12_arch,
&bfd_m68k_arch,
&bfd_m88k_arch,
&bfd_mips_arch,
@@ -307,6 +355,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
&bfd_sh_arch,
&bfd_sparc_arch,
&bfd_tic30_arch,
+ &bfd_tic54x_arch,
&bfd_tic80_arch,
&bfd_vax_arch,
&bfd_we32k_arch,
@@ -317,6 +366,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
&bfd_fr30_arch,
&bfd_mcore_arch,
&bfd_avr_arch,
+ &bfd_ia64_arch,
#endif
0
};
@@ -341,8 +391,6 @@ bfd_printable_name (abfd)
return abfd->arch_info->printable_name;
}
-
-
/*
FUNCTION
bfd_scan_arch
@@ -354,7 +402,6 @@ DESCRIPTION
Figure out if BFD supports any cpu which could be described with
the name @var{string}. Return a pointer to an <<arch_info>>
structure if a machine is found, otherwise NULL.
-
*/
const bfd_arch_info_type *
@@ -363,7 +410,7 @@ bfd_scan_arch (string)
{
const bfd_arch_info_type * const *app, *ap;
- /* Look through all the installed architectures */
+ /* Look through all the installed architectures. */
for (app = bfd_archures_list; *app != NULL; app++)
{
for (ap = *app; ap != NULL; ap = ap->next)
@@ -376,8 +423,6 @@ bfd_scan_arch (string)
return NULL;
}
-
-
/*
FUNCTION
bfd_arch_list
@@ -388,7 +433,6 @@ SYNOPSIS
DESCRIPTION
Return a freshly malloced NULL-terminated vector of the names
of all the valid BFD architectures. Do not modify the names.
-
*/
const char **
@@ -399,7 +443,7 @@ bfd_arch_list ()
const char **name_list;
const bfd_arch_info_type * const *app;
- /* Determine the number of architectures */
+ /* Determine the number of architectures. */
vec_length = 0;
for (app = bfd_archures_list; *app != NULL; app++)
{
@@ -410,12 +454,12 @@ bfd_arch_list ()
}
}
- name_list = (CONST char **)
+ name_list = (const char **)
bfd_malloc ((vec_length + 1) * sizeof (char **));
if (name_list == NULL)
return NULL;
- /* Point the list at each of the names */
+ /* Point the list at each of the names. */
name_ptr = name_list;
for (app = bfd_archures_list; *app != NULL; app++)
{
@@ -431,8 +475,6 @@ bfd_arch_list ()
return name_list;
}
-
-
/*
FUNCTION
bfd_arch_get_compatible
@@ -458,15 +500,14 @@ bfd_arch_get_compatible (abfd, bbfd)
/* If either architecture is unknown, then all we can do is assume
the user knows what he's doing. */
if (abfd->arch_info->arch == bfd_arch_unknown)
- return bbfd->arch_info;
+ return bbfd->arch_info;
if (bbfd->arch_info->arch == bfd_arch_unknown)
- return abfd->arch_info;
+ return abfd->arch_info;
/* Otherwise architecture-specific code has to decide. */
return abfd->arch_info->compatible (abfd->arch_info, bbfd->arch_info);
}
-
/*
INTERNAL_DEFINITION
bfd_default_arch_struct
@@ -479,15 +520,13 @@ DESCRIPTION
architecture of the file.
.extern const bfd_arch_info_type bfd_default_arch_struct;
-
*/
-const bfd_arch_info_type bfd_default_arch_struct =
-{
- 32,32,8,bfd_arch_unknown,0,"unknown","unknown",2,true,
- bfd_default_compatible,
- bfd_default_scan,
- 0,
+const bfd_arch_info_type bfd_default_arch_struct = {
+ 32, 32, 8, bfd_arch_unknown, 0, "unknown", "unknown", 2, true,
+ bfd_default_compatible,
+ bfd_default_scan,
+ 0,
};
/*
@@ -522,7 +561,7 @@ DESCRIPTION
Set the architecture and machine type in BFD @var{abfd}
to @var{arch} and @var{mach}. Find the correct
pointer to a structure and insert it into the <<arch_info>>
- pointer.
+ pointer.
*/
boolean
@@ -552,7 +591,6 @@ bfd_default_set_arch_mach (abfd, arch, mach)
return false;
}
-
/*
FUNCTION
bfd_get_arch
@@ -563,14 +601,13 @@ SYNOPSIS
DESCRIPTION
Return the enumerated type which describes the BFD @var{abfd}'s
architecture.
-
*/
enum bfd_architecture
bfd_get_arch (abfd)
bfd *abfd;
{
- return abfd->arch_info->arch;
+ return abfd->arch_info->arch;
}
/*
@@ -585,11 +622,11 @@ DESCRIPTION
machine.
*/
-unsigned long
+unsigned long
bfd_get_mach (abfd)
bfd *abfd;
{
- return abfd->arch_info->mach;
+ return abfd->arch_info->mach;
}
/*
@@ -602,7 +639,6 @@ SYNOPSIS
DESCRIPTION
Return the number of bits in one of the BFD @var{abfd}'s
architecture's bytes.
-
*/
unsigned int
@@ -631,9 +667,8 @@ bfd_arch_bits_per_address (abfd)
return abfd->arch_info->bits_per_address;
}
-
/*
-INTERNAL_FUNCTION
+INTERNAL_FUNCTION
bfd_default_compatible
SYNOPSIS
@@ -646,7 +681,7 @@ DESCRIPTION
*/
const bfd_arch_info_type *
-bfd_default_compatible (a,b)
+bfd_default_compatible (a, b)
const bfd_arch_info_type *a;
const bfd_arch_info_type *b;
{
@@ -662,7 +697,6 @@ bfd_default_compatible (a,b)
return a;
}
-
/*
INTERNAL_FUNCTION
bfd_default_scan
@@ -675,7 +709,7 @@ DESCRIPTION
architecture hit and a machine hit.
*/
-boolean
+boolean
bfd_default_scan (info, string)
const struct bfd_arch_info *info;
const char *string;
@@ -687,17 +721,17 @@ bfd_default_scan (info, string)
const char *printable_name_colon;
/* Exact match of the architecture name (ARCH_NAME) and also the
- default architecture? */
+ default architecture? */
if (strcasecmp (string, info->arch_name) == 0
&& info->the_default)
return true;
- /* Exact match of the machine name (PRINTABLE_NAME)? */
+ /* Exact match of the machine name (PRINTABLE_NAME)? */
if (strcasecmp (string, info->printable_name) == 0)
return true;
-
+
/* Given that printable_name contains no colon, attempt to match:
- ARCH_NAME [ ":" ] PRINTABLE_NAME? */
+ ARCH_NAME [ ":" ] PRINTABLE_NAME? */
printable_name_colon = strchr (info->printable_name, ':');
if (printable_name_colon == NULL)
{
@@ -720,7 +754,7 @@ bfd_default_scan (info, string)
}
/* Given that PRINTABLE_NAME has the form: <arch> ":" <mach>;
- Attempt to match: <arch> <mach>? */
+ Attempt to match: <arch> <mach>? */
if (printable_name_colon != NULL)
{
int colon_index = printable_name_colon - info->printable_name;
@@ -732,48 +766,61 @@ bfd_default_scan (info, string)
/* Given that PRINTABLE_NAME has the form: <arch> ":" <mach>; Do not
attempt to match just <mach>, it could be ambigious. This test
- is left until later. */
+ is left until later. */
- /* NOTE: The below is retained for compatibility only. Please do not
- add to this code */
+ /* NOTE: The below is retained for compatibility only. Please do
+ not add to this code. */
/* See how much of the supplied string matches with the
architecture, eg the string m68k:68020 would match the 68k entry
- up to the :, then we get left with the machine number */
+ up to the :, then we get left with the machine number. */
- for (ptr_src = string, ptr_tst = info->arch_name;
+ for (ptr_src = string, ptr_tst = info->arch_name;
*ptr_src && *ptr_tst;
- ptr_src++, ptr_tst++)
+ ptr_src++, ptr_tst++)
{
- if (*ptr_src != *ptr_tst) break;
+ if (*ptr_src != *ptr_tst)
+ break;
}
/* Chewed up as much of the architecture as will match, skip any
- colons */
+ colons. */
if (*ptr_src == ':')
ptr_src++;
-
+
if (*ptr_src == 0)
{
- /* nothing more, then only keep this one if it is the default
- machine for this architecture */
+ /* Nothing more, then only keep this one if it is the default
+ machine for this architecture. */
return info->the_default;
}
number = 0;
while (isdigit ((unsigned char) *ptr_src))
{
- number = number * 10 + *ptr_src - '0';
+ number = number * 10 + *ptr_src - '0';
ptr_src++;
}
/* NOTE: The below is retained for compatibility only.
- PLEASE DO NOT ADD TO THIS CODE. */
+ PLEASE DO NOT ADD TO THIS CODE. */
- switch (number)
+ switch (number)
{
/* FIXME: These are needed to parse IEEE objects. */
- case 68000:
+ /* The following seven case's are here only for compatibility with
+ older binutils (at least IEEE objects from binutils 2.9.1 require
+ them). */
+ case bfd_mach_m68000:
+ case bfd_mach_m68010:
+ case bfd_mach_m68020:
+ case bfd_mach_m68030:
+ case bfd_mach_m68040:
+ case bfd_mach_m68060:
+ case bfd_mach_cpu32:
+ arch = bfd_arch_m68k;
+ break;
+ case 68000:
arch = bfd_arch_m68k;
number = bfd_mach_m68000;
break;
@@ -840,11 +887,11 @@ bfd_default_scan (info, string)
number = bfd_mach_sh4;
break;
- default:
+ default:
return false;
}
- if (arch != info->arch)
+ if (arch != info->arch)
return false;
if (number != info->mach)
@@ -853,7 +900,6 @@ bfd_default_scan (info, string)
return true;
}
-
/*
FUNCTION
bfd_get_arch_info
@@ -872,7 +918,6 @@ bfd_get_arch_info (abfd)
return abfd->arch_info;
}
-
/*
FUNCTION
bfd_lookup_arch
@@ -890,7 +935,7 @@ DESCRIPTION
default.
*/
-const bfd_arch_info_type *
+const bfd_arch_info_type *
bfd_lookup_arch (arch, machine)
enum bfd_architecture arch;
unsigned long machine;
@@ -911,7 +956,6 @@ bfd_lookup_arch (arch, machine)
return NULL;
}
-
/*
FUNCTION
bfd_printable_arch_mach
@@ -922,7 +966,7 @@ SYNOPSIS
DESCRIPTION
Return a printable string representing the architecture and
- machine type.
+ machine type.
This routine is depreciated.
*/
@@ -932,11 +976,11 @@ bfd_printable_arch_mach (arch, machine)
enum bfd_architecture arch;
unsigned long machine;
{
- const bfd_arch_info_type * ap = bfd_lookup_arch (arch, machine);
+ const bfd_arch_info_type *ap = bfd_lookup_arch (arch, machine);
- if (ap)
- return ap->printable_name;
- return "UNKNOWN!";
+ if (ap)
+ return ap->printable_name;
+ return "UNKNOWN!";
}
/*
@@ -950,15 +994,14 @@ DESCRIPTION
Return the number of octets (8-bit quantities) per target byte
(minimum addressable unit). In most cases, this will be one, but some
DSP targets have 16, 32, or even 48 bits per byte.
-
*/
unsigned int
bfd_octets_per_byte (abfd)
- bfd * abfd;
+ bfd *abfd;
{
- return bfd_arch_mach_octets_per_byte (bfd_get_arch (abfd),
- bfd_get_mach (abfd));
+ return bfd_arch_mach_octets_per_byte (bfd_get_arch (abfd),
+ bfd_get_mach (abfd));
}
/*
@@ -971,19 +1014,19 @@ SYNOPSIS
DESCRIPTION
See bfd_octets_per_byte.
-
+
This routine is provided for those cases where a bfd * is not
available
*/
unsigned int
bfd_arch_mach_octets_per_byte (arch, mach)
- enum bfd_architecture arch;
- unsigned long mach;
+ enum bfd_architecture arch;
+ unsigned long mach;
{
- const bfd_arch_info_type * ap = bfd_lookup_arch (arch, mach);
-
- if (ap)
- return ap->bits_per_byte / 8;
- return 1;
+ const bfd_arch_info_type *ap = bfd_lookup_arch (arch, mach);
+
+ if (ap)
+ return ap->bits_per_byte / 8;
+ return 1;
}
diff --git a/contrib/binutils/bfd/armnetbsd.c b/contrib/binutils/bfd/armnetbsd.c
index 3e6ee47..05d8ad0 100644
--- a/contrib/binutils/bfd/armnetbsd.c
+++ b/contrib/binutils/bfd/armnetbsd.c
@@ -15,7 +15,7 @@ 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. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define BYTES_IN_WORD 4
#undef TARGET_IS_BIG_ENDIAN_P
diff --git a/contrib/binutils/bfd/bfd-in.h b/contrib/binutils/bfd/bfd-in.h
index 09753c2..683aa0f 100644
--- a/contrib/binutils/bfd/bfd-in.h
+++ b/contrib/binutils/bfd/bfd-in.h
@@ -23,7 +23,7 @@ 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. */
-/* bfd.h -- The only header file required by users of the bfd library
+/* bfd.h -- The only header file required by users of the bfd library
The bfd.h file is generated from bfd-in.h and various .c files; if you
change it, your changes will probably be lost.
@@ -84,7 +84,7 @@ typedef struct _bfd bfd;
/* General rules: functions which are boolean return true on success
and false on failure (unless they're a predicate). -- bfd.doc */
/* I'm sure this is going to break something and someone is going to
- force me to change it. */
+ force me to change it. */
/* typedef enum boolean {false, true} boolean; */
/* Yup, SVR4 has a "typedef enum boolean" in <sys/types.h> -fnf */
/* It gets worse if the host also defines a true/false enum... -sts */
@@ -93,7 +93,7 @@ typedef struct _bfd bfd;
#define TRUE_FALSE_ALREADY_DEFINED
#endif
#ifdef MPW
-/* Pre-emptive strike - get the file with the enum. */
+/* Pre-emptive strike - get the file with the enum. */
#include <Types.h>
#define TRUE_FALSE_ALREADY_DEFINED
#endif /* MPW */
@@ -109,7 +109,7 @@ typedef enum bfd_boolean {bfd_fffalse, bfd_tttrue} boolean;
/* FIXME: This should be using off_t from <sys/types.h>.
For now, try to avoid breaking stuff by not including <sys/types.h> here.
This will break on systems with 64-bit file offsets (e.g. 4.4BSD).
- Probably the best long-term answer is to avoid using file_ptr AND off_t
+ Probably the best long-term answer is to avoid using file_ptr AND off_t
in this header file, and to handle this in the BFD implementation
rather than in its interface. */
/* typedef off_t file_ptr; */
@@ -177,8 +177,8 @@ typedef unsigned long symvalue;
typedef unsigned long bfd_size_type;
/* Print a bfd_vma x on stream s. */
-#define fprintf_vma(s,x) fprintf(s, "%08lx", x)
-#define sprintf_vma(s,x) sprintf(s, "%08lx", x)
+#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
+#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
#endif /* not BFD64 */
@@ -284,19 +284,17 @@ typedef struct carsym {
file_ptr file_offset; /* look here to find the file */
} carsym; /* to make these you call a carsymogen */
-
/* Used in generating armaps (archive tables of contents).
Perhaps just a forward definition would do? */
struct orl { /* output ranlib */
- char **name; /* symbol name */
+ char **name; /* symbol name */
file_ptr pos; /* bfd* or file position */
int namidx; /* index into string table */
};
-
/* Linenumber stuff */
typedef struct lineno_cache_entry {
- unsigned int line_number; /* Linenumber from start of function*/
+ unsigned int line_number; /* Linenumber from start of function*/
union {
struct symbol_cache_entry *sym; /* Function name */
unsigned long offset; /* Offset into section */
@@ -327,15 +325,15 @@ typedef struct sec *sec_ptr;
#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),true)
#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),true)
-typedef struct stat stat_type;
+typedef struct stat stat_type;
typedef enum bfd_print_symbol
-{
+{
bfd_print_symbol_name,
bfd_print_symbol_more,
bfd_print_symbol_all
} bfd_print_symbol_type;
-
+
/* Information about a symbol that nm needs. */
typedef struct _symbol_info
@@ -344,7 +342,7 @@ typedef struct _symbol_info
char type;
CONST char *name; /* Symbol name. */
unsigned char stab_type; /* Stab type. */
- char stab_other; /* Stab other. */
+ char stab_other; /* Stab other. */
short stab_desc; /* Stab desc. */
CONST char *stab_name; /* String for stab type. */
} symbol_info;
@@ -481,7 +479,6 @@ extern long bfd_tell PARAMS ((bfd *abfd));
extern int bfd_flush PARAMS ((bfd *abfd));
extern int bfd_stat PARAMS ((bfd *abfd, struct stat *));
-
/* Cast from const char * to char * so that caller can assign to
a char * without a warning. */
#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
@@ -489,6 +486,9 @@ extern int bfd_stat PARAMS ((bfd *abfd, struct stat *));
#define bfd_get_format(abfd) ((abfd)->format)
#define bfd_get_target(abfd) ((abfd)->xvec->name)
#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
+#define bfd_family_coff(abfd) \
+ (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
+ bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
#define bfd_header_big_endian(abfd) \
@@ -511,7 +511,7 @@ extern int bfd_stat PARAMS ((bfd *abfd, struct stat *));
#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
-#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (boolean)(bool)), true)
+#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (boolean) (bool)), true)
extern boolean bfd_record_phdr
PARAMS ((bfd *, unsigned long, boolean, flagword, boolean, bfd_vma,
@@ -537,6 +537,11 @@ void bfd_putb32 PARAMS ((bfd_vma, unsigned char *));
void bfd_putl32 PARAMS ((bfd_vma, unsigned char *));
void bfd_putb16 PARAMS ((bfd_vma, unsigned char *));
void bfd_putl16 PARAMS ((bfd_vma, unsigned char *));
+
+/* Byte swapping routines which take size and endiannes as arguments. */
+
+bfd_vma bfd_get_bits PARAMS ((bfd_byte *, int, boolean));
+void bfd_put_bits PARAMS ((bfd_vma, bfd_byte *, int, boolean));
/* Externally visible ECOFF routines. */
@@ -624,7 +629,10 @@ extern boolean bfd_elf64_size_dynamic_sections
const char * const *, struct bfd_link_info *, struct sec **,
struct bfd_elf_version_tree *));
extern void bfd_elf_set_dt_needed_name PARAMS ((bfd *, const char *));
+extern void bfd_elf_set_dt_needed_soname PARAMS ((bfd *, const char *));
extern const char *bfd_elf_get_dt_soname PARAMS ((bfd *));
+extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
+ PARAMS ((bfd *, struct bfd_link_info *));
/* Return an upper bound on the number of bytes required to store a
copy of ABFD's program header table entries. Return -1 if an error
@@ -640,6 +648,16 @@ extern long bfd_get_elf_phdr_upper_bound PARAMS ((bfd *abfd));
error occurs; bfd_get_error will return an appropriate code. */
extern int bfd_get_elf_phdrs PARAMS ((bfd *abfd, void *phdrs));
+/* Return the arch_size field of an elf bfd, or -1 if not elf. */
+extern int bfd_get_arch_size PARAMS ((bfd *));
+
+/* Return true if address "naturally" sign extends, or -1 if not elf. */
+extern int bfd_get_sign_extend_vma PARAMS ((bfd *));
+
+extern boolean bfd_m68k_elf32_create_embedded_relocs
+ PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *,
+ char **));
+
/* SunOS shared library support routines for the linker. */
extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
@@ -718,6 +736,10 @@ extern boolean bfd_coff_get_auxent
extern boolean bfd_coff_set_symbol_class
PARAMS ((bfd *, struct symbol_cache_entry *, unsigned int));
+extern boolean bfd_m68k_coff_create_embedded_relocs
+ PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *,
+ char **));
+
/* ARM Interworking support. Called from linker. */
extern boolean bfd_arm_allocate_interworking_sections
PARAMS ((struct bfd_link_info *));
@@ -748,4 +770,11 @@ extern boolean bfd_elf32_arm_process_before_allocation
extern boolean bfd_elf32_arm_get_bfd_for_interworking
PARAMS ((bfd *, struct bfd_link_info *));
+/* TI COFF load page support. */
+extern void bfd_ticoff_set_section_load_page
+ PARAMS ((struct sec *, int));
+
+extern int bfd_ticoff_get_section_load_page
+ PARAMS ((struct sec *));
+
/* And more from the source. */
diff --git a/contrib/binutils/bfd/bfd-in2.h b/contrib/binutils/bfd/bfd-in2.h
index 4c3eea0..b8e864b 100644
--- a/contrib/binutils/bfd/bfd-in2.h
+++ b/contrib/binutils/bfd/bfd-in2.h
@@ -23,7 +23,7 @@ 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. */
-/* bfd.h -- The only header file required by users of the bfd library
+/* bfd.h -- The only header file required by users of the bfd library
The bfd.h file is generated from bfd-in.h and various .c files; if you
change it, your changes will probably be lost.
@@ -84,7 +84,7 @@ typedef struct _bfd bfd;
/* General rules: functions which are boolean return true on success
and false on failure (unless they're a predicate). -- bfd.doc */
/* I'm sure this is going to break something and someone is going to
- force me to change it. */
+ force me to change it. */
/* typedef enum boolean {false, true} boolean; */
/* Yup, SVR4 has a "typedef enum boolean" in <sys/types.h> -fnf */
/* It gets worse if the host also defines a true/false enum... -sts */
@@ -93,7 +93,7 @@ typedef struct _bfd bfd;
#define TRUE_FALSE_ALREADY_DEFINED
#endif
#ifdef MPW
-/* Pre-emptive strike - get the file with the enum. */
+/* Pre-emptive strike - get the file with the enum. */
#include <Types.h>
#define TRUE_FALSE_ALREADY_DEFINED
#endif /* MPW */
@@ -109,7 +109,7 @@ typedef enum bfd_boolean {bfd_fffalse, bfd_tttrue} boolean;
/* FIXME: This should be using off_t from <sys/types.h>.
For now, try to avoid breaking stuff by not including <sys/types.h> here.
This will break on systems with 64-bit file offsets (e.g. 4.4BSD).
- Probably the best long-term answer is to avoid using file_ptr AND off_t
+ Probably the best long-term answer is to avoid using file_ptr AND off_t
in this header file, and to handle this in the BFD implementation
rather than in its interface. */
/* typedef off_t file_ptr; */
@@ -177,8 +177,8 @@ typedef unsigned long symvalue;
typedef unsigned long bfd_size_type;
/* Print a bfd_vma x on stream s. */
-#define fprintf_vma(s,x) fprintf(s, "%08lx", x)
-#define sprintf_vma(s,x) sprintf(s, "%08lx", x)
+#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
+#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
#endif /* not BFD64 */
@@ -284,19 +284,17 @@ typedef struct carsym {
file_ptr file_offset; /* look here to find the file */
} carsym; /* to make these you call a carsymogen */
-
/* Used in generating armaps (archive tables of contents).
Perhaps just a forward definition would do? */
struct orl { /* output ranlib */
- char **name; /* symbol name */
+ char **name; /* symbol name */
file_ptr pos; /* bfd* or file position */
int namidx; /* index into string table */
};
-
/* Linenumber stuff */
typedef struct lineno_cache_entry {
- unsigned int line_number; /* Linenumber from start of function*/
+ unsigned int line_number; /* Linenumber from start of function*/
union {
struct symbol_cache_entry *sym; /* Function name */
unsigned long offset; /* Offset into section */
@@ -327,15 +325,15 @@ typedef struct sec *sec_ptr;
#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),true)
#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),true)
-typedef struct stat stat_type;
+typedef struct stat stat_type;
typedef enum bfd_print_symbol
-{
+{
bfd_print_symbol_name,
bfd_print_symbol_more,
bfd_print_symbol_all
} bfd_print_symbol_type;
-
+
/* Information about a symbol that nm needs. */
typedef struct _symbol_info
@@ -344,7 +342,7 @@ typedef struct _symbol_info
char type;
CONST char *name; /* Symbol name. */
unsigned char stab_type; /* Stab type. */
- char stab_other; /* Stab other. */
+ char stab_other; /* Stab other. */
short stab_desc; /* Stab desc. */
CONST char *stab_name; /* String for stab type. */
} symbol_info;
@@ -481,7 +479,6 @@ extern long bfd_tell PARAMS ((bfd *abfd));
extern int bfd_flush PARAMS ((bfd *abfd));
extern int bfd_stat PARAMS ((bfd *abfd, struct stat *));
-
/* Cast from const char * to char * so that caller can assign to
a char * without a warning. */
#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
@@ -489,6 +486,9 @@ extern int bfd_stat PARAMS ((bfd *abfd, struct stat *));
#define bfd_get_format(abfd) ((abfd)->format)
#define bfd_get_target(abfd) ((abfd)->xvec->name)
#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
+#define bfd_family_coff(abfd) \
+ (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
+ bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
#define bfd_header_big_endian(abfd) \
@@ -511,7 +511,7 @@ extern int bfd_stat PARAMS ((bfd *abfd, struct stat *));
#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
-#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (boolean)(bool)), true)
+#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = (boolean) (bool)), true)
extern boolean bfd_record_phdr
PARAMS ((bfd *, unsigned long, boolean, flagword, boolean, bfd_vma,
@@ -537,6 +537,11 @@ void bfd_putb32 PARAMS ((bfd_vma, unsigned char *));
void bfd_putl32 PARAMS ((bfd_vma, unsigned char *));
void bfd_putb16 PARAMS ((bfd_vma, unsigned char *));
void bfd_putl16 PARAMS ((bfd_vma, unsigned char *));
+
+/* Byte swapping routines which take size and endiannes as arguments. */
+
+bfd_vma bfd_get_bits PARAMS ((bfd_byte *, int, boolean));
+void bfd_put_bits PARAMS ((bfd_vma, bfd_byte *, int, boolean));
/* Externally visible ECOFF routines. */
@@ -624,7 +629,10 @@ extern boolean bfd_elf64_size_dynamic_sections
const char * const *, struct bfd_link_info *, struct sec **,
struct bfd_elf_version_tree *));
extern void bfd_elf_set_dt_needed_name PARAMS ((bfd *, const char *));
+extern void bfd_elf_set_dt_needed_soname PARAMS ((bfd *, const char *));
extern const char *bfd_elf_get_dt_soname PARAMS ((bfd *));
+extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
+ PARAMS ((bfd *, struct bfd_link_info *));
/* Return an upper bound on the number of bytes required to store a
copy of ABFD's program header table entries. Return -1 if an error
@@ -640,6 +648,16 @@ extern long bfd_get_elf_phdr_upper_bound PARAMS ((bfd *abfd));
error occurs; bfd_get_error will return an appropriate code. */
extern int bfd_get_elf_phdrs PARAMS ((bfd *abfd, void *phdrs));
+/* Return the arch_size field of an elf bfd, or -1 if not elf. */
+extern int bfd_get_arch_size PARAMS ((bfd *));
+
+/* Return true if address "naturally" sign extends, or -1 if not elf. */
+extern int bfd_get_sign_extend_vma PARAMS ((bfd *));
+
+extern boolean bfd_m68k_elf32_create_embedded_relocs
+ PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *,
+ char **));
+
/* SunOS shared library support routines for the linker. */
extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
@@ -718,6 +736,10 @@ extern boolean bfd_coff_get_auxent
extern boolean bfd_coff_set_symbol_class
PARAMS ((bfd *, struct symbol_cache_entry *, unsigned int));
+extern boolean bfd_m68k_coff_create_embedded_relocs
+ PARAMS ((bfd *, struct bfd_link_info *, struct sec *, struct sec *,
+ char **));
+
/* ARM Interworking support. Called from linker. */
extern boolean bfd_arm_allocate_interworking_sections
PARAMS ((struct bfd_link_info *));
@@ -748,8 +770,15 @@ extern boolean bfd_elf32_arm_process_before_allocation
extern boolean bfd_elf32_arm_get_bfd_for_interworking
PARAMS ((bfd *, struct bfd_link_info *));
+/* TI COFF load page support. */
+extern void bfd_ticoff_set_section_load_page
+ PARAMS ((struct sec *, int));
+
+extern int bfd_ticoff_get_section_load_page
+ PARAMS ((struct sec *));
+
/* And more from the source. */
-void
+void
bfd_init PARAMS ((void));
bfd *
@@ -764,32 +793,32 @@ bfd_openstreamr PARAMS ((const char *, const char *, PTR));
bfd *
bfd_openw PARAMS ((CONST char *filename, CONST char *target));
-boolean
+boolean
bfd_close PARAMS ((bfd *abfd));
-boolean
+boolean
bfd_close_all_done PARAMS ((bfd *));
bfd *
bfd_create PARAMS ((CONST char *filename, bfd *templ));
-boolean
+boolean
bfd_make_writable PARAMS ((bfd *abfd));
-boolean
+boolean
bfd_make_readable PARAMS ((bfd *abfd));
- /* Byte swapping macros for user section data. */
+/* Byte swapping macros for user section data. */
#define bfd_put_8(abfd, val, ptr) \
- ((void) (*((unsigned char *)(ptr)) = (unsigned char)(val)))
+ ((void) (*((unsigned char *) (ptr)) = (unsigned char) (val)))
#define bfd_put_signed_8 \
bfd_put_8
#define bfd_get_8(abfd, ptr) \
- (*(unsigned char *)(ptr))
+ (*(unsigned char *) (ptr))
#define bfd_get_signed_8(abfd, ptr) \
- ((*(unsigned char *)(ptr) ^ 0x80) - 0x80)
+ ((*(unsigned char *) (ptr) ^ 0x80) - 0x80)
#define bfd_put_16(abfd, val, ptr) \
BFD_SEND(abfd, bfd_putx16, ((val),(ptr)))
@@ -833,7 +862,7 @@ bfd_make_readable PARAMS ((bfd *abfd));
: (abort (), (void) 0))
- /* Byte swapping macros for file header data. */
+/* Byte swapping macros for file header data. */
#define bfd_h_put_8(abfd, val, ptr) \
bfd_put_8 (abfd, val, ptr)
@@ -871,355 +900,377 @@ bfd_make_readable PARAMS ((bfd *abfd));
#define bfd_h_get_signed_64(abfd, ptr) \
BFD_SEND(abfd, bfd_h_getx_signed_64, (ptr))
- /* This structure is used for a comdat section, as in PE. A comdat
- section is associated with a particular symbol. When the linker
- sees a comdat section, it keeps only one of the sections with a
- given name and associated with a given symbol. */
+/* This structure is used for a comdat section, as in PE. A comdat
+ section is associated with a particular symbol. When the linker
+ sees a comdat section, it keeps only one of the sections with a
+ given name and associated with a given symbol. */
struct bfd_comdat_info
{
- /* The name of the symbol associated with a comdat section. */
+ /* The name of the symbol associated with a comdat section. */
const char *name;
- /* The local symbol table index of the symbol associated with a
+ /* The local symbol table index of the symbol associated with a
comdat section. This is only meaningful to the object file format
specific code; it is not an index into the list returned by
bfd_canonicalize_symtab. */
long symbol;
-
- /* If this section is being discarded, the linker uses this field
- to point to the input section which is being kept. */
- struct sec *sec;
};
typedef struct sec
{
- /* The name of the section; the name isn't a copy, the pointer is
- the same as that passed to bfd_make_section. */
+ /* The name of the section; the name isn't a copy, the pointer is
+ the same as that passed to bfd_make_section. */
- CONST char *name;
+ const char *name;
- /* Which section is it; 0..nth. */
+ /* A unique sequence number. */
- int index;
+ int id;
- /* The next section in the list belonging to the BFD, or NULL. */
+ /* Which section is it; 0..nth. */
- struct sec *next;
+ int index;
- /* The field flags contains attributes of the section. Some
- flags are read in from the object file, and some are
- synthesized from other information. */
+ /* The next section in the list belonging to the BFD, or NULL. */
- flagword flags;
+ struct sec *next;
+
+ /* The field flags contains attributes of the section. Some
+ flags are read in from the object file, and some are
+ synthesized from other information. */
+
+ flagword flags;
#define SEC_NO_FLAGS 0x000
- /* Tells the OS to allocate space for this section when loading.
- This is clear for a section containing debug information
- only. */
+ /* Tells the OS to allocate space for this section when loading.
+ This is clear for a section containing debug information only. */
#define SEC_ALLOC 0x001
- /* Tells the OS to load the section from the file when loading.
- This is clear for a .bss section. */
+ /* Tells the OS to load the section from the file when loading.
+ This is clear for a .bss section. */
#define SEC_LOAD 0x002
- /* The section contains data still to be relocated, so there is
- some relocation information too. */
+ /* The section contains data still to be relocated, so there is
+ some relocation information too. */
#define SEC_RELOC 0x004
-#if 0 /* Obsolete ? */
+#if 0 /* Obsolete ? */
#define SEC_BALIGN 0x008
#endif
- /* A signal to the OS that the section contains read only
- data. */
+ /* A signal to the OS that the section contains read only data. */
#define SEC_READONLY 0x010
- /* The section contains code only. */
+ /* The section contains code only. */
#define SEC_CODE 0x020
- /* The section contains data only. */
+ /* The section contains data only. */
#define SEC_DATA 0x040
- /* The section will reside in ROM. */
+ /* The section will reside in ROM. */
#define SEC_ROM 0x080
- /* The section contains constructor information. This section
- type is used by the linker to create lists of constructors and
- destructors used by <<g++>>. When a back end sees a symbol
- which should be used in a constructor list, it creates a new
- section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
- the symbol to it, and builds a relocation. To build the lists
- of constructors, all the linker has to do is catenate all the
- sections called <<__CTOR_LIST__>> and relocate the data
- contained within - exactly the operations it would peform on
- standard data. */
+ /* The section contains constructor information. This section
+ type is used by the linker to create lists of constructors and
+ destructors used by <<g++>>. When a back end sees a symbol
+ which should be used in a constructor list, it creates a new
+ section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
+ the symbol to it, and builds a relocation. To build the lists
+ of constructors, all the linker has to do is catenate all the
+ sections called <<__CTOR_LIST__>> and relocate the data
+ contained within - exactly the operations it would peform on
+ standard data. */
#define SEC_CONSTRUCTOR 0x100
- /* The section is a constructor, and should be placed at the
- end of the text, data, or bss section(?). */
+ /* The section is a constructor, and should be placed at the
+ end of the text, data, or bss section(?). */
#define SEC_CONSTRUCTOR_TEXT 0x1100
#define SEC_CONSTRUCTOR_DATA 0x2100
#define SEC_CONSTRUCTOR_BSS 0x3100
- /* The section has contents - a data section could be
- <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
- <<SEC_HAS_CONTENTS>> */
+ /* The section has contents - a data section could be
+ <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
+ <<SEC_HAS_CONTENTS>> */
#define SEC_HAS_CONTENTS 0x200
- /* An instruction to the linker to not output the section
- even if it has information which would normally be written. */
+ /* An instruction to the linker to not output the section
+ even if it has information which would normally be written. */
#define SEC_NEVER_LOAD 0x400
- /* The section is a COFF shared library section. This flag is
- only for the linker. If this type of section appears in
- the input file, the linker must copy it to the output file
- without changing the vma or size. FIXME: Although this
- was originally intended to be general, it really is COFF
- specific (and the flag was renamed to indicate this). It
- might be cleaner to have some more general mechanism to
- allow the back end to control what the linker does with
- sections. */
+ /* The section is a COFF shared library section. This flag is
+ only for the linker. If this type of section appears in
+ the input file, the linker must copy it to the output file
+ without changing the vma or size. FIXME: Although this
+ was originally intended to be general, it really is COFF
+ specific (and the flag was renamed to indicate this). It
+ might be cleaner to have some more general mechanism to
+ allow the back end to control what the linker does with
+ sections. */
#define SEC_COFF_SHARED_LIBRARY 0x800
- /* The section contains common symbols (symbols may be defined
- multiple times, the value of a symbol is the amount of
- space it requires, and the largest symbol value is the one
- used). Most targets have exactly one of these (which we
- translate to bfd_com_section_ptr), but ECOFF has two. */
+ /* The section has GOT references. This flag is only for the
+ linker, and is currently only used by the elf32-hppa back end.
+ It will be set if global offset table references were detected
+ in this section, which indicate to the linker that the section
+ contains PIC code, and must be handled specially when doing a
+ static link. */
+#define SEC_HAS_GOT_REF 0x4000
+
+ /* The section contains common symbols (symbols may be defined
+ multiple times, the value of a symbol is the amount of
+ space it requires, and the largest symbol value is the one
+ used). Most targets have exactly one of these (which we
+ translate to bfd_com_section_ptr), but ECOFF has two. */
#define SEC_IS_COMMON 0x8000
- /* The section contains only debugging information. For
- example, this is set for ELF .debug and .stab sections.
- strip tests this flag to see if a section can be
- discarded. */
+ /* The section contains only debugging information. For
+ example, this is set for ELF .debug and .stab sections.
+ strip tests this flag to see if a section can be
+ discarded. */
#define SEC_DEBUGGING 0x10000
- /* The contents of this section are held in memory pointed to
- by the contents field. This is checked by
- bfd_get_section_contents, and the data is retrieved from
- memory if appropriate. */
+ /* The contents of this section are held in memory pointed to
+ by the contents field. This is checked by bfd_get_section_contents,
+ and the data is retrieved from memory if appropriate. */
#define SEC_IN_MEMORY 0x20000
- /* The contents of this section are to be excluded by the
- linker for executable and shared objects unless those
- objects are to be further relocated. */
+ /* The contents of this section are to be excluded by the
+ linker for executable and shared objects unless those
+ objects are to be further relocated. */
#define SEC_EXCLUDE 0x40000
- /* The contents of this section are to be sorted by the
- based on the address specified in the associated symbol
- table. */
+ /* The contents of this section are to be sorted by the
+ based on the address specified in the associated symbol
+ table. */
#define SEC_SORT_ENTRIES 0x80000
- /* When linking, duplicate sections of the same name should be
- discarded, rather than being combined into a single section as
- is usually done. This is similar to how common symbols are
- handled. See SEC_LINK_DUPLICATES below. */
+ /* When linking, duplicate sections of the same name should be
+ discarded, rather than being combined into a single section as
+ is usually done. This is similar to how common symbols are
+ handled. See SEC_LINK_DUPLICATES below. */
#define SEC_LINK_ONCE 0x100000
- /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
- should handle duplicate sections. */
+ /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
+ should handle duplicate sections. */
#define SEC_LINK_DUPLICATES 0x600000
- /* This value for SEC_LINK_DUPLICATES means that duplicate
- sections with the same name should simply be discarded. */
+ /* This value for SEC_LINK_DUPLICATES means that duplicate
+ sections with the same name should simply be discarded. */
#define SEC_LINK_DUPLICATES_DISCARD 0x0
- /* This value for SEC_LINK_DUPLICATES means that the linker
- should warn if there are any duplicate sections, although
- it should still only link one copy. */
+ /* This value for SEC_LINK_DUPLICATES means that the linker
+ should warn if there are any duplicate sections, although
+ it should still only link one copy. */
#define SEC_LINK_DUPLICATES_ONE_ONLY 0x200000
- /* This value for SEC_LINK_DUPLICATES means that the linker
- should warn if any duplicate sections are a different size. */
+ /* This value for SEC_LINK_DUPLICATES means that the linker
+ should warn if any duplicate sections are a different size. */
#define SEC_LINK_DUPLICATES_SAME_SIZE 0x400000
- /* This value for SEC_LINK_DUPLICATES means that the linker
- should warn if any duplicate sections contain different
- contents. */
+ /* This value for SEC_LINK_DUPLICATES means that the linker
+ should warn if any duplicate sections contain different
+ contents. */
#define SEC_LINK_DUPLICATES_SAME_CONTENTS 0x600000
- /* This section was created by the linker as part of dynamic
- relocation or other arcane processing. It is skipped when
- going through the first-pass output, trusting that someone
- else up the line will take care of it later. */
+ /* This section was created by the linker as part of dynamic
+ relocation or other arcane processing. It is skipped when
+ going through the first-pass output, trusting that someone
+ else up the line will take care of it later. */
#define SEC_LINKER_CREATED 0x800000
- /* This section should not be subject to garbage collection. */
+ /* This section should not be subject to garbage collection. */
#define SEC_KEEP 0x1000000
- /* This section contains "short" data, and should be placed
- "near" the GP. */
+ /* This section contains "short" data, and should be placed
+ "near" the GP. */
#define SEC_SMALL_DATA 0x2000000
- /* This section contains data which may be shared with other
- executables or shared objects. */
+ /* This section contains data which may be shared with other
+ executables or shared objects. */
#define SEC_SHARED 0x4000000
- /* End of section flags. */
+ /* When a section with this flag is being linked, then if the size of
+ the input section is less than a page, it should not cross a page
+ boundary. If the size of the input section is one page or more, it
+ should be aligned on a page boundary. */
+#define SEC_BLOCK 0x8000000
+
+ /* Conditionally link this section; do not link if there are no
+ references found to any symbol in the section. */
+#define SEC_CLINK 0x10000000
- /* Some internal packed boolean fields. */
+ /* End of section flags. */
- /* See the vma field. */
- unsigned int user_set_vma : 1;
+ /* Some internal packed boolean fields. */
- /* Whether relocations have been processed. */
- unsigned int reloc_done : 1;
+ /* See the vma field. */
+ unsigned int user_set_vma : 1;
- /* A mark flag used by some of the linker backends. */
- unsigned int linker_mark : 1;
+ /* Whether relocations have been processed. */
+ unsigned int reloc_done : 1;
- /* A mark flag used by some linker backends for garbage collection. */
- unsigned int gc_mark : 1;
+ /* A mark flag used by some of the linker backends. */
+ unsigned int linker_mark : 1;
- /* End of internal packed boolean fields. */
+ /* A mark flag used by some linker backends for garbage collection. */
+ unsigned int gc_mark : 1;
- /* The virtual memory address of the section - where it will be
- at run time. The symbols are relocated against this. The
- user_set_vma flag is maintained by bfd; if it's not set, the
- backend can assign addresses (for example, in <<a.out>>, where
- the default address for <<.data>> is dependent on the specific
- target and various flags). */
+ /* Used by the ELF code to mark sections which have been allocated to segments. */
+ unsigned int segment_mark : 1;
- bfd_vma vma;
+ /* End of internal packed boolean fields. */
- /* The load address of the section - where it would be in a
- rom image; really only used for writing section header
- information. */
+ /* The virtual memory address of the section - where it will be
+ at run time. The symbols are relocated against this. The
+ user_set_vma flag is maintained by bfd; if it's not set, the
+ backend can assign addresses (for example, in <<a.out>>, where
+ the default address for <<.data>> is dependent on the specific
+ target and various flags). */
- bfd_vma lma;
+ bfd_vma vma;
- /* The size of the section in octets, as it will be output.
- Contains a value even if the section has no contents (e.g., the
- size of <<.bss>>). This will be filled in after relocation. */
+ /* The load address of the section - where it would be in a
+ rom image; really only used for writing section header
+ information. */
- bfd_size_type _cooked_size;
+ bfd_vma lma;
- /* The original size on disk of the section, in octets. Normally this
- value is the same as the size, but if some relaxing has
- been done, then this value will be bigger. */
+ /* The size of the section in octets, as it will be output.
+ Contains a value even if the section has no contents (e.g., the
+ size of <<.bss>>). This will be filled in after relocation. */
- bfd_size_type _raw_size;
+ bfd_size_type _cooked_size;
- /* If this section is going to be output, then this value is the
- offset in *bytes* into the output section of the first byte in the
- input section (byte ==> smallest addressable unit on the
- target). In most cases, if this was going to start at the
- 100th octet (8-bit quantity) in the output section, this value
- would be 100. However, if the target byte size is 16 bits
- (bfd_octets_per_byte is "2"), this value would be 50. */
+ /* The original size on disk of the section, in octets. Normally this
+ value is the same as the size, but if some relaxing has
+ been done, then this value will be bigger. */
- bfd_vma output_offset;
+ bfd_size_type _raw_size;
- /* The output section through which to map on output. */
+ /* If this section is going to be output, then this value is the
+ offset in *bytes* into the output section of the first byte in the
+ input section (byte ==> smallest addressable unit on the
+ target). In most cases, if this was going to start at the
+ 100th octet (8-bit quantity) in the output section, this value
+ would be 100. However, if the target byte size is 16 bits
+ (bfd_octets_per_byte is "2"), this value would be 50. */
- struct sec *output_section;
+ bfd_vma output_offset;
- /* The alignment requirement of the section, as an exponent of 2 -
- e.g., 3 aligns to 2^3 (or 8). */
+ /* The output section through which to map on output. */
- unsigned int alignment_power;
+ struct sec *output_section;
- /* If an input section, a pointer to a vector of relocation
- records for the data in this section. */
+ /* The alignment requirement of the section, as an exponent of 2 -
+ e.g., 3 aligns to 2^3 (or 8). */
- struct reloc_cache_entry *relocation;
+ unsigned int alignment_power;
- /* If an output section, a pointer to a vector of pointers to
- relocation records for the data in this section. */
+ /* If an input section, a pointer to a vector of relocation
+ records for the data in this section. */
- struct reloc_cache_entry **orelocation;
+ struct reloc_cache_entry *relocation;
- /* The number of relocation records in one of the above */
+ /* If an output section, a pointer to a vector of pointers to
+ relocation records for the data in this section. */
- unsigned reloc_count;
+ struct reloc_cache_entry **orelocation;
- /* Information below is back end specific - and not always used
- or updated. */
+ /* The number of relocation records in one of the above */
- /* File position of section data */
+ unsigned reloc_count;
- file_ptr filepos;
+ /* Information below is back end specific - and not always used
+ or updated. */
- /* File position of relocation info */
+ /* File position of section data. */
- file_ptr rel_filepos;
+ file_ptr filepos;
- /* File position of line data */
+ /* File position of relocation info. */
- file_ptr line_filepos;
+ file_ptr rel_filepos;
- /* Pointer to data for applications */
+ /* File position of line data. */
- PTR userdata;
+ file_ptr line_filepos;
- /* If the SEC_IN_MEMORY flag is set, this points to the actual
- contents. */
- unsigned char *contents;
+ /* Pointer to data for applications. */
- /* Attached line number information */
+ PTR userdata;
- alent *lineno;
+ /* If the SEC_IN_MEMORY flag is set, this points to the actual
+ contents. */
+ unsigned char *contents;
- /* Number of line number records */
+ /* Attached line number information. */
- unsigned int lineno_count;
+ alent *lineno;
- /* Optional information about a COMDAT entry; NULL if not COMDAT */
+ /* Number of line number records. */
- struct bfd_comdat_info *comdat;
+ unsigned int lineno_count;
- /* When a section is being output, this value changes as more
- linenumbers are written out */
+ /* Optional information about a COMDAT entry; NULL if not COMDAT. */
- file_ptr moving_line_filepos;
+ struct bfd_comdat_info *comdat;
- /* What the section number is in the target world */
+ /* Points to the kept section if this section is a link-once section,
+ and is discarded. */
+ struct sec *kept_section;
- int target_index;
+ /* When a section is being output, this value changes as more
+ linenumbers are written out. */
- PTR used_by_bfd;
+ file_ptr moving_line_filepos;
- /* If this is a constructor section then here is a list of the
- relocations created to relocate items within it. */
+ /* What the section number is in the target world. */
- struct relent_chain *constructor_chain;
+ int target_index;
- /* The BFD which owns the section. */
+ PTR used_by_bfd;
- bfd *owner;
+ /* If this is a constructor section then here is a list of the
+ relocations created to relocate items within it. */
- /* A symbol which points at this section only */
- struct symbol_cache_entry *symbol;
- struct symbol_cache_entry **symbol_ptr_ptr;
+ struct relent_chain *constructor_chain;
- struct bfd_link_order *link_order_head;
- struct bfd_link_order *link_order_tail;
+ /* The BFD which owns the section. */
+
+ bfd *owner;
+
+ /* A symbol which points at this section only */
+ struct symbol_cache_entry *symbol;
+ struct symbol_cache_entry **symbol_ptr_ptr;
+
+ struct bfd_link_order *link_order_head;
+ struct bfd_link_order *link_order_tail;
} asection ;
- /* These sections are global, and are managed by BFD. The application
- and target back end are not permitted to change the values in
- these sections. New code should use the section_ptr macros rather
- than referring directly to the const sections. The const sections
- may eventually vanish. */
+/* These sections are global, and are managed by BFD. The application
+ and target back end are not permitted to change the values in
+ these sections. New code should use the section_ptr macros rather
+ than referring directly to the const sections. The const sections
+ may eventually vanish. */
#define BFD_ABS_SECTION_NAME "*ABS*"
#define BFD_UND_SECTION_NAME "*UND*"
#define BFD_COM_SECTION_NAME "*COM*"
#define BFD_IND_SECTION_NAME "*IND*"
- /* the absolute section */
+/* the absolute section */
extern const asection bfd_abs_section;
#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
- /* Pointer to the undefined section */
+/* Pointer to the undefined section */
extern const asection bfd_und_section;
#define bfd_und_section_ptr ((asection *) &bfd_und_section)
#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
- /* Pointer to the common section */
+/* Pointer to the common section */
extern const asection bfd_com_section;
#define bfd_com_section_ptr ((asection *) &bfd_com_section)
- /* Pointer to the indirect section */
+/* Pointer to the indirect section */
extern const asection bfd_ind_section;
#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
@@ -1235,58 +1286,60 @@ extern const struct symbol_cache_entry * const bfd_ind_symbol;
((section)->reloc_done ? (section)->_cooked_size \
: (abort (), (bfd_size_type) 1))
asection *
-bfd_get_section_by_name PARAMS ((bfd *abfd, CONST char *name));
+bfd_get_section_by_name PARAMS ((bfd *abfd, const char *name));
+
+char *
+bfd_get_unique_section_name PARAMS ((bfd *abfd,
+ const char *templat,
+ int *count));
asection *
-bfd_make_section_old_way PARAMS ((bfd *abfd, CONST char *name));
+bfd_make_section_old_way PARAMS ((bfd *abfd, const char *name));
asection *
-bfd_make_section_anyway PARAMS ((bfd *abfd, CONST char *name));
+bfd_make_section_anyway PARAMS ((bfd *abfd, const char *name));
asection *
-bfd_make_section PARAMS ((bfd *, CONST char *name));
+bfd_make_section PARAMS ((bfd *, const char *name));
-boolean
+boolean
bfd_set_section_flags PARAMS ((bfd *abfd, asection *sec, flagword flags));
-void
+void
bfd_map_over_sections PARAMS ((bfd *abfd,
- void (*func)(bfd *abfd,
+ void (*func) (bfd *abfd,
asection *sect,
PTR obj),
PTR obj));
-boolean
+boolean
bfd_set_section_size PARAMS ((bfd *abfd, asection *sec, bfd_size_type val));
-boolean
-bfd_set_section_contents
- PARAMS ((bfd *abfd,
+boolean
+bfd_set_section_contents PARAMS ((bfd *abfd,
asection *section,
PTR data,
file_ptr offset,
bfd_size_type count));
-boolean
-bfd_get_section_contents
- PARAMS ((bfd *abfd, asection *section, PTR location,
+boolean
+bfd_get_section_contents PARAMS ((bfd *abfd, asection *section, PTR location,
file_ptr offset, bfd_size_type count));
-boolean
+boolean
bfd_copy_private_section_data PARAMS ((bfd *ibfd, asection *isec, bfd *obfd, asection *osec));
#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
BFD_SEND (obfd, _bfd_copy_private_section_data, \
(ibfd, isection, obfd, osection))
-void
-_bfd_strip_section_from_output
- PARAMS ((struct bfd_link_info *info, asection *section));
+void
+_bfd_strip_section_from_output PARAMS ((struct bfd_link_info *info, asection *section));
-enum bfd_architecture
+enum bfd_architecture
{
- bfd_arch_unknown, /* File arch not known */
- bfd_arch_obscure, /* Arch known, not one of these */
- bfd_arch_m68k, /* Motorola 68xxx */
+ bfd_arch_unknown, /* File arch not known */
+ bfd_arch_obscure, /* Arch known, not one of these */
+ bfd_arch_m68k, /* Motorola 68xxx */
#define bfd_mach_m68000 1
#define bfd_mach_m68008 2
#define bfd_mach_m68010 3
@@ -1295,14 +1348,14 @@ enum bfd_architecture
#define bfd_mach_m68040 6
#define bfd_mach_m68060 7
#define bfd_mach_cpu32 8
- bfd_arch_vax, /* DEC Vax */
- bfd_arch_i960, /* Intel 960 */
- /* The order of the following is important.
- lower number indicates a machine type that
+ bfd_arch_vax, /* DEC Vax */
+ bfd_arch_i960, /* Intel 960 */
+ /* The order of the following is important.
+ lower number indicates a machine type that
only accepts a subset of the instructions
available to machines with higher numbers.
The exception is the "ca", which is
- incompatible with all other machines except
+ incompatible with all other machines except
"core". */
#define bfd_mach_i960_core 1
@@ -1314,21 +1367,24 @@ enum bfd_architecture
#define bfd_mach_i960_jx 7
#define bfd_mach_i960_hx 8
- bfd_arch_a29k, /* AMD 29000 */
- bfd_arch_sparc, /* SPARC */
+ bfd_arch_a29k, /* AMD 29000 */
+ bfd_arch_sparc, /* SPARC */
#define bfd_mach_sparc 1
- /* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
+/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
#define bfd_mach_sparc_sparclet 2
#define bfd_mach_sparc_sparclite 3
#define bfd_mach_sparc_v8plus 4
-#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns */
+#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns */
#define bfd_mach_sparc_sparclite_le 6
#define bfd_mach_sparc_v9 7
-#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns */
- /* Nonzero if MACH has the v9 instruction set. */
+#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns */
+#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns */
+#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns */
+/* Nonzero if MACH has the v9 instruction set. */
#define bfd_mach_sparc_v9_p(mach) \
- ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9a)
- bfd_arch_mips, /* MIPS Rxxxx */
+ ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
+ && (mach) != bfd_mach_sparc_sparclite_le)
+ bfd_arch_mips, /* MIPS Rxxxx */
#define bfd_mach_mips3000 3000
#define bfd_mach_mips3900 3900
#define bfd_mach_mips4000 4000
@@ -1344,36 +1400,66 @@ enum bfd_architecture
#define bfd_mach_mips8000 8000
#define bfd_mach_mips10000 10000
#define bfd_mach_mips16 16
- bfd_arch_i386, /* Intel 386 */
+#define bfd_mach_mips32 32
+#define bfd_mach_mips32_4k 3204113 /* 32, 04, octal 'K' */
+#define bfd_mach_mips5 5
+#define bfd_mach_mips64 64
+#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
+ bfd_arch_i386, /* Intel 386 */
#define bfd_mach_i386_i386 0
#define bfd_mach_i386_i8086 1
#define bfd_mach_i386_i386_intel_syntax 2
- bfd_arch_we32k, /* AT&T WE32xxx */
- bfd_arch_tahoe, /* CCI/Harris Tahoe */
- bfd_arch_i860, /* Intel 860 */
- bfd_arch_i370, /* IBM 360/370 Mainframes */
- bfd_arch_romp, /* IBM ROMP PC/RT */
- bfd_arch_alliant, /* Alliant */
- bfd_arch_convex, /* Convex */
- bfd_arch_m88k, /* Motorola 88xxx */
- bfd_arch_pyramid, /* Pyramid Technology */
- bfd_arch_h8300, /* Hitachi H8/300 */
+#define bfd_mach_x86_64 3
+#define bfd_mach_x86_64_intel_syntax 4
+ bfd_arch_we32k, /* AT&T WE32xxx */
+ bfd_arch_tahoe, /* CCI/Harris Tahoe */
+ bfd_arch_i860, /* Intel 860 */
+ bfd_arch_i370, /* IBM 360/370 Mainframes */
+ bfd_arch_romp, /* IBM ROMP PC/RT */
+ bfd_arch_alliant, /* Alliant */
+ bfd_arch_convex, /* Convex */
+ bfd_arch_m88k, /* Motorola 88xxx */
+ bfd_arch_pyramid, /* Pyramid Technology */
+ bfd_arch_h8300, /* Hitachi H8/300 */
#define bfd_mach_h8300 1
#define bfd_mach_h8300h 2
#define bfd_mach_h8300s 3
- bfd_arch_powerpc, /* PowerPC */
- bfd_arch_rs6000, /* IBM RS/6000 */
- bfd_arch_hppa, /* HP PA RISC */
- bfd_arch_d10v, /* Mitsubishi D10V */
+ bfd_arch_powerpc, /* PowerPC */
+#define bfd_mach_ppc 0
+#define bfd_mach_ppc_403 403
+#define bfd_mach_ppc_403gc 4030
+#define bfd_mach_ppc_505 505
+#define bfd_mach_ppc_601 601
+#define bfd_mach_ppc_602 602
+#define bfd_mach_ppc_603 603
+#define bfd_mach_ppc_ec603e 6031
+#define bfd_mach_ppc_604 604
+#define bfd_mach_ppc_620 620
+#define bfd_mach_ppc_630 630
+#define bfd_mach_ppc_750 750
+#define bfd_mach_ppc_860 860
+#define bfd_mach_ppc_a35 35
+#define bfd_mach_ppc_rs64ii 642
+#define bfd_mach_ppc_rs64iii 643
+#define bfd_mach_ppc_7400 7400
+ bfd_arch_rs6000, /* IBM RS/6000 */
+#define bfd_mach_rs6k 0
+#define bfd_mach_rs6k_rs1 6001
+#define bfd_mach_rs6k_rsc 6003
+#define bfd_mach_rs6k_rs2 6002
+ bfd_arch_hppa, /* HP PA RISC */
+ bfd_arch_d10v, /* Mitsubishi D10V */
#define bfd_mach_d10v 0
#define bfd_mach_d10v_ts2 2
#define bfd_mach_d10v_ts3 3
- bfd_arch_d30v, /* Mitsubishi D30V */
- bfd_arch_z8k, /* Zilog Z8000 */
+ bfd_arch_d30v, /* Mitsubishi D30V */
+ bfd_arch_m68hc11, /* Motorola 68HC11 */
+ bfd_arch_m68hc12, /* Motorola 68HC12 */
+ bfd_arch_z8k, /* Zilog Z8000 */
#define bfd_mach_z8001 1
#define bfd_mach_z8002 2
- bfd_arch_h8500, /* Hitachi H8/500 */
- bfd_arch_sh, /* Hitachi SH */
+ bfd_arch_h8500, /* Hitachi H8/500 */
+ bfd_arch_sh, /* Hitachi SH */
#define bfd_mach_sh 0
#define bfd_mach_sh2 0x20
#define bfd_mach_sh_dsp 0x2d
@@ -1381,11 +1467,11 @@ enum bfd_architecture
#define bfd_mach_sh3_dsp 0x3d
#define bfd_mach_sh3e 0x3e
#define bfd_mach_sh4 0x40
- bfd_arch_alpha, /* Dec Alpha */
+ bfd_arch_alpha, /* Dec Alpha */
#define bfd_mach_alpha_ev4 0x10
#define bfd_mach_alpha_ev5 0x20
#define bfd_mach_alpha_ev6 0x30
- bfd_arch_arm, /* Advanced Risc Machines ARM */
+ bfd_arch_arm, /* Advanced Risc Machines ARM */
#define bfd_mach_arm_2 1
#define bfd_mach_arm_2a 2
#define bfd_mach_arm_3 3
@@ -1394,36 +1480,47 @@ enum bfd_architecture
#define bfd_mach_arm_4T 6
#define bfd_mach_arm_5 7
#define bfd_mach_arm_5T 8
- bfd_arch_ns32k, /* National Semiconductors ns32000 */
- bfd_arch_w65, /* WDC 65816 */
- bfd_arch_tic30, /* Texas Instruments TMS320C30 */
- bfd_arch_tic80, /* TI TMS320c80 (MVP) */
- bfd_arch_v850, /* NEC V850 */
+#define bfd_mach_arm_5TE 9
+#define bfd_mach_arm_XScale 10
+ bfd_arch_ns32k, /* National Semiconductors ns32000 */
+ bfd_arch_w65, /* WDC 65816 */
+ bfd_arch_tic30, /* Texas Instruments TMS320C30 */
+ bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
+ bfd_arch_tic80, /* TI TMS320c80 (MVP) */
+ bfd_arch_v850, /* NEC V850 */
#define bfd_mach_v850 0
#define bfd_mach_v850e 'E'
#define bfd_mach_v850ea 'A'
- bfd_arch_arc, /* Argonaut RISC Core */
-#define bfd_mach_arc_base 0
- bfd_arch_m32r, /* Mitsubishi M32R/D */
-#define bfd_mach_m32r 0 /* backwards compatibility */
+ bfd_arch_arc, /* ARC Cores */
+#define bfd_mach_arc_5 0
+#define bfd_mach_arc_6 1
+#define bfd_mach_arc_7 2
+#define bfd_mach_arc_8 3
+ bfd_arch_m32r, /* Mitsubishi M32R/D */
+#define bfd_mach_m32r 0 /* backwards compatibility */
#define bfd_mach_m32rx 'x'
- bfd_arch_mn10200, /* Matsushita MN10200 */
- bfd_arch_mn10300, /* Matsushita MN10300 */
+ bfd_arch_mn10200, /* Matsushita MN10200 */
+ bfd_arch_mn10300, /* Matsushita MN10300 */
#define bfd_mach_mn10300 300
#define bfd_mach_am33 330
bfd_arch_fr30,
#define bfd_mach_fr30 0x46523330
bfd_arch_mcore,
+ bfd_arch_ia64, /* HP/Intel ia64 */
+#define bfd_mach_ia64_elf64 0
+#define bfd_mach_ia64_elf32 1
bfd_arch_pj,
- bfd_arch_avr, /* Atmel AVR microcontrollers */
+ bfd_arch_avr, /* Atmel AVR microcontrollers */
#define bfd_mach_avr1 1
#define bfd_mach_avr2 2
#define bfd_mach_avr3 3
#define bfd_mach_avr4 4
+#define bfd_mach_avr5 5
+ bfd_arch_cris, /* Axis CRIS */
bfd_arch_last
};
-typedef struct bfd_arch_info
+typedef struct bfd_arch_info
{
int bits_per_word;
int bits_per_address;
@@ -1433,8 +1530,8 @@ typedef struct bfd_arch_info
const char *arch_name;
const char *printable_name;
unsigned int section_align_power;
- /* true if this is the default machine for the architecture */
- boolean the_default;
+ /* True if this is the default machine for the architecture. */
+ boolean the_default;
const struct bfd_arch_info * (*compatible)
PARAMS ((const struct bfd_arch_info *a,
const struct bfd_arch_info *b));
@@ -1457,65 +1554,63 @@ bfd_arch_get_compatible PARAMS ((
const bfd *abfd,
const bfd *bbfd));
-void
+void
bfd_set_arch_info PARAMS ((bfd *abfd, const bfd_arch_info_type *arg));
-enum bfd_architecture
+enum bfd_architecture
bfd_get_arch PARAMS ((bfd *abfd));
-unsigned long
+unsigned long
bfd_get_mach PARAMS ((bfd *abfd));
-unsigned int
+unsigned int
bfd_arch_bits_per_byte PARAMS ((bfd *abfd));
-unsigned int
+unsigned int
bfd_arch_bits_per_address PARAMS ((bfd *abfd));
-const bfd_arch_info_type *
+const bfd_arch_info_type *
bfd_get_arch_info PARAMS ((bfd *abfd));
const bfd_arch_info_type *
-bfd_lookup_arch
- PARAMS ((enum bfd_architecture
+bfd_lookup_arch PARAMS ((enum bfd_architecture
arch,
unsigned long machine));
const char *
-bfd_printable_arch_mach
- PARAMS ((enum bfd_architecture arch, unsigned long machine));
+bfd_printable_arch_mach PARAMS ((enum bfd_architecture arch, unsigned long machine));
-unsigned int
+unsigned int
bfd_octets_per_byte PARAMS ((bfd *abfd));
-unsigned int
+unsigned int
bfd_arch_mach_octets_per_byte PARAMS ((enum bfd_architecture arch,
unsigned long machine));
typedef enum bfd_reloc_status
{
- /* No errors detected */
+ /* No errors detected */
bfd_reloc_ok,
- /* The relocation was performed, but there was an overflow. */
+ /* The relocation was performed, but there was an overflow. */
bfd_reloc_overflow,
- /* The address to relocate was not within the section supplied. */
+ /* The address to relocate was not within the section supplied. */
bfd_reloc_outofrange,
- /* Used by special functions */
+ /* Used by special functions */
bfd_reloc_continue,
- /* Unsupported relocation size requested. */
+ /* Unsupported relocation size requested. */
bfd_reloc_notsupported,
- /* Unused */
+ /* Unused */
bfd_reloc_other,
- /* The symbol to relocate against was undefined. */
+ /* The symbol to relocate against was undefined. */
bfd_reloc_undefined,
- /* The relocation was performed, but may not be ok - presently
+ /* The relocation was performed, but may not be ok - presently
generated only when linking i960 coff files with i960 b.out
symbols. If this type is returned, the error_message argument
to bfd_perform_relocation will be set. */
@@ -1526,40 +1621,40 @@ typedef enum bfd_reloc_status
typedef struct reloc_cache_entry
{
- /* A pointer into the canonical table of pointers */
+ /* A pointer into the canonical table of pointers */
struct symbol_cache_entry **sym_ptr_ptr;
- /* offset in section */
+ /* offset in section */
bfd_size_type address;
- /* addend for relocation value */
+ /* addend for relocation value */
bfd_vma addend;
- /* Pointer to how to perform the required relocation */
+ /* Pointer to how to perform the required relocation */
reloc_howto_type *howto;
} arelent;
enum complain_overflow
{
- /* Do not complain on overflow. */
+ /* Do not complain on overflow. */
complain_overflow_dont,
- /* Complain if the bitfield overflows, whether it is considered
+ /* Complain if the bitfield overflows, whether it is considered
as signed or unsigned. */
complain_overflow_bitfield,
- /* Complain if the value overflows when considered as signed
+ /* Complain if the value overflows when considered as signed
number. */
complain_overflow_signed,
- /* Complain if the value overflows when considered as an
+ /* Complain if the value overflows when considered as an
unsigned number. */
complain_overflow_unsigned
};
struct reloc_howto_struct
{
- /* The type field has mainly a documentary use - the back end can
+ /* The type field has mainly a documentary use - the back end can
do what it wants with it, though normally the back end's
external idea of what a reloc number is stored
in this field. For example, a PC relative word relocation
@@ -1567,34 +1662,34 @@ struct reloc_howto_struct
what the outside world calls a R_PCRWORD reloc. */
unsigned int type;
- /* The value the final relocation is shifted right by. This drops
+ /* The value the final relocation is shifted right by. This drops
unwanted data from the relocation. */
unsigned int rightshift;
- /* The size of the item to be relocated. This is *not* a
+ /* The size of the item to be relocated. This is *not* a
power-of-two measure. To get the number of bytes operated
on by a type of relocation, use bfd_get_reloc_size. */
int size;
- /* The number of bits in the item to be relocated. This is used
+ /* The number of bits in the item to be relocated. This is used
when doing overflow checking. */
unsigned int bitsize;
- /* Notes that the relocation is relative to the location in the
+ /* Notes that the relocation is relative to the location in the
data section of the addend. The relocation function will
subtract from the relocation value the address of the location
being relocated. */
boolean pc_relative;
- /* The bit position of the reloc value in the destination.
+ /* The bit position of the reloc value in the destination.
The relocated value is left shifted by this amount. */
unsigned int bitpos;
- /* What type of overflow error should be checked for when
+ /* What type of overflow error should be checked for when
relocating. */
enum complain_overflow complain_on_overflow;
- /* If this field is non null, then the supplied function is
+ /* If this field is non null, then the supplied function is
called rather than the normal function. This allows really
strange relocation methods to be accomodated (e.g., i960 callj
instructions). */
@@ -1607,10 +1702,10 @@ struct reloc_howto_struct
bfd *output_bfd,
char **error_message));
- /* The textual name of the relocation type. */
+ /* The textual name of the relocation type. */
char *name;
- /* Some formats record a relocation addend in the section contents
+ /* Some formats record a relocation addend in the section contents
rather than with the relocation. For ELF formats this is the
distinction between USE_REL and USE_RELA (though the code checks
for USE_REL == 1/0). The value of this field is TRUE if the
@@ -1627,7 +1722,7 @@ struct reloc_howto_struct
links (e.g. GOT stuff) it doesn't matter what this is set to. */
boolean partial_inplace;
- /* The src_mask selects which parts of the read in data
+ /* The src_mask selects which parts of the read in data
are to be used in the relocation sum. E.g., if this was an 8 bit
byte of data which we read and relocated, this would be
0x000000ff. When we have relocs which have an addend, such as
@@ -1636,13 +1731,13 @@ struct reloc_howto_struct
the mask would be 0x00000000. */
bfd_vma src_mask;
- /* The dst_mask selects which parts of the instruction are replaced
+ /* The dst_mask selects which parts of the instruction are replaced
into the instruction. In most cases src_mask == dst_mask,
except in the above special case, where dst_mask would be
0x000000ff, and src_mask would be 0x00000000. */
bfd_vma dst_mask;
- /* When some formats create PC relative instructions, they leave
+ /* When some formats create PC relative instructions, they leave
the value of the pc of the place being relocated in the offset
slot of the instruction, so that a PC relative relocation can
be made just by adding in an ordinary offset (e.g., sun3 a.out).
@@ -1669,26 +1764,22 @@ struct reloc_howto_struct
} \
} \
}
-unsigned int
-bfd_get_reloc_size PARAMS ((reloc_howto_type *));
+unsigned int
+bfd_get_reloc_size PARAMS ((reloc_howto_type *));
typedef struct relent_chain {
arelent relent;
struct relent_chain *next;
} arelent_chain;
bfd_reloc_status_type
-
-bfd_check_overflow
- PARAMS ((enum complain_overflow how,
+bfd_check_overflow PARAMS ((enum complain_overflow how,
unsigned int bitsize,
unsigned int rightshift,
unsigned int addrsize,
bfd_vma relocation));
bfd_reloc_status_type
-
-bfd_perform_relocation
- PARAMS ((bfd *abfd,
+bfd_perform_relocation PARAMS ((bfd *abfd,
arelent *reloc_entry,
PTR data,
asection *input_section,
@@ -1696,9 +1787,7 @@ bfd_perform_relocation
char **error_message));
bfd_reloc_status_type
-
-bfd_install_relocation
- PARAMS ((bfd *abfd,
+bfd_install_relocation PARAMS ((bfd *abfd,
arelent *reloc_entry,
PTR data, bfd_vma data_start,
asection *input_section,
@@ -1972,6 +2061,16 @@ to compensate for the borrow when the low bits are added. */
BFD_RELOC_386_GOTOFF,
BFD_RELOC_386_GOTPC,
+/* x86-64/elf relocations */
+ BFD_RELOC_X86_64_GOT32,
+ BFD_RELOC_X86_64_PLT32,
+ BFD_RELOC_X86_64_COPY,
+ BFD_RELOC_X86_64_GLOB_DAT,
+ BFD_RELOC_X86_64_JUMP_SLOT,
+ BFD_RELOC_X86_64_RELATIVE,
+ BFD_RELOC_X86_64_GOTPCREL,
+ BFD_RELOC_X86_64_32S,
+
/* ns32k relocations */
BFD_RELOC_NS32K_IMM_8,
BFD_RELOC_NS32K_IMM_16,
@@ -2038,6 +2137,16 @@ It generally does map to one of the other relocation types. */
not stored in the instruction. */
BFD_RELOC_ARM_PCREL_BRANCH,
+/* ARM 26 bit pc-relative branch. The lowest bit must be zero and is
+not stored in the instruction. The 2nd lowest bit comes from a 1 bit
+field in the instruction. */
+ BFD_RELOC_ARM_PCREL_BLX,
+
+/* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
+not stored in the instruction. The 2nd lowest bit comes from a 1 bit
+field in the instruction. */
+ BFD_RELOC_THUMB_PCREL_BLX,
+
/* These relocs are only used within the ARM assembler. They are not
(at present) written to any object files. */
BFD_RELOC_ARM_IMMEDIATE,
@@ -2086,6 +2195,13 @@ not stored in the instruction. */
BFD_RELOC_SH_CODE,
BFD_RELOC_SH_DATA,
BFD_RELOC_SH_LABEL,
+ BFD_RELOC_SH_LOOP_START,
+ BFD_RELOC_SH_LOOP_END,
+ BFD_RELOC_SH_COPY,
+ BFD_RELOC_SH_GLOB_DAT,
+ BFD_RELOC_SH_JMP_SLOT,
+ BFD_RELOC_SH_RELATIVE,
+ BFD_RELOC_SH_GOTPC,
/* Thumb 23-, 12- and 9-bit pc-relative branches. The lowest bit must
be zero and is not stored in the instruction. */
@@ -2093,7 +2209,7 @@ be zero and is not stored in the instruction. */
BFD_RELOC_THUMB_PCREL_BRANCH12,
BFD_RELOC_THUMB_PCREL_BRANCH23,
-/* Argonaut RISC Core (ARC) relocs.
+/* ARC Cores relocs.
ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
not stored in the instruction. The high 20 bits are installed in bits 26
through 7 of the instruction. */
@@ -2269,6 +2385,29 @@ significant 8 bits of a 24 bit word are placed into the least
significant 8 bits of the opcode. */
BFD_RELOC_TIC30_LDP,
+/* This is a 7bit reloc for the tms320c54x, where the least
+significant 7 bits of a 16 bit word are placed into the least
+significant 7 bits of the opcode. */
+ BFD_RELOC_TIC54X_PARTLS7,
+
+/* This is a 9bit DP reloc for the tms320c54x, where the most
+significant 9 bits of a 16 bit word are placed into the least
+significant 9 bits of the opcode. */
+ BFD_RELOC_TIC54X_PARTMS9,
+
+/* This is an extended address 23-bit reloc for the tms320c54x. */
+ BFD_RELOC_TIC54X_23,
+
+/* This is a 16-bit reloc for the tms320c54x, where the least
+significant 16 bits of a 23-bit extended address are placed into
+the opcode. */
+ BFD_RELOC_TIC54X_16_OF_23,
+
+/* This is a reloc for the tms320c54x, where the most
+significant 7 bits of a 23-bit extended address are placed into
+the opcode. */
+ BFD_RELOC_TIC54X_MS7_OF_23,
+
/* This is a 48 bit reloc for the FR30 that stores 32 bits. */
BFD_RELOC_FR30_48,
@@ -2395,19 +2534,138 @@ is stored in the reloc's addend. For Rel hosts, we are forced to put
this offset in the reloc's section offset. */
BFD_RELOC_VTABLE_INHERIT,
BFD_RELOC_VTABLE_ENTRY,
+
+/* Intel IA64 Relocations. */
+ BFD_RELOC_IA64_IMM14,
+ BFD_RELOC_IA64_IMM22,
+ BFD_RELOC_IA64_IMM64,
+ BFD_RELOC_IA64_DIR32MSB,
+ BFD_RELOC_IA64_DIR32LSB,
+ BFD_RELOC_IA64_DIR64MSB,
+ BFD_RELOC_IA64_DIR64LSB,
+ BFD_RELOC_IA64_GPREL22,
+ BFD_RELOC_IA64_GPREL64I,
+ BFD_RELOC_IA64_GPREL32MSB,
+ BFD_RELOC_IA64_GPREL32LSB,
+ BFD_RELOC_IA64_GPREL64MSB,
+ BFD_RELOC_IA64_GPREL64LSB,
+ BFD_RELOC_IA64_LTOFF22,
+ BFD_RELOC_IA64_LTOFF64I,
+ BFD_RELOC_IA64_PLTOFF22,
+ BFD_RELOC_IA64_PLTOFF64I,
+ BFD_RELOC_IA64_PLTOFF64MSB,
+ BFD_RELOC_IA64_PLTOFF64LSB,
+ BFD_RELOC_IA64_FPTR64I,
+ BFD_RELOC_IA64_FPTR32MSB,
+ BFD_RELOC_IA64_FPTR32LSB,
+ BFD_RELOC_IA64_FPTR64MSB,
+ BFD_RELOC_IA64_FPTR64LSB,
+ BFD_RELOC_IA64_PCREL21B,
+ BFD_RELOC_IA64_PCREL21BI,
+ BFD_RELOC_IA64_PCREL21M,
+ BFD_RELOC_IA64_PCREL21F,
+ BFD_RELOC_IA64_PCREL22,
+ BFD_RELOC_IA64_PCREL60B,
+ BFD_RELOC_IA64_PCREL64I,
+ BFD_RELOC_IA64_PCREL32MSB,
+ BFD_RELOC_IA64_PCREL32LSB,
+ BFD_RELOC_IA64_PCREL64MSB,
+ BFD_RELOC_IA64_PCREL64LSB,
+ BFD_RELOC_IA64_LTOFF_FPTR22,
+ BFD_RELOC_IA64_LTOFF_FPTR64I,
+ BFD_RELOC_IA64_LTOFF_FPTR64MSB,
+ BFD_RELOC_IA64_LTOFF_FPTR64LSB,
+ BFD_RELOC_IA64_SEGREL32MSB,
+ BFD_RELOC_IA64_SEGREL32LSB,
+ BFD_RELOC_IA64_SEGREL64MSB,
+ BFD_RELOC_IA64_SEGREL64LSB,
+ BFD_RELOC_IA64_SECREL32MSB,
+ BFD_RELOC_IA64_SECREL32LSB,
+ BFD_RELOC_IA64_SECREL64MSB,
+ BFD_RELOC_IA64_SECREL64LSB,
+ BFD_RELOC_IA64_REL32MSB,
+ BFD_RELOC_IA64_REL32LSB,
+ BFD_RELOC_IA64_REL64MSB,
+ BFD_RELOC_IA64_REL64LSB,
+ BFD_RELOC_IA64_LTV32MSB,
+ BFD_RELOC_IA64_LTV32LSB,
+ BFD_RELOC_IA64_LTV64MSB,
+ BFD_RELOC_IA64_LTV64LSB,
+ BFD_RELOC_IA64_IPLTMSB,
+ BFD_RELOC_IA64_IPLTLSB,
+ BFD_RELOC_IA64_COPY,
+ BFD_RELOC_IA64_TPREL22,
+ BFD_RELOC_IA64_TPREL64MSB,
+ BFD_RELOC_IA64_TPREL64LSB,
+ BFD_RELOC_IA64_LTOFF_TP22,
+ BFD_RELOC_IA64_LTOFF22X,
+ BFD_RELOC_IA64_LDXMOV,
+
+/* Motorola 68HC11 reloc.
+This is the 8 bits high part of an absolute address. */
+ BFD_RELOC_M68HC11_HI8,
+
+/* Motorola 68HC11 reloc.
+This is the 8 bits low part of an absolute address. */
+ BFD_RELOC_M68HC11_LO8,
+
+/* Motorola 68HC11 reloc.
+This is the 3 bits of a value. */
+ BFD_RELOC_M68HC11_3B,
+
+/* These relocs are only used within the CRIS assembler. They are not
+(at present) written to any object files. */
+ BFD_RELOC_CRIS_BDISP8,
+ BFD_RELOC_CRIS_UNSIGNED_5,
+ BFD_RELOC_CRIS_SIGNED_6,
+ BFD_RELOC_CRIS_UNSIGNED_6,
+ BFD_RELOC_CRIS_UNSIGNED_4,
+
+/* Intel i860 Relocations. */
+ BFD_RELOC_860_COPY,
+ BFD_RELOC_860_GLOB_DAT,
+ BFD_RELOC_860_JUMP_SLOT,
+ BFD_RELOC_860_RELATIVE,
+ BFD_RELOC_860_PC26,
+ BFD_RELOC_860_PLT26,
+ BFD_RELOC_860_PC16,
+ BFD_RELOC_860_LOW0,
+ BFD_RELOC_860_SPLIT0,
+ BFD_RELOC_860_LOW1,
+ BFD_RELOC_860_SPLIT1,
+ BFD_RELOC_860_LOW2,
+ BFD_RELOC_860_SPLIT2,
+ BFD_RELOC_860_LOW3,
+ BFD_RELOC_860_LOGOT0,
+ BFD_RELOC_860_SPGOT0,
+ BFD_RELOC_860_LOGOT1,
+ BFD_RELOC_860_SPGOT1,
+ BFD_RELOC_860_LOGOTOFF0,
+ BFD_RELOC_860_SPGOTOFF0,
+ BFD_RELOC_860_LOGOTOFF1,
+ BFD_RELOC_860_SPGOTOFF1,
+ BFD_RELOC_860_LOGOTOFF2,
+ BFD_RELOC_860_LOGOTOFF3,
+ BFD_RELOC_860_LOPC,
+ BFD_RELOC_860_HIGHADJ,
+ BFD_RELOC_860_HAGOT,
+ BFD_RELOC_860_HAGOTOFF,
+ BFD_RELOC_860_HAPC,
+ BFD_RELOC_860_HIGH,
+ BFD_RELOC_860_HIGOT,
+ BFD_RELOC_860_HIGOTOFF,
BFD_RELOC_UNUSED };
typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
reloc_howto_type *
-
-bfd_reloc_type_lookup PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
+bfd_reloc_type_lookup PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
const char *
-bfd_get_reloc_code_name PARAMS ((bfd_reloc_code_real_type code));
+bfd_get_reloc_code_name PARAMS ((bfd_reloc_code_real_type code));
typedef struct symbol_cache_entry
{
- /* A pointer to the BFD which owns the symbol. This information
+ /* A pointer to the BFD which owns the symbol. This information
is necessary so that a back end can work out what additional
information (invisible to the application writer) is carried
with the symbol.
@@ -2417,65 +2675,65 @@ typedef struct symbol_cache_entry
bfd_{abs,com,und}_section. This could be fixed by making
these globals be per-bfd (or per-target-flavor). FIXME. */
- struct _bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
+ struct _bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
- /* The text of the symbol. The name is left alone, and not copied; the
+ /* The text of the symbol. The name is left alone, and not copied; the
application may not alter it. */
CONST char *name;
- /* The value of the symbol. This really should be a union of a
+ /* The value of the symbol. This really should be a union of a
numeric value with a pointer, since some flags indicate that
a pointer to another symbol is stored here. */
symvalue value;
- /* Attributes of a symbol: */
+ /* Attributes of a symbol: */
#define BSF_NO_FLAGS 0x00
- /* The symbol has local scope; <<static>> in <<C>>. The value
+ /* The symbol has local scope; <<static>> in <<C>>. The value
is the offset into the section of the data. */
#define BSF_LOCAL 0x01
- /* The symbol has global scope; initialized data in <<C>>. The
+ /* The symbol has global scope; initialized data in <<C>>. The
value is the offset into the section of the data. */
#define BSF_GLOBAL 0x02
- /* The symbol has global scope and is exported. The value is
+ /* The symbol has global scope and is exported. The value is
the offset into the section of the data. */
-#define BSF_EXPORT BSF_GLOBAL /* no real difference */
+#define BSF_EXPORT BSF_GLOBAL /* no real difference */
- /* A normal C symbol would be one of:
+ /* A normal C symbol would be one of:
<<BSF_LOCAL>>, <<BSF_FORT_COMM>>, <<BSF_UNDEFINED>> or
<<BSF_GLOBAL>> */
- /* The symbol is a debugging record. The value has an arbitary
+ /* The symbol is a debugging record. The value has an arbitary
meaning, unless BSF_DEBUGGING_RELOC is also set. */
#define BSF_DEBUGGING 0x08
- /* The symbol denotes a function entry point. Used in ELF,
+ /* The symbol denotes a function entry point. Used in ELF,
perhaps others someday. */
#define BSF_FUNCTION 0x10
- /* Used by the linker. */
+ /* Used by the linker. */
#define BSF_KEEP 0x20
#define BSF_KEEP_G 0x40
- /* A weak global symbol, overridable without warnings by
+ /* A weak global symbol, overridable without warnings by
a regular global symbol of the same name. */
#define BSF_WEAK 0x80
- /* This symbol was created to point to a section, e.g. ELF's
+ /* This symbol was created to point to a section, e.g. ELF's
STT_SECTION symbols. */
#define BSF_SECTION_SYM 0x100
- /* The symbol used to be a common symbol, but now it is
+ /* The symbol used to be a common symbol, but now it is
allocated. */
#define BSF_OLD_COMMON 0x200
- /* The default value for common data. */
+ /* The default value for common data. */
#define BFD_FORT_COMM_DEFAULT_VALUE 0
- /* In some files the type of a symbol sometimes alters its
+ /* In some files the type of a symbol sometimes alters its
location in an output file - ie in coff a <<ISFCN>> symbol
which is also <<C_EXT>> symbol appears where it was
declared and not at the end of a section. This bit is set
@@ -2483,43 +2741,43 @@ typedef struct symbol_cache_entry
#define BSF_NOT_AT_END 0x400
- /* Signal that the symbol is the label of constructor section. */
+ /* Signal that the symbol is the label of constructor section. */
#define BSF_CONSTRUCTOR 0x800
- /* Signal that the symbol is a warning symbol. The name is a
+ /* Signal that the symbol is a warning symbol. The name is a
warning. The name of the next symbol is the one to warn about;
if a reference is made to a symbol with the same name as the next
symbol, a warning is issued by the linker. */
#define BSF_WARNING 0x1000
- /* Signal that the symbol is indirect. This symbol is an indirect
+ /* Signal that the symbol is indirect. This symbol is an indirect
pointer to the symbol with the same name as the next symbol. */
#define BSF_INDIRECT 0x2000
- /* BSF_FILE marks symbols that contain a file name. This is used
+ /* BSF_FILE marks symbols that contain a file name. This is used
for ELF STT_FILE symbols. */
#define BSF_FILE 0x4000
- /* Symbol is from dynamic linking information. */
+ /* Symbol is from dynamic linking information. */
#define BSF_DYNAMIC 0x8000
- /* The symbol denotes a data object. Used in ELF, and perhaps
+ /* The symbol denotes a data object. Used in ELF, and perhaps
others someday. */
#define BSF_OBJECT 0x10000
- /* This symbol is a debugging symbol. The value is the offset
+ /* This symbol is a debugging symbol. The value is the offset
into the section of the data. BSF_DEBUGGING should be set
as well. */
#define BSF_DEBUGGING_RELOC 0x20000
flagword flags;
- /* A pointer to the section to which this symbol is
+ /* A pointer to the section to which this symbol is
relative. This will always be non NULL, there are special
sections for undefined and absolute symbols. */
struct sec *section;
- /* Back end special data. */
+ /* Back end special data. */
union
{
PTR p;
@@ -2529,10 +2787,10 @@ typedef struct symbol_cache_entry
} asymbol;
#define bfd_get_symtab_upper_bound(abfd) \
BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
-boolean
+boolean
bfd_is_local_label PARAMS ((bfd *abfd, asymbol *sym));
-boolean
+boolean
bfd_is_local_label_name PARAMS ((bfd *abfd, const char *name));
#define bfd_is_local_label_name(abfd, name) \
@@ -2540,40 +2798,40 @@ bfd_is_local_label_name PARAMS ((bfd *abfd, const char *name));
#define bfd_canonicalize_symtab(abfd, location) \
BFD_SEND (abfd, _bfd_canonicalize_symtab,\
(abfd, location))
-boolean
-bfd_set_symtab PARAMS ((bfd *abfd, asymbol **location, unsigned int count));
+boolean
+bfd_set_symtab PARAMS ((bfd *abfd, asymbol **location, unsigned int count));
-void
+void
bfd_print_symbol_vandf PARAMS ((PTR file, asymbol *symbol));
#define bfd_make_empty_symbol(abfd) \
BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
#define bfd_make_debug_symbol(abfd,ptr,size) \
BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
-int
+int
bfd_decode_symclass PARAMS ((asymbol *symbol));
-boolean
-bfd_is_undefined_symclass PARAMS ((int symclass));
+boolean
+bfd_is_undefined_symclass PARAMS ((int symclass));
-void
+void
bfd_symbol_info PARAMS ((asymbol *symbol, symbol_info *ret));
-boolean
+boolean
bfd_copy_private_symbol_data PARAMS ((bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym));
#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
(ibfd, isymbol, obfd, osymbol))
-struct _bfd
+struct _bfd
{
- /* The filename the application opened the BFD with. */
- CONST char *filename;
+ /* The filename the application opened the BFD with. */
+ CONST char *filename;
- /* A pointer to the target jump table. */
+ /* A pointer to the target jump table. */
const struct bfd_target *xvec;
- /* To avoid dragging too many header files into every file that
+ /* To avoid dragging too many header files into every file that
includes `<<bfd.h>>', IOSTREAM has been declared as a "char
*", and MTIME as a "long". Their correct types, to which they
are cast when used, are "FILE *" and "time_t". The iostream
@@ -2582,105 +2840,105 @@ struct _bfd
to a bfd_in_memory struct. */
PTR iostream;
- /* Is the file descriptor being cached? That is, can it be closed as
+ /* Is the file descriptor being cached? That is, can it be closed as
needed, and re-opened when accessed later? */
boolean cacheable;
- /* Marks whether there was a default target specified when the
+ /* Marks whether there was a default target specified when the
BFD was opened. This is used to select which matching algorithm
to use to choose the back end. */
boolean target_defaulted;
- /* The caching routines use these to maintain a
+ /* The caching routines use these to maintain a
least-recently-used list of BFDs */
struct _bfd *lru_prev, *lru_next;
- /* When a file is closed by the caching routines, BFD retains
+ /* When a file is closed by the caching routines, BFD retains
state information on the file here: */
- file_ptr where;
+ file_ptr where;
- /* and here: (``once'' means at least once) */
+ /* and here: (``once'' means at least once) */
boolean opened_once;
- /* Set if we have a locally maintained mtime value, rather than
+ /* Set if we have a locally maintained mtime value, rather than
getting it from the file each time: */
boolean mtime_set;
- /* File modified time, if mtime_set is true: */
+ /* File modified time, if mtime_set is true: */
- long mtime;
+ long mtime;
- /* Reserved for an unimplemented file locking extension.*/
+ /* Reserved for an unimplemented file locking extension.*/
int ifd;
- /* The format which belongs to the BFD. (object, core, etc.) */
+ /* The format which belongs to the BFD. (object, core, etc.) */
bfd_format format;
- /* The direction the BFD was opened with*/
+ /* The direction the BFD was opened with*/
enum bfd_direction {no_direction = 0,
read_direction = 1,
write_direction = 2,
both_direction = 3} direction;
- /* Format_specific flags*/
+ /* Format_specific flags*/
- flagword flags;
+ flagword flags;
- /* Currently my_archive is tested before adding origin to
+ /* Currently my_archive is tested before adding origin to
anything. I believe that this can become always an add of
origin, with origin set to 0 for non archive files. */
- file_ptr origin;
+ file_ptr origin;
- /* Remember when output has begun, to stop strange things
+ /* Remember when output has begun, to stop strange things
from happening. */
boolean output_has_begun;
- /* Pointer to linked list of sections*/
+ /* Pointer to linked list of sections*/
struct sec *sections;
- /* The number of sections */
+ /* The number of sections */
unsigned int section_count;
- /* Stuff only useful for object files:
+ /* Stuff only useful for object files:
The start address. */
bfd_vma start_address;
- /* Used for input and output*/
+ /* Used for input and output*/
unsigned int symcount;
- /* Symbol table for output BFD (with symcount entries) */
- struct symbol_cache_entry **outsymbols;
+ /* Symbol table for output BFD (with symcount entries) */
+ struct symbol_cache_entry **outsymbols;
- /* Pointer to structure which contains architecture information*/
+ /* Pointer to structure which contains architecture information*/
const struct bfd_arch_info *arch_info;
- /* Stuff only useful for archives:*/
- PTR arelt_data;
- struct _bfd *my_archive; /* The containing archive BFD. */
- struct _bfd *next; /* The next BFD in the archive. */
- struct _bfd *archive_head; /* The first BFD in the archive. */
- boolean has_armap;
+ /* Stuff only useful for archives:*/
+ PTR arelt_data;
+ struct _bfd *my_archive; /* The containing archive BFD. */
+ struct _bfd *next; /* The next BFD in the archive. */
+ struct _bfd *archive_head; /* The first BFD in the archive. */
+ boolean has_armap;
- /* A chain of BFD structures involved in a link. */
+ /* A chain of BFD structures involved in a link. */
struct _bfd *link_next;
- /* A field used by _bfd_generic_link_add_archive_symbols. This will
+ /* A field used by _bfd_generic_link_add_archive_symbols. This will
be used only for archive elements. */
int archive_pass;
- /* Used by the back end to hold private data. */
+ /* Used by the back end to hold private data. */
- union
+ union
{
struct aout_data_struct *aout_data;
struct artdata *aout_ar_data;
@@ -2712,11 +2970,11 @@ struct _bfd
struct netbsd_core_struct *netbsd_core_data;
PTR any;
} tdata;
-
- /* Used by the application to hold private data*/
+
+ /* Used by the application to hold private data*/
PTR usrdata;
- /* Where all the allocated stuff under this BFD goes. This is a
+ /* Where all the allocated stuff under this BFD goes. This is a
struct objalloc *, but we use PTR to avoid requiring the inclusion of
objalloc.h. */
PTR memory;
@@ -2745,79 +3003,83 @@ typedef enum bfd_error
bfd_error_invalid_error_code
} bfd_error_type;
-bfd_error_type
-bfd_get_error PARAMS ((void));
+bfd_error_type
+bfd_get_error PARAMS ((void));
-void
-bfd_set_error PARAMS ((bfd_error_type error_tag));
+void
+bfd_set_error PARAMS ((bfd_error_type error_tag));
CONST char *
-bfd_errmsg PARAMS ((bfd_error_type error_tag));
+bfd_errmsg PARAMS ((bfd_error_type error_tag));
-void
-bfd_perror PARAMS ((CONST char *message));
+void
+bfd_perror PARAMS ((CONST char *message));
typedef void (*bfd_error_handler_type) PARAMS ((const char *, ...));
-bfd_error_handler_type
-bfd_set_error_handler PARAMS ((bfd_error_handler_type));
+bfd_error_handler_type
+bfd_set_error_handler PARAMS ((bfd_error_handler_type));
-void
-bfd_set_error_program_name PARAMS ((const char *));
+void
+bfd_set_error_program_name PARAMS ((const char *));
-bfd_error_handler_type
-bfd_get_error_handler PARAMS ((void));
+bfd_error_handler_type
+bfd_get_error_handler PARAMS ((void));
-long
+long
bfd_get_reloc_upper_bound PARAMS ((bfd *abfd, asection *sect));
-long
-bfd_canonicalize_reloc
- PARAMS ((bfd *abfd,
+long
+bfd_canonicalize_reloc PARAMS ((bfd *abfd,
asection *sec,
arelent **loc,
asymbol **syms));
-void
-bfd_set_reloc
- PARAMS ((bfd *abfd, asection *sec, arelent **rel, unsigned int count)
+void
+bfd_set_reloc PARAMS ((bfd *abfd, asection *sec, arelent **rel, unsigned int count)
);
-boolean
+boolean
bfd_set_file_flags PARAMS ((bfd *abfd, flagword flags));
-boolean
+int
+bfd_get_arch_size PARAMS ((bfd *abfd));
+
+int
+bfd_get_sign_extend_vma PARAMS ((bfd *abfd));
+
+boolean
bfd_set_start_address PARAMS ((bfd *abfd, bfd_vma vma));
-long
+long
bfd_get_mtime PARAMS ((bfd *abfd));
-long
+long
bfd_get_size PARAMS ((bfd *abfd));
-int
+int
bfd_get_gp_size PARAMS ((bfd *abfd));
-void
+void
bfd_set_gp_size PARAMS ((bfd *abfd, int i));
-bfd_vma
+bfd_vma
bfd_scan_vma PARAMS ((CONST char *string, CONST char **end, int base));
-boolean
+boolean
bfd_copy_private_bfd_data PARAMS ((bfd *ibfd, bfd *obfd));
#define bfd_copy_private_bfd_data(ibfd, obfd) \
BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
(ibfd, obfd))
-boolean
+boolean
bfd_merge_private_bfd_data PARAMS ((bfd *ibfd, bfd *obfd));
#define bfd_merge_private_bfd_data(ibfd, obfd) \
BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
(ibfd, obfd))
-boolean
+boolean
bfd_set_private_flags PARAMS ((bfd *abfd, flagword flags));
#define bfd_set_private_flags(abfd, flags) \
@@ -2829,7 +3091,7 @@ bfd_set_private_flags PARAMS ((bfd *abfd, flagword flags));
#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
BFD_SEND (abfd, _bfd_find_nearest_line, (abfd, sec, syms, off, file, func, line))
- /* Do these three do anything useful at all, for any back end? */
+ /* Do these three do anything useful at all, for any back end? */
#define bfd_debug_info_start(abfd) \
BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
@@ -2887,10 +3149,10 @@ extern bfd_byte *bfd_get_relocated_section_contents
struct bfd_link_order *, bfd_byte *,
boolean, asymbol **));
-symindex
+symindex
bfd_get_next_mapent PARAMS ((bfd *abfd, symindex previous, carsym **sym));
-boolean
+boolean
bfd_set_archive_head PARAMS ((bfd *output, bfd *new_head));
bfd *
@@ -2899,12 +3161,11 @@ bfd_openr_next_archived_file PARAMS ((bfd *archive, bfd *previous));
CONST char *
bfd_core_file_failing_command PARAMS ((bfd *abfd));
-int
+int
bfd_core_file_failing_signal PARAMS ((bfd *abfd));
-boolean
-core_file_matches_executable_p
- PARAMS ((bfd *core_bfd, bfd *exec_bfd));
+boolean
+core_file_matches_executable_p PARAMS ((bfd *core_bfd, bfd *exec_bfd));
#define BFD_SEND(bfd, message, arglist) \
((*((bfd)->xvec->message)) arglist)
@@ -2917,13 +3178,13 @@ core_file_matches_executable_p
(bfd_assert (__FILE__,__LINE__), NULL))
#endif
#define BFD_SEND_FMT(bfd, message, arglist) \
- (((bfd)->xvec->message[(int)((bfd)->format)]) arglist)
+ (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
#ifdef DEBUG_BFD_SEND
#undef BFD_SEND_FMT
#define BFD_SEND_FMT(bfd, message, arglist) \
(((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
- (((bfd)->xvec->message[(int)((bfd)->format)]) arglist) : \
+ (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
(bfd_assert (__FILE__,__LINE__), NULL))
#endif
enum bfd_flavour {
@@ -2931,6 +3192,7 @@ enum bfd_flavour {
bfd_target_aout_flavour,
bfd_target_coff_flavour,
bfd_target_ecoff_flavour,
+ bfd_target_xcoff_flavour,
bfd_target_elf_flavour,
bfd_target_ieee_flavour,
bfd_target_nlm_flavour,
@@ -2948,7 +3210,7 @@ enum bfd_flavour {
enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
- /* Forward declaration. */
+/* Forward declaration. */
typedef struct bfd_link_info _bfd_link_info;
typedef struct bfd_target
@@ -2957,10 +3219,10 @@ typedef struct bfd_target
enum bfd_flavour flavour;
enum bfd_endian byteorder;
enum bfd_endian header_byteorder;
- flagword object_flags;
+ flagword object_flags;
flagword section_flags;
char symbol_leading_char;
- char ar_pad_char;
+ char ar_pad_char;
unsigned short ar_max_namelen;
bfd_vma (*bfd_getx64) PARAMS ((const bfd_byte *));
bfd_signed_vma (*bfd_getx_signed_64) PARAMS ((const bfd_byte *));
@@ -2984,7 +3246,7 @@ typedef struct bfd_target
boolean (*_bfd_set_format[bfd_type_end]) PARAMS ((bfd *));
boolean (*_bfd_write_contents[bfd_type_end]) PARAMS ((bfd *));
- /* Generic entry points. */
+ /* Generic entry points. */
#define BFD_JUMP_TABLE_GENERIC(NAME)\
CAT(NAME,_close_and_cleanup),\
CAT(NAME,_bfd_free_cached_info),\
@@ -2992,20 +3254,20 @@ CAT(NAME,_new_section_hook),\
CAT(NAME,_get_section_contents),\
CAT(NAME,_get_section_contents_in_window)
- /* Called when the BFD is being closed to do any necessary cleanup. */
+ /* Called when the BFD is being closed to do any necessary cleanup. */
boolean (*_close_and_cleanup) PARAMS ((bfd *));
- /* Ask the BFD to free all cached information. */
+ /* Ask the BFD to free all cached information. */
boolean (*_bfd_free_cached_info) PARAMS ((bfd *));
- /* Called when a new section is created. */
+ /* Called when a new section is created. */
boolean (*_new_section_hook) PARAMS ((bfd *, sec_ptr));
- /* Read the contents of a section. */
- boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
+ /* Read the contents of a section. */
+ boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
file_ptr, bfd_size_type));
boolean (*_bfd_get_section_contents_in_window)
PARAMS ((bfd *, sec_ptr, bfd_window *,
file_ptr, bfd_size_type));
- /* Entry points to copy private data. */
+ /* Entry points to copy private data. */
#define BFD_JUMP_TABLE_COPY(NAME)\
CAT(NAME,_bfd_copy_private_bfd_data),\
CAT(NAME,_bfd_merge_private_bfd_data),\
@@ -3013,27 +3275,27 @@ CAT(NAME,_bfd_copy_private_section_data),\
CAT(NAME,_bfd_copy_private_symbol_data),\
CAT(NAME,_bfd_set_private_flags),\
CAT(NAME,_bfd_print_private_bfd_data)\
- /* Called to copy BFD general private data from one object file
+ /* Called to copy BFD general private data from one object file
to another. */
boolean (*_bfd_copy_private_bfd_data) PARAMS ((bfd *, bfd *));
- /* Called to merge BFD general private data from one object file
+ /* Called to merge BFD general private data from one object file
to a common output file when linking. */
boolean (*_bfd_merge_private_bfd_data) PARAMS ((bfd *, bfd *));
- /* Called to copy BFD private section data from one object file
+ /* Called to copy BFD private section data from one object file
to another. */
boolean (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr,
bfd *, sec_ptr));
- /* Called to copy BFD private symbol data from one symbol
+ /* Called to copy BFD private symbol data from one symbol
to another. */
boolean (*_bfd_copy_private_symbol_data) PARAMS ((bfd *, asymbol *,
bfd *, asymbol *));
- /* Called to set private backend flags */
+ /* Called to set private backend flags */
boolean (*_bfd_set_private_flags) PARAMS ((bfd *, flagword));
- /* Called to print private BFD data */
+ /* Called to print private BFD data */
boolean (*_bfd_print_private_bfd_data) PARAMS ((bfd *, PTR));
- /* Core file entry points. */
+ /* Core file entry points. */
#define BFD_JUMP_TABLE_CORE(NAME)\
CAT(NAME,_core_file_failing_command),\
CAT(NAME,_core_file_failing_signal),\
@@ -3042,7 +3304,7 @@ CAT(NAME,_core_file_matches_executable_p)
int (*_core_file_failing_signal) PARAMS ((bfd *));
boolean (*_core_file_matches_executable_p) PARAMS ((bfd *, bfd *));
- /* Archive entry points. */
+ /* Archive entry points. */
#define BFD_JUMP_TABLE_ARCHIVE(NAME)\
CAT(NAME,_slurp_armap),\
CAT(NAME,_slurp_extended_name_table),\
@@ -3059,10 +3321,10 @@ CAT(NAME,_update_armap_timestamp)
boolean (*_bfd_construct_extended_name_table)
PARAMS ((bfd *, char **, bfd_size_type *, const char **));
void (*_bfd_truncate_arname) PARAMS ((bfd *, CONST char *, char *));
- boolean (*write_armap) PARAMS ((bfd *arch,
+ boolean (*write_armap) PARAMS ((bfd *arch,
unsigned int elength,
struct orl *map,
- unsigned int orl_count,
+ unsigned int orl_count,
int stridx));
PTR (*_bfd_read_ar_hdr_fn) PARAMS ((bfd *));
bfd * (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev));
@@ -3071,7 +3333,7 @@ CAT(NAME,_update_armap_timestamp)
int (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *));
boolean (*_bfd_update_armap_timestamp) PARAMS ((bfd *));
- /* Entry points used for symbols. */
+ /* Entry points used for symbols. */
#define BFD_JUMP_TABLE_SYMBOLS(NAME)\
CAT(NAME,_get_symtab_upper_bound),\
CAT(NAME,_get_symtab),\
@@ -3104,7 +3366,7 @@ CAT(NAME,_minisymbol_to_symbol)
struct sec *section, struct symbol_cache_entry **symbols,
bfd_vma offset, CONST char **file, CONST char **func,
unsigned int *line));
- /* Back-door to allow format-aware applications to create debug symbols
+ /* Back-door to allow format-aware applications to create debug symbols
while using BFD for everything else. Currently used by the assembler
when creating COFF files. */
asymbol * (*_bfd_make_debug_symbol) PARAMS ((
@@ -3120,7 +3382,7 @@ CAT(NAME,_minisymbol_to_symbol)
asymbol *(*_minisymbol_to_symbol) PARAMS ((bfd *, boolean, const PTR,
asymbol *));
- /* Routines for relocs. */
+ /* Routines for relocs. */
#define BFD_JUMP_TABLE_RELOCS(NAME)\
CAT(NAME,_get_reloc_upper_bound),\
CAT(NAME,_canonicalize_reloc),\
@@ -3128,12 +3390,12 @@ CAT(NAME,_bfd_reloc_type_lookup)
long (*_get_reloc_upper_bound) PARAMS ((bfd *, sec_ptr));
long (*_bfd_canonicalize_reloc) PARAMS ((bfd *, sec_ptr, arelent **,
struct symbol_cache_entry **));
- /* See documentation on reloc types. */
+ /* See documentation on reloc types. */
reloc_howto_type *
(*reloc_type_lookup) PARAMS ((bfd *abfd,
bfd_reloc_code_real_type code));
- /* Routines used when writing an object file. */
+ /* Routines used when writing an object file. */
#define BFD_JUMP_TABLE_WRITE(NAME)\
CAT(NAME,_set_arch_mach),\
CAT(NAME,_set_section_contents)
@@ -3142,7 +3404,7 @@ CAT(NAME,_set_section_contents)
boolean (*_bfd_set_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
file_ptr, bfd_size_type));
- /* Routines used by the linker. */
+ /* Routines used by the linker. */
#define BFD_JUMP_TABLE_LINK(NAME)\
CAT(NAME,_sizeof_headers),\
CAT(NAME,_bfd_get_relocated_section_contents),\
@@ -3161,48 +3423,48 @@ CAT(NAME,_bfd_gc_sections)
boolean (*_bfd_relax_section) PARAMS ((bfd *, struct sec *,
struct bfd_link_info *, boolean *again));
- /* Create a hash table for the linker. Different backends store
+ /* Create a hash table for the linker. Different backends store
different information in this table. */
struct bfd_link_hash_table *(*_bfd_link_hash_table_create) PARAMS ((bfd *));
- /* Add symbols from this object file into the hash table. */
+ /* Add symbols from this object file into the hash table. */
boolean (*_bfd_link_add_symbols) PARAMS ((bfd *, struct bfd_link_info *));
- /* Do a link based on the link_order structures attached to each
+ /* Do a link based on the link_order structures attached to each
section of the BFD. */
boolean (*_bfd_final_link) PARAMS ((bfd *, struct bfd_link_info *));
- /* Should this section be split up into smaller pieces during linking. */
+ /* Should this section be split up into smaller pieces during linking. */
boolean (*_bfd_link_split_section) PARAMS ((bfd *, struct sec *));
- /* Remove sections that are not referenced from the output. */
+ /* Remove sections that are not referenced from the output. */
boolean (*_bfd_gc_sections) PARAMS ((bfd *, struct bfd_link_info *));
- /* Routines to handle dynamic symbols and relocs. */
+ /* Routines to handle dynamic symbols and relocs. */
#define BFD_JUMP_TABLE_DYNAMIC(NAME)\
CAT(NAME,_get_dynamic_symtab_upper_bound),\
CAT(NAME,_canonicalize_dynamic_symtab),\
CAT(NAME,_get_dynamic_reloc_upper_bound),\
CAT(NAME,_canonicalize_dynamic_reloc)
- /* Get the amount of memory required to hold the dynamic symbols. */
+ /* Get the amount of memory required to hold the dynamic symbols. */
long (*_bfd_get_dynamic_symtab_upper_bound) PARAMS ((bfd *));
- /* Read in the dynamic symbols. */
+ /* Read in the dynamic symbols. */
long (*_bfd_canonicalize_dynamic_symtab)
PARAMS ((bfd *, struct symbol_cache_entry **));
- /* Get the amount of memory required to hold the dynamic relocs. */
+ /* Get the amount of memory required to hold the dynamic relocs. */
long (*_bfd_get_dynamic_reloc_upper_bound) PARAMS ((bfd *));
- /* Read in the dynamic relocs. */
+ /* Read in the dynamic relocs. */
long (*_bfd_canonicalize_dynamic_reloc)
PARAMS ((bfd *, arelent **, struct symbol_cache_entry **));
- /* Opposite endian version of this target. */
+ /* Opposite endian version of this target. */
const struct bfd_target * alternative_target;
-
+
PTR backend_data;
-
+
} bfd_target;
-boolean
-bfd_set_default_target PARAMS ((const char *name));
+boolean
+bfd_set_default_target PARAMS ((const char *name));
const bfd_target *
bfd_find_target PARAMS ((CONST char *target_name, bfd *abfd));
@@ -3210,16 +3472,16 @@ bfd_find_target PARAMS ((CONST char *target_name, bfd *abfd));
const char **
bfd_target_list PARAMS ((void));
-const bfd_target *
-bfd_search_for_target PARAMS ((int (* search_func)(const bfd_target *, void *), void *));
+const bfd_target *
+bfd_search_for_target PARAMS ((int (* search_func) (const bfd_target *, void *), void *));
-boolean
+boolean
bfd_check_format PARAMS ((bfd *abfd, bfd_format format));
-boolean
+boolean
bfd_check_format_matches PARAMS ((bfd *abfd, bfd_format format, char ***matching));
-boolean
+boolean
bfd_set_format PARAMS ((bfd *abfd, bfd_format format));
CONST char *
diff --git a/contrib/binutils/bfd/bfd.c b/contrib/binutils/bfd/bfd.c
index e04172f..2e172c9 100644
--- a/contrib/binutils/bfd/bfd.c
+++ b/contrib/binutils/bfd/bfd.c
@@ -33,10 +33,10 @@ SECTION
CODE_FRAGMENT
.
-.struct _bfd
+.struct _bfd
.{
. {* The filename the application opened the BFD with. *}
-. CONST char *filename;
+. CONST char *filename;
.
. {* A pointer to the target jump table. *}
. const struct bfd_target *xvec;
@@ -69,7 +69,7 @@ CODE_FRAGMENT
. {* When a file is closed by the caching routines, BFD retains
. state information on the file here: *}
.
-. file_ptr where;
+. file_ptr where;
.
. {* and here: (``once'' means at least once) *}
.
@@ -82,7 +82,7 @@ CODE_FRAGMENT
.
. {* File modified time, if mtime_set is true: *}
.
-. long mtime;
+. long mtime;
.
. {* Reserved for an unimplemented file locking extension.*}
.
@@ -101,13 +101,13 @@ CODE_FRAGMENT
.
. {* Format_specific flags*}
.
-. flagword flags;
+. flagword flags;
.
. {* Currently my_archive is tested before adding origin to
. anything. I believe that this can become always an add of
. origin, with origin set to 0 for non archive files. *}
.
-. file_ptr origin;
+. file_ptr origin;
.
. {* Remember when output has begun, to stop strange things
. from happening. *}
@@ -119,7 +119,7 @@ CODE_FRAGMENT
. {* The number of sections *}
. unsigned int section_count;
.
-. {* Stuff only useful for object files:
+. {* Stuff only useful for object files:
. The start address. *}
. bfd_vma start_address;
.
@@ -127,17 +127,17 @@ CODE_FRAGMENT
. unsigned int symcount;
.
. {* Symbol table for output BFD (with symcount entries) *}
-. struct symbol_cache_entry **outsymbols;
+. struct symbol_cache_entry **outsymbols;
.
. {* Pointer to structure which contains architecture information*}
. const struct bfd_arch_info *arch_info;
.
. {* Stuff only useful for archives:*}
-. PTR arelt_data;
+. PTR arelt_data;
. struct _bfd *my_archive; {* The containing archive BFD. *}
. struct _bfd *next; {* The next BFD in the archive. *}
. struct _bfd *archive_head; {* The first BFD in the archive. *}
-. boolean has_armap;
+. boolean has_armap;
.
. {* A chain of BFD structures involved in a link. *}
. struct _bfd *link_next;
@@ -148,7 +148,7 @@ CODE_FRAGMENT
.
. {* Used by the back end to hold private data. *}
.
-. union
+. union
. {
. struct aout_data_struct *aout_data;
. struct artdata *aout_ar_data;
@@ -180,7 +180,7 @@ CODE_FRAGMENT
. struct netbsd_core_struct *netbsd_core_data;
. PTR any;
. } tdata;
-.
+.
. {* Used by the application to hold private data*}
. PTR usrdata;
.
@@ -218,8 +218,6 @@ CODE_FRAGMENT
struct which ultimately gets passed in to the bfd. When it arrives, copy
it to the following struct so that the data will be available in coffcode.h
where it is needed. The typedef's used are defined in bfd.h */
-
-
/*
SECTION
@@ -376,7 +374,7 @@ bfd_perror (message)
CONST char *message;
{
if (bfd_get_error () == bfd_error_system_call)
- perror((char *)message); /* must be system error then... */
+ perror((char *)message); /* must be system error then... */
else {
if (message == NULL || *message == '\0')
fprintf (stderr, "%s\n", bfd_errmsg (bfd_get_error ()));
@@ -510,7 +508,6 @@ bfd_set_error_program_name (name)
_bfd_error_program_name = name;
}
-
/*
FUNCTION
bfd_get_error_handler
@@ -547,7 +544,6 @@ DESCRIPTION
*/
-
long
bfd_get_reloc_upper_bound (abfd, asect)
bfd *abfd;
@@ -584,7 +580,6 @@ DESCRIPTION
The @var{syms} table is also needed for horrible internal magic
reasons.
-
*/
long
bfd_canonicalize_reloc (abfd, asect, location, symbols)
@@ -615,7 +610,7 @@ DESCRIPTION
The argument @var{abfd} is ignored.
*/
-/*ARGSUSED*/
+
void
bfd_set_reloc (ignore_abfd, asect, location, count)
bfd *ignore_abfd ATTRIBUTE_UNUSED;
@@ -706,6 +701,65 @@ _bfd_abort (file, line, fn)
/*
FUNCTION
+ bfd_get_arch_size
+
+SYNOPSIS
+ int bfd_get_arch_size (bfd *abfd);
+
+DESCRIPTION
+ Returns the architecture address size, in bits, as determined
+ by the object file's format. For ELF, this information is
+ included in the header.
+
+RETURNS
+ Returns the arch size in bits if known, <<-1>> otherwise.
+*/
+
+int
+bfd_get_arch_size (abfd)
+ bfd *abfd;
+{
+ if (abfd->xvec->flavour == bfd_target_elf_flavour)
+ return (get_elf_backend_data (abfd))->s->arch_size;
+
+ bfd_set_error (bfd_error_wrong_format);
+ return -1;
+}
+
+/*
+FUNCTION
+ bfd_get_sign_extend_vma
+
+SYNOPSIS
+ int bfd_get_sign_extend_vma (bfd *abfd);
+
+DESCRIPTION
+ Indicates if the target architecture "naturally" sign extends
+ an address. Some architectures implicitly sign extend address
+ values when they are converted to types larger than the size
+ of an address. For instance, bfd_get_start_address() will
+ return an address sign extended to fill a bfd_vma when this is
+ the case.
+
+RETURNS
+ Returns <<1>> if the target architecture is known to sign
+ extend addresses, <<0>> if the target architecture is known to
+ not sign extend addresses, and <<-1>> otherwise.
+*/
+
+int
+bfd_get_sign_extend_vma (abfd)
+ bfd *abfd;
+{
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
+ return (get_elf_backend_data (abfd)->sign_extend_vma);
+
+ bfd_set_error (bfd_error_wrong_format);
+ return -1;
+}
+
+/*
+FUNCTION
bfd_set_start_address
SYNOPSIS
@@ -727,7 +781,6 @@ bfd_vma vma;
return true;
}
-
/*
FUNCTION
bfd_get_mtime
@@ -779,7 +832,7 @@ DESCRIPTION
Instead, we want to ask questions like "is this NNN byte sized
object I'm about to try read from file offset YYY reasonable?"
As as example of where we might do this, some object formats
- use string tables for which the first <<sizeof(long)>> bytes of the
+ use string tables for which the first <<sizeof (long)>> bytes of the
table contain the size of the table itself, including the size bytes.
If an application tries to read what it thinks is one of these
string tables, without some way to validate the size, and for
@@ -926,7 +979,7 @@ bfd_scan_vma (string, end, base)
int digit;
/* Let the host do it if possible. */
- if (sizeof(bfd_vma) <= sizeof(unsigned long))
+ if (sizeof (bfd_vma) <= sizeof (unsigned long))
return (bfd_vma) strtoul (string, (char **) end, base);
/* A negative base makes no sense, and we only need to go as high as hex. */
@@ -950,7 +1003,7 @@ bfd_scan_vma (string, end, base)
(string[0] == '0') && ((string[1] == 'x') || (string[1] == 'X')))
string += 2;
/* XXX should we also skip over "0b" or "0B" if base is 2? */
-
+
/* Speed could be improved with a table like hex_value[] in gas. */
#define HEX_VALUE(c) \
(isxdigit ((unsigned char) c) \
@@ -978,7 +1031,7 @@ SYNOPSIS
boolean bfd_copy_private_bfd_data(bfd *ibfd, bfd *obfd);
DESCRIPTION
- Copy private BFD information from the BFD @var{ibfd} to the
+ Copy private BFD information from the BFD @var{ibfd} to the
the BFD @var{obfd}. Return <<true>> on success, <<false>> on error.
Possible error returns are:
@@ -999,7 +1052,7 @@ SYNOPSIS
boolean bfd_merge_private_bfd_data(bfd *ibfd, bfd *obfd);
DESCRIPTION
- Merge private BFD information from the BFD @var{ibfd} to the
+ Merge private BFD information from the BFD @var{ibfd} to the
the output file BFD @var{obfd} when linking. Return <<true>>
on success, <<false>> on error. Possible error returns are:
diff --git a/contrib/binutils/bfd/binary.c b/contrib/binutils/bfd/binary.c
index c2980b0..771e431 100644
--- a/contrib/binutils/bfd/binary.c
+++ b/contrib/binutils/bfd/binary.c
@@ -255,6 +255,9 @@ binary_set_section_contents (abfd, sec, data, offset, size)
file_ptr offset;
bfd_size_type size;
{
+ if (size == 0)
+ return true;
+
if (! abfd->output_has_begun)
{
boolean found_low;
@@ -270,6 +273,7 @@ binary_set_section_contents (abfd, sec, data, offset, size)
if (((s->flags
& (SEC_HAS_CONTENTS | SEC_LOAD | SEC_ALLOC | SEC_NEVER_LOAD))
== (SEC_HAS_CONTENTS | SEC_LOAD | SEC_ALLOC))
+ && (s->_raw_size > 0)
&& (! found_low || s->lma < low))
{
low = s->lma;
@@ -281,17 +285,18 @@ binary_set_section_contents (abfd, sec, data, offset, size)
s->filepos = s->lma - low;
/* Skip following warning check for sections that will not
- occupy file space. */
+ occupy file space. */
if ((s->flags
& (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_NEVER_LOAD))
- != (SEC_HAS_CONTENTS | SEC_ALLOC))
+ != (SEC_HAS_CONTENTS | SEC_ALLOC)
+ || (s->_raw_size == 0))
continue;
/* If attempting to generate a binary file from a bfd with
LMA's all over the place, huge (sparse?) binary files may
result. This condition attempts to detect this situation
and print a warning. Better heuristics would be nice to
- have. */
+ have. */
if (s->filepos < 0)
(*_bfd_error_handler)
@@ -383,6 +388,6 @@ const bfd_target binary_vec =
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
NULL
};
diff --git a/contrib/binutils/bfd/cache.c b/contrib/binutils/bfd/cache.c
index 91b6c61..063373c 100644
--- a/contrib/binutils/bfd/cache.c
+++ b/contrib/binutils/bfd/cache.c
@@ -1,5 +1,5 @@
/* BFD library -- caching of file descriptors.
- Copyright 1990, 91, 92, 93, 94, 95, 1996, 2000
+ Copyright 1990, 91, 92, 93, 94, 95, 1996, 2000, 2001
Free Software Foundation, Inc.
Hacked by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
@@ -32,7 +32,7 @@ SECTION
<<bfd_cache_lookup>>, which runs around and makes sure that
the required BFD is open. If not, then it chooses a file to
close, closes it and opens the one wanted, returning its file
- handle.
+ handle.
*/
@@ -79,19 +79,18 @@ bfd *bfd_last_cache;
/*
INTERNAL_FUNCTION
bfd_cache_lookup
-
+
DESCRIPTION
Check to see if the required BFD is the same as the last one
looked up. If so, then it can use the stream in the BFD with
impunity, since it can't have changed since the last lookup;
otherwise, it has to perform the complicated lookup function.
-
+
.#define bfd_cache_lookup(x) \
. ((x)==bfd_last_cache? \
- . (FILE*)(bfd_last_cache->iostream): \
+ . (FILE*) (bfd_last_cache->iostream): \
. bfd_cache_lookup_worker(x))
-
-
+
*/
/* Insert a BFD into the cache. */
@@ -262,7 +261,7 @@ FILE *
bfd_open_file (abfd)
bfd *abfd;
{
- abfd->cacheable = true; /* Allow it to be closed later. */
+ abfd->cacheable = true; /* Allow it to be closed later. */
if (open_files >= BFD_CACHE_MAX_OPEN)
{
@@ -312,7 +311,7 @@ bfd_open_file (abfd)
if (stat (abfd->filename, &s) == 0 && s.st_size != 0)
unlink (abfd->filename);
#endif
- abfd->iostream = (PTR) fopen (abfd->filename, FOPEN_WB);
+ abfd->iostream = (PTR) fopen (abfd->filename, FOPEN_WUB);
abfd->opened_once = true;
}
break;
@@ -339,7 +338,7 @@ DESCRIPTION
quick answer. Find a file descriptor for @var{abfd}. If
necessary, it open it. If there are already more than
<<BFD_CACHE_MAX_OPEN>> files open, it tries to close one first, to
- avoid running out of file descriptors.
+ avoid running out of file descriptors.
*/
FILE *
@@ -349,7 +348,7 @@ bfd_cache_lookup_worker (abfd)
if ((abfd->flags & BFD_IN_MEMORY) != 0)
abort ();
- if (abfd->my_archive)
+ if (abfd->my_archive)
abfd = abfd->my_archive;
if (abfd->iostream != NULL)
diff --git a/contrib/binutils/bfd/coff-alpha.c b/contrib/binutils/bfd/coff-alpha.c
index 6bbc279..41e4710 100644
--- a/contrib/binutils/bfd/coff-alpha.c
+++ b/contrib/binutils/bfd/coff-alpha.c
@@ -924,7 +924,7 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
does not cause anything to happen, itself. */
rel->address += input_section->output_offset;
break;
-
+
case ALPHA_R_GPDISP:
/* This marks the ldah of an ldah/lda pair which loads the
gp register with the difference of the gp value and the
@@ -980,7 +980,7 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
rel->address += input_section->output_offset;
}
break;
-
+
case ALPHA_R_OP_PUSH:
/* Push a value on the reloc evaluation stack. */
{
@@ -1106,7 +1106,7 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
stack[tos - 1] >>= relocation;
}
break;
-
+
case ALPHA_R_GPVALUE:
/* I really don't know if this does the right thing. */
gp = rel->addend;
@@ -1126,7 +1126,7 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
os->reloc_count++;
}
- if (r != bfd_reloc_ok)
+ if (r != bfd_reloc_ok)
{
switch (r)
{
@@ -1136,7 +1136,7 @@ alpha_ecoff_get_relocated_section_contents (abfd, link_info, link_order,
input_bfd, input_section, rel->address, true)))
goto error_return;
break;
- case bfd_reloc_dangerous:
+ case bfd_reloc_dangerous:
if (! ((*link_info->callbacks->reloc_dangerous)
(link_info, err, input_bfd, input_section,
rel->address)))
@@ -1332,7 +1332,7 @@ alpha_convert_external_reloc (output_bfd, info, input_bfd, ext_rel, h)
r_symndx = RELOC_SECTION_XDATA;
break;
}
-
+
if (r_symndx == -1)
abort ();
@@ -1437,7 +1437,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
pointer. To support large programs, we need to allow multiple
global pointers. This works as long as each input .lita section
is <64KB big. This implies that when producing relocatable
- output, the .lita section is limited to 64KB. . */
+ output, the .lita section is limited to 64KB. . */
lita_sec = symndx_to_section[RELOC_SECTION_LITA];
gp = _bfd_get_gp_value (output_bfd);
@@ -1619,7 +1619,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
/* See ALPHA_R_LITERAL above for the uses of this reloc. It
does not cause anything to happen, itself. */
break;
-
+
case ALPHA_R_GPDISP:
/* This marks the ldah of an ldah/lda pair which loads the
gp register with the difference of the gp value and the
@@ -1679,7 +1679,7 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
gp_usedp = true;
}
break;
-
+
case ALPHA_R_OP_PUSH:
case ALPHA_R_OP_PSUB:
case ALPHA_R_OP_PRSHIFT:
@@ -2008,7 +2008,6 @@ alpha_relocate_section (output_bfd, info, input_bfd, input_section,
/* Do final adjustments to the filehdr and the aouthdr. This routine
sets the dynamic bits in the file header. */
-/*ARGSUSED*/
static boolean
alpha_adjust_headers (abfd, fhdr, ahdr)
bfd *abfd;
@@ -2136,7 +2135,7 @@ alpha_ecoff_get_elt_at_filepos (archive, filepos)
left = size;
- /* I don't know what the next eight bytes are for. */
+ /* I don't know what the next eight bytes are for. */
if (bfd_read (ab, 1, 8, nbfd) != 8)
goto error_return;
@@ -2201,7 +2200,7 @@ alpha_ecoff_get_elt_at_filepos (archive, filepos)
error_return:
if (nbfd != NULL)
bfd_close (nbfd);
- return NULL;
+ return NULL;
}
/* Open the next archived file. */
@@ -2229,7 +2228,7 @@ alpha_ecoff_openr_next_archived_file (archive, last_file)
/* Pad to an even boundary...
Note that last_file->origin can be odd in the case of
- BSD-4.4-style element with a long odd size. */
+ BSD-4.4-style element with a long odd size. */
filestart = last_file->origin + size;
filestart += filestart % 2;
}
@@ -2266,7 +2265,7 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data =
(unsigned (*) PARAMS ((bfd *,PTR,PTR))) bfd_void, /* reloc_out */
alpha_ecoff_swap_filehdr_out, alpha_ecoff_swap_aouthdr_out,
alpha_ecoff_swap_scnhdr_out,
- FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, true, false, 4,
+ FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, true, false, 4, false, 2,
alpha_ecoff_swap_filehdr_in, alpha_ecoff_swap_aouthdr_in,
alpha_ecoff_swap_scnhdr_in, NULL,
alpha_ecoff_bad_format_hook, _bfd_ecoff_set_arch_mach_hook,
@@ -2400,6 +2399,6 @@ const bfd_target ecoffalpha_little_vec =
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
(PTR) &alpha_ecoff_backend_data
};
diff --git a/contrib/binutils/bfd/coff-arm.c b/contrib/binutils/bfd/coff-arm.c
index 2b89b84..7ec7b8e 100644
--- a/contrib/binutils/bfd/coff-arm.c
+++ b/contrib/binutils/bfd/coff-arm.c
@@ -51,13 +51,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef NUM_ELEM
#define NUM_ELEM(a) ((sizeof (a)) / sizeof ((a)[0]))
#endif
-
+
typedef enum {bunknown, b9, b12, b23} thumb_pcrel_branchtype;
/* some typedefs for holding instructions */
typedef unsigned long int insn32;
typedef unsigned short int insn16;
-
/* Forward declarations for stupid compilers. */
static boolean coff_arm_relocate_section
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
@@ -77,7 +76,7 @@ static bfd_reloc_status_type coff_arm_reloc
static boolean coff_arm_adjust_symndx
PARAMS ((bfd *, struct bfd_link_info *, bfd *,
asection *, struct internal_reloc *, boolean *));
-static reloc_howto_type * coff_arm_rtype_to_howto
+static reloc_howto_type * coff_arm_rtype_to_howto
PARAMS ((bfd *, asection *, struct internal_reloc *,
struct coff_link_hash_entry *, struct internal_syment *, bfd_vma *));
static bfd_reloc_status_type coff_thumb_pcrel_common
@@ -119,14 +118,14 @@ static boolean coff_arm_final_link_postscript
Given a function name, and its type, the stub can be found. The
name can be changed. The only requirement is the %s be present.
*/
-
+
#define THUMB2ARM_GLUE_SECTION_NAME ".glue_7t"
#define THUMB2ARM_GLUE_ENTRY_NAME "__%s_from_thumb"
#define ARM2THUMB_GLUE_SECTION_NAME ".glue_7"
#define ARM2THUMB_GLUE_ENTRY_NAME "__%s_from_arm"
-/* Used by the assembler. */
+/* Used by the assembler. */
static bfd_reloc_status_type
coff_arm_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
error_message)
@@ -232,14 +231,14 @@ coff_arm_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
#define ARM_SECREL 15
#endif
-static reloc_howto_type aoutarm_std_reloc_howto[] =
+static reloc_howto_type aoutarm_std_reloc_howto[] =
{
/* type rs size bsz pcrel bitpos ovrf sf name part_inpl readmask setmask pcdone */
#ifdef ARM_WINCE
EMPTY_HOWTO (-1),
- HOWTO (ARM_32,
+ HOWTO (ARM_32,
0,
- 2,
+ 2,
32,
false,
0,
@@ -250,9 +249,9 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
0xffffffff,
0xffffffff,
PCRELOFFSET),
- HOWTO (ARM_RVA32,
+ HOWTO (ARM_RVA32,
0,
- 2,
+ 2,
32,
false,
0,
@@ -274,7 +273,7 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
"ARM_26",
false,
0x00ffffff,
- 0x00ffffff,
+ 0x00ffffff,
PCRELOFFSET),
HOWTO (ARM_THUMB12,
1,
@@ -287,16 +286,16 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
"ARM_THUMB12",
false,
0x000007ff,
- 0x000007ff,
+ 0x000007ff,
PCRELOFFSET),
- HOWTO (ARM_26D,
- 2,
+ HOWTO (ARM_26D,
+ 2,
2,
24,
false,
0,
complain_overflow_dont,
- aoutarm_fix_pcrel_26_done,
+ aoutarm_fix_pcrel_26_done,
"ARM_26D",
true,
0x00ffffff,
@@ -310,22 +309,22 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
EMPTY_HOWTO (-1),
EMPTY_HOWTO (-1),
EMPTY_HOWTO (-1),
- HOWTO (ARM_SECTION,
- 0,
- 1,
- 16,
+ HOWTO (ARM_SECTION,
+ 0,
+ 1,
+ 16,
false,
0,
complain_overflow_bitfield,
coff_arm_reloc,
- "ARM_16",
+ "ARM_16",
true,
0x0000ffff,
- 0x0000ffff,
+ 0x0000ffff,
PCRELOFFSET),
- HOWTO (ARM_SECREL,
+ HOWTO (ARM_SECREL,
0,
- 2,
+ 2,
32,
false,
0,
@@ -350,22 +349,22 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
0x000000ff, /* src_mask */
0x000000ff, /* dst_mask */
PCRELOFFSET /* pcrel_offset */),
- HOWTO(ARM_16,
- 0,
- 1,
- 16,
+ HOWTO(ARM_16,
+ 0,
+ 1,
+ 16,
false,
0,
complain_overflow_bitfield,
coff_arm_reloc,
- "ARM_16",
+ "ARM_16",
true,
0x0000ffff,
- 0x0000ffff,
+ 0x0000ffff,
PCRELOFFSET),
- HOWTO(ARM_32,
+ HOWTO(ARM_32,
0,
- 2,
+ 2,
32,
false,
0,
@@ -387,28 +386,28 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
"ARM_26",
false,
0x00ffffff,
- 0x00ffffff,
+ 0x00ffffff,
PCRELOFFSET),
- HOWTO(ARM_DISP8,
+ HOWTO(ARM_DISP8,
0,
0,
- 8,
+ 8,
true,
0,
- complain_overflow_signed,
+ complain_overflow_signed,
coff_arm_reloc,
- "ARM_DISP8",
+ "ARM_DISP8",
true,
0x000000ff,
0x000000ff,
true),
- HOWTO( ARM_DISP16,
+ HOWTO( ARM_DISP16,
0,
1,
16,
true,
0,
- complain_overflow_signed,
+ complain_overflow_signed,
coff_arm_reloc,
"ARM_DISP16",
true,
@@ -421,21 +420,21 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
32,
true,
0,
- complain_overflow_signed,
+ complain_overflow_signed,
coff_arm_reloc,
"ARM_DISP32",
true,
0xffffffff,
0xffffffff,
true),
- HOWTO( ARM_26D,
- 2,
+ HOWTO( ARM_26D,
+ 2,
2,
24,
false,
0,
complain_overflow_dont,
- aoutarm_fix_pcrel_26_done,
+ aoutarm_fix_pcrel_26_done,
"ARM_26D",
true,
0x00ffffff,
@@ -448,16 +447,16 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
-1,
16,
false,
- 0,
+ 0,
complain_overflow_bitfield,
coff_arm_reloc,
"ARM_NEG16",
- true,
+ true,
+ 0x0000ffff,
0x0000ffff,
- 0x0000ffff,
false),
- HOWTO( ARM_NEG32,
- 0,
+ HOWTO( ARM_NEG32,
+ 0,
-2,
32,
false,
@@ -469,9 +468,9 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
0xffffffff,
0xffffffff,
false),
- HOWTO( ARM_RVA32,
+ HOWTO( ARM_RVA32,
0,
- 2,
+ 2,
32,
false,
0,
@@ -493,7 +492,7 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
"ARM_THUMB9",
false,
0x000000ff,
- 0x000000ff,
+ 0x000000ff,
PCRELOFFSET),
HOWTO( ARM_THUMB12,
1,
@@ -506,7 +505,7 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
"ARM_THUMB12",
false,
0x000007ff,
- 0x000007ff,
+ 0x000007ff,
PCRELOFFSET),
HOWTO( ARM_THUMB23,
1,
@@ -519,7 +518,7 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
"ARM_THUMB23",
false,
0x07ff07ff,
- 0x07ff07ff,
+ 0x07ff07ff,
PCRELOFFSET)
#endif /* not ARM_WINCE */
};
@@ -528,7 +527,7 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
#ifdef COFF_WITH_PE
/* Return true if this relocation should
- appear in the output .reloc section. */
+ appear in the output .reloc section. */
static boolean
in_reloc_p (abfd, howto)
@@ -536,7 +535,7 @@ in_reloc_p (abfd, howto)
reloc_howto_type * howto;
{
return !howto->pc_relative && howto->type != ARM_RVA32;
-}
+}
#endif
#define RTYPE2HOWTO(cache_ptr, dst) \
@@ -560,7 +559,7 @@ coff_arm_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
if (rel->r_type >= NUM_RELOCS)
return NULL;
-
+
howto = aoutarm_std_reloc_howto + rel->r_type;
if (rel->r_type == ARM_RVA32)
@@ -568,7 +567,7 @@ coff_arm_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
return howto;
}
-/* Used by the assembler. */
+/* Used by the assembler. */
static bfd_reloc_status_type
aoutarm_fix_pcrel_26_done (abfd, reloc_entry, symbol, data, input_section,
@@ -585,7 +584,7 @@ aoutarm_fix_pcrel_26_done (abfd, reloc_entry, symbol, data, input_section,
return bfd_reloc_ok;
}
-/* Used by the assembler. */
+/* Used by the assembler. */
static bfd_reloc_status_type
aoutarm_fix_pcrel_26 (abfd, reloc_entry, symbol, data, input_section,
@@ -602,7 +601,7 @@ aoutarm_fix_pcrel_26 (abfd, reloc_entry, symbol, data, input_section,
bfd_size_type addr = reloc_entry->address;
long target = bfd_get_32 (abfd, (bfd_byte *) data + addr);
bfd_reloc_status_type flag = bfd_reloc_ok;
-
+
/* If this is an undefined symbol, return error */
if (symbol->section == &bfd_und_section
&& (symbol->flags & BSF_WEAK) == 0)
@@ -623,7 +622,7 @@ aoutarm_fix_pcrel_26 (abfd, reloc_entry, symbol, data, input_section,
relocation -= input_section->output_section->vma;
relocation -= input_section->output_offset;
relocation -= addr;
-
+
if (relocation & 3)
return bfd_reloc_overflow;
@@ -693,7 +692,7 @@ coff_thumb_pcrel_common (abfd, reloc_entry, symbol, data, input_section,
default:
abort ();
}
-
+
/* If this is an undefined symbol, return error */
if (symbol->section == &bfd_und_section
&& (symbol->flags & BSF_WEAK) == 0)
@@ -768,7 +767,7 @@ coff_thumb_pcrel_common (abfd, reloc_entry, symbol, data, input_section,
/* Now the ARM magic... Change the reloc type so that it is marked as done.
Strictly this is only necessary if we are doing a partial relocation. */
reloc_entry->howto = & aoutarm_std_reloc_howto [ARM_26D];
-
+
/* TODO: We should possibly have DONE entries for the THUMB PCREL relocations */
return flag;
}
@@ -818,14 +817,13 @@ coff_thumb_pcrel_9 (abfd, reloc_entry, symbol, data, input_section,
input_section, output_bfd, error_message, b9);
}
-
static CONST struct reloc_howto_struct *
coff_arm_reloc_type_lookup (abfd, code)
bfd * abfd;
bfd_reloc_code_real_type code;
{
#define ASTD(i,j) case i: return aoutarm_std_reloc_howto + j
-
+
if (code == BFD_RELOC_CTOR)
switch (bfd_get_arch_info (abfd)->bits_per_address)
{
@@ -847,6 +845,7 @@ coff_arm_reloc_type_lookup (abfd, code)
ASTD (BFD_RELOC_16, ARM_16);
ASTD (BFD_RELOC_32, ARM_32);
ASTD (BFD_RELOC_ARM_PCREL_BRANCH, ARM_26);
+ ASTD (BFD_RELOC_ARM_PCREL_BLX, ARM_26);
ASTD (BFD_RELOC_8_PCREL, ARM_DISP8);
ASTD (BFD_RELOC_16_PCREL, ARM_DISP16);
ASTD (BFD_RELOC_32_PCREL, ARM_DISP32);
@@ -854,7 +853,7 @@ coff_arm_reloc_type_lookup (abfd, code)
ASTD (BFD_RELOC_THUMB_PCREL_BRANCH9, ARM_THUMB9);
ASTD (BFD_RELOC_THUMB_PCREL_BRANCH12, ARM_THUMB12);
ASTD (BFD_RELOC_THUMB_PCREL_BRANCH23, ARM_THUMB23);
-#endif
+#endif
default: return (CONST struct reloc_howto_struct *) 0;
}
}
@@ -874,17 +873,17 @@ struct coff_arm_link_hash_table
{
/* The original coff_link_hash_table structure. MUST be first field. */
struct coff_link_hash_table root;
-
+
/* The size in bytes of the section containg the Thumb-to-ARM glue. */
long int thumb_glue_size;
-
+
/* The size in bytes of the section containg the ARM-to-Thumb glue. */
long int arm_glue_size;
/* An arbitary input BFD chosen to hold the glue sections. */
bfd * bfd_of_glue_owner;
- /* Support interworking with old, non-interworking aware ARM code. */
+ /* Support interworking with old, non-interworking aware ARM code. */
int support_old_code;
};
@@ -939,16 +938,16 @@ arm_emit_base_file_entry (info, output_bfd, input_section, reloc_offset)
/* The thumb form of a long branch is a bit finicky, because the offset
encoding is split over two fields, each in it's own instruction. They
- can occur in any order. So given a thumb form of long branch, and an
+ can occur in any order. So given a thumb form of long branch, and an
offset, insert the offset into the thumb branch and return finished
- instruction.
+ instruction.
- It takes two thumb instructions to encode the target address. Each has
+ It takes two thumb instructions to encode the target address. Each has
11 bits to invest. The upper 11 bits are stored in one (identifed by
- H-0.. see below), the lower 11 bits are stored in the other (identified
- by H-1).
+ H-0.. see below), the lower 11 bits are stored in the other (identified
+ by H-1).
- Combine together and shifted left by 1 (it's a half word address) and
+ Combine together and shifted left by 1 (it's a half word address) and
there you have it.
Op: 1111 = F,
@@ -956,7 +955,7 @@ arm_emit_base_file_entry (info, output_bfd, input_section, reloc_offset)
Op: 1111 = F,
H-1, lower address-0 = 800
- They can be ordered either way, but the arm tools I've seen always put
+ They can be ordered either way, but the arm tools I've seen always put
the lower one first. It probably doesn't matter. krk@cygnus.com
XXX: Actually the order does matter. The second instruction (H-1)
@@ -976,7 +975,6 @@ insert_thumb_branch (br_insn, rel_off)
unsigned int low_bits;
unsigned int high_bits;
-
BFD_ASSERT((rel_off & 1) != 1);
rel_off >>= 1; /* half word aligned address */
@@ -988,13 +986,12 @@ insert_thumb_branch (br_insn, rel_off)
else if ((br_insn & HI_LOW_ORDER) == HI_LOW_ORDER)
br_insn = HI_LOW_ORDER | (high_bits << 16) | low_bits;
else
- abort(); /* error - not a valid branch instruction form */
+ abort (); /* error - not a valid branch instruction form */
/* FIXME: abort is probably not the right call. krk@cygnus.com */
return br_insn;
}
-
static struct coff_link_hash_entry *
find_thumb_glue (info, name, input_bfd)
@@ -1011,15 +1008,15 @@ find_thumb_glue (info, name, input_bfd)
BFD_ASSERT (tmp_name);
sprintf (tmp_name, THUMB2ARM_GLUE_ENTRY_NAME, name);
-
+
myh = coff_link_hash_lookup
(coff_hash_table (info), tmp_name, false, false, true);
-
+
if (myh == NULL)
/* xgettext:c-format */
_bfd_error_handler (_("%s: unable to find THUMB glue '%s' for `%s'"),
bfd_get_filename (input_bfd), tmp_name, name);
-
+
free (tmp_name);
return myh;
@@ -1040,7 +1037,7 @@ find_arm_glue (info, name, input_bfd)
BFD_ASSERT (tmp_name);
sprintf (tmp_name, ARM2THUMB_GLUE_ENTRY_NAME, name);
-
+
myh = coff_link_hash_lookup
(coff_hash_table (info), tmp_name, false, false, true);
@@ -1048,7 +1045,7 @@ find_arm_glue (info, name, input_bfd)
/* xgettext:c-format */
_bfd_error_handler (_("%s: unable to find ARM glue '%s' for `%s'"),
bfd_get_filename (input_bfd), tmp_name, name);
-
+
free (tmp_name);
return myh;
@@ -1085,7 +1082,7 @@ static const insn32 a2t3_func_addr_insn = 0x00000001;
ldmia r13! {r6, lr}
bx lr
__func_addr:
- .word func
+ .word func
*/
#define THUMB2ARM_GLUE_SIZE (globals->support_old_code ? 20 : 8)
@@ -1128,10 +1125,10 @@ static const insn32 t2a6_bx_insn = 0xe12fff1e;
instruction we should generate a trampoline stub (needed to
address the complete 32bit address space). */
-/* The standard COFF backend linker does not cope with the special
+/* The standard COFF backend linker does not cope with the special
Thumb BRANCH23 relocation. The alternative would be to split the
BRANCH23 into seperate HI23 and LO23 relocations. However, it is a
- bit simpler simply providing our own relocation driver. */
+ bit simpler simply providing our own relocation driver. */
/* The reloc processing routine for the ARM/Thumb COFF linker. NOTE:
This code is a very slightly modified copy of
@@ -1179,7 +1176,7 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
sym = NULL;
}
else
- {
+ {
h = obj_coff_sym_hashes (input_bfd)[symndx];
sym = syms + symndx;
}
@@ -1194,7 +1191,6 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
else
addend = 0;
-
howto = coff_rtype_to_howto (input_bfd, input_section, rel, h,
sym, &addend);
if (howto == NULL)
@@ -1212,7 +1208,7 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
|| h->root.type == bfd_link_hash_defweak)
&& h->root.u.def.section->output_section == input_section->output_section)
{
- static reloc_howto_type fake_arm26_reloc =
+ static reloc_howto_type fake_arm26_reloc =
HOWTO (ARM_26,
2,
2,
@@ -1224,7 +1220,7 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
"ARM_26",
false,
0x00ffffff,
- 0x00ffffff,
+ 0x00ffffff,
false);
addend -= rel->r_vaddr - input_section->vma;
@@ -1233,11 +1229,11 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
#ifdef ARM_WINCE
/* MS ARM-CE makes the reloc relative to the opcode's pc, not
- the next opcode's pc, so is off by one. */
+ the next opcode's pc, so is off by one. */
if (howto->pc_relative && !info->relocateable)
addend -= 8;
#endif
-
+
/* If we are doing a relocateable link, then we can just ignore
a PC relative reloc that is pcrel_offset. It will already
have the correct value. If this is not a relocateable link,
@@ -1246,8 +1242,15 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
{
if (info->relocateable)
continue;
+#if 0 /* We must not ignore the symbol value. If the symbol is
+ within the same section, the relocation should have already
+ been fixed, but if it is not, we'll be handed a reloc into
+ the beginning of the symbol's section, so we must not cancel
+ out the symbol's value, otherwise we'll be adding it in
+ twice. */
if (sym != NULL && sym->n_scnum != 0)
addend += sym->n_value;
+#endif
}
val = 0;
@@ -1277,14 +1280,14 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
relocatable output file, since we may as well leave the
stub generation to the final linker pass. If we fail to
verify that the name is defined, we'll try to build stubs
- for an undefined name... */
+ for an undefined name... */
if (! info->relocateable
&& ( h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak))
{
asection * h_sec = h->root.u.def.section;
const char * name = h->root.root.string;
-
+
/* h locates the symbol referenced in the reloc. */
h_val = (h->root.u.def.value
+ h_sec->output_section->vma
@@ -1300,9 +1303,9 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
long int my_offset;
asection * s;
long int ret_offset;
- struct coff_link_hash_entry * myh;
+ struct coff_link_hash_entry * myh;
struct coff_arm_link_hash_table * globals;
-
+
myh = find_arm_glue (info, name, input_bfd);
if (myh == NULL)
return false;
@@ -1311,10 +1314,10 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
BFD_ASSERT (globals != NULL);
BFD_ASSERT (globals->bfd_of_glue_owner != NULL);
-
+
my_offset = myh->root.u.def.value;
-
- s = bfd_get_section_by_name (globals->bfd_of_glue_owner,
+
+ s = bfd_get_section_by_name (globals->bfd_of_glue_owner,
ARM2THUMB_GLUE_SECTION_NAME);
BFD_ASSERT (s != NULL);
BFD_ASSERT (s->contents != NULL);
@@ -1341,16 +1344,16 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
bfd_put_32 (output_bfd, a2t1_ldr_insn,
s->contents + my_offset);
-
+
bfd_put_32 (output_bfd, a2t2_bx_r12_insn,
s->contents + my_offset + 4);
-
+
/* It's a thumb address. Add the low order bit. */
bfd_put_32 (output_bfd, h_val | a2t3_func_addr_insn,
s->contents + my_offset + 8);
if (info->base_file)
- arm_emit_base_file_entry (info, output_bfd, s,
+ arm_emit_base_file_entry (info, output_bfd, s,
my_offset + 8);
}
@@ -1359,32 +1362,32 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
tmp = bfd_get_32 (input_bfd, contents + rel->r_vaddr
- input_section->vma);
-
+
tmp = tmp & 0xFF000000;
- /* Somehow these are both 4 too far, so subtract 8. */
+ /* Somehow these are both 4 too far, so subtract 8. */
ret_offset =
s->output_offset
- + my_offset
+ + my_offset
+ s->output_section->vma
- (input_section->output_offset
- + input_section->output_section->vma
+ + input_section->output_section->vma
+ rel->r_vaddr)
- 8;
tmp = tmp | ((ret_offset >> 2) & 0x00FFFFFF);
-
+
bfd_put_32 (output_bfd, tmp, contents + rel->r_vaddr
- input_section->vma);
done = 1;
}
}
-
+
#ifndef ARM_WINCE
/* Note: We used to check for ARM_THUMB9 and ARM_THUMB12 */
else if (howto->type == ARM_THUMB23)
{
- if ( h->class == C_EXT
+ if ( h->class == C_EXT
|| h->class == C_STAT
|| h->class == C_LABEL)
{
@@ -1401,19 +1404,19 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
return false;
globals = coff_arm_hash_table (info);
-
+
BFD_ASSERT (globals != NULL);
BFD_ASSERT (globals->bfd_of_glue_owner != NULL);
-
+
my_offset = myh->root.u.def.value;
-
- s = bfd_get_section_by_name (globals->bfd_of_glue_owner,
+
+ s = bfd_get_section_by_name (globals->bfd_of_glue_owner,
THUMB2ARM_GLUE_SECTION_NAME);
-
+
BFD_ASSERT (s != NULL);
BFD_ASSERT (s->contents != NULL);
BFD_ASSERT (s->output_section != NULL);
-
+
if ((my_offset & 0x01) == 0x01)
{
if (h_sec->owner != NULL
@@ -1432,7 +1435,7 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
_bfd_error_handler
(_(" consider relinking with --support-old-code enabled"));
}
-
+
-- my_offset;
myh->root.u.def.value = my_offset;
@@ -1440,7 +1443,7 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
{
bfd_put_16 (output_bfd, t2a1_push_insn,
s->contents + my_offset);
-
+
bfd_put_16 (output_bfd, t2a2_ldr_insn,
s->contents + my_offset + 2);
@@ -1449,13 +1452,13 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
bfd_put_16 (output_bfd, t2a4_bx_insn,
s->contents + my_offset + 6);
-
+
bfd_put_32 (output_bfd, t2a5_pop_insn,
s->contents + my_offset + 8);
-
+
bfd_put_32 (output_bfd, t2a6_bx_insn,
s->contents + my_offset + 12);
-
+
/* Store the address of the function in the last word of the stub. */
bfd_put_32 (output_bfd, h_val,
s->contents + my_offset + 16);
@@ -1467,10 +1470,10 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
{
bfd_put_16 (output_bfd, t2a1_bx_pc_insn,
s->contents + my_offset);
-
+
bfd_put_16 (output_bfd, t2a2_noop_insn,
s->contents + my_offset + 2);
-
+
ret_offset =
((bfd_signed_vma) h_val) /* Address of destination of the stub */
- ((bfd_signed_vma)
@@ -1479,7 +1482,7 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
+ s->output_section->vma) /* Address of the start of the current section. */
+ 4 /* The branch instruction is 4 bytes into the stub. */
+ 8); /* ARM branches work from the pc of the instruction + 8. */
-
+
bfd_put_32 (output_bfd,
t2a3_b_insn | ((ret_offset >> 2) & 0x00FFFFFF),
s->contents + my_offset + 4);
@@ -1497,7 +1500,7 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
- (input_section->output_offset
+ rel->r_vaddr)
-4;
-
+
tmp = bfd_get_32 (input_bfd, contents + rel->r_vaddr
- input_section->vma);
@@ -1505,20 +1508,20 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
insert_thumb_branch (tmp, ret_offset),
contents + rel->r_vaddr
- input_section->vma);
-
+
done = 1;
}
}
#endif
}
-
+
/* If the relocation type and destination symbol does not
fall into one of the above categories, then we can just
- perform a direct link. */
+ perform a direct link. */
if (done)
rstat = bfd_reloc_ok;
- else
+ else
#endif /* THUMBEXTENSION */
if ( h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
@@ -1542,11 +1545,11 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
if (info->base_file)
{
- /* Emit a reloc if the backend thinks it needs it. */
+ /* Emit a reloc if the backend thinks it needs it. */
if (sym && pe_data(output_bfd)->in_reloc_p(output_bfd, howto))
arm_emit_base_file_entry (info, output_bfd, input_section, rel->r_vaddr);
}
-
+
#if 1 /* THUMBEXTENSION */
if (done)
rstat = bfd_reloc_ok;
@@ -1562,9 +1565,9 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
instruction. Again, it would probably be simpler adding a
ThumbBRANCH23 specific macro expansion into the default
code. */
-
+
bfd_vma address = rel->r_vaddr - input_section->vma;
-
+
if (address > input_section->_raw_size)
rstat = bfd_reloc_outofrange;
else
@@ -1583,21 +1586,21 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
bfd_signed_vma signed_add;
BFD_ASSERT (size == 4);
-
+
/* howto->pc_relative should be TRUE for type 14 BRANCH23 */
relocation -= (input_section->output_section->vma
+ input_section->output_offset);
-
+
/* howto->pcrel_offset should be TRUE for type 14 BRANCH23 */
relocation -= address;
-
- /* No need to negate the relocation with BRANCH23. */
+
+ /* No need to negate the relocation with BRANCH23. */
/* howto->complain_on_overflow == complain_overflow_signed for BRANCH23. */
/* howto->rightshift == 1 */
/* Drop unwanted bits from the value we are relocating to. */
-
+
check = relocation >> howto->rightshift;
-
+
/* If this is a signed value, the rightshift just dropped
leading 1 bits (assuming twos complement). */
if ((bfd_signed_vma) relocation >= 0)
@@ -1606,7 +1609,7 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
signed_check = (check
| ((bfd_vma) - 1
& ~((bfd_vma) - 1 >> howto->rightshift)));
-
+
/* Get the value from the object file. */
if (bfd_big_endian (input_bfd))
{
@@ -1625,16 +1628,16 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
can not get the upper bit, but that does not matter since
signed_add needs no adjustment to become negative in that
case. */
-
+
signed_add = add;
-
+
if ((add & (((~ src_mask) >> 1) & src_mask)) != 0)
signed_add -= (((~ src_mask) >> 1) & src_mask) << 1;
-
+
/* Add the value from the object file, shifted so that it is a
straight number. */
/* howto->bitpos == 0 */
-
+
signed_check += signed_add;
relocation += signed_add;
@@ -1644,9 +1647,9 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
if ( signed_check > reloc_signed_max
|| signed_check < reloc_signed_min)
overflow = true;
-
+
/* Put RELOCATION into the correct bits: */
-
+
if (bfd_big_endian (input_bfd))
{
relocation = (((relocation & 0xffe) >> 1) | ((relocation << 4) & 0x07ff0000));
@@ -1655,7 +1658,7 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
{
relocation = (((relocation & 0xffe) << 15) | ((relocation >> 12) & 0x7ff));
}
-
+
/* Add RELOCATION to the correct bits of X: */
x = ((x & ~howto->dst_mask) | relocation);
@@ -1673,7 +1676,7 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
rel->r_vaddr - input_section->vma,
val, addend);
#if 1 /* THUMBEXTENSION */
- /* FIXME:
+ /* FIXME:
Is this the best way to fix up thumb addresses? krk@cygnus.com
Probably not, but it works, and if it works it don't need fixing! nickc@cygnus.com */
/* Only perform this fix during the final link, not a relocatable link. nickc@cygnus.com */
@@ -1682,9 +1685,9 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
{
/* Determine if we need to set the bottom bit of a relocated address
because the address is the address of a Thumb code symbol. */
-
+
int patchit = false;
-
+
if (h != NULL
&& ( h->class == C_THUMBSTATFUNC
|| h->class == C_THUMBEXTFUNC))
@@ -1709,8 +1712,8 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
bfd_put_32 (input_bfd, x | 1, location);
}
}
-#endif /* THUMBEXTENSION */
-
+#endif /* THUMBEXTENSION */
+
switch (rstat)
{
default:
@@ -1754,7 +1757,7 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
#ifndef COFF_IMAGE_WITH_PE
boolean
-bfd_arm_allocate_interworking_sections (info)
+bfd_arm_allocate_interworking_sections (info)
struct bfd_link_info * info;
{
asection * s;
@@ -1765,24 +1768,24 @@ bfd_arm_allocate_interworking_sections (info)
#endif
globals = coff_arm_hash_table (info);
-
+
BFD_ASSERT (globals != NULL);
if (globals->arm_glue_size != 0)
{
BFD_ASSERT (globals->bfd_of_glue_owner != NULL);
-
+
s = bfd_get_section_by_name
(globals->bfd_of_glue_owner, ARM2THUMB_GLUE_SECTION_NAME);
BFD_ASSERT (s != NULL);
-
+
foo = (bfd_byte *) bfd_alloc
(globals->bfd_of_glue_owner, globals->arm_glue_size);
#if 0
memset (foo, test_char, globals->arm_glue_size);
#endif
-
+
s->_raw_size = s->_cooked_size = globals->arm_glue_size;
s->contents = foo;
}
@@ -1790,18 +1793,18 @@ bfd_arm_allocate_interworking_sections (info)
if (globals->thumb_glue_size != 0)
{
BFD_ASSERT (globals->bfd_of_glue_owner != NULL);
-
+
s = bfd_get_section_by_name
(globals->bfd_of_glue_owner, THUMB2ARM_GLUE_SECTION_NAME);
BFD_ASSERT (s != NULL);
-
+
foo = (bfd_byte *) bfd_alloc
(globals->bfd_of_glue_owner, globals->thumb_glue_size);
#if 0
memset (foo, test_char, globals->thumb_glue_size);
#endif
-
+
s->_raw_size = s->_cooked_size = globals->thumb_glue_size;
s->contents = foo;
}
@@ -1836,10 +1839,10 @@ record_arm_to_thumb_glue (info, h)
BFD_ASSERT (tmp_name);
sprintf (tmp_name, ARM2THUMB_GLUE_ENTRY_NAME, name);
-
+
myh = coff_link_hash_lookup
(coff_hash_table (info), tmp_name, false, false, true);
-
+
if (myh != NULL)
{
free (tmp_name);
@@ -1851,13 +1854,13 @@ record_arm_to_thumb_glue (info, h)
it. */
bfd_coff_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name,
- BSF_GLOBAL,
+ BSF_GLOBAL,
s, globals->arm_glue_size + 1,
- NULL, true, false,
+ NULL, true, false,
(struct bfd_link_hash_entry **) & myh);
-
+
free (tmp_name);
-
+
globals->arm_glue_size += ARM2THUMB_GLUE_SIZE;
return;
@@ -1874,9 +1877,8 @@ record_thumb_to_arm_glue (info, h)
struct coff_link_hash_entry * myh;
struct coff_arm_link_hash_table * globals;
-
globals = coff_arm_hash_table (info);
-
+
BFD_ASSERT (globals != NULL);
BFD_ASSERT (globals->bfd_of_glue_owner != NULL);
@@ -1893,7 +1895,7 @@ record_thumb_to_arm_glue (info, h)
myh = coff_link_hash_lookup
(coff_hash_table (info), tmp_name, false, false, true);
-
+
if (myh != NULL)
{
free (tmp_name);
@@ -1902,35 +1904,35 @@ record_thumb_to_arm_glue (info, h)
bfd_coff_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name,
BSF_GLOBAL, s, globals->thumb_glue_size + 1,
- NULL, true, false,
+ NULL, true, false,
(struct bfd_link_hash_entry **) & myh);
-
+
/* If we mark it 'thumb', the disassembler will do a better job. */
myh->class = C_THUMBEXTFUNC;
free (tmp_name);
/* Allocate another symbol to mark where we switch to arm mode. */
-
+
#define CHANGE_TO_ARM "__%s_change_to_arm"
#define BACK_FROM_ARM "__%s_back_from_arm"
-
+
tmp_name = (char *) bfd_malloc (strlen (name) + strlen (CHANGE_TO_ARM) + 1);
-
+
BFD_ASSERT (tmp_name);
-
+
sprintf (tmp_name, globals->support_old_code ? BACK_FROM_ARM : CHANGE_TO_ARM, name);
myh = NULL;
-
+
bfd_coff_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name,
BSF_LOCAL, s, globals->thumb_glue_size
+ (globals->support_old_code ? 8 : 4),
- NULL, true, false,
+ NULL, true, false,
(struct bfd_link_hash_entry **) & myh);
- free (tmp_name);
-
+ free (tmp_name);
+
globals->thumb_glue_size += THUMB2ARM_GLUE_SIZE;
return;
@@ -1948,27 +1950,27 @@ bfd_arm_get_bfd_for_interworking (abfd, info)
struct coff_arm_link_hash_table * globals;
flagword flags;
asection * sec;
-
+
/* If we are only performing a partial link do not bother
getting a bfd to hold the glue. */
if (info->relocateable)
return true;
-
+
globals = coff_arm_hash_table (info);
-
+
BFD_ASSERT (globals != NULL);
if (globals->bfd_of_glue_owner != NULL)
return true;
-
+
sec = bfd_get_section_by_name (abfd, ARM2THUMB_GLUE_SECTION_NAME);
-
- if (sec == NULL)
+
+ if (sec == NULL)
{
flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_CODE | SEC_READONLY;
-
+
sec = bfd_make_section (abfd, ARM2THUMB_GLUE_SECTION_NAME);
-
+
if (sec == NULL
|| ! bfd_set_section_flags (abfd, sec, flags)
|| ! bfd_set_section_alignment (abfd, sec, 2))
@@ -1977,21 +1979,21 @@ bfd_arm_get_bfd_for_interworking (abfd, info)
sec = bfd_get_section_by_name (abfd, THUMB2ARM_GLUE_SECTION_NAME);
- if (sec == NULL)
+ if (sec == NULL)
{
flags = SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_CODE | SEC_READONLY;
-
+
sec = bfd_make_section (abfd, THUMB2ARM_GLUE_SECTION_NAME);
-
+
if (sec == NULL
|| ! bfd_set_section_flags (abfd, sec, flags)
|| ! bfd_set_section_alignment (abfd, sec, 2))
return false;
}
-
+
/* Save the bfd for later use. */
globals->bfd_of_glue_owner = abfd;
-
+
return true;
}
@@ -2008,19 +2010,19 @@ bfd_arm_process_before_allocation (abfd, info, support_old_code)
to construct any glue. */
if (info->relocateable)
return true;
-
+
/* Here we have a bfd that is to be included on the link. We have a hook
to do reloc rummaging, before section sizes are nailed down. */
_bfd_coff_get_external_symbols (abfd);
globals = coff_arm_hash_table (info);
-
+
BFD_ASSERT (globals != NULL);
BFD_ASSERT (globals->bfd_of_glue_owner != NULL);
globals->support_old_code = support_old_code;
-
+
/* Rummage around all the relocs and map the glue vectors. */
sec = abfd->sections;
@@ -2032,17 +2034,17 @@ bfd_arm_process_before_allocation (abfd, info, support_old_code)
struct internal_reloc * i;
struct internal_reloc * rel;
- if (sec->reloc_count == 0)
+ if (sec->reloc_count == 0)
continue;
/* Load the relocs. */
- /* FIXME: there may be a storage leak here. */
-
+ /* FIXME: there may be a storage leak here. */
+
i = _bfd_coff_read_internal_relocs (abfd, sec, 1, 0, 0, 0);
-
+
BFD_ASSERT (i != 0);
- for (rel = i; rel < i + sec->reloc_count; ++rel)
+ for (rel = i; rel < i + sec->reloc_count; ++rel)
{
unsigned short r_type = rel->r_type;
long symndx;
@@ -2050,7 +2052,7 @@ bfd_arm_process_before_allocation (abfd, info, support_old_code)
symndx = rel->r_symndx;
- /* If the relocation is not against a symbol it cannot concern us. */
+ /* If the relocation is not against a symbol it cannot concern us. */
if (symndx == -1)
continue;
@@ -2061,7 +2063,7 @@ bfd_arm_process_before_allocation (abfd, info, support_old_code)
bfd_get_filename (abfd), symndx);
continue;
}
-
+
h = obj_coff_sym_hashes (abfd)[symndx];
/* If the relocation is against a static symbol it must be within
@@ -2075,11 +2077,11 @@ bfd_arm_process_before_allocation (abfd, info, support_old_code)
/* This one is a call from arm code. We need to look up
the target of the call. If it is a thumb target, we
insert glue. */
-
+
if (h->class == C_THUMBEXTFUNC)
record_arm_to_thumb_glue (info, h);
break;
-
+
#ifndef ARM_WINCE
case ARM_THUMB23:
/* This one is a call from thumb code. We used to look
@@ -2102,7 +2104,7 @@ bfd_arm_process_before_allocation (abfd, info, support_old_code)
}
break;
#endif
-
+
default:
break;
}
@@ -2126,7 +2128,6 @@ bfd_arm_process_before_allocation (abfd, info, support_old_code)
#define coff_bfd_copy_private_bfd_data coff_arm_copy_private_bfd_data
#define coff_bfd_link_hash_table_create coff_arm_link_hash_table_create
-
/* When doing a relocateable link, we want to convert ARM26 relocs
into ARM26D relocs. */
@@ -2194,7 +2195,7 @@ coff_arm_merge_private_bfd_data (ibfd, obfd)
bfd_set_error (bfd_error_wrong_format);
return false;
}
-
+
if (APCS_FLOAT_FLAG (obfd) != APCS_FLOAT_FLAG (ibfd))
{
const char *msg;
@@ -2205,14 +2206,14 @@ coff_arm_merge_private_bfd_data (ibfd, obfd)
else
/* xgettext: c-format */
msg = _("%s: ERROR: passes floats in integer registers whereas target %s uses float registers");
-
+
_bfd_error_handler (msg, bfd_get_filename (ibfd),
bfd_get_filename (obfd));
bfd_set_error (bfd_error_wrong_format);
return false;
}
-
+
if (PIC_FLAG (obfd) != PIC_FLAG (ibfd))
{
const char * msg;
@@ -2233,7 +2234,7 @@ coff_arm_merge_private_bfd_data (ibfd, obfd)
else
{
SET_APCS_FLAGS (obfd, APCS_26_FLAG (ibfd) | APCS_FLOAT_FLAG (ibfd) | PIC_FLAG (ibfd));
-
+
/* Set up the arch and fields as well as these are probably wrong. */
bfd_set_arch_mach (obfd, bfd_get_arch (ibfd), bfd_get_mach (ibfd));
}
@@ -2255,7 +2256,7 @@ coff_arm_merge_private_bfd_data (ibfd, obfd)
else
/* xgettext: c-format */
msg = _("Warning: input file %s does not support interworking, whereas %s does.");
-
+
_bfd_error_handler (msg, bfd_get_filename (ibfd),
bfd_get_filename (obfd));
}
@@ -2269,7 +2270,6 @@ coff_arm_merge_private_bfd_data (ibfd, obfd)
return true;
}
-
/* Display the flags field. */
static boolean
@@ -2278,12 +2278,12 @@ coff_arm_print_private_bfd_data (abfd, ptr)
PTR ptr;
{
FILE * file = (FILE *) ptr;
-
+
BFD_ASSERT (abfd != NULL && ptr != NULL);
-
+
/* xgettext:c-format */
fprintf (file, _("private flags = %x:"), coff_data (abfd)->flags);
-
+
if (APCS_SET (abfd))
{
/* xgettext: APCS is ARM Prodecure Call Standard, it should not be translated. */
@@ -2299,20 +2299,19 @@ coff_arm_print_private_bfd_data (abfd, ptr)
else
fprintf (file, _(" [absolute position]"));
}
-
+
if (! INTERWORK_SET (abfd))
fprintf (file, _(" [interworking flag not initialised]"));
else if (INTERWORK_FLAG (abfd))
fprintf (file, _(" [interworking supported]"));
else
fprintf (file, _(" [interworking not supported]"));
-
+
fputc ('\n', file);
-
+
return true;
}
-
/* Copies the given flags into the coff_tdata.flags field.
Typically these flags come from the f_flags[] field of
the COFF filehdr structure, which contains important,
@@ -2330,7 +2329,7 @@ _bfd_coff_arm_set_private_flags (abfd, flags)
BFD_ASSERT (abfd != NULL);
flag = (flags & F_APCS26) ? F_APCS_26 : 0;
-
+
/* Make sure that the APCS field has not been initialised to the opposite
value. */
if (APCS_SET (abfd)
@@ -2341,11 +2340,11 @@ _bfd_coff_arm_set_private_flags (abfd, flags)
return false;
flag |= (flags & (F_APCS_FLOAT | F_PIC));
-
+
SET_APCS_FLAGS (abfd, flag);
flag = (flags & F_INTERWORK);
-
+
/* If the BFD has already had its interworking flag set, but it
is different from the value that we have been asked to set,
then assume that that merged code will not support interworking
@@ -2368,7 +2367,6 @@ _bfd_coff_arm_set_private_flags (abfd, flags)
return true;
}
-
/* Copy the important parts of the target specific data
from one instance of a BFD to another. */
@@ -2378,7 +2376,7 @@ coff_arm_copy_private_bfd_data (src, dest)
bfd * dest;
{
BFD_ASSERT (src != NULL && dest != NULL);
-
+
if (src == dest)
return true;
@@ -2395,10 +2393,10 @@ coff_arm_copy_private_bfd_data (src, dest)
/* If the src and dest have different APCS flag bits set, fail. */
if (APCS_26_FLAG (dest) != APCS_26_FLAG (src))
return false;
-
+
if (APCS_FLOAT_FLAG (dest) != APCS_FLOAT_FLAG (src))
return false;
-
+
if (PIC_FLAG (dest) != PIC_FLAG (src))
return false;
}
@@ -2422,7 +2420,7 @@ coff_arm_copy_private_bfd_data (src, dest)
bfd_get_filename (dest),
bfd_get_filename (src));
}
-
+
SET_INTERWORK_FLAG (dest, 0);
}
}
@@ -2436,8 +2434,8 @@ coff_arm_copy_private_bfd_data (src, dest)
}
/* Note: the definitions here of LOCAL_LABEL_PREFIX and USER_LABEL_PREIFX
- *must* match the definitions in gcc/config/arm/coff.h and semi.h */
-#define LOCAL_LABEL_PREFIX "."
+ *must* match the definitions in gcc/config/arm/{coff|semi|aout}.h. */
+#define LOCAL_LABEL_PREFIX ""
#ifndef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX "_"
#endif
@@ -2462,28 +2460,28 @@ coff_arm_is_local_label_name (abfd, name)
#ifdef LOCAL_LABEL_PREFIX
/* If there is a prefix for local labels then look for this.
- If the prefix exists, but it is empty, then ignore the test. */
-
+ If the prefix exists, but it is empty, then ignore the test. */
+
if (LOCAL_LABEL_PREFIX[0] != 0)
{
int len = strlen (LOCAL_LABEL_PREFIX);
-
+
if (strncmp (name, LOCAL_LABEL_PREFIX, len) != 0)
return false;
-
+
/* Perform the checks below for the rest of the name. */
name += len;
}
#endif
-
+
return name[0] == 'L';
}
/* This piece of machinery exists only to guarantee that the bfd that holds
- the glue section is written last.
+ the glue section is written last.
This does depend on bfd_make_section attaching a new section to the
- end of the section list for the bfd.
+ end of the section list for the bfd.
krk@cygnus.com */
@@ -2504,17 +2502,17 @@ coff_arm_final_link_postscript (abfd, pfinfo)
struct coff_arm_link_hash_table * globals;
globals = coff_arm_hash_table (pfinfo->info);
-
+
BFD_ASSERT (globals != NULL);
-
+
if (globals->bfd_of_glue_owner != NULL)
{
if (! _bfd_coff_link_input_bfd (pfinfo, globals->bfd_of_glue_owner))
return false;
-
+
globals->bfd_of_glue_owner->output_has_begun = true;
}
-
+
return true;
}
@@ -2537,11 +2535,13 @@ coff_arm_final_link_postscript (abfd, pfinfo)
#define TARGET_UNDERSCORE 0
#endif
+#ifndef EXTRA_S_FLAGS
#ifdef COFF_WITH_PE
#define EXTRA_S_FLAGS (SEC_LINK_ONCE | SEC_LINK_DUPLICATES)
#else
#define EXTRA_S_FLAGS 0
#endif
+#endif
/* Forward declaration for use initialising alternative_target field. */
extern const bfd_target TARGET_BIG_SYM ;
@@ -2549,4 +2549,3 @@ extern const bfd_target TARGET_BIG_SYM ;
/* Target vectors. */
CREATE_LITTLE_COFF_TARGET_VEC (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME, D_PAGED, EXTRA_S_FLAGS, TARGET_UNDERSCORE, & TARGET_BIG_SYM)
CREATE_BIG_COFF_TARGET_VEC (TARGET_BIG_SYM, TARGET_BIG_NAME, D_PAGED, EXTRA_S_FLAGS, TARGET_UNDERSCORE, & TARGET_LITTLE_SYM)
-
diff --git a/contrib/binutils/bfd/coff-aux.c b/contrib/binutils/bfd/coff-aux.c
index 6966392..5bc9b8b 100644
--- a/contrib/binutils/bfd/coff-aux.c
+++ b/contrib/binutils/bfd/coff-aux.c
@@ -30,7 +30,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* 4k pages */
#define COFF_PAGE_SIZE 0x1000
-/* On AUX, a STYP_NOLOAD|STYP_BSS section is part of a shared library. */
+/* On AUX, a STYP_NOLOAD|STYP_BSS section is part of a shared library. */
#define BSS_NOLOAD_IS_SHARED_LIBRARY
#define STATIC_RELOCS
@@ -41,8 +41,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "sysdep.h"
static boolean coff_m68k_aux_link_add_one_symbol
- PARAMS ((struct bfd_link_info *, bfd *, const char *, flagword,
- asection *, bfd_vma, const char *, boolean, boolean,
+ PARAMS ((struct bfd_link_info *, bfd *, const char *, flagword,
+ asection *, bfd_vma, const char *, boolean, boolean,
struct bfd_link_hash_entry **));
#define coff_link_add_one_symbol coff_m68k_aux_link_add_one_symbol
@@ -54,7 +54,7 @@ static boolean coff_m68k_aux_link_add_one_symbol
mirrors Apple's "solution" to let a static library symbol override
a shared library symbol. On the whole not a good thing, given how
shared libraries work here, but can work if you are careful with
- what you include in the shared object. */
+ what you include in the shared object. */
static boolean
coff_m68k_aux_link_add_one_symbol (info, abfd, name, flags, section, value,
diff --git a/contrib/binutils/bfd/coff-i386.c b/contrib/binutils/bfd/coff-i386.c
index 84d4d14..83d67c4 100644
--- a/contrib/binutils/bfd/coff-i386.c
+++ b/contrib/binutils/bfd/coff-i386.c
@@ -73,8 +73,10 @@ coff_i386_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
{
symvalue diff;
+#ifndef COFF_WITH_PE
if (output_bfd == (bfd *) NULL)
return bfd_reloc_continue;
+#endif
if (bfd_is_com_section (symbol->section))
{
@@ -102,7 +104,26 @@ coff_i386_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
ignores the addend for a COFF target when producing
relocateable output. This seems to be always wrong for 386
COFF, so we handle the addend here instead. */
- diff = reloc_entry->addend;
+#ifdef COFF_WITH_PE
+ if (output_bfd == (bfd *) NULL)
+ {
+ reloc_howto_type *howto = reloc_entry->howto;
+
+ /* Although PC relative relocations are very similar between
+ PE and non-PE formats, but they are off by 1 << howto->size
+ bytes. For the external relocation, PE is very different
+ from others. See md_apply_fix3 () in gas/config/tc-i386.c.
+ When we link PE and non-PE object files together to
+ generate a non-PE executable, we have to compensate it
+ here. */
+ if (howto->pc_relative == true && howto->pcrel_offset == true)
+ diff = -(1 << howto->size);
+ else
+ diff = -reloc_entry->addend;
+ }
+ else
+#endif
+ diff = reloc_entry->addend;
}
#ifdef COFF_WITH_PE
@@ -155,19 +176,17 @@ coff_i386_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd,
}
#ifdef COFF_WITH_PE
-
/* Return true if this relocation should appear in the output .reloc
section. */
static boolean in_reloc_p PARAMS ((bfd *, reloc_howto_type *));
static boolean in_reloc_p (abfd, howto)
- bfd *abfd ATTRIBUTE_UNUSED;
+ bfd * abfd ATTRIBUTE_UNUSED;
reloc_howto_type *howto;
{
return ! howto->pc_relative && howto->type != R_IMAGEBASE;
}
-
#endif /* COFF_WITH_PE */
#ifndef PCRELOFFSET
@@ -575,7 +594,7 @@ const bfd_target
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
-/* Note that we allow an object file to be treated as a core file as well. */
+/* Note that we allow an object file to be treated as a core file as well. */
{_bfd_dummy_target, coff_object_p, /* bfd_check_format */
bfd_generic_archive_p, coff_object_p},
{bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */
diff --git a/contrib/binutils/bfd/coff-ppc.c b/contrib/binutils/bfd/coff-ppc.c
index c5e695d..798399d 100644
--- a/contrib/binutils/bfd/coff-ppc.c
+++ b/contrib/binutils/bfd/coff-ppc.c
@@ -5,7 +5,7 @@
Original version pieced together by Kim Knuttila (krk@cygnus.com)
There is nothing new under the sun. This file draws a lot on other
- coff files, in particular, those for the rs/6000, alpha, mips, and
+ coff files, in particular, those for the rs/6000, alpha, mips, and
intel backends, and the PE work for the arm.
This file is part of BFD, the Binary File Descriptor library.
@@ -29,11 +29,10 @@ Boston, MA 02111-1307, USA. */
- objdump works
- relocs generated by gas
- ld will link files, but they do not run.
- - dlltool will not produce correct output in some .reloc cases, and will
+ - dlltool will not produce correct output in some .reloc cases, and will
not produce the right glue code for dll function calls.
*/
-
#include "bfd.h"
#include "sysdep.h"
@@ -75,7 +74,6 @@ extern void dump_toc PARAMS ((PTR));
#define MARK_AS_WRITTEN(x) ((x) |= 1)
#define MAKE_ADDR_AGAIN(x) ((x) &= ~1)
-
/* Turn on this check if you suspect something amiss in the hash tables */
#ifdef DEBUG_HASH
@@ -87,13 +85,12 @@ extern void dump_toc PARAMS ((PTR));
#define HASH_CHECK(addr) \
if (strcmp(addr->eye_catcher, EYE) != 0) \
{ \
- fprintf(stderr,\
+ fprintf (stderr,\
_("File %s, line %d, Hash check failure, bad eye %8s\n"), \
__FILE__, __LINE__, addr->eye_catcher); \
- abort(); \
+ abort (); \
}
-
#else
#define HASH_CHECK_DCL
@@ -105,7 +102,7 @@ extern void dump_toc PARAMS ((PTR));
/* In order not to add an int to every hash table item for every coff
linker, we define our own hash table, derived from the coff one */
-/* PE linker hash table entries. */
+/* PE linker hash table entries. */
struct ppc_coff_link_hash_entry
{
@@ -120,7 +117,6 @@ struct ppc_coff_link_hash_entry
HASH_CHECK_DCL
};
-
/* PE linker hash table. */
struct ppc_coff_link_hash_table
@@ -154,14 +150,14 @@ ppc_coff_link_hash_newfunc (entry, table, string)
struct bfd_hash_table *table;
const char *string;
{
- struct ppc_coff_link_hash_entry *ret =
+ struct ppc_coff_link_hash_entry *ret =
(struct ppc_coff_link_hash_entry *) entry;
/* Allocate the structure if it has not already been allocated by a
subclass. */
if (ret == (struct ppc_coff_link_hash_entry *) NULL)
ret = (struct ppc_coff_link_hash_entry *)
- bfd_hash_allocate (table,
+ bfd_hash_allocate (table,
sizeof (struct ppc_coff_link_hash_entry));
if (ret == (struct ppc_coff_link_hash_entry *) NULL)
@@ -169,7 +165,7 @@ ppc_coff_link_hash_newfunc (entry, table, string)
/* Call the allocation method of the superclass. */
ret = ((struct ppc_coff_link_hash_entry *)
- _bfd_coff_link_hash_newfunc ((struct bfd_hash_entry *) ret,
+ _bfd_coff_link_hash_newfunc ((struct bfd_hash_entry *) ret,
table, string));
if (ret)
@@ -222,7 +218,6 @@ ppc_coff_link_hash_table_create (abfd)
/* Now, tailor coffcode.h to use our hash stuff */
#define coff_bfd_link_hash_table_create ppc_coff_link_hash_table_create
-
/* The nt loader points the toc register to &toc + 32768, in order to */
/* use the complete range of a 16-bit displacement. We have to adjust */
@@ -238,7 +233,7 @@ ppc_coff_link_hash_table_create (abfd)
from smaller values. Start with zero, widen, *then* decrement. */
#define MINUS_ONE (((bfd_vma)0) - 1)
-/* these should definitely go in a header file somewhere... */
+/* these should definitely go in a header file somewhere... */
/* NOP */
#define IMAGE_REL_PPC_ABSOLUTE 0x0000
@@ -320,7 +315,6 @@ ppc_coff_link_hash_table_create (abfd)
#define EXTRACT_FLAGS(x) ((x) & IMAGE_REL_PPC_FLAGMASK)
#define EXTRACT_JUNK(x) \
((x) & ~(IMAGE_REL_PPC_TYPEMASK | IMAGE_REL_PPC_FLAGMASK))
-
/* static helper functions to make relocation work */
/* (Work In Progress) */
@@ -348,7 +342,6 @@ static bfd_reloc_status_type ppc_pair_reloc PARAMS ((bfd *abfd,
asection *section,
bfd *output_bfd,
char **error));
-
static bfd_reloc_status_type ppc_toc16_reloc PARAMS ((bfd *abfd,
arelent *reloc,
@@ -391,10 +384,7 @@ static bfd_reloc_status_type ppc_imglue_reloc PARAMS ((bfd *abfd,
bfd *output_bfd,
char **error));
-
-
static boolean in_reloc_p PARAMS((bfd *abfd, reloc_howto_type *howto));
-
/* FIXME: It'll take a while to get through all of these. I only need a few to
get us started, so those I'll make sure work. Those marked FIXME are either
@@ -418,7 +408,7 @@ static boolean in_reloc_p PARAMS((bfd *abfd, reloc_howto_type *howto));
/* the address of the SYM will be inserted at link time. */
/* TOCREL16 : 16 bit displacement field referring to a slot in */
/* toc. */
-/* TOCREL14 : 16 bit displacement field, similar to REL14 or ADDR14. */
+/* TOCREL14 : 16 bit displacement field, similar to REL14 or ADDR14. */
/* ADDR32NB : 32 bit address relative to the virtual origin. */
/* (On the alpha, this is always a linker generated thunk)*/
/* (i.e. 32bit addr relative to the image base) */
@@ -438,32 +428,32 @@ static reloc_howto_type ppc_coff_howto_table[] =
{
/* IMAGE_REL_PPC_ABSOLUTE 0x0000 NOP */
/* Unused: */
- HOWTO (IMAGE_REL_PPC_ABSOLUTE, /* type */
- 0, /* rightshift */
- 0, /* size (0 = byte, 1 = short, 2 = long) */
- 0, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_ABSOLUTE, /* type */
+ 0, /* rightshift */
+ 0, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_dont, /* dont complain_on_overflow */
- 0, /* special_function */
+ 0, /* special_function */
"ABSOLUTE", /* name */
- false, /* partial_inplace */
- 0x00, /* src_mask */
- 0x00, /* dst_mask */
+ false, /* partial_inplace */
+ 0x00, /* src_mask */
+ 0x00, /* dst_mask */
false), /* pcrel_offset */
-
+
/* IMAGE_REL_PPC_ADDR64 0x0001 64-bit address */
/* Unused: */
- HOWTO(IMAGE_REL_PPC_ADDR64, /* type */
- 0, /* rightshift */
- 3, /* size (0 = byte, 1 = short, 2 = long) */
- 64, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO(IMAGE_REL_PPC_ADDR64, /* type */
+ 0, /* rightshift */
+ 3, /* size (0 = byte, 1 = short, 2 = long) */
+ 64, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
- 0, /* special_function */
+ 0, /* special_function */
"ADDR64", /* name */
- true, /* partial_inplace */
+ true, /* partial_inplace */
MINUS_ONE, /* src_mask */
MINUS_ONE, /* dst_mask */
false), /* pcrel_offset */
@@ -471,314 +461,311 @@ static reloc_howto_type ppc_coff_howto_table[] =
/* IMAGE_REL_PPC_ADDR32 0x0002 32-bit address */
/* Used: */
HOWTO (IMAGE_REL_PPC_ADDR32, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 32, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
- 0, /* special_function */
+ 0, /* special_function */
"ADDR32", /* name */
- true, /* partial_inplace */
- 0xffffffff, /* src_mask */
- 0xffffffff, /* dst_mask */
+ true, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
false), /* pcrel_offset */
-
+
/* IMAGE_REL_PPC_ADDR24 0x0003 26-bit address, shifted left 2 (branch absolute) */
/* the LI field is in bit 6 through bit 29 is 24 bits, + 2 for the shift */
/* Of course, That's the IBM approved bit numbering, which is not what */
- /* anyone else uses.... The li field is in bit 2 thru 25 */
+ /* anyone else uses.... The li field is in bit 2 thru 25 */
/* Used: */
HOWTO (IMAGE_REL_PPC_ADDR24, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
26, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
- 0, /* special_function */
+ 0, /* special_function */
"ADDR24", /* name */
- true, /* partial_inplace */
- 0x07fffffc, /* src_mask */
- 0x07fffffc, /* dst_mask */
+ true, /* partial_inplace */
+ 0x07fffffc, /* src_mask */
+ 0x07fffffc, /* dst_mask */
false), /* pcrel_offset */
-
+
/* IMAGE_REL_PPC_ADDR16 0x0004 16-bit address */
/* Used: */
- HOWTO (IMAGE_REL_PPC_ADDR16, /* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_ADDR16, /* type */
+ 0, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- 0, /* special_function */
+ 0, /* special_function */
"ADDR16", /* name */
- true, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xffff, /* dst_mask */
+ true, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
false), /* pcrel_offset */
-
+
/* IMAGE_REL_PPC_ADDR14 0x0005 */
/* 16-bit address, shifted left 2 (load doubleword) */
/* FIXME: the mask is likely wrong, and the bit position may be as well */
/* Unused: */
- HOWTO (IMAGE_REL_PPC_ADDR14, /* type */
- 1, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_ADDR14, /* type */
+ 1, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- 0, /* special_function */
+ 0, /* special_function */
"ADDR16", /* name */
- true, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xffff, /* dst_mask */
+ true, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
false), /* pcrel_offset */
-
+
/* IMAGE_REL_PPC_REL24 0x0006 */
/* 26-bit PC-relative offset, shifted left 2 (branch relative) */
/* Used: */
HOWTO (IMAGE_REL_PPC_REL24, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 26, /* bitsize */
- true, /* pc_relative */
- 0, /* bitpos */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 26, /* bitsize */
+ true, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- 0, /* special_function */
+ 0, /* special_function */
"REL24", /* name */
- true, /* partial_inplace */
- 0x3fffffc, /* src_mask */
- 0x3fffffc, /* dst_mask */
+ true, /* partial_inplace */
+ 0x3fffffc, /* src_mask */
+ 0x3fffffc, /* dst_mask */
false), /* pcrel_offset */
-
+
/* IMAGE_REL_PPC_REL14 0x0007 */
/* 16-bit PC-relative offset, shifted left 2 (br cond relative) */
/* FIXME: the mask is likely wrong, and the bit position may be as well */
/* FIXME: how does it know how far to shift? */
/* Unused: */
- HOWTO (IMAGE_REL_PPC_ADDR14, /* type */
- 1, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_ADDR14, /* type */
+ 1, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- 0, /* special_function */
+ 0, /* special_function */
"ADDR16", /* name */
- true, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xffff, /* dst_mask */
+ true, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
true), /* pcrel_offset */
-
+
/* IMAGE_REL_PPC_TOCREL16 0x0008 */
/* 16-bit offset from TOC base */
/* Used: */
- HOWTO (IMAGE_REL_PPC_TOCREL16,/* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_TOCREL16,/* type */
+ 0, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- ppc_toc16_reloc, /* special_function */
+ ppc_toc16_reloc, /* special_function */
"TOCREL16", /* name */
- false, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xffff, /* dst_mask */
+ false, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
false), /* pcrel_offset */
-
+
/* IMAGE_REL_PPC_TOCREL14 0x0009 */
/* 16-bit offset from TOC base, shifted left 2 (load doubleword) */
/* Unused: */
- HOWTO (IMAGE_REL_PPC_TOCREL14,/* type */
- 1, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_TOCREL14,/* type */
+ 1, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- 0, /* special_function */
+ 0, /* special_function */
"TOCREL14", /* name */
- false, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xffff, /* dst_mask */
+ false, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
false), /* pcrel_offset */
-
+
/* IMAGE_REL_PPC_ADDR32NB 0x000A */
/* 32-bit addr w/ image base */
/* Unused: */
- HOWTO (IMAGE_REL_PPC_ADDR32NB,/* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 32, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_ADDR32NB,/* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- 0, /* special_function */
+ 0, /* special_function */
"ADDR32NB", /* name */
- true, /* partial_inplace */
- 0xffffffff, /* src_mask */
- 0xffffffff, /* dst_mask */
+ true, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
false), /* pcrel_offset */
-
+
/* IMAGE_REL_PPC_SECREL 0x000B */
/* va of containing section (as in an image sectionhdr) */
/* Unused: */
- HOWTO (IMAGE_REL_PPC_SECREL,/* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 32, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_SECREL,/* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- ppc_secrel_reloc, /* special_function */
+ ppc_secrel_reloc, /* special_function */
"SECREL", /* name */
- true, /* partial_inplace */
- 0xffffffff, /* src_mask */
- 0xffffffff, /* dst_mask */
+ true, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
true), /* pcrel_offset */
/* IMAGE_REL_PPC_SECTION 0x000C */
/* sectionheader number */
/* Unused: */
- HOWTO (IMAGE_REL_PPC_SECTION,/* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 32, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_SECTION,/* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- ppc_section_reloc, /* special_function */
+ ppc_section_reloc, /* special_function */
"SECTION", /* name */
- true, /* partial_inplace */
- 0xffffffff, /* src_mask */
- 0xffffffff, /* dst_mask */
+ true, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
true), /* pcrel_offset */
/* IMAGE_REL_PPC_IFGLUE 0x000D */
/* substitute TOC restore instruction iff symbol is glue code */
/* Used: */
- HOWTO (IMAGE_REL_PPC_IFGLUE,/* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 32, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_IFGLUE,/* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- 0, /* special_function */
+ 0, /* special_function */
"IFGLUE", /* name */
- true, /* partial_inplace */
- 0xffffffff, /* src_mask */
- 0xffffffff, /* dst_mask */
+ true, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
false), /* pcrel_offset */
/* IMAGE_REL_PPC_IMGLUE 0x000E */
/* symbol is glue code; virtual address is TOC restore instruction */
/* Unused: */
- HOWTO (IMAGE_REL_PPC_IMGLUE,/* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 32, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_IMGLUE,/* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- ppc_imglue_reloc, /* special_function */
+ ppc_imglue_reloc, /* special_function */
"IMGLUE", /* name */
- false, /* partial_inplace */
- 0xffffffff, /* src_mask */
- 0xffffffff, /* dst_mask */
+ false, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
false), /* pcrel_offset */
/* IMAGE_REL_PPC_SECREL16 0x000F */
/* va of containing section (limited to 16 bits) */
/* Unused: */
- HOWTO (IMAGE_REL_PPC_SECREL16,/* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_SECREL16,/* type */
+ 0, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- 0, /* special_function */
+ 0, /* special_function */
"SECREL16", /* name */
- true, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xffff, /* dst_mask */
+ true, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
true), /* pcrel_offset */
/* IMAGE_REL_PPC_REFHI 0x0010 */
/* Unused: */
- HOWTO (IMAGE_REL_PPC_REFHI, /* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_REFHI, /* type */
+ 0, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- ppc_refhi_reloc, /* special_function */
+ ppc_refhi_reloc, /* special_function */
"REFHI", /* name */
- true, /* partial_inplace */
- 0xffffffff, /* src_mask */
- 0xffffffff, /* dst_mask */
+ true, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
false), /* pcrel_offset */
/* IMAGE_REL_PPC_REFLO 0x0011 */
/* Unused: */
- HOWTO (IMAGE_REL_PPC_REFLO, /* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_REFLO, /* type */
+ 0, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- ppc_refhi_reloc, /* special_function */
+ ppc_refhi_reloc, /* special_function */
"REFLO", /* name */
- true, /* partial_inplace */
- 0xffffffff, /* src_mask */
- 0xffffffff, /* dst_mask */
+ true, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
false), /* pcrel_offset */
/* IMAGE_REL_PPC_PAIR 0x0012 */
/* Unused: */
- HOWTO (IMAGE_REL_PPC_PAIR, /* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO (IMAGE_REL_PPC_PAIR, /* type */
+ 0, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- ppc_pair_reloc, /* special_function */
+ ppc_pair_reloc, /* special_function */
"PAIR", /* name */
- true, /* partial_inplace */
- 0xffffffff, /* src_mask */
- 0xffffffff, /* dst_mask */
+ true, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
false), /* pcrel_offset */
/* IMAGE_REL_PPC_TOCREL16_DEFN 0x0013 */
/* 16-bit offset from TOC base, without causing a definition */
/* Used: */
- HOWTO ( (IMAGE_REL_PPC_TOCREL16 | IMAGE_REL_PPC_TOCDEFN), /* type */
- 0, /* rightshift */
- 1, /* size (0 = byte, 1 = short, 2 = long) */
- 16, /* bitsize */
- false, /* pc_relative */
- 0, /* bitpos */
+ HOWTO ( (IMAGE_REL_PPC_TOCREL16 | IMAGE_REL_PPC_TOCDEFN), /* type */
+ 0, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ false, /* pc_relative */
+ 0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- 0, /* special_function */
+ 0, /* special_function */
"TOCREL16, TOCDEFN", /* name */
- false, /* partial_inplace */
- 0xffff, /* src_mask */
- 0xffff, /* dst_mask */
+ false, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
false), /* pcrel_offset */
};
-
-
-
/* Some really cheezy macros that can be turned on to test stderr :-) */
#ifdef DEBUG_RELOC
@@ -788,19 +775,19 @@ static reloc_howto_type ppc_coff_howto_table[] =
if (i == 0) \
{ \
i = 1; \
- fprintf(stderr,_("Unimplemented Relocation -- %s\n"),x); \
+ fprintf (stderr,_("Unimplemented Relocation -- %s\n"),x); \
} \
}
#define DUMP_RELOC(n,r) \
{ \
- fprintf(stderr,"%s sym %d, addr %d, addend %d\n", \
+ fprintf (stderr,"%s sym %d, addr %d, addend %d\n", \
n, (*(r->sym_ptr_ptr))->name, \
r->address, r->addend); \
}
-/* Given a reloc name, n, and a pointer to an internal_reloc,
- dump out interesting information on the contents
+/* Given a reloc name, n, and a pointer to an internal_reloc,
+ dump out interesting information on the contents
#define n_name _n._n_name
#define n_zeroes _n._n_n._n_zeroes
@@ -810,7 +797,7 @@ static reloc_howto_type ppc_coff_howto_table[] =
#define DUMP_RELOC2(n,r) \
{ \
- fprintf(stderr,"%s sym %d, r_vaddr %d %s\n", \
+ fprintf (stderr,"%s sym %d, r_vaddr %d %s\n", \
n, r->r_symndx, r->r_vaddr,\
(((r->r_type) & IMAGE_REL_PPC_TOCDEFN) == 0) \
?" ":" TOCDEFN" ); \
@@ -821,8 +808,6 @@ static reloc_howto_type ppc_coff_howto_table[] =
#define DUMP_RELOC(n,r)
#define DUMP_RELOC2(n,r)
#endif
-
-
/* toc construction and management routines */
@@ -924,16 +909,16 @@ ppc_record_toc_entry(abfd, info, sec, sym, toc_kind)
HASH_CHECK(h);
}
- if (h == 0)
- {
+ if (h == 0)
+ {
local_syms = obj_coff_local_toc_table(abfd);
if (local_syms == 0)
{
unsigned int i;
/* allocate a table */
- local_syms =
- (int *) bfd_zalloc (abfd,
- obj_raw_syment_count(abfd) * sizeof(int));
+ local_syms =
+ (int *) bfd_zalloc (abfd,
+ obj_raw_syment_count(abfd) * sizeof (int));
if (local_syms == 0)
return false;
obj_coff_local_toc_table(abfd) = local_syms;
@@ -943,7 +928,7 @@ ppc_record_toc_entry(abfd, info, sec, sym, toc_kind)
}
}
- if (IS_UNALLOCATED(local_syms[sym]))
+ if (IS_UNALLOCATED(local_syms[sym]))
{
local_syms[sym] = global_toc_size;
global_toc_size += 4;
@@ -1002,20 +987,19 @@ ppc_mark_symbol_as_glue(abfd, sym, rel)
#endif /* COFF_IMAGE_WITH_PE */
-
/* Return true if this relocation should
- appear in the output .reloc section. */
+ appear in the output .reloc section. */
static boolean in_reloc_p(abfd, howto)
bfd * abfd ATTRIBUTE_UNUSED;
reloc_howto_type *howto;
{
- return
- (! howto->pc_relative)
+ return
+ (! howto->pc_relative)
&& (howto->type != IMAGE_REL_PPC_ADDR32NB)
&& (howto->type != IMAGE_REL_PPC_TOCREL16)
&& (howto->type != IMAGE_REL_PPC_IMGLUE)
- && (howto->type != IMAGE_REL_PPC_IFGLUE)
+ && (howto->type != IMAGE_REL_PPC_IFGLUE)
&& (howto->type != IMAGE_REL_PPC_SECREL)
&& (howto->type != IMAGE_REL_PPC_SECTION)
&& (howto->type != IMAGE_REL_PPC_SECREL16)
@@ -1023,7 +1007,7 @@ static boolean in_reloc_p(abfd, howto)
&& (howto->type != IMAGE_REL_PPC_REFLO)
&& (howto->type != IMAGE_REL_PPC_PAIR)
&& (howto->type != IMAGE_REL_PPC_TOCREL16_DEFN) ;
-}
+}
#if 0
@@ -1050,39 +1034,38 @@ pe_ppc_reloc (abfd, reloc_entry, symbol_in, data, input_section, output_bfd,
unsigned long sym_value;
unsigned short r_type;
unsigned long addr = reloc_entry->address ; /*+ input_section->vma*/
-
+
r_type = reloc_entry->howto->type;
- if (output_bfd)
+ if (output_bfd)
{
/* Partial linking - do nothing */
reloc_entry->address += input_section->output_offset;
- return bfd_reloc_ok;
+ return bfd_reloc_ok;
}
if (symbol_in != NULL
&& bfd_is_und_section (symbol_in->section))
{
/* Keep the state machine happy in case we're called again */
- if (r_type == IMAGE_REL_PPC_REFHI)
+ if (r_type == IMAGE_REL_PPC_REFHI)
{
part1_consth_active = true;
part1_consth_value = 0;
}
return(bfd_reloc_undefined);
}
-
- if ((part1_consth_active) && (r_type != IMAGE_REL_PPC_PAIR))
+
+ if ((part1_consth_active) && (r_type != IMAGE_REL_PPC_PAIR))
{
part1_consth_active = false;
*error_message = (char *) _("Missing PAIR");
return(bfd_reloc_dangerous);
}
-
sym_value = get_symbol_value(symbol_in);
-
- return(bfd_reloc_ok);
+
+ return(bfd_reloc_ok);
}
#endif /* 0 */
@@ -1108,13 +1091,13 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
asection *toc_section = 0;
bfd_vma relocation;
reloc_howto_type *howto = 0;
-
+
/* If we are performing a relocateable link, we don't need to do a
thing. The caller will take care of adjusting the reloc
addresses and symbol indices. */
if (info->relocateable)
return true;
-
+
hihalf = false;
hihalf_val = 0;
@@ -1133,7 +1116,7 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
unsigned short r_type = EXTRACT_TYPE (rel->r_type);
unsigned short r_flags = EXTRACT_FLAGS(rel->r_type);
-
+
symndx = rel->r_symndx;
loc = contents + rel->r_vaddr - input_section->vma;
@@ -1147,9 +1130,9 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
}
else
{
- h = (struct ppc_coff_link_hash_entry *)
+ h = (struct ppc_coff_link_hash_entry *)
(obj_coff_sym_hashes (input_bfd)[symndx]);
- if (h != 0)
+ if (h != 0)
{
HASH_CHECK(h);
}
@@ -1159,8 +1142,8 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
if (r_type == IMAGE_REL_PPC_IMGLUE && h == 0)
{
- /* An IMGLUE reloc must have a name. Something is very wrong. */
- abort();
+ /* An IMGLUE reloc must have a name. Something is very wrong. */
+ abort ();
}
sec = NULL;
@@ -1203,7 +1186,7 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
}
rstat = bfd_reloc_ok;
-
+
/* Each case must do its own relocation, setting rstat appropriately */
switch (r_type)
{
@@ -1220,19 +1203,19 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
DUMP_RELOC2(howto->name, rel);
- if (toc_section == 0)
+ if (toc_section == 0)
{
- toc_section = bfd_get_section_by_name (bfd_of_toc_owner,
+ toc_section = bfd_get_section_by_name (bfd_of_toc_owner,
TOC_SECTION_NAME);
- if ( toc_section == NULL )
+ if ( toc_section == NULL )
{
- /* There is no toc section. Something is very wrong. */
- abort();
+ /* There is no toc section. Something is very wrong. */
+ abort ();
}
}
- /*
+ /*
* Amazing bit tricks present. As we may have seen earlier, we
* use the 1 bit to tell us whether or not a toc offset has been
* allocated. Now that they've all been allocated, we will use
@@ -1253,7 +1236,7 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
if (IS_WRITTEN(our_toc_offset))
{
- /* if it has been written out, it is marked with the
+ /* if it has been written out, it is marked with the
1 bit. Fix up our offset, but do not write it out
again.
*/
@@ -1262,12 +1245,12 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
else
{
/* write out the toc entry */
- record_toc(toc_section,
- our_toc_offset,
- priv,
+ record_toc(toc_section,
+ our_toc_offset,
+ priv,
strdup(name));
- bfd_put_32(output_bfd,
+ bfd_put_32 (output_bfd,
val,
toc_section->contents + our_toc_offset);
@@ -1280,33 +1263,33 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
const char *name = h->root.root.root.string;
our_toc_offset = h->toc_offset;
- if ((r_flags & IMAGE_REL_PPC_TOCDEFN)
+ if ((r_flags & IMAGE_REL_PPC_TOCDEFN)
== IMAGE_REL_PPC_TOCDEFN )
{
- /* This is unbelievable cheese. Some knowledgable asm
- hacker has decided to use r2 as a base for loading
- a value. He/She does this by setting the tocdefn bit,
- and not supplying a toc definition. The behaviour is
- then to use the difference between the value of the
- symbol and the actual location of the toc as the toc
- index.
+ /* This is unbelievable cheese. Some knowledgable asm
+ hacker has decided to use r2 as a base for loading
+ a value. He/She does this by setting the tocdefn bit,
+ and not supplying a toc definition. The behaviour is
+ then to use the difference between the value of the
+ symbol and the actual location of the toc as the toc
+ index.
In fact, what is usually happening is, because the
Import Address Table is mapped immediately following
the toc, some trippy library code trying for speed on
- dll linkage, takes advantage of that and considers
+ dll linkage, takes advantage of that and considers
the IAT to be part of the toc, thus saving a load.
*/
- our_toc_offset = val -
- (toc_section->output_section->vma +
+ our_toc_offset = val -
+ (toc_section->output_section->vma +
toc_section->output_offset);
/* The size must still fit in a 16bit displacment */
if (our_toc_offset >= 65535)
{
(*_bfd_error_handler)
- (_("%s: Relocation for %s of %x exceeds Toc size limit"),
+ (_("%s: Relocation for %s of %x exceeds Toc size limit"),
bfd_get_filename (input_bfd), name, our_toc_offset);
bfd_set_error (bfd_error_bad_value);
return false;
@@ -1316,7 +1299,7 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
}
else if (IS_WRITTEN(our_toc_offset))
{
- /* if it has been written out, it is marked with the
+ /* if it has been written out, it is marked with the
1 bit. Fix up our offset, but do not write it out
again.
*/
@@ -1327,7 +1310,7 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
record_toc(toc_section, our_toc_offset, pub, strdup(name));
/* write out the toc entry */
- bfd_put_32(output_bfd,
+ bfd_put_32 (output_bfd,
val,
toc_section->contents + our_toc_offset);
@@ -1338,31 +1321,30 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
}
}
- if (fixit && info->base_file)
+ if (fixit && info->base_file)
{
/* So if this is non pcrelative, and is referenced
to a section or a common symbol, then it needs a reloc */
/* relocation to a symbol in a section which
- isn't absolute - we output the address here
+ isn't absolute - we output the address here
to a file */
bfd_vma addr = toc_section->output_section->vma
+ toc_section->output_offset + our_toc_offset;
-
+
if (coff_data(output_bfd)->pe)
addr -= pe_data(output_bfd)->pe_opthdr.ImageBase;
fwrite (&addr, 1,4, (FILE *) info->base_file);
}
-
/* FIXME: this test is conservative */
if ( (r_flags & IMAGE_REL_PPC_TOCDEFN) != IMAGE_REL_PPC_TOCDEFN &&
our_toc_offset > toc_section->_raw_size)
{
(*_bfd_error_handler)
- (_("%s: Relocation exceeds allocated TOC (%x)"),
+ (_("%s: Relocation exceeds allocated TOC (%x)"),
bfd_get_filename (input_bfd),
toc_section->_raw_size);
bfd_set_error (bfd_error_bad_value);
@@ -1372,18 +1354,18 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
/* Now we know the relocation for this toc reference */
relocation = our_toc_offset + TOC_LOAD_ADJUSTMENT;
rstat = _bfd_relocate_contents (howto,
- input_bfd,
- relocation,
+ input_bfd,
+ relocation,
loc);
}
break;
case IMAGE_REL_PPC_IFGLUE:
{
/* To solve this, we need to know whether or not the symbol */
- /* appearing on the call instruction is a glue function or not. */
+ /* appearing on the call instruction is a glue function or not. */
/* A glue function must announce itself via a IMGLUE reloc, and */
/* the reloc contains the required toc restore instruction */
-
+
bfd_vma x;
const char *my_name;
DUMP_RELOC2(howto->name, rel);
@@ -1391,18 +1373,18 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
if (h != 0)
{
my_name = h->root.root.root.string;
- if (h->symbol_is_glue == 1)
+ if (h->symbol_is_glue == 1)
{
- x = bfd_get_32(input_bfd, loc);
- bfd_put_32(input_bfd, h->glue_insn, loc);
+ x = bfd_get_32 (input_bfd, loc);
+ bfd_put_32 (input_bfd, h->glue_insn, loc);
}
}
}
break;
case IMAGE_REL_PPC_SECREL:
/* Unimplemented: codeview debugging information */
- /* For fast access to the header of the section
- containing the item. */
+ /* For fast access to the header of the section
+ containing the item. */
break;
case IMAGE_REL_PPC_SECTION:
/* Unimplemented: codeview debugging information */
@@ -1420,15 +1402,15 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
my_name = h->root.root.root.string;
}
- fprintf(stderr,
- _("Warning: unsupported reloc %s <file %s, section %s>\n"),
+ fprintf (stderr,
+ _("Warning: unsupported reloc %s <file %s, section %s>\n"),
howto->name,
bfd_get_filename(input_bfd),
input_section->name);
- fprintf(stderr,"sym %ld (%s), r_vaddr %ld (%lx)\n",
+ fprintf (stderr,"sym %ld (%s), r_vaddr %ld (%lx)\n",
rel->r_symndx, my_name, (long) rel->r_vaddr,
- (unsigned long) rel->r_vaddr);
+ (unsigned long) rel->r_vaddr);
}
break;
case IMAGE_REL_PPC_IMGLUE:
@@ -1436,12 +1418,12 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
/* There is nothing to do now. This reloc was noted in the first
pass over the relocs, and the glue instruction extracted */
const char *my_name;
- if (h->symbol_is_glue == 1)
+ if (h->symbol_is_glue == 1)
break;
my_name = h->root.root.root.string;
(*_bfd_error_handler)
- (_("%s: Out of order IMGLUE reloc for %s"),
+ (_("%s: Out of order IMGLUE reloc for %s"),
bfd_get_filename (input_bfd), my_name);
bfd_set_error (bfd_error_bad_value);
return false;
@@ -1461,16 +1443,16 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
myh = coff_link_hash_lookup (coff_hash_table (info),
"__idata5_magic__",
false, false, true);
- first_thunk_address = myh->root.u.def.value +
- sec->output_section->vma +
- sec->output_offset -
+ first_thunk_address = myh->root.u.def.value +
+ sec->output_section->vma +
+ sec->output_offset -
pe_data(output_bfd)->pe_opthdr.ImageBase;
-
+
idata5offset = myh->root.u.def.value;
myh = coff_link_hash_lookup (coff_hash_table (info),
"__idata6_magic__",
false, false, true);
-
+
thunk_size = myh->root.u.def.value - idata5offset;
myh = coff_link_hash_lookup (coff_hash_table (info),
"__idata4_magic__",
@@ -1502,13 +1484,13 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
myh = coff_link_hash_lookup (coff_hash_table (info),
target,
false, false, true);
- if (myh == 0)
+ if (myh == 0)
{
- /* Missing magic cookies. Something is very wrong. */
- abort();
+ /* Missing magic cookies. Something is very wrong. */
+ abort ();
}
-
- val = myh->root.u.def.value +
+
+ val = myh->root.u.def.value +
sec->output_section->vma + sec->output_offset;
if (first_thunk_address == 0)
{
@@ -1516,16 +1498,16 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
myh = coff_link_hash_lookup (coff_hash_table (info),
"__idata5_magic__",
false, false, true);
- first_thunk_address = myh->root.u.def.value +
- sec->output_section->vma +
- sec->output_offset -
+ first_thunk_address = myh->root.u.def.value +
+ sec->output_section->vma +
+ sec->output_offset -
pe_data(output_bfd)->pe_opthdr.ImageBase;
-
+
idata5offset = myh->root.u.def.value;
myh = coff_link_hash_lookup (coff_hash_table (info),
"__idata6_magic__",
false, false, true);
-
+
thunk_size = myh->root.u.def.value - idata5offset;
myh = coff_link_hash_lookup (coff_hash_table (info),
"__idata4_magic__",
@@ -1536,8 +1518,8 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
}
rstat = _bfd_relocate_contents (howto,
- input_bfd,
- val -
+ input_bfd,
+ val -
pe_data(output_bfd)->pe_opthdr.ImageBase,
loc);
}
@@ -1549,8 +1531,8 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
+ input_section->output_offset);
rstat = _bfd_relocate_contents (howto,
- input_bfd,
- val,
+ input_bfd,
+ val,
loc);
break;
case IMAGE_REL_PPC_ADDR16:
@@ -1558,8 +1540,8 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
case IMAGE_REL_PPC_ADDR32:
DUMP_RELOC2(howto->name, rel);
rstat = _bfd_relocate_contents (howto,
- input_bfd,
- val,
+ input_bfd,
+ val,
loc);
break;
}
@@ -1571,11 +1553,11 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
if (sym && pe_data(output_bfd)->in_reloc_p(output_bfd, howto))
{
/* relocation to a symbol in a section which
- isn't absolute - we output the address here
+ isn't absolute - we output the address here
to a file */
- bfd_vma addr = rel->r_vaddr
- - input_section->vma
- + input_section->output_offset
+ bfd_vma addr = rel->r_vaddr
+ - input_section->vma
+ + input_section->output_offset
+ input_section->output_section->vma;
if (coff_data(output_bfd)->pe)
@@ -1614,7 +1596,7 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
}
if (! ((*info->callbacks->reloc_overflow)
- (info, name, howto->name,
+ (info, name, howto->name,
(bfd_vma) 0, input_bfd,
input_section, rel->r_vaddr - input_section->vma)))
{
@@ -1623,7 +1605,7 @@ coff_ppc_relocate_section (output_bfd, info, input_bfd, input_section,
}
}
- }
+ }
return true;
}
@@ -1659,11 +1641,11 @@ dump_toc (vfile)
FILE *file = (FILE *) vfile;
struct list_ele *t;
- fprintf(file, _(h1));
- fprintf(file, _(h2));
- fprintf(file, _(h3));
+ fprintf (file, _(h1));
+ fprintf (file, _(h2));
+ fprintf (file, _(h3));
- for(t = head; t != 0; t=t->next)
+ for (t = head; t != 0; t=t->next)
{
const char *cat = "";
@@ -1680,26 +1662,26 @@ dump_toc (vfile)
cat = _("IAT reference ");
else
{
- fprintf(file,
+ fprintf (file,
_("**** global_toc_size %ld(%lx), thunk_size %ld(%lx)\n"),
global_toc_size, global_toc_size, thunk_size, thunk_size);
cat = _("Out of bounds!");
}
}
- fprintf(file,
+ fprintf (file,
" %04lx (%d)", (unsigned long) t->offset, t->offset - 32768);
- fprintf(file,
+ fprintf (file,
" %s %s\n",
cat, t->name);
}
- fprintf(file, "\n");
+ fprintf (file, "\n");
}
boolean
-ppc_allocate_toc_section (info)
+ppc_allocate_toc_section (info)
struct bfd_link_info *info ATTRIBUTE_UNUSED;
{
asection *s;
@@ -1711,15 +1693,15 @@ ppc_allocate_toc_section (info)
if (bfd_of_toc_owner == 0)
{
- /* No toc owner? Something is very wrong. */
- abort();
+ /* No toc owner? Something is very wrong. */
+ abort ();
}
s = bfd_get_section_by_name ( bfd_of_toc_owner , TOC_SECTION_NAME);
- if (s == NULL)
+ if (s == NULL)
{
- /* No toc section? Something is very wrong. */
- abort();
+ /* No toc section? Something is very wrong. */
+ abort ();
}
foo = (bfd_byte *) bfd_alloc(bfd_of_toc_owner, global_toc_size);
@@ -1740,7 +1722,7 @@ ppc_process_before_allocation (abfd, info)
struct internal_reloc *i, *rel;
/* here we have a bfd that is to be included on the link. We have a hook
- to do reloc rummaging, before section sizes are nailed down. */
+ to do reloc rummaging, before section sizes are nailed down. */
_bfd_coff_get_external_symbols(abfd);
@@ -1754,17 +1736,17 @@ ppc_process_before_allocation (abfd, info)
for (; sec != 0; sec = sec->next)
{
- if (sec->reloc_count == 0)
+ if (sec->reloc_count == 0)
continue;
/* load the relocs */
/* FIXME: there may be a storage leak here */
i=_bfd_coff_read_internal_relocs(abfd,sec,1,0,0,0);
-
+
if (i == 0)
- abort();
+ abort ();
- for (rel=i;rel<i+sec->reloc_count;++rel)
+ for (rel=i;rel<i+sec->reloc_count;++rel)
{
unsigned short r_type = EXTRACT_TYPE (rel->r_type);
unsigned short r_flags = EXTRACT_FLAGS(rel->r_type);
@@ -1772,13 +1754,13 @@ ppc_process_before_allocation (abfd, info)
DUMP_RELOC2(ppc_coff_howto_table[r_type].name, rel);
- switch(r_type)
+ switch(r_type)
{
case IMAGE_REL_PPC_TOCREL16:
/* if TOCDEFN is on, ignore as someone else has allocated the
toc entry */
if ( (r_flags & IMAGE_REL_PPC_TOCDEFN) != IMAGE_REL_PPC_TOCDEFN )
- ok = ppc_record_toc_entry(abfd, info, sec,
+ ok = ppc_record_toc_entry(abfd, info, sec,
rel->r_symndx, default_toc);
if (!ok)
return false;
@@ -1797,7 +1779,6 @@ ppc_process_before_allocation (abfd, info)
#endif
-
static bfd_reloc_status_type
ppc_refhi_reloc (abfd,
reloc_entry,
@@ -1876,7 +1857,6 @@ ppc_pair_reloc (abfd,
return bfd_reloc_undefined;
}
-
static bfd_reloc_status_type
ppc_toc16_reloc (abfd,
@@ -2011,15 +1991,12 @@ ppc_imglue_reloc (abfd,
return bfd_reloc_ok;
}
-
-
#define MAX_RELOC_INDEX \
- (sizeof(ppc_coff_howto_table) / sizeof(ppc_coff_howto_table[0]) - 1)
-
+ (sizeof (ppc_coff_howto_table) / sizeof (ppc_coff_howto_table[0]) - 1)
/* FIXME: There is a possiblity that when we read in a reloc from a file,
- that there are some bits encoded in the upper portion of the
+ that there are some bits encoded in the upper portion of the
type field. Not yet implemented.
*/
static void ppc_coff_rtype2howto PARAMS ((arelent *relent,
@@ -2029,7 +2006,7 @@ static void
ppc_coff_rtype2howto (relent, internal)
arelent *relent;
struct internal_reloc *internal;
-{
+{
/* We can encode one of three things in the type field, aside from the
type:
@@ -2046,15 +2023,15 @@ ppc_coff_rtype2howto (relent, internal)
unsigned short r_flags = EXTRACT_FLAGS(internal->r_type);
unsigned short junk = EXTRACT_JUNK (internal->r_type);
- /* the masking process only slices off the bottom byte for r_type. */
- if ( r_type > MAX_RELOC_INDEX )
- abort();
+ /* the masking process only slices off the bottom byte for r_type. */
+ if ( r_type > MAX_RELOC_INDEX )
+ abort ();
/* check for absolute crap */
if ( junk != 0 )
- abort();
+ abort ();
- switch(r_type)
+ switch(r_type)
{
case IMAGE_REL_PPC_ADDR16:
case IMAGE_REL_PPC_REL24:
@@ -2079,16 +2056,16 @@ ppc_coff_rtype2howto (relent, internal)
howto = ppc_coff_howto_table + IMAGE_REL_PPC_TOCREL16;
break;
default:
- fprintf(stderr,
+ fprintf (stderr,
_("Warning: Unsupported reloc %s [%d] used -- it may not work.\n"),
ppc_coff_howto_table[r_type].name,
r_type);
- howto = ppc_coff_howto_table + r_type;
+ howto = ppc_coff_howto_table + r_type;
break;
}
-
+
relent->howto = howto;
-
+
}
static reloc_howto_type *
@@ -2117,15 +2094,15 @@ coff_ppc_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
unsigned short r_flags = EXTRACT_FLAGS(rel->r_type);
unsigned short junk = EXTRACT_JUNK (rel->r_type);
- /* the masking process only slices off the bottom byte for r_type. */
- if ( r_type > MAX_RELOC_INDEX )
- abort();
-
+ /* the masking process only slices off the bottom byte for r_type. */
+ if ( r_type > MAX_RELOC_INDEX )
+ abort ();
+
/* check for absolute crap */
if ( junk != 0 )
- abort();
-
- switch(r_type)
+ abort ();
+
+ switch(r_type)
{
case IMAGE_REL_PPC_ADDR32NB:
DUMP_RELOC2(ppc_coff_howto_table[r_type].name, rel);
@@ -2154,18 +2131,17 @@ coff_ppc_rtype_to_howto (abfd, sec, rel, h, sym, addendp)
howto = ppc_coff_howto_table + r_type;
break;
default:
- fprintf(stderr,
+ fprintf (stderr,
_("Warning: Unsupported reloc %s [%d] used -- it may not work.\n"),
ppc_coff_howto_table[r_type].name,
r_type);
howto = ppc_coff_howto_table + r_type;
break;
}
-
+
return howto;
}
-
/* a cheesy little macro to make the code a little more readable */
#define HOW2MAP(bfd_rtype,ppc_rtype) \
case bfd_rtype: return &ppc_coff_howto_table[ppc_rtype]
@@ -2189,16 +2165,15 @@ ppc_coff_reloc_type_lookup (abfd, code)
HOW2MAP(BFD_RELOC_16_GOTOFF, IMAGE_REL_PPC_TOCREL16_DEFN);
HOW2MAP(BFD_RELOC_32, IMAGE_REL_PPC_ADDR32);
HOW2MAP(BFD_RELOC_RVA, IMAGE_REL_PPC_ADDR32NB);
- default:
+ default:
return NULL;
}
/*NOTREACHED*/
}
#undef HOW2MAP
-
-/* Tailor coffcode.h -- macro heaven. */
+/* Tailor coffcode.h -- macro heaven. */
#define RTYPE2HOWTO(cache_ptr, dst) ppc_coff_rtype2howto (cache_ptr, dst)
@@ -2211,7 +2186,7 @@ static void ppc_coff_swap_sym_in_hook PARAMS ((bfd *, PTR, PTR));
#define coff_bfd_reloc_type_lookup ppc_coff_reloc_type_lookup
#define coff_rtype_to_howto coff_ppc_rtype_to_howto
#define coff_relocate_section coff_ppc_relocate_section
-#define coff_bfd_final_link ppc_bfd_coff_final_link
+#define coff_bfd_final_link ppc_bfd_coff_final_link
#ifndef COFF_IMAGE_WITH_PE
/* FIXME: This no longer works. */
@@ -2242,12 +2217,10 @@ static void ppc_coff_swap_sym_in_hook PARAMS ((bfd *, PTR, PTR));
COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 1 }
#include "coffcode.h"
-
-
#ifndef COFF_IMAGE_WITH_PE
/* FIXME:
- What we're trying to do here is allocate a toc section (early), and attach
+ What we're trying to do here is allocate a toc section (early), and attach
it to the last bfd to be processed. This avoids the problem of having a toc
written out before all files have been processed. This code allocates
a toc section for every file, and records the last one seen. There are
@@ -2277,7 +2250,7 @@ ppc_coff_swap_sym_in_hook (abfd, ext1, in1)
register asection *s;
s = bfd_get_section_by_name ( abfd , TOC_SECTION_NAME);
- if (s != NULL)
+ if (s != NULL)
{
return;
}
@@ -2291,7 +2264,7 @@ ppc_coff_swap_sym_in_hook (abfd, ext1, in1)
|| !bfd_set_section_alignment (abfd, s, 2))
{
/* FIXME: set appropriate bfd error */
- abort();
+ abort ();
}
/* save the bfd for later allocation */
@@ -2324,18 +2297,17 @@ ppc_get_last()
}
/* this piece of machinery exists only to guarantee that the bfd that holds
- the toc section is written last.
+ the toc section is written last.
This does depend on bfd_make_section attaching a new section to the
- end of the section list for the bfd.
+ end of the section list for the bfd.
- This is otherwise intended to be functionally the same as
- cofflink.c:_bfd_coff_final_link(). It is specifically different only
- where the POWERPC_LE_PE macro modifies the code. It is left in as a
+ This is otherwise intended to be functionally the same as
+ cofflink.c:_bfd_coff_final_link(). It is specifically different only
+ where the POWERPC_LE_PE macro modifies the code. It is left in as a
precise form of comment. krk@cygnus.com
*/
-
/* Do the final link step. */
boolean
@@ -2840,13 +2812,12 @@ ppc_bfd_coff_final_link (abfd, info)
}
#endif
-
/* Forward declaration for use by alternative_target field. */
#ifdef TARGET_BIG_SYM
extern const bfd_target TARGET_BIG_SYM;
#endif
-/* The transfer vectors that lead the outside world to all of the above. */
+/* The transfer vectors that lead the outside world to all of the above. */
#ifdef TARGET_LITTLE_SYM
const bfd_target TARGET_LITTLE_SYM =
@@ -2859,7 +2830,7 @@ const bfd_target TARGET_LITTLE_SYM =
(HAS_RELOC | EXEC_P | /* FIXME: object flags */
HAS_LINENO | HAS_DEBUG |
HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
-
+
#ifndef COFF_WITH_PE
(SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
#else
@@ -2878,14 +2849,14 @@ const bfd_target TARGET_LITTLE_SYM =
bfd_getl64, bfd_getl_signed_64, bfd_putl64,
bfd_getl32, bfd_getl_signed_32, bfd_putl32,
bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
-
+
{_bfd_dummy_target, coff_object_p, /* bfd_check_format */
bfd_generic_archive_p, /* _bfd_dummy_target */ coff_object_p },
{bfd_false, coff_mkobject, _bfd_generic_mkarchive, /* bfd_set_format */
bfd_false},
{bfd_false, coff_write_object_contents, /* bfd_write_contents */
_bfd_write_archive_contents, bfd_false},
-
+
BFD_JUMP_TABLE_GENERIC (coff),
BFD_JUMP_TABLE_COPY (coff),
BFD_JUMP_TABLE_CORE (_bfd_nocore),
@@ -2902,7 +2873,7 @@ const bfd_target TARGET_LITTLE_SYM =
#else
NULL,
#endif
-
+
COFF_SWAP_TABLE
};
#endif
@@ -2911,7 +2882,7 @@ const bfd_target TARGET_LITTLE_SYM =
const bfd_target TARGET_BIG_SYM =
{
TARGET_BIG_NAME,
- bfd_target_coff_flavour,
+ bfd_target_coff_flavour,
BFD_ENDIAN_BIG, /* data byte order is big */
BFD_ENDIAN_BIG, /* header byte order is big */
@@ -2955,14 +2926,13 @@ const bfd_target TARGET_BIG_SYM =
BFD_JUMP_TABLE_LINK (coff),
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
-
/* Alternative_target. */
#ifdef TARGET_LITTLE_SYM
& TARGET_LITTLE_SYM,
#else
NULL,
#endif
-
+
COFF_SWAP_TABLE
};
diff --git a/contrib/binutils/bfd/coff-sparc.c b/contrib/binutils/bfd/coff-sparc.c
index 5e919da..9367770 100644
--- a/contrib/binutils/bfd/coff-sparc.c
+++ b/contrib/binutils/bfd/coff-sparc.c
@@ -36,8 +36,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
enum reloc_type
{
R_SPARC_NONE = 0,
- R_SPARC_8, R_SPARC_16, R_SPARC_32,
- R_SPARC_DISP8, R_SPARC_DISP16, R_SPARC_DISP32,
+ R_SPARC_8, R_SPARC_16, R_SPARC_32,
+ R_SPARC_DISP8, R_SPARC_DISP16, R_SPARC_DISP32,
R_SPARC_WDISP30, R_SPARC_WDISP22,
R_SPARC_HI22, R_SPARC_22,
R_SPARC_13, R_SPARC_LO10,
@@ -96,7 +96,7 @@ bfd_coff_generic_reloc (abfd, reloc_entry, symbol, data, input_section,
return bfd_reloc_continue;
}
-static reloc_howto_type coff_sparc_howto_table[] =
+static reloc_howto_type coff_sparc_howto_table[] =
{
HOWTO(R_SPARC_NONE, 0,0, 0,false,0,complain_overflow_dont, bfd_coff_generic_reloc,"R_SPARC_NONE", false,0,0x00000000,true),
HOWTO(R_SPARC_8, 0,0, 8,false,0,complain_overflow_bitfield,bfd_coff_generic_reloc,"R_SPARC_8", false,0,0x000000ff,true),
@@ -197,7 +197,7 @@ rtype2howto (cache_ptr, dst)
#define __A_MAGIC_SET__
-/* Enable Sparc-specific hacks in coffcode.h. */
+/* Enable Sparc-specific hacks in coffcode.h. */
#define COFF_SPARC
diff --git a/contrib/binutils/bfd/coff-tic30.c b/contrib/binutils/bfd/coff-tic30.c
index a971f76..267ca97 100644
--- a/contrib/binutils/bfd/coff-tic30.c
+++ b/contrib/binutils/bfd/coff-tic30.c
@@ -49,7 +49,7 @@ reloc_howto_type tic30_coff_howto_table[] =
/* For the case statement use the code values used in tc_gen_reloc to
map to the howto table entries that match those in both the aout
- and coff implementations. */
+ and coff implementations. */
reloc_howto_type *
tic30_coff_reloc_type_lookup (abfd, code)
bfd *abfd ATTRIBUTE_UNUSED;
@@ -86,7 +86,6 @@ coff_tic30_select_reloc (howto)
#define SELECT_RELOC(x,howto) x.r_type = coff_tic30_select_reloc(howto)
-
#define BADMAG(x) TIC30BADMAG(x)
#define TIC30 1 /* Customize coffcode.h */
#define __A_MAGIC_SET__
@@ -97,7 +96,7 @@ coff_tic30_select_reloc (howto)
#define SWAP_OUT_RELOC_EXTRA(abfd, src, dst) dst->r_stuff[0] = 'S'; \
dst->r_stuff[1] = 'C';
-/* Code to turn a r_type into a howto ptr, uses the above howto table. */
+/* Code to turn a r_type into a howto ptr, uses the above howto table. */
static void
rtype2howto (internal, dst)
@@ -134,7 +133,6 @@ rtype2howto (internal, dst)
#define CALC_ADDEND(abfd, symbol, ext_reloc, cache_ptr) \
cache_ptr->addend = ext_reloc.r_offset;
-
#define RELOC_PROCESSING(relent,reloc,symbols,abfd,section) \
reloc_processing(relent, reloc, symbols, abfd, section)
@@ -203,6 +201,6 @@ const bfd_target tic30_coff_vec =
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
COFF_SWAP_TABLE
};
diff --git a/contrib/binutils/bfd/coff-z8k.c b/contrib/binutils/bfd/coff-z8k.c
index 21f29a8..7ad0630 100644
--- a/contrib/binutils/bfd/coff-z8k.c
+++ b/contrib/binutils/bfd/coff-z8k.c
@@ -54,7 +54,7 @@ HOWTO (R_JR, 0, 1, 8, true, 0, complain_overflow_signed, 0,
/* Turn a howto into a reloc number */
-static int
+static int
coff_z8k_select_reloc (howto)
reloc_howto_type *howto;
{
@@ -63,13 +63,10 @@ coff_z8k_select_reloc (howto)
#define SELECT_RELOC(x,howto) x.r_type = coff_z8k_select_reloc(howto)
-
#define BADMAG(x) Z8KBADMAG(x)
#define Z8K 1 /* Customize coffcode.h */
#define __A_MAGIC_SET__
-
-
/* Code to swap in the reloc */
#define SWAP_IN_RELOC_OFFSET bfd_h_get_32
#define SWAP_OUT_RELOC_OFFSET bfd_h_put_32
@@ -110,18 +107,15 @@ rtype2howto (internal, dst)
#define RTYPE2HOWTO(internal, relocentry) rtype2howto(internal,relocentry)
-
/* Perform any necessary magic to the addend in a reloc entry */
-
#define CALC_ADDEND(abfd, symbol, ext_reloc, cache_ptr) \
cache_ptr->addend = ext_reloc.r_offset;
-
#define RELOC_PROCESSING(relent,reloc,symbols,abfd,section) \
reloc_processing(relent, reloc, symbols, abfd, section)
-static void
+static void
reloc_processing (relent, reloc, symbols, abfd, section)
arelent * relent;
struct internal_reloc *reloc;
@@ -141,7 +135,6 @@ reloc_processing (relent, reloc, symbols, abfd, section)
relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
}
-
relent->addend = reloc->r_offset;
relent->address -= section->vma;
}
@@ -178,7 +171,7 @@ extra_case (in_abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)
case R_IMM4L:
bfd_put_8 (in_abfd,
- ((bfd_get_8 (in_abfd, data + *dst_ptr) & 0xf0)
+ ((bfd_get_8 (in_abfd, data + *dst_ptr) & 0xf0)
| (0x0f
& bfd_coff_reloc16_get_value (reloc, link_info,
input_section))),
@@ -230,7 +223,6 @@ extra_case (in_abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)
#include "coffcode.h"
-
#undef coff_bfd_get_relocated_section_contents
#undef coff_bfd_relax_section
#define coff_bfd_get_relocated_section_contents \
diff --git a/contrib/binutils/bfd/coffcode.h b/contrib/binutils/bfd/coffcode.h
index 73081a7..fce0491 100644
--- a/contrib/binutils/bfd/coffcode.h
+++ b/contrib/binutils/bfd/coffcode.h
@@ -175,7 +175,6 @@ SUBSUBSECTION
the file in the string table. This pass moves all strings
into memory and replaces them with pointers to the strings.
-
The symbol table is massaged once again, this time to create
the canonical table used by the BFD application. Each symbol
is inspected in turn, and a decision made (using the
@@ -301,7 +300,6 @@ CODE_FRAGMENT
.boolean done_lineno;
.} coff_symbol_type;
-
*/
#ifdef COFF_WITH_PE
@@ -351,6 +349,19 @@ static PTR coff_mkobject_hook PARAMS ((bfd *, PTR, PTR));
#ifndef COFF_WITH_PE
+/* Macros for setting debugging flags. */
+#ifdef STYP_DEBUG
+#define STYP_XCOFF_DEBUG STYP_DEBUG
+#else
+#define STYP_XCOFF_DEBUG STYP_INFO
+#endif
+
+#ifdef COFF_ALIGN_IN_S_FLAGS
+#define STYP_DEBUG_INFO STYP_DSECT
+#else
+#define STYP_DEBUG_INFO STYP_INFO
+#endif
+
static long
sec_to_styp_flags (sec_name, sec_flags)
CONST char *sec_name;
@@ -388,18 +399,24 @@ sec_to_styp_flags (sec_name, sec_flags)
styp_flags = STYP_LIT;
#endif /* _LIT */
}
- else if (!strcmp (sec_name, ".debug"))
+ else if (!strncmp (sec_name, ".debug", 6))
{
-#ifdef STYP_DEBUG
- styp_flags = STYP_DEBUG;
-#else
- styp_flags = STYP_INFO;
-#endif
+ /* Handle the XCOFF debug section and DWARF2 debug sections. */
+ if (!sec_name[6])
+ styp_flags = STYP_XCOFF_DEBUG;
+ else
+ styp_flags = STYP_DEBUG_INFO;
}
else if (!strncmp (sec_name, ".stab", 5))
{
- styp_flags = STYP_INFO;
+ styp_flags = STYP_DEBUG_INFO;
+ }
+#ifdef COFF_LONG_SECTION_NAMES
+ else if (!strncmp (sec_name, ".gnu.linkonce.wi.", 17))
+ {
+ styp_flags = STYP_DEBUG_INFO;
}
+#endif
#ifdef RS6000COFF_C
else if (!strcmp (sec_name, _PAD))
{
@@ -436,6 +453,16 @@ sec_to_styp_flags (sec_name, sec_flags)
styp_flags = STYP_BSS;
}
+#ifdef STYP_CLINK
+ if (sec_flags & SEC_CLINK)
+ styp_flags |= STYP_CLINK;
+#endif
+
+#ifdef STYP_BLOCK
+ if (sec_flags & SEC_BLOCK)
+ styp_flags |= STYP_BLOCK;
+#endif
+
#ifdef STYP_NOLOAD
if ((sec_flags & (SEC_NEVER_LOAD | SEC_COFF_SHARED_LIBRARY)) != 0)
styp_flags |= STYP_NOLOAD;
@@ -493,8 +520,8 @@ sec_to_styp_flags (sec_name, sec_flags)
styp_flags |= IMAGE_SCN_LNK_REMOVE;
/* skip IN_MEMORY */
/* skip SORT */
- if (sec_flags & SEC_LINK_ONCE)
- styp_flags |= IMAGE_SCN_LNK_COMDAT;
+ if (sec_flags & SEC_LINK_ONCE)
+ styp_flags |= IMAGE_SCN_LNK_COMDAT;
/* skip LINK_DUPLICATES */
/* skip LINKER_CREATED */
@@ -502,7 +529,7 @@ sec_to_styp_flags (sec_name, sec_flags)
though the semantics don't quite match. The bits from the input
are retained in pei_section_data(abfd, section)->pe_flags */
- styp_flags |= IMAGE_SCN_MEM_READ; /* always readable. */
+ styp_flags |= IMAGE_SCN_MEM_READ; /* always readable. */
if ((sec_flags & SEC_READONLY) == 0)
styp_flags |= IMAGE_SCN_MEM_WRITE; /* Invert READONLY for write */
if (sec_flags & SEC_CODE)
@@ -510,7 +537,7 @@ sec_to_styp_flags (sec_name, sec_flags)
if (sec_flags & SEC_SHARED)
styp_flags |= IMAGE_SCN_MEM_SHARED; /* Shared remains meaningful */
- return styp_flags;
+ return styp_flags;
}
#endif /* COFF_WITH_PE */
@@ -533,6 +560,16 @@ styp_to_sec_flags (abfd, hdr, name, section)
long styp_flags = internal_s->s_flags;
flagword sec_flags = 0;
+#ifdef STYP_BLOCK
+ if (styp_flags & STYP_BLOCK)
+ sec_flags |= SEC_BLOCK;
+#endif
+
+#ifdef STYP_CLINK
+ if (styp_flags & STYP_CLINK)
+ sec_flags |= SEC_CLINK;
+#endif
+
#ifdef STYP_NOLOAD
if (styp_flags & STYP_NOLOAD)
{
@@ -604,10 +641,13 @@ styp_to_sec_flags (abfd, hdr, name, section)
#endif
sec_flags |= SEC_ALLOC;
}
- else if (strcmp (name, ".debug") == 0
+ else if (strncmp (name, ".debug", 6) == 0
#ifdef _COMMENT
|| strcmp (name, _COMMENT) == 0
#endif
+#ifdef COFF_LONG_SECTION_NAMES
+ || strncmp (name, ".gnu.linkonce.wi.", 17) == 0
+#endif
|| strncmp (name, ".stab", 5) == 0)
{
#ifdef COFF_PAGE_SIZE
@@ -730,7 +770,7 @@ styp_to_sec_flags (abfd, hdr, name, section)
if (styp_flags & IMAGE_SCN_MEM_EXECUTE)
sec_flags |= SEC_CODE; /* Probably redundant */
- /* IMAGE_SCN_MEM_READ is simply ignored, assuming it always to be true. */
+ /* IMAGE_SCN_MEM_READ is simply ignored, assuming it always to be true. */
if ((styp_flags & IMAGE_SCN_MEM_WRITE) == 0)
sec_flags |= SEC_READONLY;
@@ -849,7 +889,7 @@ styp_to_sec_flags (abfd, hdr, name, section)
if (strcmp (name, symname) != 0)
abort ();
-
+
/* This is the section symbol. */
bfd_coff_swap_aux_in (abfd, (PTR) (esym + bfd_coff_symesz (abfd)),
@@ -884,7 +924,7 @@ styp_to_sec_flags (abfd, hdr, name, section)
switch (aux.x_scn.x_comdat)
{
case IMAGE_COMDAT_SELECT_NODUPLICATES:
-#ifdef STRICT_PE_FORMAT
+#ifdef STRICT_PE_FORMAT
sec_flags |= SEC_LINK_DUPLICATES_ONE_ONLY;
#else
sec_flags &= ~SEC_LINK_ONCE;
@@ -936,7 +976,7 @@ styp_to_sec_flags (abfd, hdr, name, section)
#define TARGET_UNDERSCORE 0
#endif
/* Is this the name we're looking for? */
- if (strcmp (target_name,
+ if (strcmp (target_name,
symname + (TARGET_UNDERSCORE ? 1 : 0)) != 0)
{
/* Not the name we're looking for */
@@ -944,7 +984,7 @@ styp_to_sec_flags (abfd, hdr, name, section)
continue;
}
/* Fall through. */
- case 1:
+ case 1:
/* MSVC mode: the lexically second symbol (or
drop through from the above). */
{
@@ -955,7 +995,7 @@ styp_to_sec_flags (abfd, hdr, name, section)
Intel puts the two adjacent, but Alpha (at
least) spreads them out. */
- section->comdat =
+ section->comdat =
bfd_alloc (abfd, sizeof (struct bfd_comdat_info));
if (section->comdat == NULL)
abort ();
@@ -977,7 +1017,9 @@ styp_to_sec_flags (abfd, hdr, name, section)
esym += (isym.n_numaux + 1) * bfd_coff_symesz (abfd);
}
- breakloop:
+ breakloop:
+ /* SunOS requires a statement after any label. */
+ ;
}
}
@@ -1100,6 +1142,8 @@ dependent COFF routines:
. boolean _bfd_coff_long_filenames;
. boolean _bfd_coff_long_section_names;
. unsigned int _bfd_coff_default_section_alignment_power;
+. boolean _bfd_coff_force_symnames_in_strings;
+. unsigned int _bfd_coff_debug_string_prefix_length;
. void (*_bfd_coff_swap_filehdr_in) PARAMS ((
. bfd *abfd,
. PTR ext,
@@ -1202,12 +1246,12 @@ dependent COFF routines:
. struct bfd_link_info *info,
. bfd *abfd,
. const char *name,
-. flagword flags,
+. flagword flags,
. asection *section,
. bfd_vma value,
. const char *string,
. boolean copy,
-. boolean collect,
+. boolean collect,
. struct bfd_link_hash_entry **hashp));
.
. boolean (*_bfd_coff_link_output_has_begun) PARAMS ((
@@ -1297,6 +1341,12 @@ dependent COFF routines:
.#define bfd_coff_symname_in_debug(abfd, sym)\
. ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
.
+.#define bfd_coff_force_symnames_in_strings(abfd)\
+. (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
+.
+.#define bfd_coff_debug_string_prefix_length(abfd)\
+. (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
+.
.#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
. ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
. (abfd, file, base, symbol, aux, indaux))
@@ -1434,8 +1484,8 @@ static const unsigned int coff_section_alignment_table_size =
static boolean
coff_new_section_hook (abfd, section)
- bfd *abfd;
- asection *section;
+ bfd * abfd;
+ asection * section;
{
combined_entry_type *native;
@@ -1500,10 +1550,17 @@ coff_set_alignment_hook (abfd, section, scnhdr)
break;
#endif
#ifdef TIC80COFF
- /* TI tools hijack bits 8-11 for the alignment */
+ /* TI tools puts the alignment power in bits 8-11 */
i = (hdr->s_flags >> 8) & 0xF ;
#endif
+#ifdef COFF_DECODE_ALIGNMENT
+ i = COFF_DECODE_ALIGNMENT(hdr->s_flags);
+#endif
section->alignment_power = i;
+
+#ifdef coff_set_section_load_page
+ coff_set_section_load_page (section, hdr->s_page);
+#endif
}
#else /* ! COFF_ALIGN_IN_SECTION_HEADER */
@@ -1568,6 +1625,23 @@ coff_set_alignment_hook (abfd, section, scnhdr)
pei_section_data (abfd, section)->pe_flags = hdr->s_flags;
section->lma = hdr->s_vaddr;
+
+ /* check for extended relocs */
+ if (hdr->s_flags & IMAGE_SCN_LNK_NRELOC_OVFL)
+ {
+ struct external_reloc dst;
+ struct internal_reloc n;
+ int oldpos = bfd_tell (abfd);
+ bfd_seek (abfd, hdr->s_relptr, 0);
+ if (bfd_read ((PTR) & dst, 1, bfd_coff_relsz (abfd), abfd)
+ != bfd_coff_relsz (abfd))
+ return;
+
+ coff_swap_reloc_in (abfd, &dst, &n);
+ bfd_seek (abfd, oldpos, 0);
+ section->reloc_count =
+ hdr->s_nreloc = n.r_vaddr;
+ }
}
#undef ALIGN_SET
#undef ELIFALIGN_SET
@@ -1692,6 +1766,11 @@ coff_mkobject_hook (abfd, filehdr, aouthdr)
struct xcoff_tdata *xcoff;
xcoff = xcoff_data (abfd);
+# ifdef U803XTOCMAGIC
+ xcoff->xcoff64 = internal_f->f_magic == U803XTOCMAGIC;
+# else
+ xcoff->xcoff64 = 0;
+# endif
xcoff->full_aouthdr = true;
xcoff->toc = internal_a->o_toc;
xcoff->sntoc = internal_a->o_sntoc;
@@ -1705,12 +1784,12 @@ coff_mkobject_hook (abfd, filehdr, aouthdr)
}
#endif
-#ifdef ARM
+#ifdef ARM
/* Set the flags field from the COFF header read in */
if (! _bfd_coff_arm_set_private_flags (abfd, internal_f->f_flags))
coff->flags = 0;
#endif
-
+
#ifdef COFF_WITH_PE
/* FIXME: I'm not sure this is ever executed, since peicode.h
defines coff_mkobject_hook. */
@@ -1745,7 +1824,7 @@ coff_set_arch_mach_hook (abfd, filehdr)
case PPCMAGIC:
arch = bfd_arch_powerpc;
machine = 0; /* what does this mean? (krk) */
- break;
+ break;
#endif
#ifdef I386MAGIC
case I386MAGIC:
@@ -1756,6 +1835,12 @@ coff_set_arch_mach_hook (abfd, filehdr)
machine = 0;
break;
#endif
+#ifdef IA64MAGIC
+ case IA64MAGIC:
+ arch = bfd_arch_ia64;
+ machine = 0;
+ break;
+#endif
#ifdef A29K_MAGIC_BIG
case A29K_MAGIC_BIG:
case A29K_MAGIC_LITTLE:
@@ -1864,9 +1949,13 @@ coff_set_arch_mach_hook (abfd, filehdr)
#endif
#ifdef RS6000COFF_C
+#ifdef XCOFF64
+ case U803XTOCMAGIC:
+#else
case U802ROMAGIC:
case U802WRMAGIC:
case U802TOCMAGIC:
+#endif
{
int cputype;
@@ -1887,13 +1976,13 @@ coff_set_arch_mach_hook (abfd, filehdr)
buf = (bfd_byte *) bfd_malloc (bfd_coff_symesz (abfd));
if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
- || (bfd_read (buf, 1, bfd_coff_symesz (abfd), abfd)
+ || (bfd_read (buf, 1, bfd_coff_symesz (abfd), abfd)
!= bfd_coff_symesz (abfd)))
{
free (buf);
return false;
}
- coff_swap_sym_in (abfd, (PTR) buf, (PTR) &sym);
+ bfd_coff_swap_sym_in (abfd, (PTR) buf, (PTR) &sym);
if (sym.n_sclass == C_FILE)
cputype = sym.n_type & 0xff;
else
@@ -1912,28 +2001,33 @@ coff_set_arch_mach_hook (abfd, filehdr)
(because that's how they were bootstrapped originally),
but they are always PowerPC architecture. */
arch = bfd_arch_powerpc;
- machine = 0;
+ machine = bfd_mach_ppc;
+#else
+#ifdef XCOFF64
+ arch = bfd_arch_powerpc;
+ machine = bfd_mach_ppc_620;
#else
arch = bfd_arch_rs6000;
- machine = 6000;
+ machine = bfd_mach_rs6k;
+#endif
#endif /* POWERMAC */
break;
case 1:
arch = bfd_arch_powerpc;
- machine = 601;
+ machine = bfd_mach_ppc_601;
break;
case 2: /* 64 bit PowerPC */
arch = bfd_arch_powerpc;
- machine = 620;
+ machine = bfd_mach_ppc_620;
break;
case 3:
arch = bfd_arch_powerpc;
- machine = 0;
+ machine = bfd_mach_ppc;
break;
case 4:
arch = bfd_arch_rs6000;
- machine = 6000;
+ machine = bfd_mach_rs6k;
break;
}
}
@@ -2015,6 +2109,37 @@ coff_set_arch_mach_hook (abfd, filehdr)
break;
#endif
+#ifdef TICOFF0MAGIC
+#ifdef TICOFF_TARGET_ARCH
+ /* this TI COFF section should be used by all new TI COFF v0 targets */
+ case TICOFF0MAGIC:
+ arch = TICOFF_TARGET_ARCH;
+ break;
+#endif
+#endif
+
+#ifdef TICOFF1MAGIC
+ /* this TI COFF section should be used by all new TI COFF v1/2 targets */
+ /* TI COFF1 and COFF2 use the target_id field to specify which arch */
+ case TICOFF1MAGIC:
+ case TICOFF2MAGIC:
+ switch (internal_f->f_target_id)
+ {
+#ifdef TI_TARGET_ID
+ case TI_TARGET_ID:
+ arch = TICOFF_TARGET_ARCH;
+ break;
+#endif
+ default:
+ arch = bfd_arch_obscure;
+ (*_bfd_error_handler)
+ (_("Unrecognized TI COFF target id '0x%x'"),
+ internal_f->f_target_id);
+ break;
+ }
+ break;
+#endif
+
#ifdef TIC80_ARCH_MAGIC
case TIC80_ARCH_MAGIC:
arch = bfd_arch_tic80;
@@ -2057,6 +2182,10 @@ symname_in_debug_hook (abfd, sym)
#ifdef RS6000COFF_C
+#ifdef XCOFF64
+#define FORCE_SYMNAMES_IN_STRINGS
+#endif
+
/* Handle the csect auxent of a C_EXT or C_HIDEXT symbol. */
static boolean coff_pointerize_aux_hook
@@ -2242,6 +2371,22 @@ coff_write_relocs (abfd, first_undef)
if (bfd_seek (abfd, s->rel_filepos, SEEK_SET) != 0)
return false;
+
+#ifdef COFF_WITH_PE
+ if (s->reloc_count > 0xffff)
+ {
+ /* encode real count here as first reloc */
+ struct internal_reloc n;
+ memset ((PTR) & n, 0, sizeof (n));
+ /* add one to count *this* reloc (grr) */
+ n.r_vaddr = s->reloc_count + 1;
+ coff_swap_reloc_out (abfd, &n, &dst);
+ if (bfd_write ((PTR) & dst, 1, bfd_coff_relsz (abfd), abfd)
+ != bfd_coff_relsz (abfd))
+ return false;
+ }
+#endif
+
for (i = 0; i < s->reloc_count; i++)
{
struct internal_reloc n;
@@ -2256,7 +2401,7 @@ coff_write_relocs (abfd, first_undef)
place). This is a bad thing,'cause the symbols attached
to the output bfd are indexed, so that the relocation
entries know which symbol index they point to. So we
- have to look up the output symbol here. */
+ have to look up the output symbol here. */
if (q->sym_ptr_ptr[0]->the_bfd != abfd)
{
@@ -2407,6 +2552,33 @@ coff_set_flags (abfd, magicp, flagsp)
*magicp = TIC30MAGIC;
return true;
#endif
+
+#ifdef TICOFF_DEFAULT_MAGIC
+ case TICOFF_TARGET_ARCH:
+ /* if there's no indication of which version we want, use the default */
+ if (!abfd->xvec )
+ *magicp = TICOFF_DEFAULT_MAGIC;
+ else
+ {
+ /* we may want to output in a different COFF version */
+ switch (abfd->xvec->name[4])
+ {
+ case '0':
+ *magicp = TICOFF0MAGIC;
+ break;
+ case '1':
+ *magicp = TICOFF1MAGIC;
+ break;
+ case '2':
+ *magicp = TICOFF2MAGIC;
+ break;
+ default:
+ return false;
+ }
+ }
+ return true;
+#endif
+
#ifdef TIC80_ARCH_MAGIC
case bfd_arch_tic80:
*magicp = TIC80_ARCH_MAGIC;
@@ -2424,10 +2596,10 @@ coff_set_flags (abfd, magicp, flagsp)
{
if (APCS_26_FLAG (abfd))
* flagsp |= F_APCS26;
-
+
if (APCS_FLOAT_FLAG (abfd))
* flagsp |= F_APCS_FLOAT;
-
+
if (PIC_FLAG (abfd))
* flagsp |= F_PIC;
}
@@ -2442,7 +2614,10 @@ coff_set_flags (abfd, magicp, flagsp)
case bfd_mach_arm_4: * flagsp |= F_ARM_4; break;
case bfd_mach_arm_4T: * flagsp |= F_ARM_4T; break;
case bfd_mach_arm_5: * flagsp |= F_ARM_5; break;
- case bfd_mach_arm_5T: * flagsp |= F_ARM_5; break; /* XXX - we do not have an F_ARM_5T */
+ /* FIXME: we do not have F_ARM vaues greater than F_ARM_5. */
+ case bfd_mach_arm_5T: * flagsp |= F_ARM_5; break;
+ case bfd_mach_arm_5TE: * flagsp |= F_ARM_5; break;
+ case bfd_mach_arm_XScale: * flagsp |= F_ARM_5; break;
}
return true;
#endif
@@ -2456,7 +2631,7 @@ coff_set_flags (abfd, magicp, flagsp)
case bfd_arch_i386:
*magicp = I386MAGIC;
#ifdef LYNXOS
- /* Just overwrite the usual value if we're doing Lynx. */
+ /* Just overwrite the usual value if we're doing Lynx. */
*magicp = LYNXCOFFMAGIC;
#endif
return true;
@@ -2468,6 +2643,12 @@ coff_set_flags (abfd, magicp, flagsp)
return true;
break;
#endif
+#ifdef IA64MAGIC
+ case bfd_arch_ia64:
+ *magicp = IA64MAGIC;
+ return true;
+ break;
+#endif
#ifdef MC68MAGIC
case bfd_arch_m68k:
#ifdef APOLLOM68KMAGIC
@@ -2481,7 +2662,7 @@ coff_set_flags (abfd, magicp, flagsp)
#endif
#endif
#ifdef LYNXOS
- /* Just overwrite the usual value if we're doing Lynx. */
+ /* Just overwrite the usual value if we're doing Lynx. */
*magicp = LYNXCOFFMAGIC;
#endif
return true;
@@ -2536,7 +2717,7 @@ coff_set_flags (abfd, magicp, flagsp)
case bfd_arch_sparc:
*magicp = SPARCMAGIC;
#ifdef LYNXOS
- /* Just overwrite the usual value if we're doing Lynx. */
+ /* Just overwrite the usual value if we're doing Lynx. */
*magicp = LYNXCOFFMAGIC;
#endif
return true;
@@ -2566,12 +2747,19 @@ coff_set_flags (abfd, magicp, flagsp)
break;
#endif
-#ifdef U802TOCMAGIC
+#ifdef RS6000COFF_C
case bfd_arch_rs6000:
#ifndef PPCMAGIC
case bfd_arch_powerpc:
#endif
- *magicp = U802TOCMAGIC;
+#ifdef XCOFF64
+ if (bfd_get_mach (abfd) == bfd_mach_ppc_620
+ && !strncmp (abfd->xvec->name,"aix", 3))
+ *magicp = U803XTOCMAGIC;
+ else
+#else
+ *magicp = U802TOCMAGIC;
+#endif
return true;
break;
#endif
@@ -2581,23 +2769,22 @@ coff_set_flags (abfd, magicp, flagsp)
* magicp = MCOREMAGIC;
return true;
#endif
-
+
#ifdef W65MAGIC
case bfd_arch_w65:
*magicp = W65MAGIC;
return true;
#endif
- default: /* Unknown architecture */
- /* return false; -- fall through to "return false" below, to avoid
- "statement never reached" errors on the one below. */
+ default: /* Unknown architecture. */
+ /* Fall through to "return false" below, to avoid
+ "statement never reached" errors on the one below. */
break;
}
return false;
}
-
static boolean
coff_set_arch_mach (abfd, arch, machine)
bfd * abfd;
@@ -2614,7 +2801,7 @@ coff_set_arch_mach (abfd, arch, machine)
coff_set_flags (abfd, &dummy1, &dummy2) != true)
return false; /* We can't represent this type */
- return true; /* We're easy ... */
+ return true; /* We're easy ... */
}
#ifdef COFF_IMAGE_WITH_PE
@@ -2642,12 +2829,12 @@ sort_by_secaddr (arg1, arg2)
#endif /* COFF_IMAGE_WITH_PE */
-/* Calculate the file position for each section. */
+/* Calculate the file position for each section. */
#ifndef I960
#define ALIGN_SECTIONS_IN_FILE
#endif
-#ifdef TIC80COFF
+#if defined(TIC80COFF) || defined(TICOFF)
#undef ALIGN_SECTIONS_IN_FILE
#endif
@@ -2685,8 +2872,8 @@ coff_compute_section_file_positions (abfd)
size_t len;
len = strlen (bfd_asymbol_name (*symp));
- if (len > SYMNMLEN)
- sz += len + 3;
+ if (len > SYMNMLEN || bfd_coff_force_symnames_in_strings (abfd))
+ sz += len + 1 + bfd_coff_debug_string_prefix_length (abfd);
}
}
if (sz > 0)
@@ -2704,7 +2891,7 @@ coff_compute_section_file_positions (abfd)
#ifdef COFF_IMAGE_WITH_PE
int page_size;
- if (coff_data (abfd)->link_info)
+ if (coff_data (abfd)->link_info)
{
page_size = pe_data (abfd)->pe_opthdr.FileAlignment;
}
@@ -2853,7 +3040,7 @@ coff_compute_section_file_positions (abfd)
/* Align the sections in the file to the same boundary on
which they are aligned in virtual memory. I960 doesn't
do this (FIXME) so we can stay in sync with Intel. 960
- doesn't yet page from files... */
+ doesn't yet page from files... */
#ifdef ALIGN_SECTIONS_IN_FILE
if ((abfd->flags & EXEC_P) != 0)
{
@@ -3042,7 +3229,7 @@ coff_write_object_contents (abfd)
file_ptr reloc_base;
file_ptr lineno_base;
file_ptr sym_base;
- unsigned long reloc_size = 0;
+ unsigned long reloc_size = 0, reloc_count = 0;
unsigned long lnno_size = 0;
boolean long_section_names;
asection *text_sec = NULL;
@@ -3073,7 +3260,16 @@ coff_write_object_contents (abfd)
for (current = abfd->sections; current != NULL; current =
current->next)
- reloc_size += current->reloc_count * bfd_coff_relsz (abfd);
+ {
+#ifdef COFF_WITH_PE
+ /* we store the actual reloc count in the first reloc's addr */
+ if (current->reloc_count > 0xffff)
+ reloc_count ++;
+#endif
+ reloc_count += current->reloc_count;
+ }
+
+ reloc_size = reloc_count * bfd_coff_relsz (abfd);
lineno_base = reloc_base + reloc_size;
sym_base = lineno_base + lnno_size;
@@ -3096,6 +3292,11 @@ coff_write_object_contents (abfd)
{
current->rel_filepos = reloc_base;
reloc_base += current->reloc_count * bfd_coff_relsz (abfd);
+#ifdef COFF_WITH_PE
+ /* extra reloc to hold real count */
+ if (current->reloc_count > 0xffff)
+ reloc_base += bfd_coff_relsz (abfd);
+#endif
}
else
{
@@ -3170,6 +3371,9 @@ coff_write_object_contents (abfd)
section.s_vaddr = current->vma;
section.s_paddr = current->lma;
section.s_size = current->_raw_size;
+#ifdef coff_get_section_load_page
+ section.s_page = coff_get_section_load_page (current);
+#endif
#ifdef COFF_WITH_PE
section.s_paddr = 0;
@@ -3212,6 +3416,7 @@ coff_write_object_contents (abfd)
hasdebug = true;
#ifdef RS6000COFF_C
+#ifndef XCOFF64
/* Indicate the use of an XCOFF overflow section header. */
if (current->reloc_count >= 0xffff || current->lineno_count >= 0xffff)
{
@@ -3219,6 +3424,7 @@ coff_write_object_contents (abfd)
section.s_nlnno = 0xffff;
}
#endif
+#endif
section.s_flags = sec_to_styp_flags (current->name, current->flags);
@@ -3239,10 +3445,13 @@ coff_write_object_contents (abfd)
section.s_align = (current->alignment_power
? 1 << current->alignment_power
: 0);
-#else
+#endif
#ifdef TIC80COFF
+ /* TI COFF puts the alignment power in bits 8-11 of the flags */
section.s_flags |= (current->alignment_power & 0xF) << 8;
#endif
+#ifdef COFF_ENCODE_ALIGNMENT
+ COFF_ENCODE_ALIGNMENT(section, current->alignment_power);
#endif
#ifdef COFF_IMAGE_WITH_PE
@@ -3259,7 +3468,7 @@ coff_write_object_contents (abfd)
SCNHDR buff;
if (coff_swap_scnhdr_out (abfd, &section, &buff) == 0
|| bfd_write ((PTR) (&buff), 1, bfd_coff_scnhsz (abfd), abfd)
- != bfd_coff_scnhsz (abfd))
+ != bfd_coff_scnhsz (abfd))
return false;
}
@@ -3381,13 +3590,13 @@ coff_write_object_contents (abfd)
scnhdr.s_flags = STYP_OVRFLO;
if (coff_swap_scnhdr_out (abfd, &scnhdr, &buff) == 0
|| bfd_write ((PTR) &buff, 1, bfd_coff_scnhsz (abfd), abfd)
- != bfd_coff_scnhsz (abfd))
+ != bfd_coff_scnhsz (abfd))
return false;
}
}
#endif
- /* OK, now set up the filehdr... */
+ /* OK, now set up the filehdr... */
/* Don't include the internal abs section in the section count */
@@ -3432,6 +3641,11 @@ coff_write_object_contents (abfd)
internal_f.f_flags |= F_AR32W;
#endif
+#ifdef TI_TARGET_ID
+ /* target id is used in TI COFF v1 and later; COFF0 won't use this field,
+ but it doesn't hurt to set it internally */
+ internal_f.f_target_id = TI_TARGET_ID;
+#endif
#ifdef TIC80_TARGET_ID
internal_f.f_target_id = TIC80_TARGET_ID;
#endif
@@ -3458,7 +3672,7 @@ coff_write_object_contents (abfd)
coff_set_flags (abfd, &magic, &flags);
internal_f.f_magic = magic;
internal_f.f_flags |= flags;
- /* ...and the "opt"hdr... */
+ /* ...and the "opt"hdr... */
#ifdef A29K
#ifdef ULTRA3 /* NYU's machine */
@@ -3473,6 +3687,10 @@ coff_write_object_contents (abfd)
internal_a.magic = NMAGIC; /* Assume separate i/d */
#define __A_MAGIC_SET__
#endif /* A29K */
+#ifdef TICOFF_AOUT_MAGIC
+ internal_a.magic = TICOFF_AOUT_MAGIC;
+#define __A_MAGIC_SET__
+#endif
#ifdef TIC80COFF
internal_a.magic = TIC80_ARCH_MAGIC;
#define __A_MAGIC_SET__
@@ -3516,7 +3734,7 @@ coff_write_object_contents (abfd)
#if defined(ARM)
#define __A_MAGIC_SET__
internal_a.magic = ZMAGIC;
-#endif
+#endif
#if defined(PPC_PE)
#define __A_MAGIC_SET__
@@ -3526,7 +3744,7 @@ coff_write_object_contents (abfd)
#if defined MCORE_PE
#define __A_MAGIC_SET__
internal_a.magic = IMAGE_NT_OPTIONAL_HDR_MAGIC;
-#endif
+#endif
#if defined(I386)
#define __A_MAGIC_SET__
@@ -3537,6 +3755,11 @@ coff_write_object_contents (abfd)
#endif /* LYNXOS */
#endif /* I386 */
+#if defined(IA64)
+#define __A_MAGIC_SET__
+ internal_a.magic = ZMAGIC;
+#endif /* IA64 */
+
#if defined(SPARC)
#define __A_MAGIC_SET__
#if defined(LYNXOS)
@@ -3592,7 +3815,7 @@ coff_write_object_contents (abfd)
return false;
}
#ifdef COFF_LONG_SECTION_NAMES
- else if (long_section_names)
+ else if (long_section_names && ! obj_coff_strings_written (abfd))
{
/* If we have long section names we have to write out the string
table even if there are no symbols. */
@@ -3733,40 +3956,40 @@ coff_write_object_contents (abfd)
/* now write them */
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
return false;
-
+
{
char * buff;
bfd_size_type amount;
-
+
buff = bfd_malloc (bfd_coff_filhsz (abfd));
- if (buff == NULL)
+ if (buff == NULL)
return false;
-
+
coff_swap_filehdr_out (abfd, (PTR) & internal_f, (PTR) buff);
amount = bfd_write ((PTR) buff, 1, bfd_coff_filhsz (abfd), abfd);
-
+
free (buff);
-
+
if (amount != bfd_coff_filhsz (abfd))
return false;
}
-
+
if (abfd->flags & EXEC_P)
{
- /* Note that peicode.h fills in a PEAOUTHDR, not an AOUTHDR.
- include/coff/pe.h sets AOUTSZ == sizeof(PEAOUTHDR)) */
+ /* Note that peicode.h fills in a PEAOUTHDR, not an AOUTHDR.
+ include/coff/pe.h sets AOUTSZ == sizeof (PEAOUTHDR)) */
char * buff;
bfd_size_type amount;
buff = bfd_malloc (bfd_coff_aoutsz (abfd));
- if (buff == NULL)
+ if (buff == NULL)
return false;
-
+
coff_swap_aouthdr_out (abfd, (PTR) & internal_a, (PTR) buff);
amount = bfd_write ((PTR) buff, 1, bfd_coff_aoutsz (abfd), abfd);
-
+
free (buff);
-
+
if (amount != bfd_coff_aoutsz (abfd))
return false;
}
@@ -3824,7 +4047,7 @@ coff_set_section_contents (abfd, section, location, offset, count)
to write a section which doesn't follow these assumptions. The
code has been tested on ISC 4.1 by me, and on SCO by Robert Lipe
<robertl@arnet.com> (Thanks!).
-
+
Gvran Uddeborg <gvran@uddeborg.pp.se> */
if (strcmp (section->name, _LIB) == 0)
@@ -3845,7 +4068,7 @@ coff_set_section_contents (abfd, section, location, offset, count)
#endif
/* Don't write out bss sections - one way to do this is to
- see if the filepos has not been set. */
+ see if the filepos has not been set. */
if (section->filepos == 0)
return true;
@@ -3953,7 +4176,7 @@ coff_slurp_line_table (abfd, asect)
while (counter < asect->lineno_count)
{
struct internal_lineno dst;
- coff_swap_lineno_in (abfd, src, &dst);
+ bfd_coff_swap_lineno_in (abfd, src, &dst);
cache_ptr->line_number = dst.l_lnno;
if (cache_ptr->line_number == 0)
@@ -4002,7 +4225,7 @@ coff_slurp_line_table (abfd, asect)
}
asect->lineno = lineno_cache;
- /* FIXME, free native_lineno here, or use alloca or something. */
+ /* FIXME, free native_lineno here, or use alloca or something. */
return true;
}
@@ -4122,7 +4345,7 @@ coff_slurp_symbol_table (abfd)
case COFF_SYMBOL_UNDEFINED:
dst->symbol.section = bfd_und_section_ptr;
dst->symbol.value = 0;
- break;
+ break;
case COFF_SYMBOL_PE_SECTION:
dst->symbol.flags |= BSF_EXPORT | BSF_SECTION_SYM;
@@ -4169,7 +4392,7 @@ coff_slurp_symbol_table (abfd)
#ifdef I960
case C_LEAFSTAT: /* static leaf procedure */
#endif
-#if defined ARM
+#if defined ARM
case C_THUMBSTAT: /* Thumb static */
case C_THUMBLABEL: /* Thumb label */
case C_THUMBSTATFUNC:/* Thumb static function */
@@ -4206,7 +4429,8 @@ coff_slurp_symbol_table (abfd)
#endif
case C_REGPARM: /* register parameter */
case C_REG: /* register variable */
-#ifndef TIC80COFF
+ /* C_AUTOARG conflictes with TI COFF C_UEXT */
+#if !defined (TIC80COFF) && !defined (TICOFF)
#ifdef C_AUTOARG
case C_AUTOARG: /* 960-specific storage class */
#endif
@@ -4287,7 +4511,7 @@ coff_slurp_symbol_table (abfd)
#endif
case C_BLOCK: /* ".bb" or ".eb" */
- case C_FCN: /* ".bf" or ".ef" (or PE ".lf") */
+ case C_FCN: /* ".bf" or ".ef" (or PE ".lf") */
case C_EFCN: /* physical end of function */
#if defined COFF_WITH_PE
/* PE sets the symbol to a value relative to the start
@@ -4310,6 +4534,11 @@ coff_slurp_symbol_table (abfd)
#endif
break;
+ case C_STATLAB: /* Static load time label */
+ dst->symbol.value = src->u.syment.n_value;
+ dst->symbol.flags = BSF_GLOBAL;
+ break;
+
case C_NULL:
/* PE DLLs sometimes have zeroed out symbols for some
reason. Just ignore them without a warning. */
@@ -4328,11 +4557,10 @@ coff_slurp_symbol_table (abfd)
/* NT uses 0x67 for a weak symbol, not C_ALIAS. */
case C_ALIAS: /* duplicate tag */
#endif
- /* New storage classes for TIc80 */
-#ifdef TIC80COFF
+ /* New storage classes for TI COFF */
+#if defined(TIC80COFF) || defined(TICOFF)
case C_UEXT: /* Tentative external definition */
#endif
- case C_STATLAB: /* Static load time label */
case C_EXTLAB: /* External load time label */
case C_HIDDEN: /* ext symbol in dmert public lib */
default:
@@ -4502,7 +4730,6 @@ SUBSUBSECTION
into a howto table vector; the 88k subtracts a number from the
@code{r_type} field and creates an addend field.
-
*/
#ifndef CALC_ADDEND
@@ -4557,7 +4784,6 @@ coff_slurp_reloc_table (abfd, asect, symbols)
if (reloc_cache == NULL)
return false;
-
for (idx = 0; idx < asect->reloc_count; idx++)
{
struct internal_reloc dst;
@@ -4678,7 +4904,6 @@ coff_canonicalize_reloc (abfd, section, relptr, symbols)
arelent *tblptr = section->relocation;
unsigned int count = 0;
-
if (section->flags & SEC_CONSTRUCTOR)
{
/* this section has relocs made up by us, they are not in the
@@ -4701,8 +4926,6 @@ coff_canonicalize_reloc (abfd, section, relptr, symbols)
for (; count++ < section->reloc_count;)
*relptr++ = tblptr++;
-
-
}
*relptr = 0;
return section->reloc_count;
@@ -4890,6 +5113,16 @@ static const bfd_coff_backend_data bfd_coff_std_swap_table =
false,
#endif
COFF_DEFAULT_SECTION_ALIGNMENT_POWER,
+#ifdef COFF_FORCE_SYMBOLS_IN_STRINGS
+ true,
+#else
+ false,
+#endif
+#ifdef COFF_DEBUG_STRING_WIDE_PREFIX
+ 4,
+#else
+ 2,
+#endif
coff_SWAP_filehdr_in, coff_SWAP_aouthdr_in, coff_SWAP_scnhdr_in,
coff_SWAP_reloc_in, coff_bad_format_hook, coff_set_arch_mach_hook,
coff_mkobject_hook, styp_to_sec_flags, coff_set_alignment_hook,
@@ -4921,7 +5154,7 @@ static const bfd_coff_backend_data bfd_coff_std_swap_table =
#define coff_bfd_copy_private_section_data _bfd_generic_bfd_copy_private_section_data
#endif
-#ifndef coff_bfd_copy_private_bfd_data
+#ifndef coff_bfd_copy_private_bfd_data
#define coff_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data
#endif
@@ -4933,7 +5166,7 @@ static const bfd_coff_backend_data bfd_coff_std_swap_table =
#define coff_bfd_set_private_flags _bfd_generic_bfd_set_private_flags
#endif
-#ifndef coff_bfd_print_private_bfd_data
+#ifndef coff_bfd_print_private_bfd_data
#define coff_bfd_print_private_bfd_data _bfd_generic_bfd_print_private_bfd_data
#endif
diff --git a/contrib/binutils/bfd/coffgen.c b/contrib/binutils/bfd/coffgen.c
index f2410d9..35e8f71 100644
--- a/contrib/binutils/bfd/coffgen.c
+++ b/contrib/binutils/bfd/coffgen.c
@@ -60,7 +60,7 @@ static void coff_pointerize_aux
static boolean make_a_section_from_file
PARAMS ((bfd *, struct internal_scnhdr *, unsigned int));
static const bfd_target *coff_real_object_p
- PARAMS ((bfd *, unsigned, struct internal_filehdr *,
+ PARAMS ((bfd *, unsigned, struct internal_filehdr *,
struct internal_aouthdr *));
static void fixup_symbol_value
PARAMS ((bfd *, coff_symbol_type *, struct internal_syment *));
@@ -212,7 +212,7 @@ coff_real_object_p (abfd, nscns, internal_f, internal_a)
goto fail;
/* Set the arch/mach *before* swapping in sections; section header swapping
- may depend on arch/mach info. */
+ may depend on arch/mach info. */
if (bfd_coff_set_arch_mach_hook (abfd, (PTR) internal_f) == false)
goto fail;
@@ -340,7 +340,6 @@ coff_get_symtab_upper_bound (abfd)
return (bfd_get_symcount (abfd) + 1) * (sizeof (coff_symbol_type *));
}
-
/* Canonicalize a COFF symbol table. */
long
@@ -525,7 +524,7 @@ coff_count_linenumbers (abfd)
{
asymbol *q_maybe = *p;
- if (bfd_asymbol_flavour (q_maybe) == bfd_target_coff_flavour)
+ if (bfd_family_coff (bfd_asymbol_bfd (q_maybe)))
{
coff_symbol_type *q = coffsymbol (q_maybe);
@@ -558,13 +557,12 @@ coff_count_linenumbers (abfd)
/* Takes a bfd and a symbol, returns a pointer to the coff specific
area of the symbol if there is one. */
-/*ARGSUSED*/
coff_symbol_type *
coff_symbol_from (ignore_abfd, symbol)
bfd *ignore_abfd ATTRIBUTE_UNUSED;
asymbol *symbol;
{
- if (bfd_asymbol_flavour (symbol) != bfd_target_coff_flavour)
+ if (!bfd_family_coff (bfd_asymbol_bfd (symbol)))
return (coff_symbol_type *) NULL;
if (bfd_asymbol_bfd (symbol)->tdata.coff_obj_data == (coff_data_type *) NULL)
@@ -608,8 +606,11 @@ fixup_symbol_value (abfd, coff_symbol_ptr, syment)
syment->n_value = (coff_symbol_ptr->symbol.value
+ coff_symbol_ptr->symbol.section->output_offset);
if (! obj_pe (abfd))
- syment->n_value +=
- coff_symbol_ptr->symbol.section->output_section->vma;
+ {
+ syment->n_value += (syment->n_sclass == C_STATLAB)
+ ? coff_symbol_ptr->symbol.section->output_section->lma
+ : coff_symbol_ptr->symbol.section->output_section->vma;
+ }
}
else
{
@@ -689,7 +690,7 @@ coff_renumber_symbols (bfd_ptr, first_undef)
for (symbol_index = 0; symbol_index < symbol_count; symbol_index++)
{
coff_symbol_type *coff_symbol_ptr = coff_symbol_from (bfd_ptr, symbol_ptr_ptr[symbol_index]);
- symbol_ptr_ptr[symbol_index]->udata.i = symbol_index;
+ symbol_ptr_ptr[symbol_index]->udata.i = symbol_index;
if (coff_symbol_ptr && coff_symbol_ptr->native)
{
combined_entry_type *s = coff_symbol_ptr->native;
@@ -816,7 +817,16 @@ coff_fix_symbol_name (abfd, symbol, native, string_size_p,
{
unsigned int filnmlen;
- strncpy (native->u.syment._n._n_name, ".file", SYMNMLEN);
+ if (bfd_coff_force_symnames_in_strings (abfd))
+ {
+ native->u.syment._n._n_n._n_offset =
+ (*string_size_p + STRING_SIZE_SIZE);
+ native->u.syment._n._n_n._n_zeroes = 0;
+ *string_size_p += 6; /* strlen(".file") + 1 */
+ }
+ else
+ strncpy (native->u.syment._n._n_name, ".file", SYMNMLEN);
+
auxent = &(native + 1)->u.auxent;
filnmlen = bfd_coff_filnmlen (abfd);
@@ -843,7 +853,7 @@ coff_fix_symbol_name (abfd, symbol, native, string_size_p,
}
else
{
- if (name_length <= SYMNMLEN)
+ if (name_length <= SYMNMLEN && !bfd_coff_force_symnames_in_strings (abfd))
{
/* This name will fit into the symbol neatly */
strncpy (native->u.syment._n._n_name, symbol->name, SYMNMLEN);
@@ -858,7 +868,8 @@ coff_fix_symbol_name (abfd, symbol, native, string_size_p,
else
{
long filepos;
- bfd_byte buf[2];
+ bfd_byte buf[4];
+ int prefix_len = bfd_coff_debug_string_prefix_length (abfd);
/* This name should be written into the .debug section. For
some reason each name is preceded by a two byte length
@@ -868,24 +879,29 @@ coff_fix_symbol_name (abfd, symbol, native, string_size_p,
if (*debug_string_section_p == (asection *) NULL)
*debug_string_section_p = bfd_get_section_by_name (abfd, ".debug");
filepos = bfd_tell (abfd);
- bfd_put_16 (abfd, name_length + 1, buf);
+ if (prefix_len == 4)
+ bfd_put_32 (abfd, name_length + 1, buf);
+ else
+ bfd_put_16 (abfd, name_length + 1, buf);
+
if (!bfd_set_section_contents (abfd,
*debug_string_section_p,
(PTR) buf,
(file_ptr) *debug_string_size_p,
- (bfd_size_type) 2)
+ (bfd_size_type) prefix_len)
|| !bfd_set_section_contents (abfd,
*debug_string_section_p,
(PTR) symbol->name,
((file_ptr) *debug_string_size_p
- + 2),
+ + prefix_len),
(bfd_size_type) name_length + 1))
abort ();
if (bfd_seek (abfd, filepos, SEEK_SET) != 0)
abort ();
- native->u.syment._n._n_n._n_offset = *debug_string_size_p + 2;
+ native->u.syment._n._n_n._n_offset =
+ *debug_string_size_p + prefix_len;
native->u.syment._n._n_n._n_zeroes = 0;
- *debug_string_size_p += name_length + 3;
+ *debug_string_size_p += name_length + 1 + prefix_len;
}
}
}
@@ -1085,7 +1101,7 @@ coff_write_native_symbol (abfd, symbol, written, string_size_p,
while (lineno[count].line_number != 0)
{
#if 0
- /* 13 april 92. sac
+ /* 13 april 92. sac
I've been told this, but still need proof:
> The second bug is also in `bfd/coffcode.h'. This bug
> causes the linker to screw up the pc-relocations for
@@ -1241,7 +1257,7 @@ coff_write_symbols (abfd)
{
/* This is not a COFF symbol, so it certainly is not a
file name, nor does it go in the .debug section. */
- maxlen = SYMNMLEN;
+ maxlen = bfd_coff_force_symnames_in_strings (abfd) ? 0 : SYMNMLEN;
}
else if (bfd_coff_symname_in_debug (abfd,
&c_symbol->native->u.syment))
@@ -1252,9 +1268,13 @@ coff_write_symbols (abfd)
}
else if (c_symbol->native->u.syment.n_sclass == C_FILE
&& c_symbol->native->u.syment.n_numaux > 0)
- maxlen = bfd_coff_filnmlen (abfd);
+ {
+ if (bfd_coff_force_symnames_in_strings (abfd))
+ bfd_write (".file", 1, 6, abfd);
+ maxlen = bfd_coff_filnmlen (abfd);
+ }
else
- maxlen = SYMNMLEN;
+ maxlen = bfd_coff_force_symnames_in_strings (abfd) ? 0 : SYMNMLEN;
if (name_length > maxlen)
{
@@ -1354,7 +1374,6 @@ coff_write_linenumbers (abfd)
return true;
}
-/*ARGSUSED */
alent *
coff_get_lineno (ignore_abfd, symbol)
bfd *ignore_abfd ATTRIBUTE_UNUSED;
@@ -1465,7 +1484,7 @@ coff_pointerize_aux (abfd, table_base, symbol, indaux, auxent)
/* Allocate space for the ".debug" section, and read it.
We did not read the debug section until now, because
- we didn't want to go to the trouble until someone needed it. */
+ we didn't want to go to the trouble until someone needed it. */
static char *
build_debug_section (abfd)
@@ -1487,7 +1506,7 @@ build_debug_section (abfd)
if (debug_section == NULL)
return NULL;
- /* Seek to the beginning of the `.debug' section and read it.
+ /* Seek to the beginning of the `.debug' section and read it.
Save the current position first; it is needed by our caller.
Then read debug section and reset the file pointer. */
@@ -1501,7 +1520,6 @@ build_debug_section (abfd)
return debug_section;
}
-
/* Return a pointer to a malloc'd copy of 'name'. 'name' may not be
\0-terminated, but will not exceed 'maxlen' characters. The copy *will*
be \0-terminated. */
@@ -1589,7 +1607,7 @@ _bfd_coff_read_string_table (abfd)
+ obj_raw_syment_count (abfd) * bfd_coff_symesz (abfd)),
SEEK_SET) != 0)
return NULL;
-
+
if (bfd_read (extstrsize, sizeof extstrsize, 1, abfd) != sizeof extstrsize)
{
if (bfd_get_error () != bfd_error_file_truncated)
@@ -1790,7 +1808,7 @@ coff_get_normalized_symtab (abfd)
{
break;
} /* if end of string */
- } /* possible lengths of this string. */
+ } /* possible lengths of this string. */
if ((newstring = (PTR) bfd_alloc (abfd, ++i)) == NULL)
return (NULL);
@@ -1888,7 +1906,6 @@ coff_bfd_make_debug_symbol (abfd, ptr, sz)
return &new->symbol;
}
-/*ARGSUSED */
void
coff_get_symbol_info (abfd, symbol, ret)
bfd *abfd;
@@ -2141,7 +2158,7 @@ _bfd_coff_is_local_label_name (abfd, name)
/* Provided a BFD, a section and an offset (in bytes, not octets) into the
section, calculate and return the name of the source file and the line
nearest to the wanted location. */
-/*ARGSUSED*/
+
boolean
coff_find_nearest_line (abfd, section, symbols, offset, filename_ptr,
functionname_ptr, line_ptr)
@@ -2168,17 +2185,25 @@ coff_find_nearest_line (abfd, section, symbols, offset, filename_ptr,
if (! _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset,
&found, filename_ptr,
functionname_ptr, line_ptr,
- &coff_data (abfd)->line_info))
+ &coff_data(abfd)->line_info))
return false;
+
if (found)
return true;
+ /* Also try examining DWARF2 debugging information. */
+ if (_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
+ filename_ptr, functionname_ptr,
+ line_ptr, 0,
+ &coff_data(abfd)->dwarf2_find_line_info))
+ return true;
+
*filename_ptr = 0;
*functionname_ptr = 0;
*line_ptr = 0;
/* Don't try and find line numbers in a non coff file */
- if (abfd->xvec->flavour != bfd_target_coff_flavour)
+ if (!bfd_family_coff (abfd))
return false;
if (cof == NULL)
@@ -2385,7 +2410,7 @@ bfd_coff_set_symbol_class (abfd, symbol, class)
We cheat here by creating a fake native entry for it and
then filling in the class. This code is based on that in
coff_write_alien_symbol(). */
-
+
combined_entry_type * native;
native = (combined_entry_type *) bfd_alloc (abfd, sizeof (* native));
@@ -2393,10 +2418,10 @@ bfd_coff_set_symbol_class (abfd, symbol, class)
return false;
memset (native, 0, sizeof (* native));
-
+
native->u.syment.n_type = T_NULL;
native->u.syment.n_sclass = class;
-
+
if (bfd_is_und_section (symbol->section))
{
native->u.syment.n_scnum = N_UNDEF;
@@ -2415,19 +2440,18 @@ bfd_coff_set_symbol_class (abfd, symbol, class)
+ symbol->section->output_offset);
if (! obj_pe (abfd))
native->u.syment.n_value += symbol->section->output_section->vma;
-
+
/* Copy the any flags from the the file header into the symbol.
FIXME: Why? */
native->u.syment.n_flags = bfd_asymbol_bfd (& csym->symbol)->flags;
}
-
+
csym->native = native;
}
else
{
csym->native->u.syment.n_sclass = class;
}
-
+
return true;
}
-
diff --git a/contrib/binutils/bfd/cofflink.c b/contrib/binutils/bfd/cofflink.c
index 609f665..223ccbf 100644
--- a/contrib/binutils/bfd/cofflink.c
+++ b/contrib/binutils/bfd/cofflink.c
@@ -40,6 +40,15 @@ static int process_embedded_commands
PARAMS ((bfd *, struct bfd_link_info *, bfd *));
static void mark_relocs PARAMS ((struct coff_final_link_info *, bfd *));
+/* Return true if SYM is a weak, external symbol. */
+#define IS_WEAK_EXTERNAL(abfd, sym) \
+ ((sym).n_sclass == C_WEAKEXT \
+ || (obj_pe (abfd) && (sym).n_sclass == C_NT_WEAK))
+
+/* Return true if SYM is an external symbol. */
+#define IS_EXTERNAL(abfd, sym) \
+ ((sym).n_sclass == C_EXT || IS_WEAK_EXTERNAL (abfd, sym))
+
/* Define macros so that the ISFCN, et. al., macros work correctly.
These macros are defined in include/coff/internal.h in terms of
N_TMASK, etc. These definitions require a user to define local
@@ -395,8 +404,7 @@ coff_link_add_symbols (abfd, info)
break;
}
- if (sym.n_sclass == C_WEAKEXT
- || (obj_pe (abfd) && sym.n_sclass == C_NT_WEAK))
+ if (IS_WEAK_EXTERNAL (abfd, sym))
flags = BSF_WEAK;
addit = true;
@@ -894,8 +902,7 @@ _bfd_coff_final_link (abfd, info)
for (p = o->link_order_head; p != NULL; p = p->next)
{
if (p->type == bfd_indirect_link_order
- && (bfd_get_flavour (p->u.indirect.section->owner)
- == bfd_target_coff_flavour))
+ && bfd_family_coff (p->u.indirect.section->owner))
{
sub = p->u.indirect.section->owner;
if (! bfd_coff_link_output_has_begun (sub, & finfo))
@@ -921,7 +928,7 @@ _bfd_coff_final_link (abfd, info)
if (! bfd_coff_final_link_postscript (abfd, & finfo))
goto error_return;
-
+
/* Free up the buffers used by _bfd_coff_link_input_bfd. */
coff_debug_merge_hash_table_free (&finfo.debug_merge);
@@ -982,7 +989,7 @@ _bfd_coff_final_link (abfd, info)
/* If doing task linking (ld --task-link) then make a pass through the
global symbols, writing out any that are defined, and making them
- static. */
+ static. */
if (info->task_link)
{
finfo.failed = false;
@@ -1095,6 +1102,8 @@ _bfd_coff_final_link (abfd, info)
if (! _bfd_stringtab_emit (abfd, finfo.strtab))
return false;
+
+ obj_coff_strings_written (abfd) = true;
}
_bfd_stringtab_free (finfo.strtab);
@@ -1152,7 +1161,7 @@ dores_com (ptr, output_bfd, heap)
bfd *output_bfd;
int heap;
{
- if (coff_data(output_bfd)->pe)
+ if (coff_data(output_bfd)->pe)
{
int val = strtoul (ptr, &ptr, 0);
if (heap)
@@ -1160,7 +1169,7 @@ dores_com (ptr, output_bfd, heap)
else
pe_data(output_bfd)->pe_opthdr.SizeOfStackReserve =val;
- if (ptr[0] == ',')
+ if (ptr[0] == ',')
{
int val = strtoul (ptr+1, &ptr, 0);
if (heap)
@@ -1186,7 +1195,7 @@ char **dst;
}
/* Process any magic embedded commands in a section called .drectve */
-
+
static int
process_embedded_commands (output_bfd, info, abfd)
bfd *output_bfd;
@@ -1197,19 +1206,19 @@ process_embedded_commands (output_bfd, info, abfd)
char *s;
char *e;
char *copy;
- if (!sec)
+ if (!sec)
return 1;
-
+
copy = bfd_malloc ((size_t) sec->_raw_size);
- if (!copy)
+ if (!copy)
return 0;
- if (! bfd_get_section_contents(abfd, sec, copy, 0, sec->_raw_size))
+ if (! bfd_get_section_contents(abfd, sec, copy, 0, sec->_raw_size))
{
free (copy);
return 0;
}
e = copy + sec->_raw_size;
- for (s = copy; s < e ; )
+ for (s = copy; s < e ; )
{
if (s[0]!= '-') {
s++;
@@ -1230,7 +1239,7 @@ process_embedded_commands (output_bfd, info, abfd)
s = get_name(s, &name);
s = get_name(s, &attribs);
while (loop) {
- switch (*attribs++)
+ switch (*attribs++)
{
case 'W':
had_write = 1;
@@ -1264,7 +1273,7 @@ process_embedded_commands (output_bfd, info, abfd)
{
s = dores_com (s+6, output_bfd, 0);
}
- else
+ else
s++;
}
free (copy);
@@ -1274,7 +1283,7 @@ process_embedded_commands (output_bfd, info, abfd)
/* Place a marker against all symbols which are used by relocations.
This marker can be picked up by the 'do we skip this symbol ?'
loop in _bfd_coff_link_input_bfd() and used to prevent skipping
- that symbol.
+ that symbol.
*/
static void
@@ -1286,14 +1295,13 @@ mark_relocs (finfo, input_bfd)
if ((bfd_get_file_flags (input_bfd) & HAS_SYMS) == 0)
return;
-
+
for (a = input_bfd->sections; a != (asection *) NULL; a = a->next)
{
struct internal_reloc * internal_relocs;
struct internal_reloc * irel;
struct internal_reloc * irelend;
-
if ((a->flags & SEC_RELOC) == 0 || a->reloc_count < 1)
continue;
@@ -1306,7 +1314,7 @@ mark_relocs (finfo, input_bfd)
? (finfo->section_info[ a->output_section->target_index ].relocs + a->output_section->reloc_count)
: finfo->internal_relocs)
);
-
+
if (internal_relocs == NULL)
continue;
@@ -1317,7 +1325,7 @@ mark_relocs (finfo, input_bfd)
been initialised to 0) for all of the symbols that are used
in the relocation table. This will then be picked up in the
skip/don't pass */
-
+
for (; irel < irelend; irel++)
{
finfo->sym_indices[ irel->r_symndx ] = -1;
@@ -1400,8 +1408,8 @@ _bfd_coff_link_input_bfd (finfo, input_bfd)
&& finfo->info->relocateable)
{
/* mark the symbol array as 'not-used' */
- memset (indexp, 0, obj_raw_syment_count (input_bfd) * sizeof * indexp);
-
+ memset (indexp, 0, obj_raw_syment_count (input_bfd) * sizeof * indexp);
+
mark_relocs (finfo, input_bfd);
}
@@ -1448,7 +1456,7 @@ _bfd_coff_link_input_bfd (finfo, input_bfd)
dont_skip_symbol = *indexp;
else
dont_skip_symbol = false;
-
+
*indexp = -1;
skip = false;
@@ -1834,12 +1842,8 @@ _bfd_coff_link_input_bfd (finfo, input_bfd)
}
/* If doing task linking, convert normal global function symbols to
- static functions. */
-
- if (finfo->info->task_link
- && (isym.n_sclass == C_EXT
- || isym.n_sclass == C_WEAKEXT
- || (obj_pe (input_bfd) && isym.n_sclass == C_NT_WEAK)))
+ static functions. */
+ if (finfo->info->task_link && IS_EXTERNAL (input_bfd, isym))
isym.n_sclass = C_STAT;
/* Output the symbol. */
@@ -2202,7 +2206,7 @@ _bfd_coff_link_input_bfd (finfo, input_bfd)
is.n_numaux, auxptr);
}
- skipping = false;
+ skipping = false;
}
iline.l_addr.l_symndx = indx;
@@ -2400,8 +2404,8 @@ _bfd_coff_link_input_bfd (finfo, input_bfd)
/* This reloc is against a symbol we are
stripping. This should have been handled
by the 'dont_skip_symbol' code in the while
- loop at the top of this function. */
-
+ loop at the top of this function. */
+
is = finfo->internal_syms + irel->r_symndx;
name = (_bfd_coff_internal_syment_name
@@ -2425,9 +2429,9 @@ _bfd_coff_link_input_bfd (finfo, input_bfd)
if (secdata == NULL || secdata->stab_info == NULL)
{
if (! bfd_set_section_contents (output_bfd, o->output_section,
- contents,
- (file_ptr)
- (o->output_offset *
+ contents,
+ (file_ptr)
+ (o->output_offset *
bfd_octets_per_byte (output_bfd)),
(o->_cooked_size != 0
? o->_cooked_size
@@ -2549,20 +2553,25 @@ _bfd_coff_write_global_sym (h, data)
/* If doing task linking and this is the pass where we convert
defined globals to statics, then do that conversion now. If the
symbol is not being converted, just ignore it and it will be
- output during a later pass. */
+ output during a later pass. */
if (finfo->global_to_static)
{
- if (isym.n_sclass != C_EXT
- && isym.n_sclass != C_WEAKEXT
- && (! obj_pe (output_bfd) || isym.n_sclass != C_NT_WEAK))
- {
- return true;
- }
+ if (! IS_EXTERNAL (output_bfd, isym))
+ return true;
+
isym.n_sclass = C_STAT;
}
+ /* When a weak symbol is not overriden by a strong one,
+ turn it into an external symbol when not building a
+ shared or relocateable object. */
+ if (! finfo->info->shared
+ && ! finfo->info->relocateable
+ && IS_WEAK_EXTERNAL (finfo->output_bfd, isym))
+ isym.n_sclass = C_EXT;
+
isym.n_numaux = h->numaux;
-
+
bfd_coff_swap_sym_out (output_bfd, (PTR) &isym, (PTR) finfo->outsyms);
symesz = bfd_coff_symesz (output_bfd);
@@ -2654,7 +2663,7 @@ _bfd_coff_write_global_sym (h, data)
/* Write out task global symbols, converting them to statics. Called
via coff_link_hash_traverse. Calls bfd_coff_write_global_sym to do
- the dirty work, if the symbol we are processing needs conversion. */
+ the dirty work, if the symbol we are processing needs conversion. */
boolean
_bfd_coff_write_task_globals (h, data)
@@ -2740,7 +2749,7 @@ _bfd_coff_reloc_link_order (output_bfd, finfo, output_section, link_order)
break;
}
ok = bfd_set_section_contents (output_bfd, output_section, (PTR) buf,
- (file_ptr)
+ (file_ptr)
(link_order->offset *
bfd_octets_per_byte (output_bfd)), size);
free (buf);
@@ -2862,7 +2871,7 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
return false;
}
else
- {
+ {
h = obj_coff_sym_hashes (input_bfd)[symndx];
sym = syms + symndx;
}
@@ -2877,7 +2886,6 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
else
addend = 0;
-
howto = bfd_coff_rtype_to_howto (input_bfd, input_section, rel, h,
sym, &addend);
if (howto == NULL)
@@ -2929,6 +2937,9 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
+ sec->output_offset);
}
+ else if (h->root.type == bfd_link_hash_undefweak)
+ val = 0;
+
else if (! info->relocateable)
{
if (! ((*info->callbacks->undefined_symbol)
@@ -2940,7 +2951,7 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
if (info->base_file)
{
- /* Emit a reloc if the backend thinks it needs it. */
+ /* Emit a reloc if the backend thinks it needs it. */
if (sym && pe_data (output_bfd)->in_reloc_p (output_bfd, howto))
{
/* Relocation to a symbol in a section which isn't
@@ -2949,9 +2960,9 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
reloc section. Note that the base file is not
portable between systems. We write out a long here,
and dlltool reads in a long. */
- long addr = (rel->r_vaddr
- - input_section->vma
- + input_section->output_offset
+ long addr = (rel->r_vaddr
+ - input_section->vma
+ + input_section->output_offset
+ input_section->output_section->vma);
if (coff_data (output_bfd)->pe)
addr -= pe_data(output_bfd)->pe_opthdr.ImageBase;
@@ -2963,7 +2974,7 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
}
}
}
-
+
rstat = _bfd_final_link_relocate (howto, input_bfd, input_section,
contents,
rel->r_vaddr - input_section->vma,
@@ -3007,4 +3018,3 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
}
return true;
}
-
diff --git a/contrib/binutils/bfd/coffswap.h b/contrib/binutils/bfd/coffswap.h
index d7d090f..2f89afb 100644
--- a/contrib/binutils/bfd/coffswap.h
+++ b/contrib/binutils/bfd/coffswap.h
@@ -168,12 +168,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef GET_SCNHDR_NRELOC
#define GET_SCNHDR_NRELOC bfd_h_get_16
#endif
+#ifndef MAX_SCNHDR_NRELOC
+#define MAX_SCNHDR_NRELOC 0xffff
+#endif
#ifndef PUT_SCNHDR_NRELOC
#define PUT_SCNHDR_NRELOC bfd_h_put_16
#endif
#ifndef GET_SCNHDR_NLNNO
#define GET_SCNHDR_NLNNO bfd_h_get_16
#endif
+#ifndef MAX_SCNHDR_NLNNO
+#define MAX_SCNHDR_NLNNO 0xffff
+#endif
#ifndef PUT_SCNHDR_NLNNO
#define PUT_SCNHDR_NLNNO bfd_h_put_16
#endif
@@ -184,6 +190,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define PUT_SCNHDR_FLAGS bfd_h_put_32
#endif
+#ifndef GET_RELOC_VADDR
+#define GET_RELOC_VADDR bfd_h_get_32
+#endif
+#ifndef PUT_RELOC_VADDR
+#define PUT_RELOC_VADDR bfd_h_put_32
+#endif
static void coff_swap_aouthdr_in PARAMS ((bfd *, PTR, PTR));
static unsigned int coff_swap_aouthdr_out PARAMS ((bfd *, PTR, PTR));
@@ -217,7 +229,7 @@ coff_swap_reloc_in (abfd, src, dst)
RELOC *reloc_src = (RELOC *) src;
struct internal_reloc *reloc_dst = (struct internal_reloc *) dst;
- reloc_dst->r_vaddr = bfd_h_get_32(abfd, (bfd_byte *)reloc_src->r_vaddr);
+ reloc_dst->r_vaddr = GET_RELOC_VADDR (abfd, (bfd_byte *)reloc_src->r_vaddr);
reloc_dst->r_symndx = bfd_h_get_signed_32(abfd, (bfd_byte *) reloc_src->r_symndx);
#ifdef RS6000COFF_C
@@ -241,7 +253,7 @@ coff_swap_reloc_out (abfd, src, dst)
{
struct internal_reloc *reloc_src = (struct internal_reloc *)src;
struct external_reloc *reloc_dst = (struct external_reloc *)dst;
- bfd_h_put_32(abfd, reloc_src->r_vaddr, (bfd_byte *) reloc_dst->r_vaddr);
+ PUT_RELOC_VADDR (abfd, reloc_src->r_vaddr, (bfd_byte *) reloc_dst->r_vaddr);
bfd_h_put_32(abfd, reloc_src->r_symndx, (bfd_byte *) reloc_dst->r_symndx);
#ifdef RS6000COFF_C
@@ -324,7 +336,6 @@ coff_swap_filehdr_out (abfd, in, out)
return bfd_coff_filhsz (abfd);
}
-
#ifndef NO_COFF_SYMBOLS
static void
@@ -347,9 +358,9 @@ coff_swap_sym_in (abfd, ext1, in1)
memcpy(in->_n._n_name, ext->e.e_name, SYMNMLEN);
#endif
}
- in->n_value = bfd_h_get_32(abfd, (bfd_byte *) ext->e_value);
+ in->n_value = bfd_h_get_32(abfd, (bfd_byte *) ext->e_value);
in->n_scnum = bfd_h_get_16(abfd, (bfd_byte *) ext->e_scnum);
- if (sizeof(ext->e_type) == 2){
+ if (sizeof (ext->e_type) == 2){
in->n_type = bfd_h_get_16(abfd, (bfd_byte *) ext->e_type);
}
else {
@@ -383,7 +394,7 @@ coff_swap_sym_out (abfd, inp, extp)
}
bfd_h_put_32(abfd, in->n_value , (bfd_byte *) ext->e_value);
bfd_h_put_16(abfd, in->n_scnum , (bfd_byte *) ext->e_scnum);
- if (sizeof(ext->e_type) == 2)
+ if (sizeof (ext->e_type) == 2)
{
bfd_h_put_16(abfd, in->n_type , (bfd_byte *) ext->e_type);
}
@@ -419,7 +430,7 @@ coff_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
case C_FILE:
if (ext->x_file.x_fname[0] == 0) {
in->x_file.x_n.x_zeroes = 0;
- in->x_file.x_n.x_offset =
+ in->x_file.x_n.x_offset =
bfd_h_get_32(abfd, (bfd_byte *) ext->x_file.x_n.x_offset);
} else {
#if FILNMLEN != E_FILNMLEN
@@ -439,28 +450,6 @@ coff_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
}
goto end;
- /* RS/6000 "csect" auxents */
-#ifdef RS6000COFF_C
- case C_EXT:
- case C_HIDEXT:
- if (indx + 1 == numaux)
- {
- in->x_csect.x_scnlen.l = bfd_h_get_32 (abfd, ext->x_csect.x_scnlen);
- in->x_csect.x_parmhash = bfd_h_get_32 (abfd,
- ext->x_csect.x_parmhash);
- in->x_csect.x_snhash = bfd_h_get_16 (abfd, ext->x_csect.x_snhash);
- /* We don't have to hack bitfields in x_smtyp because it's
- defined by shifts-and-ands, which are equivalent on all
- byte orders. */
- in->x_csect.x_smtyp = bfd_h_get_8 (abfd, ext->x_csect.x_smtyp);
- in->x_csect.x_smclas = bfd_h_get_8 (abfd, ext->x_csect.x_smclas);
- in->x_csect.x_stab = bfd_h_get_32 (abfd, ext->x_csect.x_stab);
- in->x_csect.x_snstab = bfd_h_get_16 (abfd, ext->x_csect.x_snstab);
- goto end;
- }
- break;
-#endif
-
case C_STAT:
#ifdef C_LEAFSTAT
case C_LEAFSTAT:
@@ -517,7 +506,7 @@ coff_swap_aux_in (abfd, ext1, type, class, indx, numaux, in1)
end: ;
/* the semicolon is because MSVC doesn't like labels at
- end of block. */
+ end of block. */
#ifdef COFF_ADJUST_AUX_IN_POST
COFF_ADJUST_AUX_IN_POST (abfd, ext1, type, class, indx, numaux, in1);
@@ -558,27 +547,6 @@ coff_swap_aux_out (abfd, inp, type, class, indx, numaux, extp)
}
goto end;
-#ifdef RS6000COFF_C
- /* RS/6000 "csect" auxents */
- case C_EXT:
- case C_HIDEXT:
- if (indx + 1 == numaux)
- {
- PUTWORD (abfd, in->x_csect.x_scnlen.l, ext->x_csect.x_scnlen);
- PUTWORD (abfd, in->x_csect.x_parmhash, ext->x_csect.x_parmhash);
- PUTHALF (abfd, in->x_csect.x_snhash, ext->x_csect.x_snhash);
- /* We don't have to hack bitfields in x_smtyp because it's
- defined by shifts-and-ands, which are equivalent on all
- byte orders. */
- PUTBYTE (abfd, in->x_csect.x_smtyp, ext->x_csect.x_smtyp);
- PUTBYTE (abfd, in->x_csect.x_smclas, ext->x_csect.x_smclas);
- PUTWORD (abfd, in->x_csect.x_stab, ext->x_csect.x_stab);
- PUTHALF (abfd, in->x_csect.x_snstab, ext->x_csect.x_snstab);
- goto end;
- }
- break;
-#endif
-
case C_STAT:
#ifdef C_LEAFSTAT
case C_LEAFSTAT:
@@ -703,9 +671,12 @@ coff_swap_aouthdr_in (abfd, aouthdr_ext1, aouthdr_int1)
bfd_h_put_32(abfd, aouthdr_int->vid[1], (bfd_byte *) aouthdr_ext->vid + 4);
#endif
-
#ifdef RS6000COFF_C
+#ifdef XCOFF64
+ aouthdr_int->o_toc = bfd_h_get_64(abfd, aouthdr_ext->o_toc);
+#else
aouthdr_int->o_toc = bfd_h_get_32(abfd, aouthdr_ext->o_toc);
+#endif
aouthdr_int->o_snentry = bfd_h_get_16(abfd, aouthdr_ext->o_snentry);
aouthdr_int->o_sntext = bfd_h_get_16(abfd, aouthdr_ext->o_sntext);
aouthdr_int->o_sndata = bfd_h_get_16(abfd, aouthdr_ext->o_sndata);
@@ -716,9 +687,14 @@ coff_swap_aouthdr_in (abfd, aouthdr_ext1, aouthdr_int1)
aouthdr_int->o_algndata = bfd_h_get_16(abfd, aouthdr_ext->o_algndata);
aouthdr_int->o_modtype = bfd_h_get_16(abfd, aouthdr_ext->o_modtype);
aouthdr_int->o_cputype = bfd_h_get_16(abfd, aouthdr_ext->o_cputype);
+#ifdef XCOFF64
+ aouthdr_int->o_maxstack = bfd_h_get_64(abfd, aouthdr_ext->o_maxstack);
+ aouthdr_int->o_maxdata = bfd_h_get_64(abfd, aouthdr_ext->o_maxdata);
+#else
aouthdr_int->o_maxstack = bfd_h_get_32(abfd, aouthdr_ext->o_maxstack);
aouthdr_int->o_maxdata = bfd_h_get_32(abfd, aouthdr_ext->o_maxdata);
#endif
+#endif
#ifdef MIPSECOFF
aouthdr_int->bss_start = bfd_h_get_32(abfd, aouthdr_ext->bss_start);
@@ -763,7 +739,11 @@ coff_swap_aouthdr_out (abfd, in, out)
#endif
#ifdef RS6000COFF_C
+#ifdef XCOFF64
+ bfd_h_put_64 (abfd, aouthdr_in->o_toc, aouthdr_out->o_toc);
+#else
bfd_h_put_32 (abfd, aouthdr_in->o_toc, aouthdr_out->o_toc);
+#endif
bfd_h_put_16 (abfd, aouthdr_in->o_snentry, aouthdr_out->o_snentry);
bfd_h_put_16 (abfd, aouthdr_in->o_sntext, aouthdr_out->o_sntext);
bfd_h_put_16 (abfd, aouthdr_in->o_sndata, aouthdr_out->o_sndata);
@@ -774,9 +754,18 @@ coff_swap_aouthdr_out (abfd, in, out)
bfd_h_put_16 (abfd, aouthdr_in->o_algndata, aouthdr_out->o_algndata);
bfd_h_put_16 (abfd, aouthdr_in->o_modtype, aouthdr_out->o_modtype);
bfd_h_put_16 (abfd, aouthdr_in->o_cputype, aouthdr_out->o_cputype);
+#ifdef XCOFF64
+ bfd_h_put_64 (abfd, aouthdr_in->o_maxstack, aouthdr_out->o_maxstack);
+ bfd_h_put_64 (abfd, aouthdr_in->o_maxdata, aouthdr_out->o_maxdata);
+#else
bfd_h_put_32 (abfd, aouthdr_in->o_maxstack, aouthdr_out->o_maxstack);
bfd_h_put_32 (abfd, aouthdr_in->o_maxdata, aouthdr_out->o_maxdata);
+#endif
memset (aouthdr_out->o_resv2, 0, sizeof aouthdr_out->o_resv2);
+#ifdef XCOFF64
+ memset (aouthdr_out->o_debugger, 0, sizeof aouthdr_out->o_debugger);
+ memset (aouthdr_out->o_resv3, 0, sizeof aouthdr_out->o_resv3);
+#endif
#endif
#ifdef MIPSECOFF
@@ -814,7 +803,7 @@ coff_swap_scnhdr_in (abfd, ext, in)
#ifdef COFF_ADJUST_SCNHDR_IN_PRE
COFF_ADJUST_SCNHDR_IN_PRE (abfd, ext, in);
#endif
- memcpy(scnhdr_int->s_name, scnhdr_ext->s_name, sizeof(scnhdr_int->s_name));
+ memcpy(scnhdr_int->s_name, scnhdr_ext->s_name, sizeof (scnhdr_int->s_name));
scnhdr_int->s_vaddr =
GET_SCNHDR_VADDR (abfd, (bfd_byte *) scnhdr_ext->s_vaddr);
scnhdr_int->s_paddr =
@@ -856,12 +845,11 @@ coff_swap_scnhdr_out (abfd, in, out)
#ifdef COFF_ADJUST_SCNHDR_OUT_PRE
COFF_ADJUST_SCNHDR_OUT_PRE (abfd, in, out);
#endif
- memcpy(scnhdr_ext->s_name, scnhdr_int->s_name, sizeof(scnhdr_int->s_name));
+ memcpy(scnhdr_ext->s_name, scnhdr_int->s_name, sizeof (scnhdr_int->s_name));
PUT_SCNHDR_VADDR (abfd, scnhdr_int->s_vaddr,
(bfd_byte *) scnhdr_ext->s_vaddr);
-
PUT_SCNHDR_PADDR (abfd, scnhdr_int->s_paddr,
(bfd_byte *) scnhdr_ext->s_paddr);
PUT_SCNHDR_SIZE (abfd, scnhdr_int->s_size,
@@ -879,8 +867,9 @@ coff_swap_scnhdr_out (abfd, in, out)
PUTWORD(abfd, scnhdr_int->s_nlnno, (bfd_byte *) scnhdr_ext->s_nlnno);
PUTWORD(abfd, scnhdr_int->s_nreloc, (bfd_byte *) scnhdr_ext->s_nreloc);
#else
- if (scnhdr_int->s_nlnno <= 0xffff)
- PUTHALF(abfd, scnhdr_int->s_nlnno, (bfd_byte *) scnhdr_ext->s_nlnno);
+ if (scnhdr_int->s_nlnno <= MAX_SCNHDR_NLNNO)
+ PUT_SCNHDR_NLNNO(abfd, scnhdr_int->s_nlnno,
+ (bfd_byte *) scnhdr_ext->s_nlnno);
else
{
char buf[sizeof (scnhdr_int->s_name) + 1];
@@ -891,10 +880,11 @@ coff_swap_scnhdr_out (abfd, in, out)
(_("%s: warning: %s: line number overflow: 0x%lx > 0xffff"),
bfd_get_filename (abfd),
buf, scnhdr_int->s_nlnno);
- PUTHALF (abfd, 0xffff, (bfd_byte *) scnhdr_ext->s_nlnno);
+ PUT_SCNHDR_NLNNO(abfd, 0xffff, (bfd_byte *) scnhdr_ext->s_nlnno);
}
- if (scnhdr_int->s_nreloc <= 0xffff)
- PUTHALF(abfd, scnhdr_int->s_nreloc, (bfd_byte *) scnhdr_ext->s_nreloc);
+ if (scnhdr_int->s_nreloc <= MAX_SCNHDR_NRELOC)
+ PUT_SCNHDR_NRELOC(abfd, scnhdr_int->s_nreloc,
+ (bfd_byte *) scnhdr_ext->s_nreloc);
else
{
char buf[sizeof (scnhdr_int->s_name) + 1];
@@ -905,7 +895,7 @@ coff_swap_scnhdr_out (abfd, in, out)
bfd_get_filename (abfd),
buf, scnhdr_int->s_nreloc);
bfd_set_error (bfd_error_file_truncated);
- PUTHALF (abfd, 0xffff, (bfd_byte *) scnhdr_ext->s_nreloc);
+ PUT_SCNHDR_NRELOC(abfd, 0xffff, (bfd_byte *) scnhdr_ext->s_nreloc);
ret = 0;
}
#endif
diff --git a/contrib/binutils/bfd/config.bfd b/contrib/binutils/bfd/config.bfd
index 3adc5ae..cd4abc3 100755
--- a/contrib/binutils/bfd/config.bfd
+++ b/contrib/binutils/bfd/config.bfd
@@ -32,10 +32,15 @@ alpha*) targ_archs=bfd_alpha_arch ;;
arm*) targ_archs=bfd_arm_arch ;;
strongarm*) targ_archs=bfd_arm_arch ;;
thumb*) targ_archs=bfd_arm_arch ;;
+xscale*) targ_archs=bfd_arm_arch ;;
c30*) targ_archs=bfd_tic30_arch ;;
+c54x*) targ_archs=bfd_tic54x_arch ;;
hppa*) targ_archs=bfd_hppa_arch ;;
+x86_64) targ_archs=bfd_i386_arch ;;
i[3456]86) targ_archs=bfd_i386_arch ;;
i370) targ_archs=bfd_i370_arch ;;
+m6811*|m68hc11*) targ_archs="bfd_m68hc11_arch bfd_m68hc12_arch" ;;
+m6812*|m68hc12*) targ_archs="bfd_m68hc12_arch bfd_m68hc11_arch" ;;
m68*) targ_archs=bfd_m68k_arch ;;
m88*) targ_archs=bfd_m88k_arch ;;
mips*) targ_archs=bfd_mips_arch ;;
@@ -79,7 +84,15 @@ case "${targ}" in
alpha*-*-*)
targ_defvec=ecoffalpha_little_vec
;;
- sparc64-*-netbsd*)
+ ia64*-*-freebsd* | ia64*-*-linux-gnu* | ia64*-*-elf*)
+ targ_defvec=bfd_elf64_ia64_little_vec
+ targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
+ ;;
+ ia64*-*-hpux*)
+ targ_defvec=bfd_elf64_ia64_big_vec
+ targ_selvecs="bfd_elf32_ia64_big_vec"
+ ;;
+ sparc64-*-freebsd* | sparc64-*-netbsd*)
targ_defvec=bfd_elf64_sparc_vec
targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
;;
@@ -113,7 +126,7 @@ case "${targ}" in
targ_selvecs="armpe_little_vec armpe_big_vec armpei_little_vec armpei_big_vec"
targ_underscore=yes
;;
- arm-*-aout | armel-*-aout)
+ arm-*-aout | armel-*-aout)
targ_defvec=aout_arm_little_vec
targ_selvecs=aout_arm_big_vec
;;
@@ -126,11 +139,15 @@ case "${targ}" in
targ_selvecs=armcoff_big_vec
targ_underscore=yes
;;
+ arm-*-rtems*)
+ targ_defvec=bfd_elf32_littlearm_vec
+ targ_selvecs=bfd_elf32_bigarm_vec
+ ;;
armeb-*-elf | arm*b-*-linux-gnu*)
targ_defvec=bfd_elf32_bigarm_vec
targ_selvecs=bfd_elf32_littlearm_vec
;;
- arm-*-elf | arm*-*-linux-gnu* | arm*-*-conix* | arm*-*-uclinux*)
+ arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | arm*-*-uclinux*)
targ_defvec=bfd_elf32_littlearm_vec
targ_selvecs=bfd_elf32_bigarm_vec
;;
@@ -171,9 +188,18 @@ case "${targ}" in
targ_selvecs=armcoff_big_vec
targ_underscore=yes
;;
+ xscale-*-elf)
+ targ_defvec=bfd_elf32_littlearm_vec
+ targ_selvecs=bfd_elf32_bigarm_vec
+ ;;
+ xscale-*-coff)
+ targ_defvec=armcoff_little_vec
+ targ_selvecs=armcoff_big_vec
+ targ_underscore=yes
+ ;;
a29k-*-ebmon* | a29k-*-udi* | a29k-*-coff* | a29k-*-sym1* | \
- a29k-*-vxworks* | a29k-*-sysv*)
+ a29k-*-vxworks* | a29k-*-sysv* | a29k-*rtems*)
targ_defvec=a29kcoff_big_vec
targ_selvecs=sunos_big_vec
targ_underscore=yes
@@ -194,6 +220,18 @@ case "${targ}" in
targ_defvec=tic30_coff_vec
;;
+ c54x*-*-*coff* | tic54x-*-*coff*)
+ targ_defvec=tic54x_coff1_vec
+ targ_selvecs="tic54x_coff1_beh_vec tic54x_coff2_vec tic54x_coff2_beh_vec tic54x_coff0_vec tic54x_coff0_beh_vec"
+ targ_underscore=yes
+ ;;
+
+ cris-*-*)
+ targ_defvec=cris_aout_vec
+ targ_selvecs="bfd_elf32_us_cris_vec bfd_elf32_cris_vec ieee_vec"
+ targ_underscore=yes # Note: not true for bfd_elf32_cris_vec.
+ ;;
+
d10v-*-*)
targ_defvec=bfd_elf32_d10v_vec
;;
@@ -217,27 +255,39 @@ case "${targ}" in
targ_underscore=yes
;;
-#if 0 /* HPPA ELF does not work currently. */
- hppa*-*-*elf* | hppa*-*-linux-gnu* | hppa*-*-lites* | hppa*-*-sysv4* | hppa*-*-rtems*)
- targ_defvec=bfd_elf32_hppa_vec
+#ifdef BFD64
+ hppa*64*-*-linux-gnu*)
+ targ_defvec=bfd_elf64_hppa_linux_vec
+ targ_selvecs=bfd_elf64_hppa_vec
+ ;;
+ hppa*64*-*-hpux11*)
+ targ_defvec=bfd_elf64_hppa_vec
+ targ_selvecs=bfd_elf64_hppa_linux_vec
+ targ_cflags=-DHPUX_LARGE_AR_IDS
;;
#endif
+
+ hppa*-*-linux-gnu*)
+ targ_defvec=bfd_elf32_hppa_linux_vec
+ targ_selvecs=bfd_elf32_hppa_vec
+ ;;
+ hppa*-*-*elf* | hppa*-*-lites* | hppa*-*-sysv4* | hppa*-*-rtems*)
+ targ_defvec=bfd_elf32_hppa_vec
+ targ_selvecs=bfd_elf32_hppa_linux_vec
+ ;;
+
#if defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) || defined (HOST_HPPAMPEIX)
-#if 0 /* HPPA ELF does not work currently. */
hppa*-*-bsd*)
targ_defvec=som_vec
targ_selvecs=bfd_elf32_hppa_vec
;;
-#endif
hppa*-*-hpux* | hppa*-*-hiux* | hppa*-*-mpeix*)
targ_defvec=som_vec
;;
-#if 0 /* HPPA ELF does not work currently. */
hppa*-*-osf*)
targ_defvec=som_vec
targ_selvecs=bfd_elf32_hppa_vec
;;
-#endif
#endif /* defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) */
i370-*-*)
@@ -254,6 +304,13 @@ case "${targ}" in
targ_defvec=bfd_elf32_i386_vec
targ_selvecs=i386coff_vec
;;
+ i[3456]86-*-rtemself*)
+ targ_defvec=bfd_elf32_i386_vec
+ targ_selvecs="i386coff_vec i386aout_vec"
+ ;;
+ i[3456]86-*-chorus*)
+ targ_defvec=bfd_elf32_i386_vec
+ ;;
i[3456]86-*-msdosdjgpp* | i[3456]*-*-go32* | i[3456]86-go32-rtems* )
targ_defvec=go32coff_vec
targ_selvecs="go32stubbedcoff_vec i386aout_vec"
@@ -262,14 +319,10 @@ case "${targ}" in
i[3456]86-*-aix*)
targ_defvec=i386coff_vec
;;
- i[3456]86-*-rtemscoff*)
+ i[3456]86*-*-rtems*)
targ_defvec=i386coff_vec
targ_selvecs="bfd_elf32_i386_vec i386aout_vec"
;;
- i[3456]86-*-rtemself* | i[3456]86*-*-rtems*)
- targ_defvec=bfd_elf32_i386_vec
- targ_selvecs="i386coff_vec i386aout_vec"
- ;;
i[3456]86-sequent-bsd*)
targ_defvec=i386dynix_vec
targ_underscore=yes
@@ -288,9 +341,13 @@ case "${targ}" in
targ_defvec=bfd_elf32_i386_vec
targ_selvecs=i386coff_vec
;;
- i[3456]86-*-netbsd* | i[3456]86-*-openbsd*)
+ i[3456]86-*-netbsdelf*)
+ targ_defvec=bfd_elf32_i386_vec
+ targ_selvecs=i386netbsd_vec
+ ;;
+ i[3456]86-*-netbsdaout* | i[3456]86-*-netbsd* | i[3456]86-*-openbsd*)
targ_defvec=i386netbsd_vec
- targ_selvecs=i386bsd_vec
+ targ_selvecs="bfd_elf32_i386_vec i386bsd_vec"
targ_underscore=yes
;;
i[3456]86-*-netware*)
@@ -304,8 +361,18 @@ case "${targ}" in
;;
i[3456]86-*-linux-gnu*)
targ_defvec=bfd_elf32_i386_vec
- targ_selvecs=i386linux_vec
+ targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec"
;;
+#ifdef BFD64
+ x86_64-*-freebsd*)
+ targ_defvec=bfd_elf64_x86_64_vec
+ targ_selvecs="bfd_elf32_i386_vec i386coff_vec bfd_efi_app_ia32_vec"
+ ;;
+ x86_64-*-linux-gnu*)
+ targ_defvec=bfd_elf64_x86_64_vec
+ targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec"
+ ;;
+#endif
i[3456]86-*-lynxos*)
targ_defvec=i386lynx_coff_vec
targ_selvecs=i386lynx_aout_vec
@@ -357,10 +424,18 @@ case "${targ}" in
targ_defvec=i386aout_vec
targ_underscore=yes
;;
+ i[3456]86-*-chaos)
+ targ_defvec=bfd_elf32_i386_vec
+ targ_selfvecs=i386chaos_vec
+ ;;
i860-*-mach3* | i860-*-osf1* | i860-*-coff*)
targ_defvec=i860coff_vec
;;
+ i860-stardent-sysv4* | i860-stardent-elf*)
+ targ_defvec=bfd_elf32_i860_little_vec
+ targ_selvecs="bfd_elf32_i860_vec bfd_elf32_i860_little_vec"
+ ;;
i860-*-sysv4* | i860-*-elf*)
targ_defvec=bfd_elf32_i860_vec
;;
@@ -370,12 +445,7 @@ case "${targ}" in
targ_selvecs="b_out_vec_big_host icoff_little_vec icoff_big_vec ieee_vec"
targ_underscore=yes
;;
- i960-*-rtemself*)
- targ_defvec=bfd_elf32_i960_vec
- targ_selvecs="icoff_big_vec b_out_vec_little_host b_out_vec_big_host ieee_vec"
- targ_underscore=yes
- ;;
- i960-*-vxworks5.* | i960-*-coff* | i960-*-sysv* | i960-*-rtemscoff* | i960-*-rtems*)
+ i960-*-vxworks5.* | i960-*-coff* | i960-*-sysv* | i960-*-rtems*)
targ_defvec=icoff_little_vec
targ_selvecs="icoff_big_vec b_out_vec_little_host b_out_vec_big_host ieee_vec"
targ_underscore=yes
@@ -394,6 +464,15 @@ case "${targ}" in
targ_defvec=bfd_elf32_m32r_vec
;;
+ m68hc11-*-* | m6811-*-*)
+ targ_defvec=bfd_elf32_m68hc11_vec
+ targ_selvecs="bfd_elf32_m68hc11_vec bfd_elf32_m68hc12_vec"
+ ;;
+ m68hc12-*-* | m6812-*-*)
+ targ_defvec=bfd_elf32_m68hc12_vec
+ targ_selvecs="bfd_elf32_m68hc11_vec bfd_elf32_m68hc12_vec"
+ ;;
+
m68*-apollo-*)
targ_defvec=apollocoff_vec
;;
@@ -420,16 +499,10 @@ case "${targ}" in
targ_defvec=bfd_elf32_m68k_vec
targ_selvecs="m68kcoff_vec ieee_vec"
;;
- m68*-*-rtemscoff*)
- # same as m68k-coff with some extra targets
+ m68*-*-rtems*)
targ_defvec=m68kcoff_vec
targ_selvecs="m68kcoff_vec versados_vec ieee_vec aout0_big_vec"
;;
- m68*-*-rtems* | m68*-*-rtemself*)
- # same as m68k-elf with some extra targets
- targ_defvec=bfd_elf32_m68k_vec
- targ_selvecs="m68kcoff_vec versados_vec ieee_vec aout0_big_vec"
- ;;
m68*-*-coff* | m68*-*-sysv*)
targ_defvec=m68kcoff_vec
targ_selvecs="m68kcoff_vec versados_vec ieee_vec"
@@ -565,14 +638,14 @@ case "${targ}" in
targ_underscore=yes
;;
mips*-*-sysv4*)
- targ_defvec=bfd_elf32_bigmips_vec
- targ_selvecs="bfd_elf32_littlemips_vec ecoff_big_vec ecoff_little_vec"
+ targ_defvec=bfd_elf32_tradbigmips_vec
+ targ_selvecs="bfd_elf32_tradlittlemips_vec ecoff_big_vec ecoff_little_vec"
;;
mips*-*-sysv* | mips*-*-riscos*)
targ_defvec=ecoff_big_vec
targ_selvecs=ecoff_little_vec
;;
- mips*el-*-elf* | mips*el-*-rtems* | mips*el-*-vxworks*)
+ mips*el-*-elf* | mips*el-*-rtems* | mips*el-*-vxworks* | mips*-*-chorus*)
targ_defvec=bfd_elf32_littlemips_vec
targ_selvecs="bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec"
;;
@@ -622,10 +695,11 @@ case "${targ}" in
powerpc-*-aix* | powerpc-*-beos*)
targ_defvec=rs6000coff_vec
+ targ_selvecs="rs6000coff64_vec"
;;
powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \
- powerpc-*-vxworks*)
+ powerpc-*-chorus* | powerpc-*-vxworks*)
targ_defvec=bfd_elf32_powerpc_vec
targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec"
;;
@@ -652,6 +726,11 @@ case "${targ}" in
targ_defvec=rs6000coff_vec
;;
+ sh-*-linux*)
+ targ_defvec=bfd_elf32_shblin_vec
+ targ_selvecs=bfd_elf32_shlin_vec
+ ;;
+
sh-*-elf* | sh-*-rtemself*)
targ_defvec=bfd_elf32_sh_vec
targ_selvecs="bfd_elf32_shl_vec shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec"
@@ -662,7 +741,7 @@ case "${targ}" in
targ_selvecs="shlpe_vec shlpei_vec"
targ_underscore=yes
;;
- sh-*-* | sh-*-rtemscoff* | sh-*-rtems*)
+ sh-*-* | sh-*-rtems*)
targ_defvec=shcoff_vec
targ_selvecs="shcoff_vec shlcoff_vec shcoff_small_vec shlcoff_small_vec"
targ_underscore=yes
@@ -680,6 +759,9 @@ case "${targ}" in
sparclite-*-elf* | sparc86x-*-elf*)
targ_defvec=bfd_elf32_sparc_vec
;;
+ sparc*-*-chorus*)
+ targ_defvec=bfd_elf32_sparc_vec
+ ;;
sparc-*-linux*aout*)
targ_defvec=sparclinux_vec
targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
@@ -735,7 +817,7 @@ case "${targ}" in
sparc64-*-elf*)
targ_defvec=bfd_elf64_sparc_vec
targ_selvecs=bfd_elf32_sparc_vec
- ;;
+ ;;
#endif /* BFD64 */
sparc*-*-coff*)
targ_defvec=sparccoff_vec
@@ -749,7 +831,7 @@ case "${targ}" in
targ_defvec=bfd_elf32_sparc_vec
targ_selvecs="sunos_big_vec sparccoff_vec"
;;
- sparc*-*-*)
+ sparc*-*-* | sparc*-*-rtems*)
targ_defvec=sunos_big_vec
targ_underscore=yes
;;
diff --git a/contrib/binutils/bfd/config.in b/contrib/binutils/bfd/config.in
index 7383656..74af3d3 100644
--- a/contrib/binutils/bfd/config.in
+++ b/contrib/binutils/bfd/config.in
@@ -25,9 +25,6 @@
/* Define to `long' if <sys/types.h> doesn't define. */
#undef off_t
-/* Define if you need to in order for stat and other things to work. */
-#undef _POSIX_SOURCE
-
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
@@ -211,21 +208,42 @@
/* Define if <sys/procfs.h> has prstatus_t. */
#undef HAVE_PRSTATUS_T
+/* Define if <sys/procfs.h> has prstatus32_t. */
+#undef HAVE_PRSTATUS32_T
+
/* Define if <sys/procfs.h> has prstatus_t.pr_who. */
#undef HAVE_PRSTATUS_T_PR_WHO
+/* Define if <sys/procfs.h> has prstatus32_t.pr_who. */
+#undef HAVE_PRSTATUS32_T_PR_WHO
+
/* Define if <sys/procfs.h> has pstatus_t. */
#undef HAVE_PSTATUS_T
+/* Define if <sys/procfs.h> has pxstatus_t. */
+#undef HAVE_PXSTATUS_T
+
+/* Define if <sys/procfs.h> has pstatus32_t. */
+#undef HAVE_PSTATUS32_T
+
/* Define if <sys/procfs.h> has prpsinfo_t. */
#undef HAVE_PRPSINFO_T
+/* Define if <sys/procfs.h> has prpsinfo32_t. */
+#undef HAVE_PRPSINFO32_T
+
/* Define if <sys/procfs.h> has psinfo_t. */
#undef HAVE_PSINFO_T
+/* Define if <sys/procfs.h> has psinfo32_t. */
+#undef HAVE_PSINFO32_T
+
/* Define if <sys/procfs.h> has lwpstatus_t. */
#undef HAVE_LWPSTATUS_T
+/* Define if <sys/procfs.h> has lwpxstatus_t. */
+#undef HAVE_LWPXSTATUS_T
+
/* Define if <sys/procfs.h> has lwpstatus_t.pr_context. */
#undef HAVE_LWPSTATUS_T_PR_CONTEXT
diff --git a/contrib/binutils/bfd/configure b/contrib/binutils/bfd/configure
index 89f979e..d348425 100755
--- a/contrib/binutils/bfd/configure
+++ b/contrib/binutils/bfd/configure
@@ -22,6 +22,8 @@ ac_help="$ac_help
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-64-bit-bfd 64-bit support (on hosts with narrower word sizes)"
ac_help="$ac_help
--enable-targets alternative target configurations"
@@ -30,6 +32,8 @@ ac_help="$ac_help
ac_help="$ac_help
--with-mmap try using mmap for BFD input files if available"
ac_help="$ac_help
+ --enable-build-warnings Enable build-time compiler warnings if gcc is used"
+ac_help="$ac_help
--enable-maintainer-mode enable make rules and dependencies not useful
(and sometimes confusing) to the casual installer"
ac_help="$ac_help
@@ -53,6 +57,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -167,6 +172,7 @@ Configuration:
--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
@@ -337,6 +343,11 @@ EOF
-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=*)
@@ -502,12 +513,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
@@ -545,6 +560,68 @@ else
ac_n= ac_c='\c' ac_t=
fi
+echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
+echo "configure:565: 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 <<EOF
+#line 570 "configure"
+#include "confdefs.h"
+
+int main() {
+
+#ifndef __CYGWIN__
+#define __CYGWIN__ __CYGWIN32__
+#endif
+return __CYGWIN__;
+; return 0; }
+EOF
+if { (eval echo configure:581: \"$ac_compile\") 1>&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:598: 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 <<EOF
+#line 603 "configure"
+#include "confdefs.h"
+
+int main() {
+return __MINGW32__;
+; return 0; }
+EOF
+if { (eval echo configure:610: \"$ac_compile\") 1>&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=
@@ -594,7 +671,7 @@ 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:598: checking host system type" >&5
+echo "configure:675: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -615,7 +692,7 @@ 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:619: checking target system type" >&5
+echo "configure:696: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -633,7 +710,7 @@ 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:637: checking build system type" >&5
+echo "configure:714: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -655,249 +732,49 @@ test "$host_alias" != "$target_alias" &&
NONENONEs,x,x, &&
program_prefix=${target_alias}-
-# 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:662: 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:692: 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:743: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6
+echo "configure:738: 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
- 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:775: 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 786 "configure"
+ ac_save_LIBS="$LIBS"
+LIBS="-lcposix $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 746 "configure"
#include "confdefs.h"
+/* 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 strerror();
-main(){return(0);}
+int main() {
+strerror()
+; return 0; }
EOF
-if { (eval echo configure:791: \"$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
+if { (eval echo configure:757: \"$ac_link\") 1>&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
- 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:817: 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:822: 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 <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:831: \"$ac_try\") 1>&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:850: 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
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
fi
rm -f conftest*
+LIBS="$ac_save_LIBS"
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
-
-echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:882: checking for POSIXized ISC" >&5
-if test -d /etc/conf/kconfig.d &&
- grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
-then
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
- ISC=yes # If later tests want to check for ISC.
- cat >> confdefs.h <<\EOF
-#define _POSIX_SOURCE 1
-EOF
-
- if test "$GCC" = yes; then
- CC="$CC -posix"
- else
- CC="$CC -Xp"
- fi
+ LIBS="$LIBS -lcposix"
else
echo "$ac_t""no" 1>&6
- ISC=
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
@@ -911,7 +788,7 @@ fi
# 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:915: checking for a BSD compatible install" >&5
+echo "configure:792: 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
@@ -964,7 +841,7 @@ 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:968: checking whether build environment is sane" >&5
+echo "configure:845: checking whether build environment is sane" >&5
# Just in case
sleep 1
echo timestamp > conftestfile
@@ -1021,7 +898,7 @@ test "$program_suffix" != NONE &&
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:1025: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:902: 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
@@ -1050,7 +927,7 @@ fi
PACKAGE=bfd
-VERSION=2.10.1
+VERSION=2.11
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; }
@@ -1067,7 +944,7 @@ EOF
missing_dir=`cd $ac_aux_dir && pwd`
echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
-echo "configure:1071: checking for working aclocal" >&5
+echo "configure:948: 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.
@@ -1080,7 +957,7 @@ else
fi
echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
-echo "configure:1084: checking for working autoconf" >&5
+echo "configure:961: 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.
@@ -1093,7 +970,7 @@ else
fi
echo $ac_n "checking for working automake""... $ac_c" 1>&6
-echo "configure:1097: checking for working automake" >&5
+echo "configure:974: 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.
@@ -1106,7 +983,7 @@ else
fi
echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
-echo "configure:1110: checking for working autoheader" >&5
+echo "configure:987: 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.
@@ -1119,7 +996,7 @@ else
fi
echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
-echo "configure:1123: checking for working makeinfo" >&5
+echo "configure:1000: 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.
@@ -1142,7 +1019,7 @@ fi
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1146: checking for $ac_word" >&5
+echo "configure:1023: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1174,7 +1051,7 @@ fi
# 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:1178: checking for $ac_word" >&5
+echo "configure:1055: 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
@@ -1206,7 +1083,7 @@ 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:1210: checking for $ac_word" >&5
+echo "configure:1087: 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
@@ -1309,36 +1186,228 @@ else
enable_fast_install=yes
fi
-# Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
+# 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:1316: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+echo "configure:1193: 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 "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+ 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_RANLIB="ranlib"
+ ac_cv_prog_CC="gcc"
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
+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:1223: 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:1274: 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:1306: 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 1317 "configure"
+#include "confdefs.h"
+
+main(){return(0);}
+EOF
+if { (eval echo configure:1322: \"$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:1348: 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:1353: 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 <<EOF
+#ifdef __GNUC__
+ yes;
+#endif
+EOF
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1362: \"$ac_try\") 1>&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:1381: 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"
@@ -1351,8 +1420,14 @@ ac_prog=ld
if test "$ac_cv_prog_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:1355: checking for ld used by GCC" >&5
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
+echo "configure:1424: 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]:[\\/]*)
@@ -1375,10 +1450,10 @@ echo "configure:1355: checking for ld used by GCC" >&5
esac
elif test "$with_gnu_ld" = yes; then
echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1379: checking for GNU ld" >&5
+echo "configure:1454: checking for GNU ld" >&5
else
echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1382: checking for non-GNU ld" >&5
+echo "configure:1457: checking for non-GNU ld" >&5
fi
if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1413,7 +1488,7 @@ else
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:1417: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1492: checking if the linker ($LD) is GNU ld" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1426,10 +1501,23 @@ fi
fi
echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
+with_gnu_ld=$ac_cv_prog_gnu_ld
+
+
+echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
+echo "configure:1509: 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:1433: checking for BSD-compatible nm" >&5
+echo "configure:1521: checking for BSD-compatible nm" >&5
if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1440,18 +1528,20 @@ 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=.
- if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
+ 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
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -B"
+ # 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
+ ac_cv_path_NM="$tmp_nm -B"
break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -p"
+ elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+ ac_cv_path_NM="$tmp_nm -p"
break
else
- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
+ ac_cv_path_NM=${ac_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
@@ -1465,7 +1555,7 @@ NM="$ac_cv_path_NM"
echo "$ac_t""$NM" 1>&6
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1469: checking whether ln -s works" >&5
+echo "configure:1559: 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
@@ -1485,11 +1575,477 @@ else
echo "$ac_t""no" 1>&6
fi
+echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
+echo "configure:1580: 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
+aix4*)
+ 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'
+ ;;
+
+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*)
+ # TODO: Does this work for hpux-11 too?
+ lt_cv_deplibs_check_method='file_magic (s0-90-90-9|PA-RISC0-9.0-9) shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+
+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* | 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 :
+ else
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ fi
+ ;;
+
+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
+ ;;
+
+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:1723: 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:1729: \"$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:1749: 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:1759: \"$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
+
+# 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:1786: 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 <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+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:1848: 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 <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
+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:1919: 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:1951: 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:1986: 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:2018: 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"
@@ -1509,13 +2065,24 @@ 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 "$lt_target" in
+case "$host" in
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 1518 "configure"' > conftest.$ac_ext
- if { (eval echo configure:1519: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ echo '#line 2085 "configure"' > conftest.$ac_ext
+ if { (eval echo configure:2086: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
case "`/usr/bin/file conftest.o`" in
*32-bit*)
LD="${LD-ld} -32"
@@ -1536,19 +2103,27 @@ case "$lt_target" in
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -belf"
echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:1540: checking whether the C compiler needs -belf" >&5
+echo "configure:2107: 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
- cat > conftest.$ac_ext <<EOF
-#line 1545 "configure"
+
+ 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 2120 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:1552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2127: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
lt_cv_cc_needs_belf=yes
else
@@ -1558,6 +2133,13 @@ else
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
@@ -1621,12 +2203,14 @@ rm -f confcache
# Actually configure libtool. ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
+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 $ac_aux_dir/ltmain.sh $lt_target \
+$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
@@ -1640,7 +2224,7 @@ fi
# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
+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'
@@ -1650,6 +2234,12 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
exec 5>>./config.log
+
+
+
+
+
+
# Check whether --enable-64-bit-bfd or --disable-64-bit-bfd was given.
if test "${enable_64_bit_bfd+set}" = set; then
enableval="$enable_64_bit_bfd"
@@ -1692,6 +2282,29 @@ else
want_mmap=false
fi
+build_warnings="-W -Wall"
+# 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
+
+
@@ -1720,7 +2333,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:1724: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:2337: 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"
@@ -1742,72 +2355,10 @@ fi
MAINT=$MAINTAINER_MODE_TRUE
-echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1747: 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 <<EOF
-#line 1752 "configure"
-#include "confdefs.h"
-
-int main() {
-
-#ifndef __CYGWIN__
-#define __CYGWIN__ __CYGWIN32__
-#endif
-return __CYGWIN__;
-; return 0; }
-EOF
-if { (eval echo configure:1763: \"$ac_compile\") 1>&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:1780: 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 <<EOF
-#line 1785 "configure"
-#include "confdefs.h"
-
-int main() {
-return __MINGW32__;
-; return 0; }
-EOF
-if { (eval echo configure:1792: \"$ac_compile\") 1>&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
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:1811: checking for executable suffix" >&5
+echo "configure:2362: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1817,10 +2368,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:1821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:2372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -1846,7 +2397,7 @@ target64=false
# 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:1850: checking for $ac_word" >&5
+echo "configure:2401: 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
@@ -1876,7 +2427,7 @@ 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:1880: checking for $ac_word" >&5
+echo "configure:2431: 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
@@ -1927,7 +2478,7 @@ fi
# 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:1931: checking for $ac_word" >&5
+echo "configure:2482: 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
@@ -1959,7 +2510,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1963: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2514: 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.
@@ -1970,12 +2521,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1974 "configure"
+#line 2525 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2530: \"$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
@@ -2001,12 +2552,12 @@ 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:2005: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2556: 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:2010: checking whether we are using GNU C" >&5
+echo "configure:2561: 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
@@ -2015,7 +2566,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2570: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -2034,7 +2585,7 @@ 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:2038: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2589: 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
@@ -2068,7 +2619,7 @@ fi
ALL_LINGUAS=
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:2072: checking how to run the C preprocessor" >&5
+echo "configure:2623: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -2083,13 +2634,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 2087 "configure"
+#line 2638 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2093: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2644: \"$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
:
@@ -2100,13 +2651,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 2104 "configure"
+#line 2655 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2110: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2661: \"$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
:
@@ -2117,13 +2668,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 2121 "configure"
+#line 2672 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2127: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2678: \"$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
:
@@ -2147,13 +2698,43 @@ else
fi
echo "$ac_t""$CPP" 1>&6
+# 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:2705: 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:2152: checking for ANSI C header files" >&5
+echo "configure:2733: 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 <<EOF
-#line 2157 "configure"
+#line 2738 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -2161,7 +2742,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2165: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2746: \"$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*
@@ -2178,7 +2759,7 @@ 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
-#line 2182 "configure"
+#line 2763 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -2196,7 +2777,7 @@ 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
-#line 2200 "configure"
+#line 2781 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2217,7 +2798,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2221 "configure"
+#line 2802 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -2228,7 +2809,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:2232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2813: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -2252,18 +2833,18 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:2256: checking for working const" >&5
+echo "configure:2837: 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 <<EOF
-#line 2261 "configure"
+#line 2842 "configure"
#include "confdefs.h"
int main() {
/* Ultrix mips cc rejects this. */
-typedef int charset[2]; const charset x = {0,0};
+typedef int charset[2]; const charset x;
/* SunOS 4.1.1 cc rejects this. */
char const *const *ccp;
char **p;
@@ -2306,7 +2887,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:2310: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2891: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -2327,21 +2908,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:2331: checking for inline" >&5
+echo "configure:2912: 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 <<EOF
-#line 2338 "configure"
+#line 2919 "configure"
#include "confdefs.h"
int main() {
-} int $ac_kw foo() {
+} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:2345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2926: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -2367,12 +2948,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:2371: checking for off_t" >&5
+echo "configure:2952: 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 <<EOF
-#line 2376 "configure"
+#line 2957 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -2400,12 +2981,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:2404: checking for size_t" >&5
+echo "configure:2985: 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 <<EOF
-#line 2409 "configure"
+#line 2990 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -2435,19 +3016,19 @@ 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:2439: checking for working alloca.h" >&5
+echo "configure:3020: 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 <<EOF
-#line 2444 "configure"
+#line 3025 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
-void *p = alloca(2 * sizeof(int));
+char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:2451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3032: \"$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
@@ -2468,12 +3049,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:2472: checking for alloca" >&5
+echo "configure:3053: 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 <<EOF
-#line 2477 "configure"
+#line 3058 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -2501,7 +3082,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:2505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3086: \"$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
@@ -2533,12 +3114,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:2537: checking whether alloca needs Cray hooks" >&5
+echo "configure:3118: 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 <<EOF
-#line 2542 "configure"
+#line 3123 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -2563,12 +3144,12 @@ 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:2567: checking for $ac_func" >&5
+echo "configure:3148: 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 <<EOF
-#line 2572 "configure"
+#line 3153 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2591,7 +3172,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3176: \"$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
@@ -2618,7 +3199,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:2622: checking stack direction for C alloca" >&5
+echo "configure:3203: 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
@@ -2626,7 +3207,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 2630 "configure"
+#line 3211 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -2645,7 +3226,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:2649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3230: \"$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
@@ -2670,17 +3251,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:2674: checking for $ac_hdr" >&5
+echo "configure:3255: 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
-#line 2679 "configure"
+#line 3260 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2684: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3265: \"$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*
@@ -2709,12 +3290,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2713: checking for $ac_func" >&5
+echo "configure:3294: 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 <<EOF
-#line 2718 "configure"
+#line 3299 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2737,7 +3318,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3322: \"$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
@@ -2762,7 +3343,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:2766: checking for working mmap" >&5
+echo "configure:3347: 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
@@ -2770,7 +3351,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 2774 "configure"
+#line 3355 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -2797,15 +3378,12 @@ else
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
/* This mess was copied from the GNU getpagesize.h. */
#ifndef HAVE_GETPAGESIZE
+# ifdef HAVE_UNISTD_H
+# include <unistd.h>
+# endif
/* Assume that all systems that can run configure have sys/param.h. */
# ifndef HAVE_SYS_PARAM_H
@@ -2860,7 +3438,7 @@ main()
/*
* First, make a file with some known garbage in it.
*/
- data = (char*)malloc(pagesize);
+ data = malloc(pagesize);
if (!data)
exit(1);
for (i = 0; i < pagesize; ++i)
@@ -2881,7 +3459,7 @@ main()
fd = open("conftestmmap", O_RDWR);
if (fd < 0)
exit(1);
- data2 = (char*)malloc(2 * pagesize);
+ data2 = malloc(2 * pagesize);
if (!data2)
exit(1);
data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
@@ -2899,7 +3477,7 @@ main()
*/
for (i = 0; i < pagesize; ++i)
*(data2 + i) = *(data2 + i) + 1;
- data3 = (char*)malloc(pagesize);
+ data3 = malloc(pagesize);
if (!data3)
exit(1);
if (read(fd, data3, pagesize) != pagesize)
@@ -2913,7 +3491,7 @@ main()
}
EOF
-if { (eval echo configure:2917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3495: \"$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
@@ -2941,17 +3519,17 @@ 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:2945: checking for $ac_hdr" >&5
+echo "configure:3523: 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
-#line 2950 "configure"
+#line 3528 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2955: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3533: \"$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*
@@ -2981,12 +3559,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2985: checking for $ac_func" >&5
+echo "configure:3563: 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 <<EOF
-#line 2990 "configure"
+#line 3568 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3009,7 +3587,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3591: \"$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
@@ -3038,12 +3616,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3042: checking for $ac_func" >&5
+echo "configure:3620: 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 <<EOF
-#line 3047 "configure"
+#line 3625 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3066,7 +3644,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3070: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3648: \"$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
@@ -3100,19 +3678,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:3104: checking for LC_MESSAGES" >&5
+echo "configure:3682: 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 <<EOF
-#line 3109 "configure"
+#line 3687 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:3116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3694: \"$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
@@ -3133,7 +3711,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:3137: checking whether NLS is requested" >&5
+echo "configure:3715: 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"
@@ -3153,7 +3731,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:3157: checking whether included gettext is requested" >&5
+echo "configure:3735: 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"
@@ -3172,17 +3750,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:3176: checking for libintl.h" >&5
+echo "configure:3754: 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
-#line 3181 "configure"
+#line 3759 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3186: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3764: \"$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*
@@ -3199,19 +3777,19 @@ 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:3203: checking for gettext in libc" >&5
+echo "configure:3781: 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 <<EOF
-#line 3208 "configure"
+#line 3786 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:3215: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3793: \"$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
@@ -3227,7 +3805,7 @@ 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:3231: checking for bindtextdomain in -lintl" >&5
+echo "configure:3809: 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
@@ -3235,7 +3813,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3239 "configure"
+#line 3817 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3246,7 +3824,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:3250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3262,19 +3840,19 @@ 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:3266: checking for gettext in libintl" >&5
+echo "configure:3844: 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 <<EOF
-#line 3271 "configure"
+#line 3849 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:3278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -3302,7 +3880,7 @@ 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:3306: checking for $ac_word" >&5
+echo "configure:3884: 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
@@ -3336,12 +3914,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3340: checking for $ac_func" >&5
+echo "configure:3918: 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 <<EOF
-#line 3345 "configure"
+#line 3923 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3364,7 +3942,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3946: \"$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
@@ -3391,7 +3969,7 @@ 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:3395: checking for $ac_word" >&5
+echo "configure:3973: 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
@@ -3427,7 +4005,7 @@ 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:3431: checking for $ac_word" >&5
+echo "configure:4009: 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
@@ -3459,7 +4037,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 3463 "configure"
+#line 4041 "configure"
#include "confdefs.h"
int main() {
@@ -3467,7 +4045,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:3471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -3499,7 +4077,7 @@ fi
# 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:3503: checking for $ac_word" >&5
+echo "configure:4081: 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
@@ -3533,7 +4111,7 @@ 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:3537: checking for $ac_word" >&5
+echo "configure:4115: 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
@@ -3569,7 +4147,7 @@ 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:3573: checking for $ac_word" >&5
+echo "configure:4151: 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
@@ -3659,7 +4237,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:3663: checking for catalogs to be installed" >&5
+echo "configure:4241: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -3687,17 +4265,17 @@ echo "configure:3663: checking for catalogs to be installed" >&5
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:3691: checking for linux/version.h" >&5
+echo "configure:4269: 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
-#line 3696 "configure"
+#line 4274 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3701: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4279: \"$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*
@@ -3775,7 +4353,7 @@ fi
# 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:3779: checking for a BSD compatible install" >&5
+echo "configure:4357: 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
@@ -3858,7 +4436,7 @@ 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:3862: checking for build system executable suffix" >&5
+echo "configure:4440: 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
@@ -3886,17 +4464,17 @@ for ac_hdr in stddef.h string.h strings.h stdlib.h time.h unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3890: checking for $ac_hdr" >&5
+echo "configure:4468: 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
-#line 3895 "configure"
+#line 4473 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3900: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4478: \"$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*
@@ -3926,17 +4504,17 @@ for ac_hdr in fcntl.h sys/file.h sys/time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3930: checking for $ac_hdr" >&5
+echo "configure:4508: 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
-#line 3935 "configure"
+#line 4513 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3940: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4518: \"$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*
@@ -3963,12 +4541,12 @@ fi
done
echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3967: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:4545: checking whether time.h and sys/time.h may both be included" >&5
if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3972 "configure"
+#line 4550 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
@@ -3977,7 +4555,7 @@ int main() {
struct tm *tp;
; return 0; }
EOF
-if { (eval echo configure:3981: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4559: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_time=yes
else
@@ -4002,12 +4580,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:4006: checking for $ac_hdr that defines DIR" >&5
+echo "configure:4584: checking for $ac_hdr that defines DIR" >&5
if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4011 "configure"
+#line 4589 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
@@ -4015,7 +4593,7 @@ int main() {
DIR *dirp = 0;
; return 0; }
EOF
-if { (eval echo configure:4019: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_header_dirent_$ac_safe=yes"
else
@@ -4040,7 +4618,7 @@ done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:4044: checking for opendir in -ldir" >&5
+echo "configure:4622: checking for opendir in -ldir" >&5
ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4048,7 +4626,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4052 "configure"
+#line 4630 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4059,7 +4637,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:4063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4641: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4081,7 +4659,7 @@ fi
else
echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:4085: checking for opendir in -lx" >&5
+echo "configure:4663: checking for opendir in -lx" >&5
ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4089,7 +4667,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4093 "configure"
+#line 4671 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4100,7 +4678,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:4104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4125,12 +4703,12 @@ fi
for ac_func in fcntl getpagesize setitimer sysconf fdopen getuid getgid
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4129: checking for $ac_func" >&5
+echo "configure:4707: 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 <<EOF
-#line 4134 "configure"
+#line 4712 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4153,7 +4731,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4735: \"$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
@@ -4188,12 +4766,12 @@ EOF
esac
echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6
-echo "configure:4192: checking whether strstr must be declared" >&5
+echo "configure:4770: 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 <<EOF
-#line 4197 "configure"
+#line 4775 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4214,7 +4792,7 @@ int main() {
char *(*pfn) = (char *(*)) strstr
; return 0; }
EOF
-if { (eval echo configure:4218: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4796: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_strstr=no
else
@@ -4235,12 +4813,12 @@ EOF
fi
echo $ac_n "checking whether malloc must be declared""... $ac_c" 1>&6
-echo "configure:4239: checking whether malloc must be declared" >&5
+echo "configure:4817: checking whether malloc must be declared" >&5
if eval "test \"`echo '$''{'bfd_cv_decl_needed_malloc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4244 "configure"
+#line 4822 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4261,7 +4839,7 @@ int main() {
char *(*pfn) = (char *(*)) malloc
; return 0; }
EOF
-if { (eval echo configure:4265: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4843: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_malloc=no
else
@@ -4282,12 +4860,12 @@ EOF
fi
echo $ac_n "checking whether realloc must be declared""... $ac_c" 1>&6
-echo "configure:4286: checking whether realloc must be declared" >&5
+echo "configure:4864: checking whether realloc must be declared" >&5
if eval "test \"`echo '$''{'bfd_cv_decl_needed_realloc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4291 "configure"
+#line 4869 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4308,7 +4886,7 @@ int main() {
char *(*pfn) = (char *(*)) realloc
; return 0; }
EOF
-if { (eval echo configure:4312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4890: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_realloc=no
else
@@ -4329,12 +4907,12 @@ EOF
fi
echo $ac_n "checking whether free must be declared""... $ac_c" 1>&6
-echo "configure:4333: checking whether free must be declared" >&5
+echo "configure:4911: checking whether free must be declared" >&5
if eval "test \"`echo '$''{'bfd_cv_decl_needed_free'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4338 "configure"
+#line 4916 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4355,7 +4933,7 @@ int main() {
char *(*pfn) = (char *(*)) free
; return 0; }
EOF
-if { (eval echo configure:4359: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4937: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_free=no
else
@@ -4376,12 +4954,12 @@ EOF
fi
echo $ac_n "checking whether getenv must be declared""... $ac_c" 1>&6
-echo "configure:4380: checking whether getenv must be declared" >&5
+echo "configure:4958: 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 <<EOF
-#line 4385 "configure"
+#line 4963 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4402,7 +4980,7 @@ int main() {
char *(*pfn) = (char *(*)) getenv
; return 0; }
EOF
-if { (eval echo configure:4406: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4984: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_getenv=no
else
@@ -4429,13 +5007,16 @@ COREFLAG=
TRAD_HEADER=
if test "${target}" = "${host}"; then
case "${host}" in
+ alpha*-*-freebsd*)
+ COREFILE=''
+ ;;
alpha*-*-linux-gnu*)
COREFILE=trad-core.lo
TRAD_HEADER='"hosts/alphalinux.h"'
;;
alpha*-*-netbsd*) COREFILE=netbsd-core.lo ;;
- alpha*-*-freebsd*) ;;
alpha*-*-*) COREFILE=osf-core.lo ;;
+ arm-*-freebsd*) COREFILE='' ;;
arm-*-riscix) COREFILE=trad-core.lo ;;
hppa*-*-hpux*) COREFILE=hpux-core.lo ;;
hppa*-*-hiux*) COREFILE=hpux-core.lo ;;
@@ -4456,10 +5037,14 @@ if test "${target}" = "${host}"; then
COREFILE=trad-core.lo
TRAD_HEADER='"hosts/symmetry.h"'
;;
- i[3456]86-*-bsd* | i[3456]86-*-freebsd*)
+ i[3456]86-*-bsd* | i[34567]86-*-freebsd[1234] | i[34567]86-*-freebsd[1234]\.* | i[34567]86-*-freebsd*aout*)
COREFILE=trad-core.lo
TRAD_HEADER='"hosts/i386bsd.h"'
;;
+ i[3456]86-*-freebsd*)
+ COREFILE=''
+ TRAD_HEADER='"hosts/i386bsd.h"'
+ ;;
i[3456]86-*-netbsd* | i[3456]86-*-openbsd*)
COREFILE=netbsd-core.lo
;;
@@ -4561,12 +5146,17 @@ if test "${target}" = "${host}"; then
COREFILE=netbsd-core.lo
;;
rs6000-*-lynx*) COREFILE=lynx-core.lo ;;
+ rs6000-*-aix4.[3-9]* | powerpc-*-aix4.[3-9]*)
+ COREFILE=rs6000-core.lo
+ COREFLAG="$COREFLAG -DAIX_CORE_DUMPX_CORE"
+ ;;
rs6000-*-aix4*) COREFILE=rs6000-core.lo ;;
rs6000-*-*) COREFILE=rs6000-core.lo ;;
powerpc-*-*bsd*) COREFILE=netbsd-core.lo ;;
powerpc-*-aix4*) COREFILE=rs6000-core.lo ;;
powerpc-*-aix*) COREFILE=rs6000-core.lo ;;
powerpc-*-beos*) ;;
+ powerpc-*-freebsd*) COREFILE='' ;;
powerpc-*-netbsd*) COREFILE=netbsd-core.lo ;;
sparc-*-netbsd* | sparc-*-openbsd*)
COREFILE=netbsd-core.lo
@@ -4609,17 +5199,17 @@ if test "${target}" = "${host}"; then
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4613: checking for $ac_hdr" >&5
+echo "configure:5203: 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
-#line 4618 "configure"
+#line 5208 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4623: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5213: \"$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*
@@ -4647,19 +5237,21 @@ 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:4651: checking for prstatus_t in sys/procfs.h" >&5
+echo "configure:5241: 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 <<EOF
-#line 4656 "configure"
+#line 5246 "configure"
#include "confdefs.h"
+
+#define _SYSCALL32
#include <sys/procfs.h>
int main() {
prstatus_t avar
; return 0; }
EOF
-if { (eval echo configure:4663: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5255: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prstatus_t=yes
else
@@ -4680,20 +5272,58 @@ EOF
fi
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:5277: 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 <<EOF
+#line 5282 "configure"
+#include "confdefs.h"
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int main() {
+prstatus32_t avar
+; return 0; }
+EOF
+if { (eval echo configure:5291: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ bfd_cv_have_sys_procfs_type_prstatus32_t=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ bfd_cv_have_sys_procfs_type_prstatus32_t=no
+
+fi
+rm -f conftest*
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_prstatus32_t = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_PRSTATUS32_T 1
+EOF
+
+ fi
+ 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:4685: checking for prstatus_t.pr_who in sys/procfs.h" >&5
+echo "configure:5313: 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 <<EOF
-#line 4690 "configure"
+#line 5318 "configure"
#include "confdefs.h"
+
+#define _SYSCALL32
#include <sys/procfs.h>
int main() {
prstatus_t avar; void* aref = (void*) &avar.pr_who
; return 0; }
EOF
-if { (eval echo configure:4697: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5327: \"$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
@@ -4714,20 +5344,58 @@ EOF
fi
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:5349: 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 <<EOF
+#line 5354 "configure"
+#include "confdefs.h"
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int main() {
+prstatus32_t avar; void* aref = (void*) &avar.pr_who
+; return 0; }
+EOF
+if { (eval echo configure:5363: \"$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
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who=no
+
+fi
+rm -f conftest*
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_member_prstatus32_t_pr_who = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_PRSTATUS32_T_PR_WHO 1
+EOF
+
+ fi
+ 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:4719: checking for pstatus_t in sys/procfs.h" >&5
+echo "configure:5385: 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 <<EOF
-#line 4724 "configure"
+#line 5390 "configure"
#include "confdefs.h"
+
+#define _SYSCALL32
#include <sys/procfs.h>
int main() {
pstatus_t avar
; return 0; }
EOF
-if { (eval echo configure:4731: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5399: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_pstatus_t=yes
else
@@ -4748,20 +5416,94 @@ EOF
fi
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:5421: 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 <<EOF
+#line 5426 "configure"
+#include "confdefs.h"
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int main() {
+pxstatus_t avar
+; return 0; }
+EOF
+if { (eval echo configure:5435: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ bfd_cv_have_sys_procfs_type_pxstatus_t=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ bfd_cv_have_sys_procfs_type_pxstatus_t=no
+
+fi
+rm -f conftest*
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_pxstatus_t = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_PXSTATUS_T 1
+EOF
+
+ fi
+ 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:5457: 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 <<EOF
+#line 5462 "configure"
+#include "confdefs.h"
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int main() {
+pstatus32_t avar
+; return 0; }
+EOF
+if { (eval echo configure:5471: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ bfd_cv_have_sys_procfs_type_pstatus32_t=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ bfd_cv_have_sys_procfs_type_pstatus32_t=no
+
+fi
+rm -f conftest*
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_pstatus32_t = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_PSTATUS32_T 1
+EOF
+
+ fi
+ 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:4753: checking for prpsinfo_t in sys/procfs.h" >&5
+echo "configure:5493: 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 <<EOF
-#line 4758 "configure"
+#line 5498 "configure"
#include "confdefs.h"
+
+#define _SYSCALL32
#include <sys/procfs.h>
int main() {
prpsinfo_t avar
; return 0; }
EOF
-if { (eval echo configure:4765: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5507: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prpsinfo_t=yes
else
@@ -4782,20 +5524,58 @@ EOF
fi
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:5529: 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 <<EOF
+#line 5534 "configure"
+#include "confdefs.h"
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int main() {
+prpsinfo32_t avar
+; return 0; }
+EOF
+if { (eval echo configure:5543: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ bfd_cv_have_sys_procfs_type_prpsinfo32_t=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ bfd_cv_have_sys_procfs_type_prpsinfo32_t=no
+
+fi
+rm -f conftest*
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_prpsinfo32_t = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_PRPSINFO32_T 1
+EOF
+
+ fi
+ 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:4787: checking for psinfo_t in sys/procfs.h" >&5
+echo "configure:5565: 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 <<EOF
-#line 4792 "configure"
+#line 5570 "configure"
#include "confdefs.h"
+
+#define _SYSCALL32
#include <sys/procfs.h>
int main() {
psinfo_t avar
; return 0; }
EOF
-if { (eval echo configure:4799: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5579: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_psinfo_t=yes
else
@@ -4816,20 +5596,58 @@ EOF
fi
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:5601: 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 <<EOF
+#line 5606 "configure"
+#include "confdefs.h"
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int main() {
+psinfo32_t avar
+; return 0; }
+EOF
+if { (eval echo configure:5615: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ bfd_cv_have_sys_procfs_type_psinfo32_t=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ bfd_cv_have_sys_procfs_type_psinfo32_t=no
+
+fi
+rm -f conftest*
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_psinfo32_t = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_PSINFO32_T 1
+EOF
+
+ fi
+ 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:4821: checking for lwpstatus_t in sys/procfs.h" >&5
+echo "configure:5637: 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 <<EOF
-#line 4826 "configure"
+#line 5642 "configure"
#include "confdefs.h"
+
+#define _SYSCALL32
#include <sys/procfs.h>
int main() {
lwpstatus_t avar
; return 0; }
EOF
-if { (eval echo configure:4833: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5651: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_lwpstatus_t=yes
else
@@ -4850,20 +5668,58 @@ EOF
fi
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:5673: 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 <<EOF
+#line 5678 "configure"
+#include "confdefs.h"
+
+#define _SYSCALL32
+#include <sys/procfs.h>
+int main() {
+lwpxstatus_t avar
+; return 0; }
+EOF
+if { (eval echo configure:5687: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ bfd_cv_have_sys_procfs_type_lwpxstatus_t=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ bfd_cv_have_sys_procfs_type_lwpxstatus_t=no
+
+fi
+rm -f conftest*
+fi
+
+ if test $bfd_cv_have_sys_procfs_type_lwpxstatus_t = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_LWPXSTATUS_T 1
+EOF
+
+ fi
+ 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:4855: checking for lwpstatus_t.pr_context in sys/procfs.h" >&5
+echo "configure:5709: 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 <<EOF
-#line 4860 "configure"
+#line 5714 "configure"
#include "confdefs.h"
+
+#define _SYSCALL32
#include <sys/procfs.h>
int main() {
lwpstatus_t avar; void* aref = (void*) &avar.pr_context
; return 0; }
EOF
-if { (eval echo configure:4867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5723: \"$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
@@ -4885,19 +5741,21 @@ 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:4889: checking for lwpstatus_t.pr_reg in sys/procfs.h" >&5
+echo "configure:5745: 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 <<EOF
-#line 4894 "configure"
+#line 5750 "configure"
#include "confdefs.h"
+
+#define _SYSCALL32
#include <sys/procfs.h>
int main() {
lwpstatus_t avar; void* aref = (void*) &avar.pr_reg
; return 0; }
EOF
-if { (eval echo configure:4901: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5759: \"$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
@@ -4919,19 +5777,21 @@ 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:4923: checking for win32_pstatus_t in sys/procfs.h" >&5
+echo "configure:5781: 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 <<EOF
-#line 4928 "configure"
+#line 5786 "configure"
#include "confdefs.h"
+
+#define _SYSCALL32
#include <sys/procfs.h>
int main() {
win32_pstatus_t avar
; return 0; }
EOF
-if { (eval echo configure:4935: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_win32_pstatus_t=yes
else
@@ -4956,10 +5816,12 @@ EOF
fi
-cat >> confdefs.h <<EOF
+if test -n "$TRAD_HEADER"; then
+ cat >> confdefs.h <<EOF
#define TRAD_HEADER $TRAD_HEADER
EOF
+fi
# Horrible hacks to build DLLs on Windows.
WIN32LDFLAGS=
@@ -5043,7 +5905,7 @@ selarchs="$f"
# Target backend .o files.
tb=
-elf="elf.lo elflink.lo dwarf2.lo dwarf1.lo"
+elf="elf.lo elflink.lo dwarf1.lo"
for vec in $selvecs
do
@@ -5071,8 +5933,19 @@ do
apollocoff_vec) tb="$tb coff-apollo.lo" ;;
b_out_vec_big_host) tb="$tb bout.lo aout32.lo" ;;
b_out_vec_little_host) tb="$tb bout.lo aout32.lo" ;;
+ bfd_efi_app_ia32_vec) tb="$tb efi-app-ia32.lo peigen.lo cofflink.lo" ;;
+ bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo peigen.lo cofflink.lo"
+ target64=true ;;
bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"
target64=true ;;
+ bfd_elf64_hppa_vec | bfd_elf64_hppa_linux_vec)
+ tb="$tb elf64-hppa.lo elf64.lo $elf"
+ target64=true ;;
+ bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"
+ target64=true ;;
+ bfd_elf64_ia64_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"
+ target64=true ;;
+ bfd_elf32_ia64_big_vec) tb="$tb elf32-ia64.lo elf32.lo $elf" ;;
bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
bfd_elf32_littlearc_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
bfd_elf32_littlearm_vec) tb="$tb elfarm-nabi.lo elf32.lo $elf" ;;
@@ -5084,19 +5957,27 @@ do
bfd_elf32_bigmips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf64_bigmips_vec) tb="$tb elf64-mips.lo elf64.lo elf32-mips.lo elf32.lo $elf ecofflink.lo"
target64=true ;;
+ bfd_elf32_cris_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;;
+ bfd_elf32_us_cris_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;;
bfd_elf32_d10v_vec) tb="$tb elf32-d10v.lo elf32.lo $elf" ;;
bfd_elf32_d30v_vec) tb="$tb elf32-d30v.lo elf32.lo $elf" ;;
bfd_elf32_fr30_vec) tb="$tb elf32-fr30.lo elf32.lo $elf" ;;
- bfd_elf32_hppa_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
+ bfd_elf32_hppa_vec | bfd_elf32_hppa_linux_vec)
+ tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
bfd_elf32_i370_vec) tb="$tb elf32-i370.lo elf32.lo $elf" ;;
bfd_elf32_i386_vec) tb="$tb elf32-i386.lo elf32.lo $elf" ;;
+ bfd_elf64_x86_64_vec) tb="$tb elf64-x86-64.lo elf64.lo $elf"
+ target64=true ;;
bfd_elf32_i860_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;;
+ bfd_elf32_i860_little_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;;
bfd_elf32_i960_vec) tb="$tb elf32-i960.lo elf32.lo $elf" ;;
bfd_elf32_little_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
bfd_elf32_littlemips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf64_littlemips_vec) tb="$tb elf64-mips.lo elf64.lo elf32-mips.lo elf32.lo $elf ecofflink.lo"
target64=true ;;
bfd_elf32_m32r_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
+ bfd_elf32_m68hc11_vec) tb="$tb elf32-m68hc11.lo elf32.lo $elf" ;;
+ bfd_elf32_m68hc12_vec) tb="$tb elf32-m68hc12.lo elf32.lo $elf" ;;
bfd_elf32_m68k_vec) tb="$tb elf32-m68k.lo elf32.lo $elf" ;;
bfd_elf32_m88k_vec) tb="$tb elf32-m88k.lo elf32.lo $elf" ;;
bfd_elf32_mcore_big_vec) tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
@@ -5109,7 +5990,11 @@ do
bfd_elf32_powerpcle_vec) tb="$tb elf32-ppc.lo elf32.lo $elf" ;;
bfd_elf32_sh_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo" ;;
bfd_elf32_shl_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo" ;;
+ bfd_elf32_shlin_vec) tb="$tb elf32-sh-lin.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
+ bfd_elf32_shblin_vec) tb="$tb elf32-sh-lin.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
bfd_elf32_sparc_vec) tb="$tb elf32-sparc.lo elf32.lo $elf" ;;
+ bfd_elf32_tradbigmips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;;
+ bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_v850_vec) tb="$tb elf32-v850.lo elf32.lo $elf" ;;
bfd_elf64_big_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"
target64=true ;;
@@ -5119,6 +6004,7 @@ do
target64=true ;;
cisco_core_big_vec) tb="$tb cisco-core.lo" ;;
cisco_core_little_vec) tb="$tb cisco-core.lo" ;;
+ cris_aout_vec) tb="$tb aout-cris.lo" ;;
demo_64_vec) tb="$tb demo64.lo aout64.lo"
target64=true ;;
ecoff_big_vec) tb="$tb coff-mips.lo ecoff.lo ecofflink.lo" ;;
@@ -5161,14 +6047,16 @@ do
m68kaux_coff_vec) tb="$tb coff-aux.lo coff-m68k.lo cofflink.lo" ;;
m68ksysvcoff_vec) tb="$tb coff-svm68k.lo cofflink.lo" ;;
m88kbcs_vec) tb="$tb coff-m88k.lo" ;;
- mipslpe_vec) tb="$tb pe-mips.lo cofflink.lo" ;;
- mipslpei_vec) tb="$tb pei-mips.lo cofflink.lo" ;;
+ mipslpe_vec) tb="$tb pe-mips.lo peigen.lo cofflink.lo" ;;
+ mipslpei_vec) tb="$tb pei-mips.lo peigen.lo cofflink.lo" ;;
mcore_pe_big_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
mcore_pe_little_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
mcore_pei_big_vec) tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
mcore_pei_little_vec) tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
newsos3_vec) tb="$tb newsos3.lo aout32.lo" ;;
nlm32_i386_vec) tb="$tb nlm32-i386.lo nlm32.lo nlm.lo" ;;
+ rs6000coff64_vec) tb="$tb coff64-rs6000.lo xcofflink.lo"
+ target64=true ;;
nlm32_sparc_vec) tb="$tb nlm32-sparc.lo nlm32.lo nlm.lo" ;;
nlm32_alpha_vec) tb="$tb nlm32-alpha.lo nlm32.lo nlm.lo"
target64=true ;;
@@ -5187,8 +6075,8 @@ do
shlcoff_vec) tb="$tb coff-sh.lo cofflink.lo" ;;
shcoff_small_vec) tb="$tb coff-sh.lo cofflink.lo" ;;
shlcoff_small_vec) tb="$tb coff-sh.lo cofflink.lo" ;;
- shlpe_vec) tb="$tb pe-sh.lo coff-sh.lo cofflink.lo" ;;
- shlpei_vec) tb="$tb pei-sh.lo coff-sh.lo cofflink.lo" ;;
+ shlpe_vec) tb="$tb pe-sh.lo coff-sh.lo peigen.lo cofflink.lo" ;;
+ shlpei_vec) tb="$tb pei-sh.lo coff-sh.lo peigen.lo cofflink.lo" ;;
som_vec) tb="$tb som.lo" ;;
sparcle_aout_vec) tb="$tb aout-sparcle.lo aout32.lo" ;;
sparclinux_vec) tb="$tb sparclinux.lo aout32.lo" ;;
@@ -5202,6 +6090,12 @@ do
tekhex_vec) tb="$tb tekhex.lo" ;;
tic30_aout_vec) tb="$tb aout-tic30.lo" ;;
tic30_coff_vec) tb="$tb coff-tic30.lo" ;;
+ tic54x_coff0_vec) tb="$tb coff-tic54x.lo" ;;
+ tic54x_coff0_beh_vec) tb="$tb coff-tic54x.lo" ;;
+ tic54x_coff1_vec) tb="$tb coff-tic54x.lo" ;;
+ tic54x_coff1_beh_vec) tb="$tb coff-tic54x.lo" ;;
+ tic54x_coff2_vec) tb="$tb coff-tic54x.lo" ;;
+ tic54x_coff2_beh_vec) tb="$tb coff-tic54x.lo" ;;
tic80coff_vec) tb="$tb coff-tic80.lo cofflink.lo" ;;
versados_vec) tb="$tb versados.lo" ;;
vms_alpha_vec) tb="$tb vms.lo vms-hdr.lo vms-gsd.lo vms-tir.lo vms-misc.lo"
@@ -5291,17 +6185,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:5295: checking for $ac_hdr" >&5
+echo "configure:6189: 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
-#line 5300 "configure"
+#line 6194 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5305: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6199: \"$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*
@@ -5330,12 +6224,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5334: checking for $ac_func" >&5
+echo "configure:6228: 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 <<EOF
-#line 5339 "configure"
+#line 6233 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5358,7 +6252,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6256: \"$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
@@ -5383,7 +6277,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:5387: checking for working mmap" >&5
+echo "configure:6281: 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
@@ -5391,7 +6285,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 5395 "configure"
+#line 6289 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -5418,15 +6312,12 @@ else
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
/* This mess was copied from the GNU getpagesize.h. */
#ifndef HAVE_GETPAGESIZE
+# ifdef HAVE_UNISTD_H
+# include <unistd.h>
+# endif
/* Assume that all systems that can run configure have sys/param.h. */
# ifndef HAVE_SYS_PARAM_H
@@ -5481,7 +6372,7 @@ main()
/*
* First, make a file with some known garbage in it.
*/
- data = (char*)malloc(pagesize);
+ data = malloc(pagesize);
if (!data)
exit(1);
for (i = 0; i < pagesize; ++i)
@@ -5502,7 +6393,7 @@ main()
fd = open("conftestmmap", O_RDWR);
if (fd < 0)
exit(1);
- data2 = (char*)malloc(2 * pagesize);
+ data2 = malloc(2 * pagesize);
if (!data2)
exit(1);
data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
@@ -5520,7 +6411,7 @@ main()
*/
for (i = 0; i < pagesize; ++i)
*(data2 + i) = *(data2 + i) + 1;
- data3 = (char*)malloc(pagesize);
+ data3 = malloc(pagesize);
if (!data3)
exit(1);
if (read(fd, data3, pagesize) != pagesize)
@@ -5534,7 +6425,7 @@ main()
}
EOF
-if { (eval echo configure:5538: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6429: \"$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
@@ -5559,12 +6450,12 @@ fi
for ac_func in madvise mprotect
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5563: checking for $ac_func" >&5
+echo "configure:6454: 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 <<EOF
-#line 5568 "configure"
+#line 6459 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5587,7 +6478,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5591: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6482: \"$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
@@ -5767,7 +6658,6 @@ 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%@CC@%$CC%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
s%@INSTALL_DATA@%$INSTALL_DATA%g
@@ -5781,12 +6671,16 @@ s%@MAKEINFO@%$MAKEINFO%g
s%@SET_MAKE@%$SET_MAKE%g
s%@AR@%$AR%g
s%@RANLIB@%$RANLIB%g
+s%@CC@%$CC%g
s%@LN_S@%$LN_S%g
+s%@OBJEXT@%$OBJEXT%g
+s%@EXEEXT@%$EXEEXT%g
+s%@STRIP@%$STRIP%g
s%@LIBTOOL@%$LIBTOOL%g
+s%@WARN_CFLAGS@%$WARN_CFLAGS%g
s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g
s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g
s%@MAINT@%$MAINT%g
-s%@EXEEXT@%$EXEEXT%g
s%@CPP@%$CPP%g
s%@ALLOCA@%$ALLOCA%g
s%@USE_NLS@%$USE_NLS%g
diff --git a/contrib/binutils/bfd/configure.host b/contrib/binutils/bfd/configure.host
index e24cd60..c72a4b3 100644
--- a/contrib/binutils/bfd/configure.host
+++ b/contrib/binutils/bfd/configure.host
@@ -27,6 +27,8 @@ hppa*-*-mpeix*) HDEFINES=-DHOST_HPPAMPEIX ;;
hppa*-*-bsd*) HDEFINES=-DHOST_HPPABSD ;;
hppa*-*-osf*) HDEFINES=-DHOST_HPPAOSF ;;
+ia64-*-linux*) host64=true; HOST_64BIT_TYPE=long ;;
+
i[3456]86-sequent-bsd*) HDEFINES=-Dshared=genshared ;;
i[3456]86-sequent-sysv4*) ;;
i[3456]86-sequent-sysv*) HDEFINES=-Dshared=genshared ;;
@@ -46,6 +48,10 @@ mips*-*-riscos*) HDEFINES="-G 4" ;;
m68*-hp-hpux*) HDEFINES=-DHOST_HP300HPUX ;;
+*-*-aix*) HOST_64BIT_TYPE="long long"
+ HOST_U_64BIT_TYPE="unsigned long long"
+ ;;
+
*-*-solaris*) HOST_64BIT_TYPE="long long"
HOST_U_64BIT_TYPE="unsigned long long"
;;
diff --git a/contrib/binutils/bfd/configure.in b/contrib/binutils/bfd/configure.in
index eac0a9e..eeb3eb7 100644
--- a/contrib/binutils/bfd/configure.in
+++ b/contrib/binutils/bfd/configure.in
@@ -7,7 +7,7 @@ AC_INIT(libbfd.c)
AC_CANONICAL_SYSTEM
AC_ISC_POSIX
-AM_INIT_AUTOMAKE(bfd, 2.10.1)
+AM_INIT_AUTOMAKE(bfd, 2.11)
dnl These must be called before AM_PROG_LIBTOOL, because it may want
dnl to call AC_CHECK_PROG.
@@ -50,6 +50,27 @@ AC_ARG_WITH(mmap,
*) AC_MSG_ERROR(bad value ${withval} for BFD with-mmap option) ;;
esac],[want_mmap=false])dnl
+build_warnings="-W -Wall"
+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
@@ -114,13 +135,16 @@ COREFLAG=
TRAD_HEADER=
if test "${target}" = "${host}"; then
case "${host}" in
+ alpha*-*-freebsd*)
+ COREFILE=''
+ ;;
alpha*-*-linux-gnu*)
COREFILE=trad-core.lo
TRAD_HEADER='"hosts/alphalinux.h"'
;;
alpha*-*-netbsd*) COREFILE=netbsd-core.lo ;;
- alpha*-*-freebsd*) ;;
alpha*-*-*) COREFILE=osf-core.lo ;;
+ arm-*-freebsd*) COREFILE='' ;;
arm-*-riscix) COREFILE=trad-core.lo ;;
hppa*-*-hpux*) COREFILE=hpux-core.lo ;;
hppa*-*-hiux*) COREFILE=hpux-core.lo ;;
@@ -146,12 +170,18 @@ changequote([,])dnl
TRAD_HEADER='"hosts/symmetry.h"'
;;
changequote(,)dnl
- i[3456]86-*-bsd* | i[3456]86-*-freebsd*)
+ i[3456]86-*-bsd* | i[34567]86-*-freebsd[1234] | i[34567]86-*-freebsd[1234]\.* | i[34567]86-*-freebsd*aout*)
changequote([,])dnl
COREFILE=trad-core.lo
TRAD_HEADER='"hosts/i386bsd.h"'
;;
changequote(,)dnl
+ i[3456]86-*-freebsd*)
+changequote([,])dnl
+ COREFILE=''
+ TRAD_HEADER='"hosts/i386bsd.h"'
+ ;;
+changequote(,)dnl
i[3456]86-*-netbsd* | i[3456]86-*-openbsd*)
changequote([,])dnl
COREFILE=netbsd-core.lo
@@ -266,12 +296,19 @@ changequote([,])dnl
COREFILE=netbsd-core.lo
;;
rs6000-*-lynx*) COREFILE=lynx-core.lo ;;
+changequote(,)dnl
+ rs6000-*-aix4.[3-9]* | powerpc-*-aix4.[3-9]*)
+changequote([,])dnl
+ COREFILE=rs6000-core.lo
+ COREFLAG="$COREFLAG -DAIX_CORE_DUMPX_CORE"
+ ;;
rs6000-*-aix4*) COREFILE=rs6000-core.lo ;;
rs6000-*-*) COREFILE=rs6000-core.lo ;;
powerpc-*-*bsd*) COREFILE=netbsd-core.lo ;;
powerpc-*-aix4*) COREFILE=rs6000-core.lo ;;
powerpc-*-aix*) COREFILE=rs6000-core.lo ;;
powerpc-*-beos*) ;;
+ powerpc-*-freebsd*) COREFILE='' ;;
powerpc-*-netbsd*) COREFILE=netbsd-core.lo ;;
sparc-*-netbsd* | sparc-*-openbsd*)
COREFILE=netbsd-core.lo
@@ -313,11 +350,18 @@ changequote([,])dnl
AC_CHECK_HEADERS(sys/procfs.h)
if test "$ac_cv_header_sys_procfs_h" = yes; then
BFD_HAVE_SYS_PROCFS_TYPE(prstatus_t)
+ BFD_HAVE_SYS_PROCFS_TYPE(prstatus32_t)
BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(prstatus_t, pr_who)
+ BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(prstatus32_t, pr_who)
BFD_HAVE_SYS_PROCFS_TYPE(pstatus_t)
+ BFD_HAVE_SYS_PROCFS_TYPE(pxstatus_t)
+ BFD_HAVE_SYS_PROCFS_TYPE(pstatus32_t)
BFD_HAVE_SYS_PROCFS_TYPE(prpsinfo_t)
+ BFD_HAVE_SYS_PROCFS_TYPE(prpsinfo32_t)
BFD_HAVE_SYS_PROCFS_TYPE(psinfo_t)
+ BFD_HAVE_SYS_PROCFS_TYPE(psinfo32_t)
BFD_HAVE_SYS_PROCFS_TYPE(lwpstatus_t)
+ BFD_HAVE_SYS_PROCFS_TYPE(lwpxstatus_t)
BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(lwpstatus_t, pr_context)
BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(lwpstatus_t, pr_reg)
BFD_HAVE_SYS_PROCFS_TYPE(win32_pstatus_t)
@@ -325,8 +369,10 @@ changequote([,])dnl
fi
AC_SUBST(COREFILE)
AC_SUBST(COREFLAG)
-AC_DEFINE_UNQUOTED(TRAD_HEADER, $TRAD_HEADER,
- [Name of host specific header file to include in trad-core.c.])
+if test -n "$TRAD_HEADER"; then
+ AC_DEFINE_UNQUOTED(TRAD_HEADER, $TRAD_HEADER,
+ [Name of host specific header file to include in trad-core.c.])
+fi
# Horrible hacks to build DLLs on Windows.
WIN32LDFLAGS=
@@ -410,7 +456,7 @@ selarchs="$f"
# Target backend .o files.
tb=
-elf="elf.lo elflink.lo dwarf2.lo dwarf1.lo"
+elf="elf.lo elflink.lo dwarf1.lo"
for vec in $selvecs
do
@@ -438,8 +484,19 @@ do
apollocoff_vec) tb="$tb coff-apollo.lo" ;;
b_out_vec_big_host) tb="$tb bout.lo aout32.lo" ;;
b_out_vec_little_host) tb="$tb bout.lo aout32.lo" ;;
+ bfd_efi_app_ia32_vec) tb="$tb efi-app-ia32.lo peigen.lo cofflink.lo" ;;
+ bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo peigen.lo cofflink.lo"
+ target64=true ;;
bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"
target64=true ;;
+ bfd_elf64_hppa_vec | bfd_elf64_hppa_linux_vec)
+ tb="$tb elf64-hppa.lo elf64.lo $elf"
+ target64=true ;;
+ bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"
+ target64=true ;;
+ bfd_elf64_ia64_big_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"
+ target64=true ;;
+ bfd_elf32_ia64_big_vec) tb="$tb elf32-ia64.lo elf32.lo $elf" ;;
bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
bfd_elf32_littlearc_vec) tb="$tb elf32-arc.lo elf32.lo $elf" ;;
bfd_elf32_littlearm_vec) tb="$tb elfarm-nabi.lo elf32.lo $elf" ;;
@@ -451,19 +508,27 @@ do
bfd_elf32_bigmips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf64_bigmips_vec) tb="$tb elf64-mips.lo elf64.lo elf32-mips.lo elf32.lo $elf ecofflink.lo"
target64=true ;;
+ bfd_elf32_cris_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;;
+ bfd_elf32_us_cris_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;;
bfd_elf32_d10v_vec) tb="$tb elf32-d10v.lo elf32.lo $elf" ;;
bfd_elf32_d30v_vec) tb="$tb elf32-d30v.lo elf32.lo $elf" ;;
bfd_elf32_fr30_vec) tb="$tb elf32-fr30.lo elf32.lo $elf" ;;
- bfd_elf32_hppa_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
+ bfd_elf32_hppa_vec | bfd_elf32_hppa_linux_vec)
+ tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
bfd_elf32_i370_vec) tb="$tb elf32-i370.lo elf32.lo $elf" ;;
bfd_elf32_i386_vec) tb="$tb elf32-i386.lo elf32.lo $elf" ;;
+ bfd_elf64_x86_64_vec) tb="$tb elf64-x86-64.lo elf64.lo $elf"
+ target64=true ;;
bfd_elf32_i860_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;;
+ bfd_elf32_i860_little_vec) tb="$tb elf32-i860.lo elf32.lo $elf" ;;
bfd_elf32_i960_vec) tb="$tb elf32-i960.lo elf32.lo $elf" ;;
bfd_elf32_little_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
bfd_elf32_littlemips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf64_littlemips_vec) tb="$tb elf64-mips.lo elf64.lo elf32-mips.lo elf32.lo $elf ecofflink.lo"
target64=true ;;
bfd_elf32_m32r_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
+ bfd_elf32_m68hc11_vec) tb="$tb elf32-m68hc11.lo elf32.lo $elf" ;;
+ bfd_elf32_m68hc12_vec) tb="$tb elf32-m68hc12.lo elf32.lo $elf" ;;
bfd_elf32_m68k_vec) tb="$tb elf32-m68k.lo elf32.lo $elf" ;;
bfd_elf32_m88k_vec) tb="$tb elf32-m88k.lo elf32.lo $elf" ;;
bfd_elf32_mcore_big_vec) tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
@@ -476,7 +541,11 @@ do
bfd_elf32_powerpcle_vec) tb="$tb elf32-ppc.lo elf32.lo $elf" ;;
bfd_elf32_sh_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo" ;;
bfd_elf32_shl_vec) tb="$tb elf32-sh.lo elf32.lo $elf coff-sh.lo" ;;
+ bfd_elf32_shlin_vec) tb="$tb elf32-sh-lin.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
+ bfd_elf32_shblin_vec) tb="$tb elf32-sh-lin.lo elf32.lo $elf coff-sh.lo cofflink.lo" ;;
bfd_elf32_sparc_vec) tb="$tb elf32-sparc.lo elf32.lo $elf" ;;
+ bfd_elf32_tradbigmips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;;
+ bfd_elf32_tradlittlemips_vec) tb="$tb elf32-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_v850_vec) tb="$tb elf32-v850.lo elf32.lo $elf" ;;
bfd_elf64_big_generic_vec) tb="$tb elf64-gen.lo elf64.lo $elf"
target64=true ;;
@@ -486,6 +555,7 @@ do
target64=true ;;
cisco_core_big_vec) tb="$tb cisco-core.lo" ;;
cisco_core_little_vec) tb="$tb cisco-core.lo" ;;
+ cris_aout_vec) tb="$tb aout-cris.lo" ;;
demo_64_vec) tb="$tb demo64.lo aout64.lo"
target64=true ;;
ecoff_big_vec) tb="$tb coff-mips.lo ecoff.lo ecofflink.lo" ;;
@@ -528,14 +598,16 @@ do
m68kaux_coff_vec) tb="$tb coff-aux.lo coff-m68k.lo cofflink.lo" ;;
m68ksysvcoff_vec) tb="$tb coff-svm68k.lo cofflink.lo" ;;
m88kbcs_vec) tb="$tb coff-m88k.lo" ;;
- mipslpe_vec) tb="$tb pe-mips.lo cofflink.lo" ;;
- mipslpei_vec) tb="$tb pei-mips.lo cofflink.lo" ;;
+ mipslpe_vec) tb="$tb pe-mips.lo peigen.lo cofflink.lo" ;;
+ mipslpei_vec) tb="$tb pei-mips.lo peigen.lo cofflink.lo" ;;
mcore_pe_big_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
mcore_pe_little_vec) tb="$tb pe-mcore.lo peigen.lo cofflink.lo" ;;
mcore_pei_big_vec) tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
mcore_pei_little_vec) tb="$tb pei-mcore.lo peigen.lo cofflink.lo" ;;
newsos3_vec) tb="$tb newsos3.lo aout32.lo" ;;
nlm32_i386_vec) tb="$tb nlm32-i386.lo nlm32.lo nlm.lo" ;;
+ rs6000coff64_vec) tb="$tb coff64-rs6000.lo xcofflink.lo"
+ target64=true ;;
nlm32_sparc_vec) tb="$tb nlm32-sparc.lo nlm32.lo nlm.lo" ;;
nlm32_alpha_vec) tb="$tb nlm32-alpha.lo nlm32.lo nlm.lo"
target64=true ;;
@@ -554,8 +626,8 @@ do
shlcoff_vec) tb="$tb coff-sh.lo cofflink.lo" ;;
shcoff_small_vec) tb="$tb coff-sh.lo cofflink.lo" ;;
shlcoff_small_vec) tb="$tb coff-sh.lo cofflink.lo" ;;
- shlpe_vec) tb="$tb pe-sh.lo coff-sh.lo cofflink.lo" ;;
- shlpei_vec) tb="$tb pei-sh.lo coff-sh.lo cofflink.lo" ;;
+ shlpe_vec) tb="$tb pe-sh.lo coff-sh.lo peigen.lo cofflink.lo" ;;
+ shlpei_vec) tb="$tb pei-sh.lo coff-sh.lo peigen.lo cofflink.lo" ;;
som_vec) tb="$tb som.lo" ;;
sparcle_aout_vec) tb="$tb aout-sparcle.lo aout32.lo" ;;
sparclinux_vec) tb="$tb sparclinux.lo aout32.lo" ;;
@@ -569,6 +641,12 @@ do
tekhex_vec) tb="$tb tekhex.lo" ;;
tic30_aout_vec) tb="$tb aout-tic30.lo" ;;
tic30_coff_vec) tb="$tb coff-tic30.lo" ;;
+ tic54x_coff0_vec) tb="$tb coff-tic54x.lo" ;;
+ tic54x_coff0_beh_vec) tb="$tb coff-tic54x.lo" ;;
+ tic54x_coff1_vec) tb="$tb coff-tic54x.lo" ;;
+ tic54x_coff1_beh_vec) tb="$tb coff-tic54x.lo" ;;
+ tic54x_coff2_vec) tb="$tb coff-tic54x.lo" ;;
+ tic54x_coff2_beh_vec) tb="$tb coff-tic54x.lo" ;;
tic80coff_vec) tb="$tb coff-tic80.lo cofflink.lo" ;;
versados_vec) tb="$tb versados.lo" ;;
vms_alpha_vec) tb="$tb vms.lo vms-hdr.lo vms-gsd.lo vms-tir.lo vms-misc.lo"
diff --git a/contrib/binutils/bfd/corefile.c b/contrib/binutils/bfd/corefile.c
index 212f519..061383f 100644
--- a/contrib/binutils/bfd/corefile.c
+++ b/contrib/binutils/bfd/corefile.c
@@ -30,7 +30,6 @@ DESCRIPTION
#include "sysdep.h"
#include "libbfd.h"
-
/*
FUNCTION
bfd_core_file_failing_command
@@ -78,7 +77,6 @@ bfd_core_file_failing_signal (abfd)
return BFD_SEND (abfd, _core_file_failing_signal, (abfd));
}
-
/*
FUNCTION
core_file_matches_executable_p
diff --git a/contrib/binutils/bfd/cpu-alpha.c b/contrib/binutils/bfd/cpu-alpha.c
index b89900b..48a16e3 100644
--- a/contrib/binutils/bfd/cpu-alpha.c
+++ b/contrib/binutils/bfd/cpu-alpha.c
@@ -40,7 +40,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define NN(index) (&arch_info_struct[index])
/* These exist only so that we can resonably disassemble PALcode. */
-static const bfd_arch_info_type arch_info_struct[] =
+static const bfd_arch_info_type arch_info_struct[] =
{
N (64, 64, bfd_mach_alpha_ev4, "alpha:ev4", false, NN(1)),
N (64, 64, bfd_mach_alpha_ev5, "alpha:ev5", false, NN(2)),
diff --git a/contrib/binutils/bfd/cpu-arm.c b/contrib/binutils/bfd/cpu-arm.c
index bda9c44..91507f8 100644
--- a/contrib/binutils/bfd/cpu-arm.c
+++ b/contrib/binutils/bfd/cpu-arm.c
@@ -47,7 +47,7 @@ compatible (a,b)
it can be polymorphed into the other */
if (a->the_default)
return b;
-
+
if (b->the_default)
return a;
@@ -93,9 +93,10 @@ processors[] =
{ bfd_mach_arm_4, "strongarm"},
{ bfd_mach_arm_4, "strongarm110" },
{ bfd_mach_arm_4, "strongarm1100" },
+ { bfd_mach_arm_XScale, "xscale" }
};
-static boolean
+static boolean
scan (info, string)
const struct bfd_arch_info * info;
const char * string;
@@ -119,16 +120,15 @@ scan (info, string)
/* Finally check for the default architecture */
if (strcasecmp (string, "arm") == 0)
return info->the_default;
-
+
return false;
}
-
#define N(number, print, default, next) \
{ 32, 32, 8, bfd_arch_arm, number, "arm", print, 4, default, compatible, scan, next }
static const bfd_arch_info_type arch_info_struct[] =
-{
+{
N( bfd_mach_arm_2, "armv2", false, & arch_info_struct[1] ),
N( bfd_mach_arm_2a, "armv2a", false, & arch_info_struct[2] ),
N( bfd_mach_arm_3, "armv3", false, & arch_info_struct[3] ),
@@ -136,7 +136,9 @@ static const bfd_arch_info_type arch_info_struct[] =
N( bfd_mach_arm_4, "armv4", false, & arch_info_struct[5] ),
N( bfd_mach_arm_4T, "armv4t", false, & arch_info_struct[6] ),
N( bfd_mach_arm_5, "armv5", false, & arch_info_struct[7] ),
- N( bfd_mach_arm_5T, "armv5t", false, NULL )
+ N( bfd_mach_arm_5T, "armv5t", false, & arch_info_struct[8] ),
+ N( bfd_mach_arm_5TE, "armv5te", false, & arch_info_struct[9] ),
+ N( bfd_mach_arm_XScale, "xscale", false, NULL )
};
const bfd_arch_info_type bfd_arm_arch =
diff --git a/contrib/binutils/bfd/cpu-i386.c b/contrib/binutils/bfd/cpu-i386.c
index f5b9b18..c3e9baf 100644
--- a/contrib/binutils/bfd/cpu-i386.c
+++ b/contrib/binutils/bfd/cpu-i386.c
@@ -32,10 +32,25 @@ const bfd_arch_info_type bfd_i386_arch_intel_syntax =
"i386:intel",
3,
true,
- bfd_default_compatible,
+ bfd_default_compatible,
bfd_default_scan ,
0,
};
+const bfd_arch_info_type bfd_x86_64_arch_intel_syntax =
+{
+ 64, /* 64 bits in a word */
+ 64, /* 64 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_i386,
+ bfd_mach_x86_64_intel_syntax,
+ "x86_64:intel",
+ "x86_64:intel",
+ 3,
+ true,
+ bfd_default_compatible,
+ bfd_default_scan ,
+ &bfd_i386_arch_intel_syntax,
+};
static const bfd_arch_info_type i8086_arch =
{
32, /* 32 bits in a word */
@@ -47,9 +62,25 @@ static const bfd_arch_info_type i8086_arch =
"i8086",
3,
false,
- bfd_default_compatible,
+ bfd_default_compatible,
bfd_default_scan ,
- &bfd_i386_arch_intel_syntax,
+ &bfd_x86_64_arch_intel_syntax,
+};
+
+const bfd_arch_info_type bfd_x86_64_arch =
+{
+ 64, /* 32 bits in a word */
+ 64, /* 32 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_i386,
+ bfd_mach_x86_64,
+ "x86_64",
+ "x86_64",
+ 3,
+ true,
+ bfd_default_compatible,
+ bfd_default_scan ,
+ &i8086_arch,
};
const bfd_arch_info_type bfd_i386_arch =
@@ -63,8 +94,7 @@ const bfd_arch_info_type bfd_i386_arch =
"i386",
3,
true,
- bfd_default_compatible,
+ bfd_default_compatible,
bfd_default_scan ,
- &i8086_arch,
+ &bfd_x86_64_arch
};
-
diff --git a/contrib/binutils/bfd/cpu-powerpc.c b/contrib/binutils/bfd/cpu-powerpc.c
index 11f0f80..2e41899 100644
--- a/contrib/binutils/bfd/cpu-powerpc.c
+++ b/contrib/binutils/bfd/cpu-powerpc.c
@@ -54,12 +54,12 @@ static const bfd_arch_info_type arch_info_struct[] =
32, /* 32 bits in an address */
8, /* 8 bits in a byte */
bfd_arch_powerpc,
- 603, /* for the mpc603 */
+ bfd_mach_ppc_603,
"powerpc",
"powerpc:603",
3,
false, /* not the default */
- powerpc_compatible,
+ powerpc_compatible,
bfd_default_scan,
&arch_info_struct[1]
},
@@ -68,12 +68,12 @@ static const bfd_arch_info_type arch_info_struct[] =
32, /* 32 bits in an address */
8, /* 8 bits in a byte */
bfd_arch_powerpc,
- 604, /* for the mpc604 */
+ bfd_mach_ppc_ec603e,
"powerpc",
- "powerpc:604",
+ "powerpc:EC603e",
3,
false, /* not the default */
- powerpc_compatible,
+ powerpc_compatible,
bfd_default_scan,
&arch_info_struct[2]
},
@@ -82,12 +82,12 @@ static const bfd_arch_info_type arch_info_struct[] =
32, /* 32 bits in an address */
8, /* 8 bits in a byte */
bfd_arch_powerpc,
- 403, /* for the 403 */
+ bfd_mach_ppc_604,
"powerpc",
- "powerpc:403",
+ "powerpc:604",
3,
false, /* not the default */
- powerpc_compatible,
+ powerpc_compatible,
bfd_default_scan,
&arch_info_struct[3]
},
@@ -96,12 +96,124 @@ static const bfd_arch_info_type arch_info_struct[] =
32, /* 32 bits in an address */
8, /* 8 bits in a byte */
bfd_arch_powerpc,
- 601, /* for the mpc601 */
+ bfd_mach_ppc_403,
+ "powerpc",
+ "powerpc:403",
+ 3,
+ false, /* not the default */
+ powerpc_compatible,
+ bfd_default_scan,
+ &arch_info_struct[4]
+ },
+ {
+ 32, /* 32 bits in a word */
+ 32, /* 32 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_powerpc,
+ bfd_mach_ppc_601,
"powerpc",
"powerpc:601",
3,
false, /* not the default */
- powerpc_compatible,
+ powerpc_compatible,
+ bfd_default_scan,
+ &arch_info_struct[5]
+ },
+ {
+ 64, /* 64 bits in a word */
+ 64, /* 64 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_powerpc,
+ bfd_mach_ppc_620,
+ "powerpc",
+ "powerpc:620",
+ 3,
+ false, /* not the default */
+ powerpc_compatible,
+ bfd_default_scan,
+ &arch_info_struct[6]
+ },
+ {
+ 64, /* 64 bits in a word */
+ 64, /* 64 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_powerpc,
+ bfd_mach_ppc_630,
+ "powerpc",
+ "powerpc:630",
+ 3,
+ false, /* not the default */
+ powerpc_compatible,
+ bfd_default_scan,
+ &arch_info_struct[7]
+ },
+ {
+ 64, /* 64 bits in a word */
+ 64, /* 64 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_powerpc,
+ bfd_mach_ppc_a35,
+ "powerpc",
+ "powerpc:a35",
+ 3,
+ false, /* not the default */
+ powerpc_compatible,
+ bfd_default_scan,
+ &arch_info_struct[8]
+ },
+ {
+ 64, /* 64 bits in a word */
+ 64, /* 64 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_powerpc,
+ bfd_mach_ppc_rs64ii,
+ "powerpc",
+ "powerpc:rs64ii",
+ 3,
+ false, /* not the default */
+ powerpc_compatible,
+ bfd_default_scan,
+ &arch_info_struct[9]
+ },
+ {
+ 64, /* 64 bits in a word */
+ 64, /* 64 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_powerpc,
+ bfd_mach_ppc_rs64iii,
+ "powerpc",
+ "powerpc:rs64iii",
+ 3,
+ false, /* not the default */
+ powerpc_compatible,
+ bfd_default_scan,
+ &arch_info_struct[10]
+ },
+ {
+ 32, /* 32 bits in a word */
+ 32, /* 32 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_powerpc,
+ bfd_mach_ppc_7400,
+ "powerpc",
+ "powerpc:7400",
+ 3,
+ false, /* not the default */
+ powerpc_compatible,
+ bfd_default_scan,
+ &arch_info_struct[11]
+ },
+ {
+ 32, /* 32 bits in a word */
+ 32, /* 32 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_powerpc,
+ bfd_mach_ppc_860,
+ "powerpc",
+ "powerpc:MPC8XX",
+ 3,
+ false, /* not the default */
+ powerpc_compatible,
bfd_default_scan,
0
}
@@ -113,12 +225,12 @@ const bfd_arch_info_type bfd_powerpc_arch =
32, /* 32 bits in an address */
8, /* 8 bits in a byte */
bfd_arch_powerpc,
- 0, /* for the POWER/PowerPC common architecture */
+ bfd_mach_ppc, /* for the POWER/PowerPC common architecture */
"powerpc",
"powerpc:common",
3,
true, /* the default */
- powerpc_compatible,
+ powerpc_compatible,
bfd_default_scan,
&arch_info_struct[0]
};
diff --git a/contrib/binutils/bfd/cpu-sparc.c b/contrib/binutils/bfd/cpu-sparc.c
index 234bd92..5c777d2 100644
--- a/contrib/binutils/bfd/cpu-sparc.c
+++ b/contrib/binutils/bfd/cpu-sparc.c
@@ -1,5 +1,5 @@
/* BFD support for the SPARC architecture.
- Copyright (C) 1992, 94, 95, 96, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1992, 94, 95, 96, 97, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -49,7 +49,7 @@ static const bfd_arch_info_type arch_info_struct[] =
"sparc:sparclet",
3,
false,
- sparc_compatible,
+ sparc_compatible,
bfd_default_scan,
&arch_info_struct[1],
},
@@ -63,7 +63,7 @@ static const bfd_arch_info_type arch_info_struct[] =
"sparc:sparclite",
3,
false,
- sparc_compatible,
+ sparc_compatible,
bfd_default_scan,
&arch_info_struct[2],
},
@@ -77,7 +77,7 @@ static const bfd_arch_info_type arch_info_struct[] =
"sparc:v8plus",
3,
false,
- sparc_compatible,
+ sparc_compatible,
bfd_default_scan,
&arch_info_struct[3],
},
@@ -91,7 +91,7 @@ static const bfd_arch_info_type arch_info_struct[] =
"sparc:v8plusa",
3,
false,
- sparc_compatible,
+ sparc_compatible,
bfd_default_scan,
&arch_info_struct[4],
},
@@ -105,7 +105,7 @@ static const bfd_arch_info_type arch_info_struct[] =
"sparc:sparclite_le",
3,
false,
- sparc_compatible,
+ sparc_compatible,
bfd_default_scan,
&arch_info_struct[5],
},
@@ -119,7 +119,7 @@ static const bfd_arch_info_type arch_info_struct[] =
"sparc:v9",
3,
false,
- sparc_compatible,
+ sparc_compatible,
bfd_default_scan,
&arch_info_struct[6],
},
@@ -133,7 +133,35 @@ static const bfd_arch_info_type arch_info_struct[] =
"sparc:v9a",
3,
false,
- sparc_compatible,
+ sparc_compatible,
+ bfd_default_scan,
+ &arch_info_struct[7],
+ },
+ {
+ 32, /* bits in a word */
+ 32, /* bits in an address */
+ 8, /* bits in a byte */
+ bfd_arch_sparc,
+ bfd_mach_sparc_v8plusb,
+ "sparc",
+ "sparc:v8plusb",
+ 3,
+ false,
+ sparc_compatible,
+ bfd_default_scan,
+ &arch_info_struct[8],
+ },
+ {
+ 64, /* bits in a word */
+ 64, /* bits in an address */
+ 8, /* bits in a byte */
+ bfd_arch_sparc,
+ bfd_mach_sparc_v9b,
+ "sparc",
+ "sparc:v9b",
+ 3,
+ false,
+ sparc_compatible,
bfd_default_scan,
0,
}
@@ -150,7 +178,7 @@ const bfd_arch_info_type bfd_sparc_arch =
"sparc",
3,
true, /* the default */
- sparc_compatible,
+ sparc_compatible,
bfd_default_scan,
&arch_info_struct[0],
};
diff --git a/contrib/binutils/bfd/cpu-v850.c b/contrib/binutils/bfd/cpu-v850.c
index 539413d..55606f8 100644
--- a/contrib/binutils/bfd/cpu-v850.c
+++ b/contrib/binutils/bfd/cpu-v850.c
@@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <ctype.h>
-static boolean
+static boolean
scan (info, string)
const struct bfd_arch_info * info;
const char * string;
@@ -41,9 +41,9 @@ scan (info, string)
architecture, eg the string m68k:68020 would match the m68k entry
up to the :, then we get left with the machine number */
- for (ptr_src = string, ptr_tst = info->arch_name;
+ for (ptr_src = string, ptr_tst = info->arch_name;
*ptr_src && *ptr_tst;
- ptr_src++, ptr_tst++)
+ ptr_src++, ptr_tst++)
{
if (*ptr_src != *ptr_tst) break;
}
@@ -52,7 +52,7 @@ scan (info, string)
colons */
if (*ptr_src == ':')
ptr_src++;
-
+
if (*ptr_src == 0)
{
/* nothing more, then only keep this one if it is the default
@@ -67,15 +67,15 @@ scan (info, string)
ptr_src++;
}
- switch (number)
+ switch (number)
{
case bfd_mach_v850e: arch = bfd_arch_v850; break;
case bfd_mach_v850ea: arch = bfd_arch_v850; break;
- default:
+ default:
return false;
}
- if (arch != info->arch)
+ if (arch != info->arch)
return false;
if (number != info->mach)
@@ -90,7 +90,7 @@ scan (info, string)
#define NEXT NULL
-static const bfd_arch_info_type arch_info_struct[] =
+static const bfd_arch_info_type arch_info_struct[] =
{
N (bfd_mach_v850e, "v850e", false, &arch_info_struct[1]),
N (bfd_mach_v850ea, "v850ea", false, NULL)
diff --git a/contrib/binutils/bfd/cpu-z8k.c b/contrib/binutils/bfd/cpu-z8k.c
index 5cce8eb..29682c1 100644
--- a/contrib/binutils/bfd/cpu-z8k.c
+++ b/contrib/binutils/bfd/cpu-z8k.c
@@ -22,7 +22,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "sysdep.h"
#include "libbfd.h"
-
#if 0 /* not used currently */
/*
Relocations for the Z8K
@@ -50,7 +49,6 @@ howto16_callback (abfd, reloc_entry, symbol_in, data,
return bfd_reloc_ok;
}
-
static bfd_reloc_status_type
howto8_callback (abfd, reloc_entry, symbol_in, data,
ignore_input_section, ignore_bfd)
@@ -73,7 +71,6 @@ howto8_callback (abfd, reloc_entry, symbol_in, data,
return bfd_reloc_ok;
}
-
static bfd_reloc_status_type
howto8_FFnn_callback (abfd, reloc_entry, symbol_in, data,
ignore_input_section, ignore_bfd)
@@ -119,8 +116,6 @@ howto8_pcrel_callback (abfd, reloc_entry, symbol_in, data,
return bfd_reloc_ok;
}
-
-
static reloc_howto_type howto_16
= NEWHOWTO (howto16_callback, "abs16", 1, false, false);
static reloc_howto_type howto_8
@@ -132,7 +127,6 @@ static reloc_howto_type howto_8_FFnn
static reloc_howto_type howto_8_pcrel
= NEWHOWTO (howto8_pcrel_callback, "pcrel8", 0, false, true);
-
static reloc_howto_type *
local_bfd_reloc_type_lookup (arch, code)
const struct bfd_arch_info *arch;
@@ -172,7 +166,6 @@ scan_mach (info, string)
return false;
}
-
/* This routine is provided two arch_infos and returns whether
they'd be compatible */
@@ -186,7 +179,6 @@ compatible (a, b)
return a;
}
-
static const bfd_arch_info_type arch_info_struct[] =
{
{32, 32, 8, bfd_arch_z8k, bfd_mach_z8001, "z8k", "z8001", 1, false, compatible, scan_mach, 0,},
diff --git a/contrib/binutils/bfd/dep-in.sed b/contrib/binutils/bfd/dep-in.sed
index 9da181a..c3781f2 100644
--- a/contrib/binutils/bfd/dep-in.sed
+++ b/contrib/binutils/bfd/dep-in.sed
@@ -6,6 +6,7 @@ t loop
s!\.o:!.lo:!
s! @BFD_H@!!g
s!@INCDIR@!$(INCDIR)!g
+s!@SRCDIR@/../opcodes!$(srcdir)/../opcodes!g
s!@SRCDIR@/!!g
s! hosts/[^ ]*\.h! !g
s/ sysdep.h//g
diff --git a/contrib/binutils/bfd/doc/ChangeLog b/contrib/binutils/bfd/doc/ChangeLog
index def932c..57326a9 100644
--- a/contrib/binutils/bfd/doc/ChangeLog
+++ b/contrib/binutils/bfd/doc/ChangeLog
@@ -1,3 +1,30 @@
+2001-01-25 Kazu Hirata <kazu@hxi.com>
+
+ * chew.c: Do not output trailing whitespaces in type and
+ functionname. Update copyright.
+
+2001-01-24 Kazu Hirata <kazu@hxi.com>
+
+ * chew.c: Do not output a trailing whitespace.
+
+2000-11-06 Nick Clifton <nickc@redhat.com>
+
+ * bfd.texinfo: Add GNU Free Documentation License.
+
+2000-07-09 Alan Modra <alan@linuxcare.com.au>
+
+ * Makefile.in: Regenerate.
+
+2000-07-08 Alan Modra <alan@linuxcare.com.au>
+
+ * chew.c (outputdots): Don't add a space before `/*'.
+ (courierize): Likewise.
+
+Wed May 24 12:03:25 2000 Hans-Peter Nilsson <hp@axis.com>
+
+ * bfdint.texi (BFD ELF processor required): Add paragraph about
+ target necessities for readelf.
+
2000-04-30 Ben Elliston <bje@redhat.com>
* bfdint.texi (BFD generated files): Fix another typo.
@@ -6,6 +33,10 @@
* bfdint.texi (BFD_JUMP_TABLE macros): Fix typo.
+Fri Apr 7 17:54:38 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * Makefile.in: Rebuild with current autoconf/automake.
+
Thu Feb 4 23:21:36 1999 Ian Lance Taylor <ian@cygnus.com>
* Makefile.in: Rebuild with current autoconf/automake.
diff --git a/contrib/binutils/bfd/doc/Makefile.in b/contrib/binutils/bfd/doc/Makefile.in
index acdc9bf..dfc33e1 100644
--- a/contrib/binutils/bfd/doc/Makefile.in
+++ b/contrib/binutils/bfd/doc/Makefile.in
@@ -75,10 +75,14 @@ CC = @CC@
CC_FOR_BUILD = @CC_FOR_BUILD@
COREFILE = @COREFILE@
COREFLAG = @COREFLAG@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
DATADIRNAME = @DATADIRNAME@
DLLTOOL = @DLLTOOL@
EXEEXT = @EXEEXT@
EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
+GCJ = @GCJ@
+GCJFLAGS = @GCJFLAGS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GT_NO = @GT_NO@
@@ -96,14 +100,17 @@ MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
POFILES = @POFILES@
POSUB = @POSUB@
RANLIB = @RANLIB@
+STRIP = @STRIP@
TDEFINES = @TDEFINES@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
WIN32LDFLAGS = @WIN32LDFLAGS@
WIN32LIBADD = @WIN32LIBADD@
all_backends = @all_backends@
@@ -187,7 +194,7 @@ DIST_COMMON = ChangeLog Makefile.am Makefile.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = tar
+TAR = gtar
GZIP_ENV = --best
all: all-redirect
.SUFFIXES:
diff --git a/contrib/binutils/bfd/doc/aoutx.texi b/contrib/binutils/bfd/doc/aoutx.texi
index d97e96a..d99fd05 100644
--- a/contrib/binutils/bfd/doc/aoutx.texi
+++ b/contrib/binutils/bfd/doc/aoutx.texi
@@ -148,7 +148,7 @@ Swap the information in an internal exec header structure
@example
const bfd_target *aout_@var{size}_some_aout_object_p
(bfd *abfd,
- const bfd_target *(*callback_to_real_object_p)());
+ const bfd_target *(*callback_to_real_object_p) ());
@end example
@strong{Description}@*
Some a.out variant thinks that the file open in @var{abfd}
diff --git a/contrib/binutils/bfd/doc/archures.texi b/contrib/binutils/bfd/doc/archures.texi
index 6ee20e9..b363780 100644
--- a/contrib/binutils/bfd/doc/archures.texi
+++ b/contrib/binutils/bfd/doc/archures.texi
@@ -1,7 +1,7 @@
@section Architectures
BFD keeps one atom in a BFD describing the
architecture of the data attached to the BFD: a pointer to a
-@code{bfd_arch_info_type}.
+@code{bfd_arch_info_type}.
Pointers to structures can be requested independently of a BFD
so that an architecture's information can be interrogated
@@ -11,13 +11,13 @@ The architecture information is provided by each architecture package.
The set of default architectures is selected by the macro
@code{SELECT_ARCHITECTURES}. This is normally set up in the
@file{config/@var{target}.mt} file of your choice. If the name is not
-defined, then all the architectures supported are included.
+defined, then all the architectures supported are included.
When BFD starts up, all the architectures are called with an
initialize method. It is up to the architecture back end to
insert as many items into the list of architectures as it wants to;
generally this would be one for each machine and one for the
-default case (an item with a machine field of 0).
+default case (an item with a machine field of 0).
BFD's idea of an architecture is implemented in @file{archures.c}.
@@ -31,13 +31,13 @@ Another field indicates which processor within
the family is in use. The machine gives a number which
distinguishes different versions of the architecture,
containing, for example, 2 and 3 for Intel i960 KA and i960 KB,
-and 68020 and 68030 for Motorola 68020 and 68030.
+and 68020 and 68030 for Motorola 68020 and 68030.
@example
-enum bfd_architecture
+enum bfd_architecture
@{
- bfd_arch_unknown, /* File arch not known */
- bfd_arch_obscure, /* Arch known, not one of these */
- bfd_arch_m68k, /* Motorola 68xxx */
+ bfd_arch_unknown, /* File arch not known */
+ bfd_arch_obscure, /* Arch known, not one of these */
+ bfd_arch_m68k, /* Motorola 68xxx */
#define bfd_mach_m68000 1
#define bfd_mach_m68008 2
#define bfd_mach_m68010 3
@@ -46,14 +46,14 @@ enum bfd_architecture
#define bfd_mach_m68040 6
#define bfd_mach_m68060 7
#define bfd_mach_cpu32 8
- bfd_arch_vax, /* DEC Vax */
- bfd_arch_i960, /* Intel 960 */
- /* The order of the following is important.
- lower number indicates a machine type that
+ bfd_arch_vax, /* DEC Vax */
+ bfd_arch_i960, /* Intel 960 */
+ /* The order of the following is important.
+ lower number indicates a machine type that
only accepts a subset of the instructions
available to machines with higher numbers.
The exception is the "ca", which is
- incompatible with all other machines except
+ incompatible with all other machines except
"core". */
#define bfd_mach_i960_core 1
@@ -65,21 +65,24 @@ enum bfd_architecture
#define bfd_mach_i960_jx 7
#define bfd_mach_i960_hx 8
- bfd_arch_a29k, /* AMD 29000 */
- bfd_arch_sparc, /* SPARC */
+ bfd_arch_a29k, /* AMD 29000 */
+ bfd_arch_sparc, /* SPARC */
#define bfd_mach_sparc 1
- /* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
+/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
#define bfd_mach_sparc_sparclet 2
#define bfd_mach_sparc_sparclite 3
#define bfd_mach_sparc_v8plus 4
-#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns */
+#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns */
#define bfd_mach_sparc_sparclite_le 6
#define bfd_mach_sparc_v9 7
-#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns */
- /* Nonzero if MACH has the v9 instruction set. */
+#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns */
+#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns */
+#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns */
+/* Nonzero if MACH has the v9 instruction set. */
#define bfd_mach_sparc_v9_p(mach) \
- ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9a)
- bfd_arch_mips, /* MIPS Rxxxx */
+ ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
+ && (mach) != bfd_mach_sparc_sparclite_le)
+ bfd_arch_mips, /* MIPS Rxxxx */
#define bfd_mach_mips3000 3000
#define bfd_mach_mips3900 3900
#define bfd_mach_mips4000 4000
@@ -95,36 +98,66 @@ enum bfd_architecture
#define bfd_mach_mips8000 8000
#define bfd_mach_mips10000 10000
#define bfd_mach_mips16 16
- bfd_arch_i386, /* Intel 386 */
+#define bfd_mach_mips32 32
+#define bfd_mach_mips32_4k 3204113 /* 32, 04, octal 'K' */
+#define bfd_mach_mips5 5
+#define bfd_mach_mips64 64
+#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
+ bfd_arch_i386, /* Intel 386 */
#define bfd_mach_i386_i386 0
#define bfd_mach_i386_i8086 1
#define bfd_mach_i386_i386_intel_syntax 2
- bfd_arch_we32k, /* AT&T WE32xxx */
- bfd_arch_tahoe, /* CCI/Harris Tahoe */
- bfd_arch_i860, /* Intel 860 */
- bfd_arch_i370, /* IBM 360/370 Mainframes */
- bfd_arch_romp, /* IBM ROMP PC/RT */
- bfd_arch_alliant, /* Alliant */
- bfd_arch_convex, /* Convex */
- bfd_arch_m88k, /* Motorola 88xxx */
- bfd_arch_pyramid, /* Pyramid Technology */
- bfd_arch_h8300, /* Hitachi H8/300 */
+#define bfd_mach_x86_64 3
+#define bfd_mach_x86_64_intel_syntax 4
+ bfd_arch_we32k, /* AT&T WE32xxx */
+ bfd_arch_tahoe, /* CCI/Harris Tahoe */
+ bfd_arch_i860, /* Intel 860 */
+ bfd_arch_i370, /* IBM 360/370 Mainframes */
+ bfd_arch_romp, /* IBM ROMP PC/RT */
+ bfd_arch_alliant, /* Alliant */
+ bfd_arch_convex, /* Convex */
+ bfd_arch_m88k, /* Motorola 88xxx */
+ bfd_arch_pyramid, /* Pyramid Technology */
+ bfd_arch_h8300, /* Hitachi H8/300 */
#define bfd_mach_h8300 1
#define bfd_mach_h8300h 2
#define bfd_mach_h8300s 3
- bfd_arch_powerpc, /* PowerPC */
- bfd_arch_rs6000, /* IBM RS/6000 */
- bfd_arch_hppa, /* HP PA RISC */
- bfd_arch_d10v, /* Mitsubishi D10V */
+ bfd_arch_powerpc, /* PowerPC */
+#define bfd_mach_ppc 0
+#define bfd_mach_ppc_403 403
+#define bfd_mach_ppc_403gc 4030
+#define bfd_mach_ppc_505 505
+#define bfd_mach_ppc_601 601
+#define bfd_mach_ppc_602 602
+#define bfd_mach_ppc_603 603
+#define bfd_mach_ppc_ec603e 6031
+#define bfd_mach_ppc_604 604
+#define bfd_mach_ppc_620 620
+#define bfd_mach_ppc_630 630
+#define bfd_mach_ppc_750 750
+#define bfd_mach_ppc_860 860
+#define bfd_mach_ppc_a35 35
+#define bfd_mach_ppc_rs64ii 642
+#define bfd_mach_ppc_rs64iii 643
+#define bfd_mach_ppc_7400 7400
+ bfd_arch_rs6000, /* IBM RS/6000 */
+#define bfd_mach_rs6k 0
+#define bfd_mach_rs6k_rs1 6001
+#define bfd_mach_rs6k_rsc 6003
+#define bfd_mach_rs6k_rs2 6002
+ bfd_arch_hppa, /* HP PA RISC */
+ bfd_arch_d10v, /* Mitsubishi D10V */
#define bfd_mach_d10v 0
#define bfd_mach_d10v_ts2 2
#define bfd_mach_d10v_ts3 3
- bfd_arch_d30v, /* Mitsubishi D30V */
- bfd_arch_z8k, /* Zilog Z8000 */
+ bfd_arch_d30v, /* Mitsubishi D30V */
+ bfd_arch_m68hc11, /* Motorola 68HC11 */
+ bfd_arch_m68hc12, /* Motorola 68HC12 */
+ bfd_arch_z8k, /* Zilog Z8000 */
#define bfd_mach_z8001 1
#define bfd_mach_z8002 2
- bfd_arch_h8500, /* Hitachi H8/500 */
- bfd_arch_sh, /* Hitachi SH */
+ bfd_arch_h8500, /* Hitachi H8/500 */
+ bfd_arch_sh, /* Hitachi SH */
#define bfd_mach_sh 0
#define bfd_mach_sh2 0x20
#define bfd_mach_sh_dsp 0x2d
@@ -132,11 +165,11 @@ enum bfd_architecture
#define bfd_mach_sh3_dsp 0x3d
#define bfd_mach_sh3e 0x3e
#define bfd_mach_sh4 0x40
- bfd_arch_alpha, /* Dec Alpha */
+ bfd_arch_alpha, /* Dec Alpha */
#define bfd_mach_alpha_ev4 0x10
#define bfd_mach_alpha_ev5 0x20
#define bfd_mach_alpha_ev6 0x30
- bfd_arch_arm, /* Advanced Risc Machines ARM */
+ bfd_arch_arm, /* Advanced Risc Machines ARM */
#define bfd_mach_arm_2 1
#define bfd_mach_arm_2a 2
#define bfd_mach_arm_3 3
@@ -145,32 +178,43 @@ enum bfd_architecture
#define bfd_mach_arm_4T 6
#define bfd_mach_arm_5 7
#define bfd_mach_arm_5T 8
- bfd_arch_ns32k, /* National Semiconductors ns32000 */
- bfd_arch_w65, /* WDC 65816 */
- bfd_arch_tic30, /* Texas Instruments TMS320C30 */
- bfd_arch_tic80, /* TI TMS320c80 (MVP) */
- bfd_arch_v850, /* NEC V850 */
+#define bfd_mach_arm_5TE 9
+#define bfd_mach_arm_XScale 10
+ bfd_arch_ns32k, /* National Semiconductors ns32000 */
+ bfd_arch_w65, /* WDC 65816 */
+ bfd_arch_tic30, /* Texas Instruments TMS320C30 */
+ bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
+ bfd_arch_tic80, /* TI TMS320c80 (MVP) */
+ bfd_arch_v850, /* NEC V850 */
#define bfd_mach_v850 0
#define bfd_mach_v850e 'E'
#define bfd_mach_v850ea 'A'
- bfd_arch_arc, /* Argonaut RISC Core */
-#define bfd_mach_arc_base 0
- bfd_arch_m32r, /* Mitsubishi M32R/D */
-#define bfd_mach_m32r 0 /* backwards compatibility */
+ bfd_arch_arc, /* ARC Cores */
+#define bfd_mach_arc_5 0
+#define bfd_mach_arc_6 1
+#define bfd_mach_arc_7 2
+#define bfd_mach_arc_8 3
+ bfd_arch_m32r, /* Mitsubishi M32R/D */
+#define bfd_mach_m32r 0 /* backwards compatibility */
#define bfd_mach_m32rx 'x'
- bfd_arch_mn10200, /* Matsushita MN10200 */
- bfd_arch_mn10300, /* Matsushita MN10300 */
+ bfd_arch_mn10200, /* Matsushita MN10200 */
+ bfd_arch_mn10300, /* Matsushita MN10300 */
#define bfd_mach_mn10300 300
#define bfd_mach_am33 330
bfd_arch_fr30,
#define bfd_mach_fr30 0x46523330
bfd_arch_mcore,
+ bfd_arch_ia64, /* HP/Intel ia64 */
+#define bfd_mach_ia64_elf64 0
+#define bfd_mach_ia64_elf32 1
bfd_arch_pj,
- bfd_arch_avr, /* Atmel AVR microcontrollers */
+ bfd_arch_avr, /* Atmel AVR microcontrollers */
#define bfd_mach_avr1 1
#define bfd_mach_avr2 2
#define bfd_mach_avr3 3
#define bfd_mach_avr4 4
+#define bfd_mach_avr5 5
+ bfd_arch_cris, /* Axis CRIS */
bfd_arch_last
@};
@end example
@@ -183,7 +227,7 @@ This structure contains information on architectures for use
within BFD.
@example
-typedef struct bfd_arch_info
+typedef struct bfd_arch_info
@{
int bits_per_word;
int bits_per_address;
@@ -193,8 +237,8 @@ typedef struct bfd_arch_info
const char *arch_name;
const char *printable_name;
unsigned int section_align_power;
- /* true if this is the default machine for the architecture */
- boolean the_default;
+ /* True if this is the default machine for the architecture. */
+ boolean the_default;
const struct bfd_arch_info * (*compatible)
PARAMS ((const struct bfd_arch_info *a,
const struct bfd_arch_info *b));
@@ -380,7 +424,7 @@ const char *bfd_printable_arch_mach
@end example
@strong{Description}@*
Return a printable string representing the architecture and
-machine type.
+machine type.
This routine is depreciated.
@@ -404,6 +448,7 @@ unsigned int bfd_arch_mach_octets_per_byte(enum bfd_architecture arch,
@end example
@strong{Description}@*
See bfd_octets_per_byte.
+
This routine is provided for those cases where a bfd * is not
available
diff --git a/contrib/binutils/bfd/doc/bfd.texinfo b/contrib/binutils/bfd/doc/bfd.texinfo
index a302bcf..9803371 100644
--- a/contrib/binutils/bfd/doc/bfd.texinfo
+++ b/contrib/binutils/bfd/doc/bfd.texinfo
@@ -1,6 +1,6 @@
\input texinfo.tex
@setfilename bfd.info
-@c $Id: bfd.texinfo,v 1.1.1.1 1999/05/03 07:28:58 rth Exp $
+@c $Id: bfd.texinfo,v 1.2 2000/11/15 18:24:49 nickc Exp $
@tex
% NOTE LOCAL KLUGE TO AVOID TOO MUCH WHITESPACE
\global\long\def\example{%
@@ -28,11 +28,14 @@ END-INFO-DIR-ENTRY
@ifinfo
This file documents the BFD library.
-Copyright (C) 1991 Free Software Foundation, Inc.
+Copyright (C) 1991, 2000 Free Software Foundation, Inc.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+ Permission is granted to copy, 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".
@ignore
Permission is granted to process this file through Tex and print the
@@ -41,14 +44,6 @@ notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).
@end ignore
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, subject to the terms
-of the GNU General Public License, which includes the provision that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
@end ifinfo
@iftex
@c@finalout
@@ -67,7 +62,7 @@ into another language, under the above conditions for modified versions.
@tex
\def\$#1${{#1}} % Kluge: collect RCS revision info without $...$
-\xdef\manvers{\$Revision: 1.1.1.1 $} % For use in headers, footers too
+\xdef\manvers{\$Revision: 1.2 $} % For use in headers, footers too
{\parskip=0pt
\hfill Cygnus Support\par
\hfill sac\@cygnus.com\par
@@ -80,18 +75,13 @@ into another language, under the above conditions for modified versions.
@vskip 0pt plus 1filll
Copyright @copyright{} 1991 Free Software Foundation, Inc.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+ Permission is granted to copy, 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".
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, subject to the terms
-of the GNU General Public License, which includes the provision that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
@end titlepage
@end iftex
@@ -104,6 +94,7 @@ This file documents the binary file descriptor library libbfd.
* Overview:: Overview of BFD
* BFD front end:: BFD front end
* BFD back ends:: BFD back ends
+* GNU Free Documentation License:: GNU Free Documentation License
* Index:: Index
@end menu
@@ -298,7 +289,7 @@ structures.
@node Hash Tables, , Linker Functions, BFD front end
@include hash.texi
-@node BFD back ends, Index, BFD front end, Top
+@node BFD back ends, GNU Free Documentation License, BFD front end, Top
@chapter BFD back ends
@menu
* What to Put Where::
@@ -325,7 +316,371 @@ All of BFD lives in one directory.
@c Leave this out until the file has some actual contents...
@c @include elfcode.texi
-@node Index, , BFD back ends , Top
+@node GNU Free Documentation License, Index, BFD back ends, Top
+@chapter GNU Free Documentation License
+@cindex GNU Free Documentation License
+
+ GNU Free Documentation License
+
+ Version 1.1, March 2000
+
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+written document "free" in the sense of freedom: to assure everyone
+the effective freedom to copy and redistribute it, with or without
+modifying it, either commercially or noncommercially. Secondarily,
+this License preserves for the author and publisher a way to get
+credit for their work, while not being considered responsible for
+modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a
+notice placed by the copyright holder saying it can be distributed
+under the terms of this License. The "Document", below, refers to any
+such manual or work. Any member of the public is a licensee, and is
+addressed as "you".
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (For example, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, whose contents can be viewed and edited directly and
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup has been designed to thwart or discourage
+subsequent modification by readers is not Transparent. A copy that is
+not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML designed for human modification. Opaque formats include
+PostScript, PDF, proprietary formats that can be read and edited only
+by proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML produced by some word processors for output
+purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100,
+and the Document's license notice requires Cover Texts, you must enclose
+the copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a publicly-accessible computer-network location containing a complete
+Transparent copy of the Document, free of added material, which the
+general network-using public has access to download anonymously at no
+charge using public-standard network protocols. If you use the latter
+option, you must take reasonably prudent steps, when you begin
+distribution of Opaque copies in quantity, to ensure that this
+Transparent copy will remain thus accessible at the stated location
+until at least one year after the last time you distribute an Opaque
+copy (directly or through your agents or retailers) of that edition to
+the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has less than five).
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section entitled "History", and its title, and add to
+ it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. In any section entitled "Acknowledgements" or "Dedications",
+ preserve the section's title, and preserve in the section all the
+ substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section as "Endorsements"
+ or to conflict in title with any Invariant Section.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled "History"
+in the various original documents, forming one section entitled
+"History"; likewise combine any sections entitled "Acknowledgements",
+and any sections entitled "Dedications". You must delete all sections
+entitled "Endorsements."
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, does not as a whole count as a Modified Version
+of the Document, provided no compilation copyright is claimed for the
+compilation. Such a compilation is called an "aggregate", and this
+License does not apply to the other self-contained works thus compiled
+with the Document, on account of their being thus compiled, if they
+are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one quarter
+of the entire aggregate, the Document's Cover Texts may be placed on
+covers that surround only the Document within the aggregate.
+Otherwise they must appear on covers around the whole aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License provided that you also include the
+original English version of this License. In case of a disagreement
+between the translation and the original English version of this
+License, the original English version will prevail.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1
+ or any later version published by the Free Software Foundation;
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+@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 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.
+
+@node Index, , GNU Free Documentation License , Top
@unnumbered Index
@printindex cp
diff --git a/contrib/binutils/bfd/doc/bfdint.texi b/contrib/binutils/bfd/doc/bfdint.texi
index 39eaacf..b0a0182 100644
--- a/contrib/binutils/bfd/doc/bfdint.texi
+++ b/contrib/binutils/bfd/doc/bfdint.texi
@@ -18,8 +18,7 @@
This document describes some BFD internal information which may be
helpful when working on BFD. It is very incomplete.
-This document is not updated regularly, and may be out of date. It was
-last modified on $Date: 2000/04/30 15:07:52 $.
+This document is not updated regularly, and may be out of date.
The initial version of this document was written by Ian Lance Taylor
@email{ian@@cygnus.com}.
@@ -1607,6 +1606,10 @@ it should use the @samp{START_RELOC_NUMBERS}, @samp{RELOC_NUMBER},
macros to create a table mapping the number used to indentify a
relocation to a name describing that relocation.
+While not a BFD component, you probably also want to make the binutils
+program @samp{readelf} parse your ELF objects. For this, you need to add
+code for @code{EM_@var{cpu}} as appropriate in @file{binutils/readelf.c}.
+
@node BFD ELF processor linker
@subsubsection Processor specific linker support
diff --git a/contrib/binutils/bfd/doc/bfdt.texi b/contrib/binutils/bfd/doc/bfdt.texi
index 98269fb..b9e6fb7 100644
--- a/contrib/binutils/bfd/doc/bfdt.texi
+++ b/contrib/binutils/bfd/doc/bfdt.texi
@@ -10,10 +10,10 @@ to the rest of the data.
@example
-struct _bfd
+struct _bfd
@{
/* The filename the application opened the BFD with. */
- CONST char *filename;
+ CONST char *filename;
/* A pointer to the target jump table. */
const struct bfd_target *xvec;
@@ -46,7 +46,7 @@ struct _bfd
/* When a file is closed by the caching routines, BFD retains
state information on the file here: */
- file_ptr where;
+ file_ptr where;
/* and here: (``once'' means at least once) */
@@ -59,7 +59,7 @@ struct _bfd
/* File modified time, if mtime_set is true: */
- long mtime;
+ long mtime;
/* Reserved for an unimplemented file locking extension.*/
@@ -78,13 +78,13 @@ struct _bfd
/* Format_specific flags*/
- flagword flags;
+ flagword flags;
/* Currently my_archive is tested before adding origin to
anything. I believe that this can become always an add of
origin, with origin set to 0 for non archive files. */
- file_ptr origin;
+ file_ptr origin;
/* Remember when output has begun, to stop strange things
from happening. */
@@ -96,7 +96,7 @@ struct _bfd
/* The number of sections */
unsigned int section_count;
- /* Stuff only useful for object files:
+ /* Stuff only useful for object files:
The start address. */
bfd_vma start_address;
@@ -104,17 +104,17 @@ struct _bfd
unsigned int symcount;
/* Symbol table for output BFD (with symcount entries) */
- struct symbol_cache_entry **outsymbols;
+ struct symbol_cache_entry **outsymbols;
/* Pointer to structure which contains architecture information*/
const struct bfd_arch_info *arch_info;
/* Stuff only useful for archives:*/
- PTR arelt_data;
+ PTR arelt_data;
struct _bfd *my_archive; /* The containing archive BFD. */
struct _bfd *next; /* The next BFD in the archive. */
struct _bfd *archive_head; /* The first BFD in the archive. */
- boolean has_armap;
+ boolean has_armap;
/* A chain of BFD structures involved in a link. */
struct _bfd *link_next;
@@ -125,7 +125,7 @@ struct _bfd
/* Used by the back end to hold private data. */
- union
+ union
@{
struct aout_data_struct *aout_data;
struct artdata *aout_ar_data;
@@ -157,7 +157,7 @@ struct _bfd
struct netbsd_core_struct *netbsd_core_data;
PTR any;
@} tdata;
-
+
/* Used by the application to hold private data*/
PTR usrdata;
@@ -366,6 +366,39 @@ type of file. E.g., an attempt was made to set the @code{D_PAGED} bit
on a BFD format which does not support demand paging.
@end itemize
+@findex bfd_get_arch_size
+@subsubsection @code{bfd_get_arch_size}
+@strong{Synopsis}
+@example
+int bfd_get_arch_size (bfd *abfd);
+@end example
+@strong{Description}@*
+Returns the architecture address size, in bits, as determined
+by the object file's format. For ELF, this information is
+included in the header.
+
+@strong{Returns}@*
+Returns the arch size in bits if known, @code{-1} otherwise.
+
+@findex bfd_get_sign_extend_vma
+@subsubsection @code{bfd_get_sign_extend_vma}
+@strong{Synopsis}
+@example
+int bfd_get_sign_extend_vma (bfd *abfd);
+@end example
+@strong{Description}@*
+Indicates if the target architecture "naturally" sign extends
+an address. Some architectures implicitly sign extend address
+values when they are converted to types larger than the size
+of an address. For instance, bfd_get_start_address() will
+return an address sign extended to fill a bfd_vma when this is
+the case.
+
+@strong{Returns}@*
+Returns @code{1} if the target architecture is known to sign
+extend addresses, @code{0} if the target architecture is known to
+not sign extend addresses, and @code{-1} otherwise.
+
@findex bfd_set_start_address
@subsubsection @code{bfd_set_start_address}
@strong{Synopsis}
@@ -407,7 +440,7 @@ it so that such results were guaranteed.
Instead, we want to ask questions like "is this NNN byte sized
object I'm about to try read from file offset YYY reasonable?"
As as example of where we might do this, some object formats
-use string tables for which the first @code{sizeof(long)} bytes of the
+use string tables for which the first @code{sizeof (long)} bytes of the
table contain the size of the table itself, including the size bytes.
If an application tries to read what it thinks is one of these
string tables, without some way to validate the size, and for
@@ -466,7 +499,7 @@ Overflow is not detected.
boolean bfd_copy_private_bfd_data(bfd *ibfd, bfd *obfd);
@end example
@strong{Description}@*
-Copy private BFD information from the BFD @var{ibfd} to the
+Copy private BFD information from the BFD @var{ibfd} to the
the BFD @var{obfd}. Return @code{true} on success, @code{false} on error.
Possible error returns are:
@@ -489,7 +522,7 @@ Not enough memory exists to create private data for @var{obfd}.
boolean bfd_merge_private_bfd_data(bfd *ibfd, bfd *obfd);
@end example
@strong{Description}@*
-Merge private BFD information from the BFD @var{ibfd} to the
+Merge private BFD information from the BFD @var{ibfd} to the
the output file BFD @var{obfd} when linking. Return @code{true}
on success, @code{false} on error. Possible error returns are:
@@ -539,7 +572,7 @@ Stuff which should be documented:
#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
BFD_SEND (abfd, _bfd_find_nearest_line, (abfd, sec, syms, off, file, func, line))
- /* Do these three do anything useful at all, for any back end? */
+ /* Do these three do anything useful at all, for any back end? */
#define bfd_debug_info_start(abfd) \
BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
diff --git a/contrib/binutils/bfd/doc/cache.texi b/contrib/binutils/bfd/doc/cache.texi
index 4aafb69..56d1f18 100644
--- a/contrib/binutils/bfd/doc/cache.texi
+++ b/contrib/binutils/bfd/doc/cache.texi
@@ -40,7 +40,7 @@ otherwise, it has to perform the complicated lookup function.
@example
#define bfd_cache_lookup(x) \
((x)==bfd_last_cache? \
- (FILE*)(bfd_last_cache->iostream): \
+ (FILE*) (bfd_last_cache->iostream): \
bfd_cache_lookup_worker(x))
@end example
diff --git a/contrib/binutils/bfd/doc/chew.c b/contrib/binutils/bfd/doc/chew.c
index eba69c2..7b98ccf 100644
--- a/contrib/binutils/bfd/doc/chew.c
+++ b/contrib/binutils/bfd/doc/chew.c
@@ -1,5 +1,5 @@
/* chew
- Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 1998
+ Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 1998, 2000, 2001
Free Software Foundation, Inc.
Contributed by steve chamberlain @cygnus
@@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Yet another way of extracting documentation from source.
No, I haven't finished it yet, but I hope you people like it better
than the old way
-
+
sac
Basically, this is a sort of string forth, maybe we should call it
@@ -81,7 +81,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
Foo. */
-
#include <ansidecl.h>
#include "sysdep.h"
#include <assert.h>
@@ -96,16 +95,15 @@ int internal_mode;
int warning;
-/* Here is a string type ... */
+/* Here is a string type ... */
-typedef struct buffer
+typedef struct buffer
{
char *ptr;
unsigned long write_idx;
unsigned long size;
} string_type;
-
#ifdef __STDC__
static void init_string_with_size (string_type *, unsigned int);
static void init_string (string_type *);
@@ -121,100 +119,104 @@ static void cattext (string_type *, char *);
static void catstr (string_type *, string_type *);
#endif
-
-static void DEFUN(init_string_with_size,(buffer, size),
- string_type *buffer AND
- unsigned int size )
+static void
+init_string_with_size (buffer, size)
+ string_type *buffer;
+ unsigned int size;
{
- buffer->write_idx = 0;
- buffer->size = size;
- buffer->ptr = malloc(size);
+ buffer->write_idx = 0;
+ buffer->size = size;
+ buffer->ptr = malloc (size);
}
-static void DEFUN(init_string,(buffer),
- string_type *buffer)
+static void
+init_string (buffer)
+ string_type *buffer;
{
- init_string_with_size(buffer, DEF_SIZE);
-
+ init_string_with_size (buffer, DEF_SIZE);
}
-static int DEFUN(find, (str, what),
- string_type *str AND
- char *what)
+static int
+find (str, what)
+ string_type *str;
+ char *what;
{
- unsigned int i;
- char *p;
- p = what;
- for (i = 0; i < str->write_idx && *p; i++)
+ unsigned int i;
+ char *p;
+ p = what;
+ for (i = 0; i < str->write_idx && *p; i++)
{
- if (*p == str->ptr[i])
- p++;
- else
- p = what;
+ if (*p == str->ptr[i])
+ p++;
+ else
+ p = what;
}
- return (*p == 0);
-
+ return (*p == 0);
}
-static void DEFUN(write_buffer,(buffer, f),
- string_type *buffer AND
- FILE *f)
+static void
+write_buffer (buffer, f)
+ string_type *buffer;
+ FILE *f;
{
- fwrite(buffer->ptr, buffer->write_idx, 1, f);
+ fwrite (buffer->ptr, buffer->write_idx, 1, f);
}
-
-static void DEFUN(delete_string,(buffer),
- string_type *buffer)
+static void
+delete_string (buffer)
+ string_type *buffer;
{
- free(buffer->ptr);
+ free (buffer->ptr);
}
-
-static char *DEFUN(addr, (buffer, idx),
- string_type *buffer AND
- unsigned int idx)
+static char *
+addr (buffer, idx)
+ string_type *buffer;
+ unsigned int idx;
{
- return buffer->ptr + idx;
+ return buffer->ptr + idx;
}
-static char DEFUN(at,(buffer, pos),
- string_type *buffer AND
- unsigned int pos)
+static char
+at (buffer, pos)
+ string_type *buffer;
+ unsigned int pos;
{
- if (pos >= buffer->write_idx)
+ if (pos >= buffer->write_idx)
return 0;
return buffer->ptr[pos];
}
-static void DEFUN(catchar,(buffer, ch),
- string_type *buffer AND
- int ch)
+static void
+catchar (buffer, ch)
+ string_type *buffer;
+ int ch;
{
- if (buffer->write_idx == buffer->size)
+ if (buffer->write_idx == buffer->size)
{
- buffer->size *=2;
- buffer->ptr = realloc(buffer->ptr, buffer->size);
+ buffer->size *= 2;
+ buffer->ptr = realloc (buffer->ptr, buffer->size);
}
- buffer->ptr[buffer->write_idx ++ ] = ch;
+ buffer->ptr[buffer->write_idx++] = ch;
}
-
-static void DEFUN(overwrite_string,(dst, src),
- string_type *dst AND
- string_type *src)
-{
- free(dst->ptr);
- dst->size = src->size;
- dst->write_idx = src->write_idx;
- dst->ptr = src->ptr;
+static void
+overwrite_string (dst, src)
+ string_type *dst;
+ string_type *src;
+{
+ free (dst->ptr);
+ dst->size = src->size;
+ dst->write_idx = src->write_idx;
+ dst->ptr = src->ptr;
}
-static void DEFUN(catbuf,(buffer, buf, len),
- string_type *buffer AND
- char *buf AND
- unsigned int len)
+static void
+catbuf (buffer, buf, len)
+ string_type *buffer;
+ char *buf;
+ unsigned int len;
{
if (buffer->write_idx + len >= buffer->size)
{
@@ -226,41 +228,41 @@ static void DEFUN(catbuf,(buffer, buf, len),
buffer->write_idx += len;
}
-static void DEFUN(cattext,(buffer, string),
- string_type *buffer AND
- char *string)
+static void
+cattext (buffer, string)
+ string_type *buffer;
+ char *string;
{
catbuf (buffer, string, (unsigned int) strlen (string));
}
-static void DEFUN(catstr,(dst, src),
- string_type *dst AND
- string_type *src)
+static void
+catstr (dst, src)
+ string_type *dst;
+ string_type *src;
{
catbuf (dst, src->ptr, src->write_idx);
}
-
-static unsigned int
-DEFUN(skip_white_and_stars,(src, idx),
- string_type *src AND
- unsigned int idx)
+static unsigned int
+skip_white_and_stars (src, idx)
+ string_type *src;
+ unsigned int idx;
{
char c;
- while ((c = at(src,idx)),
+ while ((c = at (src, idx)),
isspace ((unsigned char) c)
|| (c == '*'
/* Don't skip past end-of-comment or star as first
character on its line. */
- && at(src,idx +1) != '/'
- && at(src,idx -1) != '\n'))
+ && at (src, idx +1) != '/'
+ && at (src, idx -1) != '\n'))
idx++;
return idx;
}
/***********************************************************************/
-
string_type stack[STACK];
string_type *tos;
@@ -275,19 +277,18 @@ long *isp = &istack[0];
typedef int *word_type;
-
-
struct dict_struct
{
- char *word;
- struct dict_struct *next;
- stinst_type *code;
- int code_length;
- int code_end;
- int var;
-
+ char *word;
+ struct dict_struct *next;
+ stinst_type *code;
+ int code_length;
+ int code_end;
+ int var;
};
+
typedef struct dict_struct dict_type;
+
#define WORD(x) static void x()
static void
@@ -352,27 +353,28 @@ static void usage (void);
static void chew_exit (void);
#endif
-static void DEFUN(exec,(word),
- dict_type *word)
+static void
+exec (word)
+ dict_type *word;
{
pc = word->code;
- while (*pc)
- (*pc)();
+ while (*pc)
+ (*pc) ();
}
-WORD(call)
-{
- stinst_type *oldpc = pc;
- dict_type *e;
- e = (dict_type *)(pc [1]);
- exec(e);
- pc = oldpc + 2;
-
+
+WORD (call)
+{
+ stinst_type *oldpc = pc;
+ dict_type *e;
+ e = (dict_type *) (pc[1]);
+ exec (e);
+ pc = oldpc + 2;
}
-WORD(remchar)
+WORD (remchar)
{
if (tos->write_idx)
- tos->write_idx--;
+ tos->write_idx--;
pc++;
}
@@ -386,81 +388,80 @@ strip_trailing_newlines ()
pc++;
}
-WORD(push_number)
+WORD (push_number)
{
- isp++;
- icheck_range ();
- pc++;
- *isp = (long)(*pc);
- pc++;
+ isp++;
+ icheck_range ();
+ pc++;
+ *isp = (long) (*pc);
+ pc++;
}
-WORD(push_text)
+WORD (push_text)
{
- tos++;
- check_range ();
- init_string(tos);
- pc++;
- cattext(tos,*((char **)pc));
- pc++;
-
+ tos++;
+ check_range ();
+ init_string (tos);
+ pc++;
+ cattext (tos, *((char **) pc));
+ pc++;
}
-
/* This function removes everything not inside comments starting on
the first char of the line from the string, also when copying
comments, removes blank space and leading *'s.
Blank lines are turned into one blank line. */
-static void
-DEFUN(remove_noncomments,(src,dst),
- string_type *src AND
- string_type *dst)
+static void
+remove_noncomments (src, dst)
+ string_type *src;
+ string_type *dst;
{
- unsigned int idx = 0;
-
- while (at(src,idx))
+ unsigned int idx = 0;
+
+ while (at (src, idx))
{
- /* Now see if we have a comment at the start of the line */
- if (at(src,idx) == '\n'
- && at(src,idx+1) == '/'
- && at(src,idx+2) == '*')
+ /* Now see if we have a comment at the start of the line. */
+ if (at (src, idx) == '\n'
+ && at (src, idx + 1) == '/'
+ && at (src, idx + 2) == '*')
{
- idx+=3;
-
- idx = skip_white_and_stars(src,idx);
-
- /* Remove leading dot */
- if (at(src, idx) == '.')
- idx++;
-
- /* Copy to the end of the line, or till the end of the
- comment */
- while (at(src, idx))
+ idx += 3;
+
+ idx = skip_white_and_stars (src, idx);
+
+ /* Remove leading dot */
+ if (at (src, idx) == '.')
+ idx++;
+
+ /* Copy to the end of the line, or till the end of the
+ comment. */
+ while (at (src, idx))
{
- if (at(src, idx) == '\n')
+ if (at (src, idx) == '\n')
{
- /* end of line, echo and scrape of leading blanks */
- if (at(src,idx +1) == '\n')
- catchar(dst,'\n');
- catchar(dst,'\n');
- idx++;
- idx = skip_white_and_stars(src, idx);
+ /* end of line, echo and scrape of leading blanks */
+ if (at (src, idx + 1) == '\n')
+ catchar (dst, '\n');
+ catchar (dst, '\n');
+ idx++;
+ idx = skip_white_and_stars (src, idx);
}
- else if (at(src, idx) == '*' && at(src,idx+1) == '/')
+ else if (at (src, idx) == '*' && at (src, idx + 1) == '/')
{
- idx +=2 ;
- cattext(dst,"\nENDDD\n");
- break;
+ idx += 2;
+ cattext (dst, "\nENDDD\n");
+ break;
}
- else
+ else
{
- catchar(dst, at(src, idx));
- idx++;
+ catchar (dst, at (src, idx));
+ idx++;
}
}
}
- else idx++;
+ else
+ idx++;
}
}
@@ -481,98 +482,103 @@ print_stack_level ()
*/
static void
-DEFUN_VOID(paramstuff)
-{
- unsigned int openp;
- unsigned int fname;
- unsigned int idx;
- string_type out;
- init_string(&out);
-
-
- /* make sure that it's not already param'd or proto'd */
- if(find(tos,"PARAMS") || find(tos,"PROTO") || !find(tos,"(")) {
- catstr(&out,tos);
- }
- else
- {
- /* Find the open paren */
- for (openp = 0; at(tos, openp) != '(' && at(tos,openp); openp++)
- ;
+paramstuff (void)
+{
+ unsigned int openp;
+ unsigned int fname;
+ unsigned int idx;
+ unsigned int len;
+ string_type out;
+ init_string (&out);
- fname = openp;
- /* Step back to the fname */
+ /* Make sure that it's not already param'd or proto'd. */
+ if (find (tos, "PARAMS") || find (tos, "PROTO") || !find (tos, "("))
+ {
+ catstr (&out, tos);
+ }
+ else
+ {
+ /* Find the open paren. */
+ for (openp = 0; at (tos, openp) != '(' && at (tos, openp); openp++)
+ ;
+
+ fname = openp;
+ /* Step back to the fname. */
+ fname--;
+ while (fname && isspace ((unsigned char) at (tos, fname)))
fname--;
- while (fname && isspace((unsigned char) at(tos, fname)))
- fname --;
- while (fname
- && !isspace((unsigned char) at(tos,fname))
- && at(tos,fname) != '*')
- fname--;
-
- fname++;
-
- for (idx = 0; idx < fname; idx++) /* Output type */
- {
- catchar(&out, at(tos,idx));
- }
-
- cattext(&out, "\n"); /* Insert a newline between type and fnname */
+ while (fname
+ && !isspace ((unsigned char) at (tos,fname))
+ && at (tos,fname) != '*')
+ fname--;
+
+ fname++;
- for (idx = fname; idx < openp; idx++) /* Output fnname */
+ /* Output type, omitting trailing whitespace character(s), if
+ any. */
+ for (len = fname; 0 < len; len--)
{
- catchar(&out, at(tos,idx));
+ if (!isspace ((unsigned char) at (tos, len - 1)))
+ break;
}
+ for (idx = 0; idx < len; idx++)
+ catchar (&out, at (tos, idx));
- cattext(&out," PARAMS (");
+ cattext (&out, "\n"); /* Insert a newline between type and fnname */
- while (at(tos,idx) && at(tos,idx) !=';')
+ /* Output function name, omitting trailing whitespace
+ character(s), if any. */
+ for (len = openp; 0 < len; len--)
{
- catchar(&out, at(tos, idx));
- idx++;
+ if (!isspace ((unsigned char) at (tos, len - 1)))
+ break;
}
- cattext(&out,");\n\n");
- }
- overwrite_string(tos, &out);
- pc++;
-
-}
+ for (idx = fname; idx < len; idx++)
+ catchar (&out, at (tos, idx));
+
+ cattext (&out, " PARAMS (");
+ for (idx = openp; at (tos, idx) && at (tos, idx) != ';'; idx++)
+ catchar (&out, at (tos, idx));
+ cattext (&out, ");\n\n");
+ }
+ overwrite_string (tos, &out);
+ pc++;
+
+}
/* turn {*
and *} into comments */
-WORD(translatecomments)
+WORD (translatecomments)
{
- unsigned int idx = 0;
- string_type out;
- init_string(&out);
-
- while (at(tos, idx))
+ unsigned int idx = 0;
+ string_type out;
+ init_string (&out);
+
+ while (at (tos, idx))
{
- if (at(tos,idx) == '{' && at(tos,idx+1) =='*')
+ if (at (tos, idx) == '{' && at (tos, idx + 1) == '*')
{
- cattext(&out,"/*");
- idx+=2;
+ cattext (&out, "/*");
+ idx += 2;
}
- else if (at(tos,idx) == '*' && at(tos,idx+1) =='}')
+ else if (at (tos, idx) == '*' && at (tos, idx + 1) == '}')
{
- cattext(&out,"*/");
- idx+=2;
+ cattext (&out, "*/");
+ idx += 2;
}
- else
+ else
{
- catchar(&out, at(tos, idx));
- idx++;
+ catchar (&out, at (tos, idx));
+ idx++;
}
}
+ overwrite_string (tos, &out);
- overwrite_string(tos, &out);
-
- pc++;
-
+ pc++;
}
#if 0
@@ -581,843 +587,822 @@ WORD(translatecomments)
/* turn everything not starting with a . into a comment */
-WORD(manglecomments)
+WORD (manglecomments)
{
- unsigned int idx = 0;
- string_type out;
- init_string(&out);
-
- while (at(tos, idx))
+ unsigned int idx = 0;
+ string_type out;
+ init_string (&out);
+
+ while (at (tos, idx))
{
- if (at(tos,idx) == '\n' && at(tos,idx+1) =='*')
+ if (at (tos, idx) == '\n' && at (tos, idx + 1) == '*')
{
- cattext(&out," /*");
- idx+=2;
+ cattext (&out, " /*");
+ idx += 2;
}
- else if (at(tos,idx) == '*' && at(tos,idx+1) =='}')
+ else if (at (tos, idx) == '*' && at (tos, idx + 1) == '}')
{
- cattext(&out,"*/");
- idx+=2;
+ cattext (&out, "*/");
+ idx += 2;
}
- else
+ else
{
- catchar(&out, at(tos, idx));
- idx++;
+ catchar (&out, at (tos, idx));
+ idx++;
}
}
+ overwrite_string (tos, &out);
- overwrite_string(tos, &out);
-
- pc++;
-
+ pc++;
}
#endif
/* Mod tos so that only lines with leading dots remain */
static void
-DEFUN_VOID(outputdots)
+outputdots (void)
{
- unsigned int idx = 0;
- string_type out;
- init_string(&out);
-
- while (at(tos, idx))
+ unsigned int idx = 0;
+ string_type out;
+ init_string (&out);
+
+ while (at (tos, idx))
{
- if (at(tos, idx) == '\n' && at(tos, idx+1) == '.')
+ if (at (tos, idx) == '\n' && at (tos, idx + 1) == '.')
{
char c;
idx += 2;
-
- while ((c = at(tos, idx)) && c != '\n')
+
+ while ((c = at (tos, idx)) && c != '\n')
{
- if (c == '{' && at(tos,idx+1) =='*')
+ if (c == '{' && at (tos, idx + 1) == '*')
{
- cattext(&out," /*");
- idx+=2;
+ cattext (&out, "/*");
+ idx += 2;
}
- else if (c == '*' && at(tos,idx+1) =='}')
+ else if (c == '*' && at (tos, idx + 1) == '}')
{
- cattext(&out,"*/");
- idx+=2;
+ cattext (&out, "*/");
+ idx += 2;
}
else
{
- catchar(&out, c);
- idx++;
+ catchar (&out, c);
+ idx++;
}
}
- catchar(&out,'\n');
+ catchar (&out, '\n');
}
- else
+ else
{
- idx++;
+ idx++;
}
- }
+ }
- overwrite_string(tos, &out);
- pc++;
-
+ overwrite_string (tos, &out);
+ pc++;
}
/* Find lines starting with . and | and put example around them on tos */
-WORD(courierize)
-{
- string_type out;
- unsigned int idx = 0;
- int command = 0;
-
- init_string(&out);
-
- while (at(tos, idx))
+WORD (courierize)
+{
+ string_type out;
+ unsigned int idx = 0;
+ int command = 0;
+
+ init_string (&out);
+
+ while (at (tos, idx))
{
- if (at(tos, idx) == '\n'
- && (at(tos, idx +1 ) == '.'
- || at(tos,idx+1) == '|'))
+ if (at (tos, idx) == '\n'
+ && (at (tos, idx +1 ) == '.'
+ || at (tos, idx + 1) == '|'))
{
- cattext(&out,"\n@example\n");
- do
+ cattext (&out, "\n@example\n");
+ do
{
- idx += 2;
-
- while (at(tos, idx) && at(tos, idx)!='\n')
+ idx += 2;
+
+ while (at (tos, idx) && at (tos, idx) != '\n')
{
- if (at(tos,idx)=='{' && at(tos,idx+1) =='*')
+ if (at (tos, idx) == '{' && at (tos, idx + 1) == '*')
{
- cattext(&out," /*");
- idx+=2;
+ cattext (&out, "/*");
+ idx += 2;
}
- else if (at(tos,idx)=='*' && at(tos,idx+1) =='}')
+ else if (at (tos, idx) == '*' && at (tos, idx + 1) == '}')
{
- cattext(&out,"*/");
- idx+=2;
+ cattext (&out, "*/");
+ idx += 2;
}
- else if (at(tos,idx) == '{' && !command)
+ else if (at (tos, idx) == '{' && !command)
{
- cattext(&out,"@{");
- idx++;
+ cattext (&out, "@{");
+ idx++;
}
- else if (at(tos,idx) == '}' && !command)
+ else if (at (tos, idx) == '}' && !command)
{
- cattext(&out,"@}");
- idx++;
+ cattext (&out, "@}");
+ idx++;
}
- else
+ else
{
- if (at(tos,idx) == '@')
- command = 1;
- else if (isspace((unsigned char) at(tos,idx))
- || at(tos,idx) == '}')
- command = 0;
- catchar(&out, at(tos, idx));
- idx++;
+ if (at (tos, idx) == '@')
+ command = 1;
+ else if (isspace ((unsigned char) at (tos, idx))
+ || at (tos, idx) == '}')
+ command = 0;
+ catchar (&out, at (tos, idx));
+ idx++;
}
-
+
}
- catchar(&out,'\n');
- }
- while (at(tos, idx) == '\n'
- && ((at(tos, idx+1) == '.')
- || (at(tos,idx+1) == '|')))
- ;
- cattext(&out,"@end example");
+ catchar (&out, '\n');
+ }
+ while (at (tos, idx) == '\n'
+ && ((at (tos, idx + 1) == '.')
+ || (at (tos, idx + 1) == '|')))
+ ;
+ cattext (&out, "@end example");
}
- else
- {
- catchar(&out, at(tos, idx));
- idx++;
+ else
+ {
+ catchar (&out, at (tos, idx));
+ idx++;
}
- }
-
- overwrite_string(tos, &out);
- pc++;
+ }
-
+ overwrite_string (tos, &out);
+ pc++;
}
/* Finds any lines starting with "o ", if there are any, then turns
on @itemize @bullet, and @items each of them. Then ends with @end
itemize, inplace at TOS*/
-
-WORD(bulletize)
+WORD (bulletize)
{
- unsigned int idx = 0;
- int on = 0;
- string_type out;
- init_string(&out);
-
- while (at(tos, idx)) {
- if (at(tos, idx) == '@' &&
- at(tos, idx+1) == '*')
+ unsigned int idx = 0;
+ int on = 0;
+ string_type out;
+ init_string (&out);
+
+ while (at (tos, idx))
+ {
+ if (at (tos, idx) == '@'
+ && at (tos, idx + 1) == '*')
{
- cattext(&out,"*");
- idx+=2;
+ cattext (&out, "*");
+ idx += 2;
}
-
- else
- if (at(tos, idx) == '\n' &&
- at(tos, idx+1) == 'o' &&
- isspace((unsigned char) at(tos, idx +2)))
+ else if (at (tos, idx) == '\n'
+ && at (tos, idx + 1) == 'o'
+ && isspace ((unsigned char) at (tos, idx + 2)))
+ {
+ if (!on)
{
- if (!on)
- {
- cattext(&out,"\n@itemize @bullet\n");
- on = 1;
-
- }
- cattext(&out,"\n@item\n");
- idx+=3;
+ cattext (&out, "\n@itemize @bullet\n");
+ on = 1;
+
}
- else
+ cattext (&out, "\n@item\n");
+ idx += 3;
+ }
+ else
+ {
+ catchar (&out, at (tos, idx));
+ if (on && at (tos, idx) == '\n'
+ && at (tos, idx + 1) == '\n'
+ && at (tos, idx + 2) != 'o')
{
- catchar(&out, at(tos, idx));
- if (on && at(tos, idx) == '\n' &&
- at(tos, idx+1) == '\n' &&
- at(tos, idx+2) != 'o')
- {
- cattext(&out, "@end itemize");
- on = 0;
- }
- idx++;
-
+ cattext (&out, "@end itemize");
+ on = 0;
}
+ idx++;
+
}
- if (on)
+ }
+ if (on)
{
- cattext(&out,"@end itemize\n");
- }
+ cattext (&out, "@end itemize\n");
+ }
- delete_string(tos);
- *tos = out;
- pc++;
-
+ delete_string (tos);
+ *tos = out;
+ pc++;
}
/* Turn <<foo>> into @code{foo} in place at TOS*/
-
-WORD(do_fancy_stuff)
+WORD (do_fancy_stuff)
{
- unsigned int idx = 0;
- string_type out;
- init_string(&out);
- while (at(tos, idx))
+ unsigned int idx = 0;
+ string_type out;
+ init_string (&out);
+ while (at (tos, idx))
{
- if (at(tos, idx) == '<'
- && at(tos, idx+1) == '<'
- && !isspace((unsigned char) at(tos,idx + 2)))
+ if (at (tos, idx) == '<'
+ && at (tos, idx + 1) == '<'
+ && !isspace ((unsigned char) at (tos, idx + 2)))
{
- /* This qualifies as a << startup */
- idx +=2;
- cattext(&out,"@code{");
- while(at(tos,idx) &&
- at(tos,idx) != '>' )
+ /* This qualifies as a << startup. */
+ idx += 2;
+ cattext (&out, "@code{");
+ while (at (tos, idx)
+ && at (tos, idx) != '>' )
{
- catchar(&out, at(tos, idx));
- idx++;
-
+ catchar (&out, at (tos, idx));
+ idx++;
+
}
- cattext(&out,"}");
- idx+=2;
+ cattext (&out, "}");
+ idx += 2;
}
- else
+ else
{
- catchar(&out, at(tos, idx));
- idx++;
+ catchar (&out, at (tos, idx));
+ idx++;
}
}
- delete_string(tos);
- *tos = out;
- pc++;
-
-}
-/* A command is all upper case,and alone on a line */
-static int
-DEFUN( iscommand,(ptr, idx),
- string_type *ptr AND
- unsigned int idx)
-{
- unsigned int len = 0;
- while (at(ptr,idx)) {
- if (isupper((unsigned char) at(ptr,idx)) || at(ptr,idx) == ' ' ||
- at(ptr,idx) == '_')
- {
- len++;
- idx++;
- }
- else if(at(ptr,idx) == '\n')
- {
- if (len > 3) return 1;
- return 0;
- }
- else return 0;
- }
- return 0;
+ delete_string (tos);
+ *tos = out;
+ pc++;
}
+/* A command is all upper case,and alone on a line. */
static int
-DEFUN(copy_past_newline,(ptr, idx, dst),
- string_type *ptr AND
- unsigned int idx AND
- string_type *dst)
+iscommand (ptr, idx)
+ string_type *ptr;
+ unsigned int idx;
{
- int column = 0;
+ unsigned int len = 0;
+ while (at (ptr, idx))
+ {
+ if (isupper ((unsigned char) at (ptr, idx))
+ || at (ptr, idx) == ' ' || at (ptr, idx) == '_')
+ {
+ len++;
+ idx++;
+ }
+ else if (at (ptr, idx) == '\n')
+ {
+ if (len > 3)
+ return 1;
+ return 0;
+ }
+ else
+ return 0;
+ }
+ return 0;
+}
- while (at(ptr, idx) && at(ptr, idx) != '\n')
+static int
+copy_past_newline (ptr, idx, dst)
+ string_type *ptr;
+ unsigned int idx;
+ string_type *dst;
+{
+ int column = 0;
+
+ while (at (ptr, idx) && at (ptr, idx) != '\n')
{
- if (at (ptr, idx) == '\t')
- {
- /* Expand tabs. Neither makeinfo nor TeX can cope well with
- them. */
- do
- catchar (dst, ' ');
- while (++column & 7);
- }
- else
- {
- catchar(dst, at(ptr, idx));
- column++;
- }
- idx++;
-
- }
- catchar(dst, at(ptr, idx));
- idx++;
- return idx;
+ if (at (ptr, idx) == '\t')
+ {
+ /* Expand tabs. Neither makeinfo nor TeX can cope well with
+ them. */
+ do
+ catchar (dst, ' ');
+ while (++column & 7);
+ }
+ else
+ {
+ catchar (dst, at (ptr, idx));
+ column++;
+ }
+ idx++;
+
+ }
+ catchar (dst, at (ptr, idx));
+ idx++;
+ return idx;
}
-WORD(icopy_past_newline)
+WORD (icopy_past_newline)
{
- tos++;
- check_range ();
- init_string(tos);
- idx = copy_past_newline(ptr, idx, tos);
- pc++;
+ tos++;
+ check_range ();
+ init_string (tos);
+ idx = copy_past_newline (ptr, idx, tos);
+ pc++;
}
/* indent
- Take the string at the top of the stack, do some prettying */
+ Take the string at the top of the stack, do some prettying. */
-
-WORD(kill_bogus_lines)
+WORD (kill_bogus_lines)
{
- int sl ;
-
- int idx = 0;
- int c;
- int dot = 0 ;
-
- string_type out;
- init_string(&out);
- /* Drop leading nl */
- while (at(tos,idx) == '\n')
+ int sl;
+
+ int idx = 0;
+ int c;
+ int dot = 0;
+
+ string_type out;
+ init_string (&out);
+ /* Drop leading nl. */
+ while (at (tos, idx) == '\n')
{
- idx++;
+ idx++;
}
- c = idx;
-
- /* If the first char is a '.' prepend a newline so that it is
- recognized properly later. */
- if (at (tos, idx) == '.')
- catchar (&out, '\n');
-
- /* Find the last char */
- while (at(tos,idx))
+ c = idx;
+
+ /* If the first char is a '.' prepend a newline so that it is
+ recognized properly later. */
+ if (at (tos, idx) == '.')
+ catchar (&out, '\n');
+
+ /* Find the last char. */
+ while (at (tos, idx))
{
- idx++;
+ idx++;
}
-
- /* find the last non white before the nl */
+
+ /* Find the last non white before the nl. */
+ idx--;
+
+ while (idx && isspace ((unsigned char) at (tos, idx)))
idx--;
-
- while (idx && isspace((unsigned char) at(tos,idx)))
- idx--;
- idx++;
-
- /* Copy buffer upto last char, but blank lines before and after
- dots don't count */
- sl = 1;
+ idx++;
+
+ /* Copy buffer upto last char, but blank lines before and after
+ dots don't count. */
+ sl = 1;
- while (c < idx)
+ while (c < idx)
{
- if (at(tos,c) == '\n'
- && at(tos,c+1) == '\n'
- && at(tos,c+2) == '.')
+ if (at (tos, c) == '\n'
+ && at (tos, c + 1) == '\n'
+ && at (tos, c + 2) == '.')
{
- /* Ignore two newlines before a dot*/
- c++;
+ /* Ignore two newlines before a dot. */
+ c++;
}
- else if (at(tos,c) == '.' && sl)
+ else if (at (tos, c) == '.' && sl)
{
- /* remember that this line started with a dot */
- dot=2;
+ /* remember that this line started with a dot. */
+ dot = 2;
}
- else if (at(tos,c) == '\n'
- && at(tos,c+1) == '\n'
- && dot)
+ else if (at (tos, c) == '\n'
+ && at (tos, c + 1) == '\n'
+ && dot)
{
- c++;
- /* Ignore two newlines when last line was dot */
+ c++;
+ /* Ignore two newlines when last line was dot. */
}
- catchar(&out, at(tos,c));
- if (at(tos,c) == '\n')
+ catchar (&out, at (tos, c));
+ if (at (tos, c) == '\n')
{
- sl = 1;
-
- if (dot == 2)dot=1;else dot = 0;
+ sl = 1;
+
+ if (dot == 2)
+ dot = 1;
+ else
+ dot = 0;
}
- else
- sl = 0;
-
- c++;
+ else
+ sl = 0;
+
+ c++;
}
-
- /* Append nl*/
- catchar(&out, '\n');
- pc++;
- delete_string(tos);
- *tos = out;
-
-
+
+ /* Append nl. */
+ catchar (&out, '\n');
+ pc++;
+ delete_string (tos);
+ *tos = out;
+
}
-WORD(indent)
+WORD (indent)
{
- string_type out;
- int tab = 0;
- int idx = 0;
- int ol =0;
- init_string(&out);
- while (at(tos,idx)) {
- switch (at(tos,idx))
+ string_type out;
+ int tab = 0;
+ int idx = 0;
+ int ol = 0;
+ init_string (&out);
+ while (at (tos, idx))
+ {
+ switch (at (tos, idx))
+ {
+ case '\n':
+ cattext (&out, "\n");
+ idx++;
+ if (tab && at (tos, idx))
{
- case '\n':
- cattext(&out,"\n");
- idx++;
- if (tab && at(tos,idx))
- {
- cattext(&out," ");
- }
- ol = 0;
- break;
- case '(':
- tab++;
- if (ol == 0)
- cattext(&out," ");
- idx++;
- cattext(&out,"(");
- ol = 1;
- break;
- case ')':
- tab--;
- cattext(&out,")");
- idx++;
- ol=1;
-
- break;
- default:
- catchar(&out,at(tos,idx));
- ol=1;
-
- idx++;
- break;
+ cattext (&out, " ");
}
- }
+ ol = 0;
+ break;
+ case '(':
+ tab++;
+ if (ol == 0)
+ cattext (&out, " ");
+ idx++;
+ cattext (&out, "(");
+ ol = 1;
+ break;
+ case ')':
+ tab--;
+ cattext (&out, ")");
+ idx++;
+ ol = 1;
+
+ break;
+ default:
+ catchar (&out, at (tos, idx));
+ ol = 1;
+
+ idx++;
+ break;
+ }
+ }
- pc++;
- delete_string(tos);
- *tos = out;
+ pc++;
+ delete_string (tos);
+ *tos = out;
}
-
-WORD(get_stuff_in_command)
+WORD (get_stuff_in_command)
{
- tos++;
- check_range ();
- init_string(tos);
+ tos++;
+ check_range ();
+ init_string (tos);
- while (at(ptr, idx)) {
- if (iscommand(ptr, idx)) break;
- idx = copy_past_newline(ptr, idx, tos);
- }
- pc++;
+ while (at (ptr, idx))
+ {
+ if (iscommand (ptr, idx))
+ break;
+ idx = copy_past_newline (ptr, idx, tos);
+ }
+ pc++;
}
-WORD(swap)
+WORD (swap)
{
- string_type t;
-
- t = tos[0];
- tos[0] = tos[-1];
- tos[-1] =t;
- pc++;
-
+ string_type t;
+
+ t = tos[0];
+ tos[0] = tos[-1];
+ tos[-1] = t;
+ pc++;
}
-WORD(other_dup)
+WORD (other_dup)
{
- tos++;
- check_range ();
- init_string(tos);
- catstr(tos, tos-1);
- pc++;
+ tos++;
+ check_range ();
+ init_string (tos);
+ catstr (tos, tos - 1);
+ pc++;
}
-WORD(drop)
+WORD (drop)
{
tos--;
check_range ();
pc++;
}
-WORD(idrop)
+WORD (idrop)
{
isp--;
icheck_range ();
pc++;
}
-WORD(icatstr)
+WORD (icatstr)
{
- tos--;
- check_range ();
- catstr(tos, tos+1);
- delete_string(tos+1);
- pc++;
+ tos--;
+ check_range ();
+ catstr (tos, tos + 1);
+ delete_string (tos + 1);
+ pc++;
}
-WORD(skip_past_newline)
+WORD (skip_past_newline)
{
- while (at(ptr,idx)
- && at(ptr,idx) != '\n')
- idx++;
+ while (at (ptr, idx)
+ && at (ptr, idx) != '\n')
idx++;
- pc++;
+ idx++;
+ pc++;
}
-
-WORD(internalmode)
+WORD (internalmode)
{
- internal_mode = *(isp);
- isp--;
- icheck_range ();
- pc++;
+ internal_mode = *(isp);
+ isp--;
+ icheck_range ();
+ pc++;
}
-WORD(maybecatstr)
+WORD (maybecatstr)
{
- if (internal_wanted == internal_mode)
+ if (internal_wanted == internal_mode)
{
- catstr(tos-1, tos);
+ catstr (tos - 1, tos);
}
- delete_string(tos);
- tos--;
- check_range ();
- pc++;
+ delete_string (tos);
+ tos--;
+ check_range ();
+ pc++;
}
char *
-DEFUN(nextword,(string, word),
- char *string AND
- char **word)
-{
- char *word_start;
- int idx;
- char *dst;
- char *src;
-
- int length = 0;
-
- while (isspace((unsigned char) *string) || *string == '-') {
- if (*string == '-')
- {
- while (*string && *string != '\n')
- string++;
-
- }
- else {
- string++;
- }
- }
- if (!*string) return 0;
-
- word_start = string;
- if (*string == '"')
- {
- do
- {
- string++;
- length++;
- if (*string == '\\')
- {
- string += 2;
- length += 2;
- }
- }
- while (*string != '"');
- }
- else
- {
- while (!isspace((unsigned char) *string))
+nextword (string, word)
+ char *string;
+ char **word;
+{
+ char *word_start;
+ int idx;
+ char *dst;
+ char *src;
+
+ int length = 0;
+
+ while (isspace ((unsigned char) *string) || *string == '-')
+ {
+ if (*string == '-')
{
+ while (*string && *string != '\n')
string++;
- length++;
-
+
+ }
+ else
+ {
+ string++;
}
}
-
- *word = malloc(length + 1);
-
- dst = *word;
- src = word_start;
-
+ if (!*string)
+ return 0;
- for (idx= 0; idx < length; idx++)
- {
- if (src[idx] == '\\')
- switch (src[idx+1])
+ word_start = string;
+ if (*string == '"')
+ {
+ do
+ {
+ string++;
+ length++;
+ if (*string == '\\')
{
- case 'n':
- *dst++ = '\n';
- idx++;
- break;
- case '"':
- case '\\':
- *dst++ = src[idx+1];
- idx++;
- break;
- default:
- *dst++ = '\\';
- break;
+ string += 2;
+ length += 2;
}
- else
- *dst++ = src[idx];
+ }
+ while (*string != '"');
}
- *dst++ = 0;
+ else
+ {
+ while (!isspace ((unsigned char) *string))
+ {
+ string++;
+ length++;
+ }
+ }
+ *word = malloc (length + 1);
+ dst = *word;
+ src = word_start;
+ for (idx = 0; idx < length; idx++)
+ {
+ if (src[idx] == '\\')
+ switch (src[idx + 1])
+ {
+ case 'n':
+ *dst++ = '\n';
+ idx++;
+ break;
+ case '"':
+ case '\\':
+ *dst++ = src[idx + 1];
+ idx++;
+ break;
+ default:
+ *dst++ = '\\';
+ break;
+ }
+ else
+ *dst++ = src[idx];
+ }
+ *dst++ = 0;
- if(*string)
- return string + 1;
- else
- return 0;
-
+ if (*string)
+ return string + 1;
+ else
+ return 0;
}
+
dict_type *root;
+
dict_type *
-DEFUN(lookup_word,(word),
- char *word)
+lookup_word (word)
+ char *word;
{
dict_type *ptr = root;
- while (ptr) {
- if (strcmp(ptr->word, word) == 0) return ptr;
+ while (ptr)
+ {
+ if (strcmp (ptr->word, word) == 0)
+ return ptr;
ptr = ptr->next;
-
}
if (warning)
- fprintf(stderr,"Can't find %s\n",word);
+ fprintf (stderr, "Can't find %s\n", word);
return 0;
-
-
}
-static void DEFUN_VOID(perform)
+static void
+perform (void)
{
tos = stack;
-
- while (at(ptr, idx)) {
- /* It's worth looking through the command list */
- if (iscommand(ptr, idx))
- {
- char *next;
- dict_type *word ;
-
- (void) nextword(addr(ptr, idx), &next);
+ while (at (ptr, idx))
+ {
+ /* It's worth looking through the command list. */
+ if (iscommand (ptr, idx))
+ {
+ char *next;
+ dict_type *word;
- word = lookup_word(next);
+ (void) nextword (addr (ptr, idx), &next);
+ word = lookup_word (next);
-
+ if (word)
+ {
+ exec (word);
+ }
+ else
+ {
+ if (warning)
+ fprintf (stderr, "warning, %s is not recognised\n", next);
+ skip_past_newline ();
+ }
- if (word)
- {
- exec(word);
}
- else
- {
- if (warning)
- fprintf(stderr,"warning, %s is not recognised\n", next);
- skip_past_newline();
- }
-
- }
- else skip_past_newline();
-
+ else
+ skip_past_newline ();
}
}
dict_type *
-DEFUN(newentry,(word),
- char *word)
-{
- dict_type *new = (dict_type *)malloc(sizeof(dict_type));
- new->word = word;
- new->next = root;
- root = new;
- new->code = (stinst_type *)malloc(sizeof(stinst_type ));
- new->code_length = 1;
- new->code_end = 0;
- return new;
-
+newentry (word)
+ char *word;
+{
+ dict_type *new = (dict_type *) malloc (sizeof (dict_type));
+ new->word = word;
+ new->next = root;
+ root = new;
+ new->code = (stinst_type *) malloc (sizeof (stinst_type));
+ new->code_length = 1;
+ new->code_end = 0;
+ return new;
}
-
unsigned int
-DEFUN(add_to_definition,(entry, word),
- dict_type *entry AND
- stinst_type word)
+add_to_definition (entry, word)
+ dict_type *entry;
+ stinst_type word;
{
- if (entry->code_end == entry->code_length)
+ if (entry->code_end == entry->code_length)
{
- entry->code_length += 2;
- entry->code =
- (stinst_type *) realloc((char *)(entry->code),
- entry->code_length *sizeof(word_type));
+ entry->code_length += 2;
+ entry->code =
+ (stinst_type *) realloc ((char *) (entry->code),
+ entry->code_length * sizeof (word_type));
}
- entry->code[entry->code_end] = word;
-
-return entry->code_end++;
-}
-
-
-
-
-
+ entry->code[entry->code_end] = word;
+ return entry->code_end++;
+}
void
-DEFUN(add_intrinsic,(name, func),
- char *name AND
- void (*func)())
+add_intrinsic (name, func)
+ char *name;
+ void (*func) ();
{
- dict_type *new = newentry(name);
- add_to_definition(new, func);
- add_to_definition(new, 0);
+ dict_type *new = newentry (name);
+ add_to_definition (new, func);
+ add_to_definition (new, 0);
}
void
-DEFUN(add_var,(name),
- char *name)
+add_var (name)
+ char *name;
{
- dict_type *new = newentry(name);
- add_to_definition(new, push_number);
- add_to_definition(new, (stinst_type)(&(new->var)));
- add_to_definition(new,0);
+ dict_type *new = newentry (name);
+ add_to_definition (new, push_number);
+ add_to_definition (new, (stinst_type) (&(new->var)));
+ add_to_definition (new, 0);
}
-
-void
-DEFUN(compile, (string),
- char *string)
+void
+compile (string)
+ char *string;
{
- /* add words to the dictionary */
- char *word;
- string = nextword(string, &word);
- while (string && *string && word[0])
+ /* Add words to the dictionary. */
+ char *word;
+ string = nextword (string, &word);
+ while (string && *string && word[0])
{
- if (strcmp(word,"var")==0)
+ if (strcmp (word, "var") == 0)
{
- string=nextword(string, &word);
-
- add_var(word);
- string=nextword(string, &word);
+ string = nextword (string, &word);
+
+ add_var (word);
+ string = nextword (string, &word);
}
-else
-
- if (word[0] == ':')
+ else if (word[0] == ':')
{
- dict_type *ptr;
- /* Compile a word and add to dictionary */
- string = nextword(string, &word);
-
- ptr = newentry(word);
- string = nextword(string, &word);
- while (word[0] != ';' )
+ dict_type *ptr;
+ /* Compile a word and add to dictionary. */
+ string = nextword (string, &word);
+
+ ptr = newentry (word);
+ string = nextword (string, &word);
+ while (word[0] != ';')
{
- switch (word[0])
- {
- case '"':
- /* got a string, embed magic push string
- function */
- add_to_definition(ptr, push_text);
- add_to_definition(ptr, (stinst_type)(word+1));
- break;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- /* Got a number, embedd the magic push number
- function */
- add_to_definition(ptr, push_number);
- add_to_definition(ptr, (stinst_type)atol(word));
- break;
- default:
- add_to_definition(ptr, call);
- add_to_definition(ptr, (stinst_type)lookup_word(word));
- }
-
- string = nextword(string, &word);
+ switch (word[0])
+ {
+ case '"':
+ /* got a string, embed magic push string
+ function */
+ add_to_definition (ptr, push_text);
+ add_to_definition (ptr, (stinst_type) (word + 1));
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ /* Got a number, embedd the magic push number
+ function */
+ add_to_definition (ptr, push_number);
+ add_to_definition (ptr, (stinst_type) atol (word));
+ break;
+ default:
+ add_to_definition (ptr, call);
+ add_to_definition (ptr, (stinst_type) lookup_word (word));
+ }
+
+ string = nextword (string, &word);
}
- add_to_definition(ptr,0);
- string = nextword(string, &word);
+ add_to_definition (ptr, 0);
+ string = nextword (string, &word);
}
- else
+ else
{
- fprintf(stderr,"syntax error at %s\n",string-1);
- }
+ fprintf (stderr, "syntax error at %s\n", string - 1);
+ }
}
-
}
-
-static void DEFUN_VOID(bang)
+static void
+bang (void)
{
- *(long *)((isp[0])) = isp[-1];
- isp-=2;
+ *(long *) ((isp[0])) = isp[-1];
+ isp -= 2;
icheck_range ();
pc++;
}
-WORD(atsign)
+WORD (atsign)
{
- isp[0] = *(long *)(isp[0]);
- pc++;
+ isp[0] = *(long *) (isp[0]);
+ pc++;
}
-WORD(hello)
+WORD (hello)
{
- printf("hello\n");
- pc++;
+ printf ("hello\n");
+ pc++;
}
-WORD(stdout_)
+WORD (stdout_)
{
isp++;
icheck_range ();
@@ -1425,7 +1410,7 @@ WORD(stdout_)
pc++;
}
-WORD(stderr_)
+WORD (stderr_)
{
isp++;
icheck_range ();
@@ -1433,7 +1418,7 @@ WORD(stderr_)
pc++;
}
-WORD(print)
+WORD (print)
{
if (*isp == 1)
write_buffer (tos, stdout);
@@ -1448,29 +1433,29 @@ WORD(print)
pc++;
}
-
-static void DEFUN(read_in, (str, file),
- string_type *str AND
- FILE *file)
+static void
+read_in (str, file)
+ string_type *str;
+ FILE *file;
{
- char buff[10000];
- unsigned int r;
- do
+ char buff[10000];
+ unsigned int r;
+ do
{
- r = fread(buff, 1, sizeof(buff), file);
- catbuf(str, buff, r);
+ r = fread (buff, 1, sizeof (buff), file);
+ catbuf (str, buff, r);
}
- while (r);
- buff[0] = 0;
-
- catbuf(str, buff,1);
-}
+ while (r);
+ buff[0] = 0;
+ catbuf (str, buff, 1);
+}
-static void DEFUN_VOID(usage)
+static void
+usage (void)
{
- fprintf(stderr,"usage: -[d|i|g] <file >file\n");
- exit(33);
+ fprintf (stderr, "usage: -[d|i|g] <file >file\n");
+ exit (33);
}
/* There is no reliable way to declare exit. Sometimes it returns
@@ -1484,95 +1469,98 @@ chew_exit ()
exit (0);
}
-int DEFUN(main,(ac,av),
-int ac AND
-char *av[])
+int
+main (ac, av)
+ int ac;
+ char *av[];
{
unsigned int i;
string_type buffer;
string_type pptr;
- init_string(&buffer);
- init_string(&pptr);
- init_string(stack+0);
- tos=stack+1;
+ init_string (&buffer);
+ init_string (&pptr);
+ init_string (stack + 0);
+ tos = stack + 1;
ptr = &pptr;
-
- add_intrinsic("push_text", push_text);
- add_intrinsic("!", bang);
- add_intrinsic("@", atsign);
- add_intrinsic("hello",hello);
- add_intrinsic("stdout",stdout_);
- add_intrinsic("stderr",stderr_);
- add_intrinsic("print",print);
- add_intrinsic("skip_past_newline", skip_past_newline );
- add_intrinsic("catstr", icatstr );
- add_intrinsic("copy_past_newline", icopy_past_newline );
- add_intrinsic("dup", other_dup );
- add_intrinsic("drop", drop);
- add_intrinsic("idrop", idrop);
- add_intrinsic("remchar", remchar );
- add_intrinsic("get_stuff_in_command", get_stuff_in_command );
- add_intrinsic("do_fancy_stuff", do_fancy_stuff );
- add_intrinsic("bulletize", bulletize );
- add_intrinsic("courierize", courierize );
+
+ add_intrinsic ("push_text", push_text);
+ add_intrinsic ("!", bang);
+ add_intrinsic ("@", atsign);
+ add_intrinsic ("hello", hello);
+ add_intrinsic ("stdout", stdout_);
+ add_intrinsic ("stderr", stderr_);
+ add_intrinsic ("print", print);
+ add_intrinsic ("skip_past_newline", skip_past_newline);
+ add_intrinsic ("catstr", icatstr);
+ add_intrinsic ("copy_past_newline", icopy_past_newline);
+ add_intrinsic ("dup", other_dup);
+ add_intrinsic ("drop", drop);
+ add_intrinsic ("idrop", idrop);
+ add_intrinsic ("remchar", remchar);
+ add_intrinsic ("get_stuff_in_command", get_stuff_in_command);
+ add_intrinsic ("do_fancy_stuff", do_fancy_stuff);
+ add_intrinsic ("bulletize", bulletize);
+ add_intrinsic ("courierize", courierize);
/* If the following line gives an error, exit() is not declared in the
../hosts/foo.h file for this host. Fix it there, not here! */
/* No, don't fix it anywhere; see comment on chew_exit--Ian Taylor. */
- add_intrinsic("exit", chew_exit );
- add_intrinsic("swap", swap );
- add_intrinsic("outputdots", outputdots );
- add_intrinsic("paramstuff", paramstuff );
- add_intrinsic("maybecatstr", maybecatstr );
- add_intrinsic("translatecomments", translatecomments );
- add_intrinsic("kill_bogus_lines", kill_bogus_lines);
- add_intrinsic("indent", indent);
- add_intrinsic("internalmode", internalmode);
- add_intrinsic("print_stack_level", print_stack_level);
- add_intrinsic("strip_trailing_newlines", strip_trailing_newlines);
-
- /* Put a nl at the start */
- catchar(&buffer,'\n');
-
- read_in(&buffer, stdin);
- remove_noncomments(&buffer, ptr);
- for (i= 1; i < (unsigned int) ac; i++)
- {
- if (av[i][0] == '-')
+ add_intrinsic ("exit", chew_exit);
+ add_intrinsic ("swap", swap);
+ add_intrinsic ("outputdots", outputdots);
+ add_intrinsic ("paramstuff", paramstuff);
+ add_intrinsic ("maybecatstr", maybecatstr);
+ add_intrinsic ("translatecomments", translatecomments);
+ add_intrinsic ("kill_bogus_lines", kill_bogus_lines);
+ add_intrinsic ("indent", indent);
+ add_intrinsic ("internalmode", internalmode);
+ add_intrinsic ("print_stack_level", print_stack_level);
+ add_intrinsic ("strip_trailing_newlines", strip_trailing_newlines);
+
+ /* Put a nl at the start. */
+ catchar (&buffer, '\n');
+
+ read_in (&buffer, stdin);
+ remove_noncomments (&buffer, ptr);
+ for (i = 1; i < (unsigned int) ac; i++)
{
- if (av[i][1] == 'f')
- {
- string_type b;
- FILE *f;
- init_string(&b);
-
- f = fopen(av[i+1],"r");
- if (!f)
+ if (av[i][0] == '-')
{
- fprintf(stderr,"Can't open the input file %s\n",av[i+1]);
- return 33;
- }
+ if (av[i][1] == 'f')
+ {
+ string_type b;
+ FILE *f;
+ init_string (&b);
- read_in(&b, f);
- compile(b.ptr);
- perform();
- }
- else if (av[i][1] == 'i')
- {
- internal_wanted = 1;
- }
- else if (av[i][1] == 'w')
- {
- warning = 1;
- }
- else
- usage ();
+ f = fopen (av[i + 1], "r");
+ if (!f)
+ {
+ fprintf (stderr, "Can't open the input file %s\n",
+ av[i + 1]);
+ return 33;
+ }
+
+ read_in (&b, f);
+ compile (b.ptr);
+ perform ();
+ }
+ else if (av[i][1] == 'i')
+ {
+ internal_wanted = 1;
+ }
+ else if (av[i][1] == 'w')
+ {
+ warning = 1;
+ }
+ else
+ usage ();
+ }
}
- }
- write_buffer(stack+0, stdout);
+ write_buffer (stack + 0, stdout);
if (tos != stack)
{
- fprintf (stderr, "finishing with current stack level %d\n", tos - stack);
+ fprintf (stderr, "finishing with current stack level %d\n",
+ tos - stack);
return 1;
}
return 0;
diff --git a/contrib/binutils/bfd/doc/coffcode.texi b/contrib/binutils/bfd/doc/coffcode.texi
index fcb7e75..8406a04 100644
--- a/contrib/binutils/bfd/doc/coffcode.texi
+++ b/contrib/binutils/bfd/doc/coffcode.texi
@@ -365,6 +365,8 @@ dependent COFF routines:
boolean _bfd_coff_long_filenames;
boolean _bfd_coff_long_section_names;
unsigned int _bfd_coff_default_section_alignment_power;
+ boolean _bfd_coff_force_symnames_in_strings;
+ unsigned int _bfd_coff_debug_string_prefix_length;
void (*_bfd_coff_swap_filehdr_in) PARAMS ((
bfd *abfd,
PTR ext,
@@ -467,12 +469,12 @@ dependent COFF routines:
struct bfd_link_info *info,
bfd *abfd,
const char *name,
- flagword flags,
+ flagword flags,
asection *section,
bfd_vma value,
const char *string,
boolean copy,
- boolean collect,
+ boolean collect,
struct bfd_link_hash_entry **hashp));
boolean (*_bfd_coff_link_output_has_begun) PARAMS ((
@@ -562,6 +564,12 @@ dependent COFF routines:
#define bfd_coff_symname_in_debug(abfd, sym)\
((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
+#define bfd_coff_force_symnames_in_strings(abfd)\
+ (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
+
+#define bfd_coff_debug_string_prefix_length(abfd)\
+ (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
+
#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
((coff_backend_info (abfd)->_bfd_coff_print_aux)\
(abfd, file, base, symbol, aux, indaux))
diff --git a/contrib/binutils/bfd/doc/format.texi b/contrib/binutils/bfd/doc/format.texi
index 3281c36..a181d1c 100644
--- a/contrib/binutils/bfd/doc/format.texi
+++ b/contrib/binutils/bfd/doc/format.texi
@@ -1,6 +1,6 @@
@section File formats
A format is a BFD concept of high level file contents type. The
-formats supported by BFD are:
+formats supported by BFD are:
@itemize @bullet
@@ -43,7 +43,7 @@ matches, it is used. If not, exactly one target must recognize
the file, or an error results.
The function returns @code{true} on success, otherwise @code{false}
-with one of the following error codes:
+with one of the following error codes:
@itemize @bullet
diff --git a/contrib/binutils/bfd/doc/hash.texi b/contrib/binutils/bfd/doc/hash.texi
index 7ddc900..eb87273 100644
--- a/contrib/binutils/bfd/doc/hash.texi
+++ b/contrib/binutils/bfd/doc/hash.texi
@@ -219,7 +219,7 @@ in a linker hash table entry: @code{type}, @code{written} and
@node Write Other Derived Routines, , Write the Derived Creation Routine, Deriving a New Hash Table Type
@subsubsection Write other derived routines
You will want to write other routines for your new hash table,
-as well.
+as well.
You will want an initialization routine which calls the
initialization routine of the hash table you are deriving from
diff --git a/contrib/binutils/bfd/doc/libbfd.texi b/contrib/binutils/bfd/doc/libbfd.texi
index d202dc2..b4b0a14 100644
--- a/contrib/binutils/bfd/doc/libbfd.texi
+++ b/contrib/binutils/bfd/doc/libbfd.texi
@@ -40,16 +40,16 @@ To detect calling these with less than a @code{bfd_vma}, use
@code{gcc -Wconversion} on a host with 64 bit @code{bfd_vma}'s.
@example
- /* Byte swapping macros for user section data. */
+/* Byte swapping macros for user section data. */
#define bfd_put_8(abfd, val, ptr) \
- ((void) (*((unsigned char *)(ptr)) = (unsigned char)(val)))
+ ((void) (*((unsigned char *) (ptr)) = (unsigned char) (val)))
#define bfd_put_signed_8 \
bfd_put_8
#define bfd_get_8(abfd, ptr) \
- (*(unsigned char *)(ptr))
+ (*(unsigned char *) (ptr))
#define bfd_get_signed_8(abfd, ptr) \
- ((*(unsigned char *)(ptr) ^ 0x80) - 0x80)
+ ((*(unsigned char *) (ptr) ^ 0x80) - 0x80)
#define bfd_put_16(abfd, val, ptr) \
BFD_SEND(abfd, bfd_putx16, ((val),(ptr)))
@@ -104,7 +104,7 @@ some object files keep their header records in big endian
order and their data in little endian order.
@example
- /* Byte swapping macros for file header data. */
+/* Byte swapping macros for file header data. */
#define bfd_h_put_8(abfd, val, ptr) \
bfd_put_8 (abfd, val, ptr)
diff --git a/contrib/binutils/bfd/doc/linker.texi b/contrib/binutils/bfd/doc/linker.texi
index b618156..5105cc7 100644
--- a/contrib/binutils/bfd/doc/linker.texi
+++ b/contrib/binutils/bfd/doc/linker.texi
@@ -30,7 +30,7 @@ ends which have implemented versions of these routines are
a.out (in @code{aoutx.h}) and ECOFF (in @code{ecoff.c}). The a.out
routines are used as examples throughout this section.
-@menu
+@menu
* Creating a Linker Hash Table::
* Adding Symbols to the Hash Table::
* Performing the Final Link::
diff --git a/contrib/binutils/bfd/doc/reloc.texi b/contrib/binutils/bfd/doc/reloc.texi
index 89811d8..eb31eca 100644
--- a/contrib/binutils/bfd/doc/reloc.texi
+++ b/contrib/binutils/bfd/doc/reloc.texi
@@ -764,6 +764,16 @@ MIPS ELF relocations.
@deffnx {} BFD_RELOC_386_GOTPC
i386/elf relocations
@end deffn
+@deffn {} BFD_RELOC_X86_64_GOT32
+@deffnx {} BFD_RELOC_X86_64_PLT32
+@deffnx {} BFD_RELOC_X86_64_COPY
+@deffnx {} BFD_RELOC_X86_64_GLOB_DAT
+@deffnx {} BFD_RELOC_X86_64_JUMP_SLOT
+@deffnx {} BFD_RELOC_X86_64_RELATIVE
+@deffnx {} BFD_RELOC_X86_64_GOTPCREL
+@deffnx {} BFD_RELOC_X86_64_32S
+x86-64/elf relocations
+@end deffn
@deffn {} BFD_RELOC_NS32K_IMM_8
@deffnx {} BFD_RELOC_NS32K_IMM_16
@deffnx {} BFD_RELOC_NS32K_IMM_32
@@ -830,6 +840,16 @@ It generally does map to one of the other relocation types.
ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
not stored in the instruction.
@end deffn
+@deffn {} BFD_RELOC_ARM_PCREL_BLX
+ARM 26 bit pc-relative branch. The lowest bit must be zero and is
+not stored in the instruction. The 2nd lowest bit comes from a 1 bit
+field in the instruction.
+@end deffn
+@deffn {} BFD_RELOC_THUMB_PCREL_BLX
+Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
+not stored in the instruction. The 2nd lowest bit comes from a 1 bit
+field in the instruction.
+@end deffn
@deffn {} BFD_RELOC_ARM_IMMEDIATE
@deffnx {} BFD_RELOC_ARM_ADRL_IMMEDIATE
@deffnx {} BFD_RELOC_ARM_OFFSET_IMM
@@ -877,6 +897,13 @@ These relocs are only used within the ARM assembler. They are not
@deffnx {} BFD_RELOC_SH_CODE
@deffnx {} BFD_RELOC_SH_DATA
@deffnx {} BFD_RELOC_SH_LABEL
+@deffnx {} BFD_RELOC_SH_LOOP_START
+@deffnx {} BFD_RELOC_SH_LOOP_END
+@deffnx {} BFD_RELOC_SH_COPY
+@deffnx {} BFD_RELOC_SH_GLOB_DAT
+@deffnx {} BFD_RELOC_SH_JMP_SLOT
+@deffnx {} BFD_RELOC_SH_RELATIVE
+@deffnx {} BFD_RELOC_SH_GOTPC
Hitachi SH relocs. Not all of these appear in object files.
@end deffn
@deffn {} BFD_RELOC_THUMB_PCREL_BRANCH9
@@ -886,7 +913,7 @@ Thumb 23-, 12- and 9-bit pc-relative branches. The lowest bit must
be zero and is not stored in the instruction.
@end deffn
@deffn {} BFD_RELOC_ARC_B22_PCREL
-Argonaut RISC Core (ARC) relocs.
+ARC Cores relocs.
ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
not stored in the instruction. The high 20 bits are installed in bits 26
through 7 of the instruction.
@@ -1060,6 +1087,29 @@ This is a 8bit DP reloc for the tms320c30, where the most
significant 8 bits of a 24 bit word are placed into the least
significant 8 bits of the opcode.
@end deffn
+@deffn {} BFD_RELOC_TIC54X_PARTLS7
+This is a 7bit reloc for the tms320c54x, where the least
+significant 7 bits of a 16 bit word are placed into the least
+significant 7 bits of the opcode.
+@end deffn
+@deffn {} BFD_RELOC_TIC54X_PARTMS9
+This is a 9bit DP reloc for the tms320c54x, where the most
+significant 9 bits of a 16 bit word are placed into the least
+significant 9 bits of the opcode.
+@end deffn
+@deffn {} BFD_RELOC_TIC54X_23
+This is an extended address 23-bit reloc for the tms320c54x.
+@end deffn
+@deffn {} BFD_RELOC_TIC54X_16_OF_23
+This is a 16-bit reloc for the tms320c54x, where the least
+significant 16 bits of a 23-bit extended address are placed into
+the opcode.
+@end deffn
+@deffn {} BFD_RELOC_TIC54X_MS7_OF_23
+This is a reloc for the tms320c54x, where the most
+significant 7 bits of a 23-bit extended address are placed into
+the opcode.
+@end deffn
@deffn {} BFD_RELOC_FR30_48
This is a 48 bit reloc for the FR30 that stores 32 bits.
@end deffn
@@ -1187,6 +1237,126 @@ describes the entry that is being used. For Rela hosts, this offset
is stored in the reloc's addend. For Rel hosts, we are forced to put
this offset in the reloc's section offset.
@end deffn
+@deffn {} BFD_RELOC_IA64_IMM14
+@deffnx {} BFD_RELOC_IA64_IMM22
+@deffnx {} BFD_RELOC_IA64_IMM64
+@deffnx {} BFD_RELOC_IA64_DIR32MSB
+@deffnx {} BFD_RELOC_IA64_DIR32LSB
+@deffnx {} BFD_RELOC_IA64_DIR64MSB
+@deffnx {} BFD_RELOC_IA64_DIR64LSB
+@deffnx {} BFD_RELOC_IA64_GPREL22
+@deffnx {} BFD_RELOC_IA64_GPREL64I
+@deffnx {} BFD_RELOC_IA64_GPREL32MSB
+@deffnx {} BFD_RELOC_IA64_GPREL32LSB
+@deffnx {} BFD_RELOC_IA64_GPREL64MSB
+@deffnx {} BFD_RELOC_IA64_GPREL64LSB
+@deffnx {} BFD_RELOC_IA64_LTOFF22
+@deffnx {} BFD_RELOC_IA64_LTOFF64I
+@deffnx {} BFD_RELOC_IA64_PLTOFF22
+@deffnx {} BFD_RELOC_IA64_PLTOFF64I
+@deffnx {} BFD_RELOC_IA64_PLTOFF64MSB
+@deffnx {} BFD_RELOC_IA64_PLTOFF64LSB
+@deffnx {} BFD_RELOC_IA64_FPTR64I
+@deffnx {} BFD_RELOC_IA64_FPTR32MSB
+@deffnx {} BFD_RELOC_IA64_FPTR32LSB
+@deffnx {} BFD_RELOC_IA64_FPTR64MSB
+@deffnx {} BFD_RELOC_IA64_FPTR64LSB
+@deffnx {} BFD_RELOC_IA64_PCREL21B
+@deffnx {} BFD_RELOC_IA64_PCREL21BI
+@deffnx {} BFD_RELOC_IA64_PCREL21M
+@deffnx {} BFD_RELOC_IA64_PCREL21F
+@deffnx {} BFD_RELOC_IA64_PCREL22
+@deffnx {} BFD_RELOC_IA64_PCREL60B
+@deffnx {} BFD_RELOC_IA64_PCREL64I
+@deffnx {} BFD_RELOC_IA64_PCREL32MSB
+@deffnx {} BFD_RELOC_IA64_PCREL32LSB
+@deffnx {} BFD_RELOC_IA64_PCREL64MSB
+@deffnx {} BFD_RELOC_IA64_PCREL64LSB
+@deffnx {} BFD_RELOC_IA64_LTOFF_FPTR22
+@deffnx {} BFD_RELOC_IA64_LTOFF_FPTR64I
+@deffnx {} BFD_RELOC_IA64_LTOFF_FPTR64MSB
+@deffnx {} BFD_RELOC_IA64_LTOFF_FPTR64LSB
+@deffnx {} BFD_RELOC_IA64_SEGREL32MSB
+@deffnx {} BFD_RELOC_IA64_SEGREL32LSB
+@deffnx {} BFD_RELOC_IA64_SEGREL64MSB
+@deffnx {} BFD_RELOC_IA64_SEGREL64LSB
+@deffnx {} BFD_RELOC_IA64_SECREL32MSB
+@deffnx {} BFD_RELOC_IA64_SECREL32LSB
+@deffnx {} BFD_RELOC_IA64_SECREL64MSB
+@deffnx {} BFD_RELOC_IA64_SECREL64LSB
+@deffnx {} BFD_RELOC_IA64_REL32MSB
+@deffnx {} BFD_RELOC_IA64_REL32LSB
+@deffnx {} BFD_RELOC_IA64_REL64MSB
+@deffnx {} BFD_RELOC_IA64_REL64LSB
+@deffnx {} BFD_RELOC_IA64_LTV32MSB
+@deffnx {} BFD_RELOC_IA64_LTV32LSB
+@deffnx {} BFD_RELOC_IA64_LTV64MSB
+@deffnx {} BFD_RELOC_IA64_LTV64LSB
+@deffnx {} BFD_RELOC_IA64_IPLTMSB
+@deffnx {} BFD_RELOC_IA64_IPLTLSB
+@deffnx {} BFD_RELOC_IA64_COPY
+@deffnx {} BFD_RELOC_IA64_TPREL22
+@deffnx {} BFD_RELOC_IA64_TPREL64MSB
+@deffnx {} BFD_RELOC_IA64_TPREL64LSB
+@deffnx {} BFD_RELOC_IA64_LTOFF_TP22
+@deffnx {} BFD_RELOC_IA64_LTOFF22X
+@deffnx {} BFD_RELOC_IA64_LDXMOV
+Intel IA64 Relocations.
+@end deffn
+@deffn {} BFD_RELOC_M68HC11_HI8
+Motorola 68HC11 reloc.
+This is the 8 bits high part of an absolute address.
+@end deffn
+@deffn {} BFD_RELOC_M68HC11_LO8
+Motorola 68HC11 reloc.
+This is the 8 bits low part of an absolute address.
+@end deffn
+@deffn {} BFD_RELOC_M68HC11_3B
+Motorola 68HC11 reloc.
+This is the 3 bits of a value.
+@end deffn
+@deffn {} BFD_RELOC_CRIS_BDISP8
+@deffnx {} BFD_RELOC_CRIS_UNSIGNED_5
+@deffnx {} BFD_RELOC_CRIS_SIGNED_6
+@deffnx {} BFD_RELOC_CRIS_UNSIGNED_6
+@deffnx {} BFD_RELOC_CRIS_UNSIGNED_4
+These relocs are only used within the CRIS assembler. They are not
+(at present) written to any object files.
+@end deffn
+@deffn {} BFD_RELOC_860_COPY
+@deffnx {} BFD_RELOC_860_GLOB_DAT
+@deffnx {} BFD_RELOC_860_JUMP_SLOT
+@deffnx {} BFD_RELOC_860_RELATIVE
+@deffnx {} BFD_RELOC_860_PC26
+@deffnx {} BFD_RELOC_860_PLT26
+@deffnx {} BFD_RELOC_860_PC16
+@deffnx {} BFD_RELOC_860_LOW0
+@deffnx {} BFD_RELOC_860_SPLIT0
+@deffnx {} BFD_RELOC_860_LOW1
+@deffnx {} BFD_RELOC_860_SPLIT1
+@deffnx {} BFD_RELOC_860_LOW2
+@deffnx {} BFD_RELOC_860_SPLIT2
+@deffnx {} BFD_RELOC_860_LOW3
+@deffnx {} BFD_RELOC_860_LOGOT0
+@deffnx {} BFD_RELOC_860_SPGOT0
+@deffnx {} BFD_RELOC_860_LOGOT1
+@deffnx {} BFD_RELOC_860_SPGOT1
+@deffnx {} BFD_RELOC_860_LOGOTOFF0
+@deffnx {} BFD_RELOC_860_SPGOTOFF0
+@deffnx {} BFD_RELOC_860_LOGOTOFF1
+@deffnx {} BFD_RELOC_860_SPGOTOFF1
+@deffnx {} BFD_RELOC_860_LOGOTOFF2
+@deffnx {} BFD_RELOC_860_LOGOTOFF3
+@deffnx {} BFD_RELOC_860_LOPC
+@deffnx {} BFD_RELOC_860_HIGHADJ
+@deffnx {} BFD_RELOC_860_HAGOT
+@deffnx {} BFD_RELOC_860_HAGOTOFF
+@deffnx {} BFD_RELOC_860_HAPC
+@deffnx {} BFD_RELOC_860_HIGH
+@deffnx {} BFD_RELOC_860_HIGOT
+@deffnx {} BFD_RELOC_860_HIGOTOFF
+Intel i860 Relocations.
+@end deffn
@example
diff --git a/contrib/binutils/bfd/doc/section.texi b/contrib/binutils/bfd/doc/section.texi
index 2569590..4b0ec017 100644
--- a/contrib/binutils/bfd/doc/section.texi
+++ b/contrib/binutils/bfd/doc/section.texi
@@ -107,10 +107,10 @@ Here is the section structure:
@example
- /* This structure is used for a comdat section, as in PE. A comdat
- section is associated with a particular symbol. When the linker
- sees a comdat section, it keeps only one of the sections with a
- given name and associated with a given symbol. */
+/* This structure is used for a comdat section, as in PE. A comdat
+ section is associated with a particular symbol. When the linker
+ sees a comdat section, it keeps only one of the sections with a
+ given name and associated with a given symbol. */
struct bfd_comdat_info
@{
@@ -122,340 +122,362 @@ struct bfd_comdat_info
specific code; it is not an index into the list returned by
bfd_canonicalize_symtab. */
long symbol;
-
- /* If this section is being discarded, the linker uses this field
- to point to the input section which is being kept. */
- struct sec *sec;
@};
typedef struct sec
@{
- /* The name of the section; the name isn't a copy, the pointer is
- the same as that passed to bfd_make_section. */
+ /* The name of the section; the name isn't a copy, the pointer is
+ the same as that passed to bfd_make_section. */
+
+ const char *name;
+
+ /* A unique sequence number. */
- CONST char *name;
+ int id;
- /* Which section is it; 0..nth. */
+ /* Which section is it; 0..nth. */
- int index;
+ int index;
- /* The next section in the list belonging to the BFD, or NULL. */
+ /* The next section in the list belonging to the BFD, or NULL. */
- struct sec *next;
+ struct sec *next;
- /* The field flags contains attributes of the section. Some
- flags are read in from the object file, and some are
- synthesized from other information. */
+ /* The field flags contains attributes of the section. Some
+ flags are read in from the object file, and some are
+ synthesized from other information. */
- flagword flags;
+ flagword flags;
#define SEC_NO_FLAGS 0x000
- /* Tells the OS to allocate space for this section when loading.
- This is clear for a section containing debug information
- only. */
+ /* Tells the OS to allocate space for this section when loading.
+ This is clear for a section containing debug information only. */
#define SEC_ALLOC 0x001
- /* Tells the OS to load the section from the file when loading.
- This is clear for a .bss section. */
+ /* Tells the OS to load the section from the file when loading.
+ This is clear for a .bss section. */
#define SEC_LOAD 0x002
- /* The section contains data still to be relocated, so there is
- some relocation information too. */
+ /* The section contains data still to be relocated, so there is
+ some relocation information too. */
#define SEC_RELOC 0x004
#if 0 /* Obsolete ? */
#define SEC_BALIGN 0x008
#endif
- /* A signal to the OS that the section contains read only
- data. */
+ /* A signal to the OS that the section contains read only data. */
#define SEC_READONLY 0x010
- /* The section contains code only. */
+ /* The section contains code only. */
#define SEC_CODE 0x020
- /* The section contains data only. */
+ /* The section contains data only. */
#define SEC_DATA 0x040
- /* The section will reside in ROM. */
+ /* The section will reside in ROM. */
#define SEC_ROM 0x080
- /* The section contains constructor information. This section
- type is used by the linker to create lists of constructors and
- destructors used by @code{g++}. When a back end sees a symbol
- which should be used in a constructor list, it creates a new
- section for the type of name (e.g., @code{__CTOR_LIST__}), attaches
- the symbol to it, and builds a relocation. To build the lists
- of constructors, all the linker has to do is catenate all the
- sections called @code{__CTOR_LIST__} and relocate the data
- contained within - exactly the operations it would peform on
- standard data. */
+ /* The section contains constructor information. This section
+ type is used by the linker to create lists of constructors and
+ destructors used by @code{g++}. When a back end sees a symbol
+ which should be used in a constructor list, it creates a new
+ section for the type of name (e.g., @code{__CTOR_LIST__}), attaches
+ the symbol to it, and builds a relocation. To build the lists
+ of constructors, all the linker has to do is catenate all the
+ sections called @code{__CTOR_LIST__} and relocate the data
+ contained within - exactly the operations it would peform on
+ standard data. */
#define SEC_CONSTRUCTOR 0x100
- /* The section is a constructor, and should be placed at the
- end of the text, data, or bss section(?). */
+ /* The section is a constructor, and should be placed at the
+ end of the text, data, or bss section(?). */
#define SEC_CONSTRUCTOR_TEXT 0x1100
#define SEC_CONSTRUCTOR_DATA 0x2100
#define SEC_CONSTRUCTOR_BSS 0x3100
- /* The section has contents - a data section could be
- @code{SEC_ALLOC} | @code{SEC_HAS_CONTENTS}; a debug section could be
- @code{SEC_HAS_CONTENTS} */
+ /* The section has contents - a data section could be
+ @code{SEC_ALLOC} | @code{SEC_HAS_CONTENTS}; a debug section could be
+ @code{SEC_HAS_CONTENTS} */
#define SEC_HAS_CONTENTS 0x200
- /* An instruction to the linker to not output the section
- even if it has information which would normally be written. */
+ /* An instruction to the linker to not output the section
+ even if it has information which would normally be written. */
#define SEC_NEVER_LOAD 0x400
- /* The section is a COFF shared library section. This flag is
- only for the linker. If this type of section appears in
- the input file, the linker must copy it to the output file
- without changing the vma or size. FIXME: Although this
- was originally intended to be general, it really is COFF
- specific (and the flag was renamed to indicate this). It
- might be cleaner to have some more general mechanism to
- allow the back end to control what the linker does with
- sections. */
+ /* The section is a COFF shared library section. This flag is
+ only for the linker. If this type of section appears in
+ the input file, the linker must copy it to the output file
+ without changing the vma or size. FIXME: Although this
+ was originally intended to be general, it really is COFF
+ specific (and the flag was renamed to indicate this). It
+ might be cleaner to have some more general mechanism to
+ allow the back end to control what the linker does with
+ sections. */
#define SEC_COFF_SHARED_LIBRARY 0x800
- /* The section contains common symbols (symbols may be defined
- multiple times, the value of a symbol is the amount of
- space it requires, and the largest symbol value is the one
- used). Most targets have exactly one of these (which we
- translate to bfd_com_section_ptr), but ECOFF has two. */
+ /* The section has GOT references. This flag is only for the
+ linker, and is currently only used by the elf32-hppa back end.
+ It will be set if global offset table references were detected
+ in this section, which indicate to the linker that the section
+ contains PIC code, and must be handled specially when doing a
+ static link. */
+#define SEC_HAS_GOT_REF 0x4000
+
+ /* The section contains common symbols (symbols may be defined
+ multiple times, the value of a symbol is the amount of
+ space it requires, and the largest symbol value is the one
+ used). Most targets have exactly one of these (which we
+ translate to bfd_com_section_ptr), but ECOFF has two. */
#define SEC_IS_COMMON 0x8000
- /* The section contains only debugging information. For
- example, this is set for ELF .debug and .stab sections.
- strip tests this flag to see if a section can be
- discarded. */
+ /* The section contains only debugging information. For
+ example, this is set for ELF .debug and .stab sections.
+ strip tests this flag to see if a section can be
+ discarded. */
#define SEC_DEBUGGING 0x10000
- /* The contents of this section are held in memory pointed to
- by the contents field. This is checked by
- bfd_get_section_contents, and the data is retrieved from
- memory if appropriate. */
+ /* The contents of this section are held in memory pointed to
+ by the contents field. This is checked by bfd_get_section_contents,
+ and the data is retrieved from memory if appropriate. */
#define SEC_IN_MEMORY 0x20000
- /* The contents of this section are to be excluded by the
- linker for executable and shared objects unless those
- objects are to be further relocated. */
+ /* The contents of this section are to be excluded by the
+ linker for executable and shared objects unless those
+ objects are to be further relocated. */
#define SEC_EXCLUDE 0x40000
- /* The contents of this section are to be sorted by the
- based on the address specified in the associated symbol
- table. */
+ /* The contents of this section are to be sorted by the
+ based on the address specified in the associated symbol
+ table. */
#define SEC_SORT_ENTRIES 0x80000
- /* When linking, duplicate sections of the same name should be
- discarded, rather than being combined into a single section as
- is usually done. This is similar to how common symbols are
- handled. See SEC_LINK_DUPLICATES below. */
+ /* When linking, duplicate sections of the same name should be
+ discarded, rather than being combined into a single section as
+ is usually done. This is similar to how common symbols are
+ handled. See SEC_LINK_DUPLICATES below. */
#define SEC_LINK_ONCE 0x100000
- /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
- should handle duplicate sections. */
+ /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
+ should handle duplicate sections. */
#define SEC_LINK_DUPLICATES 0x600000
- /* This value for SEC_LINK_DUPLICATES means that duplicate
- sections with the same name should simply be discarded. */
+ /* This value for SEC_LINK_DUPLICATES means that duplicate
+ sections with the same name should simply be discarded. */
#define SEC_LINK_DUPLICATES_DISCARD 0x0
- /* This value for SEC_LINK_DUPLICATES means that the linker
- should warn if there are any duplicate sections, although
- it should still only link one copy. */
+ /* This value for SEC_LINK_DUPLICATES means that the linker
+ should warn if there are any duplicate sections, although
+ it should still only link one copy. */
#define SEC_LINK_DUPLICATES_ONE_ONLY 0x200000
- /* This value for SEC_LINK_DUPLICATES means that the linker
- should warn if any duplicate sections are a different size. */
+ /* This value for SEC_LINK_DUPLICATES means that the linker
+ should warn if any duplicate sections are a different size. */
#define SEC_LINK_DUPLICATES_SAME_SIZE 0x400000
- /* This value for SEC_LINK_DUPLICATES means that the linker
- should warn if any duplicate sections contain different
- contents. */
+ /* This value for SEC_LINK_DUPLICATES means that the linker
+ should warn if any duplicate sections contain different
+ contents. */
#define SEC_LINK_DUPLICATES_SAME_CONTENTS 0x600000
- /* This section was created by the linker as part of dynamic
- relocation or other arcane processing. It is skipped when
- going through the first-pass output, trusting that someone
- else up the line will take care of it later. */
+ /* This section was created by the linker as part of dynamic
+ relocation or other arcane processing. It is skipped when
+ going through the first-pass output, trusting that someone
+ else up the line will take care of it later. */
#define SEC_LINKER_CREATED 0x800000
- /* This section should not be subject to garbage collection. */
+ /* This section should not be subject to garbage collection. */
#define SEC_KEEP 0x1000000
- /* This section contains "short" data, and should be placed
- "near" the GP. */
+ /* This section contains "short" data, and should be placed
+ "near" the GP. */
#define SEC_SMALL_DATA 0x2000000
- /* This section contains data which may be shared with other
- executables or shared objects. */
+ /* This section contains data which may be shared with other
+ executables or shared objects. */
#define SEC_SHARED 0x4000000
- /* End of section flags. */
+ /* When a section with this flag is being linked, then if the size of
+ the input section is less than a page, it should not cross a page
+ boundary. If the size of the input section is one page or more, it
+ should be aligned on a page boundary. */
+#define SEC_BLOCK 0x8000000
+
+ /* Conditionally link this section; do not link if there are no
+ references found to any symbol in the section. */
+#define SEC_CLINK 0x10000000
+
+ /* End of section flags. */
+
+ /* Some internal packed boolean fields. */
- /* Some internal packed boolean fields. */
+ /* See the vma field. */
+ unsigned int user_set_vma : 1;
- /* See the vma field. */
- unsigned int user_set_vma : 1;
+ /* Whether relocations have been processed. */
+ unsigned int reloc_done : 1;
- /* Whether relocations have been processed. */
- unsigned int reloc_done : 1;
+ /* A mark flag used by some of the linker backends. */
+ unsigned int linker_mark : 1;
- /* A mark flag used by some of the linker backends. */
- unsigned int linker_mark : 1;
+ /* A mark flag used by some linker backends for garbage collection. */
+ unsigned int gc_mark : 1;
- /* A mark flag used by some linker backends for garbage collection. */
- unsigned int gc_mark : 1;
+ /* Used by the ELF code to mark sections which have been allocated to segments. */
+ unsigned int segment_mark : 1;
- /* End of internal packed boolean fields. */
+ /* End of internal packed boolean fields. */
- /* The virtual memory address of the section - where it will be
- at run time. The symbols are relocated against this. The
- user_set_vma flag is maintained by bfd; if it's not set, the
- backend can assign addresses (for example, in @code{a.out}, where
- the default address for @code{.data} is dependent on the specific
- target and various flags). */
+ /* The virtual memory address of the section - where it will be
+ at run time. The symbols are relocated against this. The
+ user_set_vma flag is maintained by bfd; if it's not set, the
+ backend can assign addresses (for example, in @code{a.out}, where
+ the default address for @code{.data} is dependent on the specific
+ target and various flags). */
- bfd_vma vma;
+ bfd_vma vma;
- /* The load address of the section - where it would be in a
- rom image; really only used for writing section header
- information. */
+ /* The load address of the section - where it would be in a
+ rom image; really only used for writing section header
+ information. */
- bfd_vma lma;
+ bfd_vma lma;
- /* The size of the section in octets, as it will be output.
- Contains a value even if the section has no contents (e.g., the
- size of @code{.bss}). This will be filled in after relocation. */
+ /* The size of the section in octets, as it will be output.
+ Contains a value even if the section has no contents (e.g., the
+ size of @code{.bss}). This will be filled in after relocation. */
- bfd_size_type _cooked_size;
+ bfd_size_type _cooked_size;
- /* The original size on disk of the section, in octets. Normally this
- value is the same as the size, but if some relaxing has
- been done, then this value will be bigger. */
+ /* The original size on disk of the section, in octets. Normally this
+ value is the same as the size, but if some relaxing has
+ been done, then this value will be bigger. */
- bfd_size_type _raw_size;
+ bfd_size_type _raw_size;
- /* If this section is going to be output, then this value is the
- offset in *bytes* into the output section of the first byte in the
- input section (byte ==> smallest addressable unit on the
- target). In most cases, if this was going to start at the
- 100th octet (8-bit quantity) in the output section, this value
- would be 100. However, if the target byte size is 16 bits
- (bfd_octets_per_byte is "2"), this value would be 50. */
+ /* If this section is going to be output, then this value is the
+ offset in *bytes* into the output section of the first byte in the
+ input section (byte ==> smallest addressable unit on the
+ target). In most cases, if this was going to start at the
+ 100th octet (8-bit quantity) in the output section, this value
+ would be 100. However, if the target byte size is 16 bits
+ (bfd_octets_per_byte is "2"), this value would be 50. */
- bfd_vma output_offset;
+ bfd_vma output_offset;
- /* The output section through which to map on output. */
+ /* The output section through which to map on output. */
- struct sec *output_section;
+ struct sec *output_section;
- /* The alignment requirement of the section, as an exponent of 2 -
- e.g., 3 aligns to 2^3 (or 8). */
+ /* The alignment requirement of the section, as an exponent of 2 -
+ e.g., 3 aligns to 2^3 (or 8). */
- unsigned int alignment_power;
+ unsigned int alignment_power;
- /* If an input section, a pointer to a vector of relocation
- records for the data in this section. */
+ /* If an input section, a pointer to a vector of relocation
+ records for the data in this section. */
- struct reloc_cache_entry *relocation;
+ struct reloc_cache_entry *relocation;
- /* If an output section, a pointer to a vector of pointers to
- relocation records for the data in this section. */
+ /* If an output section, a pointer to a vector of pointers to
+ relocation records for the data in this section. */
- struct reloc_cache_entry **orelocation;
+ struct reloc_cache_entry **orelocation;
- /* The number of relocation records in one of the above */
+ /* The number of relocation records in one of the above */
- unsigned reloc_count;
+ unsigned reloc_count;
- /* Information below is back end specific - and not always used
- or updated. */
+ /* Information below is back end specific - and not always used
+ or updated. */
- /* File position of section data */
+ /* File position of section data. */
- file_ptr filepos;
+ file_ptr filepos;
- /* File position of relocation info */
+ /* File position of relocation info. */
- file_ptr rel_filepos;
+ file_ptr rel_filepos;
- /* File position of line data */
+ /* File position of line data. */
- file_ptr line_filepos;
+ file_ptr line_filepos;
- /* Pointer to data for applications */
+ /* Pointer to data for applications. */
- PTR userdata;
+ PTR userdata;
- /* If the SEC_IN_MEMORY flag is set, this points to the actual
- contents. */
- unsigned char *contents;
+ /* If the SEC_IN_MEMORY flag is set, this points to the actual
+ contents. */
+ unsigned char *contents;
- /* Attached line number information */
+ /* Attached line number information. */
- alent *lineno;
+ alent *lineno;
- /* Number of line number records */
+ /* Number of line number records. */
- unsigned int lineno_count;
+ unsigned int lineno_count;
- /* Optional information about a COMDAT entry; NULL if not COMDAT */
+ /* Optional information about a COMDAT entry; NULL if not COMDAT. */
- struct bfd_comdat_info *comdat;
+ struct bfd_comdat_info *comdat;
- /* When a section is being output, this value changes as more
- linenumbers are written out */
+ /* Points to the kept section if this section is a link-once section,
+ and is discarded. */
+ struct sec *kept_section;
- file_ptr moving_line_filepos;
+ /* When a section is being output, this value changes as more
+ linenumbers are written out. */
- /* What the section number is in the target world */
+ file_ptr moving_line_filepos;
- int target_index;
+ /* What the section number is in the target world. */
- PTR used_by_bfd;
+ int target_index;
- /* If this is a constructor section then here is a list of the
- relocations created to relocate items within it. */
+ PTR used_by_bfd;
- struct relent_chain *constructor_chain;
+ /* If this is a constructor section then here is a list of the
+ relocations created to relocate items within it. */
- /* The BFD which owns the section. */
+ struct relent_chain *constructor_chain;
- bfd *owner;
+ /* The BFD which owns the section. */
- /* A symbol which points at this section only */
- struct symbol_cache_entry *symbol;
- struct symbol_cache_entry **symbol_ptr_ptr;
+ bfd *owner;
- struct bfd_link_order *link_order_head;
- struct bfd_link_order *link_order_tail;
+ /* A symbol which points at this section only */
+ struct symbol_cache_entry *symbol;
+ struct symbol_cache_entry **symbol_ptr_ptr;
+
+ struct bfd_link_order *link_order_head;
+ struct bfd_link_order *link_order_tail;
@} asection ;
- /* These sections are global, and are managed by BFD. The application
- and target back end are not permitted to change the values in
- these sections. New code should use the section_ptr macros rather
- than referring directly to the const sections. The const sections
- may eventually vanish. */
+/* These sections are global, and are managed by BFD. The application
+ and target back end are not permitted to change the values in
+ these sections. New code should use the section_ptr macros rather
+ than referring directly to the const sections. The const sections
+ may eventually vanish. */
#define BFD_ABS_SECTION_NAME "*ABS*"
#define BFD_UND_SECTION_NAME "*UND*"
#define BFD_COM_SECTION_NAME "*COM*"
#define BFD_IND_SECTION_NAME "*IND*"
- /* the absolute section */
+/* the absolute section */
extern const asection bfd_abs_section;
#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
- /* Pointer to the undefined section */
+/* Pointer to the undefined section */
extern const asection bfd_und_section;
#define bfd_und_section_ptr ((asection *) &bfd_und_section)
#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
- /* Pointer to the common section */
+/* Pointer to the common section */
extern const asection bfd_com_section;
#define bfd_com_section_ptr ((asection *) &bfd_com_section)
- /* Pointer to the indirect section */
+/* Pointer to the indirect section */
extern const asection bfd_ind_section;
#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
@@ -480,7 +502,7 @@ These are the functions exported by the section handling part of BFD.
@subsubsection @code{bfd_get_section_by_name}
@strong{Synopsis}
@example
-asection *bfd_get_section_by_name(bfd *abfd, CONST char *name);
+asection *bfd_get_section_by_name(bfd *abfd, const char *name);
@end example
@strong{Description}@*
Run through @var{abfd} and return the one of the
@@ -492,11 +514,26 @@ all sections of a given name is to use @code{bfd_map_over_sections} and
@code{strcmp} on the name (or better yet, base it on the section flags
or something else) for each section.
+@findex bfd_get_unique_section_name
+@subsubsection @code{bfd_get_unique_section_name}
+@strong{Synopsis}
+@example
+char *bfd_get_unique_section_name(bfd *abfd,
+ const char *templat,
+ int *count);
+@end example
+@strong{Description}@*
+Invent a section name that is unique in @var{abfd} by tacking
+a dot and a digit suffix onto the original @var{templat}. If
+@var{count} is non-NULL, then it specifies the first number
+tried as a suffix to generate a unique name. The value
+pointed to by @var{count} will be incremented in this case.
+
@findex bfd_make_section_old_way
@subsubsection @code{bfd_make_section_old_way}
@strong{Synopsis}
@example
-asection *bfd_make_section_old_way(bfd *abfd, CONST char *name);
+asection *bfd_make_section_old_way(bfd *abfd, const char *name);
@end example
@strong{Description}@*
Create a new empty section called @var{name}
@@ -523,7 +560,7 @@ If memory allocation fails.
@subsubsection @code{bfd_make_section_anyway}
@strong{Synopsis}
@example
-asection *bfd_make_section_anyway(bfd *abfd, CONST char *name);
+asection *bfd_make_section_anyway(bfd *abfd, const char *name);
@end example
@strong{Description}@*
Create a new empty section called @var{name} and attach it to the end of
@@ -543,7 +580,7 @@ Return @code{NULL} and set @code{bfd_error} on error; possible errors are:
@subsubsection @code{bfd_make_section}
@strong{Synopsis}
@example
-asection *bfd_make_section(bfd *, CONST char *name);
+asection *bfd_make_section(bfd *, const char *name);
@end example
@strong{Description}@*
Like @code{bfd_make_section_anyway}, but return @code{NULL} (without calling
@@ -576,7 +613,7 @@ have the @code{SEC_HAS_CONTENTS} field set.
@strong{Synopsis}
@example
void bfd_map_over_sections(bfd *abfd,
- void (*func)(bfd *abfd,
+ void (*func) (bfd *abfd,
asection *sect,
PTR obj),
PTR obj);
diff --git a/contrib/binutils/bfd/doc/syms.texi b/contrib/binutils/bfd/doc/syms.texi
index 74c151b..400a106 100644
--- a/contrib/binutils/bfd/doc/syms.texi
+++ b/contrib/binutils/bfd/doc/syms.texi
@@ -376,8 +376,8 @@ class of @var{symbol}, or '?' for an unknown class.
@example
int bfd_decode_symclass(asymbol *symbol);
@end example
-@findex bfd_is_undefined_symclass
-@subsubsection @code{bfd_is_undefined_symclass }
+@findex bfd_is_undefined_symclass
+@subsubsection @code{bfd_is_undefined_symclass}
@strong{Description}@*
Returns non-zero if the class symbol returned by
bfd_decode_symclass represents an undefined symbol.
diff --git a/contrib/binutils/bfd/doc/targets.texi b/contrib/binutils/bfd/doc/targets.texi
index 50086c4..0526faf 100644
--- a/contrib/binutils/bfd/doc/targets.texi
+++ b/contrib/binutils/bfd/doc/targets.texi
@@ -7,7 +7,7 @@ of a target back end. All the back end provides to the root
part of BFD is a structure containing pointers to functions
which perform certain low level operations on files. BFD
translates the applications's requests through a pointer into
-calls to the back end routines.
+calls to the back end routines.
When a file is opened with @code{bfd_openr}, its format and
target are unknown. BFD uses various mechanisms to determine
@@ -18,12 +18,12 @@ how to interpret the file. The operations performed are:
@item
Create a BFD by calling the internal routine
@code{_bfd_new_bfd}, then call @code{bfd_find_target} with the
-target string supplied to @code{bfd_openr} and the new BFD pointer.
+target string supplied to @code{bfd_openr} and the new BFD pointer.
@item
If a null target string was provided to @code{bfd_find_target},
look up the environment variable @code{GNUTARGET} and use
-that as the target string.
+that as the target string.
@item
If the target string is still @code{NULL}, or the target string is
@@ -35,7 +35,7 @@ cause @code{bfd_check_format} to loop through all the targets.
@item
Otherwise, inspect the elements in the target vector
one by one, until a match on target name is found. When found,
-use it.
+use it.
@item
Otherwise return the error @code{bfd_error_invalid_target} to
@@ -47,7 +47,7 @@ Otherwise return the error @code{bfd_error_invalid_target} to
@end itemize
Once the BFD has been opened and the target selected, the file
format may be determined. This is done by calling
-@code{bfd_check_format} on the BFD with a suggested format.
+@code{bfd_check_format} on the BFD with a suggested format.
If @code{target_defaulted} has been set, each possible target
type is tried to see if it recognizes the specified format.
@code{bfd_check_format} returns @code{true} when the caller guesses right.
@@ -63,17 +63,17 @@ type is tried to see if it recognizes the specified format.
@strong{Description}@*
This structure contains everything that BFD knows about a
target. It includes things like its byte order, name, and which
-routines to call to do various operations.
+routines to call to do various operations.
Every BFD points to a target structure with its @code{xvec}
-member.
+member.
The macros below are used to dispatch to functions through the
@code{bfd_target} vector. They are used in a number of macros further
down in @file{bfd.h}, and are also used when calling various
routines by hand inside the BFD implementation. The @var{arglist}
argument must be parenthesized; it contains all the arguments
-to the called function.
+to the called function.
They make the documentation (more) unpleasant to read, so if
someone wants to fix this and not break the above, please do.
@@ -92,13 +92,13 @@ someone wants to fix this and not break the above, please do.
For operations which index on the BFD format:
@example
#define BFD_SEND_FMT(bfd, message, arglist) \
- (((bfd)->xvec->message[(int)((bfd)->format)]) arglist)
+ (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
#ifdef DEBUG_BFD_SEND
#undef BFD_SEND_FMT
#define BFD_SEND_FMT(bfd, message, arglist) \
(((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
- (((bfd)->xvec->message[(int)((bfd)->format)]) arglist) : \
+ (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
(bfd_assert (__FILE__,__LINE__), NULL))
#endif
@end example
@@ -109,13 +109,14 @@ defines one of these.
FIXME, these names should be rationalised with the names of
the entry points which call them. Too bad we can't have one
-macro to define them both!
+macro to define them both!
@example
enum bfd_flavour @{
bfd_target_unknown_flavour,
bfd_target_aout_flavour,
bfd_target_coff_flavour,
bfd_target_ecoff_flavour,
+ bfd_target_xcoff_flavour,
bfd_target_elf_flavour,
bfd_target_ieee_flavour,
bfd_target_nlm_flavour,
@@ -133,7 +134,7 @@ enum bfd_flavour @{
enum bfd_endian @{ BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN @};
- /* Forward declaration. */
+/* Forward declaration. */
typedef struct bfd_link_info _bfd_link_info;
typedef struct bfd_target
@@ -159,21 +160,21 @@ The order of bytes within the header parts of a file.
A mask of all the flags which an executable may have set -
from the set @code{BFD_NO_FLAGS}, @code{HAS_RELOC}, ...@code{D_PAGED}.
@example
- flagword object_flags;
+ flagword object_flags;
@end example
A mask of all the flags which a section may have set - from
the set @code{SEC_NO_FLAGS}, @code{SEC_ALLOC}, ...@code{SET_NEVER_LOAD}.
@example
flagword section_flags;
@end example
-The character normally found at the front of a symbol
+The character normally found at the front of a symbol
(if any), perhaps `_'.
@example
char symbol_leading_char;
@end example
The pad character for file names within an archive header.
@example
- char ar_pad_char;
+ char ar_pad_char;
@end example
The maximum number of characters in an archive header.
@example
@@ -208,15 +209,15 @@ Byte swapping for the headers
Format dependent routines: these are vectors of entry points
within the target vector structure, one for each format to check.
-Check the format of a file being read. Return a @code{bfd_target *} or zero.
+Check the format of a file being read. Return a @code{bfd_target *} or zero.
@example
const struct bfd_target *(*_bfd_check_format[bfd_type_end]) PARAMS ((bfd *));
@end example
-Set the format of a file being written.
+Set the format of a file being written.
@example
boolean (*_bfd_set_format[bfd_type_end]) PARAMS ((bfd *));
@end example
-Write cached information into a file being written, at @code{bfd_close}.
+Write cached information into a file being written, at @code{bfd_close}.
@example
boolean (*_bfd_write_contents[bfd_type_end]) PARAMS ((bfd *));
@end example
@@ -224,7 +225,7 @@ The general target vector. These vectors are initialized using the
BFD_JUMP_TABLE macros.
@example
- /* Generic entry points. */
+ /* Generic entry points. */
#define BFD_JUMP_TABLE_GENERIC(NAME)\
CAT(NAME,_close_and_cleanup),\
CAT(NAME,_bfd_free_cached_info),\
@@ -232,20 +233,20 @@ CAT(NAME,_new_section_hook),\
CAT(NAME,_get_section_contents),\
CAT(NAME,_get_section_contents_in_window)
- /* Called when the BFD is being closed to do any necessary cleanup. */
+ /* Called when the BFD is being closed to do any necessary cleanup. */
boolean (*_close_and_cleanup) PARAMS ((bfd *));
- /* Ask the BFD to free all cached information. */
+ /* Ask the BFD to free all cached information. */
boolean (*_bfd_free_cached_info) PARAMS ((bfd *));
- /* Called when a new section is created. */
+ /* Called when a new section is created. */
boolean (*_new_section_hook) PARAMS ((bfd *, sec_ptr));
- /* Read the contents of a section. */
- boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
+ /* Read the contents of a section. */
+ boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
file_ptr, bfd_size_type));
boolean (*_bfd_get_section_contents_in_window)
PARAMS ((bfd *, sec_ptr, bfd_window *,
file_ptr, bfd_size_type));
- /* Entry points to copy private data. */
+ /* Entry points to copy private data. */
#define BFD_JUMP_TABLE_COPY(NAME)\
CAT(NAME,_bfd_copy_private_bfd_data),\
CAT(NAME,_bfd_merge_private_bfd_data),\
@@ -253,27 +254,27 @@ CAT(NAME,_bfd_copy_private_section_data),\
CAT(NAME,_bfd_copy_private_symbol_data),\
CAT(NAME,_bfd_set_private_flags),\
CAT(NAME,_bfd_print_private_bfd_data)\
- /* Called to copy BFD general private data from one object file
+ /* Called to copy BFD general private data from one object file
to another. */
boolean (*_bfd_copy_private_bfd_data) PARAMS ((bfd *, bfd *));
- /* Called to merge BFD general private data from one object file
+ /* Called to merge BFD general private data from one object file
to a common output file when linking. */
boolean (*_bfd_merge_private_bfd_data) PARAMS ((bfd *, bfd *));
- /* Called to copy BFD private section data from one object file
+ /* Called to copy BFD private section data from one object file
to another. */
boolean (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr,
bfd *, sec_ptr));
- /* Called to copy BFD private symbol data from one symbol
+ /* Called to copy BFD private symbol data from one symbol
to another. */
boolean (*_bfd_copy_private_symbol_data) PARAMS ((bfd *, asymbol *,
bfd *, asymbol *));
- /* Called to set private backend flags */
+ /* Called to set private backend flags */
boolean (*_bfd_set_private_flags) PARAMS ((bfd *, flagword));
- /* Called to print private BFD data */
+ /* Called to print private BFD data */
boolean (*_bfd_print_private_bfd_data) PARAMS ((bfd *, PTR));
- /* Core file entry points. */
+ /* Core file entry points. */
#define BFD_JUMP_TABLE_CORE(NAME)\
CAT(NAME,_core_file_failing_command),\
CAT(NAME,_core_file_failing_signal),\
@@ -282,7 +283,7 @@ CAT(NAME,_core_file_matches_executable_p)
int (*_core_file_failing_signal) PARAMS ((bfd *));
boolean (*_core_file_matches_executable_p) PARAMS ((bfd *, bfd *));
- /* Archive entry points. */
+ /* Archive entry points. */
#define BFD_JUMP_TABLE_ARCHIVE(NAME)\
CAT(NAME,_slurp_armap),\
CAT(NAME,_slurp_extended_name_table),\
@@ -299,10 +300,10 @@ CAT(NAME,_update_armap_timestamp)
boolean (*_bfd_construct_extended_name_table)
PARAMS ((bfd *, char **, bfd_size_type *, const char **));
void (*_bfd_truncate_arname) PARAMS ((bfd *, CONST char *, char *));
- boolean (*write_armap) PARAMS ((bfd *arch,
+ boolean (*write_armap) PARAMS ((bfd *arch,
unsigned int elength,
struct orl *map,
- unsigned int orl_count,
+ unsigned int orl_count,
int stridx));
PTR (*_bfd_read_ar_hdr_fn) PARAMS ((bfd *));
bfd * (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev));
@@ -311,7 +312,7 @@ CAT(NAME,_update_armap_timestamp)
int (*_bfd_stat_arch_elt) PARAMS ((bfd *, struct stat *));
boolean (*_bfd_update_armap_timestamp) PARAMS ((bfd *));
- /* Entry points used for symbols. */
+ /* Entry points used for symbols. */
#define BFD_JUMP_TABLE_SYMBOLS(NAME)\
CAT(NAME,_get_symtab_upper_bound),\
CAT(NAME,_get_symtab),\
@@ -344,7 +345,7 @@ CAT(NAME,_minisymbol_to_symbol)
struct sec *section, struct symbol_cache_entry **symbols,
bfd_vma offset, CONST char **file, CONST char **func,
unsigned int *line));
- /* Back-door to allow format-aware applications to create debug symbols
+ /* Back-door to allow format-aware applications to create debug symbols
while using BFD for everything else. Currently used by the assembler
when creating COFF files. */
asymbol * (*_bfd_make_debug_symbol) PARAMS ((
@@ -360,7 +361,7 @@ CAT(NAME,_minisymbol_to_symbol)
asymbol *(*_minisymbol_to_symbol) PARAMS ((bfd *, boolean, const PTR,
asymbol *));
- /* Routines for relocs. */
+ /* Routines for relocs. */
#define BFD_JUMP_TABLE_RELOCS(NAME)\
CAT(NAME,_get_reloc_upper_bound),\
CAT(NAME,_canonicalize_reloc),\
@@ -368,12 +369,12 @@ CAT(NAME,_bfd_reloc_type_lookup)
long (*_get_reloc_upper_bound) PARAMS ((bfd *, sec_ptr));
long (*_bfd_canonicalize_reloc) PARAMS ((bfd *, sec_ptr, arelent **,
struct symbol_cache_entry **));
- /* See documentation on reloc types. */
+ /* See documentation on reloc types. */
reloc_howto_type *
(*reloc_type_lookup) PARAMS ((bfd *abfd,
bfd_reloc_code_real_type code));
- /* Routines used when writing an object file. */
+ /* Routines used when writing an object file. */
#define BFD_JUMP_TABLE_WRITE(NAME)\
CAT(NAME,_set_arch_mach),\
CAT(NAME,_set_section_contents)
@@ -382,7 +383,7 @@ CAT(NAME,_set_section_contents)
boolean (*_bfd_set_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
file_ptr, bfd_size_type));
- /* Routines used by the linker. */
+ /* Routines used by the linker. */
#define BFD_JUMP_TABLE_LINK(NAME)\
CAT(NAME,_sizeof_headers),\
CAT(NAME,_bfd_get_relocated_section_contents),\
@@ -401,37 +402,37 @@ CAT(NAME,_bfd_gc_sections)
boolean (*_bfd_relax_section) PARAMS ((bfd *, struct sec *,
struct bfd_link_info *, boolean *again));
- /* Create a hash table for the linker. Different backends store
+ /* Create a hash table for the linker. Different backends store
different information in this table. */
struct bfd_link_hash_table *(*_bfd_link_hash_table_create) PARAMS ((bfd *));
- /* Add symbols from this object file into the hash table. */
+ /* Add symbols from this object file into the hash table. */
boolean (*_bfd_link_add_symbols) PARAMS ((bfd *, struct bfd_link_info *));
- /* Do a link based on the link_order structures attached to each
+ /* Do a link based on the link_order structures attached to each
section of the BFD. */
boolean (*_bfd_final_link) PARAMS ((bfd *, struct bfd_link_info *));
- /* Should this section be split up into smaller pieces during linking. */
+ /* Should this section be split up into smaller pieces during linking. */
boolean (*_bfd_link_split_section) PARAMS ((bfd *, struct sec *));
- /* Remove sections that are not referenced from the output. */
+ /* Remove sections that are not referenced from the output. */
boolean (*_bfd_gc_sections) PARAMS ((bfd *, struct bfd_link_info *));
- /* Routines to handle dynamic symbols and relocs. */
+ /* Routines to handle dynamic symbols and relocs. */
#define BFD_JUMP_TABLE_DYNAMIC(NAME)\
CAT(NAME,_get_dynamic_symtab_upper_bound),\
CAT(NAME,_canonicalize_dynamic_symtab),\
CAT(NAME,_get_dynamic_reloc_upper_bound),\
CAT(NAME,_canonicalize_dynamic_reloc)
- /* Get the amount of memory required to hold the dynamic symbols. */
+ /* Get the amount of memory required to hold the dynamic symbols. */
long (*_bfd_get_dynamic_symtab_upper_bound) PARAMS ((bfd *));
- /* Read in the dynamic symbols. */
+ /* Read in the dynamic symbols. */
long (*_bfd_canonicalize_dynamic_symtab)
PARAMS ((bfd *, struct symbol_cache_entry **));
- /* Get the amount of memory required to hold the dynamic relocs. */
+ /* Get the amount of memory required to hold the dynamic relocs. */
long (*_bfd_get_dynamic_reloc_upper_bound) PARAMS ((bfd *));
- /* Read in the dynamic relocs. */
+ /* Read in the dynamic relocs. */
long (*_bfd_canonicalize_dynamic_reloc)
PARAMS ((bfd *, arelent **, struct symbol_cache_entry **));
@@ -442,15 +443,15 @@ and little endian code, and target chosen by the linker has the wrong
endianness. The function open_output() in ld/ldlang.c uses this field
to find an alternative output format that is suitable.
@example
- /* Opposite endian version of this target. */
+ /* Opposite endian version of this target. */
const struct bfd_target * alternative_target;
-
+
@end example
Data for use by back-end routines, which isn't generic enough to belong
in this structure.
@example
PTR backend_data;
-
+
@} bfd_target;
@end example
@@ -497,7 +498,7 @@ modify the names.
@subsubsection @code{bfd_seach_for_target}
@strong{Synopsis}
@example
-const bfd_target * bfd_search_for_target (int (* search_func)(const bfd_target *, void *), void *);
+const bfd_target * bfd_search_for_target (int (* search_func) (const bfd_target *, void *), void *);
@end example
@strong{Description}@*
Return a pointer to the first transfer vector in the list of
diff --git a/contrib/binutils/bfd/dwarf1.c b/contrib/binutils/bfd/dwarf1.c
index da184cc..b96adc5 100644
--- a/contrib/binutils/bfd/dwarf1.c
+++ b/contrib/binutils/bfd/dwarf1.c
@@ -1,7 +1,7 @@
/* DWARF 1 find nearest line (_bfd_dwarf1_find_nearest_line).
- Copyright 1998, 1999 Free Software Foundation, Inc.
+ Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
-Written by Gavin Romig-Koch of Cygnus Solutions (gavin@cygnus.com).
+Written by Gavin Romig-Koch of Cygnus Solutions (gavin@cygnus.com).
This file is part of BFD.
@@ -26,121 +26,115 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "elf-bfd.h"
#include "elf/dwarf.h"
-/* dwarf1_debug is the starting point for all dwarf1 info. */
+/* dwarf1_debug is the starting point for all dwarf1 info. */
struct dwarf1_debug {
- /* The bfd we are working with. */
+ /* The bfd we are working with. */
bfd* abfd;
- /* List of already parsed compilation units. */
+ /* List of already parsed compilation units. */
struct dwarf1_unit* lastUnit;
- /* The buffer for the .debug section.
- Zero indicates that the .debug section failed to load. */
+ /* The buffer for the .debug section.
+ Zero indicates that the .debug section failed to load. */
char* debug_section;
- /* Pointer to the end of the .debug_info section memory buffer. */
+ /* Pointer to the end of the .debug_info section memory buffer. */
char* debug_section_end;
- /* The buffer for the .line section. */
+ /* The buffer for the .line section. */
char* line_section;
- /* End of that buffer. */
+ /* End of that buffer. */
char* line_section_end;
- /* The current or next unread die within the .debug section. */
+ /* The current or next unread die within the .debug section. */
char* currentDie;
};
-/* One dwarf1_unit for each parsed compilation unit die. */
+/* One dwarf1_unit for each parsed compilation unit die. */
struct dwarf1_unit {
- /* Linked starting from stash->lastUnit. */
+ /* Linked starting from stash->lastUnit. */
struct dwarf1_unit* prev;
- /* Name of the compilation unit. */
+ /* Name of the compilation unit. */
char* name;
- /* The highest and lowest address used in the compilation unit. */
+ /* The highest and lowest address used in the compilation unit. */
unsigned long low_pc;
unsigned long high_pc;
/* Does this unit have a statement list? */
int has_stmt_list;
- /* If any, the offset of the line number table in the .line section. */
+ /* If any, the offset of the line number table in the .line section. */
unsigned long stmt_list_offset;
- /* If non-zero, a pointer to the first child of this unit. */
+ /* If non-zero, a pointer to the first child of this unit. */
char* first_child;
/* How many line entries? */
unsigned long line_count;
- /* The decoded line number table (line_count entries). */
+ /* The decoded line number table (line_count entries). */
struct linenumber* linenumber_table;
- /* The list of functions in this unit. */
+ /* The list of functions in this unit. */
struct dwarf1_func* func_list;
};
-
-
/* One dwarf1_func for each parsed function die. */
struct dwarf1_func {
- /* Linked starting from aUnit->func_list. */
+ /* Linked starting from aUnit->func_list. */
struct dwarf1_func* prev;
-
- /* Name of function. */
+
+ /* Name of function. */
char* name;
-
- /* The highest and lowest address used in the compilation unit. */
+
+ /* The highest and lowest address used in the compilation unit. */
unsigned long low_pc;
unsigned long high_pc;
};
-
-/* Used to return info about a parsed die. */
+/* Used to return info about a parsed die. */
struct die_info {
unsigned long length;
unsigned long sibling;
unsigned long low_pc;
unsigned long high_pc;
unsigned long stmt_list_offset;
-
- char* name;
-
+
+ char* name;
+
int has_stmt_list;
unsigned short tag;
};
-
-/* Parsed line number information. */
+/* Parsed line number information. */
struct linenumber {
- /* First address in the line. */
+ /* First address in the line. */
unsigned long addr;
- /* The line number. */
+ /* The line number. */
unsigned long linenumber;
};
-
-/* Find the form of an attr, from the attr field. */
+/* Find the form of an attr, from the attr field. */
#define FORM_FROM_ATTR(attr) ((attr) & 0xF) /* Implicitly specified */
-
/* Return a newly allocated dwarf1_unit. It should be cleared and
- then attached into the 'stash' at 'stash->lastUnit'. */
+ then attached into the 'stash' at 'stash->lastUnit'. */
static struct dwarf1_unit*
alloc_dwarf1_unit (stash)
struct dwarf1_debug* stash;
{
- struct dwarf1_unit* x =
- (struct dwarf1_unit*) bfd_zalloc (stash->abfd,
+ struct dwarf1_unit* x =
+ (struct dwarf1_unit*) bfd_zalloc (stash->abfd,
sizeof (struct dwarf1_unit));
x->prev = stash->lastUnit;
stash->lastUnit = x;
@@ -149,28 +143,28 @@ alloc_dwarf1_unit (stash)
}
/* Return a newly allocated dwarf1_func. It must be cleared and
- attached into 'aUnit' at 'aUnit->func_list'. */
+ attached into 'aUnit' at 'aUnit->func_list'. */
static struct dwarf1_func*
alloc_dwarf1_func (stash, aUnit)
struct dwarf1_debug* stash;
struct dwarf1_unit* aUnit;
{
- struct dwarf1_func* x =
- (struct dwarf1_func*) bfd_zalloc (stash->abfd,
+ struct dwarf1_func* x =
+ (struct dwarf1_func*) bfd_zalloc (stash->abfd,
sizeof (struct dwarf1_func));
x->prev = aUnit->func_list;
aUnit->func_list = x;
-
+
return x;
}
/* parse_die - parse a Dwarf1 die.
Parse the die starting at 'aDiePtr' into 'aDieInfo'.
'abfd' must be the bfd from which the section that 'aDiePtr'
- points to was pulled from.
+ points to was pulled from.
- Return false if the die is invalidly formatted; true otherwise. */
+ Return false if the die is invalidly formatted; true otherwise. */
static boolean
parse_die (abfd, aDieInfo, aDiePtr)
@@ -181,36 +175,36 @@ parse_die (abfd, aDieInfo, aDiePtr)
char* this_die = aDiePtr;
char* xptr = this_die;
- memset (aDieInfo,0,sizeof(*aDieInfo));
+ memset (aDieInfo,0,sizeof (*aDieInfo));
- /* First comes the length. */
- aDieInfo->length = bfd_get_32 (abfd, xptr);
+ /* First comes the length. */
+ aDieInfo->length = bfd_get_32 (abfd, (bfd_byte *) xptr);
xptr += 4;
if (aDieInfo->length == 0)
return false;
if (aDieInfo->length < 6)
{
- /* Just padding bytes. */
+ /* Just padding bytes. */
aDieInfo->tag = TAG_padding;
return true;
}
- /* Then the tag. */
- aDieInfo->tag = bfd_get_16 (abfd, xptr);
+ /* Then the tag. */
+ aDieInfo->tag = bfd_get_16 (abfd, (bfd_byte *) xptr);
xptr += 2;
-
- /* Then the attributes. */
+
+ /* Then the attributes. */
while (xptr < (this_die + aDieInfo->length))
{
unsigned short attr;
-
- /* Parse the attribute based on its form. This section
+
+ /* Parse the attribute based on its form. This section
must handle all dwarf1 forms, but need only handle the
- actual attributes that we care about. */
+ actual attributes that we care about. */
- attr = bfd_get_16 (abfd, xptr);
+ attr = bfd_get_16 (abfd, (bfd_byte *) xptr);
xptr += 2;
-
+
switch (FORM_FROM_ATTR (attr))
{
case FORM_DATA2:
@@ -219,10 +213,10 @@ parse_die (abfd, aDieInfo, aDiePtr)
case FORM_DATA4:
case FORM_REF:
if (attr == AT_sibling)
- aDieInfo->sibling = bfd_get_32 (abfd, xptr);
+ aDieInfo->sibling = bfd_get_32 (abfd, (bfd_byte *) xptr);
else if (attr == AT_stmt_list)
{
- aDieInfo->stmt_list_offset = bfd_get_32 (abfd, xptr);
+ aDieInfo->stmt_list_offset = bfd_get_32 (abfd, (bfd_byte *) xptr);
aDieInfo->has_stmt_list = 1;
}
xptr += 4;
@@ -232,16 +226,16 @@ parse_die (abfd, aDieInfo, aDiePtr)
break;
case FORM_ADDR:
if (attr == AT_low_pc)
- aDieInfo->low_pc = bfd_get_32 (abfd, xptr);
+ aDieInfo->low_pc = bfd_get_32 (abfd, (bfd_byte *) xptr);
else if (attr == AT_high_pc)
- aDieInfo->high_pc = bfd_get_32 (abfd, xptr);
+ aDieInfo->high_pc = bfd_get_32 (abfd, (bfd_byte *) xptr);
xptr += 4;
break;
case FORM_BLOCK2:
- xptr += 2 + bfd_get_16 (abfd, xptr);
+ xptr += 2 + bfd_get_16 (abfd, (bfd_byte *) xptr);
break;
case FORM_BLOCK4:
- xptr += 4 + bfd_get_32 (abfd, xptr);
+ xptr += 4 + bfd_get_32 (abfd, (bfd_byte *) xptr);
break;
case FORM_STRING:
if (attr == AT_name)
@@ -255,9 +249,9 @@ parse_die (abfd, aDieInfo, aDiePtr)
}
/* Parse a dwarf1 line number table for 'aUnit->stmt_list_offset'
- into 'aUnit->linenumber_table'. Return false if an error
- occurs; true otherwise. */
-
+ into 'aUnit->linenumber_table'. Return false if an error
+ occurs; true otherwise. */
+
static boolean
parse_line_table (stash, aUnit)
struct dwarf1_debug* stash;
@@ -265,19 +259,19 @@ parse_line_table (stash, aUnit)
{
char* xptr;
- /* Load the ".line" section from the bfd if we haven't already. */
+ /* Load the ".line" section from the bfd if we haven't already. */
if (stash->line_section == 0)
{
asection *msec;
unsigned long size;
-
+
msec = bfd_get_section_by_name (stash->abfd, ".line");
if (! msec)
return false;
-
+
size = bfd_get_section_size_before_reloc (msec);
- stash->line_section = (unsigned char*) bfd_alloc (stash->abfd, size);
-
+ stash->line_section = (char *) bfd_alloc (stash->abfd, size);
+
if (! stash->line_section)
return false;
@@ -298,36 +292,36 @@ parse_line_table (stash, aUnit)
char* tblend;
unsigned long base;
- /* First comes the length. */
- tblend = bfd_get_32 (stash->abfd, xptr) + xptr;
+ /* First comes the length. */
+ tblend = bfd_get_32 (stash->abfd, (bfd_byte *) xptr) + xptr;
xptr += 4;
- /* Then the base address for each address in the table. */
- base = bfd_get_32 (stash->abfd, xptr);
+ /* Then the base address for each address in the table. */
+ base = bfd_get_32 (stash->abfd, (bfd_byte *) xptr);
xptr += 4;
/* How many line entrys?
10 = 4 (line number) + 2 (pos in line) + 4 (address in line) */
aUnit->line_count = (tblend - xptr) / 10;
- /* Allocate an array for the entries. */
- aUnit->linenumber_table = (struct linenumber*)
- bfd_alloc (stash->abfd,
+ /* Allocate an array for the entries. */
+ aUnit->linenumber_table = (struct linenumber *)
+ bfd_alloc (stash->abfd,
sizeof (struct linenumber) * aUnit->line_count);
-
+
for (eachLine = 0; eachLine < aUnit->line_count; eachLine++)
{
- /* A line number. */
+ /* A line number. */
aUnit->linenumber_table[eachLine].linenumber
- = bfd_get_32 (stash->abfd, xptr);
+ = bfd_get_32 (stash->abfd, (bfd_byte *) xptr);
xptr += 4;
- /* Skip the position within the line. */
+ /* Skip the position within the line. */
xptr += 2;
- /* And finally the address. */
- aUnit->linenumber_table[eachLine].addr
- = base + bfd_get_32 (stash->abfd, xptr);
+ /* And finally the address. */
+ aUnit->linenumber_table[eachLine].addr
+ = base + bfd_get_32 (stash->abfd, (bfd_byte *) xptr);
xptr += 4;
}
}
@@ -338,7 +332,7 @@ parse_line_table (stash, aUnit)
/* Parse each function die in a compilation unit 'aUnit'.
The first child die of 'aUnit' should be in 'aUnit->first_child',
the result is placed in 'aUnit->func_list'.
- Return false if error; true otherwise. */
+ Return false if error; true otherwise. */
static boolean
parse_functions_in_unit (stash, aUnit)
@@ -353,37 +347,37 @@ parse_functions_in_unit (stash, aUnit)
)
{
struct die_info eachDieInfo;
-
+
if (! parse_die (stash->abfd, &eachDieInfo, eachDie))
return false;
-
+
if (eachDieInfo.tag == TAG_global_subroutine
|| eachDieInfo.tag == TAG_subroutine
|| eachDieInfo.tag == TAG_inlined_subroutine
|| eachDieInfo.tag == TAG_entry_point)
{
struct dwarf1_func* aFunc = alloc_dwarf1_func (stash,aUnit);
-
+
aFunc->name = eachDieInfo.name;
aFunc->low_pc = eachDieInfo.low_pc;
aFunc->high_pc = eachDieInfo.high_pc;
}
-
+
/* Move to next sibling, if none, end loop */
if (eachDieInfo.sibling)
eachDie = stash->debug_section + eachDieInfo.sibling;
else
break;
}
-
+
return true;
}
/* Find the nearest line to 'addr' in 'aUnit'.
- Return whether we found the line (or a function) without error. */
+ Return whether we found the line (or a function) without error. */
static boolean
-dwarf1_unit_find_nearest_line (stash, aUnit, addr,
+dwarf1_unit_find_nearest_line (stash, aUnit, addr,
filename_ptr, functionname_ptr,
linenumber_ptr)
struct dwarf1_debug* stash;
@@ -427,8 +421,8 @@ dwarf1_unit_find_nearest_line (stash, aUnit, addr,
}
}
- for (eachFunc = aUnit->func_list;
- eachFunc;
+ for (eachFunc = aUnit->func_list;
+ eachFunc;
eachFunc = eachFunc->prev)
{
if (eachFunc->low_pc <= addr
@@ -445,11 +439,8 @@ dwarf1_unit_find_nearest_line (stash, aUnit, addr,
return line_p || func_p;
}
-
-
-
/* The DWARF 1 version of find_nearest line.
- Return true if the line is found without error. */
+ Return true if the line is found without error. */
boolean
_bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
@@ -472,31 +463,30 @@ _bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
*filename_ptr = NULL;
*functionname_ptr = NULL;
*linenumber_ptr = 0;
-
if (! stash)
{
asection *msec;
unsigned long size;
-
+
stash = elf_tdata (abfd)->dwarf1_find_line_info =
(struct dwarf1_debug*) bfd_zalloc (abfd, sizeof (struct dwarf1_debug));
-
+
if (! stash)
return false;
-
+
msec = bfd_get_section_by_name (abfd, ".debug");
if (! msec)
{
/* No dwarf1 info. Note that at this point the stash
has been allocated, but contains zeros, this lets
- future calls to this function fail quicker. */
+ future calls to this function fail quicker. */
return false;
}
size = bfd_get_section_size_before_reloc (msec);
- stash->debug_section = (unsigned char*) bfd_alloc (abfd, size);
-
+ stash->debug_section = (char *) bfd_alloc (abfd, size);
+
if (! stash->debug_section)
return false;
@@ -512,20 +502,19 @@ _bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
}
/* A null debug_section indicates that there was no dwarf1 info
- or that an error occured while setting up the stash. */
+ or that an error occured while setting up the stash. */
if (! stash->debug_section)
return false;
-
/* Look at the previously parsed units to see if any contain
- the addr. */
+ the addr. */
for (eachUnit = stash->lastUnit; eachUnit; eachUnit = eachUnit->prev)
{
if (eachUnit->low_pc <= addr && addr < eachUnit->high_pc)
return dwarf1_unit_find_nearest_line (stash, eachUnit, addr,
- filename_ptr,
- functionname_ptr,
+ filename_ptr,
+ functionname_ptr,
linenumber_ptr);
}
@@ -535,36 +524,36 @@ _bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
if (! parse_die (stash->abfd, &aDieInfo, stash->currentDie))
return false;
-
+
if (aDieInfo.tag == TAG_compile_unit)
{
struct dwarf1_unit* aUnit
= alloc_dwarf1_unit (stash);
-
+
aUnit->name = aDieInfo.name;
aUnit->low_pc = aDieInfo.low_pc;
aUnit->high_pc = aDieInfo.high_pc;
aUnit->has_stmt_list = aDieInfo.has_stmt_list;
aUnit->stmt_list_offset = aDieInfo.stmt_list_offset;
-
+
/* A die has a child if it's followed by a die that is
- not it's sibling. */
- if (aDieInfo.sibling
- && stash->currentDie + aDieInfo.length
+ not it's sibling. */
+ if (aDieInfo.sibling
+ && stash->currentDie + aDieInfo.length
< stash->debug_section_end
- && stash->currentDie + aDieInfo.length
+ && stash->currentDie + aDieInfo.length
!= stash->debug_section + aDieInfo.sibling)
aUnit->first_child = stash->currentDie + aDieInfo.length;
else
aUnit->first_child = 0;
if (aUnit->low_pc <= addr && addr < aUnit->high_pc)
- return dwarf1_unit_find_nearest_line (stash, aUnit, addr,
- filename_ptr,
- functionname_ptr,
+ return dwarf1_unit_find_nearest_line (stash, aUnit, addr,
+ filename_ptr,
+ functionname_ptr,
linenumber_ptr);
}
-
+
if (aDieInfo.sibling != 0)
stash->currentDie = stash->debug_section + aDieInfo.sibling;
else
@@ -574,5 +563,4 @@ _bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
return false;
}
-
/* EOF */
diff --git a/contrib/binutils/bfd/dwarf2.c b/contrib/binutils/bfd/dwarf2.c
index b6de261..141c686 100644
--- a/contrib/binutils/bfd/dwarf2.c
+++ b/contrib/binutils/bfd/dwarf2.c
@@ -36,36 +36,38 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "elf/dwarf2.h"
/* The data in the .debug_line statement prologue looks like this. */
+
struct line_head
- {
- unsigned int total_length;
- unsigned short version;
- unsigned int prologue_length;
- unsigned char minimum_instruction_length;
- unsigned char default_is_stmt;
- int line_base;
- unsigned char line_range;
- unsigned char opcode_base;
- unsigned char *standard_opcode_lengths;
- };
-
-/* Attributes have a name and a value */
+{
+ unsigned int total_length;
+ unsigned short version;
+ unsigned int prologue_length;
+ unsigned char minimum_instruction_length;
+ unsigned char default_is_stmt;
+ int line_base;
+ unsigned char line_range;
+ unsigned char opcode_base;
+ unsigned char *standard_opcode_lengths;
+};
+
+/* Attributes have a name and a value. */
+
struct attribute
+{
+ enum dwarf_attribute name;
+ enum dwarf_form form;
+ union
{
- enum dwarf_attribute name;
- enum dwarf_form form;
- union
- {
- char *str;
- struct dwarf_block *blk;
- unsigned int unsnd;
- int snd;
- bfd_vma addr;
- }
- u;
- };
-
-/* Get at parts of an attribute structure */
+ char *str;
+ struct dwarf_block *blk;
+ unsigned int unsnd;
+ int snd;
+ bfd_vma addr;
+ }
+ u;
+};
+
+/* Get at parts of an attribute structure. */
#define DW_STRING(attr) ((attr)->u.str)
#define DW_UNSND(attr) ((attr)->u.unsnd)
@@ -73,100 +75,100 @@ struct attribute
#define DW_SND(attr) ((attr)->u.snd)
#define DW_ADDR(attr) ((attr)->u.addr)
-/* Blocks are a bunch of untyped bytes. */
+/* Blocks are a bunch of untyped bytes. */
struct dwarf_block
- {
- unsigned int size;
- char *data;
- };
-
-
-struct dwarf2_debug {
+{
+ unsigned int size;
+ char *data;
+};
- /* A list of all previously read comp_units. */
+struct dwarf2_debug
+{
+ /* A list of all previously read comp_units. */
struct comp_unit* all_comp_units;
/* The next unread compilation unit within the .debug_info section.
Zero indicates that the .debug_info section has not been loaded
- into a buffer yet.*/
+ into a buffer yet. */
char* info_ptr;
- /* Pointer to the end of the .debug_info section memory buffer. */
+ /* Pointer to the end of the .debug_info section memory buffer. */
char* info_ptr_end;
- /* Pointer to the .debug_abbrev section loaded into memory. */
+ /* Pointer to the .debug_abbrev section loaded into memory. */
char* dwarf_abbrev_buffer;
- /* Length of the loaded .debug_abbrev section. */
+ /* Length of the loaded .debug_abbrev section. */
unsigned long dwarf_abbrev_size;
/* Buffer for decode_line_info. */
char *dwarf_line_buffer;
+
+ /* Length of the loaded .debug_line section. */
+ unsigned long dwarf_line_size;
};
-struct arange {
+struct arange
+{
struct arange *next;
bfd_vma low;
bfd_vma high;
};
-
/* A minimal decoding of DWARF2 compilation units. We only decode
- what's needed to get to the line number information. */
-
-struct comp_unit {
+ what's needed to get to the line number information. */
- /* Chain the previously read compilation units. */
+struct comp_unit
+{
+ /* Chain the previously read compilation units. */
struct comp_unit* next_unit;
- /* Keep the bdf convenient (for memory allocation). */
+ /* Keep the bdf convenient (for memory allocation). */
bfd* abfd;
/* The lowest and higest addresses contained in this compilation
- unit as specified in the compilation unit header. */
+ unit as specified in the compilation unit header. */
struct arange arange;
- /* The DW_AT_name attribute (for error messages). */
+ /* The DW_AT_name attribute (for error messages). */
char* name;
- /* The abbrev hash table. */
+ /* The abbrev hash table. */
struct abbrev_info** abbrevs;
- /* Note that an error was found by comp_unit_find_nearest_line. */
+ /* Note that an error was found by comp_unit_find_nearest_line. */
int error;
- /* The DW_AT_comp_dir attribute */
+ /* The DW_AT_comp_dir attribute. */
char* comp_dir;
- /* True if there is a line number table associated with this comp. unit. */
+ /* True if there is a line number table associated with this comp. unit. */
int stmtlist;
-
- /* The offset into .debug_line of the line number table. */
+
+ /* The offset into .debug_line of the line number table. */
unsigned long line_offset;
- /* Pointer to the first child die for the comp unit. */
+ /* Pointer to the first child die for the comp unit. */
char *first_child_die_ptr;
- /* The end of the comp unit. */
+ /* The end of the comp unit. */
char *end_ptr;
- /* The decoded line number, NULL if not yet decoded. */
+ /* The decoded line number, NULL if not yet decoded. */
struct line_info_table* line_table;
- /* A list of the functions found in this comp. unit. */
- struct funcinfo* function_table;
+ /* A list of the functions found in this comp. unit. */
+ struct funcinfo* function_table;
- /* Address size for this unit - from unit header */
+ /* Address size for this unit - from unit header. */
unsigned char addr_size;
};
+/* VERBATIM
+ The following function up to the END VERBATIM mark are
+ copied directly from dwarf2read.c. */
-
-/* VERBATIM
- The following function up to the END VERBATIM mark are
- copied directly from dwarf2read.c. */
-
-/* read dwarf information from a buffer */
+/* Read dwarf information from a buffer. */
static unsigned int
read_1_byte (abfd, buf)
@@ -192,9 +194,7 @@ read_2_bytes (abfd, buf)
return bfd_get_16 (abfd, (bfd_byte *) buf);
}
-#if 0
-
-/* This is not used. */
+#if 0 /* This is not used. */
static int
read_2_signed_bytes (abfd, buf)
@@ -214,9 +214,7 @@ read_4_bytes (abfd, buf)
return bfd_get_32 (abfd, (bfd_byte *) buf);
}
-#if 0
-
-/* This is not used. */
+#if 0 /* This is not used. */
static int
read_4_signed_bytes (abfd, buf)
@@ -262,6 +260,7 @@ read_string (abfd, buf, bytes_read_ptr)
*bytes_read_ptr = 1;
return NULL;
}
+
*bytes_read_ptr = strlen (buf) + 1;
return buf;
}
@@ -280,7 +279,7 @@ read_unsigned_leb128 (abfd, buf, bytes_read_ptr)
result = 0;
shift = 0;
num_read = 0;
-
+
do
{
byte = bfd_get_8 (abfd, (bfd_byte *) buf);
@@ -290,9 +289,9 @@ read_unsigned_leb128 (abfd, buf, bytes_read_ptr)
shift += 7;
}
while (byte & 0x80);
-
+
* bytes_read_ptr = num_read;
-
+
return result;
}
@@ -320,12 +319,12 @@ read_signed_leb128 (abfd, buf, bytes_read_ptr)
shift += 7;
}
while (byte & 0x80);
-
+
if ((shift < 32) && (byte & 0x40))
result |= -(1 << shift);
* bytes_read_ptr = num_read;
-
+
return result;
}
@@ -349,26 +348,22 @@ read_address (unit, buf)
}
}
-
-
-
-
-/* This data structure holds the information of an abbrev. */
+/* This data structure holds the information of an abbrev. */
struct abbrev_info
- {
- unsigned int number; /* number identifying abbrev */
- enum dwarf_tag tag; /* dwarf tag */
- int has_children; /* boolean */
- unsigned int num_attrs; /* number of attributes */
- struct attr_abbrev *attrs; /* an array of attribute descriptions */
- struct abbrev_info *next; /* next in chain */
- };
+{
+ unsigned int number; /* Number identifying abbrev. */
+ enum dwarf_tag tag; /* DWARF tag. */
+ int has_children; /* Boolean. */
+ unsigned int num_attrs; /* Number of attributes. */
+ struct attr_abbrev *attrs; /* An array of attribute descriptions. */
+ struct abbrev_info *next; /* Next in chain. */
+};
struct attr_abbrev
- {
- enum dwarf_attribute name;
- enum dwarf_form form;
- };
+{
+ enum dwarf_attribute name;
+ enum dwarf_form form;
+};
#ifndef ABBREV_HASH_SIZE
#define ABBREV_HASH_SIZE 121
@@ -397,6 +392,7 @@ lookup_abbrev (number,abbrevs)
else
abbrev = abbrev->next;
}
+
return NULL;
}
@@ -406,18 +402,16 @@ lookup_abbrev (number,abbrevs)
in a hash table. */
static struct abbrev_info**
-read_abbrevs (abfd, offset)
+read_abbrevs (abfd, offset, stash)
bfd * abfd;
unsigned int offset;
+ struct dwarf2_debug *stash;
{
struct abbrev_info **abbrevs;
char *abbrev_ptr;
struct abbrev_info *cur_abbrev;
unsigned int abbrev_number, bytes_read, abbrev_name;
unsigned int abbrev_form, hash_number;
- struct dwarf2_debug *stash;
-
- stash = elf_tdata(abfd)->dwarf2_find_line_info;
if (! stash->dwarf_abbrev_buffer)
{
@@ -430,13 +424,13 @@ read_abbrevs (abfd, offset)
bfd_set_error (bfd_error_bad_value);
return 0;
}
-
+
stash->dwarf_abbrev_size = msec->_raw_size;
stash->dwarf_abbrev_buffer = (char*) bfd_alloc (abfd, stash->dwarf_abbrev_size);
if (! stash->dwarf_abbrev_buffer)
return 0;
-
- if (! bfd_get_section_contents (abfd, msec,
+
+ if (! bfd_get_section_contents (abfd, msec,
stash->dwarf_abbrev_buffer, 0,
stash->dwarf_abbrev_size))
return 0;
@@ -444,35 +438,36 @@ read_abbrevs (abfd, offset)
if (offset > stash->dwarf_abbrev_size)
{
- (*_bfd_error_handler) (_("Dwarf Error: Abbrev offset (%u) bigger than abbrev size (%u)."),
+ (*_bfd_error_handler) (_("Dwarf Error: Abbrev offset (%u) bigger than abbrev size (%u)."),
offset, stash->dwarf_abbrev_size );
bfd_set_error (bfd_error_bad_value);
return 0;
}
- abbrevs = (struct abbrev_info**) bfd_zalloc (abfd, sizeof(struct abbrev_info*) * ABBREV_HASH_SIZE);
+ abbrevs = (struct abbrev_info**) bfd_zalloc (abfd, sizeof (struct abbrev_info*) * ABBREV_HASH_SIZE);
abbrev_ptr = stash->dwarf_abbrev_buffer + offset;
abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
abbrev_ptr += bytes_read;
- /* loop until we reach an abbrev number of 0 */
+ /* Loop until we reach an abbrev number of 0. */
while (abbrev_number)
{
cur_abbrev = (struct abbrev_info*)bfd_zalloc (abfd, sizeof (struct abbrev_info));
- /* read in abbrev header */
+ /* Read in abbrev header. */
cur_abbrev->number = abbrev_number;
cur_abbrev->tag = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
abbrev_ptr += bytes_read;
cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
abbrev_ptr += 1;
- /* now read in declarations */
+ /* Now read in declarations. */
abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
abbrev_ptr += bytes_read;
abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
abbrev_ptr += bytes_read;
+
while (abbrev_name)
{
if ((cur_abbrev->num_attrs % ATTR_ALLOC_CHUNK) == 0)
@@ -484,6 +479,7 @@ read_abbrevs (abfd, offset)
if (! cur_abbrev->attrs)
return 0;
}
+
cur_abbrev->attrs[cur_abbrev->num_attrs].name = abbrev_name;
cur_abbrev->attrs[cur_abbrev->num_attrs++].form = abbrev_form;
abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
@@ -530,6 +526,7 @@ read_attribute (attr, abbrev, unit, info_ptr)
attr->name = abbrev->name;
attr->form = abbrev->form;
+
switch (abbrev->form)
{
case DW_FORM_addr:
@@ -631,42 +628,41 @@ read_attribute (attr, abbrev, unit, info_ptr)
return info_ptr;
}
-
-/* Source line information table routines. */
+/* Source line information table routines. */
#define FILE_ALLOC_CHUNK 5
#define DIR_ALLOC_CHUNK 5
-struct line_info {
+struct line_info
+{
struct line_info* prev_line;
-
bfd_vma address;
char* filename;
unsigned int line;
unsigned int column;
- int end_sequence; /* end of (sequential) code sequence */
+ int end_sequence; /* End of (sequential) code sequence. */
};
-struct fileinfo {
+struct fileinfo
+{
char *name;
unsigned int dir;
unsigned int time;
unsigned int size;
};
-struct line_info_table {
+struct line_info_table
+{
bfd* abfd;
-
unsigned int num_files;
unsigned int num_dirs;
-
char* comp_dir;
char** dirs;
struct fileinfo* files;
struct line_info* last_line;
};
-static void
+static void
add_line_info (table, address, filename, line, column, end_sequence)
struct line_info_table* table;
bfd_vma address;
@@ -688,7 +684,7 @@ add_line_info (table, address, filename, line, column, end_sequence)
info->end_sequence = end_sequence;
}
-static char*
+static char *
concat_filename (table, file)
struct line_info_table* table;
unsigned int file;
@@ -703,7 +699,7 @@ concat_filename (table, file)
}
filename = table->files[file - 1].name;
- if (*filename == '/')
+ if (IS_ABSOLUTE_PATH(filename))
return filename;
else
@@ -723,8 +719,9 @@ arange_add (unit, low_pc, high_pc)
{
struct arange *arange;
- /* first see if we can cheaply extend an existing range: */
+ /* First see if we can cheaply extend an existing range. */
arange = &unit->arange;
+
do
{
if (low_pc == arange->high)
@@ -743,14 +740,14 @@ arange_add (unit, low_pc, high_pc)
if (unit->arange.high == 0)
{
- /* this is the first address range: store it in unit->arange: */
+ /* This is the first address range: store it in unit->arange. */
unit->arange.next = 0;
unit->arange.low = low_pc;
unit->arange.high = high_pc;
return;
}
- /* need to allocate a new arange and insert it into the arange list: */
+ /* Need to allocate a new arange and insert it into the arange list. */
arange = bfd_zalloc (unit->abfd, sizeof (*arange));
arange->low = low_pc;
arange->high = high_pc;
@@ -759,18 +756,15 @@ arange_add (unit, low_pc, high_pc)
unit->arange.next = arange;
}
-/* Decode the line number information for UNIT. */
+/* Decode the line number information for UNIT. */
static struct line_info_table*
-decode_line_info (unit)
+decode_line_info (unit, stash)
struct comp_unit *unit;
+ struct dwarf2_debug *stash;
{
bfd *abfd = unit->abfd;
-
- struct dwarf2_debug *stash;
-
struct line_info_table* table;
-
char *line_ptr;
char *line_end;
struct line_head lh;
@@ -778,12 +772,9 @@ decode_line_info (unit)
char *cur_file, *cur_dir;
unsigned char op_code, extended_op, adj_opcode;
- stash = elf_tdata (abfd)->dwarf2_find_line_info;
-
if (! stash->dwarf_line_buffer)
{
asection *msec;
- unsigned long size;
msec = bfd_get_section_by_name (abfd, ".debug_line");
if (! msec)
@@ -792,22 +783,33 @@ decode_line_info (unit)
bfd_set_error (bfd_error_bad_value);
return 0;
}
-
- size = msec->_raw_size;
- stash->dwarf_line_buffer = (char *) bfd_alloc (abfd, size);
+
+ stash->dwarf_line_size = msec->_raw_size;
+ stash->dwarf_line_buffer = (char *) bfd_alloc (abfd, stash->dwarf_line_size);
if (! stash->dwarf_line_buffer)
return 0;
- if (! bfd_get_section_contents (abfd, msec,
+ if (! bfd_get_section_contents (abfd, msec,
stash->dwarf_line_buffer, 0,
- size))
+ stash->dwarf_line_size))
return 0;
/* FIXME: We ought to apply the relocs against this section before
- we process it.... */
+ we process it... */
+ }
+
+ /* Since we are using un-relocated data, it is possible to get a bad value
+ for the line_offset. Validate it here so that we won't get a segfault
+ below. */
+ if (unit->line_offset >= stash->dwarf_line_size)
+ {
+ (*_bfd_error_handler) (_("Dwarf Error: Line offset (%u) bigger than line size (%u)."),
+ unit->line_offset, stash->dwarf_line_size);
+ bfd_set_error (bfd_error_bad_value);
+ return 0;
}
- table = (struct line_info_table*) bfd_alloc (abfd,
+ table = (struct line_info_table*) bfd_alloc (abfd,
sizeof (struct line_info_table));
table->abfd = abfd;
table->comp_dir = unit->comp_dir;
@@ -823,7 +825,7 @@ decode_line_info (unit)
line_ptr = stash->dwarf_line_buffer + unit->line_offset;
- /* read in the prologue */
+ /* Read in the prologue. */
lh.total_length = read_4_bytes (abfd, line_ptr);
line_ptr += 4;
line_end = line_ptr + lh.total_length;
@@ -845,16 +847,18 @@ decode_line_info (unit)
bfd_alloc (abfd, lh.opcode_base * sizeof (unsigned char));
lh.standard_opcode_lengths[0] = 1;
+
for (i = 1; i < lh.opcode_base; ++i)
{
lh.standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
line_ptr += 1;
}
- /* Read directory table */
+ /* Read directory table. */
while ((cur_dir = read_string (abfd, line_ptr, &bytes_read)) != NULL)
{
line_ptr += bytes_read;
+
if ((table->num_dirs % DIR_ALLOC_CHUNK) == 0)
{
table->dirs = (char **)
@@ -863,14 +867,17 @@ decode_line_info (unit)
if (! table->dirs)
return 0;
}
+
table->dirs[table->num_dirs++] = cur_dir;
}
+
line_ptr += bytes_read;
- /* Read file name table */
+ /* Read file name table. */
while ((cur_file = read_string (abfd, line_ptr, &bytes_read)) != NULL)
{
line_ptr += bytes_read;
+
if ((table->num_files % FILE_ALLOC_CHUNK) == 0)
{
table->files = (struct fileinfo *)
@@ -880,6 +887,7 @@ decode_line_info (unit)
if (! table->files)
return 0;
}
+
table->files[table->num_files].name = cur_file;
table->files[table->num_files].dir =
read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
@@ -892,12 +900,13 @@ decode_line_info (unit)
line_ptr += bytes_read;
table->num_files++;
}
+
line_ptr += bytes_read;
/* Read the statement sequences until there's nothing left. */
while (line_ptr < line_end)
{
- /* state machine registers */
+ /* State machine registers. */
bfd_vma address = 0;
char* filename = concat_filename (table, 1);
unsigned int line = 1;
@@ -907,15 +916,16 @@ decode_line_info (unit)
int end_sequence = 0, need_low_pc = 1;
bfd_vma low_pc = 0;
- /* Decode the table. */
+ /* Decode the table. */
while (! end_sequence)
{
op_code = read_1_byte (abfd, line_ptr);
line_ptr += 1;
+
switch (op_code)
{
case DW_LNS_extended_op:
- line_ptr += 1; /* ignore length */
+ line_ptr += 1; /* Ignore length. */
extended_op = read_1_byte (abfd, line_ptr);
line_ptr += 1;
switch (extended_op)
@@ -1012,12 +1022,12 @@ decode_line_info (unit)
address += read_2_bytes (abfd, line_ptr);
line_ptr += 2;
break;
- default: /* special operand */
+ default: /* Special operand. */
adj_opcode = op_code - lh.opcode_base;
address += (adj_opcode / lh.line_range)
* lh.minimum_instruction_length;
line += lh.line_base + (adj_opcode % lh.line_range);
- /* append row to matrix using current values */
+ /* Append row to matrix using current values. */
add_line_info (table, address, filename, line, column, 0);
basic_block = 1;
if (need_low_pc)
@@ -1032,15 +1042,14 @@ decode_line_info (unit)
return table;
}
-
/* If ADDR is within TABLE set the output parameters and return true,
otherwise return false. The output parameters, FILENAME_PTR and
- LINENUMBER_PTR, are pointers to the objects to be filled in. */
+ LINENUMBER_PTR, are pointers to the objects to be filled in. */
static boolean
-lookup_address_in_line_info_table (table,
+lookup_address_in_line_info_table (table,
addr,
- filename_ptr,
+ filename_ptr,
linenumber_ptr)
struct line_info_table* table;
bfd_vma addr;
@@ -1049,7 +1058,7 @@ lookup_address_in_line_info_table (table,
{
struct line_info* next_line = table->last_line;
struct line_info* each_line;
-
+
if (!next_line)
return false;
@@ -1067,28 +1076,24 @@ lookup_address_in_line_info_table (table,
next_line = each_line;
each_line = each_line->prev_line;
}
-
+
return false;
}
-
-
-
-/* Function table functions. */
+/* Function table functions. */
-struct funcinfo {
+struct funcinfo
+{
struct funcinfo *prev_func;
-
char* name;
bfd_vma low;
bfd_vma high;
};
-
-/* If ADDR is within TABLE, set FUNCTIONNAME_PTR, and return true. */
+/* If ADDR is within TABLE, set FUNCTIONNAME_PTR, and return true. */
static boolean
-lookup_address_in_function_table (table,
+lookup_address_in_function_table (table,
addr,
functionname_ptr)
struct funcinfo* table;
@@ -1107,18 +1112,14 @@ lookup_address_in_function_table (table,
return true;
}
}
-
+
return false;
}
-
-
-
-/* DWARF2 Compilation unit functions. */
-
+/* DWARF2 Compilation unit functions. */
/* Scan over each die in a comp. unit looking for functions to add
- to the function table. */
+ to the function table. */
static boolean
scan_unit_for_functions (unit)
@@ -1144,16 +1145,16 @@ scan_unit_for_functions (unit)
nesting_level--;
continue;
}
-
+
abbrev = lookup_abbrev (abbrev_number,unit->abbrevs);
if (! abbrev)
{
- (*_bfd_error_handler) (_("Dwarf Error: Could not find abbrev number %d."),
+ (*_bfd_error_handler) (_("Dwarf Error: Could not find abbrev number %d."),
abbrev_number);
bfd_set_error (bfd_error_bad_value);
return false;
}
-
+
if (abbrev->tag == DW_TAG_subprogram)
{
func = (struct funcinfo*) bfd_zalloc (abfd, sizeof (struct funcinfo));
@@ -1162,24 +1163,24 @@ scan_unit_for_functions (unit)
}
else
func = NULL;
-
+
for (i = 0; i < abbrev->num_attrs; ++i)
{
info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, info_ptr);
-
+
if (func)
{
switch (attr.name)
{
case DW_AT_name:
-
+
name = DW_STRING (&attr);
/* Prefer DW_AT_MIPS_linkage_name over DW_AT_name. */
if (func->name == NULL)
func->name = DW_STRING (&attr);
break;
-
+
case DW_AT_MIPS_linkage_name:
func->name = DW_STRING (&attr);
break;
@@ -1203,7 +1204,7 @@ scan_unit_for_functions (unit)
case DW_AT_name:
name = DW_STRING (&attr);
break;
-
+
default:
break;
}
@@ -1217,11 +1218,6 @@ scan_unit_for_functions (unit)
return true;
}
-
-
-
-
-
/* Parse a DWARF2 compilation unit starting at INFO_PTR. This
includes the compilation unit header that proceeds the DIE's, but
does not include the length field that preceeds each compilation
@@ -1233,10 +1229,10 @@ scan_unit_for_functions (unit)
to get to the line number information for the compilation unit. */
static struct comp_unit *
-parse_comp_unit (abfd, info_ptr, end_ptr, abbrev_length)
+parse_comp_unit (abfd, stash, unit_length, abbrev_length)
bfd* abfd;
- char* info_ptr;
- char* end_ptr;
+ struct dwarf2_debug *stash;
+ bfd_vma unit_length;
unsigned int abbrev_length;
{
struct comp_unit* unit;
@@ -1250,6 +1246,9 @@ parse_comp_unit (abfd, info_ptr, end_ptr, abbrev_length)
struct abbrev_info *abbrev;
struct attribute attr;
+ char *info_ptr = stash->info_ptr;
+ char *end_ptr = info_ptr + unit_length;
+
version = read_2_bytes (abfd, info_ptr);
info_ptr += 2;
BFD_ASSERT (abbrev_length == 0
@@ -1286,8 +1285,8 @@ parse_comp_unit (abfd, info_ptr, end_ptr, abbrev_length)
return 0;
}
- /* Read the abbrevs for this compilation unit into a table */
- abbrevs = read_abbrevs (abfd, abbrev_offset);
+ /* Read the abbrevs for this compilation unit into a table. */
+ abbrevs = read_abbrevs (abfd, abbrev_offset, stash);
if (! abbrevs)
return 0;
@@ -1309,10 +1308,10 @@ parse_comp_unit (abfd, info_ptr, end_ptr, abbrev_length)
bfd_set_error (bfd_error_bad_value);
return 0;
}
-
+
unit = (struct comp_unit*) bfd_zalloc (abfd, sizeof (struct comp_unit));
unit->abfd = abfd;
- unit->addr_size = addr_size;
+ unit->addr_size = addr_size;
unit->abbrevs = abbrevs;
unit->end_ptr = end_ptr;
@@ -1366,11 +1365,7 @@ parse_comp_unit (abfd, info_ptr, end_ptr, abbrev_length)
return unit;
}
-
-
-
-
-/* Return true if UNIT contains the address given by ADDR. */
+/* Return true if UNIT contains the address given by ADDR. */
static boolean
comp_unit_contains_address (unit, addr)
@@ -1390,30 +1385,32 @@ comp_unit_contains_address (unit, addr)
arange = arange->next;
}
while (arange);
+
return 0;
}
-
/* If UNIT contains ADDR, set the output parameters to the values for
the line containing ADDR. The output parameters, FILENAME_PTR,
FUNCTIONNAME_PTR, and LINENUMBER_PTR, are pointers to the objects
- to be filled in.
+ to be filled in.
Return true of UNIT contains ADDR, and no errors were encountered;
false otherwise. */
static boolean
comp_unit_find_nearest_line (unit, addr,
- filename_ptr, functionname_ptr, linenumber_ptr)
+ filename_ptr, functionname_ptr, linenumber_ptr,
+ stash)
struct comp_unit* unit;
bfd_vma addr;
const char **filename_ptr;
const char **functionname_ptr;
unsigned int *linenumber_ptr;
+ struct dwarf2_debug *stash;
{
boolean line_p;
boolean func_p;
-
+
if (unit->error)
return false;
@@ -1424,15 +1421,15 @@ comp_unit_find_nearest_line (unit, addr,
unit->error = 1;
return false;
}
-
- unit->line_table = decode_line_info (unit);
+
+ unit->line_table = decode_line_info (unit, stash);
if (! unit->line_table)
{
unit->error = 1;
return false;
}
-
+
if (! scan_unit_for_functions (unit))
{
unit->error = 1;
@@ -1442,14 +1439,51 @@ comp_unit_find_nearest_line (unit, addr,
line_p = lookup_address_in_line_info_table (unit->line_table,
addr,
- filename_ptr,
+ filename_ptr,
linenumber_ptr);
- func_p = lookup_address_in_function_table (unit->function_table,
+ func_p = lookup_address_in_function_table (unit->function_table,
addr,
functionname_ptr);
return line_p || func_p;
}
+/* Locate a section in a BFD containing debugging info. The search starts from the
+ section after AFTER_SEC, or from the first section in the BFD if AFTER_SEC is
+ NULL. The search works by examining the names of the sections. There are two
+ permissiable names. The first is .debug_info. This is the standard DWARF2 name.
+ The second is a prefix .gnu.linkonce.wi. This is a variation on the .debug_info
+ section which has a checksum describing the contents appended onto the name. This
+ allows the linker to identify and discard duplicate debugging sections for
+ different compilation units. */
+#define DWARF2_DEBUG_INFO ".debug_info"
+#define GNU_LINKONCE_INFO ".gnu.linkonce.wi."
+
+static asection *
+find_debug_info (abfd, after_sec)
+ bfd * abfd;
+ asection * after_sec;
+{
+ asection * msec;
+
+ if (after_sec)
+ msec = after_sec->next;
+ else
+ msec = abfd->sections;
+
+ while (msec)
+ {
+ if (strcmp (msec->name, DWARF2_DEBUG_INFO) == 0)
+ return msec;
+
+ if (strncmp (msec->name, GNU_LINKONCE_INFO, strlen (GNU_LINKONCE_INFO)) == 0)
+ return msec;
+
+ msec = msec->next;
+ }
+
+ return NULL;
+}
+
/* The DWARF2 version of find_nearest line. Return true if the line
is found without error. ADDR_SIZE is the number of bytes in the
initial .debug_info length field and in the abbreviation offset.
@@ -1460,7 +1494,7 @@ boolean
_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
filename_ptr, functionname_ptr,
linenumber_ptr,
- addr_size)
+ addr_size, pinfo)
bfd *abfd;
asection *section;
asymbol **symbols ATTRIBUTE_UNUSED;
@@ -1469,24 +1503,23 @@ _bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
const char **functionname_ptr;
unsigned int *linenumber_ptr;
unsigned int addr_size;
+ PTR *pinfo;
{
/* Read each compilation unit from the section .debug_info, and check
to see if it contains the address we are searching for. If yes,
lookup the address, and return the line number info. If no, go
- on to the next compilation unit.
+ on to the next compilation unit.
We keep a list of all the previously read compilation units, and
- a pointer to the next un-read compilation unit. Check the
- previously read units before reading more.
- */
+ a pointer to the next un-read compilation unit. Check the
+ previously read units before reading more. */
+ struct dwarf2_debug *stash = (struct dwarf2_debug *) *pinfo;
- struct dwarf2_debug *stash = elf_tdata (abfd)->dwarf2_find_line_info;
-
- /* What address are we looking for? */
+ /* What address are we looking for? */
bfd_vma addr = offset + section->vma;
struct comp_unit* each;
-
+
*filename_ptr = NULL;
*functionname_ptr = NULL;
*linenumber_ptr = 0;
@@ -1497,74 +1530,90 @@ _bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
if (addr_size == 0)
addr_size = 4;
BFD_ASSERT (addr_size == 4 || addr_size == 8);
-
+
if (! stash)
{
+ unsigned long total_size;
asection *msec;
- unsigned long size;
-
- stash = elf_tdata (abfd)->dwarf2_find_line_info =
+
+ stash =
(struct dwarf2_debug*) bfd_zalloc (abfd, sizeof (struct dwarf2_debug));
-
if (! stash)
return false;
-
- msec = bfd_get_section_by_name (abfd, ".debug_info");
- if (! msec)
- {
- /* No dwarf2 info. Note that at this point the stash
- has been allocated, but contains zeros, this lets
- future calls to this function fail quicker. */
- return false;
- }
- size = msec->_raw_size;
- if (size == 0)
- return false;
-
- stash->info_ptr = (char *) bfd_alloc (abfd, size);
-
- if (! stash->info_ptr)
+ *pinfo = (PTR) stash;
+
+ msec = find_debug_info (abfd, NULL);
+ if (! msec)
+ /* No dwarf2 info. Note that at this point the stash
+ has been allocated, but contains zeros, this lets
+ future calls to this function fail quicker. */
+ return false;
+
+ /* There can be more than one DWARF2 info section in a BFD these days.
+ Read them all in and produce one large stash. We do this in two
+ passes - in the first pass we just accumulate the section sizes.
+ In the second pass we read in the section's contents. The allows
+ us to avoid reallocing the data as we add sections to the stash. */
+ for (total_size = 0; msec; msec = find_debug_info (abfd, msec))
+ total_size += msec->_raw_size;
+
+ stash->info_ptr = (char *) bfd_alloc (abfd, total_size);
+ if (stash->info_ptr == NULL)
return false;
- if (! bfd_get_section_contents (abfd, msec, stash->info_ptr, 0, size))
+ stash->info_ptr_end = stash->info_ptr;
+
+ for (msec = find_debug_info (abfd, NULL);
+ msec;
+ msec = find_debug_info (abfd, msec))
{
- stash->info_ptr = 0;
- return false;
+ unsigned long size;
+ unsigned long start;
+
+ size = msec->_raw_size;
+ if (size == 0)
+ continue;
+
+ start = stash->info_ptr_end - stash->info_ptr;
+
+ if (! bfd_get_section_contents (abfd, msec, stash->info_ptr + start, 0, size))
+ continue;
+
+ stash->info_ptr_end = stash->info_ptr + start + size;
}
- stash->info_ptr_end = stash->info_ptr + size;
-
- /* FIXME: There is a problem with the contents of the
- .debug_info section. The 'low' and 'high' addresses of the
- comp_units are computed by relocs against symbols in the
- .text segment. We need these addresses in order to determine
- the nearest line number, and so we have to resolve the
- relocs. There is a similar problem when the .debug_line
- section is processed as well (e.g., there may be relocs
- against the operand of the DW_LNE_set_address operator).
-
- Unfortunately getting hold of the reloc information is hard...
-
- For now, this means that disassembling object files (as
- opposed to fully executables) does not always work as well as
- we would like. */
+ BFD_ASSERT (stash->info_ptr_end = stash->info_ptr + total_size);
}
-
- /* A null info_ptr indicates that there is no dwarf2 info
- (or that an error occured while setting up the stash). */
+ /* FIXME: There is a problem with the contents of the
+ .debug_info section. The 'low' and 'high' addresses of the
+ comp_units are computed by relocs against symbols in the
+ .text segment. We need these addresses in order to determine
+ the nearest line number, and so we have to resolve the
+ relocs. There is a similar problem when the .debug_line
+ section is processed as well (e.g., there may be relocs
+ against the operand of the DW_LNE_set_address operator).
+
+ Unfortunately getting hold of the reloc information is hard...
+
+ For now, this means that disassembling object files (as
+ opposed to fully executables) does not always work as well as
+ we would like. */
+
+ /* A null info_ptr indicates that there is no dwarf2 info
+ (or that an error occured while setting up the stash). */
if (! stash->info_ptr)
return false;
- /* Check the previously read comp. units first. */
-
+ /* Check the previously read comp. units first. */
for (each = stash->all_comp_units; each; each = each->next_unit)
if (comp_unit_contains_address (each, addr))
- return comp_unit_find_nearest_line (each, addr, filename_ptr,
- functionname_ptr, linenumber_ptr);
+ return comp_unit_find_nearest_line (each, addr, filename_ptr,
+ functionname_ptr, linenumber_ptr,
+ stash);
- /* Read each remaining comp. units checking each as they are read. */
+ /* Read each remaining comp. units checking each as they are read. */
while (stash->info_ptr < stash->info_ptr_end)
{
struct comp_unit* each;
@@ -1579,9 +1628,7 @@ _bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
if (length > 0)
{
- each = parse_comp_unit (abfd, stash->info_ptr,
- stash->info_ptr + length,
- addr_size);
+ each = parse_comp_unit (abfd, stash, length, addr_size);
stash->info_ptr += length;
if (each)
@@ -1593,21 +1640,23 @@ _bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
compilation units. If we don't have them (i.e.,
unit->high == 0), we need to consult the line info
table to see if a compilation unit contains the given
- address. */
+ address. */
if (each->arange.high > 0)
{
if (comp_unit_contains_address (each, addr))
return comp_unit_find_nearest_line (each, addr,
filename_ptr,
functionname_ptr,
- linenumber_ptr);
+ linenumber_ptr,
+ stash);
}
else
{
found = comp_unit_find_nearest_line (each, addr,
filename_ptr,
functionname_ptr,
- linenumber_ptr);
+ linenumber_ptr,
+ stash);
if (found)
return true;
}
@@ -1617,5 +1666,3 @@ _bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
return false;
}
-
-/* end of file */
diff --git a/contrib/binutils/bfd/ecoff.c b/contrib/binutils/bfd/ecoff.c
index 4b136ee..f22112b 100644
--- a/contrib/binutils/bfd/ecoff.c
+++ b/contrib/binutils/bfd/ecoff.c
@@ -1,5 +1,5 @@
/* Generic ECOFF (Extended-COFF) routines.
- Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
Original version by Per Bothner.
Full support added by Ian Lance Taylor, ian@cygnus.com.
@@ -344,9 +344,9 @@ ecoff_sec_to_styp_flags (name, flags)
}
else if (strcmp (name, _RCONST) == 0)
styp = STYP_RCONST;
- else if (flags & SEC_CODE)
+ else if (flags & SEC_CODE)
styp = STYP_TEXT;
- else if (flags & SEC_DATA)
+ else if (flags & SEC_DATA)
styp = STYP_DATA;
else if (flags & SEC_READONLY)
styp = STYP_RDATA;
@@ -363,7 +363,6 @@ ecoff_sec_to_styp_flags (name, flags)
/* Get the BFD flags to use for a section. */
-/*ARGSUSED*/
flagword
_bfd_ecoff_styp_to_sec_flags (abfd, hdr, name, section)
bfd *abfd ATTRIBUTE_UNUSED;
@@ -452,7 +451,7 @@ ecoff_slurp_symbolic_header (abfd)
HDRR *internal_symhdr;
/* See if we've already read it in. */
- if (ecoff_data (abfd)->debug_info.symbolic_header.magic ==
+ if (ecoff_data (abfd)->debug_info.symbolic_header.magic ==
backend->debug_swap.sym_magic)
return true;
@@ -509,7 +508,6 @@ ecoff_slurp_symbolic_header (abfd)
object file. This is called by gdb via the read_debug_info entry
point in the backend structure. */
-/*ARGSUSED*/
boolean
_bfd_ecoff_slurp_symbolic_info (abfd, ignore, debug)
bfd *abfd;
@@ -1090,7 +1088,7 @@ ecoff_emit_aggregate (abfd, fdr, string, rndx, isym, which)
unsigned int ifd = rndx->rfd;
unsigned int indx = rndx->index;
const char *name;
-
+
if (ifd == 0xfff)
ifd = isym;
@@ -1340,7 +1338,6 @@ ecoff_type_to_string (abfd, fdr, indx)
p1 += strlen (buffer1);
}
-
/*
* Deal with any qualifiers.
*/
@@ -1406,7 +1403,7 @@ ecoff_type_to_string (abfd, fdr, indx)
int j;
/* Print array bounds reversed (ie, in the order the C
- programmer writes them). C is such a fun language.... */
+ programmer writes them). C is such a fun language.... */
while (i < 5 && qualifiers[i+1].type == tqArray)
i++;
@@ -1447,7 +1444,6 @@ ecoff_type_to_string (abfd, fdr, indx)
/* Return information about ECOFF symbol SYMBOL in RET. */
-/*ARGSUSED*/
void
_bfd_ecoff_get_symbol_info (abfd, symbol, ret)
bfd *abfd ATTRIBUTE_UNUSED;
@@ -1459,7 +1455,6 @@ _bfd_ecoff_get_symbol_info (abfd, symbol, ret)
/* Return whether this is a local label. */
-/*ARGSUSED*/
boolean
_bfd_ecoff_bfd_is_local_label_name (abfd, name)
bfd *abfd ATTRIBUTE_UNUSED;
@@ -1490,7 +1485,7 @@ _bfd_ecoff_print_symbol (abfd, filep, symbol, how)
if (ecoffsymbol (symbol)->local)
{
SYMR ecoff_sym;
-
+
(*debug_swap->swap_sym_in) (abfd, ecoffsymbol (symbol)->native,
&ecoff_sym);
fprintf (file, "ecoff local ");
@@ -1604,7 +1599,7 @@ _bfd_ecoff_print_symbol (abfd, filep, symbol, how)
fprintf (file, _("\n First symbol: %ld"),
(long) (indx + sym_base));
else
- fprintf (file, _("\n First symbol: %ld"),
+ fprintf (file, _("\n First symbol: %ld"),
((long)
(AUX_GET_ISYM (bigendian,
&aux_base[ecoff_ext.asym.index])
@@ -1680,7 +1675,7 @@ ecoff_slurp_reloc_table (abfd, section, symbols)
if (_bfd_ecoff_slurp_symbol_table (abfd) == false)
return false;
-
+
internal_relocs = (arelent *) bfd_alloc (abfd,
(sizeof (arelent)
* section->reloc_count));
@@ -1778,7 +1773,7 @@ _bfd_ecoff_canonicalize_reloc (abfd, section, relptr, symbols)
{
unsigned int count;
- if (section->flags & SEC_CONSTRUCTOR)
+ if (section->flags & SEC_CONSTRUCTOR)
{
arelent_chain *chain;
@@ -1791,7 +1786,7 @@ _bfd_ecoff_canonicalize_reloc (abfd, section, relptr, symbols)
*relptr++ = &chain->relent;
}
else
- {
+ {
arelent *tblptr;
if (ecoff_slurp_reloc_table (abfd, section, symbols) == false)
@@ -1812,7 +1807,6 @@ _bfd_ecoff_canonicalize_reloc (abfd, section, relptr, symbols)
and return the name of the source file and the line nearest to the
wanted location. */
-/*ARGSUSED*/
boolean
_bfd_ecoff_find_nearest_line (abfd, section, ignore_symbols, offset,
filename_ptr, functionname_ptr, retline_ptr)
@@ -1984,7 +1978,6 @@ _bfd_ecoff_set_arch_mach (abfd, arch, machine)
/* Get the size of the section headers. */
-/*ARGSUSED*/
int
_bfd_ecoff_sizeof_headers (abfd, reloc)
bfd *abfd;
@@ -1996,8 +1989,8 @@ _bfd_ecoff_sizeof_headers (abfd, reloc)
c = 0;
for (current = abfd->sections;
- current != (asection *)NULL;
- current = current->next)
+ current != (asection *)NULL;
+ current = current->next)
++c;
ret = (bfd_coff_filhsz (abfd)
@@ -2218,13 +2211,13 @@ ecoff_compute_reloc_file_positions (abfd)
abort ();
abfd->output_has_begun = true;
}
-
+
reloc_base = ecoff_data (abfd)->reloc_filepos;
reloc_size = 0;
for (current = abfd->sections;
- current != (asection *)NULL;
- current = current->next)
+ current != (asection *)NULL;
+ current = current->next)
{
if (current->reloc_count == 0)
current->rel_filepos = 0;
@@ -2312,7 +2305,7 @@ bfd_ecoff_get_gp_value (abfd)
bfd_set_error (bfd_error_invalid_operation);
return 0;
}
-
+
return ecoff_data (abfd)->gp;
}
@@ -2491,8 +2484,8 @@ _bfd_ecoff_write_object_contents (abfd)
count = 1;
for (current = abfd->sections;
- current != (asection *)NULL;
- current = current->next)
+ current != (asection *)NULL;
+ current = current->next)
{
current->target_index = count;
++count;
@@ -2630,7 +2623,7 @@ _bfd_ecoff_write_object_contents (abfd)
/* Do nothing */ ;
else
abort ();
- }
+ }
/* Set up the file header. */
@@ -2782,7 +2775,7 @@ _bfd_ecoff_write_object_contents (abfd)
arelent *reloc;
asymbol *sym;
struct internal_reloc in;
-
+
memset ((PTR) &in, 0, sizeof in);
reloc = *reloc_ptr_ptr;
@@ -2982,7 +2975,7 @@ _bfd_ecoff_slurp_armap (abfd)
char *raw_ptr;
struct symdef *symdef_ptr;
char *stringbase;
-
+
/* Get the name of the first element. */
i = bfd_read ((PTR) nextname, 1, 16, abfd);
if (i == 0)
@@ -3034,11 +3027,11 @@ _bfd_ecoff_slurp_armap (abfd)
return false;
parsed_size = mapdata->parsed_size;
bfd_release (abfd, (PTR) mapdata);
-
+
raw_armap = (char *) bfd_alloc (abfd, parsed_size);
if (raw_armap == (char *) NULL)
return false;
-
+
if (bfd_read ((PTR) raw_armap, 1, parsed_size, abfd) != parsed_size)
{
if (bfd_get_error () != bfd_error_system_call)
@@ -3046,7 +3039,7 @@ _bfd_ecoff_slurp_armap (abfd)
bfd_release (abfd, (PTR) raw_armap);
return false;
}
-
+
ardata->tdata = (PTR) raw_armap;
count = bfd_h_get_32 (abfd, (PTR) raw_armap);
@@ -3075,7 +3068,7 @@ _bfd_ecoff_slurp_armap (abfd)
{
unsigned int name_offset, file_offset;
unsigned int hash, rehash, srch;
-
+
name_offset = bfd_h_get_32 (abfd, (PTR) raw_ptr);
file_offset = bfd_h_get_32 (abfd, (PTR) (raw_ptr + 4));
if (file_offset == 0)
@@ -3167,7 +3160,7 @@ _bfd_ecoff_write_armap (abfd, elength, map, orl_count, stridx)
padit = stridx % 2;
stringsize = stridx + padit;
- /* Include 8 bytes to store symdefsize and stringsize in output. */
+ /* Include 8 bytes to store symdefsize and stringsize in output. */
mapsize = symdefsize + stringsize + 8;
firstreal = SARMAG + sizeof (struct ar_hdr) + mapsize + elength;
@@ -3201,7 +3194,7 @@ _bfd_ecoff_write_armap (abfd, elength, map, orl_count, stridx)
#if 0
hdr.ar_mode[0] = '0';
#else
- /* Building gcc ends up extracting the armap as a file - twice. */
+ /* Building gcc ends up extracting the armap as a file - twice. */
hdr.ar_mode[0] = '6';
hdr.ar_mode[1] = '4';
hdr.ar_mode[2] = '4';
@@ -3214,8 +3207,8 @@ _bfd_ecoff_write_armap (abfd, elength, map, orl_count, stridx)
/* Turn all null bytes in the header into spaces. */
for (i = 0; i < sizeof (struct ar_hdr); i++)
- if (((char *)(&hdr))[i] == '\0')
- (((char *)(&hdr))[i]) = ' ';
+ if (((char *) (&hdr))[i] == '\0')
+ (((char *) (&hdr))[i]) = ' ';
if (bfd_write ((PTR) &hdr, 1, sizeof (struct ar_hdr), abfd)
!= sizeof (struct ar_hdr))
@@ -3224,7 +3217,7 @@ _bfd_ecoff_write_armap (abfd, elength, map, orl_count, stridx)
bfd_h_put_32 (abfd, (bfd_vma) hashsize, temp);
if (bfd_write ((PTR) temp, 1, 4, abfd) != 4)
return false;
-
+
hashtable = (bfd_byte *) bfd_zalloc (abfd, symdefsize);
if (!hashtable)
return false;
@@ -3266,7 +3259,7 @@ _bfd_ecoff_write_armap (abfd, elength, map, orl_count, stridx)
hash = srch;
}
-
+
bfd_h_put_32 (abfd, (bfd_vma) map[i].namidx,
(PTR) (hashtable + hash * 8));
bfd_h_put_32 (abfd, (bfd_vma) firstreal,
@@ -3345,7 +3338,7 @@ _bfd_ecoff_archive_p (abfd)
bfd_ardata (abfd)->symdefs = NULL;
bfd_ardata (abfd)->extended_names = NULL;
bfd_ardata (abfd)->tdata = NULL;
-
+
if (_bfd_ecoff_slurp_armap (abfd) == false
|| _bfd_ecoff_slurp_extended_name_table (abfd) == false)
{
@@ -3353,7 +3346,7 @@ _bfd_ecoff_archive_p (abfd)
abfd->tdata.aout_ar_data = tdata_hold;
return (const bfd_target *) NULL;
}
-
+
if (bfd_has_map (abfd))
{
bfd *first;
@@ -4391,7 +4384,7 @@ ecoff_link_write_external (h, data)
bfd *output_bfd = einfo->abfd;
boolean strip;
- /* We need to check if this symbol is being stripped. */
+ /* We need to check if this symbol is being stripped. */
if (h->root.type == bfd_link_hash_undefined
|| h->root.type == bfd_link_hash_undefweak)
strip = false;
@@ -4427,7 +4420,7 @@ ecoff_link_write_external (h, data)
output_section = h->root.u.def.section->output_section;
name = bfd_section_name (output_section->owner, output_section);
-
+
if (strcmp (name, _TEXT) == 0)
h->esym.asym.sc = scText;
else if (strcmp (name, _DATA) == 0)
diff --git a/contrib/binutils/bfd/ecofflink.c b/contrib/binutils/bfd/ecofflink.c
index 25fc966..9b2e0f5 100644
--- a/contrib/binutils/bfd/ecofflink.c
+++ b/contrib/binutils/bfd/ecofflink.c
@@ -1,5 +1,5 @@
/* Routines to link ECOFF debugging information.
- Copyright 1993, 94, 95, 96, 97, 1999 Free Software Foundation, Inc.
+ Copyright 1993, 94, 95, 96, 97, 99, 2000 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support, <ian@cygnus.com>.
This file is part of BFD, the Binary File Descriptor library.
@@ -69,8 +69,8 @@ _bfd_ecoff_swap_tir_in (bigend, ext_copy, intern)
struct tir_ext ext[1];
*ext = *ext_copy; /* Make it reasonable to do in-place. */
-
- /* now the fun stuff... */
+
+ /* now the fun stuff... */
if (bigend) {
intern->fBitfield = 0 != (ext->t_bits1[0] & TIR_BITS1_FBITFIELD_BIG);
intern->continued = 0 != (ext->t_bits1[0] & TIR_BITS1_CONTINUED_BIG);
@@ -109,7 +109,7 @@ _bfd_ecoff_swap_tir_in (bigend, ext_copy, intern)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -126,8 +126,8 @@ _bfd_ecoff_swap_tir_out (bigend, intern_copy, ext)
TIR intern[1];
*intern = *intern_copy; /* Make it reasonable to do in-place. */
-
- /* now the fun stuff... */
+
+ /* now the fun stuff... */
if (bigend) {
ext->t_bits1[0] = ((intern->fBitfield ? TIR_BITS1_FBITFIELD_BIG : 0)
| (intern->continued ? TIR_BITS1_CONTINUED_BIG : 0)
@@ -166,7 +166,7 @@ _bfd_ecoff_swap_tir_out (bigend, intern_copy, ext)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -182,8 +182,8 @@ _bfd_ecoff_swap_rndx_in (bigend, ext_copy, intern)
struct rndx_ext ext[1];
*ext = *ext_copy; /* Make it reasonable to do in-place. */
-
- /* now the fun stuff... */
+
+ /* now the fun stuff... */
if (bigend) {
intern->rfd = (ext->r_bits[0] << RNDX_BITS0_RFD_SH_LEFT_BIG)
| ((ext->r_bits[1] & RNDX_BITS1_RFD_BIG)
@@ -205,7 +205,7 @@ _bfd_ecoff_swap_rndx_in (bigend, ext_copy, intern)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -221,8 +221,8 @@ _bfd_ecoff_swap_rndx_out (bigend, intern_copy, ext)
RNDXR intern[1];
*intern = *intern_copy; /* Make it reasonable to do in-place. */
-
- /* now the fun stuff... */
+
+ /* now the fun stuff... */
if (bigend) {
ext->r_bits[0] = intern->rfd >> RNDX_BITS0_RFD_SH_LEFT_BIG;
ext->r_bits[1] = (((intern->rfd << RNDX_BITS1_RFD_SH_BIG)
@@ -243,7 +243,7 @@ _bfd_ecoff_swap_rndx_out (bigend, intern_copy, ext)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -465,7 +465,7 @@ add_memory_shuffle (ainfo, head, tail, data, size)
unsigned long size;
{
struct shuffle *n;
-
+
n = (struct shuffle *) objalloc_alloc (ainfo->memory,
sizeof (struct shuffle));
if (!n)
@@ -488,7 +488,6 @@ add_memory_shuffle (ainfo, head, tail, data, size)
/* Initialize the FDR hash table. This returns a handle which is then
passed in to bfd_ecoff_debug_accumulate, et. al. */
-/*ARGSUSED*/
PTR
bfd_ecoff_debug_init (output_bfd, output_debug, output_swap, info)
bfd *output_bfd ATTRIBUTE_UNUSED;
@@ -547,7 +546,6 @@ bfd_ecoff_debug_init (output_bfd, output_debug, output_swap, info)
/* Free the accumulated debugging information. */
-/*ARGSUSED*/
void
bfd_ecoff_debug_free (handle, output_bfd, output_debug, output_swap, info)
PTR handle;
@@ -557,7 +555,7 @@ bfd_ecoff_debug_free (handle, output_bfd, output_debug, output_swap, info)
struct bfd_link_info *info;
{
struct accumulate *ainfo = (struct accumulate *) handle;
-
+
bfd_hash_table_free (&ainfo->fdr_hash.table);
if (! info->relocateable)
@@ -576,7 +574,6 @@ bfd_ecoff_debug_free (handle, output_bfd, output_debug, output_swap, info)
linker information structure. HANDLE is returned by
bfd_ecoff_debug_init. */
-/*ARGSUSED*/
boolean
bfd_ecoff_debug_accumulate (handle, output_bfd, output_debug, output_swap,
input_bfd, input_debug, input_swap,
@@ -1409,7 +1406,6 @@ bfd_ecoff_debug_one_external (abfd, debug, swap, name, esym)
/* Align the ECOFF debugging information. */
-/*ARGSUSED*/
static void
ecoff_align_debug (abfd, debug, swap)
bfd *abfd ATTRIBUTE_UNUSED;
@@ -1967,9 +1963,9 @@ lookup_line (abfd, debug_info, debug_swap, line_info)
boolean stabs;
FDR *fdr_ptr;
int i;
-
+
offset = line_info->cache.start;
-
+
/* Build FDR table (sorted by object file's base-address) if we
don't have it already. */
if (line_info->fdrtab == NULL
@@ -1981,7 +1977,7 @@ lookup_line (abfd, debug_info, debug_swap, line_info)
/* find first FDR for address OFFSET */
i = fdrtab_lookup (line_info, offset);
if (i < 0)
- return false; /* no FDR, no fun... */
+ return false; /* no FDR, no fun... */
fdr_ptr = tab[i].fdr;
/* Check whether this file has stabs debugging information. In a
@@ -2046,9 +2042,9 @@ lookup_line (abfd, debug_info, debug_swap, line_info)
malloc.c. I'm not sure why this happens, but it could
be due to optimizations that reorder a function's
position within an object-file.
-
+
Strategy:
-
+
On the first call to this function, we build a table of FDRs
that is sorted by the base-address of the object-file the FDR
is referring to. Notice that each object-file may contain
@@ -2079,9 +2075,9 @@ lookup_line (abfd, debug_info, debug_swap, line_info)
bfd_vma dist, min_dist = 0;
char *pdr_hold;
char *pdr_end;
-
+
fdr_ptr = tab[i].fdr;
-
+
pdr_ptr = ((char *) debug_info->external_pdr
+ fdr_ptr->ipdFirst * external_pdr_size);
pdr_end = pdr_ptr + fdr_ptr->cpd * external_pdr_size;
@@ -2106,7 +2102,7 @@ lookup_line (abfd, debug_info, debug_swap, line_info)
}
}
}
-
+
if (!best_pdr || min_dist < best_dist)
{
best_dist = min_dist;
@@ -2119,7 +2115,7 @@ lookup_line (abfd, debug_info, debug_swap, line_info)
&& tab[i].base_addr == tab[i - 1].base_addr);
if (!best_fdr || !best_pdr)
- return false; /* shouldn't happen... */
+ return false; /* shouldn't happen... */
/* phew, finally we got something that we can hold onto: */
fdr_ptr = best_fdr;
diff --git a/contrib/binutils/bfd/ecoffswap.h b/contrib/binutils/bfd/ecoffswap.h
index 0d28d16..70d548d 100644
--- a/contrib/binutils/bfd/ecoffswap.h
+++ b/contrib/binutils/bfd/ecoffswap.h
@@ -1,5 +1,5 @@
/* Generic ECOFF swapping routines, for BFD.
- Copyright 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
+ Copyright 1992, 1993, 1994, 1995, 1996, 2000 Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
@@ -27,10 +27,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
on them in gdb by naming the including source file; e.g.,
'coff-mips.c':ecoff_swap_hdr_in.
- Before including this header file, one of ECOFF_32 or ECOFF_64 must
- be defined. These are checked when swapping information that
- depends upon the target size. This code works for 32 bit and 64
- bit ECOFF, but may need to be generalized in the future.
+ Before including this header file, one of ECOFF_32, ECOFF_64,
+ ECOFF_SIGNED_32 or ECOFF_SIGNED_64 must be defined. These are
+ checked when swapping information that depends upon the target
+ size. This code works for 32 bit and 64 bit ECOFF, but may need to
+ be generalized in the future.
Some header file which defines the external forms of these
structures must also be included before including this header file.
@@ -50,6 +51,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ecoff_get_off bfd_h_get_64
#define ecoff_put_off bfd_h_put_64
#endif
+#ifdef ECOFF_SIGNED_32
+#define ecoff_get_off bfd_h_get_signed_32
+#define ecoff_put_off bfd_h_put_signed_32
+#endif
+#ifdef ECOFF_SIGNED_64
+#define ecoff_get_off bfd_h_get_signed_64
+#define ecoff_put_off bfd_h_put_signed_64
+#endif
/* ECOFF auxiliary information swapping routines. These are the same
for all ECOFF targets, so they are defined in ecofflink.c. */
@@ -122,7 +131,7 @@ ecoff_swap_hdr_in (abfd, ext_copy, intern)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -167,7 +176,7 @@ ecoff_swap_hdr_out (abfd, intern_copy, ext_ptr)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -182,10 +191,10 @@ ecoff_swap_fdr_in (abfd, ext_copy, intern)
struct fdr_ext ext[1];
*ext = *(struct fdr_ext *) ext_copy;
-
+
intern->adr = ecoff_get_off (abfd, (bfd_byte *)ext->f_adr);
intern->rss = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_rss);
-#ifdef ECOFF_64
+#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
if (intern->rss == 0xffffffff)
intern->rss = -1;
#endif
@@ -197,11 +206,11 @@ ecoff_swap_fdr_in (abfd, ext_copy, intern)
intern->cline = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_cline);
intern->ioptBase = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_ioptBase);
intern->copt = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_copt);
-#ifdef ECOFF_32
+#if defined (ECOFF_32) || defined (ECOFF_SIGNED_32)
intern->ipdFirst = bfd_h_get_16 (abfd, (bfd_byte *)ext->f_ipdFirst);
intern->cpd = bfd_h_get_16 (abfd, (bfd_byte *)ext->f_cpd);
#endif
-#ifdef ECOFF_64
+#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
intern->ipdFirst = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_ipdFirst);
intern->cpd = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_cpd);
#endif
@@ -210,7 +219,7 @@ ecoff_swap_fdr_in (abfd, ext_copy, intern)
intern->rfdBase = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_rfdBase);
intern->crfd = bfd_h_get_32 (abfd, (bfd_byte *)ext->f_crfd);
- /* now the fun stuff... */
+ /* now the fun stuff... */
if (bfd_header_big_endian (abfd)) {
intern->lang = (ext->f_bits1[0] & FDR_BITS1_LANG_BIG)
>> FDR_BITS1_LANG_SH_BIG;
@@ -235,7 +244,7 @@ ecoff_swap_fdr_in (abfd, ext_copy, intern)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -251,7 +260,7 @@ ecoff_swap_fdr_out (abfd, intern_copy, ext_ptr)
FDR intern[1];
*intern = *intern_copy; /* Make it reasonable to do in-place. */
-
+
ecoff_put_off (abfd, intern->adr, (bfd_byte *)ext->f_adr);
bfd_h_put_32 (abfd, intern->rss, (bfd_byte *)ext->f_rss);
bfd_h_put_32 (abfd, intern->issBase, (bfd_byte *)ext->f_issBase);
@@ -262,11 +271,11 @@ ecoff_swap_fdr_out (abfd, intern_copy, ext_ptr)
bfd_h_put_32 (abfd, intern->cline, (bfd_byte *)ext->f_cline);
bfd_h_put_32 (abfd, intern->ioptBase, (bfd_byte *)ext->f_ioptBase);
bfd_h_put_32 (abfd, intern->copt, (bfd_byte *)ext->f_copt);
-#ifdef ECOFF_32
+#if defined (ECOFF_32) || defined (ECOFF_SIGNED_32)
bfd_h_put_16 (abfd, intern->ipdFirst, (bfd_byte *)ext->f_ipdFirst);
bfd_h_put_16 (abfd, intern->cpd, (bfd_byte *)ext->f_cpd);
#endif
-#ifdef ECOFF_64
+#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
bfd_h_put_32 (abfd, intern->ipdFirst, (bfd_byte *)ext->f_ipdFirst);
bfd_h_put_32 (abfd, intern->cpd, (bfd_byte *)ext->f_cpd);
#endif
@@ -275,7 +284,7 @@ ecoff_swap_fdr_out (abfd, intern_copy, ext_ptr)
bfd_h_put_32 (abfd, intern->rfdBase, (bfd_byte *)ext->f_rfdBase);
bfd_h_put_32 (abfd, intern->crfd, (bfd_byte *)ext->f_crfd);
- /* now the fun stuff... */
+ /* now the fun stuff... */
if (bfd_header_big_endian (abfd)) {
ext->f_bits1[0] = (((intern->lang << FDR_BITS1_LANG_SH_BIG)
& FDR_BITS1_LANG_BIG)
@@ -303,7 +312,7 @@ ecoff_swap_fdr_out (abfd, intern_copy, ext_ptr)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -341,7 +350,7 @@ ecoff_swap_pdr_in (abfd, ext_copy, intern)
intern->lnHigh = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_lnHigh);
intern->cbLineOffset = ecoff_get_off (abfd, (bfd_byte *)ext->p_cbLineOffset);
-#ifdef ECOFF_64
+#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
intern->gp_prologue = bfd_h_get_8 (abfd, (bfd_byte *) ext->p_gp_prologue);
if (bfd_header_big_endian (abfd))
{
@@ -364,11 +373,11 @@ ecoff_swap_pdr_in (abfd, ext_copy, intern)
<< PDR_BITS2_RESERVED_SH_LEFT_LITTLE));
}
intern->localoff = bfd_h_get_8 (abfd, (bfd_byte *) ext->p_localoff);
-#endif
+#endif
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -384,7 +393,7 @@ ecoff_swap_pdr_out (abfd, intern_copy, ext_ptr)
PDR intern[1];
*intern = *intern_copy; /* Make it reasonable to do in-place. */
-
+
ecoff_put_off (abfd, intern->adr, (bfd_byte *)ext->p_adr);
bfd_h_put_32 (abfd, intern->isym, (bfd_byte *)ext->p_isym);
bfd_h_put_32 (abfd, intern->iline, (bfd_byte *)ext->p_iline);
@@ -400,7 +409,7 @@ ecoff_swap_pdr_out (abfd, intern_copy, ext_ptr)
bfd_h_put_32 (abfd, intern->lnHigh, (bfd_byte *)ext->p_lnHigh);
ecoff_put_off (abfd, intern->cbLineOffset, (bfd_byte *)ext->p_cbLineOffset);
-#ifdef ECOFF_64
+#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
bfd_h_put_8 (abfd, intern->gp_prologue, (bfd_byte *) ext->p_gp_prologue);
if (bfd_header_big_endian (abfd))
{
@@ -425,17 +434,17 @@ ecoff_swap_pdr_out (abfd, intern_copy, ext_ptr)
& PDR_BITS2_RESERVED_LITTLE);
}
bfd_h_put_8 (abfd, intern->localoff, (bfd_byte *) ext->p_localoff);
-#endif
+#endif
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
#else /* MPW_C */
/* Same routines, but with ECOFF_64 code removed, so ^&%$#&! MPW C doesn't
- corrupt itself and then freak out. */
+ corrupt itself and then freak out. */
/* Swap in the procedure descriptor record. */
static void
@@ -447,7 +456,7 @@ ecoff_swap_pdr_in (abfd, ext_copy, intern)
struct pdr_ext ext[1];
*ext = *(struct pdr_ext *) ext_copy;
-
+
intern->adr = ecoff_get_off (abfd, (bfd_byte *)ext->p_adr);
intern->isym = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_isym);
intern->iline = bfd_h_get_32 (abfd, (bfd_byte *)ext->p_iline);
@@ -468,7 +477,7 @@ ecoff_swap_pdr_in (abfd, ext_copy, intern)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -484,7 +493,7 @@ ecoff_swap_pdr_out (abfd, intern_copy, ext_ptr)
PDR intern[1];
*intern = *intern_copy; /* Make it reasonable to do in-place. */
-
+
ecoff_put_off (abfd, intern->adr, (bfd_byte *)ext->p_adr);
bfd_h_put_32 (abfd, intern->isym, (bfd_byte *)ext->p_isym);
bfd_h_put_32 (abfd, intern->iline, (bfd_byte *)ext->p_iline);
@@ -502,7 +511,7 @@ ecoff_swap_pdr_out (abfd, intern_copy, ext_ptr)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
#endif /* MPW_C */
@@ -518,11 +527,11 @@ ecoff_swap_sym_in (abfd, ext_copy, intern)
struct sym_ext ext[1];
*ext = *(struct sym_ext *) ext_copy;
-
+
intern->iss = bfd_h_get_32 (abfd, (bfd_byte *)ext->s_iss);
intern->value = ecoff_get_off (abfd, (bfd_byte *)ext->s_value);
- /* now the fun stuff... */
+ /* now the fun stuff... */
if (bfd_header_big_endian (abfd)) {
intern->st = (ext->s_bits1[0] & SYM_BITS1_ST_BIG)
>> SYM_BITS1_ST_SH_BIG;
@@ -552,7 +561,7 @@ ecoff_swap_sym_in (abfd, ext_copy, intern)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -568,11 +577,11 @@ ecoff_swap_sym_out (abfd, intern_copy, ext_ptr)
SYMR intern[1];
*intern = *intern_copy; /* Make it reasonable to do in-place. */
-
+
bfd_h_put_32 (abfd, intern->iss, (bfd_byte *)ext->s_iss);
ecoff_put_off (abfd, intern->value, (bfd_byte *)ext->s_value);
- /* now the fun stuff... */
+ /* now the fun stuff... */
if (bfd_header_big_endian (abfd)) {
ext->s_bits1[0] = (((intern->st << SYM_BITS1_ST_SH_BIG)
& SYM_BITS1_ST_BIG)
@@ -601,7 +610,7 @@ ecoff_swap_sym_out (abfd, intern_copy, ext_ptr)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -616,8 +625,8 @@ ecoff_swap_ext_in (abfd, ext_copy, intern)
struct ext_ext ext[1];
*ext = *(struct ext_ext *) ext_copy;
-
- /* now the fun stuff... */
+
+ /* now the fun stuff... */
if (bfd_header_big_endian (abfd)) {
intern->jmptbl = 0 != (ext->es_bits1[0] & EXT_BITS1_JMPTBL_BIG);
intern->cobol_main = 0 != (ext->es_bits1[0] & EXT_BITS1_COBOL_MAIN_BIG);
@@ -629,10 +638,10 @@ ecoff_swap_ext_in (abfd, ext_copy, intern)
}
intern->reserved = 0;
-#ifdef ECOFF_32
+#if defined (ECOFF_32) || defined (ECOFF_SIGNED_32)
intern->ifd = bfd_h_get_signed_16 (abfd, (bfd_byte *)ext->es_ifd);
#endif
-#ifdef ECOFF_64
+#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
intern->ifd = bfd_h_get_signed_32 (abfd, (bfd_byte *)ext->es_ifd);
#endif
@@ -640,7 +649,7 @@ ecoff_swap_ext_in (abfd, ext_copy, intern)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -656,14 +665,14 @@ ecoff_swap_ext_out (abfd, intern_copy, ext_ptr)
EXTR intern[1];
*intern = *intern_copy; /* Make it reasonable to do in-place. */
-
- /* now the fun stuff... */
+
+ /* now the fun stuff... */
if (bfd_header_big_endian (abfd)) {
ext->es_bits1[0] = ((intern->jmptbl ? EXT_BITS1_JMPTBL_BIG : 0)
| (intern->cobol_main ? EXT_BITS1_COBOL_MAIN_BIG : 0)
| (intern->weakext ? EXT_BITS1_WEAKEXT_BIG : 0));
ext->es_bits2[0] = 0;
-#ifdef ECOFF_64
+#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
ext->es_bits2[1] = 0;
ext->es_bits2[2] = 0;
#endif
@@ -672,16 +681,16 @@ ecoff_swap_ext_out (abfd, intern_copy, ext_ptr)
| (intern->cobol_main ? EXT_BITS1_COBOL_MAIN_LITTLE : 0)
| (intern->weakext ? EXT_BITS1_WEAKEXT_LITTLE : 0));
ext->es_bits2[0] = 0;
-#ifdef ECOFF_64
+#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
ext->es_bits2[1] = 0;
ext->es_bits2[2] = 0;
#endif
}
-#ifdef ECOFF_32
+#if defined (ECOFF_32) || defined (ECOFF_SIGNED_32)
bfd_h_put_signed_16 (abfd, intern->ifd, (bfd_byte *)ext->es_ifd);
#endif
-#ifdef ECOFF_64
+#if defined (ECOFF_64) || defined (ECOFF_SIGNED_64)
bfd_h_put_signed_32 (abfd, intern->ifd, (bfd_byte *)ext->es_ifd);
#endif
@@ -689,7 +698,7 @@ ecoff_swap_ext_out (abfd, intern_copy, ext_ptr)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -707,7 +716,7 @@ ecoff_swap_rfd_in (abfd, ext_ptr, intern)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -725,7 +734,7 @@ ecoff_swap_rfd_out (abfd, intern, ext_ptr)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -766,7 +775,7 @@ ecoff_swap_opt_in (abfd, ext_copy, intern)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -805,7 +814,7 @@ ecoff_swap_opt_out (abfd, intern_copy, ext_ptr)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -826,7 +835,7 @@ ecoff_swap_dnr_in (abfd, ext_copy, intern)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
@@ -848,6 +857,6 @@ ecoff_swap_dnr_out (abfd, intern_copy, ext_ptr)
#ifdef TEST
if (memcmp ((char *)ext, (char *)intern, sizeof (*intern)) != 0)
- abort();
+ abort ();
#endif
}
diff --git a/contrib/binutils/bfd/elf-bfd.h b/contrib/binutils/bfd/elf-bfd.h
index 0dcecdf..4a36629 100644
--- a/contrib/binutils/bfd/elf-bfd.h
+++ b/contrib/binutils/bfd/elf-bfd.h
@@ -208,7 +208,7 @@ struct elf_link_local_dynamic_entry
/* The index in the outgoing dynamic symbol table. */
long dynindx;
-
+
/* A copy of the input symbol. */
Elf_Internal_Sym isym;
};
@@ -243,6 +243,9 @@ struct elf_link_hash_table
PTR stab_info;
/* A linked list of local symbols to be added to .dynsym. */
struct elf_link_local_dynamic_entry *dynlocal;
+ /* A linked list of DT_RPATH/DT_RUNPATH names found in dynamic
+ objects included in the link. */
+ struct bfd_link_needed_list *runpath;
};
/* Look up an entry in an ELF linker hash table. */
@@ -372,9 +375,9 @@ struct elf_backend_data
unsigned int));
/* A function to set the type of the info field. Processor-specific
- types should be handled here. */
- int (*elf_backend_get_symbol_type) PARAMS (( Elf_Internal_Sym *, int));
-
+ types should be handled here. */
+ int (*elf_backend_get_symbol_type) PARAMS (( Elf_Internal_Sym *, int));
+
/* A function to do additional processing on the ELF section header
just before writing it out. This is used to set the flags and
type fields for some sections, or to actually write out data for
@@ -388,8 +391,13 @@ struct elf_backend_data
Elf32_Internal_Shdr *,
char *));
+ /* A function to convert machine dependent section header flags to
+ BFD internal section header flags. */
+ boolean (*elf_backend_section_flags) PARAMS ((flagword *,
+ Elf32_Internal_Shdr *));
+
/* A function to handle unusual program segment types when creating BFD
- sections from ELF program segments. */
+ sections from ELF program segments. */
boolean (*elf_backend_section_from_phdr) PARAMS ((bfd *,
Elf32_Internal_Phdr *,
int));
@@ -601,7 +609,7 @@ struct elf_backend_data
/* Modify any information related to dynamic linking such that the
symbol is not exported. */
void (*elf_backend_hide_symbol)
- PARAMS ((struct elf_link_hash_entry *));
+ PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *));
/* The swapping table to use when dealing with ECOFF information.
Used for the MIPS ELF .mdebug section. */
@@ -638,7 +646,7 @@ struct elf_backend_data
both REL and RELA relocations, and this flag is set for those
backends.) */
unsigned may_use_rel_p : 1;
-
+
/* Whether the backend may use RELA relocations. (Some backends use
both REL and RELA relocations, and this flag is set for those
backends.) */
@@ -647,8 +655,8 @@ struct elf_backend_data
/* Whether the default relocation type is RELA. If a backend with
this flag set wants REL relocations for a particular section,
it must note that explicitly. Similarly, if this flag is clear,
- and the backend wants RELA relocations for a particular
- section. */
+ and the backend wants RELA relocations for a particular
+ section. */
unsigned default_use_rela_p : 1;
/* True if addresses "naturally" sign extend. This is used when
@@ -788,14 +796,14 @@ struct elf_obj_tdata
file_ptr next_file_pos;
#if 0
/* we don't need these inside bfd anymore, and I think
- these weren't used outside bfd. */
+ these weren't used outside bfd. */
void *prstatus; /* The raw /proc prstatus structure */
void *prpsinfo; /* The raw /proc prpsinfo structure */
#endif
bfd_vma gp; /* The gp value (MIPS only, for now) */
unsigned int gp_size; /* The gp size (MIPS only, for now) */
- /* Information grabbed from an elf core file. */
+ /* Information grabbed from an elf core file. */
int core_signal;
int core_pid;
int core_lwpid;
@@ -817,7 +825,7 @@ struct elf_obj_tdata
document the intent of any particular piece of code. The field
should be used as a count until size_dynamic_sections, at which
point the contents of the .got is fixed. Afterward, if an entry
- is -1, then the symbol does not require a global offset table entry. */
+ is -1, then the symbol does not require a global offset table entry. */
union
{
bfd_signed_vma *refcounts;
@@ -838,6 +846,14 @@ struct elf_obj_tdata
one. */
const char *dt_name;
+ /* When a reference in a regular object is resolved by a shared
+ object is loaded into via the DT_NEEDED entries by the linker
+ ELF emulation code, we need to add the shared object to the
+ DT_NEEDED list of the resulting binary to indicate the dependency
+ as if the -l option is passed to the linker. This field holds the
+ name of the loaded shared object. */
+ const char *dt_soname;
+
/* Irix 5 often screws up the symbol table, sorting local symbols
after global symbols. This flag is set if the symbol table in
this BFD appears to be screwed up. If it is, we ignore the
@@ -857,11 +873,11 @@ struct elf_obj_tdata
find_nearest_line. */
struct mips_elf_find_line *find_line_info;
- /* A place to stash dwarf1 info for this bfd. */
+ /* A place to stash dwarf1 info for this bfd. */
struct dwarf1_debug *dwarf1_find_line_info;
- /* A place to stash dwarf2 info for this bfd. */
- struct dwarf2_debug *dwarf2_find_line_info;
+ /* A place to stash dwarf2 info for this bfd. */
+ PTR dwarf2_find_line_info;
/* An array of stub sections indexed by symbol number, used by the
MIPS ELF linker. FIXME: We should figure out some way to only
@@ -885,6 +901,13 @@ struct elf_obj_tdata
/* Linker sections that we are interested in. */
struct elf_linker_section *linker_section[ (int)LINKER_SECTION_MAX ];
+
+ /* The Irix 5 support uses two virtual sections, which represent
+ text/data symbols defined in dynamic objects. */
+ asymbol *elf_data_symbol;
+ asymbol *elf_text_symbol;
+ asection *elf_data_section;
+ asection *elf_text_section;
};
#define elf_tdata(bfd) ((bfd) -> tdata.elf_obj_data)
@@ -908,6 +931,7 @@ struct elf_obj_tdata
#define elf_local_got_offsets(bfd) (elf_tdata(bfd) -> local_got.offsets)
#define elf_local_ptr_offsets(bfd) (elf_tdata(bfd) -> linker_section_pointers)
#define elf_dt_name(bfd) (elf_tdata(bfd) -> dt_name)
+#define elf_dt_soname(bfd) (elf_tdata(bfd) -> dt_soname)
#define elf_bad_symtab(bfd) (elf_tdata(bfd) -> bad_symtab)
#define elf_flags_init(bfd) (elf_tdata(bfd) -> flags_init)
#define elf_linker_section(bfd,n) (elf_tdata(bfd) -> linker_section[(int)n])
@@ -970,7 +994,7 @@ extern struct bfd_link_hash_table *_bfd_elf_link_hash_table_create
extern void _bfd_elf_link_hash_copy_indirect
PARAMS ((struct elf_link_hash_entry *, struct elf_link_hash_entry *));
extern void _bfd_elf_link_hash_hide_symbol
- PARAMS ((struct elf_link_hash_entry *));
+ PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *));
extern boolean _bfd_elf_link_hash_table_init
PARAMS ((struct elf_link_hash_table *, bfd *,
struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
@@ -1006,14 +1030,14 @@ extern boolean _bfd_elf_set_arch_mach PARAMS ((bfd *, enum bfd_architecture,
unsigned long));
extern boolean _bfd_elf_find_nearest_line PARAMS ((bfd *, asection *,
asymbol **,
- bfd_vma, CONST char **,
- CONST char **,
+ bfd_vma, const char **,
+ const char **,
unsigned int *));
#define _bfd_elf_read_minisymbols _bfd_generic_read_minisymbols
#define _bfd_elf_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
extern int _bfd_elf_sizeof_headers PARAMS ((bfd *, boolean));
extern boolean _bfd_elf_new_section_hook PARAMS ((bfd *, asection *));
-extern boolean _bfd_elf_init_reloc_shdr
+extern boolean _bfd_elf_init_reloc_shdr
PARAMS ((bfd *, Elf_Internal_Shdr *, asection *, boolean));
/* If the target doesn't have reloc handling written yet: */
@@ -1142,6 +1166,10 @@ extern long bfd_elf32_slurp_symbol_table
extern boolean bfd_elf32_write_shdrs_and_ehdr PARAMS ((bfd *));
extern int bfd_elf32_write_out_phdrs
PARAMS ((bfd *, const Elf_Internal_Phdr *, int));
+extern void bfd_elf32_write_relocs
+ PARAMS ((bfd *, asection *, PTR));
+extern boolean bfd_elf32_slurp_reloc_table
+ PARAMS ((bfd *, asection *, asymbol **, boolean));
extern boolean bfd_elf32_add_dynamic_entry
PARAMS ((struct bfd_link_info *, bfd_vma, bfd_vma));
extern boolean bfd_elf32_link_create_dynamic_sections
@@ -1185,6 +1213,10 @@ extern long bfd_elf64_slurp_symbol_table
extern boolean bfd_elf64_write_shdrs_and_ehdr PARAMS ((bfd *));
extern int bfd_elf64_write_out_phdrs
PARAMS ((bfd *, const Elf_Internal_Phdr *, int));
+extern void bfd_elf64_write_relocs
+ PARAMS ((bfd *, asection *, PTR));
+extern boolean bfd_elf64_slurp_reloc_table
+ PARAMS ((bfd *, asection *, asymbol **, boolean));
extern boolean bfd_elf64_add_dynamic_entry
PARAMS ((struct bfd_link_info *, bfd_vma, bfd_vma));
extern boolean bfd_elf64_link_create_dynamic_sections
@@ -1274,11 +1306,11 @@ extern boolean _bfd_mips_elf_finish_dynamic_symbol
Elf_Internal_Sym *));
extern boolean _bfd_mips_elf_finish_dynamic_sections
PARAMS ((bfd *, struct bfd_link_info *));
-extern asection * _bfd_mips_elf_gc_mark_hook
+extern asection * _bfd_mips_elf_gc_mark_hook
PARAMS ((bfd *, struct bfd_link_info *, Elf_Internal_Rela *,
struct elf_link_hash_entry *, Elf_Internal_Sym *));
-extern boolean _bfd_mips_elf_gc_sweep_hook
- PARAMS ((bfd *, struct bfd_link_info *, asection *,
+extern boolean _bfd_mips_elf_gc_sweep_hook
+ PARAMS ((bfd *, struct bfd_link_info *, asection *,
const Elf_Internal_Rela *));
extern boolean _bfd_mips_elf_always_size_sections
PARAMS ((bfd *, struct bfd_link_info *));
@@ -1289,7 +1321,7 @@ extern boolean _bfd_mips_elf_check_relocs
const Elf_Internal_Rela *));
extern struct bfd_link_hash_table *_bfd_mips_elf_link_hash_table_create
PARAMS ((bfd *));
-extern boolean _bfd_mips_elf_print_private_bfd_data
+extern boolean _bfd_mips_elf_print_private_bfd_data
PARAMS ((bfd *, PTR));
extern boolean _bfd_mips_elf_link_output_symbol_hook
PARAMS ((bfd *, struct bfd_link_info *, const char *, Elf_Internal_Sym *,
diff --git a/contrib/binutils/bfd/elf.c b/contrib/binutils/bfd/elf.c
index e8e7e37..5ae24ee 100644
--- a/contrib/binutils/bfd/elf.c
+++ b/contrib/binutils/bfd/elf.c
@@ -31,6 +31,8 @@ SECTION
haven't bothered yet.
*/
+/* For sparc64-cross-sparc32. */
+#define _SYSCALL32
#include "bfd.h"
#include "sysdep.h"
#include "bfdlink.h"
@@ -227,11 +229,11 @@ bfd_elf_hash (namearg)
/* Read a specified number of bytes at a specified offset in an ELF
file, into a newly allocated buffer, and return a pointer to the
- buffer. */
+ buffer. */
static char *
elf_read (abfd, offset, size)
- bfd * abfd;
+ bfd *abfd;
long offset;
unsigned int size;
{
@@ -252,31 +254,31 @@ elf_read (abfd, offset, size)
boolean
bfd_elf_mkobject (abfd)
- bfd * abfd;
+ bfd *abfd;
{
- /* this just does initialization */
- /* coff_mkobject zalloc's space for tdata.coff_obj_data ... */
+ /* This just does initialization. */
+ /* coff_mkobject zalloc's space for tdata.coff_obj_data ... */
elf_tdata (abfd) = (struct elf_obj_tdata *)
bfd_zalloc (abfd, sizeof (struct elf_obj_tdata));
if (elf_tdata (abfd) == 0)
return false;
- /* since everything is done at close time, do we need any
- initialization? */
+ /* Since everything is done at close time, do we need any
+ initialization? */
return true;
}
boolean
bfd_elf_mkcorefile (abfd)
- bfd * abfd;
+ bfd *abfd;
{
- /* I think this can be done just like an object file. */
+ /* I think this can be done just like an object file. */
return bfd_elf_mkobject (abfd);
}
char *
bfd_elf_get_str_section (abfd, shindex)
- bfd * abfd;
+ bfd *abfd;
unsigned int shindex;
{
Elf_Internal_Shdr **i_shdrp;
@@ -291,7 +293,7 @@ bfd_elf_get_str_section (abfd, shindex)
shstrtab = (char *) i_shdrp[shindex]->contents;
if (shstrtab == NULL)
{
- /* No cached one, attempt to read, and cache what we read. */
+ /* No cached one, attempt to read, and cache what we read. */
offset = i_shdrp[shindex]->sh_offset;
shstrtabsize = i_shdrp[shindex]->sh_size;
shstrtab = elf_read (abfd, offset, shstrtabsize);
@@ -302,7 +304,7 @@ bfd_elf_get_str_section (abfd, shindex)
char *
bfd_elf_string_from_elf_section (abfd, shindex, strindex)
- bfd * abfd;
+ bfd *abfd;
unsigned int shindex;
unsigned int strindex;
{
@@ -343,6 +345,7 @@ _bfd_elf_make_section_from_shdr (abfd, hdr, name)
{
asection *newsect;
flagword flags;
+ struct elf_backend_data *bed;
if (hdr->bfd_section != NULL)
{
@@ -381,10 +384,23 @@ _bfd_elf_make_section_from_shdr (abfd, hdr, name)
/* The debugging sections appear to be recognized only by name, not
any sort of flag. */
- if (strncmp (name, ".debug", sizeof ".debug" - 1) == 0
- || strncmp (name, ".line", sizeof ".line" - 1) == 0
- || strncmp (name, ".stab", sizeof ".stab" - 1) == 0)
- flags |= SEC_DEBUGGING;
+ {
+ static const char *debug_sec_names [] =
+ {
+ ".debug",
+ ".gnu.linkonce.wi.",
+ ".line",
+ ".stab"
+ };
+ int i;
+
+ for (i = sizeof (debug_sec_names) / sizeof (debug_sec_names[0]); i--;)
+ if (strncmp (name, debug_sec_names[i], strlen (debug_sec_names[i])) == 0)
+ break;
+
+ if (i >= 0)
+ flags |= SEC_DEBUGGING;
+ }
/* As a GNU extension, if the name begins with .gnu.linkonce, we
only link a single copy of the section. This is used to support
@@ -395,6 +411,11 @@ _bfd_elf_make_section_from_shdr (abfd, hdr, name)
if (strncmp (name, ".gnu.linkonce", sizeof ".gnu.linkonce" - 1) == 0)
flags |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD;
+ bed = get_elf_backend_data (abfd);
+ if (bed->elf_backend_section_flags)
+ if (! bed->elf_backend_section_flags (&flags, hdr))
+ return false;
+
if (! bfd_set_section_flags (abfd, newsect, flags))
return false;
@@ -457,7 +478,7 @@ DESCRIPTION
struct elf_internal_shdr *
bfd_elf_find_section (abfd, name)
- bfd * abfd;
+ bfd *abfd;
char *name;
{
Elf_Internal_Shdr **i_shdrp;
@@ -497,7 +518,6 @@ const char *const bfd_elf_section_type_names[] = {
function. It just short circuits the reloc if producing
relocateable output against an external symbol. */
-/*ARGSUSED*/
bfd_reloc_status_type
bfd_elf_generic_reloc (abfd,
reloc_entry,
@@ -653,13 +673,40 @@ _bfd_elf_print_private_bfd_data (abfd, farg)
case DT_DEBUG: name = "DEBUG"; break;
case DT_TEXTREL: name = "TEXTREL"; break;
case DT_JMPREL: name = "JMPREL"; break;
- case DT_AUXILIARY: name = "AUXILIARY"; stringp = true; break;
- case DT_FILTER: name = "FILTER"; stringp = true; break;
+ case DT_BIND_NOW: name = "BIND_NOW"; break;
+ case DT_INIT_ARRAY: name = "INIT_ARRAY"; break;
+ case DT_FINI_ARRAY: name = "FINI_ARRAY"; break;
+ case DT_INIT_ARRAYSZ: name = "INIT_ARRAYSZ"; break;
+ case DT_FINI_ARRAYSZ: name = "FINI_ARRAYSZ"; break;
+ case DT_RUNPATH: name = "RUNPATH"; stringp = true; break;
+ case DT_FLAGS: name = "FLAGS"; break;
+ case DT_PREINIT_ARRAY: name = "PREINIT_ARRAY"; break;
+ case DT_PREINIT_ARRAYSZ: name = "PREINIT_ARRAYSZ"; break;
+ case DT_CHECKSUM: name = "CHECKSUM"; break;
+ case DT_PLTPADSZ: name = "PLTPADSZ"; break;
+ case DT_MOVEENT: name = "MOVEENT"; break;
+ case DT_MOVESZ: name = "MOVESZ"; break;
+ case DT_FEATURE: name = "FEATURE"; break;
+ case DT_POSFLAG_1: name = "POSFLAG_1"; break;
+ case DT_SYMINSZ: name = "SYMINSZ"; break;
+ case DT_SYMINENT: name = "SYMINENT"; break;
+ case DT_CONFIG: name = "CONFIG"; stringp = true; break;
+ case DT_DEPAUDIT: name = "DEPAUDIT"; stringp = true; break;
+ case DT_AUDIT: name = "AUDIT"; stringp = true; break;
+ case DT_PLTPAD: name = "PLTPAD"; break;
+ case DT_MOVETAB: name = "MOVETAB"; break;
+ case DT_SYMINFO: name = "SYMINFO"; break;
+ case DT_RELACOUNT: name = "RELACOUNT"; break;
+ case DT_RELCOUNT: name = "RELCOUNT"; break;
+ case DT_FLAGS_1: name = "FLAGS_1"; break;
case DT_VERSYM: name = "VERSYM"; break;
case DT_VERDEF: name = "VERDEF"; break;
case DT_VERDEFNUM: name = "VERDEFNUM"; break;
case DT_VERNEED: name = "VERNEED"; break;
case DT_VERNEEDNUM: name = "VERNEEDNUM"; break;
+ case DT_AUXILIARY: name = "AUXILIARY"; stringp = true; break;
+ case DT_USED: name = "USED"; break;
+ case DT_FILTER: name = "FILTER"; stringp = true; break;
}
fprintf (f, " %-11s ", name);
@@ -762,16 +809,16 @@ bfd_elf_print_symbol (abfd, filep, symbol, how)
CONST char *name = NULL;
struct elf_backend_data *bed;
unsigned char st_other;
-
+
section_name = symbol->section ? symbol->section->name : "(*none*)";
bed = get_elf_backend_data (abfd);
if (bed->elf_backend_print_symbol_all)
- name = (*bed->elf_backend_print_symbol_all) (abfd, filep, symbol);
+ name = (*bed->elf_backend_print_symbol_all) (abfd, filep, symbol);
if (name == NULL)
{
- name = symbol->name;
+ name = symbol->name;
bfd_print_symbol_vandf ((PTR) file, symbol);
}
@@ -838,7 +885,7 @@ bfd_elf_print_symbol (abfd, filep, symbol, how)
/* If the st_other field is not zero, print it. */
st_other = ((elf_symbol_type *) symbol)->internal_elf_sym.st_other;
-
+
switch (st_other)
{
case 0: break;
@@ -950,7 +997,8 @@ _bfd_elf_link_hash_copy_indirect (dir, ind)
}
void
-_bfd_elf_link_hash_hide_symbol(h)
+_bfd_elf_link_hash_hide_symbol (info, h)
+ struct bfd_link_info *info ATTRIBUTE_UNUSED;
struct elf_link_hash_entry *h;
{
h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
@@ -975,6 +1023,7 @@ _bfd_elf_link_hash_table_init (table, abfd, newfunc)
table->dynstr = NULL;
table->bucketcount = 0;
table->needed = NULL;
+ table->runpath = NULL;
table->hgot = NULL;
table->stab_info = NULL;
table->dynlocal = NULL;
@@ -1018,6 +1067,16 @@ bfd_elf_set_dt_needed_name (abfd, name)
elf_dt_name (abfd) = name;
}
+void
+bfd_elf_set_dt_needed_soname (abfd, name)
+ bfd *abfd;
+ const char *name;
+{
+ if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
+ && bfd_get_format (abfd) == bfd_object)
+ elf_dt_soname (abfd) = name;
+}
+
/* Get the list of DT_NEEDED entries for a link. This is a hook for
the linker ELF emulation code. */
@@ -1031,6 +1090,19 @@ bfd_elf_get_needed_list (abfd, info)
return elf_hash_table (info)->needed;
}
+/* Get the list of DT_RPATH/DT_RUNPATH entries for a link. This is a
+ hook for the linker ELF emulation code. */
+
+struct bfd_link_needed_list *
+bfd_elf_get_runpath_list (abfd, info)
+ bfd *abfd ATTRIBUTE_UNUSED;
+ struct bfd_link_info *info;
+{
+ if (info->hash->creator->flavour != bfd_target_elf_flavour)
+ return NULL;
+ return elf_hash_table (info)->runpath;
+}
+
/* Get the name actually used for a dynamic object for a link. This
is the SONAME entry if there is one. Otherwise, it is the string
passed to bfd_elf_set_dt_needed_name, or it is the filename. */
@@ -1155,7 +1227,7 @@ _bfd_elf_stringtab_init ()
/* ELF .o/exec file reading */
-/* Create a new bfd section from an ELF section header. */
+/* Create a new bfd section from an ELF section header. */
boolean
bfd_section_from_shdr (abfd, shindex)
@@ -1328,8 +1400,10 @@ bfd_section_from_shdr (abfd, shindex)
/* If this reloc section does not use the main symbol table we
don't treat it as a reloc section. BFD can't adequately
represent such a section, so at least for now, we don't
- try. We just present it as a normal section. */
- if (hdr->sh_link != elf_onesymtab (abfd))
+ try. We just present it as a normal section. We also
+ can't use it as a reloc section if it points to the null
+ section. */
+ if (hdr->sh_link != elf_onesymtab (abfd) || hdr->sh_info == SHN_UNDEF)
return _bfd_elf_make_section_from_shdr (abfd, hdr, name);
if (! bfd_section_from_shdr (abfd, hdr->sh_info))
@@ -1423,7 +1497,7 @@ _bfd_elf_new_section_hook (abfd, sec)
sec->used_by_bfd = (PTR) sdata;
/* Indicate whether or not this section should use RELA relocations. */
- sdata->use_rela_p
+ sdata->use_rela_p
= get_elf_backend_data (abfd)->default_use_rela_p;
return true;
@@ -1486,7 +1560,7 @@ _bfd_elf_make_section_from_phdr (abfd, hdr, index, typename)
if (hdr->p_flags & PF_X)
{
/* FIXME: all we known is that it has execute PERMISSION,
- may be data. */
+ may be data. */
newsect->flags |= SEC_CODE;
}
}
@@ -1558,7 +1632,7 @@ bfd_section_from_phdr (abfd, hdr, index)
default:
/* Check for any processor-specific program segment types.
- If no handler for them, default to making "segment" sections. */
+ If no handler for them, default to making "segment" sections. */
bed = get_elf_backend_data (abfd);
if (bed->elf_backend_section_from_phdr)
return (*bed->elf_backend_section_from_phdr) (abfd, hdr, index);
@@ -1606,7 +1680,6 @@ _bfd_elf_init_reloc_shdr (abfd, rel_hdr, asect, use_rela_p)
/* Set up an ELF internal section header for a section. */
-/*ARGSUSED*/
static void
elf_fake_sections (abfd, asect, failedptrarg)
bfd *abfd;
@@ -1720,16 +1793,10 @@ elf_fake_sections (abfd, asect, failedptrarg)
|| this_hdr->sh_info == elf_tdata (abfd)->cverrefs);
}
else if ((asect->flags & SEC_ALLOC) != 0
- && (asect->flags & SEC_LOAD) != 0)
- this_hdr->sh_type = SHT_PROGBITS;
- else if ((asect->flags & SEC_ALLOC) != 0
- && ((asect->flags & SEC_LOAD) == 0))
+ && ((asect->flags & (SEC_LOAD | SEC_HAS_CONTENTS)) == 0))
this_hdr->sh_type = SHT_NOBITS;
else
- {
- /* Who knows? */
- this_hdr->sh_type = SHT_PROGBITS;
- }
+ this_hdr->sh_type = SHT_PROGBITS;
if ((asect->flags & SEC_ALLOC) != 0)
this_hdr->sh_flags |= SHF_ALLOC;
@@ -1745,11 +1812,11 @@ elf_fake_sections (abfd, asect, failedptrarg)
/* If the section has relocs, set up a section header for the
SHT_REL[A] section. If two relocation sections are required for
this section, it is up to the processor-specific back-end to
- create the other. */
+ create the other. */
if ((asect->flags & SEC_RELOC) != 0
- && !_bfd_elf_init_reloc_shdr (abfd,
+ && !_bfd_elf_init_reloc_shdr (abfd,
&elf_section_data (asect)->rel_hdr,
- asect,
+ asect,
elf_section_data (asect)->use_rela_p))
*failedptr = true;
}
@@ -1766,7 +1833,6 @@ assign_section_numbers (abfd)
asection *sec;
unsigned int section_number;
Elf_Internal_Shdr **i_shdrp;
- struct elf_backend_data *bed = get_elf_backend_data (abfd);
section_number = 1;
@@ -1901,7 +1967,7 @@ assign_section_numbers (abfd)
/* This is a .stab section. */
elf_section_data (s)->this_hdr.sh_entsize =
- 4 + 2 * (bed->s->arch_size / 8);
+ 4 + 2 * bfd_get_arch_size (abfd) / 8;
}
}
break;
@@ -1990,7 +2056,7 @@ elf_map_symbols (abfd)
for (idx = 0; idx < symcount; idx++)
{
sym = syms[idx];
-
+
if ((sym->flags & BSF_SECTION_SYM) != 0
&& sym->value == 0)
{
@@ -2004,7 +2070,7 @@ elf_map_symbols (abfd)
{
if (sec->output_offset != 0)
continue;
-
+
sec = sec->output_section;
/* Empty sections in the input files may have had a section
@@ -2903,18 +2969,21 @@ assign_file_positions_for_segments (abfd)
if (p->p_type == PT_NOTE && bfd_get_format (abfd) == bfd_core)
{
- if (i == 0) /* the actual "note" segment */
- { /* this one actually contains everything. */
+ /* The actual "note" segment has i == 0.
+ This is the one that actually contains everything. */
+ if (i == 0)
+ {
sec->filepos = off;
p->p_filesz = sec->_raw_size;
off += sec->_raw_size;
voff = off;
}
- else /* fake sections -- don't need to be written */
+ else
{
+ /* Fake sections -- don't need to be written. */
sec->filepos = 0;
sec->_raw_size = 0;
- flags = sec->flags = 0; /* no contents */
+ flags = sec->flags = 0;
}
p->p_memsz = 0;
p->p_align = 1;
@@ -3228,7 +3297,7 @@ prep_headers (abfd)
i_ehdrp->e_machine = EM_NONE;
break;
case bfd_arch_sparc:
- if (bed->s->arch_size == 64)
+ if (bfd_get_arch_size (abfd) == 64)
i_ehdrp->e_machine = EM_SPARCV9;
else
i_ehdrp->e_machine = EM_SPARC;
@@ -3237,7 +3306,19 @@ prep_headers (abfd)
i_ehdrp->e_machine = EM_S370;
break;
case bfd_arch_i386:
- i_ehdrp->e_machine = EM_386;
+ if (bfd_get_arch_size (abfd) == 64)
+ i_ehdrp->e_machine = EM_X86_64;
+ else
+ i_ehdrp->e_machine = EM_386;
+ break;
+ case bfd_arch_ia64:
+ i_ehdrp->e_machine = EM_IA_64;
+ break;
+ case bfd_arch_m68hc11:
+ i_ehdrp->e_machine = EM_68HC11;
+ break;
+ case bfd_arch_m68hc12:
+ i_ehdrp->e_machine = EM_68HC12;
break;
case bfd_arch_m68k:
i_ehdrp->e_machine = EM_68K;
@@ -3288,10 +3369,10 @@ prep_headers (abfd)
case 0: i_ehdrp->e_machine = EM_CYGNUS_V850; break;
}
break;
- case bfd_arch_arc:
+ case bfd_arch_arc:
i_ehdrp->e_machine = EM_CYGNUS_ARC;
break;
- case bfd_arch_arm:
+ case bfd_arch_arm:
i_ehdrp->e_machine = EM_ARM;
break;
case bfd_arch_m32r:
@@ -3306,6 +3387,9 @@ prep_headers (abfd)
case bfd_arch_pj:
i_ehdrp->e_machine = EM_PJ;
break;
+ case bfd_arch_cris:
+ i_ehdrp->e_machine = EM_CRIS;
+ break;
/* also note that EM_M32, AT&T WE32100 is unknown to bfd */
default:
i_ehdrp->e_machine = EM_NONE;
@@ -3313,24 +3397,24 @@ prep_headers (abfd)
i_ehdrp->e_version = bed->s->ev_current;
i_ehdrp->e_ehsize = bed->s->sizeof_ehdr;
- /* no program header, for now. */
+ /* No program header, for now. */
i_ehdrp->e_phoff = 0;
i_ehdrp->e_phentsize = 0;
i_ehdrp->e_phnum = 0;
- /* each bfd section is section header entry */
+ /* Each bfd section is section header entry. */
i_ehdrp->e_entry = bfd_get_start_address (abfd);
i_ehdrp->e_shentsize = bed->s->sizeof_shdr;
- /* if we're building an executable, we'll need a program header table */
+ /* If we're building an executable, we'll need a program header table. */
if (abfd->flags & EXEC_P)
{
- /* it all happens later */
+ /* It all happens later. */
#if 0
i_ehdrp->e_phentsize = sizeof (Elf_External_Phdr);
/* elf_build_phdrs() returns a (NULL-terminated) array of
- Elf_Internal_Phdrs */
+ Elf_Internal_Phdrs. */
i_phdrp = elf_build_phdrs (abfd, i_ehdrp, i_shdrp, &i_ehdrp->e_phnum);
i_ehdrp->e_phoff = outbase;
outbase += i_ehdrp->e_phentsize * i_ehdrp->e_phnum;
@@ -3410,7 +3494,7 @@ _bfd_elf_write_object_contents (abfd)
_bfd_elf_assign_file_positions_for_relocs (abfd);
- /* After writing the headers, we need to write the sections too... */
+ /* After writing the headers, we need to write the sections too... */
for (count = 1; count < i_ehdrp->e_shnum; count++)
{
if (bed->elf_backend_section_processing)
@@ -3441,10 +3525,12 @@ boolean
_bfd_elf_write_corefile_contents (abfd)
bfd *abfd;
{
- /* Hopefully this can be done just like an object file. */
+ /* Hopefully this can be done just like an object file. */
return _bfd_elf_write_object_contents (abfd);
}
-/* given a section, search the header to find them... */
+
+/* Given a section, search the header to find them. */
+
int
_bfd_elf_section_from_bfd_section (abfd, asect)
bfd *abfd;
@@ -3553,14 +3639,18 @@ copy_private_bfd_data (ibfd, obfd)
bfd *ibfd;
bfd *obfd;
{
- Elf_Internal_Ehdr *iehdr;
- struct elf_segment_map *mfirst;
- struct elf_segment_map **pm;
- struct elf_segment_map *m;
- Elf_Internal_Phdr *p;
- unsigned int i;
- unsigned int num_segments;
- boolean phdr_included = false;
+ Elf_Internal_Ehdr * iehdr;
+ struct elf_segment_map * map;
+ struct elf_segment_map * map_first;
+ struct elf_segment_map ** pointer_to_map;
+ Elf_Internal_Phdr * segment;
+ asection * section;
+ unsigned int i;
+ unsigned int num_segments;
+ boolean phdr_included = false;
+ bfd_vma maxpagesize;
+ struct elf_segment_map * phdr_adjust_seg = NULL;
+ unsigned int phdr_adjust_num = 0;
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
@@ -3571,119 +3661,214 @@ copy_private_bfd_data (ibfd, obfd)
iehdr = elf_elfheader (ibfd);
- mfirst = NULL;
- pm = &mfirst;
+ map_first = NULL;
+ pointer_to_map = &map_first;
num_segments = elf_elfheader (ibfd)->e_phnum;
-
-#define IS_CONTAINED_BY(addr, len, bottom, phdr) \
- ((addr) >= (bottom) \
- && ( ((addr) + (len)) <= ((bottom) + (phdr)->p_memsz) \
- || ((addr) + (len)) <= ((bottom) + (phdr)->p_filesz)))
-
- /* Special case: corefile "NOTE" section containing regs, prpsinfo etc. */
-
-#define IS_COREFILE_NOTE(p, s) \
- (p->p_type == PT_NOTE \
- && bfd_get_format (ibfd) == bfd_core \
- && s->vma == 0 && s->lma == 0 \
- && (bfd_vma) s->filepos >= p->p_offset \
- && (bfd_vma) s->filepos + s->_raw_size \
+ maxpagesize = get_elf_backend_data (obfd)->maxpagesize;
+
+ /* Returns the end address of the segment + 1. */
+#define SEGMENT_END(segment, start) \
+ (start + (segment->p_memsz > segment->p_filesz \
+ ? segment->p_memsz : segment->p_filesz))
+
+ /* Returns true if the given section is contained within
+ the given segment. VMA addresses are compared. */
+#define IS_CONTAINED_BY_VMA(section, segment) \
+ (section->vma >= segment->p_vaddr \
+ && (section->vma + section->_raw_size) \
+ <= (SEGMENT_END (segment, segment->p_vaddr)))
+
+ /* Returns true if the given section is contained within
+ the given segment. LMA addresses are compared. */
+#define IS_CONTAINED_BY_LMA(section, segment, base) \
+ (section->lma >= base \
+ && (section->lma + section->_raw_size) \
+ <= SEGMENT_END (segment, base))
+
+ /* Special case: corefile "NOTE" section containing regs, prpsinfo etc. */
+#define IS_COREFILE_NOTE(p, s) \
+ (p->p_type == PT_NOTE \
+ && bfd_get_format (ibfd) == bfd_core \
+ && s->vma == 0 && s->lma == 0 \
+ && (bfd_vma) s->filepos >= p->p_offset \
+ && (bfd_vma) s->filepos + s->_raw_size \
<= p->p_offset + p->p_filesz)
/* The complicated case when p_vaddr is 0 is to handle the Solaris
linker, which generates a PT_INTERP section with p_vaddr and
p_memsz set to 0. */
-
-#define IS_SOLARIS_PT_INTERP(p, s) \
- (p->p_vaddr == 0 \
- && p->p_filesz > 0 \
- && (s->flags & SEC_HAS_CONTENTS) != 0 \
- && s->_raw_size > 0 \
- && (bfd_vma) s->filepos >= p->p_offset \
- && ((bfd_vma) s->filepos + s->_raw_size \
+#define IS_SOLARIS_PT_INTERP(p, s) \
+ ( p->p_vaddr == 0 \
+ && p->p_filesz > 0 \
+ && (s->flags & SEC_HAS_CONTENTS) != 0 \
+ && s->_raw_size > 0 \
+ && (bfd_vma) s->filepos >= p->p_offset \
+ && ((bfd_vma) s->filepos + s->_raw_size \
<= p->p_offset + p->p_filesz))
+ /* Decide if the given section should be included in the given segment.
+ A section will be included if:
+ 1. It is within the address space of the segment,
+ 2. It is an allocated segment,
+ 3. There is an output section associated with it,
+ 4. The section has not already been allocated to a previous segment. */
+#define INCLUDE_SECTION_IN_SEGMENT(section, segment) \
+ ((((IS_CONTAINED_BY_VMA (section, segment) \
+ || IS_SOLARIS_PT_INTERP (segment, section)) \
+ && (section->flags & SEC_ALLOC) != 0) \
+ || IS_COREFILE_NOTE (segment, section)) \
+ && section->output_section != NULL \
+ && section->segment_mark == false)
+
+ /* Returns true iff seg1 starts after the end of seg2. */
+#define SEGMENT_AFTER_SEGMENT(seg1, seg2) \
+ (seg1->p_vaddr >= SEGMENT_END (seg2, seg2->p_vaddr))
+
+ /* Returns true iff seg1 and seg2 overlap. */
+#define SEGMENT_OVERLAPS(seg1, seg2) \
+ (!(SEGMENT_AFTER_SEGMENT (seg1, seg2) || SEGMENT_AFTER_SEGMENT (seg2, seg1)))
+
+ /* Initialise the segment mark field. */
+ for (section = ibfd->sections; section != NULL; section = section->next)
+ section->segment_mark = false;
+
/* Scan through the segments specified in the program header
- of the input BFD. */
- for (i = 0, p = elf_tdata (ibfd)->phdr; i < num_segments; i++, p++)
+ of the input BFD. For this first scan we look for overlaps
+ in the loadable segments. These can be created by wierd
+ parameters to objcopy. */
+ for (i = 0, segment = elf_tdata (ibfd)->phdr;
+ i < num_segments;
+ i++, segment++)
{
- unsigned int csecs;
- asection *s;
- asection **sections;
- asection *os;
- unsigned int isec;
- bfd_vma matching_lma;
- bfd_vma suggested_lma;
unsigned int j;
+ Elf_Internal_Phdr *segment2;
- /* For each section in the input BFD, decide if it should be
- included in the current segment. A section will be included
- if it is within the address space of the segment, and it is
- an allocated segment, and there is an output section
- associated with it. */
- csecs = 0;
- for (s = ibfd->sections; s != NULL; s = s->next)
- if (s->output_section != NULL)
- {
- if ((IS_CONTAINED_BY (s->vma, s->_raw_size, p->p_vaddr, p)
- || IS_SOLARIS_PT_INTERP (p, s))
- && (s->flags & SEC_ALLOC) != 0)
- ++csecs;
- else if (IS_COREFILE_NOTE (p, s))
- ++csecs;
- }
+ if (segment->p_type != PT_LOAD)
+ continue;
+
+ /* Determine if this segment overlaps any previous segments. */
+ for (j = 0, segment2 = elf_tdata (ibfd)->phdr; j < i; j++, segment2 ++)
+ {
+ bfd_signed_vma extra_length;
+
+ if (segment2->p_type != PT_LOAD
+ || ! SEGMENT_OVERLAPS (segment, segment2))
+ continue;
+
+ /* Merge the two segments together. */
+ if (segment2->p_vaddr < segment->p_vaddr)
+ {
+ /* Extend SEGMENT2 to include SEGMENT and then delete
+ SEGMENT. */
+ extra_length =
+ SEGMENT_END (segment, segment->p_vaddr)
+ - SEGMENT_END (segment2, segment2->p_vaddr);
+
+ if (extra_length > 0)
+ {
+ segment2->p_memsz += extra_length;
+ segment2->p_filesz += extra_length;
+ }
+
+ segment->p_type = PT_NULL;
+
+ /* Since we have deleted P we must restart the outer loop. */
+ i = 0;
+ segment = elf_tdata (ibfd)->phdr;
+ break;
+ }
+ else
+ {
+ /* Extend SEGMENT to include SEGMENT2 and then delete
+ SEGMENT2. */
+ extra_length =
+ SEGMENT_END (segment2, segment2->p_vaddr)
+ - SEGMENT_END (segment, segment->p_vaddr);
+
+ if (extra_length > 0)
+ {
+ segment->p_memsz += extra_length;
+ segment->p_filesz += extra_length;
+ }
+
+ segment2->p_type = PT_NULL;
+ }
+ }
+ }
+
+ /* The second scan attempts to assign sections to segments. */
+ for (i = 0, segment = elf_tdata (ibfd)->phdr;
+ i < num_segments;
+ i ++, segment ++)
+ {
+ unsigned int section_count;
+ asection ** sections;
+ asection * output_section;
+ unsigned int isec;
+ bfd_vma matching_lma;
+ bfd_vma suggested_lma;
+ unsigned int j;
+
+ if (segment->p_type == PT_NULL)
+ continue;
+
+ /* Compute how many sections might be placed into this segment. */
+ section_count = 0;
+ for (section = ibfd->sections; section != NULL; section = section->next)
+ if (INCLUDE_SECTION_IN_SEGMENT (section, segment))
+ ++section_count;
/* Allocate a segment map big enough to contain all of the
sections we have selected. */
- m = ((struct elf_segment_map *)
+ map = ((struct elf_segment_map *)
bfd_alloc (obfd,
(sizeof (struct elf_segment_map)
- + ((size_t) csecs - 1) * sizeof (asection *))));
- if (m == NULL)
+ + ((size_t) section_count - 1) * sizeof (asection *))));
+ if (map == NULL)
return false;
/* Initialise the fields of the segment map. Default to
using the physical address of the segment in the input BFD. */
- m->next = NULL;
- m->p_type = p->p_type;
- m->p_flags = p->p_flags;
- m->p_flags_valid = 1;
- m->p_paddr = p->p_paddr;
- m->p_paddr_valid = 1;
+ map->next = NULL;
+ map->p_type = segment->p_type;
+ map->p_flags = segment->p_flags;
+ map->p_flags_valid = 1;
+ map->p_paddr = segment->p_paddr;
+ map->p_paddr_valid = 1;
/* Determine if this segment contains the ELF file header
and if it contains the program headers themselves. */
- m->includes_filehdr = (p->p_offset == 0
- && p->p_filesz >= iehdr->e_ehsize);
+ map->includes_filehdr = (segment->p_offset == 0
+ && segment->p_filesz >= iehdr->e_ehsize);
- m->includes_phdrs = 0;
+ map->includes_phdrs = 0;
- if (! phdr_included || p->p_type != PT_LOAD)
+ if (! phdr_included || segment->p_type != PT_LOAD)
{
- m->includes_phdrs =
- (p->p_offset <= (bfd_vma) iehdr->e_phoff
- && (p->p_offset + p->p_filesz
+ map->includes_phdrs =
+ (segment->p_offset <= (bfd_vma) iehdr->e_phoff
+ && (segment->p_offset + segment->p_filesz
>= ((bfd_vma) iehdr->e_phoff
+ iehdr->e_phnum * iehdr->e_phentsize)));
- if (p->p_type == PT_LOAD && m->includes_phdrs)
+
+ if (segment->p_type == PT_LOAD && map->includes_phdrs)
phdr_included = true;
}
- if (csecs == 0)
+ if (section_count == 0)
{
/* Special segments, such as the PT_PHDR segment, may contain
no sections, but ordinary, loadable segments should contain
something. */
-
- if (p->p_type == PT_LOAD)
+ if (segment->p_type == PT_LOAD)
_bfd_error_handler
(_("%s: warning: Empty loadable segment detected\n"),
bfd_get_filename (ibfd));
- m->count = 0;
- *pm = m;
- pm = &m->next;
+ map->count = 0;
+ *pointer_to_map = map;
+ pointer_to_map = &map->next;
continue;
}
@@ -3716,7 +3901,8 @@ copy_private_bfd_data (ibfd, obfd)
pointers that we are interested in. As these sections get assigned
to a segment, they are removed from this array. */
- sections = (asection **) bfd_malloc (sizeof (asection *) * csecs);
+ sections = (asection **) bfd_malloc
+ (sizeof (asection *) * section_count);
if (sections == NULL)
return false;
@@ -3726,70 +3912,67 @@ copy_private_bfd_data (ibfd, obfd)
case, where the sections have not been moved, this means that
we have completely filled the segment, and there is nothing
more to do. */
-
isec = 0;
matching_lma = 0;
suggested_lma = 0;
- for (j = 0, s = ibfd->sections; s != NULL; s = s->next)
+ for (j = 0, section = ibfd->sections;
+ section != NULL;
+ section = section->next)
{
- os = s->output_section;
-
- if ((((IS_CONTAINED_BY (s->vma, s->_raw_size, p->p_vaddr, p)
- || IS_SOLARIS_PT_INTERP (p, s))
- && (s->flags & SEC_ALLOC) != 0)
- || IS_COREFILE_NOTE (p, s))
- && os != NULL)
+ if (INCLUDE_SECTION_IN_SEGMENT (section, segment))
{
- sections[j++] = s;
+ output_section = section->output_section;
+
+ sections[j ++] = section;
/* The Solaris native linker always sets p_paddr to 0.
We try to catch that case here, and set it to the
correct value. */
- if (p->p_paddr == 0
- && p->p_vaddr != 0
+ if (segment->p_paddr == 0
+ && segment->p_vaddr != 0
&& isec == 0
- && os->lma != 0
- && (os->vma == (p->p_vaddr
- + (m->includes_filehdr
- ? iehdr->e_ehsize
- : 0)
- + (m->includes_phdrs
- ? iehdr->e_phnum * iehdr->e_phentsize
- : 0))))
- m->p_paddr = p->p_vaddr;
+ && output_section->lma != 0
+ && (output_section->vma == (segment->p_vaddr
+ + (map->includes_filehdr
+ ? iehdr->e_ehsize
+ : 0)
+ + (map->includes_phdrs
+ ? iehdr->e_phnum * iehdr->e_phentsize
+ : 0))))
+ map->p_paddr = segment->p_vaddr;
/* Match up the physical address of the segment with the
LMA address of the output section. */
- if (IS_CONTAINED_BY (os->lma, os->_raw_size, m->p_paddr, p)
- || IS_COREFILE_NOTE (p, s))
+ if (IS_CONTAINED_BY_LMA (output_section, segment, map->p_paddr)
+ || IS_COREFILE_NOTE (segment, section))
{
if (matching_lma == 0)
- matching_lma = os->lma;
+ matching_lma = output_section->lma;
/* We assume that if the section fits within the segment
- that it does not overlap any other section within that
+ then it does not overlap any other section within that
segment. */
- m->sections[isec++] = os;
+ map->sections[isec ++] = output_section;
}
else if (suggested_lma == 0)
- suggested_lma = os->lma;
+ suggested_lma = output_section->lma;
}
}
- BFD_ASSERT (j == csecs);
+ BFD_ASSERT (j == section_count);
/* Step Two: Adjust the physical address of the current segment,
if necessary. */
- if (isec == csecs)
+ if (isec == section_count)
{
/* All of the sections fitted within the segment as currently
specified. This is the default case. Add the segment to
the list of built segments and carry on to process the next
program header in the input BFD. */
- m->count = csecs;
- *pm = m;
- pm = &m->next;
+ map->count = section_count;
+ *pointer_to_map = map;
+ pointer_to_map = &map->next;
free (sections);
continue;
@@ -3801,25 +3984,33 @@ copy_private_bfd_data (ibfd, obfd)
/* At least one section fits inside the current segment.
Keep it, but modify its physical address to match the
LMA of the first section that fitted. */
-
- m->p_paddr = matching_lma;
+ map->p_paddr = matching_lma;
}
else
{
/* None of the sections fitted inside the current segment.
Change the current segment's physical address to match
the LMA of the first section. */
-
- m->p_paddr = suggested_lma;
+ map->p_paddr = suggested_lma;
}
- /* Offset the segment physical address from the lma to allow
- for space taken up by elf headers. */
- if (m->includes_filehdr)
- m->p_paddr -= iehdr->e_ehsize;
+ /* Offset the segment physical address from the lma
+ to allow for space taken up by elf headers. */
+ if (map->includes_filehdr)
+ map->p_paddr -= iehdr->e_ehsize;
- if (m->includes_phdrs)
- m->p_paddr -= iehdr->e_phnum * iehdr->e_phentsize;
+ if (map->includes_phdrs)
+ {
+ map->p_paddr -= iehdr->e_phnum * iehdr->e_phentsize;
+
+ /* iehdr->e_phnum is just an estimate of the number
+ of program headers that we will need. Make a note
+ here of the number we used and the segment we chose
+ to hold these headers, so that we can adjust the
+ offset when we know the correct value. */
+ phdr_adjust_num = iehdr->e_phnum;
+ phdr_adjust_seg = map;
+ }
}
/* Step Three: Loop over the sections again, this time assigning
@@ -3832,97 +4023,99 @@ copy_private_bfd_data (ibfd, obfd)
isec = 0;
do
{
- m->count = 0;
+ map->count = 0;
suggested_lma = 0;
/* Fill the current segment with sections that fit. */
- for (j = 0; j < csecs; j++)
+ for (j = 0; j < section_count; j++)
{
- s = sections[j];
+ section = sections[j];
- if (s == NULL)
+ if (section == NULL)
continue;
- os = s->output_section;
+ output_section = section->output_section;
+
+ BFD_ASSERT (output_section != NULL);
- if (IS_CONTAINED_BY (os->lma, os->_raw_size, m->p_paddr, p)
- || IS_COREFILE_NOTE (p, s))
+ if (IS_CONTAINED_BY_LMA (output_section, segment, map->p_paddr)
+ || IS_COREFILE_NOTE (segment, section))
{
- if (m->count == 0)
+ if (map->count == 0)
{
/* If the first section in a segment does not start at
- the beginning of the segment, then something is wrong. */
- if (os->lma != (m->p_paddr
- + (m->includes_filehdr
- ? iehdr->e_ehsize : 0)
- + (m->includes_phdrs
- ? iehdr->e_phnum * iehdr->e_phentsize
- : 0)))
+ the beginning of the segment, then something is
+ wrong. */
+ if (output_section->lma !=
+ (map->p_paddr
+ + (map->includes_filehdr ? iehdr->e_ehsize : 0)
+ + (map->includes_phdrs
+ ? iehdr->e_phnum * iehdr->e_phentsize
+ : 0)))
abort ();
}
else
{
asection * prev_sec;
- bfd_vma maxpagesize;
- prev_sec = m->sections[m->count - 1];
- maxpagesize = get_elf_backend_data (obfd)->maxpagesize;
+ prev_sec = map->sections[map->count - 1];
/* If the gap between the end of the previous section
- and the start of this section is more than maxpagesize
- then we need to start a new segment. */
- if (BFD_ALIGN (prev_sec->lma + prev_sec->_raw_size, maxpagesize)
- < BFD_ALIGN (os->lma, maxpagesize))
+ and the start of this section is more than
+ maxpagesize then we need to start a new segment. */
+ if ((BFD_ALIGN (prev_sec->lma + prev_sec->_raw_size, maxpagesize)
+ < BFD_ALIGN (output_section->lma, maxpagesize))
+ || ((prev_sec->lma + prev_sec->_raw_size) > output_section->lma))
{
if (suggested_lma == 0)
- suggested_lma = os->lma;
+ suggested_lma = output_section->lma;
continue;
}
}
- m->sections[m->count++] = os;
+ map->sections[map->count++] = output_section;
++isec;
sections[j] = NULL;
+ section->segment_mark = true;
}
else if (suggested_lma == 0)
- suggested_lma = os->lma;
+ suggested_lma = output_section->lma;
}
- BFD_ASSERT (m->count > 0);
+ BFD_ASSERT (map->count > 0);
/* Add the current segment to the list of built segments. */
- *pm = m;
- pm = &m->next;
+ *pointer_to_map = map;
+ pointer_to_map = &map->next;
- if (isec < csecs)
+ if (isec < section_count)
{
/* We still have not allocated all of the sections to
segments. Create a new segment here, initialise it
and carry on looping. */
-
- m = ((struct elf_segment_map *)
- bfd_alloc (obfd,
- (sizeof (struct elf_segment_map)
- + ((size_t) csecs - 1) * sizeof (asection *))));
- if (m == NULL)
+ map = ((struct elf_segment_map *)
+ bfd_alloc (obfd,
+ (sizeof (struct elf_segment_map)
+ + ((size_t) section_count - 1)
+ * sizeof (asection *))));
+ if (map == NULL)
return false;
/* Initialise the fields of the segment map. Set the physical
physical address to the LMA of the first section that has
not yet been assigned. */
-
- m->next = NULL;
- m->p_type = p->p_type;
- m->p_flags = p->p_flags;
- m->p_flags_valid = 1;
- m->p_paddr = suggested_lma;
- m->p_paddr_valid = 1;
- m->includes_filehdr = 0;
- m->includes_phdrs = 0;
+ map->next = NULL;
+ map->p_type = segment->p_type;
+ map->p_flags = segment->p_flags;
+ map->p_flags_valid = 1;
+ map->p_paddr = suggested_lma;
+ map->p_paddr_valid = 1;
+ map->includes_filehdr = 0;
+ map->includes_phdrs = 0;
}
}
- while (isec < csecs);
+ while (isec < section_count);
free (sections);
}
@@ -3931,44 +4124,65 @@ copy_private_bfd_data (ibfd, obfd)
p_paddr fields are zero. When we try to objcopy or strip such a
file, we get confused. Check for this case, and if we find it
reset the p_paddr_valid fields. */
- for (m = mfirst; m != NULL; m = m->next)
- if (m->p_paddr != 0)
+ for (map = map_first; map != NULL; map = map->next)
+ if (map->p_paddr != 0)
break;
- if (m == NULL)
+ if (map == NULL)
{
- for (m = mfirst; m != NULL; m = m->next)
- m->p_paddr_valid = 0;
+ for (map = map_first; map != NULL; map = map->next)
+ map->p_paddr_valid = 0;
}
- elf_tdata (obfd)->segment_map = mfirst;
+ elf_tdata (obfd)->segment_map = map_first;
+
+ /* If we had to estimate the number of program headers that were
+ going to be needed, then check our estimate know and adjust
+ the offset if necessary. */
+ if (phdr_adjust_seg != NULL)
+ {
+ unsigned int count;
+
+ for (count = 0, map = map_first; map != NULL; map = map->next)
+ count++;
+
+ if (count > phdr_adjust_num)
+ phdr_adjust_seg->p_paddr
+ -= (count - phdr_adjust_num) * iehdr->e_phentsize;
+ }
#if 0
- /* Final Step: Sort the segments into ascending order of physical address. */
- if (mfirst != NULL)
+ /* Final Step: Sort the segments into ascending order of physical
+ address. */
+ if (map_first != NULL)
{
- struct elf_segment_map* prev;
+ struct elf_segment_map *prev;
- prev = mfirst;
- for (m = mfirst->next; m != NULL; prev = m, m = m->next)
+ prev = map_first;
+ for (map = map_first->next; map != NULL; prev = map, map = map->next)
{
- /* Yes I know - its a bubble sort....*/
- if (m->next != NULL && (m->next->p_paddr < m->p_paddr))
+ /* Yes I know - its a bubble sort.... */
+ if (map->next != NULL && (map->next->p_paddr < map->p_paddr))
{
- /* swap m and m->next */
- prev->next = m->next;
- m->next = m->next->next;
- prev->next->next = m;
+ /* Swap map and map->next. */
+ prev->next = map->next;
+ map->next = map->next->next;
+ prev->next->next = map;
- /* restart loop. */
- m = mfirst;
+ /* Restart loop. */
+ map = map_first;
}
}
}
#endif
-#undef IS_CONTAINED_BY
-#undef IS_SOLARIS_PT_INTERP
+#undef SEGMENT_END
+#undef IS_CONTAINED_BY_VMA
+#undef IS_CONTAINED_BY_LMA
#undef IS_COREFILE_NOTE
+#undef IS_SOLARIS_PT_INTERP
+#undef INCLUDE_SECTION_IN_SEGMENT
+#undef SEGMENT_AFTER_SEGMENT
+#undef SEGMENT_OVERLAPS
return true;
}
@@ -4090,7 +4304,7 @@ swap_out_syms (abfd, sttp, relocatable_p)
if (!elf_map_symbols (abfd))
return false;
- /* Dump out the symtabs. */
+ /* Dump out the symtabs. */
{
int symcount = bfd_get_symcount (abfd);
asymbol **syms = bfd_get_outsymbols (abfd);
@@ -4141,9 +4355,11 @@ swap_out_syms (abfd, sttp, relocatable_p)
flagword flags = syms[idx]->flags;
int type;
- if (flags & BSF_SECTION_SYM)
- /* Section symbols have no names. */
- sym.st_name = 0;
+ if ((flags & BSF_SECTION_SYM) != 0)
+ {
+ /* Section symbols have no name. */
+ sym.st_name = 0;
+ }
else
{
sym.st_name = (unsigned long) _bfd_stringtab_add (stt,
@@ -4781,13 +4997,14 @@ _bfd_elf_find_nearest_line (abfd,
asymbol **p;
if (_bfd_dwarf1_find_nearest_line (abfd, section, symbols, offset,
- filename_ptr, functionname_ptr,
+ filename_ptr, functionname_ptr,
line_ptr))
return true;
if (_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
filename_ptr, functionname_ptr,
- line_ptr, 0))
+ line_ptr, 0,
+ &elf_tdata (abfd)->dwarf2_find_line_info))
return true;
if (! _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset,
@@ -4908,7 +5125,7 @@ _bfd_elf_validate_reloc (abfd, areloc)
bfd *abfd;
arelent *areloc;
{
- /* Check whether we really have an ELF howto. */
+ /* Check whether we really have an ELF howto. */
if ((*areloc->sym_ptr_ptr)->the_bfd->xvec != abfd->xvec)
{
@@ -4916,7 +5133,7 @@ _bfd_elf_validate_reloc (abfd, areloc)
reloc_howto_type *howto;
/* Alien reloc: Try to determine its type to replace it with an
- equivalent ELF reloc. */
+ equivalent ELF reloc. */
if (areloc->howto->pc_relative)
{
@@ -5029,48 +5246,44 @@ _bfd_elf_rel_vtable_reloc_fn (abfd, re, symbol, data, is, obfd, errmsg)
{
return bfd_reloc_ok;
}
-
/* Elf core file support. Much of this only works on native
toolchains, since we rely on knowing the
machine-dependent procfs structure in order to pick
- out details about the corefile. */
+ out details about the corefile. */
#ifdef HAVE_SYS_PROCFS_H
# include <sys/procfs.h>
#endif
-
-/* Define offsetof for those systems which lack it. */
+/* Define offsetof for those systems which lack it. */
#ifndef offsetof
# define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER)
#endif
-
-/* FIXME: this is kinda wrong, but it's what gdb wants. */
+/* FIXME: this is kinda wrong, but it's what gdb wants. */
static int
elfcore_make_pid (abfd)
- bfd* abfd;
+ bfd *abfd;
{
return ((elf_tdata (abfd)->core_lwpid << 16)
+ (elf_tdata (abfd)->core_pid));
}
-
/* If there isn't a section called NAME, make one, using
data from SECT. Note, this function will generate a
reference to NAME, so you shouldn't deallocate or
- overwrite it. */
+ overwrite it. */
static boolean
elfcore_maybe_make_sect (abfd, name, sect)
- bfd* abfd;
- char* name;
- asection* sect;
+ bfd *abfd;
+ char *name;
+ asection *sect;
{
- asection* sect2;
+ asection *sect2;
if (bfd_get_section_by_name (abfd, name) != NULL)
return true;
@@ -5086,9 +5299,8 @@ elfcore_maybe_make_sect (abfd, name, sect)
return true;
}
-
/* prstatus_t exists on:
- solaris 2.[567]
+ solaris 2.5+
linux 2.[01] + glibc
unixware 4.2
*/
@@ -5096,33 +5308,68 @@ elfcore_maybe_make_sect (abfd, name, sect)
#if defined (HAVE_PRSTATUS_T)
static boolean
elfcore_grok_prstatus (abfd, note)
- bfd* abfd;
- Elf_Internal_Note* note;
+ bfd *abfd;
+ Elf_Internal_Note *note;
{
- prstatus_t prstat;
char buf[100];
- char* name;
- asection* sect;
+ char *name;
+ asection *sect;
+ int raw_size;
+ int offset;
- if (note->descsz != sizeof (prstat))
- return true;
+ if (note->descsz == sizeof (prstatus_t))
+ {
+ prstatus_t prstat;
- memcpy (&prstat, note->descdata, sizeof (prstat));
+ raw_size = sizeof (prstat.pr_reg);
+ offset = offsetof (prstatus_t, pr_reg);
+ memcpy (&prstat, note->descdata, sizeof (prstat));
- elf_tdata (abfd)->core_signal = prstat.pr_cursig;
- elf_tdata (abfd)->core_pid = prstat.pr_pid;
+ elf_tdata (abfd)->core_signal = prstat.pr_cursig;
+ elf_tdata (abfd)->core_pid = prstat.pr_pid;
- /* pr_who exists on:
- solaris 2.[567]
- unixware 4.2
- pr_who doesn't exist on:
- linux 2.[01]
- */
+ /* pr_who exists on:
+ solaris 2.5+
+ unixware 4.2
+ pr_who doesn't exist on:
+ linux 2.[01]
+ */
#if defined (HAVE_PRSTATUS_T_PR_WHO)
- elf_tdata (abfd)->core_lwpid = prstat.pr_who;
+ elf_tdata (abfd)->core_lwpid = prstat.pr_who;
#endif
+ }
+#if defined (HAVE_PRSTATUS32_T)
+ else if (note->descsz == sizeof (prstatus32_t))
+ {
+ /* 64-bit host, 32-bit corefile */
+ prstatus32_t prstat;
+
+ raw_size = sizeof (prstat.pr_reg);
+ offset = offsetof (prstatus32_t, pr_reg);
+ memcpy (&prstat, note->descdata, sizeof (prstat));
+
+ elf_tdata (abfd)->core_signal = prstat.pr_cursig;
+ elf_tdata (abfd)->core_pid = prstat.pr_pid;
+
+ /* pr_who exists on:
+ solaris 2.5+
+ unixware 4.2
+ pr_who doesn't exist on:
+ linux 2.[01]
+ */
+#if defined (HAVE_PRSTATUS32_T_PR_WHO)
+ elf_tdata (abfd)->core_lwpid = prstat.pr_who;
+#endif
+ }
+#endif /* HAVE_PRSTATUS32_T */
+ else
+ {
+ /* Fail - we don't know how to handle any other
+ note size (ie. data object type). */
+ return true;
+ }
- /* Make a ".reg/999" section. */
+ /* Make a ".reg/999" section. */
sprintf (buf, ".reg/%d", elfcore_make_pid (abfd));
name = bfd_alloc (abfd, strlen (buf) + 1);
@@ -5133,8 +5380,10 @@ elfcore_grok_prstatus (abfd, note)
sect = bfd_make_section (abfd, name);
if (sect == NULL)
return false;
- sect->_raw_size = sizeof (prstat.pr_reg);
- sect->filepos = note->descpos + offsetof (prstatus_t, pr_reg);
+
+ sect->_raw_size = raw_size;
+ sect->filepos = note->descpos + offset;
+
sect->flags = SEC_HAS_CONTENTS;
sect->alignment_power = 2;
@@ -5145,7 +5394,6 @@ elfcore_grok_prstatus (abfd, note)
}
#endif /* defined (HAVE_PRSTATUS_T) */
-
/* Create a pseudosection containing the exact contents of NOTE. This
actually creates up to two pseudosections:
- For the single-threaded case, a section named NAME, unless
@@ -5156,13 +5404,13 @@ elfcore_grok_prstatus (abfd, note)
static boolean
elfcore_make_note_pseudosection (abfd, name, note)
- bfd* abfd;
+ bfd *abfd;
char *name;
- Elf_Internal_Note* note;
+ Elf_Internal_Note *note;
{
char buf[100];
char *threaded_name;
- asection* sect;
+ asection *sect;
/* Build the section name. */
@@ -5186,54 +5434,58 @@ elfcore_make_note_pseudosection (abfd, name, note)
return true;
}
-
/* There isn't a consistent prfpregset_t across platforms,
but it doesn't matter, because we don't have to pick this
- data structure apart. */
+ data structure apart. */
+
static boolean
elfcore_grok_prfpreg (abfd, note)
- bfd* abfd;
- Elf_Internal_Note* note;
+ bfd *abfd;
+ Elf_Internal_Note *note;
{
return elfcore_make_note_pseudosection (abfd, ".reg2", note);
}
-
/* Linux dumps the Intel SSE regs in a note named "LINUX" with a note
type of 5 (NT_PRXFPREG). Just include the whole note's contents
literally. */
+
static boolean
elfcore_grok_prxfpreg (abfd, note)
- bfd* abfd;
- Elf_Internal_Note* note;
+ bfd *abfd;
+ Elf_Internal_Note *note;
{
return elfcore_make_note_pseudosection (abfd, ".reg-xfp", note);
}
-
#if defined (HAVE_PRPSINFO_T)
-# define elfcore_psinfo_t prpsinfo_t
+typedef prpsinfo_t elfcore_psinfo_t;
+#if defined (HAVE_PRPSINFO32_T) /* Sparc64 cross Sparc32 */
+typedef prpsinfo32_t elfcore_psinfo32_t;
+#endif
#endif
#if defined (HAVE_PSINFO_T)
-# define elfcore_psinfo_t psinfo_t
+typedef psinfo_t elfcore_psinfo_t;
+#if defined (HAVE_PSINFO32_T) /* Sparc64 cross Sparc32 */
+typedef psinfo32_t elfcore_psinfo32_t;
+#endif
#endif
-
#if defined (HAVE_PRPSINFO_T) || defined (HAVE_PSINFO_T)
/* return a malloc'ed copy of a string at START which is at
most MAX bytes long, possibly without a terminating '\0'.
- the copy will always have a terminating '\0'. */
+ the copy will always have a terminating '\0'. */
static char*
elfcore_strndup (abfd, start, max)
- bfd* abfd;
- char* start;
+ bfd *abfd;
+ char *start;
int max;
{
- char* dup;
- char* end = memchr (start, '\0', max);
+ char *dup;
+ char *end = memchr (start, '\0', max);
int len;
if (end == NULL)
@@ -5253,28 +5505,50 @@ elfcore_strndup (abfd, start, max)
static boolean
elfcore_grok_psinfo (abfd, note)
- bfd* abfd;
- Elf_Internal_Note* note;
+ bfd *abfd;
+ Elf_Internal_Note *note;
{
- elfcore_psinfo_t psinfo;
+ if (note->descsz == sizeof (elfcore_psinfo_t))
+ {
+ elfcore_psinfo_t psinfo;
- if (note->descsz != sizeof (elfcore_psinfo_t))
- return true;
+ memcpy (&psinfo, note->descdata, sizeof (psinfo));
+
+ elf_tdata (abfd)->core_program
+ = elfcore_strndup (abfd, psinfo.pr_fname, sizeof (psinfo.pr_fname));
- memcpy (&psinfo, note->descdata, note->descsz);
+ elf_tdata (abfd)->core_command
+ = elfcore_strndup (abfd, psinfo.pr_psargs, sizeof (psinfo.pr_psargs));
+ }
+#if defined (HAVE_PRPSINFO32_T) || defined (HAVE_PSINFO32_T)
+ else if (note->descsz == sizeof (elfcore_psinfo32_t))
+ {
+ /* 64-bit host, 32-bit corefile */
+ elfcore_psinfo32_t psinfo;
- elf_tdata (abfd)->core_program
- = elfcore_strndup (abfd, psinfo.pr_fname, sizeof (psinfo.pr_fname));
+ memcpy (&psinfo, note->descdata, sizeof (psinfo));
- elf_tdata (abfd)->core_command
- = elfcore_strndup (abfd, psinfo.pr_psargs, sizeof (psinfo.pr_psargs));
+ elf_tdata (abfd)->core_program
+ = elfcore_strndup (abfd, psinfo.pr_fname, sizeof (psinfo.pr_fname));
+
+ elf_tdata (abfd)->core_command
+ = elfcore_strndup (abfd, psinfo.pr_psargs, sizeof (psinfo.pr_psargs));
+ }
+#endif
+
+ else
+ {
+ /* Fail - we don't know how to handle any other
+ note size (ie. data object type). */
+ return true;
+ }
/* Note that for some reason, a spurious space is tacked
onto the end of the args in some (at least one anyway)
- implementations, so strip it off if it exists. */
+ implementations, so strip it off if it exists. */
{
- char* command = elf_tdata (abfd)->core_command;
+ char *command = elf_tdata (abfd)->core_command;
int n = strlen (command);
if (0 < n && command[n - 1] == ' ')
@@ -5285,43 +5559,59 @@ elfcore_grok_psinfo (abfd, note)
}
#endif /* defined (HAVE_PRPSINFO_T) || defined (HAVE_PSINFO_T) */
-
#if defined (HAVE_PSTATUS_T)
static boolean
elfcore_grok_pstatus (abfd, note)
- bfd* abfd;
- Elf_Internal_Note* note;
+ bfd *abfd;
+ Elf_Internal_Note *note;
{
- pstatus_t pstat;
+ if (note->descsz == sizeof (pstatus_t)
+#if defined (HAVE_PXSTATUS_T)
+ || note->descsz == sizeof (pxstatus_t)
+#endif
+ )
+ {
+ pstatus_t pstat;
- if (note->descsz != sizeof (pstat))
- return true;
+ memcpy (&pstat, note->descdata, sizeof (pstat));
- memcpy (&pstat, note->descdata, sizeof (pstat));
+ elf_tdata (abfd)->core_pid = pstat.pr_pid;
+ }
+#if defined (HAVE_PSTATUS32_T)
+ else if (note->descsz == sizeof (pstatus32_t))
+ {
+ /* 64-bit host, 32-bit corefile */
+ pstatus32_t pstat;
- elf_tdata (abfd)->core_pid = pstat.pr_pid;
+ memcpy (&pstat, note->descdata, sizeof (pstat));
+ elf_tdata (abfd)->core_pid = pstat.pr_pid;
+ }
+#endif
/* Could grab some more details from the "representative"
lwpstatus_t in pstat.pr_lwp, but we'll catch it all in an
- NT_LWPSTATUS note, presumably. */
+ NT_LWPSTATUS note, presumably. */
return true;
}
#endif /* defined (HAVE_PSTATUS_T) */
-
#if defined (HAVE_LWPSTATUS_T)
static boolean
elfcore_grok_lwpstatus (abfd, note)
- bfd* abfd;
- Elf_Internal_Note* note;
+ bfd *abfd;
+ Elf_Internal_Note *note;
{
lwpstatus_t lwpstat;
char buf[100];
- char* name;
- asection* sect;
+ char *name;
+ asection *sect;
- if (note->descsz != sizeof (lwpstat))
+ if (note->descsz != sizeof (lwpstat)
+#if defined (HAVE_LWPXSTATUS_T)
+ && note->descsz != sizeof (lwpxstatus_t)
+#endif
+ )
return true;
memcpy (&lwpstat, note->descdata, sizeof (lwpstat));
@@ -5329,7 +5619,7 @@ elfcore_grok_lwpstatus (abfd, note)
elf_tdata (abfd)->core_lwpid = lwpstat.pr_lwpid;
elf_tdata (abfd)->core_signal = lwpstat.pr_cursig;
- /* Make a ".reg/999" section. */
+ /* Make a ".reg/999" section. */
sprintf (buf, ".reg/%d", elfcore_make_pid (abfd));
name = bfd_alloc (abfd, strlen (buf) + 1);
@@ -5394,41 +5684,41 @@ elfcore_grok_lwpstatus (abfd, note)
#if defined (HAVE_WIN32_PSTATUS_T)
static boolean
elfcore_grok_win32pstatus (abfd, note)
- bfd * abfd;
- Elf_Internal_Note * note;
+ bfd *abfd;
+ Elf_Internal_Note *note;
{
char buf[30];
- char * name;
- asection * sect;
+ char *name;
+ asection *sect;
win32_pstatus_t pstatus;
if (note->descsz < sizeof (pstatus))
return true;
- memcpy (& pstatus, note->descdata, note->descsz);
-
- switch (pstatus.data_type)
+ memcpy (&pstatus, note->descdata, note->descsz);
+
+ switch (pstatus.data_type)
{
case NOTE_INFO_PROCESS:
/* FIXME: need to add ->core_command. */
elf_tdata (abfd)->core_signal = pstatus.data.process_info.signal;
elf_tdata (abfd)->core_pid = pstatus.data.process_info.pid;
- break ;
+ break;
case NOTE_INFO_THREAD:
/* Make a ".reg/999" section. */
sprintf (buf, ".reg/%d", pstatus.data.thread_info.tid);
-
+
name = bfd_alloc (abfd, strlen (buf) + 1);
if (name == NULL)
- return false;
-
+ return false;
+
strcpy (name, buf);
sect = bfd_make_section (abfd, name);
if (sect == NULL)
- return false;
-
+ return false;
+
sect->_raw_size = sizeof (pstatus.data.thread_info.thread_context);
sect->filepos = note->descpos + offsetof (struct win32_pstatus,
data.thread_info.thread_context);
@@ -5442,19 +5732,19 @@ elfcore_grok_win32pstatus (abfd, note)
case NOTE_INFO_MODULE:
/* Make a ".module/xxxxxxxx" section. */
- sprintf (buf, ".module/%08x" , pstatus.data.module_info.base_address);
-
+ sprintf (buf, ".module/%08x", pstatus.data.module_info.base_address);
+
name = bfd_alloc (abfd, strlen (buf) + 1);
if (name == NULL)
return false;
-
+
strcpy (name, buf);
sect = bfd_make_section (abfd, name);
-
+
if (sect == NULL)
return false;
-
+
sect->_raw_size = note->descsz;
sect->filepos = note->descpos;
sect->flags = SEC_HAS_CONTENTS;
@@ -5471,8 +5761,8 @@ elfcore_grok_win32pstatus (abfd, note)
static boolean
elfcore_grok_note (abfd, note)
- bfd* abfd;
- Elf_Internal_Note* note;
+ bfd *abfd;
+ Elf_Internal_Note *note;
{
switch (note->type)
{
@@ -5498,11 +5788,11 @@ elfcore_grok_note (abfd, note)
return elfcore_grok_prfpreg (abfd, note);
#if defined (HAVE_WIN32_PSTATUS_T)
- case NT_WIN32PSTATUS:
+ case NT_WIN32PSTATUS:
return elfcore_grok_win32pstatus (abfd, note);
#endif
- case NT_PRXFPREG: /* Linux SSE extension */
+ case NT_PRXFPREG: /* Linux SSE extension */
if (note->namesz == 5
&& ! strcmp (note->namedata, "LINUX"))
return elfcore_grok_prxfpreg (abfd, note);
@@ -5517,15 +5807,14 @@ elfcore_grok_note (abfd, note)
}
}
-
static boolean
elfcore_read_notes (abfd, offset, size)
- bfd* abfd;
+ bfd *abfd;
bfd_vma offset;
bfd_vma size;
{
- char* buf;
- char* p;
+ char *buf;
+ char *p;
if (size <= 0)
return true;
@@ -5547,8 +5836,8 @@ elfcore_read_notes (abfd, offset, size)
p = buf;
while (p < buf + size)
{
- /* FIXME: bad alignment assumption. */
- Elf_External_Note* xnp = (Elf_External_Note*) p;
+ /* FIXME: bad alignment assumption. */
+ Elf_External_Note *xnp = (Elf_External_Note *) p;
Elf_Internal_Note in;
in.type = bfd_h_get_32 (abfd, (bfd_byte *) xnp->type);
@@ -5570,13 +5859,12 @@ elfcore_read_notes (abfd, offset, size)
return true;
}
-
/* FIXME: This function is now unnecessary. Callers can just call
bfd_section_from_phdr directly. */
boolean
_bfd_elfcore_section_from_phdr (abfd, phdr, sec_num)
- bfd* abfd;
+ bfd *abfd;
Elf_Internal_Phdr* phdr;
int sec_num;
{
@@ -5585,14 +5873,13 @@ _bfd_elfcore_section_from_phdr (abfd, phdr, sec_num)
return true;
}
-
-
/* Providing external access to the ELF program header table. */
/* Return an upper bound on the number of bytes required to store a
copy of ABFD's program header table entries. Return -1 if an error
occurs; bfd_get_error will return an appropriate code. */
+
long
bfd_get_elf_phdr_upper_bound (abfd)
bfd *abfd;
@@ -5607,7 +5894,6 @@ bfd_get_elf_phdr_upper_bound (abfd)
* sizeof (Elf_Internal_Phdr));
}
-
/* Copy ABFD's program header table entries to *PHDRS. The entries
will be stored as an array of Elf_Internal_Phdr structures, as
defined in include/elf/internal.h. To find out how large the
@@ -5615,6 +5901,7 @@ bfd_get_elf_phdr_upper_bound (abfd)
Return the number of program header table entries read, or -1 if an
error occurs; bfd_get_error will return an appropriate code. */
+
int
bfd_get_elf_phdrs (abfd, phdrs)
bfd *abfd;
@@ -5629,7 +5916,7 @@ bfd_get_elf_phdrs (abfd, phdrs)
}
num_phdrs = elf_elfheader (abfd)->e_phnum;
- memcpy (phdrs, elf_tdata (abfd)->phdr,
+ memcpy (phdrs, elf_tdata (abfd)->phdr,
num_phdrs * sizeof (Elf_Internal_Phdr));
return num_phdrs;
diff --git a/contrib/binutils/bfd/elf32-arm.h b/contrib/binutils/bfd/elf32-arm.h
index 2e8a657..0f2ac8a 100644
--- a/contrib/binutils/bfd/elf32-arm.h
+++ b/contrib/binutils/bfd/elf32-arm.h
@@ -1,5 +1,5 @@
/* 32-bit ELF support for ARM
- Copyright 1998, 1999 Free Software Foundation, Inc.
+ Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -17,7 +17,6 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
typedef unsigned long int insn32;
typedef unsigned short int insn16;
@@ -37,7 +36,6 @@ static bfd_reloc_status_type elf32_arm_final_link_relocate
PARAMS ((reloc_howto_type *, bfd *, bfd *, asection *, bfd_byte *,
Elf_Internal_Rela *, bfd_vma, struct bfd_link_info *, asection *,
const char *, unsigned char, struct elf_link_hash_entry *));
-
static insn32 insert_thumb_branch
PARAMS ((insn32, int));
static struct elf_link_hash_entry *find_thumb_glue
@@ -57,14 +55,12 @@ static int elf32_thumb_to_arm_stub
PARAMS ((struct bfd_link_info *, const char *, bfd *, bfd *, asection *,
bfd_byte *, asection *, bfd_vma, bfd_signed_vma, bfd_vma));
+#define INTERWORK_FLAG(abfd) (elf_elfheader (abfd)->e_flags & EF_INTERWORK)
+
/* The linker script knows the section names for placement.
The entry_names are used to do simple name mangling on the stubs.
Given a function name, and its type, the stub can be found. The
- name can be changed. The only requirement is the %s be present.
- */
-
-#define INTERWORK_FLAG( abfd ) (elf_elfheader (abfd)->e_flags & EF_INTERWORK)
-
+ name can be changed. The only requirement is the %s be present. */
#define THUMB2ARM_GLUE_SECTION_NAME ".glue_7t"
#define THUMB2ARM_GLUE_ENTRY_NAME "__%s_from_thumb"
@@ -76,14 +72,12 @@ static int elf32_thumb_to_arm_stub
#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
/* The size in bytes of an entry in the procedure linkage table. */
-
#define PLT_ENTRY_SIZE 16
/* The first entry in a procedure linkage table looks like
this. It is set up so that any shared library function that is
called before the relocation has been set up calls the dynamic
- linker first */
-
+ linker first. */
static const bfd_byte elf32_arm_plt0_entry [PLT_ENTRY_SIZE] =
{
0x04, 0xe0, 0x2d, 0xe5, /* str lr, [sp, #-4]! */
@@ -94,7 +88,6 @@ static const bfd_byte elf32_arm_plt0_entry [PLT_ENTRY_SIZE] =
/* Subsequent entries in a procedure linkage table look like
this. */
-
static const bfd_byte elf32_arm_plt_entry [PLT_ENTRY_SIZE] =
{
0x04, 0xc0, 0x9f, 0xe5, /* ldr ip, [pc, #4] */
@@ -103,7 +96,6 @@ static const bfd_byte elf32_arm_plt_entry [PLT_ENTRY_SIZE] =
0x00, 0x00, 0x00, 0x00 /* offset to symbol in got */
};
-
/* The ARM linker needs to keep track of the number of relocs that it
decides to copy in check_relocs for each symbol. This is so that
it can discard PC relative relocs if it doesn't need them when
@@ -112,7 +104,6 @@ static const bfd_byte elf32_arm_plt_entry [PLT_ENTRY_SIZE] =
/* This structure keeps track of the number of PC relative relocs we
have copied for a given symbol. */
-
struct elf32_arm_pcrel_relocs_copied
{
/* Next section. */
@@ -124,7 +115,6 @@ struct elf32_arm_pcrel_relocs_copied
};
/* Arm ELF linker hash entry. */
-
struct elf32_arm_link_hash_entry
{
struct elf_link_hash_entry root;
@@ -134,12 +124,10 @@ struct elf32_arm_link_hash_entry
};
/* Declare this now that the above structures are defined. */
-
static boolean elf32_arm_discard_copies
PARAMS ((struct elf32_arm_link_hash_entry *, PTR));
/* Traverse an arm ELF linker hash table. */
-
#define elf32_arm_link_hash_traverse(table, func, info) \
(elf_link_hash_traverse \
(&(table)->root, \
@@ -150,26 +138,25 @@ static boolean elf32_arm_discard_copies
#define elf32_arm_hash_table(info) \
((struct elf32_arm_link_hash_table *) ((info)->hash))
-/* ARM ELF linker hash table */
+/* ARM ELF linker hash table. */
struct elf32_arm_link_hash_table
- {
- /* The main hash table. */
- struct elf_link_hash_table root;
-
- /* The size in bytes of the section containg the Thumb-to-ARM glue. */
- long int thumb_glue_size;
+{
+ /* The main hash table. */
+ struct elf_link_hash_table root;
- /* The size in bytes of the section containg the ARM-to-Thumb glue. */
- long int arm_glue_size;
+ /* The size in bytes of the section containg the Thumb-to-ARM glue. */
+ long int thumb_glue_size;
- /* An arbitary input BFD chosen to hold the glue sections. */
- bfd * bfd_of_glue_owner;
+ /* The size in bytes of the section containg the ARM-to-Thumb glue. */
+ long int arm_glue_size;
- /* A boolean indicating whether knowledge of the ARM's pipeline
- length should be applied by the linker. */
- int no_pipeline_knowledge;
- };
+ /* An arbitary input BFD chosen to hold the glue sections. */
+ bfd * bfd_of_glue_owner;
+ /* A boolean indicating whether knowledge of the ARM's pipeline
+ length should be applied by the linker. */
+ int no_pipeline_knowledge;
+};
/* Create an entry in an ARM ELF linker hash table. */
@@ -201,7 +188,7 @@ elf32_arm_link_hash_newfunc (entry, table, string)
return (struct bfd_hash_entry *) ret;
}
-/* Create an ARM elf linker hash table */
+/* Create an ARM elf linker hash table. */
static struct bfd_link_hash_table *
elf32_arm_link_hash_table_create (abfd)
@@ -229,6 +216,8 @@ elf32_arm_link_hash_table_create (abfd)
return &ret->root.root;
}
+/* Locate the Thumb encoded calling stub for NAME. */
+
static struct elf_link_hash_entry *
find_thumb_glue (link_info, name, input_bfd)
struct bfd_link_info *link_info;
@@ -242,7 +231,6 @@ find_thumb_glue (link_info, name, input_bfd)
/* We need a pointer to the armelf specific hash table. */
hash_table = elf32_arm_hash_table (link_info);
-
tmp_name = ((char *)
bfd_malloc (strlen (name) + strlen (THUMB2ARM_GLUE_ENTRY_NAME) + 1));
@@ -255,7 +243,7 @@ find_thumb_glue (link_info, name, input_bfd)
if (hash == NULL)
/* xgettext:c-format */
- _bfd_error_handler (_ ("%s: unable to find THUMB glue '%s' for `%s'"),
+ _bfd_error_handler (_("%s: unable to find THUMB glue '%s' for `%s'"),
bfd_get_filename (input_bfd), tmp_name, name);
free (tmp_name);
@@ -263,6 +251,8 @@ find_thumb_glue (link_info, name, input_bfd)
return hash;
}
+/* Locate the ARM encoded calling stub for NAME. */
+
static struct elf_link_hash_entry *
find_arm_glue (link_info, name, input_bfd)
struct bfd_link_info *link_info;
@@ -288,7 +278,7 @@ find_arm_glue (link_info, name, input_bfd)
if (myh == NULL)
/* xgettext:c-format */
- _bfd_error_handler (_ ("%s: unable to find ARM glue '%s' for `%s'"),
+ _bfd_error_handler (_("%s: unable to find ARM glue '%s' for `%s'"),
bfd_get_filename (input_bfd), tmp_name, name);
free (tmp_name);
@@ -296,24 +286,21 @@ find_arm_glue (link_info, name, input_bfd)
return myh;
}
-/*
- ARM->Thumb glue:
+/* ARM->Thumb glue:
.arm
__func_from_arm:
ldr r12, __func_addr
bx r12
__func_addr:
- .word func @ behave as if you saw a ARM_32 reloc
- */
+ .word func @ behave as if you saw a ARM_32 reloc. */
#define ARM2THUMB_GLUE_SIZE 12
static const insn32 a2t1_ldr_insn = 0xe59fc000;
static const insn32 a2t2_bx_r12_insn = 0xe12fff1c;
static const insn32 a2t3_func_addr_insn = 0x00000001;
-/*
- Thumb->ARM: Thumb->(non-interworking aware) ARM
+/* Thumb->ARM: Thumb->(non-interworking aware) ARM
.thumb .thumb
.align 2 .align 2
@@ -327,8 +314,7 @@ static const insn32 a2t3_func_addr_insn = 0x00000001;
ldmia r13! {r6, lr}
bx lr
__func_addr:
- .word func
- */
+ .word func */
#define THUMB2ARM_GLUE_SIZE 8
static const insn16 t2a1_bx_pc_insn = 0x4778;
@@ -408,7 +394,6 @@ record_arm_to_thumb_glue (link_info, h)
s = bfd_get_section_by_name
(globals->bfd_of_glue_owner, ARM2THUMB_GLUE_SECTION_NAME);
-
BFD_ASSERT (s != NULL);
tmp_name = ((char *)
@@ -423,14 +408,14 @@ record_arm_to_thumb_glue (link_info, h)
if (myh != NULL)
{
+ /* We've already seen this guy. */
free (tmp_name);
- return; /* we've already seen this guy */
+ return;
}
/* The only trick here is using hash_table->arm_glue_size as the value. Even
though the section isn't allocated yet, this is where we will be putting
it. */
-
_bfd_generic_link_add_one_symbol (link_info, globals->bfd_of_glue_owner, tmp_name,
BSF_GLOBAL,
s, globals->arm_glue_size + 1,
@@ -477,8 +462,9 @@ record_thumb_to_arm_glue (link_info, h)
if (myh != NULL)
{
+ /* We've already seen this guy. */
free (tmp_name);
- return; /* we've already seen this guy */
+ return;
}
_bfd_generic_link_add_one_symbol (link_info, hash_table->bfd_of_glue_owner, tmp_name,
@@ -486,17 +472,16 @@ record_thumb_to_arm_glue (link_info, h)
NULL, true, false,
(struct bfd_link_hash_entry **) &myh);
- /* If we mark it 'thumb', the disassembler will do a better job. */
+ /* If we mark it 'Thumb', the disassembler will do a better job. */
bind = ELF_ST_BIND (myh->type);
myh->type = ELF_ST_INFO (bind, STT_ARM_TFUNC);
free (tmp_name);
- /* Allocate another symbol to mark where we switch to arm mode. */
-
#define CHANGE_TO_ARM "__%s_change_to_arm"
#define BACK_FROM_ARM "__%s_back_from_arm"
+ /* Allocate another symbol to mark where we switch to Arm mode. */
tmp_name = (char *) bfd_malloc (strlen (name) + strlen (CHANGE_TO_ARM) + 1);
BFD_ASSERT (tmp_name);
@@ -520,6 +505,7 @@ record_thumb_to_arm_glue (link_info, h)
/* Select a BFD to be used to hold the sections used by the glue code.
This function is called from the linker scripts in ld/emultempl/
{armelf/pe}.em */
+
boolean
bfd_elf32_arm_get_bfd_for_interworking (abfd, info)
bfd *abfd;
@@ -556,7 +542,7 @@ bfd_elf32_arm_get_bfd_for_interworking (abfd, info)
|| !bfd_set_section_flags (abfd, sec, flags)
|| !bfd_set_section_alignment (abfd, sec, 2))
return false;
-
+
/* Set the gc mark to prevent the section from being removed by garbage
collection, despite the fact that no relocs refer to this section. */
sec->gc_mark = 1;
@@ -574,7 +560,7 @@ bfd_elf32_arm_get_bfd_for_interworking (abfd, info)
|| !bfd_set_section_flags (abfd, sec, flags)
|| !bfd_set_section_alignment (abfd, sec, 2))
return false;
-
+
sec->gc_mark = 1;
}
@@ -608,7 +594,6 @@ bfd_elf32_arm_process_before_allocation (abfd, link_info, no_pipeline_knowledge)
/* Here we have a bfd that is to be included on the link. We have a hook
to do reloc rummaging, before section sizes are nailed down. */
-
globals = elf32_arm_hash_table (link_info);
BFD_ASSERT (globals != NULL);
@@ -628,8 +613,8 @@ bfd_elf32_arm_process_before_allocation (abfd, link_info, no_pipeline_knowledge)
continue;
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
- /* Load the relocs. */
+ /* Load the relocs. */
irel = (_bfd_elf32_link_read_relocs (abfd, sec, (PTR) NULL,
(Elf_Internal_Rela *) NULL, false));
@@ -646,7 +631,7 @@ bfd_elf32_arm_process_before_allocation (abfd, link_info, no_pipeline_knowledge)
r_type = ELF32_R_TYPE (irel->r_info);
r_index = ELF32_R_SYM (irel->r_info);
- /* These are the only relocation types we care about */
+ /* These are the only relocation types we care about. */
if ( r_type != R_ARM_PC24
&& r_type != R_ARM_THM_PC22)
continue;
@@ -663,6 +648,7 @@ bfd_elf32_arm_process_before_allocation (abfd, link_info, no_pipeline_knowledge)
contents = (bfd_byte *) bfd_malloc (sec->_raw_size);
if (contents == NULL)
goto error_return;
+
free_contents = contents;
if (!bfd_get_section_contents (abfd, sec, contents,
@@ -684,7 +670,9 @@ bfd_elf32_arm_process_before_allocation (abfd, link_info, no_pipeline_knowledge)
bfd_malloc (symtab_hdr->sh_size));
if (extsyms == NULL)
goto error_return;
+
free_extsyms = extsyms;
+
if (bfd_seek (abfd, symtab_hdr->sh_offset, SEEK_SET) != 0
|| (bfd_read (extsyms, 1, symtab_hdr->sh_size, abfd)
!= symtab_hdr->sh_size))
@@ -692,15 +680,14 @@ bfd_elf32_arm_process_before_allocation (abfd, link_info, no_pipeline_knowledge)
}
}
- /* If the relocation is not against a symbol it cannot concern us. */
-
+ /* If the relocation is not against a symbol it cannot concern us. */
h = NULL;
- /* We don't care about local symbols */
+ /* We don't care about local symbols. */
if (r_index < symtab_hdr->sh_info)
continue;
- /* This is an external symbol */
+ /* This is an external symbol. */
r_index -= symtab_hdr->sh_info;
h = (struct elf_link_hash_entry *)
elf_sym_hashes (abfd)[r_index];
@@ -716,7 +703,6 @@ bfd_elf32_arm_process_before_allocation (abfd, link_info, no_pipeline_knowledge)
/* This one is a call from arm code. We need to look up
the target of the call. If it is a thumb target, we
insert glue. */
-
if (ELF_ST_TYPE(h->type) == STT_ARM_TFUNC)
record_arm_to_thumb_glue (link_info, h);
break;
@@ -725,7 +711,6 @@ bfd_elf32_arm_process_before_allocation (abfd, link_info, no_pipeline_knowledge)
/* This one is a call from thumb code. We look
up the target of the call. If it is not a thumb
target, we insert glue. */
-
if (ELF_ST_TYPE (h->type) != STT_ARM_TFUNC)
record_thumb_to_arm_glue (link_info, h);
break;
@@ -737,7 +722,7 @@ bfd_elf32_arm_process_before_allocation (abfd, link_info, no_pipeline_knowledge)
}
return true;
-
+
error_return:
if (free_relocs != NULL)
free (free_relocs);
@@ -745,7 +730,7 @@ error_return:
free (free_contents);
if (free_extsyms != NULL)
free (free_extsyms);
-
+
return false;
}
@@ -775,10 +760,10 @@ error_return:
moves the computed address into the PC, so it must be the second one
in the sequence. The problem, however is that whilst little endian code
stores the instructions in HI then LOW order, big endian code does the
- reverse. nickc@cygnus.com */
+ reverse. nickc@cygnus.com. */
-#define LOW_HI_ORDER 0xF800F000
-#define HI_LOW_ORDER 0xF000F800
+#define LOW_HI_ORDER 0xF800F000
+#define HI_LOW_ORDER 0xF000F800
static insn32
insert_thumb_branch (br_insn, rel_off)
@@ -788,26 +773,25 @@ insert_thumb_branch (br_insn, rel_off)
unsigned int low_bits;
unsigned int high_bits;
-
BFD_ASSERT ((rel_off & 1) != 1);
- rel_off >>= 1; /* half word aligned address */
- low_bits = rel_off & 0x000007FF; /* the bottom 11 bits */
- high_bits = (rel_off >> 11) & 0x000007FF; /* the top 11 bits */
+ rel_off >>= 1; /* Half word aligned address. */
+ low_bits = rel_off & 0x000007FF; /* The bottom 11 bits. */
+ high_bits = (rel_off >> 11) & 0x000007FF; /* The top 11 bits. */
if ((br_insn & LOW_HI_ORDER) == LOW_HI_ORDER)
br_insn = LOW_HI_ORDER | (low_bits << 16) | high_bits;
else if ((br_insn & HI_LOW_ORDER) == HI_LOW_ORDER)
br_insn = HI_LOW_ORDER | (high_bits << 16) | low_bits;
else
- abort (); /* error - not a valid branch instruction form */
-
- /* FIXME: abort is probably not the right call. krk@cygnus.com */
+ /* FIXME: abort is probably not the right call. krk@cygnus.com */
+ abort (); /* error - not a valid branch instruction form. */
return br_insn;
}
-/* Thumb code calling an ARM function */
+/* Thumb code calling an ARM function. */
+
static int
elf32_thumb_to_arm_stub (info, name, input_bfd, output_bfd, input_section,
hit_data, sym_sec, offset, addend, val)
@@ -854,10 +838,10 @@ elf32_thumb_to_arm_stub (info, name, input_bfd, output_bfd, input_section,
&& !INTERWORK_FLAG (sym_sec->owner))
{
_bfd_error_handler
- (_ ("%s(%s): warning: interworking not enabled."),
+ (_("%s(%s): warning: interworking not enabled."),
bfd_get_filename (sym_sec->owner), name);
_bfd_error_handler
- (_ (" first occurrence: %s: thumb call to arm"),
+ (_(" first occurrence: %s: thumb call to arm"),
bfd_get_filename (input_bfd));
return false;
@@ -873,13 +857,19 @@ elf32_thumb_to_arm_stub (info, name, input_bfd, output_bfd, input_section,
s->contents + my_offset + 2);
ret_offset =
- ((bfd_signed_vma) val) /* Address of destination of the stub */
+ /* Address of destination of the stub. */
+ ((bfd_signed_vma) val)
- ((bfd_signed_vma)
- (s->output_offset /* Offset from the start of the current section to the start of the stubs. */
- + my_offset /* Offset of the start of this stub from the start of the stubs. */
- + s->output_section->vma) /* Address of the start of the current section. */
- + 4 /* The branch instruction is 4 bytes into the stub. */
- + 8); /* ARM branches work from the pc of the instruction + 8. */
+ /* Offset from the start of the current section to the start of the stubs. */
+ (s->output_offset
+ /* Offset of the start of this stub from the start of the stubs. */
+ + my_offset
+ /* Address of the start of the current section. */
+ + s->output_section->vma)
+ /* The branch instruction is 4 bytes into the stub. */
+ + 4
+ /* ARM branches work from the pc of the instruction + 8. */
+ + 8);
bfd_put_32 (output_bfd,
t2a3_b_insn | ((ret_offset >> 2) & 0x00FFFFFF),
@@ -907,7 +897,8 @@ elf32_thumb_to_arm_stub (info, name, input_bfd, output_bfd, input_section,
return true;
}
-/* Arm code calling a Thumb function */
+/* Arm code calling a Thumb function. */
+
static int
elf32_arm_to_thumb_stub (info, name, input_bfd, output_bfd, input_section,
hit_data, sym_sec, offset, addend, val)
@@ -952,12 +943,13 @@ elf32_arm_to_thumb_stub (info, name, input_bfd, output_bfd, input_section,
&& !INTERWORK_FLAG (sym_sec->owner))
{
_bfd_error_handler
- (_ ("%s(%s): warning: interworking not enabled."),
+ (_("%s(%s): warning: interworking not enabled."),
bfd_get_filename (sym_sec->owner), name);
_bfd_error_handler
- (_ (" first occurrence: %s: arm call to thumb"),
+ (_(" first occurrence: %s: arm call to thumb"),
bfd_get_filename (input_bfd));
}
+
--my_offset;
myh->root.u.def.value = my_offset;
@@ -977,7 +969,7 @@ elf32_arm_to_thumb_stub (info, name, input_bfd, output_bfd, input_section,
tmp = bfd_get_32 (input_bfd, hit_data);
tmp = tmp & 0xFF000000;
- /* Somehow these are both 4 too far, so subtract 8. */
+ /* Somehow these are both 4 too far, so subtract 8. */
ret_offset = s->output_offset
+ my_offset
+ s->output_section->vma
@@ -985,7 +977,7 @@ elf32_arm_to_thumb_stub (info, name, input_bfd, output_bfd, input_section,
+ input_section->output_section->vma
+ offset + addend)
- 8;
-
+
tmp = tmp | ((ret_offset >> 2) & 0x00FFFFFF);
bfd_put_32 (output_bfd, tmp, hit_data
@@ -995,6 +987,7 @@ elf32_arm_to_thumb_stub (info, name, input_bfd, output_bfd, input_section,
}
/* Perform a relocation as part of a final link. */
+
static bfd_reloc_status_type
elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
input_section, contents, rel, value,
@@ -1062,9 +1055,11 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
case R_ARM_PC24:
case R_ARM_ABS32:
case R_ARM_REL32:
+#ifndef OLD_ARM_ABI
+ case R_ARM_XPC25:
+#endif
/* When generating a shared object, these relocations are copied
- into the output file to be resolved at run time. */
-
+ into the output file to be resolved at run time. */
if (info->shared
&& (r_type != R_ARM_PC24
|| (h != NULL
@@ -1157,30 +1152,46 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
sreloc->contents)
+ sreloc->reloc_count));
++sreloc->reloc_count;
-
+
/* If this reloc is against an external symbol, we do not want to
fiddle with the addend. Otherwise, we need to include the symbol
- value so that it becomes an addend for the dynamic reloc. */
+ value so that it becomes an addend for the dynamic reloc. */
if (! relocate)
return bfd_reloc_ok;
-
return _bfd_final_link_relocate (howto, input_bfd, input_section,
contents, rel->r_offset, value,
(bfd_vma) 0);
}
else switch (r_type)
{
- case R_ARM_PC24:
- /* Arm B/BL instruction */
-
- /* Check for arm calling thumb function. */
- if (sym_flags == STT_ARM_TFUNC)
+#ifndef OLD_ARM_ABI
+ case R_ARM_XPC25: /* Arm BLX instruction. */
+#endif
+ case R_ARM_PC24: /* Arm B/BL instruction */
+#ifndef OLD_ARM_ABI
+ if (r_type == R_ARM_XPC25)
+ {
+ /* Check for Arm calling Arm function. */
+ /* FIXME: Should we translate the instruction into a BL
+ instruction instead ? */
+ if (sym_flags != STT_ARM_TFUNC)
+ _bfd_error_handler (_("\
+%s: Warning: Arm BLX instruction targets Arm function '%s'."),
+ bfd_get_filename (input_bfd),
+ h ? h->root.root.string : "(local)");
+ }
+ else
+#endif
{
- elf32_arm_to_thumb_stub (info, sym_name, input_bfd, output_bfd,
- input_section, hit_data, sym_sec, rel->r_offset,
- signed_addend, value);
- return bfd_reloc_ok;
+ /* Check for Arm calling Thumb function. */
+ if (sym_flags == STT_ARM_TFUNC)
+ {
+ elf32_arm_to_thumb_stub (info, sym_name, input_bfd, output_bfd,
+ input_section, hit_data, sym_sec, rel->r_offset,
+ signed_addend, value);
+ return bfd_reloc_ok;
+ }
}
if ( strcmp (bfd_get_target (input_bfd), "elf32-littlearm-oabi") == 0
@@ -1188,7 +1199,6 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
{
/* The old way of doing things. Trearing the addend as a
byte sized field and adding in the pipeline offset. */
-
value -= (input_section->output_section->vma
+ input_section->output_offset);
value -= rel->r_offset;
@@ -1217,7 +1227,6 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
Note: None of these operations have knowledge of the pipeline
size of the processor, thus it is up to the assembler to encode
this information into the addend. */
-
value -= (input_section->output_section->vma
+ input_section->output_offset);
value -= rel->r_offset;
@@ -1239,22 +1248,31 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
}
}
+ signed_addend = value;
+ signed_addend >>= howto->rightshift;
+
/* It is not an error for an undefined weak reference to be
out of range. Any program that branches to such a symbol
- is going to crash anyway, so there is no point worrying
- about getting the destination exactly right. */
+ is going to crash anyway, so there is no point worrying
+ about getting the destination exactly right. */
if (! h || h->root.type != bfd_link_hash_undefweak)
{
/* Perform a signed range check. */
- signed_addend = value;
- signed_addend >>= howto->rightshift;
- if (signed_addend > ((bfd_signed_vma)(howto->dst_mask >> 1))
+ if ( signed_addend > ((bfd_signed_vma) (howto->dst_mask >> 1))
|| signed_addend < - ((bfd_signed_vma) ((howto->dst_mask + 1) >> 1)))
return bfd_reloc_overflow;
}
-
- value = (signed_addend & howto->dst_mask)
- | (bfd_get_32 (input_bfd, hit_data) & (~ howto->dst_mask));
+
+#ifndef OLD_ARM_ABI
+ /* If necessary set the H bit in the BLX instruction. */
+ if (r_type == R_ARM_XPC25 && ((value & 2) == 2))
+ value = (signed_addend & howto->dst_mask)
+ | (bfd_get_32 (input_bfd, hit_data) & (~ howto->dst_mask))
+ | (1 << 24);
+ else
+#endif
+ value = (signed_addend & howto->dst_mask)
+ | (bfd_get_32 (input_bfd, hit_data) & (~ howto->dst_mask));
break;
case R_ARM_ABS32:
@@ -1303,7 +1321,7 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
return bfd_reloc_ok;
case R_ARM_THM_ABS5:
- /* Support ldr and str instructions for the thumb. */
+ /* Support ldr and str instructions for the thumb. */
#ifdef USE_REL
/* Need to refetch addend. */
addend = bfd_get_16 (input_bfd, hit_data) & howto->src_mask;
@@ -1321,8 +1339,11 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
bfd_put_16 (input_bfd, value, hit_data);
return bfd_reloc_ok;
+#ifndef OLD_ARM_ABI
+ case R_ARM_THM_XPC22:
+#endif
case R_ARM_THM_PC22:
- /* Thumb BL (branch long instruction). */
+ /* Thumb BL (branch long instruction). */
{
bfd_vma relocation;
boolean overflow = false;
@@ -1339,23 +1360,38 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
{
bfd_vma upper = upper_insn & 0x7ff;
bfd_vma lower = lower_insn & 0x7ff;
- upper = (upper ^ 0x400) - 0x400; /* sign extend */
+ upper = (upper ^ 0x400) - 0x400; /* Sign extend. */
addend = (upper << 12) | (lower << 1);
signed_addend = addend;
}
#endif
-
- /* If it is not a call to thumb, assume call to arm.
- If it is a call relative to a section name, then it is not a
- function call at all, but rather a long jump. */
- if (sym_flags != STT_ARM_TFUNC && sym_flags != STT_SECTION)
+#ifndef OLD_ARM_ABI
+ if (r_type == R_ARM_THM_XPC22)
{
- if (elf32_thumb_to_arm_stub
- (info, sym_name, input_bfd, output_bfd, input_section,
- hit_data, sym_sec, rel->r_offset, signed_addend, value))
- return bfd_reloc_ok;
- else
- return bfd_reloc_dangerous;
+ /* Check for Thumb to Thumb call. */
+ /* FIXME: Should we translate the instruction into a BL
+ instruction instead ? */
+ if (sym_flags == STT_ARM_TFUNC)
+ _bfd_error_handler (_("\
+%s: Warning: Thumb BLX instruction targets thumb function '%s'."),
+ bfd_get_filename (input_bfd),
+ h ? h->root.root.string : "(local)");
+ }
+ else
+#endif
+ {
+ /* If it is not a call to Thumb, assume call to Arm.
+ If it is a call relative to a section name, then it is not a
+ function call at all, but rather a long jump. */
+ if (sym_flags != STT_ARM_TFUNC && sym_flags != STT_SECTION)
+ {
+ if (elf32_thumb_to_arm_stub
+ (info, sym_name, input_bfd, output_bfd, input_section,
+ hit_data, sym_sec, rel->r_offset, signed_addend, value))
+ return bfd_reloc_ok;
+ else
+ return bfd_reloc_dangerous;
+ }
}
relocation = value + signed_addend;
@@ -1363,11 +1399,11 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
relocation -= (input_section->output_section->vma
+ input_section->output_offset
+ rel->r_offset);
-
+
if (! globals->no_pipeline_knowledge)
{
- Elf_Internal_Ehdr * i_ehdrp; /* Elf file header, internal form */
-
+ Elf_Internal_Ehdr * i_ehdrp; /* Elf file header, internal form. */
+
i_ehdrp = elf_elfheader (input_bfd);
/* Previous versions of this code also used to add in the pipline
@@ -1429,21 +1465,19 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
BFD_ASSERT (sgot != NULL);
if (sgot == NULL)
return bfd_reloc_notsupported;
-
+
/* Note that sgot->output_offset is not involved in this
calculation. We always want the start of .got. If we
define _GLOBAL_OFFSET_TABLE in a different way, as is
permitted by the ABI, we might have to change this
- calculation. */
-
+ calculation. */
value -= sgot->output_section->vma;
return _bfd_final_link_relocate (howto, input_bfd, input_section,
contents, rel->r_offset, value,
(bfd_vma) 0);
case R_ARM_GOTPC:
- /* Use global offset table as symbol value. */
-
+ /* Use global offset table as symbol value. */
BFD_ASSERT (sgot != NULL);
if (sgot == NULL)
@@ -1456,7 +1490,7 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
case R_ARM_GOT32:
/* Relocation is to the entry for this symbol in the
- global offset table. */
+ global offset table. */
if (sgot == NULL)
return bfd_reloc_notsupported;
@@ -1479,8 +1513,7 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
When doing a dynamic link, we create a .rel.got relocation
entry to initialize the value. This is done in the
- finish_dynamic_symbol routine. */
-
+ finish_dynamic_symbol routine. */
if ((off & 1) != 0)
off &= ~1;
else
@@ -1503,7 +1536,7 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
/* The offset must always be a multiple of 4. We use the
least significant bit to record whether we have already
- generated the necessary reloc. */
+ generated the necessary reloc. */
if ((off & 1) != 0)
off &= ~1;
else
@@ -1534,7 +1567,7 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
value = sgot->output_offset + off;
}
-
+
return _bfd_final_link_relocate (howto, input_bfd, input_section,
contents, rel->r_offset, value,
(bfd_vma) 0);
@@ -1544,7 +1577,7 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
procedure linkage table. */
/* Resolve a PLT32 reloc against a local symbol directly,
- without using the procedure linkage table. */
+ without using the procedure linkage table. */
if (h == NULL)
return _bfd_final_link_relocate (howto, input_bfd, input_section,
contents, rel->r_offset, value,
@@ -1607,44 +1640,67 @@ arm_add_to_rel (abfd, address, howto, increment)
reloc_howto_type * howto;
bfd_signed_vma increment;
{
- bfd_vma contents;
bfd_signed_vma addend;
- contents = bfd_get_32 (abfd, address);
-
- /* Get the (signed) value from the instruction. */
- addend = contents & howto->src_mask;
- if (addend & ((howto->src_mask + 1) >> 1))
+ if (howto->type == R_ARM_THM_PC22)
{
- bfd_signed_vma mask;
-
- mask = -1;
- mask &= ~ howto->src_mask;
- addend |= mask;
- }
+ int upper_insn, lower_insn;
+ int upper, lower;
- /* Add in the increment, (which is a byte value). */
- switch (howto->type)
- {
- case R_ARM_THM_PC22:
- default:
+ upper_insn = bfd_get_16 (abfd, address);
+ lower_insn = bfd_get_16 (abfd, address + 2);
+ upper = upper_insn & 0x7ff;
+ lower = lower_insn & 0x7ff;
+
+ addend = (upper << 12) | (lower << 1);
addend += increment;
- break;
-
- case R_ARM_PC24:
- addend <<= howto->size;
- addend += increment;
-
- /* Should we check for overflow here ? */
+ addend >>= 1;
- /* Drop any undesired bits. */
- addend >>= howto->rightshift;
- break;
+ upper_insn = (upper_insn & 0xf800) | ((addend >> 11) & 0x7ff);
+ lower_insn = (lower_insn & 0xf800) | (addend & 0x7ff);
+
+ bfd_put_16 (abfd, upper_insn, address);
+ bfd_put_16 (abfd, lower_insn, address + 2);
+ }
+ else
+ {
+ bfd_vma contents;
+
+ contents = bfd_get_32 (abfd, address);
+
+ /* Get the (signed) value from the instruction. */
+ addend = contents & howto->src_mask;
+ if (addend & ((howto->src_mask + 1) >> 1))
+ {
+ bfd_signed_vma mask;
+
+ mask = -1;
+ mask &= ~ howto->src_mask;
+ addend |= mask;
+ }
+
+ /* Add in the increment, (which is a byte value). */
+ switch (howto->type)
+ {
+ default:
+ addend += increment;
+ break;
+
+ case R_ARM_PC24:
+ addend <<= howto->size;
+ addend += increment;
+
+ /* Should we check for overflow here ? */
+
+ /* Drop any undesired bits. */
+ addend >>= howto->rightshift;
+ break;
+ }
+
+ contents = (contents & ~ howto->dst_mask) | (addend & howto->dst_mask);
+
+ bfd_put_32 (abfd, contents, address);
}
-
- contents = (contents & ~ howto->dst_mask) | (addend & howto->dst_mask);
-
- bfd_put_32 (abfd, contents, address);
}
#endif /* USE_REL */
@@ -1723,6 +1779,7 @@ elf32_arm_relocate_section (output_bfd, info, input_bfd, input_section,
h = NULL;
sym = NULL;
sec = NULL;
+
if (r_symndx < symtab_hdr->sh_info)
{
sym = local_syms + r_symndx;
@@ -1734,10 +1791,12 @@ elf32_arm_relocate_section (output_bfd, info, input_bfd, input_section,
else
{
h = sym_hashes[r_symndx - symtab_hdr->sh_info];
- while (h->root.type == bfd_link_hash_indirect
+
+ while ( h->root.type == bfd_link_hash_indirect
|| h->root.type == bfd_link_hash_warning)
h = (struct elf_link_hash_entry *) h->root.u.i.link;
- if (h->root.type == bfd_link_hash_defined
+
+ if ( h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
{
int relocation_needed = 1;
@@ -1746,7 +1805,7 @@ elf32_arm_relocate_section (output_bfd, info, input_bfd, input_section,
/* In these cases, we don't need the relocation value.
We check specially because in some obscure cases
- sec->output_section will be NULL. */
+ sec->output_section will be NULL. */
switch (r_type)
{
case R_ARM_PC24:
@@ -1865,19 +1924,19 @@ elf32_arm_relocate_section (output_bfd, info, input_bfd, input_section,
break;
case bfd_reloc_outofrange:
- msg = _ ("internal error: out of range error");
+ msg = _("internal error: out of range error");
goto common_error;
case bfd_reloc_notsupported:
- msg = _ ("internal error: unsupported relocation error");
+ msg = _("internal error: unsupported relocation error");
goto common_error;
case bfd_reloc_dangerous:
- msg = _ ("internal error: dangerous error");
+ msg = _("internal error: dangerous error");
goto common_error;
default:
- msg = _ ("internal error: unknown error");
+ msg = _("internal error: unknown error");
/* fall through */
common_error:
@@ -1893,7 +1952,7 @@ elf32_arm_relocate_section (output_bfd, info, input_bfd, input_section,
return true;
}
-/* Function to keep ARM specific flags in the ELF header. */
+/* Function to keep ARM specific flags in the ELF header. */
static boolean
elf32_arm_set_private_flags (abfd, flags)
bfd *abfd;
@@ -1902,14 +1961,17 @@ elf32_arm_set_private_flags (abfd, flags)
if (elf_flags_init (abfd)
&& elf_elfheader (abfd)->e_flags != flags)
{
- if (flags & EF_INTERWORK)
- _bfd_error_handler (_ ("\
+ if (EF_ARM_EABI_VERSION (flags) == EF_ARM_EABI_UNKNOWN)
+ {
+ if (flags & EF_INTERWORK)
+ _bfd_error_handler (_("\
Warning: Not setting interwork flag of %s since it has already been specified as non-interworking"),
- bfd_get_filename (abfd));
- else
- _bfd_error_handler (_ ("\
+ bfd_get_filename (abfd));
+ else
+ _bfd_error_handler (_("\
Warning: Clearing the interwork flag of %s due to outside request"),
- bfd_get_filename (abfd));
+ bfd_get_filename (abfd));
+ }
}
else
{
@@ -1920,7 +1982,8 @@ Warning: Clearing the interwork flag of %s due to outside request"),
return true;
}
-/* Copy backend specific data from one object module to another */
+/* Copy backend specific data from one object module to another. */
+
static boolean
elf32_arm_copy_private_bfd_data (ibfd, obfd)
bfd *ibfd;
@@ -1929,14 +1992,16 @@ elf32_arm_copy_private_bfd_data (ibfd, obfd)
flagword in_flags;
flagword out_flags;
- if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
+ if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
return true;
- in_flags = elf_elfheader (ibfd)->e_flags;
+ in_flags = elf_elfheader (ibfd)->e_flags;
out_flags = elf_elfheader (obfd)->e_flags;
- if (elf_flags_init (obfd) && in_flags != out_flags)
+ if (elf_flags_init (obfd)
+ && EF_ARM_EABI_VERSION (out_flags) == EF_ARM_EABI_UNKNOWN
+ && in_flags != out_flags)
{
/* Cannot mix APCS26 and APCS32 code. */
if ((in_flags & EF_APCS_26) != (out_flags & EF_APCS_26))
@@ -1951,7 +2016,7 @@ elf32_arm_copy_private_bfd_data (ibfd, obfd)
if ((in_flags & EF_INTERWORK) != (out_flags & EF_INTERWORK))
{
if (out_flags & EF_INTERWORK)
- _bfd_error_handler (_ ("\
+ _bfd_error_handler (_("\
Warning: Clearing the interwork flag in %s because non-interworking code in %s has been linked with it"),
bfd_get_filename (obfd), bfd_get_filename (ibfd));
@@ -1971,10 +2036,11 @@ Warning: Clearing the interwork flag in %s because non-interworking code in %s h
/* Merge backend specific data from an object file to the output
object file when linking. */
+
static boolean
elf32_arm_merge_private_bfd_data (ibfd, obfd)
- bfd *ibfd;
- bfd *obfd;
+ bfd * ibfd;
+ bfd * obfd;
{
flagword out_flags;
flagword in_flags;
@@ -1982,29 +2048,18 @@ elf32_arm_merge_private_bfd_data (ibfd, obfd)
boolean null_input_bfd = true;
asection *sec;
+ /* Check if we have the same endianess. */
+ if (_bfd_generic_verify_endian_match (ibfd, obfd) == false)
+ return false;
+
if ( bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
return true;
- /* Check if we have the same endianess */
- if ( ibfd->xvec->byteorder != obfd->xvec->byteorder
- && obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN
- && ibfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
- {
- (*_bfd_error_handler)
- (_("%s: compiled for a %s endian system and target is %s endian"),
- bfd_get_filename (ibfd),
- bfd_big_endian (ibfd) ? "big" : "little",
- bfd_big_endian (obfd) ? "big" : "little");
-
- bfd_set_error (bfd_error_wrong_format);
- return false;
- }
-
/* The input BFD must have had its flags initialised. */
/* The following seems bogus to me -- The flags are initialized in
the assembler but I don't think an elf_flags_init field is
- written into the object */
+ written into the object. */
/* BFD_ASSERT (elf_flags_init (ibfd)); */
in_flags = elf_elfheader (ibfd)->e_flags;
@@ -2052,96 +2107,152 @@ elf32_arm_merge_private_bfd_data (ibfd, obfd)
if (null_input_bfd)
return true;
- /* If any of the input BFDs is non-PIC, the output is also position
- dependent. */
- if (!(in_flags & EF_PIC))
- elf_elfheader (obfd)->e_flags &= ~EF_PIC;
-
/* Complain about various flag mismatches. */
- if ((in_flags & EF_APCS_26) != (out_flags & EF_APCS_26))
+ if (EF_ARM_EABI_VERSION (in_flags) != EF_ARM_EABI_VERSION (out_flags))
{
- _bfd_error_handler (_ ("\
+ _bfd_error_handler (_("\
+Error: %s compiled for EABI version %d, whereas %s is compiled for version %d"),
+ bfd_get_filename (ibfd),
+ (in_flags & EF_ARM_EABIMASK) >> 24,
+ bfd_get_filename (obfd),
+ (out_flags & EF_ARM_EABIMASK) >> 24);
+ return false;
+ }
+
+ /* Not sure what needs to be checked for EABI versions >= 1. */
+ if (EF_ARM_EABI_VERSION (in_flags) == EF_ARM_EABI_UNKNOWN)
+ {
+ if ((in_flags & EF_APCS_26) != (out_flags & EF_APCS_26))
+ {
+ _bfd_error_handler (_("\
Error: %s compiled for APCS-%d, whereas %s is compiled for APCS-%d"),
bfd_get_filename (ibfd),
in_flags & EF_APCS_26 ? 26 : 32,
bfd_get_filename (obfd),
out_flags & EF_APCS_26 ? 26 : 32);
- flags_compatible = false;
- }
+ flags_compatible = false;
+ }
- if ((in_flags & EF_APCS_FLOAT) != (out_flags & EF_APCS_FLOAT))
- {
- _bfd_error_handler (_ ("\
+ if ((in_flags & EF_APCS_FLOAT) != (out_flags & EF_APCS_FLOAT))
+ {
+ _bfd_error_handler (_("\
Error: %s passes floats in %s registers, whereas %s passes them in %s registers"),
bfd_get_filename (ibfd),
- in_flags & EF_APCS_FLOAT ? _ ("float") : _ ("integer"),
+ in_flags & EF_APCS_FLOAT ? _("float") : _("integer"),
bfd_get_filename (obfd),
- out_flags & EF_APCS_26 ? _ ("float") : _ ("integer"));
- flags_compatible = false;
- }
+ out_flags & EF_APCS_26 ? _("float") : _("integer"));
+ flags_compatible = false;
+ }
#ifdef EF_SOFT_FLOAT
- if ((in_flags & EF_SOFT_FLOAT) != (out_flags & EF_SOFT_FLOAT))
- {
- _bfd_error_handler (_ ("\
+ if ((in_flags & EF_SOFT_FLOAT) != (out_flags & EF_SOFT_FLOAT))
+ {
+ _bfd_error_handler (_ ("\
Error: %s uses %s floating point, whereas %s uses %s floating point"),
- bfd_get_filename (ibfd),
- in_flags & EF_SOFT_FLOAT ? _("soft") : _("hard"),
- bfd_get_filename (obfd),
- out_flags & EF_SOFT_FLOAT ? _("soft") : _("hard"));
- flags_compatible = false;
- }
+ bfd_get_filename (ibfd),
+ in_flags & EF_SOFT_FLOAT ? _("soft") : _("hard"),
+ bfd_get_filename (obfd),
+ out_flags & EF_SOFT_FLOAT ? _("soft") : _("hard"));
+ flags_compatible = false;
+ }
#endif
- /* Interworking mismatch is only a warning. */
- if ((in_flags & EF_INTERWORK) != (out_flags & EF_INTERWORK))
- _bfd_error_handler (_ ("\
+ /* Interworking mismatch is only a warning. */
+ if ((in_flags & EF_INTERWORK) != (out_flags & EF_INTERWORK))
+ _bfd_error_handler (_("\
Warning: %s %s interworking, whereas %s %s"),
bfd_get_filename (ibfd),
- in_flags & EF_INTERWORK ? _ ("supports") : _ ("does not support"),
+ in_flags & EF_INTERWORK ? _("supports") : _("does not support"),
bfd_get_filename (obfd),
- out_flags & EF_INTERWORK ? _ ("does not") : _ ("does"));
+ out_flags & EF_INTERWORK ? _("does not") : _("does"));
+ }
return flags_compatible;
}
-/* Display the flags field */
+/* Display the flags field. */
+
static boolean
elf32_arm_print_private_bfd_data (abfd, ptr)
bfd *abfd;
PTR ptr;
{
- FILE *file = (FILE *) ptr;
+ FILE * file = (FILE *) ptr;
+ unsigned long flags;
BFD_ASSERT (abfd != NULL && ptr != NULL);
/* Print normal ELF private data. */
_bfd_elf_print_private_bfd_data (abfd, ptr);
- /* Ignore init flag - it may not be set, despite the flags field containing valid data. */
+ flags = elf_elfheader (abfd)->e_flags;
+ /* Ignore init flag - it may not be set, despite the flags field
+ containing valid data. */
/* xgettext:c-format */
- fprintf (file, _ ("private flags = %lx:"), elf_elfheader (abfd)->e_flags);
+ fprintf (file, _("private flags = %lx:"), elf_elfheader (abfd)->e_flags);
- if (elf_elfheader (abfd)->e_flags & EF_INTERWORK)
- fprintf (file, _ (" [interworking enabled]"));
- else
- fprintf (file, _ (" [interworking not enabled]"));
+ switch (EF_ARM_EABI_VERSION (flags))
+ {
+ case EF_ARM_EABI_UNKNOWN:
+ /* The following flag bits are GNU extenstions and not part of the
+ official ARM ELF extended ABI. Hence they are only decoded if
+ the EABI version is not set. */
+ if (flags & EF_INTERWORK)
+ fprintf (file, _(" [interworking enabled]"));
- if (elf_elfheader (abfd)->e_flags & EF_APCS_26)
- fprintf (file, _ (" [APCS-26]"));
- else
- fprintf (file, _ (" [APCS-32]"));
+ if (flags & EF_APCS_26)
+ fprintf (file, _(" [APCS-26]"));
+ else
+ fprintf (file, _(" [APCS-32]"));
- if (elf_elfheader (abfd)->e_flags & EF_APCS_FLOAT)
- fprintf (file, _ (" [floats passed in float registers]"));
- else
- fprintf (file, _ (" [floats passed in integer registers]"));
+ if (flags & EF_APCS_FLOAT)
+ fprintf (file, _(" [floats passed in float registers]"));
- if (elf_elfheader (abfd)->e_flags & EF_PIC)
- fprintf (file, _ (" [position independent]"));
- else
- fprintf (file, _ (" [absolute position]"));
+ if (flags & EF_PIC)
+ fprintf (file, _(" [position independent]"));
+
+ if (flags & EF_NEW_ABI)
+ fprintf (file, _(" [new ABI]"));
+
+ if (flags & EF_OLD_ABI)
+ fprintf (file, _(" [old ABI]"));
+
+ if (flags & EF_SOFT_FLOAT)
+ fprintf (file, _(" [software FP]"));
+
+ flags &= ~(EF_INTERWORK | EF_APCS_26 | EF_APCS_FLOAT | EF_PIC
+ | EF_NEW_ABI | EF_OLD_ABI | EF_SOFT_FLOAT);
+ break;
+
+ case EF_ARM_EABI_VER1:
+ fprintf (file, _(" [Version1 EABI]"));
+
+ if (flags & EF_ARM_SYMSARESORTED)
+ fprintf (file, _(" [sorted symbol table]"));
+ else
+ fprintf (file, _(" [unsorted symbol table]"));
+
+ flags &= ~ EF_ARM_SYMSARESORTED;
+ break;
+
+ default:
+ fprintf (file, _(" <EABI version unrecognised>"));
+ break;
+ }
+
+ flags &= ~ EF_ARM_EABIMASK;
+
+ if (flags & EF_ARM_RELEXEC)
+ fprintf (file, _(" [relocatable executable]"));
+
+ if (flags & EF_ARM_HASENTRY)
+ fprintf (file, _(" [has entry point]"));
+
+ flags &= ~ (EF_ARM_RELEXEC | EF_ARM_HASENTRY);
+
+ if (flags)
+ fprintf (file, _("<Unrecognised flag bits set>"));
fputc ('\n', file);
@@ -2157,7 +2268,7 @@ elf32_arm_get_symbol_type (elf_sym, type)
{
case STT_ARM_TFUNC:
return ELF_ST_TYPE (elf_sym->st_info);
- break;
+
case STT_ARM_16BIT:
/* If the symbol is not an object, return the STT_ARM_16BIT flag.
This allows us to distinguish between data used by Thumb instructions
@@ -2166,6 +2277,9 @@ elf32_arm_get_symbol_type (elf_sym, type)
if (type != STT_OBJECT)
return ELF_ST_TYPE (elf_sym->st_info);
break;
+
+ default:
+ break;
}
return type;
@@ -2245,33 +2359,35 @@ elf32_arm_check_relocs (abfd, info, sec, relocs)
bfd * dynobj;
asection * sgot, *srelgot, *sreloc;
bfd_vma * local_got_offsets;
-
+
if (info->relocateable)
return true;
-
+
sgot = srelgot = sreloc = NULL;
-
+
dynobj = elf_hash_table (info)->dynobj;
local_got_offsets = elf_local_got_offsets (abfd);
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
sym_hashes = elf_sym_hashes (abfd);
- sym_hashes_end = sym_hashes + symtab_hdr->sh_size/sizeof(Elf32_External_Sym);
+ sym_hashes_end = sym_hashes
+ + symtab_hdr->sh_size / sizeof (Elf32_External_Sym);
+
if (!elf_bad_symtab (abfd))
sym_hashes_end -= symtab_hdr->sh_info;
-
+
rel_end = relocs + sec->reloc_count;
for (rel = relocs; rel < rel_end; rel++)
{
struct elf_link_hash_entry *h;
unsigned long r_symndx;
-
+
r_symndx = ELF32_R_SYM (rel->r_info);
if (r_symndx < symtab_hdr->sh_info)
h = NULL;
else
h = sym_hashes[r_symndx - symtab_hdr->sh_info];
-
+
/* Some relocs require a global offset table. */
if (dynobj == NULL)
{
@@ -2305,7 +2421,7 @@ elf32_arm_check_relocs (abfd, info, sec, relocs)
&& (h != NULL || info->shared))
{
srelgot = bfd_get_section_by_name (dynobj, ".rel.got");
-
+
/* If no got relocation section, make one and initialize. */
if (srelgot == NULL)
{
@@ -2490,7 +2606,7 @@ elf32_arm_check_relocs (abfd, info, sec, relocs)
if (!_bfd_elf32_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
return false;
break;
-
+
/* This relocation describes which C++ vtable entries are actually
used. Record for later use during GC. */
case R_ARM_GNU_VTENTRY:
@@ -2503,10 +2619,9 @@ elf32_arm_check_relocs (abfd, info, sec, relocs)
return true;
}
-
/* Find the nearest line to a particular section and offset, for error
reporting. This code is a duplicate of the code in elf.c, except
- that it also accepts STT_ARM_TFUNC as a symbol that names a function. */
+ that it also accepts STT_ARM_TFUNC as a symbol that names a function. */
static boolean
elf32_arm_find_nearest_line
@@ -2527,7 +2642,8 @@ elf32_arm_find_nearest_line
if (_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
filename_ptr, functionname_ptr,
- line_ptr, 0))
+ line_ptr, 0,
+ &elf_tdata (abfd)->dwarf2_find_line_info))
return true;
if (! _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset,
@@ -2667,7 +2783,6 @@ elf32_arm_adjust_dynamic_symbol (info, h)
/* We also need to make an entry in the .got.plt section, which
will be placed in the .got section by the linker script. */
-
s = bfd_get_section_by_name (dynobj, ".got.plt");
BFD_ASSERT (s != NULL);
s->_raw_size += 4;
@@ -2712,7 +2827,6 @@ elf32_arm_adjust_dynamic_symbol (info, h)
determine the address it must put in the global offset table, so
both the dynamic object and the regular object will refer to the
same memory location for the variable. */
-
s = bfd_get_section_by_name (dynobj, ".dynbss");
BFD_ASSERT (s != NULL);
@@ -2872,7 +2986,7 @@ elf32_arm_size_dynamic_sections (output_bfd, info)
outname = bfd_get_section_name (output_bfd,
s->output_section);
target = bfd_get_section_by_name (output_bfd, outname + 4);
-
+
if (target != NULL
&& (target->flags & SEC_READONLY) != 0
&& (target->flags & SEC_ALLOC) != 0)
@@ -2925,7 +3039,7 @@ elf32_arm_size_dynamic_sections (output_bfd, info)
if (plt)
{
- if (! bfd_elf32_add_dynamic_entry (info, DT_PLTGOT, 0)
+ if ( ! bfd_elf32_add_dynamic_entry (info, DT_PLTGOT, 0)
|| ! bfd_elf32_add_dynamic_entry (info, DT_PLTRELSZ, 0)
|| ! bfd_elf32_add_dynamic_entry (info, DT_PLTREL, DT_REL)
|| ! bfd_elf32_add_dynamic_entry (info, DT_JMPREL, 0))
@@ -2934,7 +3048,7 @@ elf32_arm_size_dynamic_sections (output_bfd, info)
if (relocs)
{
- if (! bfd_elf32_add_dynamic_entry (info, DT_REL, 0)
+ if ( ! bfd_elf32_add_dynamic_entry (info, DT_REL, 0)
|| ! bfd_elf32_add_dynamic_entry (info, DT_RELSZ, 0)
|| ! bfd_elf32_add_dynamic_entry (info, DT_RELENT,
sizeof (Elf32_External_Rel)))
@@ -2945,6 +3059,7 @@ elf32_arm_size_dynamic_sections (output_bfd, info)
{
if (! bfd_elf32_add_dynamic_entry (info, DT_TEXTREL, 0))
return false;
+ info->flags |= DF_TEXTREL;
}
}
@@ -3052,6 +3167,13 @@ elf32_arm_finish_dynamic_symbol (output_bfd, info, h, sym)
/* Mark the symbol as undefined, rather than as defined in
the .plt section. Leave the value alone. */
sym->st_shndx = SHN_UNDEF;
+ /* If the symbol is weak, we do need to clear the value.
+ Otherwise, the PLT entry would provide a definition for
+ the symbol even if the symbol wasn't defined anywhere,
+ and so the symbol would never be NULL. */
+ if ((h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR_NONWEAK)
+ == 0)
+ sym->st_value = 0;
}
}
@@ -3063,7 +3185,6 @@ elf32_arm_finish_dynamic_symbol (output_bfd, info, h, sym)
/* This symbol has an entry in the global offset table. Set it
up. */
-
sgot = bfd_get_section_by_name (dynobj, ".got");
srel = bfd_get_section_by_name (dynobj, ".rel.got");
BFD_ASSERT (sgot != NULL && srel != NULL);
@@ -3098,7 +3219,6 @@ elf32_arm_finish_dynamic_symbol (output_bfd, info, h, sym)
Elf_Internal_Rel rel;
/* This symbol needs a copy reloc. Set it up. */
-
BFD_ASSERT (h->dynindx != -1
&& (h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak));
@@ -3152,6 +3272,7 @@ elf32_arm_finish_dynamic_sections (output_bfd, info)
dyncon = (Elf32_External_Dyn *) sdyn->contents;
dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->_raw_size);
+
for (; dyncon < dynconend; dyncon++)
{
Elf_Internal_Dyn dyn;
@@ -3242,7 +3363,7 @@ elf32_arm_post_process_headers (abfd, link_info)
bfd * abfd;
struct bfd_link_info * link_info ATTRIBUTE_UNUSED;
{
- Elf_Internal_Ehdr * i_ehdrp; /* Elf file header, internal form */
+ Elf_Internal_Ehdr * i_ehdrp; /* ELF file header, internal form. */
i_ehdrp = elf_elfheader (abfd);
@@ -3250,12 +3371,10 @@ elf32_arm_post_process_headers (abfd, link_info)
i_ehdrp->e_ident[EI_ABIVERSION] = ARM_ELF_ABI_VERSION;
}
-
#define ELF_ARCH bfd_arch_arm
#define ELF_MACHINE_CODE EM_ARM
#define ELF_MAXPAGESIZE 0x8000
-
#define bfd_elf32_bfd_copy_private_bfd_data elf32_arm_copy_private_bfd_data
#define bfd_elf32_bfd_merge_private_bfd_data elf32_arm_merge_private_bfd_data
#define bfd_elf32_bfd_set_private_flags elf32_arm_set_private_flags
diff --git a/contrib/binutils/bfd/elf32-gen.c b/contrib/binutils/bfd/elf32-gen.c
index 47da53b..7a39f47 100644
--- a/contrib/binutils/bfd/elf32-gen.c
+++ b/contrib/binutils/bfd/elf32-gen.c
@@ -58,6 +58,37 @@ elf_generic_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
bfd_reloc->howto = &dummy;
}
+static boolean
+elf32_generic_link_add_symbols (abfd, info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+{
+ asection *o;
+
+ /* Check if there are any relocations. */
+ for (o = abfd->sections; o != NULL; o = o->next)
+ if ((o->flags & SEC_RELOC) != 0)
+ {
+ Elf_Internal_Ehdr *ehdrp;
+
+ ehdrp = elf_elfheader (abfd);
+ if (abfd->my_archive)
+ (*_bfd_error_handler) (_("%s(%s): Relocations in generic ELF (EM: %d)"),
+ bfd_get_filename (abfd->my_archive),
+ bfd_get_filename (abfd),
+ ehdrp->e_machine);
+ else
+ (*_bfd_error_handler) (_("%s: Relocations in generic ELF (EM: %d)"),
+ bfd_get_filename (abfd),
+ ehdrp->e_machine);
+
+ bfd_set_error (bfd_error_wrong_format);
+ return false;
+ }
+
+ return bfd_elf32_bfd_link_add_symbols (abfd, info);
+}
+
#define TARGET_LITTLE_SYM bfd_elf32_little_generic_vec
#define TARGET_LITTLE_NAME "elf32-little"
#define TARGET_BIG_SYM bfd_elf32_big_generic_vec
@@ -66,6 +97,7 @@ elf_generic_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
#define ELF_MACHINE_CODE EM_NONE
#define ELF_MAXPAGESIZE 0x1
#define bfd_elf32_bfd_reloc_type_lookup bfd_default_reloc_type_lookup
+#define bfd_elf32_bfd_link_add_symbols elf32_generic_link_add_symbols
#define elf_info_to_howto elf_generic_info_to_howto
#define elf_info_to_howto_rel elf_generic_info_to_howto_rel
diff --git a/contrib/binutils/bfd/elf32-i386.c b/contrib/binutils/bfd/elf32-i386.c
index fc1b5a8..4ad2c2b 100644
--- a/contrib/binutils/bfd/elf32-i386.c
+++ b/contrib/binutils/bfd/elf32-i386.c
@@ -1,5 +1,6 @@
/* Intel 80386/80486-specific support for 32-bit ELF
- Copyright 1993, 94-98, 1999 Free Software Foundation, Inc.
+ Copyright 1993, 94, 95, 96, 97, 98, 99, 2000
+ Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -56,35 +57,66 @@ static boolean elf_i386_finish_dynamic_sections
static reloc_howto_type elf_howto_table[]=
{
- HOWTO(R_386_NONE, 0,0, 0,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_NONE", true,0x00000000,0x00000000,false),
- HOWTO(R_386_32, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_32", true,0xffffffff,0xffffffff,false),
- HOWTO(R_386_PC32, 0,2,32,true, 0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_PC32", true,0xffffffff,0xffffffff,true),
- HOWTO(R_386_GOT32, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_GOT32", true,0xffffffff,0xffffffff,false),
- HOWTO(R_386_PLT32, 0,2,32,true,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_PLT32", true,0xffffffff,0xffffffff,true),
- HOWTO(R_386_COPY, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_COPY", true,0xffffffff,0xffffffff,false),
- HOWTO(R_386_GLOB_DAT, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_GLOB_DAT", true,0xffffffff,0xffffffff,false),
- HOWTO(R_386_JUMP_SLOT, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_JUMP_SLOT",true,0xffffffff,0xffffffff,false),
- HOWTO(R_386_RELATIVE, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_RELATIVE", true,0xffffffff,0xffffffff,false),
- HOWTO(R_386_GOTOFF, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_GOTOFF", true,0xffffffff,0xffffffff,false),
- HOWTO(R_386_GOTPC, 0,2,32,true,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_GOTPC", true,0xffffffff,0xffffffff,true),
- EMPTY_HOWTO (11),
- EMPTY_HOWTO (12),
- EMPTY_HOWTO (13),
- EMPTY_HOWTO (14),
- EMPTY_HOWTO (15),
- EMPTY_HOWTO (16),
- EMPTY_HOWTO (17),
- EMPTY_HOWTO (18),
- EMPTY_HOWTO (19),
+ HOWTO(R_386_NONE, 0, 0, 0, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_NONE",
+ true, 0x00000000, 0x00000000, false),
+ HOWTO(R_386_32, 0, 2, 32, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_32",
+ true, 0xffffffff, 0xffffffff, false),
+ HOWTO(R_386_PC32, 0, 2, 32, true, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_PC32",
+ true, 0xffffffff, 0xffffffff, true),
+ HOWTO(R_386_GOT32, 0, 2, 32, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_GOT32",
+ true, 0xffffffff, 0xffffffff, false),
+ HOWTO(R_386_PLT32, 0, 2, 32, true, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_PLT32",
+ true, 0xffffffff, 0xffffffff, true),
+ HOWTO(R_386_COPY, 0, 2, 32, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_COPY",
+ true, 0xffffffff, 0xffffffff, false),
+ HOWTO(R_386_GLOB_DAT, 0, 2, 32, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_GLOB_DAT",
+ true, 0xffffffff, 0xffffffff, false),
+ HOWTO(R_386_JUMP_SLOT, 0, 2, 32, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_JUMP_SLOT",
+ true, 0xffffffff, 0xffffffff, false),
+ HOWTO(R_386_RELATIVE, 0, 2, 32, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_RELATIVE",
+ true, 0xffffffff, 0xffffffff, false),
+ HOWTO(R_386_GOTOFF, 0, 2, 32, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_GOTOFF",
+ true, 0xffffffff, 0xffffffff, false),
+ HOWTO(R_386_GOTPC, 0, 2, 32, true, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_GOTPC",
+ true, 0xffffffff, 0xffffffff, true),
+
+ /* We have a gap in the reloc numbers here.
+ R_386_standard counts the number up to this point, and
+ R_386_ext_offset is the value to subtract from a reloc type of
+ R_386_16 thru R_386_PC8 to form an index into this table. */
+#define R_386_standard ((unsigned int) R_386_GOTPC + 1)
+#define R_386_ext_offset ((unsigned int) R_386_16 - R_386_standard)
+
/* The remaining relocs are a GNU extension. */
- HOWTO(R_386_16, 0,1,16,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_16", true,0xffff,0xffff,false),
- HOWTO(R_386_PC16, 0,1,16,true, 0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_PC16", true,0xffff,0xffff,true),
- HOWTO(R_386_8, 0,0,8,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_8", true,0xff,0xff,false),
- HOWTO(R_386_PC8, 0,0,8,true, 0,complain_overflow_signed, bfd_elf_generic_reloc,"R_386_PC8", true,0xff,0xff,true),
-};
+ HOWTO(R_386_16, 0, 1, 16, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_16",
+ true, 0xffff, 0xffff, false),
+ HOWTO(R_386_PC16, 0, 1, 16, true, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_PC16",
+ true, 0xffff, 0xffff, true),
+ HOWTO(R_386_8, 0, 0, 8, false, 0, complain_overflow_bitfield,
+ bfd_elf_generic_reloc, "R_386_8",
+ true, 0xff, 0xff, false),
+ HOWTO(R_386_PC8, 0, 0, 8, true, 0, complain_overflow_signed,
+ bfd_elf_generic_reloc, "R_386_PC8",
+ true, 0xff, 0xff, true),
+
+ /* Another gap. */
+#define R_386_ext ((unsigned int) R_386_PC8 + 1 - R_386_ext_offset)
+#define R_386_vt_offset ((unsigned int) R_386_GNU_VTINHERIT - R_386_ext)
/* GNU extension to record C++ vtable hierarchy. */
-static reloc_howto_type elf32_i386_vtinherit_howto =
HOWTO (R_386_GNU_VTINHERIT, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -97,10 +129,9 @@ static reloc_howto_type elf32_i386_vtinherit_howto =
false, /* partial_inplace */
0, /* src_mask */
0, /* dst_mask */
- false);
+ false),
/* GNU extension to record C++ vtable member usage. */
-static reloc_howto_type elf32_i386_vtentry_howto =
HOWTO (R_386_GNU_VTENTRY, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -113,7 +144,11 @@ static reloc_howto_type elf32_i386_vtentry_howto =
false, /* partial_inplace */
0, /* src_mask */
0, /* dst_mask */
- false);
+ false)
+
+#define R_386_vt ((unsigned int) R_386_GNU_VTENTRY + 1 - R_386_vt_offset)
+
+};
#ifdef DEBUG_GEN_RELOC
#define TRACE(str) fprintf (stderr, "i386 bfd reloc lookup %d (%s)\n", code, str)
@@ -130,76 +165,78 @@ elf_i386_reloc_type_lookup (abfd, code)
{
case BFD_RELOC_NONE:
TRACE ("BFD_RELOC_NONE");
- return &elf_howto_table[ (int)R_386_NONE ];
+ return &elf_howto_table[(unsigned int) R_386_NONE ];
case BFD_RELOC_32:
TRACE ("BFD_RELOC_32");
- return &elf_howto_table[ (int)R_386_32 ];
+ return &elf_howto_table[(unsigned int) R_386_32 ];
case BFD_RELOC_CTOR:
TRACE ("BFD_RELOC_CTOR");
- return &elf_howto_table[ (int)R_386_32 ];
+ return &elf_howto_table[(unsigned int) R_386_32 ];
case BFD_RELOC_32_PCREL:
TRACE ("BFD_RELOC_PC32");
- return &elf_howto_table[ (int)R_386_PC32 ];
+ return &elf_howto_table[(unsigned int) R_386_PC32 ];
case BFD_RELOC_386_GOT32:
TRACE ("BFD_RELOC_386_GOT32");
- return &elf_howto_table[ (int)R_386_GOT32 ];
+ return &elf_howto_table[(unsigned int) R_386_GOT32 ];
case BFD_RELOC_386_PLT32:
TRACE ("BFD_RELOC_386_PLT32");
- return &elf_howto_table[ (int)R_386_PLT32 ];
+ return &elf_howto_table[(unsigned int) R_386_PLT32 ];
case BFD_RELOC_386_COPY:
TRACE ("BFD_RELOC_386_COPY");
- return &elf_howto_table[ (int)R_386_COPY ];
+ return &elf_howto_table[(unsigned int) R_386_COPY ];
case BFD_RELOC_386_GLOB_DAT:
TRACE ("BFD_RELOC_386_GLOB_DAT");
- return &elf_howto_table[ (int)R_386_GLOB_DAT ];
+ return &elf_howto_table[(unsigned int) R_386_GLOB_DAT ];
case BFD_RELOC_386_JUMP_SLOT:
TRACE ("BFD_RELOC_386_JUMP_SLOT");
- return &elf_howto_table[ (int)R_386_JUMP_SLOT ];
+ return &elf_howto_table[(unsigned int) R_386_JUMP_SLOT ];
case BFD_RELOC_386_RELATIVE:
TRACE ("BFD_RELOC_386_RELATIVE");
- return &elf_howto_table[ (int)R_386_RELATIVE ];
+ return &elf_howto_table[(unsigned int) R_386_RELATIVE ];
case BFD_RELOC_386_GOTOFF:
TRACE ("BFD_RELOC_386_GOTOFF");
- return &elf_howto_table[ (int)R_386_GOTOFF ];
+ return &elf_howto_table[(unsigned int) R_386_GOTOFF ];
case BFD_RELOC_386_GOTPC:
TRACE ("BFD_RELOC_386_GOTPC");
- return &elf_howto_table[ (int)R_386_GOTPC ];
+ return &elf_howto_table[(unsigned int) R_386_GOTPC ];
/* The remaining relocs are a GNU extension. */
case BFD_RELOC_16:
TRACE ("BFD_RELOC_16");
- return &elf_howto_table[(int) R_386_16];
+ return &elf_howto_table[(unsigned int) R_386_16 - R_386_ext_offset];
case BFD_RELOC_16_PCREL:
TRACE ("BFD_RELOC_16_PCREL");
- return &elf_howto_table[(int) R_386_PC16];
+ return &elf_howto_table[(unsigned int) R_386_PC16 - R_386_ext_offset];
case BFD_RELOC_8:
TRACE ("BFD_RELOC_8");
- return &elf_howto_table[(int) R_386_8];
+ return &elf_howto_table[(unsigned int) R_386_8 - R_386_ext_offset];
case BFD_RELOC_8_PCREL:
TRACE ("BFD_RELOC_8_PCREL");
- return &elf_howto_table[(int) R_386_PC8];
+ return &elf_howto_table[(unsigned int) R_386_PC8 - R_386_ext_offset];
case BFD_RELOC_VTABLE_INHERIT:
TRACE ("BFD_RELOC_VTABLE_INHERIT");
- return &elf32_i386_vtinherit_howto;
+ return &elf_howto_table[(unsigned int) R_386_GNU_VTINHERIT
+ - R_386_vt_offset];
case BFD_RELOC_VTABLE_ENTRY:
TRACE ("BFD_RELOC_VTABLE_ENTRY");
- return &elf32_i386_vtentry_howto;
+ return &elf_howto_table[(unsigned int) R_386_GNU_VTENTRY
+ - R_386_vt_offset];
default:
break;
@@ -224,22 +261,20 @@ elf_i386_info_to_howto_rel (abfd, cache_ptr, dst)
arelent *cache_ptr;
Elf32_Internal_Rel *dst;
{
- enum elf_i386_reloc_type type;
-
- type = (enum elf_i386_reloc_type) ELF32_R_TYPE (dst->r_info);
- if (type == R_386_GNU_VTINHERIT)
- cache_ptr->howto = &elf32_i386_vtinherit_howto;
- else if (type == R_386_GNU_VTENTRY)
- cache_ptr->howto = &elf32_i386_vtentry_howto;
- else if (type < R_386_max
- && (type < FIRST_INVALID_RELOC || type > LAST_INVALID_RELOC))
- cache_ptr->howto = &elf_howto_table[(int) type];
- else
+ unsigned int r_type = ELF32_R_TYPE (dst->r_info);
+ unsigned int indx;
+
+ if ((indx = r_type) >= R_386_standard
+ && ((indx = r_type - R_386_ext_offset) - R_386_standard
+ >= R_386_ext - R_386_standard)
+ && ((indx = r_type - R_386_vt_offset) - R_386_ext
+ >= R_386_vt - R_386_ext))
{
(*_bfd_error_handler) (_("%s: invalid relocation type %d"),
- bfd_get_filename (abfd), (int) type);
- cache_ptr->howto = &elf_howto_table[(int) R_386_NONE];
+ bfd_get_filename (abfd), (int) r_type);
+ indx = (unsigned int) R_386_NONE;
}
+ cache_ptr->howto = &elf_howto_table[indx];
}
/* Return whether a symbol name implies a local label. The UnixWare
@@ -439,7 +474,7 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
bfd *dynobj;
Elf_Internal_Shdr *symtab_hdr;
struct elf_link_hash_entry **sym_hashes;
- bfd_vma *local_got_offsets;
+ bfd_signed_vma *local_got_refcounts;
const Elf_Internal_Rela *rel;
const Elf_Internal_Rela *rel_end;
asection *sgot;
@@ -452,7 +487,7 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
dynobj = elf_hash_table (info)->dynobj;
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
sym_hashes = elf_sym_hashes (abfd);
- local_got_offsets = elf_local_got_offsets (abfd);
+ local_got_refcounts = elf_local_got_refcounts (abfd);
sgot = NULL;
srelgot = NULL;
@@ -522,57 +557,54 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
if (h != NULL)
{
- if (h->got.offset != (bfd_vma) -1)
+ if (h->got.refcount == -1)
{
- /* We have already allocated space in the .got. */
- break;
- }
- h->got.offset = sgot->_raw_size;
+ h->got.refcount = 1;
- /* Make sure this symbol is output as a dynamic symbol. */
- if (h->dynindx == -1)
- {
- if (! bfd_elf32_link_record_dynamic_symbol (info, h))
- return false;
- }
+ /* Make sure this symbol is output as a dynamic symbol. */
+ if (h->dynindx == -1)
+ {
+ if (! bfd_elf32_link_record_dynamic_symbol (info, h))
+ return false;
+ }
- srelgot->_raw_size += sizeof (Elf32_External_Rel);
+ sgot->_raw_size += 4;
+ srelgot->_raw_size += sizeof (Elf32_External_Rel);
+ }
+ else
+ h->got.refcount += 1;
}
else
{
- /* This is a global offset table entry for a local
- symbol. */
- if (local_got_offsets == NULL)
+ /* This is a global offset table entry for a local symbol. */
+ if (local_got_refcounts == NULL)
{
size_t size;
- register unsigned int i;
- size = symtab_hdr->sh_info * sizeof (bfd_vma);
- local_got_offsets = (bfd_vma *) bfd_alloc (abfd, size);
- if (local_got_offsets == NULL)
+ size = symtab_hdr->sh_info * sizeof (bfd_signed_vma);
+ local_got_refcounts = ((bfd_signed_vma *)
+ bfd_alloc (abfd, size));
+ if (local_got_refcounts == NULL)
return false;
- elf_local_got_offsets (abfd) = local_got_offsets;
- for (i = 0; i < symtab_hdr->sh_info; i++)
- local_got_offsets[i] = (bfd_vma) -1;
+ elf_local_got_refcounts (abfd) = local_got_refcounts;
+ memset (local_got_refcounts, -1, size);
}
- if (local_got_offsets[r_symndx] != (bfd_vma) -1)
+ if (local_got_refcounts[r_symndx] == -1)
{
- /* We have already allocated space in the .got. */
- break;
- }
- local_got_offsets[r_symndx] = sgot->_raw_size;
+ local_got_refcounts[r_symndx] = 1;
- if (info->shared)
- {
- /* If we are generating a shared object, we need to
- output a R_386_RELATIVE reloc so that the dynamic
- linker can adjust this GOT entry. */
- srelgot->_raw_size += sizeof (Elf32_External_Rel);
+ sgot->_raw_size += 4;
+ if (info->shared)
+ {
+ /* If we are generating a shared object, we need to
+ output a R_386_RELATIVE reloc so that the dynamic
+ linker can adjust this GOT entry. */
+ srelgot->_raw_size += sizeof (Elf32_External_Rel);
+ }
}
+ else
+ local_got_refcounts[r_symndx] += 1;
}
-
- sgot->_raw_size += 4;
-
break;
case R_386_PLT32:
@@ -588,8 +620,13 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
if (h == NULL)
continue;
- h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
-
+ if (h->plt.refcount == -1)
+ {
+ h->plt.refcount = 1;
+ h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
+ }
+ else
+ h->plt.refcount += 1;
break;
case R_386_32:
@@ -598,28 +635,33 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF;
/* If we are creating a shared library, and this is a reloc
- against a global symbol, or a non PC relative reloc
- against a local symbol, then we need to copy the reloc
- into the shared library. However, if we are linking with
- -Bsymbolic, we do not need to copy a reloc against a
- global symbol which is defined in an object we are
- including in the link (i.e., DEF_REGULAR is set). At
- this point we have not seen all the input files, so it is
- possible that DEF_REGULAR is not set now but will be set
- later (it is never cleared). We account for that
- possibility below by storing information in the
- pcrel_relocs_copied field of the hash table entry. */
+ against a global symbol, or a non PC relative reloc
+ against a local symbol, then we need to copy the reloc
+ into the shared library. However, if we are linking with
+ -Bsymbolic, we do not need to copy a reloc against a
+ global symbol which is defined in an object we are
+ including in the link (i.e., DEF_REGULAR is set). At
+ this point we have not seen all the input files, so it is
+ possible that DEF_REGULAR is not set now but will be set
+ later (it is never cleared). In case of a weak definition,
+ DEF_REGULAR may be cleared later by a strong definition in
+ a shared library. We account for that possibility below by
+ storing information in the relocs_copied field of the hash
+ table entry. A similar situation occurs when creating
+ shared libraries and symbol visibility changes render the
+ symbol local. */
if (info->shared
&& (sec->flags & SEC_ALLOC) != 0
&& (ELF32_R_TYPE (rel->r_info) != R_386_PC32
|| (h != NULL
&& (! info->symbolic
+ || h->root.type == bfd_link_hash_defweak
|| (h->elf_link_hash_flags
& ELF_LINK_HASH_DEF_REGULAR) == 0))))
{
/* When creating a shared object, we must copy these
- reloc types into the output file. We create a reloc
- section in dynobj and make room for this reloc. */
+ reloc types into the output file. We create a reloc
+ section in dynobj and make room for this reloc. */
if (sreloc == NULL)
{
const char *name;
@@ -631,9 +673,20 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
if (name == NULL)
return false;
- BFD_ASSERT (strncmp (name, ".rel", 4) == 0
- && strcmp (bfd_get_section_name (abfd, sec),
- name + 4) == 0);
+ if (strncmp (name, ".rel", 4) != 0
+ || strcmp (bfd_get_section_name (abfd, sec),
+ name + 4) != 0)
+ {
+ if (abfd->my_archive)
+ (*_bfd_error_handler) (_("%s(%s): bad relocation section name `%s\'"),
+ bfd_get_filename (abfd->my_archive),
+ bfd_get_filename (abfd),
+ name);
+ else
+ (*_bfd_error_handler) (_("%s: bad relocation section name `%s\'"),
+ bfd_get_filename (abfd),
+ name);
+ }
sreloc = bfd_get_section_by_name (dynobj, name);
if (sreloc == NULL)
@@ -654,15 +707,13 @@ elf_i386_check_relocs (abfd, info, sec, relocs)
sreloc->_raw_size += sizeof (Elf32_External_Rel);
- /* If we are linking with -Bsymbolic, and this is a
- global symbol, we count the number of PC relative
- relocations we have entered for this symbol, so that
- we can discard them again if the symbol is later
- defined by a regular object. Note that this function
- is only called if we are using an elf_i386 linker
- hash table, which means that h is really a pointer to
- an elf_i386_link_hash_entry. */
- if (h != NULL && info->symbolic
+ /* If this is a global symbol, we count the number of PC
+ relative relocations we have entered for this symbol,
+ so that we can discard them later as necessary. Note
+ that this function is only called if we are using an
+ elf_i386 linker hash table, which means that h is
+ really a pointer to an elf_i386_link_hash_entry. */
+ if (h != NULL
&& ELF32_R_TYPE (rel->r_info) == R_386_PC32)
{
struct elf_i386_link_hash_entry *eh;
@@ -766,14 +817,81 @@ elf_i386_gc_mark_hook (abfd, info, rel, h, sym)
static boolean
elf_i386_gc_sweep_hook (abfd, info, sec, relocs)
- bfd *abfd ATTRIBUTE_UNUSED;
+ bfd *abfd;
struct bfd_link_info *info ATTRIBUTE_UNUSED;
- asection *sec ATTRIBUTE_UNUSED;
- const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED;
+ asection *sec;
+ const Elf_Internal_Rela *relocs;
{
- /* ??? It would seem that the existing i386 code does no sort
- of reference counting or whatnot on its GOT and PLT entries,
- so it is not possible to garbage collect them at this time. */
+ Elf_Internal_Shdr *symtab_hdr;
+ struct elf_link_hash_entry **sym_hashes;
+ bfd_signed_vma *local_got_refcounts;
+ const Elf_Internal_Rela *rel, *relend;
+ unsigned long r_symndx;
+ struct elf_link_hash_entry *h;
+ bfd *dynobj;
+ asection *sgot;
+ asection *srelgot;
+
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes (abfd);
+ local_got_refcounts = elf_local_got_refcounts (abfd);
+
+ dynobj = elf_hash_table (info)->dynobj;
+ if (dynobj == NULL)
+ return true;
+
+ sgot = bfd_get_section_by_name (dynobj, ".got");
+ srelgot = bfd_get_section_by_name (dynobj, ".rel.got");
+
+ relend = relocs + sec->reloc_count;
+ for (rel = relocs; rel < relend; rel++)
+ switch (ELF32_R_TYPE (rel->r_info))
+ {
+ case R_386_GOT32:
+ case R_386_GOTOFF:
+ case R_386_GOTPC:
+ r_symndx = ELF32_R_SYM (rel->r_info);
+ if (r_symndx >= symtab_hdr->sh_info)
+ {
+ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+ if (h->got.refcount > 0)
+ {
+ h->got.refcount -= 1;
+ if (h->got.refcount == 0)
+ {
+ sgot->_raw_size -= 4;
+ srelgot->_raw_size -= sizeof (Elf32_External_Rel);
+ }
+ }
+ }
+ else if (local_got_refcounts != NULL)
+ {
+ if (local_got_refcounts[r_symndx] > 0)
+ {
+ local_got_refcounts[r_symndx] -= 1;
+ if (local_got_refcounts[r_symndx] == 0)
+ {
+ sgot->_raw_size -= 4;
+ if (info->shared)
+ srelgot->_raw_size -= sizeof (Elf32_External_Rel);
+ }
+ }
+ }
+ break;
+
+ case R_386_PLT32:
+ r_symndx = ELF32_R_SYM (rel->r_info);
+ if (r_symndx >= symtab_hdr->sh_info)
+ {
+ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+ if (h->plt.refcount > 0)
+ h->plt.refcount -= 1;
+ }
+ break;
+
+ default:
+ break;
+ }
return true;
}
@@ -812,16 +930,18 @@ elf_i386_adjust_dynamic_symbol (info, h)
if (h->type == STT_FUNC
|| (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0)
{
- if (! info->shared
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
- && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0)
+ if ((! info->shared
+ && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) == 0
+ && (h->elf_link_hash_flags & ELF_LINK_HASH_REF_DYNAMIC) == 0)
+ || (info->shared && h->plt.refcount <= 0))
{
/* This case can occur if we saw a PLT32 reloc in an input
- file, but the symbol was never referred to by a dynamic
- object. In such a case, we don't actually need to build
- a procedure linkage table, and we can just do a PC32
- reloc instead. */
- BFD_ASSERT ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0);
+ file, but the symbol was never referred to by a dynamic
+ object, or if all references were garbage collected. In
+ such a case, we don't actually need to build a procedure
+ linkage table, and we can just do a PC32 reloc instead. */
+ h->plt.offset = (bfd_vma) -1;
+ h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
return true;
}
@@ -859,13 +979,11 @@ elf_i386_adjust_dynamic_symbol (info, h)
/* We also need to make an entry in the .got.plt section, which
will be placed in the .got section by the linker script. */
-
s = bfd_get_section_by_name (dynobj, ".got.plt");
BFD_ASSERT (s != NULL);
s->_raw_size += 4;
/* We also need to make an entry in the .rel.plt section. */
-
s = bfd_get_section_by_name (dynobj, ".rel.plt");
BFD_ASSERT (s != NULL);
s->_raw_size += sizeof (Elf32_External_Rel);
@@ -995,10 +1113,10 @@ elf_i386_size_dynamic_sections (output_bfd, info)
PC relative relocs against symbols defined in a regular object.
We allocated space for them in the check_relocs routine, but we
will not fill them in in the relocate_section routine. */
- if (info->shared && info->symbolic)
+ if (info->shared)
elf_i386_link_hash_traverse (elf_i386_hash_table (info),
elf_i386_discard_copies,
- (PTR) NULL);
+ (PTR) info);
/* The check_relocs and adjust_dynamic_symbol entry points have
determined the sizes of the various dynamic sections. Allocate
@@ -1092,8 +1210,12 @@ elf_i386_size_dynamic_sections (output_bfd, info)
continue;
}
- /* Allocate memory for the section contents. */
- s->contents = (bfd_byte *) bfd_alloc (dynobj, s->_raw_size);
+ /* Allocate memory for the section contents. We use bfd_zalloc
+ here in case unused entries are not reclaimed before the
+ section's contents are written out. This should not happen,
+ but this way if it does, we get a R_386_NONE reloc instead
+ of garbage. */
+ s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->_raw_size);
if (s->contents == NULL && s->_raw_size != 0)
return false;
}
@@ -1133,6 +1255,7 @@ elf_i386_size_dynamic_sections (output_bfd, info)
{
if (! bfd_elf32_add_dynamic_entry (info, DT_TEXTREL, 0))
return false;
+ info->flags |= DF_TEXTREL;
}
}
@@ -1140,26 +1263,32 @@ elf_i386_size_dynamic_sections (output_bfd, info)
}
/* This function is called via elf_i386_link_hash_traverse if we are
- creating a shared object with -Bsymbolic. It discards the space
- allocated to copy PC relative relocs against symbols which are
- defined in regular objects. We allocated space for them in the
+ creating a shared object. In the -Bsymbolic case, it discards the
+ space allocated to copy PC relative relocs against symbols which
+ are defined in regular objects. For the normal non-symbolic case,
+ we also discard space for relocs that have become local due to
+ symbol visibility changes. We allocated space for them in the
check_relocs routine, but we won't fill them in in the
relocate_section routine. */
-/*ARGSUSED*/
static boolean
-elf_i386_discard_copies (h, ignore)
+elf_i386_discard_copies (h, inf)
struct elf_i386_link_hash_entry *h;
- PTR ignore ATTRIBUTE_UNUSED;
+ PTR inf;
{
struct elf_i386_pcrel_relocs_copied *s;
-
- /* We only discard relocs for symbols defined in a regular object. */
- if ((h->root.elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
- return true;
-
- for (s = h->pcrel_relocs_copied; s != NULL; s = s->next)
- s->section->_raw_size -= s->count * sizeof (Elf32_External_Rel);
+ struct bfd_link_info *info = (struct bfd_link_info *) inf;
+
+ /* If a symbol has been forced local or we have found a regular
+ definition for the symbolic link case, then we won't be needing
+ any relocs. */
+ if ((h->root.elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0
+ && ((h->root.elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0
+ || info->symbolic))
+ {
+ for (s = h->pcrel_relocs_copied; s != NULL; s = s->next)
+ s->section->_raw_size -= s->count * sizeof (Elf32_External_Rel);
+ }
return true;
}
@@ -1193,9 +1322,14 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
sym_hashes = elf_sym_hashes (input_bfd);
local_got_offsets = elf_local_got_offsets (input_bfd);
- sgot = NULL;
- splt = NULL;
sreloc = NULL;
+ splt = NULL;
+ sgot = NULL;
+ if (dynobj != NULL)
+ {
+ splt = bfd_get_section_by_name (dynobj, ".plt");
+ sgot = bfd_get_section_by_name (dynobj, ".got");
+ }
rel = relocs;
relend = relocs + input_section->reloc_count;
@@ -1209,20 +1343,21 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
asection *sec;
bfd_vma relocation;
bfd_reloc_status_type r;
+ unsigned int indx;
r_type = ELF32_R_TYPE (rel->r_info);
- if (r_type == R_386_GNU_VTINHERIT
- || r_type == R_386_GNU_VTENTRY)
+ if (r_type == (int) R_386_GNU_VTINHERIT
+ || r_type == (int) R_386_GNU_VTENTRY)
continue;
- if (r_type < 0
- || r_type >= (int) R_386_max
- || (r_type >= (int) FIRST_INVALID_RELOC
- && r_type <= (int) LAST_INVALID_RELOC))
+
+ if ((indx = (unsigned) r_type) >= R_386_standard
+ && ((indx = (unsigned) r_type - R_386_ext_offset) - R_386_standard
+ >= R_386_ext - R_386_standard))
{
bfd_set_error (bfd_error_bad_value);
return false;
}
- howto = elf_howto_table + r_type;
+ howto = elf_howto_table + indx;
r_symndx = ELF32_R_SYM (rel->r_info);
@@ -1273,6 +1408,7 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
sec = h->root.u.def.section;
if (r_type == R_386_GOTPC
|| (r_type == R_386_PLT32
+ && splt != NULL
&& h->plt.offset != (bfd_vma) -1)
|| (r_type == R_386_GOT32
&& elf_hash_table (info)->dynamic_sections_created
@@ -1336,11 +1472,7 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
case R_386_GOT32:
/* Relocation is to the entry for this symbol in the global
offset table. */
- if (sgot == NULL)
- {
- sgot = bfd_get_section_by_name (dynobj, ".got");
- BFD_ASSERT (sgot != NULL);
- }
+ BFD_ASSERT (sgot != NULL);
if (h != NULL)
{
@@ -1459,12 +1591,13 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
/* Relocation is to the entry for this symbol in the
procedure linkage table. */
- /* Resolve a PLT32 reloc again a local symbol directly,
+ /* Resolve a PLT32 reloc against a local symbol directly,
without using the procedure linkage table. */
if (h == NULL)
break;
- if (h->plt.offset == (bfd_vma) -1)
+ if (h->plt.offset == (bfd_vma) -1
+ || splt == NULL)
{
/* We didn't make a PLT entry for this symbol. This
happens when statically linking PIC code, or when
@@ -1472,12 +1605,6 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
break;
}
- if (splt == NULL)
- {
- splt = bfd_get_section_by_name (dynobj, ".plt");
- BFD_ASSERT (splt != NULL);
- }
-
relocation = (splt->output_section->vma
+ splt->output_offset
+ h->plt.offset);
@@ -1513,10 +1640,22 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
if (name == NULL)
return false;
- BFD_ASSERT (strncmp (name, ".rel", 4) == 0
- && strcmp (bfd_get_section_name (input_bfd,
- input_section),
- name + 4) == 0);
+ if (strncmp (name, ".rel", 4) != 0
+ || strcmp (bfd_get_section_name (input_bfd,
+ input_section),
+ name + 4) != 0)
+ {
+ if (input_bfd->my_archive)
+ (*_bfd_error_handler) (_("%s(%s): bad relocation section name `%s\'"),
+ bfd_get_filename (input_bfd->my_archive),
+ bfd_get_filename (input_bfd),
+ name);
+ else
+ (*_bfd_error_handler) (_("%s: bad relocation section name `%s\'"),
+ bfd_get_filename (input_bfd),
+ name);
+ return false;
+ }
sreloc = bfd_get_section_by_name (dynobj, name);
BFD_ASSERT (sreloc != NULL);
@@ -1744,17 +1883,21 @@ elf_i386_finish_dynamic_symbol (output_bfd, info, h, sym)
+ sgot->output_offset
+ (h->got.offset &~ 1));
- /* If this is a -Bsymbolic link, and the symbol is defined
- locally, we just want to emit a RELATIVE reloc. Likewise if
- the symbol was forced to be local because of a version file.
+ /* If this is a static link, or it is a -Bsymbolic link and the
+ symbol is defined locally or was forced to be local because
+ of a version file, we just want to emit a RELATIVE reloc.
The entry in the global offset table will already have been
initialized in the relocate_section function. */
- if (info->shared
- && (info->symbolic || h->dynindx == -1)
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))
- rel.r_info = ELF32_R_INFO (0, R_386_RELATIVE);
+ if (! elf_hash_table (info)->dynamic_sections_created
+ || (info->shared
+ && (info->symbolic || h->dynindx == -1)
+ && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)))
+ {
+ rel.r_info = ELF32_R_INFO (0, R_386_RELATIVE);
+ }
else
{
+ BFD_ASSERT((h->got.offset & 1) == 0);
bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + h->got.offset);
rel.r_info = ELF32_R_INFO (h->dynindx, R_386_GLOB_DAT);
}
@@ -1928,27 +2071,6 @@ elf_i386_finish_dynamic_sections (output_bfd, info)
#define ELF_ARCH bfd_arch_i386
#define ELF_MACHINE_CODE EM_386
#define ELF_MAXPAGESIZE 0x1000
-#define elf_info_to_howto elf_i386_info_to_howto
-#define elf_info_to_howto_rel elf_i386_info_to_howto_rel
-#define bfd_elf32_bfd_reloc_type_lookup elf_i386_reloc_type_lookup
-#define bfd_elf32_bfd_is_local_label_name \
- elf_i386_is_local_label_name
-#define elf_backend_create_dynamic_sections \
- _bfd_elf_create_dynamic_sections
-#define bfd_elf32_bfd_link_hash_table_create \
- elf_i386_link_hash_table_create
-#define elf_backend_check_relocs elf_i386_check_relocs
-#define elf_backend_adjust_dynamic_symbol \
- elf_i386_adjust_dynamic_symbol
-#define elf_backend_size_dynamic_sections \
- elf_i386_size_dynamic_sections
-#define elf_backend_relocate_section elf_i386_relocate_section
-#define elf_backend_finish_dynamic_symbol \
- elf_i386_finish_dynamic_symbol
-#define elf_backend_finish_dynamic_sections \
- elf_i386_finish_dynamic_sections
-#define elf_backend_gc_mark_hook elf_i386_gc_mark_hook
-#define elf_backend_gc_sweep_hook elf_i386_gc_sweep_hook
#define elf_backend_can_gc_sections 1
#define elf_backend_want_got_plt 1
@@ -1957,4 +2079,22 @@ elf_i386_finish_dynamic_sections (output_bfd, info)
#define elf_backend_got_header_size 12
#define elf_backend_plt_header_size PLT_ENTRY_SIZE
+#define elf_info_to_howto elf_i386_info_to_howto
+#define elf_info_to_howto_rel elf_i386_info_to_howto_rel
+
+#define bfd_elf32_bfd_final_link _bfd_elf32_gc_common_final_link
+#define bfd_elf32_bfd_is_local_label_name elf_i386_is_local_label_name
+#define bfd_elf32_bfd_link_hash_table_create elf_i386_link_hash_table_create
+#define bfd_elf32_bfd_reloc_type_lookup elf_i386_reloc_type_lookup
+
+#define elf_backend_adjust_dynamic_symbol elf_i386_adjust_dynamic_symbol
+#define elf_backend_check_relocs elf_i386_check_relocs
+#define elf_backend_create_dynamic_sections _bfd_elf_create_dynamic_sections
+#define elf_backend_finish_dynamic_sections elf_i386_finish_dynamic_sections
+#define elf_backend_finish_dynamic_symbol elf_i386_finish_dynamic_symbol
+#define elf_backend_gc_mark_hook elf_i386_gc_mark_hook
+#define elf_backend_gc_sweep_hook elf_i386_gc_sweep_hook
+#define elf_backend_relocate_section elf_i386_relocate_section
+#define elf_backend_size_dynamic_sections elf_i386_size_dynamic_sections
+
#include "elf32-target.h"
diff --git a/contrib/binutils/bfd/elf32-ppc.c b/contrib/binutils/bfd/elf32-ppc.c
index b405fea..d3152ce 100644
--- a/contrib/binutils/bfd/elf32-ppc.c
+++ b/contrib/binutils/bfd/elf32-ppc.c
@@ -32,7 +32,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define USE_RELA /* we want RELA relocations, not REL */
-
static reloc_howto_type *ppc_elf_reloc_type_lookup
PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
static void ppc_elf_info_to_howto
@@ -124,11 +123,27 @@ static boolean ppc_elf_finish_dynamic_sections PARAMS ((bfd *, struct bfd_link_i
/* The number of single-slot PLT entries (the rest use two slots). */
#define PLT_NUM_SINGLE_ENTRIES 8192
+/* Will references to this symbol always reference the symbol
+ in this object? */
+#define SYMBOL_REFERENCES_LOCAL(INFO, H) \
+ ((! INFO->shared \
+ || INFO->symbolic \
+ || H->dynindx == -1 \
+ || ELF_ST_VISIBILITY (H->other) == STV_INTERNAL \
+ || ELF_ST_VISIBILITY (H->other) == STV_HIDDEN) \
+ && (H->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0)
+
+/* Will _calls_ to this symbol always call the version in this object? */
+#define SYMBOL_CALLS_LOCAL(INFO, H) \
+ ((! INFO->shared \
+ || INFO->symbolic \
+ || H->dynindx == -1 \
+ || ELF_ST_VISIBILITY (H->other) != STV_DEFAULT) \
+ && (H->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0)
-static reloc_howto_type *ppc_elf_howto_table[ (int)R_PPC_max ];
+static reloc_howto_type *ppc_elf_howto_table[(int) R_PPC_max];
-static reloc_howto_type ppc_elf_howto_raw[] =
-{
+static reloc_howto_type ppc_elf_howto_raw[] = {
/* This reloc does nothing. */
HOWTO (R_PPC_NONE, /* type */
0, /* rightshift */
@@ -221,7 +236,7 @@ static reloc_howto_type ppc_elf_howto_raw[] =
false), /* pcrel_offset */
/* The high order 16 bits of an address, plus 1 if the contents of
- the low 16 bits, treated as a signed number, is negative. */
+ the low 16 bits, treated as a signed number, is negative. */
HOWTO (R_PPC_ADDR16_HA, /* type */
16, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
@@ -254,7 +269,7 @@ static reloc_howto_type ppc_elf_howto_raw[] =
/* An absolute 16 bit branch, for which bit 10 should be set to
indicate that the branch is expected to be taken. The lower two
- bits must be zero. */
+ bits must be zero. */
HOWTO (R_PPC_ADDR14_BRTAKEN, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -286,7 +301,7 @@ static reloc_howto_type ppc_elf_howto_raw[] =
0xfffc, /* dst_mask */
false), /* pcrel_offset */
- /* A relative 26 bit branch; the lower two bits must be zero. */
+ /* A relative 26 bit branch; the lower two bits must be zero. */
HOWTO (R_PPC_REL24, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -301,7 +316,7 @@ static reloc_howto_type ppc_elf_howto_raw[] =
0x3fffffc, /* dst_mask */
true), /* pcrel_offset */
- /* A relative 16 bit branch; the lower two bits must be zero. */
+ /* A relative 16 bit branch; the lower two bits must be zero. */
HOWTO (R_PPC_REL14, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -316,7 +331,7 @@ static reloc_howto_type ppc_elf_howto_raw[] =
0xfffc, /* dst_mask */
true), /* pcrel_offset */
- /* A relative 16 bit branch. Bit 10 should be set to indicate that
+ /* A relative 16 bit branch. Bit 10 should be set to indicate that
the branch is expected to be taken. The lower two bits must be
zero. */
HOWTO (R_PPC_REL14_BRTAKEN, /* type */
@@ -333,7 +348,7 @@ static reloc_howto_type ppc_elf_howto_raw[] =
0xfffc, /* dst_mask */
true), /* pcrel_offset */
- /* A relative 16 bit branch. Bit 10 should be set to indicate that
+ /* A relative 16 bit branch. Bit 10 should be set to indicate that
the branch is not expected to be taken. The lower two bits must
be zero. */
HOWTO (R_PPC_REL14_BRNTAKEN, /* type */
@@ -560,7 +575,7 @@ static reloc_howto_type ppc_elf_howto_raw[] =
true), /* pcrel_offset */
/* 32-bit relocation to the symbol's procedure linkage table.
- FIXME: not supported. */
+ FIXME: not supported. */
HOWTO (R_PPC_PLT32, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -576,7 +591,7 @@ static reloc_howto_type ppc_elf_howto_raw[] =
false), /* pcrel_offset */
/* 32-bit PC relative relocation to the symbol's procedure linkage table.
- FIXME: not supported. */
+ FIXME: not supported. */
HOWTO (R_PPC_PLTREL32, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -655,7 +670,7 @@ static reloc_howto_type ppc_elf_howto_raw[] =
0xffff, /* dst_mask */
false), /* pcrel_offset */
- /* 32-bit section relative relocation. */
+ /* 32-bit section relative relocation. */
HOWTO (R_PPC_SECTOFF, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -670,7 +685,7 @@ static reloc_howto_type ppc_elf_howto_raw[] =
0, /* dst_mask */
true), /* pcrel_offset */
- /* 16-bit lower half section relative relocation. */
+ /* 16-bit lower half section relative relocation. */
HOWTO (R_PPC_SECTOFF_LO, /* type */
0, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
@@ -685,7 +700,7 @@ static reloc_howto_type ppc_elf_howto_raw[] =
0xffff, /* dst_mask */
false), /* pcrel_offset */
- /* 16-bit upper half section relative relocation. */
+ /* 16-bit upper half section relative relocation. */
HOWTO (R_PPC_SECTOFF_HI, /* type */
16, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
@@ -700,7 +715,7 @@ static reloc_howto_type ppc_elf_howto_raw[] =
0xffff, /* dst_mask */
false), /* pcrel_offset */
- /* 16-bit upper half adjusted section relative relocation. */
+ /* 16-bit upper half adjusted section relative relocation. */
HOWTO (R_PPC_SECTOFF_HA, /* type */
16, /* rightshift */
1, /* size (0 = byte, 1 = short, 2 = long) */
@@ -931,7 +946,6 @@ static reloc_howto_type ppc_elf_howto_raw[] =
0xffff, /* dst_mask */
false), /* pcrel_offset */
};
-
/* Initialize the ppc_elf_howto_table, so that linear accesses can be done. */
@@ -943,11 +957,10 @@ ppc_elf_howto_init ()
for (i = 0; i < sizeof (ppc_elf_howto_raw) / sizeof (ppc_elf_howto_raw[0]); i++)
{
type = ppc_elf_howto_raw[i].type;
- BFD_ASSERT (type < sizeof(ppc_elf_howto_table) / sizeof(ppc_elf_howto_table[0]));
+ BFD_ASSERT (type < sizeof (ppc_elf_howto_table) / sizeof (ppc_elf_howto_table[0]));
ppc_elf_howto_table[type] = &ppc_elf_howto_raw[i];
}
}
-
/* This function handles relaxing for the PPC with option --mpc860c0[=<n>].
@@ -959,7 +972,7 @@ ppc_elf_howto_init ()
3/ The branch is taken.
4/ The branch is located in the last 5 words of a page.
(The EOP limit is 5 by default but may be specified as any value from 1-10.)
-
+
Our software solution is to detect these problematic branches in a
linker pass and modify them as follows:
1/ Unconditional branches - Since these are always predicted taken,
@@ -975,22 +988,22 @@ ppc_elf_howto_init ()
static int
ppc_elf_sort_rela (arg1, arg2)
- const void *arg1;
- const void *arg2;
+ const void *arg1;
+ const void *arg2;
{
const Elf_Internal_Rela **rela1 = (const Elf_Internal_Rela**) arg1;
const Elf_Internal_Rela **rela2 = (const Elf_Internal_Rela**) arg2;
- /* Sort by offset. */
+ /* Sort by offset. */
return ((*rela1)->r_offset - (*rela2)->r_offset);
}
static boolean
ppc_elf_relax_section (abfd, isec, link_info, again)
- bfd *abfd;
- asection *isec;
- struct bfd_link_info *link_info;
- boolean *again;
+ bfd *abfd;
+ asection *isec;
+ struct bfd_link_info *link_info;
+ boolean *again;
{
#define PAGESIZE 0x1000
@@ -1001,7 +1014,7 @@ ppc_elf_relax_section (abfd, isec, link_info, again)
Elf_Internal_Rela **rela_comb = NULL;
int comb_curr, comb_count;
- /* We never have to do this more than once per input section. */
+ /* We never have to do this more than once per input section. */
*again = false;
/* If needed, initialize this section's cooked size. */
@@ -1009,13 +1022,13 @@ ppc_elf_relax_section (abfd, isec, link_info, again)
isec->_cooked_size = isec->_raw_size;
/* We're only interested in text sections which overlap the
- troublesome area at the end of a page. */
+ troublesome area at the end of a page. */
if (link_info->mpc860c0 && (isec->flags & SEC_CODE) && isec->_cooked_size)
{
bfd_vma dot, end_page, end_section;
boolean section_modified;
- /* Get the section contents. */
+ /* Get the section contents. */
/* Get cached copy if it exists. */
if (elf_section_data (isec)->this_hdr.contents != NULL)
contents = elf_section_data (isec)->this_hdr.contents;
@@ -1024,42 +1037,42 @@ ppc_elf_relax_section (abfd, isec, link_info, again)
/* Go get them off disk. */
contents = (bfd_byte *) bfd_malloc (isec->_raw_size);
if (contents == NULL)
- goto error_return;
+ goto error_return;
free_contents = contents;
if (! bfd_get_section_contents (abfd, isec, contents,
(file_ptr) 0, isec->_raw_size))
- goto error_return;
+ goto error_return;
}
comb_curr = 0;
comb_count = 0;
if (isec->reloc_count)
- {
+ {
unsigned n;
/* Get a copy of the native relocations. */
internal_relocs = _bfd_elf32_link_read_relocs (
- abfd, isec, (PTR) NULL, (Elf_Internal_Rela *) NULL,
+ abfd, isec, (PTR) NULL, (Elf_Internal_Rela *) NULL,
link_info->keep_memory);
if (internal_relocs == NULL)
goto error_return;
if (! link_info->keep_memory)
free_relocs = internal_relocs;
-
- /* Setup a faster access method for the reloc info we need. */
+
+ /* Setup a faster access method for the reloc info we need. */
rela_comb = (Elf_Internal_Rela**)
- bfd_malloc (isec->reloc_count*sizeof(Elf_Internal_Rela*));
+ bfd_malloc (isec->reloc_count*sizeof (Elf_Internal_Rela*));
if (rela_comb == NULL)
goto error_return;
- for (n=0; n<isec->reloc_count; ++n)
+ for (n = 0; n < isec->reloc_count; ++n)
{
long r_type;
-
+
r_type = ELF32_R_TYPE (internal_relocs[n].r_info);
- if (r_type < 0 || r_type >= (int)R_PPC_max)
+ if (r_type < 0 || r_type >= (int) R_PPC_max)
goto error_return;
-
+
/* Prologue constants are sometimes present in the ".text"
sections and they can be identified by their associated relocation.
We don't want to process those words and some others which
@@ -1067,37 +1080,37 @@ ppc_elf_relax_section (abfd, isec, link_info, again)
conditional branches will have a relocation so we will
only ignore words that 1) have a reloc, and 2) the reloc
is not applicable to a conditional branch.
- The array rela_comb is built here for use in the EOP scan loop. */
+ The array rela_comb is built here for use in the EOP scan loop. */
switch (r_type)
{
case R_PPC_ADDR14_BRNTAKEN: /* absolute, predicted not taken */
- case R_PPC_REL14: /* relative cond. br. */
+ case R_PPC_REL14: /* relative cond. br. */
case R_PPC_REL14_BRNTAKEN: /* rel. cond. br., predicted not taken */
- /* We should check the instruction. */
+ /* We should check the instruction. */
break;
default:
- /* The word is not a conditional branch - ignore it. */
+ /* The word is not a conditional branch - ignore it. */
rela_comb[comb_count++] = &internal_relocs[n];
break;
}
}
if (comb_count > 1)
- qsort (rela_comb, (size_t) comb_count, sizeof (int), ppc_elf_sort_rela);
- }
+ qsort (rela_comb, (size_t) comb_count, sizeof (int), ppc_elf_sort_rela);
+ }
- /* Enumerate each EOP region that overlaps this section. */
+ /* Enumerate each EOP region that overlaps this section. */
end_section = isec->vma + isec->_cooked_size;
dot = end_page = (isec->vma | (PAGESIZE - 1)) + 1;
dot -= link_info->mpc860c0;
section_modified = false;
if (dot < isec->vma) /* Increment the start position if this section */
- dot = isec->vma; /* begins in the middle of its first EOP region. */
+ dot = isec->vma; /* begins in the middle of its first EOP region. */
for (;
dot < end_section;
dot += PAGESIZE, end_page += PAGESIZE)
{
- /* Check each word in this EOP region. */
+ /* Check each word in this EOP region. */
for (; dot < end_page; dot += 4)
{
bfd_vma isec_offset;
@@ -1105,7 +1118,7 @@ ppc_elf_relax_section (abfd, isec, link_info, again)
boolean skip, modified;
/* Don't process this word if there is a relocation for it and
- the relocation indicates the word is not a conditional branch. */
+ the relocation indicates the word is not a conditional branch. */
skip = false;
isec_offset = dot - isec->vma;
for (; comb_curr<comb_count; ++comb_curr)
@@ -1121,7 +1134,7 @@ ppc_elf_relax_section (abfd, isec, link_info, again)
}
if (skip) continue;
- /* Check the current word for a problematic conditional branch. */
+ /* Check the current word for a problematic conditional branch. */
#define BO0(insn) ((insn) & 0x02000000)
#define BO2(insn) ((insn) & 0x00800000)
#define BO4(insn) ((insn) & 0x00200000)
@@ -1134,7 +1147,7 @@ ppc_elf_relax_section (abfd, isec, link_info, again)
{
bfd_vma target;
/* This branch is predicted as "normal".
- If this is a forward branch, it is problematic. */
+ If this is a forward branch, it is problematic. */
target = insn & 0x0000Fffc; /*extract*/
target = (target ^ 0x8000) - 0x8000; /*sign extend*/
@@ -1155,7 +1168,7 @@ ppc_elf_relax_section (abfd, isec, link_info, again)
/* This branch is predicted as not-taken.
If this is a forward branch, it is problematic.
Since we can't tell statically if it will branch forward,
- always set the prediction bit. */
+ always set the prediction bit. */
insn |= 0x00200000; /* set the prediction bit */
modified = true;
}
@@ -1168,7 +1181,7 @@ ppc_elf_relax_section (abfd, isec, link_info, again)
/* This branch is predicted as not-taken.
If this is a forward branch, it is problematic.
Since we can't tell statically if it will branch forward,
- always set the prediction bit. */
+ always set the prediction bit. */
insn |= 0x00200000; /* set the prediction bit */
modified = true;
}
@@ -1225,7 +1238,6 @@ error_return:
free (free_contents);
return false;
}
-
static reloc_howto_type *
ppc_elf_reloc_type_lookup (abfd, code)
@@ -1235,13 +1247,13 @@ ppc_elf_reloc_type_lookup (abfd, code)
enum elf_ppc_reloc_type ppc_reloc = R_PPC_NONE;
if (!ppc_elf_howto_table[R_PPC_ADDR32])
- /* Initialize howto table if needed */
+ /* Initialize howto table if needed. */
ppc_elf_howto_init ();
- switch ((int)code)
+ switch ((int) code)
{
default:
- return (reloc_howto_type *)NULL;
+ return (reloc_howto_type *) NULL;
case BFD_RELOC_NONE: ppc_reloc = R_PPC_NONE; break;
case BFD_RELOC_32: ppc_reloc = R_PPC_ADDR32; break;
@@ -1298,7 +1310,7 @@ ppc_elf_reloc_type_lookup (abfd, code)
case BFD_RELOC_VTABLE_ENTRY: ppc_reloc = R_PPC_GNU_VTENTRY; break;
}
- return ppc_elf_howto_table[ (int)ppc_reloc ];
+ return ppc_elf_howto_table[(int) ppc_reloc];
};
/* Set the howto pointer for a PowerPC ELF reloc. */
@@ -1309,7 +1321,8 @@ ppc_elf_info_to_howto (abfd, cache_ptr, dst)
arelent *cache_ptr;
Elf32_Internal_Rela *dst;
{
- if (!ppc_elf_howto_table[ R_PPC_ADDR32 ]) /* Initialize howto table if needed */
+ if (!ppc_elf_howto_table[R_PPC_ADDR32])
+ /* Initialize howto table if needed. */
ppc_elf_howto_init ();
BFD_ASSERT (ELF32_R_TYPE (dst->r_info) < (unsigned int) R_PPC_max);
@@ -1354,7 +1367,7 @@ ppc_elf_addr16_ha_reloc (abfd, reloc_entry, symbol, data, input_section,
return bfd_reloc_continue;
}
-/* Function to set whether a module needs the -mrelocatable bit set. */
+/* Function to set whether a module needs the -mrelocatable bit set. */
static boolean
ppc_elf_set_private_flags (abfd, flags)
@@ -1399,21 +1412,8 @@ ppc_elf_merge_private_bfd_data (ibfd, obfd)
boolean error;
/* Check if we have the same endianess */
- if (ibfd->xvec->byteorder != obfd->xvec->byteorder
- && obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
- {
- const char *msg;
-
- if (bfd_big_endian (ibfd))
- msg = _("%s: compiled for a big endian system and target is little endian");
- else
- msg = _("%s: compiled for a little endian system and target is big endian");
-
- (*_bfd_error_handler) (msg, bfd_get_filename (ibfd));
-
- bfd_set_error (bfd_error_wrong_format);
- return false;
- }
+ if (_bfd_generic_verify_endian_match (ibfd, obfd) == false)
+ return false;
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
@@ -1475,7 +1475,7 @@ ppc_elf_merge_private_bfd_data (ibfd, obfd)
error = true;
(*_bfd_error_handler)
(_("%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"),
- bfd_get_filename (ibfd), (long)new_flags, (long)old_flags);
+ bfd_get_filename (ibfd), (long) new_flags, (long) old_flags);
}
if (error)
@@ -1487,7 +1487,6 @@ ppc_elf_merge_private_bfd_data (ibfd, obfd)
return true;
}
-
/* Handle a PowerPC specific section when reading an object file. This
is called when elfcode.h finds a section with an unknown type. */
@@ -1515,7 +1514,6 @@ ppc_elf_section_from_shdr (abfd, hdr, name)
bfd_set_section_flags (abfd, newsect, flags);
return true;
}
-
/* Set up any other section flags and such that may be necessary. */
@@ -1533,7 +1531,6 @@ ppc_elf_fake_sections (abfd, shdr, asect)
return true;
}
-
/* Create a special linker section */
static elf_linker_section_t *
@@ -1577,10 +1574,10 @@ ppc_elf_create_linker_section (abfd, info, which)
default:
(*_bfd_error_handler) (_("%s: Unknown special linker type %d"),
bfd_get_filename (abfd),
- (int)which);
+ (int) which);
bfd_set_error (bfd_error_bad_value);
- return (elf_linker_section_t *)0;
+ return (elf_linker_section_t *) 0;
case LINKER_SECTION_SDATA: /* .sdata/.sbss section */
defaults.name = ".sdata";
@@ -1605,10 +1602,9 @@ ppc_elf_create_linker_section (abfd, info, which)
return lsect;
}
-
-/* If we have a non-zero sized .sbss2 or .PPC.EMB.sbss0 sections, we need to bump up
- the number of section headers. */
+/* If we have a non-zero sized .sbss2 or .PPC.EMB.sbss0 sections, we
+ need to bump up the number of section headers. */
static int
ppc_elf_additional_program_headers (abfd)
@@ -1634,7 +1630,7 @@ ppc_elf_additional_program_headers (abfd)
return ret;
}
-/* Modify the segment map if needed */
+/* Modify the segment map if needed. */
static boolean
ppc_elf_modify_segment_map (abfd)
@@ -1655,7 +1651,7 @@ ppc_elf_create_dynamic_sections (abfd, info)
register asection *s;
flagword flags;
- if (!_bfd_elf_create_dynamic_sections(abfd, info))
+ if (!_bfd_elf_create_dynamic_sections (abfd, info))
return false;
flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
@@ -1708,7 +1704,6 @@ ppc_elf_adjust_dynamic_symbol (info, h)
&& (h->elf_link_hash_flags
& ELF_LINK_HASH_DEF_REGULAR) == 0)));
-
/* If this is a function, put it in the procedure linkage table. We
will fill in the contents of the procedure linkage table later,
when we know the address of the .got section. */
@@ -1716,9 +1711,7 @@ ppc_elf_adjust_dynamic_symbol (info, h)
|| (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) != 0)
{
if (! elf_hash_table (info)->dynamic_sections_created
- || ((!info->shared || info->symbolic || h->dynindx == -1)
- && (h->elf_link_hash_flags
- & ELF_LINK_HASH_DEF_REGULAR) != 0)
+ || SYMBOL_CALLS_LOCAL (info, h)
|| (info->shared && h->plt.refcount <= 0))
{
/* A PLT entry is not required/allowed when:
@@ -1726,9 +1719,8 @@ ppc_elf_adjust_dynamic_symbol (info, h)
1. We are not using ld.so; because then the PLT entry
can't be set up, so we can't use one.
- 2. We know for certain that a symbol is defined in
- this object, because this object is the application,
- is linked with -Bsymbolic, or because the symbol is local.
+ 2. We know for certain that a call to this symbol
+ will go to this object.
3. GC has rendered the entry unused.
Note, however, that in an executable all references to the
@@ -1877,7 +1869,6 @@ ppc_elf_adjust_dynamic_symbol (info, h)
return true;
}
-
/* Set the sizes of the dynamic sections. */
@@ -1919,10 +1910,10 @@ ppc_elf_size_dynamic_sections (output_bfd, info)
stripped from the output file below. */
static char *rela_sections[] = { ".rela.got", ".rela.sdata",
".rela.sdata2", ".rela.sbss",
- (char *)0 };
+ (char *) 0 };
char **p;
- for (p = rela_sections; *p != (char *)0; p++)
+ for (p = rela_sections; *p != (char *) 0; p++)
{
s = bfd_get_section_by_name (dynobj, *p);
if (s != NULL)
@@ -1984,7 +1975,7 @@ ppc_elf_size_dynamic_sections (output_bfd, info)
asection *target;
const char *outname;
- /* Remember whether there are any relocation sections. */
+ /* Remember whether there are any relocation sections. */
relocs = true;
/* If this relocation section applies to a read only
@@ -2057,12 +2048,12 @@ ppc_elf_size_dynamic_sections (output_bfd, info)
{
if (! bfd_elf32_add_dynamic_entry (info, DT_TEXTREL, 0))
return false;
+ info->flags |= DF_TEXTREL;
}
}
return true;
}
-
/* Look through the relocs for a section during the first phase, and
allocate space in the global offset table or procedure linkage
@@ -2106,7 +2097,6 @@ ppc_elf_check_relocs (abfd, info, sec, relocs)
return false;
}
-
if ((sdata2 = elf_linker_section (abfd, LINKER_SECTION_SDATA2)) == NULL)
{
sdata2 = ppc_elf_create_linker_section (abfd, info, LINKER_SECTION_SDATA2);
@@ -2119,7 +2109,7 @@ ppc_elf_check_relocs (abfd, info, sec, relocs)
local_got_refcounts = elf_local_got_refcounts (abfd);
sym_hashes = elf_sym_hashes (abfd);
- sym_hashes_end = sym_hashes + symtab_hdr->sh_size/sizeof(Elf32_External_Sym);
+ sym_hashes_end = sym_hashes + symtab_hdr->sh_size/sizeof (Elf32_External_Sym);
if (!elf_bad_symtab (abfd))
sym_hashes_end -= symtab_hdr->sh_info;
@@ -2250,7 +2240,7 @@ ppc_elf_check_relocs (abfd, info, sec, relocs)
((*_bfd_error_handler)
(_("%s: relocation %s cannot be used when making a shared object"),
bfd_get_filename (abfd), "R_PPC_EMB_SDAI16"));
- return false;
+ return false;
}
if (srelgot == NULL && (h != NULL || info->shared))
@@ -2319,7 +2309,7 @@ ppc_elf_check_relocs (abfd, info, sec, relocs)
((*_bfd_error_handler)
(_("%s: relocation %s cannot be used when making a shared object"),
bfd_get_filename (abfd),
- ppc_elf_howto_table[(int)ELF32_R_TYPE (rel->r_info)]->name));
+ ppc_elf_howto_table[(int) ELF32_R_TYPE (rel->r_info)]->name));
return false;
}
break;
@@ -2397,7 +2387,8 @@ ppc_elf_check_relocs (abfd, info, sec, relocs)
case R_PPC_REL14_BRNTAKEN:
case R_PPC_REL32:
if (h == NULL
- || strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
+ || strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0
+ || SYMBOL_REFERENCES_LOCAL (info, h))
break;
/* fall through */
@@ -2540,7 +2531,7 @@ ppc_elf_gc_sweep_hook (abfd, info, sec, relocs)
if (h->got.refcount > 0)
h->got.refcount--;
}
- else
+ else if (local_got_refcounts != NULL)
{
if (local_got_refcounts[r_symndx] > 0)
local_got_refcounts[r_symndx]--;
@@ -2571,7 +2562,6 @@ ppc_elf_gc_sweep_hook (abfd, info, sec, relocs)
/* Hook called by the linker routine which adds symbols from an object
file. We use it to put .comm items in .sbss, and not .bss. */
-/*ARGSUSED*/
static boolean
ppc_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
bfd *abfd;
@@ -2623,7 +2613,6 @@ ppc_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
return true;
}
-
/* Finish up dynamic symbol handling. We set the contents of various
dynamic sections here. */
@@ -2691,7 +2680,7 @@ ppc_elf_finish_dynamic_symbol (output_bfd, info, h, sym)
Otherwise, the PLT entry would provide a definition for
the symbol even if the symbol wasn't defined anywhere,
and so the symbol would never be NULL. */
- if ((h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR_NONWEAK)
+ if ((h->elf_link_hash_flags & ELF_LINK_HASH_REF_REGULAR_NONWEAK)
== 0)
sym->st_value = 0;
}
@@ -2719,8 +2708,7 @@ ppc_elf_finish_dynamic_symbol (output_bfd, info, h, sym)
the global offset table will already have been initialized in
the relocate_section function. */
if (info->shared
- && (info->symbolic || h->dynindx == -1)
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))
+ && SYMBOL_REFERENCES_LOCAL (info, h))
{
rela.r_info = ELF32_R_INFO (0, R_PPC_RELATIVE);
rela.r_addend = (h->root.u.def.value
@@ -2729,7 +2717,7 @@ ppc_elf_finish_dynamic_symbol (output_bfd, info, h, sym)
}
else
{
- BFD_ASSERT((h->got.offset & 1) == 0);
+ BFD_ASSERT ((h->got.offset & 1) == 0);
bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + h->got.offset);
rela.r_info = ELF32_R_INFO (h->dynindx, R_PPC_GLOB_DAT);
rela.r_addend = 0;
@@ -2785,7 +2773,6 @@ ppc_elf_finish_dynamic_symbol (output_bfd, info, h, sym)
return true;
}
-
/* Finish up the dynamic sections. */
@@ -2873,7 +2860,6 @@ ppc_elf_finish_dynamic_sections (output_bfd, info)
return true;
}
-
/* The RELOCATE_SECTION function is called by the ELF backend linker
to handle the relocations for a section.
@@ -2934,11 +2920,12 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
fprintf (stderr, "ppc_elf_relocate_section called for %s section %s, %ld relocations%s\n",
bfd_get_filename (input_bfd),
bfd_section_name(input_bfd, input_section),
- (long)input_section->reloc_count,
+ (long) input_section->reloc_count,
(info->relocateable) ? " (relocatable)" : "");
#endif
- if (!ppc_elf_howto_table[ R_PPC_ADDR32 ]) /* Initialize howto table if needed */
+ if (!ppc_elf_howto_table[R_PPC_ADDR32])
+ /* Initialize howto table if needed. */
ppc_elf_howto_init ();
local_got_offsets = elf_local_got_offsets (input_bfd);
@@ -2956,27 +2943,29 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
bfd_vma offset = rel->r_offset;
bfd_vma addend = rel->r_addend;
bfd_reloc_status_type r = bfd_reloc_other;
- Elf_Internal_Sym *sym = (Elf_Internal_Sym *)0;
- asection *sec = (asection *)0;
- struct elf_link_hash_entry *h = (struct elf_link_hash_entry *)0;
- const char *sym_name = (const char *)0;
+ Elf_Internal_Sym *sym = (Elf_Internal_Sym *) 0;
+ asection *sec = (asection *) 0;
+ struct elf_link_hash_entry *h = (struct elf_link_hash_entry *) 0;
+ const char *sym_name = (const char *) 0;
reloc_howto_type *howto;
unsigned long r_symndx;
bfd_vma relocation;
+ int will_become_local;
/* Unknown relocation handling */
- if ((unsigned)r_type >= (unsigned)R_PPC_max || !ppc_elf_howto_table[(int)r_type])
+ if ((unsigned) r_type >= (unsigned) R_PPC_max
+ || !ppc_elf_howto_table[(int) r_type])
{
(*_bfd_error_handler) (_("%s: unknown relocation type %d"),
bfd_get_filename (input_bfd),
- (int)r_type);
+ (int) r_type);
bfd_set_error (bfd_error_bad_value);
ret = false;
continue;
}
- howto = ppc_elf_howto_table[(int)r_type];
+ howto = ppc_elf_howto_table[(int) r_type];
r_symndx = ELF32_R_SYM (rel->r_info);
if (info->relocateable)
@@ -2988,7 +2977,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
if (r_symndx < symtab_hdr->sh_info)
{
sym = local_syms + r_symndx;
- if ((unsigned)ELF_ST_TYPE (sym->st_info) == STT_SECTION)
+ if ((unsigned) ELF_ST_TYPE (sym->st_info) == STT_SECTION)
{
sec = local_sections[r_symndx];
addend = rel->r_addend += sec->output_offset + sym->st_value;
@@ -2998,10 +2987,10 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
#ifdef DEBUG
fprintf (stderr, "\ttype = %s (%d), symbol index = %ld, offset = %ld, addend = %ld\n",
howto->name,
- (int)r_type,
+ (int) r_type,
r_symndx,
- (long)offset,
- (long)addend);
+ (long) offset,
+ (long) addend);
#endif
continue;
}
@@ -3016,6 +3005,8 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
relocation = (sec->output_section->vma
+ sec->output_offset
+ sym->st_value);
+ /* Relocs to local symbols are always resolved. */
+ will_become_local = 1;
}
else
{
@@ -3024,11 +3015,17 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|| h->root.type == bfd_link_hash_warning)
h = (struct elf_link_hash_entry *) h->root.u.i.link;
sym_name = h->root.root.string;
+
+ /* Can this relocation be resolved immediately? */
+ will_become_local = SYMBOL_REFERENCES_LOCAL (info, h);
+
if (h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
{
sec = h->root.u.def.section;
- if ((r_type == R_PPC_PLT32
+ if (((r_type == R_PPC_PLT32
+ || r_type == R_PPC_PLTREL24)
+ && splt != NULL
&& h->plt.offset != (bfd_vma) -1)
|| (r_type == R_PPC_LOCAL24PC
&& sec->output_section == NULL)
@@ -3037,20 +3034,17 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|| r_type == R_PPC_GOT16_HI
|| r_type == R_PPC_GOT16_HA)
&& elf_hash_table (info)->dynamic_sections_created
- && (! info->shared
- || (! info->symbolic && h->dynindx != -1)
- || (h->elf_link_hash_flags
- & ELF_LINK_HASH_DEF_REGULAR) == 0))
+ && (! info->shared || ! will_become_local))
|| (info->shared
- && ((! info->symbolic && h->dynindx != -1)
- || (h->elf_link_hash_flags
- & ELF_LINK_HASH_DEF_REGULAR) == 0)
+ && ! will_become_local
&& ((input_section->flags & SEC_ALLOC) != 0
/* Testing SEC_DEBUGGING here may be wrong.
It's here to avoid a crash when
generating a shared library with DWARF
debugging information. */
- || (input_section->flags & SEC_DEBUGGING) != 0)
+ || ((input_section->flags & SEC_DEBUGGING) != 0
+ && (h->elf_link_hash_flags
+ & ELF_LINK_HASH_DEF_DYNAMIC) != 0))
&& (r_type == R_PPC_ADDR32
|| r_type == R_PPC_ADDR24
|| r_type == R_PPC_ADDR16
@@ -3060,7 +3054,6 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|| r_type == R_PPC_ADDR14
|| r_type == R_PPC_ADDR14_BRTAKEN
|| r_type == R_PPC_ADDR14_BRNTAKEN
- || r_type == R_PPC_PLTREL24
|| r_type == R_PPC_COPY
|| r_type == R_PPC_GLOB_DAT
|| r_type == R_PPC_JMP_SLOT
@@ -3094,13 +3087,13 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
relocation = 0;
}
else if (sec->output_section == NULL)
- {
+ {
(*_bfd_error_handler)
(_("%s: warning: unresolvable relocation against symbol `%s' from %s section"),
bfd_get_filename (input_bfd), h->root.root.string,
bfd_get_section_name (input_bfd, input_section));
relocation = 0;
- }
+ }
else
relocation = (h->root.u.def.value
+ sec->output_section->vma
@@ -3108,13 +3101,12 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
}
else if (h->root.type == bfd_link_hash_undefweak)
relocation = 0;
- else if (info->shared && !info->symbolic
- && !info->no_undefined
+ else if (info->shared && !info->symbolic && !info->no_undefined
&& ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
relocation = 0;
else
{
- if (! (*info->callbacks->undefined_symbol)(info,
+ if (! (*info->callbacks->undefined_symbol) (info,
h->root.root.string,
input_bfd,
input_section,
@@ -3127,19 +3119,19 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
}
}
- switch ((int)r_type)
+ switch ((int) r_type)
{
default:
(*_bfd_error_handler) (_("%s: unknown relocation type %d for symbol %s"),
bfd_get_filename (input_bfd),
- (int)r_type, sym_name);
+ (int) r_type, sym_name);
bfd_set_error (bfd_error_bad_value);
ret = false;
continue;
/* Relocations that need no special processing. */
- case (int)R_PPC_LOCAL24PC:
+ case (int) R_PPC_LOCAL24PC:
/* It makes no sense to point a local relocation
at a symbol not in this object. */
if (h != NULL
@@ -3160,28 +3152,29 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
/* Relocations that may need to be propagated if this is a shared
object. */
- case (int)R_PPC_REL24:
- case (int)R_PPC_REL32:
- case (int)R_PPC_REL14:
+ case (int) R_PPC_REL24:
+ case (int) R_PPC_REL32:
+ case (int) R_PPC_REL14:
/* If these relocations are not to a named symbol, they can be
handled right here, no need to bother the dynamic linker. */
if (h == NULL
- || strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
+ || strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0
+ || SYMBOL_REFERENCES_LOCAL (info, h))
break;
/* fall through */
/* Relocations that always need to be propagated if this is a shared
object. */
- case (int)R_PPC_NONE:
- case (int)R_PPC_ADDR32:
- case (int)R_PPC_ADDR24:
- case (int)R_PPC_ADDR16:
- case (int)R_PPC_ADDR16_LO:
- case (int)R_PPC_ADDR16_HI:
- case (int)R_PPC_ADDR16_HA:
- case (int)R_PPC_ADDR14:
- case (int)R_PPC_UADDR32:
- case (int)R_PPC_UADDR16:
+ case (int) R_PPC_NONE:
+ case (int) R_PPC_ADDR32:
+ case (int) R_PPC_ADDR24:
+ case (int) R_PPC_ADDR16:
+ case (int) R_PPC_ADDR16_LO:
+ case (int) R_PPC_ADDR16_HI:
+ case (int) R_PPC_ADDR16_HA:
+ case (int) R_PPC_ADDR14:
+ case (int) R_PPC_UADDR32:
+ case (int) R_PPC_UADDR16:
if (info->shared)
{
Elf_Internal_Rela outrel;
@@ -3241,12 +3234,8 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
memset (&outrel, 0, sizeof outrel);
/* h->dynindx may be -1 if this symbol was marked to
become local. */
- else if (h != NULL
- && ((! info->symbolic && h->dynindx != -1)
- || (h->elf_link_hash_flags
- & ELF_LINK_HASH_DEF_REGULAR) == 0))
+ else if (! will_become_local)
{
- BFD_ASSERT (h->dynindx != -1);
outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
outrel.r_addend = rel->r_addend;
}
@@ -3283,11 +3272,11 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
osec = sec->output_section;
indx = elf_section_data (osec)->dynindx;
- BFD_ASSERT(indx > 0);
+ BFD_ASSERT (indx > 0);
#ifdef DEBUG
if (indx <= 0)
{
- printf("indx=%d section=%s flags=%08x name=%s\n",
+ printf ("indx=%d section=%s flags=%08x name=%s\n",
indx, osec->name, osec->flags,
h->root.root.string);
}
@@ -3328,8 +3317,8 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
break;
/* branch taken prediction relocations */
- case (int)R_PPC_ADDR14_BRTAKEN:
- case (int)R_PPC_REL14_BRTAKEN:
+ case (int) R_PPC_ADDR14_BRTAKEN:
+ case (int) R_PPC_REL14_BRTAKEN:
insn = bfd_get_32 (output_bfd, contents + offset);
if ((relocation - offset) & 0x8000)
insn &= ~BRANCH_PREDICT_BIT;
@@ -3339,8 +3328,8 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
break;
/* branch not taken predicition relocations */
- case (int)R_PPC_ADDR14_BRNTAKEN:
- case (int)R_PPC_REL14_BRNTAKEN:
+ case (int) R_PPC_ADDR14_BRNTAKEN:
+ case (int) R_PPC_REL14_BRNTAKEN:
insn = bfd_get_32 (output_bfd, contents + offset);
if ((relocation - offset) & 0x8000)
insn |= BRANCH_PREDICT_BIT;
@@ -3350,10 +3339,10 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
break;
/* GOT16 relocations */
- case (int)R_PPC_GOT16:
- case (int)R_PPC_GOT16_LO:
- case (int)R_PPC_GOT16_HI:
- case (int)R_PPC_GOT16_HA:
+ case (int) R_PPC_GOT16:
+ case (int) R_PPC_GOT16_LO:
+ case (int) R_PPC_GOT16_HI:
+ case (int) R_PPC_GOT16_HA:
/* Relocation is to the entry for this symbol in the global
offset table. */
BFD_ASSERT (sgot != NULL);
@@ -3367,8 +3356,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
if (! elf_hash_table (info)->dynamic_sections_created
|| (info->shared
- && (info->symbolic || h->dynindx == -1)
- && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)))
+ && SYMBOL_REFERENCES_LOCAL (info, h)))
{
/* This is actually a static link, or it is a
-Bsymbolic link and the symbol is defined
@@ -3441,7 +3429,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
break;
/* Indirect .sdata relocation */
- case (int)R_PPC_EMB_SDAI16:
+ case (int) R_PPC_EMB_SDAI16:
BFD_ASSERT (sdata != NULL);
relocation = bfd_elf32_finish_pointer_linker_section (output_bfd, input_bfd, info,
sdata, h, relocation, rel,
@@ -3449,7 +3437,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
break;
/* Indirect .sdata2 relocation */
- case (int)R_PPC_EMB_SDA2I16:
+ case (int) R_PPC_EMB_SDA2I16:
BFD_ASSERT (sdata2 != NULL);
relocation = bfd_elf32_finish_pointer_linker_section (output_bfd, input_bfd, info,
sdata2, h, relocation, rel,
@@ -3460,8 +3448,8 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
section, not the actual VMA. This is appropriate when generating
an embedded ELF object, for which the .got section acts like the
AIX .toc section. */
- case (int)R_PPC_TOC16: /* phony GOT16 relocations */
- BFD_ASSERT (sec != (asection *)0);
+ case (int) R_PPC_TOC16: /* phony GOT16 relocations */
+ BFD_ASSERT (sec != (asection *) 0);
BFD_ASSERT (bfd_is_und_section (sec)
|| strcmp (bfd_get_section_name (abfd, sec), ".got") == 0
|| strcmp (bfd_get_section_name (abfd, sec), ".cgot") == 0)
@@ -3469,7 +3457,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
addend -= sec->output_section->vma + sec->output_offset + 0x8000;
break;
- case (int)R_PPC_PLTREL24:
+ case (int) R_PPC_PLTREL24:
/* Relocation is to the entry for this symbol in the
procedure linkage table. */
BFD_ASSERT (h != NULL);
@@ -3486,14 +3474,14 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
relocation = (splt->output_section->vma
+ splt->output_offset
+ h->plt.offset);
- break;
+ break;
/* relocate against _SDA_BASE_ */
- case (int)R_PPC_SDAREL16:
+ case (int) R_PPC_SDAREL16:
{
const char *name;
- BFD_ASSERT (sec != (asection *)0);
+ BFD_ASSERT (sec != (asection *) 0);
name = bfd_get_section_name (abfd, sec->output_section);
if (strcmp (name, ".sdata") != 0
&& strcmp (name, ".sbss") != 0)
@@ -3501,7 +3489,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
(*_bfd_error_handler) (_("%s: The target (%s) of a %s relocation is in the wrong output section (%s)"),
bfd_get_filename (input_bfd),
sym_name,
- ppc_elf_howto_table[ (int)r_type ]->name,
+ ppc_elf_howto_table[(int) r_type]->name,
name);
}
addend -= (sdata->sym_hash->root.u.def.value
@@ -3510,22 +3498,21 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
}
break;
-
/* relocate against _SDA2_BASE_ */
- case (int)R_PPC_EMB_SDA2REL:
+ case (int) R_PPC_EMB_SDA2REL:
{
const char *name;
- BFD_ASSERT (sec != (asection *)0);
+ BFD_ASSERT (sec != (asection *) 0);
name = bfd_get_section_name (abfd, sec->output_section);
if (strcmp (name, ".sdata2") != 0 && strcmp (name, ".sbss2") != 0)
{
(*_bfd_error_handler) (_("%s: The target (%s) of a %s relocation is in the wrong output section (%s)"),
bfd_get_filename (input_bfd),
sym_name,
- ppc_elf_howto_table[ (int)r_type ]->name,
+ ppc_elf_howto_table[(int) r_type]->name,
name);
-
+
bfd_set_error (bfd_error_bad_value);
ret = false;
continue;
@@ -3536,15 +3523,14 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
}
break;
-
/* relocate against either _SDA_BASE_, _SDA2_BASE_, or 0 */
- case (int)R_PPC_EMB_SDA21:
- case (int)R_PPC_EMB_RELSDA:
+ case (int) R_PPC_EMB_SDA21:
+ case (int) R_PPC_EMB_RELSDA:
{
const char *name;
int reg;
- BFD_ASSERT (sec != (asection *)0);
+ BFD_ASSERT (sec != (asection *) 0);
name = bfd_get_section_name (abfd, sec->output_section);
if (strcmp (name, ".sdata") == 0 || strcmp (name, ".sbss") == 0)
{
@@ -3554,7 +3540,8 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
+ sdata->sym_hash->root.u.def.section->output_offset);
}
- else if (strcmp (name, ".sdata2") == 0 || strcmp (name, ".sbss2") == 0)
+ else if (strcmp (name, ".sdata2") == 0
+ || strcmp (name, ".sbss2") == 0)
{
reg = 2;
addend -= (sdata2->sym_hash->root.u.def.value
@@ -3562,7 +3549,8 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
+ sdata2->sym_hash->root.u.def.section->output_offset);
}
- else if (strcmp (name, ".PPC.EMB.sdata0") == 0 || strcmp (name, ".PPC.EMB.sbss0") == 0)
+ else if (strcmp (name, ".PPC.EMB.sdata0") == 0
+ || strcmp (name, ".PPC.EMB.sbss0") == 0)
{
reg = 0;
}
@@ -3572,7 +3560,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
(*_bfd_error_handler) (_("%s: The target (%s) of a %s relocation is in the wrong output section (%s)"),
bfd_get_filename (input_bfd),
sym_name,
- ppc_elf_howto_table[ (int)r_type ]->name,
+ ppc_elf_howto_table[(int) r_type]->name,
name);
bfd_set_error (bfd_error_bad_value);
@@ -3590,75 +3578,74 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
break;
/* Relocate against the beginning of the section */
- case (int)R_PPC_SECTOFF:
- case (int)R_PPC_SECTOFF_LO:
- case (int)R_PPC_SECTOFF_HI:
- BFD_ASSERT (sec != (asection *)0);
+ case (int) R_PPC_SECTOFF:
+ case (int) R_PPC_SECTOFF_LO:
+ case (int) R_PPC_SECTOFF_HI:
+ BFD_ASSERT (sec != (asection *) 0);
addend -= sec->output_section->vma;
break;
- case (int)R_PPC_SECTOFF_HA:
- BFD_ASSERT (sec != (asection *)0);
+ case (int) R_PPC_SECTOFF_HA:
+ BFD_ASSERT (sec != (asection *) 0);
addend -= sec->output_section->vma;
addend += ((relocation + addend) & 0x8000) << 1;
break;
/* Negative relocations */
- case (int)R_PPC_EMB_NADDR32:
- case (int)R_PPC_EMB_NADDR16:
- case (int)R_PPC_EMB_NADDR16_LO:
- case (int)R_PPC_EMB_NADDR16_HI:
- addend -= 2*relocation;
+ case (int) R_PPC_EMB_NADDR32:
+ case (int) R_PPC_EMB_NADDR16:
+ case (int) R_PPC_EMB_NADDR16_LO:
+ case (int) R_PPC_EMB_NADDR16_HI:
+ addend -= 2 * relocation;
break;
- case (int)R_PPC_EMB_NADDR16_HA:
- addend -= 2*relocation;
+ case (int) R_PPC_EMB_NADDR16_HA:
+ addend -= 2 * relocation;
addend += ((relocation + addend) & 0x8000) << 1;
break;
/* NOP relocation that prevents garbage collecting linkers from omitting a
reference. */
- case (int)R_PPC_EMB_MRKREF:
+ case (int) R_PPC_EMB_MRKREF:
continue;
- case (int)R_PPC_COPY:
- case (int)R_PPC_GLOB_DAT:
- case (int)R_PPC_JMP_SLOT:
- case (int)R_PPC_RELATIVE:
- case (int)R_PPC_PLT32:
- case (int)R_PPC_PLTREL32:
- case (int)R_PPC_PLT16_LO:
- case (int)R_PPC_PLT16_HI:
- case (int)R_PPC_PLT16_HA:
- case (int)R_PPC_EMB_RELSEC16:
- case (int)R_PPC_EMB_RELST_LO:
- case (int)R_PPC_EMB_RELST_HI:
- case (int)R_PPC_EMB_RELST_HA:
- case (int)R_PPC_EMB_BIT_FLD:
+ case (int) R_PPC_COPY:
+ case (int) R_PPC_GLOB_DAT:
+ case (int) R_PPC_JMP_SLOT:
+ case (int) R_PPC_RELATIVE:
+ case (int) R_PPC_PLT32:
+ case (int) R_PPC_PLTREL32:
+ case (int) R_PPC_PLT16_LO:
+ case (int) R_PPC_PLT16_HI:
+ case (int) R_PPC_PLT16_HA:
+ case (int) R_PPC_EMB_RELSEC16:
+ case (int) R_PPC_EMB_RELST_LO:
+ case (int) R_PPC_EMB_RELST_HI:
+ case (int) R_PPC_EMB_RELST_HA:
+ case (int) R_PPC_EMB_BIT_FLD:
(*_bfd_error_handler) (_("%s: Relocation %s is not yet supported for symbol %s."),
bfd_get_filename (input_bfd),
- ppc_elf_howto_table[ (int)r_type ]->name,
+ ppc_elf_howto_table[(int) r_type]->name,
sym_name);
bfd_set_error (bfd_error_invalid_operation);
ret = false;
continue;
- case (int)R_PPC_GNU_VTINHERIT:
- case (int)R_PPC_GNU_VTENTRY:
+ case (int) R_PPC_GNU_VTINHERIT:
+ case (int) R_PPC_GNU_VTENTRY:
/* These are no-ops in the end. */
continue;
}
-
#ifdef DEBUG
fprintf (stderr, "\ttype = %s (%d), name = %s, symbol index = %ld, offset = %ld, addend = %ld\n",
howto->name,
- (int)r_type,
+ (int) r_type,
sym_name,
r_symndx,
- (long)offset,
- (long)addend);
+ (long) offset,
+ (long) addend);
#endif
r = _bfd_final_link_relocate (howto,
@@ -3702,7 +3689,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
name = bfd_section_name (input_bfd, sec);
}
- if (! (*info->callbacks->reloc_overflow)(info,
+ if (! (*info->callbacks->reloc_overflow) (info,
name,
howto->name,
(bfd_vma) 0,
@@ -3721,7 +3708,6 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
return ret;
}
-
#define TARGET_LITTLE_SYM bfd_elf32_powerpcle_vec
#define TARGET_LITTLE_NAME "elf32-powerpcle"
diff --git a/contrib/binutils/bfd/elf32-sparc.c b/contrib/binutils/bfd/elf32-sparc.c
index 1c8d0ba..4e9c6c2 100644
--- a/contrib/binutils/bfd/elf32-sparc.c
+++ b/contrib/binutils/bfd/elf32-sparc.c
@@ -24,6 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "libbfd.h"
#include "elf-bfd.h"
#include "elf/sparc.h"
+#include "opcode/sparc.h"
static reloc_howto_type *elf32_sparc_reloc_type_lookup
PARAMS ((bfd *, bfd_reloc_code_real_type));
@@ -36,6 +37,8 @@ static boolean elf32_sparc_adjust_dynamic_symbol
PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *));
static boolean elf32_sparc_size_dynamic_sections
PARAMS ((bfd *, struct bfd_link_info *));
+static boolean elf32_sparc_relax_section
+ PARAMS ((bfd *, asection *, struct bfd_link_info *, boolean *));
static boolean elf32_sparc_relocate_section
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
@@ -126,7 +129,6 @@ static reloc_howto_type elf32_sparc_vtinherit_howto =
static reloc_howto_type elf32_sparc_vtentry_howto =
HOWTO (R_SPARC_GNU_VTENTRY, 0,2,0,false,0,complain_overflow_dont, _bfd_elf_rel_vtable_reloc_fn,"R_SPARC_GNU_VTENTRY", false,0,0, false);
-
struct elf_reloc_map {
bfd_reloc_code_real_type bfd_reloc_val;
unsigned char elf_reloc_val;
@@ -185,7 +187,7 @@ elf32_sparc_reloc_type_lookup (abfd, code)
bfd_reloc_code_real_type code;
{
unsigned int i;
-
+
switch (code)
{
case BFD_RELOC_VTABLE_INHERIT:
@@ -1016,7 +1018,12 @@ elf32_sparc_size_dynamic_sections (output_bfd, info)
}
/* Allocate memory for the section contents. */
- s->contents = (bfd_byte *) bfd_alloc (dynobj, s->_raw_size);
+ /* FIXME: This should be a call to bfd_alloc not bfd_zalloc.
+ Unused entries should be reclaimed before the section's contents
+ are written out, but at the moment this does not happen. Thus in
+ order to prevent writing out garbage, we initialise the section's
+ contents to zero. */
+ s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->_raw_size);
if (s->contents == NULL && s->_raw_size != 0)
return false;
}
@@ -1053,12 +1060,28 @@ elf32_sparc_size_dynamic_sections (output_bfd, info)
{
if (! bfd_elf32_add_dynamic_entry (info, DT_TEXTREL, 0))
return false;
+ info->flags |= DF_TEXTREL;
}
}
return true;
}
+#define SET_SEC_DO_RELAX(section) do { elf_section_data(section)->tdata = (void *)1; } while (0)
+#define SEC_DO_RELAX(section) (elf_section_data(section)->tdata == (void *)1)
+
+static boolean
+elf32_sparc_relax_section (abfd, section, link_info, again)
+ bfd *abfd ATTRIBUTE_UNUSED;
+ asection *section ATTRIBUTE_UNUSED;
+ struct bfd_link_info *link_info ATTRIBUTE_UNUSED;
+ boolean *again;
+{
+ *again = false;
+ SET_SEC_DO_RELAX (section);
+ return true;
+}
+
/* Relocate a SPARC ELF section. */
static boolean
@@ -1113,7 +1136,7 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
r_type = ELF32_R_TYPE (rel->r_info);
- if (r_type == R_SPARC_GNU_VTINHERIT
+ if (r_type == R_SPARC_GNU_VTINHERIT
|| r_type == R_SPARC_GNU_VTENTRY)
continue;
@@ -1518,6 +1541,7 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
break;
}
+ r = bfd_reloc_continue;
if (r_type == R_SPARC_WDISP16)
{
bfd_vma x;
@@ -1549,12 +1573,101 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
bfd_putl32 (/*input_bfd,*/ x, contents + rel->r_offset);
r = bfd_reloc_ok;
}
- else
+ else if ((r_type == R_SPARC_WDISP30 || r_type == R_SPARC_WPLT30)
+ && SEC_DO_RELAX (input_section)
+ && rel->r_offset + 4 < input_section->_raw_size)
+ {
+#define G0 0
+#define O7 15
+#define XCC (2 << 20)
+#define COND(x) (((x)&0xf)<<25)
+#define CONDA COND(0x8)
+#define INSN_BPA (F2(0,1) | CONDA | BPRED | XCC)
+#define INSN_BA (F2(0,2) | CONDA)
+#define INSN_OR F3(2, 0x2, 0)
+#define INSN_NOP F2(0,4)
+
+ bfd_vma x, y;
+
+ /* If the instruction is a call with either:
+ restore
+ arithmetic instruction with rd == %o7
+ where rs1 != %o7 and rs2 if it is register != %o7
+ then we can optimize if the call destination is near
+ by changing the call into a branch always. */
+ x = bfd_get_32 (input_bfd, contents + rel->r_offset);
+ y = bfd_get_32 (input_bfd, contents + rel->r_offset + 4);
+ if ((x & OP(~0)) == OP(1) && (y & OP(~0)) == OP(2))
+ {
+ if (((y & OP3(~0)) == OP3(0x3d) /* restore */
+ || ((y & OP3(0x28)) == 0 /* arithmetic */
+ && (y & RD(~0)) == RD(O7)))
+ && (y & RS1(~0)) != RS1(O7)
+ && ((y & F3I(~0))
+ || (y & RS2(~0)) != RS2(O7)))
+ {
+ bfd_vma reloc;
+
+ reloc = relocation + rel->r_addend - rel->r_offset;
+ reloc -= (input_section->output_section->vma
+ + input_section->output_offset);
+
+ /* Ensure the reloc fits into simm22. */
+ if ((reloc & 3) == 0
+ && ((reloc & ~(bfd_vma)0x7fffff) == 0
+ || ((reloc | 0x7fffff) == ~(bfd_vma)0)))
+ {
+ reloc >>= 2;
+
+ /* Check whether it fits into simm19 on v9. */
+ if (((reloc & 0x3c0000) == 0
+ || (reloc & 0x3c0000) == 0x3c0000)
+ && (elf_elfheader (output_bfd)->e_flags & EF_SPARC_32PLUS))
+ x = INSN_BPA | (reloc & 0x7ffff); /* ba,pt %xcc */
+ else
+ x = INSN_BA | (reloc & 0x3fffff); /* ba */
+ bfd_put_32 (input_bfd, x, contents + rel->r_offset);
+ r = bfd_reloc_ok;
+ if (rel->r_offset >= 4
+ && (y & (0xffffffff ^ RS1(~0)))
+ == (INSN_OR | RD(O7) | RS2(G0)))
+ {
+ bfd_vma z;
+ unsigned int reg;
+
+ z = bfd_get_32 (input_bfd,
+ contents + rel->r_offset - 4);
+ if ((z & (0xffffffff ^ RD(~0)))
+ != (INSN_OR | RS1(O7) | RS2(G0)))
+ break;
+
+ /* The sequence was
+ or %o7, %g0, %rN
+ call foo
+ or %rN, %g0, %o7
+
+ If call foo was replaced with ba, replace
+ or %rN, %g0, %o7 with nop. */
+
+ reg = (y & RS1(~0)) >> 14;
+ if (reg != ((z & RD(~0)) >> 25)
+ || reg == G0 || reg == O7)
+ break;
+
+ bfd_put_32 (input_bfd, INSN_NOP,
+ contents + rel->r_offset + 4);
+ }
+
+ }
+ }
+ }
+ }
+
+ if (r == bfd_reloc_continue)
r = _bfd_final_link_relocate (howto, input_bfd, input_section,
contents, rel->r_offset,
relocation, rel->r_addend);
-
if (r != bfd_reloc_ok)
{
switch (r)
@@ -1842,33 +1955,6 @@ elf32_sparc_merge_private_bfd_data (ibfd, obfd)
error = false;
-#if 0
- /* ??? The native linker doesn't do this so we can't (otherwise gcc would
- have to know which linker is being used). Instead, the native linker
- bumps up the architecture level when it has to. However, I still think
- warnings like these are good, so it would be nice to have them turned on
- by some option. */
-
- /* If the output machine is normal sparc, we can't allow v9 input files. */
- if (bfd_get_mach (obfd) == bfd_mach_sparc
- && (bfd_get_mach (ibfd) == bfd_mach_sparc_v8plus
- || bfd_get_mach (ibfd) == bfd_mach_sparc_v8plusa))
- {
- error = true;
- (*_bfd_error_handler)
- (_("%s: compiled for a v8plus system and target is v8"),
- bfd_get_filename (ibfd));
- }
- /* If the output machine is v9, we can't allow v9+vis input files. */
- if (bfd_get_mach (obfd) == bfd_mach_sparc_v8plus
- && bfd_get_mach (ibfd) == bfd_mach_sparc_v8plusa)
- {
- error = true;
- (*_bfd_error_handler)
- (_("%s: compiled for a v8plusa system and target is v8plus"),
- bfd_get_filename (ibfd));
- }
-#else
if (bfd_get_mach (ibfd) >= bfd_mach_sparc_v9)
{
error = true;
@@ -1881,7 +1967,6 @@ elf32_sparc_merge_private_bfd_data (ibfd, obfd)
if (bfd_get_mach (obfd) < bfd_get_mach (ibfd))
bfd_set_arch_mach (obfd, bfd_arch_sparc, bfd_get_mach (ibfd));
}
-#endif
if (((elf_elfheader (ibfd)->e_flags & EF_SPARC_LEDATA)
!= previous_ibfd_e_flags)
@@ -1911,7 +1996,10 @@ elf32_sparc_object_p (abfd)
{
if (elf_elfheader (abfd)->e_machine == EM_SPARC32PLUS)
{
- if (elf_elfheader (abfd)->e_flags & EF_SPARC_SUN_US1)
+ if (elf_elfheader (abfd)->e_flags & EF_SPARC_SUN_US3)
+ return bfd_default_set_arch_mach (abfd, bfd_arch_sparc,
+ bfd_mach_sparc_v8plusb);
+ else if (elf_elfheader (abfd)->e_flags & EF_SPARC_SUN_US1)
return bfd_default_set_arch_mach (abfd, bfd_arch_sparc,
bfd_mach_sparc_v8plusa);
else if (elf_elfheader (abfd)->e_flags & EF_SPARC_32PLUS)
@@ -1949,6 +2037,12 @@ elf32_sparc_final_write_processing (abfd, linker)
elf_elfheader (abfd)->e_flags &=~ EF_SPARC_32PLUS_MASK;
elf_elfheader (abfd)->e_flags |= EF_SPARC_32PLUS | EF_SPARC_SUN_US1;
break;
+ case bfd_mach_sparc_v8plusb :
+ elf_elfheader (abfd)->e_machine = EM_SPARC32PLUS;
+ elf_elfheader (abfd)->e_flags &=~ EF_SPARC_32PLUS_MASK;
+ elf_elfheader (abfd)->e_flags |= EF_SPARC_32PLUS | EF_SPARC_SUN_US1
+ | EF_SPARC_SUN_US3;
+ break;
case bfd_mach_sparc_sparclite_le :
elf_elfheader (abfd)->e_machine = EM_SPARC;
elf_elfheader (abfd)->e_flags |= EF_SPARC_LEDATA;
@@ -1967,6 +2061,7 @@ elf32_sparc_final_write_processing (abfd, linker)
#define ELF_MAXPAGESIZE 0x10000
#define bfd_elf32_bfd_reloc_type_lookup elf32_sparc_reloc_type_lookup
+#define bfd_elf32_bfd_relax_section elf32_sparc_relax_section
#define elf_info_to_howto elf32_sparc_info_to_howto
#define elf_backend_create_dynamic_sections \
_bfd_elf_create_dynamic_sections
diff --git a/contrib/binutils/bfd/elf32-v850.c b/contrib/binutils/bfd/elf32-v850.c
index 4fe28fc..e71866c 100644
--- a/contrib/binutils/bfd/elf32-v850.c
+++ b/contrib/binutils/bfd/elf32-v850.c
@@ -17,12 +17,9 @@ 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. */
-
-
/* XXX FIXME: This code is littered with 32bit int, 16bit short, 8bit char
dependencies. As is the gas & simulator code or the v850. */
-
#include "bfd.h"
#include "sysdep.h"
#include "bfdlink.h"
@@ -32,7 +29,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* sign-extend a 24-bit number */
#define SEXT24(x) ((((x) & 0xffffff) ^ (~ 0x7fffff)) + 0x800000)
-
+
static reloc_howto_type *v850_elf_reloc_type_lookup
PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
static void v850_elf_info_to_howto_rel
@@ -103,7 +100,7 @@ static reloc_howto_type v850_elf_howto_table[] =
0, /* dst_mask */
false), /* pcrel_offset */
- /* A PC relative 9 bit branch. */
+ /* A PC relative 9 bit branch. */
HOWTO (R_V850_9_PCREL, /* type */
2, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -118,7 +115,7 @@ static reloc_howto_type v850_elf_howto_table[] =
0x00ffffff, /* dst_mask */
true), /* pcrel_offset */
- /* A PC relative 22 bit branch. */
+ /* A PC relative 22 bit branch. */
HOWTO (R_V850_22_PCREL, /* type */
2, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -312,7 +309,7 @@ static reloc_howto_type v850_elf_howto_table[] =
0x7f, /* src_mask */
0x7f, /* dst_mask */
false), /* pcrel_offset */
-
+
/* 7 bit offset from the tiny data area pointer. */
HOWTO (R_V850_TDA_7_7_OFFSET, /* type */
0, /* rightshift */
@@ -462,7 +459,7 @@ static reloc_howto_type v850_elf_howto_table[] =
0, /* src_mask */
0, /* dst_mask */
false), /* pcrel_offset */
-
+
};
/* Map BFD reloc types to V850 ELF reloc types. */
@@ -504,7 +501,6 @@ static const struct v850_elf_reloc_map v850_elf_reloc_map[] =
{ BFD_RELOC_VTABLE_ENTRY, R_V850_GNU_VTENTRY },
};
-
/* Map a bfd relocation into the appropriate howto structure */
static reloc_howto_type *
@@ -521,14 +517,13 @@ v850_elf_reloc_type_lookup (abfd, code)
if (v850_elf_reloc_map[i].bfd_reloc_val == code)
{
BFD_ASSERT (v850_elf_howto_table[v850_elf_reloc_map[i].elf_reloc_val].type == v850_elf_reloc_map[i].elf_reloc_val);
-
+
return & v850_elf_howto_table[v850_elf_reloc_map[i].elf_reloc_val];
}
}
return NULL;
}
-
/* Set the howto pointer for an V850 ELF reloc. */
static void
@@ -544,7 +539,7 @@ v850_elf_info_to_howto_rel (abfd, cache_ptr, dst)
cache_ptr->howto = &v850_elf_howto_table[r_type];
}
-/* Set the howto pointer for a V850 ELF reloc (type RELA). */
+/* Set the howto pointer for a V850 ELF reloc (type RELA). */
static void
v850_elf_info_to_howto_rela (abfd, cache_ptr, dst)
bfd * abfd ATTRIBUTE_UNUSED;
@@ -557,7 +552,6 @@ v850_elf_info_to_howto_rela (abfd, cache_ptr, dst)
BFD_ASSERT (r_type < (unsigned int) R_V850_max);
cache_ptr->howto = &v850_elf_howto_table[r_type];
}
-
/* Look through the relocs for a section during the first phase, and
allocate space in the global offset table or procedure linkage
@@ -644,14 +638,14 @@ v850_elf_check_relocs (abfd, info, sec, relocs)
other = V850_OTHER_SDA;
common = ".scommon";
goto small_data_common;
-
+
case R_V850_ZDA_16_16_SPLIT_OFFSET:
case R_V850_ZDA_16_16_OFFSET:
case R_V850_ZDA_15_16_OFFSET:
other = V850_OTHER_ZDA;
common = ".zcommon";
goto small_data_common;
-
+
case R_V850_TDA_4_5_OFFSET:
case R_V850_TDA_4_4_OFFSET:
case R_V850_TDA_6_8_OFFSET:
@@ -760,21 +754,21 @@ remember_hi16s_reloc (abfd, addend, address)
bfd_byte * address;
{
hi16s_location * entry = NULL;
-
+
/* Find a free structure. */
if (free_hi16s == NULL)
free_hi16s = (hi16s_location *) bfd_zalloc (abfd, sizeof (* free_hi16s));
entry = free_hi16s;
free_hi16s = free_hi16s->next;
-
+
entry->addend = addend;
entry->address = address;
entry->counter = hi16s_counter ++;
entry->found = false;
entry->next = previous_hi16s;
previous_hi16s = entry;
-
+
/* Cope with wrap around of our counter. */
if (hi16s_counter == 0)
{
@@ -784,7 +778,7 @@ remember_hi16s_reloc (abfd, addend, address)
hi16s_counter = 0x10000;
}
-
+
return;
}
@@ -798,7 +792,7 @@ find_remembered_hi16s_reloc (addend, already_found)
hi16s_location * previous = NULL;
hi16s_location * prev;
bfd_byte * addr;
-
+
/* Search the table. Record the most recent entry that matches. */
for (entry = previous_hi16s; entry; entry = entry->next)
{
@@ -808,7 +802,7 @@ find_remembered_hi16s_reloc (addend, already_found)
previous = prev;
match = entry;
}
-
+
prev = entry;
}
@@ -824,9 +818,9 @@ find_remembered_hi16s_reloc (addend, already_found)
/* Note that this entry has now been used. */
match->found = true;
-
+
return addr;
-}
+}
/* FIXME: The code here probably ought to be removed and the code in reloc.c
allowed to do its stuff instead. At least for most of the relocs, anwyay. */
@@ -839,62 +833,62 @@ v850_elf_perform_relocation (abfd, r_type, addend, address)
{
unsigned long insn;
bfd_signed_vma saddend = (bfd_signed_vma) addend;
-
+
switch (r_type)
{
default:
/* fprintf (stderr, "reloc type %d not SUPPORTED\n", r_type ); */
return bfd_reloc_notsupported;
-
+
case R_V850_32:
bfd_put_32 (abfd, addend, address);
return bfd_reloc_ok;
-
+
case R_V850_22_PCREL:
if (saddend > 0x1fffff || saddend < -0x200000)
return bfd_reloc_overflow;
-
+
if ((addend % 2) != 0)
return bfd_reloc_dangerous;
-
+
insn = bfd_get_32 (abfd, address);
insn &= ~0xfffe003f;
insn |= (((addend & 0xfffe) << 16) | ((addend & 0x3f0000) >> 16));
bfd_put_32 (abfd, insn, address);
return bfd_reloc_ok;
-
+
case R_V850_9_PCREL:
if (saddend > 0xff || saddend < -0x100)
return bfd_reloc_overflow;
-
+
if ((addend % 2) != 0)
return bfd_reloc_dangerous;
-
+
insn = bfd_get_16 (abfd, address);
insn &= ~ 0xf870;
insn |= ((addend & 0x1f0) << 7) | ((addend & 0x0e) << 3);
break;
-
+
case R_V850_HI16:
addend += (bfd_get_16 (abfd, address) << 16);
addend = (addend >> 16);
insn = addend;
break;
-
+
case R_V850_HI16_S:
/* Remember where this relocation took place. */
remember_hi16s_reloc (abfd, addend, address);
addend += (bfd_get_16 (abfd, address) << 16);
addend = (addend >> 16) + ((addend & 0x8000) != 0);
-
- /* This relocation cannot overflow. */
+
+ /* This relocation cannot overflow. */
if (addend > 0x7fff)
addend = 0;
-
+
insn = addend;
break;
-
+
case R_V850_LO16:
/* Calculate the sum of the value stored in the instruction and the
addend and check for overflow from the low 16 bits into the high
@@ -972,7 +966,6 @@ v850_elf_perform_relocation (abfd, r_type, addend, address)
------------
0x00116fff = fred + 0x10ffff = 0x7000 + 0x10ffff
-
Overflow can also occur if the computation carries into the 16th bit
and it also results in the 15th bit having the same value as the 15th
bit of the original value. What happens is that the HI16S reloc
@@ -1007,7 +1000,7 @@ v850_elf_perform_relocation (abfd, r_type, addend, address)
+ 0x00006fff
------------
0x00006fff but 'fred + 0x7000' = 0x00016fff
-
+
Note - there is no need to change anything if a carry occurs, and the
15th bit changes its value from being set to being clear, as the HI16S
reloc will have already added in 1 to the high part for us:
@@ -1046,7 +1039,7 @@ v850_elf_perform_relocation (abfd, r_type, addend, address)
#define BIT15_SET(x) ((x) & 0x8000)
#define OVERFLOWS(a,i) ((((a) & 0xffff) + (i)) > 0xffff)
-
+
if ((BIT15_SET (result) && ! BIT15_SET (addend))
|| (OVERFLOWS (addend, insn)
&& ((! BIT15_SET (insn)) || (BIT15_SET (addend)))))
@@ -1054,7 +1047,7 @@ v850_elf_perform_relocation (abfd, r_type, addend, address)
boolean already_updated;
bfd_byte * hi16s_address = find_remembered_hi16s_reloc
(addend, & already_updated);
-
+
/* Amend the matching HI16_S relocation. */
if (hi16s_address != NULL)
{
@@ -1071,7 +1064,7 @@ v850_elf_perform_relocation (abfd, r_type, addend, address)
return bfd_reloc_overflow;
}
}
-
+
/* Do not complain if value has top bit set, as this has been anticipated. */
insn = result & 0xffff;
break;
@@ -1081,7 +1074,7 @@ v850_elf_perform_relocation (abfd, r_type, addend, address)
addend += (char) bfd_get_8 (abfd, address);
saddend = (bfd_signed_vma) addend;
-
+
if (saddend > 0x7f || saddend < -0x80)
return bfd_reloc_overflow;
@@ -1090,150 +1083,150 @@ v850_elf_perform_relocation (abfd, r_type, addend, address)
case R_V850_CALLT_16_16_OFFSET:
addend += bfd_get_16 (abfd, address);
-
+
saddend = (bfd_signed_vma) addend;
-
+
if (saddend > 0xffff || saddend < 0)
return bfd_reloc_overflow;
insn = addend;
break;
-
+
case R_V850_16:
- /* drop through */
+ /* drop through */
case R_V850_SDA_16_16_OFFSET:
case R_V850_ZDA_16_16_OFFSET:
case R_V850_TDA_16_16_OFFSET:
addend += bfd_get_16 (abfd, address);
-
+
saddend = (bfd_signed_vma) addend;
-
+
if (saddend > 0x7fff || saddend < -0x8000)
return bfd_reloc_overflow;
insn = addend;
break;
-
+
case R_V850_SDA_15_16_OFFSET:
case R_V850_ZDA_15_16_OFFSET:
insn = bfd_get_16 (abfd, address);
addend += (insn & 0xfffe);
-
+
saddend = (bfd_signed_vma) addend;
-
+
if (saddend > 0x7ffe || saddend < -0x8000)
return bfd_reloc_overflow;
-
+
if (addend & 1)
return bfd_reloc_dangerous;
-
+
insn = (addend & ~1) | (insn & 1);
break;
-
+
case R_V850_TDA_6_8_OFFSET:
insn = bfd_get_16 (abfd, address);
addend += ((insn & 0x7e) << 1);
-
+
saddend = (bfd_signed_vma) addend;
-
+
if (saddend > 0xfc || saddend < 0)
return bfd_reloc_overflow;
-
+
if (addend & 3)
return bfd_reloc_dangerous;
-
+
insn &= 0xff81;
insn |= (addend >> 1);
break;
-
+
case R_V850_TDA_7_8_OFFSET:
insn = bfd_get_16 (abfd, address);
addend += ((insn & 0x7f) << 1);
-
+
saddend = (bfd_signed_vma) addend;
-
+
if (saddend > 0xfe || saddend < 0)
return bfd_reloc_overflow;
-
+
if (addend & 1)
return bfd_reloc_dangerous;
-
+
insn &= 0xff80;
insn |= (addend >> 1);
break;
-
+
case R_V850_TDA_7_7_OFFSET:
insn = bfd_get_16 (abfd, address);
addend += insn & 0x7f;
-
+
saddend = (bfd_signed_vma) addend;
-
+
if (saddend > 0x7f || saddend < 0)
return bfd_reloc_overflow;
-
+
insn &= 0xff80;
insn |= addend;
break;
-
+
case R_V850_TDA_4_5_OFFSET:
insn = bfd_get_16 (abfd, address);
addend += ((insn & 0xf) << 1);
-
+
saddend = (bfd_signed_vma) addend;
-
+
if (saddend > 0x1e || saddend < 0)
return bfd_reloc_overflow;
-
+
if (addend & 1)
return bfd_reloc_dangerous;
-
+
insn &= 0xfff0;
insn |= (addend >> 1);
break;
-
+
case R_V850_TDA_4_4_OFFSET:
insn = bfd_get_16 (abfd, address);
addend += insn & 0xf;
-
+
saddend = (bfd_signed_vma) addend;
-
+
if (saddend > 0xf || saddend < 0)
return bfd_reloc_overflow;
-
+
insn &= 0xfff0;
insn |= addend;
break;
-
+
case R_V850_ZDA_16_16_SPLIT_OFFSET:
case R_V850_SDA_16_16_SPLIT_OFFSET:
insn = bfd_get_32 (abfd, address);
addend += ((insn & 0xfffe0000) >> 16) + ((insn & 0x20) >> 5);
-
+
saddend = (bfd_signed_vma) addend;
-
+
if (saddend > 0x7fff || saddend < -0x8000)
return bfd_reloc_overflow;
-
+
insn &= 0x0001ffdf;
insn |= (addend & 1) << 5;
insn |= (addend & ~1) << 16;
-
+
bfd_put_32 (abfd, insn, address);
return bfd_reloc_ok;
-
+
case R_V850_CALLT_6_7_OFFSET:
insn = bfd_get_16 (abfd, address);
addend += ((insn & 0x3f) << 1);
-
+
saddend = (bfd_signed_vma) addend;
-
+
if (saddend > 0x7e || saddend < 0)
return bfd_reloc_overflow;
-
+
if (addend & 1)
return bfd_reloc_dangerous;
-
+
insn &= 0xff80;
insn |= (addend >> 1);
break;
@@ -1247,7 +1240,6 @@ v850_elf_perform_relocation (abfd, r_type, addend, address)
bfd_put_16 (abfd, insn, address);
return bfd_reloc_ok;
}
-
/* Insert the addend into the instruction. */
static bfd_reloc_status_type
@@ -1261,7 +1253,7 @@ v850_elf_reloc (abfd, reloc, symbol, data, isection, obfd, err)
char ** err ATTRIBUTE_UNUSED;
{
long relocation;
-
+
/* If there is an output BFD,
and the symbol is not a section name (which is only defined at final link time),
and either we are not putting the addend into the instruction
@@ -1275,13 +1267,13 @@ v850_elf_reloc (abfd, reloc, symbol, data, isection, obfd, err)
reloc->address += isection->output_offset;
return bfd_reloc_ok;
}
-#if 0
+#if 0
else if (obfd != NULL)
{
return bfd_reloc_continue;
}
#endif
-
+
/* Catch relocs involving undefined symbols. */
if (bfd_is_und_section (symbol->section)
&& (symbol->flags & BSF_WEAK) == 0
@@ -1293,37 +1285,51 @@ v850_elf_reloc (abfd, reloc, symbol, data, isection, obfd, err)
/* Is the address of the relocation really within the section? */
if (reloc->address > isection->_cooked_size)
return bfd_reloc_outofrange;
-
+
/* Work out which section the relocation is targetted at and the
initial relocation command value. */
-
+
/* Get symbol value. (Common symbols are special.) */
if (bfd_is_com_section (symbol->section))
relocation = 0;
else
relocation = symbol->value;
-
+
/* Convert input-section-relative symbol value to absolute + addend. */
relocation += symbol->section->output_section->vma;
relocation += symbol->section->output_offset;
relocation += reloc->addend;
-
+
+#if 0 /* Since this reloc is going to be processed later on, we should
+ not make it pc-relative here. To test this, try assembling and
+ linking this program:
+
+ .text
+ .globl _start
+ nop
+ _start:
+ jr foo
+
+ .section ".foo","ax"
+ nop
+ foo:
+ nop
+ */
if (reloc->howto->pc_relative == true)
{
/* Here the variable relocation holds the final address of the
symbol we are relocating against, plus any addend. */
relocation -= isection->output_section->vma + isection->output_offset;
-
+
/* Deal with pcrel_offset */
relocation -= reloc->address;
}
+#endif
- reloc->addend = relocation;
+ reloc->addend = relocation;
return bfd_reloc_ok;
}
-
-/*ARGSUSED*/
static boolean
v850_elf_is_local_label_name (abfd, name)
bfd * abfd ATTRIBUTE_UNUSED;
@@ -1332,7 +1338,6 @@ v850_elf_is_local_label_name (abfd, name)
return ( (name[0] == '.' && (name[1] == 'L' || name[1] == '.'))
|| (name[0] == '_' && name[1] == '.' && name[2] == 'L' && name[3] == '_'));
}
-
/* Perform a relocation as part of a final link. */
static bfd_reloc_status_type
@@ -1362,7 +1367,7 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
+ input_section->output_offset);
value -= offset;
break;
-
+
case R_V850_22_PCREL:
value -= (input_section->output_section->vma
+ input_section->output_offset
@@ -1371,10 +1376,10 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
/* If the sign extension will corrupt the value then we have overflowed. */
if (((value & 0xff000000) != 0x0) && ((value & 0xff000000) != 0xff000000))
return bfd_reloc_overflow;
-
+
value = SEXT24 (value); /* Only the bottom 24 bits of the PC are valid */
break;
-
+
case R_V850_HI16_S:
case R_V850_HI16:
case R_V850_LO16:
@@ -1383,12 +1388,12 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
case R_V850_8:
break;
- case R_V850_ZDA_15_16_OFFSET:
+ case R_V850_ZDA_15_16_OFFSET:
case R_V850_ZDA_16_16_OFFSET:
case R_V850_ZDA_16_16_SPLIT_OFFSET:
if (sym_sec == NULL)
return bfd_reloc_undefined;
-
+
value -= sym_sec->output_section->vma;
break;
@@ -1401,7 +1406,7 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
if (sym_sec == NULL)
return bfd_reloc_undefined;
-
+
/* Get the value of __gp. */
h = bfd_link_hash_lookup (info->hash, "__gp", false, false, true);
if (h == (struct bfd_link_hash_entry *) NULL
@@ -1426,12 +1431,12 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
{
unsigned long ep;
struct bfd_link_hash_entry * h;
-
+
/* Get the value of __ep. */
h = bfd_link_hash_lookup (info->hash, "__ep", false, false, true);
if (h == (struct bfd_link_hash_entry *) NULL
|| h->type != bfd_link_hash_defined)
- return bfd_reloc_continue; /* Actually this indicates that __ep could not be found. */
+ return bfd_reloc_continue; /* Actually this indicates that __ep could not be found. */
ep = (h->u.def.value
+ h->u.def.section->output_section->vma
@@ -1440,17 +1445,17 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
value -= ep;
}
break;
-
+
case R_V850_CALLT_6_7_OFFSET:
{
unsigned long ctbp;
struct bfd_link_hash_entry * h;
-
+
/* Get the value of __ctbp. */
h = bfd_link_hash_lookup (info->hash, "__ctbp", false, false, true);
if (h == (struct bfd_link_hash_entry *) NULL
|| h->type != bfd_link_hash_defined)
- return (bfd_reloc_dangerous + 1); /* Actually this indicates that __ctbp could not be found. */
+ return (bfd_reloc_dangerous + 1); /* Actually this indicates that __ctbp could not be found. */
ctbp = (h->u.def.value
+ h->u.def.section->output_section->vma
@@ -1458,7 +1463,7 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
value -= ctbp;
}
break;
-
+
case R_V850_CALLT_16_16_OFFSET:
{
unsigned long ctbp;
@@ -1466,7 +1471,7 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
if (sym_sec == NULL)
return bfd_reloc_undefined;
-
+
/* Get the value of __ctbp. */
h = bfd_link_hash_lookup (info->hash, "__ctbp", false, false, true);
if (h == (struct bfd_link_hash_entry *) NULL
@@ -1481,7 +1486,7 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
value -= (ctbp - sym_sec->output_section->vma);
}
break;
-
+
case R_V850_NONE:
case R_V850_GNU_VTINHERIT:
case R_V850_GNU_VTENTRY:
@@ -1492,9 +1497,8 @@ v850_elf_final_link_relocate (howto, input_bfd, output_bfd,
}
/* Perform the relocation. */
- return v850_elf_perform_relocation (input_bfd, r_type, value + addend, hit_data);
+ return v850_elf_perform_relocation (input_bfd, r_type, value + addend, hit_data);
}
-
/* Relocate an V850 ELF section. */
static boolean
@@ -1524,12 +1528,12 @@ v850_elf_relocate_section (output_bfd, info, input_bfd, input_section,
return false;
}
-
+
/* Reset the list of remembered HI16S relocs to empty. */
free_hi16s = previous_hi16s;
previous_hi16s = NULL;
hi16s_counter = 0;
-
+
rel = relocs;
relend = relocs + input_section->reloc_count;
for (; rel < relend; rel++)
@@ -1596,11 +1600,11 @@ fprintf (stderr, "local: sec: %s, sym: %s (%d), value: %x + %x + %x addend %x\n"
else
{
h = sym_hashes[r_symndx - symtab_hdr->sh_info];
-
+
while (h->root.type == bfd_link_hash_indirect
|| h->root.type == bfd_link_hash_warning)
h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
+
if (h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
{
@@ -1696,7 +1700,7 @@ fprintf (stderr, "unknown: name: %s\n", h->root.root.string);
case (bfd_reloc_dangerous + 1):
msg = _("could not locate special linker symbol __ctbp");
goto common_error;
-
+
default:
msg = _("internal error: unknown error");
/* fall through */
@@ -1803,7 +1807,7 @@ v850_elf_final_write_processing (abfd, linker)
elf_elfheader (abfd)->e_flags |= val;
}
-/* Function to keep V850 specific file flags. */
+/* Function to keep V850 specific file flags. */
static boolean
v850_elf_set_private_flags (abfd, flags)
bfd * abfd;
@@ -1864,7 +1868,7 @@ v850_elf_merge_private_bfd_data (ibfd, obfd)
to the default values. */
if (bfd_get_arch_info (ibfd)->the_default)
return true;
-
+
elf_flags_init (obfd) = true;
elf_elfheader (obfd)->e_flags = in_flags;
@@ -1896,14 +1900,14 @@ v850_elf_print_private_bfd_data (abfd, ptr)
PTR ptr;
{
FILE * file = (FILE *) ptr;
-
+
BFD_ASSERT (abfd != NULL && ptr != NULL);
-
+
_bfd_elf_print_private_bfd_data (abfd, ptr);
-
+
/* xgettext:c-format */
fprintf (file, _("private flags = %lx: "), elf_elfheader (abfd)->e_flags);
-
+
switch (elf_elfheader (abfd)->e_flags & EF_V850_ARCH)
{
default:
@@ -1911,9 +1915,9 @@ v850_elf_print_private_bfd_data (abfd, ptr)
case E_V850E_ARCH: fprintf (file, _("v850e architecture")); break;
case E_V850EA_ARCH: fprintf (file, _("v850ea architecture")); break;
}
-
+
fputc ('\n', file);
-
+
return true;
}
@@ -1934,7 +1938,6 @@ static asection v850_elf_zcom_section;
static asymbol v850_elf_zcom_symbol;
static asymbol * v850_elf_zcom_symbol_ptr;
-
/* Given a BFD section, try to locate the corresponding ELF section
index. */
@@ -1953,7 +1956,7 @@ v850_elf_section_from_bfd_section (abfd, hdr, sec, retval)
*retval = SHN_V850_ZCOMMON;
else
return false;
-
+
return true;
}
@@ -1966,34 +1969,34 @@ v850_elf_symbol_processing (abfd, asym)
{
elf_symbol_type * elfsym = (elf_symbol_type *) asym;
unsigned short index;
-
+
index = elfsym->internal_elf_sym.st_shndx;
/* If the section index is an "ordinary" index, then it may
refer to a v850 specific section created by the assembler.
Check the section's type and change the index it matches.
-
+
FIXME: Should we alter the st_shndx field as well ? */
-
+
if (index < elf_elfheader(abfd)[0].e_shnum)
switch (elf_elfsections(abfd)[index]->sh_type)
{
case SHT_V850_SCOMMON:
index = SHN_V850_SCOMMON;
break;
-
+
case SHT_V850_TCOMMON:
index = SHN_V850_TCOMMON;
break;
-
+
case SHT_V850_ZCOMMON:
index = SHN_V850_ZCOMMON;
break;
-
+
default:
break;
}
-
+
switch (index)
{
case SHN_V850_SCOMMON:
@@ -2013,7 +2016,7 @@ v850_elf_symbol_processing (abfd, asym)
asym->section = & v850_elf_scom_section;
asym->value = elfsym->internal_elf_sym.st_size;
break;
-
+
case SHN_V850_TCOMMON:
if (v850_elf_tcom_section.name == NULL)
{
@@ -2055,7 +2058,6 @@ v850_elf_symbol_processing (abfd, asym)
/* Hook called by the linker routine which adds symbols from an object
file. We must handle the special v850 section numbers here. */
-/*ARGSUSED*/
static boolean
v850_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
bfd * abfd;
@@ -2067,32 +2069,32 @@ v850_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
bfd_vma * valp;
{
int index = sym->st_shndx;
-
+
/* If the section index is an "ordinary" index, then it may
refer to a v850 specific section created by the assembler.
Check the section's type and change the index it matches.
-
+
FIXME: Should we alter the st_shndx field as well ? */
-
+
if (index < elf_elfheader(abfd)[0].e_shnum)
switch (elf_elfsections(abfd)[index]->sh_type)
{
case SHT_V850_SCOMMON:
index = SHN_V850_SCOMMON;
break;
-
+
case SHT_V850_TCOMMON:
index = SHN_V850_TCOMMON;
break;
-
+
case SHT_V850_ZCOMMON:
index = SHN_V850_ZCOMMON;
break;
-
+
default:
break;
}
-
+
switch (index)
{
case SHN_V850_SCOMMON:
@@ -2100,13 +2102,13 @@ v850_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
(*secp)->flags |= SEC_IS_COMMON;
*valp = sym->st_size;
break;
-
+
case SHN_V850_TCOMMON:
*secp = bfd_make_section_old_way (abfd, ".tcommon");
(*secp)->flags |= SEC_IS_COMMON;
*valp = sym->st_size;
break;
-
+
case SHN_V850_ZCOMMON:
*secp = bfd_make_section_old_way (abfd, ".zcommon");
(*secp)->flags |= SEC_IS_COMMON;
@@ -2129,7 +2131,7 @@ v850_elf_link_output_symbol_hook (abfd, info, name, sym, input_sec)
/* If we see a common symbol, which implies a relocatable link, then
if a symbol was in a special common section in an input file, mark
it as a special common in the output file. */
-
+
if (sym->st_shndx == SHN_COMMON)
{
if (strcmp (input_sec->name, ".scommon") == 0)
@@ -2193,18 +2195,16 @@ v850_elf_fake_sections (abfd, hdr, sec)
}
else if (strcmp (name, ".zcommon") == 0)
hdr->sh_type = SHT_V850_ZCOMMON;
-
+
return true;
}
-
-
#define TARGET_LITTLE_SYM bfd_elf32_v850_vec
#define TARGET_LITTLE_NAME "elf32-v850"
#define ELF_ARCH bfd_arch_v850
#define ELF_MACHINE_CODE EM_CYGNUS_V850
#define ELF_MAXPAGESIZE 0x1000
-
+
#define elf_info_to_howto v850_elf_info_to_howto_rela
#define elf_info_to_howto_rel v850_elf_info_to_howto_rel
@@ -2223,7 +2223,6 @@ v850_elf_fake_sections (abfd, hdr, sec)
#define elf_backend_can_gc_sections 1
-
#define bfd_elf32_bfd_is_local_label_name v850_elf_is_local_label_name
#define bfd_elf32_bfd_reloc_type_lookup v850_elf_reloc_type_lookup
#define bfd_elf32_bfd_copy_private_bfd_data v850_elf_copy_private_bfd_data
diff --git a/contrib/binutils/bfd/elf32.c b/contrib/binutils/bfd/elf32.c
index f222969..2d3bebf 100644
--- a/contrib/binutils/bfd/elf32.c
+++ b/contrib/binutils/bfd/elf32.c
@@ -19,5 +19,4 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ARCH_SIZE 32
-
#include "elfcode.h"
diff --git a/contrib/binutils/bfd/elf64-alpha.c b/contrib/binutils/bfd/elf64-alpha.c
index 4c083fa..197dcff 100644
--- a/contrib/binutils/bfd/elf64-alpha.c
+++ b/contrib/binutils/bfd/elf64-alpha.c
@@ -34,7 +34,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define NO_COFF_SYMBOLS
#define NO_COFF_LINENOS
-/* Get the ECOFF swapping routines. Needed for the debug information. */
+/* Get the ECOFF swapping routines. Needed for the debug information. */
#include "coff/internal.h"
#include "coff/sym.h"
#include "coff/symconst.h"
@@ -46,7 +46,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ECOFF_64
#include "ecoffswap.h"
-static boolean elf64_alpha_mkobject PARAMS ((bfd *));
+static int alpha_elf_dynamic_symbol_p
+ PARAMS((struct elf_link_hash_entry *, struct bfd_link_info *));
static struct bfd_hash_entry * elf64_alpha_link_hash_newfunc
PARAMS((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
static struct bfd_link_hash_table * elf64_alpha_bfd_link_hash_table_create
@@ -66,6 +67,8 @@ static reloc_howto_type * elf64_alpha_bfd_reloc_type_lookup
static void elf64_alpha_info_to_howto
PARAMS((bfd *, arelent *, Elf64_Internal_Rela *));
+static boolean elf64_alpha_mkobject
+ PARAMS((bfd *));
static boolean elf64_alpha_object_p
PARAMS((bfd *));
static boolean elf64_alpha_section_from_shdr
@@ -129,7 +132,6 @@ static boolean elf64_alpha_merge_ind_symbols
PARAMS((struct alpha_elf_link_hash_entry *, PTR));
static Elf_Internal_Rela * elf64_alpha_find_reloc_at_ofs
PARAMS ((Elf_Internal_Rela *, Elf_Internal_Rela *, bfd_vma, int));
-
struct alpha_elf_link_hash_entry
{
@@ -224,14 +226,35 @@ struct alpha_elf_link_hash_table
/* Should we do dynamic things to this symbol? */
-#define alpha_elf_dynamic_symbol_p(h, info) \
- ((((info)->shared && !(info)->symbolic) \
- || (((h)->elf_link_hash_flags \
- & (ELF_LINK_HASH_DEF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR)) \
- == (ELF_LINK_HASH_DEF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR)) \
- || (h)->root.type == bfd_link_hash_undefweak \
- || (h)->root.type == bfd_link_hash_defweak) \
- && (h)->dynindx != -1)
+static int
+alpha_elf_dynamic_symbol_p (h, info)
+ struct elf_link_hash_entry *h;
+ struct bfd_link_info *info;
+{
+ if (h == NULL)
+ return false;
+
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ if (h->dynindx == -1)
+ return false;
+ if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
+ return false;
+
+ if (h->root.type == bfd_link_hash_undefweak
+ || h->root.type == bfd_link_hash_defweak)
+ return true;
+
+ if ((info->shared && !info->symbolic)
+ || ((h->elf_link_hash_flags
+ & (ELF_LINK_HASH_DEF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR))
+ == (ELF_LINK_HASH_DEF_DYNAMIC | ELF_LINK_HASH_REF_REGULAR)))
+ return true;
+
+ return false;
+}
/* Create an entry in a Alpha ELF linker hash table. */
@@ -711,7 +734,7 @@ static reloc_howto_type elf64_alpha_howto_table[] =
false), /* pcrel_offset */
/* The high bits of a 32-bit displacement to the starting address of the
- current section (the relocation target is ignored); the low bits are
+ current section (the relocation target is ignored); the low bits are
supplied in the subsequent R_ALPHA_IMMED_LO32 relocs. */
/* XXX: Not implemented. */
HOWTO (R_ALPHA_IMMED_SCN_HI32,
@@ -762,7 +785,7 @@ static reloc_howto_type elf64_alpha_howto_table[] =
0, /* dst_mask */
false), /* pcrel_offset */
- /* Misc ELF relocations. */
+ /* Misc ELF relocations. */
/* A dynamic relocation to copy the target into our .dynbss section. */
/* Not generated, as all Alpha objects use PIC, so it is not needed. It
@@ -979,7 +1002,7 @@ static const struct elf_reloc_map elf64_alpha_reloc_map[] =
/* The BFD_RELOC_ALPHA_USER_* relocations are used by the assembler to process
the explicit !<reloc>!sequence relocations, and are mapped into the normal
- relocations at the end of processing. */
+ relocations at the end of processing. */
{BFD_RELOC_ALPHA_USER_LITERAL, R_ALPHA_LITERAL},
{BFD_RELOC_ALPHA_USER_LITUSE_BASE, R_ALPHA_LITUSE},
{BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF, R_ALPHA_LITUSE},
@@ -1022,7 +1045,7 @@ elf64_alpha_info_to_howto (abfd, cache_ptr, dst)
cache_ptr->howto = &elf64_alpha_howto_table[r_type];
}
-/* These functions do relaxation for Alpha ELF.
+/* These functions do relaxation for Alpha ELF.
Currently I'm only handling what I can do with existing compiler
and assembler support, which means no instructions are removed,
@@ -1062,11 +1085,11 @@ struct alpha_relax_info
};
static Elf_Internal_Rela * elf64_alpha_relax_with_lituse
- PARAMS((struct alpha_relax_info *info, bfd_vma symval,
+ PARAMS((struct alpha_relax_info *info, bfd_vma symval,
Elf_Internal_Rela *irel, Elf_Internal_Rela *irelend));
static boolean elf64_alpha_relax_without_lituse
- PARAMS((struct alpha_relax_info *info, bfd_vma symval,
+ PARAMS((struct alpha_relax_info *info, bfd_vma symval,
Elf_Internal_Rela *irel));
static bfd_vma elf64_alpha_relax_opt_call
@@ -1125,14 +1148,15 @@ elf64_alpha_relax_with_lituse (info, symval, irel, irelend)
flags |= 1 << urel->r_addend;
}
- /* A little preparation for the loop... */
+ /* A little preparation for the loop... */
disp = symval - info->gp;
- fits16 = (disp >= -(bfd_signed_vma)0x8000 && disp < 0x8000);
- fits32 = (disp >= -(bfd_signed_vma)0x80000000 && disp < 0x7fff8000);
for (urel = irel+1, i = 0; i < count; ++i, ++urel)
{
unsigned int insn;
+ int insn_disp;
+ bfd_signed_vma xdisp;
+
insn = bfd_get_32 (info->abfd, info->contents + urel->r_offset);
switch (urel->r_addend)
@@ -1145,14 +1169,23 @@ elf64_alpha_relax_with_lituse (info, symval, irel, irelend)
case 1: /* MEM FORMAT */
/* We can always optimize 16-bit displacements. */
+
+ /* Extract the displacement from the instruction, sign-extending
+ it if necessary, then test whether it is within 16 or 32 bits
+ displacement from GP. */
+ insn_disp = insn & 0x0000ffff;
+ if (insn_disp & 0x00008000)
+ insn_disp |= 0xffff0000; /* Negative: sign-extend. */
+
+ xdisp = disp + insn_disp;
+ fits16 = (xdisp >= - (bfd_signed_vma) 0x00008000 && xdisp < 0x00008000);
+ fits32 = (xdisp >= - (bfd_signed_vma) 0x80000000 && xdisp < 0x7fff8000);
+
if (fits16)
{
- /* FIXME: sanity check the insn for mem format with
- zero addend. */
-
- /* Take the op code and dest from this insn, take the base
+ /* Take the op code and dest from this insn, take the base
register from the literal insn. Leave the offset alone. */
- insn = (insn & 0xffe00000) | (lit_insn & 0x001f0000);
+ insn = (insn & 0xffe0ffff) | (lit_insn & 0x001f0000);
urel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
R_ALPHA_GPRELLOW);
urel->r_addend = irel->r_addend;
@@ -1165,8 +1198,7 @@ elf64_alpha_relax_with_lituse (info, symval, irel, irelend)
/* If all mem+byte, we can optimize 32-bit mem displacements. */
else if (fits32 && !(flags & ~6))
{
- /* FIXME: sanity check that lit insn Ra is mem insn Rb, and
- that mem_insn disp is zero. */
+ /* FIXME: sanity check that lit insn Ra is mem insn Rb. */
irel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
R_ALPHA_GPRELHIGH);
@@ -1215,12 +1247,12 @@ elf64_alpha_relax_with_lituse (info, symval, irel, irelend)
{
Elf_Internal_Rela *xrel;
- /* Preserve branch prediction call stack when possible. */
+ /* Preserve branch prediction call stack when possible. */
if ((insn & INSN_JSR_MASK) == INSN_JSR)
insn = (OP_BSR << 26) | (insn & 0x03e00000);
else
insn = (OP_BR << 26) | (insn & 0x03e00000);
-
+
urel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
R_ALPHA_BRADDR);
urel->r_addend = irel->r_addend;
@@ -1234,7 +1266,7 @@ elf64_alpha_relax_with_lituse (info, symval, irel, irelend)
/* Kill any HINT reloc that might exist for this insn. */
xrel = (elf64_alpha_find_reloc_at_ofs
- (info->relocs, info->relend, urel->r_offset,
+ (info->relocs, info->relend, urel->r_offset,
R_ALPHA_HINT));
if (xrel)
xrel->r_info = ELF64_R_INFO (0, R_ALPHA_NONE);
@@ -1249,7 +1281,7 @@ elf64_alpha_relax_with_lituse (info, symval, irel, irelend)
This does depend on every place a gp could be reloaded will
be, which currently happens for all code produced by gcc, but
not necessarily by hand-coded assembly, or if sibling calls
- are enabled in gcc.
+ are enabled in gcc.
Perhaps conditionalize this on a flag being set in the target
object file's header, and have gcc set it? */
@@ -1295,22 +1327,22 @@ elf64_alpha_relax_opt_call (info, symval)
/* If the symbol is marked NOPV, we are being told the function never
needs its procedure value. */
- if (info->other == STO_ALPHA_NOPV)
+ if ((info->other & STO_ALPHA_STD_GPLOAD) == STO_ALPHA_NOPV)
return symval;
/* If the symbol is marked STD_GP, we are being told the function does
- a normal ldgp in the first two words. */
- else if (info->other == STO_ALPHA_STD_GPLOAD)
+ a normal ldgp in the first two words. */
+ else if ((info->other & STO_ALPHA_STD_GPLOAD) == STO_ALPHA_STD_GPLOAD)
;
/* Otherwise, we may be able to identify a GP load in the first two
words, which we can then skip. */
- else
+ else
{
Elf_Internal_Rela *tsec_relocs, *tsec_relend, *tsec_free, *gpdisp;
bfd_vma ofs;
- /* Load the relocations from the section that the target symbol is in. */
+ /* Load the relocations from the section that the target symbol is in. */
if (info->sec == info->tsec)
{
tsec_relocs = info->relocs;
@@ -1332,7 +1364,7 @@ elf64_alpha_relax_opt_call (info, symval)
/* Recover the symbol's offset within the section. */
ofs = (symval - info->tsec->output_section->vma
- info->tsec->output_offset);
-
+
/* Look for a GPDISP reloc. */
gpdisp = (elf64_alpha_find_reloc_at_ofs
(tsec_relocs, tsec_relend, ofs, R_ALPHA_GPDISP));
@@ -1347,7 +1379,7 @@ elf64_alpha_relax_opt_call (info, symval)
free (tsec_free);
}
- /* We've now determined that we can skip an initial gp load. Verify
+ /* We've now determined that we can skip an initial gp load. Verify
that the call and the target use the same gp. */
if (info->link_info->hash->creator != info->tsec->owner->xvec
|| info->gotobj != alpha_elf_tdata (info->tsec->owner)->gotobj)
@@ -1408,7 +1440,7 @@ elf64_alpha_relax_without_lituse (info, symval, irel)
Any such memory load insn may be substituted by a load directly
off the GP. This allows the memory load insn to be issued before
- the calculated GP register would otherwise be ready.
+ the calculated GP register would otherwise be ready.
Any such jsr insn can be replaced by a bsr if it is in range.
@@ -1460,7 +1492,7 @@ elf64_alpha_relax_section (abfd, sec, link_info, again)
if (! link_info->keep_memory)
free_relocs = internal_relocs;
- memset(&info, 0, sizeof(info));
+ memset(&info, 0, sizeof (info));
info.abfd = abfd;
info.sec = sec;
info.link_info = link_info;
@@ -1543,8 +1575,8 @@ elf64_alpha_relax_section (abfd, sec, link_info, again)
info.tsec = bfd_abs_section_ptr;
else if (isym.st_shndx == SHN_COMMON)
info.tsec = bfd_com_section_ptr;
- else
- continue; /* who knows. */
+ else
+ continue; /* who knows. */
info.h = NULL;
info.other = isym.st_other;
@@ -1962,7 +1994,7 @@ elf64_alpha_read_ecoff_info (abfd, section, debug)
char *ext_hdr = NULL;
swap = get_elf_backend_data (abfd)->elf_backend_ecoff_debug_swap;
- memset (debug, 0, sizeof(*debug));
+ memset (debug, 0, sizeof (*debug));
ext_hdr = (char *) bfd_malloc ((size_t) swap->external_hdr_size);
if (ext_hdr == NULL && swap->external_hdr_size != 0)
@@ -2073,6 +2105,12 @@ elf64_alpha_find_nearest_line (abfd, section, symbols, offset, filename_ptr,
{
asection *msec;
+ if (_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
+ filename_ptr, functionname_ptr,
+ line_ptr, 0,
+ &elf_tdata (abfd)->dwarf2_find_line_info))
+ return true;
+
msec = bfd_get_section_by_name (abfd, ".mdebug");
if (msec != NULL)
{
@@ -2539,7 +2577,8 @@ elf64_alpha_check_relocs (abfd, info, sec, relocs)
sreloc = bfd_make_section (dynobj, rel_sec_name);
if (sreloc == NULL
|| !bfd_set_section_flags (dynobj, sreloc,
- (SEC_ALLOC|SEC_LOAD
+ ((sec->flags & (SEC_ALLOC
+ | SEC_LOAD))
| SEC_HAS_CONTENTS
| SEC_IN_MEMORY
| SEC_LINKER_CREATED
@@ -2555,7 +2594,7 @@ elf64_alpha_check_relocs (abfd, info, sec, relocs)
don't know whether we'll actually need a dynamic relocation
entry for this reloc. So make a record of it. Once we
find out if this thing needs dynamic relocation we'll
- expand the relocation sections by the appropriate amount. */
+ expand the relocation sections by the appropriate amount. */
struct alpha_elf_reloc_entry *rent;
@@ -3127,7 +3166,7 @@ elf64_alpha_calc_dynrel_sizes (h, info)
|| relent->rtype == R_ALPHA_REFQUAD)
{
relent->srel->_raw_size +=
- sizeof(Elf64_External_Rela) * relent->count;
+ sizeof (Elf64_External_Rela) * relent->count;
}
dynobj = elf_hash_table(info)->dynobj;
@@ -3202,7 +3241,7 @@ elf64_alpha_size_dynamic_sections (output_bfd, info)
i = alpha_elf_tdata(i)->got_link_next)
count += alpha_elf_tdata(i)->n_local_got_entries;
- srel->_raw_size += count * sizeof(Elf64_External_Rela);
+ srel->_raw_size += count * sizeof (Elf64_External_Rela);
}
}
/* else we're not dynamic and by definition we don't need such things. */
@@ -3305,13 +3344,14 @@ elf64_alpha_size_dynamic_sections (output_bfd, info)
if (! bfd_elf64_add_dynamic_entry (info, DT_RELA, 0)
|| ! bfd_elf64_add_dynamic_entry (info, DT_RELASZ, 0)
|| ! bfd_elf64_add_dynamic_entry (info, DT_RELAENT,
- sizeof(Elf64_External_Rela)))
+ sizeof (Elf64_External_Rela)))
return false;
if (reltext)
{
if (! bfd_elf64_add_dynamic_entry (info, DT_TEXTREL, 0))
return false;
+ info->flags |= DF_TEXTREL;
}
}
@@ -3394,7 +3434,7 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
in which case we have to adjust according to where the
section symbol winds up in the output section. */
- /* The symbol associated with GPDISP and LITUSE is
+ /* The symbol associated with GPDISP and LITUSE is
immaterial. Only the addend is significant. */
if (r_type == R_ALPHA_GPDISP || r_type == R_ALPHA_LITUSE)
continue;
@@ -3517,7 +3557,7 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
case R_ALPHA_OP_PSUB:
case R_ALPHA_OP_PRSHIFT:
/* We hate these silly beasts. */
- abort();
+ abort ();
case R_ALPHA_LITERAL:
{
@@ -3571,7 +3611,7 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
((Elf64_External_Rela *)
srelgot->contents)
+ srelgot->reloc_count++);
- BFD_ASSERT (sizeof(Elf64_External_Rela)
+ BFD_ASSERT (sizeof (Elf64_External_Rela)
* srelgot->reloc_count
<= srelgot->_cooked_size);
}
@@ -3676,7 +3716,7 @@ elf64_alpha_relocate_section (output_bfd, info, input_bfd, input_section,
((Elf64_External_Rela *)
srel->contents)
+ srel->reloc_count++);
- BFD_ASSERT (sizeof(Elf64_External_Rela) * srel->reloc_count
+ BFD_ASSERT (sizeof (Elf64_External_Rela) * srel->reloc_count
<= srel->_cooked_size);
}
goto default_reloc;
@@ -3829,7 +3869,7 @@ elf64_alpha_finish_dynamic_symbol (output_bfd, info, h, sym)
((Elf64_External_Rela *)
srel->contents)
+ srel->reloc_count++);
- BFD_ASSERT (sizeof(Elf64_External_Rela) * srel->reloc_count
+ BFD_ASSERT (sizeof (Elf64_External_Rela) * srel->reloc_count
<= srel->_cooked_size);
}
@@ -3862,7 +3902,7 @@ elf64_alpha_finish_dynamic_symbol (output_bfd, info, h, sym)
bfd_elf64_swap_reloca_out (output_bfd, &outrel,
((Elf64_External_Rela *)srel->contents
+ srel->reloc_count++));
- BFD_ASSERT (sizeof(Elf64_External_Rela) * srel->reloc_count
+ BFD_ASSERT (sizeof (Elf64_External_Rela) * srel->reloc_count
<= srel->_cooked_size);
}
}
@@ -4280,7 +4320,6 @@ elf64_alpha_final_link (abfd, info)
}
#endif
-
/* Build the external symbol information. */
einfo.abfd = abfd;
einfo.info = info;
@@ -4600,7 +4639,7 @@ elf64_alpha_final_link (abfd, info)
/* ECOFF swapping routines. These are used when dealing with the
.mdebug section, which is in the ECOFF debugging format. Copied
- from elf32-mips.c. */
+ from elf32-mips.c. */
static const struct ecoff_debug_swap
elf64_alpha_ecoff_debug_swap =
{
@@ -4643,6 +4682,36 @@ elf64_alpha_ecoff_debug_swap =
elf64_alpha_read_ecoff_info
};
+/* Use a non-standard hash bucket size of 8. */
+
+const struct elf_size_info alpha_elf_size_info =
+{
+ sizeof (Elf64_External_Ehdr),
+ sizeof (Elf64_External_Phdr),
+ sizeof (Elf64_External_Shdr),
+ sizeof (Elf64_External_Rel),
+ sizeof (Elf64_External_Rela),
+ sizeof (Elf64_External_Sym),
+ sizeof (Elf64_External_Dyn),
+ sizeof (Elf_External_Note),
+ 8,
+ 1,
+ 64, 8,
+ ELFCLASS64, EV_CURRENT,
+ bfd_elf64_write_out_phdrs,
+ bfd_elf64_write_shdrs_and_ehdr,
+ bfd_elf64_write_relocs,
+ bfd_elf64_swap_symbol_out,
+ bfd_elf64_slurp_reloc_table,
+ bfd_elf64_slurp_symbol_table,
+ bfd_elf64_swap_dyn_in,
+ bfd_elf64_swap_dyn_out,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
#define TARGET_LITTLE_SYM bfd_elf64_alpha_vec
#define TARGET_LITTLE_NAME "elf64-alpha"
#define ELF_ARCH bfd_arch_alpha
@@ -4698,9 +4767,10 @@ elf64_alpha_ecoff_debug_swap =
#define elf_backend_ecoff_debug_swap \
&elf64_alpha_ecoff_debug_swap
-/*
- * A few constants that determine how the .plt section is set up.
- */
+#define elf_backend_size_info \
+ alpha_elf_size_info
+
+/* A few constants that determine how the .plt section is set up. */
#define elf_backend_want_got_plt 0
#define elf_backend_plt_readonly 0
#define elf_backend_want_plt_sym 1
diff --git a/contrib/binutils/bfd/elf64-gen.c b/contrib/binutils/bfd/elf64-gen.c
index 78dc09d..c071934 100644
--- a/contrib/binutils/bfd/elf64-gen.c
+++ b/contrib/binutils/bfd/elf64-gen.c
@@ -58,6 +58,37 @@ elf_generic_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
bfd_reloc->howto = &dummy;
}
+static boolean
+elf64_generic_link_add_symbols (abfd, info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+{
+ asection *o;
+
+ /* Check if there are any relocations. */
+ for (o = abfd->sections; o != NULL; o = o->next)
+ if ((o->flags & SEC_RELOC) != 0)
+ {
+ Elf_Internal_Ehdr *ehdrp;
+
+ ehdrp = elf_elfheader (abfd);
+ if (abfd->my_archive)
+ (*_bfd_error_handler) (_("%s(%s): Relocations in generic ELF (EM: %d)"),
+ bfd_get_filename (abfd->my_archive),
+ bfd_get_filename (abfd),
+ ehdrp->e_machine);
+ else
+ (*_bfd_error_handler) (_("%s: Relocations in generic ELF (EM: %d)"),
+ bfd_get_filename (abfd),
+ ehdrp->e_machine);
+
+ bfd_set_error (bfd_error_wrong_format);
+ return false;
+ }
+
+ return bfd_elf64_bfd_link_add_symbols (abfd, info);
+}
+
#define TARGET_LITTLE_SYM bfd_elf64_little_generic_vec
#define TARGET_LITTLE_NAME "elf64-little"
#define TARGET_BIG_SYM bfd_elf64_big_generic_vec
@@ -66,6 +97,7 @@ elf_generic_info_to_howto_rel (abfd, bfd_reloc, elf_reloc)
#define ELF_MACHINE_CODE EM_NONE
#define ELF_MAXPAGESIZE 0x1
#define bfd_elf64_bfd_reloc_type_lookup bfd_default_reloc_type_lookup
+#define bfd_elf64_bfd_link_add_symbols elf64_generic_link_add_symbols
#define elf_info_to_howto elf_generic_info_to_howto
#define elf_info_to_howto_rel elf_generic_info_to_howto_rel
diff --git a/contrib/binutils/bfd/elf64-sparc.c b/contrib/binutils/bfd/elf64-sparc.c
index c9e8626..0627913 100644
--- a/contrib/binutils/bfd/elf64-sparc.c
+++ b/contrib/binutils/bfd/elf64-sparc.c
@@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "sysdep.h"
#include "libbfd.h"
#include "elf-bfd.h"
+#include "opcode/sparc.h"
/* This is defined if one wants to build upward compatible binaries
with the original sparc64-elf toolchain. The support is kept in for
@@ -65,6 +66,8 @@ static void sparc64_elf_symbol_processing
static boolean sparc64_elf_merge_private_bfd_data
PARAMS ((bfd *, bfd *));
+static boolean sparc64_elf_relax_section
+ PARAMS ((bfd *, asection *, struct bfd_link_info *, boolean *));
static boolean sparc64_elf_relocate_section
PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
Elf_Internal_Rela *, Elf_Internal_Sym *, asection **));
@@ -212,7 +215,7 @@ static CONST struct elf_reloc_map sparc_reloc_map[] =
static reloc_howto_type *
sparc64_elf_reloc_type_lookup (abfd, code)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
bfd_reloc_code_real_type code;
{
unsigned int i;
@@ -226,7 +229,7 @@ sparc64_elf_reloc_type_lookup (abfd, code)
static void
sparc64_elf_info_to_howto (abfd, cache_ptr, dst)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
arelent *cache_ptr;
Elf64_Internal_Rela *dst;
{
@@ -237,10 +240,10 @@ sparc64_elf_info_to_howto (abfd, cache_ptr, dst)
/* Due to the way how we handle R_SPARC_OLO10, each entry in a SHT_RELA
section can represent up to two relocs, we must tell the user to allocate
more space. */
-
+
static long
sparc64_elf_get_reloc_upper_bound (abfd, sec)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
asection *sec;
{
return (sec->reloc_count * 2 + 1) * sizeof (arelent *);
@@ -253,7 +256,7 @@ sparc64_elf_get_dynamic_reloc_upper_bound (abfd)
return _bfd_elf_get_dynamic_reloc_upper_bound (abfd) * 2;
}
-/* Read relocations for ASECT from REL_HDR. There are RELOC_COUNT of
+/* Read relocations for ASECT from REL_HDR. There are RELOC_COUNT of
them. We cannot use generic elf routines for this, because R_SPARC_OLO10
has secondary addend in ELF64_R_TYPE_DATA. We handle it as two relocations
for the same location, R_SPARC_LO10 and R_SPARC_13. */
@@ -266,7 +269,6 @@ sparc64_elf_slurp_one_reloc_table (abfd, asect, rel_hdr, symbols, dynamic)
asymbol **symbols;
boolean dynamic;
{
- struct elf_backend_data * const ebd = get_elf_backend_data (abfd);
PTR allocated = NULL;
bfd_byte *native_relocs;
arelent *relent;
@@ -290,7 +292,7 @@ sparc64_elf_slurp_one_reloc_table (abfd, asect, rel_hdr, symbols, dynamic)
entsize = rel_hdr->sh_entsize;
BFD_ASSERT (entsize == sizeof (Elf64_External_Rela));
-
+
count = rel_hdr->sh_size / entsize;
for (i = 0, relent = relents; i < count;
@@ -396,20 +398,20 @@ sparc64_elf_slurp_reloc_table (abfd, asect, symbols, dynamic)
rel_hdr2 = NULL;
}
- asect->relocation = ((arelent *)
- bfd_alloc (abfd,
+ asect->relocation = ((arelent *)
+ bfd_alloc (abfd,
asect->reloc_count * 2 * sizeof (arelent)));
if (asect->relocation == NULL)
return false;
/* The sparc64_elf_slurp_one_reloc_table routine increments reloc_count. */
asect->reloc_count = 0;
-
+
if (!sparc64_elf_slurp_one_reloc_table (abfd, asect, rel_hdr, symbols,
dynamic))
return false;
-
- if (rel_hdr2
+
+ if (rel_hdr2
&& !sparc64_elf_slurp_one_reloc_table (abfd, asect, rel_hdr2, symbols,
dynamic))
return false;
@@ -501,7 +503,6 @@ sparc64_elf_write_relocs (abfd, sec, data)
for (idx = 0; idx < sec->reloc_count; idx++)
{
bfd_vma addr;
- unsigned int i;
++count;
@@ -533,7 +534,7 @@ sparc64_elf_write_relocs (abfd, sec, data)
if (rela_hdr->sh_type != SHT_RELA)
abort ();
- /* orelocation has the data, reloc_count has the count... */
+ /* orelocation has the data, reloc_count has the count... */
outbound_relocas = (Elf64_External_Rela *) rela_hdr->contents;
src_rela = outbound_relocas;
@@ -627,7 +628,7 @@ struct sparc64_elf_link_hash_table
#define sparc64_elf_hash_table(p) \
((struct sparc64_elf_link_hash_table *) ((p)->hash))
-
+
/* Create a Sparc64 ELF linker hash table. */
static struct bfd_link_hash_table *
@@ -650,7 +651,6 @@ sparc64_elf_bfd_link_hash_table_create (abfd)
return &ret->root.root;
}
-
/* Utility for performing the standard initial work of an instruction
relocation.
@@ -723,13 +723,13 @@ sparc_elf_notsup_reloc (abfd,
input_section,
output_bfd,
error_message)
- bfd *abfd;
- arelent *reloc_entry;
- asymbol *symbol;
- PTR data;
- asection *input_section;
- bfd *output_bfd;
- char **error_message;
+ bfd *abfd ATTRIBUTE_UNUSED;
+ arelent *reloc_entry ATTRIBUTE_UNUSED;
+ asymbol *symbol ATTRIBUTE_UNUSED;
+ PTR data ATTRIBUTE_UNUSED;
+ asection *input_section ATTRIBUTE_UNUSED;
+ bfd *output_bfd ATTRIBUTE_UNUSED;
+ char **error_message ATTRIBUTE_UNUSED;
{
return bfd_reloc_notsupported;
}
@@ -745,7 +745,7 @@ sparc_elf_wdisp16_reloc (abfd, reloc_entry, symbol, data, input_section,
PTR data;
asection *input_section;
bfd *output_bfd;
- char **error_message;
+ char **error_message ATTRIBUTE_UNUSED;
{
bfd_vma relocation;
bfd_vma insn;
@@ -783,7 +783,7 @@ sparc_elf_hix22_reloc (abfd,
PTR data;
asection *input_section;
bfd *output_bfd;
- char **error_message;
+ char **error_message ATTRIBUTE_UNUSED;
{
bfd_vma relocation;
bfd_vma insn;
@@ -820,7 +820,7 @@ sparc_elf_lox10_reloc (abfd,
PTR data;
asection *input_section;
bfd *output_bfd;
- char **error_message;
+ char **error_message ATTRIBUTE_UNUSED;
{
bfd_vma relocation;
bfd_vma insn;
@@ -847,7 +847,6 @@ sparc_elf_lox10_reloc (abfd,
#define ELF_DYNAMIC_INTERPRETER "/usr/lib/sparcv9/ld.so.1"
-
/* Fill in the .plt section. */
static void
@@ -858,7 +857,7 @@ sparc64_elf_build_plt (output_bfd, contents, nentries)
{
const unsigned int nop = 0x01000000;
int i, j;
-
+
/* The first four entries are reserved, and are initially undefined.
We fill them with `illtrap 0' to force ld.so to do something. */
@@ -892,7 +891,7 @@ sparc64_elf_build_plt (output_bfd, contents, nentries)
/* Now the tricky bit. Entries 32768 and higher are grouped in blocks of
160: 160 entries and 160 pointers. This is to separate code from data,
which is much friendlier on the cache. */
-
+
for (; i < nentries; i += 160)
{
int block = (i + 160 <= nentries ? 160 : nentries - i);
@@ -935,7 +934,7 @@ sparc64_elf_plt_entry_offset (index)
block = (index - LARGE_PLT_THRESHOLD) / 160;
ofs = (index - LARGE_PLT_THRESHOLD) % 160;
- return ((bfd_vma)(LARGE_PLT_THRESHOLD + block*160) * PLT_ENTRY_SIZE
+ return ((bfd_vma) (LARGE_PLT_THRESHOLD + block*160) * PLT_ENTRY_SIZE
+ ofs * 6*4);
}
@@ -961,8 +960,6 @@ sparc64_elf_plt_ptr_offset (index, max)
+ last * 6*4
+ ofs * 8);
}
-
-
/* Look through the relocs for a section during the first phase, and
allocate space in the global offset table or procedure linkage
@@ -1197,7 +1194,7 @@ sparc64_elf_check_relocs (abfd, info, sec, relocs)
case R_SPARC_UA16:
/* When creating a shared object, we must copy these relocs
into the output file. We create a reloc section in
- dynobj and make room for the reloc.
+ dynobj and make room for the reloc.
But don't do this for debugging sections -- this shows up
with DWARF2 -- first because they are not loaded, and
@@ -1246,7 +1243,7 @@ sparc64_elf_check_relocs (abfd, info, sec, relocs)
break;
default:
- (*_bfd_error_handler)(_("%s: check_relocs: unhandled reloc type %d"),
+ (*_bfd_error_handler) (_("%s: check_relocs: unhandled reloc type %d"),
bfd_get_filename(abfd),
ELF64_R_TYPE_ID (rel->r_info));
return false;
@@ -1265,9 +1262,9 @@ sparc64_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
struct bfd_link_info *info;
const Elf_Internal_Sym *sym;
const char **namep;
- flagword *flagsp;
- asection **secp;
- bfd_vma *valp;
+ flagword *flagsp ATTRIBUTE_UNUSED;
+ asection **secp ATTRIBUTE_UNUSED;
+ bfd_vma *valp ATTRIBUTE_UNUSED;
{
static char *stt_types[] = { "NOTYPE", "OBJECT", "FUNCTION" };
@@ -1275,7 +1272,7 @@ sparc64_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
{
int reg;
struct sparc64_elf_app_reg *p;
-
+
reg = (int)sym->st_value;
switch (reg & ~1)
{
@@ -1316,7 +1313,7 @@ sparc64_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
if (**namep)
{
struct elf_link_hash_entry *h;
-
+
h = (struct elf_link_hash_entry *)
bfd_link_hash_lookup (info->hash, *namep, false, false, false);
@@ -1387,7 +1384,7 @@ sparc64_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
static boolean
sparc64_elf_output_arch_syms (output_bfd, info, finfo, func)
- bfd *output_bfd;
+ bfd *output_bfd ATTRIBUTE_UNUSED;
struct bfd_link_info *info;
PTR finfo;
boolean (*func) PARAMS ((PTR, const char *,
@@ -1460,7 +1457,7 @@ sparc64_elf_get_symbol_type (elf_sym, type)
static void
sparc64_elf_symbol_processing (abfd, asym)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
asymbol *asym;
{
elf_symbol_type *elfsym;
@@ -1556,12 +1553,6 @@ sparc64_elf_adjust_dynamic_symbol (info, h)
s = bfd_get_section_by_name (dynobj, ".rela.plt");
BFD_ASSERT (s != NULL);
- /* The first plt entries are reserved, and the relocations must
- pair up exactly. */
- if (s->_raw_size == 0)
- s->_raw_size += (PLT_HEADER_SIZE/PLT_ENTRY_SIZE
- * sizeof (Elf64_External_Rela));
-
s->_raw_size += sizeof (Elf64_External_Rela);
/* The procedure linkage table size is bounded by the magnitude
@@ -1802,6 +1793,7 @@ sparc64_elf_size_dynamic_sections (output_bfd, info)
{
if (! bfd_elf64_add_dynamic_entry (info, DT_TEXTREL, 0))
return false;
+ info->flags |= DF_TEXTREL;
}
/* Add dynamic STT_REGISTER symbols and corresponding DT_SPARC_REGISTER
@@ -1813,7 +1805,7 @@ sparc64_elf_size_dynamic_sections (output_bfd, info)
if (app_regs [reg].name != NULL)
{
struct elf_link_local_dynamic_entry *entry, *e;
-
+
if (! bfd_elf64_add_dynamic_entry (info, DT_SPARC_REGISTER, 0))
return false;
@@ -1855,6 +1847,21 @@ sparc64_elf_size_dynamic_sections (output_bfd, info)
return true;
}
+#define SET_SEC_DO_RELAX(section) do { elf_section_data(section)->tdata = (void *)1; } while (0)
+#define SEC_DO_RELAX(section) (elf_section_data(section)->tdata == (void *)1)
+
+static boolean
+sparc64_elf_relax_section (abfd, section, link_info, again)
+ bfd *abfd ATTRIBUTE_UNUSED;
+ asection *section ATTRIBUTE_UNUSED;
+ struct bfd_link_info *link_info ATTRIBUTE_UNUSED;
+ boolean *again;
+{
+ *again = false;
+ SET_SEC_DO_RELAX (section);
+ return true;
+}
+
/* Relocate a SPARC64 ELF section. */
static boolean
@@ -1898,7 +1905,7 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
{
int r_type;
reloc_howto_type *howto;
- long r_symndx;
+ unsigned long r_symndx;
struct elf_link_hash_entry *h;
Elf_Internal_Sym *sym;
asection *sec;
@@ -2061,7 +2068,15 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
(!info->shared || info->no_undefined
|| ELF_ST_VISIBILITY (h->other)))))
return false;
- relocation = 0;
+
+ /* To avoid generating warning messages about truncated
+ relocations, set the relocation's address to be the same as
+ the start of this section. */
+
+ if (input_section->output_section != NULL)
+ relocation = input_section->output_section->vma;
+ else
+ relocation = 0;
}
}
@@ -2338,7 +2353,6 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
off &= ~1;
else
{
- bfd_put_64 (output_bfd, relocation, sgot->contents + off);
local_got_offsets[r_symndx] |= 1;
if (info->shared)
@@ -2346,6 +2360,13 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
asection *srelgot;
Elf_Internal_Rela outrel;
+ /* The Solaris 2.7 64-bit linker adds the contents
+ of the location to the value of the reloc.
+ Note this is different behaviour to the
+ 32-bit linker, which both adds the contents
+ and ignores the addend. So clear the location. */
+ bfd_put_64 (output_bfd, 0, sgot->contents + off);
+
/* We need to generate a R_SPARC_RELATIVE reloc
for the dynamic linker. */
srelgot = bfd_get_section_by_name(dynobj, ".rela.got");
@@ -2362,6 +2383,8 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
+ srelgot->reloc_count));
++srelgot->reloc_count;
}
+ else
+ bfd_put_64 (output_bfd, relocation, sgot->contents + off);
}
relocation = sgot->output_offset + off - got_base;
}
@@ -2396,6 +2419,8 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
relocation = (splt->output_section->vma
+ splt->output_offset
+ sparc64_elf_plt_entry_offset (h->plt.offset));
+ if (r_type == R_SPARC_WPLT30)
+ goto do_wplt30;
goto do_default;
case R_SPARC_OLO10:
@@ -2471,6 +2496,97 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
}
break;
+ case R_SPARC_WDISP30:
+ do_wplt30:
+ if (SEC_DO_RELAX (input_section)
+ && rel->r_offset + 4 < input_section->_raw_size)
+ {
+#define G0 0
+#define O7 15
+#define XCC (2 << 20)
+#define COND(x) (((x)&0xf)<<25)
+#define CONDA COND(0x8)
+#define INSN_BPA (F2(0,1) | CONDA | BPRED | XCC)
+#define INSN_BA (F2(0,2) | CONDA)
+#define INSN_OR F3(2, 0x2, 0)
+#define INSN_NOP F2(0,4)
+
+ bfd_vma x, y;
+
+ /* If the instruction is a call with either:
+ restore
+ arithmetic instruction with rd == %o7
+ where rs1 != %o7 and rs2 if it is register != %o7
+ then we can optimize if the call destination is near
+ by changing the call into a branch always. */
+ x = bfd_get_32 (input_bfd, contents + rel->r_offset);
+ y = bfd_get_32 (input_bfd, contents + rel->r_offset + 4);
+ if ((x & OP(~0)) == OP(1) && (y & OP(~0)) == OP(2))
+ {
+ if (((y & OP3(~0)) == OP3(0x3d) /* restore */
+ || ((y & OP3(0x28)) == 0 /* arithmetic */
+ && (y & RD(~0)) == RD(O7)))
+ && (y & RS1(~0)) != RS1(O7)
+ && ((y & F3I(~0))
+ || (y & RS2(~0)) != RS2(O7)))
+ {
+ bfd_vma reloc;
+
+ reloc = relocation + rel->r_addend - rel->r_offset;
+ reloc -= (input_section->output_section->vma
+ + input_section->output_offset);
+ if (reloc & 3)
+ goto do_default;
+
+ /* Ensure the branch fits into simm22. */
+ if ((reloc & ~(bfd_vma)0x7fffff)
+ && ((reloc | 0x7fffff) != MINUS_ONE))
+ goto do_default;
+ reloc >>= 2;
+
+ /* Check whether it fits into simm19. */
+ if ((reloc & 0x3c0000) == 0
+ || (reloc & 0x3c0000) == 0x3c0000)
+ x = INSN_BPA | (reloc & 0x7ffff); /* ba,pt %xcc */
+ else
+ x = INSN_BA | (reloc & 0x3fffff); /* ba */
+ bfd_put_32 (input_bfd, x, contents + rel->r_offset);
+ r = bfd_reloc_ok;
+ if (rel->r_offset >= 4
+ && (y & (0xffffffff ^ RS1(~0)))
+ == (INSN_OR | RD(O7) | RS2(G0)))
+ {
+ bfd_vma z;
+ unsigned int reg;
+
+ z = bfd_get_32 (input_bfd,
+ contents + rel->r_offset - 4);
+ if ((z & (0xffffffff ^ RD(~0)))
+ != (INSN_OR | RS1(O7) | RS2(G0)))
+ break;
+
+ /* The sequence was
+ or %o7, %g0, %rN
+ call foo
+ or %rN, %g0, %o7
+
+ If call foo was replaced with ba, replace
+ or %rN, %g0, %o7 with nop. */
+
+ reg = (y & RS1(~0)) >> 14;
+ if (reg != ((z & RD(~0)) >> 25)
+ || reg == G0 || reg == O7)
+ break;
+
+ bfd_put_32 (input_bfd, INSN_NOP,
+ contents + rel->r_offset + 4);
+ }
+ break;
+ }
+ }
+ }
+ /* FALLTHROUGH */
+
default:
do_default:
r = _bfd_final_link_relocate (howto, input_bfd, input_section,
@@ -2499,12 +2615,12 @@ sparc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
{
/* Assume this is a call protected by other code that
detect the symbol is undefined. If this is the case,
- we can safely ignore the overflow. If not, the
+ we can safely ignore the overflow. If not, the
program is hosed anyway, and a little warning isn't
going to help. */
break;
}
-
+
name = h->root.root.string;
}
else
@@ -2550,7 +2666,7 @@ sparc64_elf_finish_dynamic_symbol (output_bfd, info, h, sym)
asection *srela;
Elf_Internal_Rela rela;
- /* This symbol has an entry in the PLT. Set it up. */
+ /* This symbol has an entry in the PLT. Set it up. */
BFD_ASSERT (h->dynindx != -1);
@@ -2575,9 +2691,14 @@ sparc64_elf_finish_dynamic_symbol (output_bfd, info, h, sym)
rela.r_offset += (splt->output_section->vma + splt->output_offset);
rela.r_info = ELF64_R_INFO (h->dynindx, R_SPARC_JMP_SLOT);
+ /* Adjust for the first 4 reserved elements in the .plt section
+ when setting the offset in the .rela.plt section.
+ Sun forgot to read their own ABI and copied elf32-sparc behaviour,
+ thus .plt[4] has corresponding .rela.plt[0] and so on. */
+
bfd_elf64_swap_reloca_out (output_bfd, &rela,
((Elf64_External_Rela *) srela->contents
- + h->plt.offset));
+ + (h->plt.offset - 4)));
if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
{
@@ -2770,7 +2891,7 @@ sparc64_elf_finish_dynamic_sections (output_bfd, info)
return true;
}
-/* Functions for dealing with the e_flags field. */
+/* Functions for dealing with the e_flags field. */
/* Merge backend specific data from an object file to the output
object file when linking. */
@@ -2796,32 +2917,33 @@ sparc64_elf_merge_private_bfd_data (ibfd, obfd)
elf_flags_init (obfd) = true;
elf_elfheader (obfd)->e_flags = new_flags;
}
-
+
else if (new_flags == old_flags) /* Compatible flags are ok */
;
-
+
else /* Incompatible flags */
{
error = false;
-
+
+#define EF_SPARC_ISA_EXTENSIONS \
+ (EF_SPARC_SUN_US1 | EF_SPARC_SUN_US3 | EF_SPARC_HAL_R1)
+
if ((ibfd->flags & DYNAMIC) != 0)
{
/* We don't want dynamic objects memory ordering and
architecture to have any role. That's what dynamic linker
should do. */
- old_flags &= ~(EF_SPARCV9_MM | EF_SPARC_SUN_US1 | EF_SPARC_HAL_R1);
- old_flags |= (new_flags
- & (EF_SPARCV9_MM
- | EF_SPARC_SUN_US1
- | EF_SPARC_HAL_R1));
+ new_flags &= ~(EF_SPARCV9_MM | EF_SPARC_ISA_EXTENSIONS);
+ new_flags |= (old_flags
+ & (EF_SPARCV9_MM | EF_SPARC_ISA_EXTENSIONS));
}
else
{
/* Choose the highest architecture requirements. */
- old_flags |= (new_flags & (EF_SPARC_SUN_US1 | EF_SPARC_HAL_R1));
- new_flags |= (old_flags & (EF_SPARC_SUN_US1 | EF_SPARC_HAL_R1));
- if ((old_flags & (EF_SPARC_SUN_US1 | EF_SPARC_HAL_R1))
- == (EF_SPARC_SUN_US1 | EF_SPARC_HAL_R1))
+ old_flags |= (new_flags & EF_SPARC_ISA_EXTENSIONS);
+ new_flags |= (old_flags & EF_SPARC_ISA_EXTENSIONS);
+ if ((old_flags & (EF_SPARC_SUN_US1 | EF_SPARC_SUN_US3))
+ && (old_flags & EF_SPARC_HAL_R1))
{
error = true;
(*_bfd_error_handler)
@@ -2863,13 +2985,13 @@ sparc64_elf_merge_private_bfd_data (ibfd, obfd)
static const char *
sparc64_elf_print_symbol_all (abfd, filep, symbol)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
PTR filep;
asymbol *symbol;
{
FILE *file = (FILE *) filep;
int reg, type;
-
+
if (ELF_ST_TYPE (((elf_symbol_type *) symbol)->internal_elf_sym.st_info)
!= STT_REGISTER)
return NULL;
@@ -2894,8 +3016,10 @@ sparc64_elf_object_p (abfd)
bfd *abfd;
{
unsigned long mach = bfd_mach_sparc_v9;
-
- if (elf_elfheader (abfd)->e_flags & EF_SPARC_SUN_US1)
+
+ if (elf_elfheader (abfd)->e_flags & EF_SPARC_SUN_US3)
+ mach = bfd_mach_sparc_v9b;
+ else if (elf_elfheader (abfd)->e_flags & EF_SPARC_SUN_US1)
mach = bfd_mach_sparc_v9a;
return bfd_default_set_arch_mach (abfd, bfd_arch_sparc, mach);
}
@@ -2919,7 +3043,7 @@ const struct elf_size_info sparc64_elf_size_info =
/* internal relocations per external relocations.
For link purposes we use just 1 internal per
1 external, for assembly and slurp symbol table
- we use 2. */
+ we use 2. */
1,
64, /* arch_size */
8, /* file_align */
@@ -2952,7 +3076,7 @@ const struct elf_size_info sparc64_elf_size_info =
#define bfd_elf64_bfd_link_hash_table_create \
sparc64_elf_bfd_link_hash_table_create
-
+
#define elf_info_to_howto \
sparc64_elf_info_to_howto
#define bfd_elf64_get_reloc_upper_bound \
@@ -2963,6 +3087,8 @@ const struct elf_size_info sparc64_elf_size_info =
sparc64_elf_canonicalize_dynamic_reloc
#define bfd_elf64_bfd_reloc_type_lookup \
sparc64_elf_reloc_type_lookup
+#define bfd_elf64_bfd_relax_section \
+ sparc64_elf_relax_section
#define elf_backend_create_dynamic_sections \
_bfd_elf_create_dynamic_sections
diff --git a/contrib/binutils/bfd/elfarm-nabi.c b/contrib/binutils/bfd/elfarm-nabi.c
index 38778b7..55e1f03 100644
--- a/contrib/binutils/bfd/elfarm-nabi.c
+++ b/contrib/binutils/bfd/elfarm-nabi.c
@@ -43,6 +43,10 @@
static reloc_howto_type * elf32_arm_reloc_type_lookup
PARAMS ((bfd * abfd, bfd_reloc_code_real_type code));
+/* Note: code such as elf32_arm_reloc_type_lookup expect to use e.g.
+ R_ARM_PC24 as an index into this, and find the R_ARM_PC24 HOWTO
+ in that slot. */
+
static reloc_howto_type elf32_arm_howto_table[] =
{
/* No relocation */
@@ -262,36 +266,36 @@ static reloc_howto_type elf32_arm_howto_table[] =
0x00000000, /* dst_mask */
false), /* pcrel_offset */
- /* These next two relocs are defined, but I do not know what they do. */
-
+ /* BLX instruction for the ARM. */
HOWTO (R_ARM_XPC25, /* type */
- 0, /* rightshift */
- 0, /* size (0 = byte, 1 = short, 2 = long) */
- 0, /* bitsize */
- false, /* pc_relative */
+ 2, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 25, /* bitsize */
+ true, /* pc_relative */
0, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_ARM_XPC25", /* name */
false, /* partial_inplace */
- 0x00000000, /* src_mask */
- 0x00000000, /* dst_mask */
- false), /* pcrel_offset */
+ 0x00ffffff, /* src_mask */
+ 0x00ffffff, /* dst_mask */
+ true), /* pcrel_offset */
+ /* BLX instruction for the Thumb. */
HOWTO (R_ARM_THM_XPC22, /* type */
- 0, /* rightshift */
- 0, /* size (0 = byte, 1 = short, 2 = long) */
- 0, /* bitsize */
- false, /* pc_relative */
+ 2, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 22, /* bitsize */
+ true, /* pc_relative */
0, /* bitpos */
complain_overflow_signed,/* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
"R_ARM_THM_XPC22", /* name */
false, /* partial_inplace */
- 0x00000000, /* src_mask */
- 0x00000000, /* dst_mask */
- false), /* pcrel_offset */
-
+ 0x07ff07ff, /* src_mask */
+ 0x07ff07ff, /* dst_mask */
+ true), /* pcrel_offset */
+
/* These next three relocs are not defined, but we need to fill the space. */
HOWTO (R_ARM_NONE, /* type */
@@ -337,7 +341,7 @@ static reloc_howto_type elf32_arm_howto_table[] =
false), /* pcrel_offset */
/* Relocs used in ARM Linux */
-
+
HOWTO (R_ARM_COPY, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -365,7 +369,7 @@ static reloc_howto_type elf32_arm_howto_table[] =
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
false), /* pcrel_offset */
-
+
HOWTO (R_ARM_JUMP_SLOT, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -379,7 +383,7 @@ static reloc_howto_type elf32_arm_howto_table[] =
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
false), /* pcrel_offset */
-
+
HOWTO (R_ARM_RELATIVE, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -393,7 +397,7 @@ static reloc_howto_type elf32_arm_howto_table[] =
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
false), /* pcrel_offset */
-
+
HOWTO (R_ARM_GOTOFF, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -407,7 +411,7 @@ static reloc_howto_type elf32_arm_howto_table[] =
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
false), /* pcrel_offset */
-
+
HOWTO (R_ARM_GOTPC, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -421,7 +425,7 @@ static reloc_howto_type elf32_arm_howto_table[] =
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
true), /* pcrel_offset */
-
+
HOWTO (R_ARM_GOT32, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -435,7 +439,7 @@ static reloc_howto_type elf32_arm_howto_table[] =
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
false), /* pcrel_offset */
-
+
HOWTO (R_ARM_PLT32, /* type */
2, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -449,8 +453,8 @@ static reloc_howto_type elf32_arm_howto_table[] =
0x00ffffff, /* src_mask */
0x00ffffff, /* dst_mask */
true), /* pcrel_offset */
-
- /* End of relocs used in ARM Linux */
+
+ /* End of relocs used in ARM Linux */
HOWTO (R_ARM_RREL32, /* type */
0, /* rightshift */
@@ -574,7 +578,6 @@ static reloc_howto_type elf32_arm_thm_pc9_howto =
0x000000ff, /* dst_mask */
true); /* pcrel_offset */
-
static void
elf32_arm_info_to_howto (abfd, bfd_reloc, elf_reloc)
bfd * abfd ATTRIBUTE_UNUSED;
@@ -582,7 +585,7 @@ elf32_arm_info_to_howto (abfd, bfd_reloc, elf_reloc)
Elf32_Internal_Rel * elf_reloc;
{
unsigned int r_type;
-
+
r_type = ELF32_R_TYPE (elf_reloc->r_info);
switch (r_type)
@@ -590,19 +593,19 @@ elf32_arm_info_to_howto (abfd, bfd_reloc, elf_reloc)
case R_ARM_GNU_VTINHERIT:
bfd_reloc->howto = & elf32_arm_vtinherit_howto;
break;
-
+
case R_ARM_GNU_VTENTRY:
bfd_reloc->howto = & elf32_arm_vtentry_howto;
break;
-
+
case R_ARM_THM_PC11:
bfd_reloc->howto = & elf32_arm_thm_pc11_howto;
break;
-
+
case R_ARM_THM_PC9:
bfd_reloc->howto = & elf32_arm_thm_pc9_howto;
break;
-
+
default:
if (r_type >= NUM_ELEM (elf32_arm_howto_table))
bfd_reloc->howto = NULL;
@@ -611,7 +614,7 @@ elf32_arm_info_to_howto (abfd, bfd_reloc, elf_reloc)
break;
}
}
-
+
struct elf32_arm_reloc_map
{
bfd_reloc_code_real_type bfd_reloc_val;
@@ -622,6 +625,8 @@ static const struct elf32_arm_reloc_map elf32_arm_reloc_map[] =
{
{BFD_RELOC_NONE, R_ARM_NONE},
{BFD_RELOC_ARM_PCREL_BRANCH, R_ARM_PC24},
+ {BFD_RELOC_ARM_PCREL_BLX, R_ARM_XPC25},
+ {BFD_RELOC_THUMB_PCREL_BLX, R_ARM_THM_XPC22},
{BFD_RELOC_32, R_ARM_ABS32},
{BFD_RELOC_32_PCREL, R_ARM_REL32},
{BFD_RELOC_8, R_ARM_ABS8},
@@ -664,7 +669,7 @@ elf32_arm_reloc_type_lookup (abfd, code)
for (i = 0; i < NUM_ELEM (elf32_arm_reloc_map); i ++)
if (elf32_arm_reloc_map[i].bfd_reloc_val == code)
return & elf32_arm_howto_table[elf32_arm_reloc_map[i].elf_reloc_val];
-
+
return NULL;
}
}
diff --git a/contrib/binutils/bfd/elfarm-oabi.c b/contrib/binutils/bfd/elfarm-oabi.c
index 72f62f2..e49ea9c 100644
--- a/contrib/binutils/bfd/elfarm-oabi.c
+++ b/contrib/binutils/bfd/elfarm-oabi.c
@@ -1,5 +1,5 @@
/* 32-bit ELF support for ARM old abi option.
- Copyright 1999 Free Software Foundation, Inc.
+ Copyright 1999, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -17,7 +17,9 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-#include "elf/arm-oabi.h"
+#define OLD_ARM_ABI
+
+#include "elf/arm.h"
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
@@ -263,7 +265,7 @@ static reloc_howto_type elf32_arm_howto_table[] =
false), /* pcrel_offset */
/* XXX - gap in index numbering here. */
-
+
HOWTO (R_ARM_PLT32, /* type */
2, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
@@ -277,7 +279,7 @@ static reloc_howto_type elf32_arm_howto_table[] =
0x00ffffff, /* src_mask */
0x00ffffff, /* dst_mask */
true), /* pcrel_offset */
-
+
/* XXX - gap in index numbering here. */
HOWTO (R_ARM_RREL32, /* type */
@@ -344,7 +346,7 @@ find_howto (r_type)
unsigned int r_type;
{
int i;
-
+
for (i = NUM_ELEM (elf32_arm_howto_table); i--;)
if (elf32_arm_howto_table [i].type == r_type)
return elf32_arm_howto_table + i;
@@ -388,7 +390,7 @@ static const struct elf32_arm_reloc_map elf32_arm_reloc_map[] =
{BFD_RELOC_NONE, R_ARM_SBREL32 },
{BFD_RELOC_NONE, R_ARM_AMP_VCALL9 },
{BFD_RELOC_THUMB_PCREL_BRANCH12, R_ARM_THM_PC11 },
- {BFD_RELOC_THUMB_PCREL_BRANCH9, R_ARM_THM_PC9 },
+ {BFD_RELOC_THUMB_PCREL_BRANCH9, R_ARM_THM_PC9 },
{BFD_RELOC_VTABLE_INHERIT, R_ARM_GNU_VTINHERIT },
{BFD_RELOC_VTABLE_ENTRY, R_ARM_GNU_VTENTRY }
};
@@ -406,7 +408,7 @@ elf32_arm_reloc_type_lookup (abfd, code)
if (code == BFD_RELOC_ARM_PLT32)
return find_howto (R_ARM_PLT32);
-
+
return NULL;
}
diff --git a/contrib/binutils/bfd/elfcode.h b/contrib/binutils/bfd/elfcode.h
index c5edf9b..1a5f63a 100644
--- a/contrib/binutils/bfd/elfcode.h
+++ b/contrib/binutils/bfd/elfcode.h
@@ -1,6 +1,6 @@
/* ELF executable support for BFD.
- Copyright 1991, 92, 93, 94, 95, 96, 97, 98, 1999 Free Software
- Foundation, Inc.
+ Copyright 1991, 92, 93, 94, 95, 96, 97, 98, 1999, 2000 Free
+ Software Foundation, Inc.
Written by Fred Fish @ Cygnus Support, from information published
in "UNIX System V Release 4, Programmers Guide: ANSI C and
@@ -118,6 +118,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define elf_add_dynamic_entry NAME(bfd_elf,add_dynamic_entry)
#define elf_write_shdrs_and_ehdr NAME(bfd_elf,write_shdrs_and_ehdr)
#define elf_write_out_phdrs NAME(bfd_elf,write_out_phdrs)
+#define elf_write_relocs NAME(bfd_elf,write_relocs)
+#define elf_slurp_reloc_table NAME(bfd_elf,slurp_reloc_table)
#define elf_link_create_dynamic_sections \
NAME(bfd_elf,link_create_dynamic_sections)
#define elf_link_record_dynamic_symbol _bfd_elf_link_record_dynamic_symbol
@@ -165,13 +167,9 @@ static void elf_swap_shdr_out
#define section_from_elf_index bfd_section_from_elf_index
-static boolean elf_slurp_reloc_table_from_section
+static boolean elf_slurp_reloc_table_from_section
PARAMS ((bfd *, asection *, Elf_Internal_Shdr *, bfd_size_type,
arelent *, asymbol **, boolean));
-static boolean elf_slurp_reloc_table
- PARAMS ((bfd *, asection *, asymbol **, boolean));
-
-static void write_relocs PARAMS ((bfd *, asection *, PTR));
static boolean elf_file_p PARAMS ((Elf_External_Ehdr *));
@@ -199,7 +197,7 @@ static char *elf_symbol_flags PARAMS ((flagword));
#endif
/* Translate an ELF symbol in external format into an ELF symbol in internal
- format. */
+ format. */
void
elf_swap_symbol_in (abfd, src, dst)
@@ -221,7 +219,7 @@ elf_swap_symbol_in (abfd, src, dst)
}
/* Translate an ELF symbol in internal format into an ELF symbol in external
- format. */
+ format. */
void
elf_swap_symbol_out (abfd, src, cdst)
@@ -238,9 +236,8 @@ elf_swap_symbol_out (abfd, src, cdst)
bfd_h_put_16 (abfd, src->st_shndx, dst->st_shndx);
}
-
/* Translate an ELF file header in external format into an ELF file header in
- internal format. */
+ internal format. */
static void
elf_swap_ehdr_in (abfd, src, dst)
@@ -248,11 +245,15 @@ elf_swap_ehdr_in (abfd, src, dst)
const Elf_External_Ehdr *src;
Elf_Internal_Ehdr *dst;
{
+ int signed_vma = get_elf_backend_data (abfd)->sign_extend_vma;
memcpy (dst->e_ident, src->e_ident, EI_NIDENT);
dst->e_type = bfd_h_get_16 (abfd, (bfd_byte *) src->e_type);
dst->e_machine = bfd_h_get_16 (abfd, (bfd_byte *) src->e_machine);
dst->e_version = bfd_h_get_32 (abfd, (bfd_byte *) src->e_version);
- dst->e_entry = get_word (abfd, (bfd_byte *) src->e_entry);
+ if (signed_vma)
+ dst->e_entry = get_signed_word (abfd, (bfd_byte *) src->e_entry);
+ else
+ dst->e_entry = get_word (abfd, (bfd_byte *) src->e_entry);
dst->e_phoff = get_word (abfd, (bfd_byte *) src->e_phoff);
dst->e_shoff = get_word (abfd, (bfd_byte *) src->e_shoff);
dst->e_flags = bfd_h_get_32 (abfd, (bfd_byte *) src->e_flags);
@@ -265,7 +266,7 @@ elf_swap_ehdr_in (abfd, src, dst)
}
/* Translate an ELF file header in internal format into an ELF file header in
- external format. */
+ external format. */
static void
elf_swap_ehdr_out (abfd, src, dst)
@@ -273,12 +274,16 @@ elf_swap_ehdr_out (abfd, src, dst)
const Elf_Internal_Ehdr *src;
Elf_External_Ehdr *dst;
{
+ int signed_vma = get_elf_backend_data (abfd)->sign_extend_vma;
memcpy (dst->e_ident, src->e_ident, EI_NIDENT);
- /* note that all elements of dst are *arrays of unsigned char* already... */
+ /* note that all elements of dst are *arrays of unsigned char* already... */
bfd_h_put_16 (abfd, src->e_type, dst->e_type);
bfd_h_put_16 (abfd, src->e_machine, dst->e_machine);
bfd_h_put_32 (abfd, src->e_version, dst->e_version);
- put_word (abfd, src->e_entry, dst->e_entry);
+ if (signed_vma)
+ put_signed_word (abfd, src->e_entry, dst->e_entry);
+ else
+ put_word (abfd, src->e_entry, dst->e_entry);
put_word (abfd, src->e_phoff, dst->e_phoff);
put_word (abfd, src->e_shoff, dst->e_shoff);
bfd_h_put_32 (abfd, src->e_flags, dst->e_flags);
@@ -290,9 +295,8 @@ elf_swap_ehdr_out (abfd, src, dst)
bfd_h_put_16 (abfd, src->e_shstrndx, dst->e_shstrndx);
}
-
/* Translate an ELF section header table entry in external format into an
- ELF section header table entry in internal format. */
+ ELF section header table entry in internal format. */
static void
elf_swap_shdr_in (abfd, src, dst)
@@ -320,7 +324,7 @@ elf_swap_shdr_in (abfd, src, dst)
}
/* Translate an ELF section header table entry in internal format into an
- ELF section header table entry in external format. */
+ ELF section header table entry in external format. */
static void
elf_swap_shdr_out (abfd, src, dst)
@@ -328,7 +332,7 @@ elf_swap_shdr_out (abfd, src, dst)
const Elf_Internal_Shdr *src;
Elf_External_Shdr *dst;
{
- /* note that all elements of dst are *arrays of unsigned char* already... */
+ /* note that all elements of dst are *arrays of unsigned char* already... */
bfd_h_put_32 (abfd, src->sh_name, dst->sh_name);
bfd_h_put_32 (abfd, src->sh_type, dst->sh_type);
put_word (abfd, src->sh_flags, dst->sh_flags);
@@ -341,9 +345,8 @@ elf_swap_shdr_out (abfd, src, dst)
put_word (abfd, src->sh_entsize, dst->sh_entsize);
}
-
/* Translate an ELF program header table entry in external format into an
- ELF program header table entry in internal format. */
+ ELF program header table entry in internal format. */
void
elf_swap_phdr_in (abfd, src, dst)
@@ -377,7 +380,7 @@ elf_swap_phdr_out (abfd, src, dst)
const Elf_Internal_Phdr *src;
Elf_External_Phdr *dst;
{
- /* note that all elements of dst are *arrays of unsigned char* already... */
+ /* note that all elements of dst are *arrays of unsigned char* already... */
bfd_h_put_32 (abfd, src->p_type, dst->p_type);
put_word (abfd, src->p_offset, dst->p_offset);
put_word (abfd, src->p_vaddr, dst->p_vaddr);
@@ -388,7 +391,7 @@ elf_swap_phdr_out (abfd, src, dst)
put_word (abfd, src->p_align, dst->p_align);
}
-/* Translate an ELF reloc from external format to internal format. */
+/* Translate an ELF reloc from external format to internal format. */
INLINE void
elf_swap_reloc_in (abfd, src, dst)
bfd *abfd;
@@ -410,7 +413,7 @@ elf_swap_reloca_in (abfd, src, dst)
dst->r_addend = get_signed_word (abfd, (bfd_byte *) src->r_addend);
}
-/* Translate an ELF reloc from internal format to external format. */
+/* Translate an ELF reloc from internal format to external format. */
INLINE void
elf_swap_reloc_out (abfd, src, dst)
bfd *abfd;
@@ -458,7 +461,6 @@ elf_swap_dyn_out (abfd, src, p)
/* ELF .o/exec file reading */
-
/* Begin processing a given object.
First we validate the file by reading in the ELF header and checking
@@ -494,9 +496,18 @@ elf_object_p (abfd)
char *shstrtab; /* Internal copy of section header stringtab */
struct elf_backend_data *ebd;
struct elf_obj_tdata *preserved_tdata = elf_tdata (abfd);
+ struct sec *preserved_sections = abfd->sections;
+ unsigned int preserved_section_count = abfd->section_count;
+ enum bfd_architecture previous_arch = bfd_get_arch (abfd);
+ unsigned long previous_mach = bfd_get_mach (abfd);
struct elf_obj_tdata *new_tdata = NULL;
asection *s;
+ /* Clear section information, since there might be a recognized bfd that
+ we now check if we can replace, and we don't want to append to it. */
+ abfd->sections = NULL;
+ abfd->section_count = 0;
+
/* Read in the ELF header in external format. */
if (bfd_read ((PTR) & x_ehdr, sizeof (x_ehdr), 1, abfd) != sizeof (x_ehdr))
@@ -511,7 +522,7 @@ elf_object_p (abfd)
make use of. The magic number must match, the address size ('class')
and byte-swapping must match our XVEC entry, and it must have a
section header table (FIXME: See comments re sections at top of this
- file). */
+ file). */
if ((elf_file_p (&x_ehdr) == false) ||
(x_ehdr.e_ident[EI_VERSION] != EV_CURRENT) ||
@@ -554,13 +565,13 @@ elf_object_p (abfd)
if (i_ehdrp->e_type == ET_CORE)
goto got_wrong_format_error;
- /* If there is no section header table, we're hosed. */
+ /* If there is no section header table, we're hosed. */
if (i_ehdrp->e_shoff == 0)
goto got_wrong_format_error;
/* As a simple sanity check, verify that the what BFD thinks is the
size of each section header table entry actually matches the size
- recorded in the file. */
+ recorded in the file. */
if (i_ehdrp->e_shentsize != sizeof (x_shdr))
goto got_wrong_format_error;
@@ -614,8 +625,8 @@ elf_object_p (abfd)
goto got_no_match;
}
- /* Remember the entry point specified in the ELF file header. */
- bfd_get_start_address (abfd) = i_ehdrp->e_entry;
+ /* Remember the entry point specified in the ELF file header. */
+ bfd_set_start_address (abfd, i_ehdrp->e_entry);
/* Allocate space for a copy of the section header table in
internal form, seek to the section header table in the file,
@@ -680,7 +691,7 @@ elf_object_p (abfd)
}
/* Read in the string table containing the names of the sections. We
- will need the base pointer to this table later. */
+ will need the base pointer to this table later. */
/* We read this inline now, so that we don't have to go through
bfd_section_from_shdr with it (since this particular strtab is
used to find all of the ELF section names.) */
@@ -729,6 +740,16 @@ elf_object_p (abfd)
return (abfd->xvec);
got_wrong_format_error:
+ /* There is way too much undoing of half-known state here. The caller,
+ bfd_check_format_matches, really shouldn't iterate on live bfd's to
+ check match/no-match like it does. We have to rely on that a call to
+ bfd_default_set_arch_mach with the previously known mach, undoes what
+ was done by the first bfd_default_set_arch_mach (with mach 0) here.
+ For this to work, only elf-data and the mach may be changed by the
+ target-specific elf_backend_object_p function. Note that saving the
+ whole bfd here and restoring it would be even worse; the first thing
+ you notice is that the cached bfd file position gets out of sync. */
+ bfd_default_set_arch_mach (abfd, previous_arch, previous_mach);
bfd_set_error (bfd_error_wrong_format);
got_no_match:
if (new_tdata != NULL
@@ -739,6 +760,8 @@ elf_object_p (abfd)
if (new_tdata != NULL)
bfd_release (abfd, new_tdata);
elf_tdata (abfd) = preserved_tdata;
+ abfd->sections = preserved_sections;
+ abfd->section_count = preserved_section_count;
return (NULL);
}
@@ -746,8 +769,8 @@ elf_object_p (abfd)
/* Write out the relocs. */
-static void
-write_relocs (abfd, sec, data)
+void
+elf_write_relocs (abfd, sec, data)
bfd *abfd;
asection *sec;
PTR data;
@@ -795,7 +818,7 @@ write_relocs (abfd, sec, data)
SHT_REL section. */
abort ();
- /* orelocation has the data, reloc_count has the count... */
+ /* orelocation has the data, reloc_count has the count... */
if (use_rela_p)
{
outbound_relocas = (Elf_External_Rela *) rela_hdr->contents;
@@ -941,7 +964,7 @@ elf_write_shdrs_and_ehdr (abfd)
i_ehdrp = elf_elfheader (abfd);
i_shdrp = elf_elfsections (abfd);
- /* swap the header before spitting it out... */
+ /* swap the header before spitting it out... */
#if DEBUG & 1
elf_debug_file (i_ehdrp);
@@ -952,7 +975,7 @@ elf_write_shdrs_and_ehdr (abfd)
!= sizeof (x_ehdr)))
return false;
- /* at this point we've concocted all the ELF sections... */
+ /* at this point we've concocted all the ELF sections... */
x_shdrp = (Elf_External_Shdr *)
bfd_alloc (abfd, sizeof (*x_shdrp) * (i_ehdrp->e_shnum));
if (!x_shdrp)
@@ -970,7 +993,7 @@ elf_write_shdrs_and_ehdr (abfd)
!= sizeof (*x_shdrp) * i_ehdrp->e_shnum))
return false;
- /* need to dump the string table too... */
+ /* need to dump the string table too... */
return true;
}
@@ -998,7 +1021,7 @@ elf_slurp_symbol_table (abfd, symptrs, dynamic)
based on a one-to-one mapping of the ELF symbols to canonical
symbols. We actually use all the ELF symbols, so there will be no
space left over at the end. When we have all the symbols, we
- build the caller's pointer vector. */
+ build the caller's pointer vector. */
if (! dynamic)
{
@@ -1226,7 +1249,7 @@ error_return:
return -1;
}
-/* Read relocations for ASECT from REL_HDR. There are RELOC_COUNT of
+/* Read relocations for ASECT from REL_HDR. There are RELOC_COUNT of
them. */
static boolean
@@ -1325,7 +1348,7 @@ elf_slurp_reloc_table_from_section (abfd, asect, rel_hdr, reloc_count,
/* Read in and swap the external relocs. */
-static boolean
+boolean
elf_slurp_reloc_table (abfd, asect, symbols, dynamic)
bfd *abfd;
asection *asect;
@@ -1351,7 +1374,7 @@ elf_slurp_reloc_table (abfd, asect, symbols, dynamic)
rel_hdr = &d->rel_hdr;
reloc_count = rel_hdr->sh_size / rel_hdr->sh_entsize;
rel_hdr2 = d->rel_hdr2;
- reloc_count2 = (rel_hdr2
+ reloc_count2 = (rel_hdr2
? (rel_hdr2->sh_size / rel_hdr2->sh_entsize)
: 0);
@@ -1375,8 +1398,8 @@ elf_slurp_reloc_table (abfd, asect, symbols, dynamic)
reloc_count2 = 0;
}
- relents = ((arelent *)
- bfd_alloc (abfd,
+ relents = ((arelent *)
+ bfd_alloc (abfd,
(reloc_count + reloc_count2) * sizeof (arelent)));
if (relents == NULL)
return false;
@@ -1386,15 +1409,14 @@ elf_slurp_reloc_table (abfd, asect, symbols, dynamic)
relents,
symbols, dynamic))
return false;
-
- if (rel_hdr2
+
+ if (rel_hdr2
&& !elf_slurp_reloc_table_from_section (abfd, asect,
rel_hdr2, reloc_count2,
relents + reloc_count,
symbols, dynamic))
return false;
-
asect->relocation = relents;
return true;
}
@@ -1527,13 +1549,13 @@ const struct elf_size_info NAME(_bfd_elf,size_info) = {
sizeof (Elf_External_Sym),
sizeof (Elf_External_Dyn),
sizeof (Elf_External_Note),
- ARCH_SIZE / 8,
+ 4,
1,
ARCH_SIZE, FILE_ALIGN,
ELFCLASS, EV_CURRENT,
elf_write_out_phdrs,
elf_write_shdrs_and_ehdr,
- write_relocs,
+ elf_write_relocs,
elf_swap_symbol_out,
elf_slurp_reloc_table,
elf_slurp_symbol_table,
diff --git a/contrib/binutils/bfd/elfcore.h b/contrib/binutils/bfd/elfcore.h
index e4454aa..2c99e8b 100644
--- a/contrib/binutils/bfd/elfcore.h
+++ b/contrib/binutils/bfd/elfcore.h
@@ -17,7 +17,6 @@ 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. */
-
char*
elf_core_file_failing_command (abfd)
bfd *abfd;
@@ -32,7 +31,6 @@ elf_core_file_failing_signal (abfd)
return elf_tdata (abfd)->core_signal;
}
-
boolean
elf_core_file_matches_executable_p (core_bfd, exec_bfd)
bfd *core_bfd;
@@ -40,7 +38,7 @@ elf_core_file_matches_executable_p (core_bfd, exec_bfd)
{
char* corename;
- /* xvecs must match if both are ELF files for the same target. */
+ /* xvecs must match if both are ELF files for the same target. */
if (core_bfd->xvec != exec_bfd->xvec)
{
@@ -48,7 +46,7 @@ elf_core_file_matches_executable_p (core_bfd, exec_bfd)
return false;
}
- /* See if the name in the corefile matches the executable name. */
+ /* See if the name in the corefile matches the executable name. */
corename = elf_tdata (core_bfd)->core_program;
if (corename != NULL)
@@ -63,7 +61,6 @@ elf_core_file_matches_executable_p (core_bfd, exec_bfd)
return true;
}
-
/* Core files are simply standard ELF formatted files that partition
the file using the execution view of the file (program header table)
rather than the linking view. In fact, there is no section header
@@ -83,9 +80,11 @@ elf_core_file_p (abfd)
{
Elf_External_Ehdr x_ehdr; /* Elf file header, external form */
Elf_Internal_Ehdr *i_ehdrp; /* Elf file header, internal form */
- Elf_Internal_Phdr *i_phdrp; /* Elf program header, internal form */
+ Elf_Internal_Phdr *i_phdrp = NULL; /* Elf program header, internal form */
unsigned int phindex;
struct elf_backend_data *ebd;
+ struct elf_obj_tdata *preserved_tdata = elf_tdata (abfd);
+ struct elf_obj_tdata *new_tdata = NULL;
/* Read in the ELF header in external format. */
if (bfd_read ((PTR) & x_ehdr, sizeof (x_ehdr), 1, abfd) != sizeof (x_ehdr))
@@ -95,21 +94,17 @@ elf_core_file_p (abfd)
return NULL;
}
- /* Check the magic number. */
+ /* Check the magic number. */
if (elf_file_p (&x_ehdr) == false)
- {
- wrong:
- bfd_set_error (bfd_error_wrong_format);
- return NULL;
- }
+ goto wrong;
/* FIXME: Check EI_VERSION here ! */
- /* Check the address size ("class"). */
+ /* Check the address size ("class"). */
if (x_ehdr.e_ident[EI_CLASS] != ELFCLASS)
goto wrong;
- /* Check the byteorder. */
+ /* Check the byteorder. */
switch (x_ehdr.e_ident[EI_DATA])
{
case ELFDATA2MSB: /* Big-endian */
@@ -124,15 +119,14 @@ elf_core_file_p (abfd)
goto wrong;
}
- /* Give abfd an elf_obj_tdata. */
- elf_tdata (abfd) =
+ /* Give abfd an elf_obj_tdata. */
+ new_tdata =
(struct elf_obj_tdata *) bfd_zalloc (abfd, sizeof (struct elf_obj_tdata));
- if (elf_tdata (abfd) == NULL)
+ if (new_tdata == NULL)
return NULL;
+ elf_tdata (abfd) = new_tdata;
- /* FIXME: from here on down, "goto wrong" will leak memory. */
-
- /* Swap in the rest of the header, now that we have the byte order. */
+ /* Swap in the rest of the header, now that we have the byte order. */
i_ehdrp = elf_elfheader (abfd);
elf_swap_ehdr_in (abfd, &x_ehdr, i_ehdrp);
@@ -176,7 +170,7 @@ elf_core_file_p (abfd)
}
/* If there is no program header, or the type is not a core file, then
- we are hosed. */
+ we are hosed. */
if (i_ehdrp->e_phoff == 0 || i_ehdrp->e_type != ET_CORE)
goto wrong;
@@ -185,42 +179,64 @@ elf_core_file_p (abfd)
if (i_ehdrp->e_phentsize != sizeof (Elf_External_Phdr))
goto wrong;
- /* Allocate space for the program headers. */
+ /* Move to the start of the program headers. */
+ if (bfd_seek (abfd, i_ehdrp->e_phoff, SEEK_SET) != 0)
+ goto wrong;
+
+ /* Allocate space for the program headers. */
i_phdrp = (Elf_Internal_Phdr *)
bfd_alloc (abfd, sizeof (*i_phdrp) * i_ehdrp->e_phnum);
if (!i_phdrp)
- return NULL;
+ goto fail;
elf_tdata (abfd)->phdr = i_phdrp;
- /* Read and convert to internal form. */
+ /* Read and convert to internal form. */
for (phindex = 0; phindex < i_ehdrp->e_phnum; ++phindex)
{
Elf_External_Phdr x_phdr;
if (bfd_read ((PTR) &x_phdr, sizeof (x_phdr), 1, abfd)
!= sizeof (x_phdr))
- return NULL;
+ goto fail;
elf_swap_phdr_in (abfd, &x_phdr, i_phdrp + phindex);
}
- /* Process each program header. */
+ /* Process each program header. */
for (phindex = 0; phindex < i_ehdrp->e_phnum; ++phindex)
{
if (!_bfd_elfcore_section_from_phdr (abfd, i_phdrp + phindex, phindex))
- return NULL;
+ goto fail;
}
- /* Set the machine architecture. */
+ /* Set the machine architecture. */
if (! bfd_default_set_arch_mach (abfd, ebd->arch, 0))
{
/* It's OK if this fails for the generic target. */
if (ebd->elf_machine_code != EM_NONE)
- return NULL;
+ goto fail;
}
- /* Save the entry point from the ELF header. */
+ /* Save the entry point from the ELF header. */
bfd_get_start_address (abfd) = i_ehdrp->e_entry;
+ /* Let the backend double check the format and override global
+ information. */
+ if (ebd->elf_backend_object_p)
+ {
+ if ((*ebd->elf_backend_object_p) (abfd) == false)
+ goto wrong;
+ }
+
return abfd->xvec;
+
+wrong:
+ bfd_set_error (bfd_error_wrong_format);
+fail:
+ if (i_phdrp != NULL)
+ bfd_release (abfd, i_phdrp);
+ if (new_tdata != NULL)
+ bfd_release (abfd, new_tdata);
+ elf_tdata (abfd) = preserved_tdata;
+ return NULL;
}
diff --git a/contrib/binutils/bfd/elflink.c b/contrib/binutils/bfd/elflink.c
index 8039b4f..bfaf44b 100644
--- a/contrib/binutils/bfd/elflink.c
+++ b/contrib/binutils/bfd/elflink.c
@@ -41,9 +41,17 @@ _bfd_elf_create_got_section (abfd, info)
switch (bed->s->arch_size)
{
- case 32: ptralign = 2; break;
- case 64: ptralign = 3; break;
- default: abort();
+ case 32:
+ ptralign = 2;
+ break;
+
+ case 64:
+ ptralign = 3;
+ break;
+
+ default:
+ bfd_set_error (bfd_error_bad_value);
+ return false;
}
flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
@@ -89,7 +97,6 @@ _bfd_elf_create_got_section (abfd, info)
return true;
}
-
/* Create dynamic sections when linking against a dynamic object. */
boolean
@@ -104,9 +111,17 @@ _bfd_elf_create_dynamic_sections (abfd, info)
switch (bed->s->arch_size)
{
- case 32: ptralign = 2; break;
- case 64: ptralign = 3; break;
- default: abort();
+ case 32:
+ ptralign = 2;
+ break;
+
+ case 64:
+ ptralign = 3;
+ break;
+
+ default:
+ bfd_set_error (bfd_error_bad_value);
+ return false;
}
/* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and
@@ -147,7 +162,7 @@ _bfd_elf_create_dynamic_sections (abfd, info)
return false;
}
- s = bfd_make_section (abfd,
+ s = bfd_make_section (abfd,
bed->default_use_rela_p ? ".rela.plt" : ".rel.plt");
if (s == NULL
|| ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
@@ -183,9 +198,9 @@ _bfd_elf_create_dynamic_sections (abfd, info)
copy relocs. */
if (! info->shared)
{
- s = bfd_make_section (abfd,
- (bed->default_use_rela_p
- ? ".rela.bss" : ".rel.bss"));
+ s = bfd_make_section (abfd,
+ (bed->default_use_rela_p
+ ? ".rela.bss" : ".rel.bss"));
if (s == NULL
|| ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
|| ! bfd_set_section_alignment (abfd, s, ptralign))
@@ -196,7 +211,6 @@ _bfd_elf_create_dynamic_sections (abfd, info)
return true;
}
-
/* Record a new dynamic symbol. We record the dynamic symbols as we
read the input files, since we need to have a list of all of them
before we can determine the final sizes of the output sections.
@@ -482,7 +496,6 @@ _bfd_elf_create_linker_section (abfd, info, which, defaults)
return lsect;
}
-
/* Find a linker generated pointer with a given addend and type. */
@@ -500,7 +513,6 @@ _bfd_elf_find_pointer_linker_section (linker_pointers, addend, which)
return (elf_linker_section_pointers_t *)0;
}
-
/* Make the .rela section corresponding to the generated linker section. */
diff --git a/contrib/binutils/bfd/elflink.h b/contrib/binutils/bfd/elflink.h
index 0230892..d3b44e8 100644
--- a/contrib/binutils/bfd/elflink.h
+++ b/contrib/binutils/bfd/elflink.h
@@ -35,7 +35,7 @@ static boolean elf_link_add_archive_symbols
static boolean elf_merge_symbol
PARAMS ((bfd *, struct bfd_link_info *, const char *, Elf_Internal_Sym *,
asection **, bfd_vma *, struct elf_link_hash_entry **,
- boolean *, boolean *, boolean *));
+ boolean *, boolean *, boolean *, boolean));
static boolean elf_export_symbol
PARAMS ((struct elf_link_hash_entry *, PTR));
static boolean elf_fix_symbol_flags
@@ -50,14 +50,14 @@ static boolean elf_link_assign_sym_version
PARAMS ((struct elf_link_hash_entry *, PTR));
static boolean elf_collect_hash_codes
PARAMS ((struct elf_link_hash_entry *, PTR));
-static boolean elf_link_read_relocs_from_section
+static boolean elf_link_read_relocs_from_section
PARAMS ((bfd *, Elf_Internal_Shdr *, PTR, Elf_Internal_Rela *));
static void elf_link_output_relocs
PARAMS ((bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *));
static boolean elf_link_size_reloc_section
PARAMS ((bfd *, Elf_Internal_Shdr *, asection *));
-static void elf_link_adjust_relocs
- PARAMS ((bfd *, Elf_Internal_Shdr *, unsigned int,
+static void elf_link_adjust_relocs
+ PARAMS ((bfd *, Elf_Internal_Shdr *, unsigned int,
struct elf_link_hash_entry **));
/* Given an ELF BFD, add symbols to the global hash table as
@@ -94,7 +94,7 @@ is_global_symbol_definition (abfd, sym)
/* If the section is undefined, then so is the symbol. */
if (sym->st_shndx == SHN_UNDEF)
return false;
-
+
/* If the symbol is defined in the common section, then
it is a common definition and so does not count. */
if (sym->st_shndx == SHN_COMMON)
@@ -104,18 +104,17 @@ is_global_symbol_definition (abfd, sym)
must rely upon the backend to tell us what it is. */
if (sym->st_shndx >= SHN_LORESERVE && sym->st_shndx < SHN_ABS)
/* FIXME - this function is not coded yet:
-
+
return _bfd_is_global_symbol_definition (abfd, sym);
-
+
Instead for now assume that the definition is not global,
Even if this is wrong, at least the linker will behave
in the same way that it used to do. */
return false;
-
+
return true;
}
-
/* Search the symbol table of the archive element of the archive ABFD
whoes archove map contains a mention of SYMDEF, and determine if
the symbol is defined in this element. */
@@ -132,7 +131,7 @@ elf_link_is_defined_archive_symbol (abfd, symdef)
size_t extsymcount;
size_t extsymoff;
boolean result = false;
-
+
abfd = _bfd_get_elt_at_filepos (abfd, symdef->file_offset);
if (abfd == (bfd *) NULL)
return false;
@@ -146,7 +145,7 @@ elf_link_is_defined_archive_symbol (abfd, symdef)
(re)include this element. */
if (abfd->archive_pass)
return false;
-
+
/* Select the appropriate symbol table. */
if ((abfd->flags & DYNAMIC) == 0 || elf_dynsymtab (abfd) == 0)
hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -208,11 +207,10 @@ elf_link_is_defined_archive_symbol (abfd, symdef)
}
free (buf);
-
+
return result;
}
-
/* Add symbols from an ELF archive file to the linker hash table. We
don't use _bfd_generic_link_add_archive_symbols because of a
problem which arises on UnixWare. The UnixWare libc.so is an
@@ -357,7 +355,6 @@ elf_link_add_archive_symbols (abfd, info)
}
/* We need to include this archive member. */
-
element = _bfd_get_elt_at_filepos (abfd, symdef->file_offset);
if (element == (bfd *) NULL)
goto error_return;
@@ -434,11 +431,12 @@ elf_link_add_archive_symbols (abfd, info)
TYPE_CHANGE_OK if it is OK for the type to change. We set
SIZE_CHANGE_OK if it is OK for the size to change. By OK to
change, we mean that we shouldn't warn if the type or size does
- change. */
+ change. DT_NEEDED indicates if it comes from a DT_NEEDED entry of
+ a shared object. */
static boolean
elf_merge_symbol (abfd, info, name, sym, psec, pvalue, sym_hash,
- override, type_change_ok, size_change_ok)
+ override, type_change_ok, size_change_ok, dt_needed)
bfd *abfd;
struct bfd_link_info *info;
const char *name;
@@ -449,6 +447,7 @@ elf_merge_symbol (abfd, info, name, sym, psec, pvalue, sym_hash,
boolean *override;
boolean *type_change_ok;
boolean *size_change_ok;
+ boolean dt_needed;
{
asection *sec;
struct elf_link_hash_entry *h;
@@ -625,9 +624,11 @@ elf_merge_symbol (abfd, info, name, sym, psec, pvalue, sym_hash,
olddyncommon = false;
/* It's OK to change the type if either the existing symbol or the
- new symbol is weak. */
+ new symbol is weak unless it comes from a DT_NEEDED entry of
+ a shared object, in which case, the DT_NEEDED entry may not be
+ required at the run time. */
- if (h->root.type == bfd_link_hash_defweak
+ if ((! dt_needed && h->root.type == bfd_link_hash_defweak)
|| h->root.type == bfd_link_hash_undefweak
|| bind == STB_WEAK)
*type_change_ok = true;
@@ -679,7 +680,9 @@ elf_merge_symbol (abfd, info, name, sym, psec, pvalue, sym_hash,
object to override a weak symbol in a shared object.
We prefer a non-weak definition in a shared library to a weak
- definition in the executable. */
+ definition in the executable unless it comes from a DT_NEEDED
+ entry of a shared object, in which case, the DT_NEEDED entry
+ may not be required at the run time. */
if (newdyn
&& newdef
@@ -688,6 +691,7 @@ elf_merge_symbol (abfd, info, name, sym, psec, pvalue, sym_hash,
&& (bind == STB_WEAK
|| ELF_ST_TYPE (sym->st_info) == STT_FUNC)))
&& (h->root.type != bfd_link_hash_defweak
+ || dt_needed
|| bind == STB_WEAK))
{
*override = true;
@@ -822,8 +826,11 @@ elf_merge_symbol (abfd, info, name, sym, psec, pvalue, sym_hash,
/* Handle the special case of a weak definition in a regular object
followed by a non-weak definition in a shared object. In this
- case, we prefer the definition in the shared object. */
+ case, we prefer the definition in the shared object unless it
+ comes from a DT_NEEDED entry of a shared object, in which case,
+ the DT_NEEDED entry may not be required at the run time. */
if (olddef
+ && ! dt_needed
&& h->root.type == bfd_link_hash_defweak
&& newdef
&& newdyn
@@ -891,6 +898,7 @@ elf_link_add_object_symbols (abfd, info)
Elf_External_Sym *esym;
Elf_External_Sym *esymend;
struct elf_backend_data *bed;
+ boolean dt_needed;
bed = get_elf_backend_data (abfd);
add_symbol_hook = bed->elf_add_symbol_hook;
@@ -1050,6 +1058,8 @@ elf_link_add_object_symbols (abfd, info)
goto error_return;
elf_sym_hashes (abfd) = sym_hash;
+ dt_needed = false;
+
if (! dynamic)
{
/* If we are creating a shared library, create all the dynamic
@@ -1086,7 +1096,12 @@ elf_link_add_object_symbols (abfd, info)
{
name = elf_dt_name (abfd);
if (*name == '\0')
- add_needed = false;
+ {
+ if (elf_dt_soname (abfd) != NULL)
+ dt_needed = true;
+
+ add_needed = false;
+ }
}
s = bfd_get_section_by_name (abfd, ".dynamic");
if (s != NULL)
@@ -1095,6 +1110,8 @@ elf_link_add_object_symbols (abfd, info)
Elf_External_Dyn *extdynend;
int elfsec;
unsigned long link;
+ int rpath;
+ int runpath;
dynbuf = (Elf_External_Dyn *) bfd_malloc ((size_t) s->_raw_size);
if (dynbuf == NULL)
@@ -1128,6 +1145,8 @@ elf_link_add_object_symbols (abfd, info)
extdyn = dynbuf;
extdynend = extdyn + s->_raw_size / sizeof (Elf_External_Dyn);
+ rpath = 0;
+ runpath = 0;
for (; extdyn < extdynend; extdyn++)
{
Elf_Internal_Dyn dyn;
@@ -1164,6 +1183,65 @@ elf_link_add_object_symbols (abfd, info)
;
*pn = n;
}
+ if (dyn.d_tag == DT_RUNPATH)
+ {
+ struct bfd_link_needed_list *n, **pn;
+ char *fnm, *anm;
+
+ /* When we see DT_RPATH before DT_RUNPATH, we have
+ to clear runpath. Do _NOT_ bfd_release, as that
+ frees all more recently bfd_alloc'd blocks as
+ well. */
+ if (rpath && elf_hash_table (info)->runpath)
+ elf_hash_table (info)->runpath = NULL;
+
+ n = ((struct bfd_link_needed_list *)
+ bfd_alloc (abfd, sizeof (struct bfd_link_needed_list)));
+ fnm = bfd_elf_string_from_elf_section (abfd, link,
+ dyn.d_un.d_val);
+ if (n == NULL || fnm == NULL)
+ goto error_return;
+ anm = bfd_alloc (abfd, strlen (fnm) + 1);
+ if (anm == NULL)
+ goto error_return;
+ strcpy (anm, fnm);
+ n->name = anm;
+ n->by = abfd;
+ n->next = NULL;
+ for (pn = &elf_hash_table (info)->runpath;
+ *pn != NULL;
+ pn = &(*pn)->next)
+ ;
+ *pn = n;
+ runpath = 1;
+ rpath = 0;
+ }
+ /* Ignore DT_RPATH if we have seen DT_RUNPATH. */
+ if (!runpath && dyn.d_tag == DT_RPATH)
+ {
+ struct bfd_link_needed_list *n, **pn;
+ char *fnm, *anm;
+
+ n = ((struct bfd_link_needed_list *)
+ bfd_alloc (abfd, sizeof (struct bfd_link_needed_list)));
+ fnm = bfd_elf_string_from_elf_section (abfd, link,
+ dyn.d_un.d_val);
+ if (n == NULL || fnm == NULL)
+ goto error_return;
+ anm = bfd_alloc (abfd, strlen (fnm) + 1);
+ if (anm == NULL)
+ goto error_return;
+ strcpy (anm, fnm);
+ n->name = anm;
+ n->by = abfd;
+ n->next = NULL;
+ for (pn = &elf_hash_table (info)->runpath;
+ *pn != NULL;
+ pn = &(*pn)->next)
+ ;
+ *pn = n;
+ rpath = 1;
+ }
}
free (dynbuf);
@@ -1291,8 +1369,6 @@ elf_link_add_object_symbols (abfd, info)
if (sym.st_shndx != SHN_UNDEF
&& sym.st_shndx != SHN_COMMON)
flags = BSF_GLOBAL;
- else
- flags = 0;
}
else if (bind == STB_WEAK)
flags = BSF_WEAK;
@@ -1458,7 +1534,7 @@ elf_link_add_object_symbols (abfd, info)
if (! elf_merge_symbol (abfd, info, name, &sym, &sec, &value,
sym_hash, &override, &type_change_ok,
- &size_change_ok))
+ &size_change_ok, dt_needed))
goto error_return;
if (override)
@@ -1527,7 +1603,10 @@ elf_link_add_object_symbols (abfd, info)
unsigned int align;
align = bfd_log2 (sym.st_value);
- if (align > old_alignment)
+ if (align > old_alignment
+ /* Permit an alignment power of zero if an alignment of one
+ is specified and no other alignments have been specified. */
+ || (sym.st_value == 1 && old_alignment == 0))
h->root.u.c.p->alignment_power = align;
}
@@ -1579,10 +1658,10 @@ elf_link_add_object_symbols (abfd, info)
/* Combine visibilities, using the most constraining one. */
unsigned char hvis = ELF_ST_VISIBILITY (h->other);
unsigned char symvis = ELF_ST_VISIBILITY (sym.st_other);
-
+
if (symvis && (hvis > symvis || hvis == 0))
h->other = sym.st_other;
-
+
/* If neither has visibility, use the st_other of the
definition. This is an arbitrary choice, since the
other bits have no general meaning. */
@@ -1634,7 +1713,7 @@ elf_link_add_object_symbols (abfd, info)
name to the fully decorated name. This will cause
external references which do not specify a version to be
bound to this version of the symbol. */
- if (definition)
+ if (definition || h->root.type == bfd_link_hash_common)
{
char *p;
@@ -1661,7 +1740,8 @@ elf_link_add_object_symbols (abfd, info)
size_change_ok = false;
if (! elf_merge_symbol (abfd, info, shortname, &sym, &sec,
&value, &hi, &override,
- &type_change_ok, &size_change_ok))
+ &type_change_ok,
+ &size_change_ok, dt_needed))
goto error_return;
if (! override)
@@ -1778,7 +1858,8 @@ elf_link_add_object_symbols (abfd, info)
size_change_ok = false;
if (! elf_merge_symbol (abfd, info, shortname, &sym, &sec,
&value, &hi, &override,
- &type_change_ok, &size_change_ok))
+ &type_change_ok,
+ &size_change_ok, dt_needed))
goto error_return;
if (override)
@@ -1859,11 +1940,58 @@ elf_link_add_object_symbols (abfd, info)
switch (ELF_ST_VISIBILITY (h->other))
{
case STV_INTERNAL:
- case STV_HIDDEN:
+ case STV_HIDDEN:
h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL;
- (*bed->elf_backend_hide_symbol) (h);
+ (*bed->elf_backend_hide_symbol) (info, h);
break;
}
+
+ if (dt_needed && definition
+ && (h->elf_link_hash_flags
+ & ELF_LINK_HASH_REF_REGULAR) != 0)
+ {
+ bfd_size_type oldsize;
+ bfd_size_type strindex;
+
+ /* The symbol from a DT_NEEDED object is referenced from
+ the regular object to create a dynamic executable. We
+ have to make sure there is a DT_NEEDED entry for it. */
+
+ dt_needed = false;
+ oldsize = _bfd_stringtab_size (elf_hash_table (info)->dynstr);
+ strindex = _bfd_stringtab_add (elf_hash_table (info)->dynstr,
+ elf_dt_soname (abfd),
+ true, false);
+ if (strindex == (bfd_size_type) -1)
+ goto error_return;
+
+ if (oldsize
+ == _bfd_stringtab_size (elf_hash_table (info)->dynstr))
+ {
+ asection *sdyn;
+ Elf_External_Dyn *dyncon, *dynconend;
+
+ sdyn = bfd_get_section_by_name (elf_hash_table (info)->dynobj,
+ ".dynamic");
+ BFD_ASSERT (sdyn != NULL);
+
+ dyncon = (Elf_External_Dyn *) sdyn->contents;
+ dynconend = (Elf_External_Dyn *) (sdyn->contents +
+ sdyn->_raw_size);
+ for (; dyncon < dynconend; dyncon++)
+ {
+ Elf_Internal_Dyn dyn;
+
+ elf_swap_dyn_in (elf_hash_table (info)->dynobj,
+ dyncon, &dyn);
+ BFD_ASSERT (dyn.d_tag != DT_NEEDED ||
+ dyn.d_un.d_val != strindex);
+ }
+ }
+
+ if (! elf_add_dynamic_entry (info, DT_NEEDED, strindex))
+ goto error_return;
+ }
}
}
@@ -2280,7 +2408,6 @@ elf_link_record_local_dynamic_symbol (info, input_bfd, input_indx)
return true;
}
-
/* Read and swap the relocs from the section indicated by SHDR. This
may be either a REL or a RELA section. The relocations are
translated into RELA relocations and stored in INTERNAL_RELOCS,
@@ -2404,7 +2531,7 @@ NAME(_bfd_elf,link_read_relocs) (abfd, o, external_relocs, internal_relocs,
{
size_t size;
- size = (o->reloc_count * bed->s->int_rels_per_ext_rel
+ size = (o->reloc_count * bed->s->int_rels_per_ext_rel
* sizeof (Elf_Internal_Rela));
if (keep_memory)
internal_relocs = (Elf_Internal_Rela *) bfd_alloc (abfd, size);
@@ -2430,8 +2557,8 @@ NAME(_bfd_elf,link_read_relocs) (abfd, o, external_relocs, internal_relocs,
external_relocs,
internal_relocs))
goto error_return;
- if (!elf_link_read_relocs_from_section
- (abfd,
+ if (!elf_link_read_relocs_from_section
+ (abfd,
elf_section_data (o)->rel_hdr2,
((bfd_byte *) external_relocs) + rel_hdr->sh_size,
internal_relocs + (rel_hdr->sh_size / rel_hdr->sh_entsize
@@ -2458,7 +2585,6 @@ NAME(_bfd_elf,link_read_relocs) (abfd, o, external_relocs, internal_relocs,
return NULL;
}
-
/* Record an assignment to a symbol made by a linker script. We need
this in case some dynamic object refers to this symbol. */
@@ -2765,7 +2891,7 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
{
struct elf_info_failed eif;
struct elf_link_hash_entry *h;
- bfd_size_type strsize;
+ asection *dynstr;
*sinterpptr = bfd_get_section_by_name (dynobj, ".interp");
BFD_ASSERT (*sinterpptr != NULL || info->shared);
@@ -2783,6 +2909,7 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
{
if (! elf_add_dynamic_entry (info, DT_SYMBOLIC, 0))
return false;
+ info->flags |= DF_SYMBOLIC;
}
if (rpath != NULL)
@@ -2792,7 +2919,9 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
indx = _bfd_stringtab_add (elf_hash_table (info)->dynstr, rpath,
true, true);
if (indx == (bfd_size_type) -1
- || ! elf_add_dynamic_entry (info, DT_RPATH, indx))
+ || ! elf_add_dynamic_entry (info, DT_RPATH, indx)
+ || (info->new_dtags
+ && ! elf_add_dynamic_entry (info, DT_RUNPATH, indx)))
return false;
}
@@ -2867,7 +2996,7 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
/* If there are initialization and/or finalization functions to
call then add the corresponding DT_INIT/DT_FINI entries. */
h = (info->init_function
- ? elf_link_hash_lookup (elf_hash_table (info),
+ ? elf_link_hash_lookup (elf_hash_table (info),
info->init_function, false,
false, false)
: NULL);
@@ -2879,7 +3008,7 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
return false;
}
h = (info->fini_function
- ? elf_link_hash_lookup (elf_hash_table (info),
+ ? elf_link_hash_lookup (elf_hash_table (info),
info->fini_function, false,
false, false)
: NULL);
@@ -2891,14 +3020,24 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
return false;
}
- strsize = _bfd_stringtab_size (elf_hash_table (info)->dynstr);
- if (! elf_add_dynamic_entry (info, DT_HASH, 0)
- || ! elf_add_dynamic_entry (info, DT_STRTAB, 0)
- || ! elf_add_dynamic_entry (info, DT_SYMTAB, 0)
- || ! elf_add_dynamic_entry (info, DT_STRSZ, strsize)
- || ! elf_add_dynamic_entry (info, DT_SYMENT,
- sizeof (Elf_External_Sym)))
- return false;
+ dynstr = bfd_get_section_by_name (dynobj, ".dynstr");
+ /* If .dynstr is excluded from the link, we don't want any of
+ these tags. Strictly, we should be checking each section
+ individually; This quick check covers for the case where
+ someone does a /DISCARD/ : { *(*) }. */
+ if (dynstr != NULL && dynstr->output_section != bfd_abs_section_ptr)
+ {
+ bfd_size_type strsize;
+
+ strsize = _bfd_stringtab_size (elf_hash_table (info)->dynstr);
+ if (! elf_add_dynamic_entry (info, DT_HASH, 0)
+ || ! elf_add_dynamic_entry (info, DT_STRTAB, 0)
+ || ! elf_add_dynamic_entry (info, DT_SYMTAB, 0)
+ || ! elf_add_dynamic_entry (info, DT_STRSZ, strsize)
+ || ! elf_add_dynamic_entry (info, DT_SYMENT,
+ sizeof (Elf_External_Sym)))
+ return false;
+ }
}
/* The backend must work out the sizes of all the other dynamic
@@ -2912,7 +3051,6 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
size_t dynsymcount;
asection *s;
size_t bucketcount = 0;
- Elf_Internal_Sym isym;
size_t hash_entry_size;
/* Set up the version definition section. */
@@ -3081,6 +3219,22 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
elf_tdata (output_bfd)->cverdefs = cdefs;
}
+ if (info->new_dtags && info->flags)
+ {
+ if (! elf_add_dynamic_entry (info, DT_FLAGS, info->flags))
+ return false;
+ }
+
+ if (info->flags_1)
+ {
+ if (! info->shared)
+ info->flags_1 &= ~ (DF_1_INITFIRST
+ | DF_1_NODELETE
+ | DF_1_NOOPEN);
+ if (! elf_add_dynamic_entry (info, DT_FLAGS_1, info->flags_1))
+ return false;
+ }
+
/* Work out the size of the version reference section. */
s = bfd_get_section_by_name (dynobj, ".gnu.version_r");
@@ -3191,7 +3345,7 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
}
}
- /* Assign dynsym indicies. In a shared library we generate a
+ /* Assign dynsym indicies. In a shared library we generate a
section symbol for each output section, which come first.
Next come all of the back-end allocated local dynamic syms,
followed by the rest of the global symbols. */
@@ -3233,15 +3387,20 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
if (s->contents == NULL && s->_raw_size != 0)
return false;
- /* The first entry in .dynsym is a dummy symbol. */
- isym.st_value = 0;
- isym.st_size = 0;
- isym.st_name = 0;
- isym.st_info = 0;
- isym.st_other = 0;
- isym.st_shndx = 0;
- elf_swap_symbol_out (output_bfd, &isym,
- (PTR) (Elf_External_Sym *) s->contents);
+ if (dynsymcount != 0)
+ {
+ Elf_Internal_Sym isym;
+
+ /* The first entry in .dynsym is a dummy symbol. */
+ isym.st_value = 0;
+ isym.st_size = 0;
+ isym.st_name = 0;
+ isym.st_info = 0;
+ isym.st_other = 0;
+ isym.st_shndx = 0;
+ elf_swap_symbol_out (output_bfd, &isym,
+ (PTR) (Elf_External_Sym *) s->contents);
+ }
/* Compute the size of the hashing table. As a side effect this
computes the hash values for all the names we export. */
@@ -3257,7 +3416,7 @@ NAME(bfd_elf,size_dynamic_sections) (output_bfd, soname, rpath,
memset (s->contents, 0, (size_t) s->_raw_size);
bfd_put (8 * hash_entry_size, output_bfd, bucketcount, s->contents);
- bfd_put (8 * hash_entry_size, output_bfd, dynsymcount,
+ bfd_put (8 * hash_entry_size, output_bfd, dynsymcount,
s->contents + hash_entry_size);
elf_hash_table (info)->bucketcount = bucketcount;
@@ -3290,6 +3449,9 @@ elf_fix_symbol_flags (h, eif)
an ELF dynamic object. */
if ((h->elf_link_hash_flags & ELF_LINK_NON_ELF) != 0)
{
+ while (h->root.type == bfd_link_hash_indirect)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
if (h->root.type != bfd_link_hash_defined
&& h->root.type != bfd_link_hash_defweak)
h->elf_link_hash_flags |= (ELF_LINK_HASH_REF_REGULAR
@@ -3705,7 +3867,7 @@ elf_link_assign_sym_version (h, data)
&& ! sinfo->export_dynamic)
{
h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL;
- (*bed->elf_backend_hide_symbol) (h);
+ (*bed->elf_backend_hide_symbol) (info, h);
/* FIXME: The name of the symbol has
already been recorded in the dynamic
string table section. */
@@ -3729,7 +3891,7 @@ elf_link_assign_sym_version (h, data)
int version_index;
/* If we aren't going to export this symbol, we don't need
- to worry about it. */
+ to worry about it. */
if (h->dynindx == -1)
return true;
@@ -3817,7 +3979,7 @@ elf_link_assign_sym_version (h, data)
&& ! sinfo->export_dynamic)
{
h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL;
- (*bed->elf_backend_hide_symbol) (h);
+ (*bed->elf_backend_hide_symbol) (info, h);
/* FIXME: The name of the symbol has already
been recorded in the dynamic string table
section. */
@@ -3839,7 +4001,7 @@ elf_link_assign_sym_version (h, data)
&& ! sinfo->export_dynamic)
{
h->elf_link_hash_flags |= ELF_LINK_FORCED_LOCAL;
- (*bed->elf_backend_hide_symbol) (h);
+ (*bed->elf_backend_hide_symbol) (info, h);
/* FIXME: The name of the symbol has already been
recorded in the dynamic string table section. */
}
@@ -3937,11 +4099,13 @@ elf_link_size_reloc_section (abfd, rel_hdr, o)
rel_hdr->sh_size = rel_hdr->sh_entsize * reloc_count;
/* The contents field must last into write_object_contents, so we
- allocate it with bfd_alloc rather than malloc. */
- rel_hdr->contents = (PTR) bfd_alloc (abfd, rel_hdr->sh_size);
+ allocate it with bfd_alloc rather than malloc. Also since we
+ cannot be sure that the contents will actually be filled in,
+ we zero the allocated space. */
+ rel_hdr->contents = (PTR) bfd_zalloc (abfd, rel_hdr->sh_size);
if (rel_hdr->contents == NULL && rel_hdr->sh_size != 0)
return false;
-
+
/* We only allocate one set of hash entries, so we only do it the
first time we are called. */
if (elf_section_data (o)->rel_hashes == NULL)
@@ -3974,6 +4138,7 @@ elf_link_adjust_relocs (abfd, rel_hdr, count, rel_hash)
struct elf_link_hash_entry **rel_hash;
{
unsigned int i;
+ struct elf_backend_data *bed = get_elf_backend_data (abfd);
for (i = 0; i < count; i++, rel_hash++)
{
@@ -3986,26 +4151,38 @@ elf_link_adjust_relocs (abfd, rel_hdr, count, rel_hash)
{
Elf_External_Rel *erel;
Elf_Internal_Rel irel;
-
+
erel = (Elf_External_Rel *) rel_hdr->contents + i;
- elf_swap_reloc_in (abfd, erel, &irel);
+ if (bed->s->swap_reloc_in)
+ (*bed->s->swap_reloc_in) (abfd, (bfd_byte *) erel, &irel);
+ else
+ elf_swap_reloc_in (abfd, erel, &irel);
irel.r_info = ELF_R_INFO ((*rel_hash)->indx,
ELF_R_TYPE (irel.r_info));
- elf_swap_reloc_out (abfd, &irel, erel);
+ if (bed->s->swap_reloc_out)
+ (*bed->s->swap_reloc_out) (abfd, &irel, (bfd_byte *) erel);
+ else
+ elf_swap_reloc_out (abfd, &irel, erel);
}
else
{
Elf_External_Rela *erela;
Elf_Internal_Rela irela;
-
+
BFD_ASSERT (rel_hdr->sh_entsize
== sizeof (Elf_External_Rela));
-
+
erela = (Elf_External_Rela *) rel_hdr->contents + i;
- elf_swap_reloca_in (abfd, erela, &irela);
+ if (bed->s->swap_reloca_in)
+ (*bed->s->swap_reloca_in) (abfd, (bfd_byte *) erela, &irela);
+ else
+ elf_swap_reloca_in (abfd, erela, &irela);
irela.r_info = ELF_R_INFO ((*rel_hash)->indx,
ELF_R_TYPE (irela.r_info));
- elf_swap_reloca_out (abfd, &irela, erela);
+ if (bed->s->swap_reloca_out)
+ (*bed->s->swap_reloca_out) (abfd, &irela, (bfd_byte *) erela);
+ else
+ elf_swap_reloca_out (abfd, &irela, erela);
}
}
}
@@ -4100,7 +4277,7 @@ elf_bfd_final_link (abfd, info)
the linker has decided to not include. */
sec->linker_mark = true;
- if (info->relocateable)
+ if (info->relocateable || info->emitrelocations)
o->reloc_count += sec->reloc_count;
if (sec->_raw_size > max_contents_size)
@@ -4168,7 +4345,7 @@ elf_bfd_final_link (abfd, info)
/* Figure out how many relocations we will have in each section.
Just using RELOC_COUNT isn't good enough since that doesn't
maintain a separate value for REL vs. RELA relocations. */
- if (info->relocateable)
+ if (info->relocateable || info->emitrelocations)
for (sub = info->input_bfds; sub != NULL; sub = sub->link_next)
for (o = sub->sections; o != NULL; o = o->next)
{
@@ -4185,9 +4362,9 @@ elf_bfd_final_link (abfd, info)
if (output_section != NULL
&& (o->flags & SEC_RELOC) != 0)
{
- struct bfd_elf_section_data *esdi
+ struct bfd_elf_section_data *esdi
= elf_section_data (o);
- struct bfd_elf_section_data *esdo
+ struct bfd_elf_section_data *esdo
= elf_section_data (output_section);
unsigned int *rel_count;
unsigned int *rel_count2;
@@ -4204,11 +4381,11 @@ elf_bfd_final_link (abfd, info)
rel_count = &esdo->rel_count2;
rel_count2 = &esdo->rel_count;
}
-
- *rel_count += (esdi->rel_hdr.sh_size
+
+ *rel_count += (esdi->rel_hdr.sh_size
/ esdi->rel_hdr.sh_entsize);
if (esdi->rel_hdr2)
- *rel_count2 += (esdi->rel_hdr2->sh_size
+ *rel_count2 += (esdi->rel_hdr2->sh_size
/ esdi->rel_hdr2->sh_entsize);
}
}
@@ -4232,7 +4409,7 @@ elf_bfd_final_link (abfd, info)
}
/* Now, reset REL_COUNT and REL_COUNT2 so that we can use them
- to count upwards while actually outputting the relocations. */
+ to count upwards while actually outputting the relocations. */
elf_section_data (o)->rel_count = 0;
elf_section_data (o)->rel_count2 = 0;
}
@@ -4276,7 +4453,7 @@ elf_bfd_final_link (abfd, info)
/* Start writing out the symbol table. The first symbol is always a
dummy symbol. */
- if (info->strip != strip_all || info->relocateable)
+ if (info->strip != strip_all || info->relocateable || info->emitrelocations)
{
elfsym.st_value = 0;
elfsym.st_size = 0;
@@ -4309,7 +4486,7 @@ elf_bfd_final_link (abfd, info)
symbols have no names. We store the index of each one in the
index field of the section, so that we can find it again when
outputting relocs. */
- if (info->strip != strip_all || info->relocateable)
+ if (info->strip != strip_all || info->relocateable || info->emitrelocations)
{
elfsym.st_size = 0;
elfsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION);
@@ -4411,7 +4588,7 @@ elf_bfd_final_link (abfd, info)
/* That wrote out all the local symbols. Finish up the symbol table
with the global symbols. Even if we want to strip everything we
can, we still need to deal with those global symbols that got
- converted to local in a version script. */
+ converted to local in a version script. */
if (info->shared)
{
@@ -4433,7 +4610,8 @@ elf_bfd_final_link (abfd, info)
/* The sh_info field records the index of the first non local symbol. */
symtab_hdr->sh_info = bfd_get_symcount (abfd);
- if (dynamic)
+ if (dynamic
+ && finfo.dynsym_sec->output_section != bfd_abs_section_ptr)
{
Elf_Internal_Sym sym;
Elf_External_Sym *dynsym =
@@ -4523,7 +4701,7 @@ elf_bfd_final_link (abfd, info)
Elf_Internal_Sym *, asection *)))
elf_link_output_sym))
return false;
- }
+ }
/* Flush all symbols to the file. */
if (! elf_link_flush_output_syms (&finfo))
@@ -4562,13 +4740,13 @@ elf_bfd_final_link (abfd, info)
if ((o->flags & SEC_RELOC) == 0)
continue;
- elf_link_adjust_relocs (abfd, &elf_section_data (o)->rel_hdr,
+ elf_link_adjust_relocs (abfd, &elf_section_data (o)->rel_hdr,
elf_section_data (o)->rel_count,
elf_section_data (o)->rel_hashes);
if (elf_section_data (o)->rel_hdr2 != NULL)
elf_link_adjust_relocs (abfd, elf_section_data (o)->rel_hdr2,
elf_section_data (o)->rel_count2,
- (elf_section_data (o)->rel_hashes
+ (elf_section_data (o)->rel_hashes
+ elf_section_data (o)->rel_count));
/* Set the reloc_count field to 0 to prevent write_relocs from
@@ -4698,7 +4876,8 @@ elf_bfd_final_link (abfd, info)
for (o = dynobj->sections; o != NULL; o = o->next)
{
if ((o->flags & SEC_HAS_CONTENTS) == 0
- || o->_raw_size == 0)
+ || o->_raw_size == 0
+ || o->output_section == bfd_abs_section_ptr)
continue;
if ((o->flags & SEC_LINKER_CREATED) == 0)
{
@@ -4912,6 +5091,7 @@ elf_link_output_extsym (h, data)
referenced by regular files, because we will already have issued
warnings for them. */
if (! finfo->info->relocateable
+ && ! finfo->info->allow_shlib_undefined
&& ! (finfo->info->shared
&& !finfo->info->no_undefined)
&& h->root.type == bfd_link_hash_undefined
@@ -5031,12 +5211,9 @@ elf_link_output_extsym (h, data)
symbol foo@@GNU_1.2 is the default, which should be used when
foo is used with no version, then we add an indirect symbol
foo which points to foo@@GNU_1.2. We ignore these symbols,
- since the indirected symbol is already in the hash table. If
- the indirect symbol is non-ELF, fall through and output it. */
- if ((h->elf_link_hash_flags & ELF_LINK_NON_ELF) == 0)
- return true;
+ since the indirected symbol is already in the hash table. */
+ return true;
- /* Fall through. */
case bfd_link_hash_warning:
/* We can't represent these symbols in ELF, although a warning
symbol may have come from a .gnu.warning.SYMBOL section. We
@@ -5087,7 +5264,7 @@ elf_link_output_extsym (h, data)
}
/* If a symbol is not defined locally, we clear the visibility
- field. */
+ field. */
if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
sym.st_other ^= ELF_ST_VISIBILITY(sym.st_other);
@@ -5112,7 +5289,7 @@ elf_link_output_extsym (h, data)
bucketcount = elf_hash_table (finfo->info)->bucketcount;
bucket = h->elf_hash_value % bucketcount;
- hash_entry_size
+ hash_entry_size
= elf_section_data (finfo->hash_sec)->this_hdr.sh_entsize;
bucketpos = ((bfd_byte *) finfo->hash_sec->contents
+ (bucket + 2) * hash_entry_size);
@@ -5172,7 +5349,7 @@ elf_link_output_extsym (h, data)
OUTPUT_BFD. */
static void
-elf_link_output_relocs (output_bfd, input_section, input_rel_hdr,
+elf_link_output_relocs (output_bfd, input_section, input_rel_hdr,
internal_relocs)
bfd *output_bfd;
asection *input_section;
@@ -5184,11 +5361,12 @@ elf_link_output_relocs (output_bfd, input_section, input_rel_hdr,
Elf_Internal_Shdr *output_rel_hdr;
asection *output_section;
unsigned int *rel_countp = NULL;
+ struct elf_backend_data *bed;
output_section = input_section->output_section;
output_rel_hdr = NULL;
- if (elf_section_data (output_section)->rel_hdr.sh_entsize
+ if (elf_section_data (output_section)->rel_hdr.sh_entsize
== input_rel_hdr->sh_entsize)
{
output_rel_hdr = &elf_section_data (output_section)->rel_hdr;
@@ -5203,7 +5381,8 @@ elf_link_output_relocs (output_bfd, input_section, input_rel_hdr,
}
BFD_ASSERT (output_rel_hdr != NULL);
-
+
+ bed = get_elf_backend_data (output_bfd);
irela = internal_relocs;
irelaend = irela + input_rel_hdr->sh_size / input_rel_hdr->sh_entsize;
if (input_rel_hdr->sh_entsize == sizeof (Elf_External_Rel))
@@ -5218,7 +5397,10 @@ elf_link_output_relocs (output_bfd, input_section, input_rel_hdr,
irel.r_offset = irela->r_offset;
irel.r_info = irela->r_info;
BFD_ASSERT (irela->r_addend == 0);
- elf_swap_reloc_out (output_bfd, &irel, erel);
+ if (bed->s->swap_reloc_out)
+ (*bed->s->swap_reloc_out) (output_bfd, &irel, (PTR) erel);
+ else
+ elf_swap_reloc_out (output_bfd, &irel, erel);
}
}
else
@@ -5229,7 +5411,10 @@ elf_link_output_relocs (output_bfd, input_section, input_rel_hdr,
== sizeof (Elf_External_Rela));
erela = ((Elf_External_Rela *) output_rel_hdr->contents + *rel_countp);
for (; irela < irelaend; irela++, erela++)
- elf_swap_reloca_out (output_bfd, irela, erela);
+ if (bed->s->swap_reloca_out)
+ (*bed->s->swap_reloca_out) (output_bfd, irela, (PTR) erela);
+ else
+ elf_swap_reloca_out (output_bfd, irela, erela);
}
/* Bump the counter, so that we know where to add the next set of
@@ -5346,16 +5531,43 @@ elf_link_input_bfd (finfo, input_bfd)
if (esym == external_syms)
continue;
+ if (ELF_ST_TYPE (isym->st_info) == STT_SECTION)
+ {
+ asection *ksec;
+
+ /* Save away all section symbol values. */
+ if (isec != NULL)
+ isec->symbol->value = isym->st_value;
+
+ /* If this is a discarded link-once section symbol, update
+ it's value to that of the kept section symbol. The
+ linker will keep the first of any matching link-once
+ sections, so we should have already seen it's section
+ symbol. I trust no-one will have the bright idea of
+ re-ordering the bfd list... */
+ if (isec != NULL
+ && (bfd_get_section_flags (input_bfd, isec) & SEC_LINK_ONCE) != 0
+ && (ksec = isec->kept_section) != NULL)
+ {
+ isym->st_value = ksec->symbol->value;
+
+ /* That put the value right, but the section info is all
+ wrong. I hope this works. */
+ isec->output_offset = ksec->output_offset;
+ isec->output_section = ksec->output_section;
+ }
+
+ /* We never output section symbols. Instead, we use the
+ section symbol of the corresponding section in the output
+ file. */
+ continue;
+ }
+
/* If we are stripping all symbols, we don't want to output this
one. */
if (finfo->info->strip == strip_all)
continue;
- /* We never output section symbols. Instead, we use the section
- symbol of the corresponding section in the output file. */
- if (ELF_ST_TYPE (isym->st_info) == STT_SECTION)
- continue;
-
/* If we are discarding all local symbols, we don't want to
output this one. If we are generating a relocateable output
file, then some of the local symbols may be required by
@@ -5493,7 +5705,7 @@ elf_link_input_bfd (finfo, input_bfd)
finfo->sections))
return false;
- if (finfo->info->relocateable)
+ if (finfo->info->relocateable || finfo->info->emitrelocations)
{
Elf_Internal_Rela *irela;
Elf_Internal_Rela *irelaend;
@@ -5503,7 +5715,7 @@ elf_link_input_bfd (finfo, input_bfd)
/* Adjust the reloc addresses and symbol indices. */
irela = internal_relocs;
- irelaend =
+ irelaend =
irela + o->reloc_count * bed->s->int_rels_per_ext_rel;
rel_hash = (elf_section_data (o->output_section)->rel_hashes
+ elf_section_data (o->output_section)->rel_count
@@ -5516,6 +5728,10 @@ elf_link_input_bfd (finfo, input_bfd)
irela->r_offset += o->output_offset;
+ /* Relocs in an executable have to be virtual addresses. */
+ if (finfo->info->emitrelocations)
+ irela->r_offset += o->output_section->vma;
+
r_symndx = ELF_R_SYM (irela->r_info);
if (r_symndx == 0)
@@ -5552,7 +5768,7 @@ elf_link_input_bfd (finfo, input_bfd)
continue;
}
- /* This is a reloc against a local symbol. */
+ /* This is a reloc against a local symbol. */
*rel_hash = NULL;
isym = finfo->internal_syms + r_symndx;
@@ -5631,14 +5847,14 @@ elf_link_input_bfd (finfo, input_bfd)
/* Swap out the relocs. */
input_rel_hdr = &elf_section_data (o)->rel_hdr;
- elf_link_output_relocs (output_bfd, o,
+ elf_link_output_relocs (output_bfd, o,
input_rel_hdr,
internal_relocs);
- internal_relocs
+ internal_relocs
+= input_rel_hdr->sh_size / input_rel_hdr->sh_entsize;
input_rel_hdr = elf_section_data (o)->rel_hdr2;
if (input_rel_hdr)
- elf_link_output_relocs (output_bfd, o,
+ elf_link_output_relocs (output_bfd, o,
input_rel_hdr,
internal_relocs);
}
@@ -5685,6 +5901,7 @@ elf_reloc_link_order (output_bfd, info, output_section, link_order)
bfd_vma addend;
struct elf_link_hash_entry **rel_hash_ptr;
Elf_Internal_Shdr *rel_hdr;
+ struct elf_backend_data *bed = get_elf_backend_data (output_bfd);
howto = bfd_reloc_type_lookup (output_bfd, link_order->u.reloc.p->reloc);
if (howto == NULL)
@@ -5808,7 +6025,10 @@ elf_reloc_link_order (output_bfd, info, output_section, link_order)
irel.r_info = ELF_R_INFO (indx, howto->type);
erel = ((Elf_External_Rel *) rel_hdr->contents
+ elf_section_data (output_section)->rel_count);
- elf_swap_reloc_out (output_bfd, &irel, erel);
+ if (bed->s->swap_reloc_out)
+ (*bed->s->swap_reloc_out) (output_bfd, &irel, (bfd_byte *) erel);
+ else
+ elf_swap_reloc_out (output_bfd, &irel, erel);
}
else
{
@@ -5820,14 +6040,16 @@ elf_reloc_link_order (output_bfd, info, output_section, link_order)
irela.r_addend = addend;
erela = ((Elf_External_Rela *) rel_hdr->contents
+ elf_section_data (output_section)->rel_count);
- elf_swap_reloca_out (output_bfd, &irela, erela);
+ if (bed->s->swap_reloca_out)
+ (*bed->s->swap_reloca_out) (output_bfd, &irela, (bfd_byte *) erela);
+ else
+ elf_swap_reloca_out (output_bfd, &irela, erela);
}
++elf_section_data (output_section)->rel_count;
return true;
}
-
/* Allocate a pointer to live in a linker created section. */
@@ -5950,7 +6172,6 @@ elf_create_pointer_linker_section (abfd, info, lsect, h, rel)
return true;
}
-
#if ARCH_SIZE==64
#define bfd_put_ptr(BFD,VAL,ADDR) bfd_put_64 (BFD, VAL, ADDR)
@@ -6177,22 +6398,22 @@ elf_gc_mark (info, sec, gc_mark_hook)
{
elf_swap_symbol_in (input_bfd, &locsyms[r_symndx], &s);
if (ELF_ST_BIND (s.st_info) == STB_LOCAL)
- rsec = (*gc_mark_hook)(sec->owner, info, rel, NULL, &s);
+ rsec = (*gc_mark_hook) (sec->owner, info, rel, NULL, &s);
else
{
h = sym_hashes[r_symndx - extsymoff];
- rsec = (*gc_mark_hook)(sec->owner, info, rel, h, NULL);
+ rsec = (*gc_mark_hook) (sec->owner, info, rel, h, NULL);
}
}
else if (r_symndx >= nlocsyms)
{
h = sym_hashes[r_symndx - extsymoff];
- rsec = (*gc_mark_hook)(sec->owner, info, rel, h, NULL);
+ rsec = (*gc_mark_hook) (sec->owner, info, rel, h, NULL);
}
else
{
elf_swap_symbol_in (input_bfd, &locsyms[r_symndx], &s);
- rsec = (*gc_mark_hook)(sec->owner, info, rel, NULL, &s);
+ rsec = (*gc_mark_hook) (sec->owner, info, rel, NULL, &s);
}
if (rsec && !rsec->gc_mark)
@@ -6263,7 +6484,7 @@ elf_gc_sweep (info, gc_sweep_hook)
if (internal_relocs == NULL)
return false;
- r = (*gc_sweep_hook)(o->owner, info, o, internal_relocs);
+ r = (*gc_sweep_hook) (o->owner, info, o, internal_relocs);
if (!info->keep_memory)
free (internal_relocs);
@@ -6316,7 +6537,7 @@ elf_gc_propagate_vtable_entries_used (h, okp)
struct elf_link_hash_entry *h;
PTR okp;
{
- /* Those that are not vtables. */
+ /* Those that are not vtables. */
if (h->vtable_parent == NULL)
return true;
@@ -6422,7 +6643,7 @@ elf_gc_sections (abfd, info)
struct elf_link_hash_entry *h, Elf_Internal_Sym *));
if (!get_elf_backend_data (abfd)->can_gc_sections
- || info->relocateable
+ || info->relocateable || info->emitrelocations
|| elf_hash_table (info)->dynamic_sections_created)
return true;
@@ -6558,7 +6779,7 @@ elf_gc_record_vtentry (abfd, sec, h, addend)
if (ptr)
{
ptr = bfd_realloc (ptr - 1, bytes);
-
+
if (ptr != NULL)
{
size_t oldbytes;
@@ -6572,12 +6793,12 @@ elf_gc_record_vtentry (abfd, sec, h, addend)
if (ptr == NULL)
return false;
-
+
/* And arrange for that done flag to be at index -1. */
h->vtable_entries_used = ptr + 1;
h->vtable_entries_size = size;
}
-
+
h->vtable_entries_used[addend / FILE_ALIGN] = true;
return true;
@@ -6634,7 +6855,8 @@ elf_gc_common_finalize_got_offsets (abfd, info)
}
}
- /* Then the global .got and .plt entries. */
+ /* Then the global .got entries. .plt refcounts are handled by
+ adjust_dynamic_symbol */
elf_link_hash_traverse (elf_hash_table (info),
elf_gc_allocate_got_offsets,
(PTR) &gotoff);
diff --git a/contrib/binutils/bfd/elfxx-target.h b/contrib/binutils/bfd/elfxx-target.h
index b1f4867..e69036f 100644
--- a/contrib/binutils/bfd/elfxx-target.h
+++ b/contrib/binutils/bfd/elfxx-target.h
@@ -237,6 +237,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef elf_backend_section_from_shdr
#define elf_backend_section_from_shdr 0
#endif
+#ifndef elf_backend_section_flags
+#define elf_backend_section_flags 0
+#endif
#ifndef elf_backend_section_from_phdr
#define elf_backend_section_from_phdr 0
#endif
@@ -313,7 +316,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define elf_backend_hide_symbol _bfd_elf_link_hash_hide_symbol
#endif
-
/* Previously, backends could only use SHT_REL or SHT_RELA relocation
sections, but not both. They defined USE_REL to indicate SHT_REL
sections, and left it undefined to indicated SHT_RELA sections.
@@ -323,16 +325,16 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#else
#undef USE_REL
#define USE_REL 1
-#endif
+#endif
/* Use these in new code. */
-#ifndef elf_backend_may_use_rel_p
+#ifndef elf_backend_may_use_rel_p
#define elf_backend_may_use_rel_p USE_REL
-#endif
+#endif
#ifndef elf_backend_may_use_rela_p
#define elf_backend_may_use_rela_p !USE_REL
#endif
-#ifndef elf_backend_default_use_rela_p
+#ifndef elf_backend_default_use_rela_p
#define elf_backend_default_use_rela_p !USE_REL
#endif
@@ -354,6 +356,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
extern const struct elf_size_info _bfd_elfNN_size_info;
+#ifndef INCLUDED_TARGET_FILE
static CONST struct elf_backend_data elfNN_bed =
{
ELF_ARCH, /* arch */
@@ -368,6 +371,7 @@ static CONST struct elf_backend_data elfNN_bed =
elf_backend_get_symbol_type,
elf_backend_section_processing,
elf_backend_section_from_shdr,
+ elf_backend_section_flags,
elf_backend_section_from_phdr,
elf_backend_fake_sections,
elf_backend_section_from_bfd_section,
@@ -413,6 +417,7 @@ static CONST struct elf_backend_data elfNN_bed =
elf_backend_can_gc_sections,
elf_backend_want_dynbss
};
+#endif
/* Forward declaration for use when initialising alternative_target field. */
#ifdef TARGET_LITTLE_SYM
@@ -603,7 +608,7 @@ const bfd_target TARGET_LITTLE_SYM =
#else
NULL,
#endif
-
+
/* backend_data: */
(PTR) &elfNN_bed
};
diff --git a/contrib/binutils/bfd/format.c b/contrib/binutils/bfd/format.c
index c9f1f9c..ad4a6a8 100644
--- a/contrib/binutils/bfd/format.c
+++ b/contrib/binutils/bfd/format.c
@@ -23,7 +23,7 @@ SECTION
File formats
A format is a BFD concept of high level file contents type. The
- formats supported by BFD are:
+ formats supported by BFD are:
o <<bfd_object>>
@@ -37,7 +37,6 @@ SECTION
The BFD contains the result of an executable core dump.
-
*/
#include "bfd.h"
@@ -68,7 +67,7 @@ DESCRIPTION
the file, or an error results.
The function returns <<true>> on success, otherwise <<false>>
- with one of the following error codes:
+ with one of the following error codes:
o <<bfd_error_invalid_operation>> -
if <<format>> is not one of <<bfd_object>>, <<bfd_archive>> or
@@ -109,7 +108,7 @@ DESCRIPTION
Then the user may choose a format and try again.
When done with the list that @var{matching} points to, the caller
- should free it.
+ should free it.
*/
boolean
@@ -125,20 +124,20 @@ bfd_check_format_matches (abfd, format, matching)
if (!bfd_read_p (abfd) ||
((int)(abfd->format) < (int)bfd_unknown) ||
- ((int)(abfd->format) >= (int)bfd_type_end)) {
- bfd_set_error (bfd_error_invalid_operation);
- return false;
- }
+ ((int)(abfd->format) >= (int)bfd_type_end))
+ {
+ bfd_set_error (bfd_error_invalid_operation);
+ return false;
+ }
if (abfd->format != bfd_unknown)
return (abfd->format == format)? true: false;
-
- /* Since the target type was defaulted, check them
+ /* Since the target type was defaulted, check them
all in the hope that one will be uniquely recognized. */
-
save_targ = abfd->xvec;
match_count = 0;
+
if (matching)
{
matching_vector =
@@ -149,119 +148,147 @@ bfd_check_format_matches (abfd, format, matching)
matching_vector[0] = NULL;
*matching = matching_vector;
}
- right_targ = 0;
+ right_targ = 0;
- /* presume the answer is yes */
+ /* Presume the answer is yes. */
abfd->format = format;
/* If the target type was explicitly specified, just check that target. */
+ if (!abfd->target_defaulted)
+ {
+ if (bfd_seek (abfd, (file_ptr)0, SEEK_SET) != 0) /* rewind! */
+ return false;
- if (!abfd->target_defaulted) {
- if (bfd_seek (abfd, (file_ptr)0, SEEK_SET) != 0) /* rewind! */
- return false;
- right_targ = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
- if (right_targ) {
- abfd->xvec = right_targ; /* Set the target as returned */
- if (matching)
- free (matching_vector);
- return true; /* File position has moved, BTW */
- }
+ right_targ = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
- /* For a long time the code has dropped through to check all
- targets if the specified target was wrong. I don't know why,
- and I'm reluctant to change it. However, in the case of an
- archive, it can cause problems. If the specified target does
- not permit archives (e.g., the binary target), then we should
- not allow some other target to recognize it as an archive, but
- should instead allow the specified target to recognize it as an
- object. When I first made this change, it broke the PE target,
- because the specified pei-i386 target did not recognize the
- actual pe-i386 archive. Since there may be other problems of
- this sort, I changed this test to check only for the binary
- target. */
-
- if (format == bfd_archive && save_targ == &binary_vec)
- {
- abfd->xvec = save_targ;
- abfd->format = bfd_unknown;
- if (matching)
- free (matching_vector);
- bfd_set_error (bfd_error_file_not_recognized);
- return false;
- }
- }
+ if (right_targ)
+ {
+ abfd->xvec = right_targ; /* Set the target as returned. */
- for (target = bfd_target_vector; *target != NULL; target++) {
- const bfd_target *temp;
+ if (matching)
+ free (matching_vector);
- if (*target == &binary_vec)
- continue;
+ return true; /* File position has moved, BTW. */
+ }
- abfd->xvec = *target; /* Change BFD's target temporarily */
- if (bfd_seek (abfd, (file_ptr)0, SEEK_SET) != 0)
- return false;
- /* If _bfd_check_format neglects to set bfd_error, assume bfd_error_wrong_format.
- We didn't used to even pay any attention to bfd_error, so I suspect
- that some _bfd_check_format might have this problem. */
- bfd_set_error (bfd_error_wrong_format);
- temp = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
- if (temp) { /* This format checks out as ok! */
- right_targ = temp;
- if (matching)
+ /* For a long time the code has dropped through to check all
+ targets if the specified target was wrong. I don't know why,
+ and I'm reluctant to change it. However, in the case of an
+ archive, it can cause problems. If the specified target does
+ not permit archives (e.g., the binary target), then we should
+ not allow some other target to recognize it as an archive, but
+ should instead allow the specified target to recognize it as an
+ object. When I first made this change, it broke the PE target,
+ because the specified pei-i386 target did not recognize the
+ actual pe-i386 archive. Since there may be other problems of
+ this sort, I changed this test to check only for the binary
+ target. */
+ if (format == bfd_archive && save_targ == &binary_vec)
{
- matching_vector[match_count] = temp->name;
- matching_vector[match_count + 1] = NULL;
+ abfd->xvec = save_targ;
+ abfd->format = bfd_unknown;
+
+ if (matching)
+ free (matching_vector);
+
+ bfd_set_error (bfd_error_file_not_recognized);
+
+ return false;
}
- match_count++;
- /* If this is the default target, accept it, even if other targets
- might match. People who want those other targets have to set
- the GNUTARGET variable. */
- if (temp == bfd_default_vector[0])
- {
+ }
+
+ for (target = bfd_target_vector; *target != NULL; target++)
+ {
+ const bfd_target *temp;
+
+ if (*target == &binary_vec)
+ continue;
+
+ abfd->xvec = *target; /* Change BFD's target temporarily */
+
+ if (bfd_seek (abfd, (file_ptr)0, SEEK_SET) != 0)
+ return false;
+
+ /* If _bfd_check_format neglects to set bfd_error, assume
+ bfd_error_wrong_format. We didn't used to even pay any
+ attention to bfd_error, so I suspect that some
+ _bfd_check_format might have this problem. */
+ bfd_set_error (bfd_error_wrong_format);
+
+ temp = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
+
+ if (temp)
+ { /* This format checks out as ok! */
+ right_targ = temp;
+
if (matching)
{
- matching_vector[0] = temp->name;
- matching_vector[1] = NULL;
+ matching_vector[match_count] = temp->name;
+ matching_vector[match_count + 1] = NULL;
+ }
+
+ match_count++;
+
+ /* If this is the default target, accept it, even if other
+ targets might match. People who want those other targets
+ have to set the GNUTARGET variable. */
+ if (temp == bfd_default_vector[0])
+ {
+ if (matching)
+ {
+ matching_vector[0] = temp->name;
+ matching_vector[1] = NULL;
+ }
+ match_count = 1;
+ break;
}
- match_count = 1;
- break;
- }
#ifdef GNU960
- /* Big- and little-endian b.out archives look the same, but it doesn't
- * matter: there is no difference in their headers, and member file byte
- * orders will (I hope) be handled appropriately by bfd. Ditto for big
- * and little coff archives. And the 4 coff/b.out object formats are
- * unambiguous. So accept the first match we find.
- */
- break;
+ /* Big- and little-endian b.out archives look the same, but it
+ doesn't matter: there is no difference in their headers, and
+ member file byte orders will (I hope) be handled appropriately
+ by bfd. Ditto for big and little coff archives. And the 4
+ coff/b.out object formats are unambiguous. So accept the
+ first match we find. */
+ break;
#endif
- } else if (bfd_get_error () != bfd_error_wrong_format) {
- abfd->xvec = save_targ;
- abfd->format = bfd_unknown;
- if (matching && bfd_get_error () != bfd_error_file_ambiguously_recognized)
+ }
+ else if (bfd_get_error () != bfd_error_wrong_format)
+ {
+ abfd->xvec = save_targ;
+ abfd->format = bfd_unknown;
+
+ if (matching && bfd_get_error ()
+ != bfd_error_file_ambiguously_recognized)
+ free (matching_vector);
+
+ return false;
+ }
+ }
+
+ if (match_count == 1)
+ {
+ abfd->xvec = right_targ; /* Change BFD's target permanently. */
+
+ if (matching)
free (matching_vector);
- return false;
+
+ return true; /* File position has moved, BTW. */
}
- }
- if (match_count == 1) {
- abfd->xvec = right_targ; /* Change BFD's target permanently */
- if (matching)
- free (matching_vector);
- return true; /* File position has moved, BTW */
- }
+ abfd->xvec = save_targ; /* Restore original target type. */
+ abfd->format = bfd_unknown; /* Restore original format. */
- abfd->xvec = save_targ; /* Restore original target type */
- abfd->format = bfd_unknown; /* Restore original format */
if (match_count == 0)
{
bfd_set_error (bfd_error_file_not_recognized);
+
if (matching)
free (matching_vector);
}
else
bfd_set_error (bfd_error_file_ambiguously_recognized);
+
return false;
}
@@ -277,7 +304,6 @@ DESCRIPTION
format @var{format}. If the target set in the BFD does not
support the format requested, the format is invalid, or the BFD
is not open for writing, then an error occurs.
-
*/
boolean
@@ -285,29 +311,29 @@ bfd_set_format (abfd, format)
bfd *abfd;
bfd_format format;
{
-
if (bfd_read_p (abfd) ||
((int)abfd->format < (int)bfd_unknown) ||
- ((int)abfd->format >= (int)bfd_type_end)) {
- bfd_set_error (bfd_error_invalid_operation);
- return false;
- }
+ ((int)abfd->format >= (int)bfd_type_end))
+ {
+ bfd_set_error (bfd_error_invalid_operation);
+ return false;
+ }
if (abfd->format != bfd_unknown)
- return (abfd->format == format) ? true:false;
+ return (abfd->format == format) ? true : false;
- /* presume the answer is yes */
+ /* Presume the answer is yes. */
abfd->format = format;
- if (!BFD_SEND_FMT (abfd, _bfd_set_format, (abfd))) {
- abfd->format = bfd_unknown;
- return false;
- }
+ if (!BFD_SEND_FMT (abfd, _bfd_set_format, (abfd)))
+ {
+ abfd->format = bfd_unknown;
+ return false;
+ }
return true;
}
-
/*
FUNCTION
bfd_format_string
@@ -325,18 +351,19 @@ CONST char *
bfd_format_string (format)
bfd_format format;
{
- if (((int)format <(int) bfd_unknown)
- || ((int)format >=(int) bfd_type_end))
+ if (((int)format <(int) bfd_unknown)
+ || ((int)format >=(int) bfd_type_end))
return "invalid";
-
- switch (format) {
- case bfd_object:
- return "object"; /* linker/assember/compiler output */
- case bfd_archive:
- return "archive"; /* object archive file */
- case bfd_core:
- return "core"; /* core dump */
- default:
- return "unknown";
- }
+
+ switch (format)
+ {
+ case bfd_object:
+ return "object"; /* Linker/assember/compiler output. */
+ case bfd_archive:
+ return "archive"; /* Object archive file. */
+ case bfd_core:
+ return "core"; /* Core dump. */
+ default:
+ return "unknown";
+ }
}
diff --git a/contrib/binutils/bfd/freebsd.h b/contrib/binutils/bfd/freebsd.h
index e80c213..0203d99 100644
--- a/contrib/binutils/bfd/freebsd.h
+++ b/contrib/binutils/bfd/freebsd.h
@@ -59,7 +59,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
format. I think. */
#define SWAP_MAGIC(ext) bfd_getl32 (ext)
-
#define MY_write_object_contents MY(write_object_contents)
static boolean MY(write_object_contents) PARAMS ((bfd *abfd));
diff --git a/contrib/binutils/bfd/hash.c b/contrib/binutils/bfd/hash.c
index 173eaf76..a1bca28 100644
--- a/contrib/binutils/bfd/hash.c
+++ b/contrib/binutils/bfd/hash.c
@@ -268,7 +268,7 @@ SUBSUBSECTION
Write other derived routines
You will want to write other routines for your new hash table,
- as well.
+ as well.
You will want an initialization routine which calls the
initialization routine of the hash table you are deriving from
@@ -366,7 +366,7 @@ bfd_hash_lookup (table, string, create, copy)
struct bfd_hash_entry *hashp;
unsigned int len;
unsigned int index;
-
+
hash = 0;
len = 0;
s = (const unsigned char *) string;
diff --git a/contrib/binutils/bfd/ieee.c b/contrib/binutils/bfd/ieee.c
index 71b967a..70f0d13 100644
--- a/contrib/binutils/bfd/ieee.c
+++ b/contrib/binutils/bfd/ieee.c
@@ -1343,27 +1343,21 @@ ieee_archive_p (abfd)
ieee->h.abfd = abfd;
if (this_byte (&(ieee->h)) != Module_Beginning)
- {
- abfd->tdata.ieee_ar_data = save;
- goto got_wrong_format_error;
- }
+ goto got_wrong_format_error;
next_byte (&(ieee->h));
library = read_id (&(ieee->h));
if (strcmp (library, "LIBRARY") != 0)
- {
- bfd_release (abfd, ieee);
- abfd->tdata.ieee_ar_data = save;
- goto got_wrong_format_error;
- }
- /* Throw away the filename */
+ goto got_wrong_format_error;
+
+ /* Throw away the filename. */
read_id (&(ieee->h));
ieee->element_count = 0;
ieee->element_index = 0;
- next_byte (&(ieee->h)); /* Drop the ad part */
- must_parse_int (&(ieee->h)); /* And the two dummy numbers */
+ next_byte (&(ieee->h)); /* Drop the ad part. */
+ must_parse_int (&(ieee->h)); /* And the two dummy numbers. */
must_parse_int (&(ieee->h));
alc_elts = 10;
@@ -1371,7 +1365,7 @@ ieee_archive_p (abfd)
if (elts == NULL)
goto error_return;
- /* Read the index of the BB table */
+ /* Read the index of the BB table. */
while (1)
{
int rec;
@@ -1400,14 +1394,14 @@ ieee_archive_p (abfd)
t->file_offset = must_parse_int (&(ieee->h));
t->abfd = (bfd *) NULL;
- /* Make sure that we don't go over the end of the buffer */
-
+ /* Make sure that we don't go over the end of the buffer. */
if ((size_t) ieee_pos (abfd) > sizeof (buffer) / 2)
{
- /* Past half way, reseek and reprime */
+ /* Past half way, reseek and reprime. */
buffer_offset += ieee_pos (abfd);
if (bfd_seek (abfd, buffer_offset, SEEK_SET) != 0)
goto error_return;
+
/* FIXME: Check return value. I'm not sure whether it needs
to read the entire buffer or not. */
bfd_read ((PTR) buffer, 1, sizeof (buffer), abfd);
@@ -1421,36 +1415,33 @@ ieee_archive_p (abfd)
ieee->element_count * sizeof *ieee->elements));
if (ieee->elements == NULL)
goto error_return;
+
memcpy (ieee->elements, elts,
ieee->element_count * sizeof *ieee->elements);
free (elts);
elts = NULL;
- /* Now scan the area again, and replace BB offsets with file */
- /* offsets */
-
+ /* Now scan the area again, and replace BB offsets with file offsets. */
for (i = 2; i < ieee->element_count; i++)
{
if (bfd_seek (abfd, ieee->elements[i].file_offset, SEEK_SET) != 0)
goto error_return;
+
/* FIXME: Check return value. I'm not sure whether it needs to
read the entire buffer or not. */
bfd_read ((PTR) buffer, 1, sizeof (buffer), abfd);
ieee->h.first_byte = buffer;
ieee->h.input_p = buffer;
- next_byte (&(ieee->h)); /* Drop F8 */
- next_byte (&(ieee->h)); /* Drop 14 */
- must_parse_int (&(ieee->h)); /* Drop size of block */
+ next_byte (&(ieee->h)); /* Drop F8. */
+ next_byte (&(ieee->h)); /* Drop 14. */
+ must_parse_int (&(ieee->h)); /* Drop size of block. */
+
if (must_parse_int (&(ieee->h)) != 0)
- {
- /* This object has been deleted */
- ieee->elements[i].file_offset = 0;
- }
+ /* This object has been deleted. */
+ ieee->elements[i].file_offset = 0;
else
- {
- ieee->elements[i].file_offset = must_parse_int (&(ieee->h));
- }
+ ieee->elements[i].file_offset = must_parse_int (&(ieee->h));
}
/* abfd->has_armap = ;*/
@@ -1458,10 +1449,14 @@ ieee_archive_p (abfd)
return abfd->xvec;
got_wrong_format_error:
+ bfd_release (abfd, ieee);
+ abfd->tdata.ieee_ar_data = save;
bfd_set_error (bfd_error_wrong_format);
+
error_return:
if (elts != NULL)
free (elts);
+
return NULL;
}
@@ -3197,11 +3192,8 @@ relocate_debug (output, input)
block ();
}
-/*
- During linking, we we told about the bfds which made up our
- contents, we have a list of them. They will still be open, so go to
- the debug info in each, and copy it out, relocating it as we go.
-*/
+/* Gather together all the debug information from each input BFD into
+ one place, relocating it and emitting it as we go. */
static boolean
ieee_write_debug_part (abfd)
@@ -3728,7 +3720,7 @@ ieee_make_empty_symbol (abfd)
bfd *abfd;
{
ieee_symbol_type *new =
- (ieee_symbol_type *) bfd_zmalloc (sizeof (ieee_symbol_type));
+ (ieee_symbol_type *) bfd_zalloc (abfd, sizeof (ieee_symbol_type));
if (!new)
return NULL;
new->symbol.the_bfd = abfd;
diff --git a/contrib/binutils/bfd/libaout.h b/contrib/binutils/bfd/libaout.h
index 7001d3d..1682428 100644
--- a/contrib/binutils/bfd/libaout.h
+++ b/contrib/binutils/bfd/libaout.h
@@ -245,7 +245,8 @@ enum machine_type {
M_SPARCLET_5 = 211, /* 0xd3, reserved */
M_SPARCLET_6 = 227, /* 0xe3, reserved */
/* M_SPARCLET_7 = 243 / * 0xf3, reserved */
- M_SPARCLITE_LE = 243
+ M_SPARCLITE_LE = 243,
+ M_CRIS = 255 /* Axis CRIS binary. */
};
#define N_DYNAMIC(exec) ((exec).a_info & 0x80000000)
diff --git a/contrib/binutils/bfd/libbfd-in.h b/contrib/binutils/bfd/libbfd-in.h
index aece1e1..fb5f210 100644
--- a/contrib/binutils/bfd/libbfd-in.h
+++ b/contrib/binutils/bfd/libbfd-in.h
@@ -59,9 +59,9 @@ struct artdata {
file_ptr first_file_filepos;
/* Speed up searching the armap */
struct ar_cache *cache;
- bfd *archive_head; /* Only interesting in output routines */
+ bfd *archive_head; /* Only interesting in output routines */
carsym *symdefs; /* the symdef entries */
- symindex symdef_count; /* how many there are */
+ symindex symdef_count; /* how many there are */
char *extended_names; /* clever intel extension */
/* when more compilers are standard C, this can be a time_t */
long armap_timestamp; /* Timestamp value written into armap.
@@ -79,9 +79,9 @@ struct artdata {
/* Goes in bfd's arelt_data slot */
struct areltdata {
- char * arch_header; /* it's actually a string */
- unsigned int parsed_size; /* octets of filesize not including ar_hdr */
- char *filename; /* null-terminated */
+ char * arch_header; /* it's actually a string */
+ unsigned int parsed_size; /* octets of filesize not including ar_hdr */
+ char *filename; /* null-terminated */
};
#define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
@@ -128,11 +128,11 @@ void bfd_void PARAMS ((bfd *ignore));
bfd *_bfd_new_bfd_contained_in PARAMS ((bfd *));
const bfd_target *_bfd_dummy_target PARAMS ((bfd *abfd));
-void bfd_dont_truncate_arname PARAMS ((bfd *abfd, CONST char *filename,
+void bfd_dont_truncate_arname PARAMS ((bfd *abfd, const char *filename,
char *hdr));
-void bfd_bsd_truncate_arname PARAMS ((bfd *abfd, CONST char *filename,
+void bfd_bsd_truncate_arname PARAMS ((bfd *abfd, const char *filename,
char *hdr));
-void bfd_gnu_truncate_arname PARAMS ((bfd *abfd, CONST char *filename,
+void bfd_gnu_truncate_arname PARAMS ((bfd *abfd, const char *filename,
char *hdr));
boolean bsd_write_armap PARAMS ((bfd *arch, unsigned int elength,
@@ -365,7 +365,8 @@ extern boolean _bfd_dwarf1_find_nearest_line
/* Find the nearest line using DWARF 2 debugging information. */
extern boolean _bfd_dwarf2_find_nearest_line
PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **,
- const char **, unsigned int *, unsigned int));
+ const char **, unsigned int *, unsigned int,
+ PTR *));
/* A routine to create entries for a bfd_link_hash_table. */
extern struct bfd_hash_entry *_bfd_link_hash_newfunc
diff --git a/contrib/binutils/bfd/libbfd.c b/contrib/binutils/bfd/libbfd.c
index 881af73..8b846f0 100644
--- a/contrib/binutils/bfd/libbfd.c
+++ b/contrib/binutils/bfd/libbfd.c
@@ -42,7 +42,6 @@ DESCRIPTION
/* A routine which is used in target vectors for unsupported
operations. */
-/*ARGSUSED*/
boolean
bfd_false (ignore)
bfd *ignore ATTRIBUTE_UNUSED;
@@ -54,7 +53,6 @@ bfd_false (ignore)
/* A routine which is used in target vectors for supported operations
which do not actually do anything. */
-/*ARGSUSED*/
boolean
bfd_true (ignore)
bfd *ignore ATTRIBUTE_UNUSED;
@@ -65,7 +63,6 @@ bfd_true (ignore)
/* A routine which is used in target vectors for unsupported
operations which return a pointer value. */
-/*ARGSUSED*/
PTR
bfd_nullvoidptr (ignore)
bfd *ignore ATTRIBUTE_UNUSED;
@@ -74,23 +71,20 @@ bfd_nullvoidptr (ignore)
return NULL;
}
-/*ARGSUSED*/
-int
+int
bfd_0 (ignore)
bfd *ignore ATTRIBUTE_UNUSED;
{
return 0;
}
-/*ARGSUSED*/
-unsigned int
+unsigned int
bfd_0u (ignore)
bfd *ignore ATTRIBUTE_UNUSED;
{
return 0;
}
-/*ARGUSED*/
long
bfd_0l (ignore)
bfd *ignore ATTRIBUTE_UNUSED;
@@ -101,7 +95,6 @@ bfd_0l (ignore)
/* A routine which is used in target vectors for unsupported
operations which return -1 on error. */
-/*ARGSUSED*/
long
_bfd_n1 (ignore_abfd)
bfd *ignore_abfd ATTRIBUTE_UNUSED;
@@ -110,14 +103,12 @@ _bfd_n1 (ignore_abfd)
return -1;
}
-/*ARGSUSED*/
-void
+void
bfd_void (ignore)
bfd *ignore ATTRIBUTE_UNUSED;
{
}
-/*ARGSUSED*/
boolean
_bfd_nocore_core_file_matches_executable_p (ignore_core_bfd, ignore_exec_bfd)
bfd *ignore_core_bfd ATTRIBUTE_UNUSED;
@@ -130,7 +121,6 @@ _bfd_nocore_core_file_matches_executable_p (ignore_core_bfd, ignore_exec_bfd)
/* Routine to handle core_file_failing_command entry point for targets
without core file support. */
-/*ARGSUSED*/
char *
_bfd_nocore_core_file_failing_command (ignore_abfd)
bfd *ignore_abfd ATTRIBUTE_UNUSED;
@@ -142,7 +132,6 @@ _bfd_nocore_core_file_failing_command (ignore_abfd)
/* Routine to handle core_file_failing_signal entry point for targets
without core file support. */
-/*ARGSUSED*/
int
_bfd_nocore_core_file_failing_signal (ignore_abfd)
bfd *ignore_abfd ATTRIBUTE_UNUSED;
@@ -151,7 +140,6 @@ _bfd_nocore_core_file_failing_signal (ignore_abfd)
return 0;
}
-/*ARGSUSED*/
const bfd_target *
_bfd_dummy_target (ignore_abfd)
bfd *ignore_abfd ATTRIBUTE_UNUSED;
@@ -217,13 +205,12 @@ bfd_zmalloc (size)
/* Some IO code */
-
/* Note that archive entries don't have streams; they share their parent's.
This allows someone to play with the iostream behind BFD's back.
Also, note that the origin pointer points to the beginning of a file's
contents (0 for non-archive elements). For archive entries this is the
- first octet in the file, NOT the beginning of the archive header. */
+ first octet in the file, NOT the beginning of the archive header. */
static int
real_read (where, a,b, file)
@@ -285,7 +272,7 @@ bfd_read (ptr, size, nitems, abfd)
return get;
}
- nread = real_read (ptr, 1, (size_t)(size*nitems), bfd_cache_lookup(abfd));
+ nread = real_read (ptr, 1, (size_t) (size*nitems), bfd_cache_lookup(abfd));
if (nread > 0)
abfd->where += nread;
@@ -317,7 +304,7 @@ struct _bfd_window_internal {
struct _bfd_window_internal *next;
PTR data;
bfd_size_type size;
- int refcount : 31; /* should be enough... */
+ int refcount : 31; /* should be enough... */
unsigned mapped : 1; /* 1 = mmap, 0 = malloc */
};
@@ -671,7 +658,7 @@ bfd_seek (abfd, position, direction)
file_ptr file_position;
/* For the time being, a BFD may not seek to it's end. The problem
is that we don't easily have a way to recognize the end of an
- element in an archive. */
+ element in an archive. */
BFD_ASSERT (direction == SEEK_SET || direction == SEEK_CUR);
@@ -683,19 +670,39 @@ bfd_seek (abfd, position, direction)
struct bfd_in_memory *bim;
bim = (struct bfd_in_memory *) abfd->iostream;
-
+
if (direction == SEEK_SET)
abfd->where = position;
else
abfd->where += position;
-
+
if ((bfd_size_type) abfd->where > bim->size)
{
- abfd->where = bim->size;
- bfd_set_error (bfd_error_file_truncated);
- return -1;
+ if ((abfd->direction == write_direction) ||
+ (abfd->direction == both_direction))
+ {
+ long newsize, oldsize = (bim->size + 127) & ~127;
+ bim->size = abfd->where;
+ /* Round up to cut down on memory fragmentation */
+ newsize = (bim->size + 127) & ~127;
+ if (newsize > oldsize)
+ {
+ bim->buffer = bfd_realloc (bim->buffer, newsize);
+ if (bim->buffer == 0)
+ {
+ bim->size = 0;
+ bfd_set_error (bfd_error_no_memory);
+ return -1;
+ }
+ }
+ }
+ else
+ {
+ abfd->where = bim->size;
+ bfd_set_error (bfd_error_file_truncated);
+ return -1;
+ }
}
-
return 0;
}
@@ -776,7 +783,7 @@ bfd_seek (abfd, position, direction)
/* FIXME: Should these take a count argument?
Answer (gnu@cygnus.com): No, but perhaps they should be inline
- functions in swap.h #ifdef __GNUC__.
+ functions in swap.h #ifdef __GNUC__.
Gprof them later and find out. */
/*
@@ -807,13 +814,13 @@ DESCRIPTION
.{* Byte swapping macros for user section data. *}
.
.#define bfd_put_8(abfd, val, ptr) \
-. ((void) (*((unsigned char *)(ptr)) = (unsigned char)(val)))
+. ((void) (*((unsigned char *) (ptr)) = (unsigned char) (val)))
.#define bfd_put_signed_8 \
. bfd_put_8
.#define bfd_get_8(abfd, ptr) \
-. (*(unsigned char *)(ptr))
+. (*(unsigned char *) (ptr))
.#define bfd_get_signed_8(abfd, ptr) \
-. ((*(unsigned char *)(ptr) ^ 0x80) - 0x80)
+. ((*(unsigned char *) (ptr) ^ 0x80) - 0x80)
.
.#define bfd_put_16(abfd, val, ptr) \
. BFD_SEND(abfd, bfd_putx16, ((val),(ptr)))
@@ -856,7 +863,7 @@ DESCRIPTION
. : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
. : (abort (), (void) 0))
.
-*/
+*/
/*
FUNCTION
@@ -908,7 +915,7 @@ DESCRIPTION
.#define bfd_h_get_signed_64(abfd, ptr) \
. BFD_SEND(abfd, bfd_h_getx_signed_64, (ptr))
.
-*/
+*/
/* Sign extension to bfd_signed_vma. */
#define COERCE16(x) (((bfd_signed_vma) (x) ^ 0x8000) - 0x8000)
@@ -951,17 +958,17 @@ bfd_putb16 (data, addr)
bfd_vma data;
register bfd_byte *addr;
{
- addr[0] = (bfd_byte)(data >> 8);
+ addr[0] = (bfd_byte) (data >> 8);
addr[1] = (bfd_byte )data;
}
void
bfd_putl16 (data, addr)
- bfd_vma data;
+ bfd_vma data;
register bfd_byte *addr;
{
addr[0] = (bfd_byte )data;
- addr[1] = (bfd_byte)(data >> 8);
+ addr[1] = (bfd_byte) (data >> 8);
}
bfd_vma
@@ -1116,9 +1123,9 @@ bfd_putb32 (data, addr)
bfd_vma data;
register bfd_byte *addr;
{
- addr[0] = (bfd_byte)(data >> 24);
- addr[1] = (bfd_byte)(data >> 16);
- addr[2] = (bfd_byte)(data >> 8);
+ addr[0] = (bfd_byte) (data >> 24);
+ addr[1] = (bfd_byte) (data >> 16);
+ addr[2] = (bfd_byte) (data >> 8);
addr[3] = (bfd_byte)data;
}
@@ -1128,9 +1135,9 @@ bfd_putl32 (data, addr)
register bfd_byte *addr;
{
addr[0] = (bfd_byte)data;
- addr[1] = (bfd_byte)(data >> 8);
- addr[2] = (bfd_byte)(data >> 16);
- addr[3] = (bfd_byte)(data >> 24);
+ addr[1] = (bfd_byte) (data >> 8);
+ addr[2] = (bfd_byte) (data >> 16);
+ addr[3] = (bfd_byte) (data >> 24);
}
void
@@ -1139,14 +1146,14 @@ bfd_putb64 (data, addr)
register bfd_byte *addr ATTRIBUTE_UNUSED;
{
#ifdef BFD64
- addr[0] = (bfd_byte)(data >> (7*8));
- addr[1] = (bfd_byte)(data >> (6*8));
- addr[2] = (bfd_byte)(data >> (5*8));
- addr[3] = (bfd_byte)(data >> (4*8));
- addr[4] = (bfd_byte)(data >> (3*8));
- addr[5] = (bfd_byte)(data >> (2*8));
- addr[6] = (bfd_byte)(data >> (1*8));
- addr[7] = (bfd_byte)(data >> (0*8));
+ addr[0] = (bfd_byte) (data >> (7*8));
+ addr[1] = (bfd_byte) (data >> (6*8));
+ addr[2] = (bfd_byte) (data >> (5*8));
+ addr[3] = (bfd_byte) (data >> (4*8));
+ addr[4] = (bfd_byte) (data >> (3*8));
+ addr[5] = (bfd_byte) (data >> (2*8));
+ addr[6] = (bfd_byte) (data >> (1*8));
+ addr[7] = (bfd_byte) (data >> (0*8));
#else
BFD_FAIL();
#endif
@@ -1158,18 +1165,66 @@ bfd_putl64 (data, addr)
register bfd_byte *addr ATTRIBUTE_UNUSED;
{
#ifdef BFD64
- addr[7] = (bfd_byte)(data >> (7*8));
- addr[6] = (bfd_byte)(data >> (6*8));
- addr[5] = (bfd_byte)(data >> (5*8));
- addr[4] = (bfd_byte)(data >> (4*8));
- addr[3] = (bfd_byte)(data >> (3*8));
- addr[2] = (bfd_byte)(data >> (2*8));
- addr[1] = (bfd_byte)(data >> (1*8));
- addr[0] = (bfd_byte)(data >> (0*8));
+ addr[7] = (bfd_byte) (data >> (7*8));
+ addr[6] = (bfd_byte) (data >> (6*8));
+ addr[5] = (bfd_byte) (data >> (5*8));
+ addr[4] = (bfd_byte) (data >> (4*8));
+ addr[3] = (bfd_byte) (data >> (3*8));
+ addr[2] = (bfd_byte) (data >> (2*8));
+ addr[1] = (bfd_byte) (data >> (1*8));
+ addr[0] = (bfd_byte) (data >> (0*8));
#else
BFD_FAIL();
#endif
}
+
+void
+bfd_put_bits (data, addr, bits, big_p)
+ bfd_vma data;
+ bfd_byte *addr;
+ int bits;
+ boolean big_p;
+{
+ int i;
+ int bytes;
+
+ if (bits % 8 != 0)
+ abort ();
+
+ bytes = bits / 8;
+ for (i = 0; i < bytes; i++)
+ {
+ int index = big_p ? bytes - i - 1 : i;
+
+ addr[index] = (bfd_byte) data;
+ data >>= 8;
+ }
+}
+
+bfd_vma
+bfd_get_bits (addr, bits, big_p)
+ bfd_byte *addr;
+ int bits;
+ boolean big_p;
+{
+ bfd_vma data;
+ int i;
+ int bytes;
+
+ if (bits % 8 != 0)
+ abort ();
+
+ data = 0;
+ bytes = bits / 8;
+ for (i = 0; i < bytes; i++)
+ {
+ int index = big_p ? i : bytes - i - 1;
+
+ data = (data << 8) | addr[index];
+ }
+
+ return data;
+}
/* Default implementation */
@@ -1306,13 +1361,17 @@ _bfd_generic_verify_endian_match (ibfd, obfd)
bfd *obfd;
{
if (ibfd->xvec->byteorder != obfd->xvec->byteorder
+ && ibfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN
&& obfd->xvec->byteorder != BFD_ENDIAN_UNKNOWN)
{
- (*_bfd_error_handler)
- ("%s: compiled for a %s endian system and target is %s endian",
- bfd_get_filename (ibfd),
- bfd_big_endian (ibfd) ? "big" : "little",
- bfd_big_endian (obfd) ? "big" : "little");
+ const char *msg;
+
+ if (bfd_big_endian (ibfd))
+ msg = _("%s: compiled for a big endian system and target is little endian");
+ else
+ msg = _("%s: compiled for a little endian system and target is big endian");
+
+ (*_bfd_error_handler) (msg, bfd_get_filename (ibfd));
bfd_set_error (bfd_error_wrong_format);
return false;
diff --git a/contrib/binutils/bfd/libbfd.h b/contrib/binutils/bfd/libbfd.h
index d8b5c24..d6e3939 100644
--- a/contrib/binutils/bfd/libbfd.h
+++ b/contrib/binutils/bfd/libbfd.h
@@ -59,9 +59,9 @@ struct artdata {
file_ptr first_file_filepos;
/* Speed up searching the armap */
struct ar_cache *cache;
- bfd *archive_head; /* Only interesting in output routines */
+ bfd *archive_head; /* Only interesting in output routines */
carsym *symdefs; /* the symdef entries */
- symindex symdef_count; /* how many there are */
+ symindex symdef_count; /* how many there are */
char *extended_names; /* clever intel extension */
/* when more compilers are standard C, this can be a time_t */
long armap_timestamp; /* Timestamp value written into armap.
@@ -79,9 +79,9 @@ struct artdata {
/* Goes in bfd's arelt_data slot */
struct areltdata {
- char * arch_header; /* it's actually a string */
- unsigned int parsed_size; /* octets of filesize not including ar_hdr */
- char *filename; /* null-terminated */
+ char * arch_header; /* it's actually a string */
+ unsigned int parsed_size; /* octets of filesize not including ar_hdr */
+ char *filename; /* null-terminated */
};
#define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
@@ -128,11 +128,11 @@ void bfd_void PARAMS ((bfd *ignore));
bfd *_bfd_new_bfd_contained_in PARAMS ((bfd *));
const bfd_target *_bfd_dummy_target PARAMS ((bfd *abfd));
-void bfd_dont_truncate_arname PARAMS ((bfd *abfd, CONST char *filename,
+void bfd_dont_truncate_arname PARAMS ((bfd *abfd, const char *filename,
char *hdr));
-void bfd_bsd_truncate_arname PARAMS ((bfd *abfd, CONST char *filename,
+void bfd_bsd_truncate_arname PARAMS ((bfd *abfd, const char *filename,
char *hdr));
-void bfd_gnu_truncate_arname PARAMS ((bfd *abfd, CONST char *filename,
+void bfd_gnu_truncate_arname PARAMS ((bfd *abfd, const char *filename,
char *hdr));
boolean bsd_write_armap PARAMS ((bfd *arch, unsigned int elength,
@@ -365,7 +365,8 @@ extern boolean _bfd_dwarf1_find_nearest_line
/* Find the nearest line using DWARF 2 debugging information. */
extern boolean _bfd_dwarf2_find_nearest_line
PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **,
- const char **, unsigned int *, unsigned int));
+ const char **, unsigned int *, unsigned int,
+ PTR *));
/* A routine to create entries for a bfd_link_hash_table. */
extern struct bfd_hash_entry *_bfd_link_hash_newfunc
@@ -551,10 +552,10 @@ extern boolean _bfd_sh_align_load_span
/* And more follows */
-void
+void
bfd_write_bigendian_4byte_int PARAMS ((bfd *abfd, int i));
-unsigned int
+unsigned int
bfd_log2 PARAMS ((bfd_vma x));
#define BFD_CACHE_MAX_OPEN 10
@@ -562,15 +563,15 @@ extern bfd *bfd_last_cache;
#define bfd_cache_lookup(x) \
((x)==bfd_last_cache? \
- (FILE*)(bfd_last_cache->iostream): \
+ (FILE*) (bfd_last_cache->iostream): \
bfd_cache_lookup_worker(x))
-boolean
-bfd_cache_init PARAMS ((bfd *abfd));
+boolean
+bfd_cache_init PARAMS ((bfd *abfd));
-boolean
-bfd_cache_close PARAMS ((bfd *abfd));
+boolean
+bfd_cache_close PARAMS ((bfd *abfd));
-FILE*
+FILE*
bfd_open_file PARAMS ((bfd *abfd));
FILE *
@@ -714,6 +715,14 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_386_RELATIVE",
"BFD_RELOC_386_GOTOFF",
"BFD_RELOC_386_GOTPC",
+ "BFD_RELOC_X86_64_GOT32",
+ "BFD_RELOC_X86_64_PLT32",
+ "BFD_RELOC_X86_64_COPY",
+ "BFD_RELOC_X86_64_GLOB_DAT",
+ "BFD_RELOC_X86_64_JUMP_SLOT",
+ "BFD_RELOC_X86_64_RELATIVE",
+ "BFD_RELOC_X86_64_GOTPCREL",
+ "BFD_RELOC_X86_64_32S",
"BFD_RELOC_NS32K_IMM_8",
"BFD_RELOC_NS32K_IMM_16",
"BFD_RELOC_NS32K_IMM_32",
@@ -765,6 +774,8 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_I370_D12",
"BFD_RELOC_CTOR",
"BFD_RELOC_ARM_PCREL_BRANCH",
+ "BFD_RELOC_ARM_PCREL_BLX",
+ "BFD_RELOC_THUMB_PCREL_BLX",
"BFD_RELOC_ARM_IMMEDIATE",
"BFD_RELOC_ARM_ADRL_IMMEDIATE",
"BFD_RELOC_ARM_OFFSET_IMM",
@@ -809,6 +820,13 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_SH_CODE",
"BFD_RELOC_SH_DATA",
"BFD_RELOC_SH_LABEL",
+ "BFD_RELOC_SH_LOOP_START",
+ "BFD_RELOC_SH_LOOP_END",
+ "BFD_RELOC_SH_COPY",
+ "BFD_RELOC_SH_GLOB_DAT",
+ "BFD_RELOC_SH_JMP_SLOT",
+ "BFD_RELOC_SH_RELATIVE",
+ "BFD_RELOC_SH_GOTPC",
"BFD_RELOC_THUMB_PCREL_BRANCH9",
"BFD_RELOC_THUMB_PCREL_BRANCH12",
"BFD_RELOC_THUMB_PCREL_BRANCH23",
@@ -857,6 +875,11 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_MN10300_32_PCREL",
"BFD_RELOC_MN10300_16_PCREL",
"BFD_RELOC_TIC30_LDP",
+ "BFD_RELOC_TIC54X_PARTLS7",
+ "BFD_RELOC_TIC54X_PARTMS9",
+ "BFD_RELOC_TIC54X_23",
+ "BFD_RELOC_TIC54X_16_OF_23",
+ "BFD_RELOC_TIC54X_MS7_OF_23",
"BFD_RELOC_FR30_48",
"BFD_RELOC_FR30_20",
"BFD_RELOC_FR30_6_IN_4",
@@ -889,28 +912,128 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_AVR_CALL",
"BFD_RELOC_VTABLE_INHERIT",
"BFD_RELOC_VTABLE_ENTRY",
+ "BFD_RELOC_IA64_IMM14",
+ "BFD_RELOC_IA64_IMM22",
+ "BFD_RELOC_IA64_IMM64",
+ "BFD_RELOC_IA64_DIR32MSB",
+ "BFD_RELOC_IA64_DIR32LSB",
+ "BFD_RELOC_IA64_DIR64MSB",
+ "BFD_RELOC_IA64_DIR64LSB",
+ "BFD_RELOC_IA64_GPREL22",
+ "BFD_RELOC_IA64_GPREL64I",
+ "BFD_RELOC_IA64_GPREL32MSB",
+ "BFD_RELOC_IA64_GPREL32LSB",
+ "BFD_RELOC_IA64_GPREL64MSB",
+ "BFD_RELOC_IA64_GPREL64LSB",
+ "BFD_RELOC_IA64_LTOFF22",
+ "BFD_RELOC_IA64_LTOFF64I",
+ "BFD_RELOC_IA64_PLTOFF22",
+ "BFD_RELOC_IA64_PLTOFF64I",
+ "BFD_RELOC_IA64_PLTOFF64MSB",
+ "BFD_RELOC_IA64_PLTOFF64LSB",
+ "BFD_RELOC_IA64_FPTR64I",
+ "BFD_RELOC_IA64_FPTR32MSB",
+ "BFD_RELOC_IA64_FPTR32LSB",
+ "BFD_RELOC_IA64_FPTR64MSB",
+ "BFD_RELOC_IA64_FPTR64LSB",
+ "BFD_RELOC_IA64_PCREL21B",
+ "BFD_RELOC_IA64_PCREL21BI",
+ "BFD_RELOC_IA64_PCREL21M",
+ "BFD_RELOC_IA64_PCREL21F",
+ "BFD_RELOC_IA64_PCREL22",
+ "BFD_RELOC_IA64_PCREL60B",
+ "BFD_RELOC_IA64_PCREL64I",
+ "BFD_RELOC_IA64_PCREL32MSB",
+ "BFD_RELOC_IA64_PCREL32LSB",
+ "BFD_RELOC_IA64_PCREL64MSB",
+ "BFD_RELOC_IA64_PCREL64LSB",
+ "BFD_RELOC_IA64_LTOFF_FPTR22",
+ "BFD_RELOC_IA64_LTOFF_FPTR64I",
+ "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
+ "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
+ "BFD_RELOC_IA64_SEGREL32MSB",
+ "BFD_RELOC_IA64_SEGREL32LSB",
+ "BFD_RELOC_IA64_SEGREL64MSB",
+ "BFD_RELOC_IA64_SEGREL64LSB",
+ "BFD_RELOC_IA64_SECREL32MSB",
+ "BFD_RELOC_IA64_SECREL32LSB",
+ "BFD_RELOC_IA64_SECREL64MSB",
+ "BFD_RELOC_IA64_SECREL64LSB",
+ "BFD_RELOC_IA64_REL32MSB",
+ "BFD_RELOC_IA64_REL32LSB",
+ "BFD_RELOC_IA64_REL64MSB",
+ "BFD_RELOC_IA64_REL64LSB",
+ "BFD_RELOC_IA64_LTV32MSB",
+ "BFD_RELOC_IA64_LTV32LSB",
+ "BFD_RELOC_IA64_LTV64MSB",
+ "BFD_RELOC_IA64_LTV64LSB",
+ "BFD_RELOC_IA64_IPLTMSB",
+ "BFD_RELOC_IA64_IPLTLSB",
+ "BFD_RELOC_IA64_COPY",
+ "BFD_RELOC_IA64_TPREL22",
+ "BFD_RELOC_IA64_TPREL64MSB",
+ "BFD_RELOC_IA64_TPREL64LSB",
+ "BFD_RELOC_IA64_LTOFF_TP22",
+ "BFD_RELOC_IA64_LTOFF22X",
+ "BFD_RELOC_IA64_LDXMOV",
+ "BFD_RELOC_M68HC11_HI8",
+ "BFD_RELOC_M68HC11_LO8",
+ "BFD_RELOC_M68HC11_3B",
+ "BFD_RELOC_CRIS_BDISP8",
+ "BFD_RELOC_CRIS_UNSIGNED_5",
+ "BFD_RELOC_CRIS_SIGNED_6",
+ "BFD_RELOC_CRIS_UNSIGNED_6",
+ "BFD_RELOC_CRIS_UNSIGNED_4",
+ "BFD_RELOC_860_COPY",
+ "BFD_RELOC_860_GLOB_DAT",
+ "BFD_RELOC_860_JUMP_SLOT",
+ "BFD_RELOC_860_RELATIVE",
+ "BFD_RELOC_860_PC26",
+ "BFD_RELOC_860_PLT26",
+ "BFD_RELOC_860_PC16",
+ "BFD_RELOC_860_LOW0",
+ "BFD_RELOC_860_SPLIT0",
+ "BFD_RELOC_860_LOW1",
+ "BFD_RELOC_860_SPLIT1",
+ "BFD_RELOC_860_LOW2",
+ "BFD_RELOC_860_SPLIT2",
+ "BFD_RELOC_860_LOW3",
+ "BFD_RELOC_860_LOGOT0",
+ "BFD_RELOC_860_SPGOT0",
+ "BFD_RELOC_860_LOGOT1",
+ "BFD_RELOC_860_SPGOT1",
+ "BFD_RELOC_860_LOGOTOFF0",
+ "BFD_RELOC_860_SPGOTOFF0",
+ "BFD_RELOC_860_LOGOTOFF1",
+ "BFD_RELOC_860_SPGOTOFF1",
+ "BFD_RELOC_860_LOGOTOFF2",
+ "BFD_RELOC_860_LOGOTOFF3",
+ "BFD_RELOC_860_LOPC",
+ "BFD_RELOC_860_HIGHADJ",
+ "BFD_RELOC_860_HAGOT",
+ "BFD_RELOC_860_HAGOTOFF",
+ "BFD_RELOC_860_HAPC",
+ "BFD_RELOC_860_HIGH",
+ "BFD_RELOC_860_HIGOT",
+ "BFD_RELOC_860_HIGOTOFF",
"@@overflow: BFD_RELOC_UNUSED@@",
};
#endif
reloc_howto_type *
-bfd_default_reloc_type_lookup
- PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
+bfd_default_reloc_type_lookup PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
-boolean
-bfd_generic_relax_section
- PARAMS ((bfd *abfd,
+boolean
+bfd_generic_relax_section PARAMS ((bfd *abfd,
asection *section,
struct bfd_link_info *,
boolean *));
-boolean
-bfd_generic_gc_sections
- PARAMS ((bfd *, struct bfd_link_info *));
+boolean
+bfd_generic_gc_sections PARAMS ((bfd *, struct bfd_link_info *));
bfd_byte *
-
-bfd_generic_get_relocated_section_contents PARAMS ((bfd *abfd,
+bfd_generic_get_relocated_section_contents PARAMS ((bfd *abfd,
struct bfd_link_info *link_info,
struct bfd_link_order *link_order,
bfd_byte *data,
@@ -918,19 +1041,18 @@ bfd_generic_get_relocated_section_contents PARAMS ((bfd *abfd,
asymbol **symbols));
extern const bfd_arch_info_type bfd_default_arch_struct;
-boolean
+boolean
bfd_default_set_arch_mach PARAMS ((bfd *abfd,
enum bfd_architecture arch,
unsigned long mach));
const bfd_arch_info_type *
-bfd_default_compatible
- PARAMS ((const bfd_arch_info_type *a,
+bfd_default_compatible PARAMS ((const bfd_arch_info_type *a,
const bfd_arch_info_type *b));
-boolean
+boolean
bfd_default_scan PARAMS ((const struct bfd_arch_info *info, const char *string));
struct elf_internal_shdr *
-bfd_elf_find_section PARAMS ((bfd *abfd, char *name));
+bfd_elf_find_section PARAMS ((bfd *abfd, char *name));
diff --git a/contrib/binutils/bfd/libcoff-in.h b/contrib/binutils/bfd/libcoff-in.h
index 9b1a026..e5f5f9e 100644
--- a/contrib/binutils/bfd/libcoff-in.h
+++ b/contrib/binutils/bfd/libcoff-in.h
@@ -43,6 +43,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define obj_coff_strings(bfd) (coff_data (bfd)->strings)
#define obj_coff_keep_strings(bfd) (coff_data (bfd)->keep_strings)
#define obj_coff_sym_hashes(bfd) (coff_data (bfd)->sym_hashes)
+#define obj_coff_strings_written(bfd) (coff_data (bfd)->strings_written)
#define obj_coff_local_toc_table(bfd) (coff_data(bfd)->local_toc_sym_map)
@@ -83,6 +84,8 @@ typedef struct coff_tdata
char *strings;
/* If this is true, the strings may not be freed. */
boolean keep_strings;
+ /* If this is true, the strings have been written out already. */
+ boolean strings_written;
/* is this a PE format coff file */
int pe;
@@ -97,6 +100,9 @@ typedef struct coff_tdata
/* Used by coff_find_nearest_line. */
PTR line_info;
+ /* A place to stash dwarf2 info for this bfd. */
+ PTR dwarf2_find_line_info;
+
/* The timestamp from the COFF file header. */
long timestamp;
@@ -126,6 +132,9 @@ struct xcoff_tdata
/* Basic COFF information. */
coff_data_type coff;
+ /* True if this is an XCOFF64 file. */
+ boolean xcoff64;
+
/* True if a large a.out header should be generated. */
boolean full_aouthdr;
diff --git a/contrib/binutils/bfd/libcoff.h b/contrib/binutils/bfd/libcoff.h
index bee4ce9..5115538 100644
--- a/contrib/binutils/bfd/libcoff.h
+++ b/contrib/binutils/bfd/libcoff.h
@@ -43,6 +43,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define obj_coff_strings(bfd) (coff_data (bfd)->strings)
#define obj_coff_keep_strings(bfd) (coff_data (bfd)->keep_strings)
#define obj_coff_sym_hashes(bfd) (coff_data (bfd)->sym_hashes)
+#define obj_coff_strings_written(bfd) (coff_data (bfd)->strings_written)
#define obj_coff_local_toc_table(bfd) (coff_data(bfd)->local_toc_sym_map)
@@ -83,6 +84,8 @@ typedef struct coff_tdata
char *strings;
/* If this is true, the strings may not be freed. */
boolean keep_strings;
+ /* If this is true, the strings have been written out already. */
+ boolean strings_written;
/* is this a PE format coff file */
int pe;
@@ -97,6 +100,9 @@ typedef struct coff_tdata
/* Used by coff_find_nearest_line. */
PTR line_info;
+ /* A place to stash dwarf2 info for this bfd. */
+ PTR dwarf2_find_line_info;
+
/* The timestamp from the COFF file header. */
long timestamp;
@@ -126,6 +132,9 @@ struct xcoff_tdata
/* Basic COFF information. */
coff_data_type coff;
+ /* True if this is an XCOFF64 file. */
+ boolean xcoff64;
+
/* True if a large a.out header should be generated. */
boolean full_aouthdr;
@@ -575,32 +584,32 @@ extern boolean ppc_process_before_allocation
typedef struct coff_ptr_struct
{
- /* Remembers the offset from the first symbol in the file for
+ /* Remembers the offset from the first symbol in the file for
this symbol. Generated by coff_renumber_symbols. */
unsigned int offset;
- /* Should the value of this symbol be renumbered. Used for
+ /* Should the value of this symbol be renumbered. Used for
XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. */
unsigned int fix_value : 1;
- /* Should the tag field of this symbol be renumbered.
+ /* Should the tag field of this symbol be renumbered.
Created by coff_pointerize_aux. */
unsigned int fix_tag : 1;
- /* Should the endidx field of this symbol be renumbered.
+ /* Should the endidx field of this symbol be renumbered.
Created by coff_pointerize_aux. */
unsigned int fix_end : 1;
- /* Should the x_csect.x_scnlen field be renumbered.
+ /* Should the x_csect.x_scnlen field be renumbered.
Created by coff_pointerize_aux. */
unsigned int fix_scnlen : 1;
- /* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the
+ /* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the
index into the line number entries. Set by
coff_slurp_symbol_table. */
unsigned int fix_line : 1;
- /* The container for the symbol structure as read and translated
+ /* The container for the symbol structure as read and translated
from the file. */
union {
@@ -610,35 +619,35 @@ union {
} combined_entry_type;
- /* Each canonical asymbol really looks like this: */
+/* Each canonical asymbol really looks like this: */
typedef struct coff_symbol_struct
{
- /* The actual symbol which the rest of BFD works with */
+ /* The actual symbol which the rest of BFD works with */
asymbol symbol;
- /* A pointer to the hidden information for this symbol */
+ /* A pointer to the hidden information for this symbol */
combined_entry_type *native;
- /* A pointer to the linenumber information for this symbol */
+ /* A pointer to the linenumber information for this symbol */
struct lineno_cache_entry *lineno;
- /* Have the line numbers been relocated yet ? */
+ /* Have the line numbers been relocated yet ? */
boolean done_lineno;
} coff_symbol_type;
- /* COFF symbol classifications. */
+/* COFF symbol classifications. */
enum coff_symbol_classification
{
- /* Global symbol. */
+ /* Global symbol. */
COFF_SYMBOL_GLOBAL,
- /* Common symbol. */
+ /* Common symbol. */
COFF_SYMBOL_COMMON,
- /* Undefined symbol. */
+ /* Undefined symbol. */
COFF_SYMBOL_UNDEFINED,
- /* Local symbol. */
+ /* Local symbol. */
COFF_SYMBOL_LOCAL,
- /* PE section symbol. */
+ /* PE section symbol. */
COFF_SYMBOL_PE_SECTION
};
@@ -713,6 +722,8 @@ typedef struct
boolean _bfd_coff_long_filenames;
boolean _bfd_coff_long_section_names;
unsigned int _bfd_coff_default_section_alignment_power;
+ boolean _bfd_coff_force_symnames_in_strings;
+ unsigned int _bfd_coff_debug_string_prefix_length;
void (*_bfd_coff_swap_filehdr_in) PARAMS ((
bfd *abfd,
PTR ext,
@@ -815,12 +826,12 @@ typedef struct
struct bfd_link_info *info,
bfd *abfd,
const char *name,
- flagword flags,
+ flagword flags,
asection *section,
bfd_vma value,
const char *string,
boolean copy,
- boolean collect,
+ boolean collect,
struct bfd_link_hash_entry **hashp));
boolean (*_bfd_coff_link_output_has_begun) PARAMS ((
@@ -910,6 +921,12 @@ typedef struct
#define bfd_coff_symname_in_debug(abfd, sym)\
((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
+#define bfd_coff_force_symnames_in_strings(abfd)\
+ (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
+
+#define bfd_coff_debug_string_prefix_length(abfd)\
+ (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
+
#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
((coff_backend_info (abfd)->_bfd_coff_print_aux)\
(abfd, file, base, symbol, aux, indaux))
diff --git a/contrib/binutils/bfd/linker.c b/contrib/binutils/bfd/linker.c
index 6e9ee65..1fb3cc5 100644
--- a/contrib/binutils/bfd/linker.c
+++ b/contrib/binutils/bfd/linker.c
@@ -60,7 +60,7 @@ SECTION
a.out (in <<aoutx.h>>) and ECOFF (in <<ecoff.c>>). The a.out
routines are used as examples throughout this section.
-@menu
+@menu
@* Creating a Linker Hash Table::
@* Adding Symbols to the Hash Table::
@* Performing the Final Link::
@@ -601,7 +601,7 @@ bfd_wrapped_link_hash_lookup (abfd, info, string, create, copy, follow)
struct bfd_link_hash_entry * with no explicit cast required on the
call. */
-void
+void
bfd_link_hash_traverse (table, func, info)
struct bfd_link_hash_table *table;
boolean (*func) PARAMS ((struct bfd_link_hash_entry *, PTR));
@@ -1361,7 +1361,7 @@ enum link_row
enum link_action
{
- FAIL, /* Abort. */
+ FAIL, /* Abort. */
UND, /* Mark symbol undefined. */
WEAK, /* Mark symbol weak undefined. */
DEF, /* Mark symbol defined. */
@@ -1464,7 +1464,7 @@ hash_entry_bfd (h)
or destructor names as collect2 does.
HASHP, if not NULL, is a place to store the created hash table
entry; if *HASHP is not NULL, the caller has already looked up
- the hash table entry, and stored it in *HASHP. */
+ the hash table entry, and stored it in *HASHP. */
boolean
_bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value,
@@ -2054,7 +2054,7 @@ _bfd_generic_final_link (abfd, info)
}
}
}
-
+
return true;
}
@@ -2452,7 +2452,7 @@ _bfd_generic_reloc_link_order (abfd, info, sec, link_order)
r = (arelent *) bfd_alloc (abfd, sizeof (arelent));
if (r == (arelent *) NULL)
return false;
-
+
r->address = link_order->offset;
r->howto = bfd_reloc_type_lookup (abfd, link_order->u.reloc.p->reloc);
if (r->howto == 0)
@@ -2524,7 +2524,7 @@ _bfd_generic_reloc_link_order (abfd, info, sec, link_order)
break;
}
ok = bfd_set_section_contents (abfd, sec, (PTR) buf,
- (file_ptr)
+ (file_ptr)
(link_order->offset *
bfd_octets_per_byte (abfd)), size);
free (buf);
@@ -2594,7 +2594,7 @@ _bfd_default_link_order (abfd, info, sec, link_order)
case bfd_data_link_order:
return bfd_set_section_contents (abfd, sec,
(PTR) link_order->u.data.contents,
- (file_ptr)
+ (file_ptr)
(link_order->offset *
bfd_octets_per_byte (abfd)),
link_order->size);
@@ -2603,7 +2603,6 @@ _bfd_default_link_order (abfd, info, sec, link_order)
/* Default routine to handle a bfd_fill_link_order. */
-/*ARGSUSED*/
static boolean
default_fill_link_order (abfd, info, sec, link_order)
bfd *abfd;
@@ -2630,8 +2629,8 @@ default_fill_link_order (abfd, info, sec, link_order)
for (i = 1; i < size; i += 2)
space[i] = fill;
result = bfd_set_section_contents (abfd, sec, space,
- (file_ptr)
- (link_order->offset *
+ (file_ptr)
+ (link_order->offset *
bfd_octets_per_byte (abfd)),
link_order->size);
free (space);
@@ -2732,7 +2731,7 @@ default_indirect_link_order (output_bfd, info, output_section, link_order,
if (h != NULL)
set_symbol_from_hash (sym, h);
}
- }
+ }
}
/* Get and relocate the section contents. */
@@ -2750,8 +2749,8 @@ default_indirect_link_order (output_bfd, info, output_section, link_order,
if (! bfd_set_section_contents (output_bfd, output_section,
(PTR) new_contents,
(file_ptr)
- (link_order->offset *
- bfd_octets_per_byte (output_bfd)),
+ (link_order->offset *
+ bfd_octets_per_byte (output_bfd)),
link_order->size))
goto error_return;
@@ -2803,8 +2802,6 @@ DESCRIPTION
*/
-
-
boolean
_bfd_generic_link_split_section (abfd, sec)
bfd *abfd ATTRIBUTE_UNUSED;
diff --git a/contrib/binutils/bfd/netbsd-core.c b/contrib/binutils/bfd/netbsd-core.c
index 828c2a1..b94c4a1 100644
--- a/contrib/binutils/bfd/netbsd-core.c
+++ b/contrib/binutils/bfd/netbsd-core.c
@@ -16,7 +16,7 @@ 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. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
@@ -29,7 +29,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <sys/core.h>
/*
- * FIXME: On NetBSD/sparc CORE_FPU_OFFSET should be (sizeof(struct trapframe))
+ * FIXME: On NetBSD/sparc CORE_FPU_OFFSET should be (sizeof (struct trapframe))
*/
struct netbsd_core_struct {
@@ -98,7 +98,7 @@ netbsd_core_file_p (abfd)
offset += core.c_seghdrsize;
- asect = (asection *) bfd_zalloc (abfd, sizeof(asection));
+ asect = (asection *) bfd_zalloc (abfd, sizeof (asection));
if (asect == NULL) {
bfd_set_error(bfd_error_no_memory);
goto punt;
@@ -118,7 +118,7 @@ netbsd_core_file_p (abfd)
asect->name = ".reg";
asect->flags = SEC_ALLOC + SEC_HAS_CONTENTS;
#ifdef CORE_FPU_OFFSET
- /* Hackish... */
+ /* Hackish... */
asect->_raw_size = CORE_FPU_OFFSET;
asect2 = (asection *)bfd_zalloc (abfd,
sizeof (asection));
@@ -193,9 +193,9 @@ netbsd_core_file_matches_executable_p (core_bfd, exec_bfd)
/* If somebody calls any byte-swapping routines, shoot them. */
static void
-swap_abort()
+swap_abort ()
{
- abort(); /* This way doesn't require any declaration for ANSI to fuck up */
+ abort (); /* This way doesn't require any declaration for ANSI to fuck up */
}
#define NO_GET ((bfd_vma (*) PARAMS (( const bfd_byte *))) swap_abort )
#define NO_PUT ((void (*) PARAMS ((bfd_vma, bfd_byte *))) swap_abort )
@@ -236,7 +236,7 @@ const bfd_target netbsd_core_vec =
bfd_false, bfd_false,
bfd_false, bfd_false
},
-
+
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (netbsd),
@@ -248,6 +248,6 @@ const bfd_target netbsd_core_vec =
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
(PTR) 0 /* backend_data */
};
diff --git a/contrib/binutils/bfd/netbsd.h b/contrib/binutils/bfd/netbsd.h
index 760ed95..d717824 100644
--- a/contrib/binutils/bfd/netbsd.h
+++ b/contrib/binutils/bfd/netbsd.h
@@ -19,33 +19,33 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA. */
-/* Check for our machine type (part of magic number). */
+/* Check for our machine type (part of magic number). */
#ifndef MACHTYPE_OK
#define MACHTYPE_OK(m) ((m) == DEFAULT_MID || (m) == M_UNKNOWN)
#endif
-/* This is the normal load address for executables. */
+/* This is the normal load address for executables. */
#define TEXT_START_ADDR TARGET_PAGE_SIZE
/* NetBSD ZMAGIC has its header in the text segment. */
#define N_HEADER_IN_TEXT(x) 1
-/* Determine if this is a shared library using the flags. */
+/* Determine if this is a shared library using the flags. */
#define N_SHARED_LIB(x) (N_DYNAMIC(x))
/* We have 6 bits of flags and 10 bits of machine ID. */
#define N_MACHTYPE(exec) \
- ((enum machine_type)(((exec).a_info >> 16) & 0x03ff))
+ ((enum machine_type) (((exec).a_info >> 16) & 0x03ff))
#define N_FLAGS(exec) \
(((exec).a_info >> 26) & 0x3f)
#define N_SET_INFO(exec, magic, type, flags) \
((exec).a_info = ((magic) & 0xffff) \
- | (((int)(type) & 0x3ff) << 16) \
+ | (((int) (type) & 0x3ff) << 16) \
| (((flags) & 0x3f) << 24))
#define N_SET_MACHTYPE(exec, machtype) \
((exec).a_info = \
- ((exec).a_info & 0xfb00ffff) | ((((int)(machtype))&0x3ff) << 16))
+ ((exec).a_info & 0xfb00ffff) | ((((int) (machtype))&0x3ff) << 16))
#define N_SET_FLAGS(exec, flags) \
((exec).a_info = \
((exec).a_info & 0x03ffffff) | ((flags & 0x03f) << 26))
diff --git a/contrib/binutils/bfd/opncls.c b/contrib/binutils/bfd/opncls.c
index 57ca0d0a2..39947da 100644
--- a/contrib/binutils/bfd/opncls.c
+++ b/contrib/binutils/bfd/opncls.c
@@ -1,5 +1,5 @@
/* opncls.c -- open and close a BFD.
- Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 1997
+ Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 1997, 2001
Free Software Foundation, Inc.
Written by Cygnus Support.
@@ -248,7 +248,7 @@ bfd_fdopenr (filename, target, fd)
be written through, although doing so requires that we end
the previous clause with a preposition. */
/* (O_ACCMODE) parens are to avoid Ultrix header file bug */
- switch (fdflags & O_ACCMODE)
+ switch (fdflags & (O_ACCMODE))
{
case O_RDONLY: nbfd->direction = read_direction; break;
case O_WRONLY: nbfd->direction = write_direction; break;
diff --git a/contrib/binutils/bfd/pe-arm.c b/contrib/binutils/bfd/pe-arm.c
index 6c6b659..a4e128b 100644
--- a/contrib/binutils/bfd/pe-arm.c
+++ b/contrib/binutils/bfd/pe-arm.c
@@ -31,7 +31,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define PCRELOFFSET true
#define COFF_LONG_SECTION_NAMES
-#ifndef bfd_arm_allocate_interworking_sections
+#ifndef bfd_arm_allocate_interworking_sections
#define bfd_arm_allocate_interworking_sections \
bfd_arm_pe_allocate_interworking_sections
#define bfd_arm_get_bfd_for_interworking \
@@ -39,7 +39,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define bfd_arm_process_before_allocation \
bfd_arm_pe_process_before_allocation
#endif
-
+
#ifdef ARM_WINCE
#define TARGET_UNDERSCORE 0
#endif
diff --git a/contrib/binutils/bfd/pe-i386.c b/contrib/binutils/bfd/pe-i386.c
index a2eb784..1e7e66e 100644
--- a/contrib/binutils/bfd/pe-i386.c
+++ b/contrib/binutils/bfd/pe-i386.c
@@ -20,7 +20,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
-
#define TARGET_SYM i386pe_vec
#define TARGET_NAME "pe-i386"
#define COFF_WITH_PE
diff --git a/contrib/binutils/bfd/pe-ppc.c b/contrib/binutils/bfd/pe-ppc.c
index 7d4a547..f96e68b 100644
--- a/contrib/binutils/bfd/pe-ppc.c
+++ b/contrib/binutils/bfd/pe-ppc.c
@@ -21,7 +21,6 @@ Boston, MA 02111-1307, USA. */
#include "bfd.h"
#include "sysdep.h"
-
#define E_FILENMLEN 18
#define PPC_PE
diff --git a/contrib/binutils/bfd/po/POTFILES.in b/contrib/binutils/bfd/po/POTFILES.in
index 409bf1d..f75b4ca 100644
--- a/contrib/binutils/bfd/po/POTFILES.in
+++ b/contrib/binutils/bfd/po/POTFILES.in
@@ -4,6 +4,7 @@ aout32.c
aout64.c
aout-adobe.c
aout-arm.c
+aout-cris.c
aoutf1.h
aout-ns32k.c
aout-sparcle.c
@@ -21,6 +22,7 @@ cf-i386lynx.c
cf-m68klynx.c
cf-sparclynx.c
cisco-core.c
+coff64-rs6000.c
coff-a29k.c
coff-alpha.c
coff-apollo.c
@@ -46,6 +48,7 @@ coff-stgo32.c
coff-svm68k.c
coffswap.h
coff-tic30.c
+coff-tic54x.c
coff-tic80.c
coff-u68k.c
coff-w65.c
@@ -57,6 +60,7 @@ cpu-alpha.c
cpu-arc.c
cpu-arm.c
cpu-avr.c
+cpu-cris.c
cpu-d10v.c
cpu-d30v.c
cpu-fr30.c
@@ -67,9 +71,12 @@ cpu-i370.c
cpu-i386.c
cpu-i860.c
cpu-i960.c
+cpu-ia64.c
cpu-m10200.c
cpu-m10300.c
cpu-m32r.c
+cpu-m68hc11.c
+cpu-m68hc12.c
cpu-m68k.c
cpu-m88k.c
cpu-mcore.c
@@ -81,6 +88,7 @@ cpu-rs6000.c
cpu-sh.c
cpu-sparc.c
cpu-tic30.c
+cpu-tic54x.c
cpu-tic80.c
cpu-v850.c
cpu-vax.c
@@ -93,19 +101,26 @@ dwarf2.c
ecoff.c
ecofflink.c
ecoffswap.h
+efi-app-ia32.c
+efi-app-ia64.c
elf32-arc.c
elf32-arm.h
elf32-avr.c
elf32.c
+elf32-cris.c
elf32-d10v.c
elf32-d30v.c
elf32-fr30.c
elf32-gen.c
+elf32-hppa.c
+elf32-hppa.h
elf32-i370.c
elf32-i386.c
elf32-i860.c
elf32-i960.c
elf32-m32r.c
+elf32-m68hc11.c
+elf32-m68hc12.c
elf32-m68k.c
elf32-m88k.c
elf32-mcore.c
@@ -113,19 +128,24 @@ elf32-mips.c
elf32-pj.c
elf32-ppc.c
elf32-sh.c
+elf32-sh-lin.c
elf32-sparc.c
elf32-v850.c
elf64-alpha.c
elf64.c
elf64-gen.c
+elf64-hppa.c
+elf64-hppa.h
elf64-mips.c
elf64-sparc.c
+elf64-x86-64.c
elfarm-nabi.c
elfarm-oabi.c
elf-bfd.h
elf.c
elfcode.h
elfcore.h
+elf-hppa.h
elflink.c
elflink.h
elf-m10200.c
@@ -232,3 +252,4 @@ vms-hdr.c
vms-misc.c
vms-tir.c
xcofflink.c
+xcoff-target.h
diff --git a/contrib/binutils/bfd/po/bfd.pot b/contrib/binutils/bfd/po/bfd.pot
index b08ec36..e77b05d 100644
--- a/contrib/binutils/bfd/po/bfd.pot
+++ b/contrib/binutils/bfd/po/bfd.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-04-04 22:10+0930\n"
+"POT-Creation-Date: 2001-01-11 11:54-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -14,140 +14,155 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
-#: aout-adobe.c:183
+#: aout-adobe.c:189
#, c-format
msgid "%s: Unknown section type in a.out.adobe file: %x\n"
msgstr ""
-#: aoutx.h:1244 aoutx.h:1658
+#: aout-cris.c:205
+#, c-format
+msgid "%s: Invalid relocation type exported: %d"
+msgstr ""
+
+#: aout-cris.c:249
+#, c-format
+msgid "%s: Invalid relocation type imported: %d"
+msgstr ""
+
+#: aout-cris.c:260
+#, c-format
+msgid "%s: Bad relocation record imported: %d"
+msgstr ""
+
+#: aoutx.h:1259 aoutx.h:1673
#, c-format
msgid "%s: can not represent section `%s' in a.out object file format"
msgstr ""
-#: aoutx.h:1628
+#: aoutx.h:1643
#, c-format
msgid ""
"%s: can not represent section for symbol `%s' in a.out object file format"
msgstr ""
-#: aoutx.h:1630
+#: aoutx.h:1645
msgid "*unknown*"
msgstr ""
-#: aoutx.h:3674
+#: aoutx.h:3684
#, c-format
msgid "%s: relocateable link from %s to %s not supported"
msgstr ""
-#: archive.c:1724
+#: archive.c:1820
msgid "Warning: writing archive was slow: rewriting timestamp\n"
msgstr ""
-#: archive.c:1990
+#: archive.c:2086
msgid "Reading archive file mod timestamp"
msgstr ""
#. FIXME: bfd can't call perror.
-#: archive.c:2014
+#: archive.c:2113
msgid "Writing updated armap timestamp"
msgstr ""
-#: bfd.c:274
+#: bfd.c:273
msgid "No error"
msgstr ""
-#: bfd.c:275
+#: bfd.c:274
msgid "System call error"
msgstr ""
-#: bfd.c:276
+#: bfd.c:275
msgid "Invalid bfd target"
msgstr ""
-#: bfd.c:277
+#: bfd.c:276
msgid "File in wrong format"
msgstr ""
-#: bfd.c:278
+#: bfd.c:277
msgid "Invalid operation"
msgstr ""
-#: bfd.c:279
+#: bfd.c:278
msgid "Memory exhausted"
msgstr ""
-#: bfd.c:280
+#: bfd.c:279
msgid "No symbols"
msgstr ""
-#: bfd.c:281
+#: bfd.c:280
msgid "Archive has no index; run ranlib to add one"
msgstr ""
-#: bfd.c:282
+#: bfd.c:281
msgid "No more archived files"
msgstr ""
-#: bfd.c:283
+#: bfd.c:282
msgid "Malformed archive"
msgstr ""
-#: bfd.c:284
+#: bfd.c:283
msgid "File format not recognized"
msgstr ""
-#: bfd.c:285
+#: bfd.c:284
msgid "File format is ambiguous"
msgstr ""
-#: bfd.c:286
+#: bfd.c:285
msgid "Section has no contents"
msgstr ""
-#: bfd.c:287
+#: bfd.c:286
msgid "Nonrepresentable section on output"
msgstr ""
-#: bfd.c:288
+#: bfd.c:287
msgid "Symbol needs debug section which does not exist"
msgstr ""
-#: bfd.c:289
+#: bfd.c:288
msgid "Bad value"
msgstr ""
-#: bfd.c:290
+#: bfd.c:289
msgid "File truncated"
msgstr ""
-#: bfd.c:291
+#: bfd.c:290
msgid "File too big"
msgstr ""
-#: bfd.c:292
+#: bfd.c:291
msgid "#<Invalid error code>"
msgstr ""
-#: bfd.c:679
+#: bfd.c:675
#, c-format
msgid "bfd assertion fail %s:%d"
msgstr ""
-#: bfd.c:697
+#: bfd.c:693
#, c-format
msgid "BFD internal error, aborting at %s line %d in %s\n"
msgstr ""
-#: bfd.c:701
+#: bfd.c:697
#, c-format
msgid "BFD internal error, aborting at %s line %d\n"
msgstr ""
-#: bfd.c:703
+#: bfd.c:699
msgid "Please report this bug.\n"
msgstr ""
-#: binary.c:298
+#: binary.c:303
#, c-format
msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx."
msgstr ""
@@ -156,19 +171,19 @@ msgstr ""
msgid "Missing IHCONST"
msgstr ""
-#: coff-a29k.c:182
+#: coff-a29k.c:181
msgid "Missing IHIHALF"
msgstr ""
-#: coff-a29k.c:214
+#: coff-a29k.c:213
msgid "Unrecognized reloc"
msgstr ""
-#: coff-a29k.c:427
+#: coff-a29k.c:425
msgid "missing IHCONST reloc"
msgstr ""
-#: coff-a29k.c:518
+#: coff-a29k.c:516
msgid "missing IHIHALF reloc"
msgstr ""
@@ -176,126 +191,126 @@ msgstr ""
msgid "GP relative relocation used when GP not defined"
msgstr ""
-#: coff-alpha.c:1486 elf64-alpha.c:3990
+#: coff-alpha.c:1486 elf64-alpha.c:4004
msgid "using multiple gp values"
msgstr ""
-#: coff-alpha.c:1992 coff-mips.c:1435
+#: coff-alpha.c:1992 coff-mips.c:1434
msgid "GP relative relocation when GP not defined"
msgstr ""
-#: coff-arm.c:1020 elf32-arm.h:258
+#: coff-arm.c:1018 elf32-arm.h:246
#, c-format
msgid "%s: unable to find THUMB glue '%s' for `%s'"
msgstr ""
-#: coff-arm.c:1049 elf32-arm.h:291
+#: coff-arm.c:1047 elf32-arm.h:281
#, c-format
msgid "%s: unable to find ARM glue '%s' for `%s'"
msgstr ""
-#: coff-arm.c:1331 coff-arm.c:1426 elf32-arm.h:857 elf32-arm.h:955
+#: coff-arm.c:1335 coff-arm.c:1430 elf32-arm.h:841 elf32-arm.h:946
#, c-format
msgid "%s(%s): warning: interworking not enabled."
msgstr ""
-#: coff-arm.c:1335 elf32-arm.h:958
+#: coff-arm.c:1339 elf32-arm.h:949
#, c-format
msgid " first occurrence: %s: arm call to thumb"
msgstr ""
-#: coff-arm.c:1430 elf32-arm.h:860
+#: coff-arm.c:1434 elf32-arm.h:844
#, c-format
msgid " first occurrence: %s: thumb call to arm"
msgstr ""
-#: coff-arm.c:1433
+#: coff-arm.c:1437
msgid " consider relinking with --support-old-code enabled"
msgstr ""
-#: coff-arm.c:1722 coff-tic80.c:682 cofflink.c:2980
+#: coff-arm.c:1726 coff-tic80.c:682 cofflink.c:2991
#, c-format
msgid "%s: bad reloc address 0x%lx in section `%s'"
msgstr ""
-#: coff-arm.c:2060
+#: coff-arm.c:2063
#, c-format
msgid "%s: illegal symbol index in reloc: %d"
msgstr ""
-#: coff-arm.c:2189
+#: coff-arm.c:2191
#, c-format
msgid "%s: ERROR: compiled for APCS-%d whereas target %s uses APCS-%d"
msgstr ""
-#: coff-arm.c:2204
+#: coff-arm.c:2206
#, c-format
msgid ""
"%s: ERROR: passes floats in float registers whereas target %s uses integer "
"registers"
msgstr ""
-#: coff-arm.c:2207
+#: coff-arm.c:2209
#, c-format
msgid ""
"%s: ERROR: passes floats in integer registers whereas target %s uses float "
"registers"
msgstr ""
-#: coff-arm.c:2222
+#: coff-arm.c:2224
#, c-format
msgid ""
"%s: ERROR: compiled as position independent code, whereas target %s is "
"absolute position"
msgstr ""
-#: coff-arm.c:2225
+#: coff-arm.c:2227
#, c-format
msgid ""
"%s: ERROR: compiled as absolute position code, whereas target %s is position "
"independent"
msgstr ""
-#: coff-arm.c:2254
+#: coff-arm.c:2256
#, c-format
msgid "Warning: input file %s supports interworking, whereas %s does not."
msgstr ""
-#: coff-arm.c:2257
+#: coff-arm.c:2259
#, c-format
msgid "Warning: input file %s does not support interworking, whereas %s does."
msgstr ""
-#: coff-arm.c:2285
+#: coff-arm.c:2286
#, c-format
msgid "private flags = %x:"
msgstr ""
-#: coff-arm.c:2293 elf32-arm.h:2089
+#: coff-arm.c:2294 elf32-arm.h:2210
msgid " [floats passed in float registers]"
msgstr ""
-#: coff-arm.c:2295 elf32-arm.h:2091
+#: coff-arm.c:2296
msgid " [floats passed in integer registers]"
msgstr ""
-#: coff-arm.c:2298 elf32-arm.h:2094
+#: coff-arm.c:2299 elf32-arm.h:2213
msgid " [position independent]"
msgstr ""
-#: coff-arm.c:2300 elf32-arm.h:2096
+#: coff-arm.c:2301
msgid " [absolute position]"
msgstr ""
-#: coff-arm.c:2304
+#: coff-arm.c:2305
msgid " [interworking flag not initialised]"
msgstr ""
-#: coff-arm.c:2306
+#: coff-arm.c:2307
msgid " [interworking supported]"
msgstr ""
-#: coff-arm.c:2308
+#: coff-arm.c:2309
msgid " [interworking not supported]"
msgstr ""
@@ -311,42 +326,47 @@ msgstr ""
msgid "Warning: Clearing the interworking flag of %s due to outside request"
msgstr ""
-#: coffcode.h:3965
+#: coffcode.h:2136
+#, c-format
+msgid "Unrecognized TI COFF target id '0x%x'"
+msgstr ""
+
+#: coffcode.h:4194
#, c-format
msgid "%s: warning: illegal symbol index %ld in line numbers"
msgstr ""
-#: coffcode.h:3979
+#: coffcode.h:4208
#, c-format
msgid "%s: warning: duplicate line number information for `%s'"
msgstr ""
-#: coffcode.h:4334
+#: coffcode.h:4568
#, c-format
msgid "%s: Unrecognized storage class %d for %s symbol `%s'"
msgstr ""
-#: coffcode.h:4465
+#: coffcode.h:4699
#, c-format
msgid "warning: %s: local symbol `%s' has no section"
msgstr ""
-#: coffcode.h:4578
+#: coff-tic54x.c:376 coffcode.h:4810
#, c-format
msgid "%s: warning: illegal symbol index %ld in relocs"
msgstr ""
-#: coffcode.h:4616
+#: coffcode.h:4848
#, c-format
msgid "%s: illegal relocation type %d at address 0x%lx"
msgstr ""
-#: coffgen.c:1613
+#: coffgen.c:1631
#, c-format
msgid "%s: bad string table size %lu"
msgstr ""
-#: coffgen.c:2076
+#: coffgen.c:2093
#, c-format
msgid "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld"
msgstr ""
@@ -355,296 +375,426 @@ msgstr ""
msgid "uncertain calling convention for non-COFF symbol"
msgstr ""
-#: cofflink.c:518 elflink.h:1568
+#: cofflink.c:526 elflink.h:1648
#, c-format
msgid "Warning: type of symbol `%s' changed from %d to %d in %s"
msgstr ""
-#: cofflink.c:2285
+#: cofflink.c:2289
#, c-format
msgid "%s: relocs in section `%s', but it has no contents"
msgstr ""
-#: cofflink.c:2619 coffswap.h:904
+#: cofflink.c:2628 coffswap.h:894
#, c-format
msgid "%s: %s: reloc overflow: 0x%lx > 0xffff"
msgstr ""
-#: cofflink.c:2628 coffswap.h:891
+#: cofflink.c:2637 coffswap.h:880
#, c-format
msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff"
msgstr ""
-#: coff-mips.c:875 elf32-mips.c:1406
-msgid "GP relative relocation when _gp not defined"
+#: coff-m68k.c:475 coff-mips.c:2432 elf32-m68k.c:2265
+msgid "unsupported reloc type"
msgstr ""
-#: coff-mips.c:2433
-msgid "unsupported reloc type"
+#: coff-mips.c:875 elf32-mips.c:1417
+msgid "GP relative relocation when _gp not defined"
msgstr ""
#. No other sections should appear in -membedded-pic
#. code.
-#: coff-mips.c:2470
+#: coff-mips.c:2469
msgid "reloc against unsupported section"
msgstr ""
-#: coff-mips.c:2478
+#: coff-mips.c:2477
msgid "reloc not properly aligned"
msgstr ""
-#: coff-tic80.c:445
+#: coff-tic54x.c:263 coff-tic80.c:445
#, c-format
msgid "Unrecognized reloc type 0x%x"
msgstr ""
-#: coff-w65.c:383
+#: coff-w65.c:369
#, c-format
msgid "ignoring reloc %s\n"
msgstr ""
-#: dwarf2.c:429
+#: dwarf2.c:423
msgid "Dwarf Error: Can't find .debug_abbrev section."
msgstr ""
-#: dwarf2.c:447
+#: dwarf2.c:441
#, c-format
msgid "Dwarf Error: Abbrev offset (%u) bigger than abbrev size (%u)."
msgstr ""
-#: dwarf2.c:627
+#: dwarf2.c:624
#, c-format
msgid "Dwarf Error: Invalid or unhandled FORM value: %d."
msgstr ""
-#: dwarf2.c:700
+#: dwarf2.c:697
msgid "Dwarf Error: mangled line number section (bad file number)."
msgstr ""
-#: dwarf2.c:791
+#: dwarf2.c:782
msgid "Dwarf Error: Can't find .debug_line section."
msgstr ""
-#: dwarf2.c:963
+#: dwarf2.c:806
+#, c-format
+msgid "Dwarf Error: Line offset (%u) bigger than line size (%u)."
+msgstr ""
+
+#: dwarf2.c:973
msgid "Dwarf Error: mangled line number section."
msgstr ""
-#: dwarf2.c:1151 dwarf2.c:1307
+#: dwarf2.c:1152 dwarf2.c:1306
#, c-format
msgid "Dwarf Error: Could not find abbrev number %d."
msgstr ""
-#: dwarf2.c:1268
+#: dwarf2.c:1267
#, c-format
msgid ""
"Dwarf Error: found dwarf version '%hu', this reader only handles version 2 "
"information."
msgstr ""
-#: dwarf2.c:1275
+#: dwarf2.c:1274
#, c-format
msgid ""
"Dwarf Error: found address size '%u', this reader can not handle sizes "
"greater than '%u'."
msgstr ""
-#: dwarf2.c:1298
+#: dwarf2.c:1297
#, c-format
msgid "Dwarf Error: Bad abbrev number: %d."
msgstr ""
-#: ecoff.c:1325
+#: ecoff.c:1323
#, c-format
msgid "Unknown basic type %d"
msgstr ""
-#: ecoff.c:1597
+#: ecoff.c:1592
#, c-format
msgid ""
"\n"
" End+1 symbol: %ld"
msgstr ""
-#: ecoff.c:1604 ecoff.c:1607
+#: ecoff.c:1599 ecoff.c:1602
#, c-format
msgid ""
"\n"
" First symbol: %ld"
msgstr ""
-#: ecoff.c:1619
+#: ecoff.c:1614
#, c-format
msgid ""
"\n"
" End+1 symbol: %-7ld Type: %s"
msgstr ""
-#: ecoff.c:1626
+#: ecoff.c:1621
#, c-format
msgid ""
"\n"
" Local symbol: %ld"
msgstr ""
-#: ecoff.c:1634
+#: ecoff.c:1629
#, c-format
msgid ""
"\n"
" struct; End+1 symbol: %ld"
msgstr ""
-#: ecoff.c:1639
+#: ecoff.c:1634
#, c-format
msgid ""
"\n"
" union; End+1 symbol: %ld"
msgstr ""
-#: ecoff.c:1644
+#: ecoff.c:1639
#, c-format
msgid ""
"\n"
" enum; End+1 symbol: %ld"
msgstr ""
-#: ecoff.c:1650
+#: ecoff.c:1645
#, c-format
msgid ""
"\n"
" Type: %s"
msgstr ""
-#: elf32-arm.h:1787 elf32-i386.c:1304 elf32-ppc.c:3092
+#: elf32-arm.h:1179
+#, c-format
+msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'."
+msgstr ""
+
+#: elf32-arm.h:1375
+#, c-format
+msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'."
+msgstr ""
+
+#: elf-hppa.h:1369 elf-hppa.h:1402 elf32-arm.h:1853 elf32-i386.c:1428
+#: elf32-ppc.c:3096 elf32-sh.c:2997 elf64-x86-64.c:271
#, c-format
msgid ""
"%s: warning: unresolvable relocation against symbol `%s' from %s section"
msgstr ""
-#: elf-m10200.c:455 elf-m10300.c:670 elf32-arm.h:1853 elf32-avr.c:844
-#: elf32-d10v.c:493 elf32-fr30.c:651 elf32-m32r.c:1265 elf32-v850.c:1677
+#: elf-m10200.c:455 elf-m10300.c:669 elf32-arm.h:1927 elf32-avr.c:842
+#: elf32-cris.c:431 elf32-d10v.c:478 elf32-fr30.c:651 elf32-i860.c:1051
+#: elf32-m32r.c:1265 elf32-v850.c:1672
msgid "internal error: out of range error"
msgstr ""
-#: elf-m10200.c:459 elf-m10300.c:674 elf32-arm.h:1857 elf32-avr.c:848
-#: elf32-d10v.c:497 elf32-fr30.c:655 elf32-m32r.c:1269 elf32-v850.c:1681
+#: elf-m10200.c:459 elf-m10300.c:673 elf32-arm.h:1931 elf32-avr.c:846
+#: elf32-cris.c:435 elf32-d10v.c:482 elf32-fr30.c:655 elf32-i860.c:1055
+#: elf32-m32r.c:1269 elf32-v850.c:1676
msgid "internal error: unsupported relocation error"
msgstr ""
-#: elf-m10200.c:463 elf-m10300.c:678 elf32-arm.h:1861 elf32-d10v.c:501
+#: elf-m10200.c:463 elf-m10300.c:677 elf32-arm.h:1935 elf32-d10v.c:486
#: elf32-m32r.c:1273
msgid "internal error: dangerous error"
msgstr ""
-#: elf-m10200.c:467 elf-m10300.c:682 elf32-arm.h:1865 elf32-avr.c:856
-#: elf32-d10v.c:505 elf32-fr30.c:663 elf32-m32r.c:1277 elf32-v850.c:1701
+#: elf-m10200.c:467 elf-m10300.c:681 elf32-arm.h:1939 elf32-avr.c:854
+#: elf32-cris.c:443 elf32-d10v.c:490 elf32-fr30.c:663 elf32-i860.c:1063
+#: elf32-m32r.c:1277 elf32-v850.c:1696
msgid "internal error: unknown error"
msgstr ""
-#: elf32-arm.h:1891
+#: elf32-arm.h:1967
#, c-format
msgid ""
"Warning: Not setting interwork flag of %s since it has already been "
"specified as non-interworking"
msgstr ""
-#: elf32-arm.h:1895
+#: elf32-arm.h:1971
#, c-format
msgid "Warning: Clearing the interwork flag of %s due to outside request"
msgstr ""
-#: elf32-arm.h:1943
+#: elf32-arm.h:2019
#, c-format
msgid ""
"Warning: Clearing the interwork flag in %s because non-interworking code in "
"%s has been linked with it"
msgstr ""
-#: elf32-arm.h:1977
+#: elf32-arm.h:2113
#, c-format
-msgid "%s: compiled for a %s endian system and target is %s endian"
+msgid ""
+"Error: %s compiled for EABI version %d, whereas %s is compiled for version %d"
msgstr ""
-#: elf32-arm.h:2023
+#: elf32-arm.h:2127
#, c-format
msgid "Error: %s compiled for APCS-%d, whereas %s is compiled for APCS-%d"
msgstr ""
-#: elf32-arm.h:2031
+#: elf32-arm.h:2138
#, c-format
msgid ""
"Error: %s passes floats in %s registers, whereas %s passes them in %s "
"registers"
msgstr ""
-#: elf32-arm.h:2034 elf32-arm.h:2036
+#: elf32-arm.h:2141 elf32-arm.h:2143
msgid "float"
msgstr ""
-#: elf32-arm.h:2034 elf32-arm.h:2036
+#: elf32-arm.h:2141 elf32-arm.h:2143
msgid "integer"
msgstr ""
-#: elf32-arm.h:2039
+#: elf32-arm.h:2150
#, c-format
-msgid "Error: %s is compiled as position %s code, whereas %s is not"
+msgid "Error: %s uses %s floating point, whereas %s uses %s floating point"
msgstr ""
-#: elf32-arm.h:2042
-msgid "independent"
+#: elf32-arm.h:2153 elf32-arm.h:2155
+msgid "soft"
msgstr ""
-#: elf32-arm.h:2042
-msgid "dependent"
+#: elf32-arm.h:2153 elf32-arm.h:2155
+msgid "hard"
msgstr ""
-#: elf32-arm.h:2048
+#: elf32-arm.h:2162
#, c-format
msgid "Warning: %s %s interworking, whereas %s %s"
msgstr ""
-#: elf32-arm.h:2051
+#: elf32-arm.h:2165
msgid "supports"
msgstr ""
-#: elf32-arm.h:2051
+#: elf32-arm.h:2165
msgid "does not support"
msgstr ""
-#: elf32-arm.h:2053
+#: elf32-arm.h:2167
msgid "does not"
msgstr ""
-#: elf32-arm.h:2053
+#: elf32-arm.h:2167
msgid "does"
msgstr ""
-#. Ignore init flag - it may not be set, despite the flags field containing valid data.
-#: elf32-arm.h:2076 elf32-m68k.c:430 elf32-mips.c:2634
+#. Ignore init flag - it may not be set, despite the flags field
+#. containing valid data.
+#: elf32-arm.h:2193 elf32-cris.c:615 elf32-m68k.c:430 elf32-mips.c:2695
#, c-format
msgid "private flags = %lx:"
msgstr ""
-#: elf32-arm.h:2079
+#: elf32-arm.h:2202
msgid " [interworking enabled]"
msgstr ""
-#: elf32-arm.h:2081
-msgid " [interworking not enabled]"
-msgstr ""
-
-#: elf32-arm.h:2084
+#: elf32-arm.h:2205
msgid " [APCS-26]"
msgstr ""
-#: elf32-arm.h:2086
+#: elf32-arm.h:2207
msgid " [APCS-32]"
msgstr ""
-#: elf32-avr.c:852 elf32-fr30.c:659 elf32-v850.c:1685
+#: elf32-arm.h:2216
+msgid " [new ABI]"
+msgstr ""
+
+#: elf32-arm.h:2219
+msgid " [old ABI]"
+msgstr ""
+
+#: elf32-arm.h:2222
+msgid " [software FP]"
+msgstr ""
+
+#: elf32-arm.h:2229
+msgid " [Version1 EABI]"
+msgstr ""
+
+#: elf32-arm.h:2232
+msgid " [sorted symbol table]"
+msgstr ""
+
+#: elf32-arm.h:2234
+msgid " [unsorted symbol table]"
+msgstr ""
+
+#: elf32-arm.h:2240
+msgid " <EABI version unrecognised>"
+msgstr ""
+
+#: elf32-arm.h:2247
+msgid " [relocatable executable]"
+msgstr ""
+
+#: elf32-arm.h:2250
+msgid " [has entry point]"
+msgstr ""
+
+#: elf32-arm.h:2255
+msgid "<Unrecognised flag bits set>"
+msgstr ""
+
+#: elf32-avr.c:850 elf32-cris.c:439 elf32-fr30.c:659 elf32-i860.c:1059
+#: elf32-v850.c:1680
msgid "internal error: dangerous relocation"
msgstr ""
-#: elf32-i386.c:239
+#: elf32-cris.c:618
+msgid " [symbols have a _ prefix]"
+msgstr ""
+
+#: elf32-cris.c:657
+#, c-format
+msgid "%s: uses _-prefixed symbols, but writing file with non-prefixed symbols"
+msgstr ""
+
+#: elf32-cris.c:658
+#, c-format
+msgid "%s: uses non-prefixed symbols, but writing file with _-prefixed symbols"
+msgstr ""
+
+#: elf32-hppa.c:606
+#, c-format
+msgid "%s(%s+0x%lx): cannot find stub entry %s"
+msgstr ""
+
+#: elf32-hppa.c:667
+#, c-format
+msgid "%s: cannot create stub entry %s"
+msgstr ""
+
+#: elf32-hppa.c:859
+#, c-format
+msgid "%s(%s+0x%lx): cannot relocate %s, recompile with -ffunction-sections"
+msgstr ""
+
+#: elf32-hppa.c:872 elf32-hppa.c:1568
+#, c-format
+msgid "Could not find relocation section for %s"
+msgstr ""
+
+#: elf32-hppa.c:1011 elf32-hppa.c:3362
+#, c-format
+msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections"
+msgstr ""
+
+#: elf32-hppa.c:1323
+#, c-format
+msgid ""
+"%s: relocation %s can not be used when making a shared object; recompile "
+"with -fPIC"
+msgstr ""
+
+#: elf32-hppa.c:1343
+#, c-format
+msgid ""
+"%s: relocation %s should not be used when making a shared object; recompile "
+"with -fPIC"
+msgstr ""
+
+#: elf32-hppa.c:2755
+#, c-format
+msgid "%s: duplicate export stub %s"
+msgstr ""
+
+#: elf32-hppa.c:3253
+#, c-format
+msgid "%s(%s+0x%lx): fixing %s"
+msgstr ""
+
+#: elf32-hppa.c:3856
+#, c-format
+msgid "%s(%s+0x%lx): cannot handle %s for %s"
+msgstr ""
+
+#: elf32-hppa.c:4173
+msgid ".got section not immediately after .plt section"
+msgstr ""
+
+#: elf32-i386.c:273
#, c-format
msgid "%s: invalid relocation type %d"
msgstr ""
@@ -685,149 +835,151 @@ msgstr ""
msgid " [cpu32]"
msgstr ""
-#: elf32-mcore.c:329
-#, c-format
-msgid "%s: compiled for a %s endian system and target is %s endian.\n"
-msgstr ""
-
-#: elf32-mcore.c:377 elf32-mcore.c:504
+#: elf32-mcore.c:366 elf32-mcore.c:493
#, c-format
msgid "%s: Relocation %s (%d) is not currently supported.\n"
msgstr ""
-#: elf32-mcore.c:463
+#: elf32-mcore.c:452
#, c-format
msgid "%s: Unknown relocation type %d\n"
msgstr ""
-#: elf32-mips.c:1565
+#: elf32-mips.c:1576
msgid "32bits gp relative relocation occurs for an external symbol"
msgstr ""
-#: elf32-mips.c:1714
+#: elf32-mips.c:1725
#, c-format
msgid "Linking mips16 objects into %s format is not supported"
msgstr ""
-#: elf32-mips.c:2469 elf32-ppc.c:1408
-#, c-format
-msgid "%s: compiled for a big endian system and target is little endian"
-msgstr ""
-
-#: elf32-mips.c:2471 elf32-ppc.c:1410
-#, c-format
-msgid "%s: compiled for a little endian system and target is big endian"
-msgstr ""
-
-#: elf32-mips.c:2520
+#: elf32-mips.c:2582
#, c-format
msgid "%s: linking PIC files with non-PIC files"
msgstr ""
-#: elf32-mips.c:2530
+#: elf32-mips.c:2592
#, c-format
msgid "%s: linking abicalls files with non-abicalls files"
msgstr ""
-#: elf32-mips.c:2560
+#: elf32-mips.c:2621
#, c-format
msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)"
msgstr ""
-#: elf32-mips.c:2569
+#: elf32-mips.c:2630
#, c-format
msgid "%s: ISA mismatch (%d) with previous modules (%d)"
msgstr ""
-#: elf32-mips.c:2592
+#: elf32-mips.c:2653
#, c-format
msgid "%s: ABI mismatch: linking %s module with previous %s modules"
msgstr ""
-#: elf32-mips.c:2606 elf32-ppc.c:1477 elf64-sparc.c:2844
+#: elf32-mips.c:2667 elf32-ppc.c:1477 elf64-sparc.c:2971
#, c-format
msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
msgstr ""
-#: elf32-mips.c:2637
+#: elf32-mips.c:2698
msgid " [abi=O32]"
msgstr ""
-#: elf32-mips.c:2639
+#: elf32-mips.c:2700
msgid " [abi=O64]"
msgstr ""
-#: elf32-mips.c:2641
+#: elf32-mips.c:2702
msgid " [abi=EABI32]"
msgstr ""
-#: elf32-mips.c:2643
+#: elf32-mips.c:2704
msgid " [abi=EABI64]"
msgstr ""
-#: elf32-mips.c:2645
+#: elf32-mips.c:2706
msgid " [abi unknown]"
msgstr ""
-#: elf32-mips.c:2647
+#: elf32-mips.c:2708
msgid " [abi=N32]"
msgstr ""
-#: elf32-mips.c:2649
+#: elf32-mips.c:2710
msgid " [abi=64]"
msgstr ""
-#: elf32-mips.c:2651
+#: elf32-mips.c:2712
msgid " [no abi set]"
msgstr ""
-#: elf32-mips.c:2654
+#: elf32-mips.c:2715
msgid " [mips1]"
msgstr ""
-#: elf32-mips.c:2656
+#: elf32-mips.c:2717
msgid " [mips2]"
msgstr ""
-#: elf32-mips.c:2658
+#: elf32-mips.c:2719
msgid " [mips3]"
msgstr ""
-#: elf32-mips.c:2660
+#: elf32-mips.c:2721
msgid " [mips4]"
msgstr ""
-#: elf32-mips.c:2662
+#: elf32-mips.c:2723
+msgid " [mips5]"
+msgstr ""
+
+#: elf32-mips.c:2725
+msgid " [mips32]"
+msgstr ""
+
+#: elf32-mips.c:2727
+msgid " [mips64]"
+msgstr ""
+
+#: elf32-mips.c:2729
msgid " [unknown ISA]"
msgstr ""
-#: elf32-mips.c:2665
+#: elf32-mips.c:2732
msgid " [32bitmode]"
msgstr ""
-#: elf32-mips.c:2667
+#: elf32-mips.c:2734
msgid " [not 32bitmode]"
msgstr ""
-#: elf32-mips.c:4270
+#: elf32-mips.c:4388
msgid "static procedure (no name)"
msgstr ""
-#: elf32-mips.c:4887 elf64-alpha.c:4364
+#: elf32-mips.c:5005 elf64-alpha.c:4377
#, c-format
msgid "%s: illegal section name `%s'"
msgstr ""
-#: elf32-mips.c:5414
+#: elf32-mips.c:5570
msgid "not enough GOT space for local GOT entries"
msgstr ""
-#: elf32-mips.c:6493
+#: elf32-mips.c:6686
#, c-format
msgid "%s: %s+0x%lx: jump to stub routine which is not jal"
msgstr ""
-#: elf32-mips.c:7521
+#: elf32-mips.c:7673
+#, c-format
+msgid "Malformed reloc detected for section %s"
+msgstr ""
+
+#: elf32-mips.c:7750
#, c-format
msgid "%s: CALL16 reloc at 0x%lx not against global symbol"
msgstr ""
@@ -849,156 +1001,146 @@ msgstr ""
msgid "%s: Unknown special linker type %d"
msgstr ""
-#: elf32-ppc.c:2251 elf32-ppc.c:2285 elf32-ppc.c:2320
+#: elf32-ppc.c:2245 elf32-ppc.c:2279 elf32-ppc.c:2314
#, c-format
msgid "%s: relocation %s cannot be used when making a shared object"
msgstr ""
-#: elf32-ppc.c:3123
+#: elf32-ppc.c:3129
#, c-format
msgid "%s: unknown relocation type %d for symbol %s"
msgstr ""
-#: elf32-ppc.c:3491 elf32-ppc.c:3513 elf32-ppc.c:3562
+#: elf32-ppc.c:3493 elf32-ppc.c:3514 elf32-ppc.c:3564
#, c-format
msgid ""
"%s: The target (%s) of a %s relocation is in the wrong output section (%s)"
msgstr ""
-#: elf32-ppc.c:3628
+#: elf32-ppc.c:3630
#, c-format
msgid "%s: Relocation %s is not yet supported for symbol %s."
msgstr ""
-#: elf32-sh.c:681
+#: elf32-sh.c:1084
#, c-format
msgid "%s: 0x%lx: warning: bad R_SH_USES offset"
msgstr ""
-#: elf32-sh.c:693
+#: elf32-sh.c:1096
#, c-format
msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x"
msgstr ""
-#: elf32-sh.c:710
+#: elf32-sh.c:1113
#, c-format
msgid "%s: 0x%lx: warning: bad R_SH_USES load offset"
msgstr ""
-#: elf32-sh.c:725
+#: elf32-sh.c:1128
#, c-format
msgid "%s: 0x%lx: warning: could not find expected reloc"
msgstr ""
-#: elf32-sh.c:762
+#: elf32-sh.c:1165
#, c-format
msgid "%s: 0x%lx: warning: symbol in unexpected section"
msgstr ""
-#: elf32-sh.c:884
+#: elf32-sh.c:1287
#, c-format
msgid "%s: 0x%lx: warning: could not find expected COUNT reloc"
msgstr ""
-#: elf32-sh.c:893
+#: elf32-sh.c:1296
#, c-format
msgid "%s: 0x%lx: warning: bad count"
msgstr ""
-#: elf32-sh.c:1279 elf32-sh.c:1666
+#: elf32-sh.c:1689 elf32-sh.c:2076
#, c-format
msgid "%s: 0x%lx: fatal: reloc overflow while relaxing"
msgstr ""
-#: elf32-sparc.c:1486 elf64-sparc.c:2242
+#: elf32-sparc.c:1512 elf64-sparc.c:2262
#, c-format
msgid "%s: probably compiled without -fPIC?"
msgstr ""
-#: elf32-sparc.c:1856
-#, c-format
-msgid "%s: compiled for a v8plus system and target is v8"
-msgstr ""
-
-#: elf32-sparc.c:1865
-#, c-format
-msgid "%s: compiled for a v8plusa system and target is v8plus"
-msgstr ""
-
-#: elf32-sparc.c:1873
+#: elf32-sparc.c:1962
#, c-format
msgid "%s: compiled for a 64 bit system and target is 32 bit"
msgstr ""
-#: elf32-sparc.c:1888
+#: elf32-sparc.c:1976
#, c-format
msgid "%s: linking little endian files with big endian files"
msgstr ""
-#: elf32-v850.c:680
+#: elf32-v850.c:677
#, c-format
msgid "Variable `%s' cannot occupy in multiple small data regions"
msgstr ""
-#: elf32-v850.c:683
+#: elf32-v850.c:680
#, c-format
msgid ""
"Variable `%s' can only be in one of the small, zero, and tiny data regions"
msgstr ""
-#: elf32-v850.c:686
+#: elf32-v850.c:683
#, c-format
msgid ""
"Variable `%s' cannot be in both small and zero data regions simultaneously"
msgstr ""
-#: elf32-v850.c:689
+#: elf32-v850.c:686
#, c-format
msgid ""
"Variable `%s' cannot be in both small and tiny data regions simultaneously"
msgstr ""
-#: elf32-v850.c:692
+#: elf32-v850.c:689
#, c-format
msgid ""
"Variable `%s' cannot be in both zero and tiny data regions simultaneously"
msgstr ""
-#: elf32-v850.c:1070
+#: elf32-v850.c:1066
msgid "FAILED to find previous HI16 reloc\n"
msgstr ""
-#: elf32-v850.c:1689
+#: elf32-v850.c:1684
msgid "could not locate special linker symbol __gp"
msgstr ""
-#: elf32-v850.c:1693
+#: elf32-v850.c:1688
msgid "could not locate special linker symbol __ep"
msgstr ""
-#: elf32-v850.c:1697
+#: elf32-v850.c:1692
msgid "could not locate special linker symbol __ctbp"
msgstr ""
-#: elf32-v850.c:1886
+#: elf32-v850.c:1881
#, c-format
msgid "%s: Architecture mismatch with previous modules"
msgstr ""
-#: elf32-v850.c:1905
+#: elf32-v850.c:1900
#, c-format
msgid "private flags = %lx: "
msgstr ""
-#: elf32-v850.c:1910
+#: elf32-v850.c:1905
msgid "v850 architecture"
msgstr ""
-#: elf32-v850.c:1911
+#: elf32-v850.c:1906
msgid "v850e architecture"
msgstr ""
-#: elf32-v850.c:1912
+#: elf32-v850.c:1907
msgid "v850ea architecture"
msgstr ""
@@ -1006,175 +1148,175 @@ msgstr ""
msgid "GPDISP relocation did not find ldah and lda instructions"
msgstr ""
-#: elf64-alpha.c:3004
+#: elf64-alpha.c:3014
#, c-format
msgid "%s: .got subsegment exceeds 64K (size %d)"
msgstr ""
-#: elf64-sparc.c:1249
+#: elf64-sparc.c:1248
#, c-format
msgid "%s: check_relocs: unhandled reloc type %d"
msgstr ""
-#: elf64-sparc.c:1286
+#: elf64-sparc.c:1285
msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER"
msgstr ""
-#: elf64-sparc.c:1306
+#: elf64-sparc.c:1305
msgid ""
"Register %%g%d used incompatibly: previously declared in %s to %s, in %s "
"redefined to %s"
msgstr ""
-#: elf64-sparc.c:1329
+#: elf64-sparc.c:1328
#, c-format
msgid "Symbol `%s' has differing types: previously %s, REGISTER in %s"
msgstr ""
-#: elf64-sparc.c:1375
+#: elf64-sparc.c:1374
#, c-format
msgid "Symbol `%s' has differing types: REGISTER in %s, %s in %s"
msgstr ""
-#: elf64-sparc.c:2825
+#: elf64-sparc.c:2952
#, c-format
msgid "%s: linking UltraSPARC specific with HAL specific code"
msgstr ""
-#: elf.c:323
+#: elf.c:325
#, c-format
msgid "%s: invalid string offset %u >= %lu for section `%s'"
msgstr ""
-#: elf.c:546
+#: elf.c:566
msgid ""
"\n"
"Program Header:\n"
msgstr ""
-#: elf.c:594
+#: elf.c:614
msgid ""
"\n"
"Dynamic Section:\n"
msgstr ""
-#: elf.c:696
+#: elf.c:743
msgid ""
"\n"
"Version definitions:\n"
msgstr ""
-#: elf.c:719
+#: elf.c:766
msgid ""
"\n"
"Version References:\n"
msgstr ""
-#: elf.c:724
+#: elf.c:771
#, c-format
msgid " required from %s:\n"
msgstr ""
-#: elf.c:1286
+#: elf.c:1359
#, c-format
msgid "%s: invalid link %lu for reloc section %s (index %u)"
msgstr ""
-#: elf.c:2045
+#: elf.c:2113
#, c-format
msgid ""
"creating section symbol, name = %s, value = 0x%.8lx, index = %d, section = "
"0x%.8lx\n"
msgstr ""
-#: elf.c:2648
+#: elf.c:2716
#, c-format
msgid "%s: Not enough room for program headers (allocated %u, need %u)"
msgstr ""
-#: elf.c:2747
+#: elf.c:2815
#, c-format
msgid "%s: Not enough room for program headers, try linking with -N"
msgstr ""
-#: elf.c:2873
+#: elf.c:2941
#, c-format
msgid "Error: First section in segment (%s) starts at 0x%x"
msgstr ""
-#: elf.c:2876
+#: elf.c:2944
#, c-format
msgid " whereas segment starts at 0x%x"
msgstr ""
-#: elf.c:3146
+#: elf.c:3217
#, c-format
msgid "%s: warning: allocated section `%s' not in segment"
msgstr ""
-#: elf.c:3528
+#: elf.c:3616
#, c-format
msgid "%s: symbol `%s' required but not present"
msgstr ""
-#: elf.c:3537
+#: elf.c:3625
#, c-format
msgid ""
"elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = "
"0x%.8lx%s\n"
msgstr ""
-#: elf.c:3679
+#: elf.c:3866
#, c-format
msgid "%s: warning: Empty loadable segment detected\n"
msgstr ""
-#: elf.c:4956
+#: elf.c:5213
#, c-format
msgid "%s: unsupported relocation type %s"
msgstr ""
-#: elfcode.h:1061
+#: elfcode.h:1084
#, c-format
msgid "%s: version count (%ld) does not match symbol count (%ld)"
msgstr ""
-#: elflink.c:423
+#: elflink.c:432
#, c-format
msgid "%s: Section %s is already to large to put hole of %ld bytes in"
msgstr ""
-#: elflink.h:1388
+#: elflink.h:1465
#, c-format
msgid "%s: %s: invalid version %u (max %d)"
msgstr ""
-#: elflink.h:1429
+#: elflink.h:1506
#, c-format
msgid "%s: %s: invalid needed version %d"
msgstr ""
-#: elflink.h:1546
+#: elflink.h:1626
#, c-format
msgid "Warning: size of symbol `%s' changed from %lu to %lu in %s"
msgstr ""
-#: elflink.h:1790
+#: elflink.h:1872
#, c-format
msgid "%s: warning: unexpected redefinition of `%s'"
msgstr ""
-#: elflink.h:3480
+#: elflink.h:3659
#, c-format
msgid "warning: type and size of dynamic symbol `%s' are not defined"
msgstr ""
-#: elflink.h:3752
+#: elflink.h:3931
#, c-format
msgid "%s: undefined versioned symbol name %s"
msgstr ""
-#: elflink.h:4983
+#: elflink.h:5180
#, c-format
msgid "%s: could not find output section %s for input section %s"
msgstr ""
@@ -1274,16 +1416,26 @@ msgstr ""
msgid "%s: address 0x%s out of range for Intex Hex file"
msgstr ""
-#: libbfd.c:484
+#: libbfd.c:471
#, c-format
msgid "not mapping: data=%lx mapped=%d\n"
msgstr ""
-#: libbfd.c:487
+#: libbfd.c:474
msgid "not mapping: env var not set\n"
msgstr ""
-#: linker.c:2679
+#: libbfd.c:1370
+#, c-format
+msgid "%s: compiled for a big endian system and target is little endian"
+msgstr ""
+
+#: libbfd.c:1372
+#, c-format
+msgid "%s: compiled for a little endian system and target is big endian"
+msgstr ""
+
+#: linker.c:2678
#, c-format
msgid "Attempt to do relocateable link with %s input and %s output"
msgstr ""
@@ -1299,330 +1451,328 @@ msgid "Unhandled OSF/1 core file section type %d\n"
msgstr ""
#. XXX code yet to be written.
-#: peicode.h:806
+#: peicode.h:807
#, c-format
msgid "%s: Unhandled import type; %x"
msgstr ""
-#: peicode.h:811
+#: peicode.h:812
#, c-format
msgid "%s: Unrecognised import type; %x"
msgstr ""
-#: peicode.h:825
+#: peicode.h:826
#, c-format
msgid "%s: Unrecognised import name type; %x"
msgstr ""
-#: peicode.h:1182
+#: peicode.h:1183
#, c-format
msgid "%s: Unrecognised machine type (0x%x) in Import Library Format archive"
msgstr ""
-#: peicode.h:1194
+#: peicode.h:1195
#, c-format
msgid ""
"%s: Recognised but unhandled machine type (0x%x) in Import Library Format "
"archive"
msgstr ""
-#: peicode.h:1211
+#: peicode.h:1212
#, c-format
msgid "%s: size field is zero in Import Library Format header"
msgstr ""
-#: peicode.h:1239
+#: peicode.h:1240
#, c-format
msgid "%s: string not null terminated in ILF object file."
msgstr ""
-#: peigen.c:938
+#: peigen.c:993
#, c-format
msgid "%s: line number overflow: 0x%lx > 0xffff"
msgstr ""
-#: peigen.c:950
+#: peigen.c:1011
#, c-format
-msgid "%s: reloc overflow: 0x%lx > 0xffff"
+msgid "%s: reloc overflow 1: 0x%lx > 0xffff"
msgstr ""
-#: peigen.c:963
+#: peigen.c:1024
msgid "Export Directory [.edata (or where ever we found it)]"
msgstr ""
-#: peigen.c:964
+#: peigen.c:1025
msgid "Import Directory [parts of .idata]"
msgstr ""
-#: peigen.c:965
+#: peigen.c:1026
msgid "Resource Directory [.rsrc]"
msgstr ""
-#: peigen.c:966
+#: peigen.c:1027
msgid "Exception Directory [.pdata]"
msgstr ""
-#: peigen.c:967
+#: peigen.c:1028
msgid "Security Directory"
msgstr ""
-#: peigen.c:968
+#: peigen.c:1029
msgid "Base Relocation Directory [.reloc]"
msgstr ""
-#: peigen.c:969
+#: peigen.c:1030
msgid "Debug Directory"
msgstr ""
-#: peigen.c:970
+#: peigen.c:1031
msgid "Description Directory"
msgstr ""
-#: peigen.c:971
+#: peigen.c:1032
msgid "Special Directory"
msgstr ""
-#: peigen.c:972
+#: peigen.c:1033
msgid "Thread Storage Directory [.tls]"
msgstr ""
-#: peigen.c:973
+#: peigen.c:1034
msgid "Load Configuration Directory"
msgstr ""
-#: peigen.c:974
+#: peigen.c:1035
msgid "Bound Import Directory"
msgstr ""
-#: peigen.c:975
+#: peigen.c:1036
msgid "Import Address Table Directory"
msgstr ""
-#: peigen.c:976 peigen.c:977 peigen.c:978
-msgid "Reserved"
+#: peigen.c:1037
+msgid "Delay Import Directory"
msgstr ""
-#: peigen.c:1022
-msgid ""
-"\n"
-"The import table is the .idata section\n"
+#: peigen.c:1038 peigen.c:1039
+msgid "Reserved"
msgstr ""
-#: peigen.c:1044
+#: peigen.c:1103
msgid ""
"\n"
"There is an import table, but the section containing it could not be found\n"
msgstr ""
-#: peigen.c:1048
+#: peigen.c:1108
#, c-format
msgid ""
"\n"
"There is an import table in %s at 0x%lx\n"
msgstr ""
-#: peigen.c:1089
+#: peigen.c:1147
#, c-format
msgid ""
"\n"
"Function descriptor located at the start address: %04lx\n"
msgstr ""
-#: peigen.c:1092
+#: peigen.c:1150
#, c-format
msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
msgstr ""
-#: peigen.c:1098
+#: peigen.c:1156
msgid ""
"\n"
"No reldata section! Function descriptor not decoded.\n"
msgstr ""
-#: peigen.c:1103
+#: peigen.c:1161
+#, c-format
msgid ""
"\n"
-"The Import Tables (interpreted .idata section contents)\n"
+"The Import Tables (interpreted %s section contents)\n"
msgstr ""
-#: peigen.c:1105
+#: peigen.c:1164
msgid " vma: Hint Time Forward DLL First\n"
msgstr ""
-#: peigen.c:1107
+#: peigen.c:1166
msgid " Table Stamp Chain Name Thunk\n"
msgstr ""
-#: peigen.c:1157
+#: peigen.c:1216
#, c-format
msgid ""
"\n"
"\tDLL Name: %s\n"
msgstr ""
-#: peigen.c:1161 peigen.c:1224
+#: peigen.c:1220 peigen.c:1283
msgid "\tvma: Hint/Ord Member-Name\n"
msgstr ""
-#: peigen.c:1223
+#: peigen.c:1282
msgid "\tThe Import Address Table (difference found)\n"
msgstr ""
-#: peigen.c:1230
+#: peigen.c:1289
msgid "\t>>> Ran out of IAT members!\n"
msgstr ""
-#: peigen.c:1248
+#: peigen.c:1308
msgid "\tThe Import Address Table is identical\n"
msgstr ""
-#: peigen.c:1297
-msgid ""
-"\n"
-"The export table is the .edata section\n"
-msgstr ""
-
-#: peigen.c:1319
+#: peigen.c:1381
msgid ""
"\n"
"There is an export table, but the section containing it could not be found\n"
msgstr ""
-#: peigen.c:1323
+#: peigen.c:1386
#, c-format
msgid ""
"\n"
"There is an export table in %s at 0x%lx\n"
msgstr ""
-#: peigen.c:1355
+#: peigen.c:1417
+#, c-format
msgid ""
"\n"
-"The Export Tables (interpreted .edata section contents)\n"
+"The Export Tables (interpreted %s section contents)\n"
"\n"
msgstr ""
-#: peigen.c:1358
+#: peigen.c:1421
#, c-format
msgid "Export Flags \t\t\t%lx\n"
msgstr ""
-#: peigen.c:1361
+#: peigen.c:1424
#, c-format
msgid "Time/Date stamp \t\t%lx\n"
msgstr ""
-#: peigen.c:1364
+#: peigen.c:1427
#, c-format
msgid "Major/Minor \t\t\t%d/%d\n"
msgstr ""
-#: peigen.c:1367
+#: peigen.c:1430
msgid "Name \t\t\t\t"
msgstr ""
-#: peigen.c:1373
+#: peigen.c:1436
#, c-format
msgid "Ordinal Base \t\t\t%ld\n"
msgstr ""
-#: peigen.c:1376
+#: peigen.c:1439
msgid "Number in:\n"
msgstr ""
-#: peigen.c:1379
+#: peigen.c:1442
#, c-format
-msgid "\tExport Address Table \t\t%lx\n"
+msgid "\tExport Address Table \t\t%08lx\n"
msgstr ""
-#: peigen.c:1383
+#: peigen.c:1446
#, c-format
-msgid "\t[Name Pointer/Ordinal] Table\t%lu\n"
+msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
msgstr ""
-#: peigen.c:1386
+#: peigen.c:1449
msgid "Table Addresses\n"
msgstr ""
-#: peigen.c:1389
+#: peigen.c:1452
msgid "\tExport Address Table \t\t"
msgstr ""
-#: peigen.c:1394
+#: peigen.c:1457
msgid "\tName Pointer Table \t\t"
msgstr ""
-#: peigen.c:1399
+#: peigen.c:1462
msgid "\tOrdinal Table \t\t\t"
msgstr ""
-#: peigen.c:1415
+#: peigen.c:1476
#, c-format
msgid ""
"\n"
"Export Address Table -- Ordinal Base %ld\n"
msgstr ""
-#: peigen.c:1436
+#: peigen.c:1495
msgid "Forwarder RVA"
msgstr ""
-#: peigen.c:1444
+#: peigen.c:1506
msgid "Export RVA"
msgstr ""
-#: peigen.c:1451
+#: peigen.c:1513
msgid ""
"\n"
"[Ordinal/Name Pointer] Table\n"
msgstr ""
-#: peigen.c:1496
+#: peigen.c:1568
#, c-format
msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n"
msgstr ""
-#: peigen.c:1500
+#: peigen.c:1572
msgid ""
"\n"
"The Function Table (interpreted .pdata section contents)\n"
msgstr ""
-#: peigen.c:1502
+#: peigen.c:1575
+msgid " vma:\t\t\tBegin Address End Address Unwind Info\n"
+msgstr ""
+
+#: peigen.c:1578
msgid " vma:\t\tBegin End EH EH PrologEnd Exception\n"
msgstr ""
-#: peigen.c:1504
+#: peigen.c:1580
msgid " \t\tAddress Address Handler Data Address Mask\n"
msgstr ""
-#: peigen.c:1576
+#: peigen.c:1652
msgid " Register save millicode"
msgstr ""
-#: peigen.c:1579
+#: peigen.c:1655
msgid " Register restore millicode"
msgstr ""
-#: peigen.c:1582
+#: peigen.c:1658
msgid " Glue code sequence"
msgstr ""
-#: peigen.c:1628
+#: peigen.c:1709
msgid ""
"\n"
"\n"
"PE File Base Relocations (interpreted .reloc section contents)\n"
msgstr ""
-#: peigen.c:1663
+#: peigen.c:1744
#, c-format
msgid ""
"\n"
"Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n"
msgstr ""
-#: peigen.c:1676
+#: peigen.c:1757
#, c-format
msgid "\treloc %4d offset %4x [%4lx] %s"
msgstr ""
@@ -1630,232 +1780,242 @@ msgstr ""
#. The MS dumpbin program reportedly ands with 0xff0f before
#. printing the characteristics field. Not sure why. No reason to
#. emulate it here.
-#: peigen.c:1714
+#: peigen.c:1796
#, c-format
msgid ""
"\n"
"Characteristics 0x%x\n"
msgstr ""
-#: pe-mips.c:657
+#: pe-mips.c:653
#, c-format
msgid "%s: `ld -r' not supported with PE MIPS objects\n"
msgstr ""
-#: pe-mips.c:820
+#. OK, at this point the following variables are set up:
+#. src = VMA of the memory we're fixing up
+#. mem = pointer to memory we're fixing up
+#. val = VMA of what we need to refer to
+#.
+#: pe-mips.c:789
+#, c-format
+msgid "%s: unimplemented %s\n"
+msgstr ""
+
+#: pe-mips.c:815
#, c-format
msgid "%s: jump too far away\n"
msgstr ""
-#: pe-mips.c:847
+#: pe-mips.c:842
#, c-format
msgid "%s: bad pair/reflo after refhi\n"
msgstr ""
-#: ppcboot.c:418
+#: ppcboot.c:422
msgid ""
"\n"
"ppcboot header:\n"
msgstr ""
-#: ppcboot.c:419
+#: ppcboot.c:423
#, c-format
msgid "Entry offset = 0x%.8lx (%ld)\n"
msgstr ""
-#: ppcboot.c:420
+#: ppcboot.c:424
#, c-format
msgid "Length = 0x%.8lx (%ld)\n"
msgstr ""
-#: ppcboot.c:423
+#: ppcboot.c:427
#, c-format
msgid "Flag field = 0x%.2x\n"
msgstr ""
-#: ppcboot.c:429
+#: ppcboot.c:433
#, c-format
msgid "Partition name = \"%s\"\n"
msgstr ""
-#: ppcboot.c:448
+#: ppcboot.c:452
#, c-format
msgid ""
"\n"
"Partition[%d] start = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
msgstr ""
-#: ppcboot.c:454
+#: ppcboot.c:458
#, c-format
msgid "Partition[%d] end = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
msgstr ""
-#: ppcboot.c:460
+#: ppcboot.c:464
#, c-format
msgid "Partition[%d] sector = 0x%.8lx (%ld)\n"
msgstr ""
-#: ppcboot.c:461
+#: ppcboot.c:465
#, c-format
msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
msgstr ""
-#: som.c:5335
+#: som.c:5355
msgid "som_sizeof_headers unimplemented"
msgstr ""
-#: srec.c:290
+#: srec.c:300
#, c-format
msgid "%s:%d: Unexpected character `%s' in S-record file\n"
msgstr ""
-#: syms.c:974
+#: syms.c:968
msgid "Unsupported .stab relocation"
msgstr ""
-#: vms-gsd.c:357
+#: vms-gsd.c:354
#, c-format
msgid "bfd_make_section (%s) failed"
msgstr ""
-#: vms-gsd.c:371
+#: vms-gsd.c:368
#, c-format
msgid "bfd_set_section_flags (%s, %x) failed"
msgstr ""
-#: vms-gsd.c:407
+#: vms-gsd.c:404
#, c-format
msgid "Size mismatch section %s=%lx, %s=%lx"
msgstr ""
-#: vms-gsd.c:702
+#: vms-gsd.c:699
#, c-format
msgid "unknown gsd/egsd subtype %d"
msgstr ""
-#: vms-hdr.c:405
+#: vms-hdr.c:403
msgid "Object module NOT error-free !\n"
msgstr ""
-#: vms-misc.c:541
+#: vms-misc.c:539
#, c-format
msgid "Stack overflow (%d) in _bfd_vms_push"
msgstr ""
-#: vms-misc.c:560
+#: vms-misc.c:557
msgid "Stack underflow in _bfd_vms_pop"
msgstr ""
-#: vms-misc.c:931
+#: vms-misc.c:915
msgid "_bfd_vms_output_counted called with zero bytes"
msgstr ""
-#: vms-misc.c:936
+#: vms-misc.c:920
msgid "_bfd_vms_output_counted called with too many bytes"
msgstr ""
-#: vms-misc.c:1069
+#: vms-misc.c:1051
#, c-format
msgid "Symbol %s replaced by %s\n"
msgstr ""
-#: vms-misc.c:1133
+#: vms-misc.c:1113
#, c-format
msgid "failed to enter %s"
msgstr ""
-#: vms-tir.c:69
+#: vms-tir.c:68
msgid "No Mem !"
msgstr ""
-#: vms-tir.c:309
+#: vms-tir.c:302
msgid "Bad section index in ETIR_S_C_STA_PQ"
msgstr ""
-#: vms-tir.c:324
+#: vms-tir.c:317
#, c-format
msgid "Unsupported STA cmd %d"
msgstr ""
-#: vms-tir.c:329 vms-tir.c:1287
+#: vms-tir.c:322 vms-tir.c:1274
#, c-format
msgid "Reserved STA cmd %d"
msgstr ""
-#: vms-tir.c:436
+#: vms-tir.c:428
#, c-format
msgid "ETIR_S_C_STO_GBL: no symbol \"%s\""
msgstr ""
-#: vms-tir.c:457
+#: vms-tir.c:449
#, c-format
msgid "ETIR_S_C_STO_CA: no symbol \"%s\""
msgstr ""
-#: vms-tir.c:470
+#: vms-tir.c:462
msgid "ETIR_S_C_STO_RB/AB: Not supported"
msgstr ""
-#: vms-tir.c:528
+#: vms-tir.c:520
msgid "ETIR_S_C_STO_LP_PSB: Not supported"
msgstr ""
-#: vms-tir.c:534
+#: vms-tir.c:526
msgid "ETIR_S_C_STO_HINT_GBL: not implemented"
msgstr ""
-#: vms-tir.c:540
+#: vms-tir.c:532
msgid "ETIR_S_C_STO_HINT_PS: not implemented"
msgstr ""
-#: vms-tir.c:544 vms-tir.c:1460
+#: vms-tir.c:536 vms-tir.c:1446
#, c-format
msgid "Reserved STO cmd %d"
msgstr ""
-#: vms-tir.c:657
+#: vms-tir.c:649
msgid "ETIR_S_C_OPR_INSV: Not supported"
msgstr ""
-#: vms-tir.c:675
+#: vms-tir.c:667
msgid "ETIR_S_C_OPR_USH: Not supported"
msgstr ""
-#: vms-tir.c:681
+#: vms-tir.c:673
msgid "ETIR_S_C_OPR_ROT: Not supported"
msgstr ""
-#: vms-tir.c:700
+#: vms-tir.c:692
msgid "ETIR_S_C_OPR_REDEF: Not supported"
msgstr ""
-#: vms-tir.c:706
+#: vms-tir.c:698
msgid "ETIR_S_C_OPR_DFLIT: Not supported"
msgstr ""
-#: vms-tir.c:710 vms-tir.c:1656
+#: vms-tir.c:702 vms-tir.c:1641
#, c-format
msgid "Reserved OPR cmd %d"
msgstr ""
-#: vms-tir.c:779 vms-tir.c:1726
+#: vms-tir.c:770 vms-tir.c:1710
#, c-format
msgid "Reserved CTL cmd %d"
msgstr ""
-#: vms-tir.c:808
+#: vms-tir.c:798
msgid "ETIR_S_C_STC_LP: not supported"
msgstr ""
-#: vms-tir.c:826
+#: vms-tir.c:816
msgid "ETIR_S_C_STC_GBL: not supported"
msgstr ""
-#: vms-tir.c:834
+#: vms-tir.c:824
msgid "ETIR_S_C_STC_GCA: not supported"
msgstr ""
-#: vms-tir.c:843
+#: vms-tir.c:833
msgid "ETIR_S_C_STC_PS: not supported"
msgstr ""
@@ -1864,11 +2024,11 @@ msgstr ""
#. * arg: -
#. *
#.
-#: vms-tir.c:1187
+#: vms-tir.c:1174
msgid "Stack-from-image not implemented"
msgstr ""
-#: vms-tir.c:1207
+#: vms-tir.c:1194
msgid "Stack-entry-mask not fully implemented"
msgstr ""
@@ -1881,171 +2041,171 @@ msgstr ""
#. * compare argument descriptor with symbol argument (ARG$V_PASSMECH)
#. * and stack TRUE (args match) or FALSE (args dont match) value
#.
-#: vms-tir.c:1223
+#: vms-tir.c:1210
msgid "PASSMECH not fully implemented"
msgstr ""
-#: vms-tir.c:1243
+#: vms-tir.c:1230
msgid "Stack-local-symbol not fully implemented"
msgstr ""
-#: vms-tir.c:1258
+#: vms-tir.c:1245
msgid "Stack-literal not fully implemented"
msgstr ""
-#: vms-tir.c:1280
+#: vms-tir.c:1267
msgid "Stack-local-symbol-entry-point-mask not fully implemented"
msgstr ""
-#: vms-tir.c:1456
+#: vms-tir.c:1442
#, c-format
msgid "Unimplemented STO cmd %d"
msgstr ""
-#: vms-tir.c:1596
+#: vms-tir.c:1581
msgid "TIR_S_C_OPR_ASH incomplete"
msgstr ""
-#: vms-tir.c:1610
+#: vms-tir.c:1595
msgid "TIR_S_C_OPR_USH incomplete"
msgstr ""
-#: vms-tir.c:1624
+#: vms-tir.c:1609
msgid "TIR_S_C_OPR_ROT incomplete"
msgstr ""
#.
#. * redefine symbol to current location
#.
-#: vms-tir.c:1645
+#: vms-tir.c:1630
msgid "TIR_S_C_OPR_REDEF not supported"
msgstr ""
#.
#. * define a literal
#.
-#: vms-tir.c:1652
+#: vms-tir.c:1637
msgid "TIR_S_C_OPR_DFLIT not supported"
msgstr ""
-#: vms-tir.c:1707
+#: vms-tir.c:1691
msgid "TIR_S_C_CTL_DFLOC not fully implemented"
msgstr ""
-#: vms-tir.c:1715
+#: vms-tir.c:1699
msgid "TIR_S_C_CTL_STLOC not fully implemented"
msgstr ""
-#: vms-tir.c:1723
+#: vms-tir.c:1707
msgid "TIR_S_C_CTL_STKDL not fully implemented"
msgstr ""
-#: vms-tir.c:1778
+#: vms-tir.c:1761
#, c-format
msgid "Obj code %d not found"
msgstr ""
-#: vms-tir.c:2127
+#: vms-tir.c:2102
#, c-format
msgid "SEC_RELOC with no relocs in section %s"
msgstr ""
-#: vms-tir.c:2401
+#: vms-tir.c:2376
#, c-format
msgid "Unhandled relocation %s"
msgstr ""
-#: xcofflink.c:1661
+#: xcofflink.c:1634
#, c-format
msgid "%s: `%s' has line numbers but no enclosing section"
msgstr ""
-#: xcofflink.c:1713
+#: xcofflink.c:1686
#, c-format
msgid "%s: class %d symbol `%s' has no aux entries"
msgstr ""
-#: xcofflink.c:1736
+#: xcofflink.c:1709
#, c-format
msgid "%s: symbol `%s' has unrecognized csect type %d"
msgstr ""
-#: xcofflink.c:1748
+#: xcofflink.c:1721
#, c-format
msgid "%s: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d"
msgstr ""
-#: xcofflink.c:1787
+#: xcofflink.c:1760
#, c-format
msgid "%s: XMC_TC0 symbol `%s' is class %d scnlen %d"
msgstr ""
-#: xcofflink.c:1911
+#: xcofflink.c:1883
#, c-format
msgid "%s: symbol `%s' has unrecognized smclas %d"
msgstr ""
-#: xcofflink.c:1930
+#: xcofflink.c:1902
#, c-format
msgid "%s: csect `%s' not in enclosing section"
msgstr ""
-#: xcofflink.c:2034
+#: xcofflink.c:2006
#, c-format
msgid "%s: misplaced XTY_LD `%s'"
msgstr ""
-#: xcofflink.c:2345
+#: xcofflink.c:2317
#, c-format
msgid "%s: reloc %s:%d not in csect"
msgstr ""
-#: xcofflink.c:2480
+#: xcofflink.c:2452
#, c-format
msgid "%s: XCOFF shared object when not producing XCOFF output"
msgstr ""
-#: xcofflink.c:2501
+#: xcofflink.c:2473
#, c-format
msgid "%s: dynamic object with no .loader section"
msgstr ""
-#: xcofflink.c:3141
+#: xcofflink.c:3113
#, c-format
msgid "%s: no such symbol"
msgstr ""
-#: xcofflink.c:3733
+#: xcofflink.c:3704
#, c-format
msgid "warning: attempt to export undefined symbol `%s'"
msgstr ""
-#: xcofflink.c:4709
+#: xcofflink.c:4698
#, c-format
msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling"
msgstr ""
-#: xcofflink.c:5534 xcofflink.c:5890 xcofflink.c:5927 xcofflink.c:6244
+#: xcofflink.c:5523 xcofflink.c:5879 xcofflink.c:5916 xcofflink.c:6233
#, c-format
msgid "%s: loader reloc in unrecognized section `%s'"
msgstr ""
-#: xcofflink.c:5556 xcofflink.c:6255
+#: xcofflink.c:5545 xcofflink.c:6244
#, c-format
msgid "%s: `%s' in loader reloc but not loader sym"
msgstr ""
-#: xcofflink.c:5571
+#: xcofflink.c:5560
#, c-format
msgid "%s: loader reloc in read-only section %s"
msgstr ""
-#: xcofflink.c:6451
+#: xcofflink.c:6440
#, c-format
msgid "%s: unsupported relocation type 0x%02x"
msgstr ""
-#: xcofflink.c:6497
+#: xcofflink.c:6486
#, c-format
msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry"
msgstr ""
diff --git a/contrib/binutils/bfd/ppcboot.c b/contrib/binutils/bfd/ppcboot.c
index 9441848..d92a0a6 100644
--- a/contrib/binutils/bfd/ppcboot.c
+++ b/contrib/binutils/bfd/ppcboot.c
@@ -234,7 +234,7 @@ ppcboot_get_section_contents (abfd, section, location, offset, count)
file_ptr offset;
bfd_size_type count;
{
- if (bfd_seek (abfd, offset + sizeof(ppcboot_hdr_t), SEEK_SET) != 0
+ if (bfd_seek (abfd, offset + sizeof (ppcboot_hdr_t), SEEK_SET) != 0
|| bfd_read (location, 1, count, abfd) != count)
return false;
return true;
@@ -536,6 +536,6 @@ const bfd_target ppcboot_vec =
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
NULL
};
diff --git a/contrib/binutils/bfd/ptrace-core.c b/contrib/binutils/bfd/ptrace-core.c
index 0969dce..2c19f6d 100644
--- a/contrib/binutils/bfd/ptrace-core.c
+++ b/contrib/binutils/bfd/ptrace-core.c
@@ -32,7 +32,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <signal.h>
#include <sys/ptrace.h>
-
struct trad_core_struct
{
asection *data_section;
@@ -66,7 +65,7 @@ ptrace_unix_core_file_p (abfd)
struct trad_core_struct *rawptr;
val = bfd_read ((void *)&u, 1, sizeof u, abfd);
- if (val != sizeof u || u.pt_magic != _BCS_PTRACE_MAGIC
+ if (val != sizeof u || u.pt_magic != _BCS_PTRACE_MAGIC
|| u.pt_rev != _BCS_PTRACE_REV)
{
/* Too small to be a core file */
@@ -83,7 +82,7 @@ ptrace_unix_core_file_p (abfd)
if (rawptr == NULL)
return 0;
-
+
abfd->tdata.trad_core_data = rawptr;
rawptr->u = u; /*Copy the uarea into the tdata part of the bfd */
@@ -107,8 +106,7 @@ ptrace_unix_core_file_p (abfd)
/* FIXME: Need to worry about shared memory, library data, and library
text. I don't think that any of these things are supported on the
- system on which I am developing this for though. */
-
+ system on which I am developing this for though. */
core_stacksec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
core_datasec (abfd)->flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
@@ -116,11 +114,11 @@ ptrace_unix_core_file_p (abfd)
core_datasec (abfd)->_raw_size = u.pt_dsize;
core_stacksec (abfd)->_raw_size = u.pt_ssize;
- core_regsec (abfd)->_raw_size = sizeof(u);
+ core_regsec (abfd)->_raw_size = sizeof (u);
core_datasec (abfd)->vma = u.pt_o_data_start;
core_stacksec (abfd)->vma = USRSTACK - u.pt_ssize;
- core_regsec (abfd)->vma = 0 - sizeof(u); /* see trad-core.c */
+ core_regsec (abfd)->vma = 0 - sizeof (u); /* see trad-core.c */
core_datasec (abfd)->filepos = (int) u.pt_dataptr;
core_stacksec (abfd)->filepos = (int) (u.pt_dataptr + u.pt_dsize);
@@ -163,16 +161,16 @@ boolean
ptrace_unix_core_file_matches_executable_p (core_bfd, exec_bfd)
bfd *core_bfd, *exec_bfd;
{
- /* FIXME: Use pt_timdat field of the ptrace_user structure to match
+ /* FIXME: Use pt_timdat field of the ptrace_user structure to match
the date of the executable */
return true;
}
/* If somebody calls any byte-swapping routines, shoot them. */
static void
-swap_abort()
+swap_abort ()
{
- abort(); /* This way doesn't require any declaration for ANSI to fuck up */
+ abort (); /* This way doesn't require any declaration for ANSI to fuck up */
}
#define NO_GET ((bfd_vma (*) PARAMS (( const bfd_byte *))) swap_abort )
#define NO_PUT ((void (*) PARAMS ((bfd_vma, bfd_byte *))) swap_abort )
@@ -213,7 +211,7 @@ const bfd_target ptrace_core_vec =
bfd_false, bfd_false,
bfd_false, bfd_false
},
-
+
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (ptrace_unix),
@@ -225,7 +223,7 @@ const bfd_target ptrace_core_vec =
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
(PTR) 0 /* backend_data */
};
diff --git a/contrib/binutils/bfd/reloc.c b/contrib/binutils/bfd/reloc.c
index ef2375a..f37a6a9 100644
--- a/contrib/binutils/bfd/reloc.c
+++ b/contrib/binutils/bfd/reloc.c
@@ -146,7 +146,6 @@ DESCRIPTION
to the relocation offset. Its interpretation is dependent upon
the howto. For example, on the 68k the code:
-
| char foo[];
| main()
| {
@@ -161,11 +160,9 @@ DESCRIPTION
| unlk fp
| rts
-
This could create a reloc pointing to <<foo>>, but leave the
offset in the data, something like:
-
|RELOCATION RECORDS FOR [.text]:
|offset type value
|00000006 32 _foo
@@ -176,21 +173,17 @@ DESCRIPTION
|0000000c 4e5e ; unlk fp
|0000000e 4e75 ; rts
-
Using coff and an 88k, some instructions don't have enough
space in them to represent the full address range, and
pointers have to be loaded in two parts. So you'd get something like:
-
| or.u r13,r0,hi16(_foo+0x12345678)
| ld.b r2,r13,lo16(_foo+0x12345678)
| jmp r1
-
This should create two relocs, both pointing to <<_foo>>, and with
0x12340000 in their addend field. The data would consist of:
-
|RELOCATION RECORDS FOR [.text]:
|offset type value
|00000002 HVRT16 _foo+0x12340000
@@ -200,7 +193,6 @@ DESCRIPTION
|00000004 1c4d5678 ; ld.b r2,r13,0x5678
|00000008 f400c001 ; jmp r1
-
The relocation routine digs out the value from the data, adds
it to the addend to get the original offset, and then adds the
value of <<_foo>>. Note that all 32 bits have to be kept around
@@ -223,7 +215,6 @@ DESCRIPTION
Both relocs contain a pointer to <<foo>>, and the offsets
contain junk.
-
|RELOCATION RECORDS FOR [.text]:
|offset type value
|00000004 HI22 _foo+0x12345678
@@ -235,7 +226,6 @@ DESCRIPTION
|0000000c 81c7e008 ; ret
|00000010 81e80000 ; restore
-
o <<howto>>
The <<howto>> field can be imagined as a
@@ -391,7 +381,6 @@ FUNCTION
DESCRIPTION
The HOWTO define is horrible and will go away.
-
.#define HOWTO(C, R,S,B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
. {(unsigned)C,R,S,B, P, BI, O,SF,NAME,INPLACE,MASKSRC,MASKDST,PC}
@@ -399,7 +388,6 @@ DESCRIPTION
And will be replaced with the totally magic way. But for the
moment, we are compatible, so do it this way.
-
.#define NEWHOWTO( FUNCTION, NAME,SIZE,REL,IN) HOWTO(0,0,SIZE,0,REL,0,complain_overflow_dont,FUNCTION, NAME,false,0,0,IN)
.
@@ -589,7 +577,6 @@ DESCRIPTION
*/
-
bfd_reloc_status_type
bfd_perform_relocation (abfd, reloc_entry, data, input_section, output_bfd,
error_message)
@@ -651,7 +638,6 @@ bfd_perform_relocation (abfd, reloc_entry, data, input_section, output_bfd,
else
relocation = symbol->value;
-
reloc_target_output_section = symbol->section->output_section;
/* Convert input-section-relative symbol value to absolute. */
@@ -728,8 +714,6 @@ bfd_perform_relocation (abfd, reloc_entry, data, input_section, output_bfd,
/* WTF?? */
if (abfd->xvec->flavour == bfd_target_coff_flavour
- && strcmp (abfd->xvec->name, "aixcoff-rs6000") != 0
- && strcmp (abfd->xvec->name, "xcoff-powermac") != 0
&& strcmp (abfd->xvec->name, "coff-Intel-little") != 0
&& strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
{
@@ -992,7 +976,6 @@ DESCRIPTION
*/
-
bfd_reloc_status_type
bfd_install_relocation (abfd, reloc_entry, data_start, data_start_offset,
input_section, error_message)
@@ -1124,8 +1107,6 @@ bfd_install_relocation (abfd, reloc_entry, data_start, data_start_offset,
/* WTF?? */
if (abfd->xvec->flavour == bfd_target_coff_flavour
- && strcmp (abfd->xvec->name, "aixcoff-rs6000") != 0
- && strcmp (abfd->xvec->name, "xcoff-powermac") != 0
&& strcmp (abfd->xvec->name, "coff-Intel-little") != 0
&& strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
{
@@ -1784,7 +1765,6 @@ displacements off that register. These relocation types are
handled specially, because the value the register will have is
decided relatively late.
-
ENUM
BFD_RELOC_I960_CALLJ
ENUMDOC
@@ -2082,6 +2062,25 @@ ENUMDOC
i386/elf relocations
ENUM
+ BFD_RELOC_X86_64_GOT32
+ENUMX
+ BFD_RELOC_X86_64_PLT32
+ENUMX
+ BFD_RELOC_X86_64_COPY
+ENUMX
+ BFD_RELOC_X86_64_GLOB_DAT
+ENUMX
+ BFD_RELOC_X86_64_JUMP_SLOT
+ENUMX
+ BFD_RELOC_X86_64_RELATIVE
+ENUMX
+ BFD_RELOC_X86_64_GOTPCREL
+ENUMX
+ BFD_RELOC_X86_64_32S
+ENUMDOC
+ x86-64/elf relocations
+
+ENUM
BFD_RELOC_NS32K_IMM_8
ENUMX
BFD_RELOC_NS32K_IMM_16
@@ -2204,6 +2203,18 @@ ENUMDOC
ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
not stored in the instruction.
ENUM
+ BFD_RELOC_ARM_PCREL_BLX
+ENUMDOC
+ ARM 26 bit pc-relative branch. The lowest bit must be zero and is
+ not stored in the instruction. The 2nd lowest bit comes from a 1 bit
+ field in the instruction.
+ENUM
+ BFD_RELOC_THUMB_PCREL_BLX
+ENUMDOC
+ Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
+ not stored in the instruction. The 2nd lowest bit comes from a 1 bit
+ field in the instruction.
+ENUM
BFD_RELOC_ARM_IMMEDIATE
ENUMX
BFD_RELOC_ARM_ADRL_IMMEDIATE
@@ -2295,6 +2306,20 @@ ENUMX
BFD_RELOC_SH_DATA
ENUMX
BFD_RELOC_SH_LABEL
+ENUMX
+ BFD_RELOC_SH_LOOP_START
+ENUMX
+ BFD_RELOC_SH_LOOP_END
+ENUMX
+ BFD_RELOC_SH_COPY
+ENUMX
+ BFD_RELOC_SH_GLOB_DAT
+ENUMX
+ BFD_RELOC_SH_JMP_SLOT
+ENUMX
+ BFD_RELOC_SH_RELATIVE
+ENUMX
+ BFD_RELOC_SH_GOTPC
ENUMDOC
Hitachi SH relocs. Not all of these appear in object files.
@@ -2311,7 +2336,7 @@ ENUMDOC
ENUM
BFD_RELOC_ARC_B22_PCREL
ENUMDOC
- Argonaut RISC Core (ARC) relocs.
+ ARC Cores relocs.
ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
not stored in the instruction. The high 20 bits are installed in bits 26
through 7 of the instruction.
@@ -2538,6 +2563,39 @@ ENUMDOC
significant 8 bits of the opcode.
ENUM
+ BFD_RELOC_TIC54X_PARTLS7
+ENUMDOC
+ This is a 7bit reloc for the tms320c54x, where the least
+ significant 7 bits of a 16 bit word are placed into the least
+ significant 7 bits of the opcode.
+
+ENUM
+ BFD_RELOC_TIC54X_PARTMS9
+ENUMDOC
+ This is a 9bit DP reloc for the tms320c54x, where the most
+ significant 9 bits of a 16 bit word are placed into the least
+ significant 9 bits of the opcode.
+
+ENUM
+ BFD_RELOC_TIC54X_23
+ENUMDOC
+ This is an extended address 23-bit reloc for the tms320c54x.
+
+ENUM
+ BFD_RELOC_TIC54X_16_OF_23
+ENUMDOC
+ This is a 16-bit reloc for the tms320c54x, where the least
+ significant 16 bits of a 23-bit extended address are placed into
+ the opcode.
+
+ENUM
+ BFD_RELOC_TIC54X_MS7_OF_23
+ENUMDOC
+ This is a reloc for the tms320c54x, where the most
+ significant 7 bits of a 23-bit extended address are placed into
+ the opcode.
+
+ENUM
BFD_RELOC_FR30_48
ENUMDOC
This is a 48 bit reloc for the FR30 that stores 32 bits.
@@ -2606,7 +2664,7 @@ ENUM
BFD_RELOC_AVR_16_PM
ENUMDOC
This is a 16 bit reloc for the AVR that stores 17 bit value (usually
- program memory address) into 16 bits.
+ program memory address) into 16 bits.
ENUM
BFD_RELOC_AVR_LO8_LDI
ENUMDOC
@@ -2700,6 +2758,234 @@ ENUMDOC
is stored in the reloc's addend. For Rel hosts, we are forced to put
this offset in the reloc's section offset.
+ENUM
+ BFD_RELOC_IA64_IMM14
+ENUMX
+ BFD_RELOC_IA64_IMM22
+ENUMX
+ BFD_RELOC_IA64_IMM64
+ENUMX
+ BFD_RELOC_IA64_DIR32MSB
+ENUMX
+ BFD_RELOC_IA64_DIR32LSB
+ENUMX
+ BFD_RELOC_IA64_DIR64MSB
+ENUMX
+ BFD_RELOC_IA64_DIR64LSB
+ENUMX
+ BFD_RELOC_IA64_GPREL22
+ENUMX
+ BFD_RELOC_IA64_GPREL64I
+ENUMX
+ BFD_RELOC_IA64_GPREL32MSB
+ENUMX
+ BFD_RELOC_IA64_GPREL32LSB
+ENUMX
+ BFD_RELOC_IA64_GPREL64MSB
+ENUMX
+ BFD_RELOC_IA64_GPREL64LSB
+ENUMX
+ BFD_RELOC_IA64_LTOFF22
+ENUMX
+ BFD_RELOC_IA64_LTOFF64I
+ENUMX
+ BFD_RELOC_IA64_PLTOFF22
+ENUMX
+ BFD_RELOC_IA64_PLTOFF64I
+ENUMX
+ BFD_RELOC_IA64_PLTOFF64MSB
+ENUMX
+ BFD_RELOC_IA64_PLTOFF64LSB
+ENUMX
+ BFD_RELOC_IA64_FPTR64I
+ENUMX
+ BFD_RELOC_IA64_FPTR32MSB
+ENUMX
+ BFD_RELOC_IA64_FPTR32LSB
+ENUMX
+ BFD_RELOC_IA64_FPTR64MSB
+ENUMX
+ BFD_RELOC_IA64_FPTR64LSB
+ENUMX
+ BFD_RELOC_IA64_PCREL21B
+ENUMX
+ BFD_RELOC_IA64_PCREL21BI
+ENUMX
+ BFD_RELOC_IA64_PCREL21M
+ENUMX
+ BFD_RELOC_IA64_PCREL21F
+ENUMX
+ BFD_RELOC_IA64_PCREL22
+ENUMX
+ BFD_RELOC_IA64_PCREL60B
+ENUMX
+ BFD_RELOC_IA64_PCREL64I
+ENUMX
+ BFD_RELOC_IA64_PCREL32MSB
+ENUMX
+ BFD_RELOC_IA64_PCREL32LSB
+ENUMX
+ BFD_RELOC_IA64_PCREL64MSB
+ENUMX
+ BFD_RELOC_IA64_PCREL64LSB
+ENUMX
+ BFD_RELOC_IA64_LTOFF_FPTR22
+ENUMX
+ BFD_RELOC_IA64_LTOFF_FPTR64I
+ENUMX
+ BFD_RELOC_IA64_LTOFF_FPTR64MSB
+ENUMX
+ BFD_RELOC_IA64_LTOFF_FPTR64LSB
+ENUMX
+ BFD_RELOC_IA64_SEGREL32MSB
+ENUMX
+ BFD_RELOC_IA64_SEGREL32LSB
+ENUMX
+ BFD_RELOC_IA64_SEGREL64MSB
+ENUMX
+ BFD_RELOC_IA64_SEGREL64LSB
+ENUMX
+ BFD_RELOC_IA64_SECREL32MSB
+ENUMX
+ BFD_RELOC_IA64_SECREL32LSB
+ENUMX
+ BFD_RELOC_IA64_SECREL64MSB
+ENUMX
+ BFD_RELOC_IA64_SECREL64LSB
+ENUMX
+ BFD_RELOC_IA64_REL32MSB
+ENUMX
+ BFD_RELOC_IA64_REL32LSB
+ENUMX
+ BFD_RELOC_IA64_REL64MSB
+ENUMX
+ BFD_RELOC_IA64_REL64LSB
+ENUMX
+ BFD_RELOC_IA64_LTV32MSB
+ENUMX
+ BFD_RELOC_IA64_LTV32LSB
+ENUMX
+ BFD_RELOC_IA64_LTV64MSB
+ENUMX
+ BFD_RELOC_IA64_LTV64LSB
+ENUMX
+ BFD_RELOC_IA64_IPLTMSB
+ENUMX
+ BFD_RELOC_IA64_IPLTLSB
+ENUMX
+ BFD_RELOC_IA64_COPY
+ENUMX
+ BFD_RELOC_IA64_TPREL22
+ENUMX
+ BFD_RELOC_IA64_TPREL64MSB
+ENUMX
+ BFD_RELOC_IA64_TPREL64LSB
+ENUMX
+ BFD_RELOC_IA64_LTOFF_TP22
+ENUMX
+ BFD_RELOC_IA64_LTOFF22X
+ENUMX
+ BFD_RELOC_IA64_LDXMOV
+ENUMDOC
+ Intel IA64 Relocations.
+
+ENUM
+ BFD_RELOC_M68HC11_HI8
+ENUMDOC
+ Motorola 68HC11 reloc.
+ This is the 8 bits high part of an absolute address.
+ENUM
+ BFD_RELOC_M68HC11_LO8
+ENUMDOC
+ Motorola 68HC11 reloc.
+ This is the 8 bits low part of an absolute address.
+ENUM
+ BFD_RELOC_M68HC11_3B
+ENUMDOC
+ Motorola 68HC11 reloc.
+ This is the 3 bits of a value.
+
+ENUM
+ BFD_RELOC_CRIS_BDISP8
+ENUMX
+ BFD_RELOC_CRIS_UNSIGNED_5
+ENUMX
+ BFD_RELOC_CRIS_SIGNED_6
+ENUMX
+ BFD_RELOC_CRIS_UNSIGNED_6
+ENUMX
+ BFD_RELOC_CRIS_UNSIGNED_4
+ENUMDOC
+ These relocs are only used within the CRIS assembler. They are not
+ (at present) written to any object files.
+
+ENUM
+ BFD_RELOC_860_COPY
+ENUMX
+ BFD_RELOC_860_GLOB_DAT
+ENUMX
+ BFD_RELOC_860_JUMP_SLOT
+ENUMX
+ BFD_RELOC_860_RELATIVE
+ENUMX
+ BFD_RELOC_860_PC26
+ENUMX
+ BFD_RELOC_860_PLT26
+ENUMX
+ BFD_RELOC_860_PC16
+ENUMX
+ BFD_RELOC_860_LOW0
+ENUMX
+ BFD_RELOC_860_SPLIT0
+ENUMX
+ BFD_RELOC_860_LOW1
+ENUMX
+ BFD_RELOC_860_SPLIT1
+ENUMX
+ BFD_RELOC_860_LOW2
+ENUMX
+ BFD_RELOC_860_SPLIT2
+ENUMX
+ BFD_RELOC_860_LOW3
+ENUMX
+ BFD_RELOC_860_LOGOT0
+ENUMX
+ BFD_RELOC_860_SPGOT0
+ENUMX
+ BFD_RELOC_860_LOGOT1
+ENUMX
+ BFD_RELOC_860_SPGOT1
+ENUMX
+ BFD_RELOC_860_LOGOTOFF0
+ENUMX
+ BFD_RELOC_860_SPGOTOFF0
+ENUMX
+ BFD_RELOC_860_LOGOTOFF1
+ENUMX
+ BFD_RELOC_860_SPGOTOFF1
+ENUMX
+ BFD_RELOC_860_LOGOTOFF2
+ENUMX
+ BFD_RELOC_860_LOGOTOFF3
+ENUMX
+ BFD_RELOC_860_LOPC
+ENUMX
+ BFD_RELOC_860_HIGHADJ
+ENUMX
+ BFD_RELOC_860_HAGOT
+ENUMX
+ BFD_RELOC_860_HAGOTOFF
+ENUMX
+ BFD_RELOC_860_HAPC
+ENUMX
+ BFD_RELOC_860_HIGH
+ENUMX
+ BFD_RELOC_860_HIGOT
+ENUMX
+ BFD_RELOC_860_HIGOTOFF
+ENUMDOC
+ Intel i860 Relocations.
+
ENDSENUM
BFD_RELOC_UNUSED
CODE_FRAGMENT
@@ -2707,7 +2993,6 @@ CODE_FRAGMENT
.typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
*/
-
/*
FUNCTION
bfd_reloc_type_lookup
@@ -2723,7 +3008,6 @@ DESCRIPTION
*/
-
reloc_howto_type *
bfd_reloc_type_lookup (abfd, code)
bfd *abfd;
@@ -2735,7 +3019,6 @@ bfd_reloc_type_lookup (abfd, code)
static reloc_howto_type bfd_howto_32 =
HOWTO (0, 00, 2, 32, false, 0, complain_overflow_bitfield, 0, "VRT32", false, 0xffffffff, 0xffffffff, true);
-
/*
INTERNAL_FUNCTION
bfd_default_reloc_type_lookup
@@ -2747,7 +3030,6 @@ SYNOPSIS
DESCRIPTION
Provides a default relocation lookup routine for any architecture.
-
*/
reloc_howto_type *
diff --git a/contrib/binutils/bfd/reloc16.c b/contrib/binutils/bfd/reloc16.c
index 0e7c18a..cb9636f 100644
--- a/contrib/binutils/bfd/reloc16.c
+++ b/contrib/binutils/bfd/reloc16.c
@@ -1,5 +1,5 @@
/* 8 and 16 bit COFF relocation functions, for BFD.
- Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 1998
+ Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 2000
Free Software Foundation, Inc.
Written by Cygnus Support.
@@ -19,10 +19,7 @@ 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. */
-/*
-Most of this hacked by Steve Chamberlain,
- sac@cygnus.com
-*/
+/* Most of this hacked by Steve Chamberlain <sac@cygnus.com>. */
/* These routines are used by coff-h8300 and coff-z8k to do
relocation.
@@ -53,7 +50,7 @@ bfd_coff_reloc16_get_value (reloc, link_info, input_section)
asymbol *symbol = *(reloc->sym_ptr_ptr);
/* A symbol holds a pointer to a section, and an offset from the
base of the section. To relocate, we find where the section will
- live in the output and add that in */
+ live in the output and add that in. */
if (bfd_is_und_section (symbol->section)
|| bfd_is_com_section (symbol->section))
@@ -79,29 +76,29 @@ bfd_coff_reloc16_get_value (reloc, link_info, input_section)
value = h->u.c.size;
else
{
- if (! ((*link_info->callbacks->undefined_symbol)
- (link_info, bfd_asymbol_name (symbol),
- input_section->owner, input_section, reloc->address,
- true)))
+ if (!((*link_info->callbacks->undefined_symbol)
+ (link_info, bfd_asymbol_name (symbol),
+ input_section->owner, input_section, reloc->address,
+ true)))
abort ();
value = 0;
}
}
- else
+ else
{
- value = symbol->value +
- symbol->section->output_offset +
- symbol->section->output_section->vma;
+ value = symbol->value
+ + symbol->section->output_offset
+ + symbol->section->output_section->vma;
}
-
- /* Add the value contained in the relocation */
+
+ /* Add the value contained in the relocation. */
value += reloc->addend;
-
+
return value;
}
void
-bfd_perform_slip(abfd, slip, input_section, value)
+bfd_perform_slip (abfd, slip, input_section, value)
bfd *abfd;
unsigned int slip;
asection *input_section;
@@ -113,13 +110,13 @@ bfd_perform_slip(abfd, slip, input_section, value)
BFD_ASSERT (s != (asymbol **) NULL);
/* Find all symbols past this point, and make them know
- what's happened */
- while (*s)
+ what's happened. */
+ while (*s)
{
asymbol *p = *s;
- if (p->section == input_section)
+ if (p->section == input_section)
{
- /* This was pointing into this section, so mangle it */
+ /* This was pointing into this section, so mangle it. */
if (p->value > value)
{
p->value -= slip;
@@ -136,17 +133,17 @@ bfd_perform_slip(abfd, slip, input_section, value)
}
}
s++;
- }
+ }
}
-boolean
+boolean
bfd_coff_reloc16_relax_section (abfd, i, link_info, again)
bfd *abfd;
asection *i;
struct bfd_link_info *link_info;
boolean *again;
{
- /* Get enough memory to hold the stuff */
+ /* Get enough memory to hold the stuff. */
bfd *input_bfd = i->owner;
asection *input_section = i;
int *shrinks;
@@ -166,7 +163,7 @@ bfd_coff_reloc16_relax_section (abfd, i, link_info, again)
if (!reloc_vector && reloc_size > 0)
return false;
- /* Get the relocs and think about them */
+ /* Get the relocs and think about them. */
reloc_count =
bfd_canonicalize_reloc (input_bfd, input_section, reloc_vector,
_bfd_generic_link_get_symbols (input_bfd));
@@ -190,7 +187,7 @@ bfd_coff_reloc16_relax_section (abfd, i, link_info, again)
entire link, we could use the generic relaxing code in the linker
and get better results, particularly for jsr->bsr and 24->16 bit
memory reference relaxations. */
-
+
if (reloc_count > 0)
{
int another_pass = 0;
@@ -208,7 +205,7 @@ bfd_coff_reloc16_relax_section (abfd, i, link_info, again)
another_pass = 0;
- for (i = 0, parent = reloc_vector; *parent; parent++, i++)
+ for (i = 0, parent = reloc_vector; *parent; parent++, i++)
{
/* Let the target/machine dependent code examine each reloc
in this section and attempt to shrink it. */
@@ -224,15 +221,15 @@ bfd_coff_reloc16_relax_section (abfd, i, link_info, again)
shrinks[j] += shrink - shrinks[i];
}
}
-
- } while (another_pass);
+ }
+ while (another_pass);
shrink = shrinks[reloc_count];
- free((char *)shrinks);
+ free ((char *) shrinks);
}
- input_section->_cooked_size -= shrink;
- free((char *)reloc_vector);
+ input_section->_cooked_size -= shrink;
+ free ((char *) reloc_vector);
return true;
}
@@ -250,7 +247,7 @@ bfd_coff_reloc16_get_relocated_section_contents(in_abfd,
boolean relocateable;
asymbol **symbols;
{
- /* Get enough memory to hold the stuff */
+ /* Get enough memory to hold the stuff. */
bfd *input_bfd = link_order->u.indirect.section->owner;
asection *input_section = link_order->u.indirect.section;
long reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
@@ -267,20 +264,19 @@ bfd_coff_reloc16_get_relocated_section_contents(in_abfd,
data, relocateable,
symbols);
- /* read in the section */
- if (! bfd_get_section_contents(input_bfd,
- input_section,
- data,
- 0,
- input_section->_raw_size))
+ /* Read in the section. */
+ if (!bfd_get_section_contents(input_bfd,
+ input_section,
+ data,
+ 0,
+ input_section->_raw_size))
return NULL;
-
-
- reloc_vector = (arelent **) bfd_malloc((size_t) reloc_size);
+
+ reloc_vector = (arelent **) bfd_malloc ((size_t) reloc_size);
if (!reloc_vector && reloc_size != 0)
return NULL;
-
- reloc_count = bfd_canonicalize_reloc (input_bfd,
+
+ reloc_count = bfd_canonicalize_reloc (input_bfd,
input_section,
reloc_vector,
symbols);
@@ -289,49 +285,46 @@ bfd_coff_reloc16_get_relocated_section_contents(in_abfd,
free (reloc_vector);
return NULL;
}
-
+
if (reloc_count > 0)
{
arelent **parent = reloc_vector;
- arelent *reloc ;
+ arelent *reloc;
unsigned int dst_address = 0;
unsigned int src_address = 0;
unsigned int run;
unsigned int idx;
-
- /* Find how long a run we can do */
- while (dst_address < link_order->size)
+
+ /* Find how long a run we can do. */
+ while (dst_address < link_order->size)
{
reloc = *parent;
- if (reloc)
+ if (reloc)
{
/* Note that the relaxing didn't tie up the addresses in the
relocation, so we use the original address to work out the
- run of non-relocated data */
+ run of non-relocated data. */
run = reloc->address - src_address;
parent++;
}
- else
+ else
{
run = link_order->size - dst_address;
}
- /* Copy the bytes */
+
+ /* Copy the bytes. */
for (idx = 0; idx < run; idx++)
- {
- data[dst_address++] = data[src_address++];
- }
-
- /* Now do the relocation */
-
- if (reloc)
+ data[dst_address++] = data[src_address++];
+
+ /* Now do the relocation. */
+ if (reloc)
{
bfd_coff_reloc16_extra_cases (input_bfd, link_info, link_order,
reloc, data, &src_address,
&dst_address);
- }
+ }
}
}
- free((char *)reloc_vector);
+ free ((char *) reloc_vector);
return data;
}
-
diff --git a/contrib/binutils/bfd/sco5-core.c b/contrib/binutils/bfd/sco5-core.c
index 46c97d2..5d5677e 100644
--- a/contrib/binutils/bfd/sco5-core.c
+++ b/contrib/binutils/bfd/sco5-core.c
@@ -84,7 +84,7 @@ sco5_core_make_empty_symbol (abfd)
new->the_bfd = abfd;
return new;
}
-
+
static struct user *
read_uarea(abfd, filepos)
bfd *abfd;
@@ -109,7 +109,7 @@ read_uarea(abfd, filepos)
}
/* Sanity check perhaps??? */
- if (rawptr->u.u_dsize > 0x1000000) /* Remember, it's in pages... */
+ if (rawptr->u.u_dsize > 0x1000000) /* Remember, it's in pages... */
{
bfd_set_error (bfd_error_wrong_format);
return NULL;
@@ -154,7 +154,7 @@ sco5_core_file_p (abfd)
|| (bfd_read ((void *)&coffset_siz, 1, sizeof coffset_siz, abfd)
!= sizeof coffset_siz) )
{
- bfd_set_error (bfd_error_wrong_format);
+ bfd_set_error (bfd_error_wrong_format);
return NULL;
}
@@ -165,50 +165,49 @@ sco5_core_file_p (abfd)
!= sizeof coffsets)
|| ((coffsets.u_info != 1) && (coffsets.u_info != C_VERSION)))
{
- bfd_set_error (bfd_error_wrong_format);
+ bfd_set_error (bfd_error_wrong_format);
return NULL;
}
-
- if (coffsets.u_info == 1)
- {
+ if (coffsets.u_info == 1)
+ {
/* Old version, no section heads, read info from user struct */
u = read_uarea(abfd, coffsets.u_user);
if (! u)
return NULL;
- if (!make_bfd_asection (abfd, ".reg", SEC_HAS_CONTENTS,
+ if (!make_bfd_asection (abfd, ".reg", SEC_HAS_CONTENTS,
(bfd_size_type) coffsets.u_usize,
0 - (bfd_vma) u->u_ar0,
(file_ptr) coffsets.u_user))
return NULL;
-
- if (!make_bfd_asection (abfd, ".data",
+
+ if (!make_bfd_asection (abfd, ".data",
SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS,
((bfd_size_type) u->u_exdata.ux_dsize
+ u->u_exdata.ux_bsize),
(bfd_vma) u->u_exdata.ux_datorg,
(file_ptr) coffsets.u_data))
return NULL;
-
- if (!make_bfd_asection (abfd, ".stack",
- SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS,
+
+ if (!make_bfd_asection (abfd, ".stack",
+ SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS,
(bfd_size_type) u->u_ssize * NBPC,
(bfd_vma) u->u_sub,
(file_ptr) coffsets.u_stack))
return NULL;
return abfd->xvec; /* Done for version 1 */
- }
+ }
/* Immediately before coreoffsets region is a long with offset in core
to first coresecthead (CORES_OFFSETS), the long before this is the
number of section heads in the list. Read both longs and read the
coresecthead and check its validity */
-
- if ((bfd_seek (abfd,
- coresize - coffset_siz - 2 * sizeof coffset_siz,
+
+ if ((bfd_seek (abfd,
+ coresize - coffset_siz - 2 * sizeof coffset_siz,
SEEK_SET) != 0)
|| (bfd_read ((void *)&nsecs, 1, sizeof nsecs, abfd) != sizeof nsecs)
|| (bfd_read ((void *)&cheadoffs, 1, sizeof cheadoffs, abfd)
@@ -226,16 +225,16 @@ sco5_core_file_p (abfd)
/* Now loop over all regions and map them */
nsecs--; /* We've seen CORES_OFFSETS already */
- for (; nsecs; nsecs--)
+ for (; nsecs; nsecs--)
{
if ((bfd_seek (abfd, chead.cs_hseek, SEEK_SET) != 0)
|| bfd_read ((void *)&chead, 1, sizeof chead, abfd) != sizeof chead)
{
- bfd_set_error (bfd_error_wrong_format);
+ bfd_set_error (bfd_error_wrong_format);
return NULL;
}
- switch (chead.cs_stype)
+ switch (chead.cs_stype)
{
case CORES_MAGIC: /* Core header, check magic */
if (chead.cs_x.csx_magic != COREMAGIC_NUMBER)
@@ -259,7 +258,7 @@ sco5_core_file_p (abfd)
*u_ar0. The other is that u_ar0 is sometimes an absolute
address in kernel memory, and on other systems it is an
offset from the beginning of the `struct user'.
-
+
As a practical matter, we don't know where the registers
actually are, so we have to pass the whole area to GDB.
We encode the value of u_ar0 by setting the .regs section
@@ -267,11 +266,10 @@ sco5_core_file_p (abfd)
pointed to by u_ar0 (by setting the vma of the start of
the section to -u_ar0). GDB uses this info to locate the
regs, using minor trickery to get around the
- offset-or-absolute-addr problem. */
+ offset-or-absolute-addr problem. */
chead.cs_vaddr = 0 - (bfd_vma) u->u_ar0;
-
secname = ".reg";
flags = SEC_HAS_CONTENTS;
@@ -345,8 +343,8 @@ int
sco5_core_file_failing_signal (ignore_abfd)
bfd *ignore_abfd;
{
- return ((ignore_abfd->tdata.sco5_core_data->u.u_sysabort != 0)
- ? ignore_abfd->tdata.sco5_core_data->u.u_sysabort
+ return ((ignore_abfd->tdata.sco5_core_data->u.u_sysabort != 0)
+ ? ignore_abfd->tdata.sco5_core_data->u.u_sysabort
: -1);
}
@@ -371,9 +369,9 @@ sco5_core_file_matches_executable_p (core_bfd, exec_bfd)
/* If somebody calls any byte-swapping routines, shoot them. */
static void
-swap_abort()
+swap_abort ()
{
- abort(); /* This way doesn't require any declaration for ANSI to fuck up */
+ abort (); /* This way doesn't require any declaration for ANSI to fuck up */
}
#define NO_GET ((bfd_vma (*) PARAMS (( const bfd_byte *))) swap_abort )
#define NO_PUT ((void (*) PARAMS ((bfd_vma, bfd_byte *))) swap_abort )
@@ -426,6 +424,6 @@ const bfd_target sco5_core_vec =
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
(PTR) 0 /* backend_data */
};
diff --git a/contrib/binutils/bfd/section.c b/contrib/binutils/bfd/section.c
index b3b7608..13e10d3 100644
--- a/contrib/binutils/bfd/section.c
+++ b/contrib/binutils/bfd/section.c
@@ -1,5 +1,5 @@
/* Object file "section" support for the BFD library.
- Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
Written by Cygnus Support.
@@ -111,7 +111,6 @@ SUBSECTION
| size 0x103 |
| output_section --------|
-
SUBSECTION
Link orders
@@ -133,7 +132,6 @@ SUBSECTION
*/
-
#include "bfd.h"
#include "sysdep.h"
#include "libbfd.h"
@@ -150,10 +148,10 @@ SUBSECTION
CODE_FRAGMENT
.
-. {* This structure is used for a comdat section, as in PE. A comdat
-. section is associated with a particular symbol. When the linker
-. sees a comdat section, it keeps only one of the sections with a
-. given name and associated with a given symbol. *}
+.{* This structure is used for a comdat section, as in PE. A comdat
+. section is associated with a particular symbol. When the linker
+. sees a comdat section, it keeps only one of the sections with a
+. given name and associated with a given symbol. *}
.
.struct bfd_comdat_info
.{
@@ -165,340 +163,362 @@ CODE_FRAGMENT
. specific code; it is not an index into the list returned by
. bfd_canonicalize_symtab. *}
. long symbol;
-.
-. {* If this section is being discarded, the linker uses this field
-. to point to the input section which is being kept. *}
-. struct sec *sec;
.};
.
.typedef struct sec
.{
-. {* The name of the section; the name isn't a copy, the pointer is
-. the same as that passed to bfd_make_section. *}
+. {* The name of the section; the name isn't a copy, the pointer is
+. the same as that passed to bfd_make_section. *}
+.
+. const char *name;
+.
+. {* A unique sequence number. *}
.
-. CONST char *name;
+. int id;
.
-. {* Which section is it; 0..nth. *}
+. {* Which section is it; 0..nth. *}
.
-. int index;
+. int index;
.
-. {* The next section in the list belonging to the BFD, or NULL. *}
+. {* The next section in the list belonging to the BFD, or NULL. *}
.
-. struct sec *next;
+. struct sec *next;
.
-. {* The field flags contains attributes of the section. Some
-. flags are read in from the object file, and some are
-. synthesized from other information. *}
+. {* The field flags contains attributes of the section. Some
+. flags are read in from the object file, and some are
+. synthesized from other information. *}
.
-. flagword flags;
+. flagword flags;
.
.#define SEC_NO_FLAGS 0x000
.
-. {* Tells the OS to allocate space for this section when loading.
-. This is clear for a section containing debug information
-. only. *}
+. {* Tells the OS to allocate space for this section when loading.
+. This is clear for a section containing debug information only. *}
.#define SEC_ALLOC 0x001
.
-. {* Tells the OS to load the section from the file when loading.
-. This is clear for a .bss section. *}
+. {* Tells the OS to load the section from the file when loading.
+. This is clear for a .bss section. *}
.#define SEC_LOAD 0x002
.
-. {* The section contains data still to be relocated, so there is
-. some relocation information too. *}
+. {* The section contains data still to be relocated, so there is
+. some relocation information too. *}
.#define SEC_RELOC 0x004
.
.#if 0 {* Obsolete ? *}
.#define SEC_BALIGN 0x008
.#endif
.
-. {* A signal to the OS that the section contains read only
-. data. *}
+. {* A signal to the OS that the section contains read only data. *}
.#define SEC_READONLY 0x010
.
-. {* The section contains code only. *}
+. {* The section contains code only. *}
.#define SEC_CODE 0x020
.
-. {* The section contains data only. *}
+. {* The section contains data only. *}
.#define SEC_DATA 0x040
.
-. {* The section will reside in ROM. *}
+. {* The section will reside in ROM. *}
.#define SEC_ROM 0x080
.
-. {* The section contains constructor information. This section
-. type is used by the linker to create lists of constructors and
-. destructors used by <<g++>>. When a back end sees a symbol
-. which should be used in a constructor list, it creates a new
-. section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
-. the symbol to it, and builds a relocation. To build the lists
-. of constructors, all the linker has to do is catenate all the
-. sections called <<__CTOR_LIST__>> and relocate the data
-. contained within - exactly the operations it would peform on
-. standard data. *}
+. {* The section contains constructor information. This section
+. type is used by the linker to create lists of constructors and
+. destructors used by <<g++>>. When a back end sees a symbol
+. which should be used in a constructor list, it creates a new
+. section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
+. the symbol to it, and builds a relocation. To build the lists
+. of constructors, all the linker has to do is catenate all the
+. sections called <<__CTOR_LIST__>> and relocate the data
+. contained within - exactly the operations it would peform on
+. standard data. *}
.#define SEC_CONSTRUCTOR 0x100
.
-. {* The section is a constructor, and should be placed at the
-. end of the text, data, or bss section(?). *}
+. {* The section is a constructor, and should be placed at the
+. end of the text, data, or bss section(?). *}
.#define SEC_CONSTRUCTOR_TEXT 0x1100
.#define SEC_CONSTRUCTOR_DATA 0x2100
.#define SEC_CONSTRUCTOR_BSS 0x3100
.
-. {* The section has contents - a data section could be
-. <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
-. <<SEC_HAS_CONTENTS>> *}
+. {* The section has contents - a data section could be
+. <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
+. <<SEC_HAS_CONTENTS>> *}
.#define SEC_HAS_CONTENTS 0x200
.
-. {* An instruction to the linker to not output the section
-. even if it has information which would normally be written. *}
+. {* An instruction to the linker to not output the section
+. even if it has information which would normally be written. *}
.#define SEC_NEVER_LOAD 0x400
.
-. {* The section is a COFF shared library section. This flag is
-. only for the linker. If this type of section appears in
-. the input file, the linker must copy it to the output file
-. without changing the vma or size. FIXME: Although this
-. was originally intended to be general, it really is COFF
-. specific (and the flag was renamed to indicate this). It
-. might be cleaner to have some more general mechanism to
-. allow the back end to control what the linker does with
-. sections. *}
+. {* The section is a COFF shared library section. This flag is
+. only for the linker. If this type of section appears in
+. the input file, the linker must copy it to the output file
+. without changing the vma or size. FIXME: Although this
+. was originally intended to be general, it really is COFF
+. specific (and the flag was renamed to indicate this). It
+. might be cleaner to have some more general mechanism to
+. allow the back end to control what the linker does with
+. sections. *}
.#define SEC_COFF_SHARED_LIBRARY 0x800
.
-. {* The section contains common symbols (symbols may be defined
-. multiple times, the value of a symbol is the amount of
-. space it requires, and the largest symbol value is the one
-. used). Most targets have exactly one of these (which we
-. translate to bfd_com_section_ptr), but ECOFF has two. *}
+. {* The section has GOT references. This flag is only for the
+. linker, and is currently only used by the elf32-hppa back end.
+. It will be set if global offset table references were detected
+. in this section, which indicate to the linker that the section
+. contains PIC code, and must be handled specially when doing a
+. static link. *}
+.#define SEC_HAS_GOT_REF 0x4000
+.
+. {* The section contains common symbols (symbols may be defined
+. multiple times, the value of a symbol is the amount of
+. space it requires, and the largest symbol value is the one
+. used). Most targets have exactly one of these (which we
+. translate to bfd_com_section_ptr), but ECOFF has two. *}
.#define SEC_IS_COMMON 0x8000
.
-. {* The section contains only debugging information. For
-. example, this is set for ELF .debug and .stab sections.
-. strip tests this flag to see if a section can be
-. discarded. *}
+. {* The section contains only debugging information. For
+. example, this is set for ELF .debug and .stab sections.
+. strip tests this flag to see if a section can be
+. discarded. *}
.#define SEC_DEBUGGING 0x10000
.
-. {* The contents of this section are held in memory pointed to
-. by the contents field. This is checked by
-. bfd_get_section_contents, and the data is retrieved from
-. memory if appropriate. *}
+. {* The contents of this section are held in memory pointed to
+. by the contents field. This is checked by bfd_get_section_contents,
+. and the data is retrieved from memory if appropriate. *}
.#define SEC_IN_MEMORY 0x20000
.
-. {* The contents of this section are to be excluded by the
-. linker for executable and shared objects unless those
-. objects are to be further relocated. *}
+. {* The contents of this section are to be excluded by the
+. linker for executable and shared objects unless those
+. objects are to be further relocated. *}
.#define SEC_EXCLUDE 0x40000
.
-. {* The contents of this section are to be sorted by the
-. based on the address specified in the associated symbol
-. table. *}
+. {* The contents of this section are to be sorted by the
+. based on the address specified in the associated symbol
+. table. *}
.#define SEC_SORT_ENTRIES 0x80000
.
-. {* When linking, duplicate sections of the same name should be
-. discarded, rather than being combined into a single section as
-. is usually done. This is similar to how common symbols are
-. handled. See SEC_LINK_DUPLICATES below. *}
+. {* When linking, duplicate sections of the same name should be
+. discarded, rather than being combined into a single section as
+. is usually done. This is similar to how common symbols are
+. handled. See SEC_LINK_DUPLICATES below. *}
.#define SEC_LINK_ONCE 0x100000
.
-. {* If SEC_LINK_ONCE is set, this bitfield describes how the linker
-. should handle duplicate sections. *}
+. {* If SEC_LINK_ONCE is set, this bitfield describes how the linker
+. should handle duplicate sections. *}
.#define SEC_LINK_DUPLICATES 0x600000
.
-. {* This value for SEC_LINK_DUPLICATES means that duplicate
-. sections with the same name should simply be discarded. *}
+. {* This value for SEC_LINK_DUPLICATES means that duplicate
+. sections with the same name should simply be discarded. *}
.#define SEC_LINK_DUPLICATES_DISCARD 0x0
.
-. {* This value for SEC_LINK_DUPLICATES means that the linker
-. should warn if there are any duplicate sections, although
-. it should still only link one copy. *}
+. {* This value for SEC_LINK_DUPLICATES means that the linker
+. should warn if there are any duplicate sections, although
+. it should still only link one copy. *}
.#define SEC_LINK_DUPLICATES_ONE_ONLY 0x200000
.
-. {* This value for SEC_LINK_DUPLICATES means that the linker
-. should warn if any duplicate sections are a different size. *}
+. {* This value for SEC_LINK_DUPLICATES means that the linker
+. should warn if any duplicate sections are a different size. *}
.#define SEC_LINK_DUPLICATES_SAME_SIZE 0x400000
.
-. {* This value for SEC_LINK_DUPLICATES means that the linker
-. should warn if any duplicate sections contain different
-. contents. *}
+. {* This value for SEC_LINK_DUPLICATES means that the linker
+. should warn if any duplicate sections contain different
+. contents. *}
.#define SEC_LINK_DUPLICATES_SAME_CONTENTS 0x600000
.
-. {* This section was created by the linker as part of dynamic
-. relocation or other arcane processing. It is skipped when
-. going through the first-pass output, trusting that someone
-. else up the line will take care of it later. *}
+. {* This section was created by the linker as part of dynamic
+. relocation or other arcane processing. It is skipped when
+. going through the first-pass output, trusting that someone
+. else up the line will take care of it later. *}
.#define SEC_LINKER_CREATED 0x800000
.
-. {* This section should not be subject to garbage collection. *}
+. {* This section should not be subject to garbage collection. *}
.#define SEC_KEEP 0x1000000
.
-. {* This section contains "short" data, and should be placed
-. "near" the GP. *}
+. {* This section contains "short" data, and should be placed
+. "near" the GP. *}
.#define SEC_SMALL_DATA 0x2000000
.
-. {* This section contains data which may be shared with other
-. executables or shared objects. *}
+. {* This section contains data which may be shared with other
+. executables or shared objects. *}
.#define SEC_SHARED 0x4000000
.
-. {* End of section flags. *}
+. {* When a section with this flag is being linked, then if the size of
+. the input section is less than a page, it should not cross a page
+. boundary. If the size of the input section is one page or more, it
+. should be aligned on a page boundary. *}
+.#define SEC_BLOCK 0x8000000
.
-. {* Some internal packed boolean fields. *}
+. {* Conditionally link this section; do not link if there are no
+. references found to any symbol in the section. *}
+.#define SEC_CLINK 0x10000000
.
-. {* See the vma field. *}
-. unsigned int user_set_vma : 1;
+. {* End of section flags. *}
.
-. {* Whether relocations have been processed. *}
-. unsigned int reloc_done : 1;
+. {* Some internal packed boolean fields. *}
.
-. {* A mark flag used by some of the linker backends. *}
-. unsigned int linker_mark : 1;
+. {* See the vma field. *}
+. unsigned int user_set_vma : 1;
.
-. {* A mark flag used by some linker backends for garbage collection. *}
-. unsigned int gc_mark : 1;
+. {* Whether relocations have been processed. *}
+. unsigned int reloc_done : 1;
.
-. {* End of internal packed boolean fields. *}
+. {* A mark flag used by some of the linker backends. *}
+. unsigned int linker_mark : 1;
.
-. {* The virtual memory address of the section - where it will be
-. at run time. The symbols are relocated against this. The
-. user_set_vma flag is maintained by bfd; if it's not set, the
-. backend can assign addresses (for example, in <<a.out>>, where
-. the default address for <<.data>> is dependent on the specific
-. target and various flags). *}
+. {* A mark flag used by some linker backends for garbage collection. *}
+. unsigned int gc_mark : 1;
.
-. bfd_vma vma;
+. {* Used by the ELF code to mark sections which have been allocated to segments. *}
+. unsigned int segment_mark : 1;
.
-. {* The load address of the section - where it would be in a
-. rom image; really only used for writing section header
-. information. *}
+. {* End of internal packed boolean fields. *}
.
-. bfd_vma lma;
+. {* The virtual memory address of the section - where it will be
+. at run time. The symbols are relocated against this. The
+. user_set_vma flag is maintained by bfd; if it's not set, the
+. backend can assign addresses (for example, in <<a.out>>, where
+. the default address for <<.data>> is dependent on the specific
+. target and various flags). *}
.
-. {* The size of the section in octets, as it will be output.
-. Contains a value even if the section has no contents (e.g., the
-. size of <<.bss>>). This will be filled in after relocation. *}
+. bfd_vma vma;
.
-. bfd_size_type _cooked_size;
+. {* The load address of the section - where it would be in a
+. rom image; really only used for writing section header
+. information. *}
.
-. {* The original size on disk of the section, in octets. Normally this
-. value is the same as the size, but if some relaxing has
-. been done, then this value will be bigger. *}
+. bfd_vma lma;
.
-. bfd_size_type _raw_size;
+. {* The size of the section in octets, as it will be output.
+. Contains a value even if the section has no contents (e.g., the
+. size of <<.bss>>). This will be filled in after relocation. *}
.
-. {* If this section is going to be output, then this value is the
-. offset in *bytes* into the output section of the first byte in the
-. input section (byte ==> smallest addressable unit on the
-. target). In most cases, if this was going to start at the
-. 100th octet (8-bit quantity) in the output section, this value
-. would be 100. However, if the target byte size is 16 bits
-. (bfd_octets_per_byte is "2"), this value would be 50. *}
+. bfd_size_type _cooked_size;
.
-. bfd_vma output_offset;
+. {* The original size on disk of the section, in octets. Normally this
+. value is the same as the size, but if some relaxing has
+. been done, then this value will be bigger. *}
.
-. {* The output section through which to map on output. *}
+. bfd_size_type _raw_size;
.
-. struct sec *output_section;
+. {* If this section is going to be output, then this value is the
+. offset in *bytes* into the output section of the first byte in the
+. input section (byte ==> smallest addressable unit on the
+. target). In most cases, if this was going to start at the
+. 100th octet (8-bit quantity) in the output section, this value
+. would be 100. However, if the target byte size is 16 bits
+. (bfd_octets_per_byte is "2"), this value would be 50. *}
.
-. {* The alignment requirement of the section, as an exponent of 2 -
-. e.g., 3 aligns to 2^3 (or 8). *}
+. bfd_vma output_offset;
.
-. unsigned int alignment_power;
+. {* The output section through which to map on output. *}
.
-. {* If an input section, a pointer to a vector of relocation
-. records for the data in this section. *}
+. struct sec *output_section;
.
-. struct reloc_cache_entry *relocation;
+. {* The alignment requirement of the section, as an exponent of 2 -
+. e.g., 3 aligns to 2^3 (or 8). *}
.
-. {* If an output section, a pointer to a vector of pointers to
-. relocation records for the data in this section. *}
+. unsigned int alignment_power;
.
-. struct reloc_cache_entry **orelocation;
+. {* If an input section, a pointer to a vector of relocation
+. records for the data in this section. *}
.
-. {* The number of relocation records in one of the above *}
+. struct reloc_cache_entry *relocation;
.
-. unsigned reloc_count;
+. {* If an output section, a pointer to a vector of pointers to
+. relocation records for the data in this section. *}
.
-. {* Information below is back end specific - and not always used
-. or updated. *}
+. struct reloc_cache_entry **orelocation;
.
-. {* File position of section data *}
+. {* The number of relocation records in one of the above *}
.
-. file_ptr filepos;
+. unsigned reloc_count;
.
-. {* File position of relocation info *}
+. {* Information below is back end specific - and not always used
+. or updated. *}
.
-. file_ptr rel_filepos;
+. {* File position of section data. *}
.
-. {* File position of line data *}
+. file_ptr filepos;
.
-. file_ptr line_filepos;
+. {* File position of relocation info. *}
.
-. {* Pointer to data for applications *}
+. file_ptr rel_filepos;
.
-. PTR userdata;
+. {* File position of line data. *}
.
-. {* If the SEC_IN_MEMORY flag is set, this points to the actual
-. contents. *}
-. unsigned char *contents;
+. file_ptr line_filepos;
.
-. {* Attached line number information *}
+. {* Pointer to data for applications. *}
.
-. alent *lineno;
+. PTR userdata;
.
-. {* Number of line number records *}
+. {* If the SEC_IN_MEMORY flag is set, this points to the actual
+. contents. *}
+. unsigned char *contents;
.
-. unsigned int lineno_count;
+. {* Attached line number information. *}
.
-. {* Optional information about a COMDAT entry; NULL if not COMDAT *}
+. alent *lineno;
.
-. struct bfd_comdat_info *comdat;
+. {* Number of line number records. *}
.
-. {* When a section is being output, this value changes as more
-. linenumbers are written out *}
+. unsigned int lineno_count;
.
-. file_ptr moving_line_filepos;
+. {* Optional information about a COMDAT entry; NULL if not COMDAT. *}
.
-. {* What the section number is in the target world *}
+. struct bfd_comdat_info *comdat;
.
-. int target_index;
+. {* Points to the kept section if this section is a link-once section,
+. and is discarded. *}
+. struct sec *kept_section;
.
-. PTR used_by_bfd;
+. {* When a section is being output, this value changes as more
+. linenumbers are written out. *}
.
-. {* If this is a constructor section then here is a list of the
-. relocations created to relocate items within it. *}
+. file_ptr moving_line_filepos;
.
-. struct relent_chain *constructor_chain;
+. {* What the section number is in the target world. *}
.
-. {* The BFD which owns the section. *}
+. int target_index;
.
-. bfd *owner;
+. PTR used_by_bfd;
.
-. {* A symbol which points at this section only *}
-. struct symbol_cache_entry *symbol;
-. struct symbol_cache_entry **symbol_ptr_ptr;
+. {* If this is a constructor section then here is a list of the
+. relocations created to relocate items within it. *}
.
-. struct bfd_link_order *link_order_head;
-. struct bfd_link_order *link_order_tail;
+. struct relent_chain *constructor_chain;
+.
+. {* The BFD which owns the section. *}
+.
+. bfd *owner;
+.
+. {* A symbol which points at this section only *}
+. struct symbol_cache_entry *symbol;
+. struct symbol_cache_entry **symbol_ptr_ptr;
+.
+. struct bfd_link_order *link_order_head;
+. struct bfd_link_order *link_order_tail;
.} asection ;
.
-. {* These sections are global, and are managed by BFD. The application
-. and target back end are not permitted to change the values in
-. these sections. New code should use the section_ptr macros rather
-. than referring directly to the const sections. The const sections
-. may eventually vanish. *}
+.{* These sections are global, and are managed by BFD. The application
+. and target back end are not permitted to change the values in
+. these sections. New code should use the section_ptr macros rather
+. than referring directly to the const sections. The const sections
+. may eventually vanish. *}
.#define BFD_ABS_SECTION_NAME "*ABS*"
.#define BFD_UND_SECTION_NAME "*UND*"
.#define BFD_COM_SECTION_NAME "*COM*"
.#define BFD_IND_SECTION_NAME "*IND*"
.
-. {* the absolute section *}
+.{* the absolute section *}
.extern const asection bfd_abs_section;
.#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
.#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
-. {* Pointer to the undefined section *}
+.{* Pointer to the undefined section *}
.extern const asection bfd_und_section;
.#define bfd_und_section_ptr ((asection *) &bfd_und_section)
.#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
-. {* Pointer to the common section *}
+.{* Pointer to the common section *}
.extern const asection bfd_com_section;
.#define bfd_com_section_ptr ((asection *) &bfd_com_section)
-. {* Pointer to the indirect section *}
+.{* Pointer to the indirect section *}
.extern const asection bfd_ind_section;
.#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
.#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
@@ -538,29 +558,38 @@ static const asymbol global_syms[] =
GLOBAL_SYM_INIT (BFD_IND_SECTION_NAME, &bfd_ind_section)
};
-#define STD_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
- const asymbol * const SYM = (asymbol *) &global_syms[IDX]; \
- const asection SEC = \
- /* name, index, next, flags, set_vma, reloc_done, linker_mark, gc_mark */ \
- { NAME, 0, 0, FLAGS, 0, 0, 0, 0, \
- \
- /* vma, lma, _cooked_size, _raw_size, output_offset, output_section, */ \
- 0, 0, 0, 0, 0, (struct sec *) &SEC, \
- \
- /* alig..., reloc..., orel..., reloc_count, filepos, rel_..., line_... */ \
- 0, 0, 0, 0, 0, 0, 0, \
- \
- /* userdata, contents, lineno, lineno_count */ \
- 0, 0, 0, 0, \
- \
- /* comdat_info, moving_line_filepos, target_index, used_by_bfd, */ \
- NULL, 0, 0, 0, \
- \
- /* cons..., owner, symbol */ \
- 0, 0, (struct symbol_cache_entry *) &global_syms[IDX], \
- \
- /* symbol_ptr_ptr, link_order_head, ..._tail */ \
- (struct symbol_cache_entry **) &SYM, 0, 0 \
+#define STD_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
+ const asymbol * const SYM = (asymbol *) &global_syms[IDX]; \
+ const asection SEC = \
+ /* name, id, index, next, flags, user_set_vma, reloc_done, */ \
+ { NAME, IDX, 0, NULL, FLAGS, 0, 0, \
+ \
+ /* linker_mark, gc_mark, segment_mark, vma, lma, _cooked_size, */ \
+ 0, 1, 0, 0, 0, 0, \
+ \
+ /* _raw_size, output_offset, output_section, alignment_power, */ \
+ 0, 0, (struct sec *) &SEC, 0, \
+ \
+ /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
+ NULL, NULL, 0, 0, 0, \
+ \
+ /* line_filepos, userdata, contents, lineno, lineno_count, */ \
+ 0, NULL, NULL, NULL, 0, \
+ \
+ /* comdat, kept_section, moving_line_filepos, target_index, */ \
+ NULL, NULL, 0, 0, \
+ \
+ /* used_by_bfd, constructor_chain, owner, */ \
+ NULL, NULL, NULL, \
+ \
+ /* symbol, */ \
+ (struct symbol_cache_entry *) &global_syms[IDX], \
+ \
+ /* symbol_ptr_ptr, */ \
+ (struct symbol_cache_entry **) &SYM, \
+ \
+ /* link_order_head, link_order_tail */ \
+ NULL, NULL \
}
STD_SECTION (bfd_com_section, SEC_IS_COMMON, bfd_com_symbol,
@@ -585,7 +614,7 @@ FUNCTION
bfd_get_section_by_name
SYNOPSIS
- asection *bfd_get_section_by_name(bfd *abfd, CONST char *name);
+ asection *bfd_get_section_by_name(bfd *abfd, const char *name);
DESCRIPTION
Run through @var{abfd} and return the one of the
@@ -601,7 +630,7 @@ DESCRIPTION
asection *
bfd_get_section_by_name (abfd, name)
bfd *abfd;
- CONST char *name;
+ const char *name;
{
asection *sect;
@@ -611,13 +640,62 @@ bfd_get_section_by_name (abfd, name)
return NULL;
}
+/*
+FUNCTION
+ bfd_get_unique_section_name
+
+SYNOPSIS
+ char *bfd_get_unique_section_name(bfd *abfd,
+ const char *templat,
+ int *count);
+
+DESCRIPTION
+ Invent a section name that is unique in @var{abfd} by tacking
+ a dot and a digit suffix onto the original @var{templat}. If
+ @var{count} is non-NULL, then it specifies the first number
+ tried as a suffix to generate a unique name. The value
+ pointed to by @var{count} will be incremented in this case.
+*/
+
+char *
+bfd_get_unique_section_name (abfd, templat, count)
+ bfd *abfd;
+ const char *templat;
+ int *count;
+{
+ int num;
+ unsigned int len;
+ char *sname;
+
+ len = strlen (templat);
+ sname = bfd_malloc (len + 8);
+ if (sname == NULL)
+ return NULL;
+ strcpy (sname, templat);
+ num = 1;
+ if (count != NULL)
+ num = *count;
+
+ do
+ {
+ /* If we have a million sections, something is badly wrong. */
+ if (num > 999999)
+ abort ();
+ sprintf (sname + len, ".%d", num++);
+ }
+ while (bfd_get_section_by_name (abfd, sname) != NULL);
+
+ if (count != NULL)
+ *count = num;
+ return sname;
+}
/*
FUNCTION
bfd_make_section_old_way
SYNOPSIS
- asection *bfd_make_section_old_way(bfd *abfd, CONST char *name);
+ asection *bfd_make_section_old_way(bfd *abfd, const char *name);
DESCRIPTION
Create a new empty section called @var{name}
@@ -637,11 +715,10 @@ DESCRIPTION
*/
-
asection *
bfd_make_section_old_way (abfd, name)
bfd *abfd;
- CONST char *name;
+ const char *name;
{
asection *sec = bfd_get_section_by_name (abfd, name);
if (sec == (asection *) NULL)
@@ -656,7 +733,7 @@ FUNCTION
bfd_make_section_anyway
SYNOPSIS
- asection *bfd_make_section_anyway(bfd *abfd, CONST char *name);
+ asection *bfd_make_section_anyway(bfd *abfd, const char *name);
DESCRIPTION
Create a new empty section called @var{name} and attach it to the end of
@@ -671,8 +748,9 @@ DESCRIPTION
sec_ptr
bfd_make_section_anyway (abfd, name)
bfd *abfd;
- CONST char *name;
+ const char *name;
{
+ static int section_id = 0x10; /* id 0 to 3 used by STD_SECTION. */
asection *newsect;
asection **prev = &abfd->sections;
asection *sect = abfd->sections;
@@ -694,6 +772,7 @@ bfd_make_section_anyway (abfd, name)
return NULL;
newsect->name = name;
+ newsect->id = section_id++;
newsect->index = abfd->section_count++;
newsect->flags = SEC_NO_FLAGS;
@@ -705,13 +784,17 @@ bfd_make_section_anyway (abfd, name)
newsect->line_filepos = 0;
newsect->owner = abfd;
newsect->comdat = NULL;
+ newsect->kept_section = NULL;
/* Create a symbol whos only job is to point to this section. This is
useful for things like relocs which are relative to the base of a
section. */
newsect->symbol = bfd_make_empty_symbol (abfd);
if (newsect->symbol == NULL)
- return NULL;
+ {
+ bfd_release (abfd, newsect);
+ return NULL;
+ }
newsect->symbol->name = name;
newsect->symbol->value = 0;
newsect->symbol->section = newsect;
@@ -721,7 +804,7 @@ bfd_make_section_anyway (abfd, name)
if (BFD_SEND (abfd, _new_section_hook, (abfd, newsect)) != true)
{
- free (newsect);
+ bfd_release (abfd, newsect);
return NULL;
}
@@ -734,7 +817,7 @@ FUNCTION
bfd_make_section
SYNOPSIS
- asection *bfd_make_section(bfd *, CONST char *name);
+ asection *bfd_make_section(bfd *, const char *name);
DESCRIPTION
Like <<bfd_make_section_anyway>>, but return <<NULL>> (without calling
@@ -746,7 +829,7 @@ DESCRIPTION
asection *
bfd_make_section (abfd, name)
bfd *abfd;
- CONST char *name;
+ const char *name;
{
asection *sect = abfd->sections;
@@ -779,7 +862,6 @@ bfd_make_section (abfd, name)
return bfd_make_section_anyway (abfd, name);
}
-
/*
FUNCTION
bfd_set_section_flags
@@ -823,14 +905,13 @@ bfd_set_section_flags (abfd, section, flags)
return true;
}
-
/*
FUNCTION
bfd_map_over_sections
SYNOPSIS
void bfd_map_over_sections(bfd *abfd,
- void (*func)(bfd *abfd,
+ void (*func) (bfd *abfd,
asection *sect,
PTR obj),
PTR obj);
@@ -849,7 +930,6 @@ DESCRIPTION
| for (p = abfd->sections; p != NULL; p = p->next)
| func(abfd, p, ...)
-
*/
/*VARARGS2*/
@@ -869,7 +949,6 @@ bfd_map_over_sections (abfd, operation, user_storage)
abort ();
}
-
/*
FUNCTION
bfd_set_section_size
@@ -894,7 +973,7 @@ bfd_set_section_size (abfd, ptr, val)
bfd_size_type val;
{
/* Once you've started writing to any section you cannot create or change
- the size of any others. */
+ the size of any others. */
if (abfd->output_has_begun)
{
@@ -920,15 +999,12 @@ SYNOPSIS
file_ptr offset,
bfd_size_type count);
-
DESCRIPTION
Sets the contents of the section @var{section} in BFD
@var{abfd} to the data starting in memory at @var{data}. The
data is written to the output section starting at offset
@var{offset} for @var{count} octets.
-
-
Normally <<true>> is returned, else <<false>>. Possible error
returns are:
o <<bfd_error_no_contents>> -
@@ -939,7 +1015,6 @@ DESCRIPTION
This routine is front end to the back end function
<<_bfd_set_section_contents>>.
-
*/
#define bfd_get_section_size_now(abfd,sec) \
@@ -993,6 +1068,11 @@ bfd_set_section_contents (abfd, section, location, offset, count)
break;
}
+ /* Record a copy of the data in memory if desired. */
+ if (section->contents
+ && location != section->contents + offset)
+ memcpy (section->contents + offset, location, count);
+
if (BFD_SEND (abfd, _bfd_set_section_contents,
(abfd, section, location, offset, count)))
{
@@ -1024,8 +1104,6 @@ DESCRIPTION
with zeroes. If no errors occur, <<true>> is returned, else
<<false>>.
-
-
*/
boolean
bfd_get_section_contents (abfd, section, location, offset, count)
@@ -1159,7 +1237,7 @@ _bfd_strip_section_from_output (info, s)
}
/* If the output section is empty, remove it too. Careful about sections
- that have been discarded in the link script -- they are mapped to
+ that have been discarded in the link script -- they are mapped to
bfd_abs_section, which has no owner. */
if (!keep_os && os->owner != NULL)
{
diff --git a/contrib/binutils/bfd/sparclinux.c b/contrib/binutils/bfd/sparclinux.c
index 73a29b3..57bf6c6 100644
--- a/contrib/binutils/bfd/sparclinux.c
+++ b/contrib/binutils/bfd/sparclinux.c
@@ -95,7 +95,7 @@ sparclinux_write_object_contents (abfd)
#define IS_GOT_SYM(name) \
(strncmp (name, GOT_REF_PREFIX, sizeof GOT_REF_PREFIX - 1) == 0)
-/* See if a symbol name is a reference to the procedure linkage table. */
+/* See if a symbol name is a reference to the procedure linkage table. */
#ifndef PLT_REF_PREFIX
#define PLT_REF_PREFIX "__PLT_"
@@ -478,7 +478,7 @@ linux_tally_symbols (h, data)
(h->root.root.root.string
+ sizeof PLT_REF_PREFIX - 1),
false, false, true);
- /* h2 does not follow indirect symbols. */
+ /* h2 does not follow indirect symbols. */
h2 = linux_link_hash_lookup (linux_hash_table (info),
(h->root.root.root.string
+ sizeof PLT_REF_PREFIX - 1),
@@ -535,7 +535,7 @@ linux_tally_symbols (h, data)
}
/* Quick and dirty way of stripping these symbols from the
- symtab. */
+ symtab. */
if (bfd_is_abs_section (h->root.root.u.def.section))
h->root.written = true;
}
@@ -560,7 +560,7 @@ bfd_sparclinux_size_dynamic_sections (output_bfd, info)
if (output_bfd->xvec != &MY(vec))
return true;
- /* First find the fixups... */
+ /* First find the fixups... */
linux_link_hash_traverse (linux_hash_table (info),
linux_tally_symbols,
(PTR) info);
diff --git a/contrib/binutils/bfd/sparcnetbsd.c b/contrib/binutils/bfd/sparcnetbsd.c
index 4277bb8..c21f063 100644
--- a/contrib/binutils/bfd/sparcnetbsd.c
+++ b/contrib/binutils/bfd/sparcnetbsd.c
@@ -21,7 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define TARGET_IS_BIG_ENDIAN_P
/* SPARC chips use either 4K or 8K pages, but object files always
- assume 8K page alignment so they will work on either one. */
+ assume 8K page alignment so they will work on either one. */
#define TARGET_PAGE_SIZE 0x2000
#define DEFAULT_ARCH bfd_arch_sparc
diff --git a/contrib/binutils/bfd/srec.c b/contrib/binutils/bfd/srec.c
index 31f69b0..5602239 100644
--- a/contrib/binutils/bfd/srec.c
+++ b/contrib/binutils/bfd/srec.c
@@ -1,5 +1,5 @@
/* BFD back-end for s-record objects.
- Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
Written by Steve Chamberlain of Cygnus Support <sac@cygnus.com>.
@@ -24,7 +24,7 @@ SUBSECTION
S-Record handling
DESCRIPTION
-
+
Ordinary S-Records cannot hold anything but addresses and
data, so that's all that we implement.
@@ -42,10 +42,10 @@ DESCRIPTION
up and output them when it's time to close the bfd.
An s record looks like:
-
+
EXAMPLE
S<type><length><address><data><checksum>
-
+
DESCRIPTION
Where
o length
@@ -61,7 +61,7 @@ DESCRIPTION
7) four byte address termination record
8) three byte address termination record
9) two byte address termination record
-
+
o address
is the start address of the data following, or in the case of
a termination record, the start address of the image
@@ -71,7 +71,6 @@ DESCRIPTION
is the sum of all the raw byte data in the record, from the length
upwards, modulo 256 and subtracted from 255.
-
SUBSECTION
Symbol S-Record handling
@@ -101,7 +100,7 @@ EXAMPLE
DESCRIPTION
We allow symbols to be anywhere in the data stream - the module names
are always ignored.
-
+
*/
#include "bfd.h"
@@ -142,7 +141,7 @@ static asymbol *srec_make_empty_symbol PARAMS ((bfd *));
static long srec_get_symtab_upper_bound PARAMS ((bfd *));
static long srec_get_symtab PARAMS ((bfd *, asymbol **));
-/* Macros for converting between hex and binary. */
+/* Macros for converting between hex and binary. */
static CONST char digs[] = "0123456789ABCDEF";
@@ -154,7 +153,7 @@ static CONST char digs[] = "0123456789ABCDEF";
ch += ((x) & 0xff);
#define ISHEX(x) hex_p(x)
-/* Initialize by filling in the hex conversion array. */
+/* Initialize by filling in the hex conversion array. */
static void
srec_init ()
@@ -168,10 +167,21 @@ srec_init ()
}
}
-/* The maximum number of bytes on a line is FF */
+/* The maximum number of bytes on a line is FF. */
#define MAXCHUNK 0xff
-/* The number of bytes we fit onto a line on output */
-#define CHUNK 16
+
+/* Default size for a CHUNK. */
+#define DEFAULT_CHUNK 16
+
+/* The number of bytes we actually fit onto a line on output.
+ This variable can be modified by objcopy's --srec-len parameter.
+ For a 0x75 byte record you should set --srec-len=0x70. */
+unsigned int Chunk = DEFAULT_CHUNK;
+
+/* The type of srec output (free or forced to S3).
+ This variable can be modified by objcopy's --srec-forceS3
+ parameter. */
+boolean S3Forced = 0;
/* When writing an S-record file, the S-records can not be output as
they are seen. This structure is used to hold them in memory. */
@@ -467,7 +477,8 @@ srec_scan (abfd)
if (! srec_new_symbol (abfd, symname, symval))
goto error_return;
}
- while (c == ' ' || c == '\t');
+ while (c == ' ' || c == '\t')
+ ;
if (c == '\n')
++lineno;
@@ -478,7 +489,7 @@ srec_scan (abfd)
}
break;
-
+
case 'S':
{
file_ptr pos;
@@ -839,7 +850,7 @@ srec_set_arch_mach (abfd, arch, mach)
return bfd_default_set_arch_mach (abfd, arch, mach);
}
-/* we have to save up all the Srecords for a splurge before output */
+/* We have to save up all the Srecords for a splurge before output. */
static boolean
srec_set_section_contents (abfd, section, location, offset, bytes_to_do)
@@ -866,19 +877,17 @@ srec_set_section_contents (abfd, section, location, offset, bytes_to_do)
return false;
memcpy ((PTR) data, location, (size_t) bytes_to_do);
- if ((section->lma + offset + bytes_to_do - 1) <= 0xffff)
- {
-
- }
+ /* Ff S3Forced is true then always select S3 records,
+ regardless of the siez of the addresses. */
+ if (S3Forced)
+ tdata->type = 3;
+ else if ((section->lma + offset + bytes_to_do - 1) <= 0xffff)
+ ; /* The default, S1, is OK. */
else if ((section->lma + offset + bytes_to_do - 1) <= 0xffffff
&& tdata->type <= 2)
- {
- tdata->type = 2;
- }
+ tdata->type = 2;
else
- {
- tdata->type = 3;
- }
+ tdata->type = 3;
entry->data = data;
entry->where = section->lma + offset;
@@ -912,8 +921,8 @@ srec_set_section_contents (abfd, section, location, offset, bytes_to_do)
/* Write a record of type, of the supplied number of bytes. The
supplied bytes and length don't have a checksum. That's worked out
- here
-*/
+ here. */
+
static boolean
srec_write_record (abfd, type, address, data, end)
bfd *abfd;
@@ -933,7 +942,7 @@ srec_write_record (abfd, type, address, data, end)
*dst++ = '0' + type;
length = dst;
- dst += 2; /* leave room for dst*/
+ dst += 2; /* Leave room for dst. */
switch (type)
{
@@ -961,7 +970,7 @@ srec_write_record (abfd, type, address, data, end)
dst += 2;
}
- /* Fill in the length */
+ /* Fill in the length. */
TOHEX (length, (dst - length) / 2, check_sum);
check_sum &= 0xff;
check_sum = 255 - check_sum;
@@ -976,8 +985,6 @@ srec_write_record (abfd, type, address, data, end)
return true;
}
-
-
static boolean
srec_write_header (abfd)
bfd *abfd;
@@ -986,11 +993,10 @@ srec_write_header (abfd)
bfd_byte *dst = buffer;
unsigned int i;
- /* I'll put an arbitary 40 char limit on header size */
+ /* I'll put an arbitary 40 char limit on header size. */
for (i = 0; i < 40 && abfd->filename[i]; i++)
- {
- *dst++ = abfd->filename[i];
- }
+ *dst++ = abfd->filename[i];
+
return srec_write_record (abfd, 0, 0, buffer, dst);
}
@@ -1008,8 +1014,8 @@ srec_write_section (abfd, tdata, list)
bfd_vma address;
unsigned int octets_this_chunk = list->size - octets_written;
- if (octets_this_chunk > CHUNK)
- octets_this_chunk = CHUNK;
+ if (octets_this_chunk > Chunk)
+ octets_this_chunk = Chunk;
address = list->where + octets_written / bfd_octets_per_byte (abfd);
@@ -1038,14 +1044,12 @@ srec_write_terminator (abfd, tdata)
abfd->start_address, buffer, buffer);
}
-
-
static boolean
srec_write_symbols (abfd)
bfd *abfd;
{
char buffer[MAXCHUNK];
- /* Dump out the symbols of a bfd */
+ /* Dump out the symbols of a bfd. */
int i;
int count = bfd_get_symcount (abfd);
@@ -1065,7 +1069,7 @@ srec_write_symbols (abfd)
if (! bfd_is_local_label (abfd, s)
&& (s->flags & BSF_DEBUGGING) == 0)
{
- /* Just dump out non debug symbols */
+ /* Just dump out non debug symbols. */
bfd_size_type l;
char buf2[40], *p;
@@ -1107,7 +1111,7 @@ internal_srec_write_object_contents (abfd, symbols)
if (! srec_write_header (abfd))
return false;
- /* Now wander though all the sections provided and output them */
+ /* Now wander though all the sections provided and output them. */
list = tdata->head;
while (list != (srec_data_list_type *) NULL)
@@ -1133,7 +1137,6 @@ symbolsrec_write_object_contents (abfd)
return internal_srec_write_object_contents (abfd, 1);
}
-/*ARGSUSED*/
static int
srec_sizeof_headers (abfd, exec)
bfd *abfd ATTRIBUTE_UNUSED;
@@ -1195,7 +1198,7 @@ srec_get_symtab (abfd, alocation)
c->udata.p = NULL;
}
}
-
+
for (i = 0; i < symcount; i++)
*alocation++ = csymbols++;
*alocation = NULL;
@@ -1203,7 +1206,6 @@ srec_get_symtab (abfd, alocation)
return symcount;
}
-/*ARGSUSED*/
static void
srec_get_symbol_info (ignore_abfd, symbol, ret)
bfd *ignore_abfd ATTRIBUTE_UNUSED;
@@ -1213,7 +1215,6 @@ srec_get_symbol_info (ignore_abfd, symbol, ret)
bfd_symbol_info (symbol, ret);
}
-/*ARGSUSED*/
static void
srec_print_symbol (ignore_abfd, afile, symbol, how)
bfd *ignore_abfd ATTRIBUTE_UNUSED;
@@ -1316,12 +1317,10 @@ const bfd_target srec_vec =
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
(PTR) 0
};
-
-
const bfd_target symbolsrec_vec =
{
"symbolsrec", /* name */
@@ -1373,6 +1372,6 @@ const bfd_target symbolsrec_vec =
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
(PTR) 0
};
diff --git a/contrib/binutils/bfd/stab-syms.c b/contrib/binutils/bfd/stab-syms.c
index f4fe6c8..4b0827f 100644
--- a/contrib/binutils/bfd/stab-syms.c
+++ b/contrib/binutils/bfd/stab-syms.c
@@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "bfd.h"
-#define ARCH_SIZE 32 /* Value doesn't matter. */
+#define ARCH_SIZE 32 /* Value doesn't matter. */
#include "libaout.h"
#include "aout/aout64.h"
@@ -32,13 +32,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* These are not really stab symbols, but it is
convenient to have them here for the sake of nm.
For completeness, we could also add N_TEXT etc, but those
- are never needed, since nm treats those specially. */
+ are never needed, since nm treats those specially. */
#define EXTRA_SYMBOLS \
__define_name (N_SETA, "SETA")/* Absolute set element symbol */ \
__define_name (N_SETT, "SETT")/* Text set element symbol */ \
__define_name (N_SETD, "SETD")/* Data set element symbol */ \
__define_name (N_SETB, "SETB")/* Bss set element symbol */ \
- __define_name (N_SETV, "SETV")/* Pointer to set vector in data area. */ \
+ __define_name (N_SETV, "SETV")/* Pointer to set vector in data area. */ \
__define_name (N_INDR, "INDR") \
__define_name (N_WARNING, "WARNING")
diff --git a/contrib/binutils/bfd/stabs.c b/contrib/binutils/bfd/stabs.c
index e9ac167..eb9ce8a 100644
--- a/contrib/binutils/bfd/stabs.c
+++ b/contrib/binutils/bfd/stabs.c
@@ -108,7 +108,7 @@ struct stab_section_info
as the input offsets, because no stabs have been deleted from
this section. Otherwise the i'th entry is the number of
bytes of stabs that have been deleted prior to the i'th
- stab. */
+ stab. */
bfd_size_type *cumulative_skips;
/* This is an array of string indices. For each stab symbol, we
@@ -464,7 +464,7 @@ _bfd_link_section_stabs (abfd, psinfo, stabsec, stabstrsec, psecinfo)
sinfo->stabstr->_cooked_size = _bfd_stringtab_size (sinfo->strings);
/* Calculate the `cumulative_skips' array now that stabs have been
- deleted for this section. */
+ deleted for this section. */
if (skip != 0)
{
diff --git a/contrib/binutils/bfd/syms.c b/contrib/binutils/bfd/syms.c
index 6546f585..8f4c92f 100644
--- a/contrib/binutils/bfd/syms.c
+++ b/contrib/binutils/bfd/syms.c
@@ -1,5 +1,5 @@
/* Generic symbol-table support for the BFD library.
- Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
Written by Cygnus Support.
@@ -91,7 +91,6 @@ SUBSECTION
All storage for the symbols themselves is in an objalloc
connected to the BFD; it is freed when the BFD is closed.
-
INODE
Writing Symbols, Mini Symbols, Reading Symbols, Symbols
SUBSECTION
@@ -163,8 +162,6 @@ SUBSECTION
*/
-
-
/*
DOCDD
INODE
@@ -390,14 +387,12 @@ DESCRIPTION
Return the actual number of symbol pointers, not
including the NULL.
-
.#define bfd_canonicalize_symtab(abfd, location) \
. BFD_SEND (abfd, _bfd_canonicalize_symtab,\
. (abfd, location))
*/
-
/*
FUNCTION
bfd_set_symtab
@@ -474,7 +469,6 @@ bfd_print_symbol_vandf (arg, symbol)
: ((type & BSF_OBJECT) ? 'O' : ' '))));
}
-
/*
FUNCTION
bfd_make_empty_symbol
@@ -537,7 +531,7 @@ static CONST struct section_to_type stt[] =
};
/* Return the single-character symbol type corresponding to
- section S, or '?' for an unknown COFF section.
+ section S, or '?' for an unknown COFF section.
Check for any leading string which matches, so .text5 returns
't' as well as .text */
@@ -548,7 +542,7 @@ coff_section_type (s)
{
CONST struct section_to_type *t;
- for (t = &stt[0]; t->section; t++)
+ for (t = &stt[0]; t->section; t++)
if (!strncmp (s, t->section, strlen (t->section)))
return t->type;
@@ -631,7 +625,7 @@ bfd_decode_symclass (symbol)
/*
FUNCTION
- bfd_is_undefined_symclass
+ bfd_is_undefined_symclass
DESCRIPTION
Returns non-zero if the class symbol returned by
@@ -668,12 +662,12 @@ bfd_symbol_info (symbol, ret)
symbol_info *ret;
{
ret->type = bfd_decode_symclass (symbol);
-
+
if (bfd_is_undefined_symclass (ret->type))
ret->value = 0;
else
ret->value = symbol->value + symbol->section->vma;
-
+
ret->name = symbol->name;
}
@@ -788,8 +782,8 @@ struct indexentry
static int
cmpindexentry (a, b)
- const PTR *a;
- const PTR *b;
+ const PTR a;
+ const PTR b;
{
const struct indexentry *contestantA = (const struct indexentry *) a;
const struct indexentry *contestantB = (const struct indexentry *) b;
@@ -1005,7 +999,7 @@ _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset, pfound,
if (bfd_get_32 (abfd, stab + STRDXOFF) == 0)
continue;
- /* if we did not see a function def, leave space for one. */
+ /* if we did not see a function def, leave space for one. */
if (saw_fun == 0)
++info->indextablesize;
@@ -1027,7 +1021,7 @@ _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset, pfound,
if (saw_fun == 0)
++info->indextablesize;
-
+
if (info->indextablesize == 0)
return true;
++info->indextablesize;
@@ -1063,8 +1057,8 @@ _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset, pfound,
/* The following code creates a new indextable entry with
a NULL function name if there were no N_FUNs in a file.
Note that a N_SO without a file name is an EOF and
- there could be 2 N_SO following it with the new filename
- and directory. */
+ there could be 2 N_SO following it with the new filename
+ and directory. */
if (saw_fun == 0)
{
info->indextable[i].val = bfd_get_32 (abfd, last_stab + VALOFF);
@@ -1076,7 +1070,7 @@ _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset, pfound,
++i;
}
saw_fun = 0;
-
+
file_name = (char *) str + bfd_get_32 (abfd, stab + STRDXOFF);
if (*file_name == '\0')
{
@@ -1262,7 +1256,7 @@ _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset, pfound,
*pfound = true;
- if (file_name[0] == '/' || directory_name == NULL)
+ if (IS_ABSOLUTE_PATH(file_name) || directory_name == NULL)
*pfilename = file_name;
else
{
diff --git a/contrib/binutils/bfd/sysdep.h b/contrib/binutils/bfd/sysdep.h
index 77b5e50a..e344eaf 100644
--- a/contrib/binutils/bfd/sysdep.h
+++ b/contrib/binutils/bfd/sysdep.h
@@ -126,6 +126,18 @@ extern char *getenv ();
#ifdef ENABLE_NLS
#include <libintl.h>
+/* Note the use of dgetext() and PACKAGE here, rather than gettext().
+
+ This is because the code in this directory is used to build a library which
+ will be linked with code in other directories to form programs. We want to
+ maintain a seperate translation file for this directory however, rather
+ than being forced to merge it with that of any program linked to libbfd.
+ This is a library, so it cannot depend on the catalog currently loaded.
+
+ In order to do this, we have to make sure that when we extract messages we
+ use the OPCODES domain rather than the domain of the program that included
+ the bfd library, (eg OBJDUMP). Hence we use dgettext (PACKAGE, String)
+ and define PACKAGE to be 'bfd'. (See the code in configure). */
#define _(String) dgettext (PACKAGE, String)
#ifdef gettext_noop
#define N_(String) gettext_noop (String)
diff --git a/contrib/binutils/bfd/targets.c b/contrib/binutils/bfd/targets.c
index 1f2217b..8f831f0 100644
--- a/contrib/binutils/bfd/targets.c
+++ b/contrib/binutils/bfd/targets.c
@@ -1,5 +1,5 @@
/* Generic target-file-type support for the BFD library.
- Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+ Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001
Free Software Foundation, Inc.
Written by Cygnus Support.
@@ -25,7 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "fnmatch.h"
/*
-SECTION
+SECTION
Targets
DESCRIPTION
@@ -34,7 +34,7 @@ DESCRIPTION
part of BFD is a structure containing pointers to functions
which perform certain low level operations on files. BFD
translates the applications's requests through a pointer into
- calls to the back end routines.
+ calls to the back end routines.
When a file is opened with <<bfd_openr>>, its format and
target are unknown. BFD uses various mechanisms to determine
@@ -42,11 +42,11 @@ DESCRIPTION
o Create a BFD by calling the internal routine
<<_bfd_new_bfd>>, then call <<bfd_find_target>> with the
- target string supplied to <<bfd_openr>> and the new BFD pointer.
+ target string supplied to <<bfd_openr>> and the new BFD pointer.
o If a null target string was provided to <<bfd_find_target>>,
look up the environment variable <<GNUTARGET>> and use
- that as the target string.
+ that as the target string.
o If the target string is still <<NULL>>, or the target string is
<<default>>, then use the first item in the target vector
@@ -56,7 +56,7 @@ DESCRIPTION
o Otherwise, inspect the elements in the target vector
one by one, until a match on target name is found. When found,
- use it.
+ use it.
o Otherwise return the error <<bfd_error_invalid_target>> to
<<bfd_openr>>.
@@ -66,7 +66,7 @@ DESCRIPTION
Once the BFD has been opened and the target selected, the file
format may be determined. This is done by calling
- <<bfd_check_format>> on the BFD with a suggested format.
+ <<bfd_check_format>> on the BFD with a suggested format.
If <<target_defaulted>> has been set, each possible target
type is tried to see if it recognizes the specified format.
<<bfd_check_format>> returns <<true>> when the caller guesses right.
@@ -75,7 +75,6 @@ DESCRIPTION
@end menu
*/
-
/*
INODE
@@ -87,17 +86,17 @@ SUBSECTION
DESCRIPTION
This structure contains everything that BFD knows about a
target. It includes things like its byte order, name, and which
- routines to call to do various operations.
+ routines to call to do various operations.
Every BFD points to a target structure with its <<xvec>>
- member.
+ member.
The macros below are used to dispatch to functions through the
<<bfd_target>> vector. They are used in a number of macros further
down in @file{bfd.h}, and are also used when calling various
routines by hand inside the BFD implementation. The @var{arglist}
argument must be parenthesized; it contains all the arguments
- to the called function.
+ to the called function.
They make the documentation (more) unpleasant to read, so if
someone wants to fix this and not break the above, please do.
@@ -116,13 +115,13 @@ DESCRIPTION
For operations which index on the BFD format:
.#define BFD_SEND_FMT(bfd, message, arglist) \
-. (((bfd)->xvec->message[(int)((bfd)->format)]) arglist)
+. (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
.
.#ifdef DEBUG_BFD_SEND
.#undef BFD_SEND_FMT
.#define BFD_SEND_FMT(bfd, message, arglist) \
. (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
-. (((bfd)->xvec->message[(int)((bfd)->format)]) arglist) : \
+. (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
. (bfd_assert (__FILE__,__LINE__), NULL))
.#endif
@@ -131,16 +130,16 @@ DESCRIPTION
module that implements access to a different target under BFD,
defines one of these.
-
FIXME, these names should be rationalised with the names of
the entry points which call them. Too bad we can't have one
- macro to define them both!
+ macro to define them both!
.enum bfd_flavour {
. bfd_target_unknown_flavour,
. bfd_target_aout_flavour,
. bfd_target_coff_flavour,
. bfd_target_ecoff_flavour,
+. bfd_target_xcoff_flavour,
. bfd_target_elf_flavour,
. bfd_target_ieee_flavour,
. bfd_target_nlm_flavour,
@@ -184,21 +183,21 @@ The order of bytes within the header parts of a file.
A mask of all the flags which an executable may have set -
from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>.
-. flagword object_flags;
+. flagword object_flags;
A mask of all the flags which a section may have set - from
the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>.
. flagword section_flags;
-The character normally found at the front of a symbol
+The character normally found at the front of a symbol
(if any), perhaps `_'.
. char symbol_leading_char;
The pad character for file names within an archive header.
-. char ar_pad_char;
+. char ar_pad_char;
The maximum number of characters in an archive header.
@@ -233,15 +232,15 @@ Byte swapping for the headers
Format dependent routines: these are vectors of entry points
within the target vector structure, one for each format to check.
-Check the format of a file being read. Return a <<bfd_target *>> or zero.
+Check the format of a file being read. Return a <<bfd_target *>> or zero.
. const struct bfd_target *(*_bfd_check_format[bfd_type_end]) PARAMS ((bfd *));
-Set the format of a file being written.
+Set the format of a file being written.
. boolean (*_bfd_set_format[bfd_type_end]) PARAMS ((bfd *));
-Write cached information into a file being written, at <<bfd_close>>.
+Write cached information into a file being written, at <<bfd_close>>.
. boolean (*_bfd_write_contents[bfd_type_end]) PARAMS ((bfd *));
@@ -264,7 +263,7 @@ BFD_JUMP_TABLE macros.
. {* Called when a new section is created. *}
. boolean (*_new_section_hook) PARAMS ((bfd *, sec_ptr));
. {* Read the contents of a section. *}
-. boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
+. boolean (*_bfd_get_section_contents) PARAMS ((bfd *, sec_ptr, PTR,
. file_ptr, bfd_size_type));
. boolean (*_bfd_get_section_contents_in_window)
. PARAMS ((bfd *, sec_ptr, bfd_window *,
@@ -288,7 +287,7 @@ BFD_JUMP_TABLE macros.
. to another. *}
. boolean (*_bfd_copy_private_section_data) PARAMS ((bfd *, sec_ptr,
. bfd *, sec_ptr));
-. {* Called to copy BFD private symbol data from one symbol
+. {* Called to copy BFD private symbol data from one symbol
. to another. *}
. boolean (*_bfd_copy_private_symbol_data) PARAMS ((bfd *, asymbol *,
. bfd *, asymbol *));
@@ -324,10 +323,10 @@ BFD_JUMP_TABLE macros.
. boolean (*_bfd_construct_extended_name_table)
. PARAMS ((bfd *, char **, bfd_size_type *, const char **));
. void (*_bfd_truncate_arname) PARAMS ((bfd *, CONST char *, char *));
-. boolean (*write_armap) PARAMS ((bfd *arch,
+. boolean (*write_armap) PARAMS ((bfd *arch,
. unsigned int elength,
. struct orl *map,
-. unsigned int orl_count,
+. unsigned int orl_count,
. int stridx));
. PTR (*_bfd_read_ar_hdr_fn) PARAMS ((bfd *));
. bfd * (*openr_next_archived_file) PARAMS ((bfd *arch, bfd *prev));
@@ -467,15 +466,15 @@ and little endian code, and target chosen by the linker has the wrong
endianness. The function open_output() in ld/ldlang.c uses this field
to find an alternative output format that is suitable.
-. {* Opposite endian version of this target. *}
+. {* Opposite endian version of this target. *}
. const struct bfd_target * alternative_target;
-.
+.
Data for use by back-end routines, which isn't generic enough to belong
in this structure.
. PTR backend_data;
-.
+.
.} bfd_target;
*/
@@ -486,49 +485,57 @@ in this structure.
we can't intermix extern's and initializers. */
extern const bfd_target a29kcoff_big_vec;
extern const bfd_target a_out_adobe_vec;
+extern const bfd_target aout0_big_vec;
extern const bfd_target aout_arm_big_vec;
extern const bfd_target aout_arm_little_vec;
extern const bfd_target aout_mips_big_vec;
extern const bfd_target aout_mips_little_vec;
-extern const bfd_target aout0_big_vec;
extern const bfd_target apollocoff_vec;
-extern const bfd_target armcoff_little_vec;
+extern const bfd_target arm_epoc_pe_big_vec;
+extern const bfd_target arm_epoc_pe_little_vec;
+extern const bfd_target arm_epoc_pei_big_vec;
+extern const bfd_target arm_epoc_pei_little_vec;
extern const bfd_target armcoff_big_vec;
+extern const bfd_target armcoff_little_vec;
extern const bfd_target armnetbsd_vec;
-extern const bfd_target armpe_little_vec;
extern const bfd_target armpe_big_vec;
-extern const bfd_target armpei_little_vec;
+extern const bfd_target armpe_little_vec;
extern const bfd_target armpei_big_vec;
-extern const bfd_target arm_epoc_pe_little_vec;
-extern const bfd_target arm_epoc_pe_big_vec;
-extern const bfd_target arm_epoc_pei_little_vec;
-extern const bfd_target arm_epoc_pei_big_vec;
+extern const bfd_target armpei_little_vec;
extern const bfd_target b_out_vec_big_host;
extern const bfd_target b_out_vec_little_host;
-extern const bfd_target bfd_elf64_alpha_vec;
+extern const bfd_target bfd_efi_app_ia32_vec;
+extern const bfd_target bfd_efi_app_ia64_vec;
extern const bfd_target bfd_elf32_avr_vec;
+extern const bfd_target bfd_elf32_big_generic_vec;
extern const bfd_target bfd_elf32_bigarc_vec;
-extern const bfd_target bfd_elf32_bigarm_vec;
extern const bfd_target bfd_elf32_bigarm_oabi_vec;
-extern const bfd_target bfd_elf32_littlearc_vec;
-extern const bfd_target bfd_elf32_littlearm_vec;
-extern const bfd_target bfd_elf32_littlearm_oabi_vec;
-extern const bfd_target bfd_elf32_big_generic_vec;
+extern const bfd_target bfd_elf32_bigarm_vec;
extern const bfd_target bfd_elf32_bigmips_vec;
-extern const bfd_target bfd_elf64_bigmips_vec;
+extern const bfd_target bfd_elf32_cris_vec;
extern const bfd_target bfd_elf32_d10v_vec;
extern const bfd_target bfd_elf32_d30v_vec;
+extern const bfd_target bfd_elf32_fr30_vec;
+extern const bfd_target bfd_elf32_hppa_linux_vec;
extern const bfd_target bfd_elf32_hppa_vec;
extern const bfd_target bfd_elf32_i370_vec;
extern const bfd_target bfd_elf32_i386_vec;
+extern const bfd_target bfd_elf32_i860_little_vec;
extern const bfd_target bfd_elf32_i860_vec;
extern const bfd_target bfd_elf32_i960_vec;
+extern const bfd_target bfd_elf32_ia64_big_vec;
extern const bfd_target bfd_elf32_little_generic_vec;
+extern const bfd_target bfd_elf32_littlearc_vec;
+extern const bfd_target bfd_elf32_littlearm_oabi_vec;
+extern const bfd_target bfd_elf32_littlearm_vec;
extern const bfd_target bfd_elf32_littlemips_vec;
-extern const bfd_target bfd_elf64_littlemips_vec;
extern const bfd_target bfd_elf32_m32r_vec;
+extern const bfd_target bfd_elf32_m68hc11_vec;
+extern const bfd_target bfd_elf32_m68hc12_vec;
extern const bfd_target bfd_elf32_m68k_vec;
extern const bfd_target bfd_elf32_m88k_vec;
+extern const bfd_target bfd_elf32_mcore_big_vec;
+extern const bfd_target bfd_elf32_mcore_little_vec;
extern const bfd_target bfd_elf32_mn10200_vec;
extern const bfd_target bfd_elf32_mn10300_vec;
extern const bfd_target bfd_elf32_pj_vec;
@@ -536,50 +543,61 @@ extern const bfd_target bfd_elf32_pjl_vec;
extern const bfd_target bfd_elf32_powerpc_vec;
extern const bfd_target bfd_elf32_powerpcle_vec;
extern const bfd_target bfd_elf32_sh_vec;
+extern const bfd_target bfd_elf32_shblin_vec;
extern const bfd_target bfd_elf32_shl_vec;
+extern const bfd_target bfd_elf32_shlin_vec;
extern const bfd_target bfd_elf32_sparc_vec;
+extern const bfd_target bfd_elf32_tradbigmips_vec;
+extern const bfd_target bfd_elf32_tradlittlemips_vec;
+extern const bfd_target bfd_elf32_us_cris_vec;
extern const bfd_target bfd_elf32_v850_vec;
-extern const bfd_target bfd_elf32_fr30_vec;
-extern const bfd_target bfd_elf32_mcore_big_vec;
-extern const bfd_target bfd_elf32_mcore_little_vec;
+extern const bfd_target bfd_elf64_alpha_vec;
extern const bfd_target bfd_elf64_big_generic_vec;
+extern const bfd_target bfd_elf64_bigmips_vec;
+extern const bfd_target bfd_elf64_hppa_linux_vec;
+extern const bfd_target bfd_elf64_hppa_vec;
+extern const bfd_target bfd_elf64_ia64_big_vec;
+extern const bfd_target bfd_elf64_ia64_little_vec;
extern const bfd_target bfd_elf64_little_generic_vec;
+extern const bfd_target bfd_elf64_littlemips_vec;
extern const bfd_target bfd_elf64_sparc_vec;
+extern const bfd_target bfd_elf64_x86_64_vec;
+extern const bfd_target bfd_powerpc_pe_vec;
+extern const bfd_target bfd_powerpc_pei_vec;
+extern const bfd_target bfd_powerpcle_pe_vec;
+extern const bfd_target bfd_powerpcle_pei_vec;
+extern const bfd_target cris_aout_vec;
extern const bfd_target demo_64_vec;
extern const bfd_target ecoff_big_vec;
-extern const bfd_target ecoff_little_vec;
extern const bfd_target ecoff_biglittle_vec;
+extern const bfd_target ecoff_little_vec;
extern const bfd_target ecoffalpha_little_vec;
+extern const bfd_target go32coff_vec;
+extern const bfd_target go32stubbedcoff_vec;
extern const bfd_target h8300coff_vec;
extern const bfd_target h8500coff_vec;
extern const bfd_target host_aout_vec;
extern const bfd_target hp300bsd_vec;
extern const bfd_target hp300hpux_vec;
-extern const bfd_target som_vec;
extern const bfd_target i386aout_vec;
extern const bfd_target i386bsd_vec;
+extern const bfd_target i386coff_vec;
extern const bfd_target i386dynix_vec;
extern const bfd_target i386freebsd_vec;
-extern const bfd_target i386os9k_vec;
-extern const bfd_target i386coff_vec;
-extern const bfd_target bfd_powerpc_pe_vec;
-extern const bfd_target bfd_powerpcle_pe_vec;
-extern const bfd_target bfd_powerpc_pei_vec;
-extern const bfd_target bfd_powerpcle_pei_vec;
-extern const bfd_target i386pe_vec;
-extern const bfd_target i386pei_vec;
-extern const bfd_target go32coff_vec;
-extern const bfd_target go32stubbedcoff_vec;
extern const bfd_target i386linux_vec;
extern const bfd_target i386lynx_aout_vec;
extern const bfd_target i386lynx_coff_vec;
extern const bfd_target i386mach3_vec;
extern const bfd_target i386msdos_vec;
extern const bfd_target i386netbsd_vec;
+extern const bfd_target i386os9k_vec;
+extern const bfd_target i386pe_vec;
+extern const bfd_target i386pei_vec;
extern const bfd_target i860coff_vec;
extern const bfd_target icoff_big_vec;
extern const bfd_target icoff_little_vec;
extern const bfd_target ieee_vec;
+extern const bfd_target m68k4knetbsd_vec;
extern const bfd_target m68kaux_coff_vec;
extern const bfd_target m68kcoff_vec;
extern const bfd_target m68kcoffun_vec;
@@ -588,50 +606,57 @@ extern const bfd_target m68klynx_aout_vec;
extern const bfd_target m68klynx_coff_vec;
extern const bfd_target m68knetbsd_vec;
extern const bfd_target m68ksysvcoff_vec;
-extern const bfd_target m68k4knetbsd_vec;
extern const bfd_target m88kbcs_vec;
extern const bfd_target m88kmach3_vec;
-extern const bfd_target mipslpe_vec;
-extern const bfd_target mipslpei_vec;
extern const bfd_target mcore_pe_big_vec;
extern const bfd_target mcore_pe_little_vec;
extern const bfd_target mcore_pei_big_vec;
extern const bfd_target mcore_pei_little_vec;
+extern const bfd_target mipslpe_vec;
+extern const bfd_target mipslpei_vec;
extern const bfd_target newsos3_vec;
-extern const bfd_target nlm32_i386_vec;
-extern const bfd_target nlm32_sparc_vec;
extern const bfd_target nlm32_alpha_vec;
+extern const bfd_target nlm32_i386_vec;
extern const bfd_target nlm32_powerpc_vec;
-extern const bfd_target pc532netbsd_vec;
+extern const bfd_target nlm32_sparc_vec;
extern const bfd_target oasys_vec;
extern const bfd_target pc532machaout_vec;
+extern const bfd_target pc532netbsd_vec;
+extern const bfd_target pmac_xcoff_vec;
extern const bfd_target ppcboot_vec;
extern const bfd_target riscix_vec;
-extern const bfd_target pmac_xcoff_vec;
+extern const bfd_target rs6000coff64_vec;
extern const bfd_target rs6000coff_vec;
-extern const bfd_target shcoff_vec;
-extern const bfd_target shlcoff_vec;
extern const bfd_target shcoff_small_vec;
+extern const bfd_target shcoff_vec;
extern const bfd_target shlcoff_small_vec;
+extern const bfd_target shlcoff_vec;
extern const bfd_target shlpe_vec;
extern const bfd_target shlpei_vec;
+extern const bfd_target som_vec;
+extern const bfd_target sparccoff_vec;
extern const bfd_target sparcle_aout_vec;
extern const bfd_target sparclinux_vec;
extern const bfd_target sparclynx_aout_vec;
extern const bfd_target sparclynx_coff_vec;
extern const bfd_target sparcnetbsd_vec;
-extern const bfd_target sparccoff_vec;
extern const bfd_target sunos_big_vec;
extern const bfd_target tekhex_vec;
extern const bfd_target tic30_aout_vec;
extern const bfd_target tic30_coff_vec;
+extern const bfd_target tic54x_coff0_beh_vec;
+extern const bfd_target tic54x_coff0_vec;
+extern const bfd_target tic54x_coff1_beh_vec;
+extern const bfd_target tic54x_coff1_vec;
+extern const bfd_target tic54x_coff2_beh_vec;
+extern const bfd_target tic54x_coff2_vec;
extern const bfd_target tic80coff_vec;
extern const bfd_target vaxnetbsd_vec;
extern const bfd_target versados_vec;
extern const bfd_target vms_alpha_vec;
extern const bfd_target vms_vax_vec;
-extern const bfd_target we32kcoff_vec;
extern const bfd_target w65_vec;
+extern const bfd_target we32kcoff_vec;
extern const bfd_target z8kcoff_vec;
/* srec is always included. */
@@ -683,6 +708,11 @@ const bfd_target * const bfd_target_vector[] = {
&b_out_vec_big_host,
&b_out_vec_little_host,
+ &bfd_efi_app_ia32_vec,
+#ifdef BFD64
+ &bfd_efi_app_ia64_vec,
+#endif
+
/* This, and other vectors, may not be used in any *.mt configuration.
But that does not mean they are unnecessary. If configured with
--enable-targets=all, objdump or gdb should be able to examine
@@ -690,6 +720,10 @@ const bfd_target * const bfd_target_vector[] = {
&bfd_elf32_big_generic_vec,
#ifdef BFD64
&bfd_elf64_alpha_vec,
+ &bfd_elf64_hppa_vec,
+ &bfd_elf64_hppa_linux_vec,
+ &bfd_elf64_ia64_little_vec,
+ &bfd_elf64_ia64_big_vec,
#endif
&bfd_elf32_avr_vec,
&bfd_elf32_bigarc_vec,
@@ -699,14 +733,19 @@ const bfd_target * const bfd_target_vector[] = {
#ifdef BFD64
&bfd_elf64_bigmips_vec,
#endif
+ &bfd_elf32_cris_vec,
+ &bfd_elf32_us_cris_vec,
&bfd_elf32_d10v_vec,
&bfd_elf32_d30v_vec,
-#if 0
&bfd_elf32_hppa_vec,
-#endif
+ &bfd_elf32_hppa_linux_vec,
&bfd_elf32_i370_vec,
&bfd_elf32_i386_vec,
+#ifdef BFD64
+ &bfd_elf64_x86_64_vec,
+#endif
&bfd_elf32_i860_vec,
+ &bfd_elf32_i860_little_vec,
&bfd_elf32_i960_vec,
&bfd_elf32_little_generic_vec,
&bfd_elf32_littlearc_vec,
@@ -719,6 +758,8 @@ const bfd_target * const bfd_target_vector[] = {
&bfd_elf32_m32r_vec,
&bfd_elf32_mn10200_vec,
&bfd_elf32_mn10300_vec,
+ &bfd_elf32_m68hc11_vec,
+ &bfd_elf32_m68hc12_vec,
&bfd_elf32_m68k_vec,
&bfd_elf32_m88k_vec,
&bfd_elf32_sparc_vec,
@@ -730,6 +771,8 @@ const bfd_target * const bfd_target_vector[] = {
&bfd_elf32_fr30_vec,
&bfd_elf32_mcore_big_vec,
&bfd_elf32_mcore_little_vec,
+ &bfd_elf32_tradbigmips_vec,
+ &bfd_elf32_tradlittlemips_vec,
#ifdef BFD64 /* No one seems to use this. */
&bfd_elf64_big_generic_vec,
&bfd_elf64_little_generic_vec,
@@ -740,6 +783,8 @@ const bfd_target * const bfd_target_vector[] = {
/* We don't include cisco_core_*_vec. Although it has a magic number,
the magic number isn't at the beginning of the file, and thus
might spuriously match other kinds of files. */
+
+ &cris_aout_vec,
#ifdef BFD64
&demo_64_vec, /* Only compiled if host has long-long support */
#endif
@@ -844,10 +889,13 @@ const bfd_target * const bfd_target_vector[] = {
&riscix_vec,
#endif
#if 0
- /* This has the same magic number as RS/6000. */
+ /* This has the same magic number as RS/6000. */
&pmac_xcoff_vec,
#endif
&rs6000coff_vec,
+#ifdef BFD64
+ &rs6000coff64_vec,
+#endif
&ppcboot_vec,
&shcoff_vec,
&shlcoff_vec,
@@ -862,6 +910,12 @@ const bfd_target * const bfd_target_vector[] = {
&aout0_big_vec,
&tic30_aout_vec,
&tic30_coff_vec,
+ &tic54x_coff0_vec,
+ &tic54x_coff0_beh_vec,
+ &tic54x_coff1_vec,
+ &tic54x_coff1_beh_vec,
+ &tic54x_coff2_vec,
+ &tic54x_coff2_beh_vec,
&tic80coff_vec,
&vaxnetbsd_vec,
&versados_vec,
@@ -931,7 +985,7 @@ const bfd_target *bfd_default_vector[] = {
/* When there is an ambiguous match, bfd_check_format_matches puts the
names of the matching targets in an array. This variable is the maximum
number of entries that the array could possibly need. */
-const size_t _bfd_target_vector_entries = sizeof(bfd_target_vector)/sizeof(*bfd_target_vector);
+const size_t _bfd_target_vector_entries = sizeof (bfd_target_vector)/sizeof (*bfd_target_vector);
/* This array maps configuration triplets onto BFD vectors. */
@@ -1031,7 +1085,7 @@ DESCRIPTION
variable to "default" will cause the first entry in the target
list to be returned, and "target_defaulted" will be set in the
BFD. This causes <<bfd_check_format>> to loop over all the
- targets to find the one that matches the file being read.
+ targets to find the one that matches the file being read.
*/
const bfd_target *
@@ -1114,7 +1168,7 @@ FUNCTION
bfd_seach_for_target
SYNOPSIS
- const bfd_target * bfd_search_for_target (int (* search_func)(const bfd_target *, void *), void *);
+ const bfd_target * bfd_search_for_target (int (* search_func) (const bfd_target *, void *), void *);
DESCRIPTION
Return a pointer to the first transfer vector in the list of
diff --git a/contrib/binutils/bfd/tekhex.c b/contrib/binutils/bfd/tekhex.c
index b1ffe75..e5fa95a 100644
--- a/contrib/binutils/bfd/tekhex.c
+++ b/contrib/binutils/bfd/tekhex.c
@@ -24,11 +24,11 @@ SUBSECTION
Tektronix Hex Format handling
DESCRIPTION
-
+
Tek Hex records can hold symbols and data, but not
relocations. Their main application is communication with
devices like PROM programmers and ICE equipment.
-
+
It seems that the sections are descibed as being really big,
the example I have says that the text section is 0..ffffffff.
BFD would barf with this, many apps would try to alloc 4GB to
@@ -49,11 +49,10 @@ DESCRIPTION
Any number of sections may be created for output, we save them
up and output them when it's time to close the bfd.
-
A TekHex record looks like:
EXAMPLE
%<block length><type><checksum><stuff><cr>
-
+
DESCRIPTION
Where
o length
@@ -63,7 +62,6 @@ DESCRIPTION
3) symbol record
6) data record
8) termination record
-
The data can come out of order, and may be discontigous. This is a
serial protocol, so big files are unlikely, so we keep a list of 8k chunks
@@ -123,7 +121,7 @@ static const bfd_target *tekhex_object_p PARAMS ((bfd *));
static boolean tekhex_mkobject PARAMS ((bfd *));
static long tekhex_get_symtab_upper_bound PARAMS ((bfd *));
static long tekhex_get_symtab PARAMS ((bfd *, asymbol **));
-static void pass_over PARAMS ((bfd *, void (*)(bfd*, int, char *)));
+static void pass_over PARAMS ((bfd *, void (*) (bfd*, int, char *)));
static void first_phase PARAMS ((bfd *, int, char *));
static void insert_byte PARAMS ((bfd *, int, bfd_vma));
static struct data_struct *find_chunk PARAMS ((bfd *, bfd_vma));
@@ -216,7 +214,6 @@ fcffffff g T_SEGMENT i$1
00000000 g T_SEGMENT $
00000010 g T_SEGMENT $
-
RELOCATION RECORDS FOR [D00000000]: (none)
RELOCATION RECORDS FOR [D00008000]: (none)
@@ -425,7 +422,7 @@ first_phase (abfd, type, src)
char *n = bfd_alloc (abfd, len + 1);
if (!n)
- abort(); /* FIXME */
+ abort (); /* FIXME */
memcpy (n, sym, len + 1);
section = bfd_make_section (abfd, n);
}
@@ -454,7 +451,7 @@ first_phase (abfd, type, src)
char type = (*src);
if (!new)
- abort(); /* FIXME */
+ abort (); /* FIXME */
new->symbol.the_bfd = abfd;
src++;
abfd->symcount++;
@@ -464,7 +461,7 @@ first_phase (abfd, type, src)
len = getsym (sym, &src);
new->symbol.name = bfd_alloc (abfd, len + 1);
if (!new->symbol.name)
- abort(); /* FIXME */
+ abort (); /* FIXME */
memcpy ((char *) (new->symbol.name), sym, len + 1);
new->symbol.section = section;
if (type <= '4')
@@ -1063,6 +1060,6 @@ const bfd_target tekhex_vec =
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
(PTR) 0
};
diff --git a/contrib/binutils/bfd/trad-core.c b/contrib/binutils/bfd/trad-core.c
index aea6366..194da15 100644
--- a/contrib/binutils/bfd/trad-core.c
+++ b/contrib/binutils/bfd/trad-core.c
@@ -25,7 +25,19 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "libaout.h" /* BFD a.out internal data structures */
#include <sys/param.h>
-#include <sys/dir.h>
+#ifdef HAVE_DIRENT_H
+# include <dirent.h>
+#else
+# ifdef HAVE_SYS_NDIR_H
+# include <sys/ndir.h>
+# endif
+# ifdef HAVE_SYS_DIR_H
+# include <sys/dir.h>
+# endif
+# ifdef HAVE_NDIR_H
+# include <ndir.h>
+# endif
+#endif
#include <signal.h>
#include <sys/user.h> /* After a.out.h */
@@ -34,7 +46,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include TRAD_HEADER
#endif
- struct trad_core_struct
+ struct trad_core_struct
{
asection *data_section;
asection *stack_section;
@@ -73,7 +85,7 @@ trad_unix_core_file_p (abfd)
if (bfd_seek (abfd, TRAD_CORE_USER_OFFSET, SEEK_SET) != 0)
return 0;
#endif
-
+
val = bfd_read ((void *)&u, 1, sizeof u, abfd);
if (val != sizeof u)
{
@@ -83,7 +95,7 @@ trad_unix_core_file_p (abfd)
}
/* Sanity check perhaps??? */
- if (u.u_dsize > 0x1000000) /* Remember, it's in pages... */
+ if (u.u_dsize > 0x1000000) /* Remember, it's in pages... */
{
bfd_set_error (bfd_error_wrong_format);
return 0;
@@ -140,7 +152,7 @@ trad_unix_core_file_p (abfd)
bfd_zmalloc (sizeof (struct trad_core_struct));
if (rawptr == NULL)
return 0;
-
+
abfd->tdata.trad_core_data = rawptr;
rawptr->u = u; /*Copy the uarea into the tdata part of the bfd */
@@ -195,13 +207,13 @@ trad_unix_core_file_p (abfd)
from *u_ar0. The other is that u_ar0 is sometimes an absolute address
in kernel memory, and on other systems it is an offset from the beginning
of the `struct user'.
-
+
As a practical matter, we don't know where the registers actually are,
so we have to pass the whole area to GDB. We encode the value of u_ar0
by setting the .regs section up so that its virtual memory address
0 is at the place pointed to by u_ar0 (by setting the vma of the start
of the section to -u_ar0). GDB uses this info to locate the regs,
- using minor trickery to get around the offset-or-absolute-addr problem. */
+ using minor trickery to get around the offset-or-absolute-addr problem. */
core_regsec (abfd)->vma = - (bfd_vma) u.u_ar0;
core_datasec (abfd)->filepos = NBPG * UPAGES;
@@ -261,9 +273,9 @@ trad_unix_core_file_matches_executable_p (core_bfd, exec_bfd)
/* If somebody calls any byte-swapping routines, shoot them. */
static void
-swap_abort()
+swap_abort ()
{
- abort(); /* This way doesn't require any declaration for ANSI to fuck up */
+ abort (); /* This way doesn't require any declaration for ANSI to fuck up */
}
#define NO_GET ((bfd_vma (*) PARAMS (( const bfd_byte *))) swap_abort )
#define NO_PUT ((void (*) PARAMS ((bfd_vma, bfd_byte *))) swap_abort )
@@ -304,7 +316,7 @@ const bfd_target trad_core_vec =
bfd_false, bfd_false,
bfd_false, bfd_false
},
-
+
BFD_JUMP_TABLE_GENERIC (_bfd_generic),
BFD_JUMP_TABLE_COPY (_bfd_generic),
BFD_JUMP_TABLE_CORE (trad_unix),
@@ -316,6 +328,6 @@ const bfd_target trad_core_vec =
BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
NULL,
-
+
(PTR) 0 /* backend_data */
};
diff --git a/contrib/binutils/binutils/ChangeLog b/contrib/binutils/binutils/ChangeLog
index 77775a8..37b784a 100644
--- a/contrib/binutils/binutils/ChangeLog
+++ b/contrib/binutils/binutils/ChangeLog
@@ -1,50 +1,402 @@
-2000-11-01 Philip Blundell <philb@gnu.org>
+2001-03-16 Philip Blundell <philb@gnu.org>
- From 2000-06-15 H.J. Lu <hjl@gnu.org>
- * dyn-string.c: Removed. Not needed with dyn-string.c in
- libiberty.
- * dyn-string.h: Likewise.
- * Makefile.am: Remove references to dyn-string.c and
- dyn-string.h. Rebuild dependency.
- * Makefile.in: Rebuild.
+ * configure: Regenerate.
+
+2001-03-11 Philip Blundell <philb@gnu.org>
+
+ * configure.in: Set version to 2.11.
-2000-10-16 Philip Blundell <pb@futuretv.com>
+2001-02-13 Hans-Peter Nilsson <hp@bitrange.com>
- * configure.in: Set version number to 2.10.1.
+ * acinclude.m4 (AM_PROG_LEX): Override installed definition.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2001-02-10 Alan Modra <alan@linuxcare.com.au>
+
+ * nm.c (print_symbol_info_bsd): Don't #ifdef inside printf in case
+ printf is a macro.
+
+2001-02-04 Philip Blundell <philb@gnu.org>
+
+ * configure.in (OBJDUMP_DEFS): Match `arm*-*', not just `arm-*'.
* configure: Regenerate.
-2000-10-14 Philip Blundell <philb@gnu.org>
+2001-01-31 Steve deRosier <sderosier@vari-lite.com>
+
+ * ieee.c (ieee_add_bb11): Don't check for backslashes
+ unless HAVE_DOS_BASED_FILE_SYSTEM is defined.
+
+2001-01-24 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * ieee.c: Update copyright.
+ (ieee_start_compilation_unit): Don't check for backslashes
+ unless HAVE_DOS_BASED_FILE_SYSTEM is defined.
+
+ * stabs.c: Update copyright. Include "filenames.h".
+ (parse_stab): Use IS_ABSOLUTE_PATH. Ignore N_WARNING stabs.
+
+2001-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ * readelf.c (process_version_sections): Check if VERDEF or VERNEED
+ sections are present before using them. Remove code duplication.
+ (process_symbol_table): Check if VERDEF or VERNEED sections are
+ present before using them.
+
+2001-01-17 Nick Clifton <nickc@redhat.com>
+
+ * objcopy.c (copy_object): Fail if attempting to convert the
+ endianness of the input object file.
+
+ * binutils.texi: Explain that objcopy cannot convert endianness.
+
+2001-01-16 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (string_table_length): New variable.
+ (SECTION_NAME): Catch out of range indices and missing section
+ pointers.
+ (process_section_headers): Delete useless local variable
+ string_table_offset. Set the value of string_table_length
+ after loading the string table.
+ (process_mips_specific): Use SECTION_NAME macro.
+ (process_file): Set string_table_length to 0 when it is freed.
+
+2001-01-12 Nick Clifton <nickc@redhat.com>
+
+ * version.c (print_version): Update copyright date.
+
+2001-01-11 Peter Targett <peter.targett@arccores.com>
+
+ * readelf.c (dump_relocations): Include selection with EM_ARC.
+ (get_machine_name) Update name to "ARC".
+
+2001-01-09 Nick Clifton <nickc@redhat.com>
+
+ * Makefile.am: Add rule to build objdump.o from objdump.c and
+ using OBJDUMP_DEFS.
+ * Makefile.in: Regenerate.
+
+ * configure.in: Define OBJDUMP_DEFS. Default to empty.
+ (arm, xscale, d10v): For these targets define OBJDUMP_DEFS to
+ -DDISASSEMBLER_NEEDS_RELOCS.
+ * configure: Regenerate.
+
+ * objdump.c (disassemble_bytes): If DISASSEMBLER_NEEDS_RELOCS
+ is defined read in the relocs even if dump_reloc_info is
+ false.
+
+2001-01-07 Philip Blundell <philb@gnu.org>
+
+ * binutils.texi (Bug Reporting): Replace `bug-gnu-utils' with
+ `bug-binutils'.
+ * README: Likewise.
+
+2000-12-19 Nick Clifton <nickc@redhat.com>
+
+ * dlltool.c: Add missing support for arm-epoc-pe.
+ * configure.in: Add missing support for arm-epoc-pe.
+ * configure: Regenerate.
+
+2000-12-15 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Add Diego Novillo as a maintainer for the Intel
+ Mode parts of the x86 port.
+
+2000-12-04 Andreas Jaeger <aj@suse.de>
+
+ * readelf.c (guess_is_rela): Add EM_X86_64.
+ (dump_relocations): Add EM_X86_64.
+ (get_machine_name): Add EM_X86_64.
+ Include "elf/x86-64.h".
+
+2000-12-12 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c: Fix formatting.
+
+Mon Dec 11 14:30:21 MET 2000 Jan Hubicka <jh@suse.cz>
+
+ * MAINTAINERS: Add myself and Andreas Jaeger as x86_64 maintainer.
+
+2000-12-07 Andrew Haley <aph@redhat.com>
+
+ * readelf.c (display_debug_frames): Only display columns that are
+ referenced by the frame debug info.
+
+2000-12-05 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Add Jason Merrill as DWARF2 maintainer.
+
+2000-12-04 Jason Merrill <jason@redhat.com>
+
+ * readelf.c (process_section_headers): Handle linkonce.wi sections.
+ (display_debug_section): Likewise.
+ (display_debug_info): Display CU header before bailing.
+
+2000-12-01 Chris Demetriou <cgd@sibyte.com>
+
+ * readelf.c (get_machine_flags): Recognize MIPS32 ISA in
+ EF_MIPS_ARCH. Replace use of E_MIPS_MACH_MIPS32 with
+ E_MIPS_MACH_MIPS32_4K and adjust printed CPU name similarly.
+
+ * readelf.c (get_machine_flags): Add cases for E_MIPS_ARCH_5,
+ and E_MIPS_ARCH_64.
+
+ * readelf.c (get_machine_flags): Add case for
+ E_MIPS_MACH_SB1.
+
+2000-11-30 Richard Earnshaw <rearnsha@arm.com>
+
+ * readelf.c (frame_display_row): Output 's' for DW_CFA_same_value.
+
+2000-11-28 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * MAINTAINERS: Add Jörn Rennecke and self as SH maintainers.
+ Change sourceware.cygnus.com to sources.redhat.com.
+ Fix typo for "amongst".
- * config.sub, config.guess: Update from mainline sources.
+2000-11-28 Nick Clifton <nickc@redhat.com>
- From 2000-09-07 H.J. Lu <hjl@gnu.org>
+ * strip.1 (COPYING): Mention that the GNU Free Documentation
+ License is present in the sources, but not the output, and
+ also available from the GNU website.
+ (GNU Free Documentation License): Comment out this section.
+ * strings.1: Ditto.
+ * size.1: Ditto.
+ * ranlib.1: Ditto.
+ * objdump.1: Ditto.
+ * objcopy.1: Ditto.
+ * nm.1: Ditto.
+ * nlmconv.1: Ditto.
+ * ar.1: Ditto.
+ * addr2line.1: Ditto.
+
+2000-11-27 DJ Delorie <dj@redhat.com>
+
+ * readelf.c (usage): Add -wf (--debug-dump=frames) option.
+ (parse_args): Support -wf option.
+ (process_section_headers): Ditto.
+ (debug_displays): Ditto.
+ (display_debug_frames): New, dump *_frame sections.
+ (frame_need_space): Support for above.
+ (frame_display_row): Ditto.
+ * binutils.texi: Document it.
+
+2000-11-24 Nick Clifton <nickc@redhat.com>
+
+ * NEWS: Announce support for v5t, v5te and XScale.
+
+2000-11-22 Nick Clifton <nickc@redhat.com>
+
+ * readelf.c (get_machine_name): Add EM_JAVELIN, EM_FIREPATH,
+ EM_ZSP, EM_MMIX, EM_HUANY, EM_PRISM.
+ (get_section_type_name): Add SHT_GROUP and SHT_SYMTAB_SHNDX.
+ (get_elf_section_flags: Add SHF_GROUP.
+ (process_section_headers): Adjust output for 32-bit binaries
+ to look nice on an 80 column terminal.
+
+2000-11-20 H.J. Lu <hjl@gnu.org>
+
+ * readelf.c (get_osabi_name): Change ELFOSABI_MONTEREY to
+ ELFOSABI_AIX.
+
+2000-11-17 Richard Henderson <rth@redhat.com>
+
+ * readelf.c (display_debug_lines): Adjust last change to
+ use sizeof (external->li_length).
+
+2000-11-17 Richard Henderson <rth@redhat.com>
+
+ * readelf.c (display_debug_lines): Fix section length check
+ and end_of_sequence computation.
+
+2000-11-06 Nick Clifton <nickc@redhat.com>
+
+ * binutils.texi: Add GNU Free Documentation License.
+ * objcopy.1: Add GNU Free Documentation License.
+ * objdump.1: Add GNU Free Documentation License.
+ * addr2line.1: Add GNU Free Documentation License.
+ * ar.1: Add GNU Free Documentation License.
+ * nlmconv.1: Add GNU Free Documentation License.
+ * nm.1: Add GNU Free Documentation License.
+ * ranlib.1: Add GNU Free Documentation License.
+ * size.1: Add GNU Free Documentation License.
+ * strings.1: Add GNU Free Documentation License.
+ * strip.1: Add GNU Free Documentation License.
+
+2000-10-06 Luciano Gemme <ishitawa@yahoo.com>
+
+ * objcopy.c (--srec-len=nn): New parameter to set the
+ maximum length of generated Srecords.
+ (--srec-forceS3): New parameter that restricts the generation of
+ Srecords to type S3 only.
+ * binutils.texi: Document new command line switches.
+ * objcopy.1: Docuemnt the new command line switches.
+ * NEWS: Announce the existence of the new command line switches.
+
+2000-10-31 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Add Jim Wilson as the maintainer for the IA64
+ code. Add Eric Chrisopher as maintainer of MN10300 port.
+
+2000-10-12 Roger Sayle <roger@metaphorics.com>
+
+ * Make comma after string after icon/control optional.
+
+2000-09-13 Anders Norlander <anorland@acc.umu.se>
+
+ * readelf.c (get_machine_flags): Also print EF_MIPS_MACH field.
+
+ * NEWS: Mention support for MIPS32.
+
+2000-09-08 Nick Clifton <nickc@redhat.com>
+
+ * MAINTAINERS: Add Stephane Carrez as maintainer for 68HC[11|12].
+
+2000-09-07 H.J. Lu <hjl@gnu.org>
* configure.in (AC_ISC_POSIX): Put after AC_CANONICAL_SYSTEM.
* configure: Rebuild.
- From 2000-08-17 Nick Clifton <nickc@redhat.com>
+2000-09-06 Alexandre Oliva <aoliva@redhat.com>
+
+ * configure: Rebuilt with new libtool.m4.
+
+2000-09-05 Nick Clifton <nickc@redhat.com>
+
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+
+2000-09-04 Todd Vierling <tv@wasabisystems.com>
+
+ * strip.1: Fix stray '\' in -o formatting.
+
+2000-09-02 Nick Clifton <nickc@redhat.com>
+
+ * configure.in: Increase version number to 2.10.91.
+ * configure: Regenerate.
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * po/binutils.pot: Regenerate.
+
+2000-08-31 Alexandre Oliva <aoliva@redhat.com>
+
+ * acinclude.m4: Include libtool and gettext macros from the
+ top level.
+ * aclocal.m4, configure: Rebuilt.
+
+2000-08-30 Jamie Guinan <guinan@bluebutton.com>
+
+ * resrc.c (close_input_stream): Delete extraneous logic
+
+2000-08-24 Hans-Peter Nilsson <hp@axis.com>
+
+ * NEWS: Mention support for CRIS.
+
+2000-08-21 Nick Clifton <nickc@redhat.com>
+
+ * addr2line.c: Changed email address for Ulrich Lauther.
+
+2000-08-17 Christopher C. Chimelis <chris@debian.org>
+
+ * objdump.c (LONGEST_ARCH): Set to sizeof("powerpc:common").
+
+2000-08-17 Nick Clifton <nickc@redhat.com>
* readelf.c (display_debug_pubnames): Only issue warning
message once. Terminate message with a new line.
(display_debug_aranges): Only display version 2 debug info.
-
- From 2000-07-19 H.J. Lu <hjl@gnu.org>
+
+2000-08-14 Todd Vierling <tv@wasabisystems.com>
+
+ * objcopy.c (strip_main): Silently accept -d as an alias for -g
+ for compatability with old BSD systems.
+
+2000-08-14 Jason Eckhardt <jle@cygnus.com>
+
+ * NEWS: Mention i860 support.
+
+2000-08-11 Carlo Wood <carlo@alinoe.com>
+
+ * addr2line.c (main): Add const to char *.
+
+2000-08-11 Geoff Keating <geoffk@cygnus.com>
+
+ * ar.c (main): Don't crash if called with no arguments
+ or only '-X32_64' as an argument.
+
+2000-08-08 DJ Delorie <dj@redhat.com>
+
+ * resrc.c: use "gcc -xc" instead of -xc-header
+
+2000-08-05 Jason Eckhardt <jle@cygnus.com>
+
+ * readelf.c (elf/i860.h): Include.
+ (dump_relocations): Add recognition of i860 architecture.
+ (guess_is_rela): Add recognition of i860 architecture.
+
+2000-08-03 Nick Clifton <nickc@cygnus.com>
+
+ * MAINTAINERS: Add information about CGEN maintainers.
+
+2000-07-26 Geoff Keating <geoffk@cygnus.com>
+
+ * nm.c (main): Ignore '-X32_64' as an option.
+ * ar.c (main): Likewise.
+ * binutils.texi (nm): Document new option.
+ (ar): Likewise.
+
+2000-07-23 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * rdcoff.c (external_coff_symbol_p): K&R-ise.
+
+2000-07-20 H.J. Lu <hjl@gnu.org>
+
+ * binutils/binutils.texi: Put back "@end table" deleted by
+ accident.
+
+2000-07-05 Kenneth Block <krblock@computer.org>
+
+ * binutils/nm.c: Add optional style to demangle switch.
+ * binutils/objdump.c: Add optional style to demangle switch.
+ * binutils/addr2line.c: Add optional style to demangle switch.
+ * binutils/binutils.texi: Document optional style to demangle
+ switch.
+
+2000-07-20 Hans-Peter Nilsson <hp@axis.com>
+
+ * MAINTAINERS: Add self as CRIS port maintainer.
+ * readelf.c: Include elf/cris.h.
+ (guess_is_rela): Handle EM_CRIS.
+ (dump_relocations): Ditto.
+ (get_machine_name): Ditto.
+ * Makefile.am: Rebuild dependencies.
+ * Makefile.in: Regenerate.
+ * po/binutils.pot: Regenerate.
+
+2000-07-19 H.J. Lu <hjl@gnu.org>
* readelf.c (get_dynamic_type): Change "AUXILARY" to
"AUXILIARY".
(process_dynamic_segment): Print out strings for DT_CONFIG,
DT_DEPAUDIT, DT_AUDIT and DT_RUNPATH.
- From 2000-07-19 H.J. Lu <hjl@gnu.org>
+2000-07-19 Mark Kettenis <kettenis@gnu.org>
+
+ * nm.c (usage): Change output of `nm --help' to include a
+ description of the purpose of the program and a detailed
+ description of the accepted options.
+
+2000-07-19 H.J. Lu <hjl@gnu.org>
* readelf.c (process_dynamic_segment): Change DF_1_NODEPLIB
to DF_1_NODEFLIB.
- From 2000-07-19 H.J. Lu <hjl@gnu.org>
+2000-07-19 H.J. Lu <hjl@gnu.org>
* readelf.c (get_dynamic_type): Fix DT_CHECKSUM.
- From 2000-07-19 H.J. Lu <hjl@gnu.org>
+2000-07-19 H.J. Lu <hjl@gnu.org>
* readelf.c (get_dynamic_type): Change DT_FEATURE_1 to
DT_FEATURE.
@@ -55,50 +407,154 @@
(process_dynamic_segment): Handle DTF_1_CONFEXP, DF_1_NODEPLIB,
DF_1_NODUMP and DF_1_CONLFAT.
- From 2000-07-01 Alexander Aganichev <AAganichev@hypercom.com>
-
- * stabs.c (parse_stab_type): Divide size in bits by 8 as binutils
- struct debug_type stores size in bytes.
-
- From 2000-08-17 Christopher C. Chimelis <chris@debian.org>
+2000-07-18 Nick Clifton <nickc@cygnus.com>
- * objdump.c (LONGEST_ARCH): Set to sizeof("powerpc:common").
+ * binutils.texi (readelf): Fix spelling typo.
- From 2000-07-11 Mark Kettenis <kettenis@gnu.org>
+2000-07-11 Mark Kettenis <kettenis@gnu.org>
* objdump.c (usage): Make output of `objdump --help' more
consistent with the rest of the GNU world. Add a line describing
the purpose of the program.
-
- From 2000-06-24 Nick Clifton <nickc@cygnus.com>
+
+2000-07-10 David Huggins-Daines <dhd@linuxcare.com>
+
+ * stabs.c (parse_stab_range_type): Cast to proper type to fix
+ warning.
+
+2000-07-10 Ryan Bradetich <rbradetich@uswest.net>
+
+ * readelf.c (get_dynamic_data): Add casts and use unsigned chars
+ to fix warnings.
+ (process_symbol_table): Ditto.
+ (procesS_extended_line_op): Ditto.
+ (display_debug_lines): Ditto.
+ (display_debug_pubnames): Ditto.
+ (read_and_display_attr): Ditto.
+
+2000-07-09 Nick Clifton <nickc@cygnus.com>
+
+ * MAINTAINERS: Add several more port specific maintainers.
+
+2000-07-05 Nick Clifton <nickc@cygnus.com>
+
+ * MAINTAINERS: Add blanket write privs for Michael Meissner.
+
+2000-06-05 DJ Delorie <dj@redhat.com>
+
+ * MAINTAINERS: New.
+
+2000-07-01 Eric Fifer <EFifer@sanwaint.com>
+
+ * dllwrap.c: Changed mistaken dyn_string_append() calls
+ to dyn_string_append_cstr().
+
+2000-07-01 Alexander Aganichev <AAganichev@hypercom.com>
+
+ * stabs.c (parse_stab_type): Divide size in bits by 8 as binutils
+ struct debug_type stores size in bytes.
+
+2000-07-01 Alan Modra <alan@linuxcare.com.au>
+
+ * Makefile.am (DEP): Fix 2000-06-22. grep after running dep.sed
+ (CLEANFILES): Add DEPA.
+ * Makefile.in: Regenerate.
+
+2000-06-27 Alan Modra <alan@linuxcare.com.au>
+
+ * ar.c: Revert incorrect 2000-06-25 patch.
+ * bucomm.c: Likewise.
+
+2000-06-25 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * rdcoff (parse_coff_symbol): Treat GNU weak symbols as external.
+ (external_coff_symbol_p): New function.
+ (parse_coff): Use it.
+
+2000-06-25 Alexander Aganichev <AAganichev@hypercom.com>
+
+ * ar.c (normalize): Advance past both characters in a DOS based
+ <letter>: filepath prefix.
+ (main): Likewise.
+ * bucomm.c (make_tempname): Likewise.
+
+2000-06-24 Nick Clifton <nickc@cygnus.com>
* objdump.c (usage): Fix description of --stabs switch.
- From 2000-07-18 Nick Clifton <nickc@cygnus.com>
+2000-06-22 Alan Modra <alan@linuxcare.com.au>
- * binutils.texi (readelf): Fix spelling typo.
+ * Makefile.am (DEP): grep for leading `/' in DEP1, and fail if we
+ find one.
+ * Makefile.in: Regenerate.
- From 2000-07-19 Mark Kettenis <kettenis@gnu.org>
+2000-06-20 Alexander Aganichev <AAganichev@hypercom.com>
- * 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.
+ * ar.c (normalize): Correct pointer comparison when checking for
+ backslashes.
+ (main): Likewise.
+ * bucomm.c (make_tempname): Likewise.
-2000-09-05 Todd Vierling <tv@wasabisystems.com>
+ * ieee.c (ieee_start_compilation_unit): Correct pointer comparison
+ and search for backslashes in the original pathname.
+ (ieee_add_bb11): Likewise.
- From 2000-08-14 Todd Vierling <tv@wasabisystems.com>
- * objcopy.c (strip_main): Silently accept -d as an alias for -g
- for compatability with old BSD systems.
+2000-06-18 Nick Clifton <nickc@redhat.com>
-2000-09-04 Todd Vierling <tv@wasabisystems.com>
+ * ar.c (print_contents): Improve verbose message.
- * strip.1: Fix stray '\' in -o formatting.
+2000-06-15 H.J. Lu <hjl@gnu.org>
+
+ * dyn-string.c: Removed. Not needed with dyn-string.c in
+ libiberty.
+ * dyn-string.h: Likewise.
+
+ * Makefile.am: Remove references to dyn-string.c and
+ dyn-string.h. Rebuild dependency.
+ * Makefile.in: Rebuild.
+
+2000-06-15 H.J. Lu <hjl@gnu.org>
+
+ * binutils.texi: Put a warning on copying relocatable object
+ files between two different formats.
+
+2000-06-13 DJ Delorie <dj@cygnus.com>
+
+ * rcparse.y (control): ICON controls take an id as the first
+ parameter, not an optional string. Also, call new convenience
+ function that takes res_id's.
+ * resrc.c (define_control): missing text means zero-length string,
+ not zero ID.
+ (define_icon_control): New.
+ * windres.h: declare define_icon_control.
+
+2000-06-13 H.J. Lu <hjl@gnu.org>
+
+ * configure: Regenerate.
+
+2000-06-08 David O'Brien <obrien@FreeBSD.org>
+
+ * configure.in (VERSION): Update to show this is the CVS mainline.
+
+2000-06-02 David O'Brien <obrien@FreeBSD.org>
+
+ * strings.c (isgraphic): Interpret <TAB> as a printable character,
+ analogous to <SPACE>.
2000-05-30 Alan Modra <alan@linuxcare.com.au>
* objdump.c (display_target_list): Use bfd_close_all_done, not
bfd_close to fix crash caused by 2000-05-24 change.
+2000-05-25 DJ Delorie <dj@cygnus.com>
+
+ * resrc.c (close_input_stream): zero out cpp_pipe after closing it.
+
+2000-05-26 Alan Modra <alan@linuxcare.com.au>
+
+ * Makefile.am: Update dependencies with "make dep-am"
+ * Makefile.in: Regenerate.
+
2000-05-26 Eli Zaretskii <eliz@is.elta.co.il>
* ar.c: Include filenames.h.
@@ -143,10 +599,38 @@
* objdump.c (display_target_list): Close the bfd.
(display_info_table): Likewise.
-2000-05-23 Philip Blundell <pb@futuretv.com>
+2000-05-14 H.J. Lu (hjl@gnu.org)
- * configure.in: Set version to 2.10.
- * configure: Regenerate.
+ * objcopy.c (filter_symbols): Don't strip global symbols in
+ relocatable object files.
+
+2000-05-14 Alan Modra <alan@linuxcare.com.au>
+
+ * size.c (usage): Associate short options with corresponding long
+ option to give a clue as to their function.
+
+2000-05-14 Philippe De Muyter <phdm@macqel.be>
+
+ * size.c (main): Accept and ignore `-f' option.
+
+2000-05-13 Alan Modra <alan@linuxcare.com.au>
+
+ * bucomm.h (gettext, dgettext, dcgettext, textdomain,
+ bindtextdomain): Replace defines with those from intl/libgettext.h
+ to quieten gcc warnings.
+
+2000-05-12 H.J. Lu <hjl@gnu.org>
+
+ * nlmconv.c (temp_filename): Removed.
+
+ * nlmconv.c (link_inputs): Use make_temp_file () instead of
+ choose_temp_base ().
+ * objdump.c (display_target_list): Likewise.
+ (display_info_table): Likewise.
+
+2000-05-08 Alan Modra <alan@linuxcare.com.au>
+
+ * objcopy.c (setup_section): Add const and gettext calls for err.
2000-05-02 H.J. Lu <hjl@gnu.org>
@@ -156,12 +640,36 @@
ELFOSABI_FREEBSD, ELFOSABI_TRU64, ELFOSABI_MODESTO
and ELFOSABI_OPENBSD.
+2000-05-02 Kazu Hirata <kazu@hxi.com>
+
+ * coffgrok.c: Add ATTRIBUTE_UNUSED as appropriate.
+ * srconv.c: Likewise.
+ * sysdump.c: Likewise.
+
+Sun Apr 23 14:23:26 2000 Denis Chertykov <denisc@overta.ru>
+
+ * readelf.c (guess_is_rela): AVR uses RELA relocations.
+ (get_machine_name): machine name for EM_AVR added.
+
+Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com>
+ David Mosberger <davidm@hpl.hp.com>
+
+ * Makefile.am (readelf.o): Add elf/ia64.h.
+ * Makefile.in: Rebuild.
+ * readelf.c: Include elf/ia64.h.
+ (guess_is_rela, dump_relocations): Handle EM_IA_64.
+
+2000-04-17 Timothy Wall <twall@cygnus.com>
+
+ * objdump.c (disassemble_data): Set octets per byte *after*
+ resolving arch/mach for binary files.
+
2000-04-14 Michael Sokolov <msokolov@ivan.Harhan.ORG>
* arlex.l: Add directives to increase lex buffer size.
* objdump.c, readelf.c: Don't include strarg.h or varargs.h. They are
- already included by bucomm.h.
+ already included by bucomm.h.
2000-04-10 Philippe De Muyter <phdm@macqel.be>
@@ -169,6 +677,13 @@
`strftime' since strftime is not available on all systems.
(process_mips_specific): Ditto.
+Fri Apr 7 15:56:57 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add
+ --enable-build-warnings option.
+ * Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions.
+ * Makefile.in, configure: Re-generate.
+
2000-04-06 Alan Modra <alan@linuxcare.com.au>
* addr2line.c: Update copyright.
@@ -265,6 +780,27 @@
(integer_arg): And here.
* sysdump.c (main): And here.
+2000-04-06 Timothy Wall <twall@cygnus.com>
+
+ * objdump.c (dump_section_header): Print CLINK and BLOCK flags.
+
+2000-04-06 Jason Merrill <jason@yorick.cygnus.com>
+
+ * readelf.c (decode_location_expression): Loop through multiple
+ operations.
+ (read_and_display_attr): Pass in length.
+
+ * readelf.c (read_and_display_attr): Add CU offset to references.
+ (display_debug_info): Pass it in.
+
+2000-04-06 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (decode_ARM_machine_flags): New function.
+ (get_machine_flags): Call decode_ARM_machine_flags for ARM
+ targets.
+
+ (get_machine_name): Catch EM_AVR
+
2000-04-05 Alan Modra <alan@linuxcare.com.au>
* binutils.texi: Remove optional `=' from long options that have
@@ -438,15 +974,15 @@
* binutils/objdump.c (dump_section_header, find_symbol_for_address,
show_line, disassemble_bytes, disassemble_data, dump_data):
distinguish between octets and bytes.
-
+
2000-01-27 Thomas de Lellis <tdel@windriver.com>
- * nm.c (print_symbol_info_bsd): Use bfd_is_undefined_symclass to
+ * 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.
+ (print_symbol_info_sysv): Ditto.
+ (print_symbol_info_posix): Ditto.
- * binutils.texi: Document new 'V' symclass flag for nm.
+ * binutils.texi: Document new 'V' symclass flag for nm.
2000-01-27 Nick Clifton <nickc@redhat.com>
@@ -492,28 +1028,28 @@
2000-01-07 Mumit Khan <khan@xraylith.wisc.edu>
- * windres.c (long_options): Add --use-temp-file and
+ * 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
+ (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.
+ options.
2000-01-04 Mumit Khan <khan@xraylith.wisc.edu>
-
+
* dlltool.c (create_compat_implib): New variable.
(gen_exp_file): Use.
(make_one_lib_file): Use.
@@ -527,7119 +1063,9 @@
2000-01-03 Nick Clifton <nickc@cygnus.com>
* binutils.texi: Document new, ARM specific disassembler
- command line switch "-M force-thumb".
-
-1999-12-28 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c: Update with new constants added by Oct 4, 1999
- ELF ABI draft.
- (guess_is_rela): Add new machine codes, but leave
- rel type undetermined.
- (get_machine_name): Add new machine codes.
- (get_section_type_name): Add new section types.
- (get_elf_section_flags): New funciton: Decode section flags.
- (process_section_headers): Call get_elf_section_flags() in
- order to decode flags in section header.
- (get_dynamic_flags): New function: Decode dynamic section
- flags.
- (process_dynamic_section): Display flags (if present).
- (get_symbol_type): Add STT_COMMON.
- (get_symbol_visibility): New function: Decode a symbol's
- visibility.
- (process_symbol_table): Call get_symbol_visibility().
- (get_note_type): Add NT_PRXFPREGS.
-
-1999-12-26 Ian Lance Taylor <ian@zembu.com>
-
- * strings.c (main): Correct handling of numeric argument.
-
-1999-12-23 Andrew Haley <aph@cygnus.com>
-
- * dlltool.c (mtable): mcore how_jtab_roff is 4 bytes into the
- jtab; was 8.
-
-1999-12-17 Nick Clifton <nickc@cygnus.com>
-
- * dlltool.c (mtable): Stop compile time warnings about missing
- initialisers.
- (yyerror): Stop compile time warnings about unused paramater.
- (INIT_SEC_DATA): New macro: initialise an entry in the secdata
- array.
- (secdata): Stop ccompile time warnings about uninitialised
- fields.
- (dtab): Stop compile time warnings about unused parameter.
- (long_options): Stop compile time warning about missing
- initialiser.
-
-1999-12-10 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (print_vma): Support native 64bit ELF systems.
-
-1999-12-09 Nick Clifton <nickc@cygnus.com>
-
- * dlltool.c (mtable): Add epoc-arm specific entry.
- Make default arm entry pass -mpacs-26 to assembler.
- (flush_page): Do not mangle null entries.
-
-1999-12-07 H . J . Lu hjl@valinux.com
-
- * readelf.c: Fix compile time warnings. Support more than 999
- symbols.
-
-1999-12-03 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (enum print_mode): New type.
- (print_vma): New function.
- (dump_relocations): Use print_vma to display bfd_vma values.
- (process_file_header): Use print_vma to display bfd_vma values.
- (process_program_headers): Use print_vma to display bfd_vma values.
- (process_section_headers): Use print_vma to display bfd_vma values.
- (dynamic_segment_parisc_val): Use print_vma to display bfd_vma values.
- (process_dynamic_segment): Use print_vma to display bfd_vma values.
- (process_symbol_table): Use print_vma to display bfd_vma values.
- (process_mips_specific): Use print_vma to display bfd_vma values.
-
-1999-11-25 Fred Fish <fnf@cygnus.com>
-
- * readelf.c (process_note): Change arg from Elf_External_Note
- to Elf32_Internal_Note, which also turns the function body
- into little more than a call to printf.
- (process_corefile_note_segment): Substantially rewritten
- to properly handle case where target and host are different
- endianness, handle note sections with padding, and add some
- cruft to handle notes with unterminated name data.
-
-1999-11-22 Nick Clifton <nickc@cygnus.com>
-
- * objcopy.c (copy_usage): Reformat.
- (strip_usage): Reformat.
-
-1999-11-21 Nick Clifton <nickc@cygnus.com>
-
- * objdump.c (usage): Overhaul output: One line per switch.
- Textual description of each switch. Distinguish between
- optional switches and required switches.
- (long_options): Add 'g', 'G' and 'z' short options.
- (main): Distinguish between optional switches and required
- switches.
-
- * binutils.texi: Add -g -G and -z short options for
- --debugging, --stabs and --disassemble-zeroes.
-
-1999-11-03 Nick Clifton <nickc@cygnus.com>
-
- * dlltool.c (flush_page): Clip short values to prevent warnings
- from the assembler.
- Change default mcore machine name to 'mcore-le' and rename
- big-endian version to 'mcore-be'.
-
-1999-10-27 Fred Fish <fnf@cygnus.com>
-
- * objdump.c (display_bfd): Break into two functions. The
- actual dumping code moves to dump_bfd. If bfd is not
- unambiguously recognized as a bfd_object, attempt to dump
- it as a bfd_core.
- (dump_bfd): New function.
-
-1999-10-26 Nick Clifton <nickc@cygnus.com>
-
- * dlltool.c (assemble_file): Remove spurious test of exp_name.
-
-1999-10-22 Nick Clifton <nickc@cygnus.com>
-
- * dlltool.c (struct mac): Add new field 'how_default_as_switches'.
- (mtable): Initialise new field. Some machines have a non empty
- string for this field.
- (HOW_BFD_TARGET): Undefine and replace with...
- (HOW_BFD_READ_TARGET): New macro: bfd target to use when opening a
- file for reading. This is set to 0 so that any recognisable bfd
- format can be read.
- (HOW_BFD_WRITE_TARGET): New macro: bfd target to use when opening
- a file for writing. This is set to the target machine type.
- (ASM_SWITCHES): New macro: default switches to use when assembling
- a file.
- (assemble_file): New function: Assemble a source file into a
- destination object file.
- (gen_exp_file): Use assemble_file to create the exp file.
- (make_one_lib_file): Use assemble_file to create the lib file.
- Open output file use HOW_BFD_WRITE_TARGET and input files using
- HOW_BFD_READ_TARGET.
- (make_head): Use assemble_file to create the head file.
- (make_tail): Use assemble_file to create the tail file.
- (gen_lib_file): Open output file use HOW_BFD_WRITE_TARGET.
-
-1999-10-15 Ian Lance Taylor <ian@zembu.com>
-
- * ar.c (normalize): Fix full_pathname code.
-
-1999-10-08 Ben Elliston <bje@cygnus.com>
-
- * binutils.texi: Some rewording and clarifications.
-
-1999-09-15 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c (dynamic_segment_parisc_val): Print 0 for DLD_FLAGS if
- the value is zero.
- (process_symbol_table): Don't print histogram if hash table is empty.
-
-1999-09-15 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c (get_parisc_dynamic_type): Handle DT_HP_GST_* values.
-
-1999-09-02 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c (get_symbol_type): Add support for HPUX and PARISC
- specific symbol types.
-
- * readelf.c: Add HPUX and PARISC extensions to dynamic and program
- header table printing.
-
- * readelf.c (get_machine_flags): Add handling of PARISC.
-
-1999-09-29 Mumit Khan <khan@xraylith.wisc.edu>
-
- * dlltool.c (scan_drectve_symbols): Handle type tags in exported
- symbols.
- (scan_filtered_symbols): Likewise.
-
-1999-09-19 Ian Lance Taylor <ian@zembu.com>
-
- * resrc.c (write_rc_rcdata): Fix local variable shadowing
- problem. If RCDATA_BUFFER data can be read as strings, modify
- code to print the strings as comments.
- * resres.c: Add casts to avoid warnings.
- (write_res_data, read_res_data): Don't put the program name in the
- error message; fatal already puts it there.
-
-1999-09-14 Michael Meissner <meissner@cygnus.com>
-
- * configure.in (Canonicalization of target names): Remove adding
- ${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
- generates $ac_config_sub with a ${CONFIG_SHELL} already.
- * configure: Regenerate.
-
-1999-09-12 Ian Lance Taylor <ian@zembu.com>
-
- * ar.c (main): Clear output_file if we don't change the archive.
- (delete_members, replace_members): Likewise.
-
-1999-09-12 Donn Terry <donn@interix.com>
-
- * objdump.c (dump_headers): If wide_output, print Flags header.
-
- * objdump.c (dump_section_header): Print any comdat information.
-
- * objcopy.c (parse_flags): Handle "noload", "debug", and "share".
- * binutils.texi, objcopy.1: Document new flags.
-
- * ar.c (counted_name_mode): New static variable.
- (counted_name_counter): New static variable.
- (map_over_members): Handle counted mode.
- (usage): Mention N modifier.
- (main): Handle N modifier.
- (delete_members): Handle counted mode.
- * binutils.texi, ar.1: Document N modifier.
-
- * ar.c (print_contents): Change printing of member name for
- POSIX.2 conformance.
-
- * ar.c (output_filename): Make const.
- (open_inarch): If creating a new empty archive, set
- output_filename.
-
-1999-09-12 Ian Lance Taylor <ian@zembu.com>
-
- * ar.c (full_pathname): New static variable.
- (map_over_members): Call normalize on command line parameter.
- (usage): Mention P modifier.
- (normalize): If full_pathname is true, don't do anything.
- (main): Accept P modifier.
- (delete_members): Call normalize on command line parameter.
- * binutils.texi, ar.1: Document P modifier.
-
-1999-09-09 Andreas Schwab <schwab@suse.de>
-
- * binutils.texi: Add info dir entries for all programs described
- here. Fix arguments of @var to not contain punctuation.
-
-1999-09-06 Donn Terry <donn@interix.com>
-
- * nm.c (print_symbol_info_bsd): Check for 'w' as well as 'U'.
- (print_symbol_info_sysv): Likewise.
- (print_symbol_info_posix): Likewise.
-
-1999-09-04 Steve Chamberlain <sac@pobox.com>
-
- * readelf.c: Include "elf/pj.h".
- (dump_relocations): Handle EM_PJ.
- (get_machine_name): Likewise.
- (get_machine_flags): Likewise.
-
-1999-08-31 Scott Bambrough <scottb@netwinder.org>
-
- * readelf.c (get_note_type): New function: Decode the e_type
- value of a note.
- (process_note): New function: Display the contents of a core note.
- (process_corefile_note_segment): New function.
- (process_corefile_note_segments): New function.
- (process_corefile_contents): New function.
- (process_file): Add call to process_corefile_contents.
- (parse_args): Add parsing of -n/--notes command line switch.
- (usage): Document new command line switch.
-
- * binutils.texi: Documemnt new command line switch to readelf.
-
-1999-08-31 Ian Lance Taylor <ian@zembu.com>
-
- * binutils.texi (Bug Reporting): Clarify that large files should
- not be sent to bug-gnu-utils.
-
-1999-08-28 Stephane Carrez <stcarrez@worldnet.fr>
-
- * readelf.c (process_extended_line_op): New parameter pointer_size,
- read the address according to pointer_size.
- (debug_line_pointer_size): New global to indicate the
- size of address in .debug_line section.
- (debug_displays, prescan_debug_info): Prescan the .debug_info section
- to record the size of address in `debug_line_pointer_size'.
- (process_section_contents): Before dumping any section, execute
- the pre-scan operation defined for some debug sections.
-
-1999-08-27 Jim Wilson <wilson@cygnus.com>
-
- * readelf.c (display_debug_lines): Use i-1 not i in standard_opcodes
- access.
- (display_debug_aranges): New local excess. Use for calculating padding
- and add that into ranges. Break from loop only if length is also 0.
-
-1999-08-27 Jim Wilson <wilson@cygnus.com>
-
- * readelf.c (display_debug_lines, case DW_LNS_const_add_pc): Multiply
- adv by info.li_min_insn_length.
-
-1999-08-26 Jakub Jelinek <jj@ultra.linux.cz>
-
- * readelf.c (get_sparc64_dynamic_type): New function.
- (get_dynamic_type): Use it.
-
-1999-08-26 Jim Wilson <wilson@cygnus.com>
-
- * readelf.c (display_debug_lines, case default): Change second line
- setting adv to use = not +=.
-
-1999-08-19 Nick Clifton <nickc@cygnus.com>
-
- * dlltool.c: Added more examples to the comment at the start.
-
-1999-08-18 Nick Clifton <nickc@cygnus.com>
-
- * dlltool.c (make_head): Only emit interworking directive if
- necessary.
-
-Thu Jul 15 22:44:21 1999 Hans-Peter Nilsson <hp@bitrange.com>
-
- * readelf.c (process_abbrev_section): Handle standard-conforming
- single zero at the end of the section.
-
-1999-08-09 Ian Lance Taylor <ian@zembu.com>
-
- * objdump.c (exit_status): New static variable.
- (nonfatal): New static function.
- (disassemble_data): Set exit_status on error.
- (read_section_stabs): Likewise.
- (display_bfd): Likewise. Call nonfatal rather than bfd_nonfatal.
- (display_file): Call nonfatal rather than bfd_nonfatal.
- (display_target_list, display_info_table): Likewise.
- (main): Return exit_status rather than 0.
-
-1999-08-08 Ian Lance Taylor <ian@zembu.com>
-
- * objdump.c (dump_section_header): Update for renaming of
- SEC_SHORT to SEC_SMALL_DATA. Print SEC_SHARED flag.
-
- From Eli Zaretskii <eliz@gnu.org>:
- * binutils.texi: Document cxxfilt as MS-DOS name for c++filt.
-
- * configure.in: Define and substitute DEMANGLER_NAME.
- * Makefile.am (DEMANGLER_PROG): Set to cxxfilt.
- (man_MANS): Use DEMANGLER_NAME rather than DEMANGLER_PROG.
- (bin_PROGRAMS): Remove $(DEMANGLER_PROG).
- (noinst_PROGRAMS): Add $(DEMANGLER_PROG).
- (cxxfilt_SOURCES): Rename from c__filt_SOURCES.
- (cxxfilt_LDADD): Rename from c__filt_LDADD.
- ($(DEMANGLER_NAME).1): Rename from $(DEMANGLER_PROG).1. Use
- DEMANGLER_NAME rather than DEMANGLER_PROG in substitution.
- (MOSTLYCLEANFILES): Use DEMANGLER_NAME rather than
- DEMANGLER_PROG.
- (install-exec-local): When installing noinst_PROGRAMS, change
- cxxfilt to $(DEMANGLER_NAME).
- * configure, Makefile.in: Rebuild.
-
- * Makefile.am: Rename .dep* files to DEP*. Change DEP variable to
- MKDEP.
- * Makefile.in: Rebuild.
-
-1999-08-05 Donn Terry <donn@interix.com>
-
- * Makefile.am (YACC): If bison is not in the source tree, use
- @YACC@ rather than bison -y.
- (LEX): If flex is not in the source tree, use @LEX@ rather than
- flex.
- * configure.in: Build dlltool for i[3-6]86-*-interix.
- * Makefile.in, configure: Rebuild.
-
-1999-07-21 Ian Lance Taylor <ian@zembu.com>
-
- From Mark Elbrecht:
- * configure.bat: Remove; obsolete.
-
-1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
-
- * readelf.c (get_machine_flags): Print EF_SPARC_SUN_US3.
-
-1999-07-15 Ian Lance Taylor <ian@zembu.com>
-
- * configure.in: Bump version number to 2.9.5.
- * configure: Rebuild.
-
-1999-07-14 Richard Henderson <rth@cygnus.com>
-
- * objdump.c (dump_section_header): Print SEC_SHORT.
-
-1999-07-11 Ian Lance Taylor <ian@zembu.com>
-
- * Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
- as appropriate. Add variable initializations. Add casts.
- * objdump.c (disassemble_bytes): Change j to bfd_vma.
- * readelf.c (process_syminfo): Change i to unsigned int.
- (display_debug_info): Change abbrev_number to unsigned long.
- (process_mips_specific): Change fcnt to size_t.
-
-1999-07-09 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c: Only support decoding 64bit ELF files if the compiler
- supports a 64 bit data type.
- Add -I equivalent for --histogram.
- Add -A command-line option to display architecture specific information.
-
-1999-07-08 Jakub Jelinek <jj@ultra.linux.cz>
-
- * readelf.c (guess_is_rela): Sparcv9 and v8plus use rela.
- (dump_relocations): Use ELF64_R_TYPE_ID for Sparc, for R_SPARC_OLO10
- print the secondary addend.
- (get_machine_flags): Print Sparc machine flags.
- (get_symbol_type): Print STT_REGISTER.
-
-1999-07-08 Ian Lance Taylor <ian@zembu.com>
-
- * stabs.c (parse_stab_type): Fix handling of template names with
- template parameters containing `::'.
- (stab_demangle_type): Handle a qualified name in a pointer to
- member.
-
-1999-06-23 Ian Lance Taylor <ian@zembu.com>
-
- * Makefile.am (dlltool_SOURCES): Add dyn-string.c.
- * Makefile.in: Rebuild.
-
-1999-06-23 Mumit Khan <khan@xraylith.wisc.edu>
-
- * configure.in (HAVE_EXECUTABLE_SUFFIX): Define.
- * dlltool.c (look_for_prog): Use HAVE_EXECUTABLE_SUFFIX.
- * dllwrap.c (look_for_prog): Likewise.
- * resrc.c (look_for_default): Likewise.
- * configure, config.in: Rebuild.
-
-1999-06-22 Ian Lance Taylor <ian@zembu.com>
-
- Based on patches from Mumit Khan <khan@xraylith.wisc.EDU>:
- * configure.in: Define EXECUTABLE_SUFFIX.
- * dlltool.c: Include "dyn-string.h". Include <stdarg.h> based on
- ANSI_PROTOTYPES, not __STDC__.
- (outfile): Remove.
- (gen_exp_file): Change uses of outfile to use alloca.
- (make_one_lib_file, make_head, make_tail): Likewise.
- (gen_lib_file): Likewise.
- (look_for_prog): New static function.
- (deduce_name): Rewrite to use look_for_prog.
- (mcore_elf_gen_out_file): Use dyn_string_t rather than outfile.
- * dllwrap.c: Don't include <stdio.h>, <errno.h>, <string.h>,
- <stdlib.h>, or <unistd.h>. Include <sys/stat.h> and either
- <stdarg.h> or <varargs.h>.
- (driver_name): Initialize to NULL, not "gcc".
- (dlltool_name): Initialize to NULL, not "dlltool".
- (display, inform, look_for_prog, deduce_name): New static
- functions.
- (usage): Mention -mno-cygwin.
- (OPTION_MNO_CYGWIN): Define.
- (main): Handle -mno-cygwin. Deduce driver_name and dlltool_name.
- * resrc.c (look_for_default): Make static. Remove unused local
- path. Check using EXECUTABLE_SUFFIX.
- (read_rc_file): Allocate enough space to hold EXECUTABLE_SUFFIX.
- * Makefile.am: Rebuild dependencies.
- (dllwrap_LDADD): Add $(INTLLIBS).
- * configure, Makefile.in, config.in: Rebuild.
-
-Mon Jun 21 16:49:11 1999 Jeffrey A Law (law@cygnus.com)
-
- * readelf.c (dump_relocations): Use elf_hppa_reloc_type instead of
- elf32_hppa_reloc_type.
-
-1999-06-17 Nick Clifton <nickc@cygnus.com>
-
- * dlltool.c (mcore_elf_gen_out_file): Link object files with the
- .exp file, not the .lib file.
-
-Fri Jun 18 20:17:51 1999 Mumit Khan <khan@xraylith.wisc.edu>
-
- * deflex.l: Accept single-character symbol names.
-
-1999-06-16 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (get_symbol_type): Detect ARM symbols typed as Thumb
- functions.
-
-1999-06-14 Nick Clifton <nickc@cygnus.com>
-
- * objdump.c (disassembler_options): New variable.
- (usage): Document new -M/--disassembler-options option.
- (long_options): Add --disassembler-options.
- (disassemble_data): Initialise disassembler_options field of
- disassembler_info structure.
- (main): Add parsing of -M option.
-
- * binutils.texi: Document new command line switch to objdump.
-
- * NEWS: Describe new command line switch to objdump.
-
-
-Mon Jun 14 10:27:54 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * binutils.texi: Fix typos.
-
-1999-06-13 Ian Lance Taylor <ian@zembu.com>
-
- * objdump.c (disassemble_bytes): If the disassembler returns an
- error, print out anything it may have printed to the buffer. From
- H.J. Lu <hjl@gnu.org>.
-
- * defparse.y (explist): Remove separate expline to eliminate
- shift/reduce conflict.
-
- From Kai-Uwe Rommel <rommel@ars.de>:
- * defparse.y: Add tokens NONSHARED, SINGLE, MULTIPLE,
- INITINSTANCE, INITGLOBAL, TERMINSTANCE, and TERMGLOBAL.
- (command): Add option_list after LIBRARY.
- (attr): Accept and ignore NONSHARED, SINGLE, and MULTIPLE.
- (option_list, option): New nonterminals.
- * deflex.l: Recognize NONSHARED, SINGLE, MULTIPLE, INITINSTANCE,
- INITGLOBAL, TERMINSTANCE, and TERMGLOBAL.
-
-1999-06-12 Ian Lance Taylor <ian@zembu.com>
-
- * ar.c (O_BINARY): Define as 0 if not defined.
- (ranlib_touch): Open file with O_BINARY.
-
- * rename.c (O_BINARY): Define as 0 if not defined.
- (simple_copy): Open files with O_BINARY.
-
- Based on patch from H. Peter Anvin <hpa@transmeta.com>:
- * objcopy.c (struct section_list): Add copy field.
- (sections_copied): New static variable.
- (copy_options): Add "only-section".
- (copy_usage): Mention -j and --only-section.
- (find_section_list): Initialize copy field.
- (is_strip_section): Check for copying sections.
- (copy_object): Check sections_copied when calling filter_symbols.
- (setup_section): Check for copying sections.
- (copy_section): Likewise.
- (copy_main): Handle -j/--only-section.
- * binutils.texi, objcopy.1: Document -j/--only-section.
-
- * configure.in: If frexp is not available, check in -lm.
- * configure: Rebuild.
-
- * readelf.c (get_elf_class): Use correct printf format for type.
- (get_data_encoding): Likewise.
- (get_osabi_name): Likewise.
- (process_file_header): Don't pass an extra argument to printf.
- (process_dynamic_segment): Cast dynamic_size to long before
- printing.
- (decode_location_expression): Cast byte_get to long before
- printing.
-
-Wed Jun 9 11:40:16 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * readelf.c (dump_section): Cast values from byte_get to
- [unsigned] long for printing, in case it is wider than long.
- (display_block): Likewise.
- (read_and_display_attr): Likewise.
- (decode_location_expression): Likewise. Don't depend on
- evaluation order.
-
-Mon Jun 7 12:14:57 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * windres.c (usage): Fix typo.
-
-1999-06-04 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c: Use 64bit wide fields in internal strcutures even if
- targetting a 32bit architecture.
- (dump_relocations): Take a new parameter - the number of symbols
- in the symbol table.
-
-1999-06-04 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c: Add support for 64bit ELF files.
-
-1999-06-03 Nick Clifton <nickc@cygnus.com>
-
- * dlltool.c (mcore_elf_gen_out_file): Use constants for temporary
- file names.
-
-Wed Jun 2 12:34:36 1999 Richard Henderson <rth@cygnus.com>
-
- * dlltool.c (gen_exp_file): Revert 19990411 change.
-
-Mon May 31 09:56:22 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * readelf.c (process_relocs): Determine type of reloc from
- DT_PLTREL and from section type.
-
-1999-05-29 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (get_elf_class): Display unknown class number.
- (get_data_encoding): Display unknown encoding number.
- (get_osabi_name): Display unknown ABI number.
- (process_file_header): Display unknown version number.
-
-1999-05-29 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (dump_relocations): Fix typo.
-
-1999-05-28 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (dump_relocations): Add extra parameter: is_rela to
- specify the kind of relocations to be dumped. Call guess_is_rela
- if this parameter has a value of UNKNOWN.
- (guess_is_rela): New function: Guess the kind of reloc being used
- baced on the machine number.
- (process_relocs): Determine type of reloc before calling
- dump_relocations.
-
-1999-05-28 Ian Lance Taylor <ian@zembu.com>
-
- * readelf.c: Include "elf/i960.h".
- (dump_relocations): Handle EM_960.
-
-Thu May 27 11:58:33 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * objcopy.c (copy_archive): Preserve dates of archive members if
- requested.
-
- * readelf.c (dump_relocations): Always print the addend on RELA
- systems even if there is no symbol.
- (process_program_headers): Reset dynamic_size before looping
- through the program headers.
- (process_version_sections): Cast sh_offset to unsigned long for
- printing in case bfd_vma is wider.
- (process_symbol_table): Use get_symbol_index_type when printing
- st_shndx.
-
-1999-05-17 DJ Delorie <dj@cygnus.com>
-
- * windres.c: add verbose option
- (main): process verbose option
- * resrc.c (look_for_default): new. Look for the default
- preprocessor in a given location.
- (read_rc_file): for foo/bar-windres, look for foo/bar-gcc,
- foo/gcc (in case of foo/windres), and then gcc (the old default).
-
-1999-05-16 Nick Clifton <nickc@cygnus.com>
-
- * dlltool.c (deduce_name): New function: Deduce name of program to
- run.
- (mcore_elf_out_file): New variable: Name of mcore-elf output file.
- (mcore_elf_linker): New variable: Name of linker to use.
- (mcore_elf_linker_flags): New variable: Linker flags to pass.
- (scan_obj_file): Cache filenames if necessary.
- (usage): Document new command line options.
- (main): Support new command line options: -M (generate an
- mcore-elf output file) -L (name of linker to use) -F (flags to
- pass to linker).
- (mcore_elf_cache_filename): Store a filename in a cache.
- (mcore_elf_gen_out_file): New function: Generate an output file
- per the mcore-elf spec.
-
-1999-05-15 Nick Clifton <nickc@cygnus.com>
-
- * configure.in (BUILD_MISC): Build dlltool for mcore
- * configure: Regenerate.
- * dlltool.c: Update example in comment.
- (DLLTOOL_MCORE): Define.
- (DLLTOOL_MCORE_ELF): Define.
- (DRECTVE_SECTION_NAME): Define.
- (mcore_be_jtab, mcore_le_jtab): Binary for performing an mcore
- jump to address.
- (mtable): Add entries for mcore variants.
- (rvaafter, rvabefore, asm_prefix): Add mcore suppport.
- (scan_drectve_symbols): Use DRECTVE_SECTION_NAME.
- (make_head, make_tail): Cope if file cannot be created.
- (usage): Improve layout.
-
-1999-05-13 DJ Delorie <dj@cygnus.com>
-
- * rclex.l: add code to suppress certain output from cpp, replace
- all returns with MAYBE_RETURN
- (MAYBE_RETURN): new, implement the suppression by returning
- IGNORED_TOKEN as needed.
- (cpp_line): remember which file we're in, mark data from included
- *.h files for suppression.
- * rcparse.y (input): allow IGNORED_TOKEN outside of known constructs
-
-1999-05-10 DJ Delorie <dj@cygnus.com>
-
- * windres.c (quot): Quote shell metacharacters in a string
- (main): quote parameters to cpp that might have metacharacters in
- them. Allow -D as an alias for --define to allow for sharing make
- macros with gcc.
-
- * objdump.c (dump_reloc_set): don't core if howto->name is NULL
-
- * Makefile.am: Give rescoff.c a cpu-specific -D so it can set
- the correct BFD.
- * Makefile.in: ditto
- * rescoff.c (write_coff_file): Set the correct BFD
-
-1999-05-06 Ian Lance Taylor <ian@zembu.com>
-
- * rename.c (smart_rename): Fix test of whether file exists.
-
-1999-05-06 Nick Clifton <nickc@cygnus.com>
-
- * objdump.c (disassemble_data): Set display_endian based on target
- endianism.
-
-1999-05-05 Catherine Moore <clm@cygnus.com>
-
- * dlltool.c (interwork): Remove.
- (arm_interwork_jtab): Use bx insn.
- (thumb_jtab): Likewise.
- (MARM_INTERWORK): New machine type.
- (rvaafter): Handle it.
- (rvabefore) Likewise.
- (asm_prefix): Likewise.
- (gen_exp_type): Check machine type instead of
- interwork flag.
- (make_one_lib_file): Likewise.
- (make_head): Likewise.
- (make_tail): Likewise.
- (usage): Update machine types.
- (main): Remove -interwork support.
-
-1999-05-05 Catherine Moore <clm@cygnus.com>
-
- * readelf.c (get_machine_flags): Check for EF_CPU32.
- (get_data_encoding): Fix typo.
-
-1999-04-26 Tom Tromey <tromey@cygnus.com>
-
- * aclocal.m4, configure: Updated for new version of libtool.
-
-1999-04-18 Ian Lance Taylor <ian@zembu.com>
-
- * stabs.c (parse_stab_range_type): Correct parenthesization in
- BFD64 case.
-
- * readelf.c (get_section_type_name): Use correct types in printf
- formats.
- (process_relocs): Likewise.
- (process_dynamic_segment): Likewise.
- (process_symbol_table): Likewise.
- (process_mips_specific): Likewise.
-
-Tue Apr 13 21:22:00 1999 Catherine Moore <clm@cygnus.com>
-
- * dlltool.c (make_one_lib_file): Mark thumb functions as
- C_THUMBEXTFUNC.
-
-1999-04-11 Richard Henderson <rth@cygnus.com>
-
- * bucomm.h (environ): Declare it, if needed.
- (alloca) [C_ALLOCA]: Don't use gcc's builtin or <alloca.h>.
- * configure.in (environ): Detect declaration.
- * nm.c (main): Don't declare environ.
- * configure, config.in: Rebuild.
-
- * dlltool.c (gen_exp_file): Pad out the .reloc section to a
- 32-byte boundary with dummy relocations, to make the BeOS loader
- happy. Patch from Bob Manson <manson@charmed.cygnus.com>.
-
-1999-04-08 Tom Tromey <tromey@cygnus.com>
-
- * binutils.texi (c++filt): Updated for -j/--java, and hp/edg
- formats.
-
-1999-04-08 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c: Add ability to decode new constants found in April 25
- 1998 Draft of System V ABI spec.
-
-1999-04-06 Ian Lance Taylor <ian@zembu.com>
-
- * bucomm.h (LC_MESSAGES): Never define.
- * addr2line.c (main): Don't pass LC_MESSAGES to setlocale if the
- system does not define it.
- * ar.c (main): Likewise.
- * coffdump.c (main): Likewise.
- * dlltool.c (main): Likewise.
- * nlmconv.c (main): Likewise.
- * nm.c (main): Likewise.
- * objcopy.c (main): Likewise.
- * objdump.c (main): Likewise.
- * size.c (main): Likewise.
- * srconv.c (main): Likewise.
- * strings.c (main): Likewise.
- * sysdump.c (main): Likewise.
- * windres.c (main): Likewise.
- * readelf.c (main): Call locale setting functions.
-
-1999-04-05 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (decode_location_expression): Fix DW_OP_const8{s|u}
- decodes.
-
-1999-04-04 Ian Lance Taylor <ian@zembu.com>
-
- * rename.c: New file, copied out of objcopy.c with a few changes.
- * bucomm.h (set_times, smart_rename): Declare.
- * ar.c: Don't include <utime.h>.
- (extract_file): Call set_times rather than utime.
- (write_archive): Call smart_rename rather than unlink and rename.
- * objcopy.c: Don't include <utime.h>.
- (simple_copy, smart_rename, set_times): Move to rename.c.
- (strip_main): Update smart_rename call for new parameter.
- (copy_main): Likewise.
- * Makefile.am: Rebuild dependencies.
- (CFILES): Add rename.c.
- (objcopy_SOURCES, strip_new_SOURCES): Add rename.c.
- (ar_SOURCES, ranlib_SOURCES): Add rename.c.
- * Makefile.in: Rebuild.
-
- * Makefile.am: Rebuild dependencies.
- (EXTRA_PROGRAMS): Remove backslash which troubles current version
- of automake.
- * Makefile.in: Rebuild.
-
- * dllwrap.c (main): Expect correct type in format string.
- * resres.c: Include "bfd.h", "bucomm.h", "libiberty.h", and
- <time.h>. Don't include <stdio.h> and <errno.h>.
- (write_res_file): Remove unused locals e and i.
- (read_resource_entry): Remove unused locals rtype and n.
- (read_unistring): Remove unused local n.
-
-1999-04-03 Ian Lance Taylor <ian@zembu.com>
-
- * arparse.y: Declare yylex.
- * objdump.c (disassemble_bytes): Initialize bytes. Add comment
- for incorrect use of bytes.
- * readelf.c: Change many formats to avoid warnings.
-
-1999-04-01 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (reset_state_machine): New function. Resets the
- registers of the source line number state machine.
- (process_extended_line_op): Use state machine.
- (display_debug_lines): Use state machine. Handle multiple line
- number blocks within the same section.
-
-1999-03-29 Jason Merrill <jason@yorick.cygnus.com>
-
- * readelf.c (process_extended_line_op): end_sequence also resets
- the line number.
- (display_debug_lines): advance_line takes a signed operand.
- (read_and_display_attr): Print refs as <%x>, addresses as %#x,
- others as %d. Handle other location expression attributes.
- (display_debug_info): Handle nesting. Always print the offset.
-
-1999-03-23 Ian Lance Taylor <ian@zembu.com>
-
- * objcopy.c (filter_symbols): When checking whether to keep a
- symbol, check the BFD section symbol for a symbol with
- BSF_SECTION_SYM set.
-
-1999-03-10 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c (process_dynamic_segment): Print new Solaris dynamic
- section entries. Correct printing of DT_POSFLAG_1 and DT_FLAGS_1.
-
-1999-03-10 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (request_dump): New function.
- Removed arbitary limit on the number of sections that can be
- dumped.
-
-Wed Mar 10 15:10:14 1999 Stan Cox <scox@cygnus.com>
-
- * dlltool.c (make_one_lib_file): Use %05d to output the stub name so
- order in the import library is preserved.
-
-1999-02-19 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c: Fix compile time warings.
-
-1999-02-17 DJ Delorie <dj@cygnus.com>
-
- * resbin.c (res_to_bin_versioninfo): Instead of entering a value
- length of zero in a version info string, enter the appropriate
- length.
-
-Tue Feb 16 16:00:33 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Require autoconf 2.13. Change AM_PROG_INSTALL to
- AC_PROG_INSTALL. Add comments for AC_DEFINE calls.
- * acconfig.h: Remove.
- * aclocal.m4: Rebuild.
- * configure: Rebuild.
- * Makefile.in: Rebuild.
- * config.in: Rebuild.
-
-1999-02-02 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (read_and_display_attr): Add display of basic type
- encodings.
- (display_debug_aranges): New function: Display the contents of a
- .debug_aranges section.
- (display_debug_info): Dump tags found after compunit entry.
-
- * binutils.texi: Fixed bug in readelf documentation.
-
-Mon Feb 1 12:38:01 1999 Catherine Moore <clm@cygnus.com>
-
- * readelf.c (dump_relocations): Handle EM_ARM as REL.
-
-1999-01-29 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (process_symbol_table): Do not produce a histogram of
- bucket chains if none were found.
-
-1999-01-27 Nick Clifton <nickc@cygnus.com>
-
- * version.c: Add 1999 copyright.
-
- * binutils.texi (readelf): Document new command line options
- --debug-dump and --histogram.
-
- * readelf.c: Add ability to display contents of some or all of the
- Dwarf2 debug sections. {Work only partially completed}.
- (display_debug_section): New function.
- (display_debug_info): New function.
- (display_debug_not_supported): New function.
- (display_debug_line): New function.
- (display_debug_abbrev): New function.
- (process_abbrev_section): New function.
- (read_leb128): New function.
- (process_extended_line_op): New function.
- (get_TAG_name): New function.
- (get_AT_name): New function.
- (get_FORM_name): New function.
- (free_abbrevs): New function.
- (add_abbrev): New function.
- (add_abbrev_attr): New function.
- (read_and_display_attr): New function.
- (display_block): New function.
-
-Thu Jan 14 23:36:11 1999 Jeffrey A Law (law@cygnus.com)
-
- * coffdump.c (xcalloc): Remove, in libiberty now.
- * srconv.c (xcalloc): Likewise.
- * sysdump.c (xcalloc): Likewise.
-
-1999-01-14 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (process_section_headers): Omit trailing space at end
- of section header contents line.
-
-Wed Dec 16 17:20:05 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * aclocal.m4: Regenerate.
-
-Mon Dec 14 12:55:36 1998 Jim Wilson <wilson@cygnus.com>
-
- * dllwrap.c: Include bfd.h and bucomm.h. Move getopt.h include
- after libiberty.h include.
-
-Tue Dec 8 16:29:43 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.1: Fix typo (-d to -D). From Nokubi Hirotaka
- <hnokubi@yyy.or.jp>.
-
-Sun Dec 6 13:28:09 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (SFILE): Add size field.
- (objdump_sprintf): Merge both versions into one. Increase buffer
- size as needed to avoid overflow.
- (disassemble_bytes): Change buf from 1000 bytes to 50. Change
- initialization and use of sfile to match changes to
- objdump_sprintf.
-
- * strip.1: Fix typo (-V to -v). From Issei Hirayama
- <iss@mail.wbs.or.jp>.
-
-1998-12-03 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c (process_dynamic_segment): Improve output format for
- various DT_* values.
-
-1998-12-02 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c (process_mips_specific): Print .conflict section
- content.
-
- * readelf.c (process_mips_specific): Print l_flags in liblist in
- textual form.
-
-1998-11-30 Nick Clifton <nickc@cygnus.com>
-
- * ar.c (extract_file): Add some paranoia checks for negatively
- sized files.
-
-Tue Nov 24 09:39:24 1998 Nick Clifton <nickc@cygnus.com>
-
- * stabs.c (DIR_SEPARATOR): Define as '\\' if WIN32 is defined.
-
-Tue Nov 17 10:25:26 1998 Nick Clifton <nickc@cygnus.com>
-
- * Makefile.in: Regenerate.
-
-Mon Nov 16 19:17:23 1998 Dave Brolley <brolley@cygnus.com>
-
- * po/binutils.pot: Regenerate.
-
-Mon Nov 16 10:18:53 1998 Nick Clifton <nickc@cygnus.com>
-
- * Makefile.am: Regernated dependencies.
- * aclocal.m4: Regenerated.
- * configure: Regenerated.
-
-Sat Nov 14 14:50:56 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * debug.c (debug_name_type): Correct return type from false to
- DEBUG_TYPE_NULL.
-
-Sat Nov 14 14:48:21 1998 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * objdump.c (disassemble_data): Skip over relocs below start
- address.
-
-Tue Nov 10 15:31:52 1998 Nick Clifton <nickc@cygnus.com>
-
- * Makefile.am: Add dependency of readelf.c on elf/fr30.h
- * Makefile.in: Regenerate.
-
-Wed Nov 4 16:25:55 1998 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c: Add support for the FR30.
-
-Mon Nov 2 14:59:33 1998 Geoffrey Noer <noer@cygnus.com>
-
- * configure.in: detect cygwin* instead of cygwin32*
- * configure: regenerate
-
-Fri Oct 30 15:14:49 1998 Geoffrey Noer <noer@cygnus.com>
-
- * dllwrap.c: change all references to cygwin32_ to cygwin_,
- change Cygwin target def to CYGWIN.
-
-Wed Oct 28 10:31:19 1998 Nick Clifton <nickc@cygnus.com>
-
- * objdump.c (disassemble_data): Replace 'unsigned long' with
- 'bfd_vma'.
-
-Tue Oct 27 14:39:00 1998 Nick Clifton <nickc@cygnus.com>
-
- * objdump.c (disassemble_bytes): Applied this patch from Philip
- Blundell <pb@nexus.co.uk>: Make address variables unsigned to
- avoid problems when disassembling code at high-bit-set addresses.
-
-Mon Oct 26 14:07:59 1998 Mumit Khan <khan@xraylith.wisc.edu>
-
- * dllwrap.c (strhash): New function.
- (main): Use it to supply image base if not supplied by user.
- (program_version): Up to 0.2.4.
-
-Mon Oct 26 14:07:59 1998 Mumit Khan <khan@xraylith.wisc.edu>
-
- * dlltool.c (add_stdcall_alias): New global.
- (long_options): Add --add-stdcall-alias option.
- (main): Handle it.
- (scan_drectve_symbols): Add alias if --add-stdcall-alias is
- specified.
- (scan_filtered_symbols): Likewise.
- (gen_def_file): Output alias for stdcall syms if appropriate.
-
- * binutils.texi (dlltool): Document --add-stdcall-alias option.
-
- * dllwrap.c (long_options): Add --add-stdcall-alias option.
- (main): Handle it.
-
- * defparse.y (opt_name): Allow "." in name.
- * dlltool.c (def_name): Set dll_name from NAME entry in def file.
- (def_library): Set dll_name from LIBRARY entry in def file.
-
-Mon Oct 26 14:07:59 1998 Mumit Khan <khan@xraylith.wisc.edu>
-
- * dllwrap.c (long_options): --implib synonym for --output-lib.
- (main): Pass --export-all to dlltool only if specified.
- (program_version): Up to 0.2.3.
-
-Mon Oct 26 14:07:59 1998 Mumit Khan <khan@xraylith.wisc.edu>
-
- * dllwrap.c (mybasename): New function.
- (main): Run dlltool to create export definition file and import
- library file if necessary.
- Change exp_file_name so that it's based on the dll name.
-
-Sun Oct 25 10:37:45 1998 Mumit Khan <khan@xraylith.wisc.edu>
-
- * dlltool.c (scan_all_symbols): Fix patch error.
-
-Fri Oct 16 22:56:20 1998 Felix Lee <flee@cygnus.com>
-
- * nm.c (display_rel_file): fix "no symbols" messages.
- * objdump.c (slurp_symtab): ditto.
- * po/POTFILES.in, po/binutils.pot: rebuilt
-
-Mon Oct 12 14:28:03 1998 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (dump_relocations): Rename field from Value to Info to
- match name of field in ELF structures.
-
-Thu Oct 8 15:33:08 1998 Geoffrey Noer <noer@cygnus.com>
-
- * configure.in: call AC_EXEEXT instead of AM_EXEEXT and
- AM_CYGWIN32.
- * aclocal.m4: remove local AM_EXEEXT/AM_CYGWIN32 macros.
- * configure: regenerate
-
-Thu Oct 8 15:33:08 1998 Geoffrey Noer <noer@cygnus.com>
-
- From Mumit Khan <khan@xraylith.wisc.edu>:
- * dlltool.c (scan_all_symbols): Don't re-export symbols exported
- by other DLLs.
-
-Thu Oct 8 15:33:08 1998 Geoffrey Noer <noer@cygnus.com>
-
- * Makefile.am (BUILD_DLLWRAP): Add.
- (BUILD_DLLWRAP, DLLWRAP_PROG): Add.
- (bin_PROGRAMS): Add dllwrap.
- * Makefile.in: regenerate with automake
-
- From Mumit Khan <khan@xraylith.wisc.edu>:
- * dllwrap.c: New file from dllhelpers v0.2.1.
- (print_version): New function.
- (long_options): Add --version.
- (main): Handle.
- * dyn-string.h, dyn-string.c: New files from egcs-1.1/gcc.
- * configure.in (BUILD_DLLWRAP): Add.
- * configure: Regenerate.
-
-Tue Oct 6 18:20:10 1998 Geoffrey Noer <noer@cygnus.com>
-
- * Makefile.am (windres_SOURCES): Add resres.c.
- (windres_OBJECTS): Add resres.o.
- * Makefile.in: regenerate with automake
-
- From Anders Norlander <anorland@hem2.passagen.se>.
- * resres.c: New file. Implementation of read_res_file and
- write_res_file functions for windres.
- * rcparse.y: Handle CONTROL's with named classes.
- * resbin.c: Bug in res_to_bin_dialog and bin_to_res_dialog
- when dialog is extended: The version and signature fields should
- be reversed (despite what the docs say). Id is 32 bits long in
- extended dialogs.
- * resrc.c (write_rc_dialog): properly print controls with named
- classes.
- * windres.c (read_res_file, write_res_file): Remove stubs.
- * resres.c (write_res): Rename RT_ACCELERATORS to RT_ACCELERATOR.
-
-Sun Oct 4 20:34:42 1998 Ian Lance Taylor <ian@cygnus.com>
-
- From Nokubi Hirotaka <hnokubi@yyy.or.jp>:
- * objcopy.1: Fix typo in --remove-leading-char docs.
- * objdump.1: Fix formatting in --stabs docs.
-
-Sat Sep 19 23:33:56 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * rcparse.y (memflags_move): Correct recursion.
-
-1998-09-10 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c (process_symbol_table): Print in histogram how many
- symbols are covered by the current chain length.
-
-Sun Sep 6 16:15:47 1998 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (process_section_contents): Do not try to dump empty
- sections.
-
-Sat Sep 5 19:17:10 1998 Mumit Khan <khan@xraylith.wisc.edu>
-
- * dlltool.c (scan_all_symbols): Don't re-export symbols exported
- by other DLLs.
-
-1998-09-02 14:50 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c (process_dynamic_segment): Print DT_* value only if
- do_dynamic.
- (do_histogram): New variable.
- (options): New long option histogram. Set do_histogram if this
- option is used.
- (usage): Document --histogram.
- (parse_args): Handle 0 return value from getopt_long. Enable
- do_histogram for -a.
- (process_symbol_table): Read hash table also if only do_histogram.
- Add code to print hash table histogram.
-
-1998-08-25 16:45 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c (process_dynamic_segment): Read syminfo section if
- available.
- (process_syminfo): New function. Print syminfo information.
- (process_file): Call process_syminfo and free syminfo data at the end.
-
-Wed Aug 19 16:19:51 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * dlltool.c (usage): Add file parameter. Change all callers.
- (main): Don't treat '?' as a special case in getopt return.
-
- * binutils.texi (dlltool): Document new options. Add some uses of
- @var.
-
-Wed Aug 19 16:19:07 1998 Mumit Khan <khan@xraylith.wisc.edu>
-
- * dlltool.c (gen_def_file): Plug memory leak. Don't print
- demangled name if it is NULL.
-
- Support for exporting all symbols to an output export def file:
- * dlltool.c ({export_all_symbols, no_default_excludes,
- no_default_excludes, excludes}): New file static variables.
- (struct string_list): Type to hold list of symbols to exclude.
- (scan_drectve_symbols): Renamed from scan_open_obj_file.
- (scan_filtered_symbols): New static function.
- (add_excludes): New static function.
- (match_exclude): New static function.
- (set_default_excludes): New static function.
- (filter_symbols): New static function.
- (scan_all_symbols): New static function.
- (scan_open_obj_file): New static function.
- (usage): Document new options.
- (long_options): Add new options.
- (main): Handle new options.
-
-1998-07-31 21:24 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c (process_program_headers): Print p_offset value with
- six hex digits.
- (dynamic_segment_mips_val): Add support for DT_MIPS_FLAGS,
- DT_MIPS_IVERSION, and DT_MIPS_TIME_STAMP.
- (process_mips_specific): Also print seconds of time stamp.
-
-Fri Jul 31 10:04:23 1998 Catherine Moore <clm@cygnus.com>
-
- * readelf.c (dump_relocations): EM_ARM uses rela relocs.
-
-1998-07-30 16:25 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c (get_dynamic_type): Don't used gettext on the names.
- Add new DT_* values from Solaris. Don't print nuemric value in
- case of an unknown entry.
- (process_dynamic_segment): Handle new DT_* entries. Print numeric
- values in decimal, not hex.
-
-Fri Jul 24 16:28:57 1998 Jeff Holcomb <jeffh@cygnus.com>
-
- * readelf.c (get_dynamic_type): Remove empty default from switch
- statement.
-
-Fri Jul 24 16:28:12 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (install-exec-local): Don't remove the file before
- checking whether $(bindir) == $(tooldir)/bin. From Maciej
- W. Rozycki <macro@ds2.pg.gda.pl>.
- * Makefile.in: Rebuild.
-
-Fri Jul 24 09:38:59 1998 Nick Clifton <nickc@cygnus.com>
-
- * objcopy.c: Removed spurious inclusion of elf/internal.h and
- elf-bfd.h.
-
-1998-07-22 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c: Consistantly use elf_ prefix for *_reloc_type
- functions.
-
-Wed Jul 22 16:29:12 1998 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (dump_relocations): Add dumps of HPPA and ARC
- relocations.
-
- (process_relocs): Do not abort if no string table can be found.
-
-1998-07-22 14:58 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c: Remove definition of functions to return relocation
- symbol strings. They now get implicitly defined when include the
- system specific ELF header.
-
-1998-07-22 13:51 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c: Before include system specific ELF header define
- START_RELOC_NUMBERS, RELOC_NUMBER, and END_RELOC_NUMBERS. For now
- used for ppc, mips, and mn10300.
-
-Wed Jul 22 10:26:32 1998 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (dump_relocations): Display number of unrecognised
- relocations.
-
-1998-07-21 13:13 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c: Use symbolic names of relocation entries for the various
- architectures. Correct more layout details.
- Print names of MIPS specific section types. Print Alpha, ARM, and
- MIPS relocation type names.
-
-1998-07-20 Vladimir N. Makarov <vmakarov@cygnus.com>
-
- * objcopy.c (filter_symbols): Add code for strip all symbols case.
- (copy_objects): Strip all case is now processed also through
- filter_symbols. No marking symbols used in relocations when strip
- all symbols case.
- (copy_section): When strip all symbols case, remove relocations
- which are not in keep strip specific list.
- (strip_main): Remove guard `strip_specific_list == NULL' for
- setting up strip all symbols by default.
-
-Mon Jul 20 12:51:16 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * addr2line.c (find_address_in_section): Only consider a section
- if the pc value is completely contained within it.
- (translate_addresses): Don't crash if functionname or filename are
- null.
-
-1998-07-20 07:45 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c (process_symbol_table): Fix little alignment problem
- in printed table header.
-
-1998-07-20 07:14 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c: Correct reading of .dynamic section.
- (dynamic_section): Now a global variable.
- (process_mips_fpe_exception, process_mips_specific,
- process_arch_specific): New functions.
- (get_file_header): Call process_arch_specific.
-
-1998-07-19 15:15 Ulrich Drepper <drepper@cygnus.com>
-
- * readelf.c: Fix several versioning related bugs. Produce nicer
- output.
- Add support for processor specific information on MIPS.
-
-Fri Jul 10 15:57:58 1998 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c: Switch prototypes from unsigned short to unsigned
- int.
-
-Fri Jul 10 16:17:50 1998 Ian Lance Taylor <ian@cygnus.com>
-
- From Christian Holland <CHolland@de.lucent.com>:
- * ieee.c (parse_ieee): Initialize info.global_vars and
- info.global_types.
- (parse_ieee_atn): Ignore register lifetime information reportedly
- emitted by MRI compiler.
-
-Thu Jul 9 13:08:01 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (MAINTAINERCLEANFILES): Define.
- * Makefile.in: Rebuild.
-
-Tue Jul 7 21:48:54 1998 Jeffrey A Law (law@cygnus.com)
-
- * readelf.c (byte_get): Use PARAMS in prototype.
- (error): Make it work with non-ANSI compilers.
- (warn): Likewise.
- (get_ver_flags): Don't use an ANSI prototype in the definition.
-
-Tue Jul 7 13:26:13 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c (filter_bytes): Set size correctly if the size of the
- section is not an even multiple of the interleave. Based on patch
- from Brion Stone <Brion.Stone@attws.com>.
-
-Thu Jul 2 14:01:34 1998 Klaus Kaempf <kkaempf@rmi.de>
-
- * configure.com: Add vax/vms support.
- * makefile.vms-in: Renamed from makefile.vms. Add substitutions
- now done by configure.com.
-
-Wed Jul 1 20:43:52 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * stabs.c (parse_stab_range_type): Handle 4 and 8 byte signed
- integers with real upper bounds. Handle a lower bound one larger
- than the upper bound as a signed integer. Handle 8 byte signed
- integers.
- (stab_demangle_template): Optionally return the demangled name of
- the template.
- (stab_demangle_qualified): Treat a template name as a tagged
- type.
- (stab_demangle_fund_type): Likewise.
-
-Wed Jul 1 16:29:50 1998 Nick Clifton <nickc@cygnus.com>
-
- * objcopy.c: Minor formatting improvements.
- * readelf.c: Minor output formatting improvement.
-
-Wed Jul 1 14:23:48 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * rclex.l: Add casts and change types to avoid warnings.
- * rcparse.y: Likewise.
- * resbin.c: Likewise.
- * rescoff.c: Likewise.
- * resrc.c: Likewise.
-
- * Makefile.am: Rebuild dependencies.
- (HFILES): Remove readelf.h.
- * Makefile.in: Rebuild.
-
- Based on patches from Andrew Kozin
- <Andrew.Kozin@p14.f960.n5020.z2.fidonet.org>:
- * winduni.h: New file, from windres.h.
- * winduni.c: New file, from windres.c.
- * windres.c: Move Unicode functions into winduni.c.
- * windres.h: Move Unicode declarations into winduni.h. Include
- winduni.h.
- (RT_ACCELERATOR): Rename from RT_ACCELERATORS to match Windows
- macro. Change all uses.
- (RT_PLUGPLAY, RT_VXD): Correct values.
- * Makefile.am (HFILES): Add windres.h.
- (CFILES): Add winduni.c.
- (windres_SOURCES): Add winduni.c.
-
-Mon Jun 29 17:01:21 1998 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c: Use BFD Internal and External Elf structures.
- * readelf.h: Removed - no longer needed.
- * Makefile.in: Remove readelf.c's dependency upon readelf.h.
-
-1998-06-26 Vladimir N. Makarov <vmakarov@cygnus.com>
-
- * objcopy.c (strip_main): keep_specific_list == NULL as additional
- condition to set up strip all symbols by default.
- (copy_archive): don't change archive when error in object files of
- the archive.
-
-Wed Jun 24 17:53:47 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * stabs.c (parse_number): Sign extend negative values correctly if
- bfd_vma is larger than unsigned long.
-
-Tue Jun 23 14:55:05 1998 Mike Stump <mrs@wrs.com>
-
- * Makefile.am (install-exec-local): Don't let EXEEXT interfere
- with the program transform name.
- * Makefile.in: Rebuild.
-
-Tue Jun 23 11:08:53 1998 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c: Rewrite to use fopen/fread ratehr than mmap.
-
- Add --section-headers command line switch, which is an alias for
- --sections.
-
- Incorporate improvemnts made by Andreas Schwab
- <schwab@issan.informatik.uni-dortmund.de> including output
- formatting and version info display.
-
- * binutils.texi: Document --section-headers switch to readelf.
-
-Mon Jun 22 18:28:19 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * readelf.c: Include bfd.h and bucomm.h before system header
- files.
- (parse_args): Change type of c from char to int.
-
-Sun Jun 14 14:26:28 1998 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c (usage): Write to stdout, not stderr.
-
-Fri Jun 12 13:33:51 1998 Tom Tromey <tromey@cygnus.com>
-
- * po/Make-in (all-yes): Depend on .pot file if maintainer mode
- enabled.
- ($(PACKAGE).pot): Unconditionally depend on POTFILES.
-
-Fri Jun 12 16:06:15 1998 Michael Meissner <meissner@cygnus.com>
-
- * readelf.c (get_ppc_rel_type): New PowerPC support.
- (dump_relocations): PowerPC uses RELA relocations.
- (get_machine_name): Spell PowerPC correctly.
- (get_file_type): Change unsigned short parameter to unsigned.
- (get_machine_name): Ditto.
- (get_machine_data): Return whether big endian or little endian.
- (get_machine_flags): Interpret PowerPC, M32R, and MIPS flags.
- (process_elf_header): Print endian-ess. Convert all numeric
- formats to long or unsigned long. Print out machine specific flag
- bits.
- (process_section_headers): Increase name by 3 columns and decrease
- type by the same so that .gcc_except_table fits in the space.
-
- * readelf.h: Include elf/ppc.h, elf/mips.h, and elf/m32r.h to get
- machine specific flag bits.
-
-Thu Jun 11 17:54:26 1998 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c: Remove extraneous #includes. Fix warnings produced
- by -Wall when compiling under Linux.
-
- * Makefile.am (readelf_LDADD): Add $(LIBIBERTY).
-
-Thu Jun 11 18:30:20 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * stabs.c (struct stab_handle): Add self_crossref field.
- (parse_stab_string): If a tag is a cross reference to itself,
- don't define it in the tags list.
- (parse_stab_type): Set info->self_crossref.
-
- * debug.c (struct debug_type_real_list): Define.
- (debug_get_real_type): Add list parameter. Change all callers.
- Check for circularity to avoid crashing when it occurs.
-
-Thu Jun 11 14:48:32 1998 Nick Clifton <nickc@cygnus.com>
-
- * readelf.c: New file: Display contents of ELF format file.
- * readelf.h: New file: Header file for readelf.c
- * Makefile.am: Add rules to build readelf.
- * Makefile.in: Rebuilt.
- * binutils.texi: Document readelf.
- * NEWS: Mention inclusion of readelf into binutils.
- * po/POTFILES.in; Rebuilt.
-
-Fri Jun 5 18:43:40 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c (setup_section): Adjust the section size if copy_byte
- is >= 0.
- (copy_section): Do not call bfd_set_section_size.
-
-Thu Jun 4 09:12:27 1998 Nick Clifton <nickc@cygnus.com>
-
- * objcopy.c (copy_usage): Add missing \n\ from help description.
-
-Wed Jun 3 19:31:33 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (YACC): Correct bison -L option.
- * Makefile.in: Rebuild.
-
- * binutils.texi, objdump.1: Document -p/--private-headers.
-
-Wed Jun 3 12:09:40 1998 Nick Clifton <nickc@cygnus.com>
-
- * objcopy.c: Add new command line options: --change-section-lma
- and --change-section-vma. Rename old command line option
- --adjust-section-vma to --change-section-address. Rename
- --adjust-vma to --change-addresses and --adjust-start to
- --change-start. Provide aliases to support the old versions of
- these command line options.
-
- Change the names of macros and enum elements to upper case to
- match the GNU coding standard.
-
- Replace calls to fprintf (stderr,...) with calls to fatal () or
- non_fatal () as appropriate.
-
- * objcopy.1: Document command line option changes.
- * binutils.texi: Document command line option changes.
-
- * bucomm.h: New exported funtion from bucomm.c: non_fatal().
- * bucomm.c (non_fatal): New exported function. Just like fatal()
- except that it returns rather than calling xexit().
-
- (bfd_check_format_matches): Call fatal() rather than bfd_fatal().
-
- (check_matching_formats): Fix C formating.
-
- (parse_vma): Call fatal().
-
-Mon Jun 1 18:26:40 1998 Ian Lance Taylor <ian@cygnus.com>
-
- From Yuli Barcohen <yuli.barcohen@telrad.co.il>:
- * debug.c (debug_type_samep): Avoid endless loops comparing
- function and method parameter types.
-
-Fri May 22 14:02:42 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * dlltool.c (dump_iat): Comment out; not used.
- (display): Rename from tell. Change all callers.
-
-Thu May 14 14:00:56 1998 Nick Clifton <nickc@cygnus.com>
-
- * dlltool.c: Add support for Thumb DLLs. Add support for
- interworking between ARM and Thumb programs and DLLs. Tidy the
- code.
-
- * binutils.texi: Document dlltool.
-
- * configure: Build dlltool for thumb-pe targets.
-
- * version.c (print_version): Include 1998 in copyright strings.
-
- * stabs.c (parse_stab): Support Win32 style directory separators.
-
-Sun May 10 22:34:44 1998 Jeffrey A Law (law@cygnus.com)
-
- * po/Make-in (install-info): New target.
-
-Fri May 8 10:33:13 1998 Nick Clifton <nickc@cygnus.com>
-
- * ar.c (usage): Extend information provided about command line
- options.
-
-Wed May 6 15:28:51 1998 Klaus Kaempf <kkaempf@progis.de>
-
- * makefile.vms: Run dec c with /nodebug. Pass CC value when
- calling make.
-
-Tue May 5 15:19:00 1998 Nick Clifton <nickc@cygnus.com>
-
- * configure: Build dlltool for thumb-pe target.
- * configure.in: Build dlltool for thumb-pe target.
-
-Sun May 3 22:04:49 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (EXTRA_PROGRAMS): Change $(SRCONV_PROG) to sysconf
- sysdump coffdump to avoid extra $(EXEEXT).
- * Makefile.in: Rebuild.
-
-Wed Apr 29 22:22:55 1998 Geoffrey Noer <noer@cygnus.com>
-
- * configure.in: Stop appending EXEEXT to the end of
- SRCONV_PROG (wrong because that variable may contain multiple
- programs)
- * Makefile.am: instead, add EXEEXTs to each SRCONV_PROG
- program
- * Makefile.in: regenerate
- * configure: regenerate
-
-Tue Apr 28 19:14:34 1998 Tom Tromey <tromey@cygnus.com>
-
- * addr2line.c (main): Conditionally call setlocale.
- * windres.c (main): Likewise.
- * sysdump.c (main): Likewise.
- * strings.c (main): Likewise.
- * srconv.c (main): Likewise.
- * size.c (main): Likewise.
- * objdump.c (main): Likewise.
- * objcopy.c (main): Likewise.
- * nm.c (main): Likewise.
- * nlmconv.c (main): Likewise.
- * dlltool.c (main): Likewise.
- * coffdump.c (main): Likewise.
- * ar.c (main): Likewise.
- * bucomm.h: Include <locale.h> if HAVE_LOCALE_H.
- (LC_MESSAGES): Now can be defined even when ENABLE_NLS.
-
-Tue Apr 28 10:33:07 1998 Bill Moyer <ttk@cygnus.com>
-
- Add support for IMPORTS:
- * defparse.y (impline): Add IMPORTS syntaxes.
- * dlltool.c (ifunctype, iheadtype): New typedefs.
- (import_list): New static variable.
- (append_import): New static function.
- (def_import): Add an entry to import_list.
- (generate_idata_ofile): New static function.
- (gen_exp_file): Call generate_idata_ofile.
- * dlltool.h (def_import): Update declaration.
-
-Mon Apr 27 16:39:22 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Change version number to 2.9.4
- * configure: Rebuild.
-
-Wed Apr 22 16:00:35 1998 Tom Tromey <tromey@cygnus.com>
-
- * po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).
-
-Wed Apr 22 00:33:56 1998 Tom Tromey <tromey@scribbles.cygnus.com>
-
- * Makefile.am (INCLUDES): Search intl dirs for headers; define
- LOCALEDIR.
- * addr2line.c (main): Call setlocale, bindtextdomain, textdomain.
- * ar.c (main): Likewise.
- * coffdump.c (main): Likewise.
- * dlltool.c (main): Likewise.
- * nlmconv.c (main): Likewise.
- * nm.c (main): Likewise.
- * objcopy.c (main): Likewise.
- * objdump.c (main): Likewise.
- * size.c (main): Likewise.
- * srconv.c (main): Likewise.
- * strings.c (main): Likewise.
- * sysdump.c (main): Likewise.
- * windres.c (main): Likewise.
-
-Tue Apr 21 22:13:08 1998 Tom Tromey <tromey@scribbles.cygnus.com>
-
- * Many files: Added gettext invocations around user-visible
- strings.
- * bucomm.h: Added gettext-related includes and defines.
- * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY,
- HAVE_LC_MESSAGES): Define.
- * configure.in: Call CY_GNU_GETTEXT. Create po/Makefile.in and
- po/Makefile. Use AM_PROG_LEX.
- * Makefile.am (SUBDIRS): New macro.
- (POTFILES): Likewise.
- (po/POTFILES.in): New target.
- (LDADD): Added INTLLIBS.
- (objdump_LDADD): Likewise.
- (c__filt_LDADD): Likewise.
- (ar_LDADD): Likewise.
- (ranlib_LDADD): Likewise.
- (dlltool_LDADD): Likewise.
- (windres_LDADD): Likewise.
- * po/Make-in, po/POTFILES.in, po/binutils.pot: New files.
-
-Tue Apr 21 16:07:18 1998 Stanislav Brabec <utx@k332.feld.cvut.cz>
-
- * objcopy.c (preserve_dates): New file static variable.
- (smart_rename): If preserve_dates, call set_times when copying.
- (strip_main): Remove preserve_dates local variable.
- (copy_main): Likewise.
-
-Tue Apr 7 15:41:15 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (DISTSTUFF): Add defparse.h, defparse.c, rclex.c,
- rcparse.h, and rcparse.c
- * Makefile.in: Rebuild.
-
-Mon Apr 6 16:24:35 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (PROGS): Move $(ADDR2LINE_PROG) to end, so that
- Makefile.in doesn't have an empty continuation line.
- (bin_PROGRAMS): Likewise.
- * Makefile.in: Rebuild.
-
-Fri Apr 3 14:48:42 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (DISTCLEANFILES): Add site.exp and site.bak.
- (MOSTLYCLEANFILES): Add binutils.log, binutils.sum, and abcdefgh*.
- (mostlyclean-local): New target.
- * Makefile.in: Rebuild.
-
-Wed Apr 1 15:54:16 1998 Ian Lance Taylor <ian@cygnus.com>
-
- From Zack Weinberg <zack@rabi.phys.columbia.edu> and H.J. Lu
- <hjl@gnu.org>:
- * ar.c (usage): Mention S modifier.
- (main): Add S modifier.
- * ar.1, binutils.texi: Document S modifier.
-
-Wed Apr 1 13:11:23 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * binutils.texi: Use @itemx for a secondary item in a table.
-
-Tue Mar 31 18:44:13 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * dep-in.sed: Add rule to remove @OBJDIR@.
- * Makefile.am (dep.sed): Substitute for @OBJDIR@.
- * Makefile.in: Rebuild.
-
-Mon Mar 30 12:47:18 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Set version to 2.9.1.
- * configure: Rebuild.
-
- * Branched binutils 2.9.
-
- * Makefile.am (DISTCLEANFILES): Remove defparse.h, arparse.h,
- rcparse.h, and nlmheader.h.
- * Makefile.in: Rebuild.
-
-Sat Mar 28 17:39:27 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (MOSTLYCLEANFILES): Define.
- * Makefile.in: Rebuild.
-
- Fix some gcc -Wall warnings:
- * nlmconv.c (main): Add casts to avoid warnings.
- (alpha_mangle_relocs): Likewise.
- * objdump.c (dump_section_stabs): Likewise.
- * size.c (print_sysv_format): Likewise.
- * srcconv.c (wr_ob): Likewise.
- * wrstabs.c (stab_modify_type): Likewise.
- (stab_variable): Likewise.
- * nlmconv.c (main): Initialize variables to avoid warnings.
- * nm.c (sort_symbols_by_size): Likewise.
- * objdump.c (disassemble_bytes): Likewise.
- * wrstabs.c (stab_end_class_type): Likewise.
- * coffgrok.c (do_sections_p2): Change j to unsigned int.
- (do_lines): Change l to unsigned int.
- * nlmheader.y (yylex): Change i to unsigned int.
- * nm.c (print_symbol): Change j to long.
- * size.c (lprint_number): Comment out.
- * srconv.c (wr_ob): Change i to bfd_size_type.
- * sysdump.c (unit_info_list): Comment out.
- (object_body_list, program_structure, debug_list): Likewise.
- * sysinfo.y (yyerror): Return value.
-
-Thu Mar 26 17:06:51 1998 Richard Henderson <rth@cygnus.com>
-
- * defparse.y (explist): Allow epsilon.
- Suggestion from Jonathan-Harris@psion.com.
-
-Thu Mar 26 16:59:09 1998 Richard Henderson <rth@cygnus.com>
-
- * coffgrok.c (do_sections_p1): Use the section's lma instead of vma
- for the benefit of prom loaders.
-
-Wed Mar 25 13:05:39 1998 Ian Lance Taylor <ian@cygnus.com>
-
- Based on patch from H.J. Lu <hjl@gnu.org>:
- * Makefile.am (DISTSTUFF): New variable.
- (diststuff): New target.
- (DISTCLEANFILES): New variable.
- * Makefile.in: Rebuild.
-
-Tue Mar 24 19:33:08 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * rclex.l: Accept { and } as synonyms for BEGIN and END.
-
-Fri Mar 20 19:18:08 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * aclocal.m4, configure: Rebuild with libtool 1.2.
-
-Tue Feb 24 13:07:50 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * objdump.c (disassemble_data): Delete "++place" after call to
- find_symbol_for_address. Set disasm_info.symbols to array of
- symbols at the current address.
-
-Wed Feb 18 23:39:46 1998 Richard Henderson <rth@cygnus.com>
-
- * Makefile.am (install-exec-local): Install properly when ln
- fails or tooldir == prefix.
-
-Tue Feb 17 18:40:55 1998 Richard Henderson <rth@cygnus.com>
-
- * objcopy.c (compare_section_lma): Rename from _vma.
- (copy_object): Gap fill based on LMA not VMA.
- * binutils.texi: Update and clarify.
- * objcopy.1: Likewise.
-
-Tue Feb 17 20:34:11 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * dlltool.c (gen_exp_file): Generate _imp__%s as well as __imp_%s,
- for Microsoft compatibility.
- (make_one_lib_file): Likewise.
-
- * dlltool.c (make_one_lib_file): Don't add 1 to hint.
-
-Fri Feb 13 16:37:44 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (AUTOMAKE_OPTIONS): Define.
- * configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.
-
-Thu Feb 12 14:13:46 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * deflex.l: Accept '?' in symbol names, for VC++ mangled names.
- From Mikey <jeffdb@netzone.com>.
-
- * addr2line.c (usage): Update bug-gnu-utils address.
- * ar.c (usage): Likewise.
- * nlmconv.c (show_usage): Likewise.
- * nm.c (usage): Likewise.
- * objcopy.c (copy_usage): Likewise.
- (strip_usage): Likewise.
- * objdump.c (usage): Likewise.
- * size.c (usage): Likewise.
- * strings.c (usage): Likewise.
- * windres.c (usage): Likewise.
- * binutils.texi (Bug Reporting): Likewise.
-
-Sat Feb 7 15:36:24 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure, aclocal.m4: Rebuild with new libtool.
-
-Thu Feb 5 12:21:13 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure, Makefile.in, aclocal.m4: Rebuild with new libtool.
-
-Fri Jan 30 19:16:28 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * Makefile.am (CC_FOR_TARGET,nlmcomv.o): Change program_transform_name
- to transform.
- * Makefile.in: Regenerate.
-
-Thu Jan 29 16:24:04 1998 Mumit Khan <khan@xraylith.wisc.edu>
-
- * dlltool.c: Define exit status macros for _WIN32 but not
- __CYGWIN32__.
- (gen_lib_file): Check for exit status of unlink.
- * resrc.c: Define popen and pclose if _WIN32 but not
- __CYGWIN32__.
-
-Wed Jan 28 17:45:46 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Remove vfork check.
- * nlmconv.c: Never include vfork.h.
- * aclocal.m4, configure, Makefile.in, config.in: Rebuild.
-
-Wed Jan 28 17:43:02 1998 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>
-
- * objcopy.c (copy_archive): Only pass one argument to mkdir if
- _WIN32 but not __CYGWIN32__.
- (smart_rename): Add code for _WIN32 (not __CYGWIN32__), to cope
- with different rename behaviour and lack of chown.
-
- * configure.in: Check for mingw32 when deciding whether to build
- dlltool.
- * dlltool.c: Never include vfork.h.
- (run): Use pexecute rather than vfork.
- (gen_lib_file): Check for errors from bfd_set_archive_head and
- bfd_close. Close all the BFDs in the archive before deleting the
- temporary files.
-
-Thu Jan 22 16:22:55 1998 Fred Fish <fnf@cygnus.com>
-
- * objdump.c (disassemble_bytes): Add flag INSN_HAS_RELOC to tell
- disassembly function there is a reloc on this line.
-
-Wed Jan 14 15:29:43 1998 Richard Henderson <rth@cygnus.com>
-
- * srconv.c (sh, h8300): Delete variables.
- (addrsize, toolname, rnames): New variables.
- (writeINT): Use addrsize.
- (wr_un): Use toolname.
- (wr_hd): Set up addrsize et al properly for h8300[hs].
- (walk_tree_symbol): Zero dsy. Use rnames.
- (wr_un, wr_hd, wr_ob, wr_du): Use proper bfd access macros.
- * sysdump.c (sh, h8300): Delete variables.
- (addrsize): New variable.
- (getINT): Use it.
- (getone): Initialize it.
- (getBITS): Range check on MAX.
-
-Mon Dec 29 16:58:05 1997 Ian Lance Taylor <ian@cygnus.com>
-
- From Matthew Bellantoni <matthew@chrysalis.com>:
- * ar.c (get_pos_bfd): Add default_posname parameter. Change all
- callers.
- (replace_members): Default to replacing in the same position.
-
-Mon Dec 22 11:27:22 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * rclex.l: Don't permit a comma in a STRING.
- * rcparse.y (acc_entry): Warn if an inappropriate modifier is used
- with a non VIRTKEY.
- (acc_event): For a control character, set VIRTKEY, and force the
- character to uppercase.
- (acc_options): Don't require a comma separator.
-
-Tue Dec 9 13:25:42 1997 Michael Meissner <meissner@cygnus.com>
-
- * size.c (size_number): New function to provide size of field.
- ({l,r}print_number): For octal and hex fields, print field using
- '0' and '0x' suffixes. Do not include following tab.
- (sysv_internal_sizer): Size section name, section size, and vma
- address fields.
- (sysv_internal_printer): Use calculated sizes for the columns.
- (print_sysv_format): Size columns before printing.
- (print_berkeley_format): Print tabs between numbers now that
- {l,r}print_number doesn't. Print fields right justified.
-
-Mon Dec 8 11:22:04 1997 Nick Clifton <nickc@cygnus.com>
-
- * objdump.c (objdump_print_addr_with_sym): Remove call to
- disasm_symaddr() as this function no longer exists.
-
-Tue Dec 2 10:23:50 1997 Nick Clifton <nickc@cygnus.com>
-
- * objdump.c (objdump_print_addr_with_sym): Call disasm_symaddr()
- to allow backend to know which symbol has just been displayed.
-
-Tue Dec 2 13:06:46 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * windres.h (ESCAPE_*): Define standard escape sequences.
- * rclex.l (handle_quotes): Handle standard escape sequences. Warn
- about an unrecognized escape character.
- * windres.c (unicode_print): Print standard escape sequences.
- * rcparse.y (acc_event): Initialize $$.next.
- * resbin.c (bin_to_res_menuitems): Don't set MENUITEM_POPUP or
- MENUITEM_ENDMENU in the menu item flags.
- (bin_to_res_accelerators): Allocate a structure (the old code
- never worked).
- (res_to_bin_accelerator): Correct the test for setting ACC_LAST.
- (res_to_bin_dialog): Save the extended style rather than saving
- the style twice. Remove useless shadowing length variable. Set
- the length of control data correctly.
- * resrc.c (write_rc_dialog): Don't print the class or menu if the
- string length is zero.
-
-Mon Nov 24 18:52:43 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * stabs.c (parse_stab_argtypes): Don't try to parse the name of a
- destructor as mangled argument types.
-
-Mon Nov 10 17:51:41 1997 Gavin Koch <gavin@cygnus.com>
-
- * addr2line.c (translate_addresses): Use bfd_scan_vma rather
- than strtol to scan addresses.
-
-Sun Nov 9 11:01:31 1997 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.am (bin_PROGRAMS): Don't use line continuations here.
-
-Tue Nov 4 11:56:14 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c (copy_section): Don't crash if there is no particular
- information for a section.
-
-Mon Nov 3 12:36:19 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c (parse_flags): Make flag check case insensitive.
- Check for `contents' flag. Give an error for unrecognized flags.
- (copy_section): If the contents flag was set for a section that
- had no contents, zero out the new contents.
- * binutils.texi (objcopy): Document contents section flag.
-
-Sun Nov 2 14:49:56 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c: Move new struct and variable definitions to top of
- file. Remove obsolete add_strip_symbol and is_strip_symbol
- declarations. Add prototype declarations for add_specific_symbol
- and is_specified_symbol.
-
-Mon Oct 20 15:31:43 1997 Klaus K"ampf <kkaempf@progis.de>
-
- * configure.com (HAVE_SBRK): Undefine.
-
-Tue Oct 14 16:14:35 1997 Nick Clifton <nickc@cygnus.com>
-
- * objdump.c (objdump_symbol_at_address): New function. Returns
- true if a symbol can be found at the address passed in.
- (disassemble_data): Set the symbol_at_address_func field to point
- to objdump_symbol_at_address.
-
-Fri Oct 10 14:13:09 1997 Richard Henderson <rth@cygnus.com>
-
- * objcopy.c, objcopy.1, binutils.texi: "localize" is a better name
- than "privatize". Update all references.
-
-Thu Oct 9 15:57:29 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * binutils.texi (strip): Remove duplicate --target. From Marty
- Leisner <leisner@sdsp.mc.xerox.com>.
-
- * nm.c (lineno_cache_bfd): New file static variable.
- (lineno_cache_rel_bfd): New file static variable.
- (display_archive): Clear lineno_cache_bfd and lineno_cache_rel_bfd
- when closing a BFD.
- (display_file): Likewise.
- (print_symbol): Use lineno_cache_bfd and lineno_cache_rel_bfd
- instead of cache_bfd and cache_rel_bfd. Make seccount static, and
- only set it when setting relocs.
-
-Wed Oct 8 21:19:11 1997 Richard Henderson <rth@cygnus.com>
-
- * objcopy.c (keep_specific_list, privatize_specific_list,
- weaken_specific_list): New variables.
- (keep_symbols): Removed.
- (add_specific_symbol): New function from the carcas of
- add_strip_symbol. Takes a list as an argument.
- (is_specified_symbol): Likewise from is_strip_symbol.
- (filter_symbols): Honor the new privatize and weaken lists.
- Optimize bfd_asymbol_name handling.
- (copy_object, copy_options, copy_usage): Add privatize-symbol &
- weaken-symbol options.
-
- * objcopy.1, binutils.texi: Update docs.
-
-Sun Oct 5 09:05:44 1997 Frank Ch. Eigler <fche@cygnus.com>
-
- * objdump.c (disassemble_data): Make "--prefix-addresses"
- disassembly adjust to mixed-length instructions.
- (objdump_print_addr_with_sym): Add "0x" prefix for hexadecimal
- symbol-offsets in disassembly.
-
-Fri Oct 3 12:04:25 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c (set_times): New static function, replacing
- make_same_dates.
- (strip_main): If preserve_dates, stat the input file before
- copying it, and call set_times afterward.
- (copy_main): Likewise.
-
- * wrstabs.c (write_stabs_in_sections_debugging_info): Cast p to
- char * when calling strcpy and strlen.
-
-Wed Sep 24 11:34:05 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * binutils.texi (ar cmdline): Document that q now works like r.
- From Marty Leisner <leisner@sdsp.mc.xerox.com>.
-
- * binutils.texi (size): The object file argument is optional.
- From Marty Leisner <leisner@sdsp.mc.xerox.com>.
-
- * aclocal.m4: Rebuild with new libtool.
- * configure: Rebuild.
-
-Tue Aug 26 17:48:34 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (EXEEXT_FOR_BUILD): New variable. Use it in all
- references to the sysinfo program.
- * configure.in: Rebuild with new bfd/acinclude.m4.
- * Makefile.in: Rebuild.
-
-Fri Aug 8 15:32:49 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * windres.c: Include <time.h>.
- (define_resource): Set a timestamp for the resource.
-
-Wed Aug 6 13:37:58 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Define TARGET in header file.
- * acconfig.h (TARGET): Add #undef.
- * Makefile.am (version.o, bucomm.o): Remove special targets.
- * bucomm.c (target): Remove.
- * nm.c (program_name): Don't declare.
- (target): Make static.
- * size.c (target): Make static.
- * configure, config.in, Makefile.in: Rebuild.
-
-Tue Aug 5 00:01:41 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (check-DEJAGNU): Export r.
- (.dep1): Use $(INCLUDES) rather than $(ALL_CFLAGS).
- * Makefile.in: Rebuild.
-
- * nlmheader.y: Use VERSIONK rather than VERSION.
-
- * Makefile.am (STRIP_PROG): Change from strip.new to strip-new.
- (NM_PROG): Change from nm.new to nm-new.
- (TOOL_PROGS, install-exec-local): Adjust accordingly.
- * Makefile.in: Rebuild.
-
-Mon Aug 4 11:47:31 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Remove AC_ARG_PROGRAM; it's invoked by
- AM_INIT_AUTOMAKE.
- * configure: Rebuild.
-
- * Makefile.am (install-exec-local): Create $(tooldir)/bin before
- trying to install anything into it.
- * Makefile.in: Rebuild.
-
- * Makefile.am (TOOL_PROGS): Use an explicit $(EXEEXT).
- (install-exec-local): When handling $(noinst_PROGRAMS), only use
- $(EXEEXT) on the installed file. When handling $(TOOL_PROGS),
- handle $(EXEEXT) correctly.
- * configure.in: Add an explicit $(EXEEXT) when substituting for
- the name of a program to build.
- * Makefile.in, configure: Rebuild.
-
- * aclocal.m4, configure, Makefile.in: Rebuild with new automake
- patches.
-
- * deflex.l, defparse.y: Use VERSIONK rather than VERSION.
- * rclex.l, rcparse.y: Likewise.
- * Makefile.am (windres_SOURCES): Add $(BULIBS).
- * Makefile.in: Rebuild.
-
-Fri Aug 1 13:08:39 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * acinclude.m4: Include bfd/acinclude.m4, not bfd/acmacros.m4.
- * aclocal.m4, configure: Rebuild with new libtool.
-
-Thu Jul 31 11:51:35 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am: New file, based on old Makefile.in.
- * acinclude.m4: New file, from old aclocal.m4.
- * configure.in: Call AM_INIT_AUTOMAKE and AM_PROG_LIBTOOL. Remove
- shared library handling; now handled by libtool. Replace
- AC_CONFIG_HEADER with AM_CONFIG_HEADER. Call AC_PROG_YACC,
- AC_PROG_LEX, AC_DECL_YYTEST, AM_MAINTAINER_MODE, AM_CYGWIN32, and
- AM_EXEEXT. Replace AC_PROG_INSTALL with AM_PROG_INSTALL. Remove
- stamp-h handling in AC_OUTPUT.
- * acconfig.h: Mention PACKAGE and VERSION.
- * stamp-h.in: New file.
- * Makefile.in: Now built with automake.
- * aclocal.m4: Now built with aclocal.
- * config.in, configure: Rebuild.
-
- From Ton van Overbeek <tvoverbe@wk.estec.esa.nl>:
- * rcparse.y (dialog): Default menu and class to be named.
- (styles): If FONT is seen, set DS_SETFONT in dialog style.
- * resbin.c (res_to_bin_dialog): Correct computation of font
- information length.
-
-Wed Jul 30 11:21:06 1997 Ian Lance Taylor <ian@cygnus.com>
-
- From Ton van Overbeek <tvoverbe@wk.estec.esa.nl>:
- * resbin.c (res_to_bin_menu): Correct computation of menu
- vs. menuex length.
- * resrc.c (define_stringtable): Add 1 to resource ID.
-
-Tue Jul 29 11:06:03 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * resbin.c (bin_to_res_string): Correct adjustment of data and
- length. From Ton van Overbeek <tvoverbe@wk.estec.esa.nl>.
-
-Tue Jul 22 18:01:23 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * nlmconv.c (link_inputs): Call libiberty pexecute function.
- (pexecute) [multiple versions]: Remove.
-
-Tue Jul 22 16:19:34 1997 Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>
-
- * bucomm.c (make_tempname): If we might be using a DOS filesystem,
- check for a backslash as well as a slash.
-
-Thu Jun 26 13:53:17 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * windres.c (main): Quit if we didn't get any resources.
- (usage): Fix --yydebug usage message.
- * rescoff.c (write_coff_file): Don't free the relocation array
- until after we've closed the BFD.
- (read_coff_rsrc): Quit rather than try to read standard input.
- (write_coff_file): Quit rather than try to write to standard
- output.
- * rcparse.y: Add a couple of missing semicolons (accepted by bison
- but not byacc).
- * binutils.texi: Document windres.
-
-Wed Jun 25 20:57:06 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * resbin.c: New file.
- * rclex.l, rcparse.y, rescoff.c, resrc.c, windres.c, windres.h:
- Numerous fixes and improvements.
- * Makefile.in: Rebuild dependencies.
- (CFILES): Add resbin.c.
- (WINDRES_OBJS): Add resbin.o.
-
-Sun Jun 22 17:29:41 1997 Ian Lance Taylor <ian@cygnus.com>
-
- First stab at Windows resource compiler:
- * windres.h: New file.
- * windres.c: New file.
- * resrc.c: New file.
- * rcparse.y: New file.
- * rclex.l: New file.
- * rescoff.c: New file.
- * configure.in: Define and substitute BUILD_WINDRES.
- * configure: Rebuild.
- * Makefile.in: Rebuild dependencies.
- (WINDRES_PROG): New variable.
- (PROGS): Add @BUILD_WINDRES@.
- (HFILES): Add dlltool.h and windres.h.
- (CFILES): Add windres.c and resrc.c.
- (GENERATED_CFILES): Add rcparse.c and rclex.c.
- (WINDRES_OBJS): New variable.
- $(WINDRES_PROG): New target.
- (rcparse.c, rcparse.h, rclex.c): New targets.
-
-Thu Jun 12 12:27:51 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * dlltool.c (export_type): Add data field.
- (def_exports): Add data parameter. Change all callers.
- (dump_def_info): Print data field.
- (gen_def_file): Likewise.
- (make_one_lib_file): Handle data field by not emitting simple
- label and not emitting anything in SEC_TEXT.
- (dtab): Print data field.
- (process_duplicates): Merge data field.
- * dlltool.h (def_exports): Update declaration.
- * defparse.y (expline): Accept opt_DATA. Pass it to def_exports.
- (opt_DATA): New non-terminal.
-
-Wed Jun 11 17:15:47 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * dlltool.h: New file.
- * deflex.l: Include dlltool.h and libiberty.h. Don't declare
- strdup. Use xstrdup rather than strdup.
- * defparse.y: Include bfd.h, bucomm.h, and dlltool.h.
- * dlltool.c: Include dlltool.h and time.h. Make a lot of
- variables and functions static. Make a lot of char * variables
- and parameters const. Add declarations for static functions. Do
- some reindenting. Hide more PowerPC stuff inside DLLTOOL_PPC.
-
-Wed Jun 11 12:05:52 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
-
- * ar.c (bfd_special_undocumented_glue): Add const.
-
-Mon May 12 22:09:35 1997 Bob Manson <manson@charmed.cygnus.com>
-
- * Makefile.in (check): Pass CC_FOR_TARGET and CFLAGS_FOR_TARGET
- to runtest.
-
-Mon May 12 13:14:22 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Don't clear OPCODES when --enable-commonbfdlib is
- used on HP/UX.
- * configure: Rebuild.
-
-Fri Apr 25 14:22:08 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
-
- * Makefile.in (maintainer-clean realclean): Change *.info*
- to binutils.info* to save sysroff.info.
-
-Tue Apr 15 13:42:22 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (INSTALL): Set to @INSTALL@.
- (INSTALL_XFORM, INSTALL_XFORM1): Remove.
- (install): Depend upon installdirs. Use $(program_transform_name)
- directly, rather than using $(INSTALL_XFORM) and
- $(INSTALL_XFORM1).
- (installdirs): New target.
- (install-info): Run mkinstalldirs.
-
-Mon Apr 14 11:52:39 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (INSTALL): Change install.sh to install-sh.
-
- From Thomas Graichen <graichen@rzpd.de>:
- * Makefile.in: Always use $(SHELL) when running move-if-change.
- * configure.in: Use ${CONFIG_SHELL} when running $ac_config_sub.
- * configure: Rebuild.
-
-Fri Apr 4 13:28:02 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Add AC_FUNC_ALLOCA.
- * configure, config.in: Rebuild.
- * bucomm.h: Add alloca handling, copied from gas/as.h.
- * dlltool.c: Add #pragma alloca for AIX to start of file.
- * nlmconv.c: Likewise.
-
- * Makefile.in (distclean): Remove site.exp and site.bak. Remove
- everything that clean removes.
-
-Thu Apr 3 13:18:39 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (VERSION): Set to 2.8.1.
-
- * Branched binutils 2.8.
-
-Tue Apr 1 16:21:44 1997 Klaus Kaempf <kkaempf@progis.de>
-
- * configure.com: New file.
- * config.h-vms: Remove file.
- * makefile.vms: Update for new configure scheme.
-
-Mon Mar 31 15:30:43 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
-
- * objcopy.c (make_same_dates): Use statbuf, not buf, if not
- HAVE_GOOD_UTIME_H.
-
-Fri Mar 28 17:57:53 1997 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * Makefile.in ($(OBJDUMP_PROG)): Don't link against BFDLIB twice.
- * configure.in: Add AC_ARG_ENABLE for commonbfdlib. If it is set,
- set OPCODES to empty.
- * configure: Rebuild.
-
-Thu Mar 27 16:03:02 1997 Ian Lance Taylor <ian@cygnus.com>
-
- Based on patch from Marty Leisner <leisner@sdsp.mc.xerox.com>:
- * objcopy.c: Include <utime.h> or <sys/time.h>.
- (strip_options): Add "preserve-dates".
- (copy_options): Likewise.
- (copy_usage): Mention -p and --preserve-dates.
- (strip_usage): Likewise.
- (make_same_dates): New static function.
- (strip_main): Handle -p.
- (copy_main): Likewise.
- * binutils.texi, strip.1, objcopy.1: Document new option.
-
- addr2line.c contributed by Ulrich Lauther
- <Ulrich.Lauther@zfe.siemens.de>:
- * addr2line.c: New file.
- * Makefile.in: Rebuild dependencies.
- (ADDR2LINE_PROG): New variable.
- (MANPAGES): Add addr2line.
- (PROGS): Add $(ADDR2LINE_PROG).
- (CFILES): Add addr2line.c.
- ($(ADDR2LINE_PROG)): New target.
- * binutils.texi: Document addr2line.
- * addr2line.1: New file.
-
- * version.c (print_version): Update copyright date.
-
-Mon Mar 24 10:52:45 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * objdump.c (disassemble_data): Don't exit if a file cannot be
- disassembled, instead just return.
-
-Thu Mar 20 21:16:51 1997 Jeffrey A Law (law@cygnus.com)
-
- * size.c (usage): Make definition match its prototype.
- (display_bfd, lprint_number, rprint_number): Likewise.
- (print_berkeley_format, sysv_internal_printer): Likewise.
- (print_sysv_format): Likewise.
- * nm.c (set_print_radix, set_output_format): Likewise.
- * objcopy.c (filter_bytes): Likewise.
-
-Tue Mar 18 16:39:55 1997 H.J. Lu <hjl@lucon.org>
-
- * Many files: Add function prototypes.
- * ar.c (mri_emul, get_pos_bfd): Make static.
- * arlex.l: Include "libiberty.h". Don't declare strdup. Use
- xstrdup rather than strdup.
- * arparse.y (yyerror): Make argument const. Correct typo.
- * arsup.c (strdup): Don't declare.
- (ar_save): Use xstrdup rather than strdup.
- * filemode.c: Include "bucomm.h".
- * nm.c (usage): Make static.
- (print_symname): Make format and name const.
- * objcopy.c (cat): Remove.
- (copy_archive): Make output_target const. Use concat, not cat.
- (copy_file, simple_copy, smart_rename): Make arguments const.
- * objdump.c (read_section_stabs): Likewise.
- (print_section_stabs): Likewise.
- (display_target_tables): Don't declare getenv.
- * strings.c (strings_object_file): Change file to const.
- (print_strings): Change filename to const.
- * Makefile.in: Rebuild dependencies.
-
-Tue Mar 18 11:37:24 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Add BFD_NEED_DECLARATION(getenv).
- * acconfig.h: Add NEED_DECLARATION_GETENV.
- * bucomm.h (getenv): Declare if NEED_DECLARATION_GETENV.
- * configure, config.in: Rebuild.
- * nlmconv.c (getenv): Don't declare.
-
- * Makefile.in: Rebuild dependencies.
-
-Sat Mar 15 15:35:56 1997 Ian Lance Taylor <ian@cygnus.com>
-
- Based on patches from Jamie Lokier <jamie@rebellion.co.uk>:
- * objdump.c: Include "demangle.h".
- (do_demangle): New static variable.
- (usage): Mention -C/--demangle.
- (long_options): Add "demangle".
- (objdump_print_symname): New static function.
- (objdump_print_addr_with_sym): Use objdump_print_symname.
- (disassemble_bytes): Likewise.
- (dump_reloc_set): Likewise.
- (dump_symbols): Demangle symbol name.
- (main): Handle -C.
- * binutils.texi, objdump.1: Document -C/--demangle.
-
- * objdump.c (usage): Mention --no-show-raw-insn.
- (long_options): Add "no-show-raw-insn".
- (disassemble_bytes): Handle --no-show-raw-insn.
- * binutils.texi, objdump.1: Document --no-show-raw-insn.
-
-Wed Mar 12 11:42:00 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * rddbg.c (free_saved_stabs): Set the strings to NULL after being
- freed.
-
-Fri Feb 28 17:18:45 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * bucomm.c (set_default_bfd_target): New function.
- * bucomm.h (set_default_bfd_target): Declare.
- * ar.c (main): Call set_default_bfd_target.
- * nlmconv.c (main): Likewise.
- * nm.c (main): Likewise.
- * objcopy.c (main): Likewise.
- * objdump.c (main): Likewise.
- * size.c (main): Likewise.
- * strings.c (main): Likewise.
- * Makefile.in (bucomm.o): New target, to define TARGET.
-
-Tue Feb 25 21:28:38 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (adjust_section_vma): New static variable.
- (usage): Mention --adjust-section-vma.
- (OPTION_ADJUST_VMA): Define.
- (long_options): Add "addjust-vma".
- (display_bfd): If adjust_section_vma is not 0, add it to all the
- section addresses.
- (main): Handle OPTION_ADJUST_VMA.
- * binutils.texi, objdump.1: Document --adjust-vma.
-
-Fri Feb 14 18:46:47 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * nm.c (print_symbol): Cache the BFD as well as the symbols and
- relocs, and don't try to use the symbols or relocs with a
- different BFD.
-
-Thu Feb 13 21:34:43 1997 Klaus Kaempf (kkaempf@progis.de)
-
- * config.h-vms: sbrk() is provided on openVMS/Alpha.
- * makefile.vms: allow compiling with current gcc snapshot.
-
-Thu Feb 13 20:14:40 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * arsup.c, coffgrok.c, dlltool.c, nlmconv.c: Use xmalloc rather
- than malloc.
-
-Wed Feb 12 16:12:02 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (disassemble_data): Correct VMA argument to
- find_symbol_for_address. Improve handling of code with no symbol
- followed by code with a symbol.
-
-Wed Feb 12 12:16:47 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * objdump.c (disassemble_bytes): Make output of raw instructions
- work better for non-standard values of bytes_per_chunk and
- bytes_per_line.
-
-Thu Feb 6 14:14:59 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * objdump.c (disassemble_bytes): Added code to allow some control
- over the way raw instructions are displayed.
-
-Thu Feb 6 12:36:03 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * stabs.c (struct bincl_file): Add next_stack field.
- (push_bincl): Put the new file on both bincl_list and
- bincl_stack. Clear the file_types field.
- (pop_bincl): Use the next_stack field when popping the stack.
- Don't put the file on bincl_list.
- (find_excl): Include the file name when warning about an unfound
- N_EXCL.
-
- * debug.c (debug_type_samep): Don't crash if we are passed NULL.
-
-Thu Feb 6 11:54:24 1997 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * objcopy.1: Add missing space after .B.
-
-Fri Jan 31 10:33:07 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * objdump.c (disassemble_data): Initialize `aux.require_sec'.
-
-Wed Jan 29 13:21:21 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (objdump_print_value): Add skip_zeroes parameter.
- Change all callers.
- (objdump_print_addr_with_sym): Likewise. Call objdump_print_value
- to print address.
- (objdump_print_addr): New static function.
- (objdump_print_address): Just call objdump_print_addr.
- (disassemble_bytes): Print real address, not function offset.
- Skip a certain number of leading zeroes.
-
- * objdump.c (disassemble_zeroes): New static variable.
- (usage): Mention --disassemble-zeroes.
- (long_options): Add "disassemble-zeroes".
- (disassemble_bytes): Check disassemble_zeroes.
-
-Tue Jan 28 16:47:26 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (disassemble_bytes): Don't skip zeroes if the
- disassembler has told us that we are in a branch delay slot.
-
-Mon Jan 20 14:24:04 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * size.c (berkeley_sum): Rewrite. Skip sections which are not
- SEC_ALLOC. Count SEC_READONLY sections as text.
-
-Tue Jan 14 15:14:14 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (maintainer-clean realclean): Remove *.info*, not
- just *.info. From H.J. Lu <hjl@lucon.org>.
-
-Tue Dec 31 15:42:54 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (ALL_CFLAGS): Add -D_GNU_SOURCE.
-
-Fri Dec 27 11:19:26 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Work around bug in AC_FUNC_VFORK in autoconf 2.12.
- * configure: Rebuild.
-
-Thu Dec 19 13:11:20 1996 Ian Lance Taylor <ian@cygnus.com>
-
- Based on patch from Andrew J Klossner <andrew@pogo.wv.tek.com>:
- * objcopy.c (OPTION_WEAKEN): Define.
- (copy_options): Add "weaken".
- (copy_usage): Mention --weaken.
- (weaken): New static variable.
- (filter_symbols): Handle weaken.
- (copy_object): Call filter_symbols if weaken.
- (copy_main): Handle OPTION_WEAKEN.
- * binutils.texi, objcopy.1: Document --weaken.
-
-Wed Dec 18 22:49:13 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-make.sed: Use NewFolderRecursive for installation.
-
-Sat Dec 7 10:17:25 1996 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in (install): Add "else true" clause to cater to
- broken "make" on some systems.
-
-Fri Dec 6 17:21:41 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c (parse_ieee_bb): Always initialize namcopy to avoid gcc
- warning about uninitialized variable.
- (ieee_read_cxx_class): Likewise, for pf.
- (ieee_enum_type): Likewise, for i.
-
-Tue Nov 26 17:01:25 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * wrstabs.c (stab_array_type): Add casts when printing
- bfd_signed_vma values.
-
- * configure: Rebuild with autoconf 2.12.
-
-Mon Nov 25 16:53:18 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (disassemble_data): Don't crash if there is no
- symbol.
-
-Fri Nov 22 17:29:14 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * ar.c (open_inarch): Don't call bfd_openr with a null name.
-
-Fri Nov 1 12:08:13 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * binutils.texi: Add section on reporting bugs.
-
-Thu Oct 31 18:20:53 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * stabs.c (struct stab_handle): Add bincl_list field.
- (parse_stab): Pass value to push_bincl. Call find_excl for
- N_EXCL.
- (struct bincl_file): Add hash, file and file_types fields.
- (push_bincl): Add hash parameter. Save it in the new hash field.
- Save the file number in the new file field.
- (pop_bincl): Put the bincl_file on bincl_list, rather than freeing
- it. Save the file types in the new file_types field.
- (find_excl): New static function.
-
- * ieee.c (ieee_lineno): Don't compare line number addresses to
- info->highaddr (undo part of October 28 patch).
-
-Tue Oct 29 16:40:22 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (objdump_print_value): Don't print the empty string
- for zero.
-
-Mon Oct 28 16:58:14 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * stabs.c (struct stab_handle): Add function_end field.
- (start_stab): Initialize function_end.
- (finish_stab): Pass info->function_end to debug_end_function.
- (parse_stab): If info->function_end is set, use it as the address
- which ends a function.
-
- * ieee.c (ieee_array_type): Remember the correct size.
-
- * ieee.c (ieee_finish_compilation_unit): Permit coalescing ranges
- that are up to 0x1000 bytes apart, not just 64.
- (ieee_add_bb11_blocks): Don't bother to emit a BB11 that is less
- than 0x100 bytes.
- (ieee_lineno): Only emit line numbers that are less than
- info->highaddr.
-
-Fri Oct 25 12:12:17 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c (struct ieee_defined_enum): Add defined field.
- (ieee_enum_type): If the enum tag has been seen before but not
- defined, reuse the same type index, and define it.
- (ieee_tag_type): If this enum has not been defined, add an
- undefined entry to the list of enums.
-
- * objdump.c (disassemble_bytes): Let the disassembler override the
- number of bytes printed on a line.
-
-Thu Oct 24 16:42:10 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (prefix_addresses): New static variable.
- (long_options): Add "prefix-addresses".
- (compare_symbols): Sort BSF_FUNCTION symbols before other
- symbols.
- (find_symbol_for_address): New static function, broken out of
- objdump_print_address.
- (objdump_print_addr_with_sym): New static function, broken out of
- objdump_print_address.
- (objdump_print_address): Call new functions.
- (disassemble_bytes): New static function, broken out of
- disassemble_data. Change disassembly format, unless
- prefix_addresses is set.
- (disassemble_data): Call disassemble_bytes. Unless
- prefix_addresses is set, disassemble in chunks headed by a
- symbol.
- * binutils.texi, objdump.1: Document --prefix-addresses.
-
- * rddbg.c (read_section_stabs_debugging_info): Preserve the
- backslash when concatenating multiple stabs strings.
-
-Thu Oct 10 11:36:31 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * dlltool.c (scan_open_obj_file): Fix loop exit test.
- Add missing parameter to def_exports.
-
-Tue Oct 8 12:06:17 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (LEX_OPTIONS): Set to empty string. -I -Cem is the
- default for flex, and is not recognized by lex.
-
-Thu Oct 3 17:41:23 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * binutils.texi (Target Selection): Document that you can now
- specify targets using configuration triplets.
-
- * ar.c (usage): Declare. Make sure all callers pass an argument.
-
-Thu Oct 3 15:39:42 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
-
- * Makefile.in (clean): Remove config.log.
-
-Wed Oct 2 15:49:16 1996 Klaus Kaempf <kkaempf@progis.de>
-
- * makefile.vms: Bump version date.
-
-Tue Oct 1 15:00:59 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * version.c (print_version): New function.
- * bucomm.h (print_version): Declare.
- * ar.c (program_version): Don't declare.
- (do_show_version): Remove.
- (usage): Add help parameter. Print bug report address.
- (main): Set is_ranlib at start. Check for --help and --version.
- Call print_version, not do_show_version.
- * nlmconv.c (program_version): Don't declare.
- (main): Call print_version.
- (show_usage): Print bug report address.
- * nm.c (program_version, print_version): Don't declare.
- (usage): Print bug report address.
- (main): Call print_version.
- * objcopy.c (program_version): Don't declare.
- (copy_usage): Print bug report address.
- (strip_usage): Likewise.
- (strip_main): Call print_version.
- (copy_main): Likewise.
- * objdump.c (program_version): Don't declare.
- (usage): Print bug report address.
- (main): Call print_version.
- * size.c (program_version): Don't declare.
- (usage): Print bug report address.
- (main): Call print_version.
- * strings.c (program_version): Don't declare.
- (main): Call print_version.
- (usage): Print bug report address.
- * Makefile.in: Update dependencies.
-
-Thu Sep 19 14:53:15 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c: Revert Monday's reflocalp patch, and apply this patch
- instead:
- (write_ieee_debugging_info): Write a dummy type at the end of the
- global type block.
-
-Mon Sep 16 15:30:54 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c (struct ieee_write_type): Add reflocalp field.
- (ieee_pointer_type): Set reflocalp after pushing type.
- (ieee_function_type): If reflocalp is set, make this type local.
- (ieee_range_type, ieee_array_type, ieee_set_type): Likewise.
- (ieee_const_type, ieee_volatile_type): Likewise.
- (ieee_struct_field, ieee_class_baseclass): Likewise.
-
- * ieee.c (struct ieee_info): Add global_types field.
- (parse_ieee_bb): When starting a BB1, initialize the types field
- to the global_types field.
- (parse_ieee_be): When ending a BB2, copy the types field to the
- global_types field.
-
-Fri Sep 13 17:32:21 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c (change_leading_char): New static variable.
- (OPTION_CHANGE_LEADING_CHAR): Define.
- (copy_options): Add "change-leading-char".
- (copy_usage): Mention --change-leading-char.
- (filter_symbols): Add obfd parameter. Change all callers.
- Implement change_leading_char.
- (copy_object): Call filter_symbols if change_leading_char.
- (copy_main): Handle OPTION_CHANGE_LEADING_CHAR.
- * binutils.texi, objcopy.1: Document --change-leading-char.
-
-Tue Sep 3 14:05:29 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c (ieee_enum_type): Don't check index into a NULL names
- array.
- * nm.c (sort_symbols_by_size): Always initialize next.
- * rdcoff.c (parse_coff_type): Warn about an incomprehensible
- type rather than crashing.
- * rddbg.c (read_symbol_stabs_debugging_info): Initialize f.
- * stabs.c (parse_stab_members): Set context in all cases.
-
-Thu Aug 29 16:56:52 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * configure.in (i[345]86-*-*): Recognize i686 for pentium pro.
- * configure: Regenerate.
-
-Thu Aug 29 11:29:20 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (L_tmpnam): Never define.
- (display_target_list): Use choose_temp_base instead of tmpnam.
- (display_info_table): Likewise.
-
-Tue Aug 27 18:15:01 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * stabs.c (parse_stab): An N_FUN symbol with an empty string
- indicates the end of a function.
-
-Thu Aug 22 17:08:00 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * wrstabs.c (struct string_hash_entry): Add next field.
- (struct stab_write_handle): Change strings to a pointer to
- string_hash_entry. Add last_strings field. Remove strings_alloc
- field.
- (string_hash_newfunc): Initialize next field.
- (stab_write_symbol): Copy string into hash table rather than into
- buffer. Keep a list of hash table entries.
- (write_stabs_in_sections_debugging_info): Initialize last_string.
- Copy strings from list of hash table entries in memory.
- (stab_modify_type): If the entry on the stack is a definition,
- make a new definition rather than failing an assert.
- (stab_array_type): The size is only zero if high is strictly less
- than low.
-
- * ieee.c (struct ieee_info): Add saw_filename field.
- (parse_ieee): Initialize saw_filename.
- (parse_ieee_bb): Set saw_filename for a BB1 or BB2. In a BB1,
- discard the current variables and types. In a BB10, if no
- filename has been seen, call debug_set_filename.
- (parse_ieee_ty): In case 'g', the type is optional.
-
- * prdbg.c (pr_fix_visibility): Don't abort on
- DEBUG_VISIBILITY_IGNORE.
-
- * debug.c (debug_name_type): Correct error message.
-
- * configure.in: Substitute HLDENV.
- * configure: Rebuild.
- * Makefile.in (HLDENV): New variable. Use it whenever linking a
- program.
-
-Thu Aug 15 19:30:41 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-make.sed: Add symbolic doublequotes around the version
- number.
-
-Thu Aug 8 12:27:52 1996 Klaus Kaempf <kkaempf@progis.de>
-
- * makefile.vms: Add better support for DEC C compilation.
- Add new macros as in Makefile.in.
-
-Wed Aug 7 14:27:33 1996 Philippe De Muyter <phdm@info.ucl.ac.be>
-
- * configure.in: Call BFD_NEED_DECLARATION on strstr and sbrk.
- * acconfig.h (NEED_DECLARATION_STRSTR): New macro.
- (NEED_DECLARATION_SBRK): New macro.
- * configure, config.in: Rebuild.
- * bucomm.h (strstr): Declare if NEED_DECLARATION_STRSTR.
- (sbrk): Declare if HAVE_SBRK and NEED_DECLARATION_SBRK.
-
- * prdbg.c (pr_end_struct_type): Avoid using a string constant in
- assert, for the benefit of broken assert macros.
-
-Fri Jul 26 14:06:50 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (disassemble_data): Set disasm_info.flavour from
- abfd.
-
-Tue Jul 23 13:59:54 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * dlltool.c (secdata): In non DLLTOOL_PPC case, change alignment
- of .text section to 2.
-
-Mon Jul 22 08:46:15 1996 Stu Grossman (grossman@lisa.cygnus.com)
-
- * objdump.c (dump_section_stabs): Fix test for stabs sections
- ending with numbers. This fixes a problem with .stab being
- confused with .stab.index.
-
-Wed Jul 10 13:32:28 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * stabs.c (stab_demangle_fund_type): Return a void * for a
- template, rather than simply aborting.
-
-Mon Jul 8 15:28:05 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ar.c (open_inarch): Add file parameter. Change all callers. If
- this is a newly created archive, set the target based on the
- file.
- * arsup.h (open_inarch): Update declaration.
-
-Thu Jul 4 12:00:55 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (VERSION): Set to cygnus-2.7.1.
-
- * Released binutils 2.7.
-
- * rdcoff.c (parse_coff): Get address to pass to debug_end_function
- from function size, not value of .ef symbol. From Ning
- Mosberger-Tang <ning@AZStarNet.com>.
-
-Sat Jun 29 21:18:09 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c (strip_main): Add -o option, and handle it.
- (strip_usage): Mention -o.
- * binutils.texi, strip.1: Mention -o.
-
-Mon Jun 24 17:19:02 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
-
- * Makefile.in (bindir, libdir, datadir, mandir, infodir, includedir,
- INSTALL_PROGRAM, INSTALL_DATA): Use autoconf set values.
- (docdir): Removed.
- * configure.in (AC_PREREQ): Autoconf 2.5 or higher.
-
-Mon Jun 24 11:59:13 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (endian): New static variable.
- (usage): Mention -EB/-EL/--endian.
- (long_options): Add "endian".
- (disassemble_data): If endianness was specified, replace
- abfd->xvec with a copy of itself with the given endianness.
- (main): Handle -EB/-EL/--endian.
- * binutils.texi, objdump.1: Mention -EB/-EL/--endian.
-
- * objdump.c: Make most variables and functions static.
-
- * configure.in: On alpha*-*-osf*, link against libbfd.a if not
- using shared libraries.
- * configure: Rebuild with autoconf 2.10.
-
-Sun Jun 23 14:47:36 1996 Kim Knuttila <krk@cygnus.com>
-
- * dlltool.c (secdata): Changed .rdata to .reldata so .reloc will work.
- (make_one_lib_file): Removed cruft. (#if 1)
-
-Wed Jun 19 14:46:38 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (stabs): Change from struct internal_nlist * to
- bfd_byte *.
- (print_section_stabs): Fetch stabs information directly, rather
- than assuming that struct internal_nlist is the right size.
-
- * binutils.texi: Document change to binary format: file position
- based on load address, not section VMA.
-
- * bucomm.h: Define SEEK_SET, SEEK_CUR, and SEEK_END if they are
- not already defined.
-
-Tue Jun 18 18:25:00 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (DISTSTUFF): Add deflex.c.
-
-Tue Jun 18 15:03:44 1996 Klaus Kaempf <kkaempf@progis.de>
-
- * config.h-vms, makefile.vms: New files.
-
-Mon Jun 17 09:47:31 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * dlltool.c (make_one_lib_file): Use BFD_RELOC_RVA rather than
- BFD_RELOC_32 in IDATA7.
-
-Wed Jun 12 11:52:06 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * nm.c (struct get_relocs_info): Define.
- (line_numbers): New static variable.
- (long_options): Add "line-numbers".
- (usage): Mention -l and --line-numbers.
- (main): Handle -l.
- (print_symbol): Print line numbers if requested.
- (get_relocs): New static function.
- * binutils.texi, nm.1: Document -l/--line-numbers.
-
-Tue Jun 11 20:12:15 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (dump_reloc_set): Add sec parameter. Change all
- callers. If with_line_numbers is set, display line numbers of
- relocation entries.
- * binutils.texi, objdump.1: Document -l with -r.
-
-Mon Jun 10 23:42:59 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ar.c (open_inarch): Report BFD error message if an archive can
- not be recognized. List matching formats if the file is
- ambiguously recognized.
- (ranlib_touch): Likewise.
-
-Thu Jun 6 13:56:14 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * README: Add notes on how to build if you don't have ar.
-
- * Makefile.in: Remove old incorrect setting of CC.
-
-Tue Jun 4 10:52:49 1996 Tom Tromey <tromey@csk3.cygnus.com>
-
- * Makefile.in (install): Don't check to see if tooldir exists.
- Make $(tooldir) and $(tooldir)/bin.
-
-Mon Jun 3 17:40:23 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * strings.c (main): Make main an int function, not void.
-
-Fri May 31 13:59:24 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * nm.c (filter_symbols): Check for BSF_WEAK as well as
- BSF_GLOBAL.
- * objcopy.c (filter_symbols): Likewise.
-
-Wed May 8 16:57:20 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c (copy_object): Make clear that it is only a warning
- when the output file can not represent the architecture.
-
-Fri May 3 11:30:17 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (disassemble_data): Don't refer to bytes past the end
- of data.
-
-Wed Apr 24 14:10:21 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * rddbg.c (read_symbol_stabs_debugging_info): Move call to
- free_saved_stabs outside the loop over the symbols.
-
-Tue Apr 23 12:56:11 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (compare_symbols): Sort symbols whose names start with
- `.' after other symbols. If no other decision can be made, sort
- symbols by name.
-
-Thu Apr 18 16:02:11 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * dep-in.sed: Substitute $(BFDDIR) for @BFDDIR@.
- * Makefile.in: Rebuild dependencies.
- (dep.sed): Substitute $(BFDDIR) for @BFDDIR@.
-
-Tue Apr 16 13:50:22 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * rdcoff.c: New file.
- * rddbg.c (read_debugging_info): Read COFF symbols if COFF flavour
- and no stabs were found.
- * budbg.h (parse_coff): Declare.
- * Makefile.in: Rebuild dependencies.
- (CFILES): Add rdcoff.c.
- (DEBUG_OBJS): Add rdcoff.o.
-
-Mon Apr 15 15:55:01 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * nlmconv.c (choose_temp_base{,_try}): Delete, in libiberty now.
- (link_inputs): Update call to choose_temp_base.
-
-Mon Apr 8 14:40:05 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Permit --enable-shared to specify a list of
- directories.
- * configure: Rebuild.
-
-Fri Mar 29 16:11:33 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (dump_section_header): Print the SEC_LINK_ONCE flag
- and the SEC_LINK_DUPLICATES field.
-
-Fri Mar 29 11:35:55 1996 J.T. Conklin (jtc@lisa.cygnus.com)
-
- * nlmconv.1: Changed to be recognized by catman -w on Solaris.
-
-Thu Mar 28 14:17:02 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * wrstabs.c (stab_enum_type): Set buf before using it.
-
-Fri Mar 22 15:49:08 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * stabs.c (struct stab_handle): Add field abfd.
- (start_stab): Add abfd parameter.
- (parse_stab_string): Skip the symbol leading char when searching
- for the value of a global symbol.
- * budbg.h (start_stab): Update declaration.
- * rddbg.c (read_section_stabs_debugging_info): Pass abfd to
- start_stab.
- (read_symbol_stabs_debugging_info): Likewise.
-
-Thu Mar 21 12:40:48 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * wrstabs.c (stab_function_type): Output an empty typedef for an
- unused argument, rather than making up a meaningless name.
- (stab_variable): Use N_RSYM for a DEBUG_REGISTER variable.
-
- * ieee.c (struct ieee_info): Add global_vars field.
- (parse_ieee_be): When ending the global typedef block, copy the
- variables into info->global_vars.
- (parse_ieee_atn): Don't require an NN record for a pmisc ATN.
- (ieee_read_reference): Search the global variables after the local
- variables.
-
-Wed Mar 20 18:08:19 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * objdump.c (disassemble_data): Make sure sym_name is always set.
- (dump_section_header): Always put a space after the section name.
- (dump_bfd_header): Terminate output with newline.
-
-Wed Mar 20 16:35:20 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * wrstabs.c: New file.
- * budbg.h (write_stabs_in_sections_debugging_info): Declare.
- * objcopy.c (write_debugging_info): For COFF or ELF, output stabs
- in sections.
- * Makefile.in: Rebuild dependencies.
- (CFILES): Add wrstabs.c.
- (WRITE_DEBUG_OBJS): New variable.
- ($(OBJCOPY_PROG)): Use $(WRITE_DEBUG_OBJS), not $(DEBUG_OBJS).
- ($(STRIP_PROG)): Likewise.
-
- * stabs.c (parse_stab_members): Make type stub detection more like
- gdb.
-
- * ieee.c (struct ieee_handle): Add fields complex_float_index and
- complex_double_index.
- (ieee_complex_type): Cache type index in complex_float_index and
- complex_double_index, depending upon size. Set size on type stack
- to size * 2.
-
- * ieee.c (ieee_empty_type): Use builtin_unknown, not 0.
- (ieee_void_type): Use builtin_void, not 1.
-
- * ieee.c (parse_ieee_ty): Handle 'V' type code.
- (parse_ieee_atn): Don't require two numbers for type 10.
-
- * ieee.c (parse_ieee_be): Add one to offset at end of function or
- block.
-
- * ieee.c (struct ieee_block): Add field skip.
- (parse_ieee_bb): Don't call debug_record_function for __XRYCPP
- function, and set skip field.
- (parse_ieee_be): Don't call debug_end_function if skip is set.
-
- * debug.c (struct debug_handle): Add fields current_write_lineno
- and current_write_lineno_index.
- (debug_write): Initialize current_write_lineno and
- current_write_lineno_index for each unit. Call
- debug_write_linenos rather than writing out the line numbers
- directly.
- (debug_write_function): Call debug_write_linenos.
- (debug_write_block): Likewise.
- (debug_write_linenos): New static function.
-
- * debug.c (debug_write_type): For DEBUG_KIND_FUNCTION, push return
- type before arguments.
-
-Mon Mar 18 18:05:33 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Add AC_FUNC_VFORK.
- * configure, config.in: Rebuild.
- * dlltool.c, nlmconv.c: Include <vfork.h> if HAVE_VFORK_H is
- defined.
-
- * stabs.c (parse_stab_range_type): A complex type is defined as a
- subrange of itself with the high bound zero.
- * ieee.c (ieee_complex_type): Don't crash on sizes of 12 or 16.
-
-Tue Mar 12 12:09:43 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c (ieee_write_undefined_tag): Switch to global_types even
- if it is not empty.
- (ieee_tag_type): For an enum, look through info->enums.
-
- * configure: Rebuild with autoconf 2.8.
-
- * debug.c (debug_type_samep): Don't loop endlessly in
- DEBUG_KIND_ENUM case. From Eric Baur <ecb@nexen.com>.
-
-Mon Mar 11 12:35:03 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * rddbg.c (read_section_stabs_debugging_info): Call save_stab for
- each stab entry, call stab_context on an error, and call
- free_saved_stabs before rturning.
- (read_symbol_stabs_debugging_info): Likewise.
- (SAVE_STABS_COUNT): Define.
- (struct saved_stab): Define.
- (saved_stabs, saved_stabs_index): New static variables.
- (save_stab, stab_context, free_saved_stabs): New static functios.
-
- * objdump.c (stab_name): Remove.
- (struct stab_print): Remove.
- (stab_print): Remove.
- (dump_stabs): Don't initialize stab_name.
- (print_section_stabs): Call bfd_get_stab_name rather than using
- the stab_name array.
-
-Tue Feb 27 19:52:01 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * prdbg.c (pr_int_constant): Initialize info correctly.
- (pr_float_constant): Likewise.
-
-Mon Feb 26 18:11:37 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-make.sed: Update to handle shared library support.
-
-Sat Feb 24 11:21:49 1996 Alan Modra <alan@spri.levels.unisa.edu.au>:
-
- * Makefile.in ($(OBJDUMP_PROG)): Search $(BFDLIB) before
- $(OPCODES).
-
-Thu Feb 15 12:44:45 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Don't tamper with LDFLAGS. Call AC_PROG_CC before
- configure.host.
- * configure: Rebuild.
-
- * configure.in: Substitute RPATH_ENVVAR.
- * configure: Rebuild.
- * Makefile.in (RPATH_ENVVAR): New variable.
- (check): Use $(RPATH_ENVVAR) rather than LD_LIBRARY_PATH.
-
- * objcopy.c (smart_rename): Rather than doing chmod then chown, do
- chmod without setuid, then chown, then chmod with setuid.
-
-Wed Feb 14 16:46:42 1996 Martin Anantharaman <martin@mail.imech.uni-duisburg.de>
-
- * arsup.c (map_over_list): Reindent. Don't assume that the
- function does not delete the BFD.
- (ar_addlib_doer): Don't set prev->next if prev is NULL.
-
-Wed Feb 14 15:12:17 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c (ieee_regno_to_genreg): Convert register numbers for m68k
- and i960.
- (ieee_genreg_to_regno): Likewise.
-
-Mon Feb 12 14:19:59 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c: Extensive changes to write code to put types in the
- global type block when possible, to output ranges for all memory
- occupied by the module, and to improve efficiency.
-
- * debug.c (struct debug_handle): Remove class_mark field. Add
- id_list and compare_list fields.
- (struct debug_class_id): Define.
- (struct debug_type_compare_list): Define.
- (debug_write): Initialize info->id_list
- (debug_write_name): Remove reference to info->class_mark.
- (debug_write_type): Get id for all structs and classes. Simplify
- test for whether struct has already been written.
- (debug_write_class_type): Get id for all classes. Simplify test
- for whether class has already been written.
- (debug_write_block): Don't write out blocks other than the top
- level block if they have no local variables.
- (debug_set_class_id): New static function.
- (debug_type_samep): New static function.
- (debug_class_type_samep): New static function.
- * prdbg.c (pr_start_struct_type): Always print id.
- (pr_start_class_type): Likewise.
- (pr_tag_type): Likewise.
-
- * stabs.c (struct stab_handle): Add syms and symcount fields.
- (start_stab): Add syms and symcount parameters. Change all
- callers.
- (parse_stab_string): Look up global variables in the symbol table
- to get the right value.
- * budbg.h (start_stab): Update declaration.
- * rddbg.c (read_section_stabs_debugging_info): Add syms and
- symcount parameters. Change all callers.
-
- * stabs.c (parse_stab_array_type): If the index type is 0, use
- int.
-
-Wed Feb 7 14:17:45 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c (ieee_start_compilation_unit): Clear modified and
- modified_alloc fields of info.
-
- * configure.in: Check for --enable-shared. Substitute new
- variables BFDLIB and OPCODES.
- * configure: Rebuild.
- * Makefile.in (BFDLIB): Set to @BFDLIB@.
- (OPCODES): Set to @OPCODES@.
-
-Mon Feb 5 16:18:42 1996 Ian Lance Taylor <ian@cygnus.com>
-
- Support for building bfd and opcodes as shared libraries, based on
- patches from Alan Modra <alan@spri.levels.unisa.edu.au>:
- * configure.in (HLDFLAGS): New substitution.
- * configure: Rebuild.
- * Makefile.in (HLDFLAGS): New variable. Make all links use
- $(HLDFLAGS) before $(CFLAGS) and $(LDFLAGS).
- (BFDLIB_DEP): New variable. Replace all occurrences of $(BFD) as
- a dependency with $(BFDLIB_DEP). Remove $(BFD) as a dependency if
- there is also a dependency on $(ADDL_DEPS).
- (BFDLIB): Rename from BFD; change all uses; set to -L../bfd -lbfd.
- (OPCODES_DEP): New variable. Replace all occurrends of $(OPCODES)
- as a dependency with $(OPCODES_DEP).
- (OPCODES): Set to -L../opcodes -lopcodes.
- (ADDL_DEPS): New variable. Replace all occurrences of
- $(ADDL_LIBS) as a dependency with $(ADDL_DEPS).
- (check): Set LD_LIBRARY_PATH in the environment.
- (config.status): Depend upon BFD configure.host and config.bfd.
-
-Fri Feb 2 17:02:59 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * objdump.c: #include stdarg.h or varargs.h.
- (objdump_print_value): Change FILE* arg to struct disassemble_info*.
- All callers updated. Use fprintf_func.
- (objdump_print_address): Consistently use fprintf_func.
- (objdump_sprintf): New function.
- (disassemble_data): Print insn into a buffer, print raw insn ourselves,
- then print insn mnemonic.
-
-Fri Feb 2 16:48:55 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure: Regenerate.
-
-Thu Feb 1 09:38:18 1996 Steve Chamberlain <sac@slash.cygnus.com>
-
- * configure.in (i[3-6]86-*-win32): Becomes i[3-6]86-*-cygwin32.
- (powerpc*-*-cygwin32): New.
- * configure: Regenerated.
-
-Wed Jan 31 13:22:03 1996 Richard Henderson <rth@tamu.edu>
-
- * Makefile.in (distclean): Remove $(DEMANGLER_PROG).1.
-
-Mon Jan 29 17:36:29 1996 Ian Lance Taylor <ian@cygnus.com>
-
- Based on patches from H J Lu <hjl@zoom.com>:
- * objcopy.c (remove_leading_char): New static variable.
- (OPTION_REMOVE_LEADING_CHAR): Define.
- (copy_usage): Mention --remove-leading-char.
- (filter_symbols): If remove_leading_char, and the first character
- of a global symbol matches the symbol leading char of the BFD,
- remove the first character.
- (copy_object): Filter the symbols if remove_leading_char is set.
- (copy_main): Handle --remove-leading-char.
- * binutils.texi, objcopy.1: Document --remove-leading-char.
-
-Sat Jan 27 15:40:13 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * objdump.c (fprintf): Add prototype to avoid compiler warning on
- SunOS.
-
-Fri Jan 26 11:53:42 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * binutils.texi (nm): Improve documentation on symbol types.
- (objdump): Reference the stabs manual from the discussion of the
- --stabs option.
-
-Thu Jan 25 11:21:46 1996 Raymond Jou <rjou@mexican.cygnus.com>
-
- * mpw-make.sed: Add a "stamps" target.
-
-Thu Jan 25 13:51:44 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (dump_headers, dump_section_header): Change objdump -h
- output to be simpler and to include section file offsets.
-
-Wed Jan 24 12:06:05 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * stabs.c (parse_stab_members): Don't adjust voffset.
-
- * ieee.c (ieee_read_cxx_class): Don't multiply voffset by 4.
- (struct ieee_write_type): Add name field.
- (struct ieee_type_class): Remove name field. Change all uses to
- use new name field in type instead.
- (struct ieee_name_type): Likewise.
- (ieee_start_struct_type): Initialize name field of type.
- (ieee_start_class_type): Don't initialize classdef entry of tag.
- (ieee_class_method_var): Don't adjust voffset.
- (ieee_end_class_type): Likewise.
- (ieee_tag_type): Initialize new name field of type.
- (ieee_typdef): Set name after copying in type information.
-
- * debug.c (VOFFSET_STATIC_METHOD): Define as -1, not 1.
-
- * ieee.c (struct ieee_modified_type): Define.
- (struct ieee_handle): Add modified and modified_alloc fields.
- (ieee_get_modified_info): New static function.
- (ieee_pointer_type): Cache type index.
- (ieee_const_type): Likewise.
- (ieee_volatile_type): Likewise.
-
- * ieee.c (ieee_define_named_type): When creating a tag for an
- anonymous struct, copy the name into memory.
- (ieee_tag_type): Likewise.
- * debug.c (debug_write_type): Only check and set id field for an
- unnamed object.
- (debug_write_class_type): Likewise.
-
- * ieee.c: Various changes to write out types for functions and
- references, and to not write out unnecessary function types.
-
- * ieee.c (struct ieee_var): Remove variable field. Add kind
- field, and define some enum constants for it.
- (parse_ieee_ty): Set kind field of variable for 'x' and 'X' types.
- (parse_ieee_atn): Make an indirect slot for an external variable,
- although we otherwise don't record it. Set kind field rather than
- variable field of pvar.
- (ieee_read_cxx_class): Try to get the type of a static member.
- (ieee_read_reference): Check kind field rather than variable
- field.
-
-Tue Jan 23 15:54:18 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c: Various changes to handle reading C++ reference type
- information.
-
- * debug.h (enum debug_var_kind): Add DEBUG_VAR_ILLEGAL.
- (enum debug_parm_kind): Add DEBUG_PARM_ILLEGAL.
- * debug.c (debug_get_parameter_types): Handle DEBUG_KIND_FUNCTION.
-
- * ieee.c: Various changes to write out definitions of C++ classes.
-
- * debug.c (debug_append_filename): Remove.
- * debug.h (debug_append_filename): Don't declare.
-
- * stabs.c (struct stab_handle): Remove last_type field. Add
- so_string and so_value fields.
- (finish_stab): Call stab_emit_pending_vars before calling
- debug_end_function. Don't warn about pending variables.
- (parse_stab): Accumulate N_SO strings until a non N_SO symbol is
- seen, rather than calling debug_append_filename. Call
- stab_emit_pending_vars before calling debug_end_function. Don't
- set info->last_type.
-
-Tue Jan 23 09:53:54 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * objdump.c (disassemble_data): Handle unknown endianness.
- Pass fprintf to INIT_DISASSEMBLE_INFO.
-
-Mon Jan 22 16:46:43 1996 Doug Evans <dje@charmed.cygnus.com>
-
- Add new option --show-raw-insn.
- * objdump.c (show_raw_insn): New global.
- (usage): Update.
- (long_options): Update.
- (disassemble_data): Set disasm_info.flags if --show-raw-insn.
-
- * objdump.c (disassemble_data): Set new arch,mach,endian fields in
- disasm_info.
-
-Mon Jan 22 19:29:36 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c: Extensive changes to pass a single info argument around
- in the reading routines, rather than several arguments. Add code
- to read C++ debugging records.
-
- * debug.h (debug_get_type_size): Declare.
- (debug_get_field_name): Declare.
- (debug_get_field_bitpos): Declare.
- (debug_get_field_bitsize): Declare.
- (debug_get_field_visibility): Declare.
- (debug_get_field_physname): Declare.
- * debug.c (debug_get_real_type): Handle DEBUG_KIND_TAGGED.
- (debug_get_type_size): New function.
- (debug_get_field_name): New function.
- (debug_get_field_bitpos): New function.
- (debug_get_field_bitsize): New function.
- (debug_get_field_visibility): New function.
- (debug_get_field_physname): New function.
- (debug_write_type): Make sure we pass the real kind, not INDIRECT,
- to tag_type. Pass the name recursively for INDIRECT.
-
-Fri Jan 19 12:31:57 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * debug.h (struct debug_write_fns): Remove ellipsis_type. Add int
- and boolean parameters to function_type. Add boolean parameter to
- method_type.
- (debug_make_ellipsis_type): Don't declare.
- (debug_make_function_type): Add debug_type * and boolean
- parameters. Change all callers.
- (debug_make_method_type): Add boolean parameter. Change all
- callers.
- (debug_get_parameter_types): Add boolean * parameter. Change all
- callers.
- (debug_get_target_type): Declare.
- * debug.c (struct debug_function_type): Add fields arg_types and
- varargs.
- (struct debug_method_type): Add field varargs.
- (debug_ellipsis_type, ELLIPSIS_P): Remove.
- (debug_make_ellipsis_type): Remove.
- (debug_make_function_type): Add arg_types and varargs parameters.
- (debug_make_method_type): Add varargs parameter.
- (debug_get_parameter_types): Add pvarargs parameter.
- (debug_get_target_type): New function.
- (debug_write_type): In case DEBUG_KIND_FUNCTION, push argument
- types and pass count to function_type. In DEBUG_KIND_METHOD, use
- a signed int for the count, don't call ellipsis_type, and pass
- varargs to method_type.
- * stabs.c (struct stab_demangle_info): Add varargs field.
- (stab_demangle_argtypes): Add pvarargs parameter. Change all
- callers.
- (stab_demangle_args): Likewise.
- (stab_demangle_type): In case 'F', pick up argument types.
- * prdbg.c (pr_ellipsis_type): Remove.
- (pr_function_type): Add argcount and varargs parameters.
- (pr_method_type): Add varargs parameter.
- * ieee.c (ieee_ellipsis_type): Remove.
- (ieee_function_type): Add argcount and varargs parameters.
- (ieee_method_type): Add varargs parameter. Remove most of
- function body, and just call ieee_function_type.
-
- * stabs.c: Include "demangle.h". Added several new static
- functions not listed below to demangle argument types; they are
- all called via stab_demangle_argtypes.
- (finish_stab): If the kind of an undefined tag is
- DEBUG_KIND_ILLEGAL, use DEBUG_KIND_STRUCT instead. Warn if there
- are any pending variable.
- (parse_stab): Don't close the function when the block depth goes
- to zero. Pass value to debug_end_function.
- (parse_stab_string): In case 'T', pass the name to
- parse_stab_type.
- (parse_stab_type): In case 'x', use stab_find_tagged_type. In
- case '#', handle functions with variable numbers of arguments.
- (parse_stab_struct_type): Add tagname parameter. Change all
- callers.
- (parse_stab_members): Add tagname and typenums parameters. Change
- all callers. If the type of a method is a stub, call
- parse_stab_argtypes to demangle the argument types and get the
- physical name of the function.
- (parse_stab_argtypes): New static function.
- (stab_record_variable): For a DEBUG_GLOBAL or DEBUG_STATIC
- variable, call debug_record_variable immediately.
- (stab_find_tagged_type): New static function.
-
- * debug.h (enum debug_type_kind): Add DEBUG_KIND_ILLEGAL.
- (struct debug_write_fns): Add field ellipsis_type. Add id
- parameter to start_struct_type, start_class_type, and tag_type.
- (debug_make_ellipsis_type): Declare.
- (debug_find_named_type): Declare.
- (debug_get_type_kind): Declare.
- (debug_get_return_type): Declare.
- (debug_get_parameter_types): Declare.
- (debug_get_fields): Declare.
- (debug_get_field_type): Declare.
- * debug.c (struct debug_handle): Add fields class_id and base_id.
- (struct debug_class_type): Add field id.
- (struct debug_method_variant): Rename argtypes to physname.
- Change all uses.
- (debug_ellipsis_type): New static variable.
- (ELLIPSIS_P): New macro.
- (debug_make_ellipsis_type): New function.
- (debug_make_method_variant): Rename argtypes to physname.
- (debug_make_static_method_variant): Likewise.
- (debug_name_type): Always put types in the global namespace.
- (debug_find_named_type): New function.
- (debug_find_tagged_type): Treat DEBUG_KIND_ILLEGAL specially,
- rather than DEBUG_KIND_VOID.
- (debug_get_real_type): New static function.
- (debug_get_type_kind): New function.
- (debug_get_return_type): New function.
- (debug_get_parameter_types): New function.
- (debug_get_fields): New function.
- (debug_get_field_type): New function.
- (debug_write): Initialize base_id.
- (debug_write_type): Pass new id argument to tag_type. Handle
- DEBUG_KIND_ILLEGAL. Use id for DEBUG_KIND_STRUCT and
- DEBUG_KIND_UNION. Handle ellipsis for method arguments.
- (debug_write_class_type): Don't dereference kclass if it is NULL.
- Use id.
- * prdbg.c (pr_fns): Add pr_ellipsis_type.
- (pr_ellipsis_type): New static function.
- (pr_pointer_type): If this is a pointer to an array, parenthesize
- it correctly.
- (pr_start_struct_type): Add id parameter.
- (pr_start_class_type): Likewise.
- (pr_tag_type): Likewise.
- (pr_fix_visibility): Add the visibility to the top of the stack,
- not the second element on the stack.
- (pr_struct_field): Pop the stack before calling pr_fix_visibility.
- (pr_class_static_member): Likewise.
- (pr_class_start_method): Don't push a type, just set the method
- name in the type on the top of the stack.
- (pr_class_end_method): Don't pop the stack.
- (pr_class_method_variant): Rename argtypes parameter to physname.
- Append const and volatile rather than prepending them. Add a
- space after the physname.
- (pr_class_static_method_variant): Likewise.
- * ieee.c (ieee_fns): Add ieee_ellipsis_type.
- (ieee_define_named_type): Use DEBUG_KIND_ILLEGAL rather than
- DEBUG_KIND_VOID.
- (write_ieee_debugging_info): Likewise.
- (ieee_typdef): Likewise.
- (ieee_ellipsis_type): New static function.
- (ieee_start_struct_type): Add id parameter.
- (ieee_start_class_type): Likewise.
- (ieee_tag_type): Likewise.
- (ieee_class_method_variant): Rename name to physname.
- (ieee_class_static_method_variant): Likewise.
-
- * Makefile.in (DEBUG_OBJS): Remove prdbg.o.
- ($(OBJDUMP_PROG)): Depend upon, and link against, prdbg.o.
-
-Thu Jan 18 17:35:06 1996 Kim Knuttila <krk@cygnus.com>
-
- * dlltool.c (make_tail): Changed the order of the sections to avoid
- an alignment problem.
-
-Wed Jan 17 14:23:00 1996 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * srconv.c (wr_du): Set du.stackfrmt to 0.
- (wr_un, wr_sc): Emit all sections, even those with 0 size.
-
-Tue Jan 16 16:15:49 1996 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * srconv.c (wr_hd): Space size within segment was being
- stored in segment identifier field.
-
-Tue Jan 16 12:07:25 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-config.in (BUILD_NLMCONV, BUILD_SRCONV, SYSINFO_PROG,
- BUILD_DLLTOOL): Put definitions for these into makefile when
- configuring, instead of always clearing in mpw-make.sed.
- * mpw-make.sed: Edit out any host_alias or target_alias settings,
- fix pathname to BFD internal include files, remove dependency
- calculation rules.
-
-Thu Jan 11 17:31:38 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * objdump.c (dump_section_header): Add new section flags
- SEC_{EXCLUDE,SORT_ENTRIES}.
-
-Thu Jan 11 11:45:34 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c (filter_symbols): NULL terminate the output symbols.
- (copy_object): Allocate space for a possible extra NULL pointer.
-
- * debug.c (debug_make_undefined_tagged_type): Make sure we are
- given a kind of type we can handle.
- (debug_write_type): Handle undefined enums and structs.
- (debug_write_class_type): Handle undefined classes.
- * prdbg.c (pr_enum_type): Handle an undefined enum.
- * ieee.c (ieee_enum_type): Likewise.
-
-Wed Jan 10 15:33:18 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in: Updated dependencies.
- (ALLOCA, MALLOC): Remove variables.
- (ADDL_LIBS): Remove $(MALLOC) from definition.
- * alloca.c, gmalloc.c: Remove.
-
-Mon Jan 8 18:02:29 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c: Add global function write_ieee_debugging_info and a
- bunch of static functions and structs used to write out IEEE
- debugging information.
- * budbg.h (write_ieee_debugging_info): Declare.
-
- * ieee.c (struct ieee_type): Add pslot field.
- (enum builtin_types): Define.
- (ieee_builtin_type): For a pointer, return a pointer to the named
- type. Use enum values rather than numbers.
- (ieee_alloc_type): New static function.
- (ieee_read_type_index): Use ieee_alloc_type.
- (parse_ieee_bb): Likewise.
- (parse_ieee_ty): Likewise. Use ieee_builtin_type for array range,
- rather than making a new integer type. Store the new type in the
- slot, if there is one.
- (parse_ieee_atn): Treat ATN10 as defining a register variable.
- (ieee_regno_to_genreg): Rename from ieee_regno_to_gen. Change all
- callers.
- (ieee_genreg_to_regno): New static function.
-
- * stabs.c (parse_stab_type): Add new typename parameter. Change
- all callers.
- (parse_stab_range_type): Add new typename parameter. Change all
- callers.
-
- * debug.h (struct debug_write_fns): Add tag parameter to
- enum_type, start_struct_type, and start_class_type.
- * debug.c (debug_write_type): Pass any tag name to
- start_struct_type, debug_write_class_type, and enum_type. If
- DEBUG_KIND_TAGGED, pass the name in the recursive call.
- (debug_write_class_type): Accept a new tag parameter, and pass it
- to start_class_type.
- * prdbg.c (pop_type): Don't remove '+' character.
- (pr_enum_type): Accept and use tag parameter.
- (pr_start_struct_type): Likewise.
- (pr_start_class_type): Likewise.
- (pr_class_baseclass): Adjust algorithm used to find where to put
- the baseclass name.
- (pr_tag): Don't bother to insert the tag name.
-
- * objcopy.c: Include budbg.h.
- (convert_debugging): New static variable.
- (OPTION_DEBUGGING): Define.
- (copy_options): Add "debugging".
- (copy_usage): Mention --debugging.
- (is_strip_section): Skip debugging sections if convert_debugging.
- (setup_section, copy_section): Likewise.
- (filter_symbols): Skip debugging symbols if convert_debugging.
- (copy_object): If convert_debugging, read and write debugging
- information.
- (write_debugging_info): New static function.
- (copy_main): Handle --debugging.
- * Makefile.in (DEBUG_OBJS): New variable.
- ($(OBJCOPY_PROG)): Depend upon and link against $(DEBUG_OBJS).
- ($(STRIP_PROG)): Likewise.
- (OBJDUMP_OBJS): Remove variable.
- ($(OBJDUMP_PROG)): Use objdump.o $(DEBUG_OBJS) rather than
- $(OBJDUMP_OBJS).
- * binutils.texi, objcopy.1: Document --debugging.
-
-Thu Jan 4 16:31:21 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ieee.c: New file with code to read IEEE debugging information.
- * budbg.h (parse_ieee): Declare.
- * rddbg.c (read_debugging_info): Handle IEEE flavour files.
- (read_ieee_debugging_info): New static function.
- * Makefile.in: Rebuild dependencies.
- (CFILES): Add ieee.c.
- (OBJDUMP_OBJS): Add ieee.o.
-
- * bucomm.h (xrealloc): Change type of first parameter from char *
- to PTR.
-
-Tue Jan 2 17:44:07 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in: Add targets to automatically rebuild dependencies.
- Remove targets which just listed dependencies of .o files.
- (DEP): New variable.
- (HFILES, GENERATED_HFILES): New variables.
- (CFILES, GENERATED_CFILES): New variables.
- (underscore.c): Don't do anything, just depend upon stamp-under.
- (stamp-under): New target; do what underscore.c used to do.
- (nlmconv.o): Depend upon sym.h and ecoff.h.
- (.dep, .dep1, dep.sed, dep, dep-in): New targets.
- (stage1, stage2, stage3, against, comparison): Remove.
- (de-stage1, de-stage2, de-stage3): Remove.
- (clean, distclean): Remove stamp-under and dep.sed.
- * dep-in.sed: New file.
-
- Implement generic debugging support. Implement a stabs reader and
- a generic printer.
- * budbg.h, debug.c, debug.h, prdbg.c, rddbg.c, stabs.c: New files.
- * objdump.c: Include "debug.h" and "budbg.h".
- (dump_debugging): New global variable.
- (usage): Mention --debugging.
- (long_options): Add "debugging".
- (display_bfd): Handle --debugging.
- * Makefile.in (OBJDUMP_OBJS): New variable.
- ($(OBJDUMP_PROG)): Use $(OBJDUMP_OBJS).
- * binutils.texi, objdump.1: Document --debugging.
-
-Sat Dec 30 09:59:51 1995 Jeffrey A Law (law@cygnus.com)
-
- * nm.c ( long_options): Add "--defined-only" option.
- (usage): Update for new "--defined-only" option.
- (filter_symbols): Handle "--defined-only".
-
-Fri Dec 29 16:04:56 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * arparse.y: Include "bucomm.h", not <sysdep.h>.
- * nlmheader.y: Don't include "sysdep.h".
-
-Tue Dec 26 18:23:18 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * nm.c (print_symdef_entry): Check return value of
- bfd_get_elt_at_index.
-
-Sat Dec 23 11:03:16 1995 Michael Meissner <meissner@tiktok.cgynsu.com>
-
- * configure.in (DLLTOOL_DEFS): Build dlltool for PowerPC if target
- is powerpc*-*-win* in addition to powerpc*-*-*pe*.
-
-Fri Dec 15 16:30:57 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (endian_string): New static function.
- (display_target_list): Use it.
- * nlmconv.c (main): Use new bfd_big_endian macro.
-
-Fri Dec 15 07:51:34 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * dlltool.c (fill_ordinals): Start from 1 if no other instructions
- given.
-
-Tue Dec 12 12:05:21 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (clean): Remove $(DEMANGLER_PROG).1. From Ronald
- F. Guilmette <rfg@monkeys.com>.
-
-Mon Dec 11 14:33:05 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mac-binutils.r: Fix copyright and version strings.
-
- * Makefile.in (version): Remove, no longer used.
-
-Fri Dec 1 14:41:56 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-make.sed (install, install-only): Edit in Mac-specific
- install procedure.
-
-Thu Nov 30 20:26:02 1995 Kim Knuttila <krk@cygnus.com>
-
- * dlltool.c (ppc_jtab): The binary glue for PowerPC dll linkage,
- including the return instruction.
- sinfo: added a preferred alignment field.
- (secdata): section data for the PowerPC version.
- (make_one_lib_file): More symbols, More sections (pdata, rdata)
- (make_tail): Use idata$6 instead of idata$7 for ppc. Also added a
- NULL idata$3 descriptor (temporary).
-
-Tue Nov 28 17:23:44 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * dlltool.c (fill_ordinals): Don't reference d_export_vec if
- there are no exported functions.
-
-Mon Nov 27 13:05:59 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure: Regenerate with autoconf 2.7.
-
-Wed Nov 22 13:17:15 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * dlltool.c (fill_ordinals): Start assigning ordinals at 1.
-
- * Makefile.in (EXPECT): Use $$r, not $${rootme}.
- (check): Set r, not rootme.
-
-Tue Nov 21 18:04:09 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Use BFD_NEED_DECLARATION.
- * acconfig.h: Put NEED_DECLARATION_FPRINTF in @TOP@ section.
- * configure, config.in: Rebuild with autoconf 2.6.
-
-Fri Nov 17 10:34:37 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (CC_FOR_TARGET): Use @host@ and @target@, not
- $(host_canonical) and $(target_canonical).
-
-Thu Nov 16 03:39:20 1995 Ken Raeburn <raeburn@cygnus.com>
-
- Version 2.6 released.
- * Makefile.in (VERSION): Update to 2.6.
-
-Wed Nov 15 12:14:17 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (CC_FOR_TARGET): Define.
- (check): Pass CC and CFLAGS to runtest.
-
- * nm.c (display_rel_file): Don't require a DYNAMIC object when
- dumping the dynamic symbol table.
-
- * objdump.c (compare_symbols): Sort global symbols before local
- symbols before debugging symbols.
- (objdump_print_address): Don't futz around looking for a global
- symbol with the same value.
-
-Tue Nov 14 17:19:11 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * dlltool.c: Use FOPEN_* macros rather than "r" or "w".
-
- * dlltool.c (fill_ordinals): Correct memset call.
-
-Sun Nov 12 12:56:05 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-make.sed (DEMANGLER_PROG): Edit out attempts to do anything
- with the man page.
-
-Fri Nov 10 11:41:22 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c (setup_section): Copy the section lma independently of
- the vma.
-
-Wed Nov 8 11:33:00 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * arsup.c (ar_open): Cast malloc return value.
-
-Tue Nov 7 09:01:26 1995 Kim Knuttila <krk@cygnus.com>
-
- * configure.in, configure (DLLTOOL_DEFS): Added ppc target.
- * dlltool.c (MPPC): Added basic PPC definitions.
-
-Tue Nov 7 14:02:57 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Don't treat rs6000-*-lynx* specially.
- * configure: Rebuild.
- * config/rslynx: Remove.
- * Makefile.in: Remove @target_makefile_fragment@.
-
-Mon Nov 6 15:00:50 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * bucomm.h: Include <sys/types.h>.
- * ar.c: Don't include <sys/types.h> or <stdio.h>.
- * bucomm.c, dlltool.c, nlmconv.c, objcopy.c, objdump.c: Likewise.
-
-Fri Nov 3 12:38:09 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c: Include <sys/types.h>.
-
- Permit user to override DEMANGLER_PROG from command line. From
- Manfred Hollstein <manfred@lts.sel.alcatel.de>.
- * Makefile.in ($(DEMANGLER_PROG)): Depend upon
- $(DEMANGLER_PROG).1.
- (install): Don't depend upon $(DEMANGLER_PROG).1. Only install
- $(DEMANGLER_PROG).1 if $(DEMANGLER_PROG) is not empty.
-
-Wed Nov 1 15:04:57 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
-
- * Makefile.in (syslex.o): add -I$(srcdir) if compiling in a
- separate directory.
-
-Mon Oct 30 14:24:18 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (objdump_print_value): New static function.
- (objdump_print_address): Use it. If we need the right section for
- the symbol, and we can't find it, print an offset from the section
- rather than using a symbol from some other section.
-
-Thu Oct 26 10:23:14 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * dlltool.c (no_idata4, no_idata5): New.
- (arm_jtab): Use correct encoding of jump instruction.
- (usage, main, make_head, make_tail): Act on no_idata4, no_idata5.
-
-Wed Oct 25 12:10:07 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-make.sed: Edit paths to generated y.tab.[ch] files.
-
-Fri Oct 20 18:40:34 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * binutils.texi: Change --with-targets to --enable-targets.
-
-Thu Oct 19 17:47:41 1995 Fred Fish <fnf@cygnus.com>
-
- * Makefile.in: Remove extraneous tab on otherwise empty line,
- which confuses many non-GNU versions of "make".
-
-Wed Oct 18 16:31:58 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * dlltool.c (i386_jtab, arm_jtab): New
- (gen_lib_file): Rewritten to use bfd.
-
-Fri Oct 13 16:10:07 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * Makefile.in (install): Don't give error message if dlltool
- wasn't built.
-
-Fri Oct 13 11:04:37 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * deflex.l: Allow quoting of IDs.
- * defparse.y (%union): string deleted.
- (command): DESCRIPTION takes ID.
- * dlltool.c (gen_def_file): Quote outgoing name if
- necessary. Preserve NONAME.
- (gen_lib_file): Run ranlib.
- (workout_prefix): Deleted.
- (main, usage, long_options): Add --as, --ranlib, --ar options.
-
-Wed Oct 11 13:36:13 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * dlltool.c (mtable): HOW_ALIGN_LONG, new.
- (d_ord): Deleted.
- (d_low_ord, d_high_ord, d_named_funcs): New.
- (gen_exp_file): Create noname entries correctly.
- (gen_lib_file): Dump exports alphabetically.
- (process_duplicates): Count nonamed functions.
- (fill_ordinals): Keep track of highest ord too.
- (mangle_defs): Create alphabetically ordered list of names.
-
-Tue Oct 10 09:39:09 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * Makefile.in (TOOL_PROGS): Include DLLTOOL_PROG.
-
-Mon Oct 9 13:06:31 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * dlltool.c (add_underscore): New.
- (xlate): Use new name.
- (main, usage): Update.
-
-Fri Oct 6 14:08:51 1995 Ken Raeburn <raeburn@cygnus.com>
-
- * sysinfo.y: Eliminate unused terminals "[" and "]" and unused
- nonterminal "name". One s/r conflict remains.
-
- Mon Sep 25 22:49:32 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * nm.c (print_symname): Don't try to demangle an empty
- name.
- * objdump.c (slurp_symtab): Reset symcount if there are
- no symbols.
- (slurp_dynamic_symtab): Likewise, for dynsymcount.
- (disassemble_data): Fix memory leak: free sorted_syms when done.
- (display_bfd): Likewise, for syms and dynsyms.
- (dump_relocs): Don't print header before possibly generating an
- error message.
- (dump_dynamic_relocs): Likewise.
-
- * ar.1, nm.1, objdump.1, size.1, strings.1, strip.1: Fix typos and
- formatting bugs.
-
-Fri Oct 6 12:00:25 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ar.c (do_quick_append): Comment out.
- (replace_members): Add quick argument.
- (main): Don't call do_quick_append.
- (open_inarch): Don't call quick_append to create an empty archive.
- Instead call bfd_openw/bfd_set_format/bfd_close.
-
-Thu Oct 5 20:53:08 1995 Ken Raeburn <raeburn@cygnus.com>
-
- * bucomm.c: Always include time.h.
-
-Thu Oct 5 17:25:21 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (compare_symbols): Sort gnu_compiled and gcc2_compiled
- symbols after other symbols with the same value. Likewise for
- symbols which look like file names.
- (objdump_print_address): Always chose the first reasonable symbol
- with a given value.
-
-Tue Oct 3 22:38:55 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * arsup.c (ar_save): Use rename, not unlink/link/unlink.
-
-Mon Oct 2 12:10:25 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * strings.c (main): Exit with zero status if no files are given
- and standard input is read.
-
-Thu Sep 28 20:03:07 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-config.in: Calculate underscore and put into makefile
- fragment, generate config.h.
- * mpw-make.sed: New file, sed commands to edit Unix makefile
- into MPW syntax.
- * mpw-make.in: Remove.
- * mac-binutils.r: New file, Mac resources.
-
-Thu Sep 28 15:49:00 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * dlltool.c: (gen_exp_file): Always emit a .reloc section if
- relocatable.
- (imp_name_lab): New.
- (gen_def_file): New.
- (gen_lib_file): Use imp_name_lab.
- (main): Initialize imp_name_lab.
-
-Mon Sep 25 12:05:34 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Call AC_HEADER_SYS_WAIT.
- * configure: Rebuild.
- * config.in: Rebuild.
- * dlltool.c: Include "libiberty.h" and "bucomm.h". Don't include
- <stdio.h>, <stdlib.h>, or <string.h>. Don't include <wait.h>.
- Include <sys/types.h>. Use HAVE_SYS_WAIT_H to control whether to
- include <sys/wait.h> or define the wait macros by hand. Don't
- declare xmalloc.
- (gen_lib_file): Don't assume that sprintf returns the number of
- characters; use strlen instead.
-
-Fri Sep 22 17:16:41 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (disassemble_data): Don't use the old BFD based
- disassembler interface. Make info a const pointer.
-
-Wed Sep 13 18:33:44 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (start_address): New variable.
- (stop_address): New variable.
- (usage): Mention --start-address and --stop-address.
- (OPTION_START_ADDRESS, OPTION_STOP_ADDRESS): Define.
- (long_options): Add "start-address" and "stop-address".
- (disassemble_data): Handle start_address and stop_address.
- (dump_data, dump_reloc_set): Likewise.
- (main): Don't set seenflag for -l. Handle OPTION_START_ADDRESS
- and OPTION_STOP_ADDRESS.
- * objcopy.c (parse_vma): Move to bucomm.c.
- * bucomm.c (parse_vma): New function, moved in from objcopy.c.
- * bucomm.h (parse_vma): Declare.
- * binutils.texi, objdump.1: Document new objdump options.
-
-Tue Sep 12 12:37:39 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (maintainer-clean): New target.
-
- * ar.c (replace_members): Don't call write_archive if nothing
- changed.
-
- * objdump.c (disassemble_data): Add casts to avoid gcc warnings.
-
-Thu Sep 7 12:12:17 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * config.in: Rename from config.h.in.
- * configure.in: Call AC_CONFIG_HEADER with config.h:config.in.
- Check for config.h:config.in when creating stamp-h.
- * configure: Rebuild.
- * Makefile.in (stamp-h): Depend upon config.in rather than
- config.h.in. Set CONFIG_HEADERS to config.h:config.in when
- calling config.status.
-
- * Makefile.in (distclean): Remove config.h, stamp-h, and
- config.log.
-
- * nm.c (value_format): Initialize based on BFD64 and
- BFD_HOST_64BIT_LONG.
- (print_radix): New static variable.
- (set_print_radix): Set print_radix. Adjust changes to
- value_format.
- (print_value): New static function, to print 64 bit octal and
- decimal values correctly.
- (print_symbol_info_bsd): Check BFD64, not BFD_HOST_64_BIT. Use
- print_value.
- (print_symbol_info_sysv): Use print_value.
- (print_symbol_info_posix): Likewise.
-
-Wed Sep 6 15:02:55 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (*.o): Remove incorrect dependencies on
- $(BFDDIR)/hosts/std-host.h.
-
- * Makefile.in (INSTALL_DATA): Add -m 644.
- (INSTALL_XFORM1): Likewise.
- (CC_FOR_BUILD): Set to @CC_FOR_BUILD@ rather than $(CC).
- (mostlyclean): Remove config.log.
- (distclean): Remove config.cache.
-
- * configure.in: Call BFD_CC_FOR_BUILD and BFD_BINARY_FOPEN.
- * configure: Rebuild.
-
-Tue Sep 5 20:22:42 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Rewrite to use autoconf.
- * aclocal.m4: New file.
- * configure: New file, built by autoconf.
- * acconfig.h: New file.
- * config.h.in: New file, built by autoheader.
- * Makefile.in: Various changes for new configure script. Also:
- (PROGS): Remove $(SYSINFO_PROG).
- (ALL_CFLAGS): Remove $(TDEFINES).
- (version.o): Use $(ALL_CFLAGS).
- (cplus-dem.o, dlltool.o, nlmconv.o): Likewise.
- (sysdump.o): Depend upon bucomm.h and config.h.
- (srconv.o, arsup.o, strings.o): Depend upon config.h.
- (filemode.o): Don't depend upon ../bfd/sysdep.h.
- (bucomm.o): Depend upon config.h, not ../bfd/sysdep.h.
- (size.o, objdump.o, nm.o, ar.o, objcopy.o): Likewise.
- (nlmheader.o, nlmconv.o): Likewise.
- (distclean): Don't remove sysdep.h.
- * bucomm.h: Include "ansidecl.h", <stdio.h>, and "config.h".
- Include "fopen-same.h" or "fopen-bin.h", based on
- USE_BINARY_FOPEN. Include <errno.h>, and declare errno if it is
- not a macro. Include <unistd.h>, <string.h>, <strings.h>,
- <stdlib.h>, and <fcntl.h> if they are present. Declare strchr,
- strrchr, and strstr if no string header file exists. Include
- <sys/file.h> if it exists and <fcntl.h> does not. Define
- O_RDONLY and O_RDWR if necessary.
- * ar.c: Don't include "sysdep.h". Do include <sys/types.h> and
- <sys/stat.h>. Use HAVE_GOOD_UTIME_H rather than POSIX_UTIME. Use
- HAVE_UTIMES rather than !USE_UTIME. Don't include <errno.h>, and
- don't declare errno.
- * arsup.c: Don't include <sysdep.h>.
- * bucomm.c: Don't include "sysdep.h". Include <stdio.h>,
- <sys/types.h>, and <sys/stat.h>. Include <time.h> if it defines
- time_t. Define time_t if necessary.
- * coffdump.c: Don't include "sysdep.h".
- * coffgrok.c, filemode.c, nlmconv.c, size.c: Likewise.
- * srconv.c, strings.c: Likewise.
- * nm.c: Don't include "sysdep.h". Don't try to define HAVE_SBRK.
- * objcopy.c: Don't include "sysdep.h". Include <sys/types.h> and
- <sys/stat.h>.
- (simple_copy): Use creat rather than assuming that O_CREAT is
- defined.
- * objdump.c: Don't include "sysdep.h". Use
- NEED_DECLARATION_PRINTF rather than !FPRINTF_ALREADY_DECLARED.
- * sysdump.c: Include "bfd.h" and "bucomm.h". Don't include
- "sysdep.h" or <stdlib.h>.
- (dump_symbol_info): Rename from symbol_info. Change all callers.
-
-Mon Sep 4 14:30:00 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in (host_makefile_frag): Don't set. Substitute for
- @CC@, @CFLAGS@, @HDEFINES@ and @LDFLAGS@ in Makefile.
- * Makefile.in (AR_FLAGS): Set to rc rather than qv.
- (CC): Define as @CC@.
- (CFLAGS): Set to @CFLAGS@.
- (LDFLAGS): Define as @LDFLAGS@.
- (ALL_CFLAGS): Use @HDEFINES@ rather than $(HDEFINES).
-
- * configure.in: Don't bother to call config.bfd for each target.
- Just call it for the default target, and use the shell variable to
- decide whether underscores are used.
-
-Thu Aug 31 19:21:48 1995 Jason Molenda (crash@phydeaux.cygnus.com)
-
- * configure.in: match i[3-6]86-*-win32, not just i386-*-win32.
-
-Thu Aug 31 16:30:22 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * dlltool.c (add_indirect): New.
- (asm_prefix): New
- (gen_exp_file): Timestamp should be 0. Insert prefix when
- needed. New code for indirection.
- (gen_lib_file): Timestamp should be 0. Insert prefix
- when needed.
- (usage): Document --add-indirect.
- (main): Cope with new option.
-
- * objdump.c (dump_private_headers): New.
- (usage): Document new option.
- (long_option): Add private-headers.
- (dump_bfd_private_header): New.
- (main): Cope with new option.
-
-Thu Aug 31 04:09:16 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * dlltool.c (run): Add missing 3rd arg to waitpid.
-
-Wed Aug 30 11:02:11 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * Makefile.in (TOOL_PROGS): Include dlltool if needed.
-
-Tue Aug 29 13:25:21 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * dlltool.c (rva): Deleted.
- (rvaafter, rva_before): Use new assembler pseudo.
- (flush_page, gen_exp_file, gen_lib_file): Use new way of RVAing.
- (gen_exp_file): Don't generate .edata if no need.
- (gen_lib_file): Don't make timestamp.
- Put _iname in idata$7.
- (workout_prefix): Fix memory initialization bug.
- (usage): Tidy up, delete many single char options.
- (main): rva option is gone.
-
-Mon Aug 21 18:41:28 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * dlltool.c (options): image-base is a synonym for rva.
- (gen_lib_file): Put dll name into ibase$7.
-
-Sun Aug 20 09:59:00 1995 steve chamberlain <sac@slash.cygnus.com>
-
- Modified to generate archives and objects rather than .s files.
- * dlltool.c (run) New function.
- (gen_exp_file, gen_lib_file): Use run.
- (workout_prefix): New.
- (usage): Document new options.
- (main): Parse new options.
-
-Wed Aug 16 16:26:52 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * dlltool.c (gen_exp_file): Fix RVA handling.
- (rva_s, rva_n): Delete.
-
-Fri Aug 11 18:27:18 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * nm.c (main): Ignore -e.
-
-Thu Aug 10 17:35:00 1995 Ken Raeburn <raeburn@cygnus.com>
-
- * Makefile.in (config.texi): New target. Write out a setting for
- texinfo variable VERSION.
- (binutils.dvi, binutils.info): Depend on it.
- * binutils.texi: Include it, and reference @value{VERSION} instead
- of explicitly specifying 2.2(!).
-
-Thu Aug 10 16:07:53 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * coffgrok.c (do_type): Handle array dimensions the same way gdb
- does.
-
-Tue Aug 8 17:10:42 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * dlltool.c (mtable): New fields.
- (ASM_RVA_BEFORE, ASM_RVA_AFTER): New.
- (flush_page): Use new macros.
-
-Sat Aug 5 00:16:37 1995 Jeff Law (law@snake.cs.utah.edu)
-
- * objcopy.c (mark_symbols_used_in_relocations): Handle sections
- with no relocations.
- * coffgrok.c (do_sections_p1): Likewise.
-
-Mon Jul 31 12:51:06 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * strings.c (print_strings): For compatibility with existing
- strings programs, print strings which are not terminated with a
- null byte or a newline.
- * binutils.texi, strings.1: Update documentation accordingly.
-
- * ar.c (replace_members): For compatibility with existing ar
- programs, permit users to add the same file multiple times.
-
-Tue Jul 25 11:21:53 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * strings.c (DATA_FLAGS): Remove SEC_DATA.
- (main): If no file names are given, scan standard input.
- * binutils.texi, strings.1: strings now scans non-data sections by
- default.
-
-Mon Jul 24 13:52:28 1995 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * srconv.c (wr_hd): Set afl field to 4 for bfd_arch_sh.
- (writeINT): When size == -2, use 2 bytes for the h8300 and 4 bytes
- for the sh.
-
- * sysdump.c (fillup): Return size - 1, the last byte is a checksum
- and shouldn't be counted.
- * sysroff.info (hd): Changed segment identifier from a byte to a 1
- bit field. The sysroff 2.0-01 specification seems to be in error
- here. Reduce width of following "spare" field from 4 to 3 bits.
- (rl): Changed order and width of first 4 bitfields to correspond
- to sysroff specification.
- (dln_head, dln_inside, dln_tail): Removed.
-
-Tue Jul 18 23:00:03 1995 Fred Fish <fnf@cygnus.com>
-
- * nm.c (sort_symbols_by_size): Enclose expression being casted
- in parens so result is casted, not just first operand. Can't
- do pointer arithmetic on void* pointers.
-
-Fri Jul 14 13:42:42 1995 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * sysdump.c (dh): Changed format of output to be 16 hex digits
- followed by 16 ascii characters, similar to Emacs' hexl-mode,
- to make it easier to read.
- (xcalloc): fix typo.
-
-Thu Jul 13 15:27:44 1995 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * srconv.c (wr_tr): Write out handcrafted tr block.
- (walk_tree_symbol): Use evallen and evalue instead of
- vallen & value because of corresponding changes in
- sysroff.info.
-
- * sysdump.c (sysroff_swap_tr_in, sysroff_print_tr_out): New
- functions.
-
- * sysroff.info (tr): the tr block is a special case --- a block
- without contents --- which can't be handled by generated code.
- (den, dpp): only first byte is present for DENend, DPPend.
- (dsy): describe a conditional portion of block, rename some fields.
- (dps): describe a conditional portion of block.
- (dfl): removed.
-
- * sysinfo.y (yyerror): write error message to standard error.
-
-Thu Jul 13 10:43:59 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (DISTSTUFF): Add arparse.h and sysinfo.h.
- (mostlyclean): Remove y.output.
- (clean): Remove sysroff, sysroff.c, sysroff.h, and sysinfo.
-
- * nlmconv.c (powerpc_mangle_relocs): Cast memset arg to size_t.
- * objcopy.c (copy_object): Likewise.
-
- * nm.c (HAVE_SBRK): Define execpt on amigados and WINDOWS_NT.
- (struct size_sym): Define.
- (show_stats): New static variable.
- (long_options): Add undocumented option "stats".
- (main): Print memory stats if requested.
- (sort_bfd, sort_dynamic, sort_x, sort_y): New static variables.
- (numeric_forward): Use minisymbols rather than asymbols.
- (non_numeric_forward): Likewise.
- (size_forward1): Rename from size_forward. Use minisymbols.
- (size_forward2): New static function.
- (sort_symbols_by_size): Take new arguments dynamic, size, and
- symsizep. Use minisymbols. Don't store the size back in the
- symbol; store in a newly allocate struct size_sym array.
- (display_rel_file): Read minisymbols rather than asymbols. Set
- sort_* variables. Call print_size_symbols if sorting by size.
- (filter_symbols): Take new arguments dynamic and size. Use
- minisymbols.
- (print_symbols): Likewise. Call print_symbol for actual printing.
- (print_size_symbols): New static function.
- (print_symbol): New static function.
-
-Wed Jul 12 10:43:05 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (dump_section_stabs): Only print each stabs section
- once.
- (compare_relocs): Make it clear to gcc that this always returns a
- value.
-
-Wed Jul 12 10:40:23 1995 H.J. Lu <hjl@nynexst.com>
-
- * objcopy.c (simple_copy): Preserve errno on failure.
- (smart_rename): Print error mesage if simple_copy fails.
-
-Tue Jul 11 13:10:52 1995 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * sysdump.c: re-indented file.
- (module): read blocks sequentially instead of trying to parse
- them, as that would require changing the parser recognize the
- difference between a DPSstart and DPSend block.
- (getone): Add break's between switch blocks as appropriate.
- (object_body_list): parse blocks according to sysroff spec.
-
-Mon Jul 10 12:37:25 1995 J.T. Conklin <jtc@poseidon.cygnus.com>
-
- * sysroff.info: re-indented file, prior formatting was confusing
- because it was indentation did not reflect nesting of conditional
- records. Change "space size within segment" record in hd record
- from bit to byte.
-
- * sysinfo.y (cond_it_field): Use xcalloc instead of calloc.
-
- * srconv.c (wr_cs): Reformatted cs header array, tag each byte
- with a comment describing the field.
- (wr_unit_info): Use SEEK_SET macro instead of constant 0.
- (main): Use FOPEN_WB macro instead of literal "wb".
- * sysroff.info: Remove fdl (dfl) field from cs block. Compare
- ptr->type with ED_TYPE_CONST instead of constant 2 in ed block.
-
-Tue Jul 4 14:48:42 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * nm.c (size_forward): Check yf against yn, not xn.
-
- * objcopy.c (copy_archive): Record all output BFD's, and close
- them before unlinking them and removing the temporary directory,
- to avoid NFS problems.
-
- * ar.c (replace_members): In verbose messages, use 'r' when
- replacing a member, and 'a' when adding one.
-
- * ar.c (ar_truncate): New static variable.
- (normalize): Change return type to const char *. Add abfd
- argument. Change all callers. If ar_truncate, chop the filename
- to abfd->ar_max_namelen.
- (main): For the 'f' modifier, set ar_truncate to true. Don't
- change quick_append to replace if ar_truncate is true.
- (do_quick_append): If ar_truncate, set BFD_TRADITIONAL_FORMAT.
- (write_archive): Likewise.
- * binutils.texi, ar.1: Document 'f' modifier.
-
- * objcopy.c (enum strip_action): Define strip_unneeded.
- (OPTION_STRIP_UNNEEDED): Define.
- (strip_options): Add "strip-unneeded".
- (copy_options): Likewise.
- (copy_usage): Mention --strip-unneeded.
- (strip_usage): Likewise.
- (is_strip_section): Strip debugging sections if strip_unneeded.
- (filter_symbols): If strip_unneeded, only keep BSF_KEEP symbols.
- (copy_object): If strip_all, discard symbols without checking
- discard_locals.
- (copy_object): Call filter_symbols if strip_unneeded.
- (setup_section): Strip debugging sections if strip_unneeded.
- (copy_section): Likewise.
- (strip_main): Handle OPTION_STRIP_UNNEEDED.
- (copy_main): Likewise.
- * binutils.texi, objcopy.1, strip.1: Document --strip-unneeded.
-
-Mon Jul 3 14:16:47 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- * configure.in (i386-*-win32): New configuration.
- * dlltool.c (killat, xlate, usage, long_options, main):
- Understand and cope with -k option.
-
-Sat Jul 1 12:25:15 1995 Fred Fish <fnf@cygnus.com>
-
- * ar.c: (extract_file): Change "#if POSIX_UTIME" to
- "#ifdef POSIX_UTIME" to match other tests of POSIX_UTIME
- and avoid lossage when POSIX_UTIME is not defined at all.
-
-Wed Jun 28 17:51:24 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- * ar.c: (print_contents.c, extract_file, do_quick_append):
- Malloc buffers rather than allocate on stack (so it works
- on NT).
- * deflex.l: Names can have an @ in them.
- * dlltool.c: Loads of stuff. Can now generate .imp files which
- work with NT .dlls.
-
-Thu Jun 22 19:10:50 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-make.in (demangle.c.o): Remove.
- (arparse.h): Depend on arparse.c instead of arparse.y.
-
-Wed Jun 21 17:32:45 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * Makefile.in (DISTSTUFF): Don't include info here.
- (diststuff): Include it here.
- (realclean): Remove *.info.
-
- * objdump.c (compare_relocs): If relocation entries have the same
- address, keep them in file order.
-
-Mon Jun 19 09:06:49 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- * dlltool.c: Change names of generated files. .*.s-> -*.s
-
- * objdump.c (dump_section_stabs): Check for names
- which are supersets of selected names.
-
-Wed Jun 14 19:43:52 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * dlltool.c (mtable, ARM jump): Must redirect via pc offsetable ptr.
-
-Wed Jun 14 13:27:22 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- * deflex.l, defparse.y, dlltool.c: New files.
- * Makefile.in, configure.in: Support for them.
-
-Mon Jun 12 11:27:54 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- * sysdump.c: Include sysdep.h
- (main): Open input with FOPEN_RB.
-
-Fri Jun 9 17:26:11 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * objdump.c (wide_output): New flag variable.
- (usage): Print new -w, --wide options.
- (long_options): Add --wide support.
- (dump_section_header): If --wide, don't print a newline between
- the section's first line and the flags.
- (objdump_print_address): Use unsigned comparisons for the binary
- search, not signed.
- (disassemble_data): If --wide, don't put a \n between the
- disassembly output and relocation information.
- (main): Support -w option being the same as --wide.
-
-Thu Jun 1 17:09:27 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- Sat May 6 08:52:24 1995 H.J. Lu (hjl@nynexst.com)
-
- * objcopy.c (smart_rename): make it smarter, clean up
- if rename () fails.
-
-Tue May 30 14:24:15 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * Makefile.in: Delete lines with lots of #### because four or more
- indicate a point for makefile fragment substitution.
-
-Tue May 9 17:17:05 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * configure.in: Don't build nlmconv on PowerPC eabi any more, it
- is not needed.
-
-Thu Apr 27 20:21:24 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * Makefile.in (EXPECT): Define.
- (RUNTEST): Use one in source tree if present.
- (check): Set `rootme' for $(EXPECT).
-
-Wed Apr 26 18:26:21 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- * srconv.c (main): Add support for -n option which disables
- prescan of common symbols.
- (wr_ob): If reading past the end of a section, fill with zeros.
-
-Tue Apr 25 19:14:37 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * objdump.c (dump_section_header): Display load address after
- virtual memory (run-time) address.
-
-Wed Apr 19 09:44:06 1995 Jason Merrill <jason@phydeaux.cygnus.com>
-
- * Makefile.in (cplus-dem.o): Pass -DVERSION='"$(VERSION)"' to the
- compile.
- (DEMANGLER_PROG): No longer uses version.o.
-
-Mon Apr 10 13:29:49 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- Merge in support for Mac MPW as a host.
- (Old change descriptions retained for informational value.)
-
- * mpw-config.in (TDEFINES): Define as empty in makefile frag.
-
- * mpw-config.in: Create mk.tmp, define ARCHDEFS in it.
-
- * mpw-config.in: New file, MPW configure fragment for binutils.
- * mpw-make.in (install-only): New target.
- (install): Also depend on install-only.
-
- * mpw-make.in (cplusfilt): Renamed from c++filt.
- (INCLUDES): Add more paths.
-
- * mpw-make.in: New file, MPW makefile fragment for binutils.
- (Normally automatically generated from Makefile.in.)
-
-Mon Mar 27 11:52:57 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ar.c (write_archive): Call make_tempname to get output file
- name, rather than using a fixed name based on the input file.
-
- * objcopy.c (make_tempname): Copy from here...
- * bucomm.c (make_tempname): ...to here, and make global.
- * bucomm.h (make_tempname): Declare.
-
-Fri Mar 24 11:47:42 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * strings.c: Include "bfd.h" before other headers. Include
- "sysdep.h".
- * bucomm.c (print_arelt_descr): Cast st_uid and st_gid to long,
- and print them with %ld.
-
-Fri Mar 10 13:09:42 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c (strip_options): Add --keep-symbol.
- (copy_options): Likewise.
- (copy_usage): Mention --keep-symbol and -K.
- (strip_usage): Likewise.
- (keep_symbols): New static variable.
- (is_strip_symbol): Adjust the return value according to
- keep_symbols.
- (strip_main): Handle -K. For -N, check that -K was not given.
- (copy_main): Likewise.
- * binutils.texi, objcopy.1, strip.1: Document -K.
-
-Mon Mar 6 13:33:47 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * objcopy.c (copy_archive): Check result of mkdir.
- (copy_main): Cast an xmalloc result.
-
- * objdump.c (usage): Break long format string into shorter ones.
-
-Mon Mar 6 13:46:12 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * bucomm.c (list_supported_targets): New function.
- * bucomm.h (list_supported_targets): Declare.
- * ar.c (usage): Call list_supported_targets.
- * nm.c (usage): Likewise.
- * objcopy.c (copy_usage, strip_usage): Likewise.
- * objdump.c (usage): Likewise.
- * size.c (usage): Likewise.
- * strings.c (usage): Likewise.
-
-Tue Feb 28 15:13:58 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * bucomm.c (print_arelt_descr): Cast st_size to long before
- passing it to fprintf.
-
-Fri Feb 17 13:36:45 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c (struct section_list): Add fields remove, set_flags,
- and flags. Change adjust from boolean to enum.
- (remove_sections): Remove static variable.
- (sections_removed): New static variable.
- (copy_options): Add --set-section-flags.
- (copy_usage): Mention --set-section-flags.
- (parse_flags): New static function.
- (find_section_list): New static function.
- (is_strip_symbol): Change return type from int to boolean.
- (is_strip_section): New static function.
- (filter_symbols): Call is_strip_section.
- (copy_object): When adding sections, check for specified flags or
- VMA. Call filter_symbols if any sections are being removed.
- (setup_section): Use find_section_list function rather than
- looking through remove_sections and adjust_sections. Handle
- --set-section-flags.
- (copy_section): Use find_section_list rather than looking through
- remove_sections.
- (strip_main): Use find_section_list instead of adding items to
- sections_removed.
- (copy_main): Use find_section_list instead of adding items to
- sections_removed and adjust_sections. Handle --set-section-flags.
- * binutils.texi, objcopy.1: Document --set-section-flags.
-
-Tue Feb 14 18:03:03 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (with_source_code): New global variable.
- (usage): Mention -S/--source.
- (long_options): Add --source.
- (prev_functionname, prev_line): New static variables.
- (struct print_file_list): Define.
- (print_files): New static variable.
- (skip_to_line, show_line): New static functions.
- (disassemble_data): Call show_line to handle -l and -S.
- (main): Handle -S.
- * binutils.texi, objdump.1: Document -S/--source.
-
-Thu Feb 9 16:11:53 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * objcopy.c (copy_usage): Rename parameter to avoid shadowing.
- (strip_usage): Likewise.
-
- * objcopy.c (struct section_add): Define.
- (add_sections): New static variable.
- (copy_options): Accept --add-section.
- (copy_usage): Mention --add-section.
- (copy_object): Add sections from the add_sections list.
- (copy_main): Handle --add-section.
- * binutils.texi, objcopy.1: Document --add-section.
-
-Wed Feb 1 15:04:57 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * objdump.c (disassemble_data): Pass section offset, not absolute
- address, to bfd_find_nearest_line.
-
- * nlmconv.c (powerpc_mangle_relocs): Don't use const with
- reloc_howto_type.
-
-Thu Jan 26 18:50:06 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * objdump.c (compare_symbols): Use bfd_asymbol_value (VAR) rather
- than VAR->value.
- (objdump_print_address): Likewise.
- (disassemble_data): Don't change the symbol values. It can
- confuse bfd_canonicalize_reloc.
-
-Thu Jan 26 12:03:56 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * configure.in: Add support for powerpc-*-ebai.
-
-Wed Jan 18 10:02:12 1995 Steve Chamberlain <sac@splat>
-
- * coffdump.c: Include sysdep.h.
- (dump_coff_type): Handle coff_secdef_type.
- * coffgrok.c : Include sysdep.h.
- * srconv.c: Include libiberty.h
- (absolute_p, dty_start, dty_end, dump_tree_structure): Remove.
-
-Wed Jan 18 12:24:14 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * coffdump.c (dump_coff_scope): Cast pointer to unsigned long for
- printf.
- * coffgrok.c: Include bucomm.h. Don't declare xmalloc.
- (push_scope): Declare type of parameter link.
- * size.c: Include libiberty.h.
- * srconv.c: Include bucomm.h.
- (find_base): Declare at top of file.
- (wr_hd): Add default case to architecture switch.
- (wr_dps_start): Declare type of parameter nest.
- (wr_du): Comment out variables used only in commented out blocks.
- (wr_dus): Remove unused variable i.
- (wr_sc): Remove unused variables myinfo, low, and high.
- * strings.c: Include libiberty.h.
- * sysdump.c: Include <ctype.h>.
-
-Tue Dec 20 19:13:44 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * ar.c (main): Ignore 'f' modifier used on HP/UX 9.
-
-Thu Dec 15 17:34:12 1994 Stan Shebs <shebs@andros.cygnus.com>
-
- * ar.c, nm.c, objcopy.c, objdump.c: Include progress.h.
- * ar.c, nm.c, objcopy.c, objdump.c (main): Add START_PROGRESS
- and END_PROGRESS.
- * ar.c (map_over_members, open_inarch): Call PROGRESS.
- * nm.c (main, display_archive, filter_symbols, print_symbols):
- Call PROGRESS.
-
- * objcopy.c (copy_usage): Break up long usage string.
-
-Wed Dec 14 15:51:56 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * objcopy.c (copy_object): Don't bother setting status after
- nonfatal() "call", because it won't return.
-
-Fri Dec 9 00:22:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (powerpc_mangle_relocs): Don't switch a reloc to use
- the section symbol if the symbol is undefined.
-
-Thu Dec 8 14:45:50 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * objcopy.c (add_strip_symbol): Cast return value of xmalloc.
-
-Wed Nov 30 11:05:43 1994 Ian Lance Taylor <ian@rtl.cygnus.com>
-
- * ar.c (replace_members): Pass current->filename to normalize when
- checking for duplicates, because the filename of a newly added
- file will not have been normalized yet.
-
-Thu Nov 17 15:00:13 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * ar.c (main): Don't call do_quick_append if any of the archive
- names are longer than 14 characters.
-
- * objcopy.c (main): Fix is_strip test. From
- pirker@eiunix.tuwien.ac.at (Martin Pirker).
-
-Thu Nov 17 15:37:19 1994 Mark W. Eichin <eichin@cygnus.com>
-
- * objcopy.c (add_strip_symbol): New function, adds a name to an
- explicit list of symbols to strip.
- (is_strip_symbol): New function, reports whether the name argument
- is in the explicit list.
- (filter_symbols): Check against is_strip_symbol above all.
- (strip_main): Recognize -N option. If used, don't default to
- strip_all.
- (copy_main): Recognize -N option.
- (strip_usage): Document -N and --strip-symbol options.
- (copy_usage): Ditto.
- * objcopy.1, strip.1, binutils.texi: Document -N and
- --strip-symbol options.
-
-Tue Nov 8 13:12:54 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * objdump.c (display_target_list, display_info_table): Pass an
- array to tmparg, rather than NULL, since some systems can't handle
- NULL.
-
- * objcopy.c (copy_archive): Keep a list of the names of the
- temporary files we created. Close each input BFD after we open
- its successor.
-
-Mon Nov 7 15:48:39 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * Makefile.in (VERSION): Bump to 2.5.3.
-
-Thu Nov 3 19:04:34 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * Makefile.in (install-info): Install info files from whatever
- directory they were found in.
-
- Patch from DJ Delorie:
- * configure.bat: do c++filt -> cxxfilt right
-
- * sysinfo.y: Include system header files early, so any potential
- declaration of abort() occurs before its use.
-
- * strings.c (strings_file): Try opening the file in binary mode
- first.
-
-Wed Nov 2 15:44:13 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * ar.c (main): Treat ar qs like ar rs.
-
-Tue Oct 25 16:19:25 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * objcopy.c (gap_fill): Explicitly initialize, for clarity.
- (pad_to_set, pad_to): New static variables.
- (copy_options): Accept --pad-to.
- (copy_usage): Mention --pad-to.
- (copy_object): Support --pad-to.
- (compare_section_vma): Sort non loadable sections to the front.
- Sort sections with the same VMA by size.
- (copy_main): Handle --pad-to.
- * binutils.texi, objcopy.1: Document --pad-to.
-
-Thu Oct 20 13:51:31 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * objcopy.c (gap_fill_set, gap_fill): New static variables.
- (copy_options): Accept --gap-fill.
- (copy_usage): Mention --gap-fill.
- (copy_object): Support --gap-fill.
- (get_sections, compare_section_vma): New static functions.
- (copy_main): Handle --gap-fill.
- * binutils.texi, objcopy.1: Document --gap-fill.
-
-Wed Oct 19 14:09:16 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * Makefile.in (check): Add a dummy else clause to the if
- statement.
-
- * objcopy.c (copy_object): Revert yesterday's change.
- * binutils.texi, objcopy.1: Remove special mention of --set-start
- and `binary' output format.
-
-Tue Oct 18 11:12:01 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * objcopy.c (copy_object): If the output file format is `binary',
- and the start address was not set using --set-start, default the
- start address to zero. This hack is because the `binary' output
- file format uses the start address to set the virtual address of
- the first byte in the file.
- * binutils.texi, objcopy.1: Add some notes on generating S-records
- and binary files.
-
- * nm.c (print_symdef_entry): Call print_symname to print the
- symbol name, so that --demangle works.
-
- * Makefile.in (mostlyclean): Remove tmpdir.
-
- * objcopy.c (struct section_list): Add fields used, adjust, val.
- (adjust_start, set_start_set, set_start): New static variables.
- (adjust_section_vma, adjust_sections): New static variables.
- (copy_options): Add --adjust-start, --adjust-vma,
- --adjust-section-vma, --adjust-warnings, --no-adjust-warnings,
- --set-start.
- (parse_vma): New static function.
- (copy_usage): Mention new options.
- (copy_object): Handle --set-start and --adjust-start.
- (setup_section): Correct type of last argument to PTR. Set used
- field if section is removed. Handle --adjust-vma and
- --adjust-section-vma.
- (copy_section): Correct type of last argument to PTR.
- (mark_symbols_used_in_relocations): Likewise.
- (strip_main): Clear used field when handling -R.
- (copy_main): Handle new options.
- * binutils.texi (objcopy): Document new options.
- * objcopy.1: Document new options.
-
-Fri Oct 14 14:38:13 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * configure.in (configdirs): Remove definition--testsuite is no
- longer configured.
- * Makefile.in (testsuite): Remove target.
- (site.exp): New target.
- (check): Rewrite.
- (clean, distclean): Don't recur into testsuite directory.
-
-Thu Oct 13 19:24:09 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * Makefile.in (VERSION): Updated to 2.5.
- * Version 2.5 released.
-
-Tue Oct 11 15:26:42 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * Makefile.in (sysdump.o): Depends upon sysroff.c.
-
-Mon Oct 10 13:50:30 1994 J.T. Conklin (jtc@rtl.cygnus.com)
-
- * nlmconv.c (link_inputs): Pass -Ur flag to ld so that the
- ctor/dtor tables needed by C++ programs are built.
-
-Sun Oct 9 18:04:00 1994 Jim Wilson (wilson@sphagnum.cygnus.com)
-
- * Makefile.in (srconv.o): Add dependence on sysroff.c.
-
-Tue Oct 4 12:19:51 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * configure.in: Use ${config_shell} when running config.bfd.
-
- * Makefile.in (sysroff.h): Split target away from sysroff.c.
- (srconv.o, sysdump.o): New targets.
- (srconv, sysdump): Don't depend upon sysroff.c.
-
-Wed Sep 28 13:04:34 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * Makefile.in (arparse.c): Don't ignore errors from mv.
- (sysinfo.c): Likewise. Also, depend upon arparse.c, to prevent a
- parallel make from trying to build both arparse.c and sysinfo.c
- simultaneously.
- (nlmheader.c): Similar change.
- (arparse.h): Separate target from arparse.c, so that a parallel
- make does not try to build both at once. Depend upon arparse.c.
- (sysinfo.h): Similar change.
-
- * objdump.c (disassemble_data): Pass the reloc buffer to free, not
- the pointer used to loop over the relocs.
-
-Sat Sep 24 16:16:57 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * objdump.c (disassemble_data): Cast result of xmalloc.
-
-Wed Sep 21 19:30:35 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * objdump.c (sorted_syms, sorted_symcount): New global variables.
- (objdump_print_address): Use sorted_syms and sorted_symcount
- instead of syms and symcount.
- (disassemble_data): Don't bother to get the relocs before looping
- over the sections. Before filtering and sorting the symbol table,
- copy it into sorted_syms.
-
-Fri Sep 16 11:27:39 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * objdump.c (struct objdump_disasm_info): Add field require_sec.
- (objdump_print_address): If aux->require_sec, require that the
- symbol be in aux->sec even if HAS_RELOC is not set. If we can't
- find a smaller symbol in the right section, look for a larger one.
- (disassemble_data): Set aux.require_sec around the
- objdump_print_address call for the instruction address.
-
-Thu Sep 15 21:43:17 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ar.c: Call xexit rather than exit.
- (output_filename, output_file, output_bfd): New static variables.
- (remove_output): New static function.
- (main): Call xatexit (remove_output). Call xexit rather than
- returning.
- (extract_file): Set output_filename and output_file while output
- file is open.
- (write_archive): Likewise, but use output_bfd, not output_file.
- * arsup.c: Include libiberty.h. Call xexit rather than exit.
- * bucomm.c: Likewise.
-
- * objdump.c (disassemble_all): New global variable.
- (usage): Document --disassemble-all.
- (long_options): Add disassemble-all as a synonym for -D.
- (compare_symbols): Make pointers const.
- (compare_relocs): New static function.
- (disassemble_data): Rename disassemble to disassemble_fn to avoid
- shadowing. If dump_reloc_info, print relocs along with
- disassembly. Skip sections which are not SEC_CODE unless
- disassemble_all or only is set.
- (display_bfd): Don't call dump_relocs if disassemble is set.
- (main): Accept and handle -D.
- * binutils.texi: Document -D/--disassemble-all.
- * objdump.1: Likewise.
-
-Wed Sep 14 12:19:07 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * objdump.c (disassemble_data): Initialize prevline to 0. Make
- prev_function non const. Copy functionname into an malloc buffer
- when setting prev_function, instead of assuming that the string
- will last forever.
-
- * nm.c: Include libiberty.h.
- (sort_by_size): New static variable.
- (long_options): Add --size-sort.
- (usage): Mention --size-sort.
- (numeric_forward): Make static. Change from void * to PTR.
- (numeric_reverse): Likewise.
- (non_numeric_forward, non_numeric_reverse): Likewise.
- (sorters): Change declaration from void * to PTR.
- (size_forward, sort_symbol_by_size): New static functions.
- (display_rel_file): Handle sort_by_size.
- (filter_symbols): If sort_by_size, discard absolute and undefined
- symbols.
- * binutils.texi (nm): Document --size-sort.
- * nm.1: Document --size-sort.
-
-Tue Sep 13 21:06:06 1994 Jeff Law (law@snake.cs.utah.edu)
-
- * objcopy.c (copy_main): Initialize input_filename and
- output_filename to NULL.
-
-Tue Sep 13 14:17:24 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * Makefile.in (version.o): Depend upon Makefile, so that version.o
- gets rebuilt when make variable VERSION is changed.
-
- * objdump.c (dump_section_header): Print the SEC_NEVER_LOAD flag.
-
-Wed Aug 24 12:40:09 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * configure.in: Change i[34]86 to i[345]86.
-
-Tue Aug 23 11:00:40 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * ar.c (ranlib_touch): Don't update the archive map if there isn't
- one.
-
-Mon Aug 22 16:02:18 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * ar.c: Include libiberty.h.
- (inarch): Remove variable.
- (map_over_members): Make static. Add arch argument, and use it
- instead of inarch. Change all callers.
- (main): Treat --version as -v. Accept -t argument. Accept any
- number of archive arguments. Catch and use open_inarch return
- value, rather than using inarch.
- (open_inarch): Return newly opened BFD, rather than using inarch.
- (do_quick_append): Make archive_filename const.
- (write_archive): Add iarch argument, and use it instead of inarch.
- Change all callers.
- (delete_members, move_members, replace_members): Likewise.
- (ranlib_only): Don't exit on success. Catch and use open_inarch
- return value.
- (ranlib_touch): New function.
- * arsup.h (map_over_members): Don't declare.
- (ar_end, ar_extract): Declare.
- (open_inarch): Change return value in declaration to bfd *.
- * arsup.c (map_over_list): Make static. Always pass two arguments
- to function. Add arch argument, and use it instead of inarch.
- Change all callers.
- (ar_directory_doer): Make static. Add ignored second argument.
- Change all callers.
- (ar_directory): Use open_inarch return value rather than inarch.
- (ar_addlib_doer): Make static.
- (ar_addlib): Use open_inarch return value rather than inarch.
- (ar_extract): Remove unused local variable abfd.
-
-Thu Aug 11 14:55:57 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- Add support for removing named sections to objcopy and strip.
- * objcopy.c (struct section_list): Define.
- (remove_sections): New static variable.
- (strip_options, copy_options): Add remove-section.
- (copy_usage, strip_usage): Mention -R and --remove-section.
- (setup_section): If section is in remove_sections list, ignore it.
- (copy_section): Likewise.
- (strip_main, copy_main): Handle -R.
- * binutils.texi, objcopy.1, strip.1: Document new options.
-
-Wed Aug 10 10:19:55 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * nlmconv.c (powerpc_mangle_relocs): Rename symvalue to sym_value,
- so as not to conflict with the symvalue typedef in bfd.h.
-
-Mon Aug 1 13:19:09 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * nlmheader.y: Per current NetWare docs, accept a revision number
- of 0 and treat a revision number greater than 26 as 0.
-
-Mon Jul 25 12:58:36 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * objdump.c (objdump_print_address): Correct handling of end of
- symbols when looking for next symbol with a different value.
-
-Fri Jul 22 16:48:34 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * nm.c (numeric_forward): Treat undefined symbols as "less than"
- defined symbols with zero values. If numeric values are equal, or
- both symbols are undefined, sort alphabetically. Don't assume
- that the difference of two bfd_vma values will truncate to "int"
- and still have the same sign.
- (numeric_reverse): Call numeric_forward and negate the result.
- (print_symbol_info_bsd): For undefined symbols, print leading
- spaces equivalent to the width of a printed bfd_vma, rather than
- assuming that 8 will look right.
-
-Fri Jul 22 10:36:50 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * coffgrok.c (doit): Zero all fields of new structure.
- * srconv.c (sysroff_swap_*_out): Remove redundant trailing arg.
- * sysinfo.y: Generate sysroff_swap_*_out without requiring extra
- arg.
-
-Fri Jul 22 10:09:53 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
-
- * nlmheader.y: Make "stack" and "stacksize" synonyms in the lexer
- rather than the parser.
-
-Thu Jul 21 10:25:09 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * config/mh-alphaosf, config/mh-apollo68v, config/mh-delta88:
- Remove; obsolete.
-
-Sat Jul 16 22:34:39 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * objdump.c (slurp_dynamic_symtab): Try to get the dynamic symbols
- even if the bfd is not marked DYNAMIC. ELF executables are not
- marked DYNAMIC, but do have dynamic symbols.
-
-Fri Jul 15 01:41:35 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * coffgrok.c (do_where): Make data with no type 'int'.
- (do_define): Keep info on source file of a symbol.
- * coffgrok.h (coff_symbol): New field.
- * srconv.c (PROGRAM_VERSION): Now 1.3
- (wr_rl): Use external ref number for symbol.
- (wr_dus): Only keep one source file per debug unit.
- (wr_dln): Always emit line numbers for first source file,
- (wr_globals): Emit globals in the du of their owning source file.
-
-Mon Jul 11 15:59:03 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
-
- * nlmheader.y: Null terminate var_hdr->threadName.
-
-Fri Jul 8 17:33:22 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * Makefile.in (syslex.o, sysinfo.o): Permit C source files to be
- in $(srcdir), as they will be for FSF releases.
-
-Wed Jul 6 01:13:14 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (setup_sections): Preserve existing section flags when
- copying in flags from a new section.
-
-Tue Jul 5 15:56:01 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * objcopy.c: Include libiberty.h.
- (copy_file): If output_target is NULL, set it to the target of the
- input file.
-
-Wed Jun 29 17:17:14 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
-
- * nlmconv.c (link_inputs): Fixed memory allocation bug.
-
-Thu Jun 23 12:52:46 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * configure.in: Change --with-targets to --enable-targets.
-
-Tue Jun 21 12:53:21 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * Makefile.in (sysinfo): Does not depend upon $(ADDL_LIBS).
-
- * nlmconv.c (powerpc_build_stubs): Don't generate the PowerPC
- NetWare custom header; no longer needed.
- (powerpc_mangle_relocs): Convert relocs against the uninitialized
- data section into relocs against the data section.
-
- * configure.in: Set nlmconv_defs to -DNLMCONV_cputype for all the
- netware targets. Write it into Makefile as NLMCONV_DEFS.
- * Makefile.in (nlmconv.o): Pass $(NLMCONV_DEFS) to $(CC).
- * nlmconv.c: Only compile code for specific CPU types if
- NLMCONV_cputype is defined.
-
- * nlmconv.c (main): Change uses of bfd_abs_section, etc., to use
- bfd_abs_section_ptr or bfd_is_abs_section, etc.
- (i386_mangle_relocs, alpha_mangle_relocs): Likewise.
- (powerpc_build_stubs): Likewise.
- * nm.c (filter_symbols, print_symbols): Likewise.
- * objcopy.c (filter_symbols): Likewise.
- (mark_symbols_used_in_relocations): Likewise.
- * objdump.c (remove_useless_symbols, dump_relocs): Likewise.
- * size.c (sysv_internal_printer): Likewise.
-
-Mon Jun 20 16:43:03 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * Makefile.in (MANPAGES): Remove $(DEMANGLER_PROG).
- (install): Install it explicitly, from build dir, not srcdir.
-
-Mon Jun 20 16:29:54 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * objdump.c: Don't include elf/internal.h.
- (bfd_elf_find_section): Don't declare.
- (read_section_stabs): No special handling for ELF. Always read
- using BFD sections.
-
-Thu Jun 16 17:25:20 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * configure.in: Set UNDERSCORE in Makefile based on result of
- invoking config.bfd with a second argument of ``_''.
- * Makefile.in (underscore.c): Depend upon Makefile. Don't try to
- run $(CC) and $(NM), just use $(UNDERSCORE). Create via temporary
- file.
- (demangle.o): Remove target.
- ($(NM_PROG)): Don't depend upon demangle.o, and don't link against
- demangle.o. It's in libiberty anyhow.
- (cplus-dem.o): Don't depend upon demangle.o.
- * binutils.texi: Mention -n and --no-strip-underscores arguments
- to c++filt.
-
-Wed Jun 15 12:10:31 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nm.c (long_options): Add --no-demangle to turn off --demangle,
- and --no-cplus for Linux compatibility.
- (usage): Mention --no-demangle.
- * binutils.texi: Document --no-demangle.
-
-Fri Jun 10 15:41:25 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nm.c: HOST_64_BIT was renamed to BFD_HOST_64_BIT.
-
- * objcopy.c (copy_archive): Make the temporary directory in the
- same directory as the output BFD, since we may not have write
- permission on the current directory. Set the permissions of the
- new directory to 0700, not 0777.
-
-Mon Jun 6 21:36:43 1994 D. V. Henkel-Wallace (gumby@cygnus.com)
-
- * configure.in: if this is an rs6000 (and we're not building for
- any other bfd targets) then build only nm (collect needs it on
- rs6000-lynx).
-
- * Makefile.in: define TOOL_PROGS which the list of programes to
- install in $tooldir -- replaces a hard-coded list.
-
-Fri Jun 3 10:59:18 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * objdump.c (display_target_list): Remove unused local ok.
-
-Thu May 26 18:05:52 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * config/mh-alphaosf (CFLAGS): Don't specify both -g and -O;
- they're not compatible under native cc. Use -O1 instead.
-
- * Makefile.in (VERSION): Updated to cygnus-2.4.1.
-
- Changes from binutils-2.4 net release:
-
- * Makefile.in (MANPAGES): Use $(DEMANGLER_PROG).
- ($(DEMANGLER_PROG).1): Build from cxxfilt.man, using sed.
- * cxxfilt.man: Renamed from c++filt.1, replaced "c++filt" with
- magic token to be replaced by sed.
-
- Wed May 11 22:32:00 1994 DJ Delorie (dj@ctron.com)
-
- * configure.bat: update for latest makefile.in
-
-Fri May 13 23:25:13 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * bucomm.c: Check ANSI_PROTOTYPES rather than __STDC__.
-
-Tue May 10 18:22:06 1994 Jason Molenda (crash@sendai.cygnus.com)
-
- * objcopy.c (copy_section): Set section size correctly if using
- interleave.
-
-Sat May 7 16:49:36 1994 Steve Chamberlain (sac@cygnus.com)
-
- * Makefile.in: Add rule for sysinfo.h
-
-Fri May 6 12:18:33 1994 Steve Chamberlain (sac@cygnus.com)
-
- * Makefile.in (SRCONV_PROG): Define.
- (PROGS): Use $(SRCONV_PROG) too.
-
-Thu May 5 19:41:43 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * Makefile.in (DISTSTUFF): Add sysinfo.c, syslex.c, in case
- someone configures with `targets=all'.
- (distclean): Remove y.*.
- (syslex.o): Depend on sysinfo.h.
- (sysinfo.c): Rename y.tab.h to sysinfo.h.
- (install-info): Don't try to install into $(infodir)/$(srcdir).
- * syslex.l: Include sysinfo.h, not y.tab.h.
-
-Thu May 5 11:50:55 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com)
-
- * syslex.l (yywrap): Define as function if not defined as a macro.
-
- * Makefile.in (objdump.o): Deleted special rule.
- * configure.in: Don't bother building ARCHDEFS variable for
- Makefile.
- * objdump.c (ARCH_*): Deleted handling.
- (disassemble_data): Call `disassembler' from opcodes library.
-
-Thu May 5 13:28:42 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * Makefile.in (install): Correct handling of $(tooldir) and
- $(bindir) being on different devices.
-
-Fri Apr 29 09:50:38 1994 Steve Chamberlain (sac@cygnus.com)
-
- * sysdump.c (h8300, sh): Add declarations.
-
-Wed Apr 27 11:25:18 1994 Steve Chamberlain (sac@cygnus.com)
-
- * Makefile.in (syslex, sysinfo): Use CC_FOR_BUILD.
- * coffdump.c, coffgroc.c, coffgrog.h, srconv.c, sysdump.c,
- sysroff.info: Major changes.
-
-Tue Apr 26 18:18:24 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * objdump.c (print_section_stabs): Indicate the stab header symbol
- more clearly, print numbers of unrecognized stab n_type values.
-
-Tue Apr 26 16:22:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (copy_sections): Copy arelent pointers, not arelents.
-
-Mon Apr 25 16:14:32 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * Makefile.in (distclean): Remove $(PROGS) and underscore.c.
-
-Fri Apr 22 11:14:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (setup_sections): Remove special handling of .reginfo
- section.
- (copy_sections): Likewise.
- (alpha_mangle_relocs): Use bfd_ecoff_get_gp_value rather than the
- special ECOFF .reginfo section.
-
- * objcopy.c (copy_object): Call bfd_copy_private_bfd_data after
- copying everything else, to let it fiddle with the file in its
- final state.
-
- * objdump.c: Include libiberty.h.
- (display_target_list): If a format fails, just go on to the next
- one. Check return value of bfd_set_format.
- (display_info_table): Likewise. Don't increment loop variable in
- for loop test, since that skips the first element.
- (display_target_tables): Rewrite loop for clarity. Ensure that it
- always prints at least one element.
-
- * nlmconv.c (main): Use CyGnUsEx rather than CyGnUsSeCs for
- sections header. Rename from cygnus_sections to cygnus_ext.
-
-Thu Apr 21 12:12:26 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * objdump.c (_DUMMY_NAME_): Don't define.
- (display_target_list): Use tmpnam to get a file name rather than
- using _DUMMY_NAME_. Unlink it when done.
- (display_info_table): Likewise.
-
- * nlmconv.c (secsec): New static variable.
- (main): Create .nlmsections section in output BFD. Store
- information about it in sections header.
- (setup_sections): Allocate space in sections header.
- (copy_sections): Copy zero sized sections. Put information about
- each section in the sections header.
-
-Wed Apr 20 14:34:51 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (powerpc_build_stubs): Take new outbfd argument.
- Change caller. Create custom header for new PowerPC NetWare
- format.
-
- * Makefile.in (nlmheader.o, nlmconv.o): Update dependencies.
- * nlmconv.c: Include bfd.h and libiberty.h with "", not <>.
- * nlmheader.y: Include bfd.h with "", not <>.
-
-Wed Apr 13 10:52:50 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * objdump.c: Do an ifdef on __GO32__, not unix.
-
-Wed Apr 6 21:54:49 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- Added -D (--dynamic) option to nm and -T (--dynamic-syms) and -R
- (--dynamic-reloc) arguments to objdump.
- * nm.c (dynamic): New static variable.
- (long_options): Added "dynamic".
- (usage): Mention -D and --dynamic.
- (main): Add D to getopt string. Handle -D by setting dynamic.
- (display_rel_file): If dynamic is non-zero, read dynamic symbols
- rather than normal symbols.
- * nm.1: Updated for -D (--dynamic) option.
- * objdump.c (dump_dynamic_symtab): New global variable.
- (dump_dynamic_reloc_info): New global variable.
- (dynsyms, dynsymcount): New global variables.
- (usage): Mention -R, -T, --dynamic-syms and --dynamic-reloc.
- (long_options): Added "dynamic-reloc" and "dynamic-syms".
- (slurp_symtab): If no symbols, return rather than exit.
- (slurp_dynamic_symtab): New function.
- (display_bfd): Handle dump_dynamic_symtab and
- dump_dynamic_reloc_info.
- (dump_symbols): Take new dynamic argument, indicating whether to
- display dynamic symbols.
- (dump_relocs): Move most printing into dump_reloc_set.
- (dump_dynamic_relocs): New function.
- (dump_reloc_set): New function, extracted from dump_relocs.
- (main): Add R and T to getopt string. Handle -T by setting
- dump_dynamic_symtab and -R by setting dump_dynamic_reloc_info.
- * objdump.1: Updated for -R (--dynamic-reloc) and -T
- (--dynamic-syms) options.
- * binutils.texi: Updated for new nm and objdump options.
-
-Wed Mar 30 15:52:40 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- Update for recent BFD changes to symbol and reloc reading. Rename
- all uses of get_symtab_upper_bound to bfd_get_symtab_upper_bound.
- Also:
- * coffgrok.c (symcount): Change to long.
- (do_sections_p1): Check for error return from
- bfd_get_reloc_upper_bound. Change relcount to long, and check for
- error from bfd_canonicalize_reloc.
- (coff_grok): Change storage to long. Check for error from
- bfd_get_symtab_upper_bound and bfd_canonicalize_symtab.
- * nlmconv.c (main): Change symcount, newsymalloc, newsymcount, and
- i to long. Check for error from bfd_get_symtab_upper_bound and
- bfd_canonicalize_symtab.
- (copy_sections): Change reloc_size and reloc_count to long. Check
- for error from bfd_get_reloc_upper_bound and
- bfd_canonicalize_reloc.
- (mangle_relocs, i386_mangle_relocs, alpha_mangle_relocs): Change
- reloc_count_ptr argument to long *. Make corresponding changes to
- variables loaded from *reloc_count_ptr.
- * nm.c (display_rel_file): Change storage and symcount to long.
- Check for errors from bfd_get_symtab_upper_bound and
- bfd_canonicalize_symtab.
- * objcopy.c (filter_symbols): Change symcount, src_count and
- dst_count to long.
- (copy_object): Change symcount to long. Pass another argument to
- fprintf. Check for errors from bfd_get_symtab_upper_bound and
- bfd_canonicalize_symtab.
- (copy_section): Change relcount to long. Check for errors from
- bfd_get_reloc_upper_bound and bfd_canonicalize_reloc.
- (mark_symbols_used_in_relocations): Change relcount and i to long.
- Check for errors form bfd_get_reloc_upper_bound and
- bfd_canonicalize_reloc.
- * objdump.c (storage): Remove global variable.
- (symcount): Changed to long.
- (slurp_symtab): New local variable storage. Check for errors from
- bfd_get_symtab_upper_bound and bfd_canonicalize_symtab.
- (remove_useless_symbols): Change return value and count to long.
- (objdump_print_address): Change min, max, thisplace and i to long.
- (disassemble_data): Change i to long.
- (dump_symbols): Change count to long.
- (dump_relocs): Change relcount to long. Check for errors from
- bfd_ret_reloc_upper_bound and bfd_canonicalize_reloc.
- (display_info_table): Add casts when passing LONGEST_ARCH for
- printf %* argument.
-
-Tue Mar 29 14:59:04 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nm.c (display_archive): Close each archive element after it has
- been displayed.
- * objdump.c (display_file): Likewise.
-
-Mon Mar 28 13:04:08 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * configure.in: Change error message to refer to bfd/config.bfd
- rather than bfd/configure.in.
-
-Sun Mar 27 16:23:39 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * More fixes for object formats which allow multiple sections
- with the same name:
- * objcopy.c (setup_section): Make a new output section even if
- one already exists with the given name.
- (copy_section): Use isection->output_section rather than trying
- to look the output section up by its (possibly non-unique) name.
-
- * Makefile.in (install-info): Look for binutils.info in the
- current directory, then in $(srcdir). Don't use $<.
-
-Mon Mar 21 12:55:45 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * objdump.c (objdump_print_address): Make static. Declare with
- prototype. Change vardiff from int to bfd_signed_vma. Correct
- binary search termination condition. When looking for same
- section symbol in relocatable file, handle final symbol correctly.
-
-Sun Mar 20 11:26:36 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * Makefile.in: Avoid bug in hpux sed.
-
- * objcopy.c: Changes to keep it from stripping symbols used
- in output relocations.
- (mark_symbols_used_in_relocations): New function. Mark symbols
- used in output relocations with BSF_KEEP.
- (filter_symbols): Do not strip symbols marked with BSF_KEEP.
- (copy_object): Reorder actions. First setup sections, then
- build the output symbol table, then copy the section contents.
-
-Fri Mar 18 10:53:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ar.c (write_archive): Allocate space for the null byte. From
- Robert Lipe <robertl@arnet.com>.
-
-Thu Mar 17 16:20:28 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * Makefile.in: Built nm.new and strip.new to avoid problems with
- collect when . is in PATH.
- (STRIP_PROG): Change from strip to strip.new.
- (NM_PROG): Change from nm to nm.new.
- (install): Remove the .new when installing.
-
-Wed Mar 16 16:27:05 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (powerpc_build_stubs): Set BSF_DYNAMIC flag for each
- symbol for which we build a stub.
- (powerpc_mangle_relocs): Only reset TOC pointer for a call to a
- symbol with BSF_DYNAMIC flag set.
-
-Tue Mar 15 23:04:13 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * objcopy.c (filter_symbols): Use bfd_is_local_label to determine
- if a symbol represents a compiler-generated local label.
- (copy_object): Give the BFD backends a chance to copy any private
- bfd data from the input BFD to the output BFD.
- (setup_section): Give the BFD backends a chance to copy any private
- section data from the input section to the output section.
-
-Mon Mar 14 11:15:58 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * objcopy.c (mangle_section): Delete unused function.
- (setup_section): Set osection here instead of calling
- mangle section to do it.
-
-Mon Mar 14 12:11:01 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ar.c (write_archive): Close inarch before unlinking it.
-
-Fri Mar 11 22:20:48 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (main): For PowerPC, call powerpc_build_stubs and
- powerpc_resolve_stubs. Use __GOT0, not __toc_start. Handle it if
- the start and end symbols are not in the text section.
- (struct powerpc_stub): New struct definition.
- (powerpc_stubs, powerpc_stub_insns): New static variables.
- (powerpc_initial_got_size): New static variable.
- (powerpc_build_stubs): New function.
- (powerpc_resolve_stubs): New function.
- (powerpc_mangle_relocs): Clear extraneous data in .got section.
- Rearrange reloc handling to handle ELF relocs that are not
- partial_inplace. Resolve PC relative relocs.
-
-Wed Mar 9 13:48:11 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * ar.c (move_members): Fix it so that the abi positional modifiers
- don't delete all archive members following the insert point.
-
-Tue Mar 8 13:14:43 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * coffgrok.[ch]: New files, understand coff objects.
- * coffdump.c: Uses coffgrok to dump out the debug info of a coff
- file.
- * sysroff.info: Description of a SYSROFF object file.
- * sysinfo.y, syslex.l: Parse info file, generate a reader, writer,
- header files and a printer.
- * srconv.c: Uses coffgrok.c and sysroff.info to convert a coff
- file to a SYSROFF file.
-
-Sat Feb 26 13:35:26 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * ar.c (do_quick_append): Pad with a genuine character 10,
- rather than whatever '\n' might happen to be.
-
-Tue Feb 22 18:25:52 1994 Ian Lance Taylor (ian@cygnus.com)
-
- * nlmconv.c (main): Ignore debugging symbols when looking for
- special symbols by name.
-
-Sun Feb 20 18:47:42 1994 Ian Lance Taylor (ian@lisa.cygnus.com)
-
- * nlmconv.c: Include libiberty.h.
-
- Support for PowerPC NetWare.
- * nlmconv.c (main): For PowerPC NetWare, automatically define the
- special symbols __toc_start.
- (select_output_format): Handle bfd_arch_powerpc.
- (mangle_relocs): Likewise.
- (powerpc_mangle_relocs): New function.
-
-Thu Feb 17 09:28:23 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ar.c, bucomm.c, nlmconv.c, nm.c, objcopy.c, objdump.c,
- size.c: Use bfd_get_error and bfd_set_error and new error names.
-
-Fri Feb 11 15:54:51 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * objcopy.c (strip_main, copy_main): Add missing 'break' in switch.
-
-Mon Feb 7 19:45:52 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * objdump.c (disassemble_data): Handle bfd_arch_powerpc.
-
-Sun Feb 6 22:08:20 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * strings.c objdump.c nlmconv.c objcopy.c nm.c ar.c size.c (main):
- Call xmalloc_set_program_name.
-
-Fri Feb 4 10:46:01 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * objcopy.c (filter_bytes): Make MEMHUNK a char *, not PTR, so we
- can do arithmetic on it.
-
-Thu Feb 3 14:06:41 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * objdump.c (dump_section_stabs, read_section_stabs,
- print_section_stabs): Functions broken out of dump_stabs_1.
- Free the stabs and strings when done with them.
-
-Wed Feb 2 13:42:23 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * nlmconv.c (main): Use bfd_get_flavour instead of struct member.
- * ar.c (print_contents, extract_file), size.c
- (print_berkeley_format, print_sysv_format): Use bfd_get_filename and
- bfd_my_archive instead of dereferencing the structs directly.
-
- * ar.c: Use bfd_fatal and bfd_nonfatal instead of bfd_perror and exit.
- Indent. Remove DEFUNs.
-
- * nlmconv.c (main), objcopy.c (copy_file): Print matching formats
- if ambiguous match.
- * nm.c (display_file, display_archive), size.c (display_bfd):
- Eliminate gotos.
- Print matching formats if there is an ambiguous match. Use
- bfd_nonfatal instead of hardcoded error message if nothing matches.
-
- * arsup.c, ar.c, objdump.c: Use bfd_get_filename instead of
- abfd->filename.
-
- * nm.c (display_archive): New function, from code in display_file.
- (display_rel_file): Renamed from do_one_rel_file.
-
- * size.c: Indent.
- (display_archive): New function from code in display_file.
- (display_file): Check bfd_close error return.
-
- * strings.c (strings_object_file): Check bfd_check_format
- error return.
-
- * strings.c, objdump.c, size.c: Use bfd_nonfatal instead of bfd_perror.
-
- * bucomm.c: Delete references to exit_handler. It wasn't set
- anywhere, and now that we're using the libiberty xmalloc, it
- wouldn't always get called before exiting.
- (list_matching_formats): Function moved from objdump.c.
- * bucomm.h: Declare it.
-
- * objdump.c (disassemble_data): Move some variable decls closer to
- their use. Add some comments. Replace a nested block with a
- return.
-
-Mon Jan 31 18:50:41 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * objdump.c (display_target_list, display_info_table): Check that
- the bfd of the dummy output file is not null.
-
-Wed Jan 26 13:13:18 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * objcopy.c (filter_bytes): New function.
- (copy_section): Call it.
- (copy_options, copy_usage, copy_main): Add --byte option to
- activate it. Appropriate the -b option (which was an undocumented
- synonym for -F) for it, also. Add --interleave, -i option for
- additional control.
- (setup_section, copy_section, mangle_section): Renamed with no `s'
- on the end.
- * objcopy.1, binutils.texi: Document the new options.
-
- * objdump.c (display_target_tables, display_target_list):
- New functions broken out of display_info.
- Eliminate some magic constants. Use more meaningful variable names.
- (dump_bfd_header): New function broken out of display_bfd.
- (dump_section_header): New function broken out of dump_headers.
- (remove_useless_symbols): Don't shadow global variable name with
- parameter.
- (objdump_print_address): Fix backward test.
-
-Tue Jan 25 19:40:54 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * bucomm.c (print_arelt_descr): Change decl of `when' to time_t.
- * objdump.h: Removed.
-
-Mon Jan 24 13:29:02 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * objdump.c (display_file): Remove call to list_matching_formats.
- It would never be called.
- (list_matching_formats): Take an arg giving the list of matching
- formats.
- (display_bfd): Pass the arg, and get it filled in by calling
- bfd_check_format_matches instead of bfd_check_format.
- (display_info, display_info_table): target_vector was renamed to
- bfd_target_vector.
-
- * binutils.texi (objdump): Note some limitations of -h section
- address printing.
-
-Sat Jan 22 16:20:46 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * Makefile.in (MALLOC): Set to emptiness by default.
- (ALL_CFLAGS): Add and use.
- (arparse.h): Make it depend on arparse.y.
- * ar.c (libbfd.h): Don't require to be in ../bfd.
- * objdump.c (comp): Rename to compare_symbols.
-
-Fri Jan 21 20:22:30 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * objdump.c (list_matching_formats): If the file format is ambiguous,
- print the matching names so the user can choose one.
- (display_bfd): Call it.
- (display_file): Call it.
-
-Fri Jan 21 19:17:25 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * objdump.c (disassemble_data): Support bfd_arch_rs6000.
-
-Mon Jan 17 13:57:25 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * objdump.c (stab_name): Allocate dynamically.
- (stab_print): Use pointers to strings instead of char arrays.
- (dump_stabs): Change alloc and init of arrays appropriately.
- (dump_stabs_1): Always decide whether to print stab_name or
- the stab's type number, if unnamed.
-
-Fri Jan 14 14:42:48 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * objcopy.c (strip_main, copy_main): Don't clobber the input file
- if copy_file fails.
-
- * nlmconv.c (main): Warn about an attempt to use a shared library
- with uninitialized data.
-
- * nlmconv.c (setup_sections): Make sure that we align the
- output_offset of each input section appropriately.
-
-Thu Jan 13 17:32:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * objdump.c (dump_relocs): Don't crash if section name is NULL.
-
-Tue Jan 11 19:46:33 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * filemode.c (filemodestring): Commented out; not used.
- (mode_string): Use POSIX definitions.
- (ftypelet): Likewise.
- (rwx): Removed; no longer used.
- * bucomm.c: Include bucomm.h.
- (bfd_nonfatal, bfd_fatal): Argument is const.
- (fatal): Make __STDC__ version.
- * bucomm.h (mode_string): Declare.
- * Makefile.in (bucomm.o): Depend upon bucomm.h
-
-Sun Jan 9 12:03:20 1994 Ken Raeburn (raeburn@rtl.cygnus.com)
-
- * bucomm.c (xmalloc, xrealloc): Deleted.
- * bucomm.h (xmalloc, xrealloc): Fix prototypes, to correspond to
- libiberty version of functions.
-
-Thu Jan 6 06:18:15 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * binutils.texi: Add a chapter summarizing the ways to select
- aspects of the target for each program.
-
- * objdump.c (long_options, usage): Add long equivalents for all
- remaining short options that lacked them.
- * binutils.texi objdump.1: Document them.
-
- * size.c (usage): Tweak usage message.
- * size.1: Add missing `=' in examples.
-
- * binutils.texi strip.1 objcopy.1 nlmconv.1 objcopy.c nlmconv.c:
- Use "--target=bfdname" as the option to select the BFD target,
- like nm and size already do.
- Reserve "--format=format" for textual output selection options, but
- for now keep old option names as obsolete for backward compatibility.
-
- * strings.c (main, strings_object_file, usage): Add --target option.
- * binutils.texi strings.1: Document it.
-
-Sat Jan 1 13:58:24 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ar.c (main): Add \n in error message.
-
-Thu Dec 23 12:23:11 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- gcc -Wall lint:
- * ar.c (main): Put parens around assignment used as truth value.
- * objcopy.c (strip_main): Remove unused variables. Return 0.
- (copy_main): Remove unused variables. Return 0.
- * objdump.c (display_bfd): Declare return value as void.
- (stab_print): Use "" instead of 0 to initialize array.
- (dump_stabs_1): Print vma using printf_vma.
- (display_info): Put parens around assignment used as truth value.
- * strings.c (print_strings): Cast printf arguments.
-
- * objcopy.c (copy_main): Use copy_options, not strip_options.
-
- * nlmheader.y (command): Warn about illegal date values.
-
-Wed Dec 15 11:18:03 1993 David J. MacKenzie (djm@frosty.eng.umd.edu)
-
- * bucomm.c bucomm.h: Run through indent. De-ansidecl-ify.
- (bfd_nonfatal): New function.
- (bfd_fatal): Call it.
-
- * objcopy.c (smart_rename): Do a copy if the dest file has
- multiple hard links. Remove source file on successful copy.
- Try to preserve mode and owner on successful rename.
-
- * objcopy.c: Run through indent. Clean up a bit.
- Make global variables static.
- Make {input,output}_{target,filename}, show_version local
- to various functions.
- New global variable `status' for exit status.
- (strip_main, copy_main): New functions with code from main.
- (nonfatal): New macro. Use it globally instead of bfd_perror and
- bfd_fatal.
-
- (copy_object): Call mangle_sections with bfd_map_over_sections.
- (mangle_sections): Adjust for new calling convention.
-
-Fri Dec 10 11:28:11 1993 Ian Lance Taylor (ian@deneb.cygnus.com)
-
- * nlmheader.y (command): Accept MAP and FULLMAP without arguments.
- * nlmconv.c (main): Change error message for MAP and FULLMAP.
-
-Thu Dec 9 17:47:19 1993 Ian Lance Taylor (ian@deneb.cygnus.com)
-
- * nlmconv.c (main): Warn about imported symbols that are not in
- the IMPORT list even if the IMPORT keyword is not used.
-
- * nlmconv.c (debug, unlink_on_exit): New static variables.
- (long_options): Add "debug" and "linker".
- (main): Handle -d and -l arguments. Make command line input and
- output files optional. Parse the command file before opening the
- BFD's, which requires storing more information in local variables.
- If INPUT names multiple files, link them together. Use OUTPUT for
- the output file name if not named on command line.
- (show_usage): Changed for new options.
- (link_inputs): New function to automatically invoke linker to
- handle multiple INPUT files.
- (choose_temp_base_try, choose_temp_base, pexecute): New functions,
- mostly copied from gcc/gcc.c.
- * nlmconv.h (input_files, output_file): Declare.
- * nlmheader.y (input_files, output_file): Define.
- (command): Support INPUT with a string_list argument. Support
- OUTPUT.
- (string_list): Renamed from module_list.
- * Makefile.in (nlmconv.o): Define LD_NAME based on
- program_transform_name.
-
-Wed Dec 8 10:09:04 1993 Ian Lance Taylor (ian@deneb.cygnus.com)
-
- * nlmheader.y (nlmheader_identify): New function. Use it to print
- the program name just once, instead of with every error message.
-
-Mon Dec 6 16:11:32 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (long_options): Changed --header-info to --header-file
- to match documentation and usage message.
-
-Sun Dec 5 01:31:01 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * objdump.c (dump_relocs): Avoid dereferencing a NULL sym_ptr_ptr
- in a relocation.
-
-Thu Dec 2 16:00:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (main): Change various types from bfd_size_type to
- size_t, since they have to be arguments to fread and fwrite.
- Change set from char * to unsigned char *.
- (select_output_format): Make mach argument unsigned. Handle
- bfd_arch_alpha.
- (setup_sections): Don't copy the .reginfo section of an ECOFF
- file. Call bfd_set_reloc to initialize the relocation fields.
- (copy_sections): Don't copy the .reginfo section of an ECOFF file.
- Combine all relocs for a section.
- (mangle_relocs): Change type of relocs to permit specific
- functions to change it. Call alpha_mangle_relocs for alpha,
- default_mangle_relocs for other architectures.
- (default_mangle_relocs): New function. Adjust the address of all
- relocs by the output_offset.
- (i386_mangle_relocs): Change type of relocs argument. Cast length
- argument to memmove to size_t.
- (alpha_mangle_relocs): New function.
-
-Wed Nov 17 17:38:58 1993 Sean Eric Fagan (sef@cygnus.com)
-
- * nlmconv.c (select_output_format): Use nlm32-sparc for
- bfd_arch_sparc.
-
-Wed Nov 17 14:41:35 1993 Jeffrey Osier (jeffrey@thepub.cygnus.com)
-
- * nlmconv.1: added man page
- * objcopy.1: fixed format errors
-
-Wed Nov 17 12:03:41 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * Makefile.in: Use CFLAGS as well as LDFLAGS when linking.
-
-Wed Nov 17 04:50:55 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * strings.1: Fix typo.
-
-Mon Nov 15 12:03:20 1993 Ken Raeburn (raeburn@rtl.cygnus.com)
-
- * Makefile.in (DISTSTUFF): Build "info".
- (VERSION): Updated to cygnus-2.3.1; 2.3 has gone out.
-
-Sun Nov 14 00:27:24 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * objdump.c (dump_stabs): Handle stabs-in-som as implemented
- by the new BFD SOM assembler.
-
-Sat Nov 13 07:14:05 1993 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * ar.1 c++filt.1 nm.1 objcopy.1 objdump.1 ranlib.1 size.1
- strings.1 strip.1: Replace \(em in NAME section with \- so
- makewhatis can grok it.
-
-Tue Nov 9 15:22:12 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (i386_mangle_relocs): Adjust reloc address by
- section output_offset.
-
-Fri Nov 5 12:11:52 1993 Jeffrey Osier (jeffrey@thepub.cygnus.com)
-
- * binutils.texi: added nlmconv chapter
-
-Wed Nov 3 16:10:50 1993 Jeffrey Wheat (cassidy@cygnus.com)
-
- * Makefile.in: Change RUNTESTFLAGS to RUNTEST_FLAGS
-
-Wed Nov 3 15:09:23 1993 Ken Raeburn (raeburn@rover.cygnus.com)
-
- * Makefile.in (distclean): Don't get rid of dvi or info files.
-
-Tue Nov 2 13:29:59 1993 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * objcopy.c (S_ISLNK): Define as 0 if there's no S_IFLNK.
-
-Fri Oct 29 16:02:34 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * binutils.texi: Move objcopy docs into alphabetical order.
-
- * objdump.c: Use xmalloc instead of malloc.
-
-Fri Oct 29 11:11:14 1993 Stan Shebs (shebs@rtl.cygnus.com)
-
- * objdump.c (info): Rename to formats_info.
- (dump_stabs_1): Better comments and formatting.
-
-Thu Oct 28 19:43:16 1993 Stan Shebs (shebs@rtl.cygnus.com)
-
- * ar.c (main): Always create the archive when quick appending,
- even if no input files have been given.
-
-Wed Oct 27 12:03:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (main): Set sharedDebugRecordOffset and
- sharedDebugRecordCount fields in extended header.
-
- * nlmconv.c (main): Force moduleName field to upper case.
-
-Mon Oct 25 16:45:42 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * objcopy.c (main): Give a usage message if there are too many
- arguments.
-
-Mon Oct 25 10:37:08 1993 Ken Raeburn (raeburn@rover.cygnus.com)
-
- * Makefile.in (install-info): Rewrite to take advantage of VPATH,
- so FSF distributions (with info files in $(srcdir)) install
- properly.
- (DISTSTUFF): Build nlmheader.c too.
-
-Fri Oct 22 11:43:23 1993 Ken Raeburn (raeburn@rover.cygnus.com)
-
- * ar.c (program_name): Don't define here.
- * objdump.c: Include "bucomm.h".
- (xmalloc): Don't declare here.
- (program_name): Don't define here.
- (program_version): Fixed type in declaration.
- * size.c: Include "bucomm.h".
- (program_name): Don't declare here.
-
-Fri Oct 22 14:10:41 1993 Mark Eichin (eichin@cygnus.com)
-
- * objdump.c (fprintf): hide declaration in FPRINTF_ALREADY_DECLARED
-
-Fri Oct 1 12:43:00 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (i386_mangle_relocs): Resolve and remove PC relative
- relocs against defined symbols in the same section.
-
-Thu Sep 30 16:46:26 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
-
- * Makefile.in (binutils.dvi): use TEXIDIR to find texinfo.tex
-
-Sat Sep 25 18:09:29 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * objcopy.c (simple_copy, smart_rename): New functions.
- (main): Use them.
-
-Fri Sep 24 15:38:29 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * Makefile.in (clean, distclean): Recurse into testsuite.
-
-Thu Sep 23 01:05:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * objcopy.c (setup_sections, copy_sections): If stripping, don't
- copy SEC_DEBUGGING sections.
- * objdump.c (dump_headers): Print SEC_DEBUGGING flag.
-
- * objdump.c (usage): Mention --stabs.
-
- * objcopy.c (copy_object): Copy all applicable file flags.
- (copy_file): Don't copy EXEC_P specially here.
-
-Mon Sep 20 19:28:57 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (main): Adjust data section size to correspond to bss
- alignment adjustment. Clear BSF_SECTION_SYM if symbol is moved to
- a different section. Use time_t for time variable.
- (setup_sections): Only put sections with contents in output NLM.
- (i386_mangle_relocs): No symbols are common at this point. Add
- casts to avoid warnings.
-
-Fri Sep 10 11:00:40 1993 Stan Shebs (shebs@rtl.cygnus.com)
-
- * objdump.c: Made the --stabs option work for stabs-in-coff.
- (ELF_STAB_DISPLAY): Removed.
- (dump_elf_stabs): Renamed to dump_stabs, changed to run for
- any object file format.
- (dump_elf_stabs_1): Renamed to dump_stabs_1, added calls to
- generic BFD routines for non-ELF case, changed format of message
- for no-section-found case.
- (display_bfd): Always call dump_stabs if requested.
- (dump_data): Call bfd_section_size to get section size.
-
-Fri Sep 10 08:12:23 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * Makefile.in (install): Don't put strings in tooldir/bin.
-
-Mon Sep 6 15:39:04 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (total_bss_size): Removed.
- (main): Set the bss vma to always follow the data section. Move
- symbols into new sections, and adjust values by output_offset.
- (setup_sections): Don't copy all sections, but instead point all
- text sections to .text, all data sections to .data, and all bss
- sections to .bss.
- (copy_sections): Adjust accordingly.
-
-Thu Sep 2 12:34:03 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- Only build nlmconv if configured for a NetWare target.
- * configure.in: If we have some *-*-netware* target, or are using
- all targets, set BUILD_NLMCONV to $(NLMCONV_PROG) in Makefile.
- * Makefile.in (PROGS): Use $(BUILD_NLMCONV) rather than
- $(NLMCONV_PROG).
-
-Tue Aug 31 14:13:35 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * objdump.c (ARCH_all): Define ARCH_hppa too.
- (dump_headers): Don't test for SEC_BALIGN if it's not defined by
- bfd.h.
-
-Tue Aug 31 13:29:12 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * nlmconv.c (main): Force creation of .bss section. Set up the
- sections before looking at the symbols. Move all common symbols
- into .bss section. Automatically define _edata and _end. Only
- export symbols in the export list, with multiple prefixes if
- necessary. Warn if no version. Always create extended header.
- Set date automatically if not already set.
- (setup_sections): Count size of bss sections.
- (mangle_relocs, i386_mangle_relocs): Accept section argument, and
- take reloc_count as a changeable pointer; changed callers.
- (i386_mangle_relocs): Remove PC relative relocs within a section,
- as they require no adjustment.
- * nlmheader.y: Fixed memory allocation throughout: token STRING is
- now allocated on the heap, and freed if not needed. Null
- terminated copyright message. Accept version with only two
- strings.
- (symbol_list_opt): New nonterminal, either symbol_list or empty.
- (symbol_list): Use left recursion to avoid overflowing parser
- stack.
- (yylex): Rearranged beginning of line check. Accept quoted
- strings using single quotes. End generic argument at comment
- character or parentheses.
- (string_list_append): Fixed.
- (string_list_append1): New function.
-
- * bucomm.h: The first argument to xrealloc is PTR, not char *.
- * bucomm.c (xrealloc): Use PTR rather than char *.
- * Makefile.in (objdump.o): Depend upon config.status to notice
- --with-targets changes.
- (nlmconv.o): Depend upon bucomm.h.
-
-Tue Aug 17 09:46:01 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * configure.in: Don't pass cpu to config.bfd.
-
-Thu Aug 12 16:43:04 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * Makefile.in ($(NM_PROG)): Depend on demangle.o.
- (demangle.o): New target.
- (cplus-dem.o): Depend on it, to force compilation order when doing
- parallel compiles.
-
- * nm.c (print_symbol_info_{bsd,sysv,posix}): Take a bfd arg.
- (struct output_fns print_symbol_info): Ditto.
- (long_options, usage, main): Add -C --demangle option.
- (print_symname): New function, demangling if requested.
- (print_symbols, print_symbol_info_{bsd,sysv,posix}): Use it.
-
-Wed Aug 11 22:57:23 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * Makefile.in: Put CFLAGS last in compilation rules and omit from
- linking rules. Use ARCHDEFS to compile objdump.c.
- Update dependencies.
- * configure.in: Construct ARCHDEFS based on the BFD target makefile
- fragments.
- * objdump.c: Conditionalize calls to the print_insn_ARCH functions
- according to ARCHDEFS.
-
-Thu Aug 12 08:06:15 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * ar.c: Removed obsolete and non-functional GNU960 code.
-
-Wed Aug 11 13:08:26 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * size.c (berkeley_sum): New function.
- (bsssize, datasize, textsize): New global variables.
- (bss_section_name, data_section_name, text_section_name): Removed.
- (print_berkeley_format): Map berkeley_sum over all the sections,
- rather than only reporting sizes of specifically named sections.
- * Makefile.in ($(OBJDUMP_PROG)): Removed dependency on size.o.
-
-Tue Aug 10 10:46:01 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * nlmconv.c, nlmconv.h, nlmheader.y: New files for program to
- convert object files into NetWare Loadable Modules.
- * Makefile.in (NLMCONV_PROG): New macro, define to be nlmconv.
- (PROGS): Add NLMCONV_PROG.
- (nlmheader.c, nlmheader.o, nlmconv.o, $(NLMCONV_PROG)): New
- targets.
-
-Thu Aug 5 15:48:32 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
-
- * Makefile.in: define MAKEOVERRIDES to an empty string
-
-Wed Aug 4 17:08:08 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * objcopy.c (copy_file): Make failures to process a file nonfatal.
-
-Mon Aug 2 11:28:23 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * nm.c: Add -B option, like --format=bsd.
-
-Tue Jul 27 16:29:54 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * objcopy.c (copy_file): If the file is neither an object nor an
- archive, give an error rather than returning success.
-
-Mon Jul 19 16:13:40 1993 Ken Raeburn (raeburn@rtl.cygnus.com)
-
- * objdump.c (objdump_print_address): Prefer non-local symbols over
- local ones, and especially discriminate against debugging symbols.
- Also, for relocateable files, try to find a symbol in the current
- section, instead of picking one from some random section with a
- convenient value (read, section offset).
- (disassemble_data): Cast argument to malloc to size_t first.
- (dump_data): Likewise.
- (dump_relocs): If a single section name is specified, show relocs
- only for that section. Otherwise, silently omit sections without
- relocs. Format table nicely even if values are printed using 16
- digits instead of 8.
-
-Fri Jul 16 15:19:59 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * nm.c: Changes for final version of POSIX.2.
- (print_symbol_filename_{bsd,sysv,posix}): New functions.
- (formats): Add an element for a pointer to them.
- (print_symbols): Call it.
- (print_object_filename_posix, print_archive_member_posix): Produce
- output according to new POSIX.2 spec.
-
- * strings.c (print_strings): Handle STREAM being NULL.
- (strings_a_section): Pass a NULL.
- (main): Don't open /dev/null.
-
-Thu Jul 15 12:44:09 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * objdump.c (disassemble_data): Handle the m88k.
- (display_bfd): Use bfd_errmsg, rather than just claiming that the
- bfd is not an object file.
-
-Mon Jul 12 17:55:34 1993 K. Richard Pixley (rich@cygnus.com)
-
- * Makefile.in (TAGS): make work again by naming directories
- explicitly rather than depending on undefined macros.
- (INSTALL_XFORM): correct bad install target.
-
-Fri Jul 2 16:58:34 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * strings.c: Doc fixes.
-
-Sun Jun 27 13:35:24 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * Makefile.in: Note dependencies on bucomm.h.
- (cplus-dem.o): Link c++filt with version.o.
-
- * strings.c: Include bucomm.h and add prototypes to other decls.
- Remove -h option.
-
- * bucomm.h: Declare xrealloc.
-
- * nm.c, objcopy.c, objdump.c, size.c, strings.c (main, usage): Add
- --help option. Put "GNU" in the version message.
- (usage): Take stream and exit status as args.
- (main): Pass new args to usage.
-
-Fri Jun 25 23:12:12 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * strings.c, strings.1: New files.
- * binutils.texi: Document strings.
- * Makefile.in: Add rules for it.
-
-Fri Jun 25 20:44:43 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
-
- * objdump.c: Use size-independent bfd elf section names.
-
-Sun Jun 20 23:09:06 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
-
- * objdump.c (objdump_print_address): Handle wide offsets by
- calling sprintf_vma.
-
-Fri Jun 18 14:29:12 1993 Per Bothner (bothner@deneb.cygnus.com)
-
- * objdump.c (syms2): Removed unused variable.
- * objdump.c (remove_useless_symbols): New function.
- * objdump.c (comp): Simplify.
- * objdump.c (dis-assemble_data): Make simpler and more
- efficient how we filter out useless symbols: Just filter
- BEFORE the sort (using remove_useless_symbols).
- * objdump.c (objdump_print_address): Simplify.
- Change output syntax to match gdb.
-
-Thu Jun 17 16:53:56 1993 david d `zoo' zuhn (zoo@cygnus.com)
-
- * Makefile.in: canonicalize install.sh; for use within
- this directory (and subdirs)
-
-Mon Jun 14 12:13:22 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com)
-
- * Makefile.in (install, install-info): remove parentdir support,
- use INSTALL_XFORM; define INSTALL_XFORM
-
-Thu Jun 10 17:29:21 1993 Per Bothner (bothner@cygnus.com)
-
- * objcopy.c (copy_object): Fix bad size passed to xmalloc().
-
-Mon Jun 7 12:41:12 1993 Per Bothner (bothner@rtl.cygnus.com)
-
- * Makefile.in (INCLUDES): Add -I../bfd for sysdep.h and bfd.h.
- * configure.in: No longer need to configure to get sysdep.h.
- * objcopy.c (copy_object): Fix symbol table handling.
-
-Fri Jun 4 17:20:03 1993 Per Bothner (bothner@cygnus.com)
-
- * objcopy.c (filter_symbols): Cannot filter the symbols
- in place, because that confuses the relocs, so take separate
- parameter for output array.
- * objcopy.c (sympp): Make two variables: isympp and osympp.
- * objcopy.c (copy_object): Allocate separate array (osympp)
- for filtered symbols.
-
-Fri Jun 4 10:51:44 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Makefile.in: change recursion test to presence of a configured
- testsuite directory
-
-Thu Jun 3 14:05:57 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * Makefile.in (underscore.c): Hack the backquoted command so it
- doesn't cause Solaris make to bomb.
-
-Thu Jun 3 10:40:19 1993 Jeffrey Osier (jeffrey@cygnus.com)
-
- * Makefile.in: added c++filt and objcopy to MANPAGES variable
-
-Thu Jun 3 00:32:52 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Makefile.in: rename LOADLIBES to EXTRALIBS
-
-Wed Jun 2 18:30:24 1993 Jeffrey Osier (jeffrey@cygnus.com)
-
- * c++filt.1, objcopy.1: new man pages
-
-Fri May 28 15:01:24 1993 Per Bothner (bothner@rtl.cygnus.com)
-
- * Makefile.in (install): Also install ar and ranlib in
- $(tooldir)/bin; needed for building libgcc.a.
- * objdump.c (objdump_print_address): Fix the check
- "coincidental" label matches by dis-allowing undefined
- or com symbols.
-
-Thu May 27 16:58:31 1993 Jeffrey Osier (jeffrey@cygnus.com)
-
- * biutils.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)
-
- * 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.
-
-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)
-
- * 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.
-
-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.tex: Document yesterday's changes to strip and copy.
-
-Wed Oct 14 13:22:14 1992 Per Bothner (bothner@cygnus.com)
-
- * copy.c: Re-do command-line parsing to use getopt_long().
- Add long option names. Re-think option letters to be more
- consistent.
- * copy.c: New function filter_symbols() for stripping only
- debug-symbols and/or local symbols. Use these to support
- the previously-missing options of the old FSF strip.
-
-Tue Oct 13 01:24:20 1992 John Gilmore (gnu@cygnus.com)
-
- * configure.in (host): Use ${srcdir}/../bfd/configure.host rather
- than repeating a copy of it here.
-
-Wed Oct 7 12:53:52 1992 Ken Raeburn (raeburn@cygnus.com)
-
- * copy.c (main): Even if is_strip, accept -d argument indicating
- alternate output format. Needed by gdb for Nindy.
-
- * m68k-pinsn.c (print_insn_arg): Handle new "`" operand type.
-
-Tue Oct 6 16:33:56 1992 Jeffrey Osier (jeffrey@cygnus.com)
-
- * binutils.texi: added documentation for "copy"
-
-Tue Oct 6 14:22:56 1992 Per Bothner (bothner at PersSony)
-
- * Makefile.in (*clean rules): Some cleaning up.
- * Makefile.in (dist): Make diststuff in gprof for a dist.
-
- * ar.c (do_show_version): New function.
- * ar.c (main): Fix so "ar -V" works.
-
-Thu Oct 1 22:44:45 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * configure.in: now uses the cpu-vendor-os triple instead of
- nested cases.
-
-Fri Sep 25 22:41:08 1992 John Gilmore (gnu@cygnus.com)
-
- * i960-pinsn.c: Change bzero to memset.
- * sparc-pinsn.c: Change index to strchr.
-
-Mon Sep 21 14:39:56 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * m68k-pinsn (print_insn_arg, fetch_arg): added support for
- operands to memory management instructions, from WRS.
-
-Tue Sep 15 15:26:38 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in (install): if $(tooldir) exists, install nm and
- strip in $(tooldir)/bin.
-
-Thu Sep 3 11:57:40 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * Makefile.in: Let's call it version 2.0.
-
-Wed Sep 2 00:25:13 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * Makefile.in: Bump to version 0.98.
- * TODO, README: Minor updates.
-
- * Makefile.in: Added mostlyclean, distclean rules,
- and cleaned up clean, realclean.
-
-Sun Aug 30 21:18:59 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in: map program names through program_transform_name
- when installing.
-
-Sun Aug 30 18:09:03 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * Makefile.in: Bump to versions 1.97.90.
- * cplus-dem.c: Removed. Was nowhere used - and if some
- programs are changed to to demangling should now use the
- versions in libiberty.
-
-Thu Aug 27 12:58:09 1992 Brendan Kehoe (brendan@cygnus.com)
-
- * configure.in: add we32k
-
-Mon Aug 24 14:53:42 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ar.c (map_over_members): if the element of the archive has a
- null name, fill it in.
-
- * nm.c (do_one_rel_file): only warn if a bfd's flags say there
- will be symbols and there aren't any.
-
-Wed Aug 19 11:20:25 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * m68k-pinsn.c: handle new operand type 'r', introduced for cas2.
-
-Tue Aug 18 20:45:48 1992 Rob Savoye (rob@cygnus.com)
-
- * nm.c objdump.c: Added support for a +version (-V)
- to print the version number.
-
- * ar.c, copy.c: Added support for a -V option to print
- the version number.
-
-Tue Aug 18 13:28:44 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * config/mh-apollo68v: removed -g from CC definition.
-
- * Makefile.in: always create installation directories.
-
-Mon Aug 17 18:33:41 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * m68k-pinsn.c: Minor fix in style of output (don't use
- range to indicate floating point control registers).
-
-Tue Aug 11 23:42:21 1992 Per Bothner (bothner@cygnus.com)
-
- * ar.c (main): Don't *always* set the verbose flag!
-
-Wed Aug 5 11:25:27 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * copy.c: When is_strip (because it is invoked as the strip
- program), follow traditional argv processing:
- 'strip file1 file2' now strips file1 and file2, rather
- than stripping file1 (as input), leaving output in file2.
-
-Mon Jul 27 16:28:08 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * objdump.c (display_info, display_info_table): Call
- bfd_set_format() on dummy bfd before using it (twice).
- * ar.c: Make sure archive is created on command 'r'
- even when no elements are inserted. (Clean up and
- simplify some non-working related code.)
-
-Mon Jul 20 02:48:38 1992 D. V. Henkel-Wallace (gumby@cygnus.com)
-
- * configure.in: hppa support doesn't assume hp OS (from sef).
-
-Sat Jul 18 14:35:22 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * configure.in: recognize hppa hosts (bsd & hpux), error messages
- to stderr, not stdout
-
-Fri Jul 17 18:39:44 1992 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * ar.1, binutils.texi, i960-pinsn.c, nm.1, objdump.1, ranlib.1,
- size.1, sparc-pinsn.c, strip.1: removed rcsid's.
-
-Thu Jul 16 16:55:24 1992 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * Makefile.dos: removed rcsid.
-
-Thu Jul 16 08:23:07 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * objdump.c (display_bfd): print state of BFD_IS_RELAXABLE too
-
-Tue Jun 30 20:26:15 1992 D. V. Henkel-Wallace (gumby@cygnus.com)
-
- * Makefile.in: Add program_suffix (parallel to program_prefix)
-
-Thu Jun 25 04:52:45 1992 John Gilmore (gnu at cygnus.com)
-
- * nm.c (sorters): Lint. Remove excess whitespace.
-
-Wed Jun 24 13:48:07 1992 Per Bothner (bothner@cygnus.com)
-
- * nm.c (valueof macro): Add missing parentheses.
- (Their lack screwed up numeric_forward().)
-
-Sun Jun 14 10:33:27 1992 John Gilmore (gnu at cygnus.com)
-
- * objdump.c (dump_elf_stabs): Also dump .stab.index and
- .stab.excl sections.
- (dump_elf_stabs_1): Split out main body of old dump_elf_stabs.
- * objdump.1, binutils.texi: Document new sections dumped.
-
-Fri Jun 12 22:23:35 1992 John Gilmore (gnu at cygnus.com)
-
- * size.c, objdump.c, bucomm.c: Lint.
-
-Thu Jun 11 01:19:06 1992 John Gilmore (gnu at cygnus.com)
-
- * objdump.c (dump_elf_stabs): New feature: --stabs prints out a
- .stab section from an ELF file. Installed under #ifdef
- ELF_STAB_DISPLAY so it can be easily disabled, since it requires
- bfd-internals header files and such.
- * objdump.1, binutils.texi: Update for --stabs. Also fix
- objdump's doc to use -- rather than + for long options.
- (FIXME: Not yet fixed everywhere in binutils.texinfo.)
-
-Wed Jun 10 07:53:24 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * objdump.c(display_info), patches from
- mohring@informatik.tu-muenchen.de to print the table much more
- nicely.
-
-Thu May 28 13:36:16 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * objdump.c: Add another enum->int cast, for the sake of
- old compilers (such as PCC).
-
-Wed May 27 13:01:44 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * arlex.l: Don't include <sysdep.h> (unneeded conflicts).
- Add declaration of strdup().
-
-Fri May 22 13:40:37 1992 Per Bothner (bothner@cygnus.com)
-
- * Makefile.in: Use srcdir instead of VPATH in ldgram/ldlex
- rules, since these are used when building a distribution.
- * Makefile.in (arlex.c): Don't re-direct output, since that
- leaves a bogus output files if it fails.
-
- * arlex.l: Make work with lex, for what it's worth.
- * Makefile.in: Better lex support.
- * Makefile.in (dist): Generate flex and bison outputs
- for distribution.
-
-Thu May 14 17:17:59 1992 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * Makefile.in: get BISON definition right.
-
-Fri May 8 07:47:08 1992 K. Richard Pixley (rich@cygnus.com)
-
- * sanity.sh: default TMPDIR to ".".
-
-Thu May 7 12:34:50 1992 Roland H. Pesch (pesch@fowanton.cygnus.com)
-
- * binutils.texi: add doc for ar command language.
-
-Wed May 6 18:05:36 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * arparse.y: make END call ar_end
- * arsup.c (ar_end): added, deletes temp file if archive session
- aborted.
-
-
-Wed May 6 11:08:53 1992 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * Makefile.in: use bison & flex from ../ if they exist. Also,
- FLEX->LEX.
-
- * sanity.sh: remove temporary directory when finished.
-
-Tue May 5 12:00:58 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * Makefile.in: Bump to version 1.97.
- * ar.c: Declare errno for machines that need it.
-
-Mon May 4 23:29:51 1992 John Gilmore (gnu@cygnus.com)
-
- * objdump.c (display_info): Handle error cases without coredump.
- Close the dummy temporary file we open in the loop.
- * Makefile.in (arsup.o): Add kludge to build with Sun Make.
-
-Fri May 1 16:20:23 1992 K. Richard Pixley (rich@cygnus.com)
-
- * Makefile.in: added test-install target.
-
- * sanity.sh: new file.
-
- * Makefile.in: use sanity test on make check.
-
-Tue Apr 21 13:38:37 1992 K. Richard Pixley (rich@cygnus.com)
-
- * Makefile.in: rework CFLAGS so that they can be passed on the
- command line to make. Remove MINUS_G. Default CFLAGS to -g.
-
-Wed Apr 15 14:33:07 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * arsup.c, arsup.h, arparse.y, arlex.l: support for archive
- scripting language.
-
-Fri Mar 6 21:54:53 1992 K. Richard Pixley (rich@cygnus.com)
-
- * Makefile.in: added check target.
-
-Thu Mar 5 21:35:49 1992 K. Richard Pixley (rich@cygnus.com)
-
- * Makefile.in: added clean-info target.
-
-Tue Mar 3 15:36:37 1992 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * Makefile.in: remove $(COPY_PROG) from PROGS. It shouldn't be
- installed. added tooldir and program_prefix.
-
-Wed Feb 26 18:04:40 1992 K. Richard Pixley (rich@cygnus.com)
-
- * Makefile.in, configure.in: removed traces of namesubdir,
- -subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced
- copyrights to '92, changed some from Cygnus to FSF.
-
-Sun Feb 16 12:53:02 1992 Per Bothner (bothner at cygnus.com)
-
- * Makefile.in: Bump version to 1.96, and remove -beta
- suffix from distribution name.
- * m68k-pinsn.c: New macro COERCE_SIGNED_CHAR to extract
- the signed value of a character (even if chars are unsigned).
- * sparc-pinsn.c: Add new operand types.
-
-Thu Feb 6 12:14:19 1992 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * objdump.c (disassemble_data): don't print a section's contents
- if it's not loadable (eg bss)
-
-Tue Jan 28 11:11:06 1992 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * m68k-pinsn.c (print_insn_arg): fixed so that -ve branch
- displacements don't get printed as large +ve ones.
-
-Fri Jan 24 14:47:53 1992 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * copy.c, nm.c, objdump.c, size.c : changed to use the
- new reloc scheme.
-
-
-Mon Dec 30 18:34:41 1991 Per Bothner (bothner at cygnus.com)
-
- * bucomm.c (print_arelt_descr): Tweek the output format
- so that 'ar tv' output follows Posix 1003.2/D11.
- Output is now also identical to Sun's (except __.SYMDEF).
-
-Mon Dec 30 06:09:53 1991 John Gilmore (gnu at cygnus.com)
-
- * Makefile.in: Make `make' output more readable.
-
-Wed Dec 18 15:04:45 1991 Per Bothner (bothner at cygnus.com)
-
- * Makefile.in: Bump to version 1.94.
-
-Wed Dec 11 16:48:09 1991 Steve Chamberlain (sac at cygnus.com)
-
- * ar.c: added "b" to fopens for dos
- * configdj.bat, makefile.dos new files from DJ
-
-Tue Dec 10 04:07:26 1991 K. Richard Pixley (rich at rtl.cygnus.com)
-
- * Makefile.in: infodir belongs in datadir.
-
-Sat Dec 7 17:09:37 1991 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * bucomm.h: created to hold prototypes of bucomm.c
- * objdump.h: created to hold prototyes of objdump.c
- * am29k-pinsn.c: include objdump.h
- * ar.c: include bucomm.h, get ar.h from the right place and
- include libbfd.h
- * bucomm.c: defunize bfd_fatal
- * copy.c: include bucomm.h, lint.
- * i960-pinsn.h: include bucomm.h
- * m68k-pinsn.h: lint
- * nm.c: include bucomm.h, lint
- * objdump.c: lint
- * sparc-pinsn.c: include objdump.h
-
-
-
-Fri Dec 6 23:02:14 1991 K. Richard Pixley (rich at rtl.cygnus.com)
-
- * Makefile.in: added standards.text support. install using
- INSTALL_PROGRAM and INSTALL_DATA.
-
- * configure.in: configure now does all of it's work from objdir so
- make file existence tests against ${srcdir}.
-
-Thu Dec 5 22:46:22 1991 K. Richard Pixley (rich at rtl.cygnus.com)
-
- * Makefile.in: idestdir and ddestdir go away. Added copyrights
- and shift gpl to v2. Added ChangeLog if it didn't exist. docdir
- and mandir now keyed off datadir by default.
-
-Wed Dec 4 22:42:03 1991 Per Bothner (bothner at cygnus.com)
-
- * Makefile.in: Bump to version 1.93.
- * Makefile.in: Add make-strip.o:maybe-strip.c dependency
- for make versions that provide half-baked VPATH-support (e.g. Sun's).
- * size.c: Improvements suggested by
- "david d [zoo] zuhn" <zoo@aps1.spa.umn.edu>:
- - Don't emit (Berkeley) headers if no files were found.
- - Return a non-zero return code on failure.
-
-Sat Nov 30 21:34:19 1991 Steve Chamberlain (sac at rtl.cygnus.com)
-
- Changes due to include file renaming:
- * am29k-pinsn.c: a29k-opcode.h -> opcode/a29k.h
- * sparc-pinsn.c: sparc-opcode.h -> opcode/sparc.h
- * m68k-pinsn.c: m68k-opcode.h -> opcode/m68k.h
- * nm.c: stab.gnu.h -> aout/stab_gnu.h
-
-Tue Nov 19 19:20:43 1991 Per Bothner (bothner at cygnus.com)
-
- * README: Mention MINIMIZE flag for bfd's make.
-
-Mon Nov 18 12:05:37 1991 Per Bothner (bothner at cygnus.com)
-
- * README: Various improvements.
-
-Sun Nov 17 23:40:59 1991 Per Bothner (bothner at cygnus.com)
-
- * Makefile.in: Bump to version 1.92.
- * version.c, Makefile.in: Get version string from Makefile.
- * copy.c, is-strip.c, not-strip.c, maybe-strip.c, Makefile.in:
- Make the same change that we earlier did for ar/ranlib:
- Generate two different binaries for strip and copy and use
- a global variable with different values to distinguish
- ostrip from copy. (-1 means to use argv[0] to decide,
- so you can get the old behavior, but it is no longer the default).
- * copy.c (copy_file): Set EXEC_P of output bfd if input is so.
- * copy.c (main): If is_strip==-1, compare last 5 chars
- of argv[0], not the whole path.
- * copy.c (main): Return 0, not 1.
- * copy.c (setup_sections): Fix due to change in bfd_make_section
- now failing if asked for a duplicate section.
- * strip.c, ostrip.c: Removed obsolete files.
- * ar.c, not-ranlib.c, maybe-ranlib.c:
- Change encoding of is_ranlib variable to be consistent
- with is_strip for strip.copy (i.e -1 to means use argv[0]).
-
-Thu Nov 14 20:11:02 1991 Per Bothner (bothner at cygnus.com)
-
- * version.c (program_version): Update to version 1.92.
-
-Tue Nov 12 16:17:53 1991 Per Bothner (bothner at cygnus.com)
-
- * ar.c (get_pos_bfd): Previous fix was missing a "break".
-
-Thu Nov 7 08:55:56 1991 Steve Chamberlain (sac at cygnus.com)
-
- * am29k-pinsn.c: Fixed bug in mtacc, dmac and fmac instruction
- encodings. (Thaks to David Wood)
-
-Sun Nov 3 14:50:23 1991 Per Bothner (bothner at cygnus.com)
-
- * Makefile.in ($(DIST_NAME).tar.Z), TODO: Various fixes.
- * ar.c (get_pos_bfd): Fix to handling of before/after
- positioning options.
- * bucomm.c (fatal): MISSING_VFPRINTF is no longer an issue,
- since libiberty contains vfprintf etc if otherwise missing.
- * m68k-pinsn.c (print_insn_arg): Support BB/BW/BL
- type operands, as used by branch instructions.
- * nm.c: Delegate printing of symbols to BFD,
- by using bfd_print_symbol to do the formatting.
-
-Mon Oct 28 11:20:47 1991 Steve Chamberlain (steve at cygnus.com)
-
- * ar.c (write_archive.c): added unlink before rename since some
- systems can't rename onto an existant file.
-
-Mon Oct 21 09:47:23 1991 Steve Chamberlain (steve at rtl.cygnus.com)
-
- * nm.c: now doesn't crash if a symbol with no section and no
- SEC_ABS appears.
-
-Thu Oct 17 15:25:50 1991 Per Bothner (bothner at cygnus.com)
-
- * Makefile.in, version.c: Bump to version 1.91.
-
-Wed Oct 16 11:45:36 1991 Per Bothner (bothner at cygnus.com)
-
- * Makefile.in, ar.c, bucomm.c, copy.c, cplus-dem.c, filemode.c,
- i960-pinsn.c, m68k-pinsn.c, nm.c, objdump.c, size.c, sparc-pinsn.c,
- * strip.c: Add or update Copyright notice.
- * TODO: Add note on 'nm -a'.
- * version.c: Update version number to 1.90.
- * Makefile.in: Fix making of documentation for dist.
-
-Tue Oct 15 00:17:17 1991 Per Bothner (bothner at cygnus.com)
-
- * README: New file.
- * Makefile.in: New kludgy rules for making a tarfile.
- * Makefile.in: Fix bindir path.
-
-Mon Oct 14 17:34:29 1991 Roland H. Pesch (pesch at cygnus.com)
-
- * Makefile.in: add targets binutils.mm, binutils.me
-
-Fri Oct 11 22:44:21 1991 John Gilmore (gnu at cygnus.com)
-
- * Makefile.in: Avoid Sun Make VPATH bugs by adding dependencies.
-
-Fri Oct 11 12:51:33 1991 Roland H. Pesch (pesch at cygnus.com)
-
- * Makefile.in: add target "binutils.ms"
-
- * binutils.texinfo: minor restructuring for texi2roff comfort.
-
-Fri Oct 11 04:12:28 1991 John Gilmore (gnu at cygnus.com)
-
- Restructure configuration scheme for bfd, binutils, ld.
-
- * include/sys/h-*.h: Move to bfd/hosts/h-*.h.
- * 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 accomodate 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.
+ command line switch "-M force-thumb".
+For older changes see ChangeLog-9899
Local Variables:
mode: change-log
diff --git a/contrib/binutils/binutils/ChangeLog-9197 b/contrib/binutils/binutils/ChangeLog-9197
new file mode 100644
index 0000000..d989ae4
--- /dev/null
+++ b/contrib/binutils/binutils/ChangeLog-9197
@@ -0,0 +1,5218 @@
+Mon Dec 29 16:58:05 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ From Matthew Bellantoni <matthew@chrysalis.com>:
+ * ar.c (get_pos_bfd): Add default_posname parameter. Change all
+ callers.
+ (replace_members): Default to replacing in the same position.
+
+Mon Dec 22 11:27:22 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * rclex.l: Don't permit a comma in a STRING.
+ * rcparse.y (acc_entry): Warn if an inappropriate modifier is used
+ with a non VIRTKEY.
+ (acc_event): For a control character, set VIRTKEY, and force the
+ character to uppercase.
+ (acc_options): Don't require a comma separator.
+
+Tue Dec 9 13:25:42 1997 Michael Meissner <meissner@cygnus.com>
+
+ * size.c (size_number): New function to provide size of field.
+ ({l,r}print_number): For octal and hex fields, print field using
+ '0' and '0x' suffixes. Do not include following tab.
+ (sysv_internal_sizer): Size section name, section size, and vma
+ address fields.
+ (sysv_internal_printer): Use calculated sizes for the columns.
+ (print_sysv_format): Size columns before printing.
+ (print_berkeley_format): Print tabs between numbers now that
+ {l,r}print_number doesn't. Print fields right justified.
+
+Mon Dec 8 11:22:04 1997 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (objdump_print_addr_with_sym): Remove call to
+ disasm_symaddr() as this function no longer exists.
+
+Tue Dec 2 10:23:50 1997 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (objdump_print_addr_with_sym): Call disasm_symaddr()
+ to allow backend to know which symbol has just been displayed.
+
+Tue Dec 2 13:06:46 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * windres.h (ESCAPE_*): Define standard escape sequences.
+ * rclex.l (handle_quotes): Handle standard escape sequences. Warn
+ about an unrecognized escape character.
+ * windres.c (unicode_print): Print standard escape sequences.
+ * rcparse.y (acc_event): Initialize $$.next.
+ * resbin.c (bin_to_res_menuitems): Don't set MENUITEM_POPUP or
+ MENUITEM_ENDMENU in the menu item flags.
+ (bin_to_res_accelerators): Allocate a structure (the old code
+ never worked).
+ (res_to_bin_accelerator): Correct the test for setting ACC_LAST.
+ (res_to_bin_dialog): Save the extended style rather than saving
+ the style twice. Remove useless shadowing length variable. Set
+ the length of control data correctly.
+ * resrc.c (write_rc_dialog): Don't print the class or menu if the
+ string length is zero.
+
+Mon Nov 24 18:52:43 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * stabs.c (parse_stab_argtypes): Don't try to parse the name of a
+ destructor as mangled argument types.
+
+Mon Nov 10 17:51:41 1997 Gavin Koch <gavin@cygnus.com>
+
+ * addr2line.c (translate_addresses): Use bfd_scan_vma rather
+ than strtol to scan addresses.
+
+Sun Nov 9 11:01:31 1997 Jeffrey A Law (law@cygnus.com)
+
+ * Makefile.am (bin_PROGRAMS): Don't use line continuations here.
+
+Tue Nov 4 11:56:14 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (copy_section): Don't crash if there is no particular
+ information for a section.
+
+Mon Nov 3 12:36:19 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (parse_flags): Make flag check case insensitive.
+ Check for `contents' flag. Give an error for unrecognized flags.
+ (copy_section): If the contents flag was set for a section that
+ had no contents, zero out the new contents.
+ * binutils.texi (objcopy): Document contents section flag.
+
+Sun Nov 2 14:49:56 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c: Move new struct and variable definitions to top of
+ file. Remove obsolete add_strip_symbol and is_strip_symbol
+ declarations. Add prototype declarations for add_specific_symbol
+ and is_specified_symbol.
+
+Mon Oct 20 15:31:43 1997 Klaus K"ampf <kkaempf@progis.de>
+
+ * configure.com (HAVE_SBRK): Undefine.
+
+Tue Oct 14 16:14:35 1997 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (objdump_symbol_at_address): New function. Returns
+ true if a symbol can be found at the address passed in.
+ (disassemble_data): Set the symbol_at_address_func field to point
+ to objdump_symbol_at_address.
+
+Fri Oct 10 14:13:09 1997 Richard Henderson <rth@cygnus.com>
+
+ * objcopy.c, objcopy.1, binutils.texi: "localize" is a better name
+ than "privatize". Update all references.
+
+Thu Oct 9 15:57:29 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils.texi (strip): Remove duplicate --target. From Marty
+ Leisner <leisner@sdsp.mc.xerox.com>.
+
+ * nm.c (lineno_cache_bfd): New file static variable.
+ (lineno_cache_rel_bfd): New file static variable.
+ (display_archive): Clear lineno_cache_bfd and lineno_cache_rel_bfd
+ when closing a BFD.
+ (display_file): Likewise.
+ (print_symbol): Use lineno_cache_bfd and lineno_cache_rel_bfd
+ instead of cache_bfd and cache_rel_bfd. Make seccount static, and
+ only set it when setting relocs.
+
+Wed Oct 8 21:19:11 1997 Richard Henderson <rth@cygnus.com>
+
+ * objcopy.c (keep_specific_list, privatize_specific_list,
+ weaken_specific_list): New variables.
+ (keep_symbols): Removed.
+ (add_specific_symbol): New function from the carcas of
+ add_strip_symbol. Takes a list as an argument.
+ (is_specified_symbol): Likewise from is_strip_symbol.
+ (filter_symbols): Honor the new privatize and weaken lists.
+ Optimize bfd_asymbol_name handling.
+ (copy_object, copy_options, copy_usage): Add privatize-symbol &
+ weaken-symbol options.
+
+ * objcopy.1, binutils.texi: Update docs.
+
+Sun Oct 5 09:05:44 1997 Frank Ch. Eigler <fche@cygnus.com>
+
+ * objdump.c (disassemble_data): Make "--prefix-addresses"
+ disassembly adjust to mixed-length instructions.
+ (objdump_print_addr_with_sym): Add "0x" prefix for hexadecimal
+ symbol-offsets in disassembly.
+
+Fri Oct 3 12:04:25 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (set_times): New static function, replacing
+ make_same_dates.
+ (strip_main): If preserve_dates, stat the input file before
+ copying it, and call set_times afterward.
+ (copy_main): Likewise.
+
+ * wrstabs.c (write_stabs_in_sections_debugging_info): Cast p to
+ char * when calling strcpy and strlen.
+
+Wed Sep 24 11:34:05 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils.texi (ar cmdline): Document that q now works like r.
+ From Marty Leisner <leisner@sdsp.mc.xerox.com>.
+
+ * binutils.texi (size): The object file argument is optional.
+ From Marty Leisner <leisner@sdsp.mc.xerox.com>.
+
+ * aclocal.m4: Rebuild with new libtool.
+ * configure: Rebuild.
+
+Tue Aug 26 17:48:34 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (EXEEXT_FOR_BUILD): New variable. Use it in all
+ references to the sysinfo program.
+ * configure.in: Rebuild with new bfd/acinclude.m4.
+ * Makefile.in: Rebuild.
+
+Fri Aug 8 15:32:49 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * windres.c: Include <time.h>.
+ (define_resource): Set a timestamp for the resource.
+
+Wed Aug 6 13:37:58 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Define TARGET in header file.
+ * acconfig.h (TARGET): Add #undef.
+ * Makefile.am (version.o, bucomm.o): Remove special targets.
+ * bucomm.c (target): Remove.
+ * nm.c (program_name): Don't declare.
+ (target): Make static.
+ * size.c (target): Make static.
+ * configure, config.in, Makefile.in: Rebuild.
+
+Tue Aug 5 00:01:41 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (check-DEJAGNU): Export r.
+ (.dep1): Use $(INCLUDES) rather than $(ALL_CFLAGS).
+ * Makefile.in: Rebuild.
+
+ * nlmheader.y: Use VERSIONK rather than VERSION.
+
+ * Makefile.am (STRIP_PROG): Change from strip.new to strip-new.
+ (NM_PROG): Change from nm.new to nm-new.
+ (TOOL_PROGS, install-exec-local): Adjust accordingly.
+ * Makefile.in: Rebuild.
+
+Mon Aug 4 11:47:31 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Remove AC_ARG_PROGRAM; it's invoked by
+ AM_INIT_AUTOMAKE.
+ * configure: Rebuild.
+
+ * Makefile.am (install-exec-local): Create $(tooldir)/bin before
+ trying to install anything into it.
+ * Makefile.in: Rebuild.
+
+ * Makefile.am (TOOL_PROGS): Use an explicit $(EXEEXT).
+ (install-exec-local): When handling $(noinst_PROGRAMS), only use
+ $(EXEEXT) on the installed file. When handling $(TOOL_PROGS),
+ handle $(EXEEXT) correctly.
+ * configure.in: Add an explicit $(EXEEXT) when substituting for
+ the name of a program to build.
+ * Makefile.in, configure: Rebuild.
+
+ * aclocal.m4, configure, Makefile.in: Rebuild with new automake
+ patches.
+
+ * deflex.l, defparse.y: Use VERSIONK rather than VERSION.
+ * rclex.l, rcparse.y: Likewise.
+ * Makefile.am (windres_SOURCES): Add $(BULIBS).
+ * Makefile.in: Rebuild.
+
+Fri Aug 1 13:08:39 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * acinclude.m4: Include bfd/acinclude.m4, not bfd/acmacros.m4.
+ * aclocal.m4, configure: Rebuild with new libtool.
+
+Thu Jul 31 11:51:35 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am: New file, based on old Makefile.in.
+ * acinclude.m4: New file, from old aclocal.m4.
+ * configure.in: Call AM_INIT_AUTOMAKE and AM_PROG_LIBTOOL. Remove
+ shared library handling; now handled by libtool. Replace
+ AC_CONFIG_HEADER with AM_CONFIG_HEADER. Call AC_PROG_YACC,
+ AC_PROG_LEX, AC_DECL_YYTEST, AM_MAINTAINER_MODE, AM_CYGWIN32, and
+ AM_EXEEXT. Replace AC_PROG_INSTALL with AM_PROG_INSTALL. Remove
+ stamp-h handling in AC_OUTPUT.
+ * acconfig.h: Mention PACKAGE and VERSION.
+ * stamp-h.in: New file.
+ * Makefile.in: Now built with automake.
+ * aclocal.m4: Now built with aclocal.
+ * config.in, configure: Rebuild.
+
+ From Ton van Overbeek <tvoverbe@wk.estec.esa.nl>:
+ * rcparse.y (dialog): Default menu and class to be named.
+ (styles): If FONT is seen, set DS_SETFONT in dialog style.
+ * resbin.c (res_to_bin_dialog): Correct computation of font
+ information length.
+
+Wed Jul 30 11:21:06 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ From Ton van Overbeek <tvoverbe@wk.estec.esa.nl>:
+ * resbin.c (res_to_bin_menu): Correct computation of menu
+ vs. menuex length.
+ * resrc.c (define_stringtable): Add 1 to resource ID.
+
+Tue Jul 29 11:06:03 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * resbin.c (bin_to_res_string): Correct adjustment of data and
+ length. From Ton van Overbeek <tvoverbe@wk.estec.esa.nl>.
+
+Tue Jul 22 18:01:23 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * nlmconv.c (link_inputs): Call libiberty pexecute function.
+ (pexecute) [multiple versions]: Remove.
+
+Tue Jul 22 16:19:34 1997 Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>
+
+ * bucomm.c (make_tempname): If we might be using a DOS filesystem,
+ check for a backslash as well as a slash.
+
+Thu Jun 26 13:53:17 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * windres.c (main): Quit if we didn't get any resources.
+ (usage): Fix --yydebug usage message.
+ * rescoff.c (write_coff_file): Don't free the relocation array
+ until after we've closed the BFD.
+ (read_coff_rsrc): Quit rather than try to read standard input.
+ (write_coff_file): Quit rather than try to write to standard
+ output.
+ * rcparse.y: Add a couple of missing semicolons (accepted by bison
+ but not byacc).
+ * binutils.texi: Document windres.
+
+Wed Jun 25 20:57:06 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * resbin.c: New file.
+ * rclex.l, rcparse.y, rescoff.c, resrc.c, windres.c, windres.h:
+ Numerous fixes and improvements.
+ * Makefile.in: Rebuild dependencies.
+ (CFILES): Add resbin.c.
+ (WINDRES_OBJS): Add resbin.o.
+
+Sun Jun 22 17:29:41 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ First stab at Windows resource compiler:
+ * windres.h: New file.
+ * windres.c: New file.
+ * resrc.c: New file.
+ * rcparse.y: New file.
+ * rclex.l: New file.
+ * rescoff.c: New file.
+ * configure.in: Define and substitute BUILD_WINDRES.
+ * configure: Rebuild.
+ * Makefile.in: Rebuild dependencies.
+ (WINDRES_PROG): New variable.
+ (PROGS): Add @BUILD_WINDRES@.
+ (HFILES): Add dlltool.h and windres.h.
+ (CFILES): Add windres.c and resrc.c.
+ (GENERATED_CFILES): Add rcparse.c and rclex.c.
+ (WINDRES_OBJS): New variable.
+ $(WINDRES_PROG): New target.
+ (rcparse.c, rcparse.h, rclex.c): New targets.
+
+Thu Jun 12 12:27:51 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (export_type): Add data field.
+ (def_exports): Add data parameter. Change all callers.
+ (dump_def_info): Print data field.
+ (gen_def_file): Likewise.
+ (make_one_lib_file): Handle data field by not emitting simple
+ label and not emitting anything in SEC_TEXT.
+ (dtab): Print data field.
+ (process_duplicates): Merge data field.
+ * dlltool.h (def_exports): Update declaration.
+ * defparse.y (expline): Accept opt_DATA. Pass it to def_exports.
+ (opt_DATA): New non-terminal.
+
+Wed Jun 11 17:15:47 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.h: New file.
+ * deflex.l: Include dlltool.h and libiberty.h. Don't declare
+ strdup. Use xstrdup rather than strdup.
+ * defparse.y: Include bfd.h, bucomm.h, and dlltool.h.
+ * dlltool.c: Include dlltool.h and time.h. Make a lot of
+ variables and functions static. Make a lot of char * variables
+ and parameters const. Add declarations for static functions. Do
+ some reindenting. Hide more PowerPC stuff inside DLLTOOL_PPC.
+
+Wed Jun 11 12:05:52 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
+
+ * ar.c (bfd_special_undocumented_glue): Add const.
+
+Mon May 12 22:09:35 1997 Bob Manson <manson@charmed.cygnus.com>
+
+ * Makefile.in (check): Pass CC_FOR_TARGET and CFLAGS_FOR_TARGET
+ to runtest.
+
+Mon May 12 13:14:22 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Don't clear OPCODES when --enable-commonbfdlib is
+ used on HP/UX.
+ * configure: Rebuild.
+
+Fri Apr 25 14:22:08 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
+
+ * Makefile.in (maintainer-clean realclean): Change *.info*
+ to binutils.info* to save sysroff.info.
+
+Tue Apr 15 13:42:22 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (INSTALL): Set to @INSTALL@.
+ (INSTALL_XFORM, INSTALL_XFORM1): Remove.
+ (install): Depend upon installdirs. Use $(program_transform_name)
+ directly, rather than using $(INSTALL_XFORM) and
+ $(INSTALL_XFORM1).
+ (installdirs): New target.
+ (install-info): Run mkinstalldirs.
+
+Mon Apr 14 11:52:39 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (INSTALL): Change install.sh to install-sh.
+
+ From Thomas Graichen <graichen@rzpd.de>:
+ * Makefile.in: Always use $(SHELL) when running move-if-change.
+ * configure.in: Use ${CONFIG_SHELL} when running $ac_config_sub.
+ * configure: Rebuild.
+
+Fri Apr 4 13:28:02 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Add AC_FUNC_ALLOCA.
+ * configure, config.in: Rebuild.
+ * bucomm.h: Add alloca handling, copied from gas/as.h.
+ * dlltool.c: Add #pragma alloca for AIX to start of file.
+ * nlmconv.c: Likewise.
+
+ * Makefile.in (distclean): Remove site.exp and site.bak. Remove
+ everything that clean removes.
+
+Thu Apr 3 13:18:39 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (VERSION): Set to 2.8.1.
+
+ * Branched binutils 2.8.
+
+Tue Apr 1 16:21:44 1997 Klaus Kaempf <kkaempf@progis.de>
+
+ * configure.com: New file.
+ * config.h-vms: Remove file.
+ * makefile.vms: Update for new configure scheme.
+
+Mon Mar 31 15:30:43 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
+
+ * objcopy.c (make_same_dates): Use statbuf, not buf, if not
+ HAVE_GOOD_UTIME_H.
+
+Fri Mar 28 17:57:53 1997 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * Makefile.in ($(OBJDUMP_PROG)): Don't link against BFDLIB twice.
+ * configure.in: Add AC_ARG_ENABLE for commonbfdlib. If it is set,
+ set OPCODES to empty.
+ * configure: Rebuild.
+
+Thu Mar 27 16:03:02 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patch from Marty Leisner <leisner@sdsp.mc.xerox.com>:
+ * objcopy.c: Include <utime.h> or <sys/time.h>.
+ (strip_options): Add "preserve-dates".
+ (copy_options): Likewise.
+ (copy_usage): Mention -p and --preserve-dates.
+ (strip_usage): Likewise.
+ (make_same_dates): New static function.
+ (strip_main): Handle -p.
+ (copy_main): Likewise.
+ * binutils.texi, strip.1, objcopy.1: Document new option.
+
+ addr2line.c contributed by Ulrich Lauther
+ <Ulrich.Lauther@zfe.siemens.de>:
+ * addr2line.c: New file.
+ * Makefile.in: Rebuild dependencies.
+ (ADDR2LINE_PROG): New variable.
+ (MANPAGES): Add addr2line.
+ (PROGS): Add $(ADDR2LINE_PROG).
+ (CFILES): Add addr2line.c.
+ ($(ADDR2LINE_PROG)): New target.
+ * binutils.texi: Document addr2line.
+ * addr2line.1: New file.
+
+ * version.c (print_version): Update copyright date.
+
+Mon Mar 24 10:52:45 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * objdump.c (disassemble_data): Don't exit if a file cannot be
+ disassembled, instead just return.
+
+Thu Mar 20 21:16:51 1997 Jeffrey A Law (law@cygnus.com)
+
+ * size.c (usage): Make definition match its prototype.
+ (display_bfd, lprint_number, rprint_number): Likewise.
+ (print_berkeley_format, sysv_internal_printer): Likewise.
+ (print_sysv_format): Likewise.
+ * nm.c (set_print_radix, set_output_format): Likewise.
+ * objcopy.c (filter_bytes): Likewise.
+
+Tue Mar 18 16:39:55 1997 H.J. Lu <hjl@lucon.org>
+
+ * Many files: Add function prototypes.
+ * ar.c (mri_emul, get_pos_bfd): Make static.
+ * arlex.l: Include "libiberty.h". Don't declare strdup. Use
+ xstrdup rather than strdup.
+ * arparse.y (yyerror): Make argument const. Correct typo.
+ * arsup.c (strdup): Don't declare.
+ (ar_save): Use xstrdup rather than strdup.
+ * filemode.c: Include "bucomm.h".
+ * nm.c (usage): Make static.
+ (print_symname): Make format and name const.
+ * objcopy.c (cat): Remove.
+ (copy_archive): Make output_target const. Use concat, not cat.
+ (copy_file, simple_copy, smart_rename): Make arguments const.
+ * objdump.c (read_section_stabs): Likewise.
+ (print_section_stabs): Likewise.
+ (display_target_tables): Don't declare getenv.
+ * strings.c (strings_object_file): Change file to const.
+ (print_strings): Change filename to const.
+ * Makefile.in: Rebuild dependencies.
+
+Tue Mar 18 11:37:24 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Add BFD_NEED_DECLARATION(getenv).
+ * acconfig.h: Add NEED_DECLARATION_GETENV.
+ * bucomm.h (getenv): Declare if NEED_DECLARATION_GETENV.
+ * configure, config.in: Rebuild.
+ * nlmconv.c (getenv): Don't declare.
+
+ * Makefile.in: Rebuild dependencies.
+
+Sat Mar 15 15:35:56 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patches from Jamie Lokier <jamie@rebellion.co.uk>:
+ * objdump.c: Include "demangle.h".
+ (do_demangle): New static variable.
+ (usage): Mention -C/--demangle.
+ (long_options): Add "demangle".
+ (objdump_print_symname): New static function.
+ (objdump_print_addr_with_sym): Use objdump_print_symname.
+ (disassemble_bytes): Likewise.
+ (dump_reloc_set): Likewise.
+ (dump_symbols): Demangle symbol name.
+ (main): Handle -C.
+ * binutils.texi, objdump.1: Document -C/--demangle.
+
+ * objdump.c (usage): Mention --no-show-raw-insn.
+ (long_options): Add "no-show-raw-insn".
+ (disassemble_bytes): Handle --no-show-raw-insn.
+ * binutils.texi, objdump.1: Document --no-show-raw-insn.
+
+Wed Mar 12 11:42:00 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * rddbg.c (free_saved_stabs): Set the strings to NULL after being
+ freed.
+
+Fri Feb 28 17:18:45 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * bucomm.c (set_default_bfd_target): New function.
+ * bucomm.h (set_default_bfd_target): Declare.
+ * ar.c (main): Call set_default_bfd_target.
+ * nlmconv.c (main): Likewise.
+ * nm.c (main): Likewise.
+ * objcopy.c (main): Likewise.
+ * objdump.c (main): Likewise.
+ * size.c (main): Likewise.
+ * strings.c (main): Likewise.
+ * Makefile.in (bucomm.o): New target, to define TARGET.
+
+Tue Feb 25 21:28:38 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (adjust_section_vma): New static variable.
+ (usage): Mention --adjust-section-vma.
+ (OPTION_ADJUST_VMA): Define.
+ (long_options): Add "addjust-vma".
+ (display_bfd): If adjust_section_vma is not 0, add it to all the
+ section addresses.
+ (main): Handle OPTION_ADJUST_VMA.
+ * binutils.texi, objdump.1: Document --adjust-vma.
+
+Fri Feb 14 18:46:47 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * nm.c (print_symbol): Cache the BFD as well as the symbols and
+ relocs, and don't try to use the symbols or relocs with a
+ different BFD.
+
+Thu Feb 13 21:34:43 1997 Klaus Kaempf (kkaempf@progis.de)
+
+ * config.h-vms: sbrk() is provided on openVMS/Alpha.
+ * makefile.vms: allow compiling with current gcc snapshot.
+
+Thu Feb 13 20:14:40 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * arsup.c, coffgrok.c, dlltool.c, nlmconv.c: Use xmalloc rather
+ than malloc.
+
+Wed Feb 12 16:12:02 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (disassemble_data): Correct VMA argument to
+ find_symbol_for_address. Improve handling of code with no symbol
+ followed by code with a symbol.
+
+Wed Feb 12 12:16:47 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * objdump.c (disassemble_bytes): Make output of raw instructions
+ work better for non-standard values of bytes_per_chunk and
+ bytes_per_line.
+
+Thu Feb 6 14:14:59 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * objdump.c (disassemble_bytes): Added code to allow some control
+ over the way raw instructions are displayed.
+
+Thu Feb 6 12:36:03 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (struct bincl_file): Add next_stack field.
+ (push_bincl): Put the new file on both bincl_list and
+ bincl_stack. Clear the file_types field.
+ (pop_bincl): Use the next_stack field when popping the stack.
+ Don't put the file on bincl_list.
+ (find_excl): Include the file name when warning about an unfound
+ N_EXCL.
+
+ * debug.c (debug_type_samep): Don't crash if we are passed NULL.
+
+Thu Feb 6 11:54:24 1997 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * objcopy.1: Add missing space after .B.
+
+Fri Jan 31 10:33:07 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * objdump.c (disassemble_data): Initialize `aux.require_sec'.
+
+Wed Jan 29 13:21:21 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (objdump_print_value): Add skip_zeroes parameter.
+ Change all callers.
+ (objdump_print_addr_with_sym): Likewise. Call objdump_print_value
+ to print address.
+ (objdump_print_addr): New static function.
+ (objdump_print_address): Just call objdump_print_addr.
+ (disassemble_bytes): Print real address, not function offset.
+ Skip a certain number of leading zeroes.
+
+ * objdump.c (disassemble_zeroes): New static variable.
+ (usage): Mention --disassemble-zeroes.
+ (long_options): Add "disassemble-zeroes".
+ (disassemble_bytes): Check disassemble_zeroes.
+
+Tue Jan 28 16:47:26 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (disassemble_bytes): Don't skip zeroes if the
+ disassembler has told us that we are in a branch delay slot.
+
+Mon Jan 20 14:24:04 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * size.c (berkeley_sum): Rewrite. Skip sections which are not
+ SEC_ALLOC. Count SEC_READONLY sections as text.
+
+Tue Jan 14 15:14:14 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (maintainer-clean realclean): Remove *.info*, not
+ just *.info. From H.J. Lu <hjl@lucon.org>.
+
+Tue Dec 31 15:42:54 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (ALL_CFLAGS): Add -D_GNU_SOURCE.
+
+Fri Dec 27 11:19:26 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Work around bug in AC_FUNC_VFORK in autoconf 2.12.
+ * configure: Rebuild.
+
+Thu Dec 19 13:11:20 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patch from Andrew J Klossner <andrew@pogo.wv.tek.com>:
+ * objcopy.c (OPTION_WEAKEN): Define.
+ (copy_options): Add "weaken".
+ (copy_usage): Mention --weaken.
+ (weaken): New static variable.
+ (filter_symbols): Handle weaken.
+ (copy_object): Call filter_symbols if weaken.
+ (copy_main): Handle OPTION_WEAKEN.
+ * binutils.texi, objcopy.1: Document --weaken.
+
+Wed Dec 18 22:49:13 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Use NewFolderRecursive for installation.
+
+Sat Dec 7 10:17:25 1996 Jeffrey A Law (law@cygnus.com)
+
+ * Makefile.in (install): Add "else true" clause to cater to
+ broken "make" on some systems.
+
+Fri Dec 6 17:21:41 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (parse_ieee_bb): Always initialize namcopy to avoid gcc
+ warning about uninitialized variable.
+ (ieee_read_cxx_class): Likewise, for pf.
+ (ieee_enum_type): Likewise, for i.
+
+Tue Nov 26 17:01:25 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * wrstabs.c (stab_array_type): Add casts when printing
+ bfd_signed_vma values.
+
+ * configure: Rebuild with autoconf 2.12.
+
+Mon Nov 25 16:53:18 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (disassemble_data): Don't crash if there is no
+ symbol.
+
+Fri Nov 22 17:29:14 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * ar.c (open_inarch): Don't call bfd_openr with a null name.
+
+Fri Nov 1 12:08:13 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils.texi: Add section on reporting bugs.
+
+Thu Oct 31 18:20:53 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (struct stab_handle): Add bincl_list field.
+ (parse_stab): Pass value to push_bincl. Call find_excl for
+ N_EXCL.
+ (struct bincl_file): Add hash, file and file_types fields.
+ (push_bincl): Add hash parameter. Save it in the new hash field.
+ Save the file number in the new file field.
+ (pop_bincl): Put the bincl_file on bincl_list, rather than freeing
+ it. Save the file types in the new file_types field.
+ (find_excl): New static function.
+
+ * ieee.c (ieee_lineno): Don't compare line number addresses to
+ info->highaddr (undo part of October 28 patch).
+
+Tue Oct 29 16:40:22 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (objdump_print_value): Don't print the empty string
+ for zero.
+
+Mon Oct 28 16:58:14 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (struct stab_handle): Add function_end field.
+ (start_stab): Initialize function_end.
+ (finish_stab): Pass info->function_end to debug_end_function.
+ (parse_stab): If info->function_end is set, use it as the address
+ which ends a function.
+
+ * ieee.c (ieee_array_type): Remember the correct size.
+
+ * ieee.c (ieee_finish_compilation_unit): Permit coalescing ranges
+ that are up to 0x1000 bytes apart, not just 64.
+ (ieee_add_bb11_blocks): Don't bother to emit a BB11 that is less
+ than 0x100 bytes.
+ (ieee_lineno): Only emit line numbers that are less than
+ info->highaddr.
+
+Fri Oct 25 12:12:17 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (struct ieee_defined_enum): Add defined field.
+ (ieee_enum_type): If the enum tag has been seen before but not
+ defined, reuse the same type index, and define it.
+ (ieee_tag_type): If this enum has not been defined, add an
+ undefined entry to the list of enums.
+
+ * objdump.c (disassemble_bytes): Let the disassembler override the
+ number of bytes printed on a line.
+
+Thu Oct 24 16:42:10 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (prefix_addresses): New static variable.
+ (long_options): Add "prefix-addresses".
+ (compare_symbols): Sort BSF_FUNCTION symbols before other
+ symbols.
+ (find_symbol_for_address): New static function, broken out of
+ objdump_print_address.
+ (objdump_print_addr_with_sym): New static function, broken out of
+ objdump_print_address.
+ (objdump_print_address): Call new functions.
+ (disassemble_bytes): New static function, broken out of
+ disassemble_data. Change disassembly format, unless
+ prefix_addresses is set.
+ (disassemble_data): Call disassemble_bytes. Unless
+ prefix_addresses is set, disassemble in chunks headed by a
+ symbol.
+ * binutils.texi, objdump.1: Document --prefix-addresses.
+
+ * rddbg.c (read_section_stabs_debugging_info): Preserve the
+ backslash when concatenating multiple stabs strings.
+
+Thu Oct 10 11:36:31 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * dlltool.c (scan_open_obj_file): Fix loop exit test.
+ Add missing parameter to def_exports.
+
+Tue Oct 8 12:06:17 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (LEX_OPTIONS): Set to empty string. -I -Cem is the
+ default for flex, and is not recognized by lex.
+
+Thu Oct 3 17:41:23 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils.texi (Target Selection): Document that you can now
+ specify targets using configuration triplets.
+
+ * ar.c (usage): Declare. Make sure all callers pass an argument.
+
+Thu Oct 3 15:39:42 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
+
+ * Makefile.in (clean): Remove config.log.
+
+Wed Oct 2 15:49:16 1996 Klaus Kaempf <kkaempf@progis.de>
+
+ * makefile.vms: Bump version date.
+
+Tue Oct 1 15:00:59 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * version.c (print_version): New function.
+ * bucomm.h (print_version): Declare.
+ * ar.c (program_version): Don't declare.
+ (do_show_version): Remove.
+ (usage): Add help parameter. Print bug report address.
+ (main): Set is_ranlib at start. Check for --help and --version.
+ Call print_version, not do_show_version.
+ * nlmconv.c (program_version): Don't declare.
+ (main): Call print_version.
+ (show_usage): Print bug report address.
+ * nm.c (program_version, print_version): Don't declare.
+ (usage): Print bug report address.
+ (main): Call print_version.
+ * objcopy.c (program_version): Don't declare.
+ (copy_usage): Print bug report address.
+ (strip_usage): Likewise.
+ (strip_main): Call print_version.
+ (copy_main): Likewise.
+ * objdump.c (program_version): Don't declare.
+ (usage): Print bug report address.
+ (main): Call print_version.
+ * size.c (program_version): Don't declare.
+ (usage): Print bug report address.
+ (main): Call print_version.
+ * strings.c (program_version): Don't declare.
+ (main): Call print_version.
+ (usage): Print bug report address.
+ * Makefile.in: Update dependencies.
+
+Thu Sep 19 14:53:15 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c: Revert Monday's reflocalp patch, and apply this patch
+ instead:
+ (write_ieee_debugging_info): Write a dummy type at the end of the
+ global type block.
+
+Mon Sep 16 15:30:54 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (struct ieee_write_type): Add reflocalp field.
+ (ieee_pointer_type): Set reflocalp after pushing type.
+ (ieee_function_type): If reflocalp is set, make this type local.
+ (ieee_range_type, ieee_array_type, ieee_set_type): Likewise.
+ (ieee_const_type, ieee_volatile_type): Likewise.
+ (ieee_struct_field, ieee_class_baseclass): Likewise.
+
+ * ieee.c (struct ieee_info): Add global_types field.
+ (parse_ieee_bb): When starting a BB1, initialize the types field
+ to the global_types field.
+ (parse_ieee_be): When ending a BB2, copy the types field to the
+ global_types field.
+
+Fri Sep 13 17:32:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (change_leading_char): New static variable.
+ (OPTION_CHANGE_LEADING_CHAR): Define.
+ (copy_options): Add "change-leading-char".
+ (copy_usage): Mention --change-leading-char.
+ (filter_symbols): Add obfd parameter. Change all callers.
+ Implement change_leading_char.
+ (copy_object): Call filter_symbols if change_leading_char.
+ (copy_main): Handle OPTION_CHANGE_LEADING_CHAR.
+ * binutils.texi, objcopy.1: Document --change-leading-char.
+
+Tue Sep 3 14:05:29 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (ieee_enum_type): Don't check index into a NULL names
+ array.
+ * nm.c (sort_symbols_by_size): Always initialize next.
+ * rdcoff.c (parse_coff_type): Warn about an incomprehensible
+ type rather than crashing.
+ * rddbg.c (read_symbol_stabs_debugging_info): Initialize f.
+ * stabs.c (parse_stab_members): Set context in all cases.
+
+Thu Aug 29 16:56:52 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * configure.in (i[345]86-*-*): Recognize i686 for pentium pro.
+ * configure: Regenerate.
+
+Thu Aug 29 11:29:20 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (L_tmpnam): Never define.
+ (display_target_list): Use choose_temp_base instead of tmpnam.
+ (display_info_table): Likewise.
+
+Tue Aug 27 18:15:01 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (parse_stab): An N_FUN symbol with an empty string
+ indicates the end of a function.
+
+Thu Aug 22 17:08:00 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * wrstabs.c (struct string_hash_entry): Add next field.
+ (struct stab_write_handle): Change strings to a pointer to
+ string_hash_entry. Add last_strings field. Remove strings_alloc
+ field.
+ (string_hash_newfunc): Initialize next field.
+ (stab_write_symbol): Copy string into hash table rather than into
+ buffer. Keep a list of hash table entries.
+ (write_stabs_in_sections_debugging_info): Initialize last_string.
+ Copy strings from list of hash table entries in memory.
+ (stab_modify_type): If the entry on the stack is a definition,
+ make a new definition rather than failing an assert.
+ (stab_array_type): The size is only zero if high is strictly less
+ than low.
+
+ * ieee.c (struct ieee_info): Add saw_filename field.
+ (parse_ieee): Initialize saw_filename.
+ (parse_ieee_bb): Set saw_filename for a BB1 or BB2. In a BB1,
+ discard the current variables and types. In a BB10, if no
+ filename has been seen, call debug_set_filename.
+ (parse_ieee_ty): In case 'g', the type is optional.
+
+ * prdbg.c (pr_fix_visibility): Don't abort on
+ DEBUG_VISIBILITY_IGNORE.
+
+ * debug.c (debug_name_type): Correct error message.
+
+ * configure.in: Substitute HLDENV.
+ * configure: Rebuild.
+ * Makefile.in (HLDENV): New variable. Use it whenever linking a
+ program.
+
+Thu Aug 15 19:30:41 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Add symbolic doublequotes around the version
+ number.
+
+Thu Aug 8 12:27:52 1996 Klaus Kaempf <kkaempf@progis.de>
+
+ * makefile.vms: Add better support for DEC C compilation.
+ Add new macros as in Makefile.in.
+
+Wed Aug 7 14:27:33 1996 Philippe De Muyter <phdm@info.ucl.ac.be>
+
+ * configure.in: Call BFD_NEED_DECLARATION on strstr and sbrk.
+ * acconfig.h (NEED_DECLARATION_STRSTR): New macro.
+ (NEED_DECLARATION_SBRK): New macro.
+ * configure, config.in: Rebuild.
+ * bucomm.h (strstr): Declare if NEED_DECLARATION_STRSTR.
+ (sbrk): Declare if HAVE_SBRK and NEED_DECLARATION_SBRK.
+
+ * prdbg.c (pr_end_struct_type): Avoid using a string constant in
+ assert, for the benefit of broken assert macros.
+
+Fri Jul 26 14:06:50 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (disassemble_data): Set disasm_info.flavour from
+ abfd.
+
+Tue Jul 23 13:59:54 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (secdata): In non DLLTOOL_PPC case, change alignment
+ of .text section to 2.
+
+Mon Jul 22 08:46:15 1996 Stu Grossman (grossman@lisa.cygnus.com)
+
+ * objdump.c (dump_section_stabs): Fix test for stabs sections
+ ending with numbers. This fixes a problem with .stab being
+ confused with .stab.index.
+
+Wed Jul 10 13:32:28 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (stab_demangle_fund_type): Return a void * for a
+ template, rather than simply aborting.
+
+Mon Jul 8 15:28:05 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ar.c (open_inarch): Add file parameter. Change all callers. If
+ this is a newly created archive, set the target based on the
+ file.
+ * arsup.h (open_inarch): Update declaration.
+
+Thu Jul 4 12:00:55 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (VERSION): Set to cygnus-2.7.1.
+
+ * Released binutils 2.7.
+
+ * rdcoff.c (parse_coff): Get address to pass to debug_end_function
+ from function size, not value of .ef symbol. From Ning
+ Mosberger-Tang <ning@AZStarNet.com>.
+
+Sat Jun 29 21:18:09 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (strip_main): Add -o option, and handle it.
+ (strip_usage): Mention -o.
+ * binutils.texi, strip.1: Mention -o.
+
+Mon Jun 24 17:19:02 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
+
+ * Makefile.in (bindir, libdir, datadir, mandir, infodir, includedir,
+ INSTALL_PROGRAM, INSTALL_DATA): Use autoconf set values.
+ (docdir): Removed.
+ * configure.in (AC_PREREQ): Autoconf 2.5 or higher.
+
+Mon Jun 24 11:59:13 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (endian): New static variable.
+ (usage): Mention -EB/-EL/--endian.
+ (long_options): Add "endian".
+ (disassemble_data): If endianness was specified, replace
+ abfd->xvec with a copy of itself with the given endianness.
+ (main): Handle -EB/-EL/--endian.
+ * binutils.texi, objdump.1: Mention -EB/-EL/--endian.
+
+ * objdump.c: Make most variables and functions static.
+
+ * configure.in: On alpha*-*-osf*, link against libbfd.a if not
+ using shared libraries.
+ * configure: Rebuild with autoconf 2.10.
+
+Sun Jun 23 14:47:36 1996 Kim Knuttila <krk@cygnus.com>
+
+ * dlltool.c (secdata): Changed .rdata to .reldata so .reloc will work.
+ (make_one_lib_file): Removed cruft. (#if 1)
+
+Wed Jun 19 14:46:38 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (stabs): Change from struct internal_nlist * to
+ bfd_byte *.
+ (print_section_stabs): Fetch stabs information directly, rather
+ than assuming that struct internal_nlist is the right size.
+
+ * binutils.texi: Document change to binary format: file position
+ based on load address, not section VMA.
+
+ * bucomm.h: Define SEEK_SET, SEEK_CUR, and SEEK_END if they are
+ not already defined.
+
+Tue Jun 18 18:25:00 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (DISTSTUFF): Add deflex.c.
+
+Tue Jun 18 15:03:44 1996 Klaus Kaempf <kkaempf@progis.de>
+
+ * config.h-vms, makefile.vms: New files.
+
+Mon Jun 17 09:47:31 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (make_one_lib_file): Use BFD_RELOC_RVA rather than
+ BFD_RELOC_32 in IDATA7.
+
+Wed Jun 12 11:52:06 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * nm.c (struct get_relocs_info): Define.
+ (line_numbers): New static variable.
+ (long_options): Add "line-numbers".
+ (usage): Mention -l and --line-numbers.
+ (main): Handle -l.
+ (print_symbol): Print line numbers if requested.
+ (get_relocs): New static function.
+ * binutils.texi, nm.1: Document -l/--line-numbers.
+
+Tue Jun 11 20:12:15 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (dump_reloc_set): Add sec parameter. Change all
+ callers. If with_line_numbers is set, display line numbers of
+ relocation entries.
+ * binutils.texi, objdump.1: Document -l with -r.
+
+Mon Jun 10 23:42:59 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ar.c (open_inarch): Report BFD error message if an archive can
+ not be recognized. List matching formats if the file is
+ ambiguously recognized.
+ (ranlib_touch): Likewise.
+
+Thu Jun 6 13:56:14 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * README: Add notes on how to build if you don't have ar.
+
+ * Makefile.in: Remove old incorrect setting of CC.
+
+Tue Jun 4 10:52:49 1996 Tom Tromey <tromey@csk3.cygnus.com>
+
+ * Makefile.in (install): Don't check to see if tooldir exists.
+ Make $(tooldir) and $(tooldir)/bin.
+
+Mon Jun 3 17:40:23 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * strings.c (main): Make main an int function, not void.
+
+Fri May 31 13:59:24 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * nm.c (filter_symbols): Check for BSF_WEAK as well as
+ BSF_GLOBAL.
+ * objcopy.c (filter_symbols): Likewise.
+
+Wed May 8 16:57:20 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (copy_object): Make clear that it is only a warning
+ when the output file can not represent the architecture.
+
+Fri May 3 11:30:17 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (disassemble_data): Don't refer to bytes past the end
+ of data.
+
+Wed Apr 24 14:10:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * rddbg.c (read_symbol_stabs_debugging_info): Move call to
+ free_saved_stabs outside the loop over the symbols.
+
+Tue Apr 23 12:56:11 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (compare_symbols): Sort symbols whose names start with
+ `.' after other symbols. If no other decision can be made, sort
+ symbols by name.
+
+Thu Apr 18 16:02:11 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * dep-in.sed: Substitute $(BFDDIR) for @BFDDIR@.
+ * Makefile.in: Rebuild dependencies.
+ (dep.sed): Substitute $(BFDDIR) for @BFDDIR@.
+
+Tue Apr 16 13:50:22 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * rdcoff.c: New file.
+ * rddbg.c (read_debugging_info): Read COFF symbols if COFF flavour
+ and no stabs were found.
+ * budbg.h (parse_coff): Declare.
+ * Makefile.in: Rebuild dependencies.
+ (CFILES): Add rdcoff.c.
+ (DEBUG_OBJS): Add rdcoff.o.
+
+Mon Apr 15 15:55:01 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * nlmconv.c (choose_temp_base{,_try}): Delete, in libiberty now.
+ (link_inputs): Update call to choose_temp_base.
+
+Mon Apr 8 14:40:05 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Permit --enable-shared to specify a list of
+ directories.
+ * configure: Rebuild.
+
+Fri Mar 29 16:11:33 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (dump_section_header): Print the SEC_LINK_ONCE flag
+ and the SEC_LINK_DUPLICATES field.
+
+Fri Mar 29 11:35:55 1996 J.T. Conklin (jtc@lisa.cygnus.com)
+
+ * nlmconv.1: Changed to be recognized by catman -w on Solaris.
+
+Thu Mar 28 14:17:02 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * wrstabs.c (stab_enum_type): Set buf before using it.
+
+Fri Mar 22 15:49:08 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (struct stab_handle): Add field abfd.
+ (start_stab): Add abfd parameter.
+ (parse_stab_string): Skip the symbol leading char when searching
+ for the value of a global symbol.
+ * budbg.h (start_stab): Update declaration.
+ * rddbg.c (read_section_stabs_debugging_info): Pass abfd to
+ start_stab.
+ (read_symbol_stabs_debugging_info): Likewise.
+
+Thu Mar 21 12:40:48 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * wrstabs.c (stab_function_type): Output an empty typedef for an
+ unused argument, rather than making up a meaningless name.
+ (stab_variable): Use N_RSYM for a DEBUG_REGISTER variable.
+
+ * ieee.c (struct ieee_info): Add global_vars field.
+ (parse_ieee_be): When ending the global typedef block, copy the
+ variables into info->global_vars.
+ (parse_ieee_atn): Don't require an NN record for a pmisc ATN.
+ (ieee_read_reference): Search the global variables after the local
+ variables.
+
+Wed Mar 20 18:08:19 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * objdump.c (disassemble_data): Make sure sym_name is always set.
+ (dump_section_header): Always put a space after the section name.
+ (dump_bfd_header): Terminate output with newline.
+
+Wed Mar 20 16:35:20 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * wrstabs.c: New file.
+ * budbg.h (write_stabs_in_sections_debugging_info): Declare.
+ * objcopy.c (write_debugging_info): For COFF or ELF, output stabs
+ in sections.
+ * Makefile.in: Rebuild dependencies.
+ (CFILES): Add wrstabs.c.
+ (WRITE_DEBUG_OBJS): New variable.
+ ($(OBJCOPY_PROG)): Use $(WRITE_DEBUG_OBJS), not $(DEBUG_OBJS).
+ ($(STRIP_PROG)): Likewise.
+
+ * stabs.c (parse_stab_members): Make type stub detection more like
+ gdb.
+
+ * ieee.c (struct ieee_handle): Add fields complex_float_index and
+ complex_double_index.
+ (ieee_complex_type): Cache type index in complex_float_index and
+ complex_double_index, depending upon size. Set size on type stack
+ to size * 2.
+
+ * ieee.c (ieee_empty_type): Use builtin_unknown, not 0.
+ (ieee_void_type): Use builtin_void, not 1.
+
+ * ieee.c (parse_ieee_ty): Handle 'V' type code.
+ (parse_ieee_atn): Don't require two numbers for type 10.
+
+ * ieee.c (parse_ieee_be): Add one to offset at end of function or
+ block.
+
+ * ieee.c (struct ieee_block): Add field skip.
+ (parse_ieee_bb): Don't call debug_record_function for __XRYCPP
+ function, and set skip field.
+ (parse_ieee_be): Don't call debug_end_function if skip is set.
+
+ * debug.c (struct debug_handle): Add fields current_write_lineno
+ and current_write_lineno_index.
+ (debug_write): Initialize current_write_lineno and
+ current_write_lineno_index for each unit. Call
+ debug_write_linenos rather than writing out the line numbers
+ directly.
+ (debug_write_function): Call debug_write_linenos.
+ (debug_write_block): Likewise.
+ (debug_write_linenos): New static function.
+
+ * debug.c (debug_write_type): For DEBUG_KIND_FUNCTION, push return
+ type before arguments.
+
+Mon Mar 18 18:05:33 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Add AC_FUNC_VFORK.
+ * configure, config.in: Rebuild.
+ * dlltool.c, nlmconv.c: Include <vfork.h> if HAVE_VFORK_H is
+ defined.
+
+ * stabs.c (parse_stab_range_type): A complex type is defined as a
+ subrange of itself with the high bound zero.
+ * ieee.c (ieee_complex_type): Don't crash on sizes of 12 or 16.
+
+Tue Mar 12 12:09:43 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (ieee_write_undefined_tag): Switch to global_types even
+ if it is not empty.
+ (ieee_tag_type): For an enum, look through info->enums.
+
+ * configure: Rebuild with autoconf 2.8.
+
+ * debug.c (debug_type_samep): Don't loop endlessly in
+ DEBUG_KIND_ENUM case. From Eric Baur <ecb@nexen.com>.
+
+Mon Mar 11 12:35:03 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * rddbg.c (read_section_stabs_debugging_info): Call save_stab for
+ each stab entry, call stab_context on an error, and call
+ free_saved_stabs before rturning.
+ (read_symbol_stabs_debugging_info): Likewise.
+ (SAVE_STABS_COUNT): Define.
+ (struct saved_stab): Define.
+ (saved_stabs, saved_stabs_index): New static variables.
+ (save_stab, stab_context, free_saved_stabs): New static functios.
+
+ * objdump.c (stab_name): Remove.
+ (struct stab_print): Remove.
+ (stab_print): Remove.
+ (dump_stabs): Don't initialize stab_name.
+ (print_section_stabs): Call bfd_get_stab_name rather than using
+ the stab_name array.
+
+Tue Feb 27 19:52:01 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * prdbg.c (pr_int_constant): Initialize info correctly.
+ (pr_float_constant): Likewise.
+
+Mon Feb 26 18:11:37 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Update to handle shared library support.
+
+Sat Feb 24 11:21:49 1996 Alan Modra <alan@spri.levels.unisa.edu.au>:
+
+ * Makefile.in ($(OBJDUMP_PROG)): Search $(BFDLIB) before
+ $(OPCODES).
+
+Thu Feb 15 12:44:45 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Don't tamper with LDFLAGS. Call AC_PROG_CC before
+ configure.host.
+ * configure: Rebuild.
+
+ * configure.in: Substitute RPATH_ENVVAR.
+ * configure: Rebuild.
+ * Makefile.in (RPATH_ENVVAR): New variable.
+ (check): Use $(RPATH_ENVVAR) rather than LD_LIBRARY_PATH.
+
+ * objcopy.c (smart_rename): Rather than doing chmod then chown, do
+ chmod without setuid, then chown, then chmod with setuid.
+
+Wed Feb 14 16:46:42 1996 Martin Anantharaman <martin@mail.imech.uni-duisburg.de>
+
+ * arsup.c (map_over_list): Reindent. Don't assume that the
+ function does not delete the BFD.
+ (ar_addlib_doer): Don't set prev->next if prev is NULL.
+
+Wed Feb 14 15:12:17 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (ieee_regno_to_genreg): Convert register numbers for m68k
+ and i960.
+ (ieee_genreg_to_regno): Likewise.
+
+Mon Feb 12 14:19:59 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c: Extensive changes to write code to put types in the
+ global type block when possible, to output ranges for all memory
+ occupied by the module, and to improve efficiency.
+
+ * debug.c (struct debug_handle): Remove class_mark field. Add
+ id_list and compare_list fields.
+ (struct debug_class_id): Define.
+ (struct debug_type_compare_list): Define.
+ (debug_write): Initialize info->id_list
+ (debug_write_name): Remove reference to info->class_mark.
+ (debug_write_type): Get id for all structs and classes. Simplify
+ test for whether struct has already been written.
+ (debug_write_class_type): Get id for all classes. Simplify test
+ for whether class has already been written.
+ (debug_write_block): Don't write out blocks other than the top
+ level block if they have no local variables.
+ (debug_set_class_id): New static function.
+ (debug_type_samep): New static function.
+ (debug_class_type_samep): New static function.
+ * prdbg.c (pr_start_struct_type): Always print id.
+ (pr_start_class_type): Likewise.
+ (pr_tag_type): Likewise.
+
+ * stabs.c (struct stab_handle): Add syms and symcount fields.
+ (start_stab): Add syms and symcount parameters. Change all
+ callers.
+ (parse_stab_string): Look up global variables in the symbol table
+ to get the right value.
+ * budbg.h (start_stab): Update declaration.
+ * rddbg.c (read_section_stabs_debugging_info): Add syms and
+ symcount parameters. Change all callers.
+
+ * stabs.c (parse_stab_array_type): If the index type is 0, use
+ int.
+
+Wed Feb 7 14:17:45 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c (ieee_start_compilation_unit): Clear modified and
+ modified_alloc fields of info.
+
+ * configure.in: Check for --enable-shared. Substitute new
+ variables BFDLIB and OPCODES.
+ * configure: Rebuild.
+ * Makefile.in (BFDLIB): Set to @BFDLIB@.
+ (OPCODES): Set to @OPCODES@.
+
+Mon Feb 5 16:18:42 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ Support for building bfd and opcodes as shared libraries, based on
+ patches from Alan Modra <alan@spri.levels.unisa.edu.au>:
+ * configure.in (HLDFLAGS): New substitution.
+ * configure: Rebuild.
+ * Makefile.in (HLDFLAGS): New variable. Make all links use
+ $(HLDFLAGS) before $(CFLAGS) and $(LDFLAGS).
+ (BFDLIB_DEP): New variable. Replace all occurrences of $(BFD) as
+ a dependency with $(BFDLIB_DEP). Remove $(BFD) as a dependency if
+ there is also a dependency on $(ADDL_DEPS).
+ (BFDLIB): Rename from BFD; change all uses; set to -L../bfd -lbfd.
+ (OPCODES_DEP): New variable. Replace all occurrends of $(OPCODES)
+ as a dependency with $(OPCODES_DEP).
+ (OPCODES): Set to -L../opcodes -lopcodes.
+ (ADDL_DEPS): New variable. Replace all occurrences of
+ $(ADDL_LIBS) as a dependency with $(ADDL_DEPS).
+ (check): Set LD_LIBRARY_PATH in the environment.
+ (config.status): Depend upon BFD configure.host and config.bfd.
+
+Fri Feb 2 17:02:59 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ * objdump.c: #include stdarg.h or varargs.h.
+ (objdump_print_value): Change FILE* arg to struct disassemble_info*.
+ All callers updated. Use fprintf_func.
+ (objdump_print_address): Consistently use fprintf_func.
+ (objdump_sprintf): New function.
+ (disassemble_data): Print insn into a buffer, print raw insn ourselves,
+ then print insn mnemonic.
+
+Fri Feb 2 16:48:55 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure: Regenerate.
+
+Thu Feb 1 09:38:18 1996 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * configure.in (i[3-6]86-*-win32): Becomes i[3-6]86-*-cygwin32.
+ (powerpc*-*-cygwin32): New.
+ * configure: Regenerated.
+
+Wed Jan 31 13:22:03 1996 Richard Henderson <rth@tamu.edu>
+
+ * Makefile.in (distclean): Remove $(DEMANGLER_PROG).1.
+
+Mon Jan 29 17:36:29 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patches from H J Lu <hjl@zoom.com>:
+ * objcopy.c (remove_leading_char): New static variable.
+ (OPTION_REMOVE_LEADING_CHAR): Define.
+ (copy_usage): Mention --remove-leading-char.
+ (filter_symbols): If remove_leading_char, and the first character
+ of a global symbol matches the symbol leading char of the BFD,
+ remove the first character.
+ (copy_object): Filter the symbols if remove_leading_char is set.
+ (copy_main): Handle --remove-leading-char.
+ * binutils.texi, objcopy.1: Document --remove-leading-char.
+
+Sat Jan 27 15:40:13 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * objdump.c (fprintf): Add prototype to avoid compiler warning on
+ SunOS.
+
+Fri Jan 26 11:53:42 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils.texi (nm): Improve documentation on symbol types.
+ (objdump): Reference the stabs manual from the discussion of the
+ --stabs option.
+
+Thu Jan 25 11:21:46 1996 Raymond Jou <rjou@mexican.cygnus.com>
+
+ * mpw-make.sed: Add a "stamps" target.
+
+Thu Jan 25 13:51:44 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (dump_headers, dump_section_header): Change objdump -h
+ output to be simpler and to include section file offsets.
+
+Wed Jan 24 12:06:05 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (parse_stab_members): Don't adjust voffset.
+
+ * ieee.c (ieee_read_cxx_class): Don't multiply voffset by 4.
+ (struct ieee_write_type): Add name field.
+ (struct ieee_type_class): Remove name field. Change all uses to
+ use new name field in type instead.
+ (struct ieee_name_type): Likewise.
+ (ieee_start_struct_type): Initialize name field of type.
+ (ieee_start_class_type): Don't initialize classdef entry of tag.
+ (ieee_class_method_var): Don't adjust voffset.
+ (ieee_end_class_type): Likewise.
+ (ieee_tag_type): Initialize new name field of type.
+ (ieee_typdef): Set name after copying in type information.
+
+ * debug.c (VOFFSET_STATIC_METHOD): Define as -1, not 1.
+
+ * ieee.c (struct ieee_modified_type): Define.
+ (struct ieee_handle): Add modified and modified_alloc fields.
+ (ieee_get_modified_info): New static function.
+ (ieee_pointer_type): Cache type index.
+ (ieee_const_type): Likewise.
+ (ieee_volatile_type): Likewise.
+
+ * ieee.c (ieee_define_named_type): When creating a tag for an
+ anonymous struct, copy the name into memory.
+ (ieee_tag_type): Likewise.
+ * debug.c (debug_write_type): Only check and set id field for an
+ unnamed object.
+ (debug_write_class_type): Likewise.
+
+ * ieee.c: Various changes to write out types for functions and
+ references, and to not write out unnecessary function types.
+
+ * ieee.c (struct ieee_var): Remove variable field. Add kind
+ field, and define some enum constants for it.
+ (parse_ieee_ty): Set kind field of variable for 'x' and 'X' types.
+ (parse_ieee_atn): Make an indirect slot for an external variable,
+ although we otherwise don't record it. Set kind field rather than
+ variable field of pvar.
+ (ieee_read_cxx_class): Try to get the type of a static member.
+ (ieee_read_reference): Check kind field rather than variable
+ field.
+
+Tue Jan 23 15:54:18 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c: Various changes to handle reading C++ reference type
+ information.
+
+ * debug.h (enum debug_var_kind): Add DEBUG_VAR_ILLEGAL.
+ (enum debug_parm_kind): Add DEBUG_PARM_ILLEGAL.
+ * debug.c (debug_get_parameter_types): Handle DEBUG_KIND_FUNCTION.
+
+ * ieee.c: Various changes to write out definitions of C++ classes.
+
+ * debug.c (debug_append_filename): Remove.
+ * debug.h (debug_append_filename): Don't declare.
+
+ * stabs.c (struct stab_handle): Remove last_type field. Add
+ so_string and so_value fields.
+ (finish_stab): Call stab_emit_pending_vars before calling
+ debug_end_function. Don't warn about pending variables.
+ (parse_stab): Accumulate N_SO strings until a non N_SO symbol is
+ seen, rather than calling debug_append_filename. Call
+ stab_emit_pending_vars before calling debug_end_function. Don't
+ set info->last_type.
+
+Tue Jan 23 09:53:54 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ * objdump.c (disassemble_data): Handle unknown endianness.
+ Pass fprintf to INIT_DISASSEMBLE_INFO.
+
+Mon Jan 22 16:46:43 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ Add new option --show-raw-insn.
+ * objdump.c (show_raw_insn): New global.
+ (usage): Update.
+ (long_options): Update.
+ (disassemble_data): Set disasm_info.flags if --show-raw-insn.
+
+ * objdump.c (disassemble_data): Set new arch,mach,endian fields in
+ disasm_info.
+
+Mon Jan 22 19:29:36 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c: Extensive changes to pass a single info argument around
+ in the reading routines, rather than several arguments. Add code
+ to read C++ debugging records.
+
+ * debug.h (debug_get_type_size): Declare.
+ (debug_get_field_name): Declare.
+ (debug_get_field_bitpos): Declare.
+ (debug_get_field_bitsize): Declare.
+ (debug_get_field_visibility): Declare.
+ (debug_get_field_physname): Declare.
+ * debug.c (debug_get_real_type): Handle DEBUG_KIND_TAGGED.
+ (debug_get_type_size): New function.
+ (debug_get_field_name): New function.
+ (debug_get_field_bitpos): New function.
+ (debug_get_field_bitsize): New function.
+ (debug_get_field_visibility): New function.
+ (debug_get_field_physname): New function.
+ (debug_write_type): Make sure we pass the real kind, not INDIRECT,
+ to tag_type. Pass the name recursively for INDIRECT.
+
+Fri Jan 19 12:31:57 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * debug.h (struct debug_write_fns): Remove ellipsis_type. Add int
+ and boolean parameters to function_type. Add boolean parameter to
+ method_type.
+ (debug_make_ellipsis_type): Don't declare.
+ (debug_make_function_type): Add debug_type * and boolean
+ parameters. Change all callers.
+ (debug_make_method_type): Add boolean parameter. Change all
+ callers.
+ (debug_get_parameter_types): Add boolean * parameter. Change all
+ callers.
+ (debug_get_target_type): Declare.
+ * debug.c (struct debug_function_type): Add fields arg_types and
+ varargs.
+ (struct debug_method_type): Add field varargs.
+ (debug_ellipsis_type, ELLIPSIS_P): Remove.
+ (debug_make_ellipsis_type): Remove.
+ (debug_make_function_type): Add arg_types and varargs parameters.
+ (debug_make_method_type): Add varargs parameter.
+ (debug_get_parameter_types): Add pvarargs parameter.
+ (debug_get_target_type): New function.
+ (debug_write_type): In case DEBUG_KIND_FUNCTION, push argument
+ types and pass count to function_type. In DEBUG_KIND_METHOD, use
+ a signed int for the count, don't call ellipsis_type, and pass
+ varargs to method_type.
+ * stabs.c (struct stab_demangle_info): Add varargs field.
+ (stab_demangle_argtypes): Add pvarargs parameter. Change all
+ callers.
+ (stab_demangle_args): Likewise.
+ (stab_demangle_type): In case 'F', pick up argument types.
+ * prdbg.c (pr_ellipsis_type): Remove.
+ (pr_function_type): Add argcount and varargs parameters.
+ (pr_method_type): Add varargs parameter.
+ * ieee.c (ieee_ellipsis_type): Remove.
+ (ieee_function_type): Add argcount and varargs parameters.
+ (ieee_method_type): Add varargs parameter. Remove most of
+ function body, and just call ieee_function_type.
+
+ * stabs.c: Include "demangle.h". Added several new static
+ functions not listed below to demangle argument types; they are
+ all called via stab_demangle_argtypes.
+ (finish_stab): If the kind of an undefined tag is
+ DEBUG_KIND_ILLEGAL, use DEBUG_KIND_STRUCT instead. Warn if there
+ are any pending variable.
+ (parse_stab): Don't close the function when the block depth goes
+ to zero. Pass value to debug_end_function.
+ (parse_stab_string): In case 'T', pass the name to
+ parse_stab_type.
+ (parse_stab_type): In case 'x', use stab_find_tagged_type. In
+ case '#', handle functions with variable numbers of arguments.
+ (parse_stab_struct_type): Add tagname parameter. Change all
+ callers.
+ (parse_stab_members): Add tagname and typenums parameters. Change
+ all callers. If the type of a method is a stub, call
+ parse_stab_argtypes to demangle the argument types and get the
+ physical name of the function.
+ (parse_stab_argtypes): New static function.
+ (stab_record_variable): For a DEBUG_GLOBAL or DEBUG_STATIC
+ variable, call debug_record_variable immediately.
+ (stab_find_tagged_type): New static function.
+
+ * debug.h (enum debug_type_kind): Add DEBUG_KIND_ILLEGAL.
+ (struct debug_write_fns): Add field ellipsis_type. Add id
+ parameter to start_struct_type, start_class_type, and tag_type.
+ (debug_make_ellipsis_type): Declare.
+ (debug_find_named_type): Declare.
+ (debug_get_type_kind): Declare.
+ (debug_get_return_type): Declare.
+ (debug_get_parameter_types): Declare.
+ (debug_get_fields): Declare.
+ (debug_get_field_type): Declare.
+ * debug.c (struct debug_handle): Add fields class_id and base_id.
+ (struct debug_class_type): Add field id.
+ (struct debug_method_variant): Rename argtypes to physname.
+ Change all uses.
+ (debug_ellipsis_type): New static variable.
+ (ELLIPSIS_P): New macro.
+ (debug_make_ellipsis_type): New function.
+ (debug_make_method_variant): Rename argtypes to physname.
+ (debug_make_static_method_variant): Likewise.
+ (debug_name_type): Always put types in the global namespace.
+ (debug_find_named_type): New function.
+ (debug_find_tagged_type): Treat DEBUG_KIND_ILLEGAL specially,
+ rather than DEBUG_KIND_VOID.
+ (debug_get_real_type): New static function.
+ (debug_get_type_kind): New function.
+ (debug_get_return_type): New function.
+ (debug_get_parameter_types): New function.
+ (debug_get_fields): New function.
+ (debug_get_field_type): New function.
+ (debug_write): Initialize base_id.
+ (debug_write_type): Pass new id argument to tag_type. Handle
+ DEBUG_KIND_ILLEGAL. Use id for DEBUG_KIND_STRUCT and
+ DEBUG_KIND_UNION. Handle ellipsis for method arguments.
+ (debug_write_class_type): Don't dereference kclass if it is NULL.
+ Use id.
+ * prdbg.c (pr_fns): Add pr_ellipsis_type.
+ (pr_ellipsis_type): New static function.
+ (pr_pointer_type): If this is a pointer to an array, parenthesize
+ it correctly.
+ (pr_start_struct_type): Add id parameter.
+ (pr_start_class_type): Likewise.
+ (pr_tag_type): Likewise.
+ (pr_fix_visibility): Add the visibility to the top of the stack,
+ not the second element on the stack.
+ (pr_struct_field): Pop the stack before calling pr_fix_visibility.
+ (pr_class_static_member): Likewise.
+ (pr_class_start_method): Don't push a type, just set the method
+ name in the type on the top of the stack.
+ (pr_class_end_method): Don't pop the stack.
+ (pr_class_method_variant): Rename argtypes parameter to physname.
+ Append const and volatile rather than prepending them. Add a
+ space after the physname.
+ (pr_class_static_method_variant): Likewise.
+ * ieee.c (ieee_fns): Add ieee_ellipsis_type.
+ (ieee_define_named_type): Use DEBUG_KIND_ILLEGAL rather than
+ DEBUG_KIND_VOID.
+ (write_ieee_debugging_info): Likewise.
+ (ieee_typdef): Likewise.
+ (ieee_ellipsis_type): New static function.
+ (ieee_start_struct_type): Add id parameter.
+ (ieee_start_class_type): Likewise.
+ (ieee_tag_type): Likewise.
+ (ieee_class_method_variant): Rename name to physname.
+ (ieee_class_static_method_variant): Likewise.
+
+ * Makefile.in (DEBUG_OBJS): Remove prdbg.o.
+ ($(OBJDUMP_PROG)): Depend upon, and link against, prdbg.o.
+
+Thu Jan 18 17:35:06 1996 Kim Knuttila <krk@cygnus.com>
+
+ * dlltool.c (make_tail): Changed the order of the sections to avoid
+ an alignment problem.
+
+Wed Jan 17 14:23:00 1996 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * srconv.c (wr_du): Set du.stackfrmt to 0.
+ (wr_un, wr_sc): Emit all sections, even those with 0 size.
+
+Tue Jan 16 16:15:49 1996 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * srconv.c (wr_hd): Space size within segment was being
+ stored in segment identifier field.
+
+Tue Jan 16 12:07:25 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-config.in (BUILD_NLMCONV, BUILD_SRCONV, SYSINFO_PROG,
+ BUILD_DLLTOOL): Put definitions for these into makefile when
+ configuring, instead of always clearing in mpw-make.sed.
+ * mpw-make.sed: Edit out any host_alias or target_alias settings,
+ fix pathname to BFD internal include files, remove dependency
+ calculation rules.
+
+Thu Jan 11 17:31:38 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * objdump.c (dump_section_header): Add new section flags
+ SEC_{EXCLUDE,SORT_ENTRIES}.
+
+Thu Jan 11 11:45:34 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (filter_symbols): NULL terminate the output symbols.
+ (copy_object): Allocate space for a possible extra NULL pointer.
+
+ * debug.c (debug_make_undefined_tagged_type): Make sure we are
+ given a kind of type we can handle.
+ (debug_write_type): Handle undefined enums and structs.
+ (debug_write_class_type): Handle undefined classes.
+ * prdbg.c (pr_enum_type): Handle an undefined enum.
+ * ieee.c (ieee_enum_type): Likewise.
+
+Wed Jan 10 15:33:18 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in: Updated dependencies.
+ (ALLOCA, MALLOC): Remove variables.
+ (ADDL_LIBS): Remove $(MALLOC) from definition.
+ * alloca.c, gmalloc.c: Remove.
+
+Mon Jan 8 18:02:29 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c: Add global function write_ieee_debugging_info and a
+ bunch of static functions and structs used to write out IEEE
+ debugging information.
+ * budbg.h (write_ieee_debugging_info): Declare.
+
+ * ieee.c (struct ieee_type): Add pslot field.
+ (enum builtin_types): Define.
+ (ieee_builtin_type): For a pointer, return a pointer to the named
+ type. Use enum values rather than numbers.
+ (ieee_alloc_type): New static function.
+ (ieee_read_type_index): Use ieee_alloc_type.
+ (parse_ieee_bb): Likewise.
+ (parse_ieee_ty): Likewise. Use ieee_builtin_type for array range,
+ rather than making a new integer type. Store the new type in the
+ slot, if there is one.
+ (parse_ieee_atn): Treat ATN10 as defining a register variable.
+ (ieee_regno_to_genreg): Rename from ieee_regno_to_gen. Change all
+ callers.
+ (ieee_genreg_to_regno): New static function.
+
+ * stabs.c (parse_stab_type): Add new typename parameter. Change
+ all callers.
+ (parse_stab_range_type): Add new typename parameter. Change all
+ callers.
+
+ * debug.h (struct debug_write_fns): Add tag parameter to
+ enum_type, start_struct_type, and start_class_type.
+ * debug.c (debug_write_type): Pass any tag name to
+ start_struct_type, debug_write_class_type, and enum_type. If
+ DEBUG_KIND_TAGGED, pass the name in the recursive call.
+ (debug_write_class_type): Accept a new tag parameter, and pass it
+ to start_class_type.
+ * prdbg.c (pop_type): Don't remove '+' character.
+ (pr_enum_type): Accept and use tag parameter.
+ (pr_start_struct_type): Likewise.
+ (pr_start_class_type): Likewise.
+ (pr_class_baseclass): Adjust algorithm used to find where to put
+ the baseclass name.
+ (pr_tag): Don't bother to insert the tag name.
+
+ * objcopy.c: Include budbg.h.
+ (convert_debugging): New static variable.
+ (OPTION_DEBUGGING): Define.
+ (copy_options): Add "debugging".
+ (copy_usage): Mention --debugging.
+ (is_strip_section): Skip debugging sections if convert_debugging.
+ (setup_section, copy_section): Likewise.
+ (filter_symbols): Skip debugging symbols if convert_debugging.
+ (copy_object): If convert_debugging, read and write debugging
+ information.
+ (write_debugging_info): New static function.
+ (copy_main): Handle --debugging.
+ * Makefile.in (DEBUG_OBJS): New variable.
+ ($(OBJCOPY_PROG)): Depend upon and link against $(DEBUG_OBJS).
+ ($(STRIP_PROG)): Likewise.
+ (OBJDUMP_OBJS): Remove variable.
+ ($(OBJDUMP_PROG)): Use objdump.o $(DEBUG_OBJS) rather than
+ $(OBJDUMP_OBJS).
+ * binutils.texi, objcopy.1: Document --debugging.
+
+Thu Jan 4 16:31:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ieee.c: New file with code to read IEEE debugging information.
+ * budbg.h (parse_ieee): Declare.
+ * rddbg.c (read_debugging_info): Handle IEEE flavour files.
+ (read_ieee_debugging_info): New static function.
+ * Makefile.in: Rebuild dependencies.
+ (CFILES): Add ieee.c.
+ (OBJDUMP_OBJS): Add ieee.o.
+
+ * bucomm.h (xrealloc): Change type of first parameter from char *
+ to PTR.
+
+Tue Jan 2 17:44:07 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in: Add targets to automatically rebuild dependencies.
+ Remove targets which just listed dependencies of .o files.
+ (DEP): New variable.
+ (HFILES, GENERATED_HFILES): New variables.
+ (CFILES, GENERATED_CFILES): New variables.
+ (underscore.c): Don't do anything, just depend upon stamp-under.
+ (stamp-under): New target; do what underscore.c used to do.
+ (nlmconv.o): Depend upon sym.h and ecoff.h.
+ (.dep, .dep1, dep.sed, dep, dep-in): New targets.
+ (stage1, stage2, stage3, against, comparison): Remove.
+ (de-stage1, de-stage2, de-stage3): Remove.
+ (clean, distclean): Remove stamp-under and dep.sed.
+ * dep-in.sed: New file.
+
+ Implement generic debugging support. Implement a stabs reader and
+ a generic printer.
+ * budbg.h, debug.c, debug.h, prdbg.c, rddbg.c, stabs.c: New files.
+ * objdump.c: Include "debug.h" and "budbg.h".
+ (dump_debugging): New global variable.
+ (usage): Mention --debugging.
+ (long_options): Add "debugging".
+ (display_bfd): Handle --debugging.
+ * Makefile.in (OBJDUMP_OBJS): New variable.
+ ($(OBJDUMP_PROG)): Use $(OBJDUMP_OBJS).
+ * binutils.texi, objdump.1: Document --debugging.
+
+Sat Dec 30 09:59:51 1995 Jeffrey A Law (law@cygnus.com)
+
+ * nm.c ( long_options): Add "--defined-only" option.
+ (usage): Update for new "--defined-only" option.
+ (filter_symbols): Handle "--defined-only".
+
+Fri Dec 29 16:04:56 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * arparse.y: Include "bucomm.h", not <sysdep.h>.
+ * nlmheader.y: Don't include "sysdep.h".
+
+Tue Dec 26 18:23:18 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * nm.c (print_symdef_entry): Check return value of
+ bfd_get_elt_at_index.
+
+Sat Dec 23 11:03:16 1995 Michael Meissner <meissner@tiktok.cgynsu.com>
+
+ * configure.in (DLLTOOL_DEFS): Build dlltool for PowerPC if target
+ is powerpc*-*-win* in addition to powerpc*-*-*pe*.
+
+Fri Dec 15 16:30:57 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (endian_string): New static function.
+ (display_target_list): Use it.
+ * nlmconv.c (main): Use new bfd_big_endian macro.
+
+Fri Dec 15 07:51:34 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (fill_ordinals): Start from 1 if no other instructions
+ given.
+
+Tue Dec 12 12:05:21 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (clean): Remove $(DEMANGLER_PROG).1. From Ronald
+ F. Guilmette <rfg@monkeys.com>.
+
+Mon Dec 11 14:33:05 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mac-binutils.r: Fix copyright and version strings.
+
+ * Makefile.in (version): Remove, no longer used.
+
+Fri Dec 1 14:41:56 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed (install, install-only): Edit in Mac-specific
+ install procedure.
+
+Thu Nov 30 20:26:02 1995 Kim Knuttila <krk@cygnus.com>
+
+ * dlltool.c (ppc_jtab): The binary glue for PowerPC dll linkage,
+ including the return instruction.
+ sinfo: added a preferred alignment field.
+ (secdata): section data for the PowerPC version.
+ (make_one_lib_file): More symbols, More sections (pdata, rdata)
+ (make_tail): Use idata$6 instead of idata$7 for ppc. Also added a
+ NULL idata$3 descriptor (temporary).
+
+Tue Nov 28 17:23:44 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * dlltool.c (fill_ordinals): Don't reference d_export_vec if
+ there are no exported functions.
+
+Mon Nov 27 13:05:59 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure: Regenerate with autoconf 2.7.
+
+Wed Nov 22 13:17:15 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (fill_ordinals): Start assigning ordinals at 1.
+
+ * Makefile.in (EXPECT): Use $$r, not $${rootme}.
+ (check): Set r, not rootme.
+
+Tue Nov 21 18:04:09 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Use BFD_NEED_DECLARATION.
+ * acconfig.h: Put NEED_DECLARATION_FPRINTF in @TOP@ section.
+ * configure, config.in: Rebuild with autoconf 2.6.
+
+Fri Nov 17 10:34:37 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (CC_FOR_TARGET): Use @host@ and @target@, not
+ $(host_canonical) and $(target_canonical).
+
+Thu Nov 16 03:39:20 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ Version 2.6 released.
+ * Makefile.in (VERSION): Update to 2.6.
+
+Wed Nov 15 12:14:17 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (CC_FOR_TARGET): Define.
+ (check): Pass CC and CFLAGS to runtest.
+
+ * nm.c (display_rel_file): Don't require a DYNAMIC object when
+ dumping the dynamic symbol table.
+
+ * objdump.c (compare_symbols): Sort global symbols before local
+ symbols before debugging symbols.
+ (objdump_print_address): Don't futz around looking for a global
+ symbol with the same value.
+
+Tue Nov 14 17:19:11 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c: Use FOPEN_* macros rather than "r" or "w".
+
+ * dlltool.c (fill_ordinals): Correct memset call.
+
+Sun Nov 12 12:56:05 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed (DEMANGLER_PROG): Edit out attempts to do anything
+ with the man page.
+
+Fri Nov 10 11:41:22 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (setup_section): Copy the section lma independently of
+ the vma.
+
+Wed Nov 8 11:33:00 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * arsup.c (ar_open): Cast malloc return value.
+
+Tue Nov 7 09:01:26 1995 Kim Knuttila <krk@cygnus.com>
+
+ * configure.in, configure (DLLTOOL_DEFS): Added ppc target.
+ * dlltool.c (MPPC): Added basic PPC definitions.
+
+Tue Nov 7 14:02:57 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Don't treat rs6000-*-lynx* specially.
+ * configure: Rebuild.
+ * config/rslynx: Remove.
+ * Makefile.in: Remove @target_makefile_fragment@.
+
+Mon Nov 6 15:00:50 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * bucomm.h: Include <sys/types.h>.
+ * ar.c: Don't include <sys/types.h> or <stdio.h>.
+ * bucomm.c, dlltool.c, nlmconv.c, objcopy.c, objdump.c: Likewise.
+
+Fri Nov 3 12:38:09 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c: Include <sys/types.h>.
+
+ Permit user to override DEMANGLER_PROG from command line. From
+ Manfred Hollstein <manfred@lts.sel.alcatel.de>.
+ * Makefile.in ($(DEMANGLER_PROG)): Depend upon
+ $(DEMANGLER_PROG).1.
+ (install): Don't depend upon $(DEMANGLER_PROG).1. Only install
+ $(DEMANGLER_PROG).1 if $(DEMANGLER_PROG) is not empty.
+
+Wed Nov 1 15:04:57 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
+
+ * Makefile.in (syslex.o): add -I$(srcdir) if compiling in a
+ separate directory.
+
+Mon Oct 30 14:24:18 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (objdump_print_value): New static function.
+ (objdump_print_address): Use it. If we need the right section for
+ the symbol, and we can't find it, print an offset from the section
+ rather than using a symbol from some other section.
+
+Thu Oct 26 10:23:14 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (no_idata4, no_idata5): New.
+ (arm_jtab): Use correct encoding of jump instruction.
+ (usage, main, make_head, make_tail): Act on no_idata4, no_idata5.
+
+Wed Oct 25 12:10:07 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Edit paths to generated y.tab.[ch] files.
+
+Fri Oct 20 18:40:34 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * binutils.texi: Change --with-targets to --enable-targets.
+
+Thu Oct 19 17:47:41 1995 Fred Fish <fnf@cygnus.com>
+
+ * Makefile.in: Remove extraneous tab on otherwise empty line,
+ which confuses many non-GNU versions of "make".
+
+Wed Oct 18 16:31:58 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (i386_jtab, arm_jtab): New
+ (gen_lib_file): Rewritten to use bfd.
+
+Fri Oct 13 16:10:07 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * Makefile.in (install): Don't give error message if dlltool
+ wasn't built.
+
+Fri Oct 13 11:04:37 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * deflex.l: Allow quoting of IDs.
+ * defparse.y (%union): string deleted.
+ (command): DESCRIPTION takes ID.
+ * dlltool.c (gen_def_file): Quote outgoing name if
+ necessary. Preserve NONAME.
+ (gen_lib_file): Run ranlib.
+ (workout_prefix): Deleted.
+ (main, usage, long_options): Add --as, --ranlib, --ar options.
+
+Wed Oct 11 13:36:13 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (mtable): HOW_ALIGN_LONG, new.
+ (d_ord): Deleted.
+ (d_low_ord, d_high_ord, d_named_funcs): New.
+ (gen_exp_file): Create noname entries correctly.
+ (gen_lib_file): Dump exports alphabetically.
+ (process_duplicates): Count nonamed functions.
+ (fill_ordinals): Keep track of highest ord too.
+ (mangle_defs): Create alphabetically ordered list of names.
+
+Tue Oct 10 09:39:09 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * Makefile.in (TOOL_PROGS): Include DLLTOOL_PROG.
+
+Mon Oct 9 13:06:31 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (add_underscore): New.
+ (xlate): Use new name.
+ (main, usage): Update.
+
+Fri Oct 6 14:08:51 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * sysinfo.y: Eliminate unused terminals "[" and "]" and unused
+ nonterminal "name". One s/r conflict remains.
+
+ Mon Sep 25 22:49:32 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * nm.c (print_symname): Don't try to demangle an empty
+ name.
+ * objdump.c (slurp_symtab): Reset symcount if there are
+ no symbols.
+ (slurp_dynamic_symtab): Likewise, for dynsymcount.
+ (disassemble_data): Fix memory leak: free sorted_syms when done.
+ (display_bfd): Likewise, for syms and dynsyms.
+ (dump_relocs): Don't print header before possibly generating an
+ error message.
+ (dump_dynamic_relocs): Likewise.
+
+ * ar.1, nm.1, objdump.1, size.1, strings.1, strip.1: Fix typos and
+ formatting bugs.
+
+Fri Oct 6 12:00:25 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ar.c (do_quick_append): Comment out.
+ (replace_members): Add quick argument.
+ (main): Don't call do_quick_append.
+ (open_inarch): Don't call quick_append to create an empty archive.
+ Instead call bfd_openw/bfd_set_format/bfd_close.
+
+Thu Oct 5 20:53:08 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * bucomm.c: Always include time.h.
+
+Thu Oct 5 17:25:21 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (compare_symbols): Sort gnu_compiled and gcc2_compiled
+ symbols after other symbols with the same value. Likewise for
+ symbols which look like file names.
+ (objdump_print_address): Always chose the first reasonable symbol
+ with a given value.
+
+Tue Oct 3 22:38:55 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * arsup.c (ar_save): Use rename, not unlink/link/unlink.
+
+Mon Oct 2 12:10:25 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * strings.c (main): Exit with zero status if no files are given
+ and standard input is read.
+
+Thu Sep 28 20:03:07 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-config.in: Calculate underscore and put into makefile
+ fragment, generate config.h.
+ * mpw-make.sed: New file, sed commands to edit Unix makefile
+ into MPW syntax.
+ * mpw-make.in: Remove.
+ * mac-binutils.r: New file, Mac resources.
+
+Thu Sep 28 15:49:00 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c: (gen_exp_file): Always emit a .reloc section if
+ relocatable.
+ (imp_name_lab): New.
+ (gen_def_file): New.
+ (gen_lib_file): Use imp_name_lab.
+ (main): Initialize imp_name_lab.
+
+Mon Sep 25 12:05:34 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Call AC_HEADER_SYS_WAIT.
+ * configure: Rebuild.
+ * config.in: Rebuild.
+ * dlltool.c: Include "libiberty.h" and "bucomm.h". Don't include
+ <stdio.h>, <stdlib.h>, or <string.h>. Don't include <wait.h>.
+ Include <sys/types.h>. Use HAVE_SYS_WAIT_H to control whether to
+ include <sys/wait.h> or define the wait macros by hand. Don't
+ declare xmalloc.
+ (gen_lib_file): Don't assume that sprintf returns the number of
+ characters; use strlen instead.
+
+Fri Sep 22 17:16:41 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (disassemble_data): Don't use the old BFD based
+ disassembler interface. Make info a const pointer.
+
+Wed Sep 13 18:33:44 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (start_address): New variable.
+ (stop_address): New variable.
+ (usage): Mention --start-address and --stop-address.
+ (OPTION_START_ADDRESS, OPTION_STOP_ADDRESS): Define.
+ (long_options): Add "start-address" and "stop-address".
+ (disassemble_data): Handle start_address and stop_address.
+ (dump_data, dump_reloc_set): Likewise.
+ (main): Don't set seenflag for -l. Handle OPTION_START_ADDRESS
+ and OPTION_STOP_ADDRESS.
+ * objcopy.c (parse_vma): Move to bucomm.c.
+ * bucomm.c (parse_vma): New function, moved in from objcopy.c.
+ * bucomm.h (parse_vma): Declare.
+ * binutils.texi, objdump.1: Document new objdump options.
+
+Tue Sep 12 12:37:39 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (maintainer-clean): New target.
+
+ * ar.c (replace_members): Don't call write_archive if nothing
+ changed.
+
+ * objdump.c (disassemble_data): Add casts to avoid gcc warnings.
+
+Thu Sep 7 12:12:17 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * config.in: Rename from config.h.in.
+ * configure.in: Call AC_CONFIG_HEADER with config.h:config.in.
+ Check for config.h:config.in when creating stamp-h.
+ * configure: Rebuild.
+ * Makefile.in (stamp-h): Depend upon config.in rather than
+ config.h.in. Set CONFIG_HEADERS to config.h:config.in when
+ calling config.status.
+
+ * Makefile.in (distclean): Remove config.h, stamp-h, and
+ config.log.
+
+ * nm.c (value_format): Initialize based on BFD64 and
+ BFD_HOST_64BIT_LONG.
+ (print_radix): New static variable.
+ (set_print_radix): Set print_radix. Adjust changes to
+ value_format.
+ (print_value): New static function, to print 64 bit octal and
+ decimal values correctly.
+ (print_symbol_info_bsd): Check BFD64, not BFD_HOST_64_BIT. Use
+ print_value.
+ (print_symbol_info_sysv): Use print_value.
+ (print_symbol_info_posix): Likewise.
+
+Wed Sep 6 15:02:55 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (*.o): Remove incorrect dependencies on
+ $(BFDDIR)/hosts/std-host.h.
+
+ * Makefile.in (INSTALL_DATA): Add -m 644.
+ (INSTALL_XFORM1): Likewise.
+ (CC_FOR_BUILD): Set to @CC_FOR_BUILD@ rather than $(CC).
+ (mostlyclean): Remove config.log.
+ (distclean): Remove config.cache.
+
+ * configure.in: Call BFD_CC_FOR_BUILD and BFD_BINARY_FOPEN.
+ * configure: Rebuild.
+
+Tue Sep 5 20:22:42 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Rewrite to use autoconf.
+ * aclocal.m4: New file.
+ * configure: New file, built by autoconf.
+ * acconfig.h: New file.
+ * config.h.in: New file, built by autoheader.
+ * Makefile.in: Various changes for new configure script. Also:
+ (PROGS): Remove $(SYSINFO_PROG).
+ (ALL_CFLAGS): Remove $(TDEFINES).
+ (version.o): Use $(ALL_CFLAGS).
+ (cplus-dem.o, dlltool.o, nlmconv.o): Likewise.
+ (sysdump.o): Depend upon bucomm.h and config.h.
+ (srconv.o, arsup.o, strings.o): Depend upon config.h.
+ (filemode.o): Don't depend upon ../bfd/sysdep.h.
+ (bucomm.o): Depend upon config.h, not ../bfd/sysdep.h.
+ (size.o, objdump.o, nm.o, ar.o, objcopy.o): Likewise.
+ (nlmheader.o, nlmconv.o): Likewise.
+ (distclean): Don't remove sysdep.h.
+ * bucomm.h: Include "ansidecl.h", <stdio.h>, and "config.h".
+ Include "fopen-same.h" or "fopen-bin.h", based on
+ USE_BINARY_FOPEN. Include <errno.h>, and declare errno if it is
+ not a macro. Include <unistd.h>, <string.h>, <strings.h>,
+ <stdlib.h>, and <fcntl.h> if they are present. Declare strchr,
+ strrchr, and strstr if no string header file exists. Include
+ <sys/file.h> if it exists and <fcntl.h> does not. Define
+ O_RDONLY and O_RDWR if necessary.
+ * ar.c: Don't include "sysdep.h". Do include <sys/types.h> and
+ <sys/stat.h>. Use HAVE_GOOD_UTIME_H rather than POSIX_UTIME. Use
+ HAVE_UTIMES rather than !USE_UTIME. Don't include <errno.h>, and
+ don't declare errno.
+ * arsup.c: Don't include <sysdep.h>.
+ * bucomm.c: Don't include "sysdep.h". Include <stdio.h>,
+ <sys/types.h>, and <sys/stat.h>. Include <time.h> if it defines
+ time_t. Define time_t if necessary.
+ * coffdump.c: Don't include "sysdep.h".
+ * coffgrok.c, filemode.c, nlmconv.c, size.c: Likewise.
+ * srconv.c, strings.c: Likewise.
+ * nm.c: Don't include "sysdep.h". Don't try to define HAVE_SBRK.
+ * objcopy.c: Don't include "sysdep.h". Include <sys/types.h> and
+ <sys/stat.h>.
+ (simple_copy): Use creat rather than assuming that O_CREAT is
+ defined.
+ * objdump.c: Don't include "sysdep.h". Use
+ NEED_DECLARATION_PRINTF rather than !FPRINTF_ALREADY_DECLARED.
+ * sysdump.c: Include "bfd.h" and "bucomm.h". Don't include
+ "sysdep.h" or <stdlib.h>.
+ (dump_symbol_info): Rename from symbol_info. Change all callers.
+
+Mon Sep 4 14:30:00 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in (host_makefile_frag): Don't set. Substitute for
+ @CC@, @CFLAGS@, @HDEFINES@ and @LDFLAGS@ in Makefile.
+ * Makefile.in (AR_FLAGS): Set to rc rather than qv.
+ (CC): Define as @CC@.
+ (CFLAGS): Set to @CFLAGS@.
+ (LDFLAGS): Define as @LDFLAGS@.
+ (ALL_CFLAGS): Use @HDEFINES@ rather than $(HDEFINES).
+
+ * configure.in: Don't bother to call config.bfd for each target.
+ Just call it for the default target, and use the shell variable to
+ decide whether underscores are used.
+
+Thu Aug 31 19:21:48 1995 Jason Molenda (crash@phydeaux.cygnus.com)
+
+ * configure.in: match i[3-6]86-*-win32, not just i386-*-win32.
+
+Thu Aug 31 16:30:22 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (add_indirect): New.
+ (asm_prefix): New
+ (gen_exp_file): Timestamp should be 0. Insert prefix when
+ needed. New code for indirection.
+ (gen_lib_file): Timestamp should be 0. Insert prefix
+ when needed.
+ (usage): Document --add-indirect.
+ (main): Cope with new option.
+
+ * objdump.c (dump_private_headers): New.
+ (usage): Document new option.
+ (long_option): Add private-headers.
+ (dump_bfd_private_header): New.
+ (main): Cope with new option.
+
+Thu Aug 31 04:09:16 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * dlltool.c (run): Add missing 3rd arg to waitpid.
+
+Wed Aug 30 11:02:11 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * Makefile.in (TOOL_PROGS): Include dlltool if needed.
+
+Tue Aug 29 13:25:21 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (rva): Deleted.
+ (rvaafter, rva_before): Use new assembler pseudo.
+ (flush_page, gen_exp_file, gen_lib_file): Use new way of RVAing.
+ (gen_exp_file): Don't generate .edata if no need.
+ (gen_lib_file): Don't make timestamp.
+ Put _iname in idata$7.
+ (workout_prefix): Fix memory initialization bug.
+ (usage): Tidy up, delete many single char options.
+ (main): rva option is gone.
+
+Mon Aug 21 18:41:28 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (options): image-base is a synonym for rva.
+ (gen_lib_file): Put dll name into ibase$7.
+
+Sun Aug 20 09:59:00 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ Modified to generate archives and objects rather than .s files.
+ * dlltool.c (run) New function.
+ (gen_exp_file, gen_lib_file): Use run.
+ (workout_prefix): New.
+ (usage): Document new options.
+ (main): Parse new options.
+
+Wed Aug 16 16:26:52 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (gen_exp_file): Fix RVA handling.
+ (rva_s, rva_n): Delete.
+
+Fri Aug 11 18:27:18 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * nm.c (main): Ignore -e.
+
+Thu Aug 10 17:35:00 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * Makefile.in (config.texi): New target. Write out a setting for
+ texinfo variable VERSION.
+ (binutils.dvi, binutils.info): Depend on it.
+ * binutils.texi: Include it, and reference @value{VERSION} instead
+ of explicitly specifying 2.2(!).
+
+Thu Aug 10 16:07:53 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * coffgrok.c (do_type): Handle array dimensions the same way gdb
+ does.
+
+Tue Aug 8 17:10:42 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c (mtable): New fields.
+ (ASM_RVA_BEFORE, ASM_RVA_AFTER): New.
+ (flush_page): Use new macros.
+
+Sat Aug 5 00:16:37 1995 Jeff Law (law@snake.cs.utah.edu)
+
+ * objcopy.c (mark_symbols_used_in_relocations): Handle sections
+ with no relocations.
+ * coffgrok.c (do_sections_p1): Likewise.
+
+Mon Jul 31 12:51:06 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * strings.c (print_strings): For compatibility with existing
+ strings programs, print strings which are not terminated with a
+ null byte or a newline.
+ * binutils.texi, strings.1: Update documentation accordingly.
+
+ * ar.c (replace_members): For compatibility with existing ar
+ programs, permit users to add the same file multiple times.
+
+Tue Jul 25 11:21:53 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * strings.c (DATA_FLAGS): Remove SEC_DATA.
+ (main): If no file names are given, scan standard input.
+ * binutils.texi, strings.1: strings now scans non-data sections by
+ default.
+
+Mon Jul 24 13:52:28 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * srconv.c (wr_hd): Set afl field to 4 for bfd_arch_sh.
+ (writeINT): When size == -2, use 2 bytes for the h8300 and 4 bytes
+ for the sh.
+
+ * sysdump.c (fillup): Return size - 1, the last byte is a checksum
+ and shouldn't be counted.
+ * sysroff.info (hd): Changed segment identifier from a byte to a 1
+ bit field. The sysroff 2.0-01 specification seems to be in error
+ here. Reduce width of following "spare" field from 4 to 3 bits.
+ (rl): Changed order and width of first 4 bitfields to correspond
+ to sysroff specification.
+ (dln_head, dln_inside, dln_tail): Removed.
+
+Tue Jul 18 23:00:03 1995 Fred Fish <fnf@cygnus.com>
+
+ * nm.c (sort_symbols_by_size): Enclose expression being casted
+ in parens so result is casted, not just first operand. Can't
+ do pointer arithmetic on void* pointers.
+
+Fri Jul 14 13:42:42 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * sysdump.c (dh): Changed format of output to be 16 hex digits
+ followed by 16 ascii characters, similar to Emacs' hexl-mode,
+ to make it easier to read.
+ (xcalloc): fix typo.
+
+Thu Jul 13 15:27:44 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * srconv.c (wr_tr): Write out handcrafted tr block.
+ (walk_tree_symbol): Use evallen and evalue instead of
+ vallen & value because of corresponding changes in
+ sysroff.info.
+
+ * sysdump.c (sysroff_swap_tr_in, sysroff_print_tr_out): New
+ functions.
+
+ * sysroff.info (tr): the tr block is a special case --- a block
+ without contents --- which can't be handled by generated code.
+ (den, dpp): only first byte is present for DENend, DPPend.
+ (dsy): describe a conditional portion of block, rename some fields.
+ (dps): describe a conditional portion of block.
+ (dfl): removed.
+
+ * sysinfo.y (yyerror): write error message to standard error.
+
+Thu Jul 13 10:43:59 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (DISTSTUFF): Add arparse.h and sysinfo.h.
+ (mostlyclean): Remove y.output.
+ (clean): Remove sysroff, sysroff.c, sysroff.h, and sysinfo.
+
+ * nlmconv.c (powerpc_mangle_relocs): Cast memset arg to size_t.
+ * objcopy.c (copy_object): Likewise.
+
+ * nm.c (HAVE_SBRK): Define execpt on amigados and WINDOWS_NT.
+ (struct size_sym): Define.
+ (show_stats): New static variable.
+ (long_options): Add undocumented option "stats".
+ (main): Print memory stats if requested.
+ (sort_bfd, sort_dynamic, sort_x, sort_y): New static variables.
+ (numeric_forward): Use minisymbols rather than asymbols.
+ (non_numeric_forward): Likewise.
+ (size_forward1): Rename from size_forward. Use minisymbols.
+ (size_forward2): New static function.
+ (sort_symbols_by_size): Take new arguments dynamic, size, and
+ symsizep. Use minisymbols. Don't store the size back in the
+ symbol; store in a newly allocate struct size_sym array.
+ (display_rel_file): Read minisymbols rather than asymbols. Set
+ sort_* variables. Call print_size_symbols if sorting by size.
+ (filter_symbols): Take new arguments dynamic and size. Use
+ minisymbols.
+ (print_symbols): Likewise. Call print_symbol for actual printing.
+ (print_size_symbols): New static function.
+ (print_symbol): New static function.
+
+Wed Jul 12 10:43:05 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (dump_section_stabs): Only print each stabs section
+ once.
+ (compare_relocs): Make it clear to gcc that this always returns a
+ value.
+
+Wed Jul 12 10:40:23 1995 H.J. Lu <hjl@nynexst.com>
+
+ * objcopy.c (simple_copy): Preserve errno on failure.
+ (smart_rename): Print error mesage if simple_copy fails.
+
+Tue Jul 11 13:10:52 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * sysdump.c: re-indented file.
+ (module): read blocks sequentially instead of trying to parse
+ them, as that would require changing the parser recognize the
+ difference between a DPSstart and DPSend block.
+ (getone): Add break's between switch blocks as appropriate.
+ (object_body_list): parse blocks according to sysroff spec.
+
+Mon Jul 10 12:37:25 1995 J.T. Conklin <jtc@poseidon.cygnus.com>
+
+ * sysroff.info: re-indented file, prior formatting was confusing
+ because it was indentation did not reflect nesting of conditional
+ records. Change "space size within segment" record in hd record
+ from bit to byte.
+
+ * sysinfo.y (cond_it_field): Use xcalloc instead of calloc.
+
+ * srconv.c (wr_cs): Reformatted cs header array, tag each byte
+ with a comment describing the field.
+ (wr_unit_info): Use SEEK_SET macro instead of constant 0.
+ (main): Use FOPEN_WB macro instead of literal "wb".
+ * sysroff.info: Remove fdl (dfl) field from cs block. Compare
+ ptr->type with ED_TYPE_CONST instead of constant 2 in ed block.
+
+Tue Jul 4 14:48:42 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * nm.c (size_forward): Check yf against yn, not xn.
+
+ * objcopy.c (copy_archive): Record all output BFD's, and close
+ them before unlinking them and removing the temporary directory,
+ to avoid NFS problems.
+
+ * ar.c (replace_members): In verbose messages, use 'r' when
+ replacing a member, and 'a' when adding one.
+
+ * ar.c (ar_truncate): New static variable.
+ (normalize): Change return type to const char *. Add abfd
+ argument. Change all callers. If ar_truncate, chop the filename
+ to abfd->ar_max_namelen.
+ (main): For the 'f' modifier, set ar_truncate to true. Don't
+ change quick_append to replace if ar_truncate is true.
+ (do_quick_append): If ar_truncate, set BFD_TRADITIONAL_FORMAT.
+ (write_archive): Likewise.
+ * binutils.texi, ar.1: Document 'f' modifier.
+
+ * objcopy.c (enum strip_action): Define strip_unneeded.
+ (OPTION_STRIP_UNNEEDED): Define.
+ (strip_options): Add "strip-unneeded".
+ (copy_options): Likewise.
+ (copy_usage): Mention --strip-unneeded.
+ (strip_usage): Likewise.
+ (is_strip_section): Strip debugging sections if strip_unneeded.
+ (filter_symbols): If strip_unneeded, only keep BSF_KEEP symbols.
+ (copy_object): If strip_all, discard symbols without checking
+ discard_locals.
+ (copy_object): Call filter_symbols if strip_unneeded.
+ (setup_section): Strip debugging sections if strip_unneeded.
+ (copy_section): Likewise.
+ (strip_main): Handle OPTION_STRIP_UNNEEDED.
+ (copy_main): Likewise.
+ * binutils.texi, objcopy.1, strip.1: Document --strip-unneeded.
+
+Mon Jul 3 14:16:47 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * configure.in (i386-*-win32): New configuration.
+ * dlltool.c (killat, xlate, usage, long_options, main):
+ Understand and cope with -k option.
+
+Sat Jul 1 12:25:15 1995 Fred Fish <fnf@cygnus.com>
+
+ * ar.c: (extract_file): Change "#if POSIX_UTIME" to
+ "#ifdef POSIX_UTIME" to match other tests of POSIX_UTIME
+ and avoid lossage when POSIX_UTIME is not defined at all.
+
+Wed Jun 28 17:51:24 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * ar.c: (print_contents.c, extract_file, do_quick_append):
+ Malloc buffers rather than allocate on stack (so it works
+ on NT).
+ * deflex.l: Names can have an @ in them.
+ * dlltool.c: Loads of stuff. Can now generate .imp files which
+ work with NT .dlls.
+
+Thu Jun 22 19:10:50 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.in (demangle.c.o): Remove.
+ (arparse.h): Depend on arparse.c instead of arparse.y.
+
+Wed Jun 21 17:32:45 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in (DISTSTUFF): Don't include info here.
+ (diststuff): Include it here.
+ (realclean): Remove *.info.
+
+ * objdump.c (compare_relocs): If relocation entries have the same
+ address, keep them in file order.
+
+Mon Jun 19 09:06:49 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * dlltool.c: Change names of generated files. .*.s-> -*.s
+
+ * objdump.c (dump_section_stabs): Check for names
+ which are supersets of selected names.
+
+Wed Jun 14 19:43:52 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * dlltool.c (mtable, ARM jump): Must redirect via pc offsetable ptr.
+
+Wed Jun 14 13:27:22 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * deflex.l, defparse.y, dlltool.c: New files.
+ * Makefile.in, configure.in: Support for them.
+
+Mon Jun 12 11:27:54 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * sysdump.c: Include sysdep.h
+ (main): Open input with FOPEN_RB.
+
+Fri Jun 9 17:26:11 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * objdump.c (wide_output): New flag variable.
+ (usage): Print new -w, --wide options.
+ (long_options): Add --wide support.
+ (dump_section_header): If --wide, don't print a newline between
+ the section's first line and the flags.
+ (objdump_print_address): Use unsigned comparisons for the binary
+ search, not signed.
+ (disassemble_data): If --wide, don't put a \n between the
+ disassembly output and relocation information.
+ (main): Support -w option being the same as --wide.
+
+Thu Jun 1 17:09:27 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ Sat May 6 08:52:24 1995 H.J. Lu (hjl@nynexst.com)
+
+ * objcopy.c (smart_rename): make it smarter, clean up
+ if rename () fails.
+
+Tue May 30 14:24:15 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in: Delete lines with lots of #### because four or more
+ indicate a point for makefile fragment substitution.
+
+Tue May 9 17:17:05 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * configure.in: Don't build nlmconv on PowerPC eabi any more, it
+ is not needed.
+
+Thu Apr 27 20:21:24 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * Makefile.in (EXPECT): Define.
+ (RUNTEST): Use one in source tree if present.
+ (check): Set `rootme' for $(EXPECT).
+
+Wed Apr 26 18:26:21 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * srconv.c (main): Add support for -n option which disables
+ prescan of common symbols.
+ (wr_ob): If reading past the end of a section, fill with zeros.
+
+Tue Apr 25 19:14:37 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * objdump.c (dump_section_header): Display load address after
+ virtual memory (run-time) address.
+
+Wed Apr 19 09:44:06 1995 Jason Merrill <jason@phydeaux.cygnus.com>
+
+ * Makefile.in (cplus-dem.o): Pass -DVERSION='"$(VERSION)"' to the
+ compile.
+ (DEMANGLER_PROG): No longer uses version.o.
+
+Mon Apr 10 13:29:49 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ Merge in support for Mac MPW as a host.
+ (Old change descriptions retained for informational value.)
+
+ * mpw-config.in (TDEFINES): Define as empty in makefile frag.
+
+ * mpw-config.in: Create mk.tmp, define ARCHDEFS in it.
+
+ * mpw-config.in: New file, MPW configure fragment for binutils.
+ * mpw-make.in (install-only): New target.
+ (install): Also depend on install-only.
+
+ * mpw-make.in (cplusfilt): Renamed from c++filt.
+ (INCLUDES): Add more paths.
+
+ * mpw-make.in: New file, MPW makefile fragment for binutils.
+ (Normally automatically generated from Makefile.in.)
+
+Mon Mar 27 11:52:57 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ar.c (write_archive): Call make_tempname to get output file
+ name, rather than using a fixed name based on the input file.
+
+ * objcopy.c (make_tempname): Copy from here...
+ * bucomm.c (make_tempname): ...to here, and make global.
+ * bucomm.h (make_tempname): Declare.
+
+Fri Mar 24 11:47:42 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * strings.c: Include "bfd.h" before other headers. Include
+ "sysdep.h".
+ * bucomm.c (print_arelt_descr): Cast st_uid and st_gid to long,
+ and print them with %ld.
+
+Fri Mar 10 13:09:42 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (strip_options): Add --keep-symbol.
+ (copy_options): Likewise.
+ (copy_usage): Mention --keep-symbol and -K.
+ (strip_usage): Likewise.
+ (keep_symbols): New static variable.
+ (is_strip_symbol): Adjust the return value according to
+ keep_symbols.
+ (strip_main): Handle -K. For -N, check that -K was not given.
+ (copy_main): Likewise.
+ * binutils.texi, objcopy.1, strip.1: Document -K.
+
+Mon Mar 6 13:33:47 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * objcopy.c (copy_archive): Check result of mkdir.
+ (copy_main): Cast an xmalloc result.
+
+ * objdump.c (usage): Break long format string into shorter ones.
+
+Mon Mar 6 13:46:12 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * bucomm.c (list_supported_targets): New function.
+ * bucomm.h (list_supported_targets): Declare.
+ * ar.c (usage): Call list_supported_targets.
+ * nm.c (usage): Likewise.
+ * objcopy.c (copy_usage, strip_usage): Likewise.
+ * objdump.c (usage): Likewise.
+ * size.c (usage): Likewise.
+ * strings.c (usage): Likewise.
+
+Tue Feb 28 15:13:58 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * bucomm.c (print_arelt_descr): Cast st_size to long before
+ passing it to fprintf.
+
+Fri Feb 17 13:36:45 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (struct section_list): Add fields remove, set_flags,
+ and flags. Change adjust from boolean to enum.
+ (remove_sections): Remove static variable.
+ (sections_removed): New static variable.
+ (copy_options): Add --set-section-flags.
+ (copy_usage): Mention --set-section-flags.
+ (parse_flags): New static function.
+ (find_section_list): New static function.
+ (is_strip_symbol): Change return type from int to boolean.
+ (is_strip_section): New static function.
+ (filter_symbols): Call is_strip_section.
+ (copy_object): When adding sections, check for specified flags or
+ VMA. Call filter_symbols if any sections are being removed.
+ (setup_section): Use find_section_list function rather than
+ looking through remove_sections and adjust_sections. Handle
+ --set-section-flags.
+ (copy_section): Use find_section_list rather than looking through
+ remove_sections.
+ (strip_main): Use find_section_list instead of adding items to
+ sections_removed.
+ (copy_main): Use find_section_list instead of adding items to
+ sections_removed and adjust_sections. Handle --set-section-flags.
+ * binutils.texi, objcopy.1: Document --set-section-flags.
+
+Tue Feb 14 18:03:03 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (with_source_code): New global variable.
+ (usage): Mention -S/--source.
+ (long_options): Add --source.
+ (prev_functionname, prev_line): New static variables.
+ (struct print_file_list): Define.
+ (print_files): New static variable.
+ (skip_to_line, show_line): New static functions.
+ (disassemble_data): Call show_line to handle -l and -S.
+ (main): Handle -S.
+ * binutils.texi, objdump.1: Document -S/--source.
+
+Thu Feb 9 16:11:53 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (copy_usage): Rename parameter to avoid shadowing.
+ (strip_usage): Likewise.
+
+ * objcopy.c (struct section_add): Define.
+ (add_sections): New static variable.
+ (copy_options): Accept --add-section.
+ (copy_usage): Mention --add-section.
+ (copy_object): Add sections from the add_sections list.
+ (copy_main): Handle --add-section.
+ * binutils.texi, objcopy.1: Document --add-section.
+
+Wed Feb 1 15:04:57 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * objdump.c (disassemble_data): Pass section offset, not absolute
+ address, to bfd_find_nearest_line.
+
+ * nlmconv.c (powerpc_mangle_relocs): Don't use const with
+ reloc_howto_type.
+
+Thu Jan 26 18:50:06 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (compare_symbols): Use bfd_asymbol_value (VAR) rather
+ than VAR->value.
+ (objdump_print_address): Likewise.
+ (disassemble_data): Don't change the symbol values. It can
+ confuse bfd_canonicalize_reloc.
+
+Thu Jan 26 12:03:56 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * configure.in: Add support for powerpc-*-ebai.
+
+Wed Jan 18 10:02:12 1995 Steve Chamberlain <sac@splat>
+
+ * coffdump.c: Include sysdep.h.
+ (dump_coff_type): Handle coff_secdef_type.
+ * coffgrok.c : Include sysdep.h.
+ * srconv.c: Include libiberty.h
+ (absolute_p, dty_start, dty_end, dump_tree_structure): Remove.
+
+Wed Jan 18 12:24:14 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * coffdump.c (dump_coff_scope): Cast pointer to unsigned long for
+ printf.
+ * coffgrok.c: Include bucomm.h. Don't declare xmalloc.
+ (push_scope): Declare type of parameter link.
+ * size.c: Include libiberty.h.
+ * srconv.c: Include bucomm.h.
+ (find_base): Declare at top of file.
+ (wr_hd): Add default case to architecture switch.
+ (wr_dps_start): Declare type of parameter nest.
+ (wr_du): Comment out variables used only in commented out blocks.
+ (wr_dus): Remove unused variable i.
+ (wr_sc): Remove unused variables myinfo, low, and high.
+ * strings.c: Include libiberty.h.
+ * sysdump.c: Include <ctype.h>.
+
+Tue Dec 20 19:13:44 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ar.c (main): Ignore 'f' modifier used on HP/UX 9.
+
+Thu Dec 15 17:34:12 1994 Stan Shebs <shebs@andros.cygnus.com>
+
+ * ar.c, nm.c, objcopy.c, objdump.c: Include progress.h.
+ * ar.c, nm.c, objcopy.c, objdump.c (main): Add START_PROGRESS
+ and END_PROGRESS.
+ * ar.c (map_over_members, open_inarch): Call PROGRESS.
+ * nm.c (main, display_archive, filter_symbols, print_symbols):
+ Call PROGRESS.
+
+ * objcopy.c (copy_usage): Break up long usage string.
+
+Wed Dec 14 15:51:56 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * objcopy.c (copy_object): Don't bother setting status after
+ nonfatal() "call", because it won't return.
+
+Fri Dec 9 00:22:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (powerpc_mangle_relocs): Don't switch a reloc to use
+ the section symbol if the symbol is undefined.
+
+Thu Dec 8 14:45:50 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * objcopy.c (add_strip_symbol): Cast return value of xmalloc.
+
+Wed Nov 30 11:05:43 1994 Ian Lance Taylor <ian@rtl.cygnus.com>
+
+ * ar.c (replace_members): Pass current->filename to normalize when
+ checking for duplicates, because the filename of a newly added
+ file will not have been normalized yet.
+
+Thu Nov 17 15:00:13 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ar.c (main): Don't call do_quick_append if any of the archive
+ names are longer than 14 characters.
+
+ * objcopy.c (main): Fix is_strip test. From
+ pirker@eiunix.tuwien.ac.at (Martin Pirker).
+
+Thu Nov 17 15:37:19 1994 Mark W. Eichin <eichin@cygnus.com>
+
+ * objcopy.c (add_strip_symbol): New function, adds a name to an
+ explicit list of symbols to strip.
+ (is_strip_symbol): New function, reports whether the name argument
+ is in the explicit list.
+ (filter_symbols): Check against is_strip_symbol above all.
+ (strip_main): Recognize -N option. If used, don't default to
+ strip_all.
+ (copy_main): Recognize -N option.
+ (strip_usage): Document -N and --strip-symbol options.
+ (copy_usage): Ditto.
+ * objcopy.1, strip.1, binutils.texi: Document -N and
+ --strip-symbol options.
+
+Tue Nov 8 13:12:54 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * objdump.c (display_target_list, display_info_table): Pass an
+ array to tmparg, rather than NULL, since some systems can't handle
+ NULL.
+
+ * objcopy.c (copy_archive): Keep a list of the names of the
+ temporary files we created. Close each input BFD after we open
+ its successor.
+
+Mon Nov 7 15:48:39 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in (VERSION): Bump to 2.5.3.
+
+Thu Nov 3 19:04:34 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in (install-info): Install info files from whatever
+ directory they were found in.
+
+ Patch from DJ Delorie:
+ * configure.bat: do c++filt -> cxxfilt right
+
+ * sysinfo.y: Include system header files early, so any potential
+ declaration of abort() occurs before its use.
+
+ * strings.c (strings_file): Try opening the file in binary mode
+ first.
+
+Wed Nov 2 15:44:13 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ar.c (main): Treat ar qs like ar rs.
+
+Tue Oct 25 16:19:25 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * objcopy.c (gap_fill): Explicitly initialize, for clarity.
+ (pad_to_set, pad_to): New static variables.
+ (copy_options): Accept --pad-to.
+ (copy_usage): Mention --pad-to.
+ (copy_object): Support --pad-to.
+ (compare_section_vma): Sort non loadable sections to the front.
+ Sort sections with the same VMA by size.
+ (copy_main): Handle --pad-to.
+ * binutils.texi, objcopy.1: Document --pad-to.
+
+Thu Oct 20 13:51:31 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objcopy.c (gap_fill_set, gap_fill): New static variables.
+ (copy_options): Accept --gap-fill.
+ (copy_usage): Mention --gap-fill.
+ (copy_object): Support --gap-fill.
+ (get_sections, compare_section_vma): New static functions.
+ (copy_main): Handle --gap-fill.
+ * binutils.texi, objcopy.1: Document --gap-fill.
+
+Wed Oct 19 14:09:16 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * Makefile.in (check): Add a dummy else clause to the if
+ statement.
+
+ * objcopy.c (copy_object): Revert yesterday's change.
+ * binutils.texi, objcopy.1: Remove special mention of --set-start
+ and `binary' output format.
+
+Tue Oct 18 11:12:01 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * objcopy.c (copy_object): If the output file format is `binary',
+ and the start address was not set using --set-start, default the
+ start address to zero. This hack is because the `binary' output
+ file format uses the start address to set the virtual address of
+ the first byte in the file.
+ * binutils.texi, objcopy.1: Add some notes on generating S-records
+ and binary files.
+
+ * nm.c (print_symdef_entry): Call print_symname to print the
+ symbol name, so that --demangle works.
+
+ * Makefile.in (mostlyclean): Remove tmpdir.
+
+ * objcopy.c (struct section_list): Add fields used, adjust, val.
+ (adjust_start, set_start_set, set_start): New static variables.
+ (adjust_section_vma, adjust_sections): New static variables.
+ (copy_options): Add --adjust-start, --adjust-vma,
+ --adjust-section-vma, --adjust-warnings, --no-adjust-warnings,
+ --set-start.
+ (parse_vma): New static function.
+ (copy_usage): Mention new options.
+ (copy_object): Handle --set-start and --adjust-start.
+ (setup_section): Correct type of last argument to PTR. Set used
+ field if section is removed. Handle --adjust-vma and
+ --adjust-section-vma.
+ (copy_section): Correct type of last argument to PTR.
+ (mark_symbols_used_in_relocations): Likewise.
+ (strip_main): Clear used field when handling -R.
+ (copy_main): Handle new options.
+ * binutils.texi (objcopy): Document new options.
+ * objcopy.1: Document new options.
+
+Fri Oct 14 14:38:13 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * configure.in (configdirs): Remove definition--testsuite is no
+ longer configured.
+ * Makefile.in (testsuite): Remove target.
+ (site.exp): New target.
+ (check): Rewrite.
+ (clean, distclean): Don't recur into testsuite directory.
+
+Thu Oct 13 19:24:09 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in (VERSION): Updated to 2.5.
+ * Version 2.5 released.
+
+Tue Oct 11 15:26:42 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * Makefile.in (sysdump.o): Depends upon sysroff.c.
+
+Mon Oct 10 13:50:30 1994 J.T. Conklin (jtc@rtl.cygnus.com)
+
+ * nlmconv.c (link_inputs): Pass -Ur flag to ld so that the
+ ctor/dtor tables needed by C++ programs are built.
+
+Sun Oct 9 18:04:00 1994 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * Makefile.in (srconv.o): Add dependence on sysroff.c.
+
+Tue Oct 4 12:19:51 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * configure.in: Use ${config_shell} when running config.bfd.
+
+ * Makefile.in (sysroff.h): Split target away from sysroff.c.
+ (srconv.o, sysdump.o): New targets.
+ (srconv, sysdump): Don't depend upon sysroff.c.
+
+Wed Sep 28 13:04:34 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * Makefile.in (arparse.c): Don't ignore errors from mv.
+ (sysinfo.c): Likewise. Also, depend upon arparse.c, to prevent a
+ parallel make from trying to build both arparse.c and sysinfo.c
+ simultaneously.
+ (nlmheader.c): Similar change.
+ (arparse.h): Separate target from arparse.c, so that a parallel
+ make does not try to build both at once. Depend upon arparse.c.
+ (sysinfo.h): Similar change.
+
+ * objdump.c (disassemble_data): Pass the reloc buffer to free, not
+ the pointer used to loop over the relocs.
+
+Sat Sep 24 16:16:57 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * objdump.c (disassemble_data): Cast result of xmalloc.
+
+Wed Sep 21 19:30:35 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objdump.c (sorted_syms, sorted_symcount): New global variables.
+ (objdump_print_address): Use sorted_syms and sorted_symcount
+ instead of syms and symcount.
+ (disassemble_data): Don't bother to get the relocs before looping
+ over the sections. Before filtering and sorting the symbol table,
+ copy it into sorted_syms.
+
+Fri Sep 16 11:27:39 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objdump.c (struct objdump_disasm_info): Add field require_sec.
+ (objdump_print_address): If aux->require_sec, require that the
+ symbol be in aux->sec even if HAS_RELOC is not set. If we can't
+ find a smaller symbol in the right section, look for a larger one.
+ (disassemble_data): Set aux.require_sec around the
+ objdump_print_address call for the instruction address.
+
+Thu Sep 15 21:43:17 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ar.c: Call xexit rather than exit.
+ (output_filename, output_file, output_bfd): New static variables.
+ (remove_output): New static function.
+ (main): Call xatexit (remove_output). Call xexit rather than
+ returning.
+ (extract_file): Set output_filename and output_file while output
+ file is open.
+ (write_archive): Likewise, but use output_bfd, not output_file.
+ * arsup.c: Include libiberty.h. Call xexit rather than exit.
+ * bucomm.c: Likewise.
+
+ * objdump.c (disassemble_all): New global variable.
+ (usage): Document --disassemble-all.
+ (long_options): Add disassemble-all as a synonym for -D.
+ (compare_symbols): Make pointers const.
+ (compare_relocs): New static function.
+ (disassemble_data): Rename disassemble to disassemble_fn to avoid
+ shadowing. If dump_reloc_info, print relocs along with
+ disassembly. Skip sections which are not SEC_CODE unless
+ disassemble_all or only is set.
+ (display_bfd): Don't call dump_relocs if disassemble is set.
+ (main): Accept and handle -D.
+ * binutils.texi: Document -D/--disassemble-all.
+ * objdump.1: Likewise.
+
+Wed Sep 14 12:19:07 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objdump.c (disassemble_data): Initialize prevline to 0. Make
+ prev_function non const. Copy functionname into an malloc buffer
+ when setting prev_function, instead of assuming that the string
+ will last forever.
+
+ * nm.c: Include libiberty.h.
+ (sort_by_size): New static variable.
+ (long_options): Add --size-sort.
+ (usage): Mention --size-sort.
+ (numeric_forward): Make static. Change from void * to PTR.
+ (numeric_reverse): Likewise.
+ (non_numeric_forward, non_numeric_reverse): Likewise.
+ (sorters): Change declaration from void * to PTR.
+ (size_forward, sort_symbol_by_size): New static functions.
+ (display_rel_file): Handle sort_by_size.
+ (filter_symbols): If sort_by_size, discard absolute and undefined
+ symbols.
+ * binutils.texi (nm): Document --size-sort.
+ * nm.1: Document --size-sort.
+
+Tue Sep 13 21:06:06 1994 Jeff Law (law@snake.cs.utah.edu)
+
+ * objcopy.c (copy_main): Initialize input_filename and
+ output_filename to NULL.
+
+Tue Sep 13 14:17:24 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * Makefile.in (version.o): Depend upon Makefile, so that version.o
+ gets rebuilt when make variable VERSION is changed.
+
+ * objdump.c (dump_section_header): Print the SEC_NEVER_LOAD flag.
+
+Wed Aug 24 12:40:09 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * configure.in: Change i[34]86 to i[345]86.
+
+Tue Aug 23 11:00:40 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ar.c (ranlib_touch): Don't update the archive map if there isn't
+ one.
+
+Mon Aug 22 16:02:18 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ar.c: Include libiberty.h.
+ (inarch): Remove variable.
+ (map_over_members): Make static. Add arch argument, and use it
+ instead of inarch. Change all callers.
+ (main): Treat --version as -v. Accept -t argument. Accept any
+ number of archive arguments. Catch and use open_inarch return
+ value, rather than using inarch.
+ (open_inarch): Return newly opened BFD, rather than using inarch.
+ (do_quick_append): Make archive_filename const.
+ (write_archive): Add iarch argument, and use it instead of inarch.
+ Change all callers.
+ (delete_members, move_members, replace_members): Likewise.
+ (ranlib_only): Don't exit on success. Catch and use open_inarch
+ return value.
+ (ranlib_touch): New function.
+ * arsup.h (map_over_members): Don't declare.
+ (ar_end, ar_extract): Declare.
+ (open_inarch): Change return value in declaration to bfd *.
+ * arsup.c (map_over_list): Make static. Always pass two arguments
+ to function. Add arch argument, and use it instead of inarch.
+ Change all callers.
+ (ar_directory_doer): Make static. Add ignored second argument.
+ Change all callers.
+ (ar_directory): Use open_inarch return value rather than inarch.
+ (ar_addlib_doer): Make static.
+ (ar_addlib): Use open_inarch return value rather than inarch.
+ (ar_extract): Remove unused local variable abfd.
+
+Thu Aug 11 14:55:57 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ Add support for removing named sections to objcopy and strip.
+ * objcopy.c (struct section_list): Define.
+ (remove_sections): New static variable.
+ (strip_options, copy_options): Add remove-section.
+ (copy_usage, strip_usage): Mention -R and --remove-section.
+ (setup_section): If section is in remove_sections list, ignore it.
+ (copy_section): Likewise.
+ (strip_main, copy_main): Handle -R.
+ * binutils.texi, objcopy.1, strip.1: Document new options.
+
+Wed Aug 10 10:19:55 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * nlmconv.c (powerpc_mangle_relocs): Rename symvalue to sym_value,
+ so as not to conflict with the symvalue typedef in bfd.h.
+
+Mon Aug 1 13:19:09 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * nlmheader.y: Per current NetWare docs, accept a revision number
+ of 0 and treat a revision number greater than 26 as 0.
+
+Mon Jul 25 12:58:36 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objdump.c (objdump_print_address): Correct handling of end of
+ symbols when looking for next symbol with a different value.
+
+Fri Jul 22 16:48:34 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * nm.c (numeric_forward): Treat undefined symbols as "less than"
+ defined symbols with zero values. If numeric values are equal, or
+ both symbols are undefined, sort alphabetically. Don't assume
+ that the difference of two bfd_vma values will truncate to "int"
+ and still have the same sign.
+ (numeric_reverse): Call numeric_forward and negate the result.
+ (print_symbol_info_bsd): For undefined symbols, print leading
+ spaces equivalent to the width of a printed bfd_vma, rather than
+ assuming that 8 will look right.
+
+Fri Jul 22 10:36:50 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * coffgrok.c (doit): Zero all fields of new structure.
+ * srconv.c (sysroff_swap_*_out): Remove redundant trailing arg.
+ * sysinfo.y: Generate sysroff_swap_*_out without requiring extra
+ arg.
+
+Fri Jul 22 10:09:53 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
+
+ * nlmheader.y: Make "stack" and "stacksize" synonyms in the lexer
+ rather than the parser.
+
+Thu Jul 21 10:25:09 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * config/mh-alphaosf, config/mh-apollo68v, config/mh-delta88:
+ Remove; obsolete.
+
+Sat Jul 16 22:34:39 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objdump.c (slurp_dynamic_symtab): Try to get the dynamic symbols
+ even if the bfd is not marked DYNAMIC. ELF executables are not
+ marked DYNAMIC, but do have dynamic symbols.
+
+Fri Jul 15 01:41:35 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * coffgrok.c (do_where): Make data with no type 'int'.
+ (do_define): Keep info on source file of a symbol.
+ * coffgrok.h (coff_symbol): New field.
+ * srconv.c (PROGRAM_VERSION): Now 1.3
+ (wr_rl): Use external ref number for symbol.
+ (wr_dus): Only keep one source file per debug unit.
+ (wr_dln): Always emit line numbers for first source file,
+ (wr_globals): Emit globals in the du of their owning source file.
+
+Mon Jul 11 15:59:03 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
+
+ * nlmheader.y: Null terminate var_hdr->threadName.
+
+Fri Jul 8 17:33:22 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * Makefile.in (syslex.o, sysinfo.o): Permit C source files to be
+ in $(srcdir), as they will be for FSF releases.
+
+Wed Jul 6 01:13:14 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (setup_sections): Preserve existing section flags when
+ copying in flags from a new section.
+
+Tue Jul 5 15:56:01 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objcopy.c: Include libiberty.h.
+ (copy_file): If output_target is NULL, set it to the target of the
+ input file.
+
+Wed Jun 29 17:17:14 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
+
+ * nlmconv.c (link_inputs): Fixed memory allocation bug.
+
+Thu Jun 23 12:52:46 1994 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * configure.in: Change --with-targets to --enable-targets.
+
+Tue Jun 21 12:53:21 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * Makefile.in (sysinfo): Does not depend upon $(ADDL_LIBS).
+
+ * nlmconv.c (powerpc_build_stubs): Don't generate the PowerPC
+ NetWare custom header; no longer needed.
+ (powerpc_mangle_relocs): Convert relocs against the uninitialized
+ data section into relocs against the data section.
+
+ * configure.in: Set nlmconv_defs to -DNLMCONV_cputype for all the
+ netware targets. Write it into Makefile as NLMCONV_DEFS.
+ * Makefile.in (nlmconv.o): Pass $(NLMCONV_DEFS) to $(CC).
+ * nlmconv.c: Only compile code for specific CPU types if
+ NLMCONV_cputype is defined.
+
+ * nlmconv.c (main): Change uses of bfd_abs_section, etc., to use
+ bfd_abs_section_ptr or bfd_is_abs_section, etc.
+ (i386_mangle_relocs, alpha_mangle_relocs): Likewise.
+ (powerpc_build_stubs): Likewise.
+ * nm.c (filter_symbols, print_symbols): Likewise.
+ * objcopy.c (filter_symbols): Likewise.
+ (mark_symbols_used_in_relocations): Likewise.
+ * objdump.c (remove_useless_symbols, dump_relocs): Likewise.
+ * size.c (sysv_internal_printer): Likewise.
+
+Mon Jun 20 16:43:03 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * Makefile.in (MANPAGES): Remove $(DEMANGLER_PROG).
+ (install): Install it explicitly, from build dir, not srcdir.
+
+Mon Jun 20 16:29:54 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * objdump.c: Don't include elf/internal.h.
+ (bfd_elf_find_section): Don't declare.
+ (read_section_stabs): No special handling for ELF. Always read
+ using BFD sections.
+
+Thu Jun 16 17:25:20 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * configure.in: Set UNDERSCORE in Makefile based on result of
+ invoking config.bfd with a second argument of ``_''.
+ * Makefile.in (underscore.c): Depend upon Makefile. Don't try to
+ run $(CC) and $(NM), just use $(UNDERSCORE). Create via temporary
+ file.
+ (demangle.o): Remove target.
+ ($(NM_PROG)): Don't depend upon demangle.o, and don't link against
+ demangle.o. It's in libiberty anyhow.
+ (cplus-dem.o): Don't depend upon demangle.o.
+ * binutils.texi: Mention -n and --no-strip-underscores arguments
+ to c++filt.
+
+Wed Jun 15 12:10:31 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nm.c (long_options): Add --no-demangle to turn off --demangle,
+ and --no-cplus for Linux compatibility.
+ (usage): Mention --no-demangle.
+ * binutils.texi: Document --no-demangle.
+
+Fri Jun 10 15:41:25 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nm.c: HOST_64_BIT was renamed to BFD_HOST_64_BIT.
+
+ * objcopy.c (copy_archive): Make the temporary directory in the
+ same directory as the output BFD, since we may not have write
+ permission on the current directory. Set the permissions of the
+ new directory to 0700, not 0777.
+
+Mon Jun 6 21:36:43 1994 D. V. Henkel-Wallace (gumby@cygnus.com)
+
+ * configure.in: if this is an rs6000 (and we're not building for
+ any other bfd targets) then build only nm (collect needs it on
+ rs6000-lynx).
+
+ * Makefile.in: define TOOL_PROGS which the list of programes to
+ install in $tooldir -- replaces a hard-coded list.
+
+Fri Jun 3 10:59:18 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (display_target_list): Remove unused local ok.
+
+Thu May 26 18:05:52 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * config/mh-alphaosf (CFLAGS): Don't specify both -g and -O;
+ they're not compatible under native cc. Use -O1 instead.
+
+ * Makefile.in (VERSION): Updated to cygnus-2.4.1.
+
+ Changes from binutils-2.4 net release:
+
+ * Makefile.in (MANPAGES): Use $(DEMANGLER_PROG).
+ ($(DEMANGLER_PROG).1): Build from cxxfilt.man, using sed.
+ * cxxfilt.man: Renamed from c++filt.1, replaced "c++filt" with
+ magic token to be replaced by sed.
+
+ Wed May 11 22:32:00 1994 DJ Delorie (dj@ctron.com)
+
+ * configure.bat: update for latest makefile.in
+
+Fri May 13 23:25:13 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * bucomm.c: Check ANSI_PROTOTYPES rather than __STDC__.
+
+Tue May 10 18:22:06 1994 Jason Molenda (crash@sendai.cygnus.com)
+
+ * objcopy.c (copy_section): Set section size correctly if using
+ interleave.
+
+Sat May 7 16:49:36 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * Makefile.in: Add rule for sysinfo.h
+
+Fri May 6 12:18:33 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * Makefile.in (SRCONV_PROG): Define.
+ (PROGS): Use $(SRCONV_PROG) too.
+
+Thu May 5 19:41:43 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * Makefile.in (DISTSTUFF): Add sysinfo.c, syslex.c, in case
+ someone configures with `targets=all'.
+ (distclean): Remove y.*.
+ (syslex.o): Depend on sysinfo.h.
+ (sysinfo.c): Rename y.tab.h to sysinfo.h.
+ (install-info): Don't try to install into $(infodir)/$(srcdir).
+ * syslex.l: Include sysinfo.h, not y.tab.h.
+
+Thu May 5 11:50:55 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com)
+
+ * syslex.l (yywrap): Define as function if not defined as a macro.
+
+ * Makefile.in (objdump.o): Deleted special rule.
+ * configure.in: Don't bother building ARCHDEFS variable for
+ Makefile.
+ * objdump.c (ARCH_*): Deleted handling.
+ (disassemble_data): Call `disassembler' from opcodes library.
+
+Thu May 5 13:28:42 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in (install): Correct handling of $(tooldir) and
+ $(bindir) being on different devices.
+
+Fri Apr 29 09:50:38 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * sysdump.c (h8300, sh): Add declarations.
+
+Wed Apr 27 11:25:18 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * Makefile.in (syslex, sysinfo): Use CC_FOR_BUILD.
+ * coffdump.c, coffgroc.c, coffgrog.h, srconv.c, sysdump.c,
+ sysroff.info: Major changes.
+
+Tue Apr 26 18:18:24 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * objdump.c (print_section_stabs): Indicate the stab header symbol
+ more clearly, print numbers of unrecognized stab n_type values.
+
+Tue Apr 26 16:22:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (copy_sections): Copy arelent pointers, not arelents.
+
+Mon Apr 25 16:14:32 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in (distclean): Remove $(PROGS) and underscore.c.
+
+Fri Apr 22 11:14:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (setup_sections): Remove special handling of .reginfo
+ section.
+ (copy_sections): Likewise.
+ (alpha_mangle_relocs): Use bfd_ecoff_get_gp_value rather than the
+ special ECOFF .reginfo section.
+
+ * objcopy.c (copy_object): Call bfd_copy_private_bfd_data after
+ copying everything else, to let it fiddle with the file in its
+ final state.
+
+ * objdump.c: Include libiberty.h.
+ (display_target_list): If a format fails, just go on to the next
+ one. Check return value of bfd_set_format.
+ (display_info_table): Likewise. Don't increment loop variable in
+ for loop test, since that skips the first element.
+ (display_target_tables): Rewrite loop for clarity. Ensure that it
+ always prints at least one element.
+
+ * nlmconv.c (main): Use CyGnUsEx rather than CyGnUsSeCs for
+ sections header. Rename from cygnus_sections to cygnus_ext.
+
+Thu Apr 21 12:12:26 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (_DUMMY_NAME_): Don't define.
+ (display_target_list): Use tmpnam to get a file name rather than
+ using _DUMMY_NAME_. Unlink it when done.
+ (display_info_table): Likewise.
+
+ * nlmconv.c (secsec): New static variable.
+ (main): Create .nlmsections section in output BFD. Store
+ information about it in sections header.
+ (setup_sections): Allocate space in sections header.
+ (copy_sections): Copy zero sized sections. Put information about
+ each section in the sections header.
+
+Wed Apr 20 14:34:51 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (powerpc_build_stubs): Take new outbfd argument.
+ Change caller. Create custom header for new PowerPC NetWare
+ format.
+
+ * Makefile.in (nlmheader.o, nlmconv.o): Update dependencies.
+ * nlmconv.c: Include bfd.h and libiberty.h with "", not <>.
+ * nlmheader.y: Include bfd.h with "", not <>.
+
+Wed Apr 13 10:52:50 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c: Do an ifdef on __GO32__, not unix.
+
+Wed Apr 6 21:54:49 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ Added -D (--dynamic) option to nm and -T (--dynamic-syms) and -R
+ (--dynamic-reloc) arguments to objdump.
+ * nm.c (dynamic): New static variable.
+ (long_options): Added "dynamic".
+ (usage): Mention -D and --dynamic.
+ (main): Add D to getopt string. Handle -D by setting dynamic.
+ (display_rel_file): If dynamic is non-zero, read dynamic symbols
+ rather than normal symbols.
+ * nm.1: Updated for -D (--dynamic) option.
+ * objdump.c (dump_dynamic_symtab): New global variable.
+ (dump_dynamic_reloc_info): New global variable.
+ (dynsyms, dynsymcount): New global variables.
+ (usage): Mention -R, -T, --dynamic-syms and --dynamic-reloc.
+ (long_options): Added "dynamic-reloc" and "dynamic-syms".
+ (slurp_symtab): If no symbols, return rather than exit.
+ (slurp_dynamic_symtab): New function.
+ (display_bfd): Handle dump_dynamic_symtab and
+ dump_dynamic_reloc_info.
+ (dump_symbols): Take new dynamic argument, indicating whether to
+ display dynamic symbols.
+ (dump_relocs): Move most printing into dump_reloc_set.
+ (dump_dynamic_relocs): New function.
+ (dump_reloc_set): New function, extracted from dump_relocs.
+ (main): Add R and T to getopt string. Handle -T by setting
+ dump_dynamic_symtab and -R by setting dump_dynamic_reloc_info.
+ * objdump.1: Updated for -R (--dynamic-reloc) and -T
+ (--dynamic-syms) options.
+ * binutils.texi: Updated for new nm and objdump options.
+
+Wed Mar 30 15:52:40 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ Update for recent BFD changes to symbol and reloc reading. Rename
+ all uses of get_symtab_upper_bound to bfd_get_symtab_upper_bound.
+ Also:
+ * coffgrok.c (symcount): Change to long.
+ (do_sections_p1): Check for error return from
+ bfd_get_reloc_upper_bound. Change relcount to long, and check for
+ error from bfd_canonicalize_reloc.
+ (coff_grok): Change storage to long. Check for error from
+ bfd_get_symtab_upper_bound and bfd_canonicalize_symtab.
+ * nlmconv.c (main): Change symcount, newsymalloc, newsymcount, and
+ i to long. Check for error from bfd_get_symtab_upper_bound and
+ bfd_canonicalize_symtab.
+ (copy_sections): Change reloc_size and reloc_count to long. Check
+ for error from bfd_get_reloc_upper_bound and
+ bfd_canonicalize_reloc.
+ (mangle_relocs, i386_mangle_relocs, alpha_mangle_relocs): Change
+ reloc_count_ptr argument to long *. Make corresponding changes to
+ variables loaded from *reloc_count_ptr.
+ * nm.c (display_rel_file): Change storage and symcount to long.
+ Check for errors from bfd_get_symtab_upper_bound and
+ bfd_canonicalize_symtab.
+ * objcopy.c (filter_symbols): Change symcount, src_count and
+ dst_count to long.
+ (copy_object): Change symcount to long. Pass another argument to
+ fprintf. Check for errors from bfd_get_symtab_upper_bound and
+ bfd_canonicalize_symtab.
+ (copy_section): Change relcount to long. Check for errors from
+ bfd_get_reloc_upper_bound and bfd_canonicalize_reloc.
+ (mark_symbols_used_in_relocations): Change relcount and i to long.
+ Check for errors form bfd_get_reloc_upper_bound and
+ bfd_canonicalize_reloc.
+ * objdump.c (storage): Remove global variable.
+ (symcount): Changed to long.
+ (slurp_symtab): New local variable storage. Check for errors from
+ bfd_get_symtab_upper_bound and bfd_canonicalize_symtab.
+ (remove_useless_symbols): Change return value and count to long.
+ (objdump_print_address): Change min, max, thisplace and i to long.
+ (disassemble_data): Change i to long.
+ (dump_symbols): Change count to long.
+ (dump_relocs): Change relcount to long. Check for errors from
+ bfd_ret_reloc_upper_bound and bfd_canonicalize_reloc.
+ (display_info_table): Add casts when passing LONGEST_ARCH for
+ printf %* argument.
+
+Tue Mar 29 14:59:04 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nm.c (display_archive): Close each archive element after it has
+ been displayed.
+ * objdump.c (display_file): Likewise.
+
+Mon Mar 28 13:04:08 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * configure.in: Change error message to refer to bfd/config.bfd
+ rather than bfd/configure.in.
+
+Sun Mar 27 16:23:39 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * More fixes for object formats which allow multiple sections
+ with the same name:
+ * objcopy.c (setup_section): Make a new output section even if
+ one already exists with the given name.
+ (copy_section): Use isection->output_section rather than trying
+ to look the output section up by its (possibly non-unique) name.
+
+ * Makefile.in (install-info): Look for binutils.info in the
+ current directory, then in $(srcdir). Don't use $<.
+
+Mon Mar 21 12:55:45 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (objdump_print_address): Make static. Declare with
+ prototype. Change vardiff from int to bfd_signed_vma. Correct
+ binary search termination condition. When looking for same
+ section symbol in relocatable file, handle final symbol correctly.
+
+Sun Mar 20 11:26:36 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * Makefile.in: Avoid bug in hpux sed.
+
+ * objcopy.c: Changes to keep it from stripping symbols used
+ in output relocations.
+ (mark_symbols_used_in_relocations): New function. Mark symbols
+ used in output relocations with BSF_KEEP.
+ (filter_symbols): Do not strip symbols marked with BSF_KEEP.
+ (copy_object): Reorder actions. First setup sections, then
+ build the output symbol table, then copy the section contents.
+
+Fri Mar 18 10:53:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ar.c (write_archive): Allocate space for the null byte. From
+ Robert Lipe <robertl@arnet.com>.
+
+Thu Mar 17 16:20:28 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in: Built nm.new and strip.new to avoid problems with
+ collect when . is in PATH.
+ (STRIP_PROG): Change from strip to strip.new.
+ (NM_PROG): Change from nm to nm.new.
+ (install): Remove the .new when installing.
+
+Wed Mar 16 16:27:05 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (powerpc_build_stubs): Set BSF_DYNAMIC flag for each
+ symbol for which we build a stub.
+ (powerpc_mangle_relocs): Only reset TOC pointer for a call to a
+ symbol with BSF_DYNAMIC flag set.
+
+Tue Mar 15 23:04:13 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * objcopy.c (filter_symbols): Use bfd_is_local_label to determine
+ if a symbol represents a compiler-generated local label.
+ (copy_object): Give the BFD backends a chance to copy any private
+ bfd data from the input BFD to the output BFD.
+ (setup_section): Give the BFD backends a chance to copy any private
+ section data from the input section to the output section.
+
+Mon Mar 14 11:15:58 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * objcopy.c (mangle_section): Delete unused function.
+ (setup_section): Set osection here instead of calling
+ mangle section to do it.
+
+Mon Mar 14 12:11:01 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ar.c (write_archive): Close inarch before unlinking it.
+
+Fri Mar 11 22:20:48 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (main): For PowerPC, call powerpc_build_stubs and
+ powerpc_resolve_stubs. Use __GOT0, not __toc_start. Handle it if
+ the start and end symbols are not in the text section.
+ (struct powerpc_stub): New struct definition.
+ (powerpc_stubs, powerpc_stub_insns): New static variables.
+ (powerpc_initial_got_size): New static variable.
+ (powerpc_build_stubs): New function.
+ (powerpc_resolve_stubs): New function.
+ (powerpc_mangle_relocs): Clear extraneous data in .got section.
+ Rearrange reloc handling to handle ELF relocs that are not
+ partial_inplace. Resolve PC relative relocs.
+
+Wed Mar 9 13:48:11 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * ar.c (move_members): Fix it so that the abi positional modifiers
+ don't delete all archive members following the insert point.
+
+Tue Mar 8 13:14:43 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * coffgrok.[ch]: New files, understand coff objects.
+ * coffdump.c: Uses coffgrok to dump out the debug info of a coff
+ file.
+ * sysroff.info: Description of a SYSROFF object file.
+ * sysinfo.y, syslex.l: Parse info file, generate a reader, writer,
+ header files and a printer.
+ * srconv.c: Uses coffgrok.c and sysroff.info to convert a coff
+ file to a SYSROFF file.
+
+Sat Feb 26 13:35:26 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * ar.c (do_quick_append): Pad with a genuine character 10,
+ rather than whatever '\n' might happen to be.
+
+Tue Feb 22 18:25:52 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * nlmconv.c (main): Ignore debugging symbols when looking for
+ special symbols by name.
+
+Sun Feb 20 18:47:42 1994 Ian Lance Taylor (ian@lisa.cygnus.com)
+
+ * nlmconv.c: Include libiberty.h.
+
+ Support for PowerPC NetWare.
+ * nlmconv.c (main): For PowerPC NetWare, automatically define the
+ special symbols __toc_start.
+ (select_output_format): Handle bfd_arch_powerpc.
+ (mangle_relocs): Likewise.
+ (powerpc_mangle_relocs): New function.
+
+Thu Feb 17 09:28:23 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ar.c, bucomm.c, nlmconv.c, nm.c, objcopy.c, objdump.c,
+ size.c: Use bfd_get_error and bfd_set_error and new error names.
+
+Fri Feb 11 15:54:51 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objcopy.c (strip_main, copy_main): Add missing 'break' in switch.
+
+Mon Feb 7 19:45:52 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (disassemble_data): Handle bfd_arch_powerpc.
+
+Sun Feb 6 22:08:20 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * strings.c objdump.c nlmconv.c objcopy.c nm.c ar.c size.c (main):
+ Call xmalloc_set_program_name.
+
+Fri Feb 4 10:46:01 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objcopy.c (filter_bytes): Make MEMHUNK a char *, not PTR, so we
+ can do arithmetic on it.
+
+Thu Feb 3 14:06:41 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objdump.c (dump_section_stabs, read_section_stabs,
+ print_section_stabs): Functions broken out of dump_stabs_1.
+ Free the stabs and strings when done with them.
+
+Wed Feb 2 13:42:23 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * nlmconv.c (main): Use bfd_get_flavour instead of struct member.
+ * ar.c (print_contents, extract_file), size.c
+ (print_berkeley_format, print_sysv_format): Use bfd_get_filename and
+ bfd_my_archive instead of dereferencing the structs directly.
+
+ * ar.c: Use bfd_fatal and bfd_nonfatal instead of bfd_perror and exit.
+ Indent. Remove DEFUNs.
+
+ * nlmconv.c (main), objcopy.c (copy_file): Print matching formats
+ if ambiguous match.
+ * nm.c (display_file, display_archive), size.c (display_bfd):
+ Eliminate gotos.
+ Print matching formats if there is an ambiguous match. Use
+ bfd_nonfatal instead of hardcoded error message if nothing matches.
+
+ * arsup.c, ar.c, objdump.c: Use bfd_get_filename instead of
+ abfd->filename.
+
+ * nm.c (display_archive): New function, from code in display_file.
+ (display_rel_file): Renamed from do_one_rel_file.
+
+ * size.c: Indent.
+ (display_archive): New function from code in display_file.
+ (display_file): Check bfd_close error return.
+
+ * strings.c (strings_object_file): Check bfd_check_format
+ error return.
+
+ * strings.c, objdump.c, size.c: Use bfd_nonfatal instead of bfd_perror.
+
+ * bucomm.c: Delete references to exit_handler. It wasn't set
+ anywhere, and now that we're using the libiberty xmalloc, it
+ wouldn't always get called before exiting.
+ (list_matching_formats): Function moved from objdump.c.
+ * bucomm.h: Declare it.
+
+ * objdump.c (disassemble_data): Move some variable decls closer to
+ their use. Add some comments. Replace a nested block with a
+ return.
+
+Mon Jan 31 18:50:41 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * objdump.c (display_target_list, display_info_table): Check that
+ the bfd of the dummy output file is not null.
+
+Wed Jan 26 13:13:18 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objcopy.c (filter_bytes): New function.
+ (copy_section): Call it.
+ (copy_options, copy_usage, copy_main): Add --byte option to
+ activate it. Appropriate the -b option (which was an undocumented
+ synonym for -F) for it, also. Add --interleave, -i option for
+ additional control.
+ (setup_section, copy_section, mangle_section): Renamed with no `s'
+ on the end.
+ * objcopy.1, binutils.texi: Document the new options.
+
+ * objdump.c (display_target_tables, display_target_list):
+ New functions broken out of display_info.
+ Eliminate some magic constants. Use more meaningful variable names.
+ (dump_bfd_header): New function broken out of display_bfd.
+ (dump_section_header): New function broken out of dump_headers.
+ (remove_useless_symbols): Don't shadow global variable name with
+ parameter.
+ (objdump_print_address): Fix backward test.
+
+Tue Jan 25 19:40:54 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * bucomm.c (print_arelt_descr): Change decl of `when' to time_t.
+ * objdump.h: Removed.
+
+Mon Jan 24 13:29:02 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objdump.c (display_file): Remove call to list_matching_formats.
+ It would never be called.
+ (list_matching_formats): Take an arg giving the list of matching
+ formats.
+ (display_bfd): Pass the arg, and get it filled in by calling
+ bfd_check_format_matches instead of bfd_check_format.
+ (display_info, display_info_table): target_vector was renamed to
+ bfd_target_vector.
+
+ * binutils.texi (objdump): Note some limitations of -h section
+ address printing.
+
+Sat Jan 22 16:20:46 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * Makefile.in (MALLOC): Set to emptiness by default.
+ (ALL_CFLAGS): Add and use.
+ (arparse.h): Make it depend on arparse.y.
+ * ar.c (libbfd.h): Don't require to be in ../bfd.
+ * objdump.c (comp): Rename to compare_symbols.
+
+Fri Jan 21 20:22:30 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objdump.c (list_matching_formats): If the file format is ambiguous,
+ print the matching names so the user can choose one.
+ (display_bfd): Call it.
+ (display_file): Call it.
+
+Fri Jan 21 19:17:25 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (disassemble_data): Support bfd_arch_rs6000.
+
+Mon Jan 17 13:57:25 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * objdump.c (stab_name): Allocate dynamically.
+ (stab_print): Use pointers to strings instead of char arrays.
+ (dump_stabs): Change alloc and init of arrays appropriately.
+ (dump_stabs_1): Always decide whether to print stab_name or
+ the stab's type number, if unnamed.
+
+Fri Jan 14 14:42:48 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objcopy.c (strip_main, copy_main): Don't clobber the input file
+ if copy_file fails.
+
+ * nlmconv.c (main): Warn about an attempt to use a shared library
+ with uninitialized data.
+
+ * nlmconv.c (setup_sections): Make sure that we align the
+ output_offset of each input section appropriately.
+
+Thu Jan 13 17:32:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (dump_relocs): Don't crash if section name is NULL.
+
+Tue Jan 11 19:46:33 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * filemode.c (filemodestring): Commented out; not used.
+ (mode_string): Use POSIX definitions.
+ (ftypelet): Likewise.
+ (rwx): Removed; no longer used.
+ * bucomm.c: Include bucomm.h.
+ (bfd_nonfatal, bfd_fatal): Argument is const.
+ (fatal): Make __STDC__ version.
+ * bucomm.h (mode_string): Declare.
+ * Makefile.in (bucomm.o): Depend upon bucomm.h
+
+Sun Jan 9 12:03:20 1994 Ken Raeburn (raeburn@rtl.cygnus.com)
+
+ * bucomm.c (xmalloc, xrealloc): Deleted.
+ * bucomm.h (xmalloc, xrealloc): Fix prototypes, to correspond to
+ libiberty version of functions.
+
+Thu Jan 6 06:18:15 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * binutils.texi: Add a chapter summarizing the ways to select
+ aspects of the target for each program.
+
+ * objdump.c (long_options, usage): Add long equivalents for all
+ remaining short options that lacked them.
+ * binutils.texi objdump.1: Document them.
+
+ * size.c (usage): Tweak usage message.
+ * size.1: Add missing `=' in examples.
+
+ * binutils.texi strip.1 objcopy.1 nlmconv.1 objcopy.c nlmconv.c:
+ Use "--target=bfdname" as the option to select the BFD target,
+ like nm and size already do.
+ Reserve "--format=format" for textual output selection options, but
+ for now keep old option names as obsolete for backward compatibility.
+
+ * strings.c (main, strings_object_file, usage): Add --target option.
+ * binutils.texi strings.1: Document it.
+
+Sat Jan 1 13:58:24 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ar.c (main): Add \n in error message.
+
+Thu Dec 23 12:23:11 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ gcc -Wall lint:
+ * ar.c (main): Put parens around assignment used as truth value.
+ * objcopy.c (strip_main): Remove unused variables. Return 0.
+ (copy_main): Remove unused variables. Return 0.
+ * objdump.c (display_bfd): Declare return value as void.
+ (stab_print): Use "" instead of 0 to initialize array.
+ (dump_stabs_1): Print vma using printf_vma.
+ (display_info): Put parens around assignment used as truth value.
+ * strings.c (print_strings): Cast printf arguments.
+
+ * objcopy.c (copy_main): Use copy_options, not strip_options.
+
+ * nlmheader.y (command): Warn about illegal date values.
+
+Wed Dec 15 11:18:03 1993 David J. MacKenzie (djm@frosty.eng.umd.edu)
+
+ * bucomm.c bucomm.h: Run through indent. De-ansidecl-ify.
+ (bfd_nonfatal): New function.
+ (bfd_fatal): Call it.
+
+ * objcopy.c (smart_rename): Do a copy if the dest file has
+ multiple hard links. Remove source file on successful copy.
+ Try to preserve mode and owner on successful rename.
+
+ * objcopy.c: Run through indent. Clean up a bit.
+ Make global variables static.
+ Make {input,output}_{target,filename}, show_version local
+ to various functions.
+ New global variable `status' for exit status.
+ (strip_main, copy_main): New functions with code from main.
+ (nonfatal): New macro. Use it globally instead of bfd_perror and
+ bfd_fatal.
+
+ (copy_object): Call mangle_sections with bfd_map_over_sections.
+ (mangle_sections): Adjust for new calling convention.
+
+Fri Dec 10 11:28:11 1993 Ian Lance Taylor (ian@deneb.cygnus.com)
+
+ * nlmheader.y (command): Accept MAP and FULLMAP without arguments.
+ * nlmconv.c (main): Change error message for MAP and FULLMAP.
+
+Thu Dec 9 17:47:19 1993 Ian Lance Taylor (ian@deneb.cygnus.com)
+
+ * nlmconv.c (main): Warn about imported symbols that are not in
+ the IMPORT list even if the IMPORT keyword is not used.
+
+ * nlmconv.c (debug, unlink_on_exit): New static variables.
+ (long_options): Add "debug" and "linker".
+ (main): Handle -d and -l arguments. Make command line input and
+ output files optional. Parse the command file before opening the
+ BFD's, which requires storing more information in local variables.
+ If INPUT names multiple files, link them together. Use OUTPUT for
+ the output file name if not named on command line.
+ (show_usage): Changed for new options.
+ (link_inputs): New function to automatically invoke linker to
+ handle multiple INPUT files.
+ (choose_temp_base_try, choose_temp_base, pexecute): New functions,
+ mostly copied from gcc/gcc.c.
+ * nlmconv.h (input_files, output_file): Declare.
+ * nlmheader.y (input_files, output_file): Define.
+ (command): Support INPUT with a string_list argument. Support
+ OUTPUT.
+ (string_list): Renamed from module_list.
+ * Makefile.in (nlmconv.o): Define LD_NAME based on
+ program_transform_name.
+
+Wed Dec 8 10:09:04 1993 Ian Lance Taylor (ian@deneb.cygnus.com)
+
+ * nlmheader.y (nlmheader_identify): New function. Use it to print
+ the program name just once, instead of with every error message.
+
+Mon Dec 6 16:11:32 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (long_options): Changed --header-info to --header-file
+ to match documentation and usage message.
+
+Sun Dec 5 01:31:01 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * objdump.c (dump_relocs): Avoid dereferencing a NULL sym_ptr_ptr
+ in a relocation.
+
+Thu Dec 2 16:00:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (main): Change various types from bfd_size_type to
+ size_t, since they have to be arguments to fread and fwrite.
+ Change set from char * to unsigned char *.
+ (select_output_format): Make mach argument unsigned. Handle
+ bfd_arch_alpha.
+ (setup_sections): Don't copy the .reginfo section of an ECOFF
+ file. Call bfd_set_reloc to initialize the relocation fields.
+ (copy_sections): Don't copy the .reginfo section of an ECOFF file.
+ Combine all relocs for a section.
+ (mangle_relocs): Change type of relocs to permit specific
+ functions to change it. Call alpha_mangle_relocs for alpha,
+ default_mangle_relocs for other architectures.
+ (default_mangle_relocs): New function. Adjust the address of all
+ relocs by the output_offset.
+ (i386_mangle_relocs): Change type of relocs argument. Cast length
+ argument to memmove to size_t.
+ (alpha_mangle_relocs): New function.
+
+Wed Nov 17 17:38:58 1993 Sean Eric Fagan (sef@cygnus.com)
+
+ * nlmconv.c (select_output_format): Use nlm32-sparc for
+ bfd_arch_sparc.
+
+Wed Nov 17 14:41:35 1993 Jeffrey Osier (jeffrey@thepub.cygnus.com)
+
+ * nlmconv.1: added man page
+ * objcopy.1: fixed format errors
+
+Wed Nov 17 12:03:41 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in: Use CFLAGS as well as LDFLAGS when linking.
+
+Wed Nov 17 04:50:55 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * strings.1: Fix typo.
+
+Mon Nov 15 12:03:20 1993 Ken Raeburn (raeburn@rtl.cygnus.com)
+
+ * Makefile.in (DISTSTUFF): Build "info".
+ (VERSION): Updated to cygnus-2.3.1; 2.3 has gone out.
+
+Sun Nov 14 00:27:24 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * objdump.c (dump_stabs): Handle stabs-in-som as implemented
+ by the new BFD SOM assembler.
+
+Sat Nov 13 07:14:05 1993 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * ar.1 c++filt.1 nm.1 objcopy.1 objdump.1 ranlib.1 size.1
+ strings.1 strip.1: Replace \(em in NAME section with \- so
+ makewhatis can grok it.
+
+Tue Nov 9 15:22:12 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (i386_mangle_relocs): Adjust reloc address by
+ section output_offset.
+
+Fri Nov 5 12:11:52 1993 Jeffrey Osier (jeffrey@thepub.cygnus.com)
+
+ * binutils.texi: added nlmconv chapter
+
+Wed Nov 3 16:10:50 1993 Jeffrey Wheat (cassidy@cygnus.com)
+
+ * Makefile.in: Change RUNTESTFLAGS to RUNTEST_FLAGS
+
+Wed Nov 3 15:09:23 1993 Ken Raeburn (raeburn@rover.cygnus.com)
+
+ * Makefile.in (distclean): Don't get rid of dvi or info files.
+
+Tue Nov 2 13:29:59 1993 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * objcopy.c (S_ISLNK): Define as 0 if there's no S_IFLNK.
+
+Fri Oct 29 16:02:34 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * binutils.texi: Move objcopy docs into alphabetical order.
+
+ * objdump.c: Use xmalloc instead of malloc.
+
+Fri Oct 29 11:11:14 1993 Stan Shebs (shebs@rtl.cygnus.com)
+
+ * objdump.c (info): Rename to formats_info.
+ (dump_stabs_1): Better comments and formatting.
+
+Thu Oct 28 19:43:16 1993 Stan Shebs (shebs@rtl.cygnus.com)
+
+ * ar.c (main): Always create the archive when quick appending,
+ even if no input files have been given.
+
+Wed Oct 27 12:03:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (main): Set sharedDebugRecordOffset and
+ sharedDebugRecordCount fields in extended header.
+
+ * nlmconv.c (main): Force moduleName field to upper case.
+
+Mon Oct 25 16:45:42 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objcopy.c (main): Give a usage message if there are too many
+ arguments.
+
+Mon Oct 25 10:37:08 1993 Ken Raeburn (raeburn@rover.cygnus.com)
+
+ * Makefile.in (install-info): Rewrite to take advantage of VPATH,
+ so FSF distributions (with info files in $(srcdir)) install
+ properly.
+ (DISTSTUFF): Build nlmheader.c too.
+
+Fri Oct 22 11:43:23 1993 Ken Raeburn (raeburn@rover.cygnus.com)
+
+ * ar.c (program_name): Don't define here.
+ * objdump.c: Include "bucomm.h".
+ (xmalloc): Don't declare here.
+ (program_name): Don't define here.
+ (program_version): Fixed type in declaration.
+ * size.c: Include "bucomm.h".
+ (program_name): Don't declare here.
+
+Fri Oct 22 14:10:41 1993 Mark Eichin (eichin@cygnus.com)
+
+ * objdump.c (fprintf): hide declaration in FPRINTF_ALREADY_DECLARED
+
+Fri Oct 1 12:43:00 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (i386_mangle_relocs): Resolve and remove PC relative
+ relocs against defined symbols in the same section.
+
+Thu Sep 30 16:46:26 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * Makefile.in (binutils.dvi): use TEXIDIR to find texinfo.tex
+
+Sat Sep 25 18:09:29 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objcopy.c (simple_copy, smart_rename): New functions.
+ (main): Use them.
+
+Fri Sep 24 15:38:29 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in (clean, distclean): Recurse into testsuite.
+
+Thu Sep 23 01:05:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objcopy.c (setup_sections, copy_sections): If stripping, don't
+ copy SEC_DEBUGGING sections.
+ * objdump.c (dump_headers): Print SEC_DEBUGGING flag.
+
+ * objdump.c (usage): Mention --stabs.
+
+ * objcopy.c (copy_object): Copy all applicable file flags.
+ (copy_file): Don't copy EXEC_P specially here.
+
+Mon Sep 20 19:28:57 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (main): Adjust data section size to correspond to bss
+ alignment adjustment. Clear BSF_SECTION_SYM if symbol is moved to
+ a different section. Use time_t for time variable.
+ (setup_sections): Only put sections with contents in output NLM.
+ (i386_mangle_relocs): No symbols are common at this point. Add
+ casts to avoid warnings.
+
+Fri Sep 10 11:00:40 1993 Stan Shebs (shebs@rtl.cygnus.com)
+
+ * objdump.c: Made the --stabs option work for stabs-in-coff.
+ (ELF_STAB_DISPLAY): Removed.
+ (dump_elf_stabs): Renamed to dump_stabs, changed to run for
+ any object file format.
+ (dump_elf_stabs_1): Renamed to dump_stabs_1, added calls to
+ generic BFD routines for non-ELF case, changed format of message
+ for no-section-found case.
+ (display_bfd): Always call dump_stabs if requested.
+ (dump_data): Call bfd_section_size to get section size.
+
+Fri Sep 10 08:12:23 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * Makefile.in (install): Don't put strings in tooldir/bin.
+
+Mon Sep 6 15:39:04 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (total_bss_size): Removed.
+ (main): Set the bss vma to always follow the data section. Move
+ symbols into new sections, and adjust values by output_offset.
+ (setup_sections): Don't copy all sections, but instead point all
+ text sections to .text, all data sections to .data, and all bss
+ sections to .bss.
+ (copy_sections): Adjust accordingly.
+
+Thu Sep 2 12:34:03 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ Only build nlmconv if configured for a NetWare target.
+ * configure.in: If we have some *-*-netware* target, or are using
+ all targets, set BUILD_NLMCONV to $(NLMCONV_PROG) in Makefile.
+ * Makefile.in (PROGS): Use $(BUILD_NLMCONV) rather than
+ $(NLMCONV_PROG).
+
+Tue Aug 31 14:13:35 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * objdump.c (ARCH_all): Define ARCH_hppa too.
+ (dump_headers): Don't test for SEC_BALIGN if it's not defined by
+ bfd.h.
+
+Tue Aug 31 13:29:12 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * nlmconv.c (main): Force creation of .bss section. Set up the
+ sections before looking at the symbols. Move all common symbols
+ into .bss section. Automatically define _edata and _end. Only
+ export symbols in the export list, with multiple prefixes if
+ necessary. Warn if no version. Always create extended header.
+ Set date automatically if not already set.
+ (setup_sections): Count size of bss sections.
+ (mangle_relocs, i386_mangle_relocs): Accept section argument, and
+ take reloc_count as a changeable pointer; changed callers.
+ (i386_mangle_relocs): Remove PC relative relocs within a section,
+ as they require no adjustment.
+ * nlmheader.y: Fixed memory allocation throughout: token STRING is
+ now allocated on the heap, and freed if not needed. Null
+ terminated copyright message. Accept version with only two
+ strings.
+ (symbol_list_opt): New nonterminal, either symbol_list or empty.
+ (symbol_list): Use left recursion to avoid overflowing parser
+ stack.
+ (yylex): Rearranged beginning of line check. Accept quoted
+ strings using single quotes. End generic argument at comment
+ character or parentheses.
+ (string_list_append): Fixed.
+ (string_list_append1): New function.
+
+ * bucomm.h: The first argument to xrealloc is PTR, not char *.
+ * bucomm.c (xrealloc): Use PTR rather than char *.
+ * Makefile.in (objdump.o): Depend upon config.status to notice
+ --with-targets changes.
+ (nlmconv.o): Depend upon bucomm.h.
+
+Tue Aug 17 09:46:01 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * configure.in: Don't pass cpu to config.bfd.
+
+Thu Aug 12 16:43:04 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * Makefile.in ($(NM_PROG)): Depend on demangle.o.
+ (demangle.o): New target.
+ (cplus-dem.o): Depend on it, to force compilation order when doing
+ parallel compiles.
+
+ * nm.c (print_symbol_info_{bsd,sysv,posix}): Take a bfd arg.
+ (struct output_fns print_symbol_info): Ditto.
+ (long_options, usage, main): Add -C --demangle option.
+ (print_symname): New function, demangling if requested.
+ (print_symbols, print_symbol_info_{bsd,sysv,posix}): Use it.
+
+Wed Aug 11 22:57:23 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * Makefile.in: Put CFLAGS last in compilation rules and omit from
+ linking rules. Use ARCHDEFS to compile objdump.c.
+ Update dependencies.
+ * configure.in: Construct ARCHDEFS based on the BFD target makefile
+ fragments.
+ * objdump.c: Conditionalize calls to the print_insn_ARCH functions
+ according to ARCHDEFS.
+
+Thu Aug 12 08:06:15 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * ar.c: Removed obsolete and non-functional GNU960 code.
+
+Wed Aug 11 13:08:26 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * size.c (berkeley_sum): New function.
+ (bsssize, datasize, textsize): New global variables.
+ (bss_section_name, data_section_name, text_section_name): Removed.
+ (print_berkeley_format): Map berkeley_sum over all the sections,
+ rather than only reporting sizes of specifically named sections.
+ * Makefile.in ($(OBJDUMP_PROG)): Removed dependency on size.o.
+
+Tue Aug 10 10:46:01 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * nlmconv.c, nlmconv.h, nlmheader.y: New files for program to
+ convert object files into NetWare Loadable Modules.
+ * Makefile.in (NLMCONV_PROG): New macro, define to be nlmconv.
+ (PROGS): Add NLMCONV_PROG.
+ (nlmheader.c, nlmheader.o, nlmconv.o, $(NLMCONV_PROG)): New
+ targets.
+
+Thu Aug 5 15:48:32 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
+
+ * Makefile.in: define MAKEOVERRIDES to an empty string
+
+Wed Aug 4 17:08:08 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * objcopy.c (copy_file): Make failures to process a file nonfatal.
+
+Mon Aug 2 11:28:23 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * nm.c: Add -B option, like --format=bsd.
+
+Tue Jul 27 16:29:54 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objcopy.c (copy_file): If the file is neither an object nor an
+ archive, give an error rather than returning success.
+
+Mon Jul 19 16:13:40 1993 Ken Raeburn (raeburn@rtl.cygnus.com)
+
+ * objdump.c (objdump_print_address): Prefer non-local symbols over
+ local ones, and especially discriminate against debugging symbols.
+ Also, for relocateable files, try to find a symbol in the current
+ section, instead of picking one from some random section with a
+ convenient value (read, section offset).
+ (disassemble_data): Cast argument to malloc to size_t first.
+ (dump_data): Likewise.
+ (dump_relocs): If a single section name is specified, show relocs
+ only for that section. Otherwise, silently omit sections without
+ relocs. Format table nicely even if values are printed using 16
+ digits instead of 8.
+
+Fri Jul 16 15:19:59 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * nm.c: Changes for final version of POSIX.2.
+ (print_symbol_filename_{bsd,sysv,posix}): New functions.
+ (formats): Add an element for a pointer to them.
+ (print_symbols): Call it.
+ (print_object_filename_posix, print_archive_member_posix): Produce
+ output according to new POSIX.2 spec.
+
+ * strings.c (print_strings): Handle STREAM being NULL.
+ (strings_a_section): Pass a NULL.
+ (main): Don't open /dev/null.
+
+Thu Jul 15 12:44:09 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * objdump.c (disassemble_data): Handle the m88k.
+ (display_bfd): Use bfd_errmsg, rather than just claiming that the
+ bfd is not an object file.
+
+Mon Jul 12 17:55:34 1993 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in (TAGS): make work again by naming directories
+ explicitly rather than depending on undefined macros.
+ (INSTALL_XFORM): correct bad install target.
+
+Fri Jul 2 16:58:34 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * strings.c: Doc fixes.
+
+Sun Jun 27 13:35:24 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * Makefile.in: Note dependencies on bucomm.h.
+ (cplus-dem.o): Link c++filt with version.o.
+
+ * strings.c: Include bucomm.h and add prototypes to other decls.
+ Remove -h option.
+
+ * bucomm.h: Declare xrealloc.
+
+ * nm.c, objcopy.c, objdump.c, size.c, strings.c (main, usage): Add
+ --help option. Put "GNU" in the version message.
+ (usage): Take stream and exit status as args.
+ (main): Pass new args to usage.
+
+Fri Jun 25 23:12:12 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * strings.c, strings.1: New files.
+ * binutils.texi: Document strings.
+ * Makefile.in: Add rules for it.
+
+Fri Jun 25 20:44:43 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
+
+ * objdump.c: Use size-independent bfd elf section names.
+
+Sun Jun 20 23:09:06 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
+
+ * objdump.c (objdump_print_address): Handle wide offsets by
+ calling sprintf_vma.
+
+Fri Jun 18 14:29:12 1993 Per Bothner (bothner@deneb.cygnus.com)
+
+ * objdump.c (syms2): Removed unused variable.
+ * objdump.c (remove_useless_symbols): New function.
+ * objdump.c (comp): Simplify.
+ * objdump.c (dis-assemble_data): Make simpler and more
+ efficient how we filter out useless symbols: Just filter
+ BEFORE the sort (using remove_useless_symbols).
+ * objdump.c (objdump_print_address): Simplify.
+ Change output syntax to match gdb.
+
+Thu Jun 17 16:53:56 1993 david d `zoo' zuhn (zoo@cygnus.com)
+
+ * Makefile.in: canonicalize install.sh; for use within
+ this directory (and subdirs)
+
+Mon Jun 14 12:13:22 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com)
+
+ * Makefile.in (install, install-info): remove parentdir support,
+ use INSTALL_XFORM; define INSTALL_XFORM
+
+Thu Jun 10 17:29:21 1993 Per Bothner (bothner@cygnus.com)
+
+ * objcopy.c (copy_object): Fix bad size passed to xmalloc().
+
+Mon Jun 7 12:41:12 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in (INCLUDES): Add -I../bfd for sysdep.h and bfd.h.
+ * configure.in: No longer need to configure to get sysdep.h.
+ * objcopy.c (copy_object): Fix symbol table handling.
+
+Fri Jun 4 17:20:03 1993 Per Bothner (bothner@cygnus.com)
+
+ * objcopy.c (filter_symbols): Cannot filter the symbols
+ in place, because that confuses the relocs, so take separate
+ parameter for output array.
+ * objcopy.c (sympp): Make two variables: isympp and osympp.
+ * objcopy.c (copy_object): Allocate separate array (osympp)
+ for filtered symbols.
+
+Fri Jun 4 10:51:44 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: change recursion test to presence of a configured
+ testsuite directory
+
+Thu Jun 3 14:05:57 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * Makefile.in (underscore.c): Hack the backquoted command so it
+ doesn't cause Solaris make to bomb.
+
+Thu Jun 3 10:40:19 1993 Jeffrey Osier (jeffrey@cygnus.com)
+
+ * Makefile.in: added c++filt and objcopy to MANPAGES variable
+
+Thu Jun 3 00:32:52 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: rename LOADLIBES to EXTRALIBS
+
+Wed Jun 2 18:30:24 1993 Jeffrey Osier (jeffrey@cygnus.com)
+
+ * c++filt.1, objcopy.1: new man pages
+
+Fri May 28 15:01:24 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in (install): Also install ar and ranlib in
+ $(tooldir)/bin; needed for building libgcc.a.
+ * objdump.c (objdump_print_address): Fix the check
+ "coincidental" label matches by dis-allowing undefined
+ or com symbols.
+
+Thu May 27 16:58:31 1993 Jeffrey Osier (jeffrey@cygnus.com)
+
+ * biutils.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)
+
+ * 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.
+
+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)
+
+ * 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.
+
+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.tex: Document yesterday's changes to strip and copy.
+
+Wed Oct 14 13:22:14 1992 Per Bothner (bothner@cygnus.com)
+
+ * copy.c: Re-do command-line parsing to use getopt_long().
+ Add long option names. Re-think option letters to be more
+ consistent.
+ * copy.c: New function filter_symbols() for stripping only
+ debug-symbols and/or local symbols. Use these to support
+ the previously-missing options of the old FSF strip.
+
+Tue Oct 13 01:24:20 1992 John Gilmore (gnu@cygnus.com)
+
+ * configure.in (host): Use ${srcdir}/../bfd/configure.host rather
+ than repeating a copy of it here.
+
+Wed Oct 7 12:53:52 1992 Ken Raeburn (raeburn@cygnus.com)
+
+ * copy.c (main): Even if is_strip, accept -d argument indicating
+ alternate output format. Needed by gdb for Nindy.
+
+ * m68k-pinsn.c (print_insn_arg): Handle new "`" operand type.
+
+Tue Oct 6 16:33:56 1992 Jeffrey Osier (jeffrey@cygnus.com)
+
+ * binutils.texi: added documentation for "copy"
+
+Tue Oct 6 14:22:56 1992 Per Bothner (bothner at PersSony)
+
+ * Makefile.in (*clean rules): Some cleaning up.
+ * Makefile.in (dist): Make diststuff in gprof for a dist.
+
+ * ar.c (do_show_version): New function.
+ * ar.c (main): Fix so "ar -V" works.
+
+Thu Oct 1 22:44:45 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * configure.in: now uses the cpu-vendor-os triple instead of
+ nested cases.
+
+Fri Sep 25 22:41:08 1992 John Gilmore (gnu@cygnus.com)
+
+ * i960-pinsn.c: Change bzero to memset.
+ * sparc-pinsn.c: Change index to strchr.
+
+Mon Sep 21 14:39:56 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * m68k-pinsn (print_insn_arg, fetch_arg): added support for
+ operands to memory management instructions, from WRS.
+
+Tue Sep 15 15:26:38 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (install): if $(tooldir) exists, install nm and
+ strip in $(tooldir)/bin.
+
+Thu Sep 3 11:57:40 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in: Let's call it version 2.0.
+
+Wed Sep 2 00:25:13 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in: Bump to version 0.98.
+ * TODO, README: Minor updates.
+
+ * Makefile.in: Added mostlyclean, distclean rules,
+ and cleaned up clean, realclean.
+
+Sun Aug 30 21:18:59 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in: map program names through program_transform_name
+ when installing.
+
+Sun Aug 30 18:09:03 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in: Bump to versions 1.97.90.
+ * cplus-dem.c: Removed. Was nowhere used - and if some
+ programs are changed to to demangling should now use the
+ versions in libiberty.
+
+Thu Aug 27 12:58:09 1992 Brendan Kehoe (brendan@cygnus.com)
+
+ * configure.in: add we32k
+
+Mon Aug 24 14:53:42 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ar.c (map_over_members): if the element of the archive has a
+ null name, fill it in.
+
+ * nm.c (do_one_rel_file): only warn if a bfd's flags say there
+ will be symbols and there aren't any.
+
+Wed Aug 19 11:20:25 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * m68k-pinsn.c: handle new operand type 'r', introduced for cas2.
+
+Tue Aug 18 20:45:48 1992 Rob Savoye (rob@cygnus.com)
+
+ * nm.c objdump.c: Added support for a +version (-V)
+ to print the version number.
+
+ * ar.c, copy.c: Added support for a -V option to print
+ the version number.
+
+Tue Aug 18 13:28:44 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * config/mh-apollo68v: removed -g from CC definition.
+
+ * Makefile.in: always create installation directories.
+
+Mon Aug 17 18:33:41 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * m68k-pinsn.c: Minor fix in style of output (don't use
+ range to indicate floating point control registers).
+
+Tue Aug 11 23:42:21 1992 Per Bothner (bothner@cygnus.com)
+
+ * ar.c (main): Don't *always* set the verbose flag!
+
+Wed Aug 5 11:25:27 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * copy.c: When is_strip (because it is invoked as the strip
+ program), follow traditional argv processing:
+ 'strip file1 file2' now strips file1 and file2, rather
+ than stripping file1 (as input), leaving output in file2.
+
+Mon Jul 27 16:28:08 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * objdump.c (display_info, display_info_table): Call
+ bfd_set_format() on dummy bfd before using it (twice).
+ * ar.c: Make sure archive is created on command 'r'
+ even when no elements are inserted. (Clean up and
+ simplify some non-working related code.)
+
+Mon Jul 20 02:48:38 1992 D. V. Henkel-Wallace (gumby@cygnus.com)
+
+ * configure.in: hppa support doesn't assume hp OS (from sef).
+
+Sat Jul 18 14:35:22 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * configure.in: recognize hppa hosts (bsd & hpux), error messages
+ to stderr, not stdout
+
+Fri Jul 17 18:39:44 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * ar.1, binutils.texi, i960-pinsn.c, nm.1, objdump.1, ranlib.1,
+ size.1, sparc-pinsn.c, strip.1: removed rcsid's.
+
+Thu Jul 16 16:55:24 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * Makefile.dos: removed rcsid.
+
+Thu Jul 16 08:23:07 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * objdump.c (display_bfd): print state of BFD_IS_RELAXABLE too
+
+Tue Jun 30 20:26:15 1992 D. V. Henkel-Wallace (gumby@cygnus.com)
+
+ * Makefile.in: Add program_suffix (parallel to program_prefix)
+
+Thu Jun 25 04:52:45 1992 John Gilmore (gnu at cygnus.com)
+
+ * nm.c (sorters): Lint. Remove excess whitespace.
+
+Wed Jun 24 13:48:07 1992 Per Bothner (bothner@cygnus.com)
+
+ * nm.c (valueof macro): Add missing parentheses.
+ (Their lack screwed up numeric_forward().)
+
+Sun Jun 14 10:33:27 1992 John Gilmore (gnu at cygnus.com)
+
+ * objdump.c (dump_elf_stabs): Also dump .stab.index and
+ .stab.excl sections.
+ (dump_elf_stabs_1): Split out main body of old dump_elf_stabs.
+ * objdump.1, binutils.texi: Document new sections dumped.
+
+Fri Jun 12 22:23:35 1992 John Gilmore (gnu at cygnus.com)
+
+ * size.c, objdump.c, bucomm.c: Lint.
+
+Thu Jun 11 01:19:06 1992 John Gilmore (gnu at cygnus.com)
+
+ * objdump.c (dump_elf_stabs): New feature: --stabs prints out a
+ .stab section from an ELF file. Installed under #ifdef
+ ELF_STAB_DISPLAY so it can be easily disabled, since it requires
+ bfd-internals header files and such.
+ * objdump.1, binutils.texi: Update for --stabs. Also fix
+ objdump's doc to use -- rather than + for long options.
+ (FIXME: Not yet fixed everywhere in binutils.texinfo.)
+
+Wed Jun 10 07:53:24 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * objdump.c(display_info), patches from
+ mohring@informatik.tu-muenchen.de to print the table much more
+ nicely.
+
+Thu May 28 13:36:16 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * objdump.c: Add another enum->int cast, for the sake of
+ old compilers (such as PCC).
+
+Wed May 27 13:01:44 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * arlex.l: Don't include <sysdep.h> (unneeded conflicts).
+ Add declaration of strdup().
+
+Fri May 22 13:40:37 1992 Per Bothner (bothner@cygnus.com)
+
+ * Makefile.in: Use srcdir instead of VPATH in ldgram/ldlex
+ rules, since these are used when building a distribution.
+ * Makefile.in (arlex.c): Don't re-direct output, since that
+ leaves a bogus output files if it fails.
+
+ * arlex.l: Make work with lex, for what it's worth.
+ * Makefile.in: Better lex support.
+ * Makefile.in (dist): Generate flex and bison outputs
+ for distribution.
+
+Thu May 14 17:17:59 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * Makefile.in: get BISON definition right.
+
+Fri May 8 07:47:08 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * sanity.sh: default TMPDIR to ".".
+
+Thu May 7 12:34:50 1992 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * binutils.texi: add doc for ar command language.
+
+Wed May 6 18:05:36 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * arparse.y: make END call ar_end
+ * arsup.c (ar_end): added, deletes temp file if archive session
+ aborted.
+
+
+Wed May 6 11:08:53 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * Makefile.in: use bison & flex from ../ if they exist. Also,
+ FLEX->LEX.
+
+ * sanity.sh: remove temporary directory when finished.
+
+Tue May 5 12:00:58 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in: Bump to version 1.97.
+ * ar.c: Declare errno for machines that need it.
+
+Mon May 4 23:29:51 1992 John Gilmore (gnu@cygnus.com)
+
+ * objdump.c (display_info): Handle error cases without coredump.
+ Close the dummy temporary file we open in the loop.
+ * Makefile.in (arsup.o): Add kludge to build with Sun Make.
+
+Fri May 1 16:20:23 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in: added test-install target.
+
+ * sanity.sh: new file.
+
+ * Makefile.in: use sanity test on make check.
+
+Tue Apr 21 13:38:37 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in: rework CFLAGS so that they can be passed on the
+ command line to make. Remove MINUS_G. Default CFLAGS to -g.
+
+Wed Apr 15 14:33:07 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * arsup.c, arsup.h, arparse.y, arlex.l: support for archive
+ scripting language.
+
+Fri Mar 6 21:54:53 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in: added check target.
+
+Thu Mar 5 21:35:49 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in: added clean-info target.
+
+Tue Mar 3 15:36:37 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * Makefile.in: remove $(COPY_PROG) from PROGS. It shouldn't be
+ installed. added tooldir and program_prefix.
+
+Wed Feb 26 18:04:40 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in, configure.in: removed traces of namesubdir,
+ -subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced
+ copyrights to '92, changed some from Cygnus to FSF.
+
+Sun Feb 16 12:53:02 1992 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in: Bump version to 1.96, and remove -beta
+ suffix from distribution name.
+ * m68k-pinsn.c: New macro COERCE_SIGNED_CHAR to extract
+ the signed value of a character (even if chars are unsigned).
+ * sparc-pinsn.c: Add new operand types.
+
+Thu Feb 6 12:14:19 1992 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * objdump.c (disassemble_data): don't print a section's contents
+ if it's not loadable (eg bss)
+
+Tue Jan 28 11:11:06 1992 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * m68k-pinsn.c (print_insn_arg): fixed so that -ve branch
+ displacements don't get printed as large +ve ones.
+
+Fri Jan 24 14:47:53 1992 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * copy.c, nm.c, objdump.c, size.c : changed to use the
+ new reloc scheme.
+
+
+Mon Dec 30 18:34:41 1991 Per Bothner (bothner at cygnus.com)
+
+ * bucomm.c (print_arelt_descr): Tweek the output format
+ so that 'ar tv' output follows Posix 1003.2/D11.
+ Output is now also identical to Sun's (except __.SYMDEF).
+
+Mon Dec 30 06:09:53 1991 John Gilmore (gnu at cygnus.com)
+
+ * Makefile.in: Make `make' output more readable.
+
+Wed Dec 18 15:04:45 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in: Bump to version 1.94.
+
+Wed Dec 11 16:48:09 1991 Steve Chamberlain (sac at cygnus.com)
+
+ * ar.c: added "b" to fopens for dos
+ * configdj.bat, makefile.dos new files from DJ
+
+Tue Dec 10 04:07:26 1991 K. Richard Pixley (rich at rtl.cygnus.com)
+
+ * Makefile.in: infodir belongs in datadir.
+
+Sat Dec 7 17:09:37 1991 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * bucomm.h: created to hold prototypes of bucomm.c
+ * objdump.h: created to hold prototyes of objdump.c
+ * am29k-pinsn.c: include objdump.h
+ * ar.c: include bucomm.h, get ar.h from the right place and
+ include libbfd.h
+ * bucomm.c: defunize bfd_fatal
+ * copy.c: include bucomm.h, lint.
+ * i960-pinsn.h: include bucomm.h
+ * m68k-pinsn.h: lint
+ * nm.c: include bucomm.h, lint
+ * objdump.c: lint
+ * sparc-pinsn.c: include objdump.h
+
+
+
+Fri Dec 6 23:02:14 1991 K. Richard Pixley (rich at rtl.cygnus.com)
+
+ * Makefile.in: added standards.text support. install using
+ INSTALL_PROGRAM and INSTALL_DATA.
+
+ * configure.in: configure now does all of it's work from objdir so
+ make file existence tests against ${srcdir}.
+
+Thu Dec 5 22:46:22 1991 K. Richard Pixley (rich at rtl.cygnus.com)
+
+ * Makefile.in: idestdir and ddestdir go away. Added copyrights
+ and shift gpl to v2. Added ChangeLog if it didn't exist. docdir
+ and mandir now keyed off datadir by default.
+
+Wed Dec 4 22:42:03 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in: Bump to version 1.93.
+ * Makefile.in: Add make-strip.o:maybe-strip.c dependency
+ for make versions that provide half-baked VPATH-support (e.g. Sun's).
+ * size.c: Improvements suggested by
+ "david d [zoo] zuhn" <zoo@aps1.spa.umn.edu>:
+ - Don't emit (Berkeley) headers if no files were found.
+ - Return a non-zero return code on failure.
+
+Sat Nov 30 21:34:19 1991 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ Changes due to include file renaming:
+ * am29k-pinsn.c: a29k-opcode.h -> opcode/a29k.h
+ * sparc-pinsn.c: sparc-opcode.h -> opcode/sparc.h
+ * m68k-pinsn.c: m68k-opcode.h -> opcode/m68k.h
+ * nm.c: stab.gnu.h -> aout/stab_gnu.h
+
+Tue Nov 19 19:20:43 1991 Per Bothner (bothner at cygnus.com)
+
+ * README: Mention MINIMIZE flag for bfd's make.
+
+Mon Nov 18 12:05:37 1991 Per Bothner (bothner at cygnus.com)
+
+ * README: Various improvements.
+
+Sun Nov 17 23:40:59 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in: Bump to version 1.92.
+ * version.c, Makefile.in: Get version string from Makefile.
+ * copy.c, is-strip.c, not-strip.c, maybe-strip.c, Makefile.in:
+ Make the same change that we earlier did for ar/ranlib:
+ Generate two different binaries for strip and copy and use
+ a global variable with different values to distinguish
+ ostrip from copy. (-1 means to use argv[0] to decide,
+ so you can get the old behavior, but it is no longer the default).
+ * copy.c (copy_file): Set EXEC_P of output bfd if input is so.
+ * copy.c (main): If is_strip==-1, compare last 5 chars
+ of argv[0], not the whole path.
+ * copy.c (main): Return 0, not 1.
+ * copy.c (setup_sections): Fix due to change in bfd_make_section
+ now failing if asked for a duplicate section.
+ * strip.c, ostrip.c: Removed obsolete files.
+ * ar.c, not-ranlib.c, maybe-ranlib.c:
+ Change encoding of is_ranlib variable to be consistent
+ with is_strip for strip.copy (i.e -1 to means use argv[0]).
+
+Thu Nov 14 20:11:02 1991 Per Bothner (bothner at cygnus.com)
+
+ * version.c (program_version): Update to version 1.92.
+
+Tue Nov 12 16:17:53 1991 Per Bothner (bothner at cygnus.com)
+
+ * ar.c (get_pos_bfd): Previous fix was missing a "break".
+
+Thu Nov 7 08:55:56 1991 Steve Chamberlain (sac at cygnus.com)
+
+ * am29k-pinsn.c: Fixed bug in mtacc, dmac and fmac instruction
+ encodings. (Thaks to David Wood)
+
+Sun Nov 3 14:50:23 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in ($(DIST_NAME).tar.Z), TODO: Various fixes.
+ * ar.c (get_pos_bfd): Fix to handling of before/after
+ positioning options.
+ * bucomm.c (fatal): MISSING_VFPRINTF is no longer an issue,
+ since libiberty contains vfprintf etc if otherwise missing.
+ * m68k-pinsn.c (print_insn_arg): Support BB/BW/BL
+ type operands, as used by branch instructions.
+ * nm.c: Delegate printing of symbols to BFD,
+ by using bfd_print_symbol to do the formatting.
+
+Mon Oct 28 11:20:47 1991 Steve Chamberlain (steve at cygnus.com)
+
+ * ar.c (write_archive.c): added unlink before rename since some
+ systems can't rename onto an existant file.
+
+Mon Oct 21 09:47:23 1991 Steve Chamberlain (steve at rtl.cygnus.com)
+
+ * nm.c: now doesn't crash if a symbol with no section and no
+ SEC_ABS appears.
+
+Thu Oct 17 15:25:50 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in, version.c: Bump to version 1.91.
+
+Wed Oct 16 11:45:36 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in, ar.c, bucomm.c, copy.c, cplus-dem.c, filemode.c,
+ i960-pinsn.c, m68k-pinsn.c, nm.c, objdump.c, size.c, sparc-pinsn.c,
+ * strip.c: Add or update Copyright notice.
+ * TODO: Add note on 'nm -a'.
+ * version.c: Update version number to 1.90.
+ * Makefile.in: Fix making of documentation for dist.
+
+Tue Oct 15 00:17:17 1991 Per Bothner (bothner at cygnus.com)
+
+ * README: New file.
+ * Makefile.in: New kludgy rules for making a tarfile.
+ * Makefile.in: Fix bindir path.
+
+Mon Oct 14 17:34:29 1991 Roland H. Pesch (pesch at cygnus.com)
+
+ * Makefile.in: add targets binutils.mm, binutils.me
+
+Fri Oct 11 22:44:21 1991 John Gilmore (gnu at cygnus.com)
+
+ * Makefile.in: Avoid Sun Make VPATH bugs by adding dependencies.
+
+Fri Oct 11 12:51:33 1991 Roland H. Pesch (pesch at cygnus.com)
+
+ * Makefile.in: add target "binutils.ms"
+
+ * binutils.texinfo: minor restructuring for texi2roff comfort.
+
+Fri Oct 11 04:12:28 1991 John Gilmore (gnu at cygnus.com)
+
+ Restructure configuration scheme for bfd, binutils, ld.
+
+ * include/sys/h-*.h: Move to bfd/hosts/h-*.h.
+ * 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 accomodate 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/contrib/binutils/binutils/ChangeLog-9899 b/contrib/binutils/binutils/ChangeLog-9899
new file mode 100644
index 0000000..22f21e2
--- /dev/null
+++ b/contrib/binutils/binutils/ChangeLog-9899
@@ -0,0 +1,1908 @@
+1999-12-28 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Update with new constants added by Oct 4, 1999
+ ELF ABI draft.
+ (guess_is_rela): Add new machine codes, but leave
+ rel type undetermined.
+ (get_machine_name): Add new machine codes.
+ (get_section_type_name): Add new section types.
+ (get_elf_section_flags): New function: Decode section flags.
+ (process_section_headers): Call get_elf_section_flags() in
+ order to decode flags in section header.
+ (get_dynamic_flags): New function: Decode dynamic section
+ flags.
+ (process_dynamic_section): Display flags (if present).
+ (get_symbol_type): Add STT_COMMON.
+ (get_symbol_visibility): New function: Decode a symbol's
+ visibility.
+ (process_symbol_table): Call get_symbol_visibility().
+ (get_note_type): Add NT_PRXFPREGS.
+
+1999-12-26 Ian Lance Taylor <ian@zembu.com>
+
+ * strings.c (main): Correct handling of numeric argument.
+
+1999-12-23 Andrew Haley <aph@cygnus.com>
+
+ * dlltool.c (mtable): mcore how_jtab_roff is 4 bytes into the
+ jtab; was 8.
+
+1999-12-17 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (mtable): Stop compile time warnings about missing
+ initialisers.
+ (yyerror): Stop compile time warnings about unused paramater.
+ (INIT_SEC_DATA): New macro: initialise an entry in the secdata
+ array.
+ (secdata): Stop ccompile time warnings about uninitialised
+ fields.
+ (dtab): Stop compile time warnings about unused parameter.
+ (long_options): Stop compile time warning about missing
+ initialiser.
+
+1999-12-10 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (print_vma): Support native 64bit ELF systems.
+
+1999-12-09 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (mtable): Add epoc-arm specific entry.
+ Make default arm entry pass -mpacs-26 to assembler.
+ (flush_page): Do not mangle null entries.
+
+1999-12-07 H . J . Lu hjl@valinux.com
+
+ * readelf.c: Fix compile time warnings. Support more than 999
+ symbols.
+
+1999-12-03 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (enum print_mode): New type.
+ (print_vma): New function.
+ (dump_relocations): Use print_vma to display bfd_vma values.
+ (process_file_header): Use print_vma to display bfd_vma values.
+ (process_program_headers): Use print_vma to display bfd_vma values.
+ (process_section_headers): Use print_vma to display bfd_vma values.
+ (dynamic_segment_parisc_val): Use print_vma to display bfd_vma values.
+ (process_dynamic_segment): Use print_vma to display bfd_vma values.
+ (process_symbol_table): Use print_vma to display bfd_vma values.
+ (process_mips_specific): Use print_vma to display bfd_vma values.
+
+1999-11-25 Fred Fish <fnf@cygnus.com>
+
+ * readelf.c (process_note): Change arg from Elf_External_Note
+ to Elf32_Internal_Note, which also turns the function body
+ into little more than a call to printf.
+ (process_corefile_note_segment): Substantially rewritten
+ to properly handle case where target and host are different
+ endianness, handle note sections with padding, and add some
+ cruft to handle notes with unterminated name data.
+
+1999-11-22 Nick Clifton <nickc@cygnus.com>
+
+ * objcopy.c (copy_usage): Reformat.
+ (strip_usage): Reformat.
+
+1999-11-21 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (usage): Overhaul output: One line per switch.
+ Textual description of each switch. Distinguish between
+ optional switches and required switches.
+ (long_options): Add 'g', 'G' and 'z' short options.
+ (main): Distinguish between optional switches and required
+ switches.
+
+ * binutils.texi: Add -g -G and -z short options for
+ --debugging, --stabs and --disassemble-zeroes.
+
+1999-11-03 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (flush_page): Clip short values to prevent warnings
+ from the assembler.
+ Change default mcore machine name to 'mcore-le' and rename
+ big-endian version to 'mcore-be'.
+
+1999-10-27 Fred Fish <fnf@cygnus.com>
+
+ * objdump.c (display_bfd): Break into two functions. The
+ actual dumping code moves to dump_bfd. If bfd is not
+ unambiguously recognized as a bfd_object, attempt to dump
+ it as a bfd_core.
+ (dump_bfd): New function.
+
+1999-10-26 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (assemble_file): Remove spurious test of exp_name.
+
+1999-10-22 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (struct mac): Add new field 'how_default_as_switches'.
+ (mtable): Initialise new field. Some machines have a non empty
+ string for this field.
+ (HOW_BFD_TARGET): Undefine and replace with...
+ (HOW_BFD_READ_TARGET): New macro: bfd target to use when opening a
+ file for reading. This is set to 0 so that any recognisable bfd
+ format can be read.
+ (HOW_BFD_WRITE_TARGET): New macro: bfd target to use when opening
+ a file for writing. This is set to the target machine type.
+ (ASM_SWITCHES): New macro: default switches to use when assembling
+ a file.
+ (assemble_file): New function: Assemble a source file into a
+ destination object file.
+ (gen_exp_file): Use assemble_file to create the exp file.
+ (make_one_lib_file): Use assemble_file to create the lib file.
+ Open output file use HOW_BFD_WRITE_TARGET and input files using
+ HOW_BFD_READ_TARGET.
+ (make_head): Use assemble_file to create the head file.
+ (make_tail): Use assemble_file to create the tail file.
+ (gen_lib_file): Open output file use HOW_BFD_WRITE_TARGET.
+
+1999-10-15 Ian Lance Taylor <ian@zembu.com>
+
+ * ar.c (normalize): Fix full_pathname code.
+
+1999-10-08 Ben Elliston <bje@cygnus.com>
+
+ * binutils.texi: Some rewording and clarifications.
+
+1999-09-15 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (dynamic_segment_parisc_val): Print 0 for DLD_FLAGS if
+ the value is zero.
+ (process_symbol_table): Don't print histogram if hash table is empty.
+
+1999-09-15 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (get_parisc_dynamic_type): Handle DT_HP_GST_* values.
+
+1999-09-02 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (get_symbol_type): Add support for HPUX and PARISC
+ specific symbol types.
+
+ * readelf.c: Add HPUX and PARISC extensions to dynamic and program
+ header table printing.
+
+ * readelf.c (get_machine_flags): Add handling of PARISC.
+
+1999-09-29 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dlltool.c (scan_drectve_symbols): Handle type tags in exported
+ symbols.
+ (scan_filtered_symbols): Likewise.
+
+1999-09-19 Ian Lance Taylor <ian@zembu.com>
+
+ * resrc.c (write_rc_rcdata): Fix local variable shadowing
+ problem. If RCDATA_BUFFER data can be read as strings, modify
+ code to print the strings as comments.
+ * resres.c: Add casts to avoid warnings.
+ (write_res_data, read_res_data): Don't put the program name in the
+ error message; fatal already puts it there.
+
+1999-09-14 Michael Meissner <meissner@cygnus.com>
+
+ * configure.in (Canonicalization of target names): Remove adding
+ ${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
+ generates $ac_config_sub with a ${CONFIG_SHELL} already.
+ * configure: Regenerate.
+
+1999-09-12 Ian Lance Taylor <ian@zembu.com>
+
+ * ar.c (main): Clear output_file if we don't change the archive.
+ (delete_members, replace_members): Likewise.
+
+1999-09-12 Donn Terry <donn@interix.com>
+
+ * objdump.c (dump_headers): If wide_output, print Flags header.
+
+ * objdump.c (dump_section_header): Print any comdat information.
+
+ * objcopy.c (parse_flags): Handle "noload", "debug", and "share".
+ * binutils.texi, objcopy.1: Document new flags.
+
+ * ar.c (counted_name_mode): New static variable.
+ (counted_name_counter): New static variable.
+ (map_over_members): Handle counted mode.
+ (usage): Mention N modifier.
+ (main): Handle N modifier.
+ (delete_members): Handle counted mode.
+ * binutils.texi, ar.1: Document N modifier.
+
+ * ar.c (print_contents): Change printing of member name for
+ POSIX.2 conformance.
+
+ * ar.c (output_filename): Make const.
+ (open_inarch): If creating a new empty archive, set
+ output_filename.
+
+1999-09-12 Ian Lance Taylor <ian@zembu.com>
+
+ * ar.c (full_pathname): New static variable.
+ (map_over_members): Call normalize on command line parameter.
+ (usage): Mention P modifier.
+ (normalize): If full_pathname is true, don't do anything.
+ (main): Accept P modifier.
+ (delete_members): Call normalize on command line parameter.
+ * binutils.texi, ar.1: Document P modifier.
+
+1999-09-09 Andreas Schwab <schwab@suse.de>
+
+ * binutils.texi: Add info dir entries for all programs described
+ here. Fix arguments of @var to not contain punctuation.
+
+1999-09-06 Donn Terry <donn@interix.com>
+
+ * nm.c (print_symbol_info_bsd): Check for 'w' as well as 'U'.
+ (print_symbol_info_sysv): Likewise.
+ (print_symbol_info_posix): Likewise.
+
+1999-09-04 Steve Chamberlain <sac@pobox.com>
+
+ * readelf.c: Include "elf/pj.h".
+ (dump_relocations): Handle EM_PJ.
+ (get_machine_name): Likewise.
+ (get_machine_flags): Likewise.
+
+1999-08-31 Scott Bambrough <scottb@netwinder.org>
+
+ * readelf.c (get_note_type): New function: Decode the e_type
+ value of a note.
+ (process_note): New function: Display the contents of a core note.
+ (process_corefile_note_segment): New function.
+ (process_corefile_note_segments): New function.
+ (process_corefile_contents): New function.
+ (process_file): Add call to process_corefile_contents.
+ (parse_args): Add parsing of -n/--notes command line switch.
+ (usage): Document new command line switch.
+
+ * binutils.texi: Documemnt new command line switch to readelf.
+
+1999-08-31 Ian Lance Taylor <ian@zembu.com>
+
+ * binutils.texi (Bug Reporting): Clarify that large files should
+ not be sent to bug-gnu-utils.
+
+1999-08-28 Stephane Carrez <stcarrez@worldnet.fr>
+
+ * readelf.c (process_extended_line_op): New parameter pointer_size,
+ read the address according to pointer_size.
+ (debug_line_pointer_size): New global to indicate the
+ size of address in .debug_line section.
+ (debug_displays, prescan_debug_info): Prescan the .debug_info section
+ to record the size of address in `debug_line_pointer_size'.
+ (process_section_contents): Before dumping any section, execute
+ the pre-scan operation defined for some debug sections.
+
+1999-08-27 Jim Wilson <wilson@cygnus.com>
+
+ * readelf.c (display_debug_lines): Use i-1 not i in standard_opcodes
+ access.
+ (display_debug_aranges): New local excess. Use for calculating padding
+ and add that into ranges. Break from loop only if length is also 0.
+
+1999-08-27 Jim Wilson <wilson@cygnus.com>
+
+ * readelf.c (display_debug_lines, case DW_LNS_const_add_pc): Multiply
+ adv by info.li_min_insn_length.
+
+1999-08-26 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * readelf.c (get_sparc64_dynamic_type): New function.
+ (get_dynamic_type): Use it.
+
+1999-08-26 Jim Wilson <wilson@cygnus.com>
+
+ * readelf.c (display_debug_lines, case default): Change second line
+ setting adv to use = not +=.
+
+1999-08-19 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c: Added more examples to the comment at the start.
+
+1999-08-18 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (make_head): Only emit interworking directive if
+ necessary.
+
+Thu Jul 15 22:44:21 1999 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * readelf.c (process_abbrev_section): Handle standard-conforming
+ single zero at the end of the section.
+
+1999-08-09 Ian Lance Taylor <ian@zembu.com>
+
+ * objdump.c (exit_status): New static variable.
+ (nonfatal): New static function.
+ (disassemble_data): Set exit_status on error.
+ (read_section_stabs): Likewise.
+ (display_bfd): Likewise. Call nonfatal rather than bfd_nonfatal.
+ (display_file): Call nonfatal rather than bfd_nonfatal.
+ (display_target_list, display_info_table): Likewise.
+ (main): Return exit_status rather than 0.
+
+1999-08-08 Ian Lance Taylor <ian@zembu.com>
+
+ * objdump.c (dump_section_header): Update for renaming of
+ SEC_SHORT to SEC_SMALL_DATA. Print SEC_SHARED flag.
+
+ From Eli Zaretskii <eliz@gnu.org>:
+ * binutils.texi: Document cxxfilt as MS-DOS name for c++filt.
+
+ * configure.in: Define and substitute DEMANGLER_NAME.
+ * Makefile.am (DEMANGLER_PROG): Set to cxxfilt.
+ (man_MANS): Use DEMANGLER_NAME rather than DEMANGLER_PROG.
+ (bin_PROGRAMS): Remove $(DEMANGLER_PROG).
+ (noinst_PROGRAMS): Add $(DEMANGLER_PROG).
+ (cxxfilt_SOURCES): Rename from c__filt_SOURCES.
+ (cxxfilt_LDADD): Rename from c__filt_LDADD.
+ ($(DEMANGLER_NAME).1): Rename from $(DEMANGLER_PROG).1. Use
+ DEMANGLER_NAME rather than DEMANGLER_PROG in substitution.
+ (MOSTLYCLEANFILES): Use DEMANGLER_NAME rather than
+ DEMANGLER_PROG.
+ (install-exec-local): When installing noinst_PROGRAMS, change
+ cxxfilt to $(DEMANGLER_NAME).
+ * configure, Makefile.in: Rebuild.
+
+ * Makefile.am: Rename .dep* files to DEP*. Change DEP variable to
+ MKDEP.
+ * Makefile.in: Rebuild.
+
+1999-08-05 Donn Terry <donn@interix.com>
+
+ * Makefile.am (YACC): If bison is not in the source tree, use
+ @YACC@ rather than bison -y.
+ (LEX): If flex is not in the source tree, use @LEX@ rather than
+ flex.
+ * configure.in: Build dlltool for i[3-6]86-*-interix.
+ * Makefile.in, configure: Rebuild.
+
+1999-07-21 Ian Lance Taylor <ian@zembu.com>
+
+ From Mark Elbrecht:
+ * configure.bat: Remove; obsolete.
+
+1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * readelf.c (get_machine_flags): Print EF_SPARC_SUN_US3.
+
+1999-07-15 Ian Lance Taylor <ian@zembu.com>
+
+ * configure.in: Bump version number to 2.9.5.
+ * configure: Rebuild.
+
+1999-07-14 Richard Henderson <rth@cygnus.com>
+
+ * objdump.c (dump_section_header): Print SEC_SHORT.
+
+1999-07-11 Ian Lance Taylor <ian@zembu.com>
+
+ * Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
+ as appropriate. Add variable initializations. Add casts.
+ * objdump.c (disassemble_bytes): Change j to bfd_vma.
+ * readelf.c (process_syminfo): Change i to unsigned int.
+ (display_debug_info): Change abbrev_number to unsigned long.
+ (process_mips_specific): Change fcnt to size_t.
+
+1999-07-09 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Only support decoding 64bit ELF files if the compiler
+ supports a 64 bit data type.
+ Add -I equivalent for --histogram.
+ Add -A command-line option to display architecture specific information.
+
+1999-07-08 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * readelf.c (guess_is_rela): Sparcv9 and v8plus use rela.
+ (dump_relocations): Use ELF64_R_TYPE_ID for Sparc, for R_SPARC_OLO10
+ print the secondary addend.
+ (get_machine_flags): Print Sparc machine flags.
+ (get_symbol_type): Print STT_REGISTER.
+
+1999-07-08 Ian Lance Taylor <ian@zembu.com>
+
+ * stabs.c (parse_stab_type): Fix handling of template names with
+ template parameters containing `::'.
+ (stab_demangle_type): Handle a qualified name in a pointer to
+ member.
+
+1999-06-23 Ian Lance Taylor <ian@zembu.com>
+
+ * Makefile.am (dlltool_SOURCES): Add dyn-string.c.
+ * Makefile.in: Rebuild.
+
+1999-06-23 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * configure.in (HAVE_EXECUTABLE_SUFFIX): Define.
+ * dlltool.c (look_for_prog): Use HAVE_EXECUTABLE_SUFFIX.
+ * dllwrap.c (look_for_prog): Likewise.
+ * resrc.c (look_for_default): Likewise.
+ * configure, config.in: Rebuild.
+
+1999-06-22 Ian Lance Taylor <ian@zembu.com>
+
+ Based on patches from Mumit Khan <khan@xraylith.wisc.EDU>:
+ * configure.in: Define EXECUTABLE_SUFFIX.
+ * dlltool.c: Include "dyn-string.h". Include <stdarg.h> based on
+ ANSI_PROTOTYPES, not __STDC__.
+ (outfile): Remove.
+ (gen_exp_file): Change uses of outfile to use alloca.
+ (make_one_lib_file, make_head, make_tail): Likewise.
+ (gen_lib_file): Likewise.
+ (look_for_prog): New static function.
+ (deduce_name): Rewrite to use look_for_prog.
+ (mcore_elf_gen_out_file): Use dyn_string_t rather than outfile.
+ * dllwrap.c: Don't include <stdio.h>, <errno.h>, <string.h>,
+ <stdlib.h>, or <unistd.h>. Include <sys/stat.h> and either
+ <stdarg.h> or <varargs.h>.
+ (driver_name): Initialize to NULL, not "gcc".
+ (dlltool_name): Initialize to NULL, not "dlltool".
+ (display, inform, look_for_prog, deduce_name): New static
+ functions.
+ (usage): Mention -mno-cygwin.
+ (OPTION_MNO_CYGWIN): Define.
+ (main): Handle -mno-cygwin. Deduce driver_name and dlltool_name.
+ * resrc.c (look_for_default): Make static. Remove unused local
+ path. Check using EXECUTABLE_SUFFIX.
+ (read_rc_file): Allocate enough space to hold EXECUTABLE_SUFFIX.
+ * Makefile.am: Rebuild dependencies.
+ (dllwrap_LDADD): Add $(INTLLIBS).
+ * configure, Makefile.in, config.in: Rebuild.
+
+Mon Jun 21 16:49:11 1999 Jeffrey A Law (law@cygnus.com)
+
+ * readelf.c (dump_relocations): Use elf_hppa_reloc_type instead of
+ elf32_hppa_reloc_type.
+
+1999-06-17 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (mcore_elf_gen_out_file): Link object files with the
+ .exp file, not the .lib file.
+
+Fri Jun 18 20:17:51 1999 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * deflex.l: Accept single-character symbol names.
+
+1999-06-16 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (get_symbol_type): Detect ARM symbols typed as Thumb
+ functions.
+
+1999-06-14 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (disassembler_options): New variable.
+ (usage): Document new -M/--disassembler-options option.
+ (long_options): Add --disassembler-options.
+ (disassemble_data): Initialise disassembler_options field of
+ disassembler_info structure.
+ (main): Add parsing of -M option.
+
+ * binutils.texi: Document new command line switch to objdump.
+
+ * NEWS: Describe new command line switch to objdump.
+
+
+Mon Jun 14 10:27:54 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * binutils.texi: Fix typos.
+
+1999-06-13 Ian Lance Taylor <ian@zembu.com>
+
+ * objdump.c (disassemble_bytes): If the disassembler returns an
+ error, print out anything it may have printed to the buffer. From
+ H.J. Lu <hjl@gnu.org>.
+
+ * defparse.y (explist): Remove separate expline to eliminate
+ shift/reduce conflict.
+
+ From Kai-Uwe Rommel <rommel@ars.de>:
+ * defparse.y: Add tokens NONSHARED, SINGLE, MULTIPLE,
+ INITINSTANCE, INITGLOBAL, TERMINSTANCE, and TERMGLOBAL.
+ (command): Add option_list after LIBRARY.
+ (attr): Accept and ignore NONSHARED, SINGLE, and MULTIPLE.
+ (option_list, option): New nonterminals.
+ * deflex.l: Recognize NONSHARED, SINGLE, MULTIPLE, INITINSTANCE,
+ INITGLOBAL, TERMINSTANCE, and TERMGLOBAL.
+
+1999-06-12 Ian Lance Taylor <ian@zembu.com>
+
+ * ar.c (O_BINARY): Define as 0 if not defined.
+ (ranlib_touch): Open file with O_BINARY.
+
+ * rename.c (O_BINARY): Define as 0 if not defined.
+ (simple_copy): Open files with O_BINARY.
+
+ Based on patch from H. Peter Anvin <hpa@transmeta.com>:
+ * objcopy.c (struct section_list): Add copy field.
+ (sections_copied): New static variable.
+ (copy_options): Add "only-section".
+ (copy_usage): Mention -j and --only-section.
+ (find_section_list): Initialize copy field.
+ (is_strip_section): Check for copying sections.
+ (copy_object): Check sections_copied when calling filter_symbols.
+ (setup_section): Check for copying sections.
+ (copy_section): Likewise.
+ (copy_main): Handle -j/--only-section.
+ * binutils.texi, objcopy.1: Document -j/--only-section.
+
+ * configure.in: If frexp is not available, check in -lm.
+ * configure: Rebuild.
+
+ * readelf.c (get_elf_class): Use correct printf format for type.
+ (get_data_encoding): Likewise.
+ (get_osabi_name): Likewise.
+ (process_file_header): Don't pass an extra argument to printf.
+ (process_dynamic_segment): Cast dynamic_size to long before
+ printing.
+ (decode_location_expression): Cast byte_get to long before
+ printing.
+
+Wed Jun 9 11:40:16 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * readelf.c (dump_section): Cast values from byte_get to
+ [unsigned] long for printing, in case it is wider than long.
+ (display_block): Likewise.
+ (read_and_display_attr): Likewise.
+ (decode_location_expression): Likewise. Don't depend on
+ evaluation order.
+
+Mon Jun 7 12:14:57 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * windres.c (usage): Fix typo.
+
+1999-06-04 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Use 64bit wide fields in internal strcutures even if
+ targetting a 32bit architecture.
+ (dump_relocations): Take a new parameter - the number of symbols
+ in the symbol table.
+
+1999-06-04 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Add support for 64bit ELF files.
+
+1999-06-03 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (mcore_elf_gen_out_file): Use constants for temporary
+ file names.
+
+Wed Jun 2 12:34:36 1999 Richard Henderson <rth@cygnus.com>
+
+ * dlltool.c (gen_exp_file): Revert 19990411 change.
+
+Mon May 31 09:56:22 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * readelf.c (process_relocs): Determine type of reloc from
+ DT_PLTREL and from section type.
+
+1999-05-29 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (get_elf_class): Display unknown class number.
+ (get_data_encoding): Display unknown encoding number.
+ (get_osabi_name): Display unknown ABI number.
+ (process_file_header): Display unknown version number.
+
+1999-05-29 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (dump_relocations): Fix typo.
+
+1999-05-28 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (dump_relocations): Add extra parameter: is_rela to
+ specify the kind of relocations to be dumped. Call guess_is_rela
+ if this parameter has a value of UNKNOWN.
+ (guess_is_rela): New function: Guess the kind of reloc being used
+ baced on the machine number.
+ (process_relocs): Determine type of reloc before calling
+ dump_relocations.
+
+1999-05-28 Ian Lance Taylor <ian@zembu.com>
+
+ * readelf.c: Include "elf/i960.h".
+ (dump_relocations): Handle EM_960.
+
+Thu May 27 11:58:33 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * objcopy.c (copy_archive): Preserve dates of archive members if
+ requested.
+
+ * readelf.c (dump_relocations): Always print the addend on RELA
+ systems even if there is no symbol.
+ (process_program_headers): Reset dynamic_size before looping
+ through the program headers.
+ (process_version_sections): Cast sh_offset to unsigned long for
+ printing in case bfd_vma is wider.
+ (process_symbol_table): Use get_symbol_index_type when printing
+ st_shndx.
+
+1999-05-17 DJ Delorie <dj@cygnus.com>
+
+ * windres.c: add verbose option
+ (main): process verbose option
+ * resrc.c (look_for_default): new. Look for the default
+ preprocessor in a given location.
+ (read_rc_file): for foo/bar-windres, look for foo/bar-gcc,
+ foo/gcc (in case of foo/windres), and then gcc (the old default).
+
+1999-05-16 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c (deduce_name): New function: Deduce name of program to
+ run.
+ (mcore_elf_out_file): New variable: Name of mcore-elf output file.
+ (mcore_elf_linker): New variable: Name of linker to use.
+ (mcore_elf_linker_flags): New variable: Linker flags to pass.
+ (scan_obj_file): Cache filenames if necessary.
+ (usage): Document new command line options.
+ (main): Support new command line options: -M (generate an
+ mcore-elf output file) -L (name of linker to use) -F (flags to
+ pass to linker).
+ (mcore_elf_cache_filename): Store a filename in a cache.
+ (mcore_elf_gen_out_file): New function: Generate an output file
+ per the mcore-elf spec.
+
+1999-05-15 Nick Clifton <nickc@cygnus.com>
+
+ * configure.in (BUILD_MISC): Build dlltool for mcore
+ * configure: Regenerate.
+ * dlltool.c: Update example in comment.
+ (DLLTOOL_MCORE): Define.
+ (DLLTOOL_MCORE_ELF): Define.
+ (DRECTVE_SECTION_NAME): Define.
+ (mcore_be_jtab, mcore_le_jtab): Binary for performing an mcore
+ jump to address.
+ (mtable): Add entries for mcore variants.
+ (rvaafter, rvabefore, asm_prefix): Add mcore suppport.
+ (scan_drectve_symbols): Use DRECTVE_SECTION_NAME.
+ (make_head, make_tail): Cope if file cannot be created.
+ (usage): Improve layout.
+
+1999-05-13 DJ Delorie <dj@cygnus.com>
+
+ * rclex.l: add code to suppress certain output from cpp, replace
+ all returns with MAYBE_RETURN
+ (MAYBE_RETURN): new, implement the suppression by returning
+ IGNORED_TOKEN as needed.
+ (cpp_line): remember which file we're in, mark data from included
+ *.h files for suppression.
+ * rcparse.y (input): allow IGNORED_TOKEN outside of known constructs
+
+1999-05-10 DJ Delorie <dj@cygnus.com>
+
+ * windres.c (quot): Quote shell metacharacters in a string
+ (main): quote parameters to cpp that might have metacharacters in
+ them. Allow -D as an alias for --define to allow for sharing make
+ macros with gcc.
+
+ * objdump.c (dump_reloc_set): don't core if howto->name is NULL
+
+ * Makefile.am: Give rescoff.c a cpu-specific -D so it can set
+ the correct BFD.
+ * Makefile.in: ditto
+ * rescoff.c (write_coff_file): Set the correct BFD
+
+1999-05-06 Ian Lance Taylor <ian@zembu.com>
+
+ * rename.c (smart_rename): Fix test of whether file exists.
+
+1999-05-06 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (disassemble_data): Set display_endian based on target
+ endianism.
+
+1999-05-05 Catherine Moore <clm@cygnus.com>
+
+ * dlltool.c (interwork): Remove.
+ (arm_interwork_jtab): Use bx insn.
+ (thumb_jtab): Likewise.
+ (MARM_INTERWORK): New machine type.
+ (rvaafter): Handle it.
+ (rvabefore) Likewise.
+ (asm_prefix): Likewise.
+ (gen_exp_type): Check machine type instead of
+ interwork flag.
+ (make_one_lib_file): Likewise.
+ (make_head): Likewise.
+ (make_tail): Likewise.
+ (usage): Update machine types.
+ (main): Remove -interwork support.
+
+1999-05-05 Catherine Moore <clm@cygnus.com>
+
+ * readelf.c (get_machine_flags): Check for EF_CPU32.
+ (get_data_encoding): Fix typo.
+
+1999-04-26 Tom Tromey <tromey@cygnus.com>
+
+ * aclocal.m4, configure: Updated for new version of libtool.
+
+1999-04-18 Ian Lance Taylor <ian@zembu.com>
+
+ * stabs.c (parse_stab_range_type): Correct parenthesization in
+ BFD64 case.
+
+ * readelf.c (get_section_type_name): Use correct types in printf
+ formats.
+ (process_relocs): Likewise.
+ (process_dynamic_segment): Likewise.
+ (process_symbol_table): Likewise.
+ (process_mips_specific): Likewise.
+
+Tue Apr 13 21:22:00 1999 Catherine Moore <clm@cygnus.com>
+
+ * dlltool.c (make_one_lib_file): Mark thumb functions as
+ C_THUMBEXTFUNC.
+
+1999-04-11 Richard Henderson <rth@cygnus.com>
+
+ * bucomm.h (environ): Declare it, if needed.
+ (alloca) [C_ALLOCA]: Don't use gcc's builtin or <alloca.h>.
+ * configure.in (environ): Detect declaration.
+ * nm.c (main): Don't declare environ.
+ * configure, config.in: Rebuild.
+
+ * dlltool.c (gen_exp_file): Pad out the .reloc section to a
+ 32-byte boundary with dummy relocations, to make the BeOS loader
+ happy. Patch from Bob Manson <manson@charmed.cygnus.com>.
+
+1999-04-08 Tom Tromey <tromey@cygnus.com>
+
+ * binutils.texi (c++filt): Updated for -j/--java, and hp/edg
+ formats.
+
+1999-04-08 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Add ability to decode new constants found in April 25
+ 1998 Draft of System V ABI spec.
+
+1999-04-06 Ian Lance Taylor <ian@zembu.com>
+
+ * bucomm.h (LC_MESSAGES): Never define.
+ * addr2line.c (main): Don't pass LC_MESSAGES to setlocale if the
+ system does not define it.
+ * ar.c (main): Likewise.
+ * coffdump.c (main): Likewise.
+ * dlltool.c (main): Likewise.
+ * nlmconv.c (main): Likewise.
+ * nm.c (main): Likewise.
+ * objcopy.c (main): Likewise.
+ * objdump.c (main): Likewise.
+ * size.c (main): Likewise.
+ * srconv.c (main): Likewise.
+ * strings.c (main): Likewise.
+ * sysdump.c (main): Likewise.
+ * windres.c (main): Likewise.
+ * readelf.c (main): Call locale setting functions.
+
+1999-04-05 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (decode_location_expression): Fix DW_OP_const8{s|u}
+ decodes.
+
+1999-04-04 Ian Lance Taylor <ian@zembu.com>
+
+ * rename.c: New file, copied out of objcopy.c with a few changes.
+ * bucomm.h (set_times, smart_rename): Declare.
+ * ar.c: Don't include <utime.h>.
+ (extract_file): Call set_times rather than utime.
+ (write_archive): Call smart_rename rather than unlink and rename.
+ * objcopy.c: Don't include <utime.h>.
+ (simple_copy, smart_rename, set_times): Move to rename.c.
+ (strip_main): Update smart_rename call for new parameter.
+ (copy_main): Likewise.
+ * Makefile.am: Rebuild dependencies.
+ (CFILES): Add rename.c.
+ (objcopy_SOURCES, strip_new_SOURCES): Add rename.c.
+ (ar_SOURCES, ranlib_SOURCES): Add rename.c.
+ * Makefile.in: Rebuild.
+
+ * Makefile.am: Rebuild dependencies.
+ (EXTRA_PROGRAMS): Remove backslash which troubles current version
+ of automake.
+ * Makefile.in: Rebuild.
+
+ * dllwrap.c (main): Expect correct type in format string.
+ * resres.c: Include "bfd.h", "bucomm.h", "libiberty.h", and
+ <time.h>. Don't include <stdio.h> and <errno.h>.
+ (write_res_file): Remove unused locals e and i.
+ (read_resource_entry): Remove unused locals rtype and n.
+ (read_unistring): Remove unused local n.
+
+1999-04-03 Ian Lance Taylor <ian@zembu.com>
+
+ * arparse.y: Declare yylex.
+ * objdump.c (disassemble_bytes): Initialize bytes. Add comment
+ for incorrect use of bytes.
+ * readelf.c: Change many formats to avoid warnings.
+
+1999-04-01 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (reset_state_machine): New function. Resets the
+ registers of the source line number state machine.
+ (process_extended_line_op): Use state machine.
+ (display_debug_lines): Use state machine. Handle multiple line
+ number blocks within the same section.
+
+1999-03-29 Jason Merrill <jason@yorick.cygnus.com>
+
+ * readelf.c (process_extended_line_op): end_sequence also resets
+ the line number.
+ (display_debug_lines): advance_line takes a signed operand.
+ (read_and_display_attr): Print refs as <%x>, addresses as %#x,
+ others as %d. Handle other location expression attributes.
+ (display_debug_info): Handle nesting. Always print the offset.
+
+1999-03-23 Ian Lance Taylor <ian@zembu.com>
+
+ * objcopy.c (filter_symbols): When checking whether to keep a
+ symbol, check the BFD section symbol for a symbol with
+ BSF_SECTION_SYM set.
+
+1999-03-10 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_dynamic_segment): Print new Solaris dynamic
+ section entries. Correct printing of DT_POSFLAG_1 and DT_FLAGS_1.
+
+1999-03-10 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (request_dump): New function.
+ Removed arbitary limit on the number of sections that can be
+ dumped.
+
+Wed Mar 10 15:10:14 1999 Stan Cox <scox@cygnus.com>
+
+ * dlltool.c (make_one_lib_file): Use %05d to output the stub name so
+ order in the import library is preserved.
+
+1999-02-19 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Fix compile time warings.
+
+1999-02-17 DJ Delorie <dj@cygnus.com>
+
+ * resbin.c (res_to_bin_versioninfo): Instead of entering a value
+ length of zero in a version info string, enter the appropriate
+ length.
+
+Tue Feb 16 16:00:33 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Require autoconf 2.13. Change AM_PROG_INSTALL to
+ AC_PROG_INSTALL. Add comments for AC_DEFINE calls.
+ * acconfig.h: Remove.
+ * aclocal.m4: Rebuild.
+ * configure: Rebuild.
+ * Makefile.in: Rebuild.
+ * config.in: Rebuild.
+
+1999-02-02 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (read_and_display_attr): Add display of basic type
+ encodings.
+ (display_debug_aranges): New function: Display the contents of a
+ .debug_aranges section.
+ (display_debug_info): Dump tags found after compunit entry.
+
+ * binutils.texi: Fixed bug in readelf documentation.
+
+Mon Feb 1 12:38:01 1999 Catherine Moore <clm@cygnus.com>
+
+ * readelf.c (dump_relocations): Handle EM_ARM as REL.
+
+1999-01-29 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (process_symbol_table): Do not produce a histogram of
+ bucket chains if none were found.
+
+1999-01-27 Nick Clifton <nickc@cygnus.com>
+
+ * version.c: Add 1999 copyright.
+
+ * binutils.texi (readelf): Document new command line options
+ --debug-dump and --histogram.
+
+ * readelf.c: Add ability to display contents of some or all of the
+ Dwarf2 debug sections. {Work only partially completed}.
+ (display_debug_section): New function.
+ (display_debug_info): New function.
+ (display_debug_not_supported): New function.
+ (display_debug_line): New function.
+ (display_debug_abbrev): New function.
+ (process_abbrev_section): New function.
+ (read_leb128): New function.
+ (process_extended_line_op): New function.
+ (get_TAG_name): New function.
+ (get_AT_name): New function.
+ (get_FORM_name): New function.
+ (free_abbrevs): New function.
+ (add_abbrev): New function.
+ (add_abbrev_attr): New function.
+ (read_and_display_attr): New function.
+ (display_block): New function.
+
+Thu Jan 14 23:36:11 1999 Jeffrey A Law (law@cygnus.com)
+
+ * coffdump.c (xcalloc): Remove, in libiberty now.
+ * srconv.c (xcalloc): Likewise.
+ * sysdump.c (xcalloc): Likewise.
+
+1999-01-14 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (process_section_headers): Omit trailing space at end
+ of section header contents line.
+
+Wed Dec 16 17:20:05 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * aclocal.m4: Regenerate.
+
+Mon Dec 14 12:55:36 1998 Jim Wilson <wilson@cygnus.com>
+
+ * dllwrap.c: Include bfd.h and bucomm.h. Move getopt.h include
+ after libiberty.h include.
+
+Tue Dec 8 16:29:43 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.1: Fix typo (-d to -D). From Nokubi Hirotaka
+ <hnokubi@yyy.or.jp>.
+
+Sun Dec 6 13:28:09 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * objdump.c (SFILE): Add size field.
+ (objdump_sprintf): Merge both versions into one. Increase buffer
+ size as needed to avoid overflow.
+ (disassemble_bytes): Change buf from 1000 bytes to 50. Change
+ initialization and use of sfile to match changes to
+ objdump_sprintf.
+
+ * strip.1: Fix typo (-V to -v). From Issei Hirayama
+ <iss@mail.wbs.or.jp>.
+
+1998-12-03 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_dynamic_segment): Improve output format for
+ various DT_* values.
+
+1998-12-02 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_mips_specific): Print .conflict section
+ content.
+
+ * readelf.c (process_mips_specific): Print l_flags in liblist in
+ textual form.
+
+1998-11-30 Nick Clifton <nickc@cygnus.com>
+
+ * ar.c (extract_file): Add some paranoia checks for negatively
+ sized files.
+
+Tue Nov 24 09:39:24 1998 Nick Clifton <nickc@cygnus.com>
+
+ * stabs.c (DIR_SEPARATOR): Define as '\\' if WIN32 is defined.
+
+Tue Nov 17 10:25:26 1998 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.in: Regenerate.
+
+Mon Nov 16 19:17:23 1998 Dave Brolley <brolley@cygnus.com>
+
+ * po/binutils.pot: Regenerate.
+
+Mon Nov 16 10:18:53 1998 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.am: Regernated dependencies.
+ * aclocal.m4: Regenerated.
+ * configure: Regenerated.
+
+Sat Nov 14 14:50:56 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * debug.c (debug_name_type): Correct return type from false to
+ DEBUG_TYPE_NULL.
+
+Sat Nov 14 14:48:21 1998 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * objdump.c (disassemble_data): Skip over relocs below start
+ address.
+
+Tue Nov 10 15:31:52 1998 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.am: Add dependency of readelf.c on elf/fr30.h
+ * Makefile.in: Regenerate.
+
+Wed Nov 4 16:25:55 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Add support for the FR30.
+
+Mon Nov 2 14:59:33 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * configure.in: detect cygwin* instead of cygwin32*
+ * configure: regenerate
+
+Fri Oct 30 15:14:49 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * dllwrap.c: change all references to cygwin32_ to cygwin_,
+ change Cygwin target def to CYGWIN.
+
+Wed Oct 28 10:31:19 1998 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (disassemble_data): Replace 'unsigned long' with
+ 'bfd_vma'.
+
+Tue Oct 27 14:39:00 1998 Nick Clifton <nickc@cygnus.com>
+
+ * objdump.c (disassemble_bytes): Applied this patch from Philip
+ Blundell <pb@nexus.co.uk>: Make address variables unsigned to
+ avoid problems when disassembling code at high-bit-set addresses.
+
+Mon Oct 26 14:07:59 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dllwrap.c (strhash): New function.
+ (main): Use it to supply image base if not supplied by user.
+ (program_version): Up to 0.2.4.
+
+Mon Oct 26 14:07:59 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dlltool.c (add_stdcall_alias): New global.
+ (long_options): Add --add-stdcall-alias option.
+ (main): Handle it.
+ (scan_drectve_symbols): Add alias if --add-stdcall-alias is
+ specified.
+ (scan_filtered_symbols): Likewise.
+ (gen_def_file): Output alias for stdcall syms if appropriate.
+
+ * binutils.texi (dlltool): Document --add-stdcall-alias option.
+
+ * dllwrap.c (long_options): Add --add-stdcall-alias option.
+ (main): Handle it.
+
+ * defparse.y (opt_name): Allow "." in name.
+ * dlltool.c (def_name): Set dll_name from NAME entry in def file.
+ (def_library): Set dll_name from LIBRARY entry in def file.
+
+Mon Oct 26 14:07:59 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dllwrap.c (long_options): --implib synonym for --output-lib.
+ (main): Pass --export-all to dlltool only if specified.
+ (program_version): Up to 0.2.3.
+
+Mon Oct 26 14:07:59 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dllwrap.c (mybasename): New function.
+ (main): Run dlltool to create export definition file and import
+ library file if necessary.
+ Change exp_file_name so that it's based on the dll name.
+
+Sun Oct 25 10:37:45 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dlltool.c (scan_all_symbols): Fix patch error.
+
+Fri Oct 16 22:56:20 1998 Felix Lee <flee@cygnus.com>
+
+ * nm.c (display_rel_file): fix "no symbols" messages.
+ * objdump.c (slurp_symtab): ditto.
+ * po/POTFILES.in, po/binutils.pot: rebuilt
+
+Mon Oct 12 14:28:03 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (dump_relocations): Rename field from Value to Info to
+ match name of field in ELF structures.
+
+Thu Oct 8 15:33:08 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * configure.in: call AC_EXEEXT instead of AM_EXEEXT and
+ AM_CYGWIN32.
+ * aclocal.m4: remove local AM_EXEEXT/AM_CYGWIN32 macros.
+ * configure: regenerate
+
+Thu Oct 8 15:33:08 1998 Geoffrey Noer <noer@cygnus.com>
+
+ From Mumit Khan <khan@xraylith.wisc.edu>:
+ * dlltool.c (scan_all_symbols): Don't re-export symbols exported
+ by other DLLs.
+
+Thu Oct 8 15:33:08 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * Makefile.am (BUILD_DLLWRAP): Add.
+ (BUILD_DLLWRAP, DLLWRAP_PROG): Add.
+ (bin_PROGRAMS): Add dllwrap.
+ * Makefile.in: regenerate with automake
+
+ From Mumit Khan <khan@xraylith.wisc.edu>:
+ * dllwrap.c: New file from dllhelpers v0.2.1.
+ (print_version): New function.
+ (long_options): Add --version.
+ (main): Handle.
+ * dyn-string.h, dyn-string.c: New files from egcs-1.1/gcc.
+ * configure.in (BUILD_DLLWRAP): Add.
+ * configure: Regenerate.
+
+Tue Oct 6 18:20:10 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * Makefile.am (windres_SOURCES): Add resres.c.
+ (windres_OBJECTS): Add resres.o.
+ * Makefile.in: regenerate with automake
+
+ From Anders Norlander <anorland@hem2.passagen.se>.
+ * resres.c: New file. Implementation of read_res_file and
+ write_res_file functions for windres.
+ * rcparse.y: Handle CONTROL's with named classes.
+ * resbin.c: Bug in res_to_bin_dialog and bin_to_res_dialog
+ when dialog is extended: The version and signature fields should
+ be reversed (despite what the docs say). Id is 32 bits long in
+ extended dialogs.
+ * resrc.c (write_rc_dialog): properly print controls with named
+ classes.
+ * windres.c (read_res_file, write_res_file): Remove stubs.
+ * resres.c (write_res): Rename RT_ACCELERATORS to RT_ACCELERATOR.
+
+Sun Oct 4 20:34:42 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ From Nokubi Hirotaka <hnokubi@yyy.or.jp>:
+ * objcopy.1: Fix typo in --remove-leading-char docs.
+ * objdump.1: Fix formatting in --stabs docs.
+
+Sat Sep 19 23:33:56 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * rcparse.y (memflags_move): Correct recursion.
+
+1998-09-10 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_symbol_table): Print in histogram how many
+ symbols are covered by the current chain length.
+
+Sun Sep 6 16:15:47 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (process_section_contents): Do not try to dump empty
+ sections.
+
+Sat Sep 5 19:17:10 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dlltool.c (scan_all_symbols): Don't re-export symbols exported
+ by other DLLs.
+
+1998-09-02 14:50 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_dynamic_segment): Print DT_* value only if
+ do_dynamic.
+ (do_histogram): New variable.
+ (options): New long option histogram. Set do_histogram if this
+ option is used.
+ (usage): Document --histogram.
+ (parse_args): Handle 0 return value from getopt_long. Enable
+ do_histogram for -a.
+ (process_symbol_table): Read hash table also if only do_histogram.
+ Add code to print hash table histogram.
+
+1998-08-25 16:45 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_dynamic_segment): Read syminfo section if
+ available.
+ (process_syminfo): New function. Print syminfo information.
+ (process_file): Call process_syminfo and free syminfo data at the end.
+
+Wed Aug 19 16:19:51 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (usage): Add file parameter. Change all callers.
+ (main): Don't treat '?' as a special case in getopt return.
+
+ * binutils.texi (dlltool): Document new options. Add some uses of
+ @var.
+
+Wed Aug 19 16:19:07 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dlltool.c (gen_def_file): Plug memory leak. Don't print
+ demangled name if it is NULL.
+
+ Support for exporting all symbols to an output export def file:
+ * dlltool.c ({export_all_symbols, no_default_excludes,
+ no_default_excludes, excludes}): New file static variables.
+ (struct string_list): Type to hold list of symbols to exclude.
+ (scan_drectve_symbols): Renamed from scan_open_obj_file.
+ (scan_filtered_symbols): New static function.
+ (add_excludes): New static function.
+ (match_exclude): New static function.
+ (set_default_excludes): New static function.
+ (filter_symbols): New static function.
+ (scan_all_symbols): New static function.
+ (scan_open_obj_file): New static function.
+ (usage): Document new options.
+ (long_options): Add new options.
+ (main): Handle new options.
+
+1998-07-31 21:24 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_program_headers): Print p_offset value with
+ six hex digits.
+ (dynamic_segment_mips_val): Add support for DT_MIPS_FLAGS,
+ DT_MIPS_IVERSION, and DT_MIPS_TIME_STAMP.
+ (process_mips_specific): Also print seconds of time stamp.
+
+Fri Jul 31 10:04:23 1998 Catherine Moore <clm@cygnus.com>
+
+ * readelf.c (dump_relocations): EM_ARM uses rela relocs.
+
+1998-07-30 16:25 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (get_dynamic_type): Don't used gettext on the names.
+ Add new DT_* values from Solaris. Don't print nuemric value in
+ case of an unknown entry.
+ (process_dynamic_segment): Handle new DT_* entries. Print numeric
+ values in decimal, not hex.
+
+Fri Jul 24 16:28:57 1998 Jeff Holcomb <jeffh@cygnus.com>
+
+ * readelf.c (get_dynamic_type): Remove empty default from switch
+ statement.
+
+Fri Jul 24 16:28:12 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (install-exec-local): Don't remove the file before
+ checking whether $(bindir) == $(tooldir)/bin. From Maciej
+ W. Rozycki <macro@ds2.pg.gda.pl>.
+ * Makefile.in: Rebuild.
+
+Fri Jul 24 09:38:59 1998 Nick Clifton <nickc@cygnus.com>
+
+ * objcopy.c: Removed spurious inclusion of elf/internal.h and
+ elf-bfd.h.
+
+1998-07-22 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c: Consistantly use elf_ prefix for *_reloc_type
+ functions.
+
+Wed Jul 22 16:29:12 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (dump_relocations): Add dumps of HPPA and ARC
+ relocations.
+
+ (process_relocs): Do not abort if no string table can be found.
+
+1998-07-22 14:58 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c: Remove definition of functions to return relocation
+ symbol strings. They now get implicitly defined when include the
+ system specific ELF header.
+
+1998-07-22 13:51 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c: Before include system specific ELF header define
+ START_RELOC_NUMBERS, RELOC_NUMBER, and END_RELOC_NUMBERS. For now
+ used for ppc, mips, and mn10300.
+
+Wed Jul 22 10:26:32 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (dump_relocations): Display number of unrecognised
+ relocations.
+
+1998-07-21 13:13 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c: Use symbolic names of relocation entries for the various
+ architectures. Correct more layout details.
+ Print names of MIPS specific section types. Print Alpha, ARM, and
+ MIPS relocation type names.
+
+1998-07-20 Vladimir N. Makarov <vmakarov@cygnus.com>
+
+ * objcopy.c (filter_symbols): Add code for strip all symbols case.
+ (copy_objects): Strip all case is now processed also through
+ filter_symbols. No marking symbols used in relocations when strip
+ all symbols case.
+ (copy_section): When strip all symbols case, remove relocations
+ which are not in keep strip specific list.
+ (strip_main): Remove guard `strip_specific_list == NULL' for
+ setting up strip all symbols by default.
+
+Mon Jul 20 12:51:16 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * addr2line.c (find_address_in_section): Only consider a section
+ if the pc value is completely contained within it.
+ (translate_addresses): Don't crash if functionname or filename are
+ null.
+
+1998-07-20 07:45 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c (process_symbol_table): Fix little alignment problem
+ in printed table header.
+
+1998-07-20 07:14 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c: Correct reading of .dynamic section.
+ (dynamic_section): Now a global variable.
+ (process_mips_fpe_exception, process_mips_specific,
+ process_arch_specific): New functions.
+ (get_file_header): Call process_arch_specific.
+
+1998-07-19 15:15 Ulrich Drepper <drepper@cygnus.com>
+
+ * readelf.c: Fix several versioning related bugs. Produce nicer
+ output.
+ Add support for processor specific information on MIPS.
+
+Fri Jul 10 15:57:58 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Switch prototypes from unsigned short to unsigned
+ int.
+
+Fri Jul 10 16:17:50 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ From Christian Holland <CHolland@de.lucent.com>:
+ * ieee.c (parse_ieee): Initialize info.global_vars and
+ info.global_types.
+ (parse_ieee_atn): Ignore register lifetime information reportedly
+ emitted by MRI compiler.
+
+Thu Jul 9 13:08:01 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (MAINTAINERCLEANFILES): Define.
+ * Makefile.in: Rebuild.
+
+Tue Jul 7 21:48:54 1998 Jeffrey A Law (law@cygnus.com)
+
+ * readelf.c (byte_get): Use PARAMS in prototype.
+ (error): Make it work with non-ANSI compilers.
+ (warn): Likewise.
+ (get_ver_flags): Don't use an ANSI prototype in the definition.
+
+Tue Jul 7 13:26:13 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (filter_bytes): Set size correctly if the size of the
+ section is not an even multiple of the interleave. Based on patch
+ from Brion Stone <Brion.Stone@attws.com>.
+
+Thu Jul 2 14:01:34 1998 Klaus Kaempf <kkaempf@rmi.de>
+
+ * configure.com: Add vax/vms support.
+ * makefile.vms-in: Renamed from makefile.vms. Add substitutions
+ now done by configure.com.
+
+Wed Jul 1 20:43:52 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (parse_stab_range_type): Handle 4 and 8 byte signed
+ integers with real upper bounds. Handle a lower bound one larger
+ than the upper bound as a signed integer. Handle 8 byte signed
+ integers.
+ (stab_demangle_template): Optionally return the demangled name of
+ the template.
+ (stab_demangle_qualified): Treat a template name as a tagged
+ type.
+ (stab_demangle_fund_type): Likewise.
+
+Wed Jul 1 16:29:50 1998 Nick Clifton <nickc@cygnus.com>
+
+ * objcopy.c: Minor formatting improvements.
+ * readelf.c: Minor output formatting improvement.
+
+Wed Jul 1 14:23:48 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * rclex.l: Add casts and change types to avoid warnings.
+ * rcparse.y: Likewise.
+ * resbin.c: Likewise.
+ * rescoff.c: Likewise.
+ * resrc.c: Likewise.
+
+ * Makefile.am: Rebuild dependencies.
+ (HFILES): Remove readelf.h.
+ * Makefile.in: Rebuild.
+
+ Based on patches from Andrew Kozin
+ <Andrew.Kozin@p14.f960.n5020.z2.fidonet.org>:
+ * winduni.h: New file, from windres.h.
+ * winduni.c: New file, from windres.c.
+ * windres.c: Move Unicode functions into winduni.c.
+ * windres.h: Move Unicode declarations into winduni.h. Include
+ winduni.h.
+ (RT_ACCELERATOR): Rename from RT_ACCELERATORS to match Windows
+ macro. Change all uses.
+ (RT_PLUGPLAY, RT_VXD): Correct values.
+ * Makefile.am (HFILES): Add windres.h.
+ (CFILES): Add winduni.c.
+ (windres_SOURCES): Add winduni.c.
+
+Mon Jun 29 17:01:21 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Use BFD Internal and External Elf structures.
+ * readelf.h: Removed - no longer needed.
+ * Makefile.in: Remove readelf.c's dependency upon readelf.h.
+
+1998-06-26 Vladimir N. Makarov <vmakarov@cygnus.com>
+
+ * objcopy.c (strip_main): keep_specific_list == NULL as additional
+ condition to set up strip all symbols by default.
+ (copy_archive): don't change archive when error in object files of
+ the archive.
+
+Wed Jun 24 17:53:47 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (parse_number): Sign extend negative values correctly if
+ bfd_vma is larger than unsigned long.
+
+Tue Jun 23 14:55:05 1998 Mike Stump <mrs@wrs.com>
+
+ * Makefile.am (install-exec-local): Don't let EXEEXT interfere
+ with the program transform name.
+ * Makefile.in: Rebuild.
+
+Tue Jun 23 11:08:53 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Rewrite to use fopen/fread ratehr than mmap.
+
+ Add --section-headers command line switch, which is an alias for
+ --sections.
+
+ Incorporate improvemnts made by Andreas Schwab
+ <schwab@issan.informatik.uni-dortmund.de> including output
+ formatting and version info display.
+
+ * binutils.texi: Document --section-headers switch to readelf.
+
+Mon Jun 22 18:28:19 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * readelf.c: Include bfd.h and bucomm.h before system header
+ files.
+ (parse_args): Change type of c from char to int.
+
+Sun Jun 14 14:26:28 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c (usage): Write to stdout, not stderr.
+
+Fri Jun 12 13:33:51 1998 Tom Tromey <tromey@cygnus.com>
+
+ * po/Make-in (all-yes): Depend on .pot file if maintainer mode
+ enabled.
+ ($(PACKAGE).pot): Unconditionally depend on POTFILES.
+
+Fri Jun 12 16:06:15 1998 Michael Meissner <meissner@cygnus.com>
+
+ * readelf.c (get_ppc_rel_type): New PowerPC support.
+ (dump_relocations): PowerPC uses RELA relocations.
+ (get_machine_name): Spell PowerPC correctly.
+ (get_file_type): Change unsigned short parameter to unsigned.
+ (get_machine_name): Ditto.
+ (get_machine_data): Return whether big endian or little endian.
+ (get_machine_flags): Interpret PowerPC, M32R, and MIPS flags.
+ (process_elf_header): Print endian-ess. Convert all numeric
+ formats to long or unsigned long. Print out machine specific flag
+ bits.
+ (process_section_headers): Increase name by 3 columns and decrease
+ type by the same so that .gcc_except_table fits in the space.
+
+ * readelf.h: Include elf/ppc.h, elf/mips.h, and elf/m32r.h to get
+ machine specific flag bits.
+
+Thu Jun 11 17:54:26 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: Remove extraneous #includes. Fix warnings produced
+ by -Wall when compiling under Linux.
+
+ * Makefile.am (readelf_LDADD): Add $(LIBIBERTY).
+
+Thu Jun 11 18:30:20 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * stabs.c (struct stab_handle): Add self_crossref field.
+ (parse_stab_string): If a tag is a cross reference to itself,
+ don't define it in the tags list.
+ (parse_stab_type): Set info->self_crossref.
+
+ * debug.c (struct debug_type_real_list): Define.
+ (debug_get_real_type): Add list parameter. Change all callers.
+ Check for circularity to avoid crashing when it occurs.
+
+Thu Jun 11 14:48:32 1998 Nick Clifton <nickc@cygnus.com>
+
+ * readelf.c: New file: Display contents of ELF format file.
+ * readelf.h: New file: Header file for readelf.c
+ * Makefile.am: Add rules to build readelf.
+ * Makefile.in: Rebuilt.
+ * binutils.texi: Document readelf.
+ * NEWS: Mention inclusion of readelf into binutils.
+ * po/POTFILES.in; Rebuilt.
+
+Fri Jun 5 18:43:40 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * objcopy.c (setup_section): Adjust the section size if copy_byte
+ is >= 0.
+ (copy_section): Do not call bfd_set_section_size.
+
+Thu Jun 4 09:12:27 1998 Nick Clifton <nickc@cygnus.com>
+
+ * objcopy.c (copy_usage): Add missing \n\ from help description.
+
+Wed Jun 3 19:31:33 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (YACC): Correct bison -L option.
+ * Makefile.in: Rebuild.
+
+ * binutils.texi, objdump.1: Document -p/--private-headers.
+
+Wed Jun 3 12:09:40 1998 Nick Clifton <nickc@cygnus.com>
+
+ * objcopy.c: Add new command line options: --change-section-lma
+ and --change-section-vma. Rename old command line option
+ --adjust-section-vma to --change-section-address. Rename
+ --adjust-vma to --change-addresses and --adjust-start to
+ --change-start. Provide aliases to support the old versions of
+ these command line options.
+
+ Change the names of macros and enum elements to upper case to
+ match the GNU coding standard.
+
+ Replace calls to fprintf (stderr,...) with calls to fatal () or
+ non_fatal () as appropriate.
+
+ * objcopy.1: Document command line option changes.
+ * binutils.texi: Document command line option changes.
+
+ * bucomm.h: New exported funtion from bucomm.c: non_fatal().
+ * bucomm.c (non_fatal): New exported function. Just like fatal()
+ except that it returns rather than calling xexit().
+
+ (bfd_check_format_matches): Call fatal() rather than bfd_fatal().
+
+ (check_matching_formats): Fix C formating.
+
+ (parse_vma): Call fatal().
+
+Mon Jun 1 18:26:40 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ From Yuli Barcohen <yuli.barcohen@telrad.co.il>:
+ * debug.c (debug_type_samep): Avoid endless loops comparing
+ function and method parameter types.
+
+Fri May 22 14:02:42 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (dump_iat): Comment out; not used.
+ (display): Rename from tell. Change all callers.
+
+Thu May 14 14:00:56 1998 Nick Clifton <nickc@cygnus.com>
+
+ * dlltool.c: Add support for Thumb DLLs. Add support for
+ interworking between ARM and Thumb programs and DLLs. Tidy the
+ code.
+
+ * binutils.texi: Document dlltool.
+
+ * configure: Build dlltool for thumb-pe targets.
+
+ * version.c (print_version): Include 1998 in copyright strings.
+
+ * stabs.c (parse_stab): Support Win32 style directory separators.
+
+Sun May 10 22:34:44 1998 Jeffrey A Law (law@cygnus.com)
+
+ * po/Make-in (install-info): New target.
+
+Fri May 8 10:33:13 1998 Nick Clifton <nickc@cygnus.com>
+
+ * ar.c (usage): Extend information provided about command line
+ options.
+
+Wed May 6 15:28:51 1998 Klaus Kaempf <kkaempf@progis.de>
+
+ * makefile.vms: Run dec c with /nodebug. Pass CC value when
+ calling make.
+
+Tue May 5 15:19:00 1998 Nick Clifton <nickc@cygnus.com>
+
+ * configure: Build dlltool for thumb-pe target.
+ * configure.in: Build dlltool for thumb-pe target.
+
+Sun May 3 22:04:49 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (EXTRA_PROGRAMS): Change $(SRCONV_PROG) to sysconf
+ sysdump coffdump to avoid extra $(EXEEXT).
+ * Makefile.in: Rebuild.
+
+Wed Apr 29 22:22:55 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * configure.in: Stop appending EXEEXT to the end of
+ SRCONV_PROG (wrong because that variable may contain multiple
+ programs)
+ * Makefile.am: instead, add EXEEXTs to each SRCONV_PROG
+ program
+ * Makefile.in: regenerate
+ * configure: regenerate
+
+Tue Apr 28 19:14:34 1998 Tom Tromey <tromey@cygnus.com>
+
+ * addr2line.c (main): Conditionally call setlocale.
+ * windres.c (main): Likewise.
+ * sysdump.c (main): Likewise.
+ * strings.c (main): Likewise.
+ * srconv.c (main): Likewise.
+ * size.c (main): Likewise.
+ * objdump.c (main): Likewise.
+ * objcopy.c (main): Likewise.
+ * nm.c (main): Likewise.
+ * nlmconv.c (main): Likewise.
+ * dlltool.c (main): Likewise.
+ * coffdump.c (main): Likewise.
+ * ar.c (main): Likewise.
+ * bucomm.h: Include <locale.h> if HAVE_LOCALE_H.
+ (LC_MESSAGES): Now can be defined even when ENABLE_NLS.
+
+Tue Apr 28 10:33:07 1998 Bill Moyer <ttk@cygnus.com>
+
+ Add support for IMPORTS:
+ * defparse.y (impline): Add IMPORTS syntaxes.
+ * dlltool.c (ifunctype, iheadtype): New typedefs.
+ (import_list): New static variable.
+ (append_import): New static function.
+ (def_import): Add an entry to import_list.
+ (generate_idata_ofile): New static function.
+ (gen_exp_file): Call generate_idata_ofile.
+ * dlltool.h (def_import): Update declaration.
+
+Mon Apr 27 16:39:22 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Change version number to 2.9.4
+ * configure: Rebuild.
+
+Wed Apr 22 16:00:35 1998 Tom Tromey <tromey@cygnus.com>
+
+ * po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).
+
+Wed Apr 22 00:33:56 1998 Tom Tromey <tromey@scribbles.cygnus.com>
+
+ * Makefile.am (INCLUDES): Search intl dirs for headers; define
+ LOCALEDIR.
+ * addr2line.c (main): Call setlocale, bindtextdomain, textdomain.
+ * ar.c (main): Likewise.
+ * coffdump.c (main): Likewise.
+ * dlltool.c (main): Likewise.
+ * nlmconv.c (main): Likewise.
+ * nm.c (main): Likewise.
+ * objcopy.c (main): Likewise.
+ * objdump.c (main): Likewise.
+ * size.c (main): Likewise.
+ * srconv.c (main): Likewise.
+ * strings.c (main): Likewise.
+ * sysdump.c (main): Likewise.
+ * windres.c (main): Likewise.
+
+Tue Apr 21 22:13:08 1998 Tom Tromey <tromey@scribbles.cygnus.com>
+
+ * Many files: Added gettext invocations around user-visible
+ strings.
+ * bucomm.h: Added gettext-related includes and defines.
+ * acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY,
+ HAVE_LC_MESSAGES): Define.
+ * configure.in: Call CY_GNU_GETTEXT. Create po/Makefile.in and
+ po/Makefile. Use AM_PROG_LEX.
+ * Makefile.am (SUBDIRS): New macro.
+ (POTFILES): Likewise.
+ (po/POTFILES.in): New target.
+ (LDADD): Added INTLLIBS.
+ (objdump_LDADD): Likewise.
+ (c__filt_LDADD): Likewise.
+ (ar_LDADD): Likewise.
+ (ranlib_LDADD): Likewise.
+ (dlltool_LDADD): Likewise.
+ (windres_LDADD): Likewise.
+ * po/Make-in, po/POTFILES.in, po/binutils.pot: New files.
+
+Tue Apr 21 16:07:18 1998 Stanislav Brabec <utx@k332.feld.cvut.cz>
+
+ * objcopy.c (preserve_dates): New file static variable.
+ (smart_rename): If preserve_dates, call set_times when copying.
+ (strip_main): Remove preserve_dates local variable.
+ (copy_main): Likewise.
+
+Tue Apr 7 15:41:15 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (DISTSTUFF): Add defparse.h, defparse.c, rclex.c,
+ rcparse.h, and rcparse.c
+ * Makefile.in: Rebuild.
+
+Mon Apr 6 16:24:35 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (PROGS): Move $(ADDR2LINE_PROG) to end, so that
+ Makefile.in doesn't have an empty continuation line.
+ (bin_PROGRAMS): Likewise.
+ * Makefile.in: Rebuild.
+
+Fri Apr 3 14:48:42 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (DISTCLEANFILES): Add site.exp and site.bak.
+ (MOSTLYCLEANFILES): Add binutils.log, binutils.sum, and abcdefgh*.
+ (mostlyclean-local): New target.
+ * Makefile.in: Rebuild.
+
+Wed Apr 1 15:54:16 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ From Zack Weinberg <zack@rabi.phys.columbia.edu> and H.J. Lu
+ <hjl@gnu.org>:
+ * ar.c (usage): Mention S modifier.
+ (main): Add S modifier.
+ * ar.1, binutils.texi: Document S modifier.
+
+Wed Apr 1 13:11:23 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * binutils.texi: Use @itemx for a secondary item in a table.
+
+Tue Mar 31 18:44:13 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * dep-in.sed: Add rule to remove @OBJDIR@.
+ * Makefile.am (dep.sed): Substitute for @OBJDIR@.
+ * Makefile.in: Rebuild.
+
+Mon Mar 30 12:47:18 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Set version to 2.9.1.
+ * configure: Rebuild.
+
+ * Branched binutils 2.9.
+
+ * Makefile.am (DISTCLEANFILES): Remove defparse.h, arparse.h,
+ rcparse.h, and nlmheader.h.
+ * Makefile.in: Rebuild.
+
+Sat Mar 28 17:39:27 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (MOSTLYCLEANFILES): Define.
+ * Makefile.in: Rebuild.
+
+ Fix some gcc -Wall warnings:
+ * nlmconv.c (main): Add casts to avoid warnings.
+ (alpha_mangle_relocs): Likewise.
+ * objdump.c (dump_section_stabs): Likewise.
+ * size.c (print_sysv_format): Likewise.
+ * srcconv.c (wr_ob): Likewise.
+ * wrstabs.c (stab_modify_type): Likewise.
+ (stab_variable): Likewise.
+ * nlmconv.c (main): Initialize variables to avoid warnings.
+ * nm.c (sort_symbols_by_size): Likewise.
+ * objdump.c (disassemble_bytes): Likewise.
+ * wrstabs.c (stab_end_class_type): Likewise.
+ * coffgrok.c (do_sections_p2): Change j to unsigned int.
+ (do_lines): Change l to unsigned int.
+ * nlmheader.y (yylex): Change i to unsigned int.
+ * nm.c (print_symbol): Change j to long.
+ * size.c (lprint_number): Comment out.
+ * srconv.c (wr_ob): Change i to bfd_size_type.
+ * sysdump.c (unit_info_list): Comment out.
+ (object_body_list, program_structure, debug_list): Likewise.
+ * sysinfo.y (yyerror): Return value.
+
+Thu Mar 26 17:06:51 1998 Richard Henderson <rth@cygnus.com>
+
+ * defparse.y (explist): Allow epsilon.
+ Suggestion from Jonathan-Harris@psion.com.
+
+Thu Mar 26 16:59:09 1998 Richard Henderson <rth@cygnus.com>
+
+ * coffgrok.c (do_sections_p1): Use the section's lma instead of vma
+ for the benefit of prom loaders.
+
+Wed Mar 25 13:05:39 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patch from H.J. Lu <hjl@gnu.org>:
+ * Makefile.am (DISTSTUFF): New variable.
+ (diststuff): New target.
+ (DISTCLEANFILES): New variable.
+ * Makefile.in: Rebuild.
+
+Tue Mar 24 19:33:08 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * rclex.l: Accept { and } as synonyms for BEGIN and END.
+
+Fri Mar 20 19:18:08 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * aclocal.m4, configure: Rebuild with libtool 1.2.
+
+Tue Feb 24 13:07:50 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * objdump.c (disassemble_data): Delete "++place" after call to
+ find_symbol_for_address. Set disasm_info.symbols to array of
+ symbols at the current address.
+
+Wed Feb 18 23:39:46 1998 Richard Henderson <rth@cygnus.com>
+
+ * Makefile.am (install-exec-local): Install properly when ln
+ fails or tooldir == prefix.
+
+Tue Feb 17 18:40:55 1998 Richard Henderson <rth@cygnus.com>
+
+ * objcopy.c (compare_section_lma): Rename from _vma.
+ (copy_object): Gap fill based on LMA not VMA.
+ * binutils.texi: Update and clarify.
+ * objcopy.1: Likewise.
+
+Tue Feb 17 20:34:11 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * dlltool.c (gen_exp_file): Generate _imp__%s as well as __imp_%s,
+ for Microsoft compatibility.
+ (make_one_lib_file): Likewise.
+
+ * dlltool.c (make_one_lib_file): Don't add 1 to hint.
+
+Fri Feb 13 16:37:44 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Define.
+ * configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.
+
+Thu Feb 12 14:13:46 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * deflex.l: Accept '?' in symbol names, for VC++ mangled names.
+ From Mikey <jeffdb@netzone.com>.
+
+ * addr2line.c (usage): Update bug-gnu-utils address.
+ * ar.c (usage): Likewise.
+ * nlmconv.c (show_usage): Likewise.
+ * nm.c (usage): Likewise.
+ * objcopy.c (copy_usage): Likewise.
+ (strip_usage): Likewise.
+ * objdump.c (usage): Likewise.
+ * size.c (usage): Likewise.
+ * strings.c (usage): Likewise.
+ * windres.c (usage): Likewise.
+ * binutils.texi (Bug Reporting): Likewise.
+
+Sat Feb 7 15:36:24 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure, aclocal.m4: Rebuild with new libtool.
+
+Thu Feb 5 12:21:13 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure, Makefile.in, aclocal.m4: Rebuild with new libtool.
+
+Fri Jan 30 19:16:28 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * Makefile.am (CC_FOR_TARGET,nlmcomv.o): Change program_transform_name
+ to transform.
+ * Makefile.in: Regenerate.
+
+Thu Jan 29 16:24:04 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * dlltool.c: Define exit status macros for _WIN32 but not
+ __CYGWIN32__.
+ (gen_lib_file): Check for exit status of unlink.
+ * resrc.c: Define popen and pclose if _WIN32 but not
+ __CYGWIN32__.
+
+Wed Jan 28 17:45:46 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Remove vfork check.
+ * nlmconv.c: Never include vfork.h.
+ * aclocal.m4, configure, Makefile.in, config.in: Rebuild.
+
+Wed Jan 28 17:43:02 1998 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>
+
+ * objcopy.c (copy_archive): Only pass one argument to mkdir if
+ _WIN32 but not __CYGWIN32__.
+ (smart_rename): Add code for _WIN32 (not __CYGWIN32__), to cope
+ with different rename behaviour and lack of chown.
+
+ * configure.in: Check for mingw32 when deciding whether to build
+ dlltool.
+ * dlltool.c: Never include vfork.h.
+ (run): Use pexecute rather than vfork.
+ (gen_lib_file): Check for errors from bfd_set_archive_head and
+ bfd_close. Close all the BFDs in the archive before deleting the
+ temporary files.
+
+Thu Jan 22 16:22:55 1998 Fred Fish <fnf@cygnus.com>
+
+ * objdump.c (disassemble_bytes): Add flag INSN_HAS_RELOC to tell
+ disassembly function there is a reloc on this line.
+
+Wed Jan 14 15:29:43 1998 Richard Henderson <rth@cygnus.com>
+
+ * srconv.c (sh, h8300): Delete variables.
+ (addrsize, toolname, rnames): New variables.
+ (writeINT): Use addrsize.
+ (wr_un): Use toolname.
+ (wr_hd): Set up addrsize et al properly for h8300[hs].
+ (walk_tree_symbol): Zero dsy. Use rnames.
+ (wr_un, wr_hd, wr_ob, wr_du): Use proper bfd access macros.
+ * sysdump.c (sh, h8300): Delete variables.
+ (addrsize): New variable.
+ (getINT): Use it.
+ (getone): Initialize it.
+ (getBITS): Range check on MAX.
+
+For older changes see ChangeLog-9197
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/contrib/binutils/binutils/MAINTAINERS b/contrib/binutils/binutils/MAINTAINERS
new file mode 100644
index 0000000..427dd3a
--- /dev/null
+++ b/contrib/binutils/binutils/MAINTAINERS
@@ -0,0 +1,78 @@
+ ========= Binutils Maintainers =========
+
+This is the list of individuals responsible for maintenance and update
+of the "binutils" module, which includes the bfd, binutils, include,
+gas, gprof, ld, and opcodes subdirectories. The home page for binutils
+is http://sources.redhat.com/binutils/ and patches should be sent to
+binutils@sources.redhat.com with "[patch]" as part of the subject.
+
+ --------- Blanket Write Privs ---------
+
+Nick Clifton <nickc@redhat.com> (head maintainer)
+Richard Henderson <rth@redhat.com>
+Ian Taylor <ian@zembu.com>
+Jeff Law <law@redhat.com>
+Jim Wilson <wilson@redhat.com>
+DJ Delorie <dj@redhat.com>
+Alan Modra <alan@linuxcare.com.au>
+Michael Meissner <meissner@redhat.com>
+
+ --------- Maintainers ---------
+
+Maintainers are individuals who are responsible for, and have permission
+to check in changes in, certain subsets of the code. Note that
+maintainers still need approval to check in changes outside of the
+immediate domain that they maintain.
+
+If there is no maintainer for a given domain then the responsibility
+falls to the head maintainer (above). If there are several maintainers
+for a given domain then responsibility falls to the first maintainer.
+The first maintainer is free to devolve that responsibility among the
+other maintainers.
+
+ARM Nick Clifton <nickc@redhat.com>
+AVR Denis Chertykov <denisc@overta.ru>
+CRIS Hans-Peter Nilsson <hp@axis.com>
+HPPA elf32 Alan Modra <alan@linuxcare.com.au>
+IA64 Jim Wilson <wilson@redhat.com>
+i860 Jason Eckhardt <jle@redhat.com>
+ix86 Alan Modra <alan@linuxcare.com.au>
+ix86 COFF,PE DJ Delorie <dj@redhat.com>
+ix86 H.J.Lu <hjl@gnu.org>
+ix86 INTEL MODE Diego Novillo <dnovillo@redhat.com>
+MN10300 Eric Christopher <echristo@redhat.com>
+MIPS Ulf Carlsson <ulfc@calypso.engr.sgi.com>
+PPC Geoff Keating <geoffk@redhat.com>
+SH Jörn Rennecke <amylaar@redhat.com>
+SH Hans-Peter Nilsson <hp@bitrange.com>
+SPARC Jakub Jelinek <jakub@redhat.com>
+68HC11 68HC12 Stephane Carrez <Stephane.Carrez@worldnet.fr>
+DWARF2 Jason Merrill <jason@redhat.com>
+x86_64 Jan Hubicka <jh@suse.cz>
+x86_64 Andreas Jaeger <aj@suse.de>
+
+ --------- 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.]
diff --git a/contrib/binutils/binutils/Makefile.am b/contrib/binutils/binutils/Makefile.am
index a6eb22a..1ddf2f7 100644
--- a/contrib/binutils/binutils/Makefile.am
+++ b/contrib/binutils/binutils/Makefile.am
@@ -19,6 +19,9 @@ YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bis
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
@@ -168,6 +171,9 @@ nm_new_SOURCES = nm.c $(BULIBS)
objdump_SOURCES = objdump.c prdbg.c $(DEBUG_SRCS) $(BULIBS)
objdump_LDADD = $(OPCODES) $(BFDLIB) $(LIBIBERTY) $(INTLLIBS)
+objdump.o:objdump.c
+ $(COMPILE) -c $(OBJDUMP_DEFS) $(srcdir)/objdump.c
+
underscore.c: stamp-under ; @true
stamp-under: Makefile
@@ -284,8 +290,13 @@ DISTCLEANFILES = stamp-under sysinfo underscore.c sysroff.c sysroff.h \
DEP: dep.sed $(CFILES) $(HFILES) $(GENERATED_CFILES) $(GENERATED_HFILES) config.h
rm -f DEP1
$(MAKE) MKDEP="$(MKDEP)" DEP1
- sed -f dep.sed < DEP1 > $@
- echo '# IF YOU PUT ANYTHING HERE IT WILL GO AWAY' >> $@
+ 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
@@ -339,7 +350,7 @@ MOSTLYCLEANFILES = sysinfo $(DEMANGLER_NAME).1 binutils.log binutils.sum \
mostlyclean-local:
-rm -rf tmpdir
-CLEANFILES = dep.sed DEP DEP1 DEP2
+CLEANFILES = dep.sed DEP DEPA DEP1 DEP2
.PHONY: install-exec-local
@@ -374,13 +385,13 @@ addr2line.o: addr2line.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
ar.o: ar.c ../bfd/bfd.h $(INCDIR)/ansidecl.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
+ arsup.h $(INCDIR)/filenames.h
arsup.o: arsup.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
arsup.h $(INCDIR)/libiberty.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
- $(INCDIR)/fopen-same.h
+ $(INCDIR)/fopen-same.h $(INCDIR)/filenames.h
bucomm.o: bucomm.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/libiberty.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
- $(INCDIR)/fopen-same.h
+ $(INCDIR)/fopen-same.h $(INCDIR)/filenames.h
coffdump.o: coffdump.c coffgrok.h bucomm.h config.h \
$(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h
coffgrok.o: coffgrok.c bucomm.h config.h $(INCDIR)/bin-bugs.h \
@@ -391,13 +402,13 @@ debug.o: debug.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/libiberty.h debug.h
dlltool.o: dlltool.c ../bfd/bfd.h $(INCDIR)/ansidecl.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)/fopen-same.h $(INCDIR)/getopt.h $(INCDIR)/demangle.h \
+ $(INCDIR)/dyn-string.h dlltool.h
filemode.o: filemode.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h
ieee.o: ieee.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/ieee.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
- $(INCDIR)/libiberty.h debug.h budbg.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
@@ -408,13 +419,14 @@ nlmconv.o: nlmconv.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h nlmconv.h
nm.o: nm.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/progress.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ranlib.h \
- $(INCDIR)/demangle.h $(INCDIR)/libiberty.h
+ $(INCDIR)/getopt.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ranlib.h $(INCDIR)/demangle.h $(INCDIR)/libiberty.h
not-ranlib.o: not-ranlib.c
not-strip.o: not-strip.c
objcopy.o: objcopy.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/progress.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
- $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h budbg.h
+ $(INCDIR)/fopen-same.h $(INCDIR)/getopt.h $(INCDIR)/libiberty.h \
+ budbg.h $(INCDIR)/filenames.h
objdump.o: objdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/getopt.h $(INCDIR)/progress.h bucomm.h config.h \
$(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/dis-asm.h \
@@ -479,14 +491,15 @@ readelf.o: readelf.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/elf/d30v.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/mn10200.h \
$(INCDIR)/elf/mn10300.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/arc.h \
$(INCDIR)/elf/fr30.h $(INCDIR)/elf/mcore.h $(INCDIR)/elf/i960.h \
- $(INCDIR)/elf/pj.h $(INCDIR)/elf/avr.h bucomm.h config.h \
- $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h
+ $(INCDIR)/elf/pj.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/ia64.h \
+ $(INCDIR)/elf/cris.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
+ $(INCDIR)/fopen-same.h $(INCDIR)/getopt.h
resres.o: resres.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
$(INCDIR)/libiberty.h windres.h winduni.h
dllwrap.o: dllwrap.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/libiberty.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
- $(INCDIR)/fopen-same.h $(INCDIR)/dyn-string.h
+ $(INCDIR)/fopen-same.h $(INCDIR)/getopt.h $(INCDIR)/dyn-string.h
rename.o: rename.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h
underscore.o: underscore.c
diff --git a/contrib/binutils/binutils/Makefile.in b/contrib/binutils/binutils/Makefile.in
index f4178de..1b2a296 100644
--- a/contrib/binutils/binutils/Makefile.in
+++ b/contrib/binutils/binutils/Makefile.in
@@ -74,11 +74,15 @@ 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@
EXEEXT = @EXEEXT@
+GCJ = @GCJ@
+GCJFLAGS = @GCJFLAGS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GT_NO = @GT_NO@
@@ -96,10 +100,13 @@ 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@
UNDERSCORE = @UNDERSCORE@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
@@ -121,6 +128,9 @@ YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bis
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
@@ -151,7 +161,8 @@ DLLWRAP_PROG = dllwrap
SRCONV_PROG = srconv$(EXEEXT) sysdump$(EXEEXT) coffdump$(EXEEXT)
-man_MANS = ar.1 nm.1 objdump.1 ranlib.1 size.1 strings.1 strip.1 objcopy.1 addr2line.1 nlmconv.1 $(DEMANGLER_NAME).1
+man_MANS = ar.1 nm.1 objdump.1 ranlib.1 size.1 strings.1 strip.1 objcopy.1 \
+ addr2line.1 nlmconv.1 $(DEMANGLER_NAME).1
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@
@@ -173,15 +184,24 @@ 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\""
-HFILES = arsup.h bucomm.h budbg.h coffgrok.h debug.h nlmconv.h dlltool.h windres.h winduni.h
+HFILES = arsup.h bucomm.h budbg.h coffgrok.h debug.h nlmconv.h dlltool.h \
+ windres.h winduni.h
GENERATED_HFILES = arparse.h sysroff.h sysinfo.h defparse.h rcparse.h
-CFILES = addr2line.c ar.c arsup.c bucomm.c coffdump.c coffgrok.c debug.c dlltool.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 size.c srconv.c stabs.c strings.c sysdump.c version.c wrstabs.c windres.c resrc.c rescoff.c resbin.c winduni.c readelf.c resres.c dllwrap.c rename.c
+CFILES = addr2line.c ar.c arsup.c bucomm.c coffdump.c coffgrok.c debug.c \
+ dlltool.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 size.c srconv.c \
+ stabs.c strings.c sysdump.c version.c wrstabs.c \
+ windres.c resrc.c rescoff.c resbin.c winduni.c readelf.c \
+ resres.c dllwrap.c rename.c
-GENERATED_CFILES = underscore.c arparse.c arlex.c sysroff.c sysinfo.c syslex.c defparse.c deflex.c nlmheader.c rcparse.c rclex.c
+GENERATED_CFILES = \
+ underscore.c 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
@@ -198,12 +218,29 @@ LIBIBERTY = ../libiberty/libiberty.a
POTFILES = $(CFILES) $(DEBUG_SRCS) $(HFILES)
-EXPECT = `if [ -f $$r/../expect/expect ] ; then echo $$r/../expect/expect ; else echo expect ; fi`
+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`
+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`
+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`
info_TEXINFOS = binutils.texi
@@ -248,25 +285,29 @@ 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_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)
-DISTSTUFF = 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 = 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 = stamp-under sysinfo underscore.c sysroff.c sysroff.h site.exp site.bak
+DISTCLEANFILES = stamp-under sysinfo underscore.c sysroff.c sysroff.h \
+ site.exp site.bak
MAINTAINERCLEANFILES = config.texi
-MOSTLYCLEANFILES = sysinfo $(DEMANGLER_NAME).1 binutils.log binutils.sum abcdefgh*
+MOSTLYCLEANFILES = sysinfo $(DEMANGLER_NAME).1 binutils.log binutils.sum \
+ abcdefgh*
-CLEANFILES = dep.sed DEP DEP1 DEP2
+CLEANFILES = dep.sed DEP DEPA DEP1 DEP2
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
CONFIG_HEADER = config.h
@@ -283,72 +324,88 @@ DEFS = @DEFS@ -I. -I$(srcdir) -I.
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
-nlmconv_OBJECTS = nlmconv.o nlmheader.o bucomm.o version.o filemode.o
+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.o coffgrok.o bucomm.o version.o filemode.o
+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.o bucomm.o version.o filemode.o
+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.o coffgrok.o bucomm.o version.o filemode.o
+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.o defparse.o deflex.o bucomm.o version.o \
-filemode.o
+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.o resrc.o rescoff.o resbin.o rcparse.o \
-rclex.o winduni.o resres.o bucomm.o version.o filemode.o
+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.o version.o
+dllwrap_OBJECTS = dllwrap.$(OBJEXT) version.$(OBJEXT)
dllwrap_DEPENDENCIES = ../libiberty/libiberty.a
dllwrap_LDFLAGS =
-size_OBJECTS = size.o bucomm.o version.o filemode.o
+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.o prdbg.o rddbg.o debug.o stabs.o ieee.o \
-rdcoff.o bucomm.o version.o filemode.o
+objdump_OBJECTS = objdump.$(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.o arlex.o ar.o not-ranlib.o arsup.o rename.o \
-bucomm.o version.o filemode.o
+ar_OBJECTS = arparse.$(OBJEXT) arlex.$(OBJEXT) ar.$(OBJEXT) \
+not-ranlib.$(OBJEXT) arsup.$(OBJEXT) rename.$(OBJEXT) bucomm.$(OBJEXT) \
+version.$(OBJEXT) filemode.$(OBJEXT)
ar_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a
ar_LDFLAGS =
-strings_OBJECTS = strings.o bucomm.o version.o filemode.o
+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.o is-ranlib.o arparse.o arlex.o arsup.o rename.o \
-bucomm.o version.o filemode.o
+ranlib_OBJECTS = ar.$(OBJEXT) is-ranlib.$(OBJEXT) arparse.$(OBJEXT) \
+arlex.$(OBJEXT) arsup.$(OBJEXT) rename.$(OBJEXT) bucomm.$(OBJEXT) \
+version.$(OBJEXT) filemode.$(OBJEXT)
ranlib_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a
ranlib_LDFLAGS =
-objcopy_OBJECTS = objcopy.o not-strip.o rename.o rddbg.o debug.o \
-stabs.o ieee.o rdcoff.o wrstabs.o bucomm.o version.o filemode.o
+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.o bucomm.o version.o filemode.o
+addr2line_OBJECTS = addr2line.$(OBJEXT) bucomm.$(OBJEXT) \
+version.$(OBJEXT) filemode.$(OBJEXT)
addr2line_LDADD = $(LDADD)
addr2line_DEPENDENCIES = ../bfd/libbfd.la ../libiberty/libiberty.a
addr2line_LDFLAGS =
-readelf_OBJECTS = readelf.o version.o
+readelf_OBJECTS = readelf.$(OBJEXT) version.$(OBJEXT)
readelf_DEPENDENCIES = ../libiberty/libiberty.a
readelf_LDFLAGS =
-nm_new_OBJECTS = nm.o bucomm.o version.o filemode.o
+nm_new_OBJECTS = nm.$(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.o is-strip.o rename.o rddbg.o debug.o \
-stabs.o ieee.o rdcoff.o wrstabs.o bucomm.o version.o filemode.o
+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 =
@@ -380,14 +437,14 @@ configure.in deflex.c defparse.c nlmheader.c rclex.c rcparse.c
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = tar
+TAR = gtar
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 .dvi .info .l .lo .o .ps .s .texi .texinfo .txi .y
+.SUFFIXES: .S .c .dvi .info .l .lo .o .obj .ps .s .texi .texinfo .txi .y
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile
@@ -468,6 +525,11 @@ 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 $<
@@ -476,6 +538,7 @@ maintainer-clean-noinstPROGRAMS:
mostlyclean-compile:
-rm -f *.o core *.core
+ -rm -f *.$(OBJEXT)
clean-compile:
@@ -1036,6 +1099,9 @@ check-DEJAGNU: site.exp
installcheck:
/bin/sh $(srcdir)/sanity.sh $(bindir)
+objdump.o:objdump.c
+ $(COMPILE) -c $(OBJDUMP_DEFS) $(srcdir)/objdump.c
+
underscore.c: stamp-under ; @true
stamp-under: Makefile
@@ -1116,8 +1182,13 @@ diststuff: $(DISTSTUFF) info
DEP: dep.sed $(CFILES) $(HFILES) $(GENERATED_CFILES) $(GENERATED_HFILES) config.h
rm -f DEP1
$(MAKE) MKDEP="$(MKDEP)" DEP1
- sed -f dep.sed < DEP1 > $@
- echo '# IF YOU PUT ANYTHING HERE IT WILL GO AWAY' >> $@
+ 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
@@ -1199,13 +1270,13 @@ addr2line.o: addr2line.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
ar.o: ar.c ../bfd/bfd.h $(INCDIR)/ansidecl.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
+ arsup.h $(INCDIR)/filenames.h
arsup.o: arsup.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
arsup.h $(INCDIR)/libiberty.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
- $(INCDIR)/fopen-same.h
+ $(INCDIR)/fopen-same.h $(INCDIR)/filenames.h
bucomm.o: bucomm.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/libiberty.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
- $(INCDIR)/fopen-same.h
+ $(INCDIR)/fopen-same.h $(INCDIR)/filenames.h
coffdump.o: coffdump.c coffgrok.h bucomm.h config.h \
$(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h
coffgrok.o: coffgrok.c bucomm.h config.h $(INCDIR)/bin-bugs.h \
@@ -1216,13 +1287,13 @@ debug.o: debug.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/libiberty.h debug.h
dlltool.o: dlltool.c ../bfd/bfd.h $(INCDIR)/ansidecl.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)/fopen-same.h $(INCDIR)/getopt.h $(INCDIR)/demangle.h \
+ $(INCDIR)/dyn-string.h dlltool.h
filemode.o: filemode.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h
ieee.o: ieee.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/ieee.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
- $(INCDIR)/libiberty.h debug.h budbg.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
@@ -1233,13 +1304,14 @@ nlmconv.o: nlmconv.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/nlm/internal.h $(INCDIR)/nlm/external.h nlmconv.h
nm.o: nm.c ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/progress.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
- $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def $(INCDIR)/aout/ranlib.h \
- $(INCDIR)/demangle.h $(INCDIR)/libiberty.h
+ $(INCDIR)/getopt.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def \
+ $(INCDIR)/aout/ranlib.h $(INCDIR)/demangle.h $(INCDIR)/libiberty.h
not-ranlib.o: not-ranlib.c
not-strip.o: not-strip.c
objcopy.o: objcopy.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/progress.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
- $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h budbg.h
+ $(INCDIR)/fopen-same.h $(INCDIR)/getopt.h $(INCDIR)/libiberty.h \
+ budbg.h $(INCDIR)/filenames.h
objdump.o: objdump.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/getopt.h $(INCDIR)/progress.h bucomm.h config.h \
$(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h $(INCDIR)/dis-asm.h \
@@ -1304,14 +1376,15 @@ readelf.o: readelf.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/elf/d30v.h $(INCDIR)/elf/sh.h $(INCDIR)/elf/mn10200.h \
$(INCDIR)/elf/mn10300.h $(INCDIR)/elf/hppa.h $(INCDIR)/elf/arc.h \
$(INCDIR)/elf/fr30.h $(INCDIR)/elf/mcore.h $(INCDIR)/elf/i960.h \
- $(INCDIR)/elf/pj.h $(INCDIR)/elf/avr.h bucomm.h config.h \
- $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h
+ $(INCDIR)/elf/pj.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/ia64.h \
+ $(INCDIR)/elf/cris.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
+ $(INCDIR)/fopen-same.h $(INCDIR)/getopt.h
resres.o: resres.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h \
$(INCDIR)/libiberty.h windres.h winduni.h
dllwrap.o: dllwrap.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
$(INCDIR)/libiberty.h bucomm.h config.h $(INCDIR)/bin-bugs.h \
- $(INCDIR)/fopen-same.h $(INCDIR)/dyn-string.h
+ $(INCDIR)/fopen-same.h $(INCDIR)/getopt.h $(INCDIR)/dyn-string.h
rename.o: rename.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
bucomm.h config.h $(INCDIR)/bin-bugs.h $(INCDIR)/fopen-same.h
underscore.o: underscore.c
diff --git a/contrib/binutils/binutils/NEWS b/contrib/binutils/binutils/NEWS
index 746c2cc..62f858f 100644
--- a/contrib/binutils/binutils/NEWS
+++ b/contrib/binutils/binutils/NEWS
@@ -1,5 +1,17 @@
-*- text -*-
+* 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:
* New command line switch to objdump --file-start-context which shows the
diff --git a/contrib/binutils/binutils/README b/contrib/binutils/binutils/README
index 4b2d277..9157a14 100644
--- a/contrib/binutils/binutils/README
+++ b/contrib/binutils/binutils/README
@@ -111,7 +111,7 @@ with gdb-4.x) may also be of help.
Reporting bugs
==============
-Send bug reports and patches to bug-gnu-utils@gnu.org. Always mention
+Send bug reports and patches to bug-binutils@gnu.org. 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.
diff --git a/contrib/binutils/binutils/acinclude.m4 b/contrib/binutils/binutils/acinclude.m4
index 71b09b9..7ffc031 100644
--- a/contrib/binutils/binutils/acinclude.m4
+++ b/contrib/binutils/binutils/acinclude.m4
@@ -1 +1,32 @@
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 <oliva@dcc.unicamp.br>
+
+## 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/contrib/binutils/binutils/aclocal.m4 b/contrib/binutils/binutils/aclocal.m4
index 2d62d71..37c162a 100644
--- a/contrib/binutils/binutils/aclocal.m4
+++ b/contrib/binutils/binutils/aclocal.m4
@@ -12,6 +12,48 @@ 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)
+])
+
+#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"])
+ ]
+)
+
+
+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])
+
# 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.
@@ -104,415 +146,6 @@ else
fi
AC_SUBST($1)])
-
-# serial 40 AC_PROG_LIBTOOL
-AC_DEFUN(AC_PROG_LIBTOOL,
-[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
-
-# Save cache, so that ltconfig can load it
-AC_CACHE_SAVE
-
-# Actually configure libtool. ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
-$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
-|| AC_MSG_ERROR([libtool configure failed])
-
-# Reload cache, that may have been modified by ltconfig
-AC_CACHE_LOAD
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-# Redirect the config.log output again, so that the ltconfig log is not
-# clobbered by the next message.
-exec 5>>./config.log
-])
-
-AC_DEFUN(AC_LIBTOOL_SETUP,
-[AC_PREREQ(2.13)dnl
-AC_REQUIRE([AC_ENABLE_SHARED])dnl
-AC_REQUIRE([AC_ENABLE_STATIC])dnl
-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([AC_PROG_RANLIB])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_LD])dnl
-AC_REQUIRE([AC_PROG_NM])dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-dnl
-
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
-esac
-
-# 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 "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
-test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
-ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
-[libtool_flags="$libtool_flags --enable-dlopen"])
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[libtool_flags="$libtool_flags --enable-win32-dll"])
-AC_ARG_ENABLE(libtool-lock,
- [ --disable-libtool-lock avoid locking (might break parallel builds)])
-test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
-test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case "$lt_target" in
-*-*-irix6*)
- # Find out which ABI we are using.
- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- case "`/usr/bin/file conftest.o`" in
- *32-bit*)
- LD="${LD-ld} -32"
- ;;
- *N32*)
- LD="${LD-ld} -n32"
- ;;
- *64-bit*)
- LD="${LD-ld} -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"
- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
- [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
- 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
- ;;
-
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[*-*-cygwin* | *-*-mingw*)
- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
- AC_CHECK_TOOL(AS, as, false)
- AC_CHECK_TOOL(OBJDUMP, objdump, false)
- ;;
-])
-esac
-])
-
-# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
-AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
-
-# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
-AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
-
-# AC_ENABLE_SHARED - implement the --enable-shared flag
-# Usage: AC_ENABLE_SHARED[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_SHARED, [dnl
-define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(shared,
-changequote(<<, >>)dnl
-<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
-])
-
-# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
-AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_SHARED(no)])
-
-# AC_ENABLE_STATIC - implement the --enable-static flag
-# Usage: AC_ENABLE_STATIC[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_STATIC, [dnl
-define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(static,
-changequote(<<, >>)dnl
-<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
-])
-
-# AC_DISABLE_STATIC - set the default static flag to --disable-static
-AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_STATIC(no)])
-
-
-# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
-# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
-define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(fast-install,
-changequote(<<, >>)dnl
-<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
-])
-
-# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
-AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_FAST_INSTALL(no)])
-
-# AC_PROG_LD - find the path to the GNU or non-GNU linker
-AC_DEFUN(AC_PROG_LD,
-[AC_ARG_WITH(gnu-ld,
-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-ac_prog=ld
-if test "$ac_cv_prog_gcc" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by GCC])
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
- case "$ac_prog" in
- # Accept absolute paths.
-changequote(,)dnl
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
-changequote([,])dnl
- # 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
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(ac_cv_path_LD,
-[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
- ac_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 "$ac_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
- ac_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$ac_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT($LD)
-else
- AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_PROG_LD_GNU
-])
-
-AC_DEFUN(AC_PROG_LD_GNU,
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- ac_cv_prog_gnu_ld=yes
-else
- ac_cv_prog_gnu_ld=no
-fi])
-])
-
-# AC_PROG_NM - find the path to a BSD-compatible name lister
-AC_DEFUN(AC_PROG_NM,
-[AC_MSG_CHECKING([for BSD-compatible nm])
-AC_CACHE_VAL(ac_cv_path_NM,
-[if test -n "$NM"; then
- # Let the user override the test.
- ac_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=.
- if test -f $ac_dir/nm || test -f $ac_dir/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
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -B"
- break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -p"
- break
- else
- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/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 "$ac_cv_path_NM" && ac_cv_path_NM=nm
-fi])
-NM="$ac_cv_path_NM"
-AC_MSG_RESULT([$NM])
-])
-
-# AC_CHECK_LIBM - check for math library
-AC_DEFUN(AC_CHECK_LIBM,
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case "$lt_target" in
-*-*-beos* | *-*-cygwin*)
- # These system don't have libm
- ;;
-*-ncr-sysv4.3*)
- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
- AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
- ;;
-*)
- AC_CHECK_LIB(m, main, LIBM="-lm")
- ;;
-esac
-])
-
-# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl convenience library, adds --enable-ltdl-convenience to
-# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
-# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
-# to be `${top_builddir}/libltdl'. Make sure you start DIR with
-# '${top_builddir}/' (note the single quotes!) if your package is not
-# flat, and, if you're not using automake, define top_builddir as
-# appropriate in the Makefiles.
-AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- case "$enable_ltdl_convenience" in
- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
- "") enable_ltdl_convenience=yes
- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
- esac
- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
-])
-
-# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl installable library, and adds --enable-ltdl-install to
-# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
-# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
-# to be `${top_builddir}/libltdl'. Make sure you start DIR with
-# '${top_builddir}/' (note the single quotes!) if your package is not
-# flat, and, if you're not using automake, define top_builddir as
-# appropriate in the Makefiles.
-# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
-AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- AC_CHECK_LIB(ltdl, main,
- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
- [if test x"$enable_ltdl_install" = xno; then
- AC_MSG_WARN([libltdl not installed, but installation disabled])
- else
- enable_ltdl_install=yes
- fi
- ])
- if test x"$enable_ltdl_install" = x"yes"; then
- ac_configure_args="$ac_configure_args --enable-ltdl-install"
- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
- else
- ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
- LIBLTDL="-lltdl"
- INCLTDL=
- fi
-])
-
-dnl old names
-AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
-AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
-AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
-
-dnl This is just to silence aclocal about the macro not being used
-ifelse([AC_DISABLE_FAST_INSTALL])dnl
-
# Like AC_CONFIG_HEADER, but automatically create stamp file.
AC_DEFUN(AM_CONFIG_HEADER,
@@ -536,360 +169,6 @@ for am_file in <<$1>>; do
done<<>>dnl>>)
changequote([,]))])
-
-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])
-
-# This file is derived from `gettext.m4'. The difference is that the
-# included macros assume Cygnus-style source and build trees.
-
-# Macro to add for using GNU gettext.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
-#
-# 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.
-
-# serial 3
-
-AC_DEFUN(CY_WITH_NLS,
- [AC_MSG_CHECKING([whether NLS is requested])
- dnl Default is enabled NLS
- AC_ARG_ENABLE(nls,
- [ --disable-nls do not use Native Language Support],
- USE_NLS=$enableval, USE_NLS=yes)
- AC_MSG_RESULT($USE_NLS)
- AC_SUBST(USE_NLS)
-
- USE_INCLUDED_LIBINTL=no
-
- dnl If we use NLS figure out what method
- if test "$USE_NLS" = "yes"; then
- AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if NLS is requested])
- AC_MSG_CHECKING([whether included gettext is requested])
- AC_ARG_WITH(included-gettext,
- [ --with-included-gettext use the GNU gettext library included here],
- nls_cv_force_use_gnu_gettext=$withval,
- nls_cv_force_use_gnu_gettext=no)
- AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
-
- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
- dnl User does not insist on using GNU NLS library. Figure out what
- dnl to use. If gettext or catgets are available (in this order) we
- dnl use this. Else we have to fall back to GNU NLS library.
- dnl catgets is only used if permitted by option --with-catgets.
- nls_cv_header_intl=
- nls_cv_header_libgt=
- CATOBJEXT=NONE
-
- AC_CHECK_HEADER(libintl.h,
- [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
- [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
- gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
-
- if test "$gt_cv_func_gettext_libc" != "yes"; then
- AC_CHECK_LIB(intl, bindtextdomain,
- [AC_CACHE_CHECK([for gettext in libintl],
- gt_cv_func_gettext_libintl,
- [AC_TRY_LINK([], [return (int) gettext ("")],
- gt_cv_func_gettext_libintl=yes,
- gt_cv_func_gettext_libintl=no)])])
- fi
-
- if test "$gt_cv_func_gettext_libc" = "yes" \
- || test "$gt_cv_func_gettext_libintl" = "yes"; then
- AC_DEFINE(HAVE_GETTEXT, 1,
- [Define as 1 if you have gettext and don't want to use GNU gettext.])
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
- if test "$MSGFMT" != "no"; then
- AC_CHECK_FUNCS(dcgettext)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
- AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
- return _nl_msg_cat_cntr],
- [CATOBJEXT=.gmo
- DATADIRNAME=share],
- [CATOBJEXT=.mo
- DATADIRNAME=lib])
- INSTOBJEXT=.mo
- fi
- fi
- ])
-
- dnl In the standard gettext, we would now check for catgets.
- dnl However, we never want to use catgets for our releases.
-
- if test "$CATOBJEXT" = "NONE"; then
- dnl Neither gettext nor catgets in included in the C library.
- dnl Fall back on GNU gettext library.
- nls_cv_use_gnu_gettext=yes
- fi
- fi
-
- if test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Mark actions used to generate GNU NLS library.
- INTLOBJS="\$(GETTOBJS)"
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
- AC_SUBST(MSGFMT)
- 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
-
- dnl Test whether we really found GNU xgettext.
- if test "$XGETTEXT" != ":"; then
- dnl If it is no GNU xgettext we define it as : so that the
- dnl Makefiles still can work.
- if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
- : ;
- else
- AC_MSG_RESULT(
- [found xgettext programs is not GNU xgettext; ignore it])
- 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
-
- dnl These rules are solely for the distribution goal. While doing this
- dnl we only have to keep exactly one list of the available catalogs
- dnl in configure.in.
- for lang in $ALL_LINGUAS; do
- GMOFILES="$GMOFILES $lang.gmo"
- POFILES="$POFILES $lang.po"
- done
-
- dnl Make all variables we use known to autoconf.
- AC_SUBST(USE_INCLUDED_LIBINTL)
- AC_SUBST(CATALOGS)
- AC_SUBST(CATOBJEXT)
- AC_SUBST(DATADIRNAME)
- AC_SUBST(GMOFILES)
- AC_SUBST(INSTOBJEXT)
- AC_SUBST(INTLDEPS)
- AC_SUBST(INTLLIBS)
- AC_SUBST(INTLOBJS)
- AC_SUBST(POFILES)
- AC_SUBST(POSUB)
- ])
-
-AC_DEFUN(CY_GNU_GETTEXT,
- [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_PROG_RANLIB])dnl
- AC_REQUIRE([AC_ISC_POSIX])dnl
- AC_REQUIRE([AC_HEADER_STDC])dnl
- AC_REQUIRE([AC_C_CONST])dnl
- AC_REQUIRE([AC_C_INLINE])dnl
- AC_REQUIRE([AC_TYPE_OFF_T])dnl
- AC_REQUIRE([AC_TYPE_SIZE_T])dnl
- AC_REQUIRE([AC_FUNC_ALLOCA])dnl
- AC_REQUIRE([AC_FUNC_MMAP])dnl
-
- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
-unistd.h values.h sys/param.h])
- AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
-__argz_count __argz_stringify __argz_next])
-
- if test "${ac_cv_func_stpcpy+set}" != "set"; then
- AC_CHECK_FUNCS(stpcpy)
- fi
- if test "${ac_cv_func_stpcpy}" = "yes"; then
- AC_DEFINE(HAVE_STPCPY, 1, [Define if you have the stpcpy function])
- fi
-
- AM_LC_MESSAGES
- CY_WITH_NLS
-
- if test "x$CATOBJEXT" != "x"; then
- if test "x$ALL_LINGUAS" = "x"; then
- LINGUAS=
- else
- AC_MSG_CHECKING(for catalogs to be installed)
- NEW_LINGUAS=
- for lang in ${LINGUAS=$ALL_LINGUAS}; do
- case "$ALL_LINGUAS" in
- *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
- esac
- done
- LINGUAS=$NEW_LINGUAS
- AC_MSG_RESULT($LINGUAS)
- fi
-
- dnl Construct list of names of catalog files to be constructed.
- if test -n "$LINGUAS"; then
- for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
- fi
- fi
-
- dnl The reference to <locale.h> in the installed <libintl.h> file
- dnl must be resolved because we cannot expect the users of this
- dnl to define HAVE_LOCALE_H.
- if test $ac_cv_header_locale_h = yes; then
- INCLUDE_LOCALE_H="#include <locale.h>"
- else
- INCLUDE_LOCALE_H="\
-/* The system does not provide the header <locale.h>. Take care yourself. */"
- fi
- AC_SUBST(INCLUDE_LOCALE_H)
-
- dnl Determine which catalog format we have (if any is needed)
- dnl For now we know about two different formats:
- dnl Linux libc-5 and the normal X/Open format
- if test -f $srcdir/po2tbl.sed.in; then
- if test "$CATOBJEXT" = ".cat"; then
- AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
-
- dnl Transform the SED scripts while copying because some dumb SEDs
- dnl cannot handle comments.
- sed -e '/^#/d' $srcdir/$msgformat-msg.sed > po2msg.sed
- fi
- dnl po2tbl.sed is always needed.
- sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
- $srcdir/po2tbl.sed.in > po2tbl.sed
- fi
-
- dnl In the intl/Makefile.in we have a special dependency which makes
- dnl only sense for gettext. We comment this out for non-gettext
- dnl packages.
- if test "$PACKAGE" = "gettext"; then
- GT_NO="#NO#"
- GT_YES=
- else
- GT_NO=
- GT_YES="#YES#"
- fi
- AC_SUBST(GT_NO)
- AC_SUBST(GT_YES)
-
- MKINSTALLDIRS="\$(srcdir)/../../mkinstalldirs"
- AC_SUBST(MKINSTALLDIRS)
-
- dnl *** For now the libtool support in intl/Makefile is not for real.
- l=
- AC_SUBST(l)
-
- dnl Generate list of files to be processed by xgettext which will
- dnl be included in po/Makefile. But only do this if the po directory
- dnl exists in srcdir.
- if test -d $srcdir/po; 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
- ])
-
-# Search path for a program which passes the given test.
-# Ulrich Drepper <drepper@cygnus.com>, 1996.
-#
-# 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.
-
-# serial 1
-
-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN(AM_PATH_PROG_WITH_TEST,
-[# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL(ac_cv_path_$1,
-[case "[$]$1" in
- /*)
- ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in ifelse([$5], , $PATH, [$5]); do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if [$3]; then
- ac_cv_path_$1="$ac_dir/$ac_word"
- break
- fi
- fi
- done
- IFS="$ac_save_ifs"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
- ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test -n "[$]$1"; then
- AC_MSG_RESULT([$]$1)
-else
- AC_MSG_RESULT(no)
-fi
-AC_SUBST($1)dnl
-])
-
-# Check whether LC_MESSAGES is available in <locale.h>.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
-#
-# 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.
-
-# serial 1
-
-AC_DEFUN(AM_LC_MESSAGES,
- [if test $ac_cv_header_locale_h = yes; then
- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
- [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
- am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
- if test $am_cv_val_LC_MESSAGES = yes; then
- AC_DEFINE(HAVE_LC_MESSAGES, 1,
- [Define if your locale.h file contains LC_MESSAGES.])
- fi
- fi])
-
# Add --enable-maintainer-mode option to configure.
# From Jim Meyering
diff --git a/contrib/binutils/binutils/addr2line.1 b/contrib/binutils/binutils/addr2line.1
index 87ce103..f8dde89 100644
--- a/contrib/binutils/binutils/addr2line.1
+++ b/contrib/binutils/binutils/addr2line.1
@@ -1,6 +1,6 @@
-.\" Copyright (c) 1997 Free Software Foundation
+.\" Copyright (c) 1997, 2000 Free Software Foundation
.\" See COPYING for conditions for redistribution
-.TH addr2line 1 "27 March 1997" "Cygnus Solutions" "GNU Development Tools"
+.TH addr2line 1 "27 March 1997" "Free Software Foundation" "GNU Development Tools"
.de BP
.sp
.ti \-.2i
@@ -125,3 +125,379 @@ info\c
.I
The GNU Binary Utilities\c
\&, Roland H. Pesch (October 1991).
+
+.SH COPYING
+Copyright (c) 1993, 94, 95, 96, 97, 98, 1999, 2000 Free Software Foundation, Inc.
+.PP
+This document is distributed under the terms of the GNU Free
+Documentation License, version 1.1. That license is described in the
+sources for this manual page, but it is not displayed here in order to
+make this manual more consise. Copies of this license can also be
+obtained from: http://www.gnu.org/copyleft/.
+
+\" .SH GNU Free Documentation License
+\" Version 1.1, March 2000
+
+\" Copyright (C) 2000 Free Software Foundation, Inc.
+\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+\" Everyone is permitted to copy and distribute verbatim
+\" copies of this license document, but changing it is
+\" not allowed.
+\" .PP
+\" 0. PREAMBLE
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 1. APPLICABILITY AND DEFINITIONS
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 2. VERBATIM COPYING
+\" .PP
+\" 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.
+\" .PP
+\" You may also lend copies, under the same conditions stated above, and
+\" you may publicly display copies.
+\" .PP
+\" 3. COPYING IN QUANTITY
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 4. MODIFICATIONS
+\" .PP
+\" 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:
+\" .PP
+\" 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.
+\" .PP
+\" 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).
+\" .PP
+\" C. State on the Title page the name of the publisher of the
+\" Modified Version, as the publisher.
+\" .PP
+\" D. Preserve all the copyright notices of the Document.
+\" .PP
+\" E. Add an appropriate copyright notice for your modifications
+\" adjacent to the other copyright notices.
+\" .PP
+\" 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.
+\" Preserve in that license notice the full lists of Invariant Sections
+\" and required Cover Texts given in the Document's license notice.
+\" .PP
+\" H. Include an unaltered copy of this License.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" M. Delete any section entitled "Endorsements". Such a section
+\" may not be included in the Modified Version.
+\" .PP
+\" N. Do not retitle any existing section as "Endorsements"
+\" or to conflict in title with any Invariant Section.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 5. COMBINING DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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."
+\" .PP
+
+\" 6. COLLECTIONS OF DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 7. AGGREGATION WITH INDEPENDENT WORKS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 8. TRANSLATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 9. TERMINATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 10. FUTURE REVISIONS OF THIS LICENSE
+\" .PP
+\" 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/.
+\" .PP
+\" 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.
+\" .PP
+
+\" ADDENDUM: How to use this License for your documents
+\" .PP
+\" 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:
+\" .PP
+\" Copyright (c) YEAR YOUR NAME.
+\" Permission is granted to copy, distribute and/or
+\" modify this document under the terms of the GNU
+\" Free Documentation License, Version 1.1 or any later
+\" version published by the Free Software Foundation;
+\" with the Invariant Sections being LIST THEIR TITLES,
+\" with the Front-Cover Texts being LIST, and with the
+\" Back-Cover Texts being LIST. A copy of the license
+\" is included in the section entitled "GNU Free
+\" Documentation License".
+\" .PP
+\" If you have no Invariant Sections, write "with no Invariant Sections"
+\" instead of saying which ones are invariant. If you have no
+\" Front-Cover Texts, write "no Front-Cover Texts" instead of
+\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+\" .PP
+\" 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/contrib/binutils/binutils/addr2line.c b/contrib/binutils/binutils/addr2line.c
index 20c7eef..ef01f47 100644
--- a/contrib/binutils/binutils/addr2line.c
+++ b/contrib/binutils/binutils/addr2line.c
@@ -1,6 +1,6 @@
/* addr2line.c -- convert addresses to line number and function name
Copyright 1997, 98, 99, 2000 Free Software Foundation, Inc.
- Contributed by Ulrich Lauther <Ulrich.Lauther@zfe.siemens.de>
+ Contributed by Ulrich Lauther <Ulrich.Lauther@mchp.siemens.de>
This file is part of GNU Binutils.
@@ -18,7 +18,7 @@
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@zfe.siemens.de
+/* Derived from objdump.c and nm.c by Ulrich.Lauther@mchp.siemens.de
Usage:
addr2line [options] addr addr ...
@@ -51,7 +51,7 @@ static asymbol **syms; /* Symbol table. */
static struct option long_options[] =
{
{"basenames", no_argument, NULL, 's'},
- {"demangle", no_argument, NULL, 'C'},
+ {"demangle", optional_argument, NULL, 'C'},
{"exe", required_argument, NULL, 'e'},
{"functions", no_argument, NULL, 'f'},
{"target", required_argument, NULL, 'b'},
@@ -75,7 +75,7 @@ usage (stream, status)
{
fprintf (stream, _("\
Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n\
- [-e executable] [--exe=executable] [--demangle]\n\
+ [-e executable] [--exe=executable] [--demangle[=style]]\n\
[--basenames] [--functions] [addr addr ...]\n"),
program_name);
list_supported_targets (program_name, stream);
@@ -271,7 +271,7 @@ main (argc, argv)
int argc;
char **argv;
{
- char *filename;
+ const char *filename;
char *target;
int c;
@@ -301,6 +301,17 @@ main (argc, argv)
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':
filename = optarg;
diff --git a/contrib/binutils/binutils/ar.1 b/contrib/binutils/binutils/ar.1
index cd71a40..d7b2caf 100644
--- a/contrib/binutils/binutils/ar.1
+++ b/contrib/binutils/binutils/ar.1
@@ -1,6 +1,6 @@
-.\" Copyright (c) 1991, 1992, 1993, 1995, 1998, 1999 Free Software Foundation
+.\" Copyright (c) 1991, 1992, 1993, 1995, 1998, 1999, 2000 Free Software Foundation
.\" See section COPYING for conditions for redistribution
-.TH ar 1 "1999" "Cygnus Solutions" "GNU Development Tools"
+.TH ar 1 "1999" "Free Software Foundation" "GNU Development Tools"
.de BP
.sp
.ti \-.2i
@@ -515,19 +515,377 @@ The GNU Binary Utilities\c
\&.
.SH COPYING
-Copyright (c) 1991, 1992, 1993, 1995, 1998, 1999 Free Software Foundation, Inc.
+Copyright (c) 1991, 1992, 1993, 1995, 1998, 1999, 2000 Free Software Foundation, Inc.
.PP
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
+This document is distributed under the terms of the GNU Free
+Documentation License, version 1.1. That license is described in the
+sources for this manual page, but it is not displayed here in order to
+make this manual more consise. Copies of this license can also be
+obtained from: http://www.gnu.org/copyleft/.
+
+\" .SH GNU Free Documentation License
+\" Version 1.1, March 2000
+
+\" Copyright (C) 2000 Free Software Foundation, Inc.
+\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+\" Everyone is permitted to copy and distribute verbatim
+\" copies of this license document, but changing it is
+\" not allowed.
+\" .PP
+\" 0. PREAMBLE
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 1. APPLICABILITY AND DEFINITIONS
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 2. VERBATIM COPYING
+\" .PP
+\" 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.
+\" .PP
+\" You may also lend copies, under the same conditions stated above, and
+\" you may publicly display copies.
+\" .PP
+\" 3. COPYING IN QUANTITY
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 4. MODIFICATIONS
+\" .PP
+\" 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:
+\" .PP
+\" 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.
+\" .PP
+\" 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).
+\" .PP
+\" C. State on the Title page the name of the publisher of the
+\" Modified Version, as the publisher.
+\" .PP
+\" D. Preserve all the copyright notices of the Document.
+\" .PP
+\" E. Add an appropriate copyright notice for your modifications
+\" adjacent to the other copyright notices.
+\" .PP
+\" 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.
+\" Preserve in that license notice the full lists of Invariant Sections
+\" and required Cover Texts given in the Document's license notice.
+\" .PP
+\" H. Include an unaltered copy of this License.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" M. Delete any section entitled "Endorsements". Such a section
+\" may not be included in the Modified Version.
+\" .PP
+\" N. Do not retitle any existing section as "Endorsements"
+\" or to conflict in title with any Invariant Section.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 5. COMBINING DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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."
+\" .PP
+
+\" 6. COLLECTIONS OF DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 7. AGGREGATION WITH INDEPENDENT WORKS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 8. TRANSLATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 9. TERMINATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 10. FUTURE REVISIONS OF THIS LICENSE
+\" .PP
+\" 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/.
+\" .PP
+\" 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.
+\" .PP
+
+\" ADDENDUM: How to use this License for your documents
+\" .PP
+\" 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:
+\" .PP
+\" Copyright (c) YEAR YOUR NAME.
+\" Permission is granted to copy, distribute and/or
+\" modify this document under the terms of the GNU
+\" Free Documentation License, Version 1.1 or any later
+\" version published by the Free Software Foundation;
+\" with the Invariant Sections being LIST THEIR TITLES,
+\" with the Front-Cover Texts being LIST, and with the
+\" Back-Cover Texts being LIST. A copy of the license
+\" is included in the section entitled "GNU Free
+\" Documentation License".
+\" .PP
+\" If you have no Invariant Sections, write "with no Invariant Sections"
+\" instead of saying which ones are invariant. If you have no
+\" Front-Cover Texts, write "no Front-Cover Texts" instead of
+\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+\" .PP
+\" 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/contrib/binutils/binutils/ar.c b/contrib/binutils/binutils/ar.c
index d67f4b3..fe5709f 100644
--- a/contrib/binutils/binutils/ar.c
+++ b/contrib/binutils/binutils/ar.c
@@ -250,7 +250,7 @@ usage (help)
if (! is_ranlib)
{
/* xgettext:c-format */
- fprintf (s, _("Usage: %s [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"),
+ fprintf (s, _("Usage: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file...\n"),
program_name);
/* xgettext:c-format */
fprintf (s, _(" %s -M [<mri-script]\n"), program_name);
@@ -276,6 +276,7 @@ usage (help)
fprintf (s, _(" [S] - do not build a symbol table\n"));
fprintf (s, _(" [v] - be verbose\n"));
fprintf (s, _(" [V] - display the version number\n"));
+ fprintf (s, _(" [-X32_64] - (ignored)\n"));
}
else
/* xgettext:c-format */
@@ -307,10 +308,10 @@ normalize (file, abfd)
{
/* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
char *bslash = strrchr (file, '\\');
- if (bslash > filename)
+ if (filename == NULL || (bslash != NULL && bslash > filename))
filename = bslash;
if (filename == NULL && file[0] != '\0' && file[1] == ':')
- filename = file + 1;
+ filename = file + 1;
}
#endif
if (filename != (char *) NULL)
@@ -392,7 +393,7 @@ main (argc, argv)
{
/* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
char *bslash = strrchr (program_name, '\\');
- if (bslash > temp)
+ if (temp == NULL || (bslash != NULL && bslash > temp))
temp = bslash;
if (temp == NULL && program_name[0] != '\0' && program_name[1] == ':')
temp = program_name + 1;
@@ -431,6 +432,17 @@ main (argc, argv)
xatexit (remove_output);
+ /* Ignored for (partial) AIX compatibility. On AIX,
+ the -X option can be used to ignore certain kinds
+ of object files in the archive (the 64-bit objects
+ or the 32-bit objects). GNU ar always looks at all
+ kinds of objects in an archive. */
+ while (argc > 1 && strcmp (argv[1], "-X32_64") == 0)
+ {
+ argv++;
+ argc--;
+ }
+
if (is_ranlib)
{
boolean touch = false;
@@ -812,7 +824,8 @@ print_contents (abfd)
fatal (_("internal stat error on %s"), bfd_get_filename (abfd));
if (verbose)
- printf ("\n<%s>\n\n", bfd_get_filename (abfd));
+ /* xgettext:c-format */
+ printf (_("\n<member %s>\n\n"), bfd_get_filename (abfd));
bfd_seek (abfd, 0, SEEK_SET);
diff --git a/contrib/binutils/binutils/binutils.texi b/contrib/binutils/binutils/binutils.texi
index c2232e3..4114663 100644
--- a/contrib/binutils/binutils/binutils.texi
+++ b/contrib/binutils/binutils/binutils.texi
@@ -26,11 +26,14 @@ END-INFO-DIR-ENTRY
@end ifinfo
@ifinfo
-Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+ Permission is granted to copy, 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".
@ignore
Permission is granted to process this file through TeX and print the
@@ -39,14 +42,6 @@ notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).
@end ignore
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
@end ifinfo
@synindex ky cp
@@ -54,10 +49,10 @@ into another language, under the above conditions for modified versions.
@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 Free Software Foundation, Inc.
+@c Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
@c
@c This text may be freely distributed under the terms of the GNU
-@c General Public License.
+@c Free Documentation License.
@c
@setchapternewpage odd
@@ -79,19 +74,15 @@ into another language, under the above conditions for modified versions.
@end tex
@vskip 0pt plus 1filll
-Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 1998, 2000, 2001 Free Software Foundation, Inc.
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
+ 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".
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
@end titlepage
@node Top
@@ -148,6 +139,10 @@ 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
@@ -166,6 +161,7 @@ Create the files needed to build and use Dynamic Link Libraries
* 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
@@ -234,7 +230,7 @@ program.
@section Controlling @code{ar} on the command line
@smallexample
-ar [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}]
+ar [-X32_64] [-]@var{p}[@var{mod} [@var{relpos}] [@var{count}]] @var{archive} [@var{member}@dots{}]
@end smallexample
@cindex Unix compatibility, @code{ar}
@@ -451,6 +447,12 @@ when the modifier @samp{v} is appended.
This modifier shows the version number of @code{ar}.
@end table
+@code{ar} ignores an initial option spelt @code{-X32_64}, for
+compatibility with AIX. The behaviour produced by this option is the
+default for GNU @code{ar}. @code{ar} does not support any of the other
+@code{-X} options; in particular, it does not support @code{-X32}
+which is the default for AIX @code{ar}.
+
@node ar scripts
@section Controlling @code{ar} with a script
@@ -630,14 +632,14 @@ The @sc{gnu} linker @code{ld} is now described in a separate manual.
@smallexample
nm [ -a | --debug-syms ] [ -g | --extern-only ]
- [ -B ] [ -C | --demangle ] [ -D | --dynamic ]
+ [ -B ] [ -C | --demangle[=@var{style}] ] [ -D | --dynamic ]
[ -s | --print-armap ] [ -A | -o | --print-file-name ]
[ -n | -v | --numeric-sort ] [ -p | --no-sort ]
[ -r | --reverse-sort ] [ --size-sort ] [ -u | --undefined-only ]
[ -t @var{radix} | --radix=@var{radix} ] [ -P | --portability ]
[ --target=@var{bfdname} ] [ -f @var{format} | --format=@var{format} ]
- [ --defined-only ] [-l | --line-numbers ]
- [ --no-demangle ] [ -V | --version ] [ --help ] [ @var{objfile}@dots{} ]
+ [ --defined-only ] [-l | --line-numbers ] [ --no-demangle ]
+ [ -V | --version ] [ -X 32_64 ] [ --help ] [ @var{objfile}@dots{} ]
@end smallexample
@sc{gnu} @code{nm} lists the symbols from object files @var{objfile}@dots{}.
@@ -754,12 +756,14 @@ listed.
The same as @samp{--format=bsd} (for compatibility with the MIPS @code{nm}).
@item -C
-@itemx --demangle
+@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. @xref{c++filt}, for more information
-on demangling.
+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.
@@ -853,6 +857,12 @@ Display only defined symbols for each object file.
@itemx --version
Show the version number of @code{nm} and exit.
+@item -X
+This option is ignored for compatibility with the AIX version of
+@code{nm}. It takes one parameter which must be the string
+@code{32_64}. The default mode of AIX @code{nm} corresponds
+to @code{-X 32}, which is not supported by @sc{gnu} @code{nm}.
+
@item --help
Show a summary of the options to @code{nm} and exit.
@end table
@@ -885,6 +895,7 @@ objcopy [ -F @var{bfdname} | --target=@var{bfdname} ]
[ --set-section-flags @var{section}=@var{flags} ]
[ --add-section @var{sectionname}=@var{filename} ]
[ --change-leading-char ] [ --remove-leading-char ]
+ [ --srec-len=@var{ival} ] [ --srec-forceS3 ]
[ --redefine-sym @var{old}=@var{new} ] [ --weaken ]
[ -v | --verbose ] [ -V | --version ] [ --help ]
@var{infile} [@var{outfile}]
@@ -895,6 +906,9 @@ file to another. @code{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 @code{objcopy} is controlled by command-line options.
+Note that @code{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.
@code{objcopy} creates temporary files to do its translations and
deletes them afterward. @code{objcopy} uses @sc{bfd} to do all its
@@ -917,6 +931,11 @@ use @samp{-S} to remove sections containing debugging information. In
some cases @samp{-R} will be useful to remove sections which contain
information that is not needed by the binary file.
+Note - @code{objcopy} is not able to change the endianness of its input
+files. If the input format has an endianness, (some formats do not),
+@code{objcopy} can only copy the inputs into file formats that have the
+same endianness or which have no endianness (eg @samp{srec}).
+
@table @code
@item @var{infile}
@itemx @var{outfile}
@@ -1137,6 +1156,15 @@ different conventions for symbol names. This is different from
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
@@ -1170,7 +1198,7 @@ Show a summary of the options to @code{objcopy}.
@smallexample
objdump [ -a | --archive-headers ]
[ -b @var{bfdname} | --target=@var{bfdname} ]
- [ -C | --demangle ]
+ [ -C | --demangle[=@var{style}] ]
[ -d | --disassemble ]
[ -D | --disassemble-all ]
[ -z | --disassemble-zeroes ]
@@ -1255,12 +1283,14 @@ formats available with the @samp{-i} option.
@xref{Target Selection}, for more information.
@item -C
-@itemx --demangle
+@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. @xref{c++filt}, for more information
-on demangling.
+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
@item --debugging
@@ -1856,6 +1886,8 @@ the one specified by the C++ Annotated Reference Manual
the one used by the HP compiler
@item edg
the one used by the EDG compiler
+@item gnu-new-abi
+the one used by the @sc{gnu} compiler with the new ABI.
@end table
@item --help
@@ -1891,7 +1923,7 @@ c++filt @var{option} @var{symbol}
@smallexample
addr2line [ -b @var{bfdname} | --target=@var{bfdname} ]
- [ -C | --demangle ]
+ [ -C | --demangle[=@var{style} ]
[ -e @var{filename} | --exe=@var{filename} ]
[ -f | --functions ] [ -s | --basename ]
[ -H | --help ] [ -V | --version ]
@@ -1938,12 +1970,14 @@ Specify that the object-code format for the object files is
@var{bfdname}.
@item -C
-@itemx --demangle
+@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. @xref{c++filt}, for more information
-on demangling.
+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}
@@ -2449,7 +2483,7 @@ readelf [ -a | --all ]
[ -V | --version-info]
[ -D | --use-dynamic]
[ -x <number> | --hex-dump=<number>]
- [ -w[liapr] | --debug-dump[=info,=line,=abbrev,=pubnames,=ranges]]
+ [ -w[liaprf] | --debug-dump[=info,=line,=abbrev,=pubnames,=ranges,=frames]]
[ --histogram]
[ -v | --version]
[ -H | --help]
@@ -2537,8 +2571,8 @@ symbols section.
@itemx --hex-dump=<number>
Displays the contents of the indicated section as a hexadecimal dump.
-@item -w[liapr]
-@itemx --debug-dump[=line,=info,=abbrev,=pubnames,=ranges]
+@item -w[liaprf]
+@itemx --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]
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.
@@ -2871,7 +2905,7 @@ 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-gnu-utils@@gnu.org}.
+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
@@ -2932,7 +2966,7 @@ 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-gnu-utils@@gnu.org} is a mailing list, so you should avoid
+@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.
@@ -3020,6 +3054,370 @@ Such guesses are usually wrong. Even we cannot guess right about such
things without first using the debugger to find the facts.
@end itemize
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+@cindex GNU Free Documentation License
+
+ GNU Free Documentation License
+
+ Version 1.1, March 2000
+
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+written document "free" in the sense of freedom: to assure everyone
+the effective freedom to copy and redistribute it, with or without
+modifying it, either commercially or noncommercially. Secondarily,
+this License preserves for the author and publisher a way to get
+credit for their work, while not being considered responsible for
+modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a
+notice placed by the copyright holder saying it can be distributed
+under the terms of this License. The "Document", below, refers to any
+such manual or work. Any member of the public is a licensee, and is
+addressed as "you".
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (For example, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, whose contents can be viewed and edited directly and
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup has been designed to thwart or discourage
+subsequent modification by readers is not Transparent. A copy that is
+not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML designed for human modification. Opaque formats include
+PostScript, PDF, proprietary formats that can be read and edited only
+by proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML produced by some word processors for output
+purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100,
+and the Document's license notice requires Cover Texts, you must enclose
+the copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a publicly-accessible computer-network location containing a complete
+Transparent copy of the Document, free of added material, which the
+general network-using public has access to download anonymously at no
+charge using public-standard network protocols. If you use the latter
+option, you must take reasonably prudent steps, when you begin
+distribution of Opaque copies in quantity, to ensure that this
+Transparent copy will remain thus accessible at the stated location
+until at least one year after the last time you distribute an Opaque
+copy (directly or through your agents or retailers) of that edition to
+the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has less than five).
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section entitled "History", and its title, and add to
+ it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. In any section entitled "Acknowledgements" or "Dedications",
+ preserve the section's title, and preserve in the section all the
+ substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section as "Endorsements"
+ or to conflict in title with any Invariant Section.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled "History"
+in the various original documents, forming one section entitled
+"History"; likewise combine any sections entitled "Acknowledgements",
+and any sections entitled "Dedications". You must delete all sections
+entitled "Endorsements."
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, does not as a whole count as a Modified Version
+of the Document, provided no compilation copyright is claimed for the
+compilation. Such a compilation is called an "aggregate", and this
+License does not apply to the other self-contained works thus compiled
+with the Document, on account of their being thus compiled, if they
+are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one quarter
+of the entire aggregate, the Document's Cover Texts may be placed on
+covers that surround only the Document within the aggregate.
+Otherwise they must appear on covers around the whole aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License provided that you also include the
+original English version of this License. In case of a disagreement
+between the translation and the original English version of this
+License, the original English version will prevail.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1
+ or any later version published by the Free Software Foundation;
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+@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 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.
+
@node Index
@unnumbered Index
diff --git a/contrib/binutils/binutils/bucomm.c b/contrib/binutils/binutils/bucomm.c
index 76ffa60..86c327f 100644
--- a/contrib/binutils/binutils/bucomm.c
+++ b/contrib/binutils/binutils/bucomm.c
@@ -219,7 +219,7 @@ make_tempname (filename)
{
/* We could have foo/bar\\baz, or foo\\bar, or d:bar. */
char *bslash = strrchr (filename, '\\');
- if (bslash > slash)
+ if (slash == NULL || (bslash != NULL && bslash > slash))
slash = bslash;
if (slash == NULL && filename[0] != '\0' && filename[1] == ':')
slash = filename + 1;
diff --git a/contrib/binutils/binutils/bucomm.h b/contrib/binutils/binutils/bucomm.h
index c6dc26a..e9d675e 100644
--- a/contrib/binutils/binutils/bucomm.h
+++ b/contrib/binutils/binutils/bucomm.h
@@ -138,12 +138,11 @@ void *alloca ();
# define N_(String) (String)
# endif
#else
-/* Stubs that do something close enough. */
-# define textdomain(String) (String)
-# define gettext(String) (String)
-# define dgettext(Domain,Message) (Message)
-# define dcgettext(Domain,Message,Type) (Message)
-# define bindtextdomain(Domain,Directory) (Domain)
+# 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/contrib/binutils/binutils/coffgrok.c b/contrib/binutils/binutils/coffgrok.c
index 8c4e6c9..3486c5f 100644
--- a/contrib/binutils/binutils/coffgrok.c
+++ b/contrib/binutils/binutils/coffgrok.c
@@ -245,7 +245,7 @@ static
struct coff_line *
do_lines (i, name)
int i;
- char *name;
+ char *name ATTRIBUTE_UNUSED;
{
struct coff_line *res = (struct coff_line *) xcalloc (sizeof (struct coff_line), 1);
asection *s;
diff --git a/contrib/binutils/binutils/config.in b/contrib/binutils/binutils/config.in
index 7b70d16..8a0e1c5 100644
--- a/contrib/binutils/binutils/config.in
+++ b/contrib/binutils/binutils/config.in
@@ -28,9 +28,6 @@
/* Define to `long' if <sys/types.h> doesn't define. */
#undef off_t
-/* Define if you need to in order for stat and other things to work. */
-#undef _POSIX_SOURCE
-
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
diff --git a/contrib/binutils/binutils/config.texi b/contrib/binutils/binutils/config.texi
index 4c75b62..a9ad848 100644
--- a/contrib/binutils/binutils/config.texi
+++ b/contrib/binutils/binutils/config.texi
@@ -1 +1 @@
-@set VERSION 2.10.1
+@set VERSION 2.11
diff --git a/contrib/binutils/binutils/configure b/contrib/binutils/binutils/configure
index f454df5..bfadf47 100755
--- a/contrib/binutils/binutils/configure
+++ b/contrib/binutils/binutils/configure
@@ -22,10 +22,14 @@ ac_help="$ac_help
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"
@@ -49,6 +53,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -163,6 +168,7 @@ Configuration:
--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
@@ -333,6 +339,11 @@ EOF
-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=*)
@@ -498,12 +509,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
@@ -541,6 +556,68 @@ 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 <<EOF
+#line 566 "configure"
+#include "confdefs.h"
+
+int main() {
+
+#ifndef __CYGWIN__
+#define __CYGWIN__ __CYGWIN32__
+#endif
+return __CYGWIN__;
+; return 0; }
+EOF
+if { (eval echo configure:577: \"$ac_compile\") 1>&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 <<EOF
+#line 599 "configure"
+#include "confdefs.h"
+
+int main() {
+return __MINGW32__;
+; return 0; }
+EOF
+if { (eval echo configure:606: \"$ac_compile\") 1>&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=
@@ -590,7 +667,7 @@ 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:594: checking host system type" >&5
+echo "configure:671: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -611,7 +688,7 @@ 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:615: checking target system type" >&5
+echo "configure:692: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -629,7 +706,7 @@ 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:633: checking build system type" >&5
+echo "configure:710: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -651,249 +728,49 @@ test "$host_alias" != "$target_alias" &&
NONENONEs,x,x, &&
program_prefix=${target_alias}-
-# 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:658: 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:688: 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:739: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ 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
- 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:771: 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 782 "configure"
+ ac_save_LIBS="$LIBS"
+LIBS="-lcposix $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 742 "configure"
#include "confdefs.h"
+/* 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 strerror();
-main(){return(0);}
+int main() {
+strerror()
+; return 0; }
EOF
-if { (eval echo configure:787: \"$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
+if { (eval echo configure:753: \"$ac_link\") 1>&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
- 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:813: 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:818: 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 <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:827: \"$ac_try\") 1>&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:846: 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
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
fi
rm -f conftest*
+LIBS="$ac_save_LIBS"
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
-
-echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:878: checking for POSIXized ISC" >&5
-if test -d /etc/conf/kconfig.d &&
- grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
-then
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
- ISC=yes # If later tests want to check for ISC.
- cat >> confdefs.h <<\EOF
-#define _POSIX_SOURCE 1
-EOF
-
- if test "$GCC" = yes; then
- CC="$CC -posix"
- else
- CC="$CC -Xp"
- fi
+ LIBS="$LIBS -lcposix"
else
echo "$ac_t""no" 1>&6
- ISC=
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
@@ -907,7 +784,7 @@ fi
# 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:911: checking for a BSD compatible install" >&5
+echo "configure:788: 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
@@ -960,7 +837,7 @@ 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:964: checking whether build environment is sane" >&5
+echo "configure:841: checking whether build environment is sane" >&5
# Just in case
sleep 1
echo timestamp > conftestfile
@@ -1017,7 +894,7 @@ test "$program_suffix" != NONE &&
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:1021: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:898: 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
@@ -1046,7 +923,7 @@ fi
PACKAGE=binutils
-VERSION=2.10.1
+VERSION=2.11
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; }
@@ -1063,7 +940,7 @@ EOF
missing_dir=`cd $ac_aux_dir && pwd`
echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
-echo "configure:1067: checking for working aclocal" >&5
+echo "configure:944: 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.
@@ -1076,7 +953,7 @@ else
fi
echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
-echo "configure:1080: checking for working autoconf" >&5
+echo "configure:957: 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.
@@ -1089,7 +966,7 @@ else
fi
echo $ac_n "checking for working automake""... $ac_c" 1>&6
-echo "configure:1093: checking for working automake" >&5
+echo "configure:970: 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.
@@ -1102,7 +979,7 @@ else
fi
echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
-echo "configure:1106: checking for working autoheader" >&5
+echo "configure:983: 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.
@@ -1115,7 +992,7 @@ else
fi
echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
-echo "configure:1119: checking for working makeinfo" >&5
+echo "configure:996: 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.
@@ -1198,36 +1075,228 @@ else
enable_fast_install=yes
fi
-# Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
+# 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:1205: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+echo "configure:1082: 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 "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+ 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_RANLIB="ranlib"
+ ac_cv_prog_CC="gcc"
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
+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:1112: 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:1163: 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:1195: 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 1206 "configure"
+#include "confdefs.h"
+
+main(){return(0);}
+EOF
+if { (eval echo configure:1211: \"$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:1237: 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:1242: 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 <<EOF
+#ifdef __GNUC__
+ yes;
+#endif
+EOF
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1251: \"$ac_try\") 1>&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:1270: 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"
@@ -1240,8 +1309,14 @@ ac_prog=ld
if test "$ac_cv_prog_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:1244: checking for ld used by GCC" >&5
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
+echo "configure:1313: 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]:[\\/]*)
@@ -1264,10 +1339,10 @@ echo "configure:1244: checking for ld used by GCC" >&5
esac
elif test "$with_gnu_ld" = yes; then
echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1268: checking for GNU ld" >&5
+echo "configure:1343: checking for GNU ld" >&5
else
echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1271: checking for non-GNU ld" >&5
+echo "configure:1346: checking for non-GNU ld" >&5
fi
if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1302,7 +1377,7 @@ else
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:1306: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1381: checking if the linker ($LD) is GNU ld" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1315,10 +1390,23 @@ fi
fi
echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
+with_gnu_ld=$ac_cv_prog_gnu_ld
+
+
+echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
+echo "configure:1398: 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:1322: checking for BSD-compatible nm" >&5
+echo "configure:1410: checking for BSD-compatible nm" >&5
if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1329,18 +1417,20 @@ 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=.
- if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
+ 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
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -B"
+ # 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
+ ac_cv_path_NM="$tmp_nm -B"
break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -p"
+ elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+ ac_cv_path_NM="$tmp_nm -p"
break
else
- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
+ ac_cv_path_NM=${ac_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
@@ -1354,7 +1444,7 @@ NM="$ac_cv_path_NM"
echo "$ac_t""$NM" 1>&6
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1358: checking whether ln -s works" >&5
+echo "configure:1448: 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
@@ -1374,11 +1464,483 @@ else
echo "$ac_t""no" 1>&6
fi
+echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
+echo "configure:1469: 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
+aix4*)
+ 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'
+ ;;
+
+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*)
+ # TODO: Does this work for hpux-11 too?
+ lt_cv_deplibs_check_method='file_magic (s0-90-90-9|PA-RISC0-9.0-9) shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+
+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* | 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 :
+ else
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ fi
+ ;;
+
+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
+ ;;
+
+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:1612: 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:1618: \"$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:1638: 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:1648: \"$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:1681: 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 <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+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:1743: 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 <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
+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:1814: 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:1846: 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:1881: 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:1913: 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"
@@ -1398,13 +1960,24 @@ 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 "$lt_target" in
+case "$host" in
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 1407 "configure"' > conftest.$ac_ext
- if { (eval echo configure:1408: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ echo '#line 1980 "configure"' > conftest.$ac_ext
+ if { (eval echo configure:1981: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
case "`/usr/bin/file conftest.o`" in
*32-bit*)
LD="${LD-ld} -32"
@@ -1425,19 +1998,27 @@ case "$lt_target" in
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -belf"
echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:1429: checking whether the C compiler needs -belf" >&5
+echo "configure:2002: 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
- cat > conftest.$ac_ext <<EOF
-#line 1434 "configure"
+
+ 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 2015 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:1441: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
lt_cv_cc_needs_belf=yes
else
@@ -1447,6 +2028,13 @@ else
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
@@ -1510,12 +2098,14 @@ rm -f confcache
# Actually configure libtool. ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
+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 $ac_aux_dir/ltmain.sh $lt_target \
+$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
@@ -1529,7 +2119,7 @@ fi
# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
+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'
@@ -1539,6 +2129,12 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
exec 5>>./config.log
+
+
+
+
+
+
# Check whether --enable-targets or --disable-targets was given.
if test "${enable_targets+set}" = set; then
enableval="$enable_targets"
@@ -1559,6 +2155,29 @@ if test "${enable_commonbfdlib+set}" = set; then
esac
fi
+build_warnings="-W -Wall"
+# 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
+
+
@@ -1573,7 +2192,7 @@ 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:1577: checking for $ac_word" >&5
+echo "configure:2196: 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
@@ -1603,7 +2222,7 @@ 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:1607: checking for $ac_word" >&5
+echo "configure:2226: 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
@@ -1654,7 +2273,7 @@ fi
# 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:1658: checking for $ac_word" >&5
+echo "configure:2277: 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
@@ -1686,7 +2305,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1690: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2309: 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.
@@ -1697,12 +2316,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1701 "configure"
+#line 2320 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2325: \"$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
@@ -1728,12 +2347,12 @@ 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:1732: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2351: 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:1737: checking whether we are using GNU C" >&5
+echo "configure:2356: 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
@@ -1742,7 +2361,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1746: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2365: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1761,7 +2380,7 @@ 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:1765: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2384: 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
@@ -1798,7 +2417,7 @@ 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:1802: checking for $ac_word" >&5
+echo "configure:2421: 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
@@ -1829,7 +2448,7 @@ done
test -n "$YACC" || YACC="yacc"
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1833: checking how to run the C preprocessor" >&5
+echo "configure:2452: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -1844,13 +2463,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 1848 "configure"
+#line 2467 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1854: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2473: \"$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
:
@@ -1861,13 +2480,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 1865 "configure"
+#line 2484 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1871: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2490: \"$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
:
@@ -1878,13 +2497,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 1882 "configure"
+#line 2501 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1888: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2507: \"$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
:
@@ -1914,7 +2533,7 @@ 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:1918: checking for $ac_word" >&5
+echo "configure:2537: 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
@@ -1942,12 +2561,12 @@ fi
test -n "$LEX" && break
done
-test -n "$LEX" || LEX=""$missing_dir/missing flex""
+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:1951: checking for $ac_word" >&5
+echo "configure:2570: 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
@@ -1981,7 +2600,7 @@ then
*) ac_lib=l ;;
esac
echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6
-echo "configure:1985: checking for yywrap in -l$ac_lib" >&5
+echo "configure:2604: 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
@@ -1989,7 +2608,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-l$ac_lib $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1993 "configure"
+#line 2612 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2000,7 +2619,7 @@ int main() {
yywrap()
; return 0; }
EOF
-if { (eval echo configure:2004: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2023,7 +2642,7 @@ fi
fi
echo $ac_n "checking lex output file root""... $ac_c" 1>&6
-echo "configure:2027: checking lex output file root" >&5
+echo "configure:2646: 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
@@ -2044,7 +2663,7 @@ 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:2048: checking whether yytext is a pointer" >&5
+echo "configure:2667: 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
@@ -2056,14 +2675,14 @@ echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c
ac_save_LIBS="$LIBS"
LIBS="$LIBS $LEXLIB"
cat > conftest.$ac_ext <<EOF
-#line 2060 "configure"
+#line 2679 "configure"
#include "confdefs.h"
`cat $LEX_OUTPUT_ROOT.c`
int main() {
; return 0; }
EOF
-if { (eval echo configure:2067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_prog_lex_yytext_pointer=yes
else
@@ -2086,13 +2705,43 @@ fi
ALL_LINGUAS=
+# 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:2712: 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:2091: checking for ANSI C header files" >&5
+echo "configure:2740: 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 <<EOF
-#line 2096 "configure"
+#line 2745 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -2100,7 +2749,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2104: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2753: \"$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*
@@ -2117,7 +2766,7 @@ 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
-#line 2121 "configure"
+#line 2770 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -2135,7 +2784,7 @@ 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
-#line 2139 "configure"
+#line 2788 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2156,7 +2805,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2160 "configure"
+#line 2809 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -2167,7 +2816,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:2171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -2191,18 +2840,18 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:2195: checking for working const" >&5
+echo "configure:2844: 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 <<EOF
-#line 2200 "configure"
+#line 2849 "configure"
#include "confdefs.h"
int main() {
/* Ultrix mips cc rejects this. */
-typedef int charset[2]; const charset x = {0,0};
+typedef int charset[2]; const charset x;
/* SunOS 4.1.1 cc rejects this. */
char const *const *ccp;
char **p;
@@ -2245,7 +2894,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:2249: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2898: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -2266,21 +2915,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:2270: checking for inline" >&5
+echo "configure:2919: 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 <<EOF
-#line 2277 "configure"
+#line 2926 "configure"
#include "confdefs.h"
int main() {
-} int $ac_kw foo() {
+} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:2284: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2933: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -2306,12 +2955,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:2310: checking for off_t" >&5
+echo "configure:2959: 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 <<EOF
-#line 2315 "configure"
+#line 2964 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -2339,12 +2988,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:2343: checking for size_t" >&5
+echo "configure:2992: 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 <<EOF
-#line 2348 "configure"
+#line 2997 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -2374,19 +3023,19 @@ 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:2378: checking for working alloca.h" >&5
+echo "configure:3027: 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 <<EOF
-#line 2383 "configure"
+#line 3032 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
-void *p = alloca(2 * sizeof(int));
+char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:2390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3039: \"$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
@@ -2407,12 +3056,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:2411: checking for alloca" >&5
+echo "configure:3060: 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 <<EOF
-#line 2416 "configure"
+#line 3065 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -2440,7 +3089,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:2444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3093: \"$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
@@ -2472,12 +3121,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:2476: checking whether alloca needs Cray hooks" >&5
+echo "configure:3125: 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 <<EOF
-#line 2481 "configure"
+#line 3130 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -2502,12 +3151,12 @@ 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:2506: checking for $ac_func" >&5
+echo "configure:3155: 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 <<EOF
-#line 2511 "configure"
+#line 3160 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2530,7 +3179,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2534: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3183: \"$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
@@ -2557,7 +3206,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:2561: checking stack direction for C alloca" >&5
+echo "configure:3210: 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
@@ -2565,7 +3214,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 2569 "configure"
+#line 3218 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -2584,7 +3233,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:2588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3237: \"$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
@@ -2609,17 +3258,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:2613: checking for $ac_hdr" >&5
+echo "configure:3262: 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
-#line 2618 "configure"
+#line 3267 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2623: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3272: \"$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*
@@ -2648,12 +3297,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2652: checking for $ac_func" >&5
+echo "configure:3301: 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 <<EOF
-#line 2657 "configure"
+#line 3306 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2676,7 +3325,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3329: \"$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
@@ -2701,7 +3350,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:2705: checking for working mmap" >&5
+echo "configure:3354: 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
@@ -2709,7 +3358,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 2713 "configure"
+#line 3362 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -2736,15 +3385,12 @@ else
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
/* This mess was copied from the GNU getpagesize.h. */
#ifndef HAVE_GETPAGESIZE
+# ifdef HAVE_UNISTD_H
+# include <unistd.h>
+# endif
/* Assume that all systems that can run configure have sys/param.h. */
# ifndef HAVE_SYS_PARAM_H
@@ -2799,7 +3445,7 @@ main()
/*
* First, make a file with some known garbage in it.
*/
- data = (char*)malloc(pagesize);
+ data = malloc(pagesize);
if (!data)
exit(1);
for (i = 0; i < pagesize; ++i)
@@ -2820,7 +3466,7 @@ main()
fd = open("conftestmmap", O_RDWR);
if (fd < 0)
exit(1);
- data2 = (char*)malloc(2 * pagesize);
+ data2 = malloc(2 * pagesize);
if (!data2)
exit(1);
data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
@@ -2838,7 +3484,7 @@ main()
*/
for (i = 0; i < pagesize; ++i)
*(data2 + i) = *(data2 + i) + 1;
- data3 = (char*)malloc(pagesize);
+ data3 = malloc(pagesize);
if (!data3)
exit(1);
if (read(fd, data3, pagesize) != pagesize)
@@ -2852,7 +3498,7 @@ main()
}
EOF
-if { (eval echo configure:2856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3502: \"$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
@@ -2880,17 +3526,17 @@ 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:2884: checking for $ac_hdr" >&5
+echo "configure:3530: 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
-#line 2889 "configure"
+#line 3535 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2894: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3540: \"$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*
@@ -2920,12 +3566,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2924: checking for $ac_func" >&5
+echo "configure:3570: 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 <<EOF
-#line 2929 "configure"
+#line 3575 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2948,7 +3594,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2952: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3598: \"$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
@@ -2977,12 +3623,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2981: checking for $ac_func" >&5
+echo "configure:3627: 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 <<EOF
-#line 2986 "configure"
+#line 3632 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3005,7 +3651,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3655: \"$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
@@ -3039,19 +3685,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:3043: checking for LC_MESSAGES" >&5
+echo "configure:3689: 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 <<EOF
-#line 3048 "configure"
+#line 3694 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:3055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3701: \"$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
@@ -3072,7 +3718,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:3076: checking whether NLS is requested" >&5
+echo "configure:3722: 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"
@@ -3092,7 +3738,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:3096: checking whether included gettext is requested" >&5
+echo "configure:3742: 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"
@@ -3111,17 +3757,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:3115: checking for libintl.h" >&5
+echo "configure:3761: 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
-#line 3120 "configure"
+#line 3766 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3125: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3771: \"$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*
@@ -3138,19 +3784,19 @@ 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:3142: checking for gettext in libc" >&5
+echo "configure:3788: 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 <<EOF
-#line 3147 "configure"
+#line 3793 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:3154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3800: \"$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
@@ -3166,7 +3812,7 @@ 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:3170: checking for bindtextdomain in -lintl" >&5
+echo "configure:3816: 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
@@ -3174,7 +3820,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3178 "configure"
+#line 3824 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3185,7 +3831,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:3189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3201,19 +3847,19 @@ 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:3205: checking for gettext in libintl" >&5
+echo "configure:3851: 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 <<EOF
-#line 3210 "configure"
+#line 3856 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:3217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -3241,7 +3887,7 @@ 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:3245: checking for $ac_word" >&5
+echo "configure:3891: 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
@@ -3275,12 +3921,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3279: checking for $ac_func" >&5
+echo "configure:3925: 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 <<EOF
-#line 3284 "configure"
+#line 3930 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3303,7 +3949,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3953: \"$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
@@ -3330,7 +3976,7 @@ 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:3334: checking for $ac_word" >&5
+echo "configure:3980: 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
@@ -3366,7 +4012,7 @@ 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:3370: checking for $ac_word" >&5
+echo "configure:4016: 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
@@ -3398,7 +4044,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 3402 "configure"
+#line 4048 "configure"
#include "confdefs.h"
int main() {
@@ -3406,7 +4052,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:3410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -3438,7 +4084,7 @@ fi
# 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:3442: checking for $ac_word" >&5
+echo "configure:4088: 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
@@ -3472,7 +4118,7 @@ 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:3476: checking for $ac_word" >&5
+echo "configure:4122: 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
@@ -3508,7 +4154,7 @@ 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:3512: checking for $ac_word" >&5
+echo "configure:4158: 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
@@ -3598,7 +4244,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:3602: checking for catalogs to be installed" >&5
+echo "configure:4248: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -3626,17 +4272,17 @@ echo "configure:3602: checking for catalogs to be installed" >&5
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:3630: checking for linux/version.h" >&5
+echo "configure:4276: 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
-#line 3635 "configure"
+#line 4281 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3640: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4286: \"$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*
@@ -3699,7 +4345,7 @@ fi
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:3703: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:4349: 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"
@@ -3721,72 +4367,10 @@ fi
MAINT=$MAINTAINER_MODE_TRUE
-echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:3726: 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 <<EOF
-#line 3731 "configure"
-#include "confdefs.h"
-
-int main() {
-
-#ifndef __CYGWIN__
-#define __CYGWIN__ __CYGWIN32__
-#endif
-return __CYGWIN__;
-; return 0; }
-EOF
-if { (eval echo configure:3742: \"$ac_compile\") 1>&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:3759: 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 <<EOF
-#line 3764 "configure"
-#include "confdefs.h"
-
-int main() {
-return __MINGW32__;
-; return 0; }
-EOF
-if { (eval echo configure:3771: \"$ac_compile\") 1>&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
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3790: checking for executable suffix" >&5
+echo "configure:4374: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3796,10 +4380,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3800: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:4384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3839,7 +4423,7 @@ AR=${AR-ar}
# 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:3843: checking for $ac_word" >&5
+echo "configure:4427: 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
@@ -3878,7 +4462,7 @@ fi
# 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:3882: checking for a BSD compatible install" >&5
+echo "configure:4466: 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
@@ -3945,7 +4529,7 @@ 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:3949: checking for build system executable suffix" >&5
+echo "configure:4533: 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
@@ -3980,17 +4564,17 @@ 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:3984: checking for $ac_hdr" >&5
+echo "configure:4568: 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
-#line 3989 "configure"
+#line 4573 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3994: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4578: \"$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*
@@ -4017,12 +4601,12 @@ fi
done
echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:4021: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:4605: 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 <<EOF
-#line 4026 "configure"
+#line 4610 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
@@ -4038,7 +4622,7 @@ wait (&s);
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
-if { (eval echo configure:4042: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4626: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
@@ -4061,19 +4645,19 @@ 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:4065: checking for working alloca.h" >&5
+echo "configure:4649: 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 <<EOF
-#line 4070 "configure"
+#line 4654 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
-void *p = alloca(2 * sizeof(int));
+char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:4077: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4661: \"$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
@@ -4094,12 +4678,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:4098: checking for alloca" >&5
+echo "configure:4682: 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 <<EOF
-#line 4103 "configure"
+#line 4687 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -4127,7 +4711,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:4131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4715: \"$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
@@ -4159,12 +4743,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:4163: checking whether alloca needs Cray hooks" >&5
+echo "configure:4747: 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 <<EOF
-#line 4168 "configure"
+#line 4752 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -4189,12 +4773,12 @@ 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:4193: checking for $ac_func" >&5
+echo "configure:4777: 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 <<EOF
-#line 4198 "configure"
+#line 4782 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4217,7 +4801,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4805: \"$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
@@ -4244,7 +4828,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:4248: checking stack direction for C alloca" >&5
+echo "configure:4832: 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
@@ -4252,7 +4836,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 4256 "configure"
+#line 4840 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -4271,7 +4855,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:4275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4859: \"$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
@@ -4295,12 +4879,12 @@ fi
for ac_func in sbrk utimes setmode
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4299: checking for $ac_func" >&5
+echo "configure:4883: 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 <<EOF
-#line 4304 "configure"
+#line 4888 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4323,7 +4907,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4911: \"$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
@@ -4351,14 +4935,14 @@ done
# Some systems have frexp only in -lm, not in -lc.
echo $ac_n "checking for library containing frexp""... $ac_c" 1>&6
-echo "configure:4355: checking for library containing frexp" >&5
+echo "configure:4939: 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 <<EOF
-#line 4362 "configure"
+#line 4946 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4369,7 +4953,7 @@ int main() {
frexp()
; return 0; }
EOF
-if { (eval echo configure:4373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_frexp="none required"
else
@@ -4380,7 +4964,7 @@ 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 <<EOF
-#line 4384 "configure"
+#line 4968 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4391,7 +4975,7 @@ int main() {
frexp()
; return 0; }
EOF
-if { (eval echo configure:4395: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_frexp="-l$i"
break
@@ -4413,19 +4997,19 @@ else :
fi
echo $ac_n "checking for time_t in time.h""... $ac_c" 1>&6
-echo "configure:4417: checking for time_t in time.h" >&5
+echo "configure:5001: 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 <<EOF
-#line 4422 "configure"
+#line 5006 "configure"
#include "confdefs.h"
#include <time.h>
int main() {
time_t i;
; return 0; }
EOF
-if { (eval echo configure:4429: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5013: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bu_cv_decl_time_t_time_h=yes
else
@@ -4446,19 +5030,19 @@ EOF
fi
echo $ac_n "checking for time_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:4450: checking for time_t in sys/types.h" >&5
+echo "configure:5034: 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 <<EOF
-#line 4455 "configure"
+#line 5039 "configure"
#include "confdefs.h"
#include <sys/types.h>
int main() {
time_t i;
; return 0; }
EOF
-if { (eval echo configure:4462: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5046: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bu_cv_decl_time_t_types_h=yes
else
@@ -4481,12 +5065,12 @@ fi
# Under Next 3.2 <utime.h> apparently does not define struct utimbuf
# by default.
echo $ac_n "checking for utime.h""... $ac_c" 1>&6
-echo "configure:4485: checking for utime.h" >&5
+echo "configure:5069: 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 <<EOF
-#line 4490 "configure"
+#line 5074 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef HAVE_TIME_H
@@ -4497,7 +5081,7 @@ int main() {
struct utimbuf s;
; return 0; }
EOF
-if { (eval echo configure:4501: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5085: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bu_cv_header_utime_h=yes
else
@@ -4518,12 +5102,12 @@ EOF
fi
echo $ac_n "checking whether fprintf must be declared""... $ac_c" 1>&6
-echo "configure:4522: checking whether fprintf must be declared" >&5
+echo "configure:5106: 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 <<EOF
-#line 4527 "configure"
+#line 5111 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4544,7 +5128,7 @@ int main() {
char *(*pfn) = (char *(*)) fprintf
; return 0; }
EOF
-if { (eval echo configure:4548: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5132: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_fprintf=no
else
@@ -4565,12 +5149,12 @@ EOF
fi
echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6
-echo "configure:4569: checking whether strstr must be declared" >&5
+echo "configure:5153: 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 <<EOF
-#line 4574 "configure"
+#line 5158 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4591,7 +5175,7 @@ int main() {
char *(*pfn) = (char *(*)) strstr
; return 0; }
EOF
-if { (eval echo configure:4595: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5179: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_strstr=no
else
@@ -4612,12 +5196,12 @@ EOF
fi
echo $ac_n "checking whether sbrk must be declared""... $ac_c" 1>&6
-echo "configure:4616: checking whether sbrk must be declared" >&5
+echo "configure:5200: 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 <<EOF
-#line 4621 "configure"
+#line 5205 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4638,7 +5222,7 @@ int main() {
char *(*pfn) = (char *(*)) sbrk
; return 0; }
EOF
-if { (eval echo configure:4642: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5226: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_sbrk=no
else
@@ -4659,12 +5243,12 @@ EOF
fi
echo $ac_n "checking whether getenv must be declared""... $ac_c" 1>&6
-echo "configure:4663: checking whether getenv must be declared" >&5
+echo "configure:5247: 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 <<EOF
-#line 4668 "configure"
+#line 5252 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4685,7 +5269,7 @@ int main() {
char *(*pfn) = (char *(*)) getenv
; return 0; }
EOF
-if { (eval echo configure:4689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5273: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_getenv=no
else
@@ -4706,12 +5290,12 @@ EOF
fi
echo $ac_n "checking whether environ must be declared""... $ac_c" 1>&6
-echo "configure:4710: checking whether environ must be declared" >&5
+echo "configure:5294: 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 <<EOF
-#line 4715 "configure"
+#line 5299 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4732,7 +5316,7 @@ int main() {
char *(*pfn) = (char *(*)) environ
; return 0; }
EOF
-if { (eval echo configure:4736: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5320: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_environ=no
else
@@ -4787,6 +5371,7 @@ DLLTOOL_DEFS=
BUILD_WINDRES=
BUILD_DLLWRAP=
BUILD_MISC=
+OBJDUMP_DEFS=
for targ in $target $canon_targets
do
@@ -4818,6 +5403,11 @@ do
*-*-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"
@@ -4828,6 +5418,9 @@ do
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
+ arm*-* | xscale-* | strongarm-* | d10v-*)
+ OBJDUMP_DEFS="-DDISASSEMBLER_NEEDS_RELOCS"
+ ;;
i[3-6]86-*pe* | i[3-6]86-*-cygwin* | i[3-6]86-*-mingw32*)
BUILD_DLLTOOL='$(DLLTOOL_PROG)$(EXEEXT)'
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_I386"
@@ -4875,6 +5468,7 @@ done
+
cat >> confdefs.h <<EOF
#define TARGET "${target}"
EOF
@@ -5037,7 +5631,6 @@ 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%@CC@%$CC%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
s%@INSTALL_DATA@%$INSTALL_DATA%g
@@ -5049,9 +5642,14 @@ s%@AUTOMAKE@%$AUTOMAKE%g
s%@AUTOHEADER@%$AUTOHEADER%g
s%@MAKEINFO@%$MAKEINFO%g
s%@SET_MAKE@%$SET_MAKE%g
-s%@RANLIB@%$RANLIB%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
@@ -5081,7 +5679,6 @@ 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%@EXEEXT@%$EXEEXT%g
s%@HDEFINES@%$HDEFINES%g
s%@AR@%$AR%g
s%@CC_FOR_BUILD@%$CC_FOR_BUILD%g
@@ -5095,6 +5692,7 @@ 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%@UNDERSCORE@%$UNDERSCORE%g
CEOF
diff --git a/contrib/binutils/binutils/configure.in b/contrib/binutils/binutils/configure.in
index 0a52219..4923ab9 100644
--- a/contrib/binutils/binutils/configure.in
+++ b/contrib/binutils/binutils/configure.in
@@ -6,7 +6,7 @@ AC_INIT(ar.c)
AC_CANONICAL_SYSTEM
AC_ISC_POSIX
-AM_INIT_AUTOMAKE(binutils, 2.10.1)
+AM_INIT_AUTOMAKE(binutils, 2.11)
AM_PROG_LIBTOOL
@@ -26,6 +26,27 @@ AC_ARG_ENABLE(commonbfdlib,
*) AC_MSG_ERROR([bad value ${enableval} for BFD commonbfdlib option]) ;;
esac])dnl
+build_warnings="-W -Wall"
+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
@@ -150,6 +171,7 @@ DLLTOOL_DEFS=
BUILD_WINDRES=
BUILD_DLLWRAP=
BUILD_MISC=
+OBJDUMP_DEFS=
for targ in $target $canon_targets
do
@@ -183,6 +205,11 @@ changequote([,])dnl
*-*-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"
@@ -193,6 +220,9 @@ changequote([,])dnl
DLLTOOL_DEFS="$DLLTOOL_DEFS -DDLLTOOL_ARM"
BUILD_WINDRES='$(WINDRES_PROG)$(EXEEXT)'
;;
+ arm*-* | xscale-* | strongarm-* | d10v-*)
+ OBJDUMP_DEFS="-DDISASSEMBLER_NEEDS_RELOCS"
+ ;;
changequote(,)dnl
i[3-6]86-*pe* | i[3-6]86-*-cygwin* | i[3-6]86-*-mingw32*)
changequote([,])dnl
@@ -241,6 +271,7 @@ 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.])
diff --git a/contrib/binutils/binutils/dlltool.c b/contrib/binutils/binutils/dlltool.c
index b618b96..e989f0c 100644
--- a/contrib/binutils/binutils/dlltool.c
+++ b/contrib/binutils/binutils/dlltool.c
@@ -383,8 +383,12 @@ 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";
@@ -605,7 +609,7 @@ mtable[] =
,
{
#define MARM_EPOC 9
- "arm", ".byte", ".short", ".long", ".asciz", "@",
+ "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,
@@ -726,6 +730,7 @@ rvaafter (machine)
case MMCORE_LE:
case MMCORE_ELF:
case MMCORE_ELF_LE:
+ case MARM_EPOC:
break;
default:
/* xgettext:c-format */
@@ -750,6 +755,7 @@ rvabefore (machine)
case MMCORE_LE:
case MMCORE_ELF:
case MMCORE_ELF_LE:
+ case MARM_EPOC:
return ".rva\t";
default:
/* xgettext:c-format */
@@ -773,6 +779,7 @@ asm_prefix (machine)
case MMCORE_LE:
case MMCORE_ELF:
case MMCORE_ELF_LE:
+ case MARM_EPOC:
break;
case M386:
return "_";
diff --git a/contrib/binutils/binutils/dllwrap.c b/contrib/binutils/binutils/dllwrap.c
index 637fa52..291abfd 100644
--- a/contrib/binutils/binutils/dllwrap.c
+++ b/contrib/binutils/binutils/dllwrap.c
@@ -857,10 +857,10 @@ main (argc, argv)
dlltool_cmdline = dyn_string_new (cmdline_len);
if (verbose)
{
- dyn_string_append (dlltool_cmdline, " -v");
+ dyn_string_append_cstr (dlltool_cmdline, " -v");
}
- dyn_string_append (dlltool_cmdline, " --dllname ");
- dyn_string_append (dlltool_cmdline, dll_name);
+ dyn_string_append_cstr (dlltool_cmdline, " --dllname ");
+ dyn_string_append_cstr (dlltool_cmdline, dll_name);
for (i = 1; i < argc; ++i)
{
@@ -868,10 +868,10 @@ main (argc, argv)
{
char *arg = saved_argv[i];
int quote = (strchr (arg, ' ') || strchr (arg, '\t'));
- dyn_string_append (dlltool_cmdline,
+ dyn_string_append_cstr (dlltool_cmdline,
(quote) ? " \"" : " ");
- dyn_string_append (dlltool_cmdline, arg);
- dyn_string_append (dlltool_cmdline,
+ dyn_string_append_cstr (dlltool_cmdline, arg);
+ dyn_string_append_cstr (dlltool_cmdline,
(quote) ? "\"" : "");
}
}
@@ -894,9 +894,9 @@ main (argc, argv)
break;
}
}
- dyn_string_append (driver_cmdline, driver_flags);
- dyn_string_append (driver_cmdline, " -o ");
- dyn_string_append (driver_cmdline, dll_file_name);
+ 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)
{
@@ -915,10 +915,10 @@ main (argc, argv)
break;
}
}
- dyn_string_append (driver_cmdline, " -Wl,-e,");
- dyn_string_append (driver_cmdline, entry_point);
- dyn_string_append (dlltool_cmdline, " --exclude-symbol=");
- dyn_string_append (dlltool_cmdline,
+ 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)
@@ -929,12 +929,12 @@ main (argc, argv)
image_base_str = tmpbuf;
}
- dyn_string_append (driver_cmdline, " -Wl,--image-base,");
- dyn_string_append (driver_cmdline, image_base_str);
+ dyn_string_append_cstr (driver_cmdline, " -Wl,--image-base,");
+ dyn_string_append_cstr (driver_cmdline, image_base_str);
if (verbose)
{
- dyn_string_append (driver_cmdline, " -v");
+ dyn_string_append_cstr (driver_cmdline, " -v");
}
for (i = 1; i < argc; ++i)
@@ -943,10 +943,10 @@ main (argc, argv)
{
char *arg = saved_argv[i];
int quote = (strchr (arg, ' ') || strchr (arg, '\t'));
- dyn_string_append (driver_cmdline,
+ dyn_string_append_cstr (driver_cmdline,
(quote) ? " \"" : " ");
- dyn_string_append (driver_cmdline, arg);
- dyn_string_append (driver_cmdline,
+ dyn_string_append_cstr (driver_cmdline, arg);
+ dyn_string_append_cstr (driver_cmdline,
(quote) ? "\"" : "");
}
}
@@ -963,15 +963,15 @@ main (argc, argv)
step_pre1 = dyn_string_new (1024);
- dyn_string_append (step_pre1, dlltool_cmdline->s);
+ dyn_string_append_cstr (step_pre1, dlltool_cmdline->s);
if (export_all)
{
- dyn_string_append (step_pre1, " --export-all --exclude-symbol=");
- dyn_string_append (step_pre1,
+ 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 (step_pre1, " --output-def ");
- dyn_string_append (step_pre1, def_file_name);
+ dyn_string_append_cstr (step_pre1, " --output-def ");
+ dyn_string_append_cstr (step_pre1, def_file_name);
for (i = 1; i < argc; ++i)
{
@@ -983,10 +983,10 @@ main (argc, argv)
&& (arg[len-1] == 'o' || arg[len-1] == 'a'))
{
int quote = (strchr (arg, ' ') || strchr (arg, '\t'));
- dyn_string_append (step_pre1,
+ dyn_string_append_cstr (step_pre1,
(quote) ? " \"" : " ");
- dyn_string_append (step_pre1, arg);
- dyn_string_append (step_pre1,
+ dyn_string_append_cstr (step_pre1, arg);
+ dyn_string_append_cstr (step_pre1,
(quote) ? "\"" : "");
}
}
@@ -998,8 +998,8 @@ main (argc, argv)
dyn_string_delete (step_pre1);
}
- dyn_string_append (dlltool_cmdline, " --def ");
- dyn_string_append (dlltool_cmdline, def_file_name);
+ dyn_string_append_cstr (dlltool_cmdline, " --def ");
+ dyn_string_append_cstr (dlltool_cmdline, def_file_name);
if (verbose)
{
@@ -1036,18 +1036,18 @@ main (argc, argv)
dyn_string_t step1 = dyn_string_new (driver_cmdline->length
+ strlen (base_file_name)
+ 20);
- dyn_string_append (step1, "-Wl,--base-file,");
+ dyn_string_append_cstr (step1, "-Wl,--base-file,");
quote = (strchr (base_file_name, ' ')
|| strchr (base_file_name, '\t'));
- dyn_string_append (step1,
+ dyn_string_append_cstr (step1,
(quote) ? "\"" : "");
- dyn_string_append (step1, base_file_name);
- dyn_string_append (step1,
+ dyn_string_append_cstr (step1, base_file_name);
+ dyn_string_append_cstr (step1,
(quote) ? "\"" : "");
if (driver_cmdline->length)
{
- dyn_string_append (step1, " ");
- dyn_string_append (step1, driver_cmdline->s);
+ dyn_string_append_cstr (step1, " ");
+ dyn_string_append_cstr (step1, driver_cmdline->s);
}
if (run (driver_name, step1->s))
@@ -1087,28 +1087,28 @@ main (argc, argv)
+ strlen (exp_file_name)
+ 20);
- dyn_string_append (step2, "--base-file ");
+ dyn_string_append_cstr (step2, "--base-file ");
quote = (strchr (base_file_name, ' ')
|| strchr (base_file_name, '\t'));
- dyn_string_append (step2,
+ dyn_string_append_cstr (step2,
(quote) ? "\"" : "");
- dyn_string_append (step2, base_file_name);
- dyn_string_append (step2,
+ dyn_string_append_cstr (step2, base_file_name);
+ dyn_string_append_cstr (step2,
(quote) ? "\" " : " ");
- dyn_string_append (step2, "--output-exp ");
+ dyn_string_append_cstr (step2, "--output-exp ");
quote = (strchr (exp_file_name, ' ')
|| strchr (exp_file_name, '\t'));
- dyn_string_append (step2,
+ dyn_string_append_cstr (step2,
(quote) ? "\"" : "");
- dyn_string_append (step2, exp_file_name);
- dyn_string_append (step2,
+ dyn_string_append_cstr (step2, exp_file_name);
+ dyn_string_append_cstr (step2,
(quote) ? "\"" : "");
if (dlltool_cmdline->length)
{
- dyn_string_append (step2, " ");
- dyn_string_append (step2, dlltool_cmdline->s);
+ dyn_string_append_cstr (step2, " ");
+ dyn_string_append_cstr (step2, dlltool_cmdline->s);
}
if (run (dlltool_name, step2->s))
@@ -1131,27 +1131,27 @@ main (argc, argv)
+ strlen (exp_file_name)
+ strlen (base_file_name)
+ 20);
- dyn_string_append (step3, "-Wl,--base-file,");
+ dyn_string_append_cstr (step3, "-Wl,--base-file,");
quote = (strchr (base_file_name, ' ')
|| strchr (base_file_name, '\t'));
- dyn_string_append (step3,
+ dyn_string_append_cstr (step3,
(quote) ? "\"" : "");
- dyn_string_append (step3, base_file_name);
- dyn_string_append (step3,
+ 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 (step3,
+ dyn_string_append_cstr (step3,
(quote) ? "\"" : "");
- dyn_string_append (step3, exp_file_name);
- dyn_string_append (step3,
+ dyn_string_append_cstr (step3, exp_file_name);
+ dyn_string_append_cstr (step3,
(quote) ? "\"" : "");
if (driver_cmdline->length)
{
- dyn_string_append (step3, " ");
- dyn_string_append (step3, driver_cmdline->s);
+ dyn_string_append_cstr (step3, " ");
+ dyn_string_append_cstr (step3, driver_cmdline->s);
}
if (run (driver_name, step3->s))
@@ -1172,34 +1172,34 @@ main (argc, argv)
+ strlen (exp_file_name)
+ 20);
- dyn_string_append (step4, "--base-file ");
+ dyn_string_append_cstr (step4, "--base-file ");
quote = (strchr (base_file_name, ' ')
|| strchr (base_file_name, '\t'));
- dyn_string_append (step4,
+ dyn_string_append_cstr (step4,
(quote) ? "\"" : "");
- dyn_string_append (step4, base_file_name);
- dyn_string_append (step4,
+ dyn_string_append_cstr (step4, base_file_name);
+ dyn_string_append_cstr (step4,
(quote) ? "\" " : " ");
- dyn_string_append (step4, "--output-exp ");
+ dyn_string_append_cstr (step4, "--output-exp ");
quote = (strchr (exp_file_name, ' ')
|| strchr (exp_file_name, '\t'));
- dyn_string_append (step4,
+ dyn_string_append_cstr (step4,
(quote) ? "\"" : "");
- dyn_string_append (step4, exp_file_name);
- dyn_string_append (step4,
+ dyn_string_append_cstr (step4, exp_file_name);
+ dyn_string_append_cstr (step4,
(quote) ? "\"" : "");
if (dlltool_cmdline->length)
{
- dyn_string_append (step4, " ");
- dyn_string_append (step4, dlltool_cmdline->s);
+ dyn_string_append_cstr (step4, " ");
+ dyn_string_append_cstr (step4, dlltool_cmdline->s);
}
if (output_lib_file_name)
{
- dyn_string_append (step4, " --output-lib ");
- dyn_string_append (step4, 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))
@@ -1225,16 +1225,16 @@ main (argc, argv)
+ 20);
quote = (strchr (exp_file_name, ' ')
|| strchr (exp_file_name, '\t'));
- dyn_string_append (step5,
+ dyn_string_append_cstr (step5,
(quote) ? "\"" : "");
- dyn_string_append (step5, exp_file_name);
- dyn_string_append (step5,
+ dyn_string_append_cstr (step5, exp_file_name);
+ dyn_string_append_cstr (step5,
(quote) ? "\"" : "");
if (driver_cmdline->length)
{
- dyn_string_append (step5, " ");
- dyn_string_append (step5, driver_cmdline->s);
+ dyn_string_append_cstr (step5, " ");
+ dyn_string_append_cstr (step5, driver_cmdline->s);
}
if (run (driver_name, step5->s))
diff --git a/contrib/binutils/binutils/ieee.c b/contrib/binutils/binutils/ieee.c
index 27409cc..52149b2 100644
--- a/contrib/binutils/binutils/ieee.c
+++ b/contrib/binutils/binutils/ieee.c
@@ -1,5 +1,5 @@
/* ieee.c -- Read and write IEEE-695 debugging information.
- Copyright (C) 1996, 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>.
This file is part of GNU Binutils.
@@ -410,7 +410,7 @@ ieee_read_optional_number (info, pp, pv, ppresent)
}
ieee_error (info, *pp - 1, _("invalid number"));
- return false;
+ return false;
}
/* Read a required string from an IEEE file. */
@@ -563,7 +563,7 @@ ieee_read_expression (info, pp, pv)
ieee_error (info, start, _("unknown section"));
return false;
}
-
+
if (esp - expr_stack >= EXPR_STACK_SIZE)
{
ieee_error (info, start, _("expression stack overflow"));
@@ -4494,7 +4494,7 @@ ieee_start_range (info, low)
r->next = info->pending_ranges;
info->pending_ranges = r;
return true;
-}
+}
/* Finish a range started by ieee_start_range. */
@@ -4927,7 +4927,9 @@ ieee_start_compilation_unit (p, 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;
@@ -4939,10 +4941,12 @@ ieee_start_compilation_unit (p, filename)
info->filename = filename;
modname = strrchr (filename, '/');
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
/* We could have a mixed forward/back slash case. */
- backslash = strrchr (modname, '\\');
- if (backslash > modname)
+ backslash = strrchr (filename, '\\');
+ if (modname == NULL || (backslash != NULL && backslash > modname))
modname = backslash;
+#endif
if (modname != NULL)
++modname;
@@ -5200,15 +5204,20 @@ ieee_add_bb11 (info, sec, low, high)
}
else
{
- const char *filename, *modname, *backslash;
+ 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, '/');
- backslash = strrchr (modname, '\\');
- if (backslash > modname)
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ backslash = strrchr (filename, '\\');
+ if (modname == NULL || (backslash != NULL && backslash > modname))
modname = backslash;
+#endif
if (modname != NULL)
++modname;
@@ -5838,7 +5847,7 @@ ieee_offset_type (p)
which seems pretty important. I'm going to punt this for now. */
return ieee_int_type (p, 4, true);
-}
+}
/* Make a method type. */
@@ -7312,7 +7321,7 @@ ieee_function_parameter (p, name, kind, val)
return false;
++info->fnargcount;
- return true;
+ return true;
}
/* Output pending function parameters. */
diff --git a/contrib/binutils/binutils/nm.1 b/contrib/binutils/binutils/nm.1
index c2ad99e..dbb116c 100644
--- a/contrib/binutils/binutils/nm.1
+++ b/contrib/binutils/binutils/nm.1
@@ -1,6 +1,6 @@
-.\" Copyright (c) 1991 Free Software Foundation
+.\" Copyright (c) 1991, 2000 Free Software Foundation
.\" See section COPYING for conditions for redistribution
-.TH nm 1 "5 November 1991" "cygnus support" "GNU Development Tools"
+.TH nm 1 "5 November 1991" "Free Software Foundation" "GNU Development Tools"
.de BP
.sp
.ti \-.2i
@@ -212,19 +212,377 @@ The GNU Binary Utilities\c
.SH COPYING
-Copyright (c) 1991 Free Software Foundation, Inc.
+Copyright (c) 1991, 2000 Free Software Foundation, Inc.
.PP
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
+This document is distributed under the terms of the GNU Free
+Documentation License, version 1.1. That license is described in the
+sources for this manual page, but it is not displayed here in order to
+make this manual more consise. Copies of this license can also be
+obtained from: http://www.gnu.org/copyleft/.
+
+\" .SH GNU Free Documentation License
+\" Version 1.1, March 2000
+
+\" Copyright (C) 2000 Free Software Foundation, Inc.
+\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+\" Everyone is permitted to copy and distribute verbatim
+\" copies of this license document, but changing it is
+\" not allowed.
+\" .PP
+\" 0. PREAMBLE
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 1. APPLICABILITY AND DEFINITIONS
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 2. VERBATIM COPYING
+\" .PP
+\" 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.
+\" .PP
+\" You may also lend copies, under the same conditions stated above, and
+\" you may publicly display copies.
+\" .PP
+\" 3. COPYING IN QUANTITY
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 4. MODIFICATIONS
+\" .PP
+\" 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:
+\" .PP
+\" 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.
+\" .PP
+\" 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).
+\" .PP
+\" C. State on the Title page the name of the publisher of the
+\" Modified Version, as the publisher.
+\" .PP
+\" D. Preserve all the copyright notices of the Document.
+\" .PP
+\" E. Add an appropriate copyright notice for your modifications
+\" adjacent to the other copyright notices.
+\" .PP
+\" 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.
+\" Preserve in that license notice the full lists of Invariant Sections
+\" and required Cover Texts given in the Document's license notice.
+\" .PP
+\" H. Include an unaltered copy of this License.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" M. Delete any section entitled "Endorsements". Such a section
+\" may not be included in the Modified Version.
+\" .PP
+\" N. Do not retitle any existing section as "Endorsements"
+\" or to conflict in title with any Invariant Section.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 5. COMBINING DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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."
+\" .PP
+
+\" 6. COLLECTIONS OF DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 7. AGGREGATION WITH INDEPENDENT WORKS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 8. TRANSLATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 9. TERMINATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 10. FUTURE REVISIONS OF THIS LICENSE
+\" .PP
+\" 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/.
+\" .PP
+\" 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.
+\" .PP
+
+\" ADDENDUM: How to use this License for your documents
+\" .PP
+\" 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:
+\" .PP
+\" Copyright (c) YEAR YOUR NAME.
+\" Permission is granted to copy, distribute and/or
+\" modify this document under the terms of the GNU
+\" Free Documentation License, Version 1.1 or any later
+\" version published by the Free Software Foundation;
+\" with the Invariant Sections being LIST THEIR TITLES,
+\" with the Front-Cover Texts being LIST, and with the
+\" Back-Cover Texts being LIST. A copy of the license
+\" is included in the section entitled "GNU Free
+\" Documentation License".
+\" .PP
+\" If you have no Invariant Sections, write "with no Invariant Sections"
+\" instead of saying which ones are invariant. If you have no
+\" Front-Cover Texts, write "no Front-Cover Texts" instead of
+\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+\" .PP
+\" 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/contrib/binutils/binutils/nm.c b/contrib/binutils/binutils/nm.c
index ad5a00d..3695d1e 100644
--- a/contrib/binutils/binutils/nm.c
+++ b/contrib/binutils/binutils/nm.c
@@ -1,5 +1,5 @@
/* nm.c -- Describe symbol table of a rel file.
- Copyright 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+ Copyright 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001
Free Software Foundation, Inc.
This file is part of GNU Binutils.
@@ -260,7 +260,7 @@ static bfd *lineno_cache_rel_bfd;
static struct option long_options[] =
{
{"debug-syms", no_argument, &print_debug_syms, 1},
- {"demangle", no_argument, &do_demangle, 1},
+ {"demangle", optional_argument, 0, 'C'},
{"dynamic", no_argument, &dynamic, 1},
{"extern-only", no_argument, &external_only, 1},
{"format", required_argument, 0, 'f'},
@@ -297,7 +297,9 @@ usage (stream, status)
-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 Decode low-level symbol names into user-level names\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\
@@ -319,6 +321,7 @@ usage (stream, status)
--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"));
list_supported_targets (program_name, stream);
if (status == 0)
@@ -407,7 +410,8 @@ main (argc, argv)
bfd_init ();
set_default_bfd_target ();
- while ((c = getopt_long (argc, argv, "aABCDef:glnopPrst:uvV", long_options, (int *) 0)) != EOF)
+ while ((c = getopt_long (argc, argv, "aABCDef:glnopPrst:uvVX:",
+ long_options, (int *) 0)) != EOF)
{
switch (c)
{
@@ -423,6 +427,17 @@ main (argc, argv)
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;
@@ -466,6 +481,17 @@ main (argc, argv)
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 specfies 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;
@@ -1447,13 +1473,11 @@ print_symbol_info_bsd (info, abfd)
{
if (bfd_is_undefined_symclass (info->type))
{
- printf ("%*s",
#ifdef BFD64
- 16,
+ printf ("%*s", 16, "");
#else
- 8,
+ printf ("%*s", 8, "");
#endif
- "");
}
else
print_value (info->value);
diff --git a/contrib/binutils/binutils/objcopy.1 b/contrib/binutils/binutils/objcopy.1
index 80ca216..d2eed15 100644
--- a/contrib/binutils/binutils/objcopy.1
+++ b/contrib/binutils/binutils/objcopy.1
@@ -1,6 +1,6 @@
.\" Copyright (c) 1991, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation
.\" See section COPYING for conditions for redistribution
-.TH objcopy 1 "05 April 2000" "Cygnus Solutions" "GNU Development Tools"
+.TH objcopy 1 "05 April 2000" "Free Software Foundation" "GNU Development Tools"
.de BP
.sp
.ti \-.2i
@@ -47,6 +47,8 @@ objcopy \- copy and translate object files
.RB "[\|" \-\-add\-section\ \fIsectionname=filename\fR "\|]"
.RB "[\|" \-\-change\-leading\-char\fR "\|]"
.RB "[\|" \-\-remove\-leading\-char\fR "\|]"
+.RB "[\|" \-\-srec\-len=\fIval\fR "\|]"
+.RB "[\|" \-\-srec\-forceS3\fR "\|]"
.RB "[\|" \-\-redefine\-sym\ \fIold=new\fR "\|]"
.RB "[\|" \-\-weaken\fR "\|]"
.RB "[\|" \-v\ |\ \-\-verbose\fR "\|]"
@@ -282,6 +284,14 @@ with different conventions for symbol names. This is different from
\fB\-\-change\-leading\-char\fP because it always changes the symbol name
when appropriate, regardless of the object file format of the output
.TP
+.B \fB\-\-srec\-len=\fIval
+Meaningful only for srec output. Set the length of the Srecords to \fIval\fP.
+This length covers both the address, data and crc fields.
+.TP
+.B \fB\-\-srec\-forceS3
+Meaningful only for srec output. Avoid generation of S1/S2 records, creating
+S3-only record format.
+.TP
.B \-\-redefine\-sym\ \fIold=new
Change the name of symbol \fIold\fR to \fInew\fR. This can be useful
when one is trying link two things together for which you have no
@@ -314,19 +324,377 @@ The GNU Binary Utilities\c
\&, Roland H. Pesch (June 1993).
.SH COPYING
-Copyright (c) 1993, 94, 95, 96, 97, 98, 1999 Free Software Foundation, Inc.
-.PP
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
+Copyright (c) 1993, 94, 95, 96, 97, 98, 1999, 2000 Free Software Foundation, Inc.
.PP
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
+This document is distributed under the terms of the GNU Free
+Documentation License, version 1.1. That license is described in the
+sources for this manual page, but it is not displayed here in order to
+make this manual more consise. Copies of this license can also be
+obtained from: http://www.gnu.org/copyleft/.
+
+\" .SH GNU Free Documentation License
+\" Version 1.1, March 2000
+
+\" Copyright (C) 2000 Free Software Foundation, Inc.
+\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+\" Everyone is permitted to copy and distribute verbatim
+\" copies of this license document, but changing it is
+\" not allowed.
+\" .PP
+\" 0. PREAMBLE
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 1. APPLICABILITY AND DEFINITIONS
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 2. VERBATIM COPYING
+\" .PP
+\" 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.
+\" .PP
+\" You may also lend copies, under the same conditions stated above, and
+\" you may publicly display copies.
+\" .PP
+\" 3. COPYING IN QUANTITY
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 4. MODIFICATIONS
+\" .PP
+\" 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:
+\" .PP
+\" 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.
+\" .PP
+\" 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).
+\" .PP
+\" C. State on the Title page the name of the publisher of the
+\" Modified Version, as the publisher.
+\" .PP
+\" D. Preserve all the copyright notices of the Document.
+\" .PP
+\" E. Add an appropriate copyright notice for your modifications
+\" adjacent to the other copyright notices.
+\" .PP
+\" 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.
+\" Preserve in that license notice the full lists of Invariant Sections
+\" and required Cover Texts given in the Document's license notice.
+\" .PP
+\" H. Include an unaltered copy of this License.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" M. Delete any section entitled "Endorsements". Such a section
+\" may not be included in the Modified Version.
+\" .PP
+\" N. Do not retitle any existing section as "Endorsements"
+\" or to conflict in title with any Invariant Section.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 5. COMBINING DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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."
+\" .PP
+
+\" 6. COLLECTIONS OF DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 7. AGGREGATION WITH INDEPENDENT WORKS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 8. TRANSLATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 9. TERMINATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 10. FUTURE REVISIONS OF THIS LICENSE
+\" .PP
+\" 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/.
+\" .PP
+\" 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.
+\" .PP
+
+\" ADDENDUM: How to use this License for your documents
+\" .PP
+\" 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:
+\" .PP
+\" Copyright (c) YEAR YOUR NAME.
+\" Permission is granted to copy, distribute and/or
+\" modify this document under the terms of the GNU
+\" Free Documentation License, Version 1.1 or any later
+\" version published by the Free Software Foundation;
+\" with the Invariant Sections being LIST THEIR TITLES,
+\" with the Front-Cover Texts being LIST, and with the
+\" Back-Cover Texts being LIST. A copy of the license
+\" is included in the section entitled "GNU Free
+\" Documentation License".
+\" .PP
+\" If you have no Invariant Sections, write "with no Invariant Sections"
+\" instead of saying which ones are invariant. If you have no
+\" Front-Cover Texts, write "no Front-Cover Texts" instead of
+\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+\" .PP
+\" 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/contrib/binutils/binutils/objcopy.c b/contrib/binutils/binutils/objcopy.c
index 6a6a327..cae66fc 100644
--- a/contrib/binutils/binutils/objcopy.c
+++ b/contrib/binutils/binutils/objcopy.c
@@ -1,5 +1,5 @@
/* objcopy.c -- copy object file from input to output, optionally massaging it.
- Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001
Free Software Foundation, Inc.
This file is part of GNU Binutils.
@@ -215,6 +215,8 @@ static boolean weaken = false;
#define OPTION_STRIP_UNNEEDED (OPTION_SET_START + 1)
#define OPTION_WEAKEN (OPTION_STRIP_UNNEEDED + 1)
#define OPTION_REDEFINE_SYM (OPTION_WEAKEN + 1)
+#define OPTION_SREC_LEN (OPTION_REDEFINE_SYM + 1)
+#define OPTION_SREC_FORCES3 (OPTION_SREC_LEN + 1)
/* Options to handle if running as "strip". */
@@ -290,6 +292,8 @@ static struct option copy_options[] =
{"weaken", no_argument, 0, OPTION_WEAKEN},
{"weaken-symbol", required_argument, 0, 'W'},
{"redefine-sym", required_argument, 0, OPTION_REDEFINE_SYM},
+ {"srec-len", required_argument, 0, OPTION_SREC_LEN},
+ {"srec-forceS3", no_argument, 0, OPTION_SREC_FORCES3},
{0, no_argument, 0, 0}
};
@@ -301,6 +305,14 @@ extern char *program_name;
-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 boolean S3Forced;
static void
copy_usage (stream, exit_status)
@@ -350,6 +362,8 @@ copy_usage (stream, exit_status)
--change-leading-char Force output format's leading character style\n\
--remove-leading-char Remove leading character from global symbols\n\
--redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n\
+ --srec-len <number> Restrict the length of generated Srecords\n\
+ --srec-forceS3 Restrict the type of generated Srecords to S3\n\
-v --verbose List all object files modified\n\
-V --version Display this program's version number\n\
-h --help Display this output\n\
@@ -557,6 +571,8 @@ filter_symbols (abfd, obfd, osyms, isyms, symcount)
{
register 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++)
{
@@ -611,6 +627,9 @@ filter_symbols (abfd, obfd, osyms, isyms, symcount)
&& ((*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 ((flags & BSF_GLOBAL) != 0 /* Global symbol. */
|| (flags & BSF_WEAK) != 0
|| bfd_is_und_section (bfd_get_section (sym))
@@ -746,6 +765,13 @@ copy_object (ibfd, obfd)
long symsize;
PTR dhandle;
+ 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)"));
+ return;
+ }
if (!bfd_set_format (obfd, bfd_get_format (ibfd)))
RETURN_NONFATAL (bfd_get_filename (obfd));
@@ -1246,7 +1272,7 @@ setup_section (ibfd, isection, obfdarg)
bfd_vma vma;
bfd_vma lma;
flagword flags;
- char *err;
+ const char *err;
if ((bfd_get_section_flags (ibfd, isection) & SEC_DEBUGGING) != 0
&& (strip_symbols == STRIP_DEBUG
@@ -1269,7 +1295,7 @@ setup_section (ibfd, isection, obfdarg)
if (osection == NULL)
{
- err = "making";
+ err = _("making");
goto loser;
}
@@ -1278,7 +1304,7 @@ setup_section (ibfd, isection, obfdarg)
size = (size + interleave - 1) / interleave;
if (! bfd_set_section_size (obfd, osection, size))
{
- err = "size";
+ err = _("size");
goto loser;
}
@@ -1292,7 +1318,7 @@ setup_section (ibfd, isection, obfdarg)
if (! bfd_set_section_vma (obfd, osection, vma))
{
- err = "vma";
+ err = _("vma");
goto loser;
}
@@ -1318,7 +1344,7 @@ setup_section (ibfd, isection, obfdarg)
bfd_section_alignment (ibfd, isection))
== false)
{
- err = "alignment";
+ err = _("alignment");
goto loser;
}
@@ -1327,7 +1353,7 @@ setup_section (ibfd, isection, obfdarg)
flags = p->flags | (flags & SEC_HAS_CONTENTS);
if (!bfd_set_section_flags (obfd, osection, flags))
{
- err = "flags";
+ err = _("flags");
goto loser;
}
@@ -1341,7 +1367,7 @@ setup_section (ibfd, isection, obfdarg)
from the input section to the output section. */
if (!bfd_copy_private_section_data (ibfd, isection, obfd, osection))
{
- err = "private data";
+ err = _("private data");
goto loser;
}
@@ -1687,7 +1713,7 @@ strip_main (argc, argv)
break;
case 'S':
case 'g':
- case 'd': /* NetBSD, historic BSD strip */
+ case 'd': /* Historic BSD alias for -g. Used by early NetBSD. */
strip_symbols = STRIP_DEBUG;
break;
case OPTION_STRIP_UNNEEDED:
@@ -2124,6 +2150,14 @@ copy_main (argc, argv)
set_start_set = true;
break;
+ case OPTION_SREC_LEN:
+ Chunk = parse_vma (optarg, "--srec-len");
+ break;
+
+ case OPTION_SREC_FORCES3:
+ S3Forced = true;
+ break;
+
case 0:
break; /* we've been given a long option */
diff --git a/contrib/binutils/binutils/objdump.1 b/contrib/binutils/binutils/objdump.1
index ddc153e..1c2fa61 100644
--- a/contrib/binutils/binutils/objdump.1
+++ b/contrib/binutils/binutils/objdump.1
@@ -1,6 +1,6 @@
-.\" Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation
+.\" Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998, 2000 Free Software Foundation
.\" See section COPYING for conditions for redistribution
-.TH objdump 1 "5 November 1991" "cygnus support" "GNU Development Tools"
+.TH objdump 1 "5 November 1991" "Free Software Foundation" "GNU Development Tools"
.de BP
.sp
.ti \-.2i
@@ -396,17 +396,376 @@ The GNU Binary Utilities\c
.SH COPYING
Copyright (c) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
.PP
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
.PP
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
+This document is distributed under the terms of the GNU Free
+Documentation License, version 1.1. That license is described in the
+sources for this manual page, but it is not displayed here in order to
+make this manual more consise. Copies of this license can also be
+obtained from: http://www.gnu.org/copyleft/.
+
+\" .SH GNU Free Documentation License
+\" Version 1.1, March 2000
+
+\" Copyright (C) 2000 Free Software Foundation, Inc.
+\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+\" Everyone is permitted to copy and distribute verbatim
+\" copies of this license document, but changing it is
+\" not allowed.
+\" .PP
+\" 0. PREAMBLE
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 1. APPLICABILITY AND DEFINITIONS
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 2. VERBATIM COPYING
+\" .PP
+\" 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.
+\" .PP
+\" You may also lend copies, under the same conditions stated above, and
+\" you may publicly display copies.
+\" .PP
+\" 3. COPYING IN QUANTITY
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 4. MODIFICATIONS
+\" .PP
+\" 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:
+\" .PP
+\" 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.
+\" .PP
+\" 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).
+\" .PP
+\" C. State on the Title page the name of the publisher of the
+\" Modified Version, as the publisher.
+\" .PP
+\" D. Preserve all the copyright notices of the Document.
+\" .PP
+\" E. Add an appropriate copyright notice for your modifications
+\" adjacent to the other copyright notices.
+\" .PP
+\" 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.
+\" Preserve in that license notice the full lists of Invariant Sections
+\" and required Cover Texts given in the Document's license notice.
+\" .PP
+\" H. Include an unaltered copy of this License.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" M. Delete any section entitled "Endorsements". Such a section
+\" may not be included in the Modified Version.
+\" .PP
+\" N. Do not retitle any existing section as "Endorsements"
+\" or to conflict in title with any Invariant Section.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 5. COMBINING DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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."
+\" .PP
+
+\" 6. COLLECTIONS OF DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 7. AGGREGATION WITH INDEPENDENT WORKS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 8. TRANSLATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 9. TERMINATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 10. FUTURE REVISIONS OF THIS LICENSE
+\" .PP
+\" 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/.
+\" .PP
+\" 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.
+\" .PP
+
+\" ADDENDUM: How to use this License for your documents
+\" .PP
+\" 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:
+\" .PP
+\" Copyright (c) YEAR YOUR NAME.
+\" Permission is granted to copy, distribute and/or
+\" modify this document under the terms of the GNU
+\" Free Documentation License, Version 1.1 or any later
+\" version published by the Free Software Foundation;
+\" with the Invariant Sections being LIST THEIR TITLES,
+\" with the Front-Cover Texts being LIST, and with the
+\" Back-Cover Texts being LIST. A copy of the license
+\" is included in the section entitled "GNU Free
+\" Documentation License".
+\" .PP
+\" If you have no Invariant Sections, write "with no Invariant Sections"
+\" instead of saying which ones are invariant. If you have no
+\" Front-Cover Texts, write "no Front-Cover Texts" instead of
+\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+\" .PP
+\" 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/contrib/binutils/binutils/objdump.c b/contrib/binutils/binutils/objdump.c
index 4832e9d..a665831 100644
--- a/contrib/binutils/binutils/objdump.c
+++ b/contrib/binutils/binutils/objdump.c
@@ -255,7 +255,9 @@ usage (stream, status)
-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 Decode mangled/processed symbol names\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\
@@ -288,7 +290,7 @@ static struct option long_options[]=
{"architecture", required_argument, NULL, 'm'},
{"archive-headers", no_argument, NULL, 'a'},
{"debugging", no_argument, NULL, 'g'},
- {"demangle", no_argument, NULL, 'C'},
+ {"demangle", optional_argument, NULL, 'C'},
{"disassemble", no_argument, NULL, 'd'},
{"disassemble-all", no_argument, NULL, 'D'},
{"disassembler-options", required_argument, NULL, 'M'},
@@ -371,6 +373,8 @@ dump_section_header (abfd, section, ignored)
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");
@@ -1354,13 +1358,15 @@ disassemble_bytes (info, disassemble_fn, insns, data,
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 >= addr_offset
- && (**relppp)->address < addr_offset + octets / opb)
+ && (**relppp)->address <= addr_offset + octets / opb)
info->flags = INSN_HAS_RELOC;
else
+#endif
info->flags = 0;
octets = (*disassemble_fn) (section->vma + addr_offset, info);
@@ -1500,12 +1506,20 @@ disassemble_bytes (info, disassemble_fn, insns, data,
need_nl = true;
}
- if (dump_reloc_info
- && (section->flags & SEC_RELOC) != 0)
+ if ((section->flags & SEC_RELOC) != 0
+#ifndef DISASSEMBLER_NEEDS_RELOCS
+ && dump_reloc_info
+#endif
+ )
{
while ((*relppp) < relppend
&& ((**relppp)->address >= (bfd_vma) addr_offset
&& (**relppp)->address < (bfd_vma) addr_offset + octets / opb))
+#ifdef DISASSEMBLER_NEEDS_RELOCS
+ if (! dump_reloc_info)
+ ++(*relppp);
+ else
+#endif
{
arelent *q;
@@ -1661,8 +1675,11 @@ disassemble_data (abfd)
if (only != (char *) NULL && strcmp (only, section->name) != 0)
continue;
- if (dump_reloc_info
- && (section->flags & SEC_RELOC) != 0)
+ if ((section->flags & SEC_RELOC) != 0
+#ifndef DISASSEMBLER_NEEDS_RELOCS
+ && dump_reloc_info
+#endif
+ )
{
long relsize;
@@ -2631,7 +2648,7 @@ display_target_list ()
char *dummy_name;
int t;
- dummy_name = choose_temp_base ();
+ dummy_name = make_temp_file (NULL);
for (t = 0; bfd_target_vector[t]; t++)
{
bfd_target *p = bfd_target_vector[t];
@@ -2685,7 +2702,7 @@ display_info_table (first, last)
printf ("%s ", bfd_target_vector[t]->name);
putchar ('\n');
- dummy_name = choose_temp_base ();
+ 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)
{
@@ -2831,6 +2848,17 @@ main (argc, argv)
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;
diff --git a/contrib/binutils/binutils/po/POTFILES.in b/contrib/binutils/binutils/po/POTFILES.in
index a3a0586..861e0ff 100644
--- a/contrib/binutils/binutils/po/POTFILES.in
+++ b/contrib/binutils/binutils/po/POTFILES.in
@@ -14,8 +14,6 @@ debug.h
dlltool.c
dlltool.h
dllwrap.c
-dyn-string.c
-dyn-string.h
filemode.c
ieee.c
ieee.c
diff --git a/contrib/binutils/binutils/po/binutils.pot b/contrib/binutils/binutils/po/binutils.pot
index ed7ba0c..b497a04 100644
--- a/contrib/binutils/binutils/po/binutils.pot
+++ b/contrib/binutils/binutils/po/binutils.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-04-05 14:09+0930\n"
+"POT-Creation-Date: 2001-01-11 12:02-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,12 +18,12 @@ msgstr ""
#, c-format
msgid ""
"Usage: %s [-CfsHV] [-b bfdname] [--target=bfdname]\n"
-" [-e executable] [--exe=executable] [--demangle]\n"
+" [-e executable] [--exe=executable] [--demangle[=style]]\n"
" [--basenames] [--functions] [addr addr ...]\n"
msgstr ""
-#: addr2line.c:83 ar.c:286 nlmconv.c:1141 nm.c:306 objcopy.c:358 objcopy.c:390
-#: objdump.c:277 readelf.c:1703 size.c:89 strings.c:512 windres.c:737
+#: 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 ""
@@ -33,264 +33,281 @@ msgstr ""
msgid "%s: can not get addresses from archive"
msgstr ""
-#: ar.c:235
+#: addr2line.c:310 nm.c:436 objdump.c:2857
+#, c-format
+msgid "unknown demangling style `%s'"
+msgstr ""
+
+#: ar.c:236
#, c-format
msgid "no entry %s in archive\n"
msgstr ""
-#: ar.c:252
+#: ar.c:253
#, c-format
msgid ""
-"Usage: %s [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file "
-"file...\n"
+"Usage: %s [-X32_64] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] "
+"archive-file file...\n"
msgstr ""
-#: ar.c:255
+#: ar.c:256
#, c-format
msgid " %s -M [<mri-script]\n"
msgstr ""
-#: ar.c:256
+#: ar.c:257
msgid " commands:\n"
msgstr ""
-#: ar.c:257
+#: ar.c:258
msgid " d - delete file(s) from the archive\n"
msgstr ""
-#: ar.c:258
+#: ar.c:259
msgid " m[ab] - move file(s) in the archive\n"
msgstr ""
-#: ar.c:259
+#: ar.c:260
msgid " p - print file(s) found in the archive\n"
msgstr ""
-#: ar.c:260
+#: ar.c:261
msgid " q[f] - quick append file(s) to the archive\n"
msgstr ""
-#: ar.c:261
+#: ar.c:262
msgid ""
" r[ab][f][u] - replace existing or insert new file(s) into the archive\n"
msgstr ""
-#: ar.c:262
+#: ar.c:263
msgid " t - display contents of archive\n"
msgstr ""
-#: ar.c:263
+#: ar.c:264
msgid " x[o] - extract file(s) from the archive\n"
msgstr ""
-#: ar.c:264
+#: ar.c:265
msgid " command specific modifiers:\n"
msgstr ""
-#: ar.c:265
+#: ar.c:266
msgid " [a] - put file(s) after [member-name]\n"
msgstr ""
-#: ar.c:266
+#: ar.c:267
msgid " [b] - put file(s) before [member-name] (same as [i])\n"
msgstr ""
-#: ar.c:267
+#: ar.c:268
msgid " [N] - use instance [count] of name\n"
msgstr ""
-#: ar.c:268
+#: ar.c:269
msgid " [f] - truncate inserted file names\n"
msgstr ""
-#: ar.c:269
+#: ar.c:270
msgid " [P] - use full path names when matching\n"
msgstr ""
-#: ar.c:270
+#: ar.c:271
msgid " [o] - preserve original dates\n"
msgstr ""
-#: ar.c:271
+#: ar.c:272
msgid ""
" [u] - only replace files that are newer than current archive "
"contents\n"
msgstr ""
-#: ar.c:272
+#: ar.c:273
msgid " generic modifiers:\n"
msgstr ""
-#: ar.c:273
+#: ar.c:274
msgid " [c] - do not warn if the library had to be created\n"
msgstr ""
-#: ar.c:274
+#: ar.c:275
msgid " [s] - create an archive index (cf. ranlib)\n"
msgstr ""
-#: ar.c:275
+#: ar.c:276
msgid " [S] - do not build a symbol table\n"
msgstr ""
-#: ar.c:276
+#: ar.c:277
msgid " [v] - be verbose\n"
msgstr ""
-#: ar.c:277
+#: ar.c:278
msgid " [V] - display the version number\n"
msgstr ""
-#: ar.c:281
+#: ar.c:279
+msgid " [-X32_64] - (ignored)\n"
+msgstr ""
+
+#: ar.c:283
#, c-format
msgid "Usage: %s [-vV] archive\n"
msgstr ""
-#: ar.c:466
+#: ar.c:499
msgid "two different operation options specified"
msgstr ""
-#: ar.c:541
+#: ar.c:574
#, c-format
-msgid "%s: illegal option -- %c\n"
+msgid "illegal option -- %c"
msgstr ""
-#: ar.c:573
+#: ar.c:606
msgid "no operation specified"
msgstr ""
-#: ar.c:576
+#: ar.c:609
msgid "`u' is only meaningful with the `r' option."
msgstr ""
-#: ar.c:586
-msgid "`N' is only meaningful with the `x' and 'd' options."
+#: ar.c:619
+msgid "`N' is only meaningful with the `x' and `d' options."
msgstr ""
-#: ar.c:589
+#: ar.c:622
msgid "Value for `N' must be positive."
msgstr ""
-#: ar.c:672
+#: ar.c:705
#, c-format
-msgid "%s: internal error -- this option not implemented\n"
+msgid "internal error -- this option not implemented"
msgstr ""
-#: ar.c:790 ar.c:841 ar.c:1283 objcopy.c:1104
+#: ar.c:824 ar.c:876 ar.c:1322 objcopy.c:1124
#, c-format
msgid "internal stat error on %s"
msgstr ""
-#: ar.c:810 ar.c:878
+#: ar.c:828
+#, c-format
+msgid ""
+"\n"
+"<member %s>\n"
+"\n"
+msgstr ""
+
+#: ar.c:845 ar.c:913
#, c-format
msgid "%s is not a valid archive"
msgstr ""
-#: ar.c:846
+#: ar.c:881
#, c-format
msgid "stat returns negative size for %s"
msgstr ""
-#: ar.c:967
+#: ar.c:1008
#, c-format
msgid "%s is not an archive"
msgstr ""
-#: ar.c:974
+#: ar.c:1015
#, c-format
-msgid "%s: creating %s\n"
+msgid "creating %s"
msgstr ""
-#: ar.c:1181
+#: ar.c:1221
#, c-format
msgid "No member named `%s'\n"
msgstr ""
-#: ar.c:1233
+#: ar.c:1273
#, c-format
-msgid "%s: no entry %s in archive %s!\n"
+msgid "no entry %s in archive %s!"
msgstr ""
-#: ar.c:1395
+#: ar.c:1434
#, c-format
msgid "%s: no archive map to update"
msgstr ""
-#: arsup.c:87
+#: arsup.c:88
#, c-format
msgid "No entry %s in archive.\n"
msgstr ""
-#: arsup.c:119
+#: arsup.c:120
#, c-format
msgid "Can't open file %s\n"
msgstr ""
-#: arsup.c:167
+#: arsup.c:170
#, c-format
msgid "%s: Can't open output archive %s\n"
msgstr ""
-#: arsup.c:179
+#: arsup.c:182
#, c-format
msgid "%s: Can't open input archive %s\n"
msgstr ""
-#: arsup.c:185
+#: arsup.c:188
#, c-format
msgid "%s: file %s is not an archive\n"
msgstr ""
-#: arsup.c:226
+#: arsup.c:229
#, c-format
msgid "%s: no output archive specified yet\n"
msgstr ""
-#: arsup.c:246 arsup.c:281 arsup.c:317 arsup.c:337 arsup.c:395
+#: 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 ""
-#: arsup.c:254 arsup.c:355 arsup.c:375
+#: arsup.c:257 arsup.c:358 arsup.c:378
#, c-format
msgid "%s: can't open file %s\n"
msgstr ""
-#: arsup.c:302 arsup.c:371 arsup.c:450
+#: arsup.c:305 arsup.c:374 arsup.c:453
#, c-format
msgid "%s: can't find module file %s\n"
msgstr ""
-#: arsup.c:402
+#: arsup.c:405
#, c-format
msgid "Current open archive is %s\n"
msgstr ""
-#: arsup.c:429
+#: arsup.c:432
#, c-format
msgid "%s: no open archive\n"
msgstr ""
-#: bucomm.c:139
+#: bucomm.c:135
#, c-format
msgid "can't set BFD default target to `%s': %s"
msgstr ""
-#: bucomm.c:151
+#: bucomm.c:147
#, c-format
msgid "%s: Matching formats:"
msgstr ""
-#: bucomm.c:168
+#: bucomm.c:164
msgid "Supported targets:"
msgstr ""
-#: bucomm.c:170
+#: bucomm.c:166
#, c-format
msgid "%s: supported targets:"
msgstr ""
-#: bucomm.c:263
+#: bucomm.c:272
#, c-format
msgid "%s: bad number: %s"
msgstr ""
@@ -305,14 +322,13 @@ msgstr ""
msgid "%s: Print a human readable interpretation of a SYSROFF object file\n"
msgstr ""
-#: coffdump.c:498 srconv.c:1940 sysdump.c:755
+#: coffdump.c:498 srconv.c:1941 sysdump.c:755
#, c-format
msgid "GNU %s version %s\n"
msgstr ""
-#: coffdump.c:516 srconv.c:1977 sysdump.c:775
-#, c-format
-msgid "%s: no input file specified\n"
+#: coffdump.c:516 srconv.c:1975 sysdump.c:775
+msgid "no input file specified"
msgstr ""
#: debug.c:653
@@ -412,688 +428,880 @@ msgstr ""
msgid "debug_write_type: illegal type encountered"
msgstr ""
-#: dlltool.c:770 dlltool.c:794 dlltool.c:819
+#: dlltool.c:737 dlltool.c:762 dlltool.c:788
#, c-format
-msgid "Internal error: Unknown machine type: %d\n"
+msgid "Internal error: Unknown machine type: %d"
msgstr ""
-#: dlltool.c:856
+#: dlltool.c:825
#, c-format
msgid "Can't open def file: %s"
msgstr ""
-#: dlltool.c:861
+#: dlltool.c:830
#, c-format
msgid "Processing def file: %s"
msgstr ""
-#: dlltool.c:865
+#: dlltool.c:834
msgid "Processed def file"
msgstr ""
-#: dlltool.c:890
+#: dlltool.c:859
#, c-format
-msgid "Syntax error in def file %s:%d\n"
+msgid "Syntax error in def file %s:%d"
msgstr ""
-#: dlltool.c:923
+#: dlltool.c:892
#, c-format
msgid "NAME: %s base: %x"
msgstr ""
-#: dlltool.c:926
-msgid "Can't have LIBRARY and NAME\n"
+#: dlltool.c:895 dlltool.c:914
+msgid "Can't have LIBRARY and NAME"
msgstr ""
-#: dlltool.c:942
+#: dlltool.c:911
#, c-format
msgid "LIBRARY: %s base: %x"
msgstr ""
-#: dlltool.c:945
-#, c-format
-msgid "%s: Can't have LIBRARY and NAME\n"
-msgstr ""
-
-#: dlltool.c:1200 resrc.c:271
+#: dlltool.c:1169 resrc.c:271
#, c-format
msgid "wait: %s"
msgstr ""
-#: dlltool.c:1205 resrc.c:276
+#: dlltool.c:1174 dllwrap.c:456 resrc.c:276
#, c-format
msgid "subprocess got fatal signal %d"
msgstr ""
-#: dlltool.c:1211
+#: dlltool.c:1180 dllwrap.c:463 resrc.c:283
#, c-format
-msgid "%s exited with status %d\n"
+msgid "%s exited with status %d"
msgstr ""
-#: dlltool.c:1243
+#: dlltool.c:1212
#, c-format
-msgid "Sucking in info from %s section in %s\n"
+msgid "Sucking in info from %s section in %s"
msgstr ""
-#: dlltool.c:1367
+#: dlltool.c:1336
#, c-format
-msgid "Excluding symbol: %s\n"
+msgid "Excluding symbol: %s"
msgstr ""
-#: dlltool.c:1462 dlltool.c:1473 nm.c:904 nm.c:915 objdump.c:444 objdump.c:461
+#: dlltool.c:1431 dlltool.c:1442 nm.c:946 nm.c:957 objdump.c:443 objdump.c:460
#, c-format
-msgid "%s: no symbols\n"
+msgid "%s: no symbols"
msgstr ""
#. FIXME: we ought to read in and block out the base relocations
-#: dlltool.c:1500
+#: dlltool.c:1469
#, c-format
-msgid "Done reading %s\n"
+msgid "Done reading %s"
msgstr ""
-#: dlltool.c:1511
+#: dlltool.c:1480
#, c-format
msgid "Unable to open object file: %s"
msgstr ""
-#: dlltool.c:1514
+#: dlltool.c:1483
#, c-format
msgid "Scanning object file %s"
msgstr ""
-#: dlltool.c:1529
+#: dlltool.c:1498
#, c-format
msgid "Cannot produce mcore-elf dll from archive file: %s"
msgstr ""
-#: dlltool.c:1621
+#: dlltool.c:1590
msgid "Adding exports to output file"
msgstr ""
-#: dlltool.c:1666
+#: dlltool.c:1635
msgid "Added exports to output file"
msgstr ""
-#: dlltool.c:1790
+#: dlltool.c:1759
#, c-format
-msgid "Generating export file: %s\n"
+msgid "Generating export file: %s"
msgstr ""
-#: dlltool.c:1795
+#: dlltool.c:1764
#, c-format
msgid "Unable to open temporary assembler file: %s"
msgstr ""
-#: dlltool.c:1798
+#: dlltool.c:1767
#, c-format
msgid "Opened temporary file: %s"
msgstr ""
-#: dlltool.c:2012
+#: dlltool.c:1981
msgid "Generated exports file"
msgstr ""
-#: dlltool.c:2267
+#: dlltool.c:2236
#, c-format
msgid "bfd_open failed open stub file: %s"
msgstr ""
-#: dlltool.c:2270
+#: dlltool.c:2239
#, c-format
msgid "Creating stub file: %s"
msgstr ""
-#: dlltool.c:2657
+#: dlltool.c:2626
#, c-format
msgid "failed to open temporary head file: %s"
msgstr ""
-#: dlltool.c:2716
+#: dlltool.c:2685
#, c-format
msgid "failed to open temporary tail file: %s"
msgstr ""
-#: dlltool.c:2784
+#: dlltool.c:2753
#, c-format
msgid "Can't open .lib file: %s"
msgstr ""
-#: dlltool.c:2787
+#: dlltool.c:2756
#, c-format
-msgid "Creating library file: %s\n"
+msgid "Creating library file: %s"
msgstr ""
-#: dlltool.c:2846
+#: dlltool.c:2815
#, c-format
-msgid "cannot delete %s: %s\n"
+msgid "cannot delete %s: %s"
msgstr ""
-#: dlltool.c:2850
+#: dlltool.c:2819
msgid "Created lib file"
msgstr ""
-#: dlltool.c:2955
+#: dlltool.c:2924
#, c-format
-msgid "Warning, ignoring duplicate EXPORT %s %d,%d\n"
+msgid "Warning, ignoring duplicate EXPORT %s %d,%d"
msgstr ""
-#: dlltool.c:2961
+#: dlltool.c:2930
#, c-format
msgid "Error, duplicate EXPORT with oridinals: %s"
msgstr ""
-#: dlltool.c:3088
+#: dlltool.c:3057
msgid "Processing definitions"
msgstr ""
-#: dlltool.c:3126
+#: dlltool.c:3095
msgid "Processed definitions"
msgstr ""
#. xgetext:c-format
-#: dlltool.c:3137
+#: dlltool.c:3106 dllwrap.c:520
#, c-format
msgid "Usage %s <options> <object-files>\n"
msgstr ""
#. xgetext:c-format
-#: dlltool.c:3139
+#: dlltool.c:3108
#, c-format
msgid ""
" -m --machine <machine> Create as DLL for <machine>. [default: %s]\n"
msgstr ""
-#: dlltool.c:3140
+#: dlltool.c:3109
msgid ""
" possible <machine>: arm[_interwork], i386, mcore[-elf]{-le|-be}, "
"ppc, thumb\n"
msgstr ""
-#: dlltool.c:3141
+#: dlltool.c:3110
msgid " -e --output-exp <outname> Generate an export file.\n"
msgstr ""
-#: dlltool.c:3142
+#: dlltool.c:3111
msgid " -l --output-lib <outname> Generate an interface library.\n"
msgstr ""
-#: dlltool.c:3143
+#: dlltool.c:3112
msgid " -a --add-indirect Add dll indirects to export file.\n"
msgstr ""
-#: dlltool.c:3144
+#: dlltool.c:3113
msgid ""
" -D --dllname <name> Name of input dll to put into interface lib.\n"
msgstr ""
-#: dlltool.c:3145
+#: dlltool.c:3114
msgid " -d --input-def <deffile> Name of .def file to be read in.\n"
msgstr ""
-#: dlltool.c:3146
+#: dlltool.c:3115
msgid " -z --output-def <deffile> Name of .def file to be created.\n"
msgstr ""
-#: dlltool.c:3147
+#: dlltool.c:3116
msgid " --export-all-symbols Export all symbols to .def\n"
msgstr ""
-#: dlltool.c:3148
+#: dlltool.c:3117
msgid " --no-export-all-symbols Only export listed symbols\n"
msgstr ""
-#: dlltool.c:3149
+#: dlltool.c:3118
msgid " --exclude-symbols <list> Don't export <list>\n"
msgstr ""
-#: dlltool.c:3150
+#: dlltool.c:3119
msgid " --no-default-excludes Clear default exclude symbols\n"
msgstr ""
-#: dlltool.c:3151
+#: dlltool.c:3120
msgid " -b --base-file <basefile> Read linker generated base file.\n"
msgstr ""
-#: dlltool.c:3152
+#: dlltool.c:3121
msgid " -x --no-idata4 Don't generate idata$4 section.\n"
msgstr ""
-#: dlltool.c:3153
+#: dlltool.c:3122
msgid " -c --no-idata5 Don't generate idata$5 section.\n"
msgstr ""
-#: dlltool.c:3154
+#: dlltool.c:3123
msgid ""
" -U --add-underscore Add underscores to symbols in interface "
"library.\n"
msgstr ""
-#: dlltool.c:3155
+#: dlltool.c:3124
msgid " -k --kill-at Kill @<n> from exported names.\n"
msgstr ""
-#: dlltool.c:3156
+#: dlltool.c:3125
msgid " -A --add-stdcall-alias Add aliases without @<n>.\n"
msgstr ""
-#: dlltool.c:3157
+#: dlltool.c:3126
msgid " -S --as <name> Use <name> for assembler.\n"
msgstr ""
-#: dlltool.c:3158
+#: dlltool.c:3127
msgid " -f --as-flags <flags> Pass <flags> to the assembler.\n"
msgstr ""
-#: dlltool.c:3159
+#: dlltool.c:3128
msgid ""
" -C --compat-implib Create backward compatible import library.\n"
msgstr ""
-#: dlltool.c:3160
+#: dlltool.c:3129
msgid ""
" -n --no-delete Keep temp files (repeat for extra "
"preservation).\n"
msgstr ""
-#: dlltool.c:3161
+#: dlltool.c:3130
msgid " -v --verbose Be verbose.\n"
msgstr ""
-#: dlltool.c:3162
+#: dlltool.c:3131
msgid " -V --version Display the program version.\n"
msgstr ""
-#: dlltool.c:3163
+#: dlltool.c:3132
msgid " -h --help Display this information.\n"
msgstr ""
-#: dlltool.c:3165
+#: dlltool.c:3134
msgid ""
" -M --mcore-elf <outname> Process mcore-elf object files into <outname>.\n"
msgstr ""
-#: dlltool.c:3166
+#: dlltool.c:3135
msgid " -L --linker <name> Use <name> as the linker.\n"
msgstr ""
-#: dlltool.c:3167
+#: dlltool.c:3136
msgid " -F --linker-flags <flags> Pass <flags> to the linker.\n"
msgstr ""
-#: dlltool.c:3311
+#: dlltool.c:3280
#, c-format
msgid "Unable to open base-file: %s"
msgstr ""
-#: dlltool.c:3340
+#: dlltool.c:3309
#, c-format
msgid "Machine '%s' not supported"
msgstr ""
-#: dlltool.c:3443 dllwrap.c:215
+#: dlltool.c:3412 dllwrap.c:241
#, c-format
msgid "Tried file: %s"
msgstr ""
-#: dlltool.c:3450 dllwrap.c:222
+#: dlltool.c:3419 dllwrap.c:248
#, c-format
msgid "Using file: %s"
msgstr ""
-#: ieee.c:316
+#: dllwrap.c:335
+#, c-format
+msgid "Keeping temporary base file %s"
+msgstr ""
+
+#: dllwrap.c:337
+#, c-format
+msgid "Deleting temporary base file %s"
+msgstr ""
+
+#: dllwrap.c:351
+#, c-format
+msgid "Keeping temporary exp file %s"
+msgstr ""
+
+#: dllwrap.c:353
+#, c-format
+msgid "Deleting temporary exp file %s"
+msgstr ""
+
+#: dllwrap.c:366
+#, c-format
+msgid "Keeping temporary def file %s"
+msgstr ""
+
+#: dllwrap.c:368
+#, c-format
+msgid "Deleting temporary def file %s"
+msgstr ""
+
+#: dllwrap.c:521
+msgid " Generic options:\n"
+msgstr ""
+
+#: dllwrap.c:522
+msgid " --quiet, -q Work quietly\n"
+msgstr ""
+
+#: dllwrap.c:523
+msgid " --verbose, -v Verbose\n"
+msgstr ""
+
+#: dllwrap.c:524
+msgid " --version Print dllwrap version\n"
+msgstr ""
+
+#: dllwrap.c:525
+msgid " --implib <outname> Synonym for --output-lib\n"
+msgstr ""
+
+#: dllwrap.c:526
+#, c-format
+msgid " Options for %s:\n"
+msgstr ""
+
+#: dllwrap.c:527
+msgid " --driver-name <driver> Defaults to \"gcc\"\n"
+msgstr ""
+
+#: dllwrap.c:528
+msgid " --driver-flags <flags> Override default ld flags\n"
+msgstr ""
+
+#: dllwrap.c:529
+msgid " --dlltool-name <dlltool> Defaults to \"dlltool\"\n"
+msgstr ""
+
+#: dllwrap.c:530
+msgid " --entry <entry> Specify alternate DLL entry point\n"
+msgstr ""
+
+#: dllwrap.c:531
+msgid " --image-base <base> Specify image base address\n"
+msgstr ""
+
+#: dllwrap.c:532
+msgid " --target <machine> i386-cygwin32 or i386-mingw32\n"
+msgstr ""
+
+#: dllwrap.c:533
+msgid " --dry-run Show what needs to be run\n"
+msgstr ""
+
+#: dllwrap.c:534
+msgid " --mno-cygwin Create Mingw DLL\n"
+msgstr ""
+
+#: dllwrap.c:535
+msgid " Options passed to DLLTOOL:\n"
+msgstr ""
+
+#: dllwrap.c:536
+msgid " --machine <machine>\n"
+msgstr ""
+
+#: dllwrap.c:537
+msgid " --output-exp <outname> Generate export file.\n"
+msgstr ""
+
+#: dllwrap.c:538
+msgid " --output-lib <outname> Generate input library.\n"
+msgstr ""
+
+#: dllwrap.c:539
+msgid " --add-indirect Add dll indirects to export file.\n"
+msgstr ""
+
+#: dllwrap.c:540
+msgid " --dllname <name> Name of input dll to put into output lib.\n"
+msgstr ""
+
+#: dllwrap.c:541
+msgid " --def <deffile> Name input .def file\n"
+msgstr ""
+
+#: dllwrap.c:542
+msgid " --output-def <deffile> Name output .def file\n"
+msgstr ""
+
+#: dllwrap.c:543
+msgid " --export-all-symbols Export all symbols to .def\n"
+msgstr ""
+
+#: dllwrap.c:544
+msgid " --no-export-all-symbols Only export .drectve symbols\n"
+msgstr ""
+
+#: dllwrap.c:545
+msgid " --exclude-symbols <list> Exclude <list> from .def\n"
+msgstr ""
+
+#: dllwrap.c:546
+msgid " --no-default-excludes Zap default exclude symbols\n"
+msgstr ""
+
+#: dllwrap.c:547
+msgid " --base-file <basefile> Read linker generated base file\n"
+msgstr ""
+
+#: dllwrap.c:548
+msgid " --no-idata4 Don't generate idata$4 section\n"
+msgstr ""
+
+#: dllwrap.c:549
+msgid " --no-idata5 Don't generate idata$5 section\n"
+msgstr ""
+
+#: dllwrap.c:550
+msgid " -U Add underscores to .lib\n"
+msgstr ""
+
+#: dllwrap.c:551
+msgid " -k Kill @<n> from exported names\n"
+msgstr ""
+
+#: dllwrap.c:552
+msgid " --add-stdcall-alias Add aliases without @<n>\n"
+msgstr ""
+
+#: dllwrap.c:553
+msgid " --as <name> Use <name> for assembler\n"
+msgstr ""
+
+#: dllwrap.c:554
+msgid " --nodelete Keep temp files.\n"
+msgstr ""
+
+#: dllwrap.c:555
+msgid " Rest are passed unmodified to the language driver\n"
+msgstr ""
+
+#: dllwrap.c:816
+msgid "Must provide at least one of -o or --dllname options"
+msgstr ""
+
+#: dllwrap.c:844
+msgid "no export definition file provided"
+msgstr ""
+
+#: 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 ""
+
+#: dllwrap.c:1007
+#, c-format
+msgid "DLLTOOL options : %s\n"
+msgstr ""
+
+#: dllwrap.c:1008
+#, c-format
+msgid "DRIVER name : %s\n"
+msgstr ""
+
+#: dllwrap.c:1009
+#, c-format
+msgid "DRIVER options : %s\n"
+msgstr ""
+
+#: ieee.c:317
msgid "unexpected end of debugging information"
msgstr ""
-#: ieee.c:411
+#: ieee.c:412
msgid "invalid number"
msgstr ""
-#: ieee.c:470
+#: ieee.c:471
msgid "invalid string length"
msgstr ""
-#: ieee.c:527 ieee.c:568
+#: ieee.c:528 ieee.c:569
msgid "expression stack overflow"
msgstr ""
-#: ieee.c:547
+#: ieee.c:548
msgid "unsupported IEEE expression operator"
msgstr ""
-#: ieee.c:562
+#: ieee.c:563
msgid "unknown section"
msgstr ""
-#: ieee.c:583
+#: ieee.c:584
msgid "expression stack underflow"
msgstr ""
-#: ieee.c:597
+#: ieee.c:598
msgid "expression stack mismatch"
msgstr ""
-#: ieee.c:636
+#: ieee.c:637
msgid "unknown builtin type"
msgstr ""
-#: ieee.c:781
+#: ieee.c:782
msgid "BCD float type not supported"
msgstr ""
-#: ieee.c:927
+#: ieee.c:928
msgid "unexpected number"
msgstr ""
-#: ieee.c:934
+#: ieee.c:935
msgid "unexpected record type"
msgstr ""
-#: ieee.c:967
+#: ieee.c:968
msgid "blocks left on stack at end"
msgstr ""
-#: ieee.c:1232
+#: ieee.c:1233
msgid "unknown BB type"
msgstr ""
-#: ieee.c:1241
+#: ieee.c:1242
msgid "stack overflow"
msgstr ""
-#: ieee.c:1266
+#: ieee.c:1267
msgid "stack underflow"
msgstr ""
-#: ieee.c:1380 ieee.c:1452 ieee.c:2151
+#: ieee.c:1381 ieee.c:1453 ieee.c:2152
msgid "illegal variable index"
msgstr ""
-#: ieee.c:1430
+#: ieee.c:1431
msgid "illegal type index"
msgstr ""
-#: ieee.c:1440 ieee.c:1477
+#: ieee.c:1441 ieee.c:1478
msgid "unknown TY code"
msgstr ""
-#: ieee.c:1459
+#: ieee.c:1460
msgid "undefined variable in TY"
msgstr ""
#. Pascal file name. FIXME.
-#: ieee.c:1870
+#: ieee.c:1871
msgid "Pascal file name not supported"
msgstr ""
-#: ieee.c:1918
+#: ieee.c:1919
msgid "unsupported qualifer"
msgstr ""
-#: ieee.c:2189
+#: ieee.c:2190
msgid "undefined variable in ATN"
msgstr ""
-#: ieee.c:2232
+#: ieee.c:2233
msgid "unknown ATN type"
msgstr ""
#. Reserved for FORTRAN common.
-#: ieee.c:2354
+#: ieee.c:2355
msgid "unsupported ATN11"
msgstr ""
#. We have no way to record this information. FIXME.
-#: ieee.c:2381
+#: ieee.c:2382
msgid "unsupported ATN12"
msgstr ""
-#: ieee.c:2441
+#: ieee.c:2442
msgid "unexpected string in C++ misc"
msgstr ""
-#: ieee.c:2454
+#: ieee.c:2455
msgid "bad misc record"
msgstr ""
-#: ieee.c:2497
+#: ieee.c:2498
msgid "unrecognized C++ misc record"
msgstr ""
-#: ieee.c:2614
+#: ieee.c:2615
msgid "undefined C++ object"
msgstr ""
-#: ieee.c:2648
+#: ieee.c:2649
msgid "unrecognized C++ object spec"
msgstr ""
-#: ieee.c:2684
+#: ieee.c:2685
msgid "unsupported C++ object type"
msgstr ""
-#: ieee.c:2694
+#: ieee.c:2695
msgid "C++ base class not defined"
msgstr ""
-#: ieee.c:2706 ieee.c:2811
+#: ieee.c:2707 ieee.c:2812
msgid "C++ object has no fields"
msgstr ""
-#: ieee.c:2725
+#: ieee.c:2726
msgid "C++ base class not found in container"
msgstr ""
-#: ieee.c:2832
+#: ieee.c:2833
msgid "C++ data member not found in container"
msgstr ""
-#: ieee.c:2873 ieee.c:3023
+#: ieee.c:2874 ieee.c:3024
msgid "unknown C++ visibility"
msgstr ""
-#: ieee.c:2907
+#: ieee.c:2908
msgid "bad C++ field bit pos or size"
msgstr ""
-#: ieee.c:2999
+#: ieee.c:3000
msgid "bad type for C++ method function"
msgstr ""
-#: ieee.c:3009
+#: ieee.c:3010
msgid "no type information for C++ method function"
msgstr ""
-#: ieee.c:3048
+#: ieee.c:3049
msgid "C++ static virtual method"
msgstr ""
-#: ieee.c:3143
+#: ieee.c:3144
msgid "unrecognized C++ object overhead spec"
msgstr ""
-#: ieee.c:3182
+#: ieee.c:3183
msgid "undefined C++ vtable"
msgstr ""
-#: ieee.c:3253
+#: ieee.c:3254
msgid "C++ default values not in a function"
msgstr ""
-#: ieee.c:3293
+#: ieee.c:3294
msgid "unrecognized C++ default type"
msgstr ""
-#: ieee.c:3324
+#: ieee.c:3325
msgid "reference parameter is not a pointer"
msgstr ""
-#: ieee.c:3409
+#: ieee.c:3410
msgid "unrecognized C++ reference type"
msgstr ""
-#: ieee.c:3491
+#: ieee.c:3492
msgid "C++ reference not found"
msgstr ""
-#: ieee.c:3499
+#: ieee.c:3500
msgid "C++ reference is not pointer"
msgstr ""
-#: ieee.c:3528 ieee.c:3536
+#: ieee.c:3529 ieee.c:3537
msgid "missing required ASN"
msgstr ""
-#: ieee.c:3566 ieee.c:3574
+#: ieee.c:3567 ieee.c:3575
msgid "missing required ATN65"
msgstr ""
-#: ieee.c:3588
+#: ieee.c:3589
msgid "bad ATN65 record"
msgstr ""
-#: ieee.c:4235
+#: ieee.c:4236
msgid "IEEE numeric overflow: 0x"
msgstr ""
-#: ieee.c:4281
+#: ieee.c:4282
#, c-format
msgid "IEEE string length overflow: %u\n"
msgstr ""
-#: ieee.c:5315
+#: ieee.c:5324
#, c-format
msgid "IEEE unsupported integer type size %u\n"
msgstr ""
-#: ieee.c:5351
+#: ieee.c:5360
#, c-format
msgid "IEEE unsupported float type size %u\n"
msgstr ""
-#: ieee.c:5387
+#: ieee.c:5396
#, c-format
msgid "IEEE unsupported complex type size %u\n"
msgstr ""
#: nlmconv.c:275 srconv.c:1966
-#, c-format
-msgid "%s: input and output files must be different\n"
+msgid "input and output files must be different"
msgstr ""
-#: nlmconv.c:325
-#, c-format
-msgid "%s: input file named both on command line and with INPUT\n"
+#: nlmconv.c:322
+msgid "input file named both on command line and with INPUT"
msgstr ""
-#: nlmconv.c:336
-#, c-format
-msgid "%s: no input file\n"
+#: nlmconv.c:331
+msgid "no input file"
msgstr ""
-#: nlmconv.c:366
-#, c-format
-msgid "%s: no name for output file\n"
+#: nlmconv.c:361
+msgid "no name for output file"
msgstr ""
-#: nlmconv.c:381
-#, c-format
-msgid "%s: warning:input and output formats are not compatible\n"
+#: nlmconv.c:374
+msgid "warning: input and output formats are not compatible"
msgstr ""
-#: nlmconv.c:411
+#: nlmconv.c:403
msgid "make .bss section"
msgstr ""
-#: nlmconv.c:420
+#: nlmconv.c:412
msgid "make .nlmsections section"
msgstr ""
-#: nlmconv.c:422
+#: nlmconv.c:414
msgid "set .nlmsections flags"
msgstr ""
-#: nlmconv.c:450
+#: nlmconv.c:442
msgid "set .bss vma"
msgstr ""
-#: nlmconv.c:457
+#: nlmconv.c:449
msgid "set .data size"
msgstr ""
-#: nlmconv.c:638
+#: nlmconv.c:629
#, c-format
-msgid "%s: warning: symbol %s imported but not in import list\n"
+msgid "warning: symbol %s imported but not in import list"
msgstr ""
-#: nlmconv.c:658
+#: nlmconv.c:649
msgid "set start address"
msgstr ""
-#: nlmconv.c:707
+#: nlmconv.c:698
#, c-format
-msgid "%s: warning: START procedure %s not defined\n"
+msgid "warning: START procedure %s not defined"
msgstr ""
-#: nlmconv.c:710
+#: nlmconv.c:700
#, c-format
-msgid "%s: warning: EXIT procedure %s not defined\n"
+msgid "warning: EXIT procedure %s not defined"
msgstr ""
-#: nlmconv.c:714
+#: nlmconv.c:702
#, c-format
-msgid "%s: warning: CHECK procedure %s not defined\n"
+msgid "warning: CHECK procedure %s not defined"
msgstr ""
-#: nlmconv.c:736 nlmconv.c:928
+#: nlmconv.c:723 nlmconv.c:912
msgid "custom section"
msgstr ""
-#: nlmconv.c:757 nlmconv.c:960
+#: nlmconv.c:744 nlmconv.c:941
msgid "help section"
msgstr ""
-#: nlmconv.c:779 nlmconv.c:979
+#: nlmconv.c:766 nlmconv.c:959
msgid "message section"
msgstr ""
-#: nlmconv.c:795 nlmconv.c:1012
+#: nlmconv.c:782 nlmconv.c:992
msgid "module section"
msgstr ""
-#: nlmconv.c:815 nlmconv.c:1029
+#: nlmconv.c:802 nlmconv.c:1008
msgid "rpc section"
msgstr ""
-#: nlmconv.c:852
+#. There is no place to record this information.
+#: nlmconv.c:838
#, c-format
-msgid "%s:%s: warning: shared libraries can not have uninitialized data\n"
+msgid "%s: warning: shared libraries can not have uninitialized data"
msgstr ""
-#: nlmconv.c:873 nlmconv.c:1049
+#: nlmconv.c:859 nlmconv.c:1027
msgid "shared section"
msgstr ""
-#: nlmconv.c:881
-#, c-format
-msgid "%s: warning: No version number given\n"
+#: nlmconv.c:867
+msgid "warning: No version number given"
msgstr ""
-#: nlmconv.c:922 nlmconv.c:954 nlmconv.c:973 nlmconv.c:1023 nlmconv.c:1043
+#: nlmconv.c:907 nlmconv.c:936 nlmconv.c:954 nlmconv.c:1003 nlmconv.c:1022
#, c-format
-msgid "%s:%s: read: %s\n"
+msgid "%s: read: %s"
msgstr ""
-#: nlmconv.c:946
-#, c-format
-msgid "%s: warning: MAP and FULLMAP are not supported; try ld -M\n"
+#: nlmconv.c:929
+msgid "warning: MAP and FULLMAP are not supported; try ld -M"
msgstr ""
-#: nlmconv.c:1121
+#: nlmconv.c:1099
#, c-format
msgid "%s: Convert an object file into a NetWare Loadable Module\n"
msgstr ""
-#: nlmconv.c:1133
+#: nlmconv.c:1111
#, c-format
msgid ""
"Usage: %s [-dhV] [-I bfdname] [-O bfdname] [-T header-file] [-l linker]\n"
@@ -1103,92 +1311,135 @@ msgid ""
" [in-file [out-file]]\n"
msgstr ""
-#: nlmconv.c:1173
+#: nlmconv.c:1151
#, c-format
-msgid "%s: support not compiled in for %s\n"
+msgid "support not compiled in for %s"
msgstr ""
-#: nlmconv.c:1216
+#: nlmconv.c:1191
msgid "make section"
msgstr ""
-#: nlmconv.c:1230
+#: nlmconv.c:1205
msgid "set section size"
msgstr ""
-#: nlmconv.c:1236
+#: nlmconv.c:1211
msgid "set section alignment"
msgstr ""
-#: nlmconv.c:1240
+#: nlmconv.c:1215
msgid "set section flags"
msgstr ""
-#: nlmconv.c:1251
+#: nlmconv.c:1226
msgid "set .nlmsections size"
msgstr ""
-#: nlmconv.c:1339 nlmconv.c:1347 nlmconv.c:1356 nlmconv.c:1361
+#: nlmconv.c:1314 nlmconv.c:1322 nlmconv.c:1331 nlmconv.c:1336
msgid "set .nlmsection contents"
msgstr ""
-#: nlmconv.c:1864
+#: nlmconv.c:1839
msgid "stub section sizes"
msgstr ""
-#: nlmconv.c:1913
+#: nlmconv.c:1888
msgid "writing stub"
msgstr ""
-#: nlmconv.c:2003
+#: nlmconv.c:1978
#, c-format
-msgid "%s: unresolved PC relative reloc against %s\n"
+msgid "unresolved PC relative reloc against %s"
msgstr ""
-#: nlmconv.c:2068
+#: nlmconv.c:2042
#, c-format
-msgid "%s: overflow when adjusting relocation against %s\n"
+msgid "overflow when adjusting relocation against %s"
msgstr ""
-#: nlmconv.c:2191
+#: nlmconv.c:2159
#, c-format
msgid "%s: execution of %s failed: "
msgstr ""
-#: nlmconv.c:2206
+#: nlmconv.c:2174
#, c-format
-msgid "%s: Execution of %s failed\n"
+msgid "Execution of %s failed"
msgstr ""
#: nm.c:294
#, c-format
+msgid "Usage: %s [OPTION]... [FILE]...\n"
+msgstr ""
+
+#: nm.c:295
+msgid "List symbols from FILEs (a.out by default).\n"
+msgstr ""
+
+#: nm.c:296
msgid ""
-"Usage: %s [-aABCDglnopPrsuvV] [-t radix] [--radix=radix] [--target=bfdname]\n"
-" [--debug-syms] [--extern-only] [--print-armap] [--print-file-name]\n"
-" [--numeric-sort] [--no-sort] [--reverse-sort] [--size-sort]\n"
-" [--undefined-only] [--portability] [-f {bsd,sysv,posix}]\n"
-" [--format={bsd,sysv,posix}] [--demangle] [--no-demangle] [--dynamic]\n"
-" [--defined-only] [--line-numbers]\n"
-" [--version] [--help]\n"
-" [file...]\n"
+"\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 ""
+
+#: nm.c:328 objdump.c:274
+#, c-format
+msgid "Report bugs to %s.\n"
msgstr ""
-#: nm.c:339
+#: nm.c:361
#, c-format
-msgid "%s: %s: invalid radix\n"
+msgid "%s: invalid radix"
msgstr ""
-#: nm.c:365
+#: nm.c:386
#, c-format
-msgid "%s: %s: invalid output format\n"
+msgid "%s: invalid output format"
msgstr ""
-#: nm.c:492
+#: nm.c:493
+msgid "Only -X 32_64 is supported"
+msgstr ""
+
+#: nm.c:535
#, c-format
-msgid "%s: data size %ld\n"
+msgid "data size %ld"
msgstr ""
-#: nm.c:1283
+#: nm.c:1325
#, c-format
msgid ""
"\n"
@@ -1197,7 +1448,7 @@ msgid ""
"\n"
msgstr ""
-#: nm.c:1285
+#: nm.c:1327
#, c-format
msgid ""
"\n"
@@ -1206,14 +1457,14 @@ msgid ""
"\n"
msgstr ""
-#: nm.c:1286 nm.c:1340
+#: nm.c:1328 nm.c:1382
msgid ""
"Name Value Class Type Size Line "
"Section\n"
"\n"
msgstr ""
-#: nm.c:1337
+#: nm.c:1379
#, c-format
msgid ""
"\n"
@@ -1222,7 +1473,7 @@ msgid ""
"\n"
msgstr ""
-#: nm.c:1339
+#: nm.c:1381
#, c-format
msgid ""
"\n"
@@ -1231,22 +1482,22 @@ msgid ""
"\n"
msgstr ""
-#: nm.c:1510
+#: nm.c:1552
msgid ""
"\n"
"Archive index:\n"
msgstr ""
-#: objcopy.c:309
+#: objcopy.c:322
#, c-format
msgid "Usage: %s <switches> in-file [out-file]\n"
msgstr ""
-#: objcopy.c:310 objcopy.c:368
+#: objcopy.c:323 objcopy.c:383
msgid " The switches are:\n"
msgstr ""
-#: objcopy.c:311
+#: objcopy.c:324
msgid ""
" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
" -O --output-target <bfdname> Create an output file in format "
@@ -1308,17 +1559,21 @@ msgid ""
" --remove-leading-char Remove leading character from global "
"symbols\n"
" --redefine-sym <old>=<new> Redefine symbol name <old> to <new>\n"
+" --srec-len <number> Restrict the length of generated "
+"Srecords\n"
+" --srec-forceS3 Restrict the type of generated Srecords "
+"to S3\n"
" -v --verbose List all object files modified\n"
" -V --version Display this program's version number\n"
" -h --help Display this output\n"
msgstr ""
-#: objcopy.c:367
+#: objcopy.c:382
#, c-format
msgid "Usage: %s <switches> in-file(s)\n"
msgstr ""
-#: objcopy.c:369
+#: objcopy.c:384
msgid ""
" -I --input-target <bfdname> Assume input file is in format <bfdname>\n"
" -O --output-target <bfdname> Create an output file in format "
@@ -1343,1266 +1598,1382 @@ msgid ""
" -o <file> Place stripped output into <file>\n"
msgstr ""
-#: objcopy.c:439
+#: objcopy.c:454
#, c-format
msgid "unrecognized section flag `%s'"
msgstr ""
-#: objcopy.c:440
+#: objcopy.c:455
#, c-format
msgid "supported flags: %s"
msgstr ""
-#: objcopy.c:692
+#: objcopy.c:712
#, c-format
msgid "%s: Multiple redefinition of symbol \"%s\""
msgstr ""
-#: objcopy.c:699
+#: objcopy.c:719
#, c-format
msgid "%s: Symbol \"%s\" is target of more than one redefinition"
msgstr ""
-#: objcopy.c:753
+#: objcopy.c:773
#, c-format
msgid "copy from %s(%s) to %s(%s)\n"
msgstr ""
-#: objcopy.c:772
+#: objcopy.c:792
#, c-format
msgid "Warning: Output file cannot represent architecture %s"
msgstr ""
-#: objcopy.c:799
+#: objcopy.c:819
#, c-format
msgid "can't create section `%s': %s"
msgstr ""
-#: objcopy.c:885
+#: objcopy.c:905
#, c-format
msgid "Can't fill gap after %s: %s"
msgstr ""
-#: objcopy.c:910
+#: objcopy.c:930
#, c-format
msgid "Can't add padding to %s: %s"
msgstr ""
-#: objcopy.c:1048
+#: objcopy.c:1068
#, c-format
msgid "%s: error copying private BFD data: %s"
msgstr ""
-#: objcopy.c:1082
+#: objcopy.c:1102
#, c-format
msgid "cannot mkdir %s for archive copying (error: %s)"
msgstr ""
-#: objcopy.c:1351
+#: objcopy.c:1291
+msgid "making"
+msgstr ""
+
+#: objcopy.c:1300
+msgid "size"
+msgstr ""
+
+#: objcopy.c:1314
+msgid "vma"
+msgstr ""
+
+#: 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 ""
-#: objcopy.c:1625
+#: objcopy.c:1645
#, c-format
msgid "%s: can't create debugging section: %s"
msgstr ""
-#: objcopy.c:1640
+#: objcopy.c:1660
#, c-format
msgid "%s: can't set debugging section contents: %s"
msgstr ""
-#: objcopy.c:1649
+#: objcopy.c:1669
#, c-format
msgid "%s: don't know how to write debugging information for %s"
msgstr ""
-#: objcopy.c:1754
+#: objcopy.c:1775
#, c-format
msgid "%s: cannot stat: %s"
msgstr ""
-#: objcopy.c:1804
+#: objcopy.c:1825
msgid "byte number must be non-negative"
msgstr ""
-#: objcopy.c:1810
+#: objcopy.c:1831
msgid "interleave must be positive"
msgstr ""
-#: objcopy.c:1830 objcopy.c:1838
+#: objcopy.c:1851 objcopy.c:1859
#, c-format
msgid "%s both copied and removed"
msgstr ""
-#: objcopy.c:1907 objcopy.c:1977 objcopy.c:2078 objcopy.c:2106
+#: objcopy.c:1928 objcopy.c:1998 objcopy.c:2099 objcopy.c:2127
#, c-format
msgid "bad format for %s"
msgstr ""
-#: objcopy.c:1910
+#: objcopy.c:1931
#, c-format
msgid "cannot stat: %s: %s"
msgstr ""
-#: objcopy.c:1928
+#: objcopy.c:1949
#, c-format
msgid "cannot open: %s: %s"
msgstr ""
-#: objcopy.c:1932
+#: objcopy.c:1953
#, c-format
msgid "%s: fread failed"
msgstr ""
-#: objcopy.c:2046
+#: objcopy.c:2067
#, c-format
msgid "Warning: truncating gap-fill from 0x%s to 0x%x"
msgstr ""
-#: objcopy.c:2140
+#: objcopy.c:2169
msgid "byte number must be less than interleave"
msgstr ""
-#: objcopy.c:2159
+#: objcopy.c:2188
#, c-format
msgid "Cannot stat: %s: %s"
msgstr ""
-#: objcopy.c:2199 objcopy.c:2213
+#: objcopy.c:2228 objcopy.c:2242
#, c-format
msgid "%s %s%c0x%s never used"
msgstr ""
-#: objdump.c:229
+#: objdump.c:223
#, c-format
-msgid "Usage: %s <switches> file(s)\n"
+msgid "Usage: %s OPTION... FILE...\n"
msgstr ""
-#: objdump.c:230
-msgid " At least one of the following switches must be given:\n"
+#: objdump.c:224
+msgid "Display information from object FILE.\n"
msgstr ""
-#: objdump.c:231
+#: objdump.c:225
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 "
+"\n"
+" At least one of the following switches must be given:\n"
+msgstr ""
+
+#: 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 "
+" -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 "
+" -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 the STABS contents of an ELF format 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 "
+" -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"
+" -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:253
+#: objdump.c:248
msgid ""
"\n"
" The following switches are optional:\n"
msgstr ""
-#: objdump.c:254
+#: 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 <o> Pass text <o> on to the disassembler\n"
+" -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 "
+" -l, --line-numbers Include line numbers and filenames in "
"output\n"
-" -C --demangle Decode mangled/processed symbol names\n"
-" -w --wide Format output for more than 80 columns\n"
-" -z --disassemble-zeroes Do not skip blocks of zeroes when "
+" -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"
+" --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 "
+" --adjust-vma=OFFSET Add OFFSET to all displayed section "
"addresses\n"
"\n"
msgstr ""
-#: objdump.c:420
+#: objdump.c:419
msgid "Sections:\n"
msgstr ""
-#: objdump.c:423
+#: objdump.c:422
msgid "Idx Name Size VMA LMA File off Algn"
msgstr ""
-#: objdump.c:425
+#: objdump.c:424
msgid ""
"Idx Name Size VMA LMA File off "
"Algn"
msgstr ""
-#: objdump.c:429
+#: objdump.c:428
msgid " Flags"
msgstr ""
-#: objdump.c:479
+#: objdump.c:478
#, c-format
-msgid "%s: %s: not a dynamic object\n"
+msgid "%s: not a dynamic object"
msgstr ""
-#: objdump.c:496
+#: objdump.c:494
#, c-format
-msgid "%s: %s: No dynamic symbols\n"
+msgid "%s: No dynamic symbols"
msgstr ""
-#: objdump.c:1200
-msgid "Out of virtual memory\n"
+#: objdump.c:1197
+msgid "Out of virtual memory"
msgstr ""
-#: objdump.c:1611
+#: objdump.c:1616
#, c-format
-msgid "%s: Can't use supplied machine %s\n"
+msgid "Can't use supplied machine %s"
msgstr ""
-#: objdump.c:1632
+#: objdump.c:1634
#, c-format
-msgid "%s: Can't disassemble for architecture %s\n"
+msgid "Can't disassemble for architecture %s\n"
msgstr ""
-#: objdump.c:1709
+#: objdump.c:1716
#, c-format
msgid "Disassembly of section %s:\n"
msgstr ""
-#: objdump.c:1883
+#: objdump.c:1890
#, c-format
msgid ""
"No %s section present\n"
"\n"
msgstr ""
-#: objdump.c:1890
+#: objdump.c:1897
#, c-format
-msgid "%s: %s has no %s section\n"
+msgid "%s has no %s section"
msgstr ""
-#: objdump.c:1904 objdump.c:1916
+#: objdump.c:1911
#, c-format
-msgid "%s: Reading %s section of %s failed: %s\n"
+msgid "Reading %s section of %s failed: %s"
msgstr ""
-#: objdump.c:1959
+#: objdump.c:1923
+#, c-format
+msgid "Reading %s section of %s failed: %s\n"
+msgstr ""
+
+#: objdump.c:1966
#, c-format
msgid ""
"Contents of %s section:\n"
"\n"
msgstr ""
-#: objdump.c:2059
+#: objdump.c:2066
#, c-format
msgid "architecture: %s, "
msgstr ""
-#: objdump.c:2062
+#: objdump.c:2069
#, c-format
msgid "flags 0x%08x:\n"
msgstr ""
-#: objdump.c:2075
+#: objdump.c:2082
msgid ""
"\n"
"start address 0x"
msgstr ""
-#: objdump.c:2107
+#: objdump.c:2114
#, c-format
msgid ""
"\n"
"%s: file format %s\n"
msgstr ""
-#: objdump.c:2150
+#: objdump.c:2156
#, c-format
-msgid "%s: printing debugging information failed\n"
+msgid "%s: printing debugging information failed"
msgstr ""
-#: objdump.c:2227
+#: objdump.c:2233
#, c-format
msgid "In archive %s:\n"
msgstr ""
-#: objdump.c:2279
+#: objdump.c:2285
#, c-format
msgid "Contents of section %s:\n"
msgstr ""
-#: objdump.c:2788
+#: objdump.c:2798
#, c-format
msgid "BFD header file version %s\n"
msgstr ""
-#: objdump.c:2861
-#, c-format
-msgid "%s: unrecognized -E option\n"
+#: objdump.c:2882
+msgid "unrecognized -E option"
msgstr ""
-#: objdump.c:2873
+#: objdump.c:2893
#, c-format
-msgid "%s: unrecognized --endian type `%s'\n"
+msgid "unrecognized --endian type `%s'"
msgstr ""
-#: rdcoff.c:204
+#: rdcoff.c:205
#, c-format
-msgid "%s: parse_coff_type: Bad type code 0x%x\n"
+msgid "parse_coff_type: Bad type code 0x%x"
msgstr ""
-#: rdcoff.c:423 rdcoff.c:531 rdcoff.c:712
+#: rdcoff.c:423 rdcoff.c:531 rdcoff.c:730
#, c-format
-msgid "%s: bfd_coff_get_syment failed: %s\n"
+msgid "bfd_coff_get_syment failed: %s"
msgstr ""
-#: rdcoff.c:439 rdcoff.c:732
+#: rdcoff.c:439 rdcoff.c:750
#, c-format
-msgid "%s: bfd_coff_get_auxent failed: %s\n"
+msgid "bfd_coff_get_auxent failed: %s"
msgstr ""
-#: rdcoff.c:798
+#: rdcoff.c:817
#, c-format
-msgid "%s: %ld: .bf without preceding function\n"
+msgid "%ld: .bf without preceding function"
msgstr ""
-#: rdcoff.c:848
+#: rdcoff.c:867
#, c-format
-msgid "%s: %ld: unexpected .ef\n"
+msgid "%ld: unexpected .ef\n"
msgstr ""
#: rddbg.c:87
#, c-format
-msgid "%s: no recognized debugging information\n"
+msgid "%s: no recognized debugging information"
msgstr ""
#: rddbg.c:410
msgid "Last stabs entries before error:\n"
msgstr ""
-#: readelf.c:303 readelf.c:329
+#: readelf.c:260
+#, c-format
+msgid "Unable to seek to start of %s at %x\n"
+msgstr ""
+
+#: readelf.c:268
+#, c-format
+msgid "Out of memory allocating %d bytes for %s\n"
+msgstr ""
+
+#: readelf.c:274
+#, c-format
+msgid "Unable to read in %d bytes of %s\n"
+msgstr ""
+
+#: readelf.c:284
+#, c-format
+msgid "Unable to seek to %x for %s\n"
+msgstr ""
+
+#: readelf.c:289
+#, c-format
+msgid "Unable to read data at %x for %s\n"
+msgstr ""
+
+#: readelf.c:304 readelf.c:330
#, c-format
msgid "%s: Error: "
msgstr ""
-#: readelf.c:315 readelf.c:344
+#: readelf.c:316 readelf.c:345
#, c-format
msgid "%s: Warning: "
msgstr ""
-#: readelf.c:394 readelf.c:532
+#: readelf.c:395 readelf.c:533
#, c-format
msgid "Unhandled data length: %d\n"
msgstr ""
-#: readelf.c:591
+#: readelf.c:597
msgid "Don't know about relocations on this machine architecture\n"
msgstr ""
-#: readelf.c:631 readelf.c:660 readelf.c:692 readelf.c:720
+#: readelf.c:637 readelf.c:666 readelf.c:698 readelf.c:726
msgid "out of memory parsing relocs"
msgstr ""
-#: readelf.c:738
+#: readelf.c:744
msgid ""
" Offset Info Type Symbol's Value Symbol's Name "
"Addend\n"
msgstr ""
-#: readelf.c:741
+#: readelf.c:747
msgid " Offset Info Type Symbol's Value Symbol's Name\n"
msgstr ""
-#: readelf.c:885 readelf.c:887
+#: readelf.c:907 readelf.c:909
#, c-format
msgid "unrecognised: %-7lx"
msgstr ""
-#: readelf.c:912
+#: readelf.c:934
#, c-format
msgid "<string table index %3ld>"
msgstr ""
-#: readelf.c:1119
+#: readelf.c:1147
#, c-format
msgid "Processor Specific: %lx"
msgstr ""
-#: readelf.c:1138
+#: readelf.c:1166
#, c-format
msgid "Operating System specific: %lx"
msgstr ""
-#: readelf.c:1141 readelf.c:1506
+#: readelf.c:1169 readelf.c:1677
#, c-format
msgid "<unknown>: %lx"
msgstr ""
-#: readelf.c:1155
+#: readelf.c:1183
msgid "NONE (None)"
msgstr ""
-#: readelf.c:1156
+#: readelf.c:1184
msgid "REL (Relocatable file)"
msgstr ""
-#: readelf.c:1157
+#: readelf.c:1185
msgid "EXEC (Executable file)"
msgstr ""
-#: readelf.c:1158
+#: readelf.c:1186
msgid "DYN (Shared object file)"
msgstr ""
-#: readelf.c:1159
+#: readelf.c:1187
msgid "CORE (Core file)"
msgstr ""
-#: readelf.c:1163
+#: readelf.c:1191
#, c-format
msgid "Processor Specific: (%x)"
msgstr ""
-#: readelf.c:1165
+#: readelf.c:1193
#, c-format
msgid "OS Specific: (%x)"
msgstr ""
-#: readelf.c:1167 readelf.c:1244 readelf.c:1638
+#: readelf.c:1195 readelf.c:1281 readelf.c:1811
#, c-format
msgid "<unknown>: %x"
msgstr ""
-#: readelf.c:1180
+#: readelf.c:1208
msgid "None"
msgstr ""
-#: readelf.c:1676
+#: readelf.c:1849
msgid "Usage: readelf {options} elf-file(s)\n"
msgstr ""
-#: readelf.c:1677
+#: readelf.c:1850
msgid " Options are:\n"
msgstr ""
-#: readelf.c:1678
+#: readelf.c:1851
msgid " -a or --all Equivalent to: -h -l -S -s -r -d -V -A -I\n"
msgstr ""
-#: readelf.c:1679
+#: readelf.c:1852
msgid " -h or --file-header Display the ELF file header\n"
msgstr ""
-#: readelf.c:1680
+#: readelf.c:1853
msgid " -l or --program-headers or --segments\n"
msgstr ""
-#: readelf.c:1681
+#: readelf.c:1854
msgid " Display the program headers\n"
msgstr ""
-#: readelf.c:1682
+#: readelf.c:1855
msgid " -S or --section-headers or --sections\n"
msgstr ""
-#: readelf.c:1683
+#: readelf.c:1856
msgid " Display the sections' header\n"
msgstr ""
-#: readelf.c:1684
+#: readelf.c:1857
msgid " -e or --headers Equivalent to: -h -l -S\n"
msgstr ""
-#: readelf.c:1685
+#: readelf.c:1858
msgid " -s or --syms or --symbols Display the symbol table\n"
msgstr ""
-#: readelf.c:1686
+#: readelf.c:1859
msgid " -n or --notes Display the core notes (if present)\n"
msgstr ""
-#: readelf.c:1687
+#: readelf.c:1860
msgid " -r or --relocs Display the relocations (if present)\n"
msgstr ""
-#: readelf.c:1688
+#: readelf.c:1861
msgid " -d or --dynamic Display the dynamic segment (if present)\n"
msgstr ""
-#: readelf.c:1689
+#: readelf.c:1862
msgid " -V or --version-info Display the version sections (if present)\n"
msgstr ""
-#: readelf.c:1690
+#: readelf.c:1863
msgid ""
" -A or --arch-specific Display architecture specific information (if "
"any).\n"
msgstr ""
-#: readelf.c:1691
+#: readelf.c:1864
msgid ""
" -D or --use-dynamic Use the dynamic section info when displaying "
"symbols\n"
msgstr ""
-#: readelf.c:1692
+#: readelf.c:1865
msgid " -x <number> or --hex-dump=<number>\n"
msgstr ""
-#: readelf.c:1693
+#: readelf.c:1866
msgid " Dump the contents of section <number>\n"
msgstr ""
-#: readelf.c:1694
-msgid " -w[liapr] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges]\n"
+#: readelf.c:1867
+msgid ""
+" -w[liaprf] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]\n"
msgstr ""
-#: readelf.c:1695
+#: readelf.c:1868
msgid ""
" Display the contents of DWARF2 debug sections\n"
msgstr ""
-#: readelf.c:1697
+#: readelf.c:1870
msgid " -i <number> or --instruction-dump=<number>\n"
msgstr ""
-#: readelf.c:1698
+#: readelf.c:1871
msgid ""
" Disassemble the contents of section <number>\n"
msgstr ""
-#: readelf.c:1700
+#: readelf.c:1873
msgid " -I or --histogram Display histogram of bucket list lengths\n"
msgstr ""
-#: readelf.c:1701
+#: readelf.c:1874
msgid " -v or --version Display the version number of readelf\n"
msgstr ""
-#: readelf.c:1702
+#: readelf.c:1875
msgid " -H or --help Display this information\n"
msgstr ""
-#: readelf.c:1720
+#: readelf.c:1893
msgid "Out of memory allocating dump request table."
msgstr ""
-#: readelf.c:1855
+#: readelf.c:2033
#, c-format
msgid "Unrecognised debug option '%s'\n"
msgstr ""
-#: readelf.c:1880
+#: readelf.c:2058
#, c-format
msgid "Invalid option '-%c'\n"
msgstr ""
-#: readelf.c:1893
+#: readelf.c:2071
msgid "Nothing to do.\n"
msgstr ""
-#: readelf.c:1906 readelf.c:1923 readelf.c:3493
+#: readelf.c:2084 readelf.c:2101 readelf.c:3740
msgid "none"
msgstr ""
-#: readelf.c:1907
+#: readelf.c:2085
msgid "ELF32"
msgstr ""
-#: readelf.c:1908
+#: readelf.c:2086
msgid "ELF64"
msgstr ""
-#: readelf.c:1910 readelf.c:1927 readelf.c:1946
+#: readelf.c:2088 readelf.c:2105 readelf.c:2133
#, c-format
msgid "<unknown: %x>"
msgstr ""
-#: readelf.c:1924
+#: readelf.c:2102
msgid "2's complement, little endian"
msgstr ""
-#: readelf.c:1925
+#: readelf.c:2103
msgid "2's complement, big endian"
msgstr ""
-#: readelf.c:1940
+#: readelf.c:2118
msgid "UNIX - System V"
msgstr ""
-#: readelf.c:1941
+#: readelf.c:2119
msgid "UNIX - HP-UX"
msgstr ""
-#: readelf.c:1942
+#: readelf.c:2120
+msgid "UNIX - NetBSD"
+msgstr ""
+
+#: readelf.c:2121
msgid "UNIX - Linux"
msgstr ""
-#: readelf.c:1943
+#: readelf.c:2122
+msgid "GNU/Hurd"
+msgstr ""
+
+#: readelf.c:2123
+msgid "UNIX - Solaris"
+msgstr ""
+
+#: readelf.c:2124
+msgid "UNIX - AIX"
+msgstr ""
+
+#: readelf.c:2125
+msgid "UNIX - IRIX"
+msgstr ""
+
+#: readelf.c:2126
+msgid "UNIX - FreeBSD"
+msgstr ""
+
+#: readelf.c:2127
+msgid "UNIX - TRU64"
+msgstr ""
+
+#: readelf.c:2128
+msgid "Novell - Modesto"
+msgstr ""
+
+#: readelf.c:2129
+msgid "UNIX - OpenBSD"
+msgstr ""
+
+#: readelf.c:2130
msgid "Standalone App"
msgstr ""
-#: readelf.c:1944
+#: readelf.c:2131
msgid "ARM"
msgstr ""
-#: readelf.c:1961
+#: readelf.c:2148
msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
msgstr ""
-#: readelf.c:1969
+#: readelf.c:2156
msgid "ELF Header:\n"
msgstr ""
-#: readelf.c:1970
+#: readelf.c:2157
msgid " Magic: "
msgstr ""
-#: readelf.c:1974
+#: readelf.c:2161
#, c-format
msgid " Class: %s\n"
msgstr ""
-#: readelf.c:1976
+#: readelf.c:2163
#, c-format
msgid " Data: %s\n"
msgstr ""
-#: readelf.c:1978
+#: readelf.c:2165
#, c-format
msgid " Version: %d %s\n"
msgstr ""
-#: readelf.c:1985
+#: readelf.c:2172
#, c-format
msgid " OS/ABI: %s\n"
msgstr ""
-#: readelf.c:1987
+#: readelf.c:2174
#, c-format
msgid " ABI Version: %d\n"
msgstr ""
-#: readelf.c:1989
+#: readelf.c:2176
#, c-format
msgid " Type: %s\n"
msgstr ""
-#: readelf.c:1991
+#: readelf.c:2178
#, c-format
msgid " Machine: %s\n"
msgstr ""
-#: readelf.c:1993
+#: readelf.c:2180
#, c-format
msgid " Version: 0x%lx\n"
msgstr ""
-#: readelf.c:1996
+#: readelf.c:2183
msgid " Entry point address: "
msgstr ""
-#: readelf.c:1998
+#: readelf.c:2185
msgid ""
"\n"
" Start of program headers: "
msgstr ""
-#: readelf.c:2000
+#: readelf.c:2187
msgid ""
" (bytes into file)\n"
" Start of section headers: "
msgstr ""
-#: readelf.c:2002
+#: readelf.c:2189
msgid " (bytes into file)\n"
msgstr ""
-#: readelf.c:2004
+#: readelf.c:2191
#, c-format
msgid " Flags: 0x%lx%s\n"
msgstr ""
-#: readelf.c:2007
+#: readelf.c:2194
#, c-format
msgid " Size of this header: %ld (bytes)\n"
msgstr ""
-#: readelf.c:2009
+#: readelf.c:2196
#, c-format
msgid " Size of program headers: %ld (bytes)\n"
msgstr ""
-#: readelf.c:2011
+#: readelf.c:2198
#, c-format
msgid " Number of program headers: %ld\n"
msgstr ""
-#: readelf.c:2013
+#: readelf.c:2200
#, c-format
msgid " Size of section headers: %ld (bytes)\n"
msgstr ""
-#: readelf.c:2015
+#: readelf.c:2202
#, c-format
msgid " Number of section headers: %ld\n"
msgstr ""
-#: readelf.c:2017
+#: readelf.c:2204
#, c-format
msgid " Section header string table index: %ld\n"
msgstr ""
-#: readelf.c:2102
+#: readelf.c:2289
msgid ""
"\n"
"There are no program headers in this file.\n"
msgstr ""
-#: readelf.c:2108
+#: readelf.c:2295
#, c-format
msgid ""
"\n"
"Elf file type is %s\n"
msgstr ""
-#: readelf.c:2109
+#: readelf.c:2296
msgid "Entry point "
msgstr ""
-#: readelf.c:2111
+#: readelf.c:2298
#, c-format
msgid ""
"\n"
"There are %d program headers, starting at offset "
msgstr ""
-#: readelf.c:2122 readelf.c:2298 readelf.c:2340 readelf.c:2383 readelf.c:2424
-#: readelf.c:2932 readelf.c:2973 readelf.c:3149 readelf.c:4111 readelf.c:4125
-#: readelf.c:7023 readelf.c:7063
+#: 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 ""
-#: readelf.c:2140
+#: readelf.c:2327
#, c-format
msgid ""
"\n"
"Program Header%s:\n"
msgstr ""
-#: readelf.c:2144
+#: readelf.c:2331
msgid ""
" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"
msgstr ""
-#: readelf.c:2148
+#: readelf.c:2335
msgid " Type Offset VirtAddr PhysAddr\n"
msgstr ""
-#: readelf.c:2150
+#: readelf.c:2337
msgid " FileSiz MemSiz Flags Align\n"
msgstr ""
-#: readelf.c:2208
+#: readelf.c:2395
msgid "more than one dynamic segment\n"
msgstr ""
-#: readelf.c:2216
+#: readelf.c:2403
msgid "Unable to find program interpreter name\n"
msgstr ""
-#: readelf.c:2223
+#: readelf.c:2410
#, c-format
msgid ""
"\n"
" [Requesting program interpreter: %s]"
msgstr ""
-#: readelf.c:2241
+#: readelf.c:2428
msgid ""
"\n"
" Section to Segment mapping:\n"
msgstr ""
-#: readelf.c:2242
+#: readelf.c:2429
msgid " Segment Sections...\n"
msgstr ""
-#: readelf.c:2505
+#: readelf.c:2693
msgid ""
"\n"
"There are no sections in this file.\n"
msgstr ""
-#: readelf.c:2511
+#: readelf.c:2699
#, c-format
msgid "There are %d section headers, starting at offset 0x%lx:\n"
msgstr ""
-#: readelf.c:2551
+#: readelf.c:2739
msgid "File contains multiple dynamic symbol tables\n"
msgstr ""
-#: readelf.c:2564
+#: readelf.c:2752
msgid "File contains multiple dynamic string tables\n"
msgstr ""
-#: readelf.c:2591
+#: readelf.c:2786
#, c-format
msgid ""
"\n"
"Section Header%s:\n"
msgstr ""
-#: readelf.c:2595
+#: readelf.c:2790
msgid ""
" [Nr] Name Type Addr Off Size ES Flg Lk "
"Inf Al\n"
msgstr ""
-#: readelf.c:2598
+#: readelf.c:2793
msgid " [Nr] Name Type Address Offset\n"
msgstr ""
-#: readelf.c:2599
+#: readelf.c:2794
msgid " Size EntSize Flags Link Info Align\n"
msgstr ""
-#: readelf.c:2646
-msgid ""
-"Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+#: readelf.c:2841
+msgid "Key to Flags:\n"
msgstr ""
-#: readelf.c:2647
-msgid ""
-" I (info), L (link order), O (extra OS processing required)\n"
+#: readelf.c:2842
+msgid " W (write), A (alloc), X (execute), M (merge), S (strings)\n"
+msgstr ""
+
+#: readelf.c:2843
+msgid " I (info), L (link order), G (group), x (unknown)\n"
msgstr ""
-#: readelf.c:2648
-msgid " o (os specific), p (processor specific) x (unknown)\n"
+#: readelf.c:2844
+msgid ""
+" O (extra OS processing required) o (OS specific), p (processor specific)\n"
msgstr ""
-#: readelf.c:2706
+#: readelf.c:2902
#, c-format
msgid ""
"\n"
"Relocation section at offset 0x%lx contains %ld bytes:\n"
msgstr ""
-#: readelf.c:2713
+#: readelf.c:2909
msgid ""
"\n"
"There are no dynamic relocations in this file.\n"
msgstr ""
-#: readelf.c:2741
+#: readelf.c:2937
msgid ""
"\n"
"Relocation section "
msgstr ""
-#: readelf.c:2748
+#: readelf.c:2944
#, c-format
msgid " at offset 0x%lx contains %lu entries:\n"
msgstr ""
-#: readelf.c:2776
+#: readelf.c:2972
msgid ""
"\n"
"There are no relocations in this file.\n"
msgstr ""
-#: readelf.c:3026
+#: readelf.c:3227
msgid ""
"\n"
"There is no dynamic segment in this file.\n"
msgstr ""
-#: readelf.c:3060
+#: readelf.c:3261
msgid "Unable to seek to end of file!"
msgstr ""
-#: readelf.c:3069
+#: readelf.c:3270
msgid "Unable to determine the number of symbols to load\n"
msgstr ""
-#: readelf.c:3099
+#: readelf.c:3300
msgid "Unable to seek to end of file\n"
msgstr ""
-#: readelf.c:3105
+#: readelf.c:3306
msgid "Unable to determine the length of the dynamic string table\n"
msgstr ""
-#: readelf.c:3166
+#: readelf.c:3367
#, c-format
msgid ""
"\n"
"Dynamic segment at offset 0x%x contains %ld entries:\n"
msgstr ""
-#: readelf.c:3169
+#: readelf.c:3370
msgid " Tag Type Name/Value\n"
msgstr ""
-#: readelf.c:3200
+#: readelf.c:3406
msgid "Auxiliary library"
msgstr ""
-#: readelf.c:3202
+#: readelf.c:3410
msgid "Filter library"
msgstr ""
-#: readelf.c:3218 readelf.c:3239 readelf.c:3265
+#: 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:3220 readelf.c:3241 readelf.c:3267
+#: readelf.c:3442 readelf.c:3468 readelf.c:3494
msgid " None\n"
msgstr ""
-#: readelf.c:3370
+#: readelf.c:3613
#, c-format
msgid "Shared library: [%s]"
msgstr ""
-#: readelf.c:3373
+#: readelf.c:3616
msgid " program interpreter"
msgstr ""
-#: readelf.c:3377
+#: readelf.c:3620
#, c-format
msgid "Library soname: [%s]"
msgstr ""
-#: readelf.c:3381
+#: readelf.c:3624
#, c-format
msgid "Library rpath: [%s]"
msgstr ""
-#: readelf.c:3442
+#: readelf.c:3628
+#, c-format
+msgid "Library runpath: [%s]"
+msgstr ""
+
+#: readelf.c:3689
#, c-format
msgid "Not needed object: [%s]\n"
msgstr ""
-#: readelf.c:3539
+#: readelf.c:3786
#, c-format
msgid ""
"\n"
"Version definition section '%s' contains %ld entries:\n"
msgstr ""
-#: readelf.c:3542
+#: readelf.c:3789
msgid " Addr: 0x"
msgstr ""
-#: readelf.c:3544 readelf.c:3732
+#: readelf.c:3791 readelf.c:3979
#, c-format
msgid " Offset: %#08lx Link: %lx (%s)\n"
msgstr ""
-#: readelf.c:3574
+#: readelf.c:3821
#, c-format
msgid " %#06x: Rev: %d Flags: %s"
msgstr ""
-#: readelf.c:3577
+#: readelf.c:3824
#, c-format
msgid " Index: %d Cnt: %d "
msgstr ""
-#: readelf.c:3588
+#: readelf.c:3835
#, c-format
msgid "Name: %s\n"
msgstr ""
-#: readelf.c:3590
+#: readelf.c:3837
#, c-format
msgid "Name index: %ld\n"
msgstr ""
-#: readelf.c:3605
+#: readelf.c:3852
#, c-format
msgid " %#06x: Parent %d: %s\n"
msgstr ""
-#: readelf.c:3608
+#: readelf.c:3855
#, c-format
msgid " %#06x: Parent %d, name index: %ld\n"
msgstr ""
-#: readelf.c:3627
+#: readelf.c:3874
#, c-format
msgid ""
"\n"
"Version needs section '%s' contains %ld entries:\n"
msgstr ""
-#: readelf.c:3630
+#: readelf.c:3877
msgid " Addr: 0x"
msgstr ""
-#: readelf.c:3632
+#: readelf.c:3879
#, c-format
msgid " Offset: %#08lx Link to section: %ld (%s)\n"
msgstr ""
-#: readelf.c:3658
+#: readelf.c:3905
#, c-format
msgid " %#06x: Version: %d"
msgstr ""
-#: readelf.c:3661
+#: readelf.c:3908
#, c-format
msgid " File: %s"
msgstr ""
-#: readelf.c:3663
+#: readelf.c:3910
#, c-format
msgid " File: %lx"
msgstr ""
-#: readelf.c:3665
+#: readelf.c:3912
#, c-format
msgid " Cnt: %d\n"
msgstr ""
-#: readelf.c:3683
+#: readelf.c:3930
#, c-format
msgid " %#06x: Name: %s"
msgstr ""
-#: readelf.c:3686
+#: readelf.c:3933
#, c-format
msgid " %#06x: Name index: %lx"
msgstr ""
-#: readelf.c:3689
+#: readelf.c:3936
#, c-format
msgid " Flags: %s Version: %d\n"
msgstr ""
-#: readelf.c:3727
+#: readelf.c:3974
#, c-format
msgid ""
"\n"
"Version symbols section '%s' contains %d entries:\n"
msgstr ""
-#: readelf.c:3730
+#: readelf.c:3977
msgid " Addr: "
msgstr ""
-#: readelf.c:3760
+#: readelf.c:4007
msgid " 0 (*local*) "
msgstr ""
-#: readelf.c:3764
+#: readelf.c:4011
msgid " 1 (*global*) "
msgstr ""
-#: readelf.c:3986
+#: readelf.c:4233
msgid ""
"\n"
"No version information found in this file.\n"
msgstr ""
-#: readelf.c:4004 readelf.c:4039
+#: readelf.c:4251 readelf.c:4286
#, c-format
msgid "<processor specific>: %d"
msgstr ""
-#: readelf.c:4006 readelf.c:4051
+#: readelf.c:4253 readelf.c:4298
#, c-format
msgid "<OS specific>: %d"
msgstr ""
-#: readelf.c:4008 readelf.c:4054
+#: readelf.c:4255 readelf.c:4301
#, c-format
msgid "<unknown>: %d"
msgstr ""
-#: readelf.c:4117
+#: readelf.c:4364
msgid "Unable to read in dynamic data\n"
msgstr ""
-#: readelf.c:4159
+#: readelf.c:4406
msgid "Unable to seek to start of dynamic information"
msgstr ""
-#: readelf.c:4165
+#: readelf.c:4412
msgid "Failed to read in number of buckets\n"
msgstr ""
-#: readelf.c:4171
+#: readelf.c:4418
msgid "Failed to read in number of chains\n"
msgstr ""
-#: readelf.c:4191
+#: readelf.c:4438
msgid ""
"\n"
"Symbol table for image:\n"
msgstr ""
-#: readelf.c:4193
+#: readelf.c:4440
msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: readelf.c:4195
+#: readelf.c:4442
msgid " Num Buc: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: readelf.c:4239
+#: readelf.c:4486
#, c-format
msgid ""
"\n"
"Symbol table '%s' contains %lu entries:\n"
msgstr ""
-#: readelf.c:4243
+#: readelf.c:4490
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: readelf.c:4245
+#: readelf.c:4492
msgid " Num: Value Size Type Bind Vis Ndx Name\n"
msgstr ""
-#: readelf.c:4354
+#: readelf.c:4601
msgid "bad dynamic symbol"
msgstr ""
-#: readelf.c:4413
+#: readelf.c:4660
msgid ""
"\n"
"Dynamic symbol information is not available for displaying symbols.\n"
msgstr ""
-#: readelf.c:4425
+#: readelf.c:4672
#, c-format
msgid ""
"\n"
"Histogram for bucket list length (total of %d buckets):\n"
msgstr ""
-#: readelf.c:4427
+#: readelf.c:4674
msgid " Length Number %% of total Coverage\n"
msgstr ""
-#: readelf.c:4432 readelf.c:4451 readelf.c:6704 readelf.c:6897
+#: readelf.c:4679 readelf.c:4698 readelf.c:7423 readelf.c:7616
msgid "Out of memory"
msgstr ""
-#: readelf.c:4500
+#: readelf.c:4747
#, c-format
msgid ""
"\n"
"Dynamic info segment at offset 0x%lx contains %d entries:\n"
msgstr ""
-#: readelf.c:4503
+#: readelf.c:4750
msgid " Num: Name BoundTo Flags\n"
msgstr ""
-#: readelf.c:4551
+#: readelf.c:4798
#, c-format
msgid ""
"\n"
"Assembly dump of section %s\n"
msgstr ""
-#: readelf.c:4574
+#: readelf.c:4821
#, c-format
msgid ""
"\n"
"Section '%s' has no data to dump.\n"
msgstr ""
-#: readelf.c:4579
+#: readelf.c:4826
#, c-format
msgid ""
"\n"
"Hex dump of section '%s':\n"
msgstr ""
-#: readelf.c:4731
+#: readelf.c:4978
msgid "badly formed extended line op encountered!"
msgstr ""
-#: readelf.c:4738
+#: readelf.c:4985
#, c-format
msgid " Extended opcode %d: "
msgstr ""
-#: readelf.c:4743
+#: readelf.c:4990
msgid ""
"End of Sequence\n"
"\n"
msgstr ""
-#: readelf.c:4749
+#: readelf.c:4996
#, c-format
msgid "set Address to 0x%lx\n"
msgstr ""
-#: readelf.c:4754
+#: readelf.c:5001
msgid " define new File Table entry\n"
msgstr ""
-#: readelf.c:4755 readelf.c:4877
+#: readelf.c:5002 readelf.c:5124
msgid " Entry\tDir\tTime\tSize\tName\n"
msgstr ""
-#: readelf.c:4757
+#: readelf.c:5004
#, c-format
msgid " %d\t"
msgstr ""
-#: readelf.c:4760 readelf.c:4762 readelf.c:4764 readelf.c:4889 readelf.c:4891
-#: readelf.c:4893
+#: readelf.c:5007 readelf.c:5009 readelf.c:5011 readelf.c:5136 readelf.c:5138
+#: readelf.c:5140
#, c-format
msgid "%lu\t"
msgstr ""
-#: readelf.c:4765
+#: readelf.c:5012
#, c-format
msgid ""
"%s\n"
"\n"
msgstr ""
-#: readelf.c:4769
+#: readelf.c:5016
#, c-format
msgid "UNKNOWN: length %d\n"
msgstr ""
-#: readelf.c:4795
+#: readelf.c:5042
#, c-format
msgid ""
"\n"
@@ -2610,493 +2981,503 @@ msgid ""
"\n"
msgstr ""
-#: readelf.c:4807
+#: readelf.c:5054
msgid "The line info appears to be corrupt - the section is too small\n"
msgstr ""
-#: readelf.c:4815
+#: readelf.c:5062
msgid "Only DWARF version 2 line info is currently supported.\n"
msgstr ""
-#: readelf.c:4830
+#: readelf.c:5077
#, c-format
msgid " Length: %ld\n"
msgstr ""
-#: readelf.c:4831
+#: readelf.c:5078
#, c-format
msgid " DWARF Version: %d\n"
msgstr ""
-#: readelf.c:4832
+#: readelf.c:5079
#, c-format
msgid " Prolgue Length: %d\n"
msgstr ""
-#: readelf.c:4833
+#: readelf.c:5080
#, c-format
msgid " Minimum Instruction Length: %d\n"
msgstr ""
-#: readelf.c:4834
+#: readelf.c:5081
#, c-format
msgid " Initial value of 'is_stmt': %d\n"
msgstr ""
-#: readelf.c:4835
+#: readelf.c:5082
#, c-format
msgid " Line Base: %d\n"
msgstr ""
-#: readelf.c:4836
+#: readelf.c:5083
#, c-format
msgid " Line Range: %d\n"
msgstr ""
-#: readelf.c:4837
+#: readelf.c:5084
#, c-format
msgid " Opcode Base: %d\n"
msgstr ""
-#: readelf.c:4846
+#: readelf.c:5093
msgid ""
"\n"
" Opcodes:\n"
msgstr ""
-#: readelf.c:4849
+#: readelf.c:5096
#, c-format
msgid " Opcode %d has %d args\n"
msgstr ""
-#: readelf.c:4855
+#: readelf.c:5102
msgid ""
"\n"
" The Directory Table is empty.\n"
msgstr ""
-#: readelf.c:4858
+#: readelf.c:5105
msgid ""
"\n"
" The Directory Table:\n"
msgstr ""
-#: readelf.c:4862
+#: readelf.c:5109
#, c-format
msgid " %s\n"
msgstr ""
-#: readelf.c:4873
+#: readelf.c:5120
msgid ""
"\n"
" The File Name Table is empty.\n"
msgstr ""
-#: readelf.c:4876
+#: readelf.c:5123
msgid ""
"\n"
" The File Name Table:\n"
msgstr ""
-#: readelf.c:4884
+#: readelf.c:5131
#, c-format
msgid " %d\t"
msgstr ""
-#: readelf.c:4895
+#: readelf.c:5142
#, c-format
msgid "%s\n"
msgstr ""
#. Now display the statements.
-#: readelf.c:4903
+#: readelf.c:5150
msgid ""
"\n"
" Line Number Statements:\n"
msgstr ""
-#: readelf.c:4922
+#: readelf.c:5169
msgid " Copy\n"
msgstr ""
-#: readelf.c:4929
+#: readelf.c:5176
#, c-format
msgid " Advance PC by %d to %lx\n"
msgstr ""
-#: readelf.c:4937
+#: readelf.c:5184
#, c-format
msgid " Advance Line by %d to %d\n"
msgstr ""
-#: readelf.c:4944
+#: readelf.c:5191
#, c-format
msgid " Set File Name to entry %d in the File Name Table\n"
msgstr ""
-#: readelf.c:4952
+#: readelf.c:5199
#, c-format
msgid " Set column to %d\n"
msgstr ""
-#: readelf.c:4959
+#: readelf.c:5206
#, c-format
msgid " Set is_stmt to %d\n"
msgstr ""
-#: readelf.c:4964
+#: readelf.c:5211
msgid " Set basic block\n"
msgstr ""
-#: readelf.c:4972
+#: readelf.c:5219
#, c-format
msgid " Advance PC by constant %d to 0x%lx\n"
msgstr ""
-#: readelf.c:4980
+#: readelf.c:5227
#, c-format
msgid " Advance PC by fixed size amount %d to 0x%lx\n"
msgstr ""
-#: readelf.c:4988
+#: readelf.c:5235
#, c-format
msgid " Special opcode %d: advance Address by %d to 0x%lx"
msgstr ""
-#: readelf.c:4992
+#: readelf.c:5239
#, c-format
msgid " and Line by %d to %d\n"
msgstr ""
-#: readelf.c:5015 readelf.c:5437
+#: readelf.c:5262 readelf.c:5691
#, c-format
msgid ""
"Contents of the %s section:\n"
"\n"
msgstr ""
-#: readelf.c:5034
-msgid "Only DWARF 2 pubnames are currently supported"
+#: readelf.c:5285
+msgid "Only DWARF 2 pubnames are currently supported\n"
msgstr ""
-#: readelf.c:5038
+#: readelf.c:5292
#, c-format
msgid " Length: %ld\n"
msgstr ""
-#: readelf.c:5040
+#: readelf.c:5294
#, c-format
msgid " Version: %d\n"
msgstr ""
-#: readelf.c:5042
+#: readelf.c:5296
#, c-format
msgid " Offset into .debug_info section: %ld\n"
msgstr ""
-#: readelf.c:5044
+#: readelf.c:5298
#, c-format
msgid " Size of area in .debug_info section: %ld\n"
msgstr ""
-#: readelf.c:5047
+#: readelf.c:5301
msgid ""
"\n"
" Offset\tName\n"
msgstr ""
-#: readelf.c:5129
+#: readelf.c:5383
#, c-format
msgid "Unknown TAG value: %lx"
msgstr ""
-#: readelf.c:5224
+#: readelf.c:5478
#, c-format
msgid "Unknown AT value: %lx"
msgstr ""
-#: readelf.c:5261
+#: readelf.c:5515
#, c-format
msgid "Unknown FORM value: %lx"
msgstr ""
-#: readelf.c:5443
+#: readelf.c:5697
msgid " Number TAG\n"
msgstr ""
-#: readelf.c:5449
+#: readelf.c:5703
#, c-format
msgid " %ld %s [%s]\n"
msgstr ""
-#: readelf.c:5452
+#: readelf.c:5706
msgid "has children"
msgstr ""
-#: readelf.c:5452
+#: readelf.c:5706
msgid "no children"
msgstr ""
-#: readelf.c:5456
+#: readelf.c:5710
#, c-format
msgid " %-18s %s\n"
msgstr ""
-#: readelf.c:5475
+#: readelf.c:5729
#, c-format
msgid " %lu byte block: "
msgstr ""
-#: readelf.c:5939
+#: readelf.c:6036
msgid "(User defined location op)"
msgstr ""
-#: readelf.c:5941
+#: readelf.c:6038
msgid "(Unknown location op)"
msgstr ""
-#: readelf.c:6058
+#: readelf.c:6165
#, c-format
msgid "Unable to handle FORM: %d"
msgstr ""
-#: readelf.c:6062
+#: readelf.c:6169
#, c-format
msgid "Unrecognised form: %d"
msgstr ""
-#: readelf.c:6075
+#: readelf.c:6182
msgid "(not inlined)"
msgstr ""
-#: readelf.c:6076
+#: readelf.c:6183
msgid "(inlined)"
msgstr ""
-#: readelf.c:6077
+#: readelf.c:6184
msgid "(declared as inline but ignored)"
msgstr ""
-#: readelf.c:6078
+#: readelf.c:6185
msgid "(declared as inline and inlined)"
msgstr ""
-#: readelf.c:6079
+#: readelf.c:6186
#, c-format
msgid " (Unknown inline attribute value: %lx)"
msgstr ""
-#: readelf.c:6209 readelf.c:6333
+#: readelf.c:6315 readelf.c:6441
#, c-format
msgid ""
"The section %s contains:\n"
"\n"
msgstr ""
-#: readelf.c:6231
-msgid "Only version 2 DWARF debug information is currently supported.\n"
-msgstr ""
-
-#: readelf.c:6235
-msgid " Compilation Unit:\n"
+#: readelf.c:6337
+#, c-format
+msgid " Compilation Unit @ %lx:\n"
msgstr ""
-#: readelf.c:6236
+#: readelf.c:6338
#, c-format
msgid " Length: %ld\n"
msgstr ""
-#: readelf.c:6237
+#: readelf.c:6339
#, c-format
msgid " Version: %d\n"
msgstr ""
-#: readelf.c:6238
+#: readelf.c:6340
#, c-format
msgid " Abbrev Offset: %ld\n"
msgstr ""
-#: readelf.c:6239
+#: readelf.c:6341
#, c-format
msgid " Pointer Size: %d\n"
msgstr ""
-#: readelf.c:6259
+#: readelf.c:6345
+msgid "Only version 2 DWARF debug information is currently supported.\n"
+msgstr ""
+
+#: readelf.c:6367
msgid "Unable to locate .debug_abbrev section!\n"
msgstr ""
-#: readelf.c:6299
+#: readelf.c:6407
#, c-format
msgid "Unable to locate entry %lu in the abbreviation table\n"
msgstr ""
-#: readelf.c:6304
+#: readelf.c:6412
#, c-format
msgid " <%d><%x>: Abbrev Number: %lu (%s)\n"
msgstr ""
-#: readelf.c:6352
+#: readelf.c:6462
+msgid "Only DWARF 2 aranges are currently supported.\n"
+msgstr ""
+
+#: readelf.c:6466
#, c-format
msgid " Length: %ld\n"
msgstr ""
-#: readelf.c:6353
+#: readelf.c:6467
#, c-format
msgid " Version: %d\n"
msgstr ""
-#: readelf.c:6354
+#: readelf.c:6468
#, c-format
msgid " Offset into .debug_info: %lx\n"
msgstr ""
-#: readelf.c:6355
+#: readelf.c:6469
#, c-format
msgid " Pointer Size: %d\n"
msgstr ""
-#: readelf.c:6356
+#: readelf.c:6470
#, c-format
msgid " Segment Size: %d\n"
msgstr ""
-#: readelf.c:6358
+#: readelf.c:6472
msgid ""
"\n"
" Address Length\n"
msgstr ""
-#: readelf.c:6399
+#: readelf.c:6634
+#, c-format
+msgid "The section %s contains:\n"
+msgstr ""
+
+#: readelf.c:7109
#, c-format
msgid "Displaying the debug contents of section %s is not yet supported.\n"
msgstr ""
-#: readelf.c:6461
+#: readelf.c:7173
#, c-format
msgid ""
"\n"
"Section '%s' has no debugging data.\n"
msgstr ""
-#: readelf.c:6477
+#: readelf.c:7192
#, c-format
msgid "Unrecognised debug section: %s\n"
msgstr ""
-#: readelf.c:6549
+#: readelf.c:7264
msgid "Some sections were not dumped because they do not exist!\n"
msgstr ""
-#: readelf.c:6728
+#: readelf.c:7447
#, c-format
msgid ""
"\n"
"Section '%s' contains %d entries:\n"
msgstr ""
-#: readelf.c:6890
+#: readelf.c:7609
msgid "conflict list with without table"
msgstr ""
-#: readelf.c:6918
+#: readelf.c:7637
#, c-format
msgid ""
"\n"
"Section '.conflict' contains %d entries:\n"
msgstr ""
-#: readelf.c:6919
+#: readelf.c:7638
msgid " Num: Index Value Name"
msgstr ""
-#: readelf.c:6944
+#: readelf.c:7663
msgid "NT_PRSTATUS (prstatus structure)"
msgstr ""
-#: readelf.c:6945
+#: readelf.c:7664
msgid "NT_FPREGSET (floating point registers)"
msgstr ""
-#: readelf.c:6946
+#: readelf.c:7665
msgid "NT_PRPSINFO (prpsinfo structure)"
msgstr ""
-#: readelf.c:6947
+#: readelf.c:7666
msgid "NT_TASKSTRUCT (task structure)"
msgstr ""
-#: readelf.c:6948
+#: readelf.c:7667
msgid "NT_PRXFPREG (user_xfpregs structure)"
msgstr ""
-#: readelf.c:6949
+#: readelf.c:7668
msgid "NT_PSTATUS (pstatus structure)"
msgstr ""
-#: readelf.c:6950
+#: readelf.c:7669
msgid "NT_FPREGS (floating point registers)"
msgstr ""
-#: readelf.c:6951
+#: readelf.c:7670
msgid "NT_PSINFO (psinfo structure)"
msgstr ""
-#: readelf.c:6952
+#: readelf.c:7671
msgid "NT_LWPSTATUS (lwpstatus_t structure)"
msgstr ""
-#: readelf.c:6953
+#: readelf.c:7672
msgid "NT_LWPSINFO (lwpsinfo_t structure)"
msgstr ""
-#: readelf.c:6954
+#: readelf.c:7673
msgid "NT_WIN32PSTATUS (win32_pstatus strcuture)"
msgstr ""
-#: readelf.c:6956
+#: readelf.c:7675
#, c-format
msgid "Unknown note type: (0x%08x)"
msgstr ""
-#: readelf.c:6994
+#: readelf.c:7713
#, c-format
msgid ""
"\n"
"Notes at offset 0x%08lx with length 0x%08lx:\n"
msgstr ""
-#: readelf.c:6997
+#: readelf.c:7715
msgid " Owner\t\tData size\tDescription\n"
msgstr ""
-#: readelf.c:7108
+#: readelf.c:7826
msgid "No note segments present in the core file.\n"
msgstr ""
-#: readelf.c:7186
+#: readelf.c:7904
msgid "This instance of readelf has been built without support for a\n"
msgstr ""
-#: readelf.c:7187
+#: readelf.c:7905
msgid "64 bit data type and so it cannot read 64 bit ELF files.\n"
msgstr ""
-#: readelf.c:7222
+#: readelf.c:7940
#, c-format
msgid "Cannot stat input file %s.\n"
msgstr ""
-#: readelf.c:7229
+#: readelf.c:7947
#, c-format
msgid "Input file %s not found.\n"
msgstr ""
-#: readelf.c:7235
+#: readelf.c:7953
#, c-format
msgid "%s: Failed to read file header\n"
msgstr ""
-#: readelf.c:7249
+#: readelf.c:7967
#, c-format
msgid ""
"\n"
@@ -3325,71 +3706,71 @@ msgstr ""
#: rescoff.c:145
#, c-format
-msgid "%s: %s: no resource section\n"
+msgid "%s: no resource section"
msgstr ""
-#: rescoff.c:154
+#: rescoff.c:152
msgid "can't read resource section"
msgstr ""
-#: rescoff.c:180
+#: rescoff.c:178
#, c-format
msgid "%s: %s: address out of bounds"
msgstr ""
-#: rescoff.c:199
+#: rescoff.c:197
msgid "directory"
msgstr ""
-#: rescoff.c:227
+#: rescoff.c:225
msgid "named directory entry"
msgstr ""
-#: rescoff.c:236
+#: rescoff.c:234
msgid "directory entry name"
msgstr ""
-#: rescoff.c:256
+#: rescoff.c:254
msgid "named subdirectory"
msgstr ""
-#: rescoff.c:264
+#: rescoff.c:262
msgid "named resource"
msgstr ""
-#: rescoff.c:279
+#: rescoff.c:277
msgid "ID directory entry"
msgstr ""
-#: rescoff.c:296
+#: rescoff.c:294
msgid "ID subdirectory"
msgstr ""
-#: rescoff.c:304
+#: rescoff.c:302
msgid "ID resource"
msgstr ""
-#: rescoff.c:330
+#: rescoff.c:328
msgid "resource type unknown"
msgstr ""
-#: rescoff.c:333
+#: rescoff.c:331
msgid "data entry"
msgstr ""
-#: rescoff.c:341
+#: rescoff.c:339
msgid "resource data"
msgstr ""
-#: rescoff.c:346
+#: rescoff.c:344
msgid "resource data size"
msgstr ""
-#: rescoff.c:441
+#: rescoff.c:439
msgid "filename required for COFF output"
msgstr ""
-#: rescoff.c:740
+#: rescoff.c:738
msgid "can't get BFD_RELOC_RVA relocation type"
msgstr ""
@@ -3408,11 +3789,6 @@ msgstr ""
msgid "%s %s: %s"
msgstr ""
-#: resrc.c:283
-#, c-format
-msgid "%s exited with status %d"
-msgstr ""
-
#: resrc.c:308
#, c-format
msgid "can't execute `%s': %s"
@@ -3442,42 +3818,50 @@ msgstr ""
msgid "Using `%s'\n"
msgstr ""
-#: resrc.c:544
+#: resrc.c:541
#, c-format
msgid "%s:%d: %s\n"
msgstr ""
-#: resrc.c:553
+#: resrc.c:550
#, c-format
msgid "%s: unexpected EOF"
msgstr ""
-#: resrc.c:610
+#: resrc.c:607
#, c-format
msgid "%s: read of %lu returned %lu"
msgstr ""
-#: resrc.c:652 resrc.c:883 resrc.c:1156 resrc.c:1310
+#: resrc.c:649 resrc.c:903 resrc.c:1176 resrc.c:1330
#, c-format
msgid "stat failed on bitmap file `%s': %s"
msgstr ""
-#: resrc.c:705
+#: resrc.c:702
#, c-format
msgid "cursor file `%s' does not contain cursor data"
msgstr ""
-#: resrc.c:737 resrc.c:1027
+#: resrc.c:734 resrc.c:1047
#, c-format
msgid "%s: fseek to %lu failed: %s"
msgstr ""
-#: resrc.c:996
+#: resrc.c:871
+msgid "help ID requires DIALOGEX"
+msgstr ""
+
+#: resrc.c:873
+msgid "control data requires DIALOGEX"
+msgstr ""
+
+#: resrc.c:1016
#, c-format
msgid "icon file `%s' does not contain icon data"
msgstr ""
-#: resrc.c:1515
+#: resrc.c:1535
#, c-format
msgid "can't open `%s' for output: %s"
msgstr ""
@@ -3485,44 +3869,45 @@ msgstr ""
#: size.c:79
#, c-format
msgid ""
-"Usage: %s [-ABdoxV] [--format=berkeley|sysv] [--radix=8|10|16]\n"
-" [--target=bfdname] [--version] [--help] [file...]\n"
+"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 ""
-#: size.c:83
+#: size.c:85
msgid "default is --format=berkeley\n"
msgstr ""
-#: size.c:85
+#: size.c:87
msgid "default is --format=sysv\n"
msgstr ""
-#: size.c:139
+#: size.c:141
#, c-format
-msgid "invalid argument to --format: %s\n"
+msgid "invalid argument to --format: %s"
msgstr ""
-#: size.c:166
+#: size.c:168
#, c-format
msgid "Invalid radix: %s\n"
msgstr ""
-#: srconv.c:1879
+#: srconv.c:1880
#, c-format
msgid "Usage: %s [-dhVq] in-file [out-file]\n"
msgstr ""
-#: srconv.c:1886
+#: srconv.c:1887
#, c-format
msgid "%s: Convert a COFF object file into a SYSROFF object file\n"
msgstr ""
-#: srconv.c:2024
+#: srconv.c:2020
#, c-format
-msgid "%s: unable to open output file %s\n"
+msgid "unable to open output file %s"
msgstr ""
-#: stabs.c:349 stabs.c:1769
+#: stabs.c:349 stabs.c:1770
msgid "numeric overflow"
msgstr ""
@@ -3550,84 +3935,84 @@ msgstr ""
#. Complain and keep going, so compilers can invent new
#. cross-reference types.
-#: stabs.c:1306
+#: 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:1861
+#: stabs.c:1862
msgid "missing index type"
msgstr ""
-#: stabs.c:2188
+#: stabs.c:2189
msgid "unknown virtual character for baseclass"
msgstr ""
-#: stabs.c:2206
+#: stabs.c:2207
msgid "unknown visibility character for baseclass"
msgstr ""
-#: stabs.c:2398
+#: stabs.c:2399
msgid "unnamed $vb type"
msgstr ""
-#: stabs.c:2404
+#: stabs.c:2405
msgid "unrecognized C++ abbreviation"
msgstr ""
-#: stabs.c:2484
+#: stabs.c:2485
msgid "unknown visibility character for field"
msgstr ""
-#: stabs.c:2740
+#: stabs.c:2741
msgid "const/volatile indicator missing"
msgstr ""
-#: stabs.c:2980
+#: stabs.c:2981
#, c-format
msgid "No mangling for \"%s\"\n"
msgstr ""
-#: stabs.c:3293
+#: stabs.c:3294
msgid "Undefined N_EXCL"
msgstr ""
-#: stabs.c:3381
+#: stabs.c:3382
#, c-format
msgid "Type file number %d out of range\n"
msgstr ""
-#: stabs.c:3386
+#: stabs.c:3387
#, c-format
msgid "Type index number %d out of range\n"
msgstr ""
-#: stabs.c:3473
+#: stabs.c:3474
#, c-format
msgid "Unrecognized XCOFF type %d\n"
msgstr ""
-#: stabs.c:3772
+#: stabs.c:3773
#, c-format
msgid "bad mangled name `%s'\n"
msgstr ""
-#: stabs.c:3868
+#: stabs.c:3869
msgid "no argument types in mangled string\n"
msgstr ""
-#: strings.c:159
+#: strings.c:177
#, c-format
-msgid "%s: invalid number %s\n"
+msgid "invalid number %s"
msgstr ""
-#: strings.c:494
+#: strings.c:513
#, c-format
-msgid "%s: invalid integer argument %s\n"
+msgid "invalid integer argument %s"
msgstr ""
-#: strings.c:505
+#: strings.c:523
#, c-format
msgid ""
"Usage: %s [-afov] [-n min-len] [-min-len] [-t {o,x,d}] [-]\n"
@@ -3640,13 +4025,13 @@ msgstr ""
msgid "Usage: %s [-hV] in-file\n"
msgstr ""
-#: sysdump.c:783
+#: sysdump.c:781
#, c-format
-msgid "%s: cannot open input file %s\n"
+msgid "cannot open input file %s"
msgstr ""
#: version.c:39
-msgid "Copyright 1997, 1998, 1999 Free Software Foundation, Inc.\n"
+msgid "Copyright 1997, 98, 99, 2000 Free Software Foundation, Inc.\n"
msgstr ""
#: version.c:40
@@ -3679,7 +4064,7 @@ msgstr ""
#: windres.c:602
#, c-format
-msgid "%s: unknown format type `%s'\n"
+msgid "unknown format type `%s'"
msgstr ""
#: windres.c:603
@@ -3740,17 +4125,17 @@ msgstr ""
msgid "no resources"
msgstr ""
-#: wrstabs.c:366 wrstabs.c:2028
+#: wrstabs.c:366 wrstabs.c:2027
#, c-format
-msgid "string_hash_lookup failed: %s\n"
+msgid "string_hash_lookup failed: %s"
msgstr ""
#: wrstabs.c:666
#, c-format
-msgid "stab_int_type: bad size %u\n"
+msgid "stab_int_type: bad size %u"
msgstr ""
-#: wrstabs.c:1468
+#: wrstabs.c:1467
#, c-format
-msgid "%s: warning: unknown size for field `%s' in struct\n"
+msgid "%s: warning: unknown size for field `%s' in struct"
msgstr ""
diff --git a/contrib/binutils/binutils/ranlib.1 b/contrib/binutils/binutils/ranlib.1
index 7efb5c8..9e973c6 100644
--- a/contrib/binutils/binutils/ranlib.1
+++ b/contrib/binutils/binutils/ranlib.1
@@ -1,6 +1,6 @@
-.\" Copyright (c) 1991 Free Software Foundation
+.\" Copyright (c) 1991, 2000 Free Software Foundation
.\" See section COPYING for conditions for redistribution
-.TH ranlib 1 "5 November 1991" "cygnus support" "GNU Development Tools"
+.TH ranlib 1 "5 November 1991" "Free Software Foundation" "GNU Development Tools"
.de BP
.sp
.ti \-.2i
@@ -65,19 +65,377 @@ The GNU Binary Utilities\c
.SH COPYING
-Copyright (c) 1991 Free Software Foundation, Inc.
+Copyright (c) 1991, 2000 Free Software Foundation, Inc.
.PP
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
+This document is distributed under the terms of the GNU Free
+Documentation License, version 1.1. That license is described in the
+sources for this manual page, but it is not displayed here in order to
+make this manual more consise. Copies of this license can also be
+obtained from: http://www.gnu.org/copyleft/.
+
+\" .SH GNU Free Documentation License
+\" Version 1.1, March 2000
+
+\" Copyright (C) 2000 Free Software Foundation, Inc.
+\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+\" Everyone is permitted to copy and distribute verbatim
+\" copies of this license document, but changing it is
+\" not allowed.
+\" .PP
+\" 0. PREAMBLE
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 1. APPLICABILITY AND DEFINITIONS
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 2. VERBATIM COPYING
+\" .PP
+\" 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.
+\" .PP
+\" You may also lend copies, under the same conditions stated above, and
+\" you may publicly display copies.
+\" .PP
+\" 3. COPYING IN QUANTITY
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 4. MODIFICATIONS
+\" .PP
+\" 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:
+\" .PP
+\" 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.
+\" .PP
+\" 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).
+\" .PP
+\" C. State on the Title page the name of the publisher of the
+\" Modified Version, as the publisher.
+\" .PP
+\" D. Preserve all the copyright notices of the Document.
+\" .PP
+\" E. Add an appropriate copyright notice for your modifications
+\" adjacent to the other copyright notices.
+\" .PP
+\" 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.
+\" Preserve in that license notice the full lists of Invariant Sections
+\" and required Cover Texts given in the Document's license notice.
+\" .PP
+\" H. Include an unaltered copy of this License.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" M. Delete any section entitled "Endorsements". Such a section
+\" may not be included in the Modified Version.
+\" .PP
+\" N. Do not retitle any existing section as "Endorsements"
+\" or to conflict in title with any Invariant Section.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 5. COMBINING DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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."
+\" .PP
+
+\" 6. COLLECTIONS OF DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 7. AGGREGATION WITH INDEPENDENT WORKS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 8. TRANSLATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 9. TERMINATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 10. FUTURE REVISIONS OF THIS LICENSE
+\" .PP
+\" 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/.
+\" .PP
+\" 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.
+\" .PP
+
+\" ADDENDUM: How to use this License for your documents
+\" .PP
+\" 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:
+\" .PP
+\" Copyright (c) YEAR YOUR NAME.
+\" Permission is granted to copy, distribute and/or
+\" modify this document under the terms of the GNU
+\" Free Documentation License, Version 1.1 or any later
+\" version published by the Free Software Foundation;
+\" with the Invariant Sections being LIST THEIR TITLES,
+\" with the Front-Cover Texts being LIST, and with the
+\" Back-Cover Texts being LIST. A copy of the license
+\" is included in the section entitled "GNU Free
+\" Documentation License".
+\" .PP
+\" If you have no Invariant Sections, write "with no Invariant Sections"
+\" instead of saying which ones are invariant. If you have no
+\" Front-Cover Texts, write "no Front-Cover Texts" instead of
+\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+\" .PP
+\" 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/contrib/binutils/binutils/rclex.c b/contrib/binutils/binutils/rclex.c
index b2967bb..be3602e 100644
--- a/contrib/binutils/binutils/rclex.c
+++ b/contrib/binutils/binutils/rclex.c
@@ -1,7 +1,7 @@
/* A lexical scanner generated by flex */
/* Scanner skeleton version:
- * $Header: /cvs/src/src/binutils/Attic/rclex.c,v 1.1.2.1 2000/05/29 14:08:52 pb Exp $
+ * $Header: /cvs/src/src/binutils/Attic/rclex.c,v 1.1.4.1 2001/03/12 15:40:35 pb Exp $
*/
#define FLEX_SCANNER
diff --git a/contrib/binutils/binutils/rcparse.c b/contrib/binutils/binutils/rcparse.c
index dff3302..63578af 100644
--- a/contrib/binutils/binutils/rcparse.c
+++ b/contrib/binutils/binutils/rcparse.c
@@ -196,11 +196,11 @@ typedef union
-#define YYFINAL 475
+#define YYFINAL 483
#define YYFLAG -32768
#define YYNTBASE 99
-#define YYTRANSLATE(x) ((unsigned)(x) <= 339 ? yytranslate[x] : 189)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 339 ? yytranslate[x] : 191)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -249,22 +249,23 @@ static const short yyprhs[] = { 0,
192, 200, 204, 208, 213, 217, 218, 221, 222, 226,
227, 231, 232, 236, 237, 241, 242, 246, 247, 251,
263, 276, 289, 303, 304, 308, 309, 313, 314, 318,
- 319, 323, 324, 328, 335, 346, 358, 359, 363, 364,
- 368, 369, 373, 374, 378, 379, 383, 384, 388, 389,
- 393, 394, 398, 399, 403, 404, 421, 429, 439, 450,
- 451, 454, 455, 459, 460, 464, 465, 469, 470, 474,
- 479, 484, 488, 495, 496, 499, 504, 507, 514, 515,
- 519, 522, 524, 526, 528, 530, 532, 534, 541, 542,
- 545, 548, 552, 558, 561, 567, 574, 582, 592, 597,
- 604, 605, 608, 609, 611, 613, 615, 619, 623, 624,
- 631, 632, 636, 641, 648, 653, 660, 661, 668, 675,
- 679, 683, 687, 691, 695, 696, 705, 713, 714, 720,
- 721, 725, 727, 729, 730, 733, 737, 742, 746, 747,
- 750, 751, 754, 756, 758, 760, 762, 764, 766, 768,
- 770, 772, 774, 777, 781, 786, 788, 792, 793, 795,
- 798, 800, 802, 806, 809, 812, 816, 820, 824, 828,
- 832, 836, 840, 844, 847, 849, 851, 855, 858, 862,
- 866, 870, 874, 878, 882, 886
+ 319, 323, 324, 328, 335, 344, 355, 367, 368, 372,
+ 373, 377, 378, 382, 383, 387, 388, 392, 393, 397,
+ 398, 402, 403, 407, 408, 412, 413, 430, 438, 448,
+ 459, 460, 462, 465, 466, 470, 471, 475, 476, 480,
+ 481, 485, 490, 495, 499, 506, 507, 510, 515, 518,
+ 525, 526, 530, 533, 535, 537, 539, 541, 543, 545,
+ 552, 553, 556, 559, 563, 569, 572, 578, 585, 593,
+ 603, 608, 615, 616, 619, 620, 622, 624, 626, 630,
+ 634, 635, 642, 643, 647, 652, 659, 664, 671, 672,
+ 679, 686, 690, 694, 698, 702, 706, 707, 716, 724,
+ 725, 731, 732, 736, 738, 740, 742, 745, 748, 751,
+ 753, 754, 757, 761, 766, 770, 771, 774, 775, 778,
+ 780, 782, 784, 786, 788, 790, 792, 794, 796, 798,
+ 801, 805, 810, 812, 816, 817, 819, 822, 824, 826,
+ 830, 833, 836, 840, 844, 848, 852, 856, 860, 864,
+ 868, 871, 873, 875, 879, 882, 886, 890, 894, 898,
+ 902, 906, 910
};
static const short yyrhs[] = { -1,
@@ -274,89 +275,92 @@ static const short yyrhs[] = { -1,
151, 0, 99, 100, 156, 0, 99, 100, 159, 0,
99, 100, 160, 0, 99, 100, 165, 0, 99, 100,
168, 0, 99, 100, 169, 0, 99, 100, 84, 0,
- 0, 174, 5, 175, 3, 102, 4, 0, 0, 102,
- 103, 0, 104, 186, 0, 104, 186, 95, 105, 0,
- 80, 0, 187, 0, 106, 0, 105, 95, 106, 0,
+ 0, 174, 5, 177, 3, 102, 4, 0, 0, 102,
+ 103, 0, 104, 188, 0, 104, 188, 95, 105, 0,
+ 80, 0, 189, 0, 106, 0, 105, 95, 106, 0,
105, 106, 0, 6, 0, 7, 0, 8, 0, 9,
- 0, 10, 0, 11, 0, 174, 12, 177, 179, 0,
- 174, 13, 176, 179, 0, 0, 174, 14, 177, 113,
- 187, 183, 183, 183, 110, 114, 3, 116, 4, 0,
- 0, 174, 15, 177, 113, 187, 183, 183, 183, 111,
- 114, 3, 116, 4, 0, 0, 174, 15, 177, 113,
- 187, 183, 183, 183, 183, 112, 114, 3, 116, 4,
- 0, 0, 16, 96, 184, 0, 0, 114, 17, 80,
- 0, 114, 18, 174, 0, 0, 114, 19, 115, 180,
- 0, 114, 16, 184, 0, 114, 41, 184, 95, 80,
- 0, 114, 41, 184, 95, 80, 183, 183, 0, 114,
- 46, 174, 0, 114, 44, 184, 0, 114, 43, 184,
- 183, 0, 114, 45, 184, 0, 0, 116, 117, 0,
+ 0, 10, 0, 11, 0, 174, 12, 179, 181, 0,
+ 174, 13, 178, 181, 0, 0, 174, 14, 179, 113,
+ 189, 185, 185, 185, 110, 114, 3, 116, 4, 0,
+ 0, 174, 15, 179, 113, 189, 185, 185, 185, 111,
+ 114, 3, 116, 4, 0, 0, 174, 15, 179, 113,
+ 189, 185, 185, 185, 185, 112, 114, 3, 116, 4,
+ 0, 0, 16, 96, 186, 0, 0, 114, 17, 80,
+ 0, 114, 18, 174, 0, 0, 114, 19, 115, 182,
+ 0, 114, 16, 186, 0, 114, 41, 186, 95, 80,
+ 0, 114, 41, 186, 95, 80, 185, 185, 0, 114,
+ 46, 174, 0, 114, 44, 186, 0, 114, 43, 186,
+ 185, 0, 114, 45, 186, 0, 0, 116, 117, 0,
0, 20, 118, 139, 0, 0, 21, 119, 139, 0,
0, 22, 120, 139, 0, 0, 38, 121, 139, 0,
0, 23, 122, 139, 0, 0, 24, 123, 139, 0,
- 10, 140, 184, 183, 142, 183, 183, 183, 183, 182,
- 141, 0, 10, 140, 184, 183, 142, 183, 183, 183,
- 183, 183, 183, 141, 0, 10, 140, 184, 95, 80,
- 142, 183, 183, 183, 183, 182, 141, 0, 10, 140,
- 184, 95, 80, 142, 183, 183, 183, 183, 183, 183,
+ 10, 140, 186, 185, 142, 185, 185, 185, 185, 184,
+ 141, 0, 10, 140, 186, 185, 142, 185, 185, 185,
+ 185, 185, 185, 141, 0, 10, 140, 186, 95, 80,
+ 142, 185, 185, 185, 185, 184, 141, 0, 10, 140,
+ 186, 95, 80, 142, 185, 185, 185, 185, 185, 185,
141, 0, 0, 25, 124, 139, 0, 0, 26, 125,
139, 0, 0, 27, 126, 139, 0, 0, 28, 127,
- 139, 0, 0, 39, 128, 139, 0, 42, 140, 184,
- 183, 183, 141, 0, 42, 140, 184, 183, 183, 183,
- 183, 144, 182, 141, 0, 42, 140, 184, 183, 183,
- 183, 183, 144, 183, 183, 141, 0, 0, 40, 129,
- 139, 0, 0, 29, 130, 139, 0, 0, 30, 131,
- 139, 0, 0, 31, 132, 139, 0, 0, 32, 133,
- 139, 0, 0, 33, 134, 139, 0, 0, 34, 135,
- 139, 0, 0, 35, 136, 139, 0, 0, 36, 137,
- 139, 0, 0, 37, 80, 95, 184, 95, 184, 95,
- 184, 95, 184, 95, 184, 95, 138, 180, 182, 0,
- 140, 184, 183, 183, 183, 183, 141, 0, 140, 184,
- 183, 183, 183, 183, 146, 182, 141, 0, 140, 184,
- 183, 183, 183, 183, 146, 183, 183, 141, 0, 0,
- 80, 95, 0, 0, 3, 161, 4, 0, 0, 95,
- 143, 180, 0, 0, 95, 145, 180, 0, 0, 95,
- 147, 180, 0, 174, 41, 176, 179, 0, 174, 42,
- 176, 179, 0, 43, 184, 183, 0, 174, 46, 175,
- 3, 152, 4, 0, 0, 152, 153, 0, 48, 80,
- 183, 154, 0, 48, 49, 0, 50, 80, 154, 3,
- 152, 4, 0, 0, 154, 95, 155, 0, 154, 155,
- 0, 51, 0, 52, 0, 53, 0, 54, 0, 55,
- 0, 56, 0, 174, 47, 175, 3, 157, 4, 0,
- 0, 157, 158, 0, 48, 80, 0, 48, 80, 183,
- 0, 48, 80, 183, 183, 182, 0, 48, 49, 0,
- 50, 80, 3, 157, 4, 0, 50, 80, 183, 3,
- 157, 4, 0, 50, 80, 183, 183, 3, 157, 4,
- 0, 50, 80, 183, 183, 183, 182, 3, 157, 4,
- 0, 174, 57, 177, 179, 0, 174, 58, 175, 3,
- 161, 4, 0, 0, 162, 163, 0, 0, 164, 0,
- 83, 0, 185, 0, 164, 95, 83, 0, 164, 95,
- 185, 0, 0, 59, 175, 3, 166, 167, 4, 0,
- 0, 167, 184, 80, 0, 167, 184, 95, 80, 0,
- 174, 174, 175, 3, 161, 4, 0, 174, 174, 175,
- 179, 0, 174, 60, 170, 3, 171, 4, 0, 0,
- 170, 61, 184, 183, 183, 183, 0, 170, 62, 184,
- 183, 183, 183, 0, 170, 63, 184, 0, 170, 64,
- 184, 0, 170, 65, 184, 0, 170, 66, 184, 0,
- 170, 67, 184, 0, 0, 171, 68, 3, 71, 3,
- 172, 4, 4, 0, 171, 69, 3, 70, 80, 173,
- 4, 0, 0, 172, 70, 80, 95, 80, 0, 0,
- 173, 183, 183, 0, 187, 0, 81, 0, 0, 175,
- 178, 0, 175, 44, 184, 0, 175, 43, 184, 183,
- 0, 175, 45, 184, 0, 0, 176, 178, 0, 0,
- 177, 178, 0, 72, 0, 73, 0, 74, 0, 75,
- 0, 76, 0, 77, 0, 78, 0, 80, 0, 81,
- 0, 181, 0, 79, 181, 0, 180, 85, 181, 0,
- 180, 85, 79, 181, 0, 82, 0, 97, 184, 98,
- 0, 0, 183, 0, 95, 184, 0, 185, 0, 82,
- 0, 97, 185, 98, 0, 93, 185, 0, 89, 185,
- 0, 185, 90, 185, 0, 185, 91, 185, 0, 185,
- 92, 185, 0, 185, 88, 185, 0, 185, 89, 185,
- 0, 185, 87, 185, 0, 185, 86, 185, 0, 185,
- 85, 185, 0, 95, 187, 0, 188, 0, 82, 0,
- 97, 185, 98, 0, 93, 185, 0, 188, 90, 185,
- 0, 188, 91, 185, 0, 188, 92, 185, 0, 188,
- 88, 185, 0, 188, 89, 185, 0, 188, 87, 185,
- 0, 188, 86, 185, 0, 188, 85, 185, 0
+ 139, 0, 0, 39, 128, 139, 0, 42, 176, 186,
+ 185, 185, 141, 0, 42, 176, 186, 185, 185, 185,
+ 185, 141, 0, 42, 176, 186, 185, 185, 185, 185,
+ 144, 184, 141, 0, 42, 176, 186, 185, 185, 185,
+ 185, 144, 185, 185, 141, 0, 0, 40, 129, 139,
+ 0, 0, 29, 130, 139, 0, 0, 30, 131, 139,
+ 0, 0, 31, 132, 139, 0, 0, 32, 133, 139,
+ 0, 0, 33, 134, 139, 0, 0, 34, 135, 139,
+ 0, 0, 35, 136, 139, 0, 0, 36, 137, 139,
+ 0, 0, 37, 80, 95, 186, 95, 186, 95, 186,
+ 95, 186, 95, 186, 95, 138, 182, 184, 0, 140,
+ 186, 185, 185, 185, 185, 141, 0, 140, 186, 185,
+ 185, 185, 185, 146, 184, 141, 0, 140, 186, 185,
+ 185, 185, 185, 146, 185, 185, 141, 0, 0, 80,
+ 0, 80, 95, 0, 0, 3, 161, 4, 0, 0,
+ 95, 143, 182, 0, 0, 95, 145, 182, 0, 0,
+ 95, 147, 182, 0, 174, 41, 178, 181, 0, 174,
+ 42, 178, 181, 0, 43, 186, 185, 0, 174, 46,
+ 177, 3, 152, 4, 0, 0, 152, 153, 0, 48,
+ 80, 185, 154, 0, 48, 49, 0, 50, 80, 154,
+ 3, 152, 4, 0, 0, 154, 95, 155, 0, 154,
+ 155, 0, 51, 0, 52, 0, 53, 0, 54, 0,
+ 55, 0, 56, 0, 174, 47, 177, 3, 157, 4,
+ 0, 0, 157, 158, 0, 48, 80, 0, 48, 80,
+ 185, 0, 48, 80, 185, 185, 184, 0, 48, 49,
+ 0, 50, 80, 3, 157, 4, 0, 50, 80, 185,
+ 3, 157, 4, 0, 50, 80, 185, 185, 3, 157,
+ 4, 0, 50, 80, 185, 185, 185, 184, 3, 157,
+ 4, 0, 174, 57, 179, 181, 0, 174, 58, 177,
+ 3, 161, 4, 0, 0, 162, 163, 0, 0, 164,
+ 0, 83, 0, 187, 0, 164, 95, 83, 0, 164,
+ 95, 187, 0, 0, 59, 177, 3, 166, 167, 4,
+ 0, 0, 167, 186, 80, 0, 167, 186, 95, 80,
+ 0, 174, 174, 177, 3, 161, 4, 0, 174, 174,
+ 177, 181, 0, 174, 60, 170, 3, 171, 4, 0,
+ 0, 170, 61, 186, 185, 185, 185, 0, 170, 62,
+ 186, 185, 185, 185, 0, 170, 63, 186, 0, 170,
+ 64, 186, 0, 170, 65, 186, 0, 170, 66, 186,
+ 0, 170, 67, 186, 0, 0, 171, 68, 3, 71,
+ 3, 172, 4, 4, 0, 171, 69, 3, 70, 80,
+ 173, 4, 0, 0, 172, 70, 80, 95, 80, 0,
+ 0, 173, 185, 185, 0, 189, 0, 81, 0, 80,
+ 0, 80, 95, 0, 81, 95, 0, 189, 95, 0,
+ 175, 0, 0, 177, 180, 0, 177, 44, 186, 0,
+ 177, 43, 186, 185, 0, 177, 45, 186, 0, 0,
+ 178, 180, 0, 0, 179, 180, 0, 72, 0, 73,
+ 0, 74, 0, 75, 0, 76, 0, 77, 0, 78,
+ 0, 80, 0, 81, 0, 183, 0, 79, 183, 0,
+ 182, 85, 183, 0, 182, 85, 79, 183, 0, 82,
+ 0, 97, 186, 98, 0, 0, 185, 0, 95, 186,
+ 0, 187, 0, 82, 0, 97, 187, 98, 0, 93,
+ 187, 0, 89, 187, 0, 187, 90, 187, 0, 187,
+ 91, 187, 0, 187, 92, 187, 0, 187, 88, 187,
+ 0, 187, 89, 187, 0, 187, 87, 187, 0, 187,
+ 86, 187, 0, 187, 85, 187, 0, 95, 189, 0,
+ 190, 0, 82, 0, 97, 187, 98, 0, 93, 187,
+ 0, 190, 90, 187, 0, 190, 91, 187, 0, 190,
+ 92, 187, 0, 190, 88, 187, 0, 190, 89, 187,
+ 0, 190, 87, 187, 0, 190, 86, 187, 0, 190,
+ 85, 187, 0
};
#endif
@@ -371,22 +375,23 @@ static const short yyrline[] = { 0,
435, 448, 452, 456, 460, 466, 468, 478, 486, 489,
496, 499, 506, 509, 516, 522, 529, 532, 539, 542,
553, 562, 575, 586, 593, 596, 603, 606, 613, 616,
- 623, 626, 633, 639, 650, 662, 672, 679, 685, 692,
- 695, 702, 705, 712, 715, 722, 725, 732, 735, 742,
- 745, 752, 755, 762, 765, 768, 782, 795, 806, 817,
- 822, 828, 833, 841, 845, 847, 851, 853, 857, 861,
- 870, 880, 889, 896, 901, 917, 922, 926, 932, 937,
- 941, 947, 952, 956, 960, 964, 968, 976, 983, 988,
- 1004, 1009, 1013, 1017, 1021, 1025, 1029, 1033, 1042, 1051,
- 1061, 1066, 1072, 1078, 1084, 1093, 1101, 1110, 1123, 1126,
- 1129, 1131, 1135, 1144, 1149, 1157, 1164, 1171, 1177, 1183,
- 1188, 1193, 1198, 1203, 1216, 1221, 1225, 1231, 1236, 1242,
- 1247, 1255, 1261, 1278, 1286, 1292, 1297, 1302, 1311, 1318,
- 1328, 1335, 1346, 1352, 1357, 1362, 1367, 1372, 1377, 1386,
- 1391, 1407, 1412, 1416, 1420, 1426, 1431, 1439, 1444, 1452,
- 1461, 1470, 1475, 1479, 1484, 1489, 1494, 1499, 1504, 1509,
- 1514, 1519, 1524, 1534, 1543, 1554, 1559, 1563, 1568, 1573,
- 1578, 1583, 1588, 1593, 1598, 1603
+ 623, 626, 633, 639, 644, 650, 656, 662, 669, 675,
+ 682, 685, 692, 695, 702, 705, 712, 715, 722, 725,
+ 732, 735, 742, 745, 752, 755, 758, 772, 785, 796,
+ 807, 812, 816, 822, 827, 835, 839, 841, 845, 847,
+ 851, 855, 864, 874, 883, 890, 895, 911, 916, 920,
+ 926, 931, 935, 941, 946, 950, 954, 958, 962, 970,
+ 977, 982, 998, 1003, 1007, 1011, 1015, 1019, 1023, 1027,
+ 1036, 1045, 1055, 1060, 1066, 1072, 1078, 1087, 1095, 1104,
+ 1117, 1120, 1123, 1125, 1129, 1138, 1143, 1151, 1158, 1165,
+ 1171, 1177, 1182, 1187, 1192, 1197, 1210, 1215, 1219, 1225,
+ 1230, 1236, 1241, 1249, 1255, 1271, 1276, 1280, 1287, 1293,
+ 1310, 1318, 1324, 1329, 1334, 1343, 1350, 1360, 1367, 1378,
+ 1384, 1389, 1394, 1399, 1404, 1409, 1418, 1423, 1439, 1444,
+ 1448, 1452, 1458, 1463, 1471, 1476, 1484, 1493, 1502, 1507,
+ 1511, 1516, 1521, 1526, 1531, 1536, 1541, 1546, 1551, 1556,
+ 1566, 1575, 1586, 1591, 1595, 1600, 1605, 1610, 1615, 1620,
+ 1625, 1630, 1635
};
#endif
@@ -415,9 +420,9 @@ static const char * const yytname[] = { "$","error","$undefined.","BEG","END",
"menuitem_flag","menuex","menuexitems","menuexitem","messagetable","rcdata",
"optrcdata_data","@29","optrcdata_data_int","rcdata_data","stringtable","@30",
"string_data","user","versioninfo","fixedverinfo","verblocks","vervals","vertrans",
-"id","suboptions","memflags_move_discard","memflags_move","memflag","file_name",
-"styleexpr","parennumber","optcnumexpr","cnumexpr","numexpr","sizednumexpr",
-"cposnumexpr","posnumexpr","sizedposnumexpr", NULL
+"id","resname","resref","suboptions","memflags_move_discard","memflags_move",
+"memflag","file_name","styleexpr","parennumber","optcnumexpr","cnumexpr","numexpr",
+"sizednumexpr","cposnumexpr","posnumexpr","sizedposnumexpr", NULL
};
#endif
@@ -430,22 +435,23 @@ static const short yyr1[] = { 0,
114, 114, 114, 114, 114, 116, 116, 118, 117, 119,
117, 120, 117, 121, 117, 122, 117, 123, 117, 117,
117, 117, 117, 124, 117, 125, 117, 126, 117, 127,
- 117, 128, 117, 117, 117, 117, 129, 117, 130, 117,
- 131, 117, 132, 117, 133, 117, 134, 117, 135, 117,
- 136, 117, 137, 117, 138, 117, 139, 139, 139, 140,
- 140, 141, 141, 143, 142, 145, 144, 147, 146, 148,
- 149, 150, 151, 152, 152, 153, 153, 153, 154, 154,
- 154, 155, 155, 155, 155, 155, 155, 156, 157, 157,
- 158, 158, 158, 158, 158, 158, 158, 158, 159, 160,
- 162, 161, 163, 163, 164, 164, 164, 164, 166, 165,
- 167, 167, 167, 168, 168, 169, 170, 170, 170, 170,
- 170, 170, 170, 170, 171, 171, 171, 172, 172, 173,
- 173, 174, 174, 175, 175, 175, 175, 175, 176, 176,
- 177, 177, 178, 178, 178, 178, 178, 178, 178, 179,
- 179, 180, 180, 180, 180, 181, 181, 182, 182, 183,
- 184, 185, 185, 185, 185, 185, 185, 185, 185, 185,
- 185, 185, 185, 186, 187, 188, 188, 188, 188, 188,
- 188, 188, 188, 188, 188, 188
+ 117, 128, 117, 117, 117, 117, 117, 129, 117, 130,
+ 117, 131, 117, 132, 117, 133, 117, 134, 117, 135,
+ 117, 136, 117, 137, 117, 138, 117, 139, 139, 139,
+ 140, 140, 140, 141, 141, 143, 142, 145, 144, 147,
+ 146, 148, 149, 150, 151, 152, 152, 153, 153, 153,
+ 154, 154, 154, 155, 155, 155, 155, 155, 155, 156,
+ 157, 157, 158, 158, 158, 158, 158, 158, 158, 158,
+ 159, 160, 162, 161, 163, 163, 164, 164, 164, 164,
+ 166, 165, 167, 167, 167, 168, 168, 169, 170, 170,
+ 170, 170, 170, 170, 170, 170, 171, 171, 171, 172,
+ 172, 173, 173, 174, 174, 175, 175, 175, 176, 176,
+ 177, 177, 177, 177, 177, 178, 178, 179, 179, 180,
+ 180, 180, 180, 180, 180, 180, 181, 181, 182, 182,
+ 182, 182, 183, 183, 184, 184, 185, 186, 187, 187,
+ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
+ 188, 189, 190, 190, 190, 190, 190, 190, 190, 190,
+ 190, 190, 190
};
static const short yyr2[] = { 0,
@@ -457,302 +463,305 @@ static const short yyr2[] = { 0,
7, 3, 3, 4, 3, 0, 2, 0, 3, 0,
3, 0, 3, 0, 3, 0, 3, 0, 3, 11,
12, 12, 13, 0, 3, 0, 3, 0, 3, 0,
- 3, 0, 3, 6, 10, 11, 0, 3, 0, 3,
- 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
- 0, 3, 0, 3, 0, 16, 7, 9, 10, 0,
- 2, 0, 3, 0, 3, 0, 3, 0, 3, 4,
- 4, 3, 6, 0, 2, 4, 2, 6, 0, 3,
- 2, 1, 1, 1, 1, 1, 1, 6, 0, 2,
- 2, 3, 5, 2, 5, 6, 7, 9, 4, 6,
- 0, 2, 0, 1, 1, 1, 3, 3, 0, 6,
- 0, 3, 4, 6, 4, 6, 0, 6, 6, 3,
- 3, 3, 3, 3, 0, 8, 7, 0, 5, 0,
- 3, 1, 1, 0, 2, 3, 4, 3, 0, 2,
- 0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 2, 3, 4, 1, 3, 0, 1, 2,
- 1, 1, 3, 2, 2, 3, 3, 3, 3, 3,
- 3, 3, 3, 2, 1, 1, 3, 2, 3, 3,
- 3, 3, 3, 3, 3, 3
+ 3, 0, 3, 6, 8, 10, 11, 0, 3, 0,
+ 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
+ 3, 0, 3, 0, 3, 0, 16, 7, 9, 10,
+ 0, 1, 2, 0, 3, 0, 3, 0, 3, 0,
+ 3, 4, 4, 3, 6, 0, 2, 4, 2, 6,
+ 0, 3, 2, 1, 1, 1, 1, 1, 1, 6,
+ 0, 2, 2, 3, 5, 2, 5, 6, 7, 9,
+ 4, 6, 0, 2, 0, 1, 1, 1, 3, 3,
+ 0, 6, 0, 3, 4, 6, 4, 6, 0, 6,
+ 6, 3, 3, 3, 3, 3, 0, 8, 7, 0,
+ 5, 0, 3, 1, 1, 1, 2, 2, 2, 1,
+ 0, 2, 3, 4, 3, 0, 2, 0, 2, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 3, 4, 1, 3, 0, 1, 2, 1, 1, 3,
+ 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
+ 2, 1, 1, 3, 2, 3, 3, 3, 3, 3,
+ 3, 3, 3
};
static const short yydefact[] = { 1,
- 17, 0, 0, 184, 183, 226, 16, 0, 0, 2,
+ 17, 0, 0, 191, 185, 233, 16, 0, 0, 2,
3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 0, 182, 225, 212, 0, 0, 0,
- 0, 211, 0, 228, 0, 184, 191, 189, 191, 191,
- 189, 189, 184, 184, 191, 184, 167, 184, 0, 0,
- 0, 0, 0, 0, 0, 0, 215, 214, 0, 0,
- 122, 0, 0, 0, 0, 0, 0, 0, 0, 159,
- 0, 0, 0, 193, 194, 195, 196, 197, 198, 199,
- 185, 227, 0, 0, 0, 42, 42, 0, 0, 0,
- 0, 0, 0, 0, 0, 236, 235, 234, 232, 233,
- 229, 230, 231, 213, 210, 223, 222, 221, 219, 220,
- 216, 217, 218, 161, 0, 186, 188, 19, 200, 201,
- 192, 34, 190, 35, 0, 0, 0, 120, 121, 124,
- 139, 149, 151, 175, 0, 0, 0, 0, 0, 0,
- 0, 151, 165, 0, 187, 0, 0, 0, 0, 0,
- 0, 0, 153, 0, 0, 0, 170, 171, 172, 173,
- 174, 0, 160, 0, 18, 23, 20, 0, 24, 43,
- 0, 0, 123, 0, 0, 125, 138, 0, 0, 140,
- 150, 155, 152, 154, 156, 166, 0, 0, 0, 0,
- 164, 162, 0, 0, 21, 0, 0, 127, 0, 129,
- 144, 141, 0, 0, 0, 0, 0, 0, 163, 224,
- 0, 36, 38, 129, 0, 142, 139, 0, 157, 158,
- 0, 0, 168, 169, 28, 29, 30, 31, 32, 33,
- 22, 25, 44, 44, 40, 126, 124, 132, 133, 134,
- 135, 136, 137, 0, 131, 208, 0, 139, 0, 178,
- 180, 0, 27, 0, 0, 44, 0, 130, 143, 209,
- 145, 0, 139, 208, 0, 0, 26, 56, 0, 0,
- 0, 47, 0, 0, 0, 0, 0, 56, 0, 128,
- 146, 0, 0, 0, 0, 177, 0, 0, 49, 45,
- 46, 0, 0, 0, 53, 55, 52, 0, 56, 147,
- 139, 176, 0, 181, 37, 110, 58, 60, 62, 66,
- 68, 74, 76, 78, 80, 89, 91, 93, 95, 97,
- 99, 101, 103, 0, 64, 82, 87, 110, 57, 0,
- 206, 0, 48, 202, 0, 54, 39, 0, 0, 0,
- 0, 0, 110, 110, 110, 110, 110, 110, 110, 110,
- 110, 110, 110, 110, 110, 110, 110, 110, 110, 0,
- 110, 110, 110, 0, 203, 0, 0, 50, 41, 148,
- 179, 111, 0, 59, 0, 61, 63, 67, 69, 75,
- 77, 79, 81, 90, 92, 94, 96, 98, 100, 102,
- 104, 0, 65, 83, 88, 0, 207, 0, 204, 0,
- 0, 0, 0, 0, 0, 205, 51, 0, 114, 0,
- 0, 0, 112, 0, 0, 0, 0, 0, 151, 84,
- 0, 0, 115, 0, 0, 0, 0, 0, 0, 0,
- 112, 0, 113, 116, 208, 0, 208, 118, 107, 208,
- 0, 0, 112, 209, 208, 112, 209, 0, 112, 209,
- 0, 117, 85, 112, 112, 209, 70, 112, 119, 108,
- 112, 0, 86, 72, 112, 71, 109, 0, 73, 105,
- 0, 208, 106, 0, 0
+ 13, 14, 15, 0, 184, 232, 219, 0, 0, 0,
+ 0, 218, 0, 235, 0, 191, 198, 196, 198, 198,
+ 196, 196, 191, 191, 198, 191, 169, 191, 0, 0,
+ 0, 0, 0, 0, 0, 0, 222, 221, 0, 0,
+ 124, 0, 0, 0, 0, 0, 0, 0, 0, 161,
+ 0, 0, 0, 200, 201, 202, 203, 204, 205, 206,
+ 192, 234, 0, 0, 0, 42, 42, 0, 0, 0,
+ 0, 0, 0, 0, 0, 243, 242, 241, 239, 240,
+ 236, 237, 238, 220, 217, 230, 229, 228, 226, 227,
+ 223, 224, 225, 163, 0, 193, 195, 19, 207, 208,
+ 199, 34, 197, 35, 0, 0, 0, 122, 123, 126,
+ 141, 151, 153, 177, 0, 0, 0, 0, 0, 0,
+ 0, 153, 167, 0, 194, 0, 0, 0, 0, 0,
+ 0, 0, 155, 0, 0, 0, 172, 173, 174, 175,
+ 176, 0, 162, 0, 18, 23, 20, 0, 24, 43,
+ 0, 0, 125, 0, 0, 127, 140, 0, 0, 142,
+ 152, 157, 154, 156, 158, 168, 0, 0, 0, 0,
+ 166, 164, 0, 0, 21, 0, 0, 129, 0, 131,
+ 146, 143, 0, 0, 0, 0, 0, 0, 165, 231,
+ 0, 36, 38, 131, 0, 144, 141, 0, 159, 160,
+ 0, 0, 170, 171, 28, 29, 30, 31, 32, 33,
+ 22, 25, 44, 44, 40, 128, 126, 134, 135, 136,
+ 137, 138, 139, 0, 133, 215, 0, 141, 0, 180,
+ 182, 0, 27, 0, 0, 44, 0, 132, 145, 216,
+ 147, 0, 141, 215, 0, 0, 26, 56, 0, 0,
+ 0, 47, 0, 0, 0, 0, 0, 56, 0, 130,
+ 148, 0, 0, 0, 0, 179, 0, 0, 49, 45,
+ 46, 0, 0, 0, 53, 55, 52, 0, 56, 149,
+ 141, 178, 0, 183, 37, 111, 58, 60, 62, 66,
+ 68, 74, 76, 78, 80, 90, 92, 94, 96, 98,
+ 100, 102, 104, 0, 64, 82, 88, 0, 57, 0,
+ 213, 0, 48, 209, 0, 54, 39, 0, 0, 0,
+ 112, 0, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 111, 111, 111, 111, 111, 111, 111, 0,
+ 111, 111, 111, 186, 0, 190, 0, 0, 210, 0,
+ 0, 50, 41, 150, 181, 113, 0, 59, 0, 61,
+ 63, 67, 69, 75, 77, 79, 81, 91, 93, 95,
+ 97, 99, 101, 103, 105, 0, 65, 83, 89, 187,
+ 188, 0, 189, 214, 0, 211, 0, 0, 0, 0,
+ 0, 0, 212, 51, 0, 116, 0, 0, 0, 114,
+ 0, 0, 0, 0, 0, 153, 84, 0, 0, 117,
+ 0, 0, 0, 0, 114, 0, 0, 114, 0, 115,
+ 118, 85, 215, 0, 215, 120, 108, 215, 0, 0,
+ 114, 216, 215, 114, 216, 0, 114, 216, 0, 119,
+ 86, 114, 114, 216, 70, 114, 121, 109, 114, 0,
+ 87, 72, 114, 71, 110, 0, 73, 106, 0, 215,
+ 107, 0, 0
};
static const short yydefgoto[] = { 1,
2, 10, 146, 167, 168, 231, 232, 11, 12, 13,
233, 234, 256, 126, 254, 292, 288, 329, 343, 344,
345, 361, 346, 347, 348, 349, 350, 351, 362, 363,
- 352, 353, 354, 355, 356, 357, 358, 359, 471, 374,
- 375, 420, 410, 415, 435, 442, 440, 448, 14, 15,
+ 352, 353, 354, 355, 356, 357, 358, 359, 479, 378,
+ 379, 427, 417, 422, 443, 450, 448, 456, 14, 15,
16, 17, 150, 176, 215, 245, 18, 151, 180, 19,
20, 152, 153, 183, 184, 21, 114, 144, 22, 23,
- 94, 154, 265, 266, 24, 33, 85, 84, 81, 122,
- 333, 334, 259, 260, 105, 32, 195, 25, 26
+ 94, 154, 265, 266, 24, 366, 367, 33, 85, 84,
+ 81, 122, 333, 334, 259, 260, 105, 32, 195, 25,
+ 26
};
static const short yypact[] = {-32768,
- 39, 284, 231,-32768,-32768,-32768,-32768, 231, 231,-32768,
+ 31, 240, 241,-32768,-32768,-32768,-32768, 241, 241,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 233,-32768, 601,-32768, 231, 231, 231,
- -60, 609, 35,-32768, 314,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 231, 231,
- 231, 231, 231, 231, 231, 231,-32768,-32768, 577, 231,
--32768, 231, 231, 231, 231, 231, 231, 231, 231,-32768,
- 231, 231, 231,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768, 209, 604, 604, 234, 234, 604, 604, 259,
- 273, 604, 319, 169, 113, 616, 152, 386, -33, -33,
--32768,-32768,-32768,-32768,-32768, 616, 152, 386, -33, -33,
--32768,-32768,-32768,-32768, -60,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768, -1, 99, 99,-32768,-32768,-32768,
--32768,-32768,-32768,-32768, 231, 231, 231, 231, 231, 231,
- 231,-32768,-32768, 0,-32768, 1, 231, -60, -60, 92,
- 95, 110, 337, 52, -60, -60,-32768,-32768,-32768,-32768,
--32768, 124,-32768, 59,-32768,-32768,-32768, 32,-32768,-32768,
- -60, -60,-32768, -36, 51,-32768,-32768, 42, 68,-32768,
--32768,-32768,-32768, 54, 609,-32768, 150, 161, -60, -60,
--32768,-32768, 75, 99, 66, -60, -60,-32768, -60,-32768,
--32768, -60, 5, 527, 107, 136, -60, -60,-32768,-32768,
- 703,-32768, -60,-32768, 20, -60,-32768, 6,-32768, 609,
- 212, 137,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- 23,-32768,-32768,-32768,-32768, 303,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 664,-32768, -60, 102,-32768, 7,-32768,
--32768, 703,-32768, 446, 454,-32768, 115,-32768,-32768,-32768,
--32768, 120,-32768, -60, 15, 10,-32768,-32768, 231, 141,
- 123,-32768, 231, 231, 231, 231, 123,-32768, 463,-32768,
--32768, 121, 219, 221, 143,-32768, -60, 492,-32768,-32768,
--32768, -57, 131, -60,-32768,-32768,-32768, 529,-32768,-32768,
--32768,-32768, 133,-32768,-32768, 157,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 68,-32768, 578,-32768, 241, 241, 241,
+ -73, 586, 169,-32768, 388,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 241, 241,
+ 241, 241, 241, 241, 241, 241,-32768,-32768, 513, 241,
+-32768, 241, 241, 241, 241, 241, 241, 241, 241,-32768,
+ 241, 241, 241,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 215, 581, 581, 268, 268, 581, 581, 232,
+ 275, 581, 283, 250, 156, 593, 599, 616, 98, 98,
+-32768,-32768,-32768,-32768,-32768, 593, 599, 616, 98, 98,
+-32768,-32768,-32768,-32768, -73,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768, -61, 290, 290,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768, 241, 241, 241, 241, 241, 241,
+ 241,-32768,-32768, 4,-32768, 5, 241, -73, -73, 9,
+ 92, 32, 309, 10, -73, -73,-32768,-32768,-32768,-32768,
+-32768, 54,-32768, -57,-32768,-32768,-32768, -20,-32768,-32768,
+ -73, -73,-32768, 39, -9,-32768,-32768, 40, 11,-32768,
+-32768,-32768,-32768, 36, 586,-32768, 145, 151, -73, -73,
+-32768,-32768, 78, 290, 79, -73, -73,-32768, -73,-32768,
+-32768, -73, 16, 365, 106, 108, -73, -73,-32768,-32768,
+ 686,-32768, -73,-32768, 52, -73,-32768, 17,-32768, 586,
+ 178, 128,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ 34,-32768,-32768,-32768,-32768, 314,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 647,-32768, -73, 95,-32768, 18,-32768,
+-32768, 686,-32768, 150, 378,-32768, 112,-32768,-32768,-32768,
+-32768, 123,-32768, -73, 6, 29,-32768,-32768, 241, 129,
+ 281,-32768, 241, 241, 241, 241, 281,-32768, 452,-32768,
+-32768, 135, 200, 213, 143,-32768, -73, 479,-32768,-32768,
+-32768, 182, 91, -73,-32768,-32768,-32768, 516,-32768,-32768,
+-32768,-32768, 130,-32768,-32768, 147,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768, 177,-32768,-32768,-32768, 157,-32768, 65,
--32768, 231, 171,-32768, 184,-32768,-32768, 566, 125, 185,
- 172, 231, 157, 157, 157, 157, 157, 157, 157, 157,
- 157, 157, 157, 157, 157, 157, 157, 157, 157, 173,
- 157, 157, 157, 231,-32768, 190, 98, -60,-32768,-32768,
--32768,-32768, 174,-32768, 231,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 158,-32768,-32768,-32768, 170,-32768, 73,
+-32768, 241, 154,-32768, 160,-32768,-32768, 553, 172, 168,
+ 161, 241, 147, 147, 147, 147, 147, 147, 147, 147,
+ 147, 147, 147, 147, 147, 147, 147, 147, 147, 173,
+ 147, 147, 147, 174, 186,-32768, 241, 187,-32768, 196,
+ 183, -73,-32768,-32768,-32768,-32768, 201,-32768, 241,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768, 231,-32768,-32768,-32768, -60,-32768, 65,-32768, -60,
- 289, 194, -60, 197, -60,-32768,-32768, 194,-32768, -60,
- -60, 231, 8, -60, -57, -60, -60, 199,-32768,-32768,
- -60, -60, 171, -60, -60, 231, 291, 201, -60, -60,
- 9, 202,-32768,-32768, -60, -60, -60,-32768,-32768, -60,
- 231, -57, 296, -60, -60, 296, -60, -57, 296, -60,
- 205, 171,-32768, 296, 296, -60,-32768, 296, 171,-32768,
- 296, 231,-32768,-32768, 296,-32768,-32768, 206,-32768,-32768,
- -57, 114,-32768, 321,-32768
+-32768,-32768,-32768,-32768,-32768, 241,-32768,-32768,-32768,-32768,
+-32768, -73,-32768,-32768, 73,-32768, -73, 293, 202, -73,
+ 203, -73,-32768,-32768, 202,-32768, -73, -73, 241, 22,
+ -73, 182, -73, -73, 205,-32768,-32768, -73, -73, 154,
+ -73, -73, 241, 297, 26, -73, -73, 27, 208,-32768,
+-32768,-32768, -73, -73, -73,-32768,-32768, -73, 241, 182,
+ 251, -73, -73, 251, -73, 182, 251, -73, 230, 154,
+-32768, 251, 251, -73,-32768, 251, 154,-32768, 251, 241,
+-32768,-32768, 251,-32768,-32768, 236,-32768,-32768, 182, -11,
+-32768, 332,-32768
};
static const short yypgoto[] = {-32768,
--32768,-32768,-32768,-32768,-32768,-32768, -211,-32768,-32768,-32768,
--32768,-32768,-32768, 232, -219,-32768, -254,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, -220,-32768,-32768,-32768,
+-32768,-32768,-32768, 248, -222,-32768, -262,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 298,
- -285, 176, -85,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768, 88,-32768, 126, 94,-32768, -171,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 289,
+ 30, 159, -44,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 117,-32768, 163, 140,-32768, -171,-32768,-32768,
-32768, -141,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768, -22, 215, 46, 158, 493, 452,
- -325, -312, -261, 11, -3, -2,-32768, -110,-32768
+-32768,-32768,-32768,-32768, -22,-32768,-32768, 486, -24, 55,
+ 480, 316, -304, -315, -261, 8, -3, -2,-32768, -122,
+-32768
};
-#define YYLAST 720
+#define YYLAST 708
static const short yytable[] = { 31,
- 162, 48, 283, 163, 165, 34, 35, 217, 248, 263,
- 419, 419, 198, 286, 255, 148, 149, 365, 284, 253,
- 342, 330, 237, 298, 331, 57, 58, 59, 225, 226,
- 227, 228, 229, 230, 60, 169, 279, 70, 474, 332,
- 267, 61, 364, 199, 338, 247, 96, 97, 98, 99,
- 100, 101, 102, 103, 399, 186, 67, 68, 69, 106,
+ 162, 48, 283, 148, 149, 34, 35, 163, 165, 284,
+ 253, 255, 173, 186, 369, 298, 88, 89, 217, 248,
+ 263, 60, 192, 169, 426, 57, 58, 59, 426, 426,
+ 482, 267, 286, 279, 147, 181, 338, 193, 61, 225,
+ 226, 227, 228, 229, 230, 247, 96, 97, 98, 99,
+ 100, 101, 102, 103, 237, 406, 174, 191, 175, 106,
107, 108, 109, 110, 111, 112, 113, 115, 116, 117,
- 238, 239, 240, 241, 242, 243, 262, 71, 72, 73,
- 166, 27, 6, 210, 285, 406, 88, 89, 28, 423,
- 201, 282, 29, 8, 147, 173, 30, 9, 177, 60,
- 60, 60, 60, 438, 60, 261, 74, 75, 76, 77,
- 78, 79, 80, 181, 244, 142, 452, 252, 280, 187,
- 188, 202, 459, 281, 300, 145, 194, 191, 370, 339,
- 200, 155, 156, 157, 158, 159, 160, 161, 192, 174,
- 164, 175, 178, 170, 179, 472, 331, 203, 204, 178,
- 185, 179, 205, 193, 209, 71, 72, 73, 171, 172,
- 211, 332, 174, 206, 175, 189, 190, 178, 178, 179,
- 179, 134, 178, 443, 179, 446, 398, 221, 449, 331,
- 6, 196, 197, 455, 74, 75, 76, 77, 78, 79,
- 80, 8, 119, 120, 332, 9, 86, 87, 367, 207,
- 208, 220, 92, 5, 6, 222, 212, 213, 60, 214,
- 473, 118, 216, 218, 250, 8, 251, 223, 224, 9,
- 290, 301, 303, 235, 302, 335, 246, 340, 249, 135,
- 136, 137, 138, 139, 140, 141, 341, 36, 64, 65,
- 66, 67, 68, 69, 37, 38, 39, 40, 291, 125,
- 83, 71, 72, 73, 297, 367, 360, 90, 91, 264,
- 93, 130, 95, 368, 371, 289, 372, 392, 401, 293,
- 294, 295, 296, 41, 42, 131, 287, 427, 43, 44,
- 74, 75, 76, 77, 78, 79, 80, 397, 409, 45,
- 46, 412, 47, 426, 433, 434, 441, 304, 419, 462,
- 470, 71, 72, 73, 336, 74, 75, 76, 77, 78,
- 79, 80, 27, 5, 6, 71, 72, 73, 127, 28,
- 475, 133, 414, 29, 257, 8, 3, 30, 366, 9,
- 74, 75, 76, 77, 78, 79, 80, 258, 373, 236,
- 0, 0, 4, 0, 74, 75, 76, 77, 78, 79,
- 80, 0, 0, 238, 239, 240, 241, 242, 243, 0,
- 396, 71, 72, 73, 5, 6, 0, 7, 408, 0,
- 27, 403, 0, 0, 0, 0, 8, 28, 400, 0,
- 9, 29, 0, 402, 0, 30, 0, 0, 404, 0,
- 74, 75, 76, 77, 78, 79, 80, 244, 62, 63,
- 64, 65, 66, 67, 68, 69, 405, 0, 418, 0,
- 407, 82, 0, 411, 0, 413, 0, 0, 27, 182,
- 416, 417, 432, 421, 422, 28, 424, 425, 0, 29,
- 0, 428, 429, 30, 430, 431, 0, 451, 0, 436,
- 437, 0, 0, 0, 0, 444, 445, 447, 268, 0,
- 450, 0, 0, 0, 454, 456, 278, 458, 468, 0,
- 461, 269, 270, 271, 272, 299, 465, 0, 0, 269,
- 270, 271, 272, 65, 66, 67, 68, 69, 269, 270,
- 271, 272, 0, 0, 0, 0, 273, 0, 274, 275,
- 276, 277, 0, 0, 273, 305, 274, 275, 276, 277,
- 0, 306, 0, 273, 0, 274, 275, 276, 277, 0,
- 0, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 337, 328, 0, 0, 124, 0, 306, 128,
- 129, 0, 0, 132, 0, 0, 143, 0, 307, 308,
+ 200, 210, 36, 371, 194, 285, 262, 187, 188, 37,
+ 38, 39, 40, 60, 166, 27, 6, 198, 201, 413,
+ 203, 282, 28, 86, 87, 177, 29, 8, 261, 92,
+ 30, 9, 238, 239, 240, 241, 242, 243, 41, 42,
+ 60, 60, 60, 43, 44, 280, 60, 430, 199, 202,
+ 441, 446, 145, 60, 45, 46, 281, 47, 252, 339,
+ 204, 155, 156, 157, 158, 159, 160, 161, 300, 178,
+ 164, 179, 178, 170, 179, 460, 244, 205, 5, 6,
+ 185, 467, 268, 206, 331, 171, 172, 209, 142, 174,
+ 8, 175, 189, 190, 9, 269, 270, 271, 272, 332,
+ 178, 70, 179, 211, 480, 374, 221, 222, 196, 197,
+ 250, 451, 178, 454, 179, 335, 457, 67, 68, 69,
+ 273, 463, 274, 275, 276, 277, 207, 208, 71, 72,
+ 73, 220, 301, 212, 213, 368, 214, 251, 290, 216,
+ 218, 71, 72, 73, 223, 224, 302, 118, 481, 178,
+ 235, 179, 303, 246, 340, 249, 341, 74, 75, 76,
+ 77, 78, 79, 80, 130, 119, 120, 360, 371, 372,
+ 74, 75, 76, 77, 78, 79, 80, 375, 291, 364,
+ 365, 6, 134, 426, 297, 376, 264, 71, 72, 73,
+ 330, 405, 8, 331, 331, 289, 9, 396, 400, 293,
+ 294, 295, 296, 287, 71, 72, 73, 131, 332, 332,
+ 401, 403, 3, 125, 434, 133, 74, 75, 76, 77,
+ 78, 79, 80, 404, 304, 408, 416, 419, 4, 433,
+ 440, 336, 449, 74, 75, 76, 77, 78, 79, 80,
+ 135, 136, 137, 138, 139, 140, 141, 71, 72, 73,
+ 5, 6, 27, 7, 470, 71, 72, 73, 370, 28,
+ 478, 483, 8, 29, 127, 342, 9, 30, 377, 74,
+ 75, 76, 77, 78, 79, 80, 74, 75, 76, 77,
+ 78, 79, 80, 257, 74, 75, 76, 77, 78, 79,
+ 80, 5, 6, 402, 238, 239, 240, 241, 242, 243,
+ 421, 6, 415, 8, 27, 410, 236, 9, 0, 407,
+ 278, 28, 8, 258, 409, 29, 9, 0, 0, 30,
+ 27, 182, 411, 269, 270, 271, 272, 28, 0, 0,
+ 124, 29, 0, 128, 129, 30, 0, 132, 244, 412,
+ 143, 0, 0, 0, 414, 425, 0, 418, 273, 420,
+ 274, 275, 276, 277, 423, 424, 0, 428, 429, 439,
+ 431, 432, 0, 0, 0, 435, 436, 0, 437, 438,
+ 0, 0, 0, 444, 445, 459, 27, 219, 0, 0,
+ 452, 453, 455, 28, 299, 458, 0, 29, 0, 462,
+ 464, 30, 466, 0, 0, 469, 476, 269, 270, 271,
+ 272, 473, 62, 63, 64, 65, 66, 67, 68, 69,
+ 0, 0, 305, 0, 0, 82, 0, 0, 306, 0,
+ 0, 0, 273, 0, 274, 275, 276, 277, 307, 308,
309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 369,
- 328, 0, 0, 0, 0, 306, 121, 123, 121, 121,
- 123, 123, 0, 0, 121, 307, 308, 309, 310, 311,
+ 319, 320, 321, 322, 323, 324, 325, 326, 327, 337,
+ 328, 83, 0, 0, 0, 306, 0, 0, 90, 91,
+ 0, 93, 0, 95, 0, 307, 308, 309, 310, 311,
312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 439, 328, 27, 219,
- 0, 0, 0, 0, 0, 28, 0, 0, 453, 29,
- 0, 457, 0, 30, 460, 0, 0, 0, 0, 463,
- 464, 0, 0, 466, 0, 0, 467, 0, 0, 0,
- 469, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 386, 387, 388, 389, 390, 391, 0, 393, 394,
- 395, 62, 63, 64, 65, 66, 67, 68, 69, 0,
- 0, 0, 0, 0, 104, 74, 75, 76, 77, 78,
- 79, 80, 0, 119, 120, 49, 50, 51, 52, 53,
- 54, 55, 56, 62, 63, 64, 65, 66, 67, 68,
- 69, 63, 64, 65, 66, 67, 68, 69, 225, 226,
- 227, 228, 229, 230, 238, 239, 240, 241, 242, 243
+ 322, 323, 324, 325, 326, 327, 373, 328, 0, 0,
+ 0, 0, 306, 121, 123, 121, 121, 123, 123, 0,
+ 0, 121, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 442, 328, 0, 447, 62, 63, 64,
+ 65, 66, 67, 68, 69, 0, 0, 0, 0, 461,
+ 104, 0, 465, 0, 0, 468, 0, 0, 0, 0,
+ 471, 472, 0, 0, 474, 0, 0, 475, 0, 0,
+ 0, 477, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 0, 397,
+ 398, 399, 74, 75, 76, 77, 78, 79, 80, 0,
+ 119, 120, 49, 50, 51, 52, 53, 54, 55, 56,
+ 62, 63, 64, 65, 66, 67, 68, 69, 63, 64,
+ 65, 66, 67, 68, 69, 64, 65, 66, 67, 68,
+ 69, 225, 226, 227, 228, 229, 230, 238, 239, 240,
+ 241, 242, 243, 65, 66, 67, 68, 69
};
static const short yycheck[] = { 3,
- 142, 24, 264, 4, 4, 8, 9, 3, 3, 3,
- 3, 3, 49, 4, 234, 126, 127, 330, 4, 231,
- 306, 79, 3, 278, 82, 28, 29, 30, 6, 7,
- 8, 9, 10, 11, 95, 146, 256, 3, 0, 97,
- 252, 31, 328, 80, 299, 217, 49, 50, 51, 52,
- 53, 54, 55, 56, 367, 4, 90, 91, 92, 62,
+ 142, 24, 264, 126, 127, 8, 9, 4, 4, 4,
+ 231, 234, 4, 4, 330, 278, 41, 42, 3, 3,
+ 3, 95, 80, 146, 3, 28, 29, 30, 3, 3,
+ 0, 252, 4, 256, 96, 4, 299, 95, 31, 6,
+ 7, 8, 9, 10, 11, 217, 49, 50, 51, 52,
+ 53, 54, 55, 56, 3, 371, 48, 4, 50, 62,
63, 64, 65, 66, 67, 68, 69, 71, 72, 73,
- 51, 52, 53, 54, 55, 56, 248, 43, 44, 45,
- 80, 82, 82, 194, 70, 398, 41, 42, 89, 415,
- 49, 263, 93, 93, 96, 4, 97, 97, 4, 95,
- 95, 95, 95, 95, 95, 4, 72, 73, 74, 75,
- 76, 77, 78, 4, 95, 3, 442, 95, 4, 68,
- 69, 80, 448, 4, 4, 115, 95, 4, 4, 301,
- 80, 135, 136, 137, 138, 139, 140, 141, 80, 48,
- 144, 50, 48, 147, 50, 471, 82, 80, 95, 48,
- 153, 50, 3, 95, 80, 43, 44, 45, 148, 149,
- 95, 97, 48, 3, 50, 155, 156, 48, 48, 50,
- 50, 3, 48, 435, 50, 437, 79, 71, 440, 82,
- 82, 171, 172, 445, 72, 73, 74, 75, 76, 77,
- 78, 93, 80, 81, 97, 97, 39, 40, 85, 189,
- 190, 204, 45, 81, 82, 70, 196, 197, 95, 199,
- 472, 3, 202, 203, 3, 93, 80, 207, 208, 97,
- 80, 3, 80, 213, 4, 95, 216, 95, 218, 61,
- 62, 63, 64, 65, 66, 67, 80, 5, 87, 88,
- 89, 90, 91, 92, 12, 13, 14, 15, 271, 16,
- 36, 43, 44, 45, 277, 85, 80, 43, 44, 249,
- 46, 3, 48, 80, 80, 269, 95, 95, 95, 273,
- 274, 275, 276, 41, 42, 3, 266, 419, 46, 47,
- 72, 73, 74, 75, 76, 77, 78, 98, 95, 57,
- 58, 95, 60, 95, 4, 95, 95, 287, 3, 95,
- 95, 43, 44, 45, 294, 72, 73, 74, 75, 76,
- 77, 78, 82, 81, 82, 43, 44, 45, 87, 89,
- 0, 3, 408, 93, 237, 93, 43, 97, 332, 97,
- 72, 73, 74, 75, 76, 77, 78, 244, 342, 214,
- -1, -1, 59, -1, 72, 73, 74, 75, 76, 77,
- 78, -1, -1, 51, 52, 53, 54, 55, 56, -1,
- 364, 43, 44, 45, 81, 82, -1, 84, 80, -1,
- 82, 375, -1, -1, -1, -1, 93, 89, 368, -1,
- 97, 93, -1, 373, -1, 97, -1, -1, 392, -1,
- 72, 73, 74, 75, 76, 77, 78, 95, 85, 86,
- 87, 88, 89, 90, 91, 92, 396, -1, 412, -1,
- 400, 98, -1, 403, -1, 405, -1, -1, 82, 83,
- 410, 411, 426, 413, 414, 89, 416, 417, -1, 93,
- -1, 421, 422, 97, 424, 425, -1, 441, -1, 429,
- 430, -1, -1, -1, -1, 435, 436, 437, 3, -1,
- 440, -1, -1, -1, 444, 445, 3, 447, 462, -1,
- 450, 16, 17, 18, 19, 3, 456, -1, -1, 16,
- 17, 18, 19, 88, 89, 90, 91, 92, 16, 17,
- 18, 19, -1, -1, -1, -1, 41, -1, 43, 44,
- 45, 46, -1, -1, 41, 4, 43, 44, 45, 46,
- -1, 10, -1, 41, -1, 43, 44, 45, 46, -1,
- -1, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 4, 42, -1, -1, 85, -1, 10, 88,
- 89, -1, -1, 92, -1, -1, 95, -1, 20, 21,
+ 80, 194, 5, 85, 95, 70, 248, 68, 69, 12,
+ 13, 14, 15, 95, 80, 82, 82, 49, 49, 405,
+ 80, 263, 89, 39, 40, 4, 93, 93, 4, 45,
+ 97, 97, 51, 52, 53, 54, 55, 56, 41, 42,
+ 95, 95, 95, 46, 47, 4, 95, 422, 80, 80,
+ 95, 95, 115, 95, 57, 58, 4, 60, 95, 301,
+ 95, 135, 136, 137, 138, 139, 140, 141, 4, 48,
+ 144, 50, 48, 147, 50, 450, 95, 3, 81, 82,
+ 153, 456, 3, 3, 82, 148, 149, 80, 3, 48,
+ 93, 50, 155, 156, 97, 16, 17, 18, 19, 97,
+ 48, 3, 50, 95, 479, 4, 71, 70, 171, 172,
+ 3, 443, 48, 445, 50, 95, 448, 90, 91, 92,
+ 41, 453, 43, 44, 45, 46, 189, 190, 43, 44,
+ 45, 204, 3, 196, 197, 328, 199, 80, 80, 202,
+ 203, 43, 44, 45, 207, 208, 4, 3, 480, 48,
+ 213, 50, 80, 216, 95, 218, 80, 72, 73, 74,
+ 75, 76, 77, 78, 3, 80, 81, 80, 85, 80,
+ 72, 73, 74, 75, 76, 77, 78, 80, 271, 80,
+ 81, 82, 3, 3, 277, 95, 249, 43, 44, 45,
+ 79, 79, 93, 82, 82, 269, 97, 95, 95, 273,
+ 274, 275, 276, 266, 43, 44, 45, 3, 97, 97,
+ 95, 95, 43, 16, 426, 3, 72, 73, 74, 75,
+ 76, 77, 78, 98, 287, 95, 95, 95, 59, 95,
+ 4, 294, 95, 72, 73, 74, 75, 76, 77, 78,
+ 61, 62, 63, 64, 65, 66, 67, 43, 44, 45,
+ 81, 82, 82, 84, 95, 43, 44, 45, 332, 89,
+ 95, 0, 93, 93, 87, 306, 97, 97, 342, 72,
+ 73, 74, 75, 76, 77, 78, 72, 73, 74, 75,
+ 76, 77, 78, 237, 72, 73, 74, 75, 76, 77,
+ 78, 81, 82, 367, 51, 52, 53, 54, 55, 56,
+ 415, 82, 80, 93, 82, 379, 214, 97, -1, 372,
+ 3, 89, 93, 244, 377, 93, 97, -1, -1, 97,
+ 82, 83, 396, 16, 17, 18, 19, 89, -1, -1,
+ 85, 93, -1, 88, 89, 97, -1, 92, 95, 402,
+ 95, -1, -1, -1, 407, 419, -1, 410, 41, 412,
+ 43, 44, 45, 46, 417, 418, -1, 420, 421, 433,
+ 423, 424, -1, -1, -1, 428, 429, -1, 431, 432,
+ -1, -1, -1, 436, 437, 449, 82, 83, -1, -1,
+ 443, 444, 445, 89, 3, 448, -1, 93, -1, 452,
+ 453, 97, 455, -1, -1, 458, 470, 16, 17, 18,
+ 19, 464, 85, 86, 87, 88, 89, 90, 91, 92,
+ -1, -1, 4, -1, -1, 98, -1, -1, 10, -1,
+ -1, -1, 41, -1, 43, 44, 45, 46, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 4,
- 42, -1, -1, -1, -1, 10, 84, 85, 86, 87,
- 88, 89, -1, -1, 92, 20, 21, 22, 23, 24,
+ 42, 36, -1, -1, -1, 10, -1, -1, 43, 44,
+ -1, 46, -1, 48, -1, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 431, 42, 82, 83,
- -1, -1, -1, -1, -1, 89, -1, -1, 443, 93,
- -1, 446, -1, 97, 449, -1, -1, -1, -1, 454,
- 455, -1, -1, 458, -1, -1, 461, -1, -1, -1,
- 465, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 358, 359, -1, 361, 362,
- 363, 85, 86, 87, 88, 89, 90, 91, 92, -1,
- -1, -1, -1, -1, 98, 72, 73, 74, 75, 76,
- 77, 78, -1, 80, 81, 85, 86, 87, 88, 89,
- 90, 91, 92, 85, 86, 87, 88, 89, 90, 91,
- 92, 86, 87, 88, 89, 90, 91, 92, 6, 7,
- 8, 9, 10, 11, 51, 52, 53, 54, 55, 56
+ 35, 36, 37, 38, 39, 40, 4, 42, -1, -1,
+ -1, -1, 10, 84, 85, 86, 87, 88, 89, -1,
+ -1, 92, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 435, 42, -1, 438, 85, 86, 87,
+ 88, 89, 90, 91, 92, -1, -1, -1, -1, 451,
+ 98, -1, 454, -1, -1, 457, -1, -1, -1, -1,
+ 462, 463, -1, -1, 466, -1, -1, 469, -1, -1,
+ -1, 473, 344, 345, 346, 347, 348, 349, 350, 351,
+ 352, 353, 354, 355, 356, 357, 358, 359, -1, 361,
+ 362, 363, 72, 73, 74, 75, 76, 77, 78, -1,
+ 80, 81, 85, 86, 87, 88, 89, 90, 91, 92,
+ 85, 86, 87, 88, 89, 90, 91, 92, 86, 87,
+ 88, 89, 90, 91, 92, 87, 88, 89, 90, 91,
+ 92, 6, 7, 8, 9, 10, 11, 51, 52, 53,
+ 54, 55, 56, 88, 89, 90, 91, 92
};
/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
#line 3 "/usr/share/misc/bison.simple"
@@ -1837,50 +1846,41 @@ case 83:
case 84:
#line 640 "rcparse.y"
{
- yyval.dialog_control = define_control (yyvsp[-4].s, yyvsp[-3].il, yyvsp[-2].il, yyvsp[-1].il, 0, 0, CTL_STATIC,
- SS_ICON | WS_CHILD | WS_VISIBLE, 0);
- if (yyvsp[0].rcdata_item != NULL)
- {
- if (dialog.ex == NULL)
- rcparse_warning (_("control data requires DIALOGEX"));
- yyval.dialog_control->data = yyvsp[0].rcdata_item;
- }
- ;
+ yyval.dialog_control = define_icon_control (yyvsp[-4].id, yyvsp[-3].il, yyvsp[-2].il, yyvsp[-1].il, 0, 0, 0, yyvsp[0].rcdata_item,
+ dialog.ex);
+ ;
break;}
case 85:
-#line 652 "rcparse.y"
+#line 646 "rcparse.y"
{
- yyval.dialog_control = define_control (yyvsp[-8].s, yyvsp[-7].il, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, CTL_STATIC,
- style, yyvsp[-1].il);
- if (yyvsp[0].rcdata_item != NULL)
- {
- if (dialog.ex == NULL)
- rcparse_warning (_("control data requires DIALOGEX"));
- yyval.dialog_control->data = yyvsp[0].rcdata_item;
- }
- ;
+ yyval.dialog_control = define_icon_control (yyvsp[-6].id, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, 0, 0, 0, yyvsp[0].rcdata_item,
+ dialog.ex);
+ ;
break;}
case 86:
-#line 664 "rcparse.y"
+#line 652 "rcparse.y"
{
- yyval.dialog_control = define_control (yyvsp[-9].s, yyvsp[-8].il, yyvsp[-7].il, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, CTL_STATIC,
- style, yyvsp[-2].il);
- if (dialog.ex == NULL)
- rcparse_warning (_("help ID requires DIALOGEX"));
- yyval.dialog_control->help = yyvsp[-1].il;
- yyval.dialog_control->data = yyvsp[0].rcdata_item;
- ;
+ yyval.dialog_control = define_icon_control (yyvsp[-8].id, yyvsp[-7].il, yyvsp[-6].il, yyvsp[-5].il, style, yyvsp[-1].il, 0, yyvsp[0].rcdata_item,
+ dialog.ex);
+ ;
break;}
case 87:
-#line 673 "rcparse.y"
+#line 658 "rcparse.y"
+{
+ yyval.dialog_control = define_icon_control (yyvsp[-9].id, yyvsp[-8].il, yyvsp[-7].il, yyvsp[-6].il, style, yyvsp[-2].il, yyvsp[-1].il, yyvsp[0].rcdata_item,
+ dialog.ex);
+ ;
+ break;}
+case 88:
+#line 663 "rcparse.y"
{
default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
base_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
class = CTL_EDIT;
;
break;}
-case 88:
-#line 679 "rcparse.y"
+case 89:
+#line 669 "rcparse.y"
{
yyval.dialog_control = yyvsp[0].dialog_control;
if (dialog.ex == NULL)
@@ -1888,131 +1888,131 @@ case 88:
res_string_to_id (&yyval.dialog_control->class, "IEDIT");
;
break;}
-case 89:
-#line 686 "rcparse.y"
+case 90:
+#line 676 "rcparse.y"
{
default_style = LBS_NOTIFY | WS_BORDER;
base_style = LBS_NOTIFY | WS_BORDER;
class = CTL_LISTBOX;
;
break;}
-case 90:
-#line 692 "rcparse.y"
+case 91:
+#line 682 "rcparse.y"
{
yyval.dialog_control = yyvsp[0].dialog_control;
;
break;}
-case 91:
-#line 696 "rcparse.y"
+case 92:
+#line 686 "rcparse.y"
{
default_style = SS_LEFT | WS_GROUP;
base_style = SS_LEFT;
class = CTL_STATIC;
;
break;}
-case 92:
-#line 702 "rcparse.y"
+case 93:
+#line 692 "rcparse.y"
{
yyval.dialog_control = yyvsp[0].dialog_control;
;
break;}
-case 93:
-#line 706 "rcparse.y"
+case 94:
+#line 696 "rcparse.y"
{
default_style = BS_PUSHBOX | WS_TABSTOP;
base_style = BS_PUSHBOX;
class = CTL_BUTTON;
;
break;}
-case 94:
-#line 712 "rcparse.y"
+case 95:
+#line 702 "rcparse.y"
{
yyval.dialog_control = yyvsp[0].dialog_control;
;
break;}
-case 95:
-#line 716 "rcparse.y"
+case 96:
+#line 706 "rcparse.y"
{
default_style = BS_PUSHBUTTON | WS_TABSTOP;
base_style = BS_PUSHBUTTON | WS_TABSTOP;
class = CTL_BUTTON;
;
break;}
-case 96:
-#line 722 "rcparse.y"
+case 97:
+#line 712 "rcparse.y"
{
yyval.dialog_control = yyvsp[0].dialog_control;
;
break;}
-case 97:
-#line 726 "rcparse.y"
+case 98:
+#line 716 "rcparse.y"
{
default_style = BS_RADIOBUTTON | WS_TABSTOP;
base_style = BS_RADIOBUTTON;
class = CTL_BUTTON;
;
break;}
-case 98:
-#line 732 "rcparse.y"
+case 99:
+#line 722 "rcparse.y"
{
yyval.dialog_control = yyvsp[0].dialog_control;
;
break;}
-case 99:
-#line 736 "rcparse.y"
+case 100:
+#line 726 "rcparse.y"
{
default_style = SS_RIGHT | WS_GROUP;
base_style = SS_RIGHT;
class = CTL_STATIC;
;
break;}
-case 100:
-#line 742 "rcparse.y"
+case 101:
+#line 732 "rcparse.y"
{
yyval.dialog_control = yyvsp[0].dialog_control;
;
break;}
-case 101:
-#line 746 "rcparse.y"
+case 102:
+#line 736 "rcparse.y"
{
default_style = SBS_HORZ;
base_style = 0;
class = CTL_SCROLLBAR;
;
break;}
-case 102:
-#line 752 "rcparse.y"
+case 103:
+#line 742 "rcparse.y"
{
yyval.dialog_control = yyvsp[0].dialog_control;
;
break;}
-case 103:
-#line 756 "rcparse.y"
+case 104:
+#line 746 "rcparse.y"
{
default_style = BS_3STATE | WS_TABSTOP;
base_style = BS_3STATE;
class = CTL_BUTTON;
;
break;}
-case 104:
-#line 762 "rcparse.y"
+case 105:
+#line 752 "rcparse.y"
{
yyval.dialog_control = yyvsp[0].dialog_control;
;
break;}
-case 105:
-#line 767 "rcparse.y"
+case 106:
+#line 757 "rcparse.y"
{ style = WS_CHILD | WS_VISIBLE; ;
break;}
-case 106:
-#line 769 "rcparse.y"
+case 107:
+#line 759 "rcparse.y"
{
yyval.dialog_control = define_control (yyvsp[-14].s, yyvsp[-12].il, yyvsp[-10].il, yyvsp[-8].il, yyvsp[-6].il, yyvsp[-4].il, CTL_BUTTON,
style, yyvsp[0].il);
;
break;}
-case 107:
-#line 785 "rcparse.y"
+case 108:
+#line 775 "rcparse.y"
{
yyval.dialog_control = define_control (yyvsp[-6].s, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, yyvsp[-2].il, yyvsp[-1].il, class,
default_style | WS_CHILD | WS_VISIBLE, 0);
@@ -2024,8 +2024,8 @@ case 107:
}
;
break;}
-case 108:
-#line 797 "rcparse.y"
+case 109:
+#line 787 "rcparse.y"
{
yyval.dialog_control = define_control (yyvsp[-8].s, yyvsp[-7].il, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, class, style, yyvsp[-1].il);
if (yyvsp[0].rcdata_item != NULL)
@@ -2036,8 +2036,8 @@ case 108:
}
;
break;}
-case 109:
-#line 808 "rcparse.y"
+case 110:
+#line 798 "rcparse.y"
{
yyval.dialog_control = define_control (yyvsp[-9].s, yyvsp[-8].il, yyvsp[-7].il, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, class, style, yyvsp[-2].il);
if (dialog.ex == NULL)
@@ -2046,74 +2046,80 @@ case 109:
yyval.dialog_control->data = yyvsp[0].rcdata_item;
;
break;}
-case 110:
-#line 819 "rcparse.y"
+case 111:
+#line 809 "rcparse.y"
{
yyval.s = NULL;
;
break;}
-case 111:
-#line 823 "rcparse.y"
+case 112:
+#line 813 "rcparse.y"
+{
+ yyval.s = yyvsp[0].s;
+ ;
+ break;}
+case 113:
+#line 817 "rcparse.y"
{
yyval.s = yyvsp[-1].s;
;
break;}
-case 112:
-#line 830 "rcparse.y"
+case 114:
+#line 824 "rcparse.y"
{
yyval.rcdata_item = NULL;
;
break;}
-case 113:
-#line 834 "rcparse.y"
+case 115:
+#line 828 "rcparse.y"
{
yyval.rcdata_item = yyvsp[-1].rcdata.first;
;
break;}
-case 114:
-#line 843 "rcparse.y"
+case 116:
+#line 837 "rcparse.y"
{ style = WS_CHILD | WS_VISIBLE; ;
break;}
-case 116:
-#line 849 "rcparse.y"
+case 118:
+#line 843 "rcparse.y"
{ style = SS_ICON | WS_CHILD | WS_VISIBLE; ;
break;}
-case 118:
-#line 855 "rcparse.y"
+case 120:
+#line 849 "rcparse.y"
{ style = base_style | WS_CHILD | WS_VISIBLE; ;
break;}
-case 120:
-#line 863 "rcparse.y"
+case 122:
+#line 857 "rcparse.y"
{
define_font (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
;
break;}
-case 121:
-#line 872 "rcparse.y"
+case 123:
+#line 866 "rcparse.y"
{
define_icon (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
;
break;}
-case 122:
-#line 882 "rcparse.y"
+case 124:
+#line 876 "rcparse.y"
{
language = yyvsp[-1].il | (yyvsp[0].il << 8);
;
break;}
-case 123:
-#line 891 "rcparse.y"
+case 125:
+#line 885 "rcparse.y"
{
define_menu (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].menuitem);
;
break;}
-case 124:
-#line 898 "rcparse.y"
+case 126:
+#line 892 "rcparse.y"
{
yyval.menuitem = NULL;
;
break;}
-case 125:
-#line 902 "rcparse.y"
+case 127:
+#line 896 "rcparse.y"
{
if (yyvsp[-1].menuitem == NULL)
yyval.menuitem = yyvsp[0].menuitem;
@@ -2128,92 +2134,92 @@ case 125:
}
;
break;}
-case 126:
-#line 919 "rcparse.y"
+case 128:
+#line 913 "rcparse.y"
{
yyval.menuitem = define_menuitem (yyvsp[-2].s, yyvsp[-1].il, yyvsp[0].is, 0, 0, NULL);
;
break;}
-case 127:
-#line 923 "rcparse.y"
+case 129:
+#line 917 "rcparse.y"
{
yyval.menuitem = define_menuitem (NULL, 0, 0, 0, 0, NULL);
;
break;}
-case 128:
-#line 927 "rcparse.y"
+case 130:
+#line 921 "rcparse.y"
{
yyval.menuitem = define_menuitem (yyvsp[-4].s, 0, yyvsp[-3].is, 0, 0, yyvsp[-1].menuitem);
;
break;}
-case 129:
-#line 934 "rcparse.y"
+case 131:
+#line 928 "rcparse.y"
{
yyval.is = 0;
;
break;}
-case 130:
-#line 938 "rcparse.y"
+case 132:
+#line 932 "rcparse.y"
{
yyval.is = yyvsp[-2].is | yyvsp[0].is;
;
break;}
-case 131:
-#line 942 "rcparse.y"
+case 133:
+#line 936 "rcparse.y"
{
yyval.is = yyvsp[-1].is | yyvsp[0].is;
;
break;}
-case 132:
-#line 949 "rcparse.y"
+case 134:
+#line 943 "rcparse.y"
{
yyval.is = MENUITEM_CHECKED;
;
break;}
-case 133:
-#line 953 "rcparse.y"
+case 135:
+#line 947 "rcparse.y"
{
yyval.is = MENUITEM_GRAYED;
;
break;}
-case 134:
-#line 957 "rcparse.y"
+case 136:
+#line 951 "rcparse.y"
{
yyval.is = MENUITEM_HELP;
;
break;}
-case 135:
-#line 961 "rcparse.y"
+case 137:
+#line 955 "rcparse.y"
{
yyval.is = MENUITEM_INACTIVE;
;
break;}
-case 136:
-#line 965 "rcparse.y"
+case 138:
+#line 959 "rcparse.y"
{
yyval.is = MENUITEM_MENUBARBREAK;
;
break;}
-case 137:
-#line 969 "rcparse.y"
+case 139:
+#line 963 "rcparse.y"
{
yyval.is = MENUITEM_MENUBREAK;
;
break;}
-case 138:
-#line 978 "rcparse.y"
+case 140:
+#line 972 "rcparse.y"
{
define_menu (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].menuitem);
;
break;}
-case 139:
-#line 985 "rcparse.y"
+case 141:
+#line 979 "rcparse.y"
{
yyval.menuitem = NULL;
;
break;}
-case 140:
-#line 989 "rcparse.y"
+case 142:
+#line 983 "rcparse.y"
{
if (yyvsp[-1].menuitem == NULL)
yyval.menuitem = yyvsp[0].menuitem;
@@ -2228,94 +2234,94 @@ case 140:
}
;
break;}
-case 141:
-#line 1006 "rcparse.y"
+case 143:
+#line 1000 "rcparse.y"
{
yyval.menuitem = define_menuitem (yyvsp[0].s, 0, 0, 0, 0, NULL);
;
break;}
-case 142:
-#line 1010 "rcparse.y"
+case 144:
+#line 1004 "rcparse.y"
{
yyval.menuitem = define_menuitem (yyvsp[-1].s, yyvsp[0].il, 0, 0, 0, NULL);
;
break;}
-case 143:
-#line 1014 "rcparse.y"
+case 145:
+#line 1008 "rcparse.y"
{
yyval.menuitem = define_menuitem (yyvsp[-3].s, yyvsp[-2].il, yyvsp[-1].il, yyvsp[0].il, 0, NULL);
;
break;}
-case 144:
-#line 1018 "rcparse.y"
+case 146:
+#line 1012 "rcparse.y"
{
yyval.menuitem = define_menuitem (NULL, 0, 0, 0, 0, NULL);
;
break;}
-case 145:
-#line 1022 "rcparse.y"
+case 147:
+#line 1016 "rcparse.y"
{
yyval.menuitem = define_menuitem (yyvsp[-3].s, 0, 0, 0, 0, yyvsp[-1].menuitem);
;
break;}
-case 146:
-#line 1026 "rcparse.y"
+case 148:
+#line 1020 "rcparse.y"
{
yyval.menuitem = define_menuitem (yyvsp[-4].s, yyvsp[-3].il, 0, 0, 0, yyvsp[-1].menuitem);
;
break;}
-case 147:
-#line 1030 "rcparse.y"
+case 149:
+#line 1024 "rcparse.y"
{
yyval.menuitem = define_menuitem (yyvsp[-5].s, yyvsp[-4].il, yyvsp[-3].il, 0, 0, yyvsp[-1].menuitem);
;
break;}
-case 148:
-#line 1035 "rcparse.y"
+case 150:
+#line 1029 "rcparse.y"
{
yyval.menuitem = define_menuitem (yyvsp[-7].s, yyvsp[-6].il, yyvsp[-5].il, yyvsp[-4].il, yyvsp[-3].il, yyvsp[-1].menuitem);
;
break;}
-case 149:
-#line 1044 "rcparse.y"
+case 151:
+#line 1038 "rcparse.y"
{
define_messagetable (yyvsp[-3].id, &yyvsp[-1].res_info, yyvsp[0].s);
;
break;}
-case 150:
-#line 1053 "rcparse.y"
+case 152:
+#line 1047 "rcparse.y"
{
define_rcdata (yyvsp[-5].id, &yyvsp[-3].res_info, yyvsp[-1].rcdata.first);
;
break;}
-case 151:
-#line 1062 "rcparse.y"
+case 153:
+#line 1056 "rcparse.y"
{
rcparse_rcdata ();
;
break;}
-case 152:
-#line 1066 "rcparse.y"
+case 154:
+#line 1060 "rcparse.y"
{
rcparse_normal ();
yyval.rcdata = yyvsp[0].rcdata;
;
break;}
-case 153:
-#line 1074 "rcparse.y"
+case 155:
+#line 1068 "rcparse.y"
{
yyval.rcdata.first = NULL;
yyval.rcdata.last = NULL;
;
break;}
-case 154:
-#line 1079 "rcparse.y"
+case 156:
+#line 1073 "rcparse.y"
{
yyval.rcdata = yyvsp[0].rcdata;
;
break;}
-case 155:
-#line 1086 "rcparse.y"
+case 157:
+#line 1080 "rcparse.y"
{
struct rcdata_item *ri;
@@ -2324,8 +2330,8 @@ case 155:
yyval.rcdata.last = ri;
;
break;}
-case 156:
-#line 1094 "rcparse.y"
+case 158:
+#line 1088 "rcparse.y"
{
struct rcdata_item *ri;
@@ -2334,8 +2340,8 @@ case 156:
yyval.rcdata.last = ri;
;
break;}
-case 157:
-#line 1102 "rcparse.y"
+case 159:
+#line 1096 "rcparse.y"
{
struct rcdata_item *ri;
@@ -2345,8 +2351,8 @@ case 157:
yyval.rcdata.last = ri;
;
break;}
-case 158:
-#line 1111 "rcparse.y"
+case 160:
+#line 1105 "rcparse.y"
{
struct rcdata_item *ri;
@@ -2356,150 +2362,150 @@ case 158:
yyval.rcdata.last = ri;
;
break;}
-case 159:
-#line 1125 "rcparse.y"
+case 161:
+#line 1119 "rcparse.y"
{ sub_res_info = yyvsp[-1].res_info; ;
break;}
-case 162:
-#line 1132 "rcparse.y"
+case 164:
+#line 1126 "rcparse.y"
{
define_stringtable (&sub_res_info, yyvsp[-1].il, yyvsp[0].s);
;
break;}
-case 163:
-#line 1136 "rcparse.y"
+case 165:
+#line 1130 "rcparse.y"
{
define_stringtable (&sub_res_info, yyvsp[-2].il, yyvsp[0].s);
;
break;}
-case 164:
-#line 1146 "rcparse.y"
+case 166:
+#line 1140 "rcparse.y"
{
define_user_data (yyvsp[-5].id, yyvsp[-4].id, &yyvsp[-3].res_info, yyvsp[-1].rcdata.first);
;
break;}
-case 165:
-#line 1150 "rcparse.y"
+case 167:
+#line 1144 "rcparse.y"
{
define_user_file (yyvsp[-3].id, yyvsp[-2].id, &yyvsp[-1].res_info, yyvsp[0].s);
;
break;}
-case 166:
-#line 1159 "rcparse.y"
+case 168:
+#line 1153 "rcparse.y"
{
define_versioninfo (yyvsp[-5].id, language, yyvsp[-3].fixver, yyvsp[-1].verinfo);
;
break;}
-case 167:
-#line 1166 "rcparse.y"
+case 169:
+#line 1160 "rcparse.y"
{
yyval.fixver = ((struct fixed_versioninfo *)
res_alloc (sizeof (struct fixed_versioninfo)));
memset (yyval.fixver, 0, sizeof (struct fixed_versioninfo));
;
break;}
-case 168:
-#line 1172 "rcparse.y"
+case 170:
+#line 1166 "rcparse.y"
{
yyvsp[-5].fixver->file_version_ms = (yyvsp[-3].il << 16) | yyvsp[-2].il;
yyvsp[-5].fixver->file_version_ls = (yyvsp[-1].il << 16) | yyvsp[0].il;
yyval.fixver = yyvsp[-5].fixver;
;
break;}
-case 169:
-#line 1178 "rcparse.y"
+case 171:
+#line 1172 "rcparse.y"
{
yyvsp[-5].fixver->product_version_ms = (yyvsp[-3].il << 16) | yyvsp[-2].il;
yyvsp[-5].fixver->product_version_ls = (yyvsp[-1].il << 16) | yyvsp[0].il;
yyval.fixver = yyvsp[-5].fixver;
;
break;}
-case 170:
-#line 1184 "rcparse.y"
+case 172:
+#line 1178 "rcparse.y"
{
yyvsp[-2].fixver->file_flags_mask = yyvsp[0].il;
yyval.fixver = yyvsp[-2].fixver;
;
break;}
-case 171:
-#line 1189 "rcparse.y"
+case 173:
+#line 1183 "rcparse.y"
{
yyvsp[-2].fixver->file_flags = yyvsp[0].il;
yyval.fixver = yyvsp[-2].fixver;
;
break;}
-case 172:
-#line 1194 "rcparse.y"
+case 174:
+#line 1188 "rcparse.y"
{
yyvsp[-2].fixver->file_os = yyvsp[0].il;
yyval.fixver = yyvsp[-2].fixver;
;
break;}
-case 173:
-#line 1199 "rcparse.y"
+case 175:
+#line 1193 "rcparse.y"
{
yyvsp[-2].fixver->file_type = yyvsp[0].il;
yyval.fixver = yyvsp[-2].fixver;
;
break;}
-case 174:
-#line 1204 "rcparse.y"
+case 176:
+#line 1198 "rcparse.y"
{
yyvsp[-2].fixver->file_subtype = yyvsp[0].il;
yyval.fixver = yyvsp[-2].fixver;
;
break;}
-case 175:
-#line 1218 "rcparse.y"
+case 177:
+#line 1212 "rcparse.y"
{
yyval.verinfo = NULL;
;
break;}
-case 176:
-#line 1222 "rcparse.y"
+case 178:
+#line 1216 "rcparse.y"
{
yyval.verinfo = append_ver_stringfileinfo (yyvsp[-7].verinfo, yyvsp[-4].s, yyvsp[-2].verstring);
;
break;}
-case 177:
-#line 1226 "rcparse.y"
+case 179:
+#line 1220 "rcparse.y"
{
yyval.verinfo = append_ver_varfileinfo (yyvsp[-6].verinfo, yyvsp[-2].s, yyvsp[-1].vervar);
;
break;}
-case 178:
-#line 1233 "rcparse.y"
+case 180:
+#line 1227 "rcparse.y"
{
yyval.verstring = NULL;
;
break;}
-case 179:
-#line 1237 "rcparse.y"
+case 181:
+#line 1231 "rcparse.y"
{
yyval.verstring = append_verval (yyvsp[-4].verstring, yyvsp[-2].s, yyvsp[0].s);
;
break;}
-case 180:
-#line 1244 "rcparse.y"
+case 182:
+#line 1238 "rcparse.y"
{
yyval.vervar = NULL;
;
break;}
-case 181:
-#line 1248 "rcparse.y"
+case 183:
+#line 1242 "rcparse.y"
{
yyval.vervar = append_vertrans (yyvsp[-2].vervar, yyvsp[-1].il, yyvsp[0].il);
;
break;}
-case 182:
-#line 1257 "rcparse.y"
+case 184:
+#line 1251 "rcparse.y"
{
yyval.id.named = 0;
yyval.id.u.id = yyvsp[0].il;
;
break;}
-case 183:
-#line 1262 "rcparse.y"
+case 185:
+#line 1256 "rcparse.y"
{
char *copy, *s;
@@ -2512,8 +2518,47 @@ case 183:
free (copy);
;
break;}
-case 184:
-#line 1280 "rcparse.y"
+case 186:
+#line 1273 "rcparse.y"
+{
+ yyval.s = yyvsp[0].s;
+ ;
+ break;}
+case 187:
+#line 1277 "rcparse.y"
+{
+ yyval.s = yyvsp[-1].s;
+ ;
+ break;}
+case 188:
+#line 1281 "rcparse.y"
+{
+ yyval.s = yyvsp[-1].s;
+ ;
+ break;}
+case 189:
+#line 1289 "rcparse.y"
+{
+ yyval.id.named = 0;
+ yyval.id.u.id = yyvsp[-1].il;
+ ;
+ break;}
+case 190:
+#line 1294 "rcparse.y"
+{
+ char *copy, *s;
+
+ /* It seems that resource ID's are forced to upper case. */
+ copy = xstrdup (yyvsp[0].s);
+ for (s = copy; *s != '\0'; s++)
+ if (islower ((unsigned char) *s))
+ *s = toupper ((unsigned char) *s);
+ res_string_to_id (&yyval.id, copy);
+ free (copy);
+ ;
+ break;}
+case 191:
+#line 1312 "rcparse.y"
{
memset (&yyval.res_info, 0, sizeof (struct res_res_info));
yyval.res_info.language = language;
@@ -2521,352 +2566,352 @@ case 184:
yyval.res_info.memflags = MEMFLAG_MOVEABLE;
;
break;}
-case 185:
-#line 1287 "rcparse.y"
+case 192:
+#line 1319 "rcparse.y"
{
yyval.res_info = yyvsp[-1].res_info;
yyval.res_info.memflags |= yyvsp[0].memflags.on;
yyval.res_info.memflags &=~ yyvsp[0].memflags.off;
;
break;}
-case 186:
-#line 1293 "rcparse.y"
+case 193:
+#line 1325 "rcparse.y"
{
yyval.res_info = yyvsp[-2].res_info;
yyval.res_info.characteristics = yyvsp[0].il;
;
break;}
-case 187:
-#line 1298 "rcparse.y"
+case 194:
+#line 1330 "rcparse.y"
{
yyval.res_info = yyvsp[-3].res_info;
yyval.res_info.language = yyvsp[-1].il | (yyvsp[0].il << 8);
;
break;}
-case 188:
-#line 1303 "rcparse.y"
+case 195:
+#line 1335 "rcparse.y"
{
yyval.res_info = yyvsp[-2].res_info;
yyval.res_info.version = yyvsp[0].il;
;
break;}
-case 189:
-#line 1313 "rcparse.y"
+case 196:
+#line 1345 "rcparse.y"
{
memset (&yyval.res_info, 0, sizeof (struct res_res_info));
yyval.res_info.language = language;
yyval.res_info.memflags = MEMFLAG_MOVEABLE | MEMFLAG_DISCARDABLE;
;
break;}
-case 190:
-#line 1319 "rcparse.y"
+case 197:
+#line 1351 "rcparse.y"
{
yyval.res_info = yyvsp[-1].res_info;
yyval.res_info.memflags |= yyvsp[0].memflags.on;
yyval.res_info.memflags &=~ yyvsp[0].memflags.off;
;
break;}
-case 191:
-#line 1330 "rcparse.y"
+case 198:
+#line 1362 "rcparse.y"
{
memset (&yyval.res_info, 0, sizeof (struct res_res_info));
yyval.res_info.language = language;
yyval.res_info.memflags = MEMFLAG_MOVEABLE;
;
break;}
-case 192:
-#line 1336 "rcparse.y"
+case 199:
+#line 1368 "rcparse.y"
{
yyval.res_info = yyvsp[-1].res_info;
yyval.res_info.memflags |= yyvsp[0].memflags.on;
yyval.res_info.memflags &=~ yyvsp[0].memflags.off;
;
break;}
-case 193:
-#line 1348 "rcparse.y"
+case 200:
+#line 1380 "rcparse.y"
{
yyval.memflags.on = MEMFLAG_MOVEABLE;
yyval.memflags.off = 0;
;
break;}
-case 194:
-#line 1353 "rcparse.y"
+case 201:
+#line 1385 "rcparse.y"
{
yyval.memflags.on = 0;
yyval.memflags.off = MEMFLAG_MOVEABLE;
;
break;}
-case 195:
-#line 1358 "rcparse.y"
+case 202:
+#line 1390 "rcparse.y"
{
yyval.memflags.on = MEMFLAG_PURE;
yyval.memflags.off = 0;
;
break;}
-case 196:
-#line 1363 "rcparse.y"
+case 203:
+#line 1395 "rcparse.y"
{
yyval.memflags.on = 0;
yyval.memflags.off = MEMFLAG_PURE;
;
break;}
-case 197:
-#line 1368 "rcparse.y"
+case 204:
+#line 1400 "rcparse.y"
{
yyval.memflags.on = MEMFLAG_PRELOAD;
yyval.memflags.off = 0;
;
break;}
-case 198:
-#line 1373 "rcparse.y"
+case 205:
+#line 1405 "rcparse.y"
{
yyval.memflags.on = 0;
yyval.memflags.off = MEMFLAG_PRELOAD;
;
break;}
-case 199:
-#line 1378 "rcparse.y"
+case 206:
+#line 1410 "rcparse.y"
{
yyval.memflags.on = MEMFLAG_DISCARDABLE;
yyval.memflags.off = 0;
;
break;}
-case 200:
-#line 1388 "rcparse.y"
+case 207:
+#line 1420 "rcparse.y"
{
yyval.s = yyvsp[0].s;
;
break;}
-case 201:
-#line 1392 "rcparse.y"
+case 208:
+#line 1424 "rcparse.y"
{
yyval.s = yyvsp[0].s;
;
break;}
-case 202:
-#line 1409 "rcparse.y"
+case 209:
+#line 1441 "rcparse.y"
{
style |= yyvsp[0].il;
;
break;}
-case 203:
-#line 1413 "rcparse.y"
+case 210:
+#line 1445 "rcparse.y"
{
style &=~ yyvsp[0].il;
;
break;}
-case 204:
-#line 1417 "rcparse.y"
+case 211:
+#line 1449 "rcparse.y"
{
style |= yyvsp[0].il;
;
break;}
-case 205:
-#line 1421 "rcparse.y"
+case 212:
+#line 1453 "rcparse.y"
{
style &=~ yyvsp[0].il;
;
break;}
-case 206:
-#line 1428 "rcparse.y"
+case 213:
+#line 1460 "rcparse.y"
{
yyval.il = yyvsp[0].i.val;
;
break;}
-case 207:
-#line 1432 "rcparse.y"
+case 214:
+#line 1464 "rcparse.y"
{
yyval.il = yyvsp[-1].il;
;
break;}
-case 208:
-#line 1441 "rcparse.y"
+case 215:
+#line 1473 "rcparse.y"
{
yyval.il = 0;
;
break;}
-case 209:
-#line 1445 "rcparse.y"
+case 216:
+#line 1477 "rcparse.y"
{
yyval.il = yyvsp[0].il;
;
break;}
-case 210:
-#line 1454 "rcparse.y"
+case 217:
+#line 1486 "rcparse.y"
{
yyval.il = yyvsp[0].il;
;
break;}
-case 211:
-#line 1463 "rcparse.y"
+case 218:
+#line 1495 "rcparse.y"
{
yyval.il = yyvsp[0].i.val;
;
break;}
-case 212:
-#line 1472 "rcparse.y"
+case 219:
+#line 1504 "rcparse.y"
{
yyval.i = yyvsp[0].i;
;
break;}
-case 213:
-#line 1476 "rcparse.y"
+case 220:
+#line 1508 "rcparse.y"
{
yyval.i = yyvsp[-1].i;
;
break;}
-case 214:
-#line 1480 "rcparse.y"
+case 221:
+#line 1512 "rcparse.y"
{
yyval.i.val = ~ yyvsp[0].i.val;
yyval.i.dword = yyvsp[0].i.dword;
;
break;}
-case 215:
-#line 1485 "rcparse.y"
+case 222:
+#line 1517 "rcparse.y"
{
yyval.i.val = - yyvsp[0].i.val;
yyval.i.dword = yyvsp[0].i.dword;
;
break;}
-case 216:
-#line 1490 "rcparse.y"
+case 223:
+#line 1522 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val * yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 217:
-#line 1495 "rcparse.y"
+case 224:
+#line 1527 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val / yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 218:
-#line 1500 "rcparse.y"
+case 225:
+#line 1532 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val % yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 219:
-#line 1505 "rcparse.y"
+case 226:
+#line 1537 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val + yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 220:
-#line 1510 "rcparse.y"
+case 227:
+#line 1542 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val - yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 221:
-#line 1515 "rcparse.y"
+case 228:
+#line 1547 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val & yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 222:
-#line 1520 "rcparse.y"
+case 229:
+#line 1552 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val ^ yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 223:
-#line 1525 "rcparse.y"
+case 230:
+#line 1557 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val | yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 224:
-#line 1536 "rcparse.y"
+case 231:
+#line 1568 "rcparse.y"
{
yyval.il = yyvsp[0].il;
;
break;}
-case 225:
-#line 1545 "rcparse.y"
+case 232:
+#line 1577 "rcparse.y"
{
yyval.il = yyvsp[0].i.val;
;
break;}
-case 226:
-#line 1556 "rcparse.y"
+case 233:
+#line 1588 "rcparse.y"
{
yyval.i = yyvsp[0].i;
;
break;}
-case 227:
-#line 1560 "rcparse.y"
+case 234:
+#line 1592 "rcparse.y"
{
yyval.i = yyvsp[-1].i;
;
break;}
-case 228:
-#line 1564 "rcparse.y"
+case 235:
+#line 1596 "rcparse.y"
{
yyval.i.val = ~ yyvsp[0].i.val;
yyval.i.dword = yyvsp[0].i.dword;
;
break;}
-case 229:
-#line 1569 "rcparse.y"
+case 236:
+#line 1601 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val * yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 230:
-#line 1574 "rcparse.y"
+case 237:
+#line 1606 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val / yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 231:
-#line 1579 "rcparse.y"
+case 238:
+#line 1611 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val % yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 232:
-#line 1584 "rcparse.y"
+case 239:
+#line 1616 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val + yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 233:
-#line 1589 "rcparse.y"
+case 240:
+#line 1621 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val - yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 234:
-#line 1594 "rcparse.y"
+case 241:
+#line 1626 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val & yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 235:
-#line 1599 "rcparse.y"
+case 242:
+#line 1631 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val ^ yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
;
break;}
-case 236:
-#line 1604 "rcparse.y"
+case 243:
+#line 1636 "rcparse.y"
{
yyval.i.val = yyvsp[-2].i.val | yyvsp[0].i.val;
yyval.i.dword = yyvsp[-2].i.dword || yyvsp[0].i.dword;
@@ -3094,7 +3139,7 @@ yyerrhandle:
}
return 1;
}
-#line 1610 "rcparse.y"
+#line 1642 "rcparse.y"
/* Set the language from the command line. */
diff --git a/contrib/binutils/binutils/rcparse.y b/contrib/binutils/binutils/rcparse.y
index 03cbbdc..b67338f 100644
--- a/contrib/binutils/binutils/rcparse.y
+++ b/contrib/binutils/binutils/rcparse.y
@@ -136,11 +136,11 @@ static unsigned long class;
%type <vervar> vertrans
%type <res_info> suboptions memflags_move_discard memflags_move
%type <memflags> memflag
-%type <id> id
+%type <id> id resref
%type <il> exstyle parennumber
%type <il> numexpr posnumexpr cnumexpr optcnumexpr cposnumexpr
%type <is> acc_options acc_option menuitem_flags menuitem_flag
-%type <s> optstringc file_name
+%type <s> optstringc file_name resname
%type <i> sizednumexpr sizedposnumexpr
%left '|'
@@ -636,39 +636,29 @@ control:
rcparse_warning (_("IEDIT requires DIALOGEX"));
res_string_to_id (&$$->class, "HEDIT");
}
- | ICON optstringc numexpr cnumexpr cnumexpr opt_control_data
- {
- $$ = define_control ($2, $3, $4, $5, 0, 0, CTL_STATIC,
- SS_ICON | WS_CHILD | WS_VISIBLE, 0);
- if ($6 != NULL)
- {
- if (dialog.ex == NULL)
- rcparse_warning (_("control data requires DIALOGEX"));
- $$->data = $6;
- }
- }
- | ICON optstringc numexpr cnumexpr cnumexpr cnumexpr cnumexpr
+ | 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_control ($2, $3, $4, $5, $6, $7, CTL_STATIC,
- style, $9);
- if ($10 != NULL)
- {
- if (dialog.ex == NULL)
- rcparse_warning (_("control data requires DIALOGEX"));
- $$->data = $10;
- }
- }
- | ICON optstringc numexpr cnumexpr cnumexpr cnumexpr cnumexpr
+ {
+ $$ = 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_control ($2, $3, $4, $5, $6, $7, CTL_STATIC,
- style, $9);
- if (dialog.ex == NULL)
- rcparse_warning (_("help ID requires DIALOGEX"));
- $$->help = $10;
- $$->data = $11;
- }
+ {
+ $$ = define_icon_control ($2, $3, $4, $5, style, $9, $10, $11,
+ dialog.ex);
+ }
| IEDIT
{
default_style = ES_LEFT | WS_BORDER | WS_TABSTOP;
@@ -819,6 +809,10 @@ optstringc:
{
$$ = NULL;
}
+ | QUOTEDSTRING
+ {
+ $$ = $1;
+ }
| QUOTEDSTRING ','
{
$$ = $1;
@@ -1272,6 +1266,44 @@ id:
}
;
+/* 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++)
+ if (islower ((unsigned char) *s))
+ *s = toupper ((unsigned char) *s);
+ res_string_to_id (&$$, copy);
+ free (copy);
+ }
+ ;
+
/* Generic suboptions. These may appear before the BEGIN in any
multiline statement. */
diff --git a/contrib/binutils/binutils/rdcoff.c b/contrib/binutils/binutils/rdcoff.c
index e1385c7..14f973e 100644
--- a/contrib/binutils/binutils/rdcoff.c
+++ b/contrib/binutils/binutils/rdcoff.c
@@ -99,6 +99,7 @@ static debug_type parse_coff_enum_type
static boolean parse_coff_symbol
PARAMS ((bfd *, struct coff_types *, asymbol *, long,
struct internal_syment *, PTR, debug_type, boolean));
+static boolean external_coff_symbol_p PARAMS ((int sym_class));
/* Return the slot for a type. */
@@ -588,6 +589,7 @@ parse_coff_symbol (abfd, types, sym, coff_symno, psyment, dhandle, type,
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)))
@@ -656,6 +658,23 @@ parse_coff_symbol (abfd, types, sym, coff_symno, psyment, dhandle, type,
return true;
}
+/* Determine if a symbol has external visibility. */
+
+static boolean
+external_coff_symbol_p (sym_class)
+ 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. */
@@ -767,6 +786,7 @@ parse_coff (abfd, syms, symcount, dhandle)
if (syment.n_type == T_NULL)
break;
/* Fall through. */
+ case C_WEAKEXT:
case C_EXT:
if (ISFCN (syment.n_type))
{
@@ -805,7 +825,7 @@ parse_coff (abfd, syms, symcount, dhandle)
return false;
if (! debug_record_function (dhandle, fnname, type,
- fnclass == C_EXT,
+ external_coff_symbol_p (fnclass),
bfd_asymbol_value (sym)))
return false;
diff --git a/contrib/binutils/binutils/readelf.c b/contrib/binutils/binutils/readelf.c
index 8858d57..d506925 100644
--- a/contrib/binutils/binutils/readelf.c
+++ b/contrib/binutils/binutils/readelf.c
@@ -1,5 +1,5 @@
/* readelf.c -- display contents of an ELF format file
- Copyright (C) 1998, 99, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1998, 99, 2000, 2001 Free Software Foundation, Inc.
Originally developed by Eric Youngdale <eric@andante.jic.com>
Modifications by Nick Clifton <nickc@cygnus.com>
@@ -70,6 +70,10 @@
#include "elf/i960.h"
#include "elf/pj.h"
#include "elf/avr.h"
+#include "elf/ia64.h"
+#include "elf/cris.h"
+#include "elf/i860.h"
+#include "elf/x86-64.h"
#include "bucomm.h"
#include "getopt.h"
@@ -81,6 +85,7 @@ unsigned int rela_addr;
unsigned int rela_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;
@@ -110,6 +115,7 @@ int do_debug_abbrevs;
int do_debug_lines;
int do_debug_pubnames;
int do_debug_aranges;
+int do_debug_frames;
int do_arch;
int do_notes;
int is_32bit_elf;
@@ -147,6 +153,7 @@ static const char * get_dynamic_type PARAMS ((unsigned long));
static int dump_relocations PARAMS ((FILE *, unsigned long, unsigned long, Elf_Internal_Sym *, unsigned long, char *, int));
static char * get_file_type PARAMS ((unsigned));
static char * get_machine_name PARAMS ((unsigned));
+static void decode_ARM_machine_flags PARAMS ((unsigned, char []));
static char * get_machine_flags PARAMS ((unsigned, unsigned));
static const char * get_mips_segment_type PARAMS ((unsigned long));
static const char * get_parisc_segment_type PARAMS ((unsigned long));
@@ -193,6 +200,7 @@ static int display_debug_not_supported PARAMS ((Elf32_Internal_Sh
static int display_debug_lines PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
static int display_debug_abbrev PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
static int display_debug_aranges PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
+static int display_debug_frames PARAMS ((Elf32_Internal_Shdr *, unsigned char *, FILE *));
static unsigned char * process_abbrev_section PARAMS ((unsigned char *, unsigned char *));
static unsigned long read_leb128 PARAMS ((unsigned char *, int *, int));
static int process_extended_line_op PARAMS ((unsigned char *, int, int));
@@ -203,9 +211,9 @@ static char * get_FORM_name PARAMS ((unsigned long));
static void free_abbrevs PARAMS ((void));
static void add_abbrev PARAMS ((unsigned long, unsigned long, int));
static void add_abbrev_attr PARAMS ((unsigned long, unsigned long));
-static unsigned char * read_and_display_attr PARAMS ((unsigned long, unsigned long, unsigned char *, unsigned long));
+static unsigned char * read_and_display_attr PARAMS ((unsigned long, unsigned long, unsigned char *, unsigned long, unsigned long));
static unsigned char * display_block PARAMS ((unsigned char *, unsigned long));
-static void decode_location_expression PARAMS ((unsigned char *, unsigned int));
+static void decode_location_expression PARAMS ((unsigned char *, unsigned int, unsigned long));
static void request_dump PARAMS ((unsigned int, char));
static const char * get_elf_class PARAMS ((unsigned char));
static const char * get_data_encoding PARAMS ((unsigned char));
@@ -225,7 +233,9 @@ typedef int Elf32_Word;
#endif
#define UNKNOWN -1
-#define SECTION_NAME(X) (string_table + (X)->sh_name)
+#define SECTION_NAME(X) ((X) == NULL ? "<none>" : \
+ ((X)->sh_name >= string_table_length \
+ ? "<corrupt>" : string_table + (X)->sh_name))
#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) /* Reverse order! */
@@ -419,15 +429,15 @@ print_vma (vma, 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);
@@ -448,7 +458,7 @@ print_vma (vma, mode)
printf ("++%ld", _bfd_int64_low (vma));
else
printf ("%ld", _bfd_int64_low (vma));
-#endif
+#endif
break;
case DEC_5:
@@ -460,13 +470,13 @@ print_vma (vma, mode)
printf ("++%ld", _bfd_int64_low (vma));
else
printf ("%5ld", _bfd_int64_low (vma));
-#endif
+#endif
break;
-
+
case UNSIGNED:
#if BFD_HOST_64BIT_LONG
printf ("%lu", vma);
-#else
+#else
if (_bfd_int64_high (vma))
/* ugg */
printf ("++%lu", _bfd_int64_low (vma));
@@ -528,8 +538,8 @@ byte_get_big_endian (field, size)
}
}
+/* Guess the relocation size commonly used by the specific machines. */
-/* Guess the relocation sized based on the sized commonly used by the specific machine. */
static int
guess_is_rela (e_machine)
unsigned long e_machine;
@@ -561,6 +571,11 @@ guess_is_rela (e_machine)
case EM_SH:
case EM_ALPHA:
case EM_MCORE:
+ case EM_IA_64:
+ case EM_AVR:
+ case EM_CRIS:
+ case EM_860:
+ case EM_X86_64:
return TRUE;
case EM_MMA:
@@ -862,6 +877,7 @@ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela)
break;
case EM_CYGNUS_ARC:
+ case EM_ARC:
rtype = elf_arc_reloc_type (type);
break;
@@ -872,6 +888,21 @@ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela)
case EM_PJ:
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;
}
if (rtype == NULL)
@@ -1203,7 +1234,7 @@ get_machine_name (e_machine)
case EM_SH: return "Hitachi SH";
case EM_SPARCV9: return "Sparc v9";
case EM_TRICORE: return "Siemens Tricore";
- case EM_ARC: return "Argonaut RISC Core";
+ case EM_ARC: return "ARC";
case EM_H8_300: return "Hitachi H8/300";
case EM_H8_300H: return "Hitachi H8/300H";
case EM_H8S: return "Hitachi H8S";
@@ -1215,7 +1246,7 @@ get_machine_name (e_machine)
case EM_ALPHA: return "Alpha";
case EM_CYGNUS_D10V: return "d10v";
case EM_CYGNUS_D30V: return "d30v";
- case EM_CYGNUS_ARC: return "Arc";
+ case EM_CYGNUS_ARC: return "ARC";
case EM_CYGNUS_M32R: return "Mitsubishi M32r";
case EM_CYGNUS_V850: return "NEC v850";
case EM_CYGNUS_MN10300: return "mn10300";
@@ -1240,12 +1271,130 @@ get_machine_name (e_machine)
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: 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 "SiTera Prism";
+ case EM_X86_64: return "Advanced Micro Devices X86-64";
default:
sprintf (buff, _("<unknown>: %x"), e_machine);
return buff;
}
}
+static void
+decode_ARM_machine_flags (e_flags, buf)
+ 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, ", <unknown EABI>");
+ if (e_flags)
+ unknown = 1;
+ break;
+
+ case EF_ARM_EABI_VER1:
+ 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_INTERWORK. */
+ strcat (buf, ", sorted symbol tables");
+ break;
+
+ default:
+ unknown = 1;
+ break;
+ }
+ }
+ break;
+
+ case EF_ARM_EABI_UNKNOWN:
+ while (e_flags)
+ {
+ unsigned flag;
+
+ /* Process flags one bit at a time. */
+ flag = e_flags & - e_flags;
+ e_flags &= ~ flag;
+
+ switch (flag)
+ {
+ case EF_INTERWORK:
+ strcat (buf, ", interworking enabled");
+ break;
+
+ case EF_APCS_26:
+ strcat (buf, ", uses APCS/26");
+ break;
+
+ case EF_APCS_FLOAT:
+ strcat (buf, ", uses APCS/float");
+ break;
+
+ case EF_PIC:
+ strcat (buf, ", position independent");
+ break;
+
+ case EF_ALIGN8:
+ strcat (buf, ", 8 bit structure alignment");
+ break;
+
+ case EF_NEW_ABI:
+ strcat (buf, ", uses new ABI");
+ break;
+
+ case EF_OLD_ABI:
+ strcat (buf, ", uses old ABI");
+ break;
+
+ case EF_SOFT_FLOAT:
+ strcat (buf, ", software FP");
+ break;
+
+ default:
+ unknown = 1;
+ break;
+ }
+ }
+ }
+
+ if (unknown)
+ strcat (buf,", <unknown>");
+}
+
static char *
get_machine_flags (e_flags, e_machine)
unsigned e_flags;
@@ -1254,7 +1403,7 @@ get_machine_flags (e_flags, e_machine)
static char buf [1024];
buf[0] = '\0';
-
+
if (e_flags)
{
switch (e_machine)
@@ -1262,6 +1411,10 @@ get_machine_flags (e_flags, 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");
@@ -1327,6 +1480,27 @@ get_machine_flags (e_flags, e_machine)
if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_4)
strcat (buf, ", mips4");
+
+ if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_5)
+ strcat (buf, ", mips5");
+
+ if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_32)
+ strcat (buf, ", mips32");
+
+ if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_64)
+ strcat (buf, ", mips64");
+
+ 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_4650: strcat (buf, ", 4650"); break;
+ case E_MIPS_MACH_4111: strcat (buf, ", 4111"); break;
+ case E_MIPS_MACH_MIPS32_4K: strcat (buf, ", mips32-4k"); break;
+ case E_MIPS_MACH_SB1: strcat (buf, ", sb1"); break;
+ default: strcat (buf, " UNKNOWN"); break;
+ }
break;
case EM_SPARCV9:
@@ -1383,7 +1557,7 @@ get_machine_flags (e_flags, e_machine)
if (e_flags & EF_PARISC_LAZYSWAP)
strcat (buf, ", lazyswap");
break;
-
+
case EM_PJ:
if ((e_flags & EF_PICOJAVA_NEWCALLS) == EF_PICOJAVA_NEWCALLS)
strcat (buf, ", new calling convention");
@@ -1598,6 +1772,8 @@ get_section_type_name (sh_type)
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";
@@ -1691,7 +1867,7 @@ usage ()
fprintf (stdout, _(" -D or --use-dynamic Use the dynamic section info when displaying symbols\n"));
fprintf (stdout, _(" -x <number> or --hex-dump=<number>\n"));
fprintf (stdout, _(" Dump the contents of section <number>\n"));
- fprintf (stdout, _(" -w[liapr] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges]\n"));
+ fprintf (stdout, _(" -w[liaprf] or --debug-dump[=line,=info,=abbrev,=pubnames,=ranges,=frames]\n"));
fprintf (stdout, _(" Display the contents of DWARF2 debug sections\n"));
#ifdef SUPPORT_DISASSEMBLY
fprintf (stdout, _(" -i <number> or --instruction-dump=<number>\n"));
@@ -1851,6 +2027,11 @@ parse_args (argc, argv)
do_debug_aranges = 1;
break;
+ case 'f':
+ case 'F':
+ do_debug_frames = 1;
+ break;
+
default:
warn (_("Unrecognised debug option '%s'\n"), optarg);
break;
@@ -1943,7 +2124,7 @@ get_osabi_name (osabi)
case ELFOSABI_LINUX: return _("UNIX - Linux");
case ELFOSABI_HURD: return _("GNU/Hurd");
case ELFOSABI_SOLARIS: return _("UNIX - Solaris");
- case ELFOSABI_MONTEREY: return _("UNIX - Monterey");
+ case ELFOSABI_AIX: return _("UNIX - AIX");
case ELFOSABI_IRIX: return _("UNIX - IRIX");
case ELFOSABI_FREEBSD: return _("UNIX - FreeBSD");
case ELFOSABI_TRU64: return _("UNIX - TRU64");
@@ -2001,7 +2182,7 @@ process_file_header ()
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: "));
@@ -2009,7 +2190,7 @@ process_file_header ()
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));
@@ -2147,7 +2328,7 @@ process_program_headers (file)
{
printf
(_("\nProgram Header%s:\n"), elf_header.e_phnum > 1 ? "s" : "");
-
+
if (is_32bit_elf)
printf
(_(" Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align\n"));
@@ -2460,14 +2641,14 @@ get_elf_section_flags (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;
@@ -2478,7 +2659,8 @@ get_elf_section_flags (sh_flags)
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;
+
default:
if (flag & SHF_MASKOS)
{
@@ -2495,7 +2677,7 @@ get_elf_section_flags (sh_flags)
break;
}
}
-
+
return buff;
}
@@ -2533,12 +2715,10 @@ process_section_headers (file)
if (section->sh_size != 0)
{
- unsigned long string_table_offset;
-
- string_table_offset = section->sh_offset;
-
GET_DATA_ALLOC (section->sh_offset, section->sh_size,
string_table, char *, "string table");
+
+ string_table_length = section->sh_size;
}
/* Scan the sections for the dynamic symbol table
@@ -2578,7 +2758,7 @@ process_section_headers (file)
dynamic_strings, char *, "dynamic strings");
}
else if ((do_debugging || do_debug_info || do_debug_abbrevs
- || do_debug_lines || do_debug_pubnames || do_debug_aranges)
+ || do_debug_lines || do_debug_pubnames || do_debug_aranges || do_debug_frames)
&& strncmp (name, ".debug_", 7) == 0)
{
name += 7;
@@ -2589,16 +2769,23 @@ process_section_headers (file)
|| (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))
)
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;
printf (_("\nSection Header%s:\n"), elf_header.e_shnum > 1 ? "s" : "");
-
+
if (is_32bit_elf)
printf
(_(" [Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"));
@@ -2620,15 +2807,15 @@ process_section_headers (file)
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 %ld\n",
+
+ printf ("%2ld %3lx %2ld\n",
(unsigned long) section->sh_link,
(unsigned long) section->sh_info,
(unsigned long) section->sh_addralign);
@@ -2642,9 +2829,9 @@ process_section_headers (file)
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,
@@ -2652,9 +2839,10 @@ process_section_headers (file)
}
}
- printf (_("Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings)\n"));
- printf (_(" I (info), L (link order), O (extra OS processing required)\n"));
- printf (_(" o (os specific), p (processor specific) x (unknown)\n"));
+ printf (_("Key to Flags:\n"));
+ printf (_(" W (write), A (alloc), X (execute), M (merge), S (strings)\n"));
+ printf (_(" I (info), L (link order), G (group), x (unknown)\n"));
+ printf (_(" O (extra OS processing required) o (OS specific), p (processor specific)\n"));
return 1;
}
@@ -2904,7 +3092,7 @@ dynamic_segment_parisc_val (entry)
first = 0;
val ^= flags[cnt].bit;
}
-
+
if (val != 0 || first)
{
if (! first)
@@ -2913,7 +3101,7 @@ dynamic_segment_parisc_val (entry)
}
}
break;
-
+
default:
print_vma (entry->d_un.d_ptr, PREFIX_HEX);
break;
@@ -3188,7 +3376,7 @@ process_dynamic_segment (file)
{
if (do_dynamic)
{
- const char *dtype;
+ const char * dtype;
putchar (' ');
print_vma (entry->d_tag, FULL_HEX);
@@ -3205,7 +3393,7 @@ process_dynamic_segment (file)
if (do_dynamic)
printf ("%s", get_dynamic_flags (entry->d_un.d_val));
break;
-
+
case DT_AUXILIARY:
case DT_FILTER:
case DT_CONFIG:
@@ -3809,7 +3997,8 @@ process_version_sections (file)
for (cnt = 0; cnt < total; cnt += 4)
{
int j, nn;
- char *name;
+ int check_def, check_need;
+ char * name;
printf (" %03x:", cnt);
@@ -3828,111 +4017,20 @@ process_version_sections (file)
nn = printf ("%4x%c", data [cnt + j] & 0x7fff,
data [cnt + j] & 0x8000 ? 'h' : ' ');
- if (symbols [cnt + j].st_shndx < SHN_LORESERVE
- && section_headers[symbols [cnt + j].st_shndx].sh_type
- == SHT_NOBITS)
+ check_def = 1;
+ check_need = 1;
+ if (symbols [cnt + j].st_shndx >= SHN_LORESERVE
+ || section_headers[symbols [cnt + j].st_shndx].sh_type
+ != SHT_NOBITS)
{
- /* We must test both. */
- Elf_Internal_Verneed ivn;
- unsigned long offset;
-
- offset = version_info [DT_VERSIONTAGIDX (DT_VERNEED)]
- - loadaddr;
-
- do
- {
- Elf_External_Verneed evn;
- Elf_External_Vernaux evna;
- Elf_Internal_Vernaux ivna;
- unsigned long vna_off;
-
- GET_DATA (offset, 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
- {
- GET_DATA (vna_off, evna,
- "version need aux (1)");
-
- ivna.vna_next = BYTE_GET (evna.vna_next);
- ivna.vna_other = BYTE_GET (evna.vna_other);
-
- vna_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),
- ")");
- break;
- }
- else if (ivn.vn_next == 0)
- {
- if (data [cnt + j] != 0x8001)
- {
- Elf_Internal_Verdef ivd;
- Elf_External_Verdef evd;
-
- offset = version_info
- [DT_VERSIONTAGIDX (DT_VERDEF)]
- - loadaddr;
-
- do
- {
- GET_DATA (offset, evd,
- "version definition");
-
- 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 (offset + ivd.vd_aux, evda,
- "version definition aux");
-
- ivda.vda_name =
- BYTE_GET (evda.vda_name);
-
- name = strtab + ivda.vda_name;
- nn +=
- printf ("(%s%-*s",
- name,
- 12 - (int) strlen (name),
- ")");
- }
- }
-
- break;
- }
- else
- offset += ivn.vn_next;
- }
- while (ivn.vn_next);
+ if (symbols [cnt + j].st_shndx == SHN_UNDEF)
+ check_def = 0;
+ else
+ check_need = 0;
}
- else if (symbols [cnt + j].st_shndx == SHN_UNDEF)
+
+ if (check_need
+ && version_info [DT_VERSIONTAGIDX (DT_VERNEED)])
{
Elf_Internal_Verneed ivn;
unsigned long offset;
@@ -3976,6 +4074,7 @@ process_version_sections (file)
name,
12 - (int) strlen (name),
")");
+ check_def = 0;
break;
}
@@ -3983,7 +4082,9 @@ process_version_sections (file)
}
while (ivn.vn_next);
}
- else if (data [cnt + j] != 0x8001)
+
+ if (check_def && data [cnt + j] != 0x8001
+ && version_info [DT_VERSIONTAGIDX (DT_VERDEF)])
{
Elf_Internal_Verdef ivd;
Elf_External_Verdef evd;
@@ -4161,10 +4262,10 @@ get_dynamic_data (file, number)
FILE * file;
unsigned int number;
{
- char * e_data;
+ unsigned char * e_data;
int * i_data;
- e_data = (char *) malloc (number * 4);
+ e_data = (unsigned char *) malloc (number * 4);
if (e_data == NULL)
{
@@ -4201,8 +4302,8 @@ process_symbol_table (file)
FILE * file;
{
Elf32_Internal_Shdr * section;
- char nb [4];
- char nc [4];
+ unsigned char nb [4];
+ unsigned char nc [4];
int nbuckets = 0;
int nchains = 0;
int * buckets = NULL;
@@ -4269,7 +4370,7 @@ process_symbol_table (file)
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)));
@@ -4360,7 +4461,8 @@ process_symbol_table (file)
if ((vers_data & 0x8000) || vers_data > 1)
{
- if (is_nobits || ! check_def)
+ if (version_info [DT_VERSIONTAGIDX (DT_VERNEED)]
+ && (is_nobits || ! check_def))
{
Elf_External_Verneed evn;
Elf_Internal_Verneed ivn;
@@ -4418,7 +4520,8 @@ process_symbol_table (file)
if (check_def)
{
- if (vers_data != 0x8001)
+ if (vers_data != 0x8001
+ && version_info [DT_VERSIONTAGIDX (DT_VERDEF)])
{
Elf_Internal_Verdef ivd;
Elf_Internal_Verdaux ivda;
@@ -4474,13 +4577,13 @@ process_symbol_table (file)
if (do_histogram && buckets != NULL)
{
- int *lengths;
- int *counts;
- int hn;
- int si;
- int maxlength = 0;
- int nzero_counts = 0;
- int nsyms = 0;
+ 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);
@@ -4816,7 +4919,7 @@ process_extended_line_op (data, is_stmt, pointer_size)
printf (_(" %d\t"), ++ state_machine_regs.last_file_entry);
name = data;
- data += strlen (data) + 1;
+ 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));
@@ -4861,7 +4964,7 @@ display_debug_lines (section, start, file)
/* Check the length of the block. */
info.li_length = BYTE_GET (external->li_length);
- if (info.li_length > section->sh_size)
+ if (info.li_length + sizeof (external->li_length) > section->sh_size)
{
warn
(_("The line info appears to be corrupt - the section is too small\n"));
@@ -4896,7 +4999,7 @@ display_debug_lines (section, start, file)
printf (_(" Line Range: %d\n"), info.li_line_range);
printf (_(" Opcode Base: %d\n"), info.li_opcode_base);
- end_of_sequence = data + info.li_length + sizeof (info.li_length);
+ end_of_sequence = data + info.li_length + sizeof (external->li_length);
reset_state_machine (info.li_default_is_stmt);
@@ -4921,7 +5024,7 @@ display_debug_lines (section, start, file)
{
printf (_(" %s\n"), data);
- data += strlen (data) + 1;
+ data += strlen ((char *) data) + 1;
}
}
@@ -4938,13 +5041,13 @@ display_debug_lines (section, start, file)
while (* data != 0)
{
- char * name;
+ unsigned char * name;
int bytes_read;
printf (_(" %d\t"), ++ state_machine_regs.last_file_entry);
name = data;
- data += strlen (data) + 1;
+ data += strlen ((char *) data) + 1;
printf (_("%lu\t"), read_leb128 (data, & bytes_read, 0));
data += bytes_read;
@@ -5098,7 +5201,7 @@ display_debug_pubnames (section, start, file)
warn (_("Only DWARF 2 pubnames are currently supported\n"));
warned = 1;
}
-
+
continue;
}
@@ -5121,7 +5224,7 @@ display_debug_pubnames (section, start, file)
{
data += 4;
printf (" %ld\t\t%s\n", offset, data);
- data += strlen (data) + 1;
+ data += strlen ((char *) data) + 1;
}
}
while (offset != 0);
@@ -5498,7 +5601,7 @@ display_debug_abbrev (section, start, file)
unsigned char * start;
FILE * file ATTRIBUTE_UNUSED;
{
- abbrev_entry * entry;
+ abbrev_entry * entry;
unsigned char * end = start + section->sh_size;
printf (_("Contents of the %s section:\n\n"), SECTION_NAME (section));
@@ -5548,500 +5651,336 @@ display_block (data, length)
}
static void
-decode_location_expression (data, pointer_size)
+decode_location_expression (data, pointer_size, length)
unsigned char * data;
unsigned int pointer_size;
+ unsigned long length;
{
- unsigned char op;
- int bytes_read;
- unsigned long uvalue;
-
- op = * data ++;
+ unsigned op;
+ int bytes_read;
+ unsigned long uvalue;
+ unsigned char * end = data + length;
- switch (op)
+ while (data < end)
{
- case DW_OP_addr:
- printf ("DW_OP_addr: %lx", (unsigned long) byte_get (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));
- break;
- case DW_OP_const2s:
- printf ("DW_OP_const2s: %ld", (long) byte_get (data, 2));
- break;
- case DW_OP_const4u:
- printf ("DW_OP_const4u: %lu", (unsigned long) byte_get (data, 4));
- break;
- case DW_OP_const4s:
- printf ("DW_OP_const4s: %ld", (long) byte_get (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));
- break;
- case DW_OP_const8s:
- printf ("DW_OP_const8s: %ld %ld", (long) byte_get (data, 4),
- (long) byte_get (data + 4, 4));
- break;
- case DW_OP_constu:
- printf ("DW_OP_constu: %lu", read_leb128 (data, NULL, 0));
- break;
- case DW_OP_consts:
- printf ("DW_OP_consts: %ld", read_leb128 (data, NULL, 1));
- 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, NULL, 0));
- 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));
- 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));
- break;
- case DW_OP_lit0:
- printf ("DW_OP_lit0");
- break;
- case DW_OP_lit1:
- printf ("DW_OP_lit1");
- break;
- case DW_OP_lit2:
- printf ("DW_OP_lit2");
- break;
- case DW_OP_lit3:
- printf ("DW_OP_lit3");
- break;
- case DW_OP_lit4:
- printf ("DW_OP_lit4");
- break;
- case DW_OP_lit5:
- printf ("DW_OP_lit5");
- break;
- case DW_OP_lit6:
- printf ("DW_OP_lit6");
- break;
- case DW_OP_lit7:
- printf ("DW_OP_lit7");
- break;
- case DW_OP_lit8:
- printf ("DW_OP_lit8");
- break;
- case DW_OP_lit9:
- printf ("DW_OP_lit9");
- break;
- case DW_OP_lit10:
- printf ("DW_OP_lit10");
- break;
- case DW_OP_lit11:
- printf ("DW_OP_lit11");
- break;
- case DW_OP_lit12:
- printf ("DW_OP_lit12");
- break;
- case DW_OP_lit13:
- printf ("DW_OP_lit13");
- break;
- case DW_OP_lit14:
- printf ("DW_OP_lit14");
- break;
- case DW_OP_lit15:
- printf ("DW_OP_lit15");
- break;
- case DW_OP_lit16:
- printf ("DW_OP_lit16");
- break;
- case DW_OP_lit17:
- printf ("DW_OP_lit17");
- break;
- case DW_OP_lit18:
- printf ("DW_OP_lit18");
- break;
- case DW_OP_lit19:
- printf ("DW_OP_lit19");
- break;
- case DW_OP_lit20:
- printf ("DW_OP_lit20");
- break;
- case DW_OP_lit21:
- printf ("DW_OP_lit21");
- break;
- case DW_OP_lit22:
- printf ("DW_OP_lit22");
- break;
- case DW_OP_lit23:
- printf ("DW_OP_lit23");
- break;
- case DW_OP_lit24:
- printf ("DW_OP_lit24");
- break;
- case DW_OP_lit25:
- printf ("DW_OP_lit25");
- break;
- case DW_OP_lit26:
- printf ("DW_OP_lit26");
- break;
- case DW_OP_lit27:
- printf ("DW_OP_lit27");
- break;
- case DW_OP_lit28:
- printf ("DW_OP_lit28");
- break;
- case DW_OP_lit29:
- printf ("DW_OP_lit29");
- break;
- case DW_OP_lit30:
- printf ("DW_OP_lit30");
- break;
- case DW_OP_lit31:
- printf ("DW_OP_lit31");
- break;
- case DW_OP_reg0:
- printf ("DW_OP_reg0");
- break;
- case DW_OP_reg1:
- printf ("DW_OP_reg1");
- break;
- case DW_OP_reg2:
- printf ("DW_OP_reg2");
- break;
- case DW_OP_reg3:
- printf ("DW_OP_reg3");
- break;
- case DW_OP_reg4:
- printf ("DW_OP_reg4");
- break;
- case DW_OP_reg5:
- printf ("DW_OP_reg5");
- break;
- case DW_OP_reg6:
- printf ("DW_OP_reg6");
- break;
- case DW_OP_reg7:
- printf ("DW_OP_reg7");
- break;
- case DW_OP_reg8:
- printf ("DW_OP_reg8");
- break;
- case DW_OP_reg9:
- printf ("DW_OP_reg9");
- break;
- case DW_OP_reg10:
- printf ("DW_OP_reg10");
- break;
- case DW_OP_reg11:
- printf ("DW_OP_reg11");
- break;
- case DW_OP_reg12:
- printf ("DW_OP_reg12");
- break;
- case DW_OP_reg13:
- printf ("DW_OP_reg13");
- break;
- case DW_OP_reg14:
- printf ("DW_OP_reg14");
- break;
- case DW_OP_reg15:
- printf ("DW_OP_reg15");
- break;
- case DW_OP_reg16:
- printf ("DW_OP_reg16");
- break;
- case DW_OP_reg17:
- printf ("DW_OP_reg17");
- break;
- case DW_OP_reg18:
- printf ("DW_OP_reg18");
- break;
- case DW_OP_reg19:
- printf ("DW_OP_reg19");
- break;
- case DW_OP_reg20:
- printf ("DW_OP_reg20");
- break;
- case DW_OP_reg21:
- printf ("DW_OP_reg21");
- break;
- case DW_OP_reg22:
- printf ("DW_OP_reg22");
- break;
- case DW_OP_reg23:
- printf ("DW_OP_reg23");
- break;
- case DW_OP_reg24:
- printf ("DW_OP_reg24");
- break;
- case DW_OP_reg25:
- printf ("DW_OP_reg25");
- break;
- case DW_OP_reg26:
- printf ("DW_OP_reg26");
- break;
- case DW_OP_reg27:
- printf ("DW_OP_reg27");
- break;
- case DW_OP_reg28:
- printf ("DW_OP_reg28");
- break;
- case DW_OP_reg29:
- printf ("DW_OP_reg29");
- break;
- case DW_OP_reg30:
- printf ("DW_OP_reg30");
- break;
- case DW_OP_reg31:
- printf ("DW_OP_reg31");
- break;
- case DW_OP_breg0:
- printf ("DW_OP_breg0: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg1:
- printf ("DW_OP_breg1: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg2:
- printf ("DW_OP_breg2: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg3:
- printf ("DW_OP_breg3: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg4:
- printf ("DW_OP_breg4: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg5:
- printf ("DW_OP_breg5: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg6:
- printf ("DW_OP_breg6: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg7:
- printf ("DW_OP_breg7: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg8:
- printf ("DW_OP_breg8: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg9:
- printf ("DW_OP_breg9: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg10:
- printf ("DW_OP_breg10: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg11:
- printf ("DW_OP_breg11: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg12:
- printf ("DW_OP_breg12: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg13:
- printf ("DW_OP_breg13: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg14:
- printf ("DW_OP_breg14: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg15:
- printf ("DW_OP_breg15: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg16:
- printf ("DW_OP_breg16: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg17:
- printf ("DW_OP_breg17: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg18:
- printf ("DW_OP_breg18: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg19:
- printf ("DW_OP_breg19: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg20:
- printf ("DW_OP_breg20: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg21:
- printf ("DW_OP_breg21: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg22:
- printf ("DW_OP_breg22: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg23:
- printf ("DW_OP_breg23: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg24:
- printf ("DW_OP_breg24: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg25:
- printf ("DW_OP_breg25: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg26:
- printf ("DW_OP_breg26: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg27:
- printf ("DW_OP_breg27: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg28:
- printf ("DW_OP_breg28: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg29:
- printf ("DW_OP_breg29: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg30:
- printf ("DW_OP_breg30: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_breg31:
- printf ("DW_OP_breg31: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_regx:
- printf ("DW_OP_regx: %lu", read_leb128 (data, NULL, 0));
- break;
- case DW_OP_fbreg:
- printf ("DW_OP_fbreg: %ld", read_leb128 (data, NULL, 1));
- break;
- case DW_OP_bregx:
- uvalue = read_leb128 (data, &bytes_read, 0);
- printf ("DW_OP_bregx: %lu %ld", uvalue,
- read_leb128 (data + bytes_read, NULL, 1));
- break;
- case DW_OP_piece:
- printf ("DW_OP_piece: %lu", read_leb128 (data, NULL, 0));
- 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;
+ op = * data ++;
- default:
- if (op >= DW_OP_lo_user
- && op <= DW_OP_hi_user)
- printf (_("(User defined location op)"));
- else
- printf (_("(Unknown location op)"));
- break;
+ 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;
+
+ 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;
+ }
}
}
static unsigned char *
-read_and_display_attr (attribute, form, data, pointer_size)
+read_and_display_attr (attribute, form, data, cu_offset, pointer_size)
unsigned long attribute;
unsigned long form;
unsigned char * data;
+ unsigned long cu_offset;
unsigned long pointer_size;
{
unsigned long uvalue = 0;
unsigned char * block_start = NULL;
int bytes_read;
- int is_ref = 0;
printf (" %-18s:", get_AT_name (attribute));
switch (form)
{
- case DW_FORM_ref_addr:
- case DW_FORM_ref1:
- case DW_FORM_ref2:
- case DW_FORM_ref4:
- case DW_FORM_ref8:
- case DW_FORM_ref_udata:
- is_ref = 1;
- }
+ default:
+ break;
- switch (form)
- {
case DW_FORM_ref_addr:
case DW_FORM_addr:
uvalue = byte_get (data, pointer_size);
- printf (is_ref ? " <%lx>" : " %#lx", uvalue);
data += pointer_size;
break;
@@ -6049,21 +5988,55 @@ read_and_display_attr (attribute, form, data, pointer_size)
case DW_FORM_flag:
case DW_FORM_data1:
uvalue = byte_get (data ++, 1);
- printf (is_ref ? " <%lx>" : " %ld", uvalue);
break;
case DW_FORM_ref2:
case DW_FORM_data2:
uvalue = byte_get (data, 2);
data += 2;
- printf (is_ref ? " <%lx>" : " %ld", uvalue);
break;
case DW_FORM_ref4:
case DW_FORM_data4:
uvalue = byte_get (data, 4);
data += 4;
- printf (is_ref ? " <%lx>" : " %ld", uvalue);
+ 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;
+ }
+
+ 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:
@@ -6076,48 +6049,31 @@ read_and_display_attr (attribute, form, data, pointer_size)
case DW_FORM_string:
printf (" %s", data);
- data += strlen (data) + 1;
- break;
-
- case DW_FORM_sdata:
- uvalue = read_leb128 (data, & bytes_read, 1);
- data += bytes_read;
- printf (" %ld", (long) uvalue);
- break;
-
- case DW_FORM_ref_udata:
- case DW_FORM_udata:
- uvalue = read_leb128 (data, & bytes_read, 0);
- data += bytes_read;
- printf (is_ref ? " <%lx>" : " %ld", uvalue);
+ 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);
- uvalue = * block_start;
break;
case DW_FORM_block1:
uvalue = byte_get (data, 1);
block_start = data + 1;
data = display_block (block_start, uvalue);
- uvalue = * block_start;
break;
case DW_FORM_block2:
uvalue = byte_get (data, 2);
block_start = data + 2;
data = display_block (block_start, uvalue);
- uvalue = * block_start;
break;
case DW_FORM_block4:
uvalue = byte_get (data, 4);
block_start = data + 4;
data = display_block (block_start, uvalue);
- uvalue = * block_start;
break;
case DW_FORM_strp:
@@ -6147,11 +6103,6 @@ read_and_display_attr (attribute, form, data, pointer_size)
}
break;
- case DW_AT_frame_base:
- if (uvalue >= DW_OP_reg0 && uvalue <= DW_OP_reg31)
- printf ("(reg %ld)", uvalue - DW_OP_reg0);
- break;
-
case DW_AT_language:
switch (uvalue)
{
@@ -6248,12 +6199,16 @@ read_and_display_attr (attribute, form, data, pointer_size)
}
break;
+ case DW_AT_frame_base:
case DW_AT_location:
case DW_AT_data_member_location:
case DW_AT_vtable_elem_location:
- printf ("(");
- decode_location_expression (block_start, pointer_size);
- printf (")");
+ if (block_start)
+ {
+ printf ("(");
+ decode_location_expression (block_start, pointer_size, uvalue);
+ printf (")");
+ }
break;
default:
@@ -6282,6 +6237,7 @@ display_debug_info (section, start, file)
unsigned char * tags;
int i;
int level;
+ unsigned long cu_offset;
external = (DWARF2_External_CompUnit *) start;
@@ -6291,20 +6247,21 @@ display_debug_info (section, start, file)
compunit.cu_pointer_size = BYTE_GET (external->cu_pointer_size);
tags = start + sizeof (* external);
+ cu_offset = start - section_begin;
start += compunit.cu_length + sizeof (external->cu_length);
+ 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)
{
warn (_("Only version 2 DWARF debug information is currently supported.\n"));
continue;
}
- printf (_(" Compilation Unit:\n"));
- 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 (first_abbrev != NULL)
free_abbrevs ();
@@ -6376,7 +6333,7 @@ display_debug_info (section, start, file)
for (attr = entry->first_attr; attr; attr = attr->next)
tags = read_and_display_attr (attr->attribute,
attr->form,
- tags,
+ tags, cu_offset,
compunit.cu_pointer_size);
if (entry->children)
@@ -6433,7 +6390,7 @@ display_debug_aranges (section, start, file)
ranges = start + sizeof (* external);
/* Must pad to an alignment boundary that is twice the pointer size. */
- excess = sizeof (*external) % (2 * arange.ar_pointer_size);
+ excess = sizeof (* external) % (2 * arange.ar_pointer_size);
if (excess)
ranges += (2 * arange.ar_pointer_size) - excess;
@@ -6462,6 +6419,602 @@ display_debug_aranges (section, start, file)
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;
+ unsigned int data_factor;
+ unsigned long pc_begin;
+ unsigned long pc_range;
+ int cfa_reg;
+ int cfa_offset;
+ int ra;
+}
+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 (fc, reg)
+ Frame_Chunk * fc;
+ int reg;
+{
+ int prev = fc->ncols;
+
+ if (reg < fc->ncols)
+ return;
+
+ fc->ncols = reg + 1;
+ fc->col_type = (short int *) xrealloc (fc->col_type,
+ fc->ncols * sizeof (short int));
+ fc->col_offset = (int *) 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 (fc, need_col_headers, max_regs)
+ 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 ("%08x ", (unsigned int) fc->pc_begin);
+ 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;
+ default:
+ strcpy (tmp, "n/a");
+ break;
+ }
+ printf ("%-5s", tmp);
+ }
+ }
+ printf ("\n");
+}
+
+#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 (section, start, file)
+ Elf32_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;
+
+ 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;
+
+ saved_start = start;
+ length = byte_get (start, 4); start += 4;
+
+ if (length == 0)
+ return 1;
+
+ block_end = saved_start + length + 4;
+ cie_id = byte_get (start, 4); start += 4;
+
+ printf ("\n%08x %08lx %08lx ", saved_start - section_start, length, cie_id);
+
+ if (is_eh ? (cie_id == 0) : (cie_id == DW_CIE_ID))
+ {
+ fc = (Frame_Chunk *) xmalloc (sizeof (Frame_Chunk));
+ memset (fc, 0, sizeof (Frame_Chunk));
+
+ fc->next = chunks;
+ chunks = fc;
+ fc->chunk_start = saved_start;
+ fc->ncols = 0;
+ fc->col_type = (short int *) xmalloc (sizeof (short int));
+ fc->col_offset = (int *) xmalloc (sizeof (int));
+ frame_need_space (fc, max_regs-1);
+
+ start ++; /* version */
+ fc->augmentation = start;
+
+ while (* start)
+ start++;
+
+ start++; /* skip past NUL */
+
+ if (fc->augmentation[0] == 'z')
+ {
+ int xtra;
+ fc->code_factor = LEB ();
+ fc->data_factor = SLEB ();
+ fc->ra = byte_get (start, 1); start += 1;
+ xtra = LEB ();
+ printf ("skipping %d extra bytes\n", xtra);
+ start += xtra;
+ }
+ else if (strcmp (fc->augmentation, "eh") == 0)
+ {
+ start += 4;
+ 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;
+ printf ("CIE \"%s\" cf=%d df=%d ra=%d\n",
+ fc->augmentation, fc->code_factor, fc->data_factor, fc->ra);
+
+ 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 : (unsigned char *) cie_id;
+
+ fc->pc_begin = byte_get (start, 4); start += 4;
+ fc->pc_range = byte_get (start, 4); start += 4;
+
+ for (cie=chunks; cie && (cie->chunk_start != look_for); cie = cie->next);
+ if (!cie)
+ {
+ warn ("Invalid CIE pointer %08x in FDE at %08x\n", cie_id, saved_start);
+ start = block_end;
+ fc->ncols = 0;
+ fc->col_type = (short int *) xmalloc (sizeof (short int));
+ fc->col_offset = (int *) xmalloc (sizeof (int));
+ frame_need_space (fc, max_regs - 1);
+ cie = fc;
+ fc->augmentation = "";
+ }
+ else
+ {
+ fc->ncols = cie->ncols;
+ fc->col_type = (short int *) xmalloc (fc->ncols * sizeof (short int));
+ fc->col_offset = (int *) 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);
+ }
+
+ if (cie->augmentation[0] == 'z')
+ {
+ unsigned long l = LEB ();
+ start += l;
+ }
+
+ printf ("FDE cie=%08x pc=%08lx..%08lx\n",
+ cie->chunk_start-section_start, fc->pc_begin,
+ fc->pc_begin + fc->pc_range);
+ }
+
+ /* At this point, fc is the current chunk, cie (if any) is set, and we're
+ about to interpret instructions for the chunk. */
+
+ /* This exists for readelf maintainers. */
+#define FDEBUG 0
+
+ {
+ /* 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;
+ 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 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 += sizeof (vma);
+ 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;
+#ifndef DW_CFA_GNU_args_size
+#define DW_CFA_GNU_args_size 0x2e
+#endif
+ case DW_CFA_GNU_args_size:
+ LEB ();
+ break;
+#ifndef DW_CFA_GNU_negative_offset_extended
+#define DW_CFA_GNU_negative_offset_extended 0x2f
+#endif
+ 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:
+ frame_display_row (fc, &need_col_headers, &max_regs);
+#if FDEBUG
+ printf (" DW_CFA_advance_loc: %08x = %08x + %d*%d\n",
+ fc->pc_begin + opa * fc->code_factor, fc->pc_begin, opa, fc->code_factor);
+#endif
+ fc->pc_begin += opa * fc->code_factor;
+ break;
+
+ case DW_CFA_offset:
+ roffs = LEB ();
+#if FDEBUG
+ printf (" DW_CFA_offset: r%d = cfa[%d*%d]\n", opa, roffs, fc->data_factor);
+#endif
+ fc->col_type[opa] = DW_CFA_offset;
+ fc->col_offset[opa] = roffs * fc->data_factor;
+ break;
+
+ case DW_CFA_restore:
+#if FDEBUG
+ printf (" DW_CFA_restore: r%d\n", opa);
+#endif
+ fc->col_type[opa] = cie->col_type[opa];
+ fc->col_offset[opa] = cie->col_offset[opa];
+ break;
+
+ case DW_CFA_set_loc:
+ frame_display_row (fc, &need_col_headers, &max_regs);
+ vma = byte_get (start, sizeof (vma)); start += sizeof (vma);
+#if FDEBUG
+ printf (" DW_CFA_set_loc: %08x\n", vma);
+#endif
+ fc->pc_begin = vma;
+ break;
+
+ case DW_CFA_advance_loc1:
+ frame_display_row (fc, &need_col_headers, &max_regs);
+ ofs = byte_get (start, 1); start += 1;
+#if FDEBUG
+ printf (" DW_CFA_advance_loc1: %08x = %08x + %d*%d\n",
+ fc->pc_begin + ofs * fc->code_factor, fc->pc_begin, ofs, fc->code_factor);
+#endif
+ fc->pc_begin += ofs * fc->code_factor;
+ break;
+
+ case DW_CFA_advance_loc2:
+ frame_display_row (fc, &need_col_headers, &max_regs);
+ ofs = byte_get (start, 2); start += 2;
+#if FDEBUG
+ printf (" DW_CFA_advance_loc2: %08x = %08x + %d*%d\n",
+ fc->pc_begin + ofs * fc->code_factor, fc->pc_begin, ofs, fc->code_factor);
+#endif
+ fc->pc_begin += ofs * fc->code_factor;
+ break;
+
+ case DW_CFA_advance_loc4:
+ frame_display_row (fc, &need_col_headers, &max_regs);
+ ofs = byte_get (start, 4); start += 4;
+#if FDEBUG
+ printf (" DW_CFA_advance_loc4: %08x = %08x + %d*%d\n",
+ fc->pc_begin + ofs * fc->code_factor, fc->pc_begin, ofs, fc->code_factor);
+#endif
+ fc->pc_begin += ofs * fc->code_factor;
+ break;
+
+ case DW_CFA_offset_extended:
+ reg = LEB ();
+ roffs = LEB ();
+#if FDEBUG
+ printf (" DW_CFA_offset_extended: r%d = cfa[%d*%d]\n", reg, roffs, fc->data_factor);
+#endif
+ fc->col_type[reg] = DW_CFA_offset;
+ fc->col_offset[reg] = roffs * fc->data_factor;
+ break;
+
+ case DW_CFA_restore_extended:
+ reg = LEB ();
+#if FDEBUG
+ printf (" DW_CFA_restore_extended: r%d\n", reg);
+#endif
+ fc->col_type[reg] = cie->col_type[reg];
+ fc->col_offset[reg] = cie->col_offset[reg];
+ break;
+
+ case DW_CFA_undefined:
+ reg = LEB ();
+#if FDEBUG
+ printf (" DW_CFA_undefined: r%d\n", reg);
+#endif
+ fc->col_type[reg] = DW_CFA_undefined;
+ fc->col_offset[reg] = 0;
+ break;
+
+ case DW_CFA_same_value:
+ reg = LEB ();
+#if FDEBUG
+ printf (" DW_CFA_same_value: r%d\n", reg);
+#endif
+ fc->col_type[reg] = DW_CFA_same_value;
+ fc->col_offset[reg] = 0;
+ break;
+
+ case DW_CFA_register:
+ reg = LEB ();
+ roffs = LEB ();
+#if FDEBUG
+ printf (" DW_CFA_register: r%d\n", reg);
+#endif
+ fc->col_type[reg] = DW_CFA_register;
+ fc->col_offset[reg] = roffs;
+ break;
+
+ case DW_CFA_remember_state:
+#if FDEBUG
+ printf (" DW_CFA_remember_state\n");
+#endif
+ rs = (Frame_Chunk *) xmalloc (sizeof (Frame_Chunk));
+ rs->ncols = fc->ncols;
+ rs->col_type = (short int *) xmalloc (rs->ncols * sizeof (short int));
+ rs->col_offset = (int *) 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 FDEBUG
+ printf (" DW_CFA_restore_state\n");
+#endif
+ 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 ();
+#if FDEBUG
+ printf (" DW_CFA_def_cfa: reg %d ofs %d\n", fc->cfa_reg, fc->cfa_offset);
+#endif
+ break;
+
+ case DW_CFA_def_cfa_register:
+ fc->cfa_reg = LEB ();
+#if FDEBUG
+ printf (" DW_CFA_def_cfa_reg: %d\n", fc->cfa_reg);
+#endif
+ break;
+
+ case DW_CFA_def_cfa_offset:
+ fc->cfa_offset = LEB ();
+#if FDEBUG
+ printf (" DW_CFA_def_cfa_offset: %d\n", fc->cfa_offset);
+#endif
+ break;
+
+ case DW_CFA_nop:
+#if FDEBUG
+ printf (" DW_CFA_nop\n");
+#endif
+ break;
+
+#ifndef DW_CFA_GNU_window_save
+#define DW_CFA_GNU_window_save 0x2d
+#endif
+ case DW_CFA_GNU_window_save:
+#if FDEBUG
+ printf (" DW_CFA_GNU_window_save\n");
+#endif
+ break;
+
+#ifndef DW_CFA_GNU_args_size
+#define DW_CFA_GNU_args_size 0x2e
+#endif
+ case DW_CFA_GNU_args_size:
+ ul = LEB ();
+#if FDEBUG
+ printf (" DW_CFA_GNU_args_size: %d\n", ul);
+#endif
+ break;
+
+#ifndef DW_CFA_GNU_negative_offset_extended
+#define DW_CFA_GNU_negative_offset_extended 0x2f
+#endif
+ case DW_CFA_GNU_negative_offset_extended:
+ reg = LEB ();
+ l = - LEB ();
+ frame_need_space (fc, reg);
+#if FDEBUG
+ printf (" DW_CFA_GNU_negative_offset_extended: r%d = cfa[%d*%d]\n", reg, l, fc->data_factor);
+#endif
+ 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;
+ }
+ }
+
+ 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 (section, start, file)
@@ -6509,6 +7062,8 @@ debug_displays[] =
{ ".debug_line", display_debug_lines, NULL },
{ ".debug_aranges", display_debug_aranges, NULL },
{ ".debug_pubnames", display_debug_pubnames, NULL },
+ { ".debug_frame", display_debug_frames, NULL },
+ { ".eh_frame", display_debug_frames, NULL },
{ ".debug_macinfo", display_debug_not_supported, NULL },
{ ".debug_frame", display_debug_not_supported, NULL },
{ ".debug_str", display_debug_not_supported, NULL },
@@ -6539,6 +7094,9 @@ display_debug_section (section, file)
"debug section data");
/* 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)
{
@@ -6775,7 +7333,7 @@ process_mips_specific (file)
Elf_External_Options *, "options");
iopt = (Elf_Internal_Options *) malloc ((sect->sh_size / sizeof (eopt))
- * sizeof (*iopt));
+ * sizeof (* iopt));
if (iopt == NULL)
{
error (_("Out of memory"));
@@ -6784,7 +7342,7 @@ process_mips_specific (file)
offset = cnt = 0;
option = iopt;
-
+
while (offset < sect->sh_size)
{
Elf_External_Options * eoption;
@@ -6797,16 +7355,16 @@ process_mips_specific (file)
option->info = BYTE_GET (eoption->info);
offset += option->size;
-
+
++option;
++cnt;
}
printf (_("\nSection '%s' contains %d entries:\n"),
- string_table + sect->sh_name, cnt);
+ SECTION_NAME (sect), cnt);
option = iopt;
-
+
while (cnt-- > 0)
{
size_t len;
@@ -6822,8 +7380,8 @@ process_mips_specific (file)
if (elf_header.e_machine == EM_MIPS)
{
/* 32bit form. */
- Elf32_External_RegInfo *ereg;
- Elf32_RegInfo reginfo;
+ Elf32_External_RegInfo * ereg;
+ Elf32_RegInfo reginfo;
ereg = (Elf32_External_RegInfo *) (option + 1);
reginfo.ri_gprmask = BYTE_GET (ereg->ri_gprmask);
@@ -6940,7 +7498,7 @@ process_mips_specific (file)
break;
}
- len = sizeof (*eopt);
+ len = sizeof (* eopt);
while (len < option->size)
if (((char *) option)[len] >= ' '
&& ((char *) option)[len] < 0x7f)
@@ -6968,7 +7526,7 @@ process_mips_specific (file)
return 0;
}
- iconf = (Elf32_Conflict *) malloc (conflictsno * sizeof (*iconf));
+ iconf = (Elf32_Conflict *) malloc (conflictsno * sizeof (* iconf));
if (iconf == NULL)
{
error (_("Out of memory"));
@@ -6977,7 +7535,7 @@ process_mips_specific (file)
if (is_32bit_elf)
{
- GET_DATA_ALLOC (conflicts_offset, conflictsno * sizeof (*econf32),
+ GET_DATA_ALLOC (conflicts_offset, conflictsno * sizeof (* econf32),
econf32, Elf32_External_Conflict *, "conflict");
for (cnt = 0; cnt < conflictsno; ++cnt)
@@ -6985,7 +7543,7 @@ process_mips_specific (file)
}
else
{
- GET_DATA_ALLOC (conflicts_offset, conflictsno * sizeof (*econf64),
+ GET_DATA_ALLOC (conflicts_offset, conflictsno * sizeof (* econf64),
econf64, Elf64_External_Conflict *, "conflict");
for (cnt = 0; cnt < conflictsno; ++cnt)
@@ -7069,8 +7627,7 @@ process_corefile_note_segment (file, offset, length)
external = pnotes;
printf (_("\nNotes at offset 0x%08lx with length 0x%08lx:\n"),
- (unsigned long) offset,
- (unsigned long) length);
+ (unsigned long) offset, (unsigned long) length);
printf (_(" Owner\t\tData size\tDescription\n"));
while (external < (Elf_External_Note *)((char *) pnotes + length))
@@ -7084,7 +7641,7 @@ process_corefile_note_segment (file, offset, length)
inote.descsz = BYTE_GET (external->descsz);
inote.descdata = inote.namedata + align_power (inote.namesz, 2);
inote.descpos = offset + (inote.descdata - (char *) pnotes);
-
+
external = (Elf_External_Note *)(inote.descdata + align_power (inote.descsz, 2));
/* Verify that name is null terminated. It appears that at least
@@ -7094,17 +7651,17 @@ process_corefile_note_segment (file, offset, length)
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;
}
@@ -7363,6 +7920,7 @@ process_file (file_name)
{
free (string_table);
string_table = NULL;
+ string_table_length = 0;
}
if (dynamic_strings)
diff --git a/contrib/binutils/binutils/resrc.c b/contrib/binutils/binutils/resrc.c
index 8c3c9a7..68bc7c4 100644
--- a/contrib/binutils/binutils/resrc.c
+++ b/contrib/binutils/binutils/resrc.c
@@ -78,7 +78,7 @@
/* The default preprocessor. */
-#define DEFAULT_PREPROCESSOR "gcc -E -xc-header -DRC_INVOKED"
+#define DEFAULT_PREPROCESSOR "gcc -E -xc -DRC_INVOKED"
/* We read the directory entries in a cursor or icon file into
instances of this structure. */
@@ -498,9 +498,6 @@ read_rc_file (filename, preprocessor, preprocargs, language, use_temp_file)
static void
close_input_stream ()
{
- if (cpp_pipe != NULL)
- pclose (cpp_pipe);
-
if (istream_type == ISTREAM_FILE)
{
if (cpp_pipe != NULL)
@@ -844,19 +841,42 @@ define_control (text, id, x, y, width, height, class, style, exstyle)
n->height = height;
n->class.named = 0;
n->class.u.id = class;
- if (text != NULL)
- res_string_to_id (&n->text, text);
- else
- {
- n->text.named = 0;
- n->text.u.id = 0;
- }
+ if (text == NULL)
+ text = "";
+ res_string_to_id (&n->text, text);
n->data = NULL;
n->help = 0;
return n;
}
+struct dialog_control *
+define_icon_control (iid, id, x, y, style, exstyle, help, data, ex)
+ 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;
+ if (style == 0)
+ style = SS_ICON | WS_CHILD | WS_VISIBLE;
+ n = define_control (0, 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
diff --git a/contrib/binutils/binutils/size.1 b/contrib/binutils/binutils/size.1
index 3b19bd2..1d182ae 100644
--- a/contrib/binutils/binutils/size.1
+++ b/contrib/binutils/binutils/size.1
@@ -1,6 +1,6 @@
-.\" Copyright (c) 1991 Free Software Foundation
+.\" Copyright (c) 1991, 2000 Free Software Foundation
.\" See section COPYING for conditions for redistribution
-.TH size 1 "5 November 1991" "cygnus support" "GNU Development Tools"
+.TH size 1 "5 November 1991" "Free Software Foundation" "GNU Development Tools"
.de BP
.sp
.ti \-.2i
@@ -143,19 +143,377 @@ entry in
.BR objdump ( 1 ).
.SH COPYING
-Copyright (c) 1991 Free Software Foundation, Inc.
+Copyright (c) 1991, 2000 Free Software Foundation, Inc.
.PP
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
+This document is distributed under the terms of the GNU Free
+Documentation License, version 1.1. That license is described in the
+sources for this manual page, but it is not displayed here in order to
+make this manual more consise. Copies of this license can also be
+obtained from: http://www.gnu.org/copyleft/.
+
+\" .SH GNU Free Documentation License
+\" Version 1.1, March 2000
+
+\" Copyright (C) 2000 Free Software Foundation, Inc.
+\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+\" Everyone is permitted to copy and distribute verbatim
+\" copies of this license document, but changing it is
+\" not allowed.
+\" .PP
+\" 0. PREAMBLE
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 1. APPLICABILITY AND DEFINITIONS
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 2. VERBATIM COPYING
+\" .PP
+\" 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.
+\" .PP
+\" You may also lend copies, under the same conditions stated above, and
+\" you may publicly display copies.
+\" .PP
+\" 3. COPYING IN QUANTITY
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 4. MODIFICATIONS
+\" .PP
+\" 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:
+\" .PP
+\" 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.
+\" .PP
+\" 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).
+\" .PP
+\" C. State on the Title page the name of the publisher of the
+\" Modified Version, as the publisher.
+\" .PP
+\" D. Preserve all the copyright notices of the Document.
+\" .PP
+\" E. Add an appropriate copyright notice for your modifications
+\" adjacent to the other copyright notices.
+\" .PP
+\" 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.
+\" Preserve in that license notice the full lists of Invariant Sections
+\" and required Cover Texts given in the Document's license notice.
+\" .PP
+\" H. Include an unaltered copy of this License.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" M. Delete any section entitled "Endorsements". Such a section
+\" may not be included in the Modified Version.
+\" .PP
+\" N. Do not retitle any existing section as "Endorsements"
+\" or to conflict in title with any Invariant Section.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 5. COMBINING DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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."
+\" .PP
+
+\" 6. COLLECTIONS OF DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 7. AGGREGATION WITH INDEPENDENT WORKS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 8. TRANSLATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 9. TERMINATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 10. FUTURE REVISIONS OF THIS LICENSE
+\" .PP
+\" 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/.
+\" .PP
+\" 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.
+\" .PP
+
+\" ADDENDUM: How to use this License for your documents
+\" .PP
+\" 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:
+\" .PP
+\" Copyright (c) YEAR YOUR NAME.
+\" Permission is granted to copy, distribute and/or
+\" modify this document under the terms of the GNU
+\" Free Documentation License, Version 1.1 or any later
+\" version published by the Free Software Foundation;
+\" with the Invariant Sections being LIST THEIR TITLES,
+\" with the Front-Cover Texts being LIST, and with the
+\" Back-Cover Texts being LIST. A copy of the license
+\" is included in the section entitled "GNU Free
+\" Documentation License".
+\" .PP
+\" If you have no Invariant Sections, write "with no Invariant Sections"
+\" instead of saying which ones are invariant. If you have no
+\" Front-Cover Texts, write "no Front-Cover Texts" instead of
+\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+\" .PP
+\" 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/contrib/binutils/binutils/size.c b/contrib/binutils/binutils/size.c
index 070834b..4cf17b2 100644
--- a/contrib/binutils/binutils/size.c
+++ b/contrib/binutils/binutils/size.c
@@ -77,8 +77,10 @@ usage (stream, status)
int status;
{
fprintf (stream, _("\
-Usage: %s [-ABdoxV] [--format=berkeley|sysv] [--radix=8|10|16]\n\
- [--target=bfdname] [--version] [--help] [file...]\n"), program_name);
+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"),
+ program_name);
#if BSD_DEFAULT
fputs (_("default is --format=berkeley\n"), stream);
#else
@@ -120,7 +122,7 @@ main (argc, argv)
bfd_init ();
set_default_bfd_target ();
- while ((c = getopt_long (argc, argv, "ABVdox", long_options,
+ while ((c = getopt_long (argc, argv, "ABVdfox", long_options,
(int *) 0)) != EOF)
switch (c)
{
@@ -186,6 +188,16 @@ main (argc, argv)
case 'o':
radix = octal;
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 '?':
diff --git a/contrib/binutils/binutils/srconv.c b/contrib/binutils/binutils/srconv.c
index c317d98..fb8996b 100644
--- a/contrib/binutils/binutils/srconv.c
+++ b/contrib/binutils/binutils/srconv.c
@@ -224,7 +224,7 @@ writeBARRAY (data, ptr, idx, size, file)
barray data;
char *ptr;
int *idx;
- int size;
+ int size ATTRIBUTE_UNUSED;
FILE *file;
{
int i;
@@ -299,7 +299,7 @@ wr_un (ptr, sfile, first, nsecs)
struct coff_ofile *ptr;
struct coff_sfile *sfile;
int first;
- int nsecs;
+ int nsecs ATTRIBUTE_UNUSED;
{
struct IT_un un;
@@ -438,7 +438,7 @@ wr_hd (p)
static void
wr_sh (p, sec)
- struct coff_ofile *p;
+ struct coff_ofile *p ATTRIBUTE_UNUSED;
struct coff_section *sec;
{
struct IT_sh sh;
@@ -453,7 +453,7 @@ wr_sh (p, sec)
static void
wr_ob (p, section)
- struct coff_ofile *p;
+ struct coff_ofile *p ATTRIBUTE_UNUSED;
struct coff_section *section;
{
bfd_size_type i;
@@ -514,7 +514,7 @@ wr_ob (p, section)
static void
wr_rl (ptr, sec)
- struct coff_ofile *ptr;
+ struct coff_ofile *ptr ATTRIBUTE_UNUSED;
struct coff_section *sec;
{
int nr = sec->nrelocs;
@@ -586,7 +586,7 @@ wr_object_body (p)
static void
wr_dps_start (sfile, section, scope, type, nest)
struct coff_sfile *sfile;
- struct coff_section *section;
+ struct coff_section *section ATTRIBUTE_UNUSED;
struct coff_scope *scope;
int type;
int nest;
@@ -623,8 +623,8 @@ wr_dps_start (sfile, section, scope, type, nest)
static void
wr_dps_end (section, scope, type)
- struct coff_section *section;
- struct coff_scope *scope;
+ struct coff_section *section ATTRIBUTE_UNUSED;
+ struct coff_scope *scope ATTRIBUTE_UNUSED;
int type;
{
struct IT_dps dps;
@@ -960,7 +960,7 @@ walk_tree_type (sfile, symbol, type, nest)
static void
walk_tree_symbol (sfile, section, symbol, nest)
struct coff_sfile *sfile;
- struct coff_section *section;
+ struct coff_section *section ATTRIBUTE_UNUSED;
struct coff_symbol *symbol;
int nest;
{
@@ -1329,7 +1329,7 @@ wr_du (p, sfile, n)
static void
wr_dus (p, sfile)
- struct coff_ofile *p;
+ struct coff_ofile *p ATTRIBUTE_UNUSED;
struct coff_sfile *sfile;
{
@@ -1373,11 +1373,12 @@ find_base (sfile, section)
{
return sfile->section[section->number].low;
}
+
static void
wr_dln (p, sfile, n)
- struct coff_ofile *p;
+ struct coff_ofile *p ATTRIBUTE_UNUSED;
struct coff_sfile *sfile;
- int n;
+ int n ATTRIBUTE_UNUSED;
{
#if 0
@@ -1517,7 +1518,7 @@ static void
wr_globals (p, sfile, n)
struct coff_ofile *p;
struct coff_sfile *sfile;
- int n;
+ int n ATTRIBUTE_UNUSED;
{
struct coff_symbol *sy;
for (sy = p->symbol_list_head;
@@ -1734,7 +1735,7 @@ return scount;
static void
wr_er (ptr, sfile, first)
struct coff_ofile *ptr;
- struct coff_sfile *sfile;
+ struct coff_sfile *sfile ATTRIBUTE_UNUSED;
int first;
{
int idx = 0;
@@ -1760,7 +1761,7 @@ wr_er (ptr, sfile, first)
static void
wr_ed (ptr, sfile, first)
struct coff_ofile *ptr;
- struct coff_sfile *sfile;
+ struct coff_sfile *sfile ATTRIBUTE_UNUSED;
int first;
{
struct coff_symbol *s;
diff --git a/contrib/binutils/binutils/stabs.c b/contrib/binutils/binutils/stabs.c
index 5f60035..daea301 100644
--- a/contrib/binutils/binutils/stabs.c
+++ b/contrib/binutils/binutils/stabs.c
@@ -1,5 +1,6 @@
/* stabs.c -- Parse stabs debugging information
- Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+ Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001
+ Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>.
This file is part of GNU Binutils.
@@ -33,6 +34,7 @@
#include "demangle.h"
#include "debug.h"
#include "budbg.h"
+#include "filenames.h"
/* Meaningless definition needs by aout64.h. FIXME. */
#define BYTES_IN_WORD 4
@@ -40,14 +42,6 @@
#include "aout/aout64.h"
#include "aout/stab_gnu.h"
-#ifndef DIR_SEPARATOR
-#ifdef _WIN32
-#define DIR_SEPARATOR '\\'
-#else
-#define DIR_SEPARATOR '/'
-#endif
-#endif
-
/* The number of predefined XCOFF types. */
#define XCOFF_TYPE_COUNT 34
@@ -568,12 +562,7 @@ parse_stab (dhandle, handle, type, desc, value, string)
f = info->so_string;
- if ( (string[0] == '/')
- || (string[0] == DIR_SEPARATOR)
- || ( (DIR_SEPARATOR == '\\')
- && (string[1] == ':')
- && ( (string[2] == DIR_SEPARATOR)
- || (string[2] == '/'))))
+ if (IS_ABSOLUTE_PATH (string))
info->so_string = xstrdup (string);
else
info->so_string = concat (info->so_string, string,
@@ -706,6 +695,7 @@ parse_stab (dhandle, handle, type, desc, value, string)
case N_OBJ:
case N_ENDM:
case N_MAIN:
+ case N_WARNING:
break;
}
@@ -1822,7 +1812,7 @@ parse_stab_range_type (dhandle, info, typename, pp, typenums)
else if (n3 == (bfd_signed_vma) 0xffffffff)
return debug_make_int_type (dhandle, 4, true);
#ifdef BFD64
- else if (n3 == ((((bfd_vma) 0xffffffff) << 32) | 0xffffffff))
+ else if (n3 == ((((bfd_signed_vma) 0xffffffff) << 32) | 0xffffffff))
return debug_make_int_type (dhandle, 8, true);
#endif
}
diff --git a/contrib/binutils/binutils/strings.1 b/contrib/binutils/binutils/strings.1
index 4d33b79..4233630 100644
--- a/contrib/binutils/binutils/strings.1
+++ b/contrib/binutils/binutils/strings.1
@@ -1,6 +1,6 @@
.\" Copyright (c) 1993, 94, 95, 2000 Free Software Foundation
.\" See section COPYING for conditions for redistribution
-.TH strings 1 "09 March 2000" "cygnus support" "GNU Development Tools"
+.TH strings 1 "09 March 2000" "Free Software Foundation" "GNU Development Tools"
.de BP
.sp
.ti \-.2i
@@ -133,19 +133,377 @@ The GNU Binary Utilities\c
.SH COPYING
-Copyright (c) 1993 Free Software Foundation, Inc.
+Copyright (c) 1993, 2000 Free Software Foundation, Inc.
.PP
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
+This document is distributed under the terms of the GNU Free
+Documentation License, version 1.1. That license is described in the
+sources for this manual page, but it is not displayed here in order to
+make this manual more consise. Copies of this license can also be
+obtained from: http://www.gnu.org/copyleft/.
+
+\" .SH GNU Free Documentation License
+\" Version 1.1, March 2000
+
+\" Copyright (C) 2000 Free Software Foundation, Inc.
+\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+\" Everyone is permitted to copy and distribute verbatim
+\" copies of this license document, but changing it is
+\" not allowed.
+\" .PP
+\" 0. PREAMBLE
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 1. APPLICABILITY AND DEFINITIONS
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 2. VERBATIM COPYING
+\" .PP
+\" 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.
+\" .PP
+\" You may also lend copies, under the same conditions stated above, and
+\" you may publicly display copies.
+\" .PP
+\" 3. COPYING IN QUANTITY
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 4. MODIFICATIONS
+\" .PP
+\" 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:
+\" .PP
+\" 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.
+\" .PP
+\" 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).
+\" .PP
+\" C. State on the Title page the name of the publisher of the
+\" Modified Version, as the publisher.
+\" .PP
+\" D. Preserve all the copyright notices of the Document.
+\" .PP
+\" E. Add an appropriate copyright notice for your modifications
+\" adjacent to the other copyright notices.
+\" .PP
+\" 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.
+\" Preserve in that license notice the full lists of Invariant Sections
+\" and required Cover Texts given in the Document's license notice.
+\" .PP
+\" H. Include an unaltered copy of this License.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" M. Delete any section entitled "Endorsements". Such a section
+\" may not be included in the Modified Version.
+\" .PP
+\" N. Do not retitle any existing section as "Endorsements"
+\" or to conflict in title with any Invariant Section.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 5. COMBINING DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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."
+\" .PP
+
+\" 6. COLLECTIONS OF DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 7. AGGREGATION WITH INDEPENDENT WORKS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 8. TRANSLATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 9. TERMINATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 10. FUTURE REVISIONS OF THIS LICENSE
+\" .PP
+\" 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/.
+\" .PP
+\" 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.
+\" .PP
+
+\" ADDENDUM: How to use this License for your documents
+\" .PP
+\" 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:
+\" .PP
+\" Copyright (c) YEAR YOUR NAME.
+\" Permission is granted to copy, distribute and/or
+\" modify this document under the terms of the GNU
+\" Free Documentation License, Version 1.1 or any later
+\" version published by the Free Software Foundation;
+\" with the Invariant Sections being LIST THEIR TITLES,
+\" with the Front-Cover Texts being LIST, and with the
+\" Back-Cover Texts being LIST. A copy of the license
+\" is included in the section entitled "GNU Free
+\" Documentation License".
+\" .PP
+\" If you have no Invariant Sections, write "with no Invariant Sections"
+\" instead of saying which ones are invariant. If you have no
+\" Front-Cover Texts, write "no Front-Cover Texts" instead of
+\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+\" .PP
+\" 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/contrib/binutils/binutils/strings.c b/contrib/binutils/binutils/strings.c
index 54f29e4..a961e41 100644
--- a/contrib/binutils/binutils/strings.c
+++ b/contrib/binutils/binutils/strings.c
@@ -77,9 +77,9 @@
#endif
#ifdef isascii
-#define isgraphic(c) (isascii (c) && isprint (c))
+#define isgraphic(c) (isascii (c) && (isprint (c) || (c) == '\t'))
#else
-#define isgraphic(c) (isprint (c))
+#define isgraphic(c) (isprint (c) || (c) == '\t')
#endif
#ifndef errno
diff --git a/contrib/binutils/binutils/strip.1 b/contrib/binutils/binutils/strip.1
index 1fc415c..5bd6dfb 100644
--- a/contrib/binutils/binutils/strip.1
+++ b/contrib/binutils/binutils/strip.1
@@ -1,6 +1,6 @@
-.\" Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation
+.\" Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998, 2000 Free Software Foundation
.\" See section COPYING for conditions for redistribution
-.TH strip 1 "5 November 1991" "cygnus support" "GNU Development Tools"
+.TH strip 1 "5 November 1991" "Free Software Foundation" "GNU Development Tools"
.de BP
.sp
.ti \-.2i
@@ -167,19 +167,377 @@ entry in
Roland H. Pesch (October 1991).
.SH COPYING
-Copyright (c) 1991 Free Software Foundation, Inc.
+Copyright (c) 1991, 2000 Free Software Foundation, Inc.
.PP
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
+This document is distributed under the terms of the GNU Free
+Documentation License, version 1.1. That license is described in the
+sources for this manual page, but it is not displayed here in order to
+make this manual more consise. Copies of this license can also be
+obtained from: http://www.gnu.org/copyleft/.
+
+\" .SH GNU Free Documentation License
+\" Version 1.1, March 2000
+
+\" Copyright (C) 2000 Free Software Foundation, Inc.
+\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+\" Everyone is permitted to copy and distribute verbatim
+\" copies of this license document, but changing it is
+\" not allowed.
+\" .PP
+\" 0. PREAMBLE
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 1. APPLICABILITY AND DEFINITIONS
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 2. VERBATIM COPYING
+\" .PP
+\" 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.
+\" .PP
+\" You may also lend copies, under the same conditions stated above, and
+\" you may publicly display copies.
+\" .PP
+\" 3. COPYING IN QUANTITY
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 4. MODIFICATIONS
+\" .PP
+\" 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:
+\" .PP
+\" 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.
+\" .PP
+\" 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).
+\" .PP
+\" C. State on the Title page the name of the publisher of the
+\" Modified Version, as the publisher.
+\" .PP
+\" D. Preserve all the copyright notices of the Document.
+\" .PP
+\" E. Add an appropriate copyright notice for your modifications
+\" adjacent to the other copyright notices.
+\" .PP
+\" 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.
+\" Preserve in that license notice the full lists of Invariant Sections
+\" and required Cover Texts given in the Document's license notice.
+\" .PP
+\" H. Include an unaltered copy of this License.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" M. Delete any section entitled "Endorsements". Such a section
+\" may not be included in the Modified Version.
+\" .PP
+\" N. Do not retitle any existing section as "Endorsements"
+\" or to conflict in title with any Invariant Section.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 5. COMBINING DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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."
+\" .PP
+
+\" 6. COLLECTIONS OF DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 7. AGGREGATION WITH INDEPENDENT WORKS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 8. TRANSLATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 9. TERMINATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 10. FUTURE REVISIONS OF THIS LICENSE
+\" .PP
+\" 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/.
+\" .PP
+\" 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.
+\" .PP
+
+\" ADDENDUM: How to use this License for your documents
+\" .PP
+\" 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:
+\" .PP
+\" Copyright (c) YEAR YOUR NAME.
+\" Permission is granted to copy, distribute and/or
+\" modify this document under the terms of the GNU
+\" Free Documentation License, Version 1.1 or any later
+\" version published by the Free Software Foundation;
+\" with the Invariant Sections being LIST THEIR TITLES,
+\" with the Front-Cover Texts being LIST, and with the
+\" Back-Cover Texts being LIST. A copy of the license
+\" is included in the section entitled "GNU Free
+\" Documentation License".
+\" .PP
+\" If you have no Invariant Sections, write "with no Invariant Sections"
+\" instead of saying which ones are invariant. If you have no
+\" Front-Cover Texts, write "no Front-Cover Texts" instead of
+\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+\" .PP
+\" 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/contrib/binutils/binutils/sysdump.c b/contrib/binutils/binutils/sysdump.c
index fd2a0ea..1f8a577 100644
--- a/contrib/binutils/binutils/sysdump.c
+++ b/contrib/binutils/binutils/sysdump.c
@@ -131,8 +131,8 @@ barray
getBARRAY (ptr, idx, dsize, max)
unsigned char *ptr;
int *idx;
- int dsize;
- int max;
+ int dsize ATTRIBUTE_UNUSED;
+ int max ATTRIBUTE_UNUSED;
{
barray res;
int i;
diff --git a/contrib/binutils/binutils/version.c b/contrib/binutils/binutils/version.c
index cb893cf..5bd1907 100644
--- a/contrib/binutils/binutils/version.c
+++ b/contrib/binutils/binutils/version.c
@@ -1,5 +1,5 @@
/* version.c -- binutils version information
- Copyright 1991, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
+ Copyright 1991, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
This file is part of GNU Binutils.
@@ -36,7 +36,7 @@ print_version (name)
/* This output is intended to follow the GNU standards document. */
/* xgettext:c-format */
printf ("GNU %s %s\n", name, program_version);
- printf (_("Copyright 1997, 98, 99, 2000 Free Software Foundation, Inc.\n"));
+ printf (_("Copyright 1997, 98, 99, 2000, 2001 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"));
diff --git a/contrib/binutils/config-ml.in b/contrib/binutils/config-ml.in
index 503f7cf..c968bf0 100644
--- a/contrib/binutils/config-ml.in
+++ b/contrib/binutils/config-ml.in
@@ -280,6 +280,17 @@ arm-*-*)
esac
done
fi
+ if [ x"$enable_nofmult" = xno ]
+ then
+ old_multidirs="${multidirs}"
+ multidirs=""
+ for x in ${old_multidirs}; do
+ case "$x" in
+ *nofmult* ) : ;;
+ *) multidirs="${multidirs} ${x}" ;;
+ esac
+ done
+ fi
;;
m68*-*-*)
if [ x$enable_softfloat = xno ]
@@ -362,6 +373,28 @@ mips*-*-*)
esac
done
fi
+ case " $multidirs " in
+ *" mabi=64 "*)
+ # We will not be able to create libraries with -mabi=64 if
+ # we cannot even link a trivial program. It usually
+ # indicates the 64bit libraries are missing.
+ if echo 'main() {}' > conftest.c &&
+ ${CC-gcc} -mabi=64 conftest.c -o conftest; then
+ :
+ else
+ echo Could not link program with -mabi=64, disabling it.
+ old_multidirs="${multidirs}"
+ multidirs=""
+ for x in ${old_multidirs}; do
+ case "$x" in
+ *mabi=64* ) : ;;
+ *) multidirs="${multidirs} ${x}" ;;
+ esac
+ done
+ fi
+ rm -f conftest.c conftest
+ ;;
+ esac
;;
powerpc*-*-* | rs6000*-*-*)
if [ x$enable_softfloat = xno ]
@@ -442,6 +475,30 @@ powerpc*-*-* | rs6000*-*-*)
done
fi
;;
+sparc*-*-*)
+ case " $multidirs " in
+ *" m64 "*)
+ # We will not be able to create libraries with -m64 if
+ # we cannot even link a trivial program. It usually
+ # indicates the 64bit libraries are missing.
+ if echo 'main() {}' > conftest.c &&
+ ${CC-gcc} -m64 conftest.c -o conftest; then
+ :
+ else
+ echo Could not link program with -m64, disabling it.
+ old_multidirs="${multidirs}"
+ multidirs=""
+ for x in ${old_multidirs}; do
+ case "$x" in
+ *m64* ) : ;;
+ *) multidirs="${multidirs} ${x}" ;;
+ esac
+ done
+ fi
+ rm -f conftest.c conftest
+ ;;
+ esac
+ ;;
esac
# Remove extraneous blanks from multidirs.
@@ -472,6 +529,8 @@ multi-do:
flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \
CFLAGS="$(CFLAGS) $${flags}" \
+ prefix="$(prefix)" \
+ exec_prefix="$(exec_prefix)" \
CXXFLAGS="$(CXXFLAGS) $${flags}" \
LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
@@ -615,7 +674,24 @@ if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; then
echo "pwd: `pwd`"
fi
- if [ -d ${ml_dir} ]; then true; else mkdir ${ml_dir}; fi
+ if [ -d ${ml_dir} ]; then true; else
+ # ``mkdir -p ${ml_dir}'' See also mkinstalldirs.
+ pathcomp=""
+ for d in `echo ":${ml_dir}" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`; do
+ pathcomp="$pathcomp$d"
+ case "$pathcomp" in
+ -* ) pathcomp=./$pathcomp ;;
+ esac
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp" 1>&2
+ mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
+ fi
+ if test ! -d "$pathcomp"; then
+ exit $lasterr
+ fi
+ pathcomp="$pathcomp/"
+ done
+ fi
if [ -d ${ml_dir}/${ml_libdir} ]; then true; else mkdir ${ml_dir}/${ml_libdir}; fi
# Eg: if ${ml_dir} = m68000/m68881, dotdot = ../../
@@ -666,9 +742,86 @@ if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; then
cd ${ml_dir}/${ml_libdir}
if [ -f ${ml_newsrcdir}/configure ]; then
- ml_recprog=${ml_newsrcdir}/configure
+ ml_recprog="${ml_newsrcdir}/configure --cache-file=../config.cache"
fi
- if eval ${ml_config_shell} ${ml_recprog} \
+
+ # find compiler flag corresponding to ${ml_dir}
+ for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do
+ dir=`echo $i | sed -e 's/;.*$//'`
+ if [ "${dir}" = "${ml_dir}" ]; then
+ flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`
+ break
+ fi
+ done
+ ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags"'
+
+ if [ "${with_target_subdir}" = "." ]; then
+ CC_=$CC' '
+ CXX_=$CXX' '
+ else
+ # Create a regular expression that matches any string as long
+ # as ML_POPDIR.
+ popdir_rx=`echo ${ML_POPDIR} | sed 's,.,.,g'`
+ CC_=
+ for arg in ${CC}; do
+ case $arg in
+ -[BIL]"${ML_POPDIR}"/*)
+ CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;;
+ "${ML_POPDIR}"/*)
+ CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ *)
+ CC_="${CC_}${arg} " ;;
+ esac
+ done
+
+ CXX_=
+ for arg in ${CXX}; do
+ case $arg in
+ -[BIL]"${ML_POPDIR}"/*)
+ CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ "${ML_POPDIR}"/*)
+ CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ *)
+ CXX_="${CXX_}${arg} " ;;
+ esac
+ done
+
+ if test "x${LD_LIBRARY_PATH+set}" = xset; then
+ LD_LIBRARY_PATH_=
+ for arg in `echo "$LD_LIBRARY_PATH" | tr ':' ' '`; do
+ case "$arg" in
+ "${ML_POPDIR}"/*)
+ arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
+ ;;
+ esac
+ if test "x$LD_LIBRARY_PATH_" != x; then
+ LD_LIBRARY_PATH_=$LD_LIBRARY_PATH_:$arg
+ else
+ LD_LIBRARY_PATH_=$arg
+ fi
+ done
+ ml_config_env="$ml_config_env LD_LIBRARY_PATH=$LD_LIBRARY_PATH_"
+ fi
+
+ if test "x${SHLIB_PATH+set}" = xset; then
+ SHLIB_PATH_=
+ for arg in `echo "$SHLIB_PATH" | tr ':' ' '`; do
+ case "$arg" in
+ "${ML_POPDIR}"/*)
+ arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
+ ;;
+ esac
+ if test "x$SHLIB_PATH_" != x; then
+ SHLIB_PATH_=$SHLIB_PATH_:$arg
+ else
+ SHLIB_PATH_=$arg
+ fi
+ done
+ ml_config_env="$ml_config_env SHLIB_PATH=$SHLIB_PATH_"
+ fi
+ fi
+
+ if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \
--with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \
${ml_arguments} ${ml_srcdiroption} ; then
true
diff --git a/contrib/binutils/config.guess b/contrib/binutils/config.guess
index 08e8a75..71de137 100755
--- a/contrib/binutils/config.guess
+++ b/contrib/binutils/config.guess
@@ -1,9 +1,9 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc.
-version='2000-09-05'
+timestamp='2001-03-16'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -32,30 +32,41 @@ version='2000-09-05'
# exits with 0. Otherwise, it exits with 1.
#
# The plan is that this can be called by configure scripts if you
-# don't specify an explicit system type (host/target name).
-#
-# Only a few systems have been added to this list; please add others
-# (but try to keep the structure clean).
-#
+# don't specify an explicit build system type.
me=`echo "$0" | sed -e 's,.*/,,'`
usage="\
Usage: $0 [OPTION]
-Output the configuration name of this system.
+Output the configuration name of the system \`$me' is run on.
Operation modes:
- -h, --help print this help, then exit
- -V, --version print version number, then exit"
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
Try \`$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
- case "$1" in
- --version | --vers* | -V )
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
echo "$version" ; exit 0 ;;
--help | --h* | -h )
echo "$usage"; exit 0 ;;
@@ -64,9 +75,7 @@ while test $# -gt 0 ; do
- ) # Use stdin as input.
break ;;
-* )
- exec >&2
- echo "$me: invalid option $1"
- echo "$help"
+ echo "$me: invalid option $1$help" >&2
exit 1 ;;
* )
break ;;
@@ -78,19 +87,30 @@ if test $# != 0; then
exit 1
fi
-# Use $HOST_CC if defined. $CC may point to a cross-compiler
-if test x"$CC_FOR_BUILD" = x; then
- if test x"$HOST_CC" != x; then
- CC_FOR_BUILD="$HOST_CC"
- else
- if test x"$CC" != x; then
- CC_FOR_BUILD="$CC"
- else
- CC_FOR_BUILD=cc
- fi
- fi
-fi
+dummy=dummy-$$
+trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script.
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int dummy(){}" > $dummy.c
+ for c in cc gcc c89 ; do
+ ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1
+ if test $? = 0 ; then
+ CC_FOR_BUILD="$c"; break
+ fi
+ done
+ rm -f $dummy.c $dummy.o $dummy.rel
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 8/24/94.)
@@ -100,12 +120,9 @@ fi
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-dummy=dummy-$$
-trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
-
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -129,16 +146,24 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
ibmrt|romp-ibm) machine=romp-ibm ;;
*) machine=${UNAME_MACHINE}-unknown ;;
esac
- # The Operating System including object format.
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
- then
- # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
- # Return netbsd for either. FIX?
- os=netbsd
- else
- os=netbsdelf
- fi
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE}" in
+ i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k)
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep __ELF__ >/dev/null
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
# The OS release
release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
@@ -247,7 +272,7 @@ EOF
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit 0;;
- SR2?01:HI-UX/MPP:*:*)
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
echo hppa1.1-hitachi-hiuxmpp
exit 0;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
@@ -383,7 +408,7 @@ EOF
EOF
$CC_FOR_BUILD $dummy.c -o $dummy \
&& ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && rm $dummy.c $dummy && exit 0
+ && rm -f $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
echo mips-mips-riscos${UNAME_RELEASE}
exit 0 ;;
@@ -437,6 +462,14 @@ EOF
i?86:AIX:*:*)
echo i386-ibm-aix
exit 0 ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit 0 ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
sed 's/^ //' << EOF >$dummy.c
@@ -450,7 +483,7 @@ EOF
exit(0);
}
EOF
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
+ $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
echo rs6000-ibm-aix3.2.5
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
@@ -459,9 +492,9 @@ EOF
echo rs6000-ibm-aix3.2
fi
exit 0 ;;
- *:AIX:*:4)
+ *:AIX:*:[45])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
- if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
@@ -469,7 +502,7 @@ EOF
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
else
- IBM_REV=4.${UNAME_RELEASE}
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
exit 0 ;;
@@ -495,10 +528,28 @@ EOF
echo m68k-hp-bsd4.4
exit 0 ;;
9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
case "${UNAME_MACHINE}" in
9000/31? ) HP_ARCH=m68000 ;;
9000/[34]?? ) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
+ case "${HPUX_REV}" in
+ 11.[0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ esac ;;
+ esac
+ fi ;;
+ esac
+ if [ "${HP_ARCH}" = "" ]; then
sed 's/^ //' << EOF >$dummy.c
#define _HPUX_SOURCE
@@ -533,11 +584,16 @@ EOF
}
EOF
(CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
+ if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
rm -f $dummy.c $dummy
+ fi ;;
esac
- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit 0 ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit 0 ;;
3050*:HI-UX:*:*)
sed 's/^ //' << EOF >$dummy.c
#include <unistd.h>
@@ -564,7 +620,7 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
+ $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
echo unknown-hitachi-hiuxwe2
exit 0 ;;
@@ -628,23 +684,24 @@ EOF
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
- CRAY*T3E:*:*:*)
+ CRAY*T3D:*:*:*)
echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
CRAY*SV1:*:*:*)
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
CRAY-2:*:*:*)
echo cray2-cray-unicos
exit 0 ;;
- F300:UNIX_System_V:*:*)
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;;
- F301:UNIX_System_V:*:*)
- echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
- exit 0 ;;
hp300:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
@@ -693,57 +750,38 @@ EOF
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit 0 ;;
- *:Linux:*:*)
-
- # The BFD linker knows what the default object file format is, so
- # first see if it will tell us. cd to the root directory to prevent
- # problems with other programs or directories called `ld' in the path.
- ld_help_string=`cd /; ld --help 2>&1`
- ld_supported_emulations=`echo $ld_help_string \
- | sed -ne '/supported emulations:/!d
- s/[ ][ ]*/ /g
- s/.*supported emulations: *//
- s/ .*//
- p'`
- case "$ld_supported_emulations" in
- *ia64)
- echo "${UNAME_MACHINE}-unknown-linux"
- exit 0
- ;;
- i?86linux)
- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit 0
- ;;
- elf_i?86)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
- i?86coff)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit 0
- ;;
- sparclinux)
- echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
- exit 0
- ;;
- armlinux)
- echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
- exit 0
- ;;
- elf32arm*)
- echo "${UNAME_MACHINE}-unknown-linux-gnuoldld"
- exit 0
- ;;
- armelf_linux*)
- echo "${UNAME_MACHINE}-unknown-linux-gnu"
- exit 0
- ;;
- m68klinux)
- echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
- exit 0
- ;;
- elf32ppc | elf32ppclinux)
- # Determine Lib Version
- cat >$dummy.c <<EOF
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux
+ exit 0 ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ mips:Linux:*:*)
+ cat >$dummy.c <<EOF
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+int main (int argc, char *argv[]) {
+#else
+int main (argc, argv) int argc; char *argv[]; {
+#endif
+#ifdef __MIPSEB__
+ printf ("%s-unknown-linux-gnu\n", argv[1]);
+#endif
+#ifdef __MIPSEL__
+ printf ("%sel-unknown-linux-gnu\n", argv[1]);
+#endif
+ return 0;
+}
+EOF
+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
+ ;;
+ ppc:Linux:*:*)
+ # Determine Lib Version
+ cat >$dummy.c <<EOF
#include <features.h>
#if defined(__GLIBC__)
extern char __libc_version[];
@@ -756,129 +794,127 @@ main(argc, argv)
#if defined(__GLIBC__)
printf("%s %s\n", __libc_version, __libc_release);
#else
- printf("unkown\n");
+ printf("unknown\n");
#endif
return 0;
}
EOF
- LIBC=""
- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
+ LIBC=""
+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
+ if test "$?" = 0 ; then
+ ./$dummy | grep 1\.99 > /dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; fi
+ fi
+ rm -f $dummy.c $dummy
+ echo powerpc-unknown-linux-gnu${LIBC}
+ exit 0 ;;
+ alpha:Linux:*:*)
+ cat <<EOF >$dummy.s
+ .data
+ \$Lformat:
+ .byte 37,100,45,37,120,10,0 # "%d-%x\n"
+ .text
+ .globl main
+ .align 4
+ .ent main
+ main:
+ .frame \$30,16,\$26,0
+ ldgp \$29,0(\$27)
+ .prologue 1
+ .long 0x47e03d80 # implver \$0
+ lda \$2,-1
+ .long 0x47e20c21 # amask \$2,\$1
+ lda \$16,\$Lformat
+ mov \$0,\$17
+ not \$1,\$18
+ jsr \$26,printf
+ ldgp \$29,0(\$26)
+ mov 0,\$16
+ jsr \$26,exit
+ .end main
+EOF
+ LIBC=""
+ $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
+ if test "$?" = 0 ; then
+ case `./$dummy` in
+ 0-0) UNAME_MACHINE="alpha" ;;
+ 1-0) UNAME_MACHINE="alphaev5" ;;
+ 1-1) UNAME_MACHINE="alphaev56" ;;
+ 1-101) UNAME_MACHINE="alphapca56" ;;
+ 2-303) UNAME_MACHINE="alphaev6" ;;
+ 2-307) UNAME_MACHINE="alphaev67" ;;
+ esac
+ objdump --private-headers $dummy | \
+ grep ld.so.1 > /dev/null
if test "$?" = 0 ; then
- ./$dummy | grep 1\.99 > /dev/null
- if test "$?" = 0 ; then
- LIBC="libc1"
- fi
+ LIBC="libc1"
fi
- rm -f $dummy.c $dummy
- echo powerpc-unknown-linux-gnu${LIBC}
+ fi
+ rm -f $dummy.s $dummy
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit 0 ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit 0 ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit 0 ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit 0 ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit 0 ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit 0 ;;
+ i?86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ ld_supported_emulations=`cd /; ld --help 2>&1 \
+ | sed -ne '/supported emulations:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported emulations: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_emulations" in
+ i?86linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
exit 0
;;
- shelf_linux)
- echo "${UNAME_MACHINE}-unknown-linux-gnu"
+ elf_i?86)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ i?86coff)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
exit 0
;;
esac
-
- if test "${UNAME_MACHINE}" = "alpha" ; then
- cat <<EOF >$dummy.s
- .data
- \$Lformat:
- .byte 37,100,45,37,120,10,0 # "%d-%x\n"
-
- .text
- .globl main
- .align 4
- .ent main
- main:
- .frame \$30,16,\$26,0
- ldgp \$29,0(\$27)
- .prologue 1
- .long 0x47e03d80 # implver \$0
- lda \$2,-1
- .long 0x47e20c21 # amask \$2,\$1
- lda \$16,\$Lformat
- mov \$0,\$17
- not \$1,\$18
- jsr \$26,printf
- ldgp \$29,0(\$26)
- mov 0,\$16
- jsr \$26,exit
- .end main
-EOF
- LIBC=""
- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
- if test "$?" = 0 ; then
- case `./$dummy` in
- 0-0)
- UNAME_MACHINE="alpha"
- ;;
- 1-0)
- UNAME_MACHINE="alphaev5"
- ;;
- 1-1)
- UNAME_MACHINE="alphaev56"
- ;;
- 1-101)
- UNAME_MACHINE="alphapca56"
- ;;
- 2-303)
- UNAME_MACHINE="alphaev6"
- ;;
- 2-307)
- UNAME_MACHINE="alphaev67"
- ;;
- esac
-
- objdump --private-headers $dummy | \
- grep ld.so.1 > /dev/null
- if test "$?" = 0 ; then
- LIBC="libc1"
- fi
- fi
- rm -f $dummy.s $dummy
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
- elif test "${UNAME_MACHINE}" = "mips" ; then
- cat >$dummy.c <<EOF
-#ifdef __cplusplus
-#include <stdio.h> /* for printf() prototype */
- int main (int argc, char *argv[]) {
-#else
- int main (argc, argv) int argc; char *argv[]; {
-#endif
-#ifdef __MIPSEB__
- printf ("%s-unknown-linux-gnu\n", argv[1]);
-#endif
-#ifdef __MIPSEL__
- printf ("%sel-unknown-linux-gnu\n", argv[1]);
-#endif
- return 0;
-}
-EOF
- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- elif test "${UNAME_MACHINE}" = "s390"; then
- echo s390-ibm-linux && exit 0
- elif test "${UNAME_MACHINE}" = "x86_64"; then
- echo x86_64-unknown-linux-gnu && exit 0
- else
- # Either a pre-BFD a.out linker (linux-gnuoldld)
- # or one that does not give us useful --help.
- # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
- # If ld does not provide *any* "supported emulations:"
- # that means it is gnuoldld.
- echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:"
- test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
-
- case "${UNAME_MACHINE}" in
- i?86)
- VENDOR=pc;
- ;;
- *)
- VENDOR=unknown;
- ;;
- esac
- # Determine whether the default compiler is a.out or elf
- cat >$dummy.c <<EOF
+ # Either a pre-BFD a.out linker (linux-gnuoldld)
+ # or one that does not give us useful --help.
+ # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
+ # If ld does not provide *any* "supported emulations:"
+ # that means it is gnuoldld.
+ test -z "$ld_supported_emulations" && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
+ case "${UNAME_MACHINE}" in
+ i?86)
+ VENDOR=pc;
+ ;;
+ *)
+ VENDOR=unknown;
+ ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ cat >$dummy.c <<EOF
#include <features.h>
#ifdef __cplusplus
#include <stdio.h> /* for printf() prototype */
@@ -902,10 +938,10 @@ EOF
return 0;
}
EOF
- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
- fi ;;
+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
+ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ ;;
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
# are messed up and put the nodename in both sysname and nodename.
i?86:DYNIX/ptx:4*:*)
@@ -982,7 +1018,7 @@ EOF
exit 0 ;;
M68*:*:R3V[567]*:*)
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
+ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
@@ -1005,9 +1041,12 @@ EOF
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
- rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
+ rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
exit 0 ;;
@@ -1087,6 +1126,9 @@ EOF
NSR-[KW]:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
exit 0 ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit 0 ;;
BS2000:POSIX*:*:*)
echo bs2000-siemens-sysv
exit 0 ;;
@@ -1104,6 +1146,29 @@ EOF
fi
echo ${UNAME_MACHINE}-unknown-plan9
exit 0 ;;
+ i?86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit 0 ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit 0 ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit 0 ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit 0 ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit 0 ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit 0 ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1195,11 +1260,24 @@ main ()
#endif
#if defined (vax)
-#if !defined (ultrix)
- printf ("vax-dec-bsd\n"); exit (0);
-#else
- printf ("vax-dec-ultrix\n"); exit (0);
-#endif
+# if !defined (ultrix)
+# include <sys/param.h>
+# if defined (BSD)
+# if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+# else
+# if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# endif
+# else
+ printf ("vax-dec-bsd\n"); exit (0);
+# endif
+# else
+ printf ("vax-dec-ultrix\n"); exit (0);
+# endif
#endif
#if defined (alliant) && defined (i860)
@@ -1210,7 +1288,7 @@ main ()
}
EOF
-$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0
+$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
rm -f $dummy.c $dummy
# Apollos put the system type in the environment.
@@ -1246,8 +1324,9 @@ fi
cat >&2 <<EOF
$0: unable to guess system type
-The $version version of this script cannot recognize your system type.
-Please download the most up to date version of the config scripts:
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
ftp://ftp.gnu.org/pub/gnu/config/
@@ -1256,7 +1335,7 @@ send the following data and any information you think might be
pertinent to <config-patches@gnu.org> in order to provide the needed
information to handle your system.
-config.guess version = $version
+config.guess timestamp = $timestamp
uname -m = `(uname -m) 2>/dev/null || echo unknown`
uname -r = `(uname -r) 2>/dev/null || echo unknown`
@@ -1283,7 +1362,7 @@ exit 1
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "version='"
+# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
# End:
diff --git a/contrib/binutils/config.if b/contrib/binutils/config.if
new file mode 100644
index 0000000..625a407
--- /dev/null
+++ b/contrib/binutils/config.if
@@ -0,0 +1,93 @@
+#! /dev/null
+# Don't call it directly. This shell script fragment is called to
+# determine:
+#
+# 1. libstcxx_interface: the interface name for libstdc++.
+# 2. cxx_interface: the interface name for c++.
+# 3. libc_interface: the interface name for libc.
+#
+
+# Get the top level src dir.
+if [ -z "${topsrcdir}" -a -z "${top_srcdir}" ]
+then
+ echo "Undefined top level src dir: topsrcdir and top_srcdir are empty" >&2
+ exit 1
+fi
+
+if [ -n "${topsrcdir}" ]
+then
+ if_topsrcdir=${topsrcdir}
+else
+ if_topsrcdir=${top_srcdir}
+fi
+
+if [ "${enable_libstdcxx_v3}" = "yes" ] ; then
+ libstdcxx_srcdir=${if_topsrcdir}/libstdc++-v3
+else
+ libstdcxx_srcdir=${if_topsrcdir}/libstdc++
+fi
+
+if [ -f ${libstdcxx_srcdir}/Makefile.in ]; then
+# We check libstdc++ for libstdcxx_interface.
+libstdcxx_interface=`grep "^INTERFACE" ${libstdcxx_srcdir}/Makefile.in | sed 's/INTERFACE[ ]*=[ ]*\(.*\)/\1/'`
+else
+libstdcxx_interface=
+fi
+
+if [ -f ${if_topsrcdir}/gcc/cp/Makefile.in ]; then
+# We check gcc/cp for cxx_interface.
+cxx_interface=`grep "^INTERFACE" ${if_topsrcdir}/gcc/cp/Makefile.in | sed 's/INTERFACE[ ]*=[ ]*\(.*\)/\1/'`
+else
+cxx_interface=
+fi
+
+# The trickiest part is libc_interface.
+if [ -z "${libc_interface}" ]
+then
+ case ${target_os} in
+ *linux*libc1*|*linux*libc5*)
+ case ${target_alias} in
+ *alpha*|*powerpc*)
+ libc_interface=-libc5.9-
+ ;;
+ *)
+ libc_interface=-libc5-
+ ;;
+ esac
+ ;;
+ *linux*gnu*)
+ # We have to work harder to figure it out.
+ if [ ${target_alias} = ${build_alias} ]
+ then
+ dummy=if$$
+ cat >$dummy.c <<EOF
+#include <features.h>
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ printf("%d\n", __GLIBC_MINOR__);
+ return 0;
+}
+EOF
+ ${CC-cc} $dummy.c -o $dummy 2>/dev/null
+ if [ "$?" = 0 ]
+ then
+ libc_interface=-libc6.`./$dummy`-
+ rm -f $dummy.c $dummy
+ else
+ # It should never happen.
+ echo "Cannot find the GNU C library minor version number." >&2
+ rm -f $dummy.c $dummy
+ exit 1
+ fi
+ else
+ # Cross compiling. Assume glibc 2.1.
+ libc_interface=-libc6.1-
+ fi
+ ;;
+ *)
+ libc_interface=-
+ ;;
+ esac
+fi
diff --git a/contrib/binutils/config.sub b/contrib/binutils/config.sub
index 42fc991..7146a2f 100755
--- a/contrib/binutils/config.sub
+++ b/contrib/binutils/config.sub
@@ -1,9 +1,9 @@
#! /bin/sh
-# Configuration validation subroutine script, version 1.1.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc.
-version='2000-09-11'
+timestamp='2001-03-19'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -60,16 +60,30 @@ Usage: $0 [OPTION] CPU-MFR-OPSYS
Canonicalize a configuration name.
Operation modes:
- -h, --help print this help, then exit
- -V, --version print version number, then exit"
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help="
Try \`$me --help' for more information."
# Parse command line
while test $# -gt 0 ; do
- case "$1" in
- --version | --vers* | -V )
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit 0 ;;
+ --version | -v )
echo "$version" ; exit 0 ;;
--help | --h* | -h )
echo "$usage"; exit 0 ;;
@@ -78,9 +92,7 @@ while test $# -gt 0 ; do
- ) # Use stdin as input.
break ;;
-* )
- exec >&2
- echo "$me: invalid option $1"
- echo "$help"
+ echo "$me: invalid option $1$help"
exit 1 ;;
*local*)
@@ -105,7 +117,7 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
- nto-qnx* | linux-gnu*)
+ nto-qnx* | linux-gnu* | storm-chaos* | os2-emx*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -203,22 +215,25 @@ esac
case $basic_machine in
# Recognize the basic CPU types without company name.
# Some are omitted here because they have special meanings below.
- tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
- | arme[lb] | armv[2345] | armv[345][lb] | pyramid | mn10200 | mn10300 | tron | a29k \
+ tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \
+ | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \
+ | pyramid | mn10200 | mn10300 | tron | a29k \
| 580 | i960 | h8300 \
- | x86 | ppcbe | mipsbe | mipsle | shbe | shle | armbe | armle \
+ | x86 | ppcbe | mipsbe | mipsle | shbe | shle \
| hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
| hppa64 \
| alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
| alphaev6[78] \
| we32k | ns16k | clipper | i370 | sh | sh[34] \
| powerpc | powerpcle \
- | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \
+ | 1750a | dsp16xx | pdp10 | pdp11 \
+ | mips16 | mips64 | mipsel | mips64el \
| mips64orion | mips64orionel | mipstx39 | mipstx39el \
| mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
- | mips64vr5000 | miprs64vr5000el | mcore \
+ | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \
| sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \
- | thumb | d10v | d30v | fr30 | avr)
+ | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \
+ | pj | pjl | h8500)
basic_machine=$basic_machine-unknown
;;
m6811 | m68hc11 | m6812 | m68hc12)
@@ -226,7 +241,7 @@ case $basic_machine in
basic_machine=$basic_machine-unknown
os=-none
;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl)
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | w65)
;;
# We use `pc' rather than `unknown'
@@ -243,26 +258,28 @@ case $basic_machine in
# Recognize the basic CPU types with company name.
# FIXME: clean up the formatting here.
vax-* | tahoe-* | i[234567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
+ | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \
+ | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
| power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
| xmp-* | ymp-* \
- | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* | armbe-* | armle-* \
+ | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \
| hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
| hppa2.0n-* | hppa64-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
| alphaev6[78]-* \
| we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
| clipper-* | orion-* \
- | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
+ | sparclite-* | pdp10-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
| sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \
| mips64el-* | mips64orion-* | mips64orionel-* \
| mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
| mipstx39-* | mipstx39el-* | mcore-* \
- | f301-* | armv*-* | s390-* | sv1-* | t3e-* \
+ | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \
+ | [cjt]90-* \
| m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
- | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* \
- | bs2000-* | tic54x-* | c54x-* | x86_64-*)
+ | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \
+ | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*)
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
@@ -353,8 +370,8 @@ case $basic_machine in
basic_machine=cray2-cray
os=-unicos
;;
- [ctj]90-cray)
- basic_machine=c90-cray
+ [cjt]90)
+ basic_machine=${basic_machine}-cray
os=-unicos
;;
crds | unos)
@@ -410,6 +427,10 @@ case $basic_machine in
basic_machine=tron-gmicro
os=-sysv
;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
h3050r* | hiux*)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
@@ -509,18 +530,6 @@ case $basic_machine in
basic_machine=i386-unknown
os=-vsta
;;
- i386-go32 | go32)
- basic_machine=i386-unknown
- os=-go32
- ;;
- i386-mingw32 | mingw32)
- basic_machine=i386-unknown
- os=-mingw32
- ;;
- i[34567]86-pw32 | pw32)
- basic_machine=i586-unknown
- os=-pw32
- ;;
iris | iris4d)
basic_machine=mips-sgi
case $os in
@@ -546,6 +555,10 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
miniframe)
basic_machine=m68000-convergent
;;
@@ -576,7 +589,7 @@ case $basic_machine in
os=-coff
;;
msdos)
- basic_machine=i386-unknown
+ basic_machine=i386-pc
os=-msdos
;;
mvs)
@@ -640,6 +653,10 @@ case $basic_machine in
basic_machine=i960-intel
os=-mon960
;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
np1)
basic_machine=np1-gould
;;
@@ -675,28 +692,28 @@ case $basic_machine in
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
- pentium | p5 | k5 | k6 | nexen)
+ pentium | p5 | k5 | k6 | nexgen)
basic_machine=i586-pc
;;
pentiumpro | p6 | 6x86 | athlon)
basic_machine=i686-pc
;;
pentiumii | pentium2)
- basic_machine=i786-pc
+ basic_machine=i686-pc
;;
- pentium-* | p5-* | k5-* | k6-* | nexen-*)
+ pentium-* | p5-* | k5-* | k6-* | nexgen-*)
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumpro-* | p6-* | 6x86-* | athlon-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumii-* | pentium2-*)
- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pn)
basic_machine=pn-gould
;;
- power) basic_machine=rs6000-ibm
+ power) basic_machine=power-ibm
;;
ppc) basic_machine=powerpc-unknown
;;
@@ -711,6 +728,10 @@ case $basic_machine in
ps2)
basic_machine=i386-ibm
;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
rom68k)
basic_machine=m68k-rom68k
os=-coff
@@ -901,6 +922,10 @@ case $basic_machine in
vax)
basic_machine=vax-dec
;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
pdp11)
basic_machine=pdp11-dec
;;
@@ -908,7 +933,7 @@ case $basic_machine in
basic_machine=we32k-att
;;
sh3 | sh4)
- base_machine=sh-unknown
+ basic_machine=sh-unknown
;;
sparc | sparcv9)
basic_machine=sparc-sun
@@ -991,7 +1016,8 @@ case $os in
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
- | -openstep* | -oskit* | -conix* | -pw32*)
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1089,7 +1115,7 @@ case $os in
-xenix)
os=-xenix
;;
- -*mint | -*MiNT)
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
os=-mint
;;
-none)
@@ -1123,6 +1149,9 @@ case $basic_machine in
arm*-semi)
os=-aout
;;
+ pdp10-*)
+ os=-tops20
+ ;;
pdp11-*)
os=-none
;;
@@ -1231,7 +1260,7 @@ case $basic_machine in
*-masscomp)
os=-rtu
;;
- f301-fujitsu)
+ f30[01]-fujitsu | f700-fujitsu)
os=-uxpv
;;
*-rom68k)
@@ -1309,7 +1338,7 @@ case $basic_machine in
-mpw* | -macos*)
vendor=apple
;;
- -*mint | -*MiNT)
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
vendor=atari
;;
esac
@@ -1322,7 +1351,7 @@ exit 0
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
-# time-stamp-start: "version='"
+# time-stamp-start: "timestamp='"
# time-stamp-format: "%:y-%02m-%02d"
# time-stamp-end: "'"
# End:
diff --git a/contrib/binutils/config/ChangeLog b/contrib/binutils/config/ChangeLog
index b5746b1..920ab32 100644
--- a/contrib/binutils/config/ChangeLog
+++ b/contrib/binutils/config/ChangeLog
@@ -1,3 +1,16 @@
+Fri Jul 14 18:13:23 2000 Mark P Mitchell <mark@codesourcery.com>
+
+ * mh-irix6 (CC): Don't set it.
+
+2000-06-21 Branko Cibej <branko.cibej@hermes.si>
+
+ * mh-sparcpic: Use single instead of double quotes.
+ * mt-sparcpic: Likewise.
+
+2000-06-19 Syd Polk <spolk@redhat.com>
+
+ * acinclude.m4: Updated for Incr Tcl 3.0.
+
2000-02-23 Linas Vepstas <linas@linas.org>
* mh-i370pic: New file.
@@ -12,6 +25,10 @@
* mh-aix43: Delete, move to mt-aix43.
* mt-aix43: New file.
+Tue Sep 7 23:31:01 1999 Linas Vepstas <linas@linas.org>
+
+ * mh-openedition: New file.
+
1999-04-07 Michael Meissner <meissner@cygnus.com>
* mt-d30v: New file, pass -g -Os -Wa,-C as default options.
diff --git a/contrib/binutils/config/acinclude.m4 b/contrib/binutils/config/acinclude.m4
index f799ced..6187b5a 100755
--- a/contrib/binutils/config/acinclude.m4
+++ b/contrib/binutils/config/acinclude.m4
@@ -1045,6 +1045,7 @@ dnl AC_SUBST(TCL_COMPAT_OBJS)
AC_SUBST(TCL_RANLIB)
AC_SUBST(TCL_BUILD_LIB_SPEC)
AC_SUBST(TCL_LIB_SPEC)
+ AC_SUBST(TCL_BIN_DIR)
dnl AC_SUBST(TCL_LIB_VERSIONS_OK)
dnl not used, don't export to save symbols
diff --git a/contrib/binutils/config/mh-openedition b/contrib/binutils/config/mh-openedition
new file mode 100644
index 0000000..e99ef15
--- /dev/null
+++ b/contrib/binutils/config/mh-openedition
@@ -0,0 +1,2 @@
+RANLIB = true
+CC = c89
diff --git a/contrib/binutils/config/mh-sparcpic b/contrib/binutils/config/mh-sparcpic
index f6dbc22..e218bb4 100644
--- a/contrib/binutils/config/mh-sparcpic
+++ b/contrib/binutils/config/mh-sparcpic
@@ -1 +1 @@
-PICFLAG=`case "${LIBCFLAGS} ${LIBCXXFLAGS}" in *-fpic* ) echo -fpic ;; * ) echo -fPIC ;; esac`
+PICFLAG=`case '${LIBCFLAGS} ${LIBCXXFLAGS}' in *-fpic* ) echo -fpic ;; * ) echo -fPIC ;; esac`
diff --git a/contrib/binutils/config/mt-sparcpic b/contrib/binutils/config/mt-sparcpic
index fd0ec27..a62b38b 100644
--- a/contrib/binutils/config/mt-sparcpic
+++ b/contrib/binutils/config/mt-sparcpic
@@ -1 +1 @@
-PICFLAG_FOR_TARGET=`case "${LIBCFLAGS} ${LIBCXXFLAGS}" in *-fpic* ) echo -fpic ;; * ) echo -fPIC ;; esac`
+PICFLAG_FOR_TARGET=`case '${LIBCFLAGS} ${LIBCXXFLAGS}' in *-fpic* ) echo -fpic ;; * ) echo -fPIC ;; esac`
diff --git a/contrib/binutils/configure b/contrib/binutils/configure
index 3e7d865..57e22d8 100755
--- a/contrib/binutils/configure
+++ b/contrib/binutils/configure
@@ -86,7 +86,7 @@ subdirs=
target_alias=NOTARGET
target_makefile_frag=
undefs=NOUNDEFS
-version="$Revision: 1.5 $"
+version="$Revision: 1.11 $"
x11=default
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
@@ -237,7 +237,7 @@ do
esac
enableopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
- eval "$enableopt='$optarg'"
+ eval "$enableopt=\$optarg"
enableoptions="$enableoptions '$option'"
;;
--exec-prefix* | --ex*)
@@ -370,7 +370,7 @@ do
esac
withopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
- eval $withopt="$optarg"
+ eval $withopt="\$optarg"
withoptions="$withoptions $option"
;;
--without-*)
@@ -518,7 +518,8 @@ fi
configsub=`echo ${progname} | sed 's/configure$/config.sub/'`
moveifchange=`echo ${progname} | sed 's/configure$/move-if-change/'`
-topsrcdir=`cd \`dirname ${progname}\`; pwd`
+## the sed command below emulates the dirname command
+topsrcdir=`cd \`echo ${progname} | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'\`; pwd`
# this is a hack. sun4 must always be a valid host alias or this will fail.
@@ -576,7 +577,6 @@ case "${srcdir}" in
fi
esac
-
# default exec_prefix
case "${exec_prefixoption}" in
"") exec_prefix="\$(prefix)" ;;
@@ -902,9 +902,6 @@ do
test -n "$DEFAULT_LEX" && break
done
-# BINUTILS LOCAL: This is included in the default CFLAGS when using gcc.
-warn_cflags="-W -Wall"
-
if [ "${build}" != "${host}" ]; then
# If we are doing a Canadian Cross, in which the host and build systems
# are not the same, we set reasonable default values for the tools.
@@ -915,9 +912,10 @@ if [ "${build}" != "${host}" ]; then
tools="${tools} HOST_PREFIX_1 LD LD_FOR_TARGET LEX MAKEINFO NM"
tools="${tools} NM_FOR_TARGET RANLIB RANLIB_FOR_TARGET"
tools="${tools} WINDRES WINDRES_FOR_TARGET YACC"
+ tools="${tools} OBJCOPY OBJDUMP"
for var in ${tools}; do
- if [ -z "`eval 'echo $'"${var}"`" ] && [ -r Makefile ]; then
+ if eval [ -z \"\$${var}\" ] && [ -r Makefile ]; then
sed -n -e ':loop
/\\$/ N
s/\\\n//g
@@ -926,7 +924,7 @@ t loop
< Makefile > Makefile.v
t=`tail -1 Makefile.v`
if [ -n "${t}" ]; then
- eval "${var}='${t}'"
+ eval "${var}=\${t}"
fi
rm -f Makefile.v
fi
@@ -938,7 +936,7 @@ t loop
AS_FOR_TARGET=${AS_FOR_TARGET-${target_alias}-as}
BISON=${BISON-bison}
CC=${CC-${host_alias}-gcc}
- CFLAGS=${CFLAGS-"-g -O2 ${warn_cflags}"}
+ CFLAGS=${CFLAGS-"-g -O2"}
CXX=${CXX-${host_alias}-c++}
CXXFLAGS=${CXXFLAGS-"-g -O2"}
CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
@@ -958,6 +956,8 @@ t loop
RANLIB_FOR_TARGET=${RANLIB_FOR_TARGET-${target_alias}-ranlib}
WINDRES=${WINDRES-${host_alias}-windres}
WINDRES_FOR_TARGET=${WINDRES_FOR_TARGET-${target_alias}-windres}
+ OBJCOPY=${OBJCOPY-${host_alias}-objcopy}
+ OBJDUMP=${OBJDUMP-${host_alias}-objdump}
if [ -z "${YACC}" ]; then
IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:"
@@ -1008,6 +1008,8 @@ t loop
export NM
export RANLIB
export WINDRES
+ export OBJCOPY
+ export OBJDUMP
else
# If CC is still not set, try to get gcc.
if [ -z "${CC}" ]; then
@@ -1018,10 +1020,10 @@ else
CC="gcc"
echo 'void f(){}' > conftest.c
if test -z "`${CC} -g -c conftest.c 2>&1`"; then
- CFLAGS=${CFLAGS-"-g -O2 ${warn_cflags}"}
+ CFLAGS=${CFLAGS-"-g -O2"}
CXXFLAGS=${CXXFLAGS-"-g -O2"}
else
- CFLAGS=${CFLAGS-"-O2 ${warn_cflags}"}
+ CFLAGS=${CFLAGS-"-O2"}
CXXFLAGS=${CXXFLAGS-"-O2"}
fi
rm -f conftest*
@@ -1038,10 +1040,10 @@ else
*gcc)
echo 'void f(){}' > conftest.c
if test -z "`${CC} -g -c conftest.c 2>&1`"; then
- CFLAGS=${CFLAGS-"-g -O2 ${warn_cflags}"}
+ CFLAGS=${CFLAGS-"-g -O2"}
CXXFLAGS=${CXXFLAGS-"-g -O2"}
else
- CFLAGS=${CFLAGS-"-O2 ${warn_cflags}"}
+ CFLAGS=${CFLAGS-"-O2"}
CXXFLAGS=${CXXFLAGS-"-O2"}
fi
rm -f conftest*
@@ -1411,6 +1413,7 @@ EOF
-e "s:^program_suffix[ ]*=.*$:program_suffix = ${program_suffix}:" \
-e "s:^program_transform_name[ ]*=.*$:program_transform_name = ${program_transform_name}:" \
-e "s|^tooldir[ ]*=.*$|tooldir = ${tooldir}|" \
+ -e "s|^build_tooldir[ ]*=.*$|build_tooldir = ${tooldir}|" \
-e "s:^DEFAULT_YACC[ ]*=.*$:DEFAULT_YACC = ${DEFAULT_YACC}:" \
-e "s:^DEFAULT_LEX[ ]*=.*$:DEFAULT_LEX = ${DEFAULT_LEX}:" \
-e "s:^DEFAULT_M4[ ]*=.*$:DEFAULT_M4 = ${DEFAULT_M4}:" \
@@ -1423,7 +1426,7 @@ EOF
# tools.
if [ "${build}" != "${host}" ]; then
for var in ${tools}; do
- val=`eval 'echo $'"${var}"`
+ eval val=\$${var}
sed -e "/^${var}[ ]*=/{
:loop1
/\\\\$/ N
diff --git a/contrib/binutils/configure.in b/contrib/binutils/configure.in
index 8171c53..221ff45 100644
--- a/contrib/binutils/configure.in
+++ b/contrib/binutils/configure.in
@@ -47,10 +47,20 @@ if [ "${enable_gdbgui}" = "yes" ] ; then
host_libs="${host_libs} libgui"
fi
+# Set up configure/Makefile variables if libstdc++-v3 is to be built.
+if [ "${enable_libstdcxx_v3}" = "yes" ] && test -d $srcdir/libstdc++-v3; then
+ libstdcxx_version="target-libstdc++-v3"
+ # Don't use libstdc++-v3's flags to configure/build itself.
+ libstdcxx_flags='`case $$dir in libstdc++-v3) ;; *) cat $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/libstdc++.INC 2>/dev/null || : ;; esac` -L$$r/$(TARGET_SUBDIR)/libstd++-v3/src -L$$r/$(TARGET_SUBDIR)/libstd++-v3/src/.libs'
+else
+ libstdcxx_version="target-libio target-libstdc++"
+ libstdcxx_flags='-isystem $$s/libstdc++ -isystem $$s/libstdc++/std -isystem $$s/libstdc++/stl -isystem $$s/libio/ -isystem $$s/libio/stdio -L$$r/$(TARGET_SUBDIR)/libstdc++'
+fi
+
# these tools are built for the host environment
# Note, the powerpc-eabi build depends on sim occurring before gdb in order to
# know that we are building the simulator.
-host_tools="byacc flex bison binutils ld gas gcc sim gdb make patch prms send-pr gprof gdbtest tgas etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool ispell grep diff rcs cvssrc fileutils shellutils time textutils wdiff find emacs emacs19 uudecode hello tar gzip indent recode release sed utils guile perl apache inet gawk findutils snavigator libtool gettext zip"
+host_tools="byacc flex bison binutils ld gas gcc cgen sid sim gdb make patch prms send-pr gprof gdbtest tgas etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool ispell grep diff rcs cvssrc fileutils shellutils time textutils wdiff find emacs emacs19 uudecode hello tar gzip indent recode release sed utils guile perl apache inet gawk findutils snavigator libtool gettext zip"
# these libraries are built for the target environment, and are built after
# the host libraries and the host tools (which may be a cross compiler)
@@ -58,10 +68,15 @@ host_tools="byacc flex bison binutils ld gas gcc sim gdb make patch prms send-pr
target_libs="target-libiberty \
target-libgloss \
target-newlib \
- target-libio \
- target-librx \
- target-libstdc++ \
- target-libg++"
+ ${libstdcxx_version} \
+ target-libf2c \
+ target-libchill \
+ target-libffi \
+ target-libjava \
+ target-zlib \
+ target-boehm-gc \
+ target-qthreads \
+ target-libobjc"
# these tools are built using the target libs, and are intended to run only
# in the target environment
@@ -154,6 +169,9 @@ case "${host}" in
mips*-*-sysv*)
host_makefile_frag="${host_makefile_frag} config/mh-riscos"
;;
+ i370-ibm-opened*)
+ host_makefile_frag="${host_makefile_frag} config/mh-openedition"
+ ;;
i[3456]86-*-sysv5*)
host_makefile_frag="${host_makefile_frag} config/mh-sysv5"
;;
@@ -291,6 +309,9 @@ if [ x${shared} = xyes ]; then
i370-*-*)
host_makefile_frag="${host_makefile_frag} config/mh-i370pic"
;;
+ ia64-*-*)
+ host_makefile_frag="${host_makefile_frag} config/mh-ia64pic"
+ ;;
sparc64-*-*)
host_makefile_frag="${host_makefile_frag} config/mh-sparcpic"
;;
@@ -524,7 +545,7 @@ case "${host}" in
noconfigdirs="tcl expect dejagnu make texinfo bison patch flex byacc send-pr gprof uudecode dejagnu diff guile perl apache inet itcl tix db snavigator gnuserv gettext"
;;
i[3456]86-*-go32* | i[3456]86-*-msdosdjgpp*)
- noconfigdirs="tcl tk expect dejagnu make texinfo bison patch flex byacc send-pr uudecode dejagnu diff guile perl apache inet itcl tix db snavigator gnuserv gettext"
+ noconfigdirs="tcl tk expect dejagnu make texinfo bison patch flex byacc send-pr uudecode dejagnu diff guile perl apache inet itcl tix db snavigator gnuserv gettext libffi"
;;
i[3456]86-*-mingw32*)
# noconfigdirs="tcl tk expect dejagnu make texinfo bison patch flex byacc send-pr uudecode dejagnu diff guile perl apache inet itcl tix db snavigator gnuserv"
@@ -542,18 +563,21 @@ case "${host}" in
ppc*-*-pe)
noconfigdirs="patch diff make tk tcl expect dejagnu cvssrc autoconf automake texinfo bison send-pr gprof rcs guile perl apache inet itcl tix db snavigator gnuserv"
;;
+ powerpc-*-beos*)
+ noconfigdirs="$noconfigdirs tk itcl tix libgui gdb dejagnu readline"
+ ;;
esac
case "${target}" in
*-*-netware)
- noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-librx target-newlib target-libiberty target-libgloss"
+ noconfigdirs="$noconfigdirs ${libstdcxx_version} target-newlib target-libiberty target-libgloss target-libffi"
;;
*-*-rtems*)
- noconfigdirs="$noconfigdirs target-libgloss"
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
;;
*-*-vxworks*)
- noconfigdirs="$noconfigdirs target-newlib target-libgloss"
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libffi"
;;
alpha*-dec-osf*)
# ld works, but does not support shared libraries. emacs doesn't
@@ -562,13 +586,7 @@ case "${target}" in
noconfigdirs="$noconfigdirs gas ld emacs fileutils target-newlib target-libgloss"
;;
alpha*-*-*vms*)
- noconfigdirs="$noconfigdirs gdb ld target-newlib target-libgloss"
- ;;
- alpha*-*-linux*)
- # newlib is not 64 bit ready
- noconfigdirs="$noconfigdirs target-newlib target-libgloss"
- # linux has rx in libc
- skipdirs="$skipdirs target-librx"
+ noconfigdirs="$noconfigdirs gdb ld target-newlib target-libgloss target-libffi"
;;
alpha*-*-*)
# newlib is not 64 bit ready
@@ -577,20 +595,20 @@ case "${target}" in
sh*-*-pe|mips*-*-pe|*arm-wince-pe)
noconfigdirs="$noconfigdirs target-libjava target-libffi target-zlib"
noconfigdirs="$noconfigdirs target-boehm-gc target-qthreads target-examples"
- noconfigdirs="$noconfigdirs target-librx target-libiberty texinfo send-pr"
+ noconfigdirs="$noconfigdirs target-libiberty texinfo send-pr"
noconfigdirs="$noconfigdirs tcl tix tk itcl libgui sim"
noconfigdirs="$noconfigdirs expect dejagnu"
# the C++ libraries don't build on top of CE's C libraries
- noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio"
+ noconfigdirs="$noconfigdirs ${libstdcxx_version}"
skipdirs="$skipdirs target-newlib"
case "${host}" in
*-*-cygwin*) ;; # keep gdb and readline
- *) noconfigdirs="$noconfigdirs gdb readline target-libio target-libstdc++ target-libg++"
+ *) noconfigdirs="$noconfigdirs gdb readline ${libstdcxx_version}"
;;
esac
;;
arc-*-*)
- noconfigdirs="$noconfigdirs target-libgloss"
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
;;
arm-*-pe*)
noconfigdirs="$noconfigdirs target-libgloss"
@@ -608,40 +626,55 @@ case "${target}" in
fi
;;
arm-*-oabi*)
- noconfigdirs="$noconfigdirs target-libgloss"
- ;;
- c4x-*-*)
- noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx target-libgloss"
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
;;
thumb-*-coff)
- noconfigdirs="$noconfigdirs target-libgloss"
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
;;
thumb-*-elf)
- noconfigdirs="$noconfigdirs target-libgloss"
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
;;
thumb-*-oabi)
- noconfigdirs="$noconfigdirs target-libgloss"
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
;;
strongarm-*-elf)
- noconfigdirs="$noconfigdirs target-libgloss"
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
if [ x${is_cross_compiler} != xno ] ; then
target_configdirs="${target_configdirs} target-bsp target-cygmon"
fi
;;
strongarm-*-coff)
- noconfigdirs="$noconfigdirs target-libgloss"
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
+ if [ x${is_cross_compiler} != xno ] ; then
+ target_configdirs="${target_configdirs} target-bsp target-cygmon"
+ fi
+ ;;
+ xscale-*-elf)
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
+ if [ x${is_cross_compiler} != xno ] ; then
+ target_configdirs="${target_configdirs} target-bsp target-cygmon"
+ fi
+ ;;
+ xscale-*-coff)
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
if [ x${is_cross_compiler} != xno ] ; then
target_configdirs="${target_configdirs} target-bsp target-cygmon"
fi
;;
thumb-*-pe)
- noconfigdirs="$noconfigdirs target-libgloss"
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
;;
arm-*-riscix*)
- noconfigdirs="$noconfigdirs ld target-libgloss"
+ noconfigdirs="$noconfigdirs ld target-libgloss target-libffi"
+ ;;
+ c4x-*-*)
+ noconfigdirs="$noconfigdirs ${libstdcxx_version} target-libgloss target-libffi"
+ ;;
+ c54x*-*-* | tic54x-*-*)
+ noconfigdirs="$noconfigdirs ${libstdcxx_version} target-libgloss target-libffi gcc gdb newlib"
;;
d10v-*-*)
- noconfigdirs="$noconfigdirs target-librx target-libg++ target-libstdc++ target-libio"
+ noconfigdirs="$noconfigdirs ${libstdcxx_version} target-libgloss target-libffi"
;;
d30v-*-*)
;;
@@ -652,12 +685,13 @@ case "${target}" in
;;
h8300*-*-* | \
h8500-*-*)
- noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx target-libgloss"
+ noconfigdirs="$noconfigdirs ${libstdcxx_version} target-libgloss target-libffi"
;;
hppa*-*-*elf* | \
hppa*-*-linux-gnu* | \
- hppa*-*-lites*)
- # Do configure ld/binutils/gas for the above cases.
+ hppa*-*-lites* | \
+ hppa*64*-*-*)
+ # Do configure ld/binutils/gas for this case.
;;
hppa*-*-*)
# HP's C compiler doesn't handle Emacs correctly (but on BSD and Mach
@@ -669,6 +703,10 @@ case "${target}" in
esac
noconfigdirs="$noconfigdirs ld shellutils"
;;
+ ia64*-*-elf*)
+ # No gdb support yet.
+ noconfigdirs="$noconfigdirs tix readline mmalloc libgui itcl gdb"
+ ;;
i[3456]86-*-coff | i[3456]86-*-elf)
if [ x${is_cross_compiler} != xno ] ; then
target_configdirs="${target_configdirs} target-libstub target-cygmon"
@@ -676,11 +714,11 @@ case "${target}" in
;;
i[3456]86-*-go32* | i[3456]-*-msdosdjgpp*)
# but don't build gdb
- noconfigdirs="$noconfigdirs gdb target-libg++ target-libstdc++ target-libio target-librx"
+ noconfigdirs="$noconfigdirs gdb ${libstdcxx_version} target-libffi"
;;
i[3456]86-*-mingw32*)
target_configdirs="$target_configdirs target-mingw"
- noconfigdirs="$noconfigdirs expect target-libgloss"
+ noconfigdirs="$noconfigdirs expect target-libgloss target-libffi"
# Can't build gdb for mingw32 if not native.
case "${host}" in
@@ -691,7 +729,7 @@ case "${target}" in
;;
*-*-cygwin*)
target_configdirs="$target_configdirs target-libtermcap target-winsup"
- noconfigdirs="$noconfigdirs target-libgloss"
+ noconfigdirs="$noconfigdirs target-gperf target-libgloss target-libffi"
# always build newlib.
skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
@@ -703,15 +741,15 @@ case "${target}" in
esac
;;
i[3456]86-*-pe)
- noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx target-libgloss"
+ noconfigdirs="$noconfigdirs ${libstdcxx_version} target-libgloss target-libffi"
;;
i[3456]86-*-sco3.2v5*)
# The linker does not yet know about weak symbols in COFF,
# and is not configured to handle mixed ELF and COFF.
- noconfigdirs="$noconfigdirs ld target-libgloss"
+ noconfigdirs="$noconfigdirs ld target-libgloss target-libffi"
;;
i[3456]86-*-sco*)
- noconfigdirs="$noconfigdirs gprof target-libgloss"
+ noconfigdirs="$noconfigdirs gprof target-libgloss target-libffi"
;;
i[3456]86-*-solaris2*)
noconfigdirs="$noconfigdirs target-libgloss"
@@ -723,12 +761,15 @@ case "${target}" in
*) ;;
esac
# but that's okay since emacs doesn't work anyway
- noconfigdirs="$noconfigdirs emacs emacs19 target-libgloss"
+ noconfigdirs="$noconfigdirs emacs emacs19 target-libgloss target-libffi"
;;
i[3456]86-*-beos*)
noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss"
;;
- m68k-*-elf*)
+ m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)
+ noconfigdirs="$noconfigdirs target-libiberty target-librx target-libg++ target-libstdc++ target-libio target-libf2c target-libchill target-zlib target-libobjc"
+ ;;
+ m68k-*-elf*)
if [ x${is_cross_compiler} != xno ] ; then
target_configdirs="${target_configdirs} target-bsp target-cygmon"
fi
@@ -739,13 +780,13 @@ case "${target}" in
fi
;;
mn10200-*-*)
- noconfigdirs="$noconfigdirs"
+ noconfigdirs="$noconfigdirs target-libffi"
if [ x${is_cross_compiler} != xno ] ; then
target_configdirs="${target_configdirs} target-libstub target-cygmon"
fi
;;
mn10300-*-*)
- noconfigdirs="$noconfigdirs"
+ noconfigdirs="$noconfigdirs target-libffi"
if [ x${is_cross_compiler} != xno ] ; then
target_configdirs="${target_configdirs} target-bsp target-libstub target-cygmon"
fi
@@ -756,18 +797,21 @@ case "${target}" in
# GNU ld is known to be broken for AIX 4.2 and 4.3 (at least)
# The symptom is that GDBtk 4.18 fails at startup with a segfault
# if linked by GNU ld, but not if linked by the native ld.
- noconfigdirs="$noconfigdirs gprof cvssrc target-libgloss ld"
+ noconfigdirs="$noconfigdirs gprof cvssrc target-libgloss target-libffi ld"
use_gnu_ld=no
;;
powerpc*-*-winnt* | powerpc*-*-pe* | ppc*-*-pe)
target_configdirs="$target_configdirs target-winsup"
- noconfigdirs="$noconfigdirs gdb tcl tk make expect target-libgloss itcl tix db snavigator gnuserv"
+ noconfigdirs="$noconfigdirs gdb tcl tk make expect target-libgloss itcl tix db snavigator gnuserv target-libffi"
# always build newlib.
skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
;;
# This is temporary until we can link against shared libraries
powerpcle-*-solaris*)
- noconfigdirs="$noconfigdirs gdb sim make tcl tk expect itcl tix db snavigator gnuserv"
+ noconfigdirs="$noconfigdirs gdb sim make tcl tk expect itcl tix db snavigator gnuserv target-libffi"
+ ;;
+ powerpc-*-beos*)
+ noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss"
;;
powerpc-*-eabi)
if [ x${is_cross_compiler} != xno ] ; then
@@ -776,22 +820,21 @@ case "${target}" in
;;
rs6000-*-lynxos*)
# The CVS server code doesn't work on the RS/6000
- # Newlib makes problems for libg++ in crosses.
- noconfigdirs="$noconfigdirs target-newlib gprof cvssrc"
+ noconfigdirs="$noconfigdirs target-newlib gprof cvssrc target-libffi"
;;
rs6000-*-aix*)
# The configure and build of ld are currently disabled because
# GNU ld is known to be broken for AIX 4.2 and 4.3 (at least)
# The symptom is that GDBtk 4.18 fails at startup with a segfault
# if linked by GNU ld, but not if linked by the native ld.
- noconfigdirs="$noconfigdirs gprof ld"
+ noconfigdirs="$noconfigdirs gprof target-libffi ld"
use_gnu_ld=no
;;
rs6000-*-*)
- noconfigdirs="$noconfigdirs gprof"
+ noconfigdirs="$noconfigdirs gprof target-libffi"
;;
m68k-apollo-*)
- noconfigdirs="$noconfigdirs ld binutils gprof target-libgloss"
+ noconfigdirs="$noconfigdirs ld binutils gprof target-libgloss target-libffi"
;;
mips*-*-irix5*)
# The GNU linker does not support shared libraries.
@@ -803,26 +846,21 @@ case "${target}" in
# emacs is emacs 18, which does not work on Irix 5 (emacs19 does work)
noconfigdirs="$noconfigdirs gas gprof emacs target-libgloss"
;;
- mips*-*-linux*)
- noconfigdirs="$noconfigdirs gprof"
- # linux has rx in libc
- skipdirs="$skipdirs target-librx"
- ;;
mips*-dec-bsd*)
- noconfigdirs="$noconfigdirs gprof target-libgloss"
+ noconfigdirs="$noconfigdirs gprof target-libgloss target-libffi"
;;
mips*-*-bsd*)
- noconfigdirs="$noconfigdirs gprof target-libgloss"
+ noconfigdirs="$noconfigdirs gprof target-libgloss target-libffi"
;;
mipstx39-*-*)
- noconfigdirs="$noconfigdirs gprof" # same as generic mips
+ noconfigdirs="$noconfigdirs gprof target-libffi" # same as generic mips
target_configdirs="${target_configdirs} target-bsp target-libstub target-cygmon"
;;
mips*-*-*)
- noconfigdirs="$noconfigdirs gprof"
+ noconfigdirs="$noconfigdirs gprof target-libffi"
;;
romp-*-*)
- noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss"
+ noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss target-libffi"
;;
sh-*-*)
case "${host}" in
@@ -831,7 +869,7 @@ case "${target}" in
i[3456]86-*-msdosdjgpp*) ;; # don't add gprof back in
*) skipdirs=`echo " ${skipdirs} " | sed -e 's/ gprof / /'` ;;
esac
- noconfigdirs="$noconfigdirs target-libgloss"
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
;;
sparc-*-elf*)
if [ x${is_cross_compiler} != xno ] ; then
@@ -842,11 +880,13 @@ case "${target}" in
if [ x${is_cross_compiler} != xno ] ; then
target_configdirs="${target_configdirs} target-libstub target-cygmon"
fi
+ noconfigdirs="target-libffi"
;;
sparclite-*-*)
if [ x${is_cross_compiler} != xno ] ; then
target_configdirs="${target_configdirs} target-bsp target-libstub target-cygmon"
fi
+ noconfigdirs="target-libffi"
;;
sparc-*-sunos4*)
if [ x${is_cross_compiler} != xno ] ; then
@@ -856,35 +896,31 @@ case "${target}" in
fi
;;
v810-*-*)
- noconfigdirs="$noconfigdirs bfd binutils gas gcc gdb ld target-libio target-libg++ target-libstdc++ opcodes target-libgloss"
+ noconfigdirs="$noconfigdirs bfd binutils gas gcc gdb ld ${libstdcxx_version} opcodes target-libgloss target-libffi"
;;
v850-*-*)
- noconfigdirs="$noconfigdirs target-libgloss"
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
;;
v850e-*-*)
- noconfigdirs="$noconfigdirs target-libgloss"
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
;;
v850ea-*-*)
- noconfigdirs="$noconfigdirs target-libgloss"
+ noconfigdirs="$noconfigdirs target-libgloss target-libffi"
;;
vax-*-vms)
- noconfigdirs="$noconfigdirs bfd binutils gdb ld target-newlib opcodes target-libgloss"
+ noconfigdirs="$noconfigdirs bfd binutils gdb ld target-newlib opcodes target-libgloss target-libffi"
;;
vax-*-*)
- noconfigdirs="$noconfigdirs target-newlib target-libgloss"
- ;;
- *-*-linux*)
- # linux has rx in libc
- skipdirs="$skipdirs target-librx"
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libffi"
;;
*-*-lynxos*)
- # Newlib makes problems for libg++ in crosses.
- noconfigdirs="$noconfigdirs target-newlib target-libgloss"
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libffi"
;;
*-*-macos* | \
*-*-mpw*)
# Macs want a resource compiler.
configdirs="$configdirs grez"
+ noconfigdirs="target-libffi"
;;
esac
@@ -907,6 +943,55 @@ if [ x$with_gnu_as = xno ]; then
noconfigdirs="$noconfigdirs gas"
fi
+# Figure out what language subdirectories are present.
+# Look if the user specified --enable-languages="..."; if not, use
+# the environment variable $LANGUAGES if defined. $LANGUAGES might
+# go away some day.
+if test x"${enable_languages+set}" != xset; then
+ if test x"${LANGUAGES+set}" = xset; then
+ enable_languages="`echo ${LANGUAGES} | tr ' ' ','`"
+ else
+ enable_languages=all
+ fi
+else
+ if test x"${enable_languages}" = x; then
+ echo configure.in: --enable-languages needs at least one argument 1>&2
+ exit 1
+ fi
+fi
+subdirs=
+for lang in ${srcdir}/gcc/*/config-lang.in ..
+do
+ case $lang in
+ ..) ;;
+ # The odd quoting in the next line works around
+ # an apparent bug in bash 1.12 on linux.
+ ${srcdir}/gcc/[*]/config-lang.in) ;;
+ *)
+ lang_alias=`sed -n -e 's,^language=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^language=\([^ ]*\).*$,\1,p' $lang`
+ this_lang_libs=`sed -n -e 's,^target_libs=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^target_libs=\([^ ]*\).*$,\1,p' $lang`
+ build_by_default=`sed -n -e 's,^build_by_default=['"'"'"'"]\(.*\)["'"'"'"'].*$,\1,p' -e 's,^build_by_default=\([^ ]*\).*$,\1,p' $lang`
+ if test "x$lang_alias" = x
+ then
+ echo "$lang doesn't set \$language." 1>&2
+ exit 1
+ fi
+ case ${build_by_default},${enable_languages}, in
+ *,$lang_alias,*) add_this_lang=yes ;;
+ no,*) add_this_lang=no ;;
+ *,all,*) add_this_lang=yes ;;
+ *) add_this_lang=no ;;
+ esac
+ if test x"${add_this_lang}" = xyes; then
+ eval target_libs='"$target_libs "'\"$this_lang_libs\"
+ else
+ eval noconfigdirs='"$noconfigdirs "'\"$this_lang_libs\"
+ fi
+ ;;
+ esac
+done
+
+
# Remove the entries in $skipdirs and $noconfigdirs from $configdirs and
# $target_configdirs.
# If we have the source for $noconfigdirs entries, add them to $notsupp.
@@ -1047,6 +1132,12 @@ if [ x${shared} = xyes ]; then
i[3456]86-*)
target_makefile_frag="${target_makefile_frag} config/mt-x86pic"
;;
+ ia64-*)
+ target_makefile_frag="${target_makefile_frag} config/mt-ia64pic"
+ ;;
+ powerpc*-*-aix*)
+ # We don't want -fPIC on AIX.
+ ;;
powerpc*-*)
target_makefile_frag="${target_makefile_frag} config/mt-ppcpic"
;;
@@ -1165,7 +1256,7 @@ fi
# provide a proper gxx_include_dir.
# Note, if you change the default, make sure to fix both here and in
-# the gcc, libio, libstdc++ and libg++ subdirectories.
+# the gcc, libio, and libstdc++ subdirectories.
# Check whether --with-gxx-include-dir or --without-gxx-include-dir was given.
gxx_include_dir=
if test -n "${with_gxx_include_dir}"; then
@@ -1192,9 +1283,113 @@ else
gxx_include_dir=${gxx_include_dir}
fi
-targargs="--host=${target_alias} --build=${build_alias} ${targargs}"
+FLAGS_FOR_TARGET=
+case " $skipdirs " in
+*" target-newlib "*) ;;
+*)
+ case "$target" in
+ *-cygwin*)
+ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/$(TARGET_SUBDIR)/winsup -L$$r/$(TARGET_SUBDIR)/winsup/cygwin -L$$r/$(TARGET_SUBDIR)/winsup/w32api/lib -isystem $$s/winsup/include -isystem $$s/winsup/cygwin/include -isystem $$s/winsup/w32api/include -isystem $$s/newlib/libc/sys/cygwin -isystem $$s/newlib/libc/sys/cygwin32' ;;
+ esac
+
+ # If we're not building GCC, don't discard standard headers.
+ if test -d ${topsrcdir}/gcc; then
+ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -nostdinc'
+
+ if test "${build}" != "${host}"; then
+ # On Canadian crosses, CC_FOR_TARGET will have already been set
+ # by `configure', so we won't have an opportunity to add -Bgcc/
+ # to it. This is right: we don't want to search that directory
+ # for binaries, but we want the header files in there, so add
+ # them explicitly.
+ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -isystem $$r/gcc/include'
+
+ # Someone might think of using the pre-installed headers on
+ # Canadian crosses, in case the installed compiler is not fully
+ # compatible with the compiler being built. In this case, it
+ # would be better to flag an error than risking having
+ # incompatible object files being constructed. We can't
+ # guarantee that an error will be flagged, but let's hope the
+ # compiler will do it, when presented with incompatible header
+ # files.
+ fi
+ fi
+
+ # If we're building newlib, use its generic headers last, but search
+ # for any libc-related directories first (so make it the last -B
+ # switch).
+ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$$r/$(TARGET_SUBDIR)/newlib/ -isystem $$r/$(TARGET_SUBDIR)/newlib/targ-include -isystem $$s/newlib/libc/include'
+ ;;
+esac
+
+# On Canadian crosses, we'll be searching the right directories for
+# the previously-installed cross compiler, so don't bother to add
+# flags for directories within the install tree of the compiler
+# being built; programs in there won't even run.
+if test "${build}" = "${host}" && test -d ${topsrcdir}/gcc; then
+ # Search for pre-installed headers if nothing else fits.
+ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include'
+fi
+
+if test "x${use_gnu_ld}" = x && test "x${with_gnu_ld}" != xno &&
+ echo " ${configdirs} " | grep " ld " > /dev/null &&
+ test -d ${srcdir}/ld; then
+ # Arrange for us to find uninstalled linker scripts.
+ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -L$$r/ld'
+fi
+
+if test "x${CC_FOR_TARGET+set}" = xset; then
+ :
+elif test -d ${topsrcdir}/gcc; then
+ CC_FOR_TARGET='$$r/gcc/xgcc -B$$r/gcc/'
+elif test "$host" = "$target"; then
+ CC_FOR_TARGET='$(CC)'
+else
+ CC_FOR_TARGET=`echo gcc | sed -e 's/x/x/' ${program_transform_name}`
+fi
+# On Canadian crosses, configure reads CC_FOR_TARGET from Makefile,
+# if Makefile exists. Prevent $(FLAGS_FOR_TARGET) from being duplicated.
+case $CC_FOR_TARGET in
+*' $(FLAGS_FOR_TARGET)') ;;
+*) CC_FOR_TARGET=$CC_FOR_TARGET' $(FLAGS_FOR_TARGET)' ;;
+esac
+
+if test "x${CHILL_FOR_TARGET+set}" = xset; then
+ :
+elif test -d ${topsrcdir}/gcc; then
+ CHILL_FOR_TARGET='$$r/gcc/xgcc -B$$r/gcc/ -L$$r/gcc/ch/runtime/'
+elif test "$host" = "$target"; then
+ CHILL_FOR_TARGET='$(CC)'
+else
+ CHILL_FOR_TARGET=`echo gcc | sed -e 's/x/x/' ${program_transform_name}`
+fi
+case $CHILL_FOR_TARGET in
+*' $(FLAGS_FOR_TARGET)') ;;
+*) CHILL_FOR_TARGET=$CHILL_FOR_TARGET' $(FLAGS_FOR_TARGET)' ;;
+esac
+
+if test "x${CXX_FOR_TARGET+set}" = xset; then
+ :
+elif test -d ${topsrcdir}/gcc; then
+ CXX_FOR_TARGET='$$r/gcc/g++ -B$$r/gcc/ -nostdinc++ '$libstdcxx_flags
+elif test "$host" = "$target"; then
+ CXX_FOR_TARGET='$(CXX)'
+else
+ CXX_FOR_TARGET=`echo c++ | sed -e 's/x/x/' ${program_transform_name}`
+fi
+case $CXX_FOR_TARGET in
+*' $(FLAGS_FOR_TARGET)') ;;
+*) CXX_FOR_TARGET=$CXX_FOR_TARGET' $(FLAGS_FOR_TARGET)' ;;
+esac
+qCXX_FOR_TARGET=`echo "$CXX_FOR_TARGET" | sed 's,&,\\\&,g'`
+
+targargs="--cache-file=../config.cache --host=${target_alias} --build=${build_alias} ${targargs}"
sed -e "s:^TARGET_CONFIGDIRS[ ]*=.*$:TARGET_CONFIGDIRS = ${target_configdirs}:" \
-e "s%^CONFIG_ARGUMENTS[ ]*=.*$%CONFIG_ARGUMENTS = ${targargs}%" \
+ -e "s%^FLAGS_FOR_TARGET[ ]*=.*$%FLAGS_FOR_TARGET = ${FLAGS_FOR_TARGET}%" \
+ -e "s%^CC_FOR_TARGET[ ]*=.*$%CC_FOR_TARGET = ${CC_FOR_TARGET}%" \
+ -e "s%^CHILL_FOR_TARGET[ ]*=.*$%CHILL_FOR_TARGET = ${CHILL_FOR_TARGET}%" \
+ -e "s%^CXX_FOR_TARGET[ ]*=.*$%CXX_FOR_TARGET = ${qCXX_FOR_TARGET}%" \
-e "s%^TARGET_SUBDIR[ ]*=.*$%TARGET_SUBDIR = ${target_subdir}%" \
-e "s%^gxx_include_dir[ ]*=.*$%gxx_include_dir=${gxx_include_dir}%" \
Makefile > Makefile.tem
diff --git a/contrib/binutils/gas/ChangeLog b/contrib/binutils/gas/ChangeLog
index ce918a5..7f6a629 100644
--- a/contrib/binutils/gas/ChangeLog
+++ b/contrib/binutils/gas/ChangeLog
@@ -1,5849 +1,4565 @@
-2000-11-02 Theo Honohan <th@futuretv.com>
-
- * config/tc-arm.c (do_msr): Improve error message.
+2001-04-02 Philip Blundell <philb@gnu.org>
-2000-11-01 Philip Blundell <philb@gnu.org>
-
- From 2000-08-01 Nick Clifton <nickc@cygnus.com>
- * config/tc-arm.c (do_mrs): Fix skip of 'cpsr_all' flag.
+ From 2001-03-17 Richard Henderson <rth@redhat.com>
+ * 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.
-2000-10-16 Philip Blundell <pb@futuretv.com>
+2001-03-31 Alan Modra <alan@linuxcare.com.au>
- * configure.in: Set version number to 2.10.1.
- * configure: Regenerate.
+ * 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.
-2000-10-14 Philip Blundell <philb@gnu.org>
+ * cond.c (s_endif): Correct handling of "if .. elseif .." trees.
+ Don't abort on NULL current_cframe.
- From 2000-06-17 Mark Elbrecht <snowball3@bigfoot.com>
+2001-03-30 Richard Henderson <rth@redhat.com>
- * config/obj-coff.c (obj_coff_weak): Typo fix: Change BFD_ASSEMLER
- to BFD_ASSEMBLER.
+ * write.c (relax_seg, size_seg): Split from relax_and_size_seg.
+ (write_object_file): Relax code then data, then size sections.
-2000-09-08 Philip Blundell <philb@gnu.org>
+ * config/tc-i386.c (md_convert_frag): Don't die on local symbols
+ that have been finalized.
- * config/tc-arm.c (md_apply_fix3): Correct handling of ADRL when
- offset is negative.
+2001-03-28 Alan Modra <alan@linuxcare.com.au>
-2000-08-30 Matthew Jacob <mjacob@feral.com>
+ * config/tc-hppa.c (DEFAULT_LEVEL): Define.
+ (md_begin): Use it when setting default architecture.
- * 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.
+2001-03-27 Hans-Peter Nilsson <hp@axis.com>
-2000-04-14 Matthew Green <mrg@cygnus.com>
-
- * configure.in: Add NetBSD/sparc ELF and NetBSD/sparc64 support.
+ * configure.in (cris-*-*): Change default emulation to criself.
+ (cris-*-*aout*): New rule.
* configure: Regenerate.
-2000-06-09 Nick Clifton <nickc@cygnus.com>
+2001-03-19 Alan Modra <alan@linuxcare.com.au>
- * config/tc-arm.c (cons_fix_new_arm): Assign correct reloc value
- for size 1 fixes.
+ * config/tc-i386.c (md_assemble <REGISTER_WARNINGS>): Correct
+ used register name.
-2000-06-01 Scott Bambrough <scottb@netwinder.org>
+2001-03-18 Stephane Carrez <Stephane.Carrez@worldnet.fr>
- * config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly.
+ * config/tc-m68hc11.c (md_pseudo_table): Recognize xrefb to comply
+ with 'Motorola specification for assembly language input standard'.
-2000-05-22 David O'Brien <obrien@FreeBSD.org>
+2001-03-18 Dave Brolley <brolley@redhat.com>
- * configure.in: Recognize alpha-*-freebsd*.
- * configure: Regenerate.
+ * config/tc-m32r.c (expand_debug_syms): Call frag_align_code rather
+ than m32r_do_align.
-2000-05-26 Scott Bambrough <scottb@netwinder.org>
+2001-03-16 Philip Blundell <philb@gnu.org>
- Port of patch to mainline by Nick Clifton <nickc@cygnus.com>:
- * 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.
-
- Port of patch to mainline by Nick Clifton <nickc@cygnus.com>:
- * testsuite/gas/arm/arch4t.s: Add tests of new fields
- to msr instruction.
-
- * NEWS: Mention change in behaviour when assembling msr
- instruction.
-
-2000-04-24 Nick Clifton <nickc@cygnus.com>
-
- * 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-05-29 Philip Blundell <philb@gnu.org>
-
- * doc/as.texinfo: Update copyright dates.
- (Local Labels): Delete misplaced mention of ARM.
- * NEWS: Mention ARM ELF support.
-
-Tue May 23 00:57:05 2000 Hans-Peter Nilsson <hp@axis.com>
-
- * configure.in (i386-*-freebsd a.out entry): Quote properly.
* configure: Regenerate.
-2000-05-23 Philip Blundell <pb@futuretv.com>
+2001-03-15 David Mosberger <davidm@hpl.hp.com>
- * configure.in: Set version to 2.10.
- * configure: Regenerate.
+ * 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.
-2000-05-23 Alan Modra <alan@linuxcare.com.au>
+2001-03-15 Jim Wilson <wilson@redhat.com>
- * 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.
+ * config/tc-ia64.c (ia64_unrecognized_line, case '['): Add local
+ label support.
- * frags.c (frag_new): Update fr_var comments.
- * frags.h (struct frag): Ditto.
+2001-03-11 Philip Blundell <philb@gnu.org>
- * 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.
+ * configure.in: Set version to 2.11.
-2000-05-14 David O'Brien <obrien@FreeBSD.org>
+2001-02-28 Andreas Jaeger <aj@suse.de>, Bo Thorsen <bo@suse.de>
- * config/te-freebsd.h: New file.
+ * 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.
- * doc/as.1: Fix unbalanced brackets.
+2001-02-21 David Mosberger <davidm@hpl.hp.com>
- * config/tc-i386.c (comment_chars): Don't use '/' as comment start if
- TE_FreeBSD.
- (line_comment_chars): Set to '/' if TE_FreeBSD.
+ * 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.
-1999-07-03 Joel Sherrill <joel@OARcorp.com>
+2001-02-21 David Mosberger <davidm@hpl.hp.com>
- * configure.in (*rtems except sh): Move RTEMS targets to elf.
- * configure: Regenerate.
+ * 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.
-2000-05-08 Alan Modra <alan@linuxcare.com.au>
+2001-02-20 Bo Thorsen <bo@suse.de>
- * as.h: #include "file", not <file> 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.
+ * config/tc-i386.c (tc_i386_fix_adjustable): Fix GOTPCREL GOT
+ entry.
-2000-05-08 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+001-02-18 David O'Brien <obrien@FreeBSD.org>
- * 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.
+ * 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-14 Philip Blundell <pb@futuretv.com>
+
+ From 2001-02-06 H.J. Lu <hjl@gnu.org>
+ * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Do fixup if
+ there is no relocation.
+
+ From 2001-02-06 H.J. Lu <hjl@gnu.org>
+ * 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-13 Alan Modra <alan@linuxcare.com.au>
+
+ * 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.
-2000-05-04 Alan Modra <alan@linuxcare.com.au>
+2001-02-12 Philip Blundell <pb@futuretv.com>
- * as.c (parse_args): Just mention current year in printed
- copyright message.
+ * config/tc-arm.c (do_ldst): Improve warnings for unpredictable
+ ldrt/strt instructions.
-2000-05-03 Ian Lance Taylor <ian@zembu.com>
+Mon Feb 12 17:44:08 CET 2001 Jan Hubicka <jh@suse.cz>
- * config/atof-ieee.c (gen_to_words): When adding carry back in,
- don't permit lp to become less than the words array.
+ * tc-i386.c (i386_displacement): Fix handling of
+ BFD_RELOC_X86_64_GOTPCREL.
+ (i386_validate_fix): Likewise.
-2000-05-03 David O'Brien <obrien@NUXI.com>
+2001-02-09 David Mosberger <davidm@hpl.hp.com>
- * as.c (parse_args): Update copyright.
+ * 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.
-2000-05-03 Mark Elbrecht <snowball3@bigfoot.com>
+ * 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.
- * gas/config/tc-i386.h (SUB_SEGMENT_ALIGN): If TE_GO32, return 4
- for the .bss section too.
+ * 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.
-2000-04-29 Andreas Jaeger <aj@suse.de>
+2001-02-09 Alexandre Oliva <aoliva@redhat.com>
- * as.h: Correctly check GCC version.
+ * config/tc-sh.c (md_pseudo_table): Add uaquad. Use s_uacons for
+ 2byte, 4byte and 8byte.
-2000-04-20 Alexandre Oliva <aoliva@cygnus.com>
+2001-02-08 Alan Modra <alan@linuxcare.com.au>
- * config/tc-mn10300.c (HAVE_AM30): Define.
- (md_assemble): Use it.
+ * config/tc-hppa.c (pa_build_unwind_subspace): Don't call
+ md_number_to_chars with size > sizeof (valueT).
-2000-04-19 Alan Modra <alan@linuxcare.com.au>
+2001-02-05 Jim Wilson <wilson@redhat.com>
- * 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.
+ * config/tc-ia64.c (errata_nop_necessary_p): Return 0 instead of
+ aborting for invalid operands.
-2000-04-19 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+2001-02-06 Alan Modra <alan@linuxcare.com.au>
- * Makefile.am (YACC, LEX): Get them from configure.
+ * 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.
- * as.h (SEEK_SET): Define if undefined.
+2001-02-04 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-2000-04-09 Nick Clifton <nickc@cygnus.com>
+ * 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 <Stephane.Carrez@worldnet.fr>
+
+ * 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 <velco@fadata.bg>
- * Makefile.am (CPU_TYPES): Add 'avr'.
- (TARGET_CPU_CFILES): Add 'tc-avr.c'.
- (TARGET_CPU_HFILES): Add 'tc-avr.h'.
+ * dwarf2dbg.c (out_debug_abbrev): Terminate the abbreviations
+ for the compilation unit with a zero byte.
+
+2001-01-30 Alan Modra <alan@linuxcare.com.au>
+
+ * 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 <nickc@redhat.com>
+
+ * 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 <kazu@hxi.com>
+
+ * as.c: Fix formatting.
+ * ehopt.c: Likewise.
+ * messages.c: Likewise.
+ * stabs.c: Likewise.
+ * symbols.c: Likewise.
-2000-04-05 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
+2001-01-23 Ben Elliston <bje@redhat.com>
- * config/tc-sparc.c (sparc_ip): Avoid string pasting.
+ * config/tc-m32r.c (m32r_handle_align): Declare type of fragp.
-2000-04-04 Alan Modra <alan@linuxcare.com.au>
+2001-01-22 Kazu Hirata <kazu@hxi.com>
- * po/gas.pot: Regenerate.
+ * config/tc-alpha.c: Fix formatting.
- * as.c (show_usage): Restore translated part of bug string.
- * gasp.c (show_usage): Likewise.
+2001-01-19 Kazu Hirata <kazu@hxi.com>
- * 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.
+ * config/tc-alpha.c: Fix formatting.
-2000-04-04 Alexandre Oliva <aoliva@cygnus.com>
+2001-01-18 Kazu Hirata <kazu@hxi.com>
- * 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.
+ * config/tc-alpha.c: Fix formatting.
-2000-04-03 Alan Modra <alan@linuxcare.com.au>
+2001-01-18 Nick Clifton <nickc@redhat.com>
- * 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-arm.c (ldm_flags): Remove redundant bit from "fa" and
+ "da" flags.
+ (stm_flags): Remove redundant bit from "ed" and "da" flags.
- * config/tc-sparc.c (md_show_usage): Add a trailing newline.
+2001-01-18 Alexandre Oliva <aoliva@redhat.com>
-2000-04-03 Alan Modra <alan@linuxcare.com.au>
+ * configure.in (cpu_type, arch): Match i386 too.
+ * configure: Rebuilt.
- * 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.
+2001-01-16 Kazu Hirata <kazu@hxi.com>
-2000-04-02 Richard Henderson <rth@cygnus.com>
+ * config/tc-i386.c: Fix formatting.
- * 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.
+2001-01-16 Alan Modra <alan@linuxcare.com.au>
-2000-04-01 Ian Lance Taylor <ian@zembu.com>
+ * config/tc-hppa.c (tc_gen_reloc): Use SEGREL32 instead of DIR32
+ relocs for .PARISC.unwind section.
- * 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.
+ * config/tc-hppa.c (pa_build_unwind_subspace): Build unwind
+ depending on section flags, not just for .text.
-2000-03-31 Nick Clifton <nickc@cygnus.com>
+2001-01-15 Jim Wilson <wilson@redhat.com>
- * config/tc-d10v.h (md_flush_pending_output): Define.
+ * config/tc-ia64.c (ia64_flush_insns): Handle unwind directives
+ not immediately followed by an instruction.
-2000-03-29 Nick Clifton <nickc@cygnus.com>
-
- * 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 <nickc@cygnus.com
+2001-01-15 Kazu Hirata <kazu@hxi.com>
- * config/tc-arm.c (tinsns): Add "bal" instruction pattern.
+ * config/tc-m68hc11.c: Fix formatting.
-2000-03-28 Alan Modra <alan@linuxcare.com.au>
+2001-01-15 Nick Clifton <nickc@redhat.com>
- * listing.c (LISTING_LHS_WIDTH): Default depends on
- LISTING_WORD_SIZE.
- (LISTING_LHS_WIDTH_SECOND): Default to LISTING_LHS_WIDTH.
+ * 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.
-2000-03-27 Ian Lance Taylor <ian@zembu.com>
+ * message.c (as_fatal): Delete output file, if one has been
+ created.
- * config/tc-sh.c (md_show_usage): Use backslash before newline in
- string literal.
+2001-01-14 Alan Modra <alan@linuxcare.com.au>
-2000-03-27 Alan Modra <alan@linuxcare.com.au>
+ * config/tc-hppa.h (TARGET_FORMAT): Add hppa-linux variants.
- * config/tc-avr.h (TC_HANDLES_FX_DONE): Define.
+2001-01-14 Kazu Hirata <kazu@hxi.com>
- * 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.
+ * 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.
-2000-03-27 Denis Chertykov <denisc@overta.ru>
+ * config/tc-arc.c: Fix formatting.
- * config/tc-avr.c: New file for AVR support.
- * config/tc-avr.h: Likewise.
- * configure.in: Add AVR support.
- * configure: Regenerate.
+ * config/tc-arc.c: Fix formatting.
-2000-03-26 Timothy Wall <twall@cygnus.com>
+2001-01-14 Alan Modra <alan@linuxcare.com.au>
- * 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 <alan@linuxcare.com.au>
+ * config/tc-hppa.c (pa_build_unwind_subspace): Use SEGREL32 for
+ both 32 and 64 bit ELF.
- * config/tc-i386.c: Don't start any as_bad or as_warn message with
- an initial capital letter.
- (i386_index_check): Reindent.
+ * 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.
-2000-03-19 Nick Clifton <nickc@cygnus.com>
+Sun Jan 14 00:36:42 MET 2001 Jan Hubicka <jh@suse.cz>
- * config/tc-arm.c (md_apply_fix3): Fix bug detectng overflow of pc
- relative branches.
+ * tc-i386.h (TARGET_MACH): New macro.
+ (i386_mach): Declare.
+ * tc-i386.c (i386_mach): New function.
-2000-03-17 Thomas de Lellis <tdel@windriver.com>
+2001-01-13 Philip Blundell <philb@gnu.org>
- * 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 <nickc@cygnus.com>
+ * doc/as.texinfo: Fix spelling and cross-references.
- * config/tc-arm.c (md_apply_fix3): Handle same-section relocations
- that have a destingation >= 0x400000.
- Fix compile time warning messages.
+ * 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.
-Thu Mar 16 23:45:16 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+Sat Jan 13 01:47:35 MET 2001 Jan Hubicka <jh@suse.cz>
- * 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.
+ * config/tc-i386.c (md_assemble): Check cpu_flags even for nullary
+ instructions.
-Thu Mar 16 21:18:13 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+2001-01-12 Frank Ch. Eigler <fche@redhat.com>
- * 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.
+ * cgen.c (gas_cgen_finish_insn): Call dwarf2_emit_insn.
-Thu Mar 16 20:58:10 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+2001-01-12 Nick Clifton <nickc@redhat.com>
- * config/tc-sh.c (md_show_usage): Add description of -dsp.
+ * as.c (print_args): Update copyright date to 2001.
-2000-03-15 Jonathan Larmour <jlarmour@redhat.co.uk>
+2001-01-12 Peter Targett <peter.targett@arccores.com>
- * config/tc-sh.c (parse_reg): Match r[0..7]_bank operands before
- normal operands.
+ * doc/c-arc.texi: New file.
+ Some sections to be expanded.
-2000-03-15 Kazu Hirata <kazu@hxi.com>
+2001-01-12 Alan Modra <alan@linuxcare.com.au>
- * config/tc-h8300.c: Add ATTRIBUTE_UNUSED as appropriate.
+ * config/tc-i386.c (md_longopts): Recognize "--64" only for ELF.
+ (md_parse_option): Always accept "--32".
-Mon Mar 13 22:02:59 2000 Hans-Peter Nilsson <hp@axis.se>
+2001-01-11 Peter Targett <peter.targett@arccores.com>
- * expr.c (operand) [case 'f']: When testing if '0f' can start a
- floating-point-number, make sure 'f' is in FLT_CHARS.
+ * 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.
-Sat Mar 11 00:01:39 2000 Hans-Peter Nilsson <hp@axis.se>
+ * 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.
- * 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.
+ * 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.
-2000-03-10 Geoffrey Keating <geoffk@cygnus.com>
+ * 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.
- * config/tc-mips.c (mips_ip): Don't put stuff in .rodata
- when embedded-pic.
+2001-01-11 Stephane Carrez <Stephane.Carrez@worldnet.fr>
- * 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.
+ * 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.
-2000-03-09 Catherine Moore <clm@cygnus.com>
-
- * config/tc-m32r.c (m32r_fix_adjustable): Look up the
- relocation type based on the entry in the fixup structure.
+2001-01-11 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-2000-03-08 H.J. Lu (hjl@gnu.org)
+ * config/tc-m68hc11.c (md_estimate_size_before_relax):Don't
+ relax weak symbols.
+ (relaxable_symbol): New function.
- * Makefile.am (install-exec-tooldir): Depend on
- install-exec-bindir for parallel make.
- * Makefile.in: Regenerated.
+2001-01-11 Andreas Jaeger <aj@suse.de>
-2000-03-06 Nick Clifton <nickc@cygnus.com>
+ * config/tc-i386.h (TC_RELOC_GLOBAL_OFFSET_TABLE): Removed, it's
+ not used anywhere.
- * 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.
+2001-01-10 Nick Clifton <nickc@redhat.com>
- * doc/Makefile.am (CPU_DOCS): Add c-m32r.texi.
- * doc/Makefile.in: Regenerate.
- * doc/c-m32r.texi (M32R-Opts): Document new command line switch.
+ * config/tc-arm.c (arm_fix_adjustable): Define for OBJ_COFF.
+ * config/tc-arm.h (obj_fix_adjustable): Define for OBJ_COFF
-2000-03-02 Michael Meissner <meissner@redhat.com>
+2001-01-10 Nick Clifton <nickc@redhat.com>
- * config/tc-d30v.c (check_range): Remove code that incorrectly
- sign extended values where bits < 32.
+ * 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.
-2000-03-02 H.J. Lu (hjl@gnu.org)
+2001-01-08 Bo Thorsen <bo@suse.de>
- * configure.in: Support --enable-targets=all on ia32.
- * configure: Regenerated.
+ * config/tc-i386.c (i386_immediate, i386_displacement):
+ GOTPCREL check fix.
-2000-03-01 Nick Clifton <nickc@cygnus.com>
+2001-01-07 Ian Lance Taylor <ian@zembu.com>
- * gasp.c (do_align): Remove bogus check of alignment value.
+ * doc/c-i386.texi (i386-Arch): Remove spaces incorrectly inserted
+ in last change.
-2000-02-27 Thomas de Lellis <tdel@windriver.com>
+2001-01-07 Philip Blundell <philb@gnu.org>
- * 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.
+ * doc/as.texinfo (Bug Reporting): Update email address for
+ reports.
+ * README: Likewise.
-2000-02-27 Hans-Peter Nilsson <hp@axis.com>
+Sat Jan 6 13:33:10 MET 2001 Jan Hubicka <jh@suse.cz>
- * 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.
+ * configure.in: Define DEFAULT_ARCH for i386.
+ * tc-i386.c (md_assemble): Return after the error message;
+ move testing for 64bit operands to proper place.
-2000-02-27 Jakub Jelinek <jakub@redhat.com>
+2001-01-06 Jan Hubicka <jh@suse.cz>, Andreas Jaeger <aj@suse.de>
- * config/tc-sparc.c (OPTION_UNDECLARED_REGS): New option.
- (md_parse_option): Handle it.
- (md_show_usage): Document it.
+ * doc/as.texinfo: Document '#' as comment character for i386 and
+ x86_64. Add AMD x86-64 into menu of machine dependent information.
-2000-02-27 Ian Lance Taylor <ian@zembu.com>
+ * doc/c-i386.texi: Document x86_64 extensions.
- * config/tc-alpha.c (md_assemble): Accept `1' and `9' in an
- opcode, for the instruction `pal19'. From Andrea Arcangeli
- <andrea@suse.de>.
+Fri Jan 5 13:26:42 MET 2001 Jan Hubicka <jh@suse.cz>
-2000-02-26 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * tc-i386.c (md_assemble): Handle third byte of the opcode as prefix.
- * 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 <aj@suse.de>
-
- * doc/c-mips.texi (MIPS Opts): Fix typo in last patch.
+Thu Jan 4 22:25:26 MET 2001 Jan Hubicka <jh@suse.cz>
-2000-02-25 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * tc-i386.c (cpu_arch): Add Pentium4 and modify sledgehammer entry.
+ * NEWS: Add note about Pentium4 support.
- * 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.
+Wed Jan 3 17:26:32 MET 2001 Jan Hubicka <jh@suse.cz>
-2000-02-24 Nick Clifton <nickc@cygnus.com>
+ * tc-i387.c (pi, pte, pt): Update.
+ (type_names): Add new types.
- * 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.
+Wed Jan 3 16:26:52 MET 2001 Jan Hubicka <jh@suse.cz>
- * 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.
+ * tc-i386.h (CpuK6, CpuAthlon, CpuSledgehammer, CpuMMX, Cpu3dnow,
+ CpuUnknown): Renumber
+ (CpuP4, CpuSSE2): New.
+ (CpuUnknownFlags): Add CpuP4 and CpuSSE2
- * 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.
+2001-01-03 Philip Blundell <pb@futuretv.com>
- * 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/tc-alpha.c (alpha_force_relocation): Handle vtable
+ relocs.
+ (alpha_fix_adjustable): Likewise.
+ (md_apply_fix): Likewise.
- * config/te-wince-pe.h: New file for WinCE targets. Define
- TE_WINCE.
+2000-12-31 H.J. Lu <hjl@gnu.org>
-2000-02-25 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * listing.c (listing_message): Allocate string only if it is
+ used.
- * 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.
+ * configure: Rebuild.
-2000-02-24 Catherine Moore <clm@cygnus.com>
+2000-12-31 Hans-Peter Nilsson <hp@bitrange.com>
- * config/obj-som.c (obj_pseudo_table): Add "weak".
- (obj_som_weak): New routine.
+ * doc/internals.texi (Relaxing with a table) <after relaxation>:
+ Point out caveats with generating fixups for the opcode in a frag.
-2000-02-24 Alan Modra <alan@spri.levels.unisa.edu.au>
+Sat Dec 30 19:02:48 MET 2000 Jan Hubicka <jh@suse.cz>
- * 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.
+ * configure.in: Add support for x86_64 and x86_64-*-linux-gnu*
+ * NEWS: Add x86_64.
- * config/tc-i386.h (TC_RELOC): Delete.
- * config/tc-i386.c (TC_RELOC): Delete. Replace usage of TC_RELOC
- with equivalent call to reloc.
+2000-12-29 H.J. Lu <hjl@gnu.org>
- * 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.
+ * listing.c (calc_hex): Print the variable part only if the
+ fragment type is rs_fill.
- * NEWS: Mention IBM 370 support.
+2000-12-29 Hans-Peter Nilsson <hp@bitrange.com>
-2000-02-23 Richard Henderson <rth@cygnus.com>
+ * doc/internals.texi (tc_conditional_pseudoop,
+ TC_LINKRELAX_FIXUP): Fix typos.
- * config/tc-i386.c (md_assemble): When swapping operands for
- intel_syntax, assume everything that's not Imm or Disp is a
- register.
+2000-12-28 Richard Henderson <rth@redhat.com>
-2000-02-23 Linas Vepstas <linas@linas.org>
+ * write.c (subsegs_finish): Fix thinko last change -- don't
+ "optimize" the alignment == 0 case.
- * 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.
+2000-12-28 Richard Henderson <rth@redhat.com>
- * Makefile.in: Regenerate.
- * configure: Regenerate.
+ * 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 <dj@redhat.com>
+
+ * 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 <hjl@gnu.org>
+
+ * 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 <hjl@gnu.org>
+
+ * dwarf2dbg.c (dwarf2_finish): Remove #if BFD_ASSEMBLER.
+
+Wed Dec 20 14:21:22 MET 2000 Jan Hubicka <jh@suse.cz>
+
+ * 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.
+ * 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.
- * 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-12-15 Diego Novillo <dnovillo@redhat.com>
-2000-02-19 Michael Meissner <meissner@redhat.com>
+ * 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.
- * 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-12-14 Michael Sokolov <msokolov@ivan.Harhan.ORG>
-2000-02-22 Andrew Haley <aph@cygnus.com>
+ * dwarf2dbg.c: If we don't have <limits.h>, try including <sys/param.h>
+ if we have it.
- * doc/c-mips.texi (MIPS Opts): Document -mgp32 and -mgp64.
+2000-12-13 Kazu Hirata <kazu@hxi.com>
-1999-12-30 Andrew Haley <aph@cygnus.com>
+ * as.h: Fix formatting.
+ * cgen.h: Likewise.
+ * dwarf2dbg.c: Likewise.
+ * input-scrub.c: Likewise.
+ * read.h: Likewise.
- * 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.
-
-2000-02-22 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
+2000-12-13 Mark Elbrecht <snowball3@bigfoot.com>
- * config/obj-coff.c (add_lineno): Accept non-positive lineno with
- warning, and bump it to 1.
+ * configure.in (i386-*-msdosdjgpp): Set bfd_gas to yes.
+ configure: Regenerate.
-2000-02-22 Ian Lance Taylor <ian@zembu.com>
+2000-12-13 Michael Sokolov <msokolov@ivan.Harhan.ORG>
- From Brad Lucier <lucier@math.purdue.edu>:
- * dwarf2dbg.c (print_stats): Add cast to force printf argument to
- match format.
+ * dwarf2dbg.c: #include <limits.h> only if it exists.
-2000-02-21 Catherine Moore <clm@cygnus.com>
+2000-12-13 Rodney Brown <RodneyBrown@mynd.com>
- * 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.
+ * config/tc-hppa.c (pa_ip): Correct CHECK_FIELD typo.
+ (md_apply_fix): Here too.
-2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-12-12 Jim Wilson <wilson@redhat.com>
- * listing.c (print_lines): Remove unused variable `end'.
+ * config/tc-ia64.h (ia64_init): Add prototype.
- * 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-12-12 H.J. Lu <hjl@gnu.org>
-2000-02-18 Nick Clifton <nickc@cygnus.com>
+ * dwarf2dbg.c: Enabled only if BFD_ASSEMBLER is defined.
- * config/tc-d10v.c (find_opcode): Add a symbol's value to
- the computed frag offset, rather than overwriting it.
+ * read.h (outputting_stabs_line_debug): Change it to int.
+ * stabs.c (outputting_stabs_line_debug): Likewise.
-Thu Feb 17 00:11:08 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+2000-12-12 Geoffrey Keating <geoffk@redhat.com>
- * 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.
+ * config/obj-bout.c (obj_crawl_symbol_chain): Don't take
+ the address of a function result.
-Fri Feb 11 14:21:51 2000 Jeffrey A Law (law@cygnus.com)
+2000-12-12 Franz Sirl <Franz.Sirl-kernel@lauterbach.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.
+ * 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-02-10 Nick Clifton <nickc@cygnus.com>
+2000-12-12 Nick Clifton <nickc@redhat.com>
- * 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.
+ * 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-02-10 Timothy Wall <twall@redhat.com>
+Mon Dec 11 14:35:42 MET 2000 Jan hubicka <jh@suse.cz>
- * 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.
+ * 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.
+ * tc-i386.h (DWORD_MNEM_SUFFIX): Kill.
+ (No_dSuf): Kill.
-2000-02-10 Timothy Wall <twall@redhat.com>
+ * 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.
- * 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-12-06 Mark Elbrecht <snowball3@bigfoot.com>
-2000-02-08 Timothy Wall <twall@redhat.com>
+ * config/tc-i386.c (T_SHORT): Undefine before defining.
- * 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 <twall@redhat.com>
+2000-12-05 Kazu Hirata <kazu@hxi.com>
- * 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 <twall@redhat.com>
+ * config/tc-mips.c: Fix formatting.
- * 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 <twall@redhat.com>
+2000-12-04 Matthew Hiller <hiller@redhat.com>
- * listing.c (print_lines): Remove conditionals causing bug in
- listings.
+ * 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.
-2000-02-03 Timothy Wall <twall@cygnus.com>
-
- * 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 <twall@cygnus.com>
-
- * 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 <nickc@cygnus.com>
- * config/tc-arm.c (reg_table): Add support for ATPCS register
- naming conventions.
+ * doc/c-d10v.texi: Documents new options.
-2000-01-31 Geoff Keating <geoffk@cygnus.com>
-
- * 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 <cchavva@cygnus.com>
+2000-12-04 Matthew Hiller <hiller@redhat.com>
- * 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 <tdel@windriver.com>
-
- * 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.
+ * 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.
-2000-01-27 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * read.h (outputting_stabs_line_debug): New extern declaration.
- * Makefile.am (MULTI_CFILES): Add config/e-i386aout.c
- Add dependencies for e-i386aout.o. Fix 2 comment lines.
+ * as.c: Include dwarf2dbg.h for definition of dwarf2_finish.
- * Makefile.in: Same here.
- Update copyright.
+ * dwarf2dbg.c: Fix compile time warning messages.
- * 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.
+2000-12-03 Kazu Hirata <kazu@hxi.com>
+ * 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 <cgd@sibyte.com>
+
+ * 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".
+
+ * 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 <joel@OARcorp.com>
+
+ * 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.
- * 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.
+2000-11-30 Philip Blundell <pb@futuretv.com>
- * symbols.c (colon): Rewrite "already defined" fatal message
- code for aout with USE_EMULATIONS.
- Update copyright.
+ * config/obj-coff.c (obj_coff_weak): Use S_SET_WEAK if it exists,
+ even in non BFD_ASSEMBLER case.
- * 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.
+2000-11-30 Diego Novillo <dnovillo@redhat.com>
- * 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.
+ * tc-i386.c (md_assemble): Swap i.disp_relocs when using intel
+ syntax.
- * 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.
+2000-11-29 Richard Henderson <rth@redhat.com>
- * config/obj-coff.h (obj_pop_insert): Define.
- (coff_pseudo_table): Declare.
- Update copyright.
+ * 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.
- * config/obj-ecoff.c (ecoff_format_ops): Add 0 entries for
- s_get_size, s_set_size. Comment all zero entries.
- Update copyright.
+ * 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.
- * 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.
+2000-11-28 Hans-Peter Nilsson <hp@bitrange.com>
- * 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/tc-sh.c (md_convert_frag) <undefined symbol, conditional
+ jump>: Use as_bad_where instead of as_bad. Tweak error message
+ accordingly. Stabilize frag by updating fix part and resetting
+ variant part.
+ <undefined symbol, unconditional jump>: 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.
- * 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.
+2000-11-28 Kazu Hirata <kazu@hxi.com>
- * 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/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.
- * config/tc-i386.h (AOUT_TARGET_FORMAT): Define for each TE_*.
- Define TARGET_FORMAT for aout only when not multi.
- Update copyright.
+2000-11-28 Nick Clifton <nickc@redhat.com>
- * config/te-multi.h: Delete file as it's identical to te-generic.h
+ * 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-01-15 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-11-28 Hans-Peter Nilsson <hp@axis.com>
- * config/tc-i386.h (DWORD_MNEM_SUFFIX): Delete.
- * config/tc-i386.c (DWORD_MNEM_SUFFIX): Rename all occurrences to
- LONG_MNEM_SUFFIX.
+ * 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-i386.h (INTEL_DWORD_MNEM_SUFFIX): Rename to
- DWORD_MNEM_SUFFIX.
- * config/tc-i386.c (INTEL_DWORD_MNEM_SUFFIX): Here too. Fix some
- comments.
+ * 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-01-13 Clinton Popetz <cpopetz@cygnus.com>
+2000-11-28 Alan Modra <alan@linuxcare.com.au>
- * config/tc-mips.c (mips_do_align): New function.
- * config/tc-mips.h (md_do_align): Define.
+ * expr.c (STANDARD_MUL_PRECEDENCE): Correct value.
+ (MRI_MUL_PRECEDENCE): Likewise.
+ (op_rank): Fix a comment typo.
-2000-01-10 Philip Blundell <philb@gnu.org>
+2000-11-26 Stephane Carrez <Stephane.Carrez@worldnet.fr>
- * 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.
+ * config/tc-m68hc11.c (build_indexed_byte): Print the offset in
+ the error message.
+ (get_operand): Fix analysis for movw/movb instructions.
-2000-01-10 Philip Blundell <pb@futuretv.com>
+2000-11-24 Nick Clifton <nickc@redhat.com>
- * configure.in (arm*-*-conix*): New target.
- (arm*-*-linux-gnu*): Match instead of arm-*-linux* and
- armv*-*-linux-gnu.
+ * configure.in (xscale-elf): Add target.
+ (xscale-coff): Add target.
* configure: Regenerate.
-2000-01-03 Martin v. Loewis <loewis@informatik.hu-berlin.de>
-
- * 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.
-
-1999-12-27 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * 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 <pb@futuretv.com>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <meissner@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <alan@spri.levels.unisa.edu.au>
-
- * 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 <dlindsay@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * macro.c (buffer_and_nest): Do not check beyond the end of the
- buffer.
-
-1999-11-11 Nick Clifton <nickc@cygnus.com>
-
- * macro.c (buffer_and_nest): Look for seperator after TO and
- FROM tokens.
-
-1999-11-08 Andrew Haley <aph@cygnus.com>
-
- * 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 <rth@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <meissner@cygnus.com>
-
- * expr.h (operatorT): Increase machine dependent operators to 16.
- * expr.c (op_rank): Ditto.
-
-1999-11-03 Ian Lance Taylor <ian@zembu.com>
-
- * 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 <nickc@cygnus.com>
-
- * config/tc-mcore.h (TARGET_BYTES_BIG_ENDIAN): Change to false.
-
-1999-11-01 Gavin Romig-Koch <gavin@cygnus.com>
-
- * 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 <dlindsay@cygnus.com>
-
- * 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 <scottb@netwinder.org>
-
- * 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 <dnovillo@cygnus.com>
-
- * tc_d10v.c (find_opcode): Allow ATSIGN to match expressions of the
- form @abs16, @(abs16) and @(abs16 + imm).
-
-1999-10-21 Gavin Romig-Koch <gavin@cygnus.com>
-
- * 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 <meissner@cygnus.com>
-
- * 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-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 <wilson@redhat.com>
+
+ * 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 <wilson@redhat.com>
+
+ * 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 <jakub@redhat.com>
+
+ * 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 <rth@redhat.com>
+
+ * 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 <nickc@redhat.com>
+
+ * config/tc-arm.c (md_pseudo_table): Add support for .line and
+ .file pseudo ops.
+
+2000-11-17 Richard Henderson <rth@redhat.com>
+
+ * config/tc-i386.c (md_pseudo_table): Add .file and .loc.
+
+2000-11-17 Richard Henderson <rth@redhat.com>
+
+ * 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 <rth@redhat.com>
+
+ * config/tc-i386.c (md_assemble): Call dwarf2_emit_insn.
+
+2000-11-17 Richard Henderson <rth@redhat.com>
+
+ * 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-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.
+ * 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.
-Sun Oct 17 17:15:58 1999 Jeffrey A Law (law@cygnus.com)
+ * 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-hppa.c (md_apply_fix): Make "fmt" an int.
+ * 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.
-1999-10-12 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-11-16 Jim Wilson <wilson@redhat.com>
- * config/tc-i386.c (i386_index_check): Correct #endif location.
+ * 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.
-Mon Oct 11 14:02:40 1999 Geoffrey Keating <geoffk@cygnus.com>
+2000-11-16 H.J. Lu <hjl@gnu.org>
- * 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.
+ * config/obj-elf.c (obj_elf_symver): Don't check the missing
+ version name.
-Sun Oct 10 01:47:23 1999 Jerry Quinn <jerry.quinn.adv91@alum.dartmouth.org>
+2000-11-15 Kazu Hirata <kazu@hxi.com>
- * 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.
-
- * configtc-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 <dnovillo@cygnus.com>
-
- * 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 <dnovillo@cygnus.com>
-
- * config/tc-d10v.c (check_range): Check range for RESTRICTED_NUM3
- operands.
-
-Mon Oct 4 17:24:23 1999 Nick Clifton <nickc@cygnus.com>
- Doug Evans <devans@cygnus.com>
+ * 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.
- 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.
+2000-11-14 DJ Delorie <dj@redhat.com>
-Tue Sep 28 14:06:44 1999 Geoffrey Keating <geoffk@cygnus.com>
+ * config/tc-v850.c: Support dwarf2.
+ * config/tc-v850.h: Ditto.
- * 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++.
+ * config/tc-v850.c (cons_fix_new_v850): Don't rely on
+ parse_cons_expression_v850 to initialize hold_cons_reloc.
-Thu Sep 23 07:13:45 1999 Jerry Quinn <jquinn@nortelnetworks.com>
+2000-11-15 Bernd Schmidt <bernds@redhat.com>
- * config/tc-hppa.c (pa_ip): Replace 'B', 'M', 'l' and 'g' handling
- with cleaner code using completer prefixes. Add 'Y'.
+ * 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.
- * config/tc-hppa.c (pa_ip): Add parens to silence compiler.
+2000-11-14 Jim Wilson <wilson@redhat.com>
-Wed Sep 22 09:37:19 1999 Jeffrey A Law (law@cygnus.com)
+ * config/tc-ia64.c (ia64_target_format): If EF_IA_64_BE not set, then
+ return little endian bfd formats.
- * 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.
+2000-11-14 Kazu Hirata <kazu@hxi.com>
-1999-09-22 Nick Clifton <nickc@cygnus.com>
+ * 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.
- * config/tc-arm.c (MULTI_SET_PSR): Rename to LDM_TYPE_2_OR_3.
+2000-11-14 Jakub Jelinek <jakub@redhat.com>
-Mon Sep 20 04:01:41 1999 Jeffrey A Law (law@cygnus.com)
+ * config/tc-alpha.c (s_alpha_prologue): Preserve visibility bits.
- * config/tc-hppa.c (pa_ip): Fix thinkos in recent cleanup
- of PA2.0 support.
+2000-11-13 H.J. Lu <hjl@gnu.org>
-1999-09-19 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
+ * config/obj-elf.c (elf_frob_symbol): Support
+ ".symver name,name2@@@nodename".
+ (elf_frob_file_before_adjust): Likewise.
- * 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.
+ * doc/as.texinfo: Updated for ".symver name,name2@@@nodename"
+ and ".symver name,name2@@@nodename".
+ Fix a typo.
-Sun Sep 19 10:43:31 1999 Jeffrey A Law (law@cygnus.com)
+2000-11-12 H.J. Lu (hjl@gnu.org)
- * config/tc-hppa.c (pa_ip): Handle 'J', 'K' and 'cc'
- operands.
+ * config/obj-elf.c (obj_elf_symver): Check missing version
+ name.
- * config/tc-hppa.c (pa_ip); Handle "fe", and 'cJ'.
+2000-11-12 H.J. Lu (hjl@gnu.org)
- * config/tc-hppa.c (pa_ip): Handle 'd', '#' and 'cq'.
+ * dwarf2dbg.c (dwarf2_generate_asm_lineno): Use addressT
+ instead of bfd_vma for non-bfd assemblers.
- * config/tc-hppa.c (struct pa_it): New field "trunc".
- (pa_ip): Hadnle 'h', 'm', '=', '{', and '_' operands.
- (pa_parse_ftest_gfx_completer): New function
- (pa_parse_fp_cnv_format): New function.
+2000-11-09 Kazu Hirata <kazu@hxi.com>
- * config/tc-hppa.c (pa_ip): Handle 'X' operand.
- (md_apply_fix): Handle 22bit pc-rel branches.
+ * itbl-ops.c: Fix comment typos.
- * config/tc-hppa.c (pa_ip): Handle 'B' operand.
+2000-11-08 Jim Wilson <wilson@redhat.com>
- * config/tc-hppa.c (pa_ip): Handle 'L' and 'M' operands.
+ * 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.
- * config/tc-hppa.c (pa_ip): Handle 'l' operand.
+2000-11-07 H.J. Lu <hjl@gnu.org>
- * config/tc-hppa.c (pa_ip): Handle 'g' operand.
+ * doc/as.texinfo (.symver): Updated for versioned symbol
+ reference.
-at Sep 18 12:13:28 1999 Jeffrey A Law (law@cygnus.com)
+ * obj.h (format_ops): Add the frob_file_before_adjust field.
- * config/tc-hppa.c (md_assemble): Fix dwarf2 line handling.
- (pa_ip): Handle 'fX'.
+ * 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.
-Sat Sep 18 12:13:28 1999 Jeffrey A Law (law@cygnus.com)
+ * 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/tc-hppa.c (md_assemble): Fix dwarf2 line handling.
- (pa_ip): Handle 'fX'.
+ * config/obj-elf.h (obj_frob_file_before_adjust): Defined if
+ not defined.
-Fri Sep 17 11:57:34 1999 Jeffrey A Law (law@cygnus.com)
+ * config/obj-multi.h (obj_frob_file_before_adjust): Defined.
- * 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.
+2000-11-07 Peter Targett <peter.targett@arccores.com>
-Wed Sep 15 05:14:32 1999 Jeffrey A Law (law@cygnus.com)
+ * gas/config/tc-arc.h: Avoid warnings for LITTLE_ENDIAN and
+ BIG_ENDIAN macros.
+ * gas/config/tc-arc.c: Use S_IS_LOCAL to test local symbols.
+ Fix compile time warning messages.
- * config/tc-hppa.c (pa_ip): Move dwarf2 stuff from here.
- (md_assemble): To here. Tweak address generation.
+2000-11-07 Nick Clifton <nickc@redhat.com>
- * 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.
- * tc-hppa.h (md_end): Define for OBJ_ELF.
+ * stabs.c (generate_asm_file): Increase length of xmalloc'ed
+ buffer in order to avoid buffer overflows.
-1999-09-14 Michael Meissner <meissner@cygnus.com>
+2000-11-06 Steve Ellcey <sje@cup.hp.com>
- * configure.in (Canonicalization of target names): Remove adding
- ${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
- generates $ac_config_sub with a ${CONFIG_SHELL} already.
+ * 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.
-1999-09-14 Donn Terry <donn@interix.com>
-
- * config/te-interix.h (GLOBAL_OFFSET_TABLE_NAME): Define.
+2000-11-06 Kazu Hirata <kazu@hxi.com>
-1999-09-13 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * 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.
- * 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.
+2000-11-06 Nick Clifton <nickc@redhat.com>
- * config/tc-i386.c (md_assemble): Correct frag_var size. Tidy
- jump handling code and comments.
+ * doc/as.texinfo: Add GNU Free Documentation License.
+ * doc/gasp.texi: Add GNU Free Documentation License.
+ * doc/as.1: Add GNU Free Documentation License.
-1999-09-12 Ian Lance Taylor <ian@zembu.com>
+2000-11-05 Nick Clifton <nickc@redhat.com>
- * config/tc-i386.c (md_apply_fix3): Add horrible adjustments to
- the value if TE_PE and a global defined symbol.
+ * config/tc-arm.c: Add include of "dwarf2dbg.h"
-1999-09-11 Ian Lance Taylor <ian@zembu.com>
-
- * write.c (dump_section_relocs): Call print_symbol_value_1 to
- print the symbol, rather than printing it here.
-
-1999-09-11 Donn Terry <donn@interix.com>
-
- * 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.
+2000-11-02 Per Lundberg <plundis@chaosdev.org>
- * 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 <schwab@suse.de>
-
- * doc/c-arm.texi: Fix arguments of @var to not contain
- punctuation.
-
-1999-09-08 Philip Blundell <pb@nexus.co.uk>
-
- * 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 <ian@zembu.com>
-
- * config/obj-coff.c: Add ATTRIBUTE_UNUSED as needed for
- BFD_ASSEMBLER code.
-
-1999-09-06 Donn Terry <donn@interix.com>
-
- * 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 <nickc@cygnus.com>
-
- * config/tc-m32r.c (md_longopts): Fix value for -Wnuh.
-
-1999-09-04 Steve Chamberlain <sac@pobox.com>
-
- * 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 <alan@spri.levels.unisa.edu.au>
-
- * 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 <nickc@cygnus.com>
-
- * config/tc-mcore.c (mcore_s_section): Do not dump literals if a
- .section .line directive is encountered.
-
-1999-09-01 Nick Clifton <nickc@cygnus.com>
-
- * 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 <alan@spri.levels.unisa.edu.au>
-
- * 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 <alan@spri.levels.unisa.edu.au>
-
- Based on a patch from H.J. Lu <hjl@gnu.org>
- * config/tc-i386.c (parse_register): Handle FP regs specially.
- (md_begin): Remove '(' and ')' from register_chars.
-
-1999-08-29 Doug Evans <devans@casey.cygnus.com>
-
- * 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 <jquinn@nortelnetworks.com>
-
- * 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 <wilson@cygnus.com>
-
- * 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 <davidm@hpl.hp.com>
-
- * 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.
+ * configure.in: Recognise i[3456]86-chaosdev-storm-chaos.
+ * configure: Regenerate.
-1999-08-26 Jim Wilson <wilson@cygnus.com>
+2000-11-01 Nick Clifton <nickc@redhat.com>
- * 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.
+ * 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.
-1999-08-20 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-11-02 Nick Clifton <nickc@redhat.com>
- * config/tc-i386.c (i386_index_check): Fix the displacement size
- when INFER_ADDR_PREFIX.
+ * 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.
-1999-08-18 Nick Clifton <nickc@cygnus.com>
+2000-11-02 Theo Honohan <th@futuretv.com>
- * config/tc-arm.c (md_apply_fix3): If an offset is invalid,
- display its value.
+ * config/tc-arm.c (do_msr): Improve error message.
-1999-08-17 Ian Lance Taylor <ian@zembu.com>
+2000-10-31 Eric Christopher <echristo@redhat.com>
- * config/tc-ppc.c (md_assemble): Trim @ha constant to 16 bits, to
- handle 0xffffNNNN constants correctly.
+ * config/tc-mn10300.c (md_apply_fix3): Use valuep if fully resolved
+ or pc-relative, else use fx_offset.
-1999-08-16 Nick Clifton <nickc@cygnus.com>
+2000-10-31 Jim Wilson <wilson@redhat.com>
- * config/tc-arm.c (do_ldst): Look for register conflicts on stores
- as well as loads.
+ * 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.
-1999-08-13 Nick Clifton <nickc@cygnus.com>
+2000-10-31 Kaz Kojima <kkojima@rr.iij4u.or.jp>
- * config/tc-arm.c (validate_offset_imm): Work on unsigned values.
- (md_apply_fix3): Always pass positive values to
- validate_offset_imm.
+ * config/tc-sh.c (md_apply_fix [BFD_RELOC_SH_PCDISP12BY2]): Allow 4094.
-1999-08-12 Nick Clifton <nickc@cygnus.com>
+2000-10-31 Bernd Schmidt <bernds@redhat.co.uk>
- * 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 <alan@spri.levels.unisa.edu.au>
+ * tc-ia64.c (extra_goodness): Only prefer F in slot 1 and B in slot 2.
- * config/tc-i386.c (md_assemble): Remove dead code. intel_syntax
- LONG_DOUBLE_MNEM_SUFFIX floating point is done in opcode/i386.h
+2000-10-30 Kazu Hirata <kazu@hxi.com>
-Tue Aug 10 12:58:31 1999 Jeffrey A Law (law@cygnus.com)
+ * expr.c: Fix formatting.
+ * flonum-copy.c: Likewise.
+ * flonum.h: Likewise.
+ * gasp.c: Likewise.
+ * hash.c: Likewise.
- * config/tc-hppa.c (pa_build_unwind_subspace): Use sane section
- flags for the unwind subspace.
+2000-10-30 Hans-Peter Nilsson <hp@bitrange.com>
- * 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".
+ * as.h (OPTION_MD_BASE): Bump to 190.
+ * as.c (parse_args) <std_longopts>: Add comment about the need to
+ check OPTION_MD_BASE in as.h.
-Mon Aug 9 20:02:22 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
+ * config/tc-sh.c (md_apply_fix): For ELF, do not "adjust back" VAL
+ for weak symbols.
- * config/tc-d30v.c (write_2_short): Don't group repeat instructions
- with the following instruction unless this was specified.
+2000-10-27 Nick Clifton <nickc@redhat.com>
-1999-08-09 Ian Lance Taylor <ian@zembu.com>
+ * configure.in (emulations): Add m68hc12.
+ * configure: Regenerate.
+ * po/gas.pot: Regenerate.
- * config/tc-i386.h (SUB_SEGMENT_ALIGN): If TE_GO32, return 4 for
- certain sections, to match BFD changes.
+2000-10-27 Aldy Hernandez <aldyh@redhat.com>
+
+ * 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 <nickc@redhat.com>
+
+ * 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 <dnovillo@cygnus.com>
+
+ * tc-i386.c: Fix prototype declarations for functions taking no
+ arguments.
+
+2000-10-24 Diego Novillo <dnovillo@cygnus.com>
+
+ * 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.
-1999-08-08 Mumit Khan <khan@xraylith.wisc.edu>
+2000-10-20 Jakub Jelinek <jakub@redhat.com>
- * Makefile.am (noinst_SCRIPTS): Change .gdbinit to $(GDBINIT).
- (EXTRA_SCRIPTS): Define to keep automake happy.
- * Makefile.in: Rebuild.
+ * config/tc-sparc.c (sparc_ip): Fix a bug which caused v9_arg_p
+ instructions to loose any special insn->architecture mask.
-1999-08-08 Ian Lance Taylor <ian@zembu.com>
+ * 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).
- * 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.
+2000-10-18 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * config/tc-m68k.c: Fix the previous misapplied patch.
+
+2000-10-18 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * 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 <kazu@hxi.com>
+
+ * 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 <cchavva@redhat.com>
+
+ * 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 <hp@bitrange.com>
+
+ * config/tc-sh.c (JREG): Remove.
+ (md_convert_frag): Remove #if 0:d code using JREG.
+
+2000-10-15 Diego Novillo <dnovillo@cygnus.com>
+
+ * 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 <kazu@hxi.com>
+
+ * 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 <alan@linuxcare.com.au>
+
+ * config/obj-elf.c (elf_frob_symbol): Revert 2000-10-07 change.
+
+2000-10-07 Alan Modra <alan@linuxcare.com.au>
+
+ * 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 <wilson@cygnus.com>
+
+ * config/tc-ia64.c (resources_match): Handle IA64_RS_PRr.
+
+2000-10-05 Alan Modra <alan@linuxcare.com.au>
+
+ * config/tc-i386.c: Delete some useless comments, reformat others.
-1999-08-08 Jakub Jelinek <jj@ultra.linux.cz>
+ * config/tc-i386.h (TC_FIX_ADJUSTABLE): Add check to cover
+ non-global syms in linkonce sections.
- * config/tc-sparc.c (sparc_ip): Allow assembly of %lo()+%reg.
+2000-10-04 Ralf Baechle <ralf@gnu.org>
-1999-08-08 Ian Lance Taylor <ian@zembu.com>
+ * config/tc-ia64.c (operand_match): Don't use // style comments.
+ * config/tc-i370.c: Likewise.
- * Makefile.am: Change all uses of itbl-test-ops to itbl-tops to
- avoid problems on DOS filesystems.
- * Makefile.in: Rebuild.
+2000-09-29 Hans-Peter Nilsson <hp@axis.com>
- * doc/as.texinfo (Section): Document 's' flag for COFF version.
+ 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) <case BFD_RELOC_VTABLE_ENTRY>: Remove FIXME.
+ Fix formatting.
+ (md_parse_option) <case 'h' 'H'>: Deprecate; add reference to
+ --help.
+ <case OPTION_NO_US, case OPTION_US>: New.
+ (md_show_usage): Be brief and reformat to match continuation of
+ --help.
+ * po/gas.pot: Regenerate.
-1999-08-08 Mumit Khan <khan@xraylith.wisc.edu>
+2000-09-28 Alan Modra <alan@linuxcare.com.au>
- * config/obj-coff.c (obj_coff_section): Handle 's' (shared)
- section flag.
+ * 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.
-1999-08-08 Ian Lance Taylor <ian@zembu.com>
+2000-09-28 Alan Modra <alan@linuxcare.com.au>
- * configure.in: Define and substitute GDBINIT. Change AC_OUTPUT
- line to create ${GDBINIT} rather than .gdbinit.
- * configure, Makefile.in, doc/Makefile.in: Rebuild.
+ * 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.
-Fri Aug 6 12:12:44 1999 Jeffrey A Law (law@cygnus.com)
+ From John David Anglin <dave@hiauly1.hia.nrc.ca>
+ * 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'.
- * config/tc-hppa.c (pa_ip, case '?'): Add missing break.
+2000-09-25 Kazu Hirata <kazu@hxi.com>
-Fri Aug 6 09:46:35 1999 Jerry Quinn <jquinn@nortelnetworks.com>
+ * 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.
- * config/tc-hppa.c (pa_ip): Add 64 bit condition completers.
+2000-09-23 Alan Modra <alan@linuxcare.com.au>
-1999-08-06 Jakub Jelinek <jj@ultra.linux.cz>
+ * config/tc-hppa.c (hppa_fix_adjustable): Do the external and weak
+ checks only for ELF.
+ (hppa_force_relocation): Likewise.
- * config/tc-sparc.h (tc_fix_adjustable): Fix check for PIC local
- non-adjustable symbols.
+2000-09-22 Jim Wilson <wilson@cygnus.com>
-Thu Aug 5 16:52:51 1999 Jerry Quinn <jquinn@nortelnetworks.com>
+ * 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.
- * config/tc-hppa.c (pa_ip): Change condition args to have '?' prefix.
+2000-09-22 Michael Sokolov <msokolov@ivan.Harhan.ORG>
-Thu Aug 5 23:05:56 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
+ * 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.
- * config/tc-sh.c (md_assemble): Call as_bad when there are excess
- operands.
+2000-09-21 Kazu Hirata <kazu@hxi.com>
-1999-08-05 Donn Terry <donn@interix.com>
+ * config/tc-ns32k.c: Fix formatting.
+ * config/tc-ns32k.h: Likewise.
- * config/te-interix.h: New file.
- * configure.in (i386-*-interix*): New target.
- * configure: Rebuild.
+2000-09-20 Kazu Hirata <kazu@hxi.com>
-Wed Aug 4 13:12:17 1999 Jeffrey A Law (law@cygnus.com)
+ * 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.
- * config/tc-hppa.c (pa_chk_field_selector): Allow 3 byte
- selectors for ELF too.
- (selector_table): Add "ltp" and "rtp" selectors.
+2000-09-19 Michael Sokolov <msokolov@ivan.Harhan.ORG>
-1999-08-04 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * config/tc-vax.c (synthetic_votstrs): Remove jbssi and jbcci.
+ Likewise in relaxation description comments.
- * 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.
+2000-09-18 Alan Modra <alan@linuxcare.com.au>
- * doc/c-i386.texi (i386-16bit): Document .code16gcc.
+ * config/tc-hppa.h (TC_FORCE_RELOCATION_SECTION): Allow
+ subtraction of two syms without emitting a relocation.
- * config/tc-i386.h (DefaultSize): Define. Renumber following
- opcode_modifier defines.
+ From David Huggins-Daines <dhd@linuxcare.com>
+ * config/tc-hppa.c (hppa_force_relocation): Force relocations for
+ global or weak symbols.
- From Etienne Lorrain <etienne.lorrain@ibm.net>
- * 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.
+2000-09-15 Kazu Hirata <kazu@hxi.com>
-1999-08-03 Ian Lance Taylor <ian@zembu.com>
+ * 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.
- * config/obj-coff.c (coff_frob_symbol): Always update set_end with
- next_set_end even if the end symbol is being discarded.
+2000-09-14 Kazu Hirata <kazu@hxi.com>
- * gasp.c: Add ATTRIBUTE_UNUSED as needed for non-BFD_ASSEMBLER.
- * output-file.c, symbols.c, config/tc-i386.c: Likewise.
+ * 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 <twall@cygnus.com>
+
+ * 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 <kazu@hxi.com>
+
+ * 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 <anorland@acc.umu.se>
+
+ * 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 <kazu@hxi.com>
+
+ * 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.
- (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 <ralf@uni-koblenz.de>.
-
-1999-08-03 Etienne Lorrain <etienne.lorrain@ibm.net>
-
- * config/tc-i386.c (f16_3): New. Fixes 16 bit 3 byte nop.
-
-1999-08-03 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * 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 <jj@ultra.linux.cz>
-
- * 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 <clm@cygnus.com>
-
- * config/tc-arm.c (tc_gen_reloc): Record the vtable entry in
- the relocation's section offset.
-
-1999-07-29 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * 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" <jquinn@nortelnetworks.com>
-
- * config/tc-hppa.c (pa_ip): Add 'J' and 'K' code
- processing.
-
-1999-07-27 Ian Lance Taylor <ian@zembu.com>
-
- * config/tc-sparc.h (tc_fix_adjustable): Don't adjust GOT, PLT, or
- VTABLE relocations.
-
-1999-07-21 Mark Elbrecht <snowball3@bigfoot.com>
-
- * config/te-go32.h (COFF_LONG_SECTION_NAMES): Define.
-
- * configure.bat: Remove; obsolete.
- * config/go32.cfg: Likewise.
-
-1999-07-21 Brad M. Garcia <bgarcia@fore.com>
-
- * configure.in (i386-*-vxworks*): New target.
- * configure: Rebuild.
-
-1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
-
- * doc/c-sparc.texi: Document .register and .nword pseudo-ops.
+ * 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 <kazu@hxi.com>
+
+ * 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 <philb@gnu.org>
+
+ * configure.in (arm*-*-uclinux*): New target.
+ * configure: Regenerate.
-1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
+2000-09-09 Kazu Hirata <kazu@hxi.com>
- * 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.
+ * input-file.c: Fix formatting.
+ * itbl-ops.c: Likewise.
+ * messages.c: Likewise.
-1999-07-16 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-09-08 Philip Blundell <philb@gnu.org>
- * 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.
+ * config/tc-arm.c (md_apply_fix3): Correct handling of ADRL when
+ offset is negative.
-1999-07-15 Ian Lance Taylor <ian@zembu.com>
+2000-09-07 H.J. Lu <hjl@gnu.org>
- * configure.in: Bump version number to 2.9.5.
+ * configure.in (AC_ISC_POSIX): Put after AC_CANONICAL_SYSTEM.
* configure: Rebuild.
- * dwarf2dbg.c (dwarf2_gen_line_info): Don't assume that long long
- or %llx work.
+2000-09-07 Kazu Hirata <kazu@hxi.com>
-Thu Jul 15 02:45:30 1999 Jeffrey A Law (law@cygnus.com)
+ * atof-generic.c: Fix formatting.
+ * config/tc-mips.c: Likewise.
+ * config/tc-vax.c: Likewise.
+ * input-scrub.c: Likewise.
- * config/tc-hppa.c (md_pseudo_table): Add ".dword" pseudo-op.
- (cons_fix_new_hppa): Derive size of fixup from size of the object.
+2000-09-07 Alexandre Oliva <aoliva@redhat.com>
-1999-07-14 Philip Blundell <pb@nexus.co.uk>
-
- * 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 <ian@zembu.com>
-
- * 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 <schwab@suse.de>
-
- * config/tc-m68k.c: Add some ATTRIBUTE_UNUSED.
-
-1999-07-11 Ian Lance Taylor <ian@zembu.com>
-
- * 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 <ian@zembu.com>
-
- * 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 <dave@hiauly1.hia.nrc.ca>
-
- * configure.in (hppa*-linux-gnu*): New target.
+ * config/tc-sh.h (TARGET_FORMAT): Use sh-linux targets.
+ * configure.in (sh-*-linux*): Added.
* configure: Rebuilt.
-1999-07-08 Nick Clifton <nickc@cygnus.com>
+2000-09-06 Kazu Hirata <kazu@hxi.com>
- * doc/c-arm.texi (ARM Directives): Document .thumb_set directive.
+ * config/tc-hppa.c: Fix formatting.
-1999-07-07 Nick Clifton <nickc@cygnus.com>
+ * ecoff.c: Fix formatting.
- * config/tc-v850.c (v850_comm): Use symbol_get_obj() rather than
- accessing symbolP directly.
+2000-09-06 Alexandre Oliva <aoliva@redhat.com>
-Tue Jul 6 10:41:42 1999 Jeffrey A Law (law@cygnus.com)
+ * configure: Rebuilt with new libtool.m4.
- * config/tc-hppa.h (tc_frob_symbol): Always punt "$global$" symbol
- for ELF.
+2000-09-05 Kazu Hirata <kazu@hxi.com>
-1999-07-05 Nick Clifton <nickc@cygnus.com>
+ * cgen.c: Fix formatting.
+ * config/tc-ia64.c: Likewise.
- * 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.
+2000-09-05 Nick Clifton <nickc@redhat.com>
- * 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 <hjl@gnu.org>
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+ * po/gas.pot: Regenerate.
- * subsegs.c (subseg_text_p): Use 1/0 instead of true/false for
- non BFD_ASSEMBLER case.
+2000-09-05 Hans-Peter Nilsson <hp@axis.com>
+
+ * config/tc-cris.c: Correct comment typos.
+
+2000-09-05 Eric Christopher <echristo@cygnus.com>
+
+ * config/tc-mn10300.c: Cleanup.
+ (md_pcrel_from): Enable.
+
+2000-09-05 Alan Modra <alan@linuxcare.com.au>
+
+ * 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.
-1999-06-26 Mumit Khan <khan@xraylith.wisc.edu>
+ * config/obj-elf.h (obj_elf_vtable_inherit): Declare.
+ (obj_elf_vtable_entry): Declare.
- * config/obj-coff.c (obj_coff_section): Mark writable sections as
- data.
+ * 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.
-1999-06-26 David Mosberger <davidm@hpl.hp.com>
+2000-09-03 Richard Henderson <rth@cygnus.com>
- * 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.
+ * config/tc-ia64.c (emit_one_bundle): Stop collecting insns
+ for template selection when a label is needed.
-1999-06-23 Nick Clifton <nickc@cygnus.com>
+2000-09-02 Kazu Hirata <kazu@hxi.com>
- * 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.
+ * config/tc-ia64.c: Fix formatting.
-1999-06-22 Ian Lance Taylor <ian@zembu.com>
+2000-09-02 Nick Clifton <nickc@redhat.com>
- * 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.
+ * configure.in: Increase version number to 2.10.91.
+ * configure: Regenerate.
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * po/gas.pot: Regenerate.
+ * Makefile.in: Regenerate.
- * 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.
+2000-09-01 Alexandre Oliva <aoliva@redhat.com>
- * 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/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.
- * 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.
+2000-09-01 Niibe Yutaka <gniibe@m17n.org>, Kaz Kojima <kkojima@rr.iij4u.or.jp>, Alexandre Oliva <aoliva@redhat.com>
-1999-06-22 Jonathan Larmour <jlarmour@cygnus.co.uk>
+ * 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) <long, int, word, short>: Use them.
+ (GOT_symbol): New variable.
+ (md_undefined_symbol): Set it.
- * 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.
+2000-09-01 Richard Henderson <rth@cygnus.com>
-Mon Jun 21 16:45:19 1999 Jeffrey A Law (law@cygnus.com)
+ * config/tc-ia64.c (match): Don't inline.
+ (extra_goodness): New.
+ (md_begin): Prefer nop.f and nop.b for best_template.
- * 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.
- * tc-hppa.h (TARGET_FORMAT): Handle elf64-hppa format.
+2000-08-31 Kazu Hirata <kazu@hxi.com>
-1999-06-21 Ian Lance Taylor <ian@zembu.com>
+ * as.c: Fix formatting.
+ * cond.c: Likewise.
+ * frags.c: Likewise.
+ * macro.c: Likewise.
- * 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.
+2000-08-31 Eric Christopher <echristo@cygnus.com>
-1999-06-21 Nick Clifton <nickc@cygnus.com>
+ * 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.
- * config/tc-arm.c (arm_adjust_symtab): Use symbol_get_bfdsym()
- macro to get at the BFD symbol associated with a GAS symbol.
+2000-08-31 Alexandre Oliva <aoliva@redhat.com>
-1999-06-19 Ian Lance Taylor <ian@zembu.com>
+ * acinclude.m4: Include libtool and gettext macros from the
+ top level.
+ * aclocal.m4, configure: Rebuilt.
- * config/tc-ppc.c: Update for symbol handling changes.
- * config/obj-coff.c: Likewise.
+2000-08-30 Mark Hatle <mhatle@mvista.com>
-Fri Jun 18 14:34:18 1999 Jeffrey A Law (law@cygnus.com)
-
- * 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 <nickc@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <ian@zembu.com>
-
- From K. Richard Pixley <rich@noir.com>:
- * configure.in (ppc-*-vxworks*): New target.
- * configure: Rebuild.
+ * config/tc-ppc.c (md_parse_option): Recognize -m405.
-1999-06-12 Philip Blundell <philb@gnu.org>
+2000-08-31 Kazu Hirata <kazu@hxi.com>
- * config/tc-arm.c (tc_gen_reloc): Fix handling of GOTPC relocs.
+ * listing.c: Fix formatting.
-1999-06-13 Ian Lance Taylor <ian@zembu.com>
+2000-08-29 Kazu Hirata <kazu@hxi.com>
- * 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.
+ * app.c: Fix a comment typo. Fix formatting.
-1999-06-12 Ian Lance Taylor <ian@zembu.com>
+2000-08-25 J. David Anglin <dave@hiauly1.hia.nrc.ca>
- * 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.
+ * 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.
-1999-06-12 David O'Brien <obrien@freebsd.org>
+2000-08-24 Hans-Peter Nilsson <hp@axis.com>
- * configure.in: (i[3456]86-*-freebsd*): Now defaults to ELF.
- * configure: Rebuild.
+ * NEWS: Mention support for CRIS.
-1999-06-12 Ian Lance Taylor <ian@zembu.com>
+Thu Aug 24 20:41:05 2000 Denis Chertykov <denisc@overta.ru>
- * dwarf2dbg.c: Include elf/dwarf2.h with "", not <>.
- * Makefile.am: Rebuild dependencies.
- * Makefile.in: Rebuild.
+ * config/tc-avr.h (TC_IMPLICIT_LCOMM_ALIGNMENT): New macros.
+ Sets `.lcomm' alignment to zero.
- * config/tc-i386.c (i386_immediate): Remove unused label
- seg_unimplemented.
+2000-08-23 Alexandre Oliva <aoliva@redhat.com>
- * 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.
+ * config/tc-i386.h <OBJ_MAYBE_ELF, OBJ_MAYBE_COFF>
+ (TC_FIX_ADJUSTABLE): Define.
- * 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.
+2000-08-23 Jim Wilson <wilson@cygnus.com>
-1999-06-11 Ian Lance Taylor <ian@zembu.com>
+ * config/tc-ia64.c (output_unw_records): Set U & E flags only if
+ unwind.personality_routine is set.
- * dwarf2dbg.h: Use PARAMS in function declarations.
+2000-08-23 H.J. Lu <hjl@gnu.org>
-1999-06-11 Martin Dorey <mdorey@madge.com>
+ * write.c (TC_FIX_ADJUSTABLE): Remove the duplicate.
- * 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.
+2000-08-23 Alexandre Oliva <aoliva@redhat.com>
-1999-06-11 Ian Lance Taylor <ian@zembu.com>
+ * config/tc-i386.h (TC_FIX_ADJUSTABLE): Do *NOT* define if target
+ environment is pe.
- * config/tc-i386.c (md_apply_fix3): Add default case to switch.
+2000-08-22 H.J. Lu <hjl@gnu.org>
- * config/tc-sparc.c (md_pseudo_table): Remove pushsection and
- popsection.
+ * config.in (STRICTCOFF): New for strict COFF.
- * config/tc-sparc.c (sparc_ip): Add default case to reloc switch.
+ * configure.in: Define STRICTCOFF for i386-*-msdosdjgpp*,
+ i386-*-go32* and i386-go32-rtems*.
+ * configure: Rebuilt.
- * read.c (read_a_source_file): Only declare inescape if
- QUOTES_IN_INSN.
+ * config/obj-coff.c (obj_coff_endef): Follow the historical
+ behavior if STRICTCOFF is not defined.
- * itbl-ops.c (itbl_disassemble): Change sprintf format strings to
- match parameters.
- (find_entry_byval): Add parens to avoid warning.
+ * doc/internals.texi: Document STRICTCOFF.
- * as.c: If HAVE_ITBL_CPU, include "itbl-ops.h".
+2000-08-22 Alexandre Oliva <aoliva@redhat.com>
- * symbols.c (resolve_symbol_value): Don't permit subtraction of
- undefined symbols.
+ * 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.
+ <OBJ_ELF, OBJ_COFF, TE_PE> (TC_FIX_ADJUSTABLE): Define.
+ * config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove.
+ <OBJ_ELF> (TC_FIX_ADJUSTABLE): Define.
+ * config/tc-i960.h, config/tc-m68k.h, config/tc-v850.h:
+ Likewise.
-1999-06-10 Jakub Jelinek <jj@ultra.linux.cz>
+2000-08-22 Eric Christopher <echristo@cygnus.com>
- * config/tc-sparc.c (sparc_ip): Don't use side-effect expression
- with isoctal.
+ * config/tc-mn10300.c: (md_apply_fix): New function.
+ (mn10300_force_relocation): New function.
+ (mn10300_fix_adjustable): New function.
- * 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.
+ * 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.
-1999-06-10 Ian Lance Taylor <ian@zembu.com>
+ * write.c: (TC_LINKRELAX_FIXUP): Define if not
+ previously defined.
+ (fixup_segment): Use TC_LINKRELAX_FIXUP.
- Based on patches from John W. Woznack <jwoznack@concentric.net>:
- * 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.
+ * doc/internals.texi: Document TC_LINKRELAX_FIXUP.
- * symbols.c (copy_symbol_attributes): Convert local symbols to
- regular symbols.
+2000-08-21 Jason Eckhardt <jle@cygnus.com>
-1999-06-10 Nick Clifton <nickc@cygnus.com>
+ * config/tc-i860.c (md_apply_fix3): Do not insert the immediate
+ if the fixup resulted in a relocation.
- * config/tc-arm.c (md_parse_option): Add support for ARM920 and
- ARM920t.
+2000-08-18 Nick Clifton <nickc@redhat.com>
-1999-06-07 Jakub Jelinek <jj@ultra.linux.cz>
+ * config/tc-arm.c (decode_shift): Replace as_tsktsk with as_warn.
+ Make reference to first element of shift_names explicit.
- * 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.
+2000-08-18 Alexandre Oliva <aoliva@redhat.com>
-1999-06-07 Jakub Jelinek <jj@ultra.linux.cz>
+ * 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.
- * 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.
+2000-08-17 Kazu Hirata <kazu@hxi.com>
-Mon Jun 7 10:22:16 1999 Richard Henderson <rth@cygnus.com>
+ * dwarf2dbg.c: Fix formatting.
- * expr.h (struct expressionS): Revert last change; widen X_op.
- * config/tc-alpha.c (md_begin): Check the field is wide enough.
+2000-08-17 Nick Clifton <nickc@redhat.com>
-Mon Jun 7 11:25:16 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+ * config/tc-arm.c (decode_shift): Allow illegal shifts by zero
+ to be recoded as logical shift lefts by zero.
- * 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.
+2000-08-16 Jim Wilson <wilson@cygnus.com>
- * 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'.
+ * 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.
-1999-06-06 Richard Henderson <rth@cygnus.com>
+2000-08-16 Jason Eckhardt <jle@cygnus.com>
- * config/obj-elf.c (obj_elf_section): Don't free the return
- value of demand_copy_C_string.
+ * config/tc-i860.c (md_operand): Silly typo fixed.
-1999-06-05 Richard Henderson <rth@cygnus.com>
+2000-08-16 Nick Clifton <nickc@redhat.com>
- * dwarf2dbg.c (dwarf2_gen_line_info): Mirror the section symbol
- creation logic from obj_elf_create_section.
+ * 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.
- * 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.
+ (decode_shift): Use new structures.
+ Issue a warning is "ROR #0" is used.
+ Issue a warning if "ASR #0" or "LSR #0" is used.
- * 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.
+ (md_begin): Initialise arm_shift_hsh table from new
+ asm_shift_name array.
-1999-06-05 Richard Henderson <rth@cygnus.com>
+2000-08-16 Jakub Jelinek <jakub@redhat.com>
- * 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.
+ * 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.
- * 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.
+2000-08-16 Nick Clifton <nickc@redhat.com>
-1999-06-04 Mark Klein <mklein@dis.com>
+ * config/tc-arm.c (do_bx): Warn about "bx px" not being very
+ useful.
- * 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.
+2000-08-15 Will Cohen <wcohen@redhat.com>
- * config/tc-hppa.c: Update for symbol handling changes.
+ * config/tc-sh.h (DWARF2_LINE_MIN_INSN_LENGTH): Defined.
-1999-06-03 Ian Lance Taylor <ian@zembu.com>
+ * 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.
- * cgen.c: Update for symbol handling changes.
- * config/tc-m32r.c: Likewise.
+2000-08-15 Alexandre Oliva <aoliva@redhat.com>
- * config/tc-hppa.h: Update for symbol handling changes.
- * config/tc-hppa.c: Likewise.
+ * config/tc-sh.c (md_apply_fix) [BFD_RELOC_32, BFD_RELOC_16]: Use
+ md_number_to_chars.
- * config/tc-arm.h: Update for symbol handling changes.
- * config/tc-arm.c: Likewise.
- (symbol_make_empty): Remove. Just use symbol_create.
+2000-08-14 Nick Clifton <nickc@redhat.com>
- * symbols.c (symbol_set_tc): Correct name.
+ * config/tc-arm.c (do_bx): Allow "bx pc".
- * 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.
+2000-08-14 Jim Wilson <wilson@cygnus.com>
- * doc/internals.texi (Symbols): Describe changes in symbol
- handling.
-
-1999-06-03 Richard Henderson <rth@cygnus.com>
-
- * dwarf2dbg.c (dwarf2_gen_line_info): Use section_symbol
- instead of doing the work by hand.
-
-1999-06-03 David Mosberger <davidm@hpl.hp.com>
-
- * 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 <davidm@hpl.hp.com>
-
- * 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 <ian@zembu.com>
-
- 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 <nickc@cygnus.com>
-
- * 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 <devans@canuck.cygnus.com>
-
- -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 <tege@matematik.su.se>
-
- * 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 <linus.nordberg@canit.se>
-
- * 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 <mdorey@madge.com>
-
- * 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.
+ * 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.
-1999-05-25 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-08-14 Mark Elbrecht <snowball3@bigfoot.com>
- * config/tc-i386.c (md_apply_fix3): Only do 1999-05-17 fx_pcrel
- reloc changes when defined(BFD_ASSEMBLER).
+ * 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.
-1999-05-17 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-08-14 Jason Eckhardt <jle@cygnus.com>
- * config/tc-i386.c (tc_gen_reloc): Remove F and MAP macros.
+ * NEWS: Mention i860 support.
- * write.c (write_print_statistics): Output to file, not stderr.
+Mon Aug 14 11:49:12 2000 Jeffrey A Law (law@cygnus.com)
- * expr.c (generic_bignum_to_int32,64): Prototype.
+ * config/tc-mn10300.h (DWARF2_LINE_MIN_INSN_LENGTH): Define.
- * 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
+2000-08-14 Andreas Schwab <schwab@suse.de>
- From Maciej W. Rozycki <macro@ds2.pg.gda.pl>
- * 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.
+ * doc/c-arm.texi (ARM Directives): Fix warnings from makeinfo.
-Fri May 14 10:52:13 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+2000-08-11 Andreas Schwab <schwab@suse.de>
- * config/atof-ieee.c (gen_to_words): Correctly round a
- denormalized number. Fix off-by-one in range checking for
- exponent in a denormal.
+ * doc/c-i860.texi (Opcodes for i860): Remove braces from @item
+ argument.
-1999-05-10 Nick Clifton <nickc@cygnus.com>
+2000-08-11 Kazu Hirata <kazu@hxi.com>
- * config/tc-mcore.c (parse_reg): Accept 'sp' as a valid register
- name.
+ * expr.c: Fix formatting.
+ * config/obj-bout.c: Likewise.
-Thu May 13 09:46:59 1999 Joel Sherrill (joel@OARcorp.com)
+2000-08-10 Jason Eckhardt <jle@cygnus.com>
- * configure.in (i386-*-rtemself*, sh-*-rtemself*): New targets.
+ * doc/c-i860.texi: Flesh out the i860 section more.
-1999-05-12 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-08-10 Kazu Hirata <kazu@hxi.com>
- * 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.
+ * symbols.c: Fix formatting.
+ * expr.c: Likewise.
- From Doug Ledford <dledford@redhat.com>
- * config/tc-i386.h (RegXMM): New for P/III.
- * config/tc-i386.c: Add support for P/III.
+Wed Aug 9 16:28:21 EDT 2000 Diego Novillo <dnovillo@cygnus.com>
-Sat May 8 23:28:50 1999 Richard Henderson <rth@cygnus.com>
+ * tc-i386.c (md_assemble): Skip suffix check if the opcode modifier
+ has the IgnoreSize bit set.
- * 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.
+2000-08-09 Alan Modra <alan@linuxcare.com.au>
-Thu May 6 23:13:39 1999 Richard Henderson <rth@cygnus.com>
+ From Rodney Brown <RodneyBrown@mynd.com>
+ * configure.in: Use elf on Unixware 7 (i586-sco-sysv5uw7.1.0)
+ * configure: Regenerate.
- * config/tc-i386.c (i386_immediate): Skip whitespace before
- complaining about junk after expression.
- (i386_displacement): Likewise.
+2000-08-09 Kazu Hirata <kazu@hxi.com>
-Thu May 6 19:50:14 1999 Richard Henderson <rth@cygnus.com>
+ * hash.c: Fix formatting.
+ * gasp.c: Likewise.
- * symbols.c (symbol_find_base): Use memcpy instead of strcpy.
- Don't copy before downcaseing.
+2000-08-08 Jason Eckhardt <jle@cygnus.com>
-1999-05-05 Catherine Moore <clm@cygnus.com>
-
- * tc-m68k.c: Include elf/m68k.h.
- (m68k_elf_final_processing): New routine.
- * 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-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-hppa.c (md_apply_fix): Handle 22 bit fmt insn like a
- 17 bit fmt insn.
+ * 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.
-1999-04-30 Nick Clifton <nickc@cygnus.com>
+2000-08-08 Stephane Carrez <Stephane.Carrez@worldnet.fr>
- * config/tc-mcore.c (mcore_s_section): Dump literals before
- changing section.
+ * 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.
-1999-04-29 Nick Clifton <nickc@cygnus.com>
+ * NEWS: Mention 68HC11 & 68HC12 support.
- * config/tc-mcore.c (md_apply_fix3): Insert reloc addend into insn
- for COFF/PE port.
+2000-08-07 Richard Henderson <rth@cygnus.com>
-Mon Apr 26 12:34:37 1999 Doug Evans <devans@canuck.cygnus.com>
+ * 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.
- * 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.
+2000-08-07 Kazu Hirata <kazu@hxi.com>
- * 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/atof-ieee.c: Fix formatting.
+ * config/atof-tahoe.c: Likewise.
- * config/tc-fr30.c (FX_OPINFO_R_TYPE): Delete, unused.
+2000-08-06 Nick Clifton <nickc@cygnus.com>
-1999-04-26 Tom Tromey <tromey@cygnus.com>
+ * config/tc-sparc.c (md_begin): Fix typo in recent formatting
+ work.
- * aclocal.m4, configure: Updated for new version of libtool.
+ * doc/as.texinfo (Pseudo Ops): Update to include descriptions
+ of .popsection, .previous, .pushsection, .subsection,
+ .version, .vtable_entry, .vtable_inherit and .weak.
-1999-04-22 Nick Clifton <nickc@cygnus.com>
+2000-08-05 Kazu Hirata <kazu@hxi.com>
- * 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-cris.c: Fix formatting.
+ * config/tc-i386.c: Likewise.
+ * config/tc-sparc.c (sparc_ip): Simplify the code.
- * config/tc-mcore.h (MD_APPLY_FIX3): Define.
+2000-08-04 Kazu Hirata <kazu@hxi.com>
-1999-04-20 Nick Clifton <nickc@cygnus.com>
+ * config/tc-cris.c: Rearrange code for readability.
+ * config/tc-d10v.c: Fix formatting.
+ * config/tc-m32r.c: Likewise.
+ * config/tc-sparc.c: Likewise.
- * 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.
+2000-08-02 Jim Wilson <wilson@cygnus.com>
-1999-04-18 Ian Lance Taylor <ian@zembu.com>
+ * config/tc-ia64.c (emit_one_bundle): Call ia64_free_opcode
+ before ia64_find_opcode.
+ (md_assemble): Likewise.
- * 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.
+2000-08-01 Nick Clifton <nickc@cygnus.com>
- * config/tc-alpha.c (find_opcode_match): Add default case to
- switch.
- (find_macro_match): Likewise.
- (load_expression): Parenthesize && within ||.
+ * config/tc-arm.c (do_mrs): Fix skip of 'cpsr_all' flag.
+ Undo some formatting fixes.
- * config/tc-alpha.h (TC_RELOC_RTSYM_LOC_FIXUP): Define.
+2000-08-01 Kazu Hirata <kazu@hxi.com>
-1999-04-17 Nick Clifton <nickc@cygnus.com>
+ * config/obj-som.c: Fix formatting.
+ * config/obj-ieee.c: Likewise.
+ * config/tc-arm.c: Likewise.
+ * config/tc-v850.c: Likewise.
- * 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.
+2000-08-01 Nick Clifton <nickc@redhat.com>
-1999-04-16 Gavin Romig-Koch <gavin@cygnus.com>
+ * doc/c-m68k.texi (section M680x0 Options): Turn into a table
+ index by command line option.
- * 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.
+2000-08-01 Michael Sokolov <msokolov@ivan.Harhan.ORG>
-Fri Apr 16 12:26:39 1999 Bob Manson <manson@charmed.cygnus.com>
+ * doc/c-m68k.texi (@cindex @samp{--pcrel}): Rewrite option description.
+ (@node M68K-Branch): Rewrite to match the reality.
- * config/obj-coff.c (c_section_symbol): Fix typo in previous
- change.
+2000-07-31 Jason Eckhardt <jle@cygnus.com>
-1999-04-16 Nick Clifton <nickc@cygnus.com>
+ * 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.
- * config/tc-mcore.h (LOCAL_LABELS_FB): Define to 1.
+2000-07-31 Kazu Hirata <kazu@hxi.com>
-Thu Apr 15 16:52:09 1999 Jeffrey A Law (law@cygnus.com)
+ * config/tc-d30v.c: Fix formatting.
- * tc-hppa.c (pa_get_absolute_exression): Try to handle "5 %r3"
- expressions correctly.
+2000-07-31 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+ * 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.
-1999-04-15 Gavin Romig-Koch <gavin@cygnus.com>
+ * doc/c-m68k.texi: Document new command line option.
- * config/tc-mips.c (mips_elf_final_processing): Set EF_MIPS_ARCH.
+2000-07-29 Marek Michalkiewicz <marekm@linux.org.pl>
-Mon Apr 12 23:45:07 1999 Jeffrey A Law (law@cygnus.com)
+ * 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.
- * tc-hppa.c (pa_ip, case '3'): New case for PA2.0 fmpyfadd
- and fmpynfadd instructions.
+2000-07-28 Jason Eckhardt <jle@cygnus.com>
-1999-04-11 Richard Henderson <rth@cygnus.com>
+ * 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").
- * as.h (environ): Declare it, if needed.
- * as.c (dump_statistics): Don't declare environ.
- * configure.in (environ): Detect declaration.
- * configure, config.in: Rebuild
+2000-07-28 Alan Modra <alan@linuxcare.com.au>
- * config/tc-i386.c (i386_immediate): Accept @GOT relocations.
- (i386_displacement): Allocate enough space for replacement buffer.
- Clean up replacement buffer initialization.
+ * 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
-1999-04-11 Bob Manson <manson@charmed.cygnus.com>:
+Thu Jul 27 11:25:01 2000 Andrew Cagney <cagney@b1.cygnus.com>
- * 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.
+ * 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.
-Sat Apr 10 20:10:02 1999 Richard Henderson <rth@cygnus.com>
+2000-07-27 Kazu Hirata <kazu@hxi.com>
- * tc-alpha.c (load_expression): Call as_bad instead of abort.
+ * config/tc-avr.c: Fix formatting.
+ * config/tc-ns32k.c: Likewise.
-1999-04-08 Nick Clifton <nickc@cygnus.com>
+2000-07-27 Alan Modra <alan@linuxcare.com.au>
- * 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.
+ * config/tc-d10v.c (find_opcode): Remove extraneous `='.
- * Makefile.am: Add support for MCore targets.
- * Makefile.in: Regenerate.
- * configure.in: Add support for MCore targets.
- * configure: Regenerate.
+2000-07-27 Kazu Hirata <kazu@hxi.com>
- * doc/all.texi: Set MCORE.
- * doc/as.texinfo: Document MCore specific command line options.
-
- * write.h: Prevent multiple inclusion.
+ * config/tc-d10v.c: Fix formatting.
+ * config/tc-z8k.c: Likewise.
+ * config/tc-sparc.c: Likewise.
-1999-04-06 Ian Lance Taylor <ian@zembu.com>
+2000-07-26 Dave Brolley <brolley@redhat.com>
- * 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.
+ * 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.
- * 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.
+2000-07-24 Mark Elbrecht <snowball3@bigfoot.com>
- * config/tc-sparc.h (md_do_align): Just allocate the number of
- bytes necessary, rather than always allocating 1024.
+ * 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.
-1999-04-04 Ian Lance Taylor <ian@zembu.com>
+2000-07-22 Alan Modra <alan@linuxcare.com.au>
- * 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.
+ * frags.c (frag_align): Correct absolute section alignment.
-1999-04-04 Don Bowman <don@pixsci.com>
+2000-07-20 DJ Delorie <dj@redhat.com>
- * configure.in: Add mips*-*-vxworks* target; have it define
- MIPS_STABS_ELF.
- * configure, config.in: Rebuild.
+ * config/obj-coff.c (obj_frob_symbol): revert previous change,
+ it breaks linking against DLLs.
-1999-03-31 Nick Clifton <nickc@cygnus.com>
+2000-07-20 Hans-Peter Nilsson <hp@axis.com>
- * configure.in (emulations): Add support for arm-epoc-pe.
+ * configure.in: Add CRIS support.
* 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 <clm@cygnus.com>
-
- * tc-mips.c (md_apply_fix): Adjust value for linkonce sections.
-
-Wed Mar 24 14:11:10 1999 Jeffrey A Law (law@cygnus.com)
-
- * 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)
-
- * 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 <ian@zembu.com>
-
- * doc/internals.texi (CPU backend): Mention that
- line_separator_chars should not include newline. From thi
- <ttn@mingle.glug.org>.
-
-1999-03-22 Doug Evans <devans@casey.cygnus.com>
-
- * 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 <rth@cygnus.com>
-
- * tc-alpha.c (md_assemble): Allow '6' in an opcode.
-
-Thu Mar 18 10:55:30 1999 Jeffrey A Law (law@cygnus.com)
-
- * 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)
-
- * tc-hppa.c (pa_ip, case 'd'): Do not allow ",n".
-
-1999-03-15 Martin Hunt <hunt@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * config/tc-d30v.c (md_apply_fix3): Handle BFD_RELOC_8,
- BFD_RELOC_16 and BFD_RELOC_64.
-
-1999-03-12 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * expr.c (expr): Add missing else.
-
-1999-03-12 Nick Clifton <nickc@cygnus.com>
+ * 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.
- * config/tc-arm.c (md_apply_fix3): Improve error message.
+2000-07-20 Kazu Hirata <kazu@hxi.com>
-1999-03-11 Doug Evans <devans@casey.cygnus.com>
+ * read.c: Fix formatting.
+ * write.c: Fix formatting.
- * Makefile.am (CPU_TYPES): Add fr30.
- (cgen.o): Add $(CGEN_CPU_PREFIX)-desc.h dependency.
- (fr30,m32r dependencies): Update.
- * Makefile.in: Rebuild.
+2000-07-19 H.J. Lu <hjl@gnu.org>
- * 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 <jimb@zwingli.cygnus.com>
-
- * config/tc-mips.c (md_show_usage): Fix message.
-
-1999-03-03 Nick Clifton <nickc@cygnus.com>
-
- * doc/c-arm.texi (ARM Syntax): Document new command line switches
- and LDR reg,=<expr> 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 <ian@cygnus.com>
-
- * doc/c-arm.texi (ARM-Chars): Fix typo in use of '@'.
-
-1999-02-17 Nick Clifton <nickc@cygnus.com>
-
- This patch was created by: Scott Bambrough
- <scottb@corelcomputer.com>
-
- * 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 <ian@cygnus.com>
-
- * 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.
+ * sb.c: Include <stdlib.h> if exists for abort ().
-1999-02-15 Jim Lemke <jlemke@cygnus.com>
+2000-07-19 Alan Modra <alan@linuxcare.com.au>
- * config/tc-mips.c (mips_ip: case 'o'): Fix assertion failure for
- non-constant offset from a base register.
+ * 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.
-1999-02-14 Ken Raeburn <raeburn@raeburn.org>
+2000-07-17 Mark Elbrecht <snowball3@bigfoot.com>
- * config/tc-alpha.c (md_show_usage): Put \ before newline in
- strings always.
+ * 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.
-Sat Feb 13 14:10:10 1999 Richard Henderson <rth@cygnus.com>
+2000-07-17 Kazu Hirata <kazu@hxi.com>
- * 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.
+ * 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.
-1999-02-13 Jim Blandy <jimb@zwingli.cygnus.com>
+2000-07-17 Frank Ch. Eigler <fche@redhat.com>
- * doc/c-mips.texi (MIPS Opts): Updated list of -mNNNN and
- -mcpu=NNNN flags.
+ * expr.c (operand): Permit %bin literals if LITERAL_PREFIXPERCENT_BIN
+ is defined.
- * 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.
+2000-07-15 Ian Lance Taylor <ian@zembu.com>
-Sat Feb 13 00:17:26 1999 Richard Henderson <rth@cygnus.com>
+ * doc/c-mips.texi (MIPS Opts): Remove erroneous space after
+ @code.
- * config/tc-i386.c (i386_intel_operand): Ignore `SHORT' rather
- than treat as an immediate specifier.
+2000-07-15 Alan Modra <alan@linuxcare.com.au>
-Thu Feb 11 16:18:31 1999 Richard Henderson <rth@cygnus.com>
+ * 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.
- * 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.
+2000-07-14 Nick Clifton <nickc@cygnus.com>
-Thu Feb 11 11:21:02 1999 Ian Lance Taylor <ian@cygnus.com>
+ * 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.
- * Makefile.am (EXTRA_as_new_SOURCES): Uncomment--fixed by automake
- patch.
- * Makefile.in: Rebuild.
+ * doc/c-mips.texi: Document new command line options.
-1999-02-09 Doug Evans <devans@casey.cygnus.com>
+2000-07-13 Koundinya K <kk@ddeorg.soft.net>
- * Makefile.am (DISTCLEANFILES): Change cgen-opc.h to cgen-desc.h.
- (cgen.o): Ditto.
- (EXTRA_as_new_SOURCES): Comment out.
- (.tcdep): <arch>-opc.h renamed to <arch>-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): <arch>-opc.h renamed to <arch>-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 <nickc@cygnus.com>
-
- * config/tc-arm.c (md_apply_fix3): Fix handling of label1 - label2
- relocations for ELF targets.
-
-1999-02-08 Nick Clifton <nickc@cygnus.com>
-
- * configure.in: Add support for StrongARM target.
+ * configure.in: Remove the test /usr/dde for mips-*-sysv4*MP*
* configure: Regenerate.
-1999-02-05 Nick Clifton <nickc@cygnus.com>
-
- * 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 <rth@cygnus.com>
-
- * config/tc-alpha.c (md_show_usage): Document pca56 and ev6 options.
-
-Mon Feb 1 20:37:30 1999 Catherine Moore <clm@cygnus.com>
-
- * 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 <clm@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <devans@casey.cygnus.com>
+2000-07-13 Hans-Peter Nilsson <hp@axis.com>
- * Makefile.in: Regenerate.
- * configure.in: Redo test for using cgen.
+ * configure.in (DEFAULT_EMULATION setting): Revert part of
+ 2000-07-01 change that set te_multi=multi unless set to tmips.
* configure: Regenerate.
-1999-01-09 Nick Clifton <nickc@cygnus.com>
+2000-07-12 Mark Elbrecht <snowball3@bigfoot.com>
- * config/obj-coff.h (obj_adjust_symtab): Prevent accidental
- redefinition of this macro.
+ * config/obj-coff.c (coff_frob_section): Add padding to the last
+ section when aligning it increases its size.
-Tue Jan 5 21:58:03 1999 Doug Evans <devans@canuck.cygnus.com>
+2000-07-11 Kazu Hirata <kazu@hxi.com>
- * config/tc-mips.c (mips_frob_file): Disable "Unmatched %hi reloc"
- warning.
+ * config/tc-tic54x.c: Fix formatting.
-1998-12-29 Gavin Romig-Koch <gavin@cygnus.com>
+2000-07-10 Kazu Hirata <kazu@hxi.com>
- * config/tc-mips.c (append_insn): For mips16, insert a nop between
- a read of HI or LO and an immediatly following branch.
+ * config/tc-h8500.c: Fix formatting.
+ * config/tc-tic54x.c: Fix formatting.
-1998-12-29 Gavin Romig-Koch <gavin@cygnus.com>
+2000-07-10 Alan Modra <alan@linuxcare.com.au>
- * config/tc-mips.c (md_begin): Another correction to the setting of
- mips_eabi64.
+ * config/tc-hppa.c (md_apply_fix): Check fmt 12 and 22 pc-rel
+ displacements correctly.
-1998-12-23 Gavin Romig-Koch <gavin@cygnus.com>
+ * read.h (s_abort): Add ATTRIBUTE_NORETURN.
- * config/tc-mips.c (md_begin): Correct type-o in setting of mips_eabi64.
+2000-07-10 Ryan Bradetich <rbradetich@uswest.net>
-1998-12-21 Nick Clifton <nickc@cygnus.com>
-
- * 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 <gavin@cygnus.com>
-
- * config/tc-mips.c (mips_eabi64): New.
- (md_begin): Set mips_eabi64.
- (mips_elf_final_processing): Use it.
-
-1998-12-18 Gavin Romig-Koch <gavin@cygnus.com>
-
- * config/tc-mips.c (mips_elf_final_processing):
- Correct setting of ABI in e_flags.
+ * hash.c (hash_insert): Add cast to obstruct_alloc to fix
+ warning.
+ (hash_jam): Ditto.
-Wed Dec 16 16:17:22 1998 Dave Brolley <brolley@cygnus.com>
+2000-07-09 Alan Modra <alan@linuxcare.com.au>
- * config/tc-fr30.c (md_assemble): Warn about invalid instructions in delay slots.
+ From David Huggins-Daines <dhd@linuxcare.com>
+ * config/te-hppalinux64.h: Add a new emulation.
+ * configure.in (emulations): Add configure bits to support the
+ 64-bit Linux/parisc target.
+ * configure: Regenerate.
-1998-12-16 Gavin Romig-Koch <gavin@cygnus.com>
+ * 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 <rbradetich@uswest.net>
+ * 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-mips.c (md_begin,md_parse_option): Handle vr4111.
-
-1998-12-15 Doug Evans <devans@casey.cygnus.com>
+ * 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.
- * cgen.c (gas_cgen_md_apply_fix3): Mark as an error, rather than a
- warning, values that don't fit in the field.
+ * config/te-hppa64.h: New file.
-1998-12-15 Gavin Romig-Koch <gavin@cygnus.com>
+ * 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-mips.c (mips_abi_string): New.
- (md_parse_option,md_longopts): Add mabi.
- (mips_elf_final_processing): Set e_flags based on mabi flag.
+ * 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_*.
-1998-12-15 Gavin Romig-Koch <gavin@cygnus.com>
+2000-07-08 Ulf Carlsson <ulfc@engr.sgi.com>
- * config/tc-mips.c (md_parse_option): Handle vr4111.
+ * doc/internals.texi (Expressions): Fix typo.
-98-12-11 Ken Raeburn <raeburn@cygnus.com>
+2000-07-08 Kazu Hirata <kazu@hxi.com>
- * 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.
+ * config/tc-sh.c: Fix formatting.
+ * config/tc-tic54x.c: Fix formatting.
+ * depend.c: Fix formatting.
+ * flonum-konst.c: Likewise.
+ * flonum-mult.c: Likewise.
-1998-12-10 Nick Clifton <nickc@cygnus.com>
+2000-07-07 Kazu Hirata <kazu@hxi.com>
- * config/tc-fr30.c: Add line separator character.
+ * 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.
-Tue Dec 8 19:51:50 1998 Mark Klein <mklein@dis.com>
+2000-07-06 Mark Elbrecht <snowball3@bigfoot.com>
- * 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.
+ * config/obj-coff.c (TC_COFF_SECTION_DEFAULT_ATTRIBUTES): New.
+ Default to '(SEC_LOAD | SEC_DATA)'.
+ (obj_coff_section) [BFD_ASSEMBLER]: Use it.
-Tue Dec 8 15:00:50 1998 Ian Lance Taylor <ian@cygnus.com>
+ * doc/internals.texi (CPU Backend): Describe
+ TC_COFF_SECTION_DEFAULT_ATTRIBUTES.
- * read.c (output_leb128): Don't mark as inline.
+Thu Jul 6 17:20:58 2000 Andrew Cagney <cagney@b1.cygnus.com>
-1998-12-08 Andrew MacLeod <amacleod@cygnus.com>
+ * as.c (parse_args): NULL terminate the long option list.
- * 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.
+Tue Jul 4 14:08:28 2000 Andrew Cagney <cagney@b1.cygnus.com>
-1998-12-07 Nick Clifton <nickc@cygnus.com>
+ * config/tc-d30v.h: Include "write.h" for fixS.
+ (d30v_start_line, md_pcrel_from_section): Add function prototypes.
- * config/tc-d30v.c (md_assemble, do_assemble): Improve erroneous
- input handling.
+2000-07-05 Nick Clifton <nickc@cygnus.com>
-Mon Dec 7 09:48:34 1998 Catherine Moore <clm@cygnus.com>
+ * config/tc-d30v.c (write_2_short): Further changes to warning
+ messages produced when combining EITHER_BUT_PREFER_MU attributed
+ opcodes.
- * config/tc-arm.c (elf32_arm_force_relocation): Check for
- BFD_RELOC_ARM_PCREL_BRANCH.
+2000-07-05 DJ Delorie <dj@redhat.com>
+
+ * MAINTAINERS: new
+
+2000-07-04 Alexandre Oliva <aoliva@redhat.com>
+
+ * config/tc-arm.c (psrs): Accept combinations of flags.
+
+2000-07-03 Marek Michalkiewicz <marekm@linux.org.pl>
+
+ * 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 <kk@ddeorg.soft.net>
+
+ * 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 <snowball3@bigfoot.com>
+
+ * 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.
+
+Thu Jun 29 21:30:00 2000 Hans-Peter Nilsson <hp@axis.com>
+
+ * config/obj-aout.c (obj_aout_type): Do not ignore for undefined
+ symbols; create them.
+
+2000-06-29 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * 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 <aldyh@redhat.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <marekm@linux.org.pl>
+
+ * 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 <kazu@hxi.com>
+
+ * 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.
-Sun Dec 6 12:46:36 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-06-24 DJ Delorie <dj@cygnus.com>
- * configure.in: Define TARGET_BYTES_{BIG,LITTLE}_ENDIAN after
- checking the target type.
- (mips-dec-bsd*): Set endian to little.
- * configure: Rebuild.
+ * config/tc-i386.c (md_estimate_size_before_relax): Revert
+ more changes from Sept 1999
+ (tc_i386_fix_adjustable): ditto
+ (md_apply_fix3): ditto
- COFF weak symbol support, based on patches from Mark Elbrecht
- <snowball3@usa.net>:
- * 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
- <aymeric.vincent@emi.u-bordeaux.fr>.
- * aclocal.m4: Rebuild with current tools.
- * configure: Rebuild.
+2000-06-24 Frank Ch. Eigler <fche@redhat.com>
- * 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.
+ * 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().
- * expr.c (operator): And with 0xff to avoid problems with signed
- char.
+2000-06-24 Kazu Hirata <kazu@hxi.com>
-1998-12-03 Nick Clifton <nickc@cygnus.com>
+ * 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-fr30.c (md_cgen_lookup_reloc): Generate
- BFD_RELOC_FR30_48 instead of BFD_RELOC_FR30_32.
+ * config/tc-h8500.c: Fix typos in comments.
-1998-12-02 Nick Clifton <nickc@cygnus.com>
+2000-06-23 Frank Ch. Eigler <fche@redhat.com>
- * config/tc-fr30.c (md_cgen_lookup_reloc): Enable relocs for
- LDI:20 insn.
+ * expr.c (operand): Permit $hex literals if LITERAL_PREFIXDOLLAR_HEX
+ is defined.
-Thu Nov 26 11:23:48 1998 Dave Brolley <brolley@cygnus.com>
+2000-06-23 matthew green <mrg@redhat.com>
- * config/tc-fr30.c (md_pcrel_from_section): Restore previous calculation
- of pcrel point.
+ * expr.c (operand): Do not as_bad() if RELAX_PAREN_GROUPING is
+ defined. Fix error message for `[' grouping.
-Tue Nov 24 17:21:52 1998 Nick Clifton <nickc@cygnus.com>
+2000-06-22 Kazu Hirata <kazu@hxi.com>
- * config/tc-fr30.c (md_pcrel_from_section): Fix calculation of
- pcrel point.
+ * config/tc-h8300.c: Fix formatting and comment typos.
-Tue Nov 24 14:54:38 1998 Nick Clifton <nickc@cygnus.com>
+2000-06-22 Timothy Wall <twall@cygnus.com>
- * 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.
+ * config/tc-ia64.c (note_register_values): Move premature QP
+ notation clearing into the appropriate place.
-Fri Nov 20 11:41:13 1998 Nick Clifton <nickc@cygnus.com>
+2000-06-22 Alan Modra <alan@linuxcare.com.au>
- * config/tc-fr30.c (md_cgen_lookup_reloc): Add support for
- FR30_OPERAND_I32.
+ * 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.
-Thu Nov 19 15:01:29 1998 Nick Clifton <nickc@cygnus.com>
+ * 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-arm.c (md_parse_option): Add support for -marm7xxx and
- -marm6xxx command line switches.
+ * 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.
-1998-11-18 Doug Evans <devans@casey.cygnus.com>
+2000-06-21 H.J. Lu <hjl@gnu.org>
- * Makefile.am (DEP): Use $(srcdir)/../mkdep.
- (itbl-ops.o): Delete duplicate dependencies.
- Rebuild dependencies.
- Add fr30 dependencies.
+ * Makefile.am: Rebuild dependency.
* Makefile.in: Rebuild.
-Tue Nov 17 13:42:42 1998 Nick Clifton <nickc@cygnus.com>
-
- * 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 <brolley@cygnus.com>
-
- * po/gas.pot: Regenerated.
+2000-06-21 Kazu Hirata <kazu@hxi.com>
-Thu Nov 12 10:54:16 1998 Nick Clifton <nickc@cygnus.com>
+ * config/tc-h8300.c (parse_reg): Make the function static.
+ (parse_exp): Likewise.
- * config/tc-fr30.c (fr30_is_colon_insn): New name for
- fr30_is_label_start(). Also checks for delay slot insns.
+2000-06-20 DJ Delorie <dj@cygnus.com>
- * config/tc-fr30.c (fr30_is_label_start): New function: Handle
- FR30 instructions which contain a colon in the mnemonic.
+ * 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.
- * config/tc-fr30.h (TC_START_LABEL): Define this macro.
+2000-06-20 H.J. Lu <hjl@gnu.org>
-Wed Nov 11 09:58:21 1998 Nick Clifton <nickc@cygnus.com>
-
- * config/tc-fr30.c: Removed currently superflous code.
-
-Tue Nov 10 13:13:05 1998 Nick Clifton <nickc@cygnus.com>
-
- * 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 <clm@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <brolley@cygnus.com>
-
- * 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 <devans@canuck.cygnus.com>
-
- * config/tc-m32r.c (assemble_two_insns): Ensure both insns
- are 16 bit insns.
-
-Mon Nov 2 20:10:18 1998 Martin von Loewis <loewis@informatik.hu-berlin.de>
-
- * 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 <noer@cygnus.com>
-
- * configure.in: detect cygwin* instead of cygwin32*
- * configure: regenerate
-
-Tue Oct 27 13:18:40 1998 Nick Clifton <nickc@cygnus.com>
-
- * listing.c: Add support for producing a listing from piped
- input.
-
-Tue Oct 27 08:56:44 1998 Gavin Romig-Koch <gavin@cygnus.com>
-
- * config/tc-mips.c (hilo_interlocks): Remove mips_3900.
- (append_insn): Account for the tx39's multiply behavior.
-
-1998-10-26 Michael Meissner <meissner@cygnus.com>
-
- * 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 <clm@cygnus.com>
-
- * config/tc-sh.c (sh_fix_adjustable): Adjust EXTERN and
- WEAK handling.
-
-Thu Oct 22 12:41:33 1998 Catherine Moore <clm@cygnus.com>
-
- * cgen.c (gas_cgen_md_apply_fix3): Revert last change.
-
-Thu Oct 22 10:03:15 1998 Ron Unrau <runrau@cygnus.com>
-
- * config/tc-mips.c : support frame and regmask/fregmask when
- MIPS_STABS_ELF is specified.
-
-Wed Oct 21 11;34:51 1998 Catherine Moore <clm@cygnus.com>
-
- * 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.
+ * Makefile.am: Rebuild dependency.
+ * Makefile.in: Rebuild.
+ * configure: Likewise.
+ * doc/Makefile.in: Likewise.
-Tue Oct 20 11:18:28 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-06-20 Timothy Wall <twall@cygnus.com>
- * 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.
+ * 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.
- * 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
+2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
- * config/tc-i386.h (*_MNEM_SUFFIX): Rename from *_OPCODE_SUFFIX.
+ * doc/Makefile.am (CPU_DOCS): Added 68hc11 file.
+ * doc/c-m68hc11.texi: Document 68HC11 and 68HC12 port.
+ * doc/as.texinfo: Likewise.
- * config/tc-i386.c (i386_operand): Check for garbage after
- register name.
+ * 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.
-Tue Oct 20 10:49:42 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-06-18 Nick Clifton <nickc@redhat.com>
- * config/tc-i386.c (md_apply_fix3): Change handling of PCREL reloc
- for BFD_ASSEMBLER to only change value when COFF if TE_PE.
+ * symbols.c (resolve_symbol_value): Use bfd_octets_per_byte
+ instead of OCTETS_PER_BYTE.
-Mon Oct 19 20:20:42 1998 Catherine Moore <clm@cygnus.com>
+ * config/tc-v850.c: Fix compile time warnings.
+ * config/tc-ppc.c: Fix compile time warnings.
- * 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.
+2000-06-18 H.J. Lu <hjl@gnu.org>
-Mon Oct 19 12:35:43 1998 Doug Evans <devans@seba.cygnus.com>
+ * configure.in: Don't emulate i386-pc-pe-coff with i386coff.
+ * configure: Rebuild.
- * 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.
+2000-06-17 Mark Elbrecht <snowball3@bigfoot.com>
-Mon Oct 19 13:16:12 1998 Catherine Moore <clm@cygnus.com>
+ * config/obj-coff.c (obj_coff_weak): Typo fix: Change BFD_ASSEMLER
+ to BFD_ASSEMBLER.
- * config/tc-m32r.c (m32r_force_relocation): Fix typo.
+2000-06-16 Nick Clifton <nickc@cygnus.com>
-Sun Oct 18 18:48:57 1998 Jeffrey A Law (law@cygnus.com)
+ * config/tc-mips.c (md_parse_option): Accept RM5200,RM5230,
+ RM5231, RM5261, RM5721 and RM7000 as r5000 cpu variants.
- * config/tc-sh.c (md_assemble): Make sure the entire opcode is
- converted into lower case.
+ * doc/c-mips.texi: Document newly accepted cpu variants.
-Fri Oct 16 13:36:34 CDT Catherine Moore <clm@cygnus.com>
+2000-06-15 Ulf Carlsson <ulfc@engr.sgi.com>
- * 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.
+ * config/tc-mips.h: Remove definition of ONLY_STANDARD_ESCAPES.
-Wed Oct 14 11:33:38 1998 Nick Clifton <nickc@cygnus.com>
+2000-06-13 Ulf Carlsson <ulfc@engr.sgi.com>
- * doc/c-arm.texi (ARM Directives): Document .ltorn directive.
+ * macro.c (getstring): Make it possible to escape the quote
+ character.
-Mon Oct 12 11:07:21 1998 Nick Clifton <nickc@cygnus.com>
+Tue Jun 13 20:58:28 2000 Catherine Moore <clm@redhat.com>
- * config/tc-m32r.c (assemble_parallel_insn): Convert second opcode
- to lower case before parsing.
+ * config/tc-hppa.c (pa_export): Weak symbols can be global.
- * config/tc-d30v.c (parallel_ok): Ignore conflicts when explicitly
- parallel insns modift buts in the PSW as a side effect.
+2000-06-13 H.J. Lu <hjl@gnu.org>
-Thu Oct 8 10:18:33 1998 Nick Clifton <nickc@cygnus.com>
+ * configure: Regenerate.
- * 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.
+2000-06-09 Alan Modra <alan@linuxcare.com.au>
- (parallel_ok): Disallow parallel instructions that both modify the
- same flag register.
+ * 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.
- (find_format): Generate a warning if an odd numbered register is
- used as the first register in a mutli-register instruction.
+ * read.c (is_end_of_line): Remove ifdef TC_HPPA.
-Wed Oct 7 14:09:14 1998 Nick Clifton <nickc@cygnus.com>
+ * 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-d30v.c (md_apply_fix3): Do not assume that bad
- relocations are always associated with a symbol.
+ * 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.
-Tue Oct 6 09:31:15 1998 Catherine Moore <clm@cygnus.com>
+ * config/tc-arm.c (line_separator_chars): Always use `;', not just
+ for TE_LINUX.
- * tc-sparc.h (TC_FORCE_RELOCATION): Define.
- (elf32_sparc_force_relocation): Declare.
- * tc-sparc.c (md_apply_fix3): Handle vtable relocs.
- (tc_gen_reloc): Handle vtable relocs.
- (elf32_sparc_force_relocation): New.
+2000-06-08 Nick Clifton <nickc@cygnus.com>
-Mon Oct 5 09:25:32 1998 Catherine Moore <clm@cygnsu.com>
+ * config/tc-arm.c (cons_fix_new_arm): Assign correct reloc value
+ for size 1 fixes.
- * 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.
+2000-06-08 David O'Brien <obrien@FreeBSD.org>
-Mon Oct 5 00:48:52 1998 Jeffrey A Law (law@cygnus.com)
+ * configure.in (VERSION): Update to show this is the CVS mainline.
- * 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".
+2000-06-08 Matthew Jacob <mjacob@feral.com>
-Sun Oct 4 20:57:43 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * 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.
- * 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.
+2000-06-08 James E. Wilson <wilson@cygnus.com>
- From Jeff B Epler <jepler@usgs.gov>
- * doc/c-i386.texi (i386-SIMD): New section.
+ * 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.
-Thu Oct 1 15:37:54 1998 Richard Henderson <rth@cygnus.com>
+2000-06-07 David Mosberger <davidm@hpl.hp.com>
- * read.c (discard_rest_of_line): New function.
- * read.h: Declare it.
- * config/tc-alpha.c (s_alpha_mask, s_alpha_frame): Use it.
+ * config/tc-ia64.c: Add missing prototypes.
+ (generate_unwind_image): Cast argument to output_unw_records call.
-Thu Oct 1 10:33:53 1998 Nick Clifton <nickc@cygnus.com>
+Wed Jun 7 22:44:14 2000 Denis Chertykov <denisc@overta.ru>
- * config/tc-d10v.c (find_symbol_matching_register): New function.
- (find_opcode): Cope with the case where a register name matches
- a symbol name.
+ * config/tc-avr.c (avr_operand): fix the formatting of the comment.
-Wed Sep 30 10:52:32 1998 Nick Clifton <nickc@cygnus.com>
+Wed Jun 7 21:26:15 2000 Denis Chertykov <denisc@overta.ru>
- * 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-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.
- * config/tc-v850.h (MD_PCREL_FROM_SECTION): Define.
+2000-06-04 Alan Modra <alan@linuxcare.com.au>
-Mon Sep 28 11:01:20 1998 Nick Clifton <nickc@cygnus.com>
+ * read.c (is_end_of_line): No ';' for TC_HPPA. Add missing
+ initializers too.
- * config/tc-d10v.c (find_opcode): Generate an error if a register
- is supplied for an operand that should not be a register.
+2000-06-03 H.J. Lu <hjl@gnu.org>
-Fri Sep 25 10:04:21 1998 Nick Clifton <nickc@cygnus.com>
+ * read.c (is_end_of_line): Put back `;'.
- * config/tc-d30v.c (write_2_short): But do allow delayed branch
- instructions to have another instruction in the right bin.
+2000-06-03 Alan Modra <alan@linuxcare.com.au>
-Thu Sep 24 09:28:34 1998 Nick Clifton <nickc@cygnus.com>
+ * config/tc-i386.c (md_shortopts): Remove 'm', add 'q' to non-elf.
- * config/tc-d30v.c (write_2_short): Do not allow instructions in
- the right container if the left container holds a branch
- instruction.
+2000-06-01 Alan Modra <alan@linuxcare.com.au>
-Wed Sep 23 10:54:29 1998 Nick Clifton <nickc@cygnus.com>
+ * 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.
- * 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.
+ * read.c (is_end_of_line): Use 1 instead of 99. Don't set `;'
+ entry (or `!' entry for TC_HPPA).
-Tue Sep 22 17:49:16 1998 Nick Clifton <nickc@cygnus.com>
+ * 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-d30v.c (write_2_short): Implement EITHER_BUT_PREFER_MU
- execution unit class.
+ * 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.
- (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.
+2000-06-01 Scott Bambrough <scottb@netwinder.org>
-Tue Sep 22 16:40:52 1998 Jim Wilson <wilson@cygnus.com>
+ * config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly.
- * config/obj-elf.h (ECOFF_DEBUGGING): Add missing parens.
+2000-05-29 Nick Clifton <nickc@cygnus.com>
-Tue Sep 22 15:44:21 1998 Nick Clifton <nickc@cygnus.com>
+ * config/tc-sh.c: Fix compile time warning messages.
- * 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.
+ * config/tc-mips.c: Fix compile time warning messages.
-Mon Sep 21 10:42:57 1998 Nick Clifton <nickc@cygnus.com>
+2000-05-29 Philip Blundell <philb@gnu.org>
- * config/tc-m32r.c (m32r_do_align): After inserting NOPs, reset
- the previous insn to empty.
+ * doc/as.texinfo: Update copyright dates.
+ (Local Labels): Delete misplaced mention of ARM.
+ * NEWS: Mention ARM ELF support.
-1998-09-20 Michael Meissner <meissner@cygnus.com>
+2000-05-27 Alexandre Oliva <aoliva@cygnus.com>
- * config/tc-ppc.c (md_apply_fix3): Do not break string into two
- pieces, forcing the use of an ANSI compiler.
+ * 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.
-Sun Sep 20 00:58:12 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+2000-05-27 Alan Modra <alan@linuxcare.com.au>
- * 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.
+ * 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.
-Tue Sep 15 08:51:07 1998 Catherine Moore <clm@cygnus.com>
-
- * 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.
+2000-05-26 Jakub Jelinek <jakub@redhat.com>
+
+ * 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.
+
+Thu May 4 15:27:07 2000 Donald Lindsay <dlindsay@cygnus.com>
+
+ * 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 <davidm@hpl.hp.com>
+
+ * 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.
-Wed Sep 9 11:27:16 1998 Richard Henderson <rth@cygnus.com>
+Tue May 23 00:57:05 2000 Hans-Peter Nilsson <hp@axis.com>
- * config/tc-i386.c (i386_operand): Fix typo in last patch.
+ * configure.in (i386-*-freebsd a.out entry): Quote properly.
+ * configure: Regenerate.
-Tue Sep 8 18:10:01 1998 Catherine Moore <clm@cygnus.com>
-
- * config/tc-arm.c (arm_adjust_symtab): Move #ifdef
- OBJ_COFF so that routine is defined for a.out format.
+2000-05-23 Alan Modra <alan@linuxcare.com.au>
-Tue Sep 8 15:56:19 1998 Richard Henderson <rth@cygnus.com>
+ * 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.
- * config/tc-i386.c (i386_operand): Detect non-segment registers
- used as segment prefixes.
+ * frags.c (frag_new): Update fr_var comments.
+ * frags.h (struct frag): Ditto.
-Sat Sep 5 19:00:38 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-05-22 Richard Henderson <rth@cygnus.com>
+
+ * 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.
+
+Mon May 22 22:43:32 2000 Hans-Peter Nilsson <hp@axis.com>
+
+ * 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.
- * ehopt.c (check_eh_frame): Check the size of the FDE, and don't
- optimize across FDE boundaries.
+2000-05-22 Alan Modra <alan@linuxcare.com.au>
- * config/obj-coff.c (obj_coff_section): Preserve any link once
- flags when setting the section flags.
+ * 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.
-Fri Sep 4 17:07:14 1998 Nick Clifton <nickc@cygnus.com>
+Sat May 20 16:41:55 2000 Hans-Peter Nilsson <hp@axis.com>
- * config/tc-arm.h (obj_adjust_symtab): Fixed typo.
- * config/tc-arm.c (armelf_adjust_symtab): Reformatted.
+ * stabs.c (aout_process_stab): Make global.
+ (s_desc): Add ATTRIBUTE_UNUSED to args as appropriate.
+ * read.h (aout_process_stab): Declare.
-Fri Sep 4 13:57:43 1998 Jakub Jelinek <jj@sunsite.ms.mff.cuni.cz>
+ * configure.in (EMULATIONS) [i386aout, i386coff, i386elf]:
+ Generalize to *aout, *coff *elf.
+ * configure: Regenerated.
- * config/tc-sparc.c (in_signed_range): Sign extend 32-bit words
- to the host width.
+ * doc/internals.texi (Object format backend): Say
+ SEPARATE_STAB_SECTIONS needs to be nonzero, not just defined.
-Wed Sep 2 11:31:14 1998 Richard Henderson <rth@cygnus.com>
+ * Makefile.am (TARG_ENV_HFILES): Delete te-multi.h.
+ * Makefile.in: Regenerated.
- * frags.c (frag_grow): Include the size of the frag struct in the
- obstack chunk size.
+2000-05-19 Catherine Moore <clm@cygnus.com>
- * subsegs.c (subseg_set_rest): Adjust the seginfo frchain start
- if the new subseg comes before the old.
+ * cgen.h (GAS_CGEN_MAX_FIXUPS): Check if already defined.
-Tue Sep 1 15:01:33 1998 Jakub Jelinek <jj@sunsite.ms.mff.cuni.cz>
+2000-05-18 Alan Modra <alan@linuxcare.com.au>
- * config/tc-sparc.c (sparc_ip): Allow all digits in an instruction
- to handle edge8 and edge16.
+ * config/tc-hppa.c (md_apply_fix): Mask out immediate bits of
+ instruction to reflect change in re_assemble_*.
-Mon Aug 31 09:51:14 1998 Richard Henderson <rth@cygnus.com>
+Thu May 18 10:52:14 2000 Jeffrey A Law (law@cygnus.com)
- * config/obj-elf.c (obj_elf_vtable_inherit): Print error message
- before we clobber the symbol involved.
+ * configure.in (hppa-*-hpux11*): If the cpu is hppa*64*, then
+ build PA64 ELF tools.
+ * configure: Rebuilt.
-Mon Aug 31 10:58:06 1998 Catherine Moore <clm@cygnus.com>
+2000-05-17 Alan Modra <alan@linuxcare.com.au>
- * 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 <rth@cygnus.com>
+ * Makefile.am: Regenerate dependencies.
+ * Makefile.in: Regenerate.
- * 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.
+2000-05-15 Nick Clifton <nickc@cygnus.com>
-Mon Aug 24 13:40:21 1998 Nick Clifton <nickc@cygnus.com>
+ * 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.
- * config/tc-arm.c (md_show_usage): Improve formatting of --help output.
+2000-05-14 David O'Brien <obrien@FreeBSD.org>
-Fri Aug 21 18:43:48 1998 Nick Clifton <nickc@cygnus.com>
+ * 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 <alan@linuxcare.com.au>
+
+ * 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 <kazu@hxi.com>
+
+ * config/tc-h8300.c (do_a_fix_imm): Output a reloc for no
+ X_add_symbol L_32 case.
- * 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 <devans@canuck.cygnus.com>
+2000-05-14 David O'Brien <obrien@FreeBSD.org>
- * read.h (generate_lineno_debug): Add prototype.
- * read.c (generate_lineno_debug): Make non-static.
+ * config/te-freebsd.h: New file.
-Thu Aug 20 23:17:04 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-05-13 Alan Modra <alan@linuxcare.com.au>
- * config/tc-i386.c (md_assemble): Only warn for address/data size
- prefixes.
+ * asintl.h (gettext, dgettext, dcgettext, textdomain,
+ bindtextdomain): Replace defines with those from intl/libgettext.h
+ to quieten gcc warnings.
-Thu Aug 20 14:45:08 1998 Nick Clifton <nickc@cygnus.com>
+ * NEWS: Mention x86 .arch and -q.
- * config/tc-arm.c (arm_fix_adjustable): Do not adjust relocations
- against Thumb function names, as the linker needs this information.
+ * 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.
-1998-08-20 Vladimir N. Makarov <vmakarov@cygnus.com>
+ * as.c (parse_args): In case OPTION_DEFSYM, use a valueT to hold
+ the symbol value, and use bfd_scan_vma if BFD_ASSEMBLER.
- * 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?".
+2000-05-13 Alan Modra <alan@linuxcare.com.au>
+ Alexander Sokolov <robocop@netlink.ru>
-Wed Aug 19 09:30:16 1998 Nick Clifton <nickc@cygnus.com>
+ * doc/c-i386.texi (i386-Arch): New section.
+ (i386-Syntax): Mention .intel_syntax and .att_syntax.
- * 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.
+ * 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.
-Tue Aug 18 11:59:43 1998 Catherine Moore <clm@cygnus.com>
+ * 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.
- * tc-arm.h: Define obj_fix_adjustable for OBJ_ELF.
- * tc-arm.c (arm_fix_adjustable): New routine.
+2000-05-12 Alexandre Oliva <aoliva@cygnus.com>
-1998-08-13 Vladimir N. Makarov <vmakarov@cygnus.com>
+ * 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.
- * 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.
+2000-05-11 Ulf Carlsson <ulfc@engr.sgi.com>
-Thu Aug 13 15:08:42 1998 Ian Lance Taylor <ian@cygnus.com>
+ * config/tc-mips.c (md_estimate_size_before_relax): Use the
+ external version of the relocation for weak symbols.
- * 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.
+2000-05-08 David Mosberger <davidm@hpl.hp.com>
-Wed Aug 12 18:47:38 1998 Ian Lance Taylor <ian@cygnus.com>
+ * 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.
- * config/tc-hppa.c (pa_enter): Call as_bad rather than abort.
- (pa_leave): Likewise.
+2000-05-08 Alan Modra <alan@linuxcare.com.au>
-Wed Aug 12 13:25:03 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * as.h: #include "file", not <file> 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.
- * config/tc-i386.c (md_assemble): Emit a warning for stand-alone
- prefixes.
- (i386_operand): Fix an error message.
+2000-05-08 Michael Sokolov <msokolov@ivan.Harhan.ORG>
-Tue Aug 11 14:44:32 1998 Nick Clifton <nickc@cygnus.com>
+ * 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.
- * doc/c-arm.texi (ARM Directives): Document .req directive.
+2000-05-04 Alan Modra <alan@linuxcare.com.au>
- * 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.
+ * as.c (parse_args): Just mention current year in printed
+ copyright message.
-Mon Aug 10 15:39:56 1998 Richard Henderson <rth@cygnus.com>
+2000-05-03 J.T. Conklin <jtc@redback.com>
- * config/tc-alpha.c (tc_gen_reloc): Bias WEAK symbols just as
- we do for EXTERN.
+ * config/tc-ppc.c (pre_defined_registers): Add entries for vector
+ unit registers.
+ (md_parse_option): Recognize -m7400.
-Mon Aug 10 15:06:18 1998 Nick Clifton <nickc@cygnus.com>
+2000-05-03 Ian Lance Taylor <ian@zembu.com>
- * 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 <alan@spri.levels.unisa.edu.au>
-
- config/tc-i386.c (i386_operand): Size immediate constants by
- suffix (erroneously removed as part of July 7 change).
+ * config/atof-ieee.c (gen_to_words): When adding carry back in,
+ don't permit lp to become less than the words array.
-Sun Aug 9 20:45:32 1998 Catherine Moore <clm@cygnus.com>
+2000-05-03 Rodney Brown <RodneyBrown@pmsc.com>
- * 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.
+ config/tc-mcore.c (md_apply_fix3): BFD_RELOC_MCORE_PCREL_IMM11BY2
+ Fix little-endian case.
-Sat Aug 8 15:21:28 1998 Richard Henderson <rth@cygnus.com>
+2000-05-03 David O'Brien <obrien@NUXI.com>
- * config/tc-alpha.c (alpha_fix_adjustable): Don't adjust weak syms.
+ * as.c (parse_args): Update copyright.
-Wed Aug 5 15:54:14 1998 Nick Clifton <nickc@cygnus.com>
+2000-05-03 Mark Elbrecht <snowball3@bigfoot.com>
- * config/tc-arm.c (md_begin): Set BFD private flags depending upon
- command line switches passed to assembler.
+ * gas/config/tc-i386.h (SUB_SEGMENT_ALIGN): If TE_GO32, return 4
+ for the .bss section too.
-Mon Aug 3 14:02:52 1998 Doug Evans <devans@seba.cygnus.com>
+2000-05-02 Alan Modra <alan@linuxcare.com.au>
- * 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 <rth@cygnus.com>
-
- * 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 <runrau@cygnus.com>
-
- 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 <clm@cygnus.com>
-
- * 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 <fche@cygnus.com>
-
- * 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 <scox@cygnus.com>
-
- * 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 <devans@canuck.cygnus.com>
-
- * configure.in (install_tooldir): Allow target to specify whether
- it wants to be installed in $(tooldir)/bin.
+ * configure.in: Set em=linux for hppa-*-linux.
* 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 <devans@canuck.cygnus.com>
-
- * 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 <ian@cygnus.com>
-
- * Makefile.am (install-exec-local): Don't remove the file before
- checking whether $(bindir) == $(tooldir)/bin. From Maciej
- W. Rozycki <macro@ds2.pg.gda.pl>.
- * Makefile.in: Rebuild.
-
-Fri Jul 24 09:13:46 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * 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 <ian@cygnus.com>
-
- * 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 <devans@seba.cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * config/tc-m32r.c (ms_show_usage): Formatting changes.
-
-Wed Jul 15 15:38:28 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * 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 <rth@cygnus.com>
-
- * configure.in (i386-*-beos{pe,elf,}*): Recognize.
-
-Tue Jul 14 12:33:44 1998 Chris Torek <torek@bsdi.com>
-
- * 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 <ian@cygnus.com>
-
- * 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 <alan@spri.levels.unisa.edu.au>
-
- * 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 <ian@cygnus.com>
-
- * 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 <alan@spri.levels.unisa.edu.au>
-
- * 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 <nickc@cygnus.com>
-
- * 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.
+ * doc/Makefile.in: Regenerate with correct automake.
+
+ * frags.c (frag_grow): Sanity check chunk_size.
+
+ * config/obj-elf.h: #include "bfd.h" not <bfd.h>
+ * 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.
+
+Mon May 1 08:54:23 2000 Catherine Moore <clm@cygnus.com>
+
+ * macro.c (macro_expand_body): Don't prepend macro number with zeroes.
+
+Mon May 1 14:19:39 2000 Denis Chertykov <denisc@overta.ru>
+
+ * 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.
-Thu Jul 9 12:09:57 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+2000-05-01 Alan Modra <alan@linuxcare.com.au>
- * 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 <ian@cygnus.com>
-
- * 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 <ian@cygnus.com>
-
- * 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 <rth@cygnus.com>
-
- * 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 <alan@spri.levels.unisa.edu.au>
-
- * 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 <ian@cygnus.com>
-
- Based on patch from Matt Semersky <matts@scd.hp.com>:
- * 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 <ian@cygnus.com>
-
- * 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 <kkaempf@rmi.de>
-
- * 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.
-
- * 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 <rth@cygnus.com>
-
- * 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 <devans@seba.cygnus.com>
-
- * Makefile.am (CGEN_CPU_PREFIX): New variable.
- (cgen.o): Use it.
- * Makefile.in: Regenerate.
- * configure.in: AC_SUBST cgen_cpu_prefix.
+ * 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.
-Wed Jul 1 21:38:56 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * config/tc-sh (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 <ian@cygnus.com>
-
- * 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 <clm@cygnus.com>
-
- * config/tc-v850.c (v850_comm): Restore old section
- after common processing.
-
-Wed Jun 24 11:50:54 1998 Klaus Kaempf <kkaempf@progis.de>
-
- * config/obj-vms.c (Create_VMS_Object_File): Force binary file.
-
-Tue Jun 23 17:47:31 1998 Jim Wilson <wilson@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <mrs@wrs.com>
-
- * 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 <ian@cygnus.com>
-
- * config/obj-coff.c (c_symbol_merge): Fix copying of auxiliary
- information.
-
-Mon Jun 22 15:18:58 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * 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 <ian@cygnus.com>
-
- * config/tc-sh.c (md_apply_fix): Handle weak symbols correctly if
- BFD_ASSEMBLER.
-
-Sun Jun 21 12:26:36 1998 Nick Clifton <nickc@cygnus.com>
-
- * 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 <ian@cygnus.com>
-
- * write.c (adjust_reloc_syms): Never adjust relocs against weak
- symbols.
- * config/tc-mips.c (md_apply_fix): Adjust accordingly.
+2000-04-29 Andreas Jaeger <aj@suse.de>
-Fri Jun 19 09:50:17 1998 Jeffrey A Law (law@cygnus.com)
+ * as.h: Correctly check GCC version.
- * 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.
+2000-04-26 David O'Brien <obrien@FreeBSD.org>
-Fri Jun 19 00:44:19 1998 Jeffrey A Law (law@cygnus.com)
+ * doc/as.1: Fix unbalanced brackets.
- * config/tc-h8300.c (get_operand): Fix typos in ldm/stm support.
+ * config/tc-i386.c (comment_chars): Don't use '/' as comment start if
+ TE_FreeBSD.
+ (line_comment_chars): Set to '/' if TE_FreeBSD.
-Wed Jun 17 13:07:05 1998 Ian Lance Taylor <ian@cygnus.com>
+Tue Apr 25 11:02:02 2000 Jeffrey A Law (law@cygnus.com)
- * config/tc-mips.c (md_show_usage): Fix -mipsN usage.
+ * configure.in: Configury support for PA64 (currently disabled).
+ * configure: Rebuilt.
-Tue Jun 16 13:06:21 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-04-25 Machida Hiroyuki <machida@sm.sony.co.jp>
- * 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.
+ * config/tc-mips.c (s_change_sec): Use record_alignment, not
+ bfd_set_section_alignment.
-Fri Jun 12 13:36:54 1998 Tom Tromey <tromey@cygnus.com>
+2000-04-25 Alan Modra <alan@linuxcare.com.au>
- * po/Make-in (all-yes): If maintainer mode, depend on .pot file.
- ($(PACKAGE).pot): Unconditionally depend on POTFILES.
+ * config/tc-i386.c (offset_in_range): Ensure shift counts are less
+ than 32.
-1998-06-12 Vladimir N. Makarov <vmakarov@cygnus.com>
+2000-04-24 Nick Clifton <nickc@cygnus.com>
- * config/tc-d10v.c (md_apply_fix3): Checking displacement
- constraint in instructions REP & REPI.
+ * 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.
-Thu Jun 11 08:56:46 1998 Nick Clifton <nickc@cygnus.com>
+2000-04-24 Mark Klein <mklein@dis.com>
- * config/tc-d30v.c (md_apply_fix3): Catch BFD_RELOC_8,
- BFD_RELOC_16, BFD_RELOC_64 and issue appropriate error messages.
+ * obj-som.c: Terminate obj_pseudo_table.
- (check_range): If the operand is shifted, then shift the number
- before checking its range.
+Mon Apr 24 15:21:11 2000 Clinton Popetz <cpopetz@cygnus.com>
- * write.c (adjust_reloc_syms): Add more checks for NULL pointers.
+ * 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.
+
+Sun Apr 23 16:45:45 2000 Denis Chertykov <denisc@overta.ru>
+
+ * 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 <twall@cygnus.com>
+
+ * config/tc-ia64.c (pseudo_func[]): Add new "nat" entry equivalent
+ to "natval".
+ (operand_match): Conditionally insert default bit values for IMMU9.
- * config/tc-v850.c (v850_comm): Set SEC_COMMON bit on special
- common sections.
+2000-04-14 Matthew Green <mrg@cygnus.com>
-Wed Jun 10 17:26:35 1998 Nick Clifton <nickc@cygnus.com>
+ * configure.in: Add NetBSD/sparc ELF and NetBSD/sparc64 support.
+ * configure: Rebuilt.
- * config/tc-v850.c (v850_comm): Create special sections as needed.
+Fri Apr 21 14:29:43 2000 Jeffrey A Law (law@cygnus.com)
+ Jason Eckhardt <jle@cygnus.com>
-1998-06-10 Vladimir N. Makarov <vmakarov@cygnus.com>
+ * config/tc-hppa.c (md_apply_fix): Handle new PA2.0 formats.
- * config/tc-d10v.c (write_2_short): Addition of swapping
- instructions for sequential and reverse sequential order when
- given order is not possible.
+ * config/tc-hppa.c (CHECK_ALIGN): New macro.
+ Added handling of new operand types l,y,&,fe,fE,fx.
-Tue Jun 9 13:52:53 1998 Ian Lance Taylor <ian@cygnus.com>
+Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com>
+ David Mosberger <davidm@hpl.hp.com>
+ Timothy Wall <twall@cygnus.com>
+ Andrew MacLeod <amacleod@cygnus.com>
+ Jim Wilson <wilson@cygnus.com>
- * Makefile.am: Rebuild dependencies.
- (DEP_INCLUDES): Fix reference to intl build directory.
+ * 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.
-
-Tue Jun 9 12:20:05 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <alan@spri.levels.unisa.edu.au>
-
- * 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
- <martynas@nm3.ktu.lt>:
- * 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 <hjl@gnu.org>:
- * 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 <clm@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <alan@spri.levels.unisa.edu.au>
-
- * 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 <nickc@cygnus.com>
-
- * config/tc-d30v.c (md_assemble): Store previous segment state
- with previous instruction.
-
-Wed Jun 3 18:21:56 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * 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 <ian@cygnus.com>
-
- * configure.in: Recognize m5200 as a cpu_type of m68k.
- * aclocal.m4: Rebuild with current libtool.
+ * 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.
-Wed Jun 3 14:11:59 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * 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 <ian@cygnus.com>
-
- * config/tc-m68k.c (relaxable_symbol): If TARGET_OS is "elf", all
- symbols are relaxable.
-
-Wed Jun 3 09:16:00 1998 Catherine Moore <clm@cygnus.com>
-
- * 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 <ian@cygnus.com>
-
- From Matt Semersky <matts@scd.hp.com>:
- * 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 <kkaempf@progis.de>
-
- * 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 <rankin@eql.caltech.edu>
-
- * 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 <devans@canuck.cygnus.com>
-
- * 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 <devans@canuck.cygnus.com>
-
- * 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 <ian@cygnus.com>
-
- From Andrew Crabtree <andrewc@typhoon.rose.hp.com>:
- * 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 <devans@canuck.cygnus.com>
-
- 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 <ian@cygnus.com>
-
- * 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 <rankin@eql.caltech.edu>
-
- * 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 <ian@cygnus.com>
-
- * symbols.c (symbol_find_base): Fix case insensitive symbol name
- code. From Chris Moller <moller@bops.com>.
-
- Based on patch from Klaus Kaempf <kkaempf@progis.de>:
- * 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 <ian@cygnus.com>
-
- * 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 <scox@equinox.cygnus.com>
-
- * 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.
+2000-04-21 Richard Henderson <rth@cygnus.com>
- * config/tc-sparc.h (cons_fix_new_sparc): Added.
-
-Thu May 21 15:02:41 1998 Nick Clifton <nickc@cygnus.com>
+ * config/tc-d30v.c (write_2_short): Disregard opcode1->ecc when
+ bundling a non-delayed branch type instruction.
- * config/tc-arm.c (find_real_start): Relax definition of local
- labels.
-
-Tue May 19 16:59:44 1998 Nick Clifton <nickc@cygnus.com>
-
- * 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 <clm@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * config/tc-v850.c (md_assemble): Remove artificially created
- register name symbols.
-
-Mon May 18 13:47:06 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * write.c (fixup_segment): Change "segment" to "section" in
- error message.
-
-Mon May 18 16:55:40 1998 Michael Meissner <meissner@cygnus.com>
-
- * write.c (fixup_segment): Change sym1-sym2 message again.
-
-Mon May 18 09:31:43 1998 Michael Meissner <meissner@cygnus.com>
-
- * write.c (fixup_segment): Improve error message for sym1-sym2
- errors when sym1 is in a different segment from sym2.
+2000-04-20 Alexandre Oliva <aoliva@cygnus.com>
-Wed May 13 10:16:37 1998 Doug Evans <devans@canuck.cygnus.com>
+ * config/tc-mn10300.c (HAVE_AM30): Define.
+ (md_assemble): Use it.
- * 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 <rth@cygnus.com>
-
- * 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.
+2000-04-19 Alan Modra <alan@linuxcare.com.au>
-Thu May 7 11:47:22 1998 Doug Evans <devans@canuck.cygnus.com>
+ * config/obj-elf.c (obj_elf_change_section): Check for changed
+ section attributes.
- * Makefile.am: Update with `make dep-am'.
- (HFILES): Add cgen.h.
- (cgen.o): Depend on cgen.h.
+ * 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.
- * cgen.c (cgen_md_apply_fix3): Don't pass newline to as_warn_where.
-
-Thu May 7 13:20:56 1998 Anders Blomdell <anders.blomdell@control.lth.se>
-
- * 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 <fche@cygnus.com>
-
- * 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 <fche@cygnus.com>
-
- * 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 <fche@cygnus.com>
-
- * 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 <meissner@cygnus.com>
-
- * cgen.c (cgen_asm_finish_insn): Fix typo.
-
-Thu May 7 02:19:14 1998 Doug Evans <devans@charmed.cygnus.com>
-
- * 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 <kkaempf@progis.de>
-
- * 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 <kkaempf@progis.de>
-
- * doc/c-vax.texi: Correct and extend vax/vms documentation.
-
-Wed May 6 11:51:51 1998 Richard Henderson <rth@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <gavin@cygnus.com>
-
- * 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 <schwab@issan.informatik.uni-dortmund.de>
-
- * 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 <ian@cygnus.com>
-
- * 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 <fnf@ninemoons.com>
-
- * read.c (sizeof_leb128): Referenced externally by write.c so
- don't inline.
-
-Wed Apr 29 15:45:57 1998 Michael Meissner <meissner@cygnus.com>
-
- * 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 <tromey@cygnus.com>
-
- * as.c (main): Conditionally call setlocale.
- * gasp.c (main): Likewise.
- * asintl.h: Include <locale.h> if HAVE_LOCALE_H.
- (LC_MESSAGES): Now can be defined even when ENABLE_NLS.
-
-Tue Apr 28 18:33:23 1998 Frank Ch. Eigler <fche@cygnus.com>
-
- * config/tc-d30v.c (md_show_usage): Correct gettext typo.
-
-Tue Apr 28 12:16:30 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-04-19 Michael Sokolov <msokolov@ivan.Harhan.ORG>
- * 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.
+ * Makefile.am (YACC, LEX): Get them from configure.
-Tue Apr 28 11:35:56 1998 Frank Ch. Eigler <fche@cygnus.com>
+2000-04-18 H.J. Lu (hjl@gnu.org)
- * ecoff.c (ecoff_build_lineno): Do not use dummy first_lineno
- for line numbers for assembly source.
+ * config/tc-i386.c (offset_in_range): Use addressT instead of
+ bfd_vma for non-bfd assemblers.
-Mon Apr 27 15:58:46 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-04-17 Alan Modra <alan@linuxcare.com.au>
- * configure.in: Change version number to 2.9.4
- * configure: Rebuild.
+ * config/tc-i386.c (offset_in_range): Sign extend val so BFD64
+ doesn't give spurious errors.
-Mon Apr 27 12:07:33 1998 Doug Evans <devans@seba.cygnus.com>
+2000-04-14 Michael Sokolov <msokolov@ivan.Harhan.ORG>
- * cgen.c (cgen_asm_finish_insn): New arg relax_p. All callers updated.
+ * as.h (SEEK_SET): Define if undefined.
-Mon Apr 27 15:16:12 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-04-13 Alan Modra <alan@linuxcare.com.au>
- * ecoff.h: Change symbolS in function declaration to struct
- symbol.
+ * config/tc-arm.c (md_apply_fix3): Don't use UL suffix on
+ constants, and don't assume offsetT is 32 bits.
-Sun Apr 26 13:44:22 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * 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 <rth@cygnus.com>
-
- * 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 <ian@cygnus.com>
-
- * 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 <phdm@macqel.be>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <ian@cygnus.com>
-
- * 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 <nickc@cygnus.com>
-
- * 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 <tromey@cygnus.com>
-
- * po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).
-
-Wed Apr 22 14:52:36 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * 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 <tromey@scribbles.cygnus.com>
-
- * 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 <alan@spri.levels.unisa.edu.au>
-
- * 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 <ian@cygnus.com>
-
- * 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 <scox@cygnus.com>
-
- * 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.
+2000-04-12 Andrew Cagney <cagney@b1.cygnus.com>
- * config/tc-sparc.h (SPARC_BIENDIAN) Always define.
-
-Sat Apr 18 01:19:01 1998 Jeffrey A Law (law@cygnus.com)
+ * 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-mips.c (mips_ip): Note when we use get match on
- the full instruction name.
+ * config/tc-d10v.c (md_apply_fix3): Add paren around &&.
-Wed Apr 15 15:17:27 1998 Richard Henderson <rth@cygnus.com>
+2000-04-12 Nick Clifton <nickc@cygnus.com>
- * symbols.c (resolve_symbol_value) [O_symbol]: Also store the symbol
- back into the expression to handle add/sub simplification correctly.
+ * config/tc-d10v.c (find_opcode): Correctly calculate position of
+ symbol in frag chain.
-Wed Apr 15 07:06:04 1998 Catherine Moore <clm@cygnus.com>
+2000-04-10 Alan Modra <alan@linuxcare.com.au>
- * config/tc-mips.c (hilo_interlocks): Remove 4300.
+ * 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.
-Mon Apr 13 16:51:04 1998 Nick Clifton <nickc@cygnus.com>
+2000-04-09 Nick Clifton <nickc@cygnus.com>
- * config/tc-arm.c (do_msr): Support undocumented 'msr cpsr_flg,
- #<n>' instruction.
+ * Makefile.am (CPU_TYPES): Add 'avr'.
+ (TARGET_CPU_CFILES): Add 'tc-avr.c'.
+ (TARGET_CPU_HFILES): Add 'tc-avr.h'.
-Thu Apr 9 10:29:42 1998 Doug Evans <devans@canuck.cygnus.com>
+ * Makefile.in: Regenerate.
- * 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.
+ * doc/as.texinfo: Add M32R documentation.
-Wed Apr 8 16:16:11 1998 Doug Evans <devans@canuck.cygnus.com>
+Fri Apr 7 15:56:57 2000 Andrew Cagney <cagney@b1.cygnus.com>
- * symbols.c (print_binary): New function.
- (print_expr_1): Call it.
+ * 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.
-Mon Apr 6 12:06:39 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+2000-04-07 Nick Clifton <nickc@cygnus.com>
- * config/tc-m68k.c (m68k_ip, case "#B"): Install the offset of the
- operand in the opcode.
+ * 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.
-Fri Apr 3 11:58:19 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+Wed Apr 5 22:26:32 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
- * 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.
+ * config/tc-sh.c (get_operands): There's no third operand if the
+ first operand is an immediate.
-Fri Apr 3 11:44:34 1998 Ian Lance Taylor <ian@cygnus.com>
+Wed Apr 5 22:07:19 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
- * doc/as.texinfo (Invoking): Clarify -Wa example.
+ * 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.
-Fri Apr 3 09:12:23 1998 Gavin Koch <gavin@cetus.cygnus.com>
+Wed Apr 5 06:35:45 2000 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
- * 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-sparc.c (sparc_ip): Avoid string pasting.
- * 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.
+Tue Apr 4 19:27:50 2000 Hans-Peter Nilsson <hp@axis.com>
-Thu Apr 2 16:36:47 1998 Ian Lance Taylor <ian@cygnus.com>
+ * internals.texi (CPU backend): Document
+ TC_CHECK_ADJUSTED_BROKEN_DOT_WORD.
- * gasp.c (main): Set next field of new include_path structure to
- NULL. From Avery Pennarun <averyp@gdc.ca>.
+2000-04-04 Alan Modra <alan@linuxcare.com.au>
- * read.c (s_mri_sect): Call as_bad rather than abort for an
- unsupported MRI target.
+ * po/gas.pot: Regenerate.
-Wed Apr 1 11:08:27 1998 Nick Clifton <nickc@cygnus.com>
+ * as.c (show_usage): Restore translated part of bug string.
+ * gasp.c (show_usage): Likewise.
- * 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.
+ * 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.
- * config/tc-arm.h: Define TC_VALIDATE_FIX.
+2000-04-03 Alexandre Oliva <aoliva@cygnus.com>
-Tue Mar 31 13:27:33 1998 Dean M. Deaver <deaver@amt.tay1.dec.com>
+ * 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.
- * config/tc-arm.c (decode_shift): Handle addressing mode 2 w/rrx
- also.
+2000-04-03 Alan Modra <alan@linuxcare.com.au>
-Wed Apr 1 13:13:20 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+ * 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.
- * doc/as.texinfo: Use @itemx for a secondary item in a table.
- * doc/c-hppa.texi: Likewise.
+ * config/tc-sparc.c (md_show_usage): Add a trailing newline.
-Tue Mar 31 17:52:40 1998 Ian Lance Taylor <ian@cygnus.com>
+Mon Apr 3 13:56:03 2000 Hans-Peter Nilsson <hp@axis.com>
- * Makefile.am: Rebuild dependencies.
- * Makefile.in: Rebuild.
+ * write.c (write_object_file) [! WORKING_DOT_WORD]: If defined,
+ call TC_CHECK_ADJUSTED_BROKEN_DOT_WORD for each word after
+ adjustments.
- * 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.
+2000-04-03 Alan Modra <alan@linuxcare.com.au>
-Mon Mar 30 12:46:48 1998 Ian Lance Taylor <ian@cygnus.com>
+ * 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.
- * config/tc-i386.h, config/tc-i386.c: Revert March 24
- LinearAddress patch.
+2000-04-02 Richard Henderson <rth@cygnus.com>
- * configure.in: Set version to 2.9.1.
- * configure: Rebuild.
+ * 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.
- * Branched binutils 2.9.
-
-Mon Mar 30 11:22:08 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * 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 <schwab@issan.informatik.uni-dortmund.de>
-
- * stabs.c (get_stab_string_offset): Always create a stab string
- section.
-
-Sat Mar 28 22:28:02 1998 Ian Lance Taylor <ian@cygnus.com>
-
- 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 <ian@cygnus.com>
-
- * 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.
+2000-04-01 Ian Lance Taylor <ian@zembu.com>
-Fri Mar 27 10:30:01 1998 Catherine Moore <clm@cygnus.com>
+ * 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.
- * config/tc-v850.c (md_assemble): Store relocation addend in
- fixup instead of instruction.
+2000-03-31 Nick Clifton <nickc@cygnus.com>
-Thu Mar 26 23:07:18 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * config/tc-d10v.h (md_flush_pending_output): Define.
- * 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.
+2000-03-29 Nick Clifton <nickc@cygnus.com>
-Wed Mar 25 13:44:18 1998 Doug Evans <devans@canuck.cygnus.com>
+ * 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.
- * 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.
+2000-03-29 Nick Clifton <nickc@cygnus.com
-Wed Mar 25 13:10:42 1998 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
+ * config/tc-arm.c (tinsns): Add "bal" instruction pattern.
- * 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.
+2000-03-28 Alan Modra <alan@linuxcare.com.au>
-Wed Mar 25 12:59:07 1998 Ian Lance Taylor <ian@cygnus.com>
+ * listing.c (LISTING_LHS_WIDTH): Default depends on
+ LISTING_WORD_SIZE.
+ (LISTING_LHS_WIDTH_SECOND): Default to LISTING_LHS_WIDTH.
- Based on patch from H.J. Lu <hjl@gnu.org>:
- * Makefile.am (DISTSTUFF): New variable.
- (diststuff): New target.
- * Makefile.in: Rebuild.
+2000-03-27 Ian Lance Taylor <ian@zembu.com>
-Tue Mar 24 16:51:29 1998 Nick Clifton <nickc@cygnus.com>
+ * config/tc-sh.c (md_show_usage): Use backslash before newline in
+ string literal.
- * config/tc-m32r.h (md_cleanup, md_elf_section_change_hook): Call
- m32r_elf_section_change_hook.
+2000-03-27 Alan Modra <alan@linuxcare.com.au>
- * config/tc-m32r.c (m32r_elf_section_change_hook): New function to
- emit a nop if a section ends with a 16 bit instruction.
+ * config/tc-avr.h (TC_HANDLES_FX_DONE): Define.
-Tue Mar 24 19:48:09 1998 Ian Lance Taylor <ian@cygnus.com>
+ * 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.
- * 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.
+2000-03-27 Denis Chertykov <denisc@overta.ru>
-Tue Mar 24 18:30:58 1998 H.J. Lu <hjl@gnu.org>
+ * config/tc-avr.c: New file for AVR support.
+ * config/tc-avr.h: Likewise.
+ * configure.in: Add AVR support.
+ * configure: Regenerate.
- * 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.
+2000-03-26 Timothy Wall <twall@cygnus.com>
-Mon Mar 23 18:53:40 1998 Joel Sherrill <joel@OARcorp.com>
+ * 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.
- * configure.in: (sh*-*-rtems*): Switched from ELF to COFF.
- * configure: Rebuild.
+2000-03-26 Alan Modra <alan@linuxcare.com.au>
-Fri Mar 20 19:15:44 1998 Ian Lance Taylor <ian@cygnus.com>
+ * config/tc-i386.c: Don't start any as_bad or as_warn message with
+ an initial capital letter.
+ (i386_index_check): Reindent.
- * aclocal.m4, configure: Rebuild with libtool 1.2.
+2000-03-19 Nick Clifton <nickc@cygnus.com>
-Thu Mar 19 16:03:12 1998 Nick Clifton <nickc@cygnus.com>
+ * config/tc-arm.c (md_apply_fix3): Fix bug detecting overflow of pc
+ relative branches.
- * config/tc-arm.c (md_apply_fix3): fix code to test the range of
- PC relative branches. Patch courtesy of Jonathan Walton.
+2000-03-17 Thomas de Lellis <tdel@windriver.com>
-
-Wed Mar 18 09:29:51 1998 Nick Clifton <nickc@cygnus.com>
+ * 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.
- * configure.in (emulations): Add thumb-pe target.
+2000-03-17 Nick Clifton <nickc@cygnus.com>
- * configure (emulations): Add thumb-pe target.
+ * config/tc-arm.c (md_apply_fix3): Handle same-section relocations
+ that have a destingation >= 0x400000.
+ Fix compile time warning messages.
-1998-03-17 Ken Raeburn <raeburn@cygnus.com>
+Thu Mar 16 23:45:16 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
- * itbl-lex.l (yywrap): Don't define if already defined as a
- macro.
+ * 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.
-Fri Mar 13 16:31:38 1998 Tom Tromey <tromey@cygnus.com>
+Thu Mar 16 21:18:13 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
- * depend.c (quote_string_for_make): New function.
- (wrap_output): Use it.
+ * 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.
-Thu Mar 12 18:28:22 1998 Nick Clifton <nickc@cygnus.com>
+Thu Mar 16 20:58:10 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
- * config/obj-elf.c (obj_elf_section): Set bss flag in seg_info
- structure if type is SHT_NOBITS. [Bug fix courtesy of rth]
+ * config/tc-sh.c (md_show_usage): Add description of -dsp.
-Sat Feb 28 17:28:55 1998 Richard Henderson <rth@cygnus.com>
+2000-03-15 Jonathan Larmour <jlarmour@redhat.co.uk>
- * 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.
+ * config/tc-sh.c (parse_reg): Match r[0..7]_bank operands before
+ normal operands.
-Sat Feb 28 17:06:22 1998 Richard Henderson <rth@cygnus.com>
+2000-03-15 Kazu Hirata <kazu@hxi.com>
- * config/obj-elf.c [TC_ALPHA]: Include <elf/alpha.h>.
- * config/tc-alpha.h (ELF_TC_SPECIAL_SECTIONS): New.
+ * config/tc-h8300.c: Add ATTRIBUTE_UNUSED as appropriate.
-Thu Feb 26 15:49:04 1998 Michael Meissner <meissner@cygnus.com>
+Mon Mar 13 22:02:59 2000 Hans-Peter Nilsson <hp@axis.se>
- * config/tc-d30v.c (write_2_short): Delayed jsr instructions don't
- require padding to the next long word boundary.
+ * expr.c (operand) [case 'f']: When testing if '0f' can start a
+ floating-point-number, make sure 'f' is in FLT_CHARS.
-Mon Feb 23 11:29:06 1998 Doug Evans <devans@seba.cygnus.com>
+Sat Mar 11 00:01:39 2000 Hans-Peter Nilsson <hp@axis.se>
- * cgen.c: #include symcat.h.
- * config/tc-m32r.c: Likewise.
+ * 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.
-Mon Feb 23 10:27:40 1998 Jeffrey A Law (law@cygnus.com)
+2000-03-10 Geoffrey Keating <geoffk@cygnus.com>
- * config/tc-mips.c (mips_ip, case 'P'): Make 'P' arguments be
- absolute expressions instead of '$' prefixed register names.
+ * config/tc-mips.c (mips_ip): Don't put stuff in .rodata
+ when embedded-pic.
-Sat Feb 21 22:36:52 1998 Richard Henderson <rth@cygnus.com>
+ * 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.
- * read.c (s_set): Record file and line info for symbols when -as.
- (pseudo_set): Don't overwrite that dummy fragment.
+2000-03-09 Catherine Moore <clm@cygnus.com>
-Fri Feb 20 15:03:13 1998 Ian Lance Taylor <ian@cygnus.com>
+ * 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.
- * config/tc-ppc.c (md_pseudo_table): Add "section".
- (ppc_named_section): New static function.
+2000-03-08 H.J. Lu (hjl@gnu.org)
-Thu Feb 19 22:25:42 1998 Richard Henderson <rth@cygnus.com>
+ * Makefile.am (install-exec-tooldir): Depend on
+ install-exec-bindir for parallel make.
+ * Makefile.in: Regenerated.
- * tc-ppc.c (ppc_biei): Cache the last symbol we inserted
- so we don't have to scan the entire list.
+2000-03-06 Nick Clifton <nickc@cygnus.com>
-Tue Feb 17 17:02:15 1998 Fred Fish <fnf@cygnus.com>
+ * 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.
- * config/tc-d30v.c (parallel_ok): For the explicitly parallel
- case, allow the parallel instructions to modify the same flag
- bits.
+ * doc/Makefile.am (CPU_DOCS): Add c-m32r.texi.
+ * doc/Makefile.in: Regenerate.
+ * doc/c-m32r.texi (M32R-Opts): Document new command line switch.
-Thu Feb 19 16:08:15 1998 Richard Henderson <rth@cygnus.com>
+2000-03-02 Michael Meissner <meissner@redhat.com>
- * listing.c (list_symbol_table): Categorize symbols by
- undefined_section rather than sy_frag->line == NULL.
+ * config/tc-d30v.c (check_range): Remove code that incorrectly
+ sign extended values where bits < 32.
-Wed Feb 18 23:39:46 1998 Richard Henderson <rth@cygnus.com>
+2000-03-02 H.J. Lu (hjl@gnu.org)
- * Makefile.am (install-exec-local): Install properly when ln
- fails or tooldir == prefix.
+ * configure.in: Support --enable-targets=all on ia32.
+ * configure: Regenerated.
-Tue Feb 17 18:58:51 1998 Doug Evans <devans@seba.cygnus.com>
+2000-03-01 Nick Clifton <nickc@cygnus.com>
- * cgen.c (cgen_md_apply_fix3): Delete call to validate_operand.
- Test result of insert_operand for error.
+ * gasp.c (do_align): Remove bogus check of alignment value.
-Fri Feb 13 16:41:42 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-02-27 Thomas de Lellis <tdel@windriver.com>
- * 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.
+ * 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.
-Fri Feb 13 00:47:44 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-02-27 Hans-Peter Nilsson <hp@axis.com>
- * config/tc-mips.c (macro_build): Handle operand type 'C'.
- (macro): Fix handling of M_COP[0-3].
+ * 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.
-Thu Feb 12 14:06:59 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-02-27 Jakub Jelinek <jakub@redhat.com>
- Based on patches from Ross Harvey <ross@teraflop.com>:
- * 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.
+ * config/tc-sparc.c (OPTION_UNDECLARED_REGS): New option.
+ (md_parse_option): Handle it.
+ (md_show_usage): Document it.
- NetBSD patches from Gordon W. Ross <gwr@mc.com>:
- * configure.in (alpha*-*-netbsd*): New target.
- * config/te-nbsd.h (LOCAL_LABELS_FB): Define.
- * configure: Rebuild.
+2000-02-27 Ian Lance Taylor <ian@zembu.com>
- * as.h (flag_warn_suppress_instructionswap): Move from here...
- * config/tc-d10v.c (flag_warn_suppress_instructionswap): ...to
- here, and make static.
+ * config/tc-alpha.c (md_assemble): Accept `1' and `9' in an
+ opcode, for the instruction `pal19'. From Andrea Arcangeli
+ <andrea@suse.de>.
- * ehopt.c (eh_frame_code_alignment): Only use seg_info if
- BFD_ASSEMBLER or MANY_SEGMENTS.
+2000-02-26 Alan Modra <alan@spri.levels.unisa.edu.au>
- * as.c (show_usage): Update bug-gnu-utils address.
- * gasp.c (show_usage): Likewise.
- * doc/as.texinfo (Bug Reporting): Likewise.
+ * 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.
-Wed Feb 11 23:26:28 1998 Jeffrey A Law (law@cygnus.com)
+2000-02-26 Andreas Jaeger <aj@suse.de>
- * 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.
+ * doc/c-mips.texi (MIPS Opts): Fix typo in last patch.
-Thu Feb 12 03:41:00 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
+2000-02-25 Alan Modra <alan@spri.levels.unisa.edu.au>
-Fix rac to accept only a0:
- * tc-d10v.c (parallel_ok, find_opcode):
- Split OPERAND_ACC into OPERAND_ACC0 and OPERAND_ACC1.
- Introduce OPERAND_GPR.
+ * 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.
-Wed Feb 11 16:28:13 1998 Richard Henderson <rth@cygnus.com>
+2000-02-24 Nick Clifton <nickc@cygnus.com>
- * read.c (s_fill): Handle non-constant repeat counts by creating
- an rs_space fragment.
+ * configure: Add arm-wince, mips-pe and sh-pe targets.
+ * configure: Regenerate.
-Tue Feb 10 18:31:31 1998 Ian Lance Taylor <ian@cygnus.com>
+ * 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-i386.c (i386_operand): Change error added Jan 2 1998
- from as_bad to as_warn.
+ * 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.
-Tue Feb 10 18:04:00 1998 Jim Lemke <jlemke@cygnus.com>
+ * 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.
- * 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
+ * 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.
-Tue Feb 10 17:58:18 1998 Ian Lance Taylor <ian@cygnus.com>
+ * config/te-wince-pe.h: New file for WinCE targets. Define
+ TE_WINCE.
- * ehopt.c (eh_frame_code_alignment): If not BFD_ASSEMBLER, use
- seg_fix_rotP rather than fix_root from seg_info.
+2000-02-25 Alan Modra <alan@spri.levels.unisa.edu.au>
-Tue Feb 10 15:32:22 1998 Ian Carmichael <iancarm@cygnus.com>
+ * 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.
- * expr.c: Add support for 0x1_2_3_4 bignums.
+2000-02-24 Catherine Moore <clm@cygnus.com>
-Tue Feb 10 14:43:40 1998 Ian Lance Taylor <ian@cygnus.com>
+ * config/obj-som.c (obj_pseudo_table): Add "weak".
+ (obj_som_weak): New routine.
- * configure.in: Change -linux* to -linux-gnu*.
- * configure: Rebuild.
+2000-02-24 Alan Modra <alan@spri.levels.unisa.edu.au>
- * app.c (do_scrub_begin): Treat \r as whitespace.
+ * 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.
-Mon Feb 9 14:16:11 1998 Ian Lance Taylor <ian@cygnus.com>
+ * config/tc-i386.h (TC_RELOC): Delete.
+ * config/tc-i386.c (TC_RELOC): Delete. Replace usage of TC_RELOC
+ with equivalent call to reloc.
- * Makefile.am: Update dependencies.
- * Makefile.in: Rebuild.
+ * 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.
-Sat Feb 7 15:33:51 1998 Ian Lance Taylor <ian@cygnus.com>
+ * NEWS: Mention IBM 370 support.
- * configure, aclocal.m4: Rebuild with new libtool.
+2000-02-23 Richard Henderson <rth@cygnus.com>
-Fri Feb 6 16:08:30 1998 Jeffrey A Law (law@cygnus.com)
+ * config/tc-i386.c (md_assemble): When swapping operands for
+ intel_syntax, assume everything that's not Imm or Disp is a
+ register.
- * 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.
+2000-02-23 Linas Vepstas <linas@linas.org>
-Fri Feb 6 14:44:34 1998 Nick Clifton <nickc@cygnus.com>
+ * 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.
- * config/tc-v850.c (md_parse_option): Add -mv850any command line option.
+ * Makefile.in: Regenerate.
+ * configure: Regenerate.
-Thu Feb 5 12:39:08 1998 Ian Lance Taylor <ian@cygnus.com>
+ * 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.
- * 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.
+2000-02-19 Michael Meissner <meissner@redhat.com>
-Wed Feb 4 15:41:54 1998 Nick Clifton <nickc@cygnus.com>
+ * 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.
- * 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.
+2000-02-22 Andrew Haley <aph@cygnus.com>
-Wed Feb 4 20:00:26 1998 James G. Smith <jsmith@teknema.demon.co.uk>
+ * doc/c-mips.texi (MIPS Opts): Document -mgp32 and -mgp64.
- * config/tc-arm.c: Rename arm_after_pass_hook() to arm_cleanup().
+2000-02-22 Andrew Haley <aph@cygnus.com>
- * 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.
+ * 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.
-Wed Feb 4 13:17:19 1998 Ian Lance Taylor <ian@cygnus.com>
+ (OPTION_M7900): Change offset
+ (OPTION_NO_M7900): Ditto.
- * 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.
+2000-02-22 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
- * as.h: If gcc version greater than 2.6, use `__format__' and
- `__printf__' in function attributes, rather than `format' and
- `printf'.
+ * config/obj-coff.c (add_lineno): Accept non-positive lineno with
+ warning, and bump it to 1.
-Mon Feb 2 18:38:18 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-02-22 Ian Lance Taylor <ian@zembu.com>
- * config/tc-sparc.c: Only include elf/sparc.h if OBJ_ELF.
+ From Brad Lucier <lucier@math.purdue.edu>:
+ * dwarf2dbg.c (print_stats): Add cast to force printf argument to
+ match format.
-Mon Feb 2 18:30:34 1998 Steve Haworth <steve@pm.cse.rmit.EDU.AU>
+2000-02-21 Catherine Moore <clm@cygnus.com>
- 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.
+ * 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.
-Mon Feb 2 10:20:37 1998 Nick Clifton <nickc@cygnus.com>
+2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
- * config/tc-v850.c (md_assemble): Improvements to error messages.
+ * listing.c (print_lines): Remove unused variable `end'.
-Mon Feb 2 12:39:05 1998 Geoff Keating <geoffk@ozemail.com.au>
+ * 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.
- * config/tc-ppc.c (md_apply_fix3): Change BFD_RELOC_HI16 and
- BFD_RELOC_HI16_S to store the high bits of any value.
+2000-02-18 Nick Clifton <nickc@cygnus.com>
- * 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-d10v.c (find_opcode): Add a symbol's value to
+ the computed frag offset, rather than overwriting it.
- * 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.
+Thu Feb 17 00:11:08 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
-Fri Jan 30 11:02:35 1998 Doug Evans <devans@canuck.cygnus.com>
+ * 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.
- * read.h (include_dirs): Declare.
- (include_dir_count,include_dir_maxlen): Declare.
+Fri Feb 11 14:21:51 2000 Jeffrey A Law (law@cygnus.com)
-Fri Jan 30 11:47:02 1998 Ian Lance Taylor <ian@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.
- * configure.in: Correct check for shared opcodes library.
- * configure: Rebuild.
+2000-02-10 Nick Clifton <nickc@cygnus.com>
- * listing.c (buffer_line): If we can't open the file, set at_end.
- (listing_print): Remove unused local variable fi.
+ * 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.
- * config/m68k-parse.y (reglistpair): Handle register list in
- either order.
+2000-02-10 Timothy Wall <twall@redhat.com>
- * config/vms-conf.h: Don't undef VERSION.
+ * 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.
-Thu Jan 29 14:42:44 1998 Pat Rankin <rankin@eql.caltech.edu>
+2000-02-10 Timothy Wall <twall@redhat.com>
- * 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.
+ * 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.
-Thu Jan 29 18:48:19 1998 Bill Moyer <billm@cygnus.com>
+2000-02-08 Timothy Wall <twall@redhat.com>
- * config/tc-d30v.c (do_assemble): Added flag_explicitly_parallel.
- (parallel_ok): Relaxed parallel subinstruction dependency check.
+ * 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.
-Wed Jan 28 14:35:00 1998 Bill Moyer <billm@cygnus.com>
+2000-02-08 Timothy Wall <twall@redhat.com>
- * as.h (flag_warn_suppress_instructionswap): added new flag.
- * tc-d10v.c (md_parse_option,md_longopts): added "--nowarnswap"
- command line argument.
- * tc-d10v.c (write_2_short): emit "Swapping instructions"
- warning only if flag_warn_suppress_instructionswap is false.
+ * 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.
-Wed Jan 28 16:41:19 1998 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>
+2000-02-08 Timothy Wall <twall@redhat.com>
- * configure.in (i386-*-mingw32*): New target.
- * configure: Rebuild.
+ * 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
-Wed Jan 28 14:51:18 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-02-04 Timothy Wall <twall@redhat.com>
- * symbols.c (resolve_symbol_value): Don't set the segment if it
- hasn't changed, and this is OBJ_AOUT without BFD_ASSEMBLER.
+ * listing.c (print_lines): Remove conditionals causing bug in
+ listings.
- * config/obj-aout.h (S_IS_LOCAL): Correct typo--pass argument to
- S_GET_SEGMENT.
+2000-02-03 Timothy Wall <twall@cygnus.com>
-Wed Jan 28 13:54:50 1998 Pat Rankin <rankin@eql.caltech.edu>
+ * 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.
- as.h (unlink): Reverse 13-Feb-97 change; use of unlink vs remove
- depends upon HAVE_{UNLINK,REMOVE} values rather than host
- compiler.
+2000-02-01 Timothy Wall <twall@cygnus.com>
-Wed Jan 28 13:48:08 1998 Ian Lance Taylor <ian@cygnus.com>
+ * 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.
- * config/obj-coff.h (RESOLVE_SYMBOL_REDEFINITION): Define.
+2000-01-31 Nick Clifton <nickc@cygnus.com>
-Wed Jan 28 09:52:00 1998 Nick Clifton <nickc@cygnus.com>
+ * config/tc-arm.c (reg_table): Add support for ATPCS register
+ naming conventions.
- * config/tc-v850.c (v850_insert_operand): Display instruction when
- an error is encountered.
+2000-01-31 Geoff Keating <geoffk@cygnus.com>
-Tue Jan 27 13:32:01 1998 Robert Lipe <robertl@dgii.com>
+ * 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.
- * configure.in (i386-*-sco3.2v5*): Defaults to ELF now.
- (i386-*-sco3.2v5*coff): New target.
- (i386-*-sco3.2*): New target.
- * configure: Rebuild.
+2000-01-19 Chandra Chavva <cchavva@cygnus.com>
-Tue Jan 27 11:06:52 1998 Nick Clifton <nickc@cygnus.com>
+ * config/tc-mcore.c (md_assemble): Give warning message if
+ operands passes to instruction are more than the spec.
- * config/tc-v850.c: Tidy error message production.
+2000-01-27 Thomas de Lellis <tdel@windriver.com>
-Tue Jan 27 12:24:32 1998 Ian Lance Taylor <ian@cygnus.com>
+ * 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.
- * 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.
+2000-01-27 Alan Modra <alan@spri.levels.unisa.edu.au>
-Tue Jan 27 06:51:59 1998 Richard Henderson <rth@cygnus.com>
+ * Makefile.am (MULTI_CFILES): Add config/e-i386aout.c
+ Add dependencies for e-i386aout.o. Fix 2 comment lines.
- * 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.
+ * Makefile.in: Same here.
+ Update copyright.
-Tue Jan 27 06:38:35 1998 Richard Henderson <rth@cygnus.com>
+ * 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.
- * 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 <rth@cygnus.com>
+ * configure: Regenerate.
- * 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.
+ * config/e-i386aout.c: New file.
-Mon Jan 26 13:07:41 1998 Nick Clifton <nickc@cygnus.com>
+ * 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.
- * config/tc-m32r.c: Detect if explicitly parallel instructions
- might have an io conflict and issue a warning message.
+ * obj.h (struct format_ops): Add s_get_other and s_get_desc.
+ (aout_format_ops): New.
+ Update copyright.
-Thu Jan 22 17:51:44 1998 Nick Clifton <nickc@cygnus.com>
+ * 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.
- * 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.
+ * 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.
-Wed Jan 21 16:49:10 1998 Richard Henderson <rth@cygnus.com>
+ * symbols.c (colon): Rewrite "already defined" fatal message
+ code for aout with USE_EMULATIONS.
+ Update copyright.
- * 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.
+ * 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.
-Fri Jan 16 14:51:48 1998 Ian Lance Taylor <ian@cygnus.com>
+ * 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.
- * 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.
+ * 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.
-Fri Jan 16 11:30:37 1998 Richard Henderson <rth@cygnus.com>
+ * config/obj-coff.h (obj_pop_insert): Define.
+ (coff_pseudo_table): Declare.
+ Update copyright.
- * 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.
+ * config/obj-ecoff.c (ecoff_format_ops): Add 0 entries for
+ s_get_size, s_set_size. Comment all zero entries.
+ Update copyright.
-Thu Jan 15 14:19:01 1998 Richard Henderson <rth@cygnus.com>
+ * 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.
- * tc-sh.c (get_specific): Handle SGR & DBR.
+ * 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.
-Thu Jan 15 13:46:48 1998 Richard Henderson <rth@cygnus.com>
+ * 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.
- * tc-h8300.c (parse_reg): Take the length of the symbol into
- account when attempting to match a register name.
- * tc-h8500.c (parse_reg): Likewise.
+ * 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.
-Wed Jan 14 17:52:33 1998 Nick Clifton <nickc@cygnus.com>
+ * config/tc-i386.h (AOUT_TARGET_FORMAT): Define for each TE_*.
+ Define TARGET_FORMAT for aout only when not multi.
+ Update copyright.
- * cgen.c: Formatting changes to improve readability.
+ * config/te-multi.h: Delete file as it's identical to te-generic.h
-Wed Jan 14 15:41:41 1998 Jeffrey A Law (law@cygnus.com)
+2000-01-15 Alan Modra <alan@spri.levels.unisa.edu.au>
- * config/tc-mips.c (macro): Rework division code to avoid unfilled
- delay slot.
+ * config/tc-i386.h (DWORD_MNEM_SUFFIX): Delete.
+ * config/tc-i386.c (DWORD_MNEM_SUFFIX): Rename all occurrences to
+ LONG_MNEM_SUFFIX.
-Wed Jan 14 18:04:20 1998 Michael Meissner <meissner@cygnus.com>
+ * 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.
- 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.
+2000-01-13 Clinton Popetz <cpopetz@cygnus.com>
-Wed Jan 14 15:02:19 1998 Doug Evans <devans@seba.cygnus.com>
+ * config/tc-mips.c (mips_do_align): New function.
+ * config/tc-mips.h (md_do_align): Define.
- * config/tc-mips.c (mips_ip): Don't test pinfo flags if INSN_MACRO.
+2000-01-10 Philip Blundell <philb@gnu.org>
-Mon Jan 12 13:04:57 1998 Doug Evans <devans@seba.cygnus.com>
+ * 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.
- * 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.
- * tc-m32r.c: Clean up pass over `struct foo' usage.
- (md_estimate_size_before_relax): Use CGEN_INSN_MNEMONIC.
+2000-01-10 Philip Blundell <pb@futuretv.com>
-Tue Jan 6 15:36:02 1998 Richard Henderson <rth@cygnus.com>
+ * configure.in (arm*-*-conix*): New target.
+ (arm*-*-linux-gnu*): Match instead of arm-*-linux* and
+ armv*-*-linux-gnu.
+ * configure: Regenerate.
- * symbols.c (S_SET_SEGMENT): Don't set the segment for section syms.
- (S_IS_EXTERNAL, S_IS_LOCAL): Correct parenthetication.
+2000-01-03 Martin v. Loewis <loewis@informatik.hu-berlin.de>
-Fri Jan 2 16:08:54 1998 Ian Lance Taylor <ian@cygnus.com>
+ * config/obj-elf.c (elf_pseudo_table): Define visibility pseudos.
+ (obj_elf_visibility): New function.
- * config/tc-i386.c (i386_operand): Give an error if there are
- unrecognized characters after an expression.
+ * doc/as.texinfo (Visibility): New node: document visibility
+ pseudo ops.
-For older changes see ChangeLog-9697
+For older changes see ChangeLog-9899
diff --git a/contrib/binutils/gas/ChangeLog-9697 b/contrib/binutils/gas/ChangeLog-9697
index dd2af82..7b93733 100644
--- a/contrib/binutils/gas/ChangeLog-9697
+++ b/contrib/binutils/gas/ChangeLog-9697
@@ -98,7 +98,6 @@ Mon Dec 15 15:20:32 1997 Nick Clifton <nickc@cygnus.com>
* 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
diff --git a/contrib/binutils/gas/ChangeLog-9899 b/contrib/binutils/gas/ChangeLog-9899
new file mode 100644
index 0000000..a853b88
--- /dev/null
+++ b/contrib/binutils/gas/ChangeLog-9899
@@ -0,0 +1,4854 @@
+1999-12-22 Philip Blundell <pb@futuretv.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <dlindsay@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * macro.c (buffer_and_nest): Do not check beyond the end of the
+ buffer.
+
+1999-11-11 Nick Clifton <nickc@cygnus.com>
+
+ * macro.c (buffer_and_nest): Look for seperator after TO and
+ FROM tokens.
+
+1999-11-08 Andrew Haley <aph@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * expr.h (operatorT): Increase machine dependent operators to 16.
+ * expr.c (op_rank): Ditto.
+
+1999-11-03 Ian Lance Taylor <ian@zembu.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-mcore.h (TARGET_BYTES_BIG_ENDIAN): Change to false.
+
+1999-11-01 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * 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 <dlindsay@cygnus.com>
+
+ * 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 <scottb@netwinder.org>
+
+ * 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 <dnovillo@cygnus.com>
+
+ * tc_d10v.c (find_opcode): Allow ATSIGN to match expressions of the
+ form @abs16, @(abs16) and @(abs16 + imm).
+
+1999-10-21 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * config/tc-i386.c (i386_index_check): Correct #endif location.
+
+Mon Oct 11 14:02:40 1999 Geoffrey Keating <geoffk@cygnus.com>
+
+ * 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 <jerry.quinn.adv91@alum.dartmouth.org>
+
+ * 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 <dnovillo@cygnus.com>
+
+ * 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 <dnovillo@cygnus.com>
+
+ * config/tc-d10v.c (check_range): Check range for RESTRICTED_NUM3
+ operands.
+
+Mon Oct 4 17:24:23 1999 Nick Clifton <nickc@cygnus.com>
+ Doug Evans <devans@cygnus.com>
+
+ 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 <geoffk@cygnus.com>
+
+ * 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 <jquinn@nortelnetworks.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <oliva@lsd.ic.unicamp.br>
+
+ * 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.
+ * tc-hppa.h (md_end): Define for OBJ_ELF.
+
+1999-09-14 Michael Meissner <meissner@cygnus.com>
+
+ * configure.in (Canonicalization of target names): Remove adding
+ ${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
+ generates $ac_config_sub with a ${CONFIG_SHELL} already.
+ * configure: Regenerate.
+
+1999-09-14 Donn Terry <donn@interix.com>
+
+ * config/te-interix.h (GLOBAL_OFFSET_TABLE_NAME): Define.
+
+1999-09-13 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * 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 <ian@zembu.com>
+
+ * 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 <ian@zembu.com>
+
+ * write.c (dump_section_relocs): Call print_symbol_value_1 to
+ print the symbol, rather than printing it here.
+
+1999-09-11 Donn Terry <donn@interix.com>
+
+ * 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 <schwab@suse.de>
+
+ * doc/c-arm.texi: Fix arguments of @var to not contain
+ punctuation.
+
+1999-09-08 Philip Blundell <pb@nexus.co.uk>
+
+ * 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 <ian@zembu.com>
+
+ * config/obj-coff.c: Add ATTRIBUTE_UNUSED as needed for
+ BFD_ASSEMBLER code.
+
+1999-09-06 Donn Terry <donn@interix.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-m32r.c (md_longopts): Fix value for -Wnuh.
+
+1999-09-04 Steve Chamberlain <sac@pobox.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-mcore.c (mcore_s_section): Do not dump literals if a
+ .section .line directive is encountered.
+
+1999-09-01 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ Based on a patch from H.J. Lu <hjl@gnu.org>
+ * config/tc-i386.c (parse_register): Handle FP regs specially.
+ (md_begin): Remove '(' and ')' from register_chars.
+
+1999-08-29 Doug Evans <devans@casey.cygnus.com>
+
+ * 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 <jquinn@nortelnetworks.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <davidm@hpl.hp.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * config/tc-i386.c (i386_index_check): Fix the displacement size
+ when INFER_ADDR_PREFIX.
+
+1999-08-18 Nick Clifton <nickc@cygnus.com>
+
+ * config/tc-arm.c (md_apply_fix3): If an offset is invalid,
+ display its value.
+
+1999-08-17 Ian Lance Taylor <ian@zembu.com>
+
+ * config/tc-ppc.c (md_assemble): Trim @ha constant to 16 bits, to
+ handle 0xffffNNNN constants correctly.
+
+1999-08-16 Nick Clifton <nickc@cygnus.com>
+
+ * config/tc-arm.c (do_ldst): Look for register conflicts on stores
+ as well as loads.
+
+1999-08-13 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * 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 <ian@zembu.com>
+
+ * config/tc-i386.h (SUB_SEGMENT_ALIGN): If TE_GO32, return 4 for
+ certain sections, to match BFD changes.
+
+1999-08-08 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * Makefile.am (noinst_SCRIPTS): Change .gdbinit to $(GDBINIT).
+ (EXTRA_SCRIPTS): Define to keep automake happy.
+ * Makefile.in: Rebuild.
+
+1999-08-08 Ian Lance Taylor <ian@zembu.com>
+
+ * 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 <jj@ultra.linux.cz>
+
+ * config/tc-sparc.c (sparc_ip): Allow assembly of %lo()+%reg.
+
+1999-08-08 Ian Lance Taylor <ian@zembu.com>
+
+ * 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 <khan@xraylith.wisc.edu>
+
+ * config/obj-coff.c (obj_coff_section): Handle 's' (shared)
+ section flag.
+
+1999-08-08 Ian Lance Taylor <ian@zembu.com>
+
+ * 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 <jquinn@nortelnetworks.com>
+
+ * config/tc-hppa.c (pa_ip): Add 64 bit condition completers.
+
+1999-08-06 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * config/tc-sparc.h (tc_fix_adjustable): Fix check for PIC local
+ non-adjustable symbols.
+
+Thu Aug 5 16:52:51 1999 Jerry Quinn <jquinn@nortelnetworks.com>
+
+ * config/tc-hppa.c (pa_ip): Change condition args to have '?' prefix.
+
+Thu Aug 5 23:05:56 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * config/tc-sh.c (md_assemble): Call as_bad when there are excess
+ operands.
+
+1999-08-05 Donn Terry <donn@interix.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <etienne.lorrain@ibm.net>
+ * 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 <ian@zembu.com>
+
+ * 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 <ralf@uni-koblenz.de>.
+
+1999-08-03 Etienne Lorrain <etienne.lorrain@ibm.net>
+
+ * config/tc-i386.c (f16_3): New. Fixes 16 bit 3 byte nop.
+
+1999-08-03 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * 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 <jj@ultra.linux.cz>
+
+ * 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 <clm@cygnus.com>
+
+ * config/tc-arm.c (tc_gen_reloc): Record the vtable entry in
+ the relocation's section offset.
+
+1999-07-29 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * 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" <jquinn@nortelnetworks.com>
+
+ * config/tc-hppa.c (pa_ip): Add 'J' and 'K' code
+ processing.
+
+1999-07-27 Ian Lance Taylor <ian@zembu.com>
+
+ * config/tc-sparc.h (tc_fix_adjustable): Don't adjust GOT, PLT, or
+ VTABLE relocations.
+
+1999-07-21 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * config/te-go32.h (COFF_LONG_SECTION_NAMES): Define.
+
+ * configure.bat: Remove; obsolete.
+ * config/go32.cfg: Likewise.
+
+1999-07-21 Brad M. Garcia <bgarcia@fore.com>
+
+ * configure.in (i386-*-vxworks*): New target.
+ * configure: Rebuild.
+
+1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * doc/c-sparc.texi: Document .register and .nword pseudo-ops.
+
+1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <ian@zembu.com>
+
+ * 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 <pb@nexus.co.uk>
+
+ * 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 <ian@zembu.com>
+
+ * 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 <schwab@suse.de>
+
+ * config/tc-m68k.c: Add some ATTRIBUTE_UNUSED.
+
+1999-07-11 Ian Lance Taylor <ian@zembu.com>
+
+ * 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 <ian@zembu.com>
+
+ * 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 <dave@hiauly1.hia.nrc.ca>
+
+ * configure.in (hppa*-linux-gnu*): New target.
+ * configure: Rebuilt.
+
+1999-07-08 Nick Clifton <nickc@cygnus.com>
+
+ * doc/c-arm.texi (ARM Directives): Document .thumb_set directive.
+
+1999-07-07 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <hjl@gnu.org>
+
+ * subsegs.c (subseg_text_p): Use 1/0 instead of true/false for
+ non BFD_ASSEMBLER case.
+
+1999-06-26 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * config/obj-coff.c (obj_coff_section): Mark writable sections as
+ data.
+
+1999-06-26 David Mosberger <davidm@hpl.hp.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <ian@zembu.com>
+
+ * 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 <jlarmour@cygnus.co.uk>
+
+ * 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)
+
+ * 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.
+ * tc-hppa.h (TARGET_FORMAT): Handle elf64-hppa format.
+
+1999-06-21 Ian Lance Taylor <ian@zembu.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <ian@zembu.com>
+
+ * 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)
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <ian@zembu.com>
+
+ From K. Richard Pixley <rich@noir.com>:
+ * configure.in (ppc-*-vxworks*): New target.
+ * configure: Rebuild.
+
+1999-06-12 Philip Blundell <philb@gnu.org>
+
+ * config/tc-arm.c (tc_gen_reloc): Fix handling of GOTPC relocs.
+
+1999-06-13 Ian Lance Taylor <ian@zembu.com>
+
+ * 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 <ian@zembu.com>
+
+ * 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 <obrien@freebsd.org>
+
+ * configure.in: (i[3456]86-*-freebsd*): Now defaults to ELF.
+ * configure: Rebuild.
+
+1999-06-12 Ian Lance Taylor <ian@zembu.com>
+
+ * 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 <ian@zembu.com>
+
+ * dwarf2dbg.h: Use PARAMS in function declarations.
+
+1999-06-11 Martin Dorey <mdorey@madge.com>
+
+ * 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 <ian@zembu.com>
+
+ * 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 <jj@ultra.linux.cz>
+
+ * 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 <ian@zembu.com>
+
+ Based on patches from John W. Woznack <jwoznack@concentric.net>:
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-arm.c (md_parse_option): Add support for ARM920 and
+ ARM920t.
+
+1999-06-07 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * 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 <jj@ultra.linux.cz>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <schwab@issan.cs.uni-dortmund.de>
+
+ * 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 <rth@cygnus.com>
+
+ * config/obj-elf.c (obj_elf_section): Don't free the return
+ value of demand_copy_C_string.
+
+1999-06-05 Richard Henderson <rth@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <mklein@dis.com>
+
+ * 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 <ian@zembu.com>
+
+ * 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 <rth@cygnus.com>
+
+ * dwarf2dbg.c (dwarf2_gen_line_info): Use section_symbol
+ instead of doing the work by hand.
+
+1999-06-03 David Mosberger <davidm@hpl.hp.com>
+
+ * 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 <davidm@hpl.hp.com>
+
+ * 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 <ian@zembu.com>
+
+ 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 <nickc@cygnus.com>
+
+ * 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 <devans@canuck.cygnus.com>
+
+ -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 <tege@matematik.su.se>
+
+ * 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 <linus.nordberg@canit.se>
+
+ * 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 <mdorey@madge.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <macro@ds2.pg.gda.pl>
+ * 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 <schwab@issan.cs.uni-dortmund.de>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <dledford@redhat.com>
+ * 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 <rth@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * symbols.c (symbol_find_base): Use memcpy instead of strcpy.
+ Don't copy before downcaseing.
+
+1999-05-05 Catherine Moore <clm@cygnus.com>
+
+ * tc-m68k.c: Include elf/m68k.h.
+ (m68k_elf_final_processing): New routine.
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-mcore.c (mcore_s_section): Dump literals before
+ changing section.
+
+1999-04-29 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <devans@canuck.cygnus.com>
+
+ * 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 <tromey@cygnus.com>
+
+ * aclocal.m4, configure: Updated for new version of libtool.
+
+1999-04-22 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <ian@zembu.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <gavin@cygnus.com>
+
+ * 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 <manson@charmed.cygnus.com>
+
+ * config/obj-coff.c (c_section_symbol): Fix typo in previous
+ change.
+
+1999-04-16 Nick Clifton <nickc@cygnus.com>
+
+ * config/tc-mcore.h (LOCAL_LABELS_FB): Define to 1.
+
+Thu Apr 15 16:52:09 1999 Jeffrey A Law (law@cygnus.com)
+
+ * tc-hppa.c (pa_get_absolute_exression): Try to handle "5 %r3"
+ expressions correctly.
+
+
+1999-04-15 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * 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)
+
+ * tc-hppa.c (pa_ip, case '3'): New case for PA2.0 fmpyfadd
+ and fmpynfadd instructions.
+
+1999-04-11 Richard Henderson <rth@cygnus.com>
+
+ * 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 <manson@charmed.cygnus.com>:
+
+ * 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 <rth@cygnus.com>
+
+ * tc-alpha.c (load_expression): Call as_bad instead of abort.
+
+1999-04-08 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <ian@zembu.com>
+
+ * 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 <ian@zembu.com>
+
+ * 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 <don@pixsci.com>
+
+ * configure.in: Add mips*-*-vxworks* target; have it define
+ MIPS_STABS_ELF.
+ * configure, config.in: Rebuild.
+
+1999-03-31 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * tc-mips.c (md_apply_fix): Adjust value for linkonce sections.
+
+Wed Mar 24 14:11:10 1999 Jeffrey A Law (law@cygnus.com)
+
+ * 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)
+
+ * 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 <ian@zembu.com>
+
+ * doc/internals.texi (CPU backend): Mention that
+ line_separator_chars should not include newline. From thi
+ <ttn@mingle.glug.org>.
+
+1999-03-22 Doug Evans <devans@casey.cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * tc-alpha.c (md_assemble): Allow '6' in an opcode.
+
+Thu Mar 18 10:55:30 1999 Jeffrey A Law (law@cygnus.com)
+
+ * 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)
+
+ * tc-hppa.c (pa_ip, case 'd'): Do not allow ",n".
+
+1999-03-15 Martin Hunt <hunt@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-d30v.c (md_apply_fix3): Handle BFD_RELOC_8,
+ BFD_RELOC_16 and BFD_RELOC_64.
+
+1999-03-12 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * expr.c (expr): Add missing else.
+
+1999-03-12 Nick Clifton <nickc@cygnus.com>
+
+ * config/tc-arm.c (md_apply_fix3): Improve error message.
+
+1999-03-11 Doug Evans <devans@casey.cygnus.com>
+
+ * 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 <jimb@zwingli.cygnus.com>
+
+ * config/tc-mips.c (md_show_usage): Fix message.
+
+1999-03-03 Nick Clifton <nickc@cygnus.com>
+
+ * doc/c-arm.texi (ARM Syntax): Document new command line switches
+ and LDR reg,=<expr> 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 <ian@cygnus.com>
+
+ * doc/c-arm.texi (ARM-Chars): Fix typo in use of '@'.
+
+1999-02-17 Nick Clifton <nickc@cygnus.com>
+
+ This patch was created by: Scott Bambrough
+ <scottb@corelcomputer.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <jlemke@cygnus.com>
+
+ * config/tc-mips.c (mips_ip: case 'o'): Fix assertion failure for
+ non-constant offset from a base register.
+
+1999-02-14 Ken Raeburn <raeburn@raeburn.org>
+
+ * config/tc-alpha.c (md_show_usage): Put \ before newline in
+ strings always.
+
+Sat Feb 13 14:10:10 1999 Richard Henderson <rth@cygnus.com>
+
+ * 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 <jimb@zwingli.cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * Makefile.am (EXTRA_as_new_SOURCES): Uncomment--fixed by automake
+ patch.
+ * Makefile.in: Rebuild.
+
+1999-02-09 Doug Evans <devans@casey.cygnus.com>
+
+ * Makefile.am (DISTCLEANFILES): Change cgen-opc.h to cgen-desc.h.
+ (cgen.o): Ditto.
+ (EXTRA_as_new_SOURCES): Comment out.
+ (.tcdep): <arch>-opc.h renamed to <arch>-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): <arch>-opc.h renamed to <arch>-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 <nickc@cygnus.com>
+
+ * config/tc-arm.c (md_apply_fix3): Fix handling of label1 - label2
+ relocations for ELF targets.
+
+1999-02-08 Nick Clifton <nickc@cygnus.com>
+
+ * configure.in: Add support for StrongARM target.
+ * configure: Regenerate.
+
+1999-02-05 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * config/tc-alpha.c (md_show_usage): Document pca56 and ev6 options.
+
+Mon Feb 1 20:37:30 1999 Catherine Moore <clm@cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <devans@casey.cygnus.com>
+
+ * Makefile.in: Regenerate.
+ * configure.in: Redo test for using cgen.
+ * configure: Regenerate.
+
+1999-01-09 Nick Clifton <nickc@cygnus.com>
+
+ * config/obj-coff.h (obj_adjust_symtab): Prevent accidental
+ redefinition of this macro.
+
+Tue Jan 5 21:58:03 1999 Doug Evans <devans@canuck.cygnus.com>
+
+ * config/tc-mips.c (mips_frob_file): Disable "Unmatched %hi reloc"
+ warning.
+
+1998-12-29 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * 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 <gavin@cygnus.com>
+
+ * config/tc-mips.c (md_begin): Another correction to the setting of
+ mips_eabi64.
+
+1998-12-23 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * config/tc-mips.c (md_begin): Correct type-o in setting of
+ mips_eabi64.
+
+1998-12-21 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <gavin@cygnus.com>
+
+ * config/tc-mips.c (mips_eabi64): New.
+ (md_begin): Set mips_eabi64.
+ (mips_elf_final_processing): Use it.
+
+1998-12-18 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * config/tc-mips.c (mips_elf_final_processing):
+ Correct setting of ABI in e_flags.
+
+Wed Dec 16 16:17:22 1998 Dave Brolley <brolley@cygnus.com>
+
+ * config/tc-fr30.c (md_assemble): Warn about invalid instructions
+ in delay slots.
+
+1998-12-16 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * config/tc-mips.c (md_begin,md_parse_option): Handle vr4111.
+
+1998-12-15 Doug Evans <devans@casey.cygnus.com>
+
+ * 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 <gavin@cygnus.com>
+
+ * 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 <gavin@cygnus.com>
+
+ * config/tc-mips.c (md_parse_option): Handle vr4111.
+
+98-12-11 Ken Raeburn <raeburn@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-fr30.c: Add line separator character.
+
+Tue Dec 8 19:51:50 1998 Mark Klein <mklein@dis.com>
+
+ * 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 <ian@cygnus.com>
+
+ * read.c (output_leb128): Don't mark as inline.
+
+1998-12-08 Andrew MacLeod <amacleod@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-d30v.c (md_assemble, do_assemble): Improve erroneous
+ input handling.
+
+Mon Dec 7 09:48:34 1998 Catherine Moore <clm@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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
+ <snowball3@usa.net>:
+ * 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
+ <aymeric.vincent@emi.u-bordeaux.fr>.
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-fr30.c (md_cgen_lookup_reloc): Generate
+ BFD_RELOC_FR30_48 instead of BFD_RELOC_FR30_32.
+
+1998-12-02 Nick Clifton <nickc@cygnus.com>
+
+ * config/tc-fr30.c (md_cgen_lookup_reloc): Enable relocs for
+ LDI:20 insn.
+
+Thu Nov 26 11:23:48 1998 Dave Brolley <brolley@cygnus.com>
+
+ * config/tc-fr30.c (md_pcrel_from_section): Restore previous
+ calculation of pcrel point.
+
+Tue Nov 24 17:21:52 1998 Nick Clifton <nickc@cygnus.com>
+
+ * config/tc-fr30.c (md_pcrel_from_section): Fix calculation of
+ pcrel point.
+
+Tue Nov 24 14:54:38 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-fr30.c (md_cgen_lookup_reloc): Add support for
+ FR30_OPERAND_I32.
+
+Thu Nov 19 15:01:29 1998 Nick Clifton <nickc@cygnus.com>
+
+ * config/tc-arm.c (md_parse_option): Add support for -marm7xxx and
+ -marm6xxx command line switches.
+
+1998-11-18 Doug Evans <devans@casey.cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <brolley@cygnus.com>
+
+ * po/gas.pot: Regenerated.
+
+Thu Nov 12 10:54:16 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-fr30.c: Removed currently superflous code.
+
+Tue Nov 10 13:13:05 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <brolley@cygnus.com>
+
+ * 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 <devans@canuck.cygnus.com>
+
+ * config/tc-m32r.c (assemble_two_insns): Ensure both insns
+ are 16 bit insns.
+
+Mon Nov 2 20:10:18 1998 Martin von Loewis <loewis@informatik.hu-berlin.de>
+
+ * 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 <noer@cygnus.com>
+
+ * configure.in: detect cygwin* instead of cygwin32*
+ * configure: regenerate
+
+Tue Oct 27 13:18:40 1998 Nick Clifton <nickc@cygnus.com>
+
+ * listing.c: Add support for producing a listing from piped
+ input.
+
+Tue Oct 27 08:56:44 1998 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * config/tc-mips.c (hilo_interlocks): Remove mips_3900.
+ (append_insn): Account for the tx39's multiply behavior.
+
+1998-10-26 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * config/tc-sh.c (sh_fix_adjustable): Adjust EXTERN and
+ WEAK handling.
+
+Thu Oct 22 12:41:33 1998 Catherine Moore <clm@cygnus.com>
+
+ * cgen.c (gas_cgen_md_apply_fix3): Revert last change.
+
+Thu Oct 22 10:03:15 1998 Ron Unrau <runrau@cygnus.com>
+
+ * config/tc-mips.c: support frame and regmask/fregmask when
+ MIPS_STABS_ELF is specified.
+
+Wed Oct 21 11:34:51 1998 Catherine Moore <clm@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * 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 <devans@seba.cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * doc/c-arm.texi (ARM Directives): Document .ltorn directive.
+
+Mon Oct 12 11:07:21 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * tc-sparc.h (TC_FORCE_RELOCATION): Define.
+ (elf32_sparc_force_relocation): Declare.
+ * 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 <clm@cygnsu.com>
+
+ * 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)
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <jepler@usgs.gov>
+ * doc/c-i386.texi (i386-SIMD): New section.
+
+Thu Oct 1 15:37:54 1998 Richard Henderson <rth@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <wilson@cygnus.com>
+
+ * config/obj-elf.h (ECOFF_DEBUGGING): Add missing parens.
+
+Tue Sep 22 15:44:21 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-m32r.c (m32r_do_align): After inserting NOPs, reset
+ the previous insn to empty.
+
+1998-09-20 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <clm@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * config/tc-i386.c (i386_operand): Fix typo in last patch.
+
+Tue Sep 8 18:10:01 1998 Catherine Moore <clm@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * config/tc-i386.c (i386_operand): Detect non-segment registers
+ used as segment prefixes.
+
+Sat Sep 5 19:00:38 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <jj@sunsite.ms.mff.cuni.cz>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <jj@sunsite.ms.mff.cuni.cz>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-arm.c (md_show_usage): Improve formatting of --help output.
+
+Fri Aug 21 18:43:48 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <devans@canuck.cygnus.com>
+
+ * read.h (generate_lineno_debug): Add prototype.
+ * read.c (generate_lineno_debug): Make non-static.
+
+Thu Aug 20 23:17:04 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * config/tc-i386.c (md_assemble): Only warn for address/data size
+ prefixes.
+
+Thu Aug 20 14:45:08 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <vmakarov@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * tc-arm.h: Define obj_fix_adjustable for OBJ_ELF.
+ * tc-arm.c (arm_fix_adjustable): New routine.
+
+1998-08-13 Vladimir N. Makarov <vmakarov@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * config/tc-hppa.c (pa_enter): Call as_bad rather than abort.
+ (pa_leave): Likewise.
+
+Wed Aug 12 13:25:03 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ 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 <clm@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * config/tc-alpha.c (alpha_fix_adjustable): Don't adjust weak syms.
+
+Wed Aug 5 15:54:14 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <devans@seba.cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <runrau@cygnus.com>
+
+ 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 <clm@cygnus.com>
+
+ * 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 <fche@cygnus.com>
+
+ * 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 <scox@cygnus.com>
+
+ * 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 <devans@canuck.cygnus.com>
+
+ * 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 <devans@canuck.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * Makefile.am (install-exec-local): Don't remove the file before
+ checking whether $(bindir) == $(tooldir)/bin. From Maciej
+ W. Rozycki <macro@ds2.pg.gda.pl>.
+ * Makefile.in: Rebuild.
+
+Fri Jul 24 09:13:46 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <devans@seba.cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-m32r.c (ms_show_usage): Formatting changes.
+
+Wed Jul 15 15:38:28 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * configure.in (i386-*-beos{pe,elf,}*): Recognize.
+
+Tue Jul 14 12:33:44 1998 Chris Torek <torek@bsdi.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <ian@cygnus.com>
+
+ Based on patch from Matt Semersky <matts@scd.hp.com>:
+ * 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 <ian@cygnus.com>
+
+ * 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 <kkaempf@rmi.de>
+
+ * 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.
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <devans@seba.cygnus.com>
+
+ * 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 <amylaar@cygnus.co.uk>
+
+ * config/tc-sh (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 <ian@cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * config/tc-v850.c (v850_comm): Restore old section
+ after common processing.
+
+Wed Jun 24 11:50:54 1998 Klaus Kaempf <kkaempf@progis.de>
+
+ * config/obj-vms.c (Create_VMS_Object_File): Force binary file.
+
+Tue Jun 23 17:47:31 1998 Jim Wilson <wilson@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <mrs@wrs.com>
+
+ * 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 <ian@cygnus.com>
+
+ * config/obj-coff.c (c_symbol_merge): Fix copying of auxiliary
+ information.
+
+Mon Jun 22 15:18:58 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * config/tc-sh.c (md_apply_fix): Handle weak symbols correctly if
+ BFD_ASSEMBLER.
+
+Sun Jun 21 12:26:36 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * config/tc-mips.c (md_show_usage): Fix -mipsN usage.
+
+Tue Jun 16 13:06:21 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * 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 <tromey@cygnus.com>
+
+ * po/Make-in (all-yes): If maintainer mode, depend on .pot file.
+ ($(PACKAGE).pot): Unconditionally depend on POTFILES.
+
+1998-06-12 Vladimir N. Makarov <vmakarov@cygnus.com>
+
+ * config/tc-d10v.c (md_apply_fix3): Checking displacement
+ constraint in instructions REP & REPI.
+
+Thu Jun 11 08:56:46 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-v850.c (v850_comm): Create special sections as needed.
+
+1998-06-10 Vladimir N. Makarov <vmakarov@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * Makefile.am: Rebuild dependencies.
+ (DEP_INCLUDES): Fix reference to intl build directory.
+ * Makefile.in: Rebuild.
+
+Tue Jun 9 12:20:05 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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
+ <martynas@nm3.ktu.lt>:
+ * 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 <hjl@gnu.org>:
+ * 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 <clm@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-d30v.c (md_assemble): Store previous segment state
+ with previous instruction.
+
+Wed Jun 3 18:21:56 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <ian@cygnus.com>
+
+ * config/tc-m68k.c (relaxable_symbol): If TARGET_OS is "elf", all
+ symbols are relaxable.
+
+Wed Jun 3 09:16:00 1998 Catherine Moore <clm@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ From Matt Semersky <matts@scd.hp.com>:
+ * 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 <kkaempf@progis.de>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ * 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 <devans@canuck.cygnus.com>
+
+ * 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 <devans@canuck.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ From Andrew Crabtree <andrewc@typhoon.rose.hp.com>:
+ * 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 <devans@canuck.cygnus.com>
+
+ 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 <ian@cygnus.com>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ * 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 <ian@cygnus.com>
+
+ * symbols.c (symbol_find_base): Fix case insensitive symbol name
+ code. From Chris Moller <moller@bops.com>.
+
+ Based on patch from Klaus Kaempf <kkaempf@progis.de>:
+ * 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 <ian@cygnus.com>
+
+ * 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 <scox@equinox.cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-arm.c (find_real_start): Relax definition of local
+ labels.
+
+Tue May 19 16:59:44 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-v850.c (md_assemble): Remove artificially created
+ register name symbols.
+
+Mon May 18 13:47:06 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * write.c (fixup_segment): Change "segment" to "section" in
+ error message.
+
+Mon May 18 16:55:40 1998 Michael Meissner <meissner@cygnus.com>
+
+ * write.c (fixup_segment): Change sym1-sym2 message again.
+
+Mon May 18 09:31:43 1998 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <devans@canuck.cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <devans@canuck.cygnus.com>
+
+ * 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 <anders.blomdell@control.lth.se>
+
+ * 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 <fche@cygnus.com>
+
+ * 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 <fche@cygnus.com>
+
+ * 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 <fche@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ * cgen.c (cgen_asm_finish_insn): Fix typo.
+
+Thu May 7 02:19:14 1998 Doug Evans <devans@charmed.cygnus.com>
+
+ * 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 <kkaempf@progis.de>
+
+ * 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 <kkaempf@progis.de>
+
+ * doc/c-vax.texi: Correct and extend vax/vms documentation.
+
+Wed May 6 11:51:51 1998 Richard Henderson <rth@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <gavin@cygnus.com>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <fnf@ninemoons.com>
+
+ * read.c (sizeof_leb128): Referenced externally by write.c so
+ don't inline.
+
+Wed Apr 29 15:45:57 1998 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <tromey@cygnus.com>
+
+ * as.c (main): Conditionally call setlocale.
+ * gasp.c (main): Likewise.
+ * asintl.h: Include <locale.h> if HAVE_LOCALE_H.
+ (LC_MESSAGES): Now can be defined even when ENABLE_NLS.
+
+Tue Apr 28 18:33:23 1998 Frank Ch. Eigler <fche@cygnus.com>
+
+ * config/tc-d30v.c (md_show_usage): Correct gettext typo.
+
+Tue Apr 28 12:16:30 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <fche@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * configure.in: Change version number to 2.9.4
+ * configure: Rebuild.
+
+Mon Apr 27 12:07:33 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * cgen.c (cgen_asm_finish_insn): New arg relax_p. All callers updated.
+
+Mon Apr 27 15:16:12 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ecoff.h: Change symbolS in function declaration to struct
+ symbol.
+
+Sun Apr 26 13:44:22 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <phdm@macqel.be>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <tromey@cygnus.com>
+
+ * po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).
+
+Wed Apr 22 14:52:36 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <tromey@scribbles.cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <scox@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * config/tc-mips.c (hilo_interlocks): Remove 4300.
+
+Mon Apr 13 16:51:04 1998 Nick Clifton <nickc@cygnus.com>
+
+ * config/tc-arm.c (do_msr): Support undocumented 'msr cpsr_flg,
+ #<n>' instruction.
+
+Thu Apr 9 10:29:42 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * 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 <devans@canuck.cygnus.com>
+
+ * symbols.c (print_binary): New function.
+ (print_expr_1): Call it.
+
+Mon Apr 6 12:06:39 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <ian@cygnus.com>
+
+ * doc/as.texinfo (Invoking): Clarify -Wa example.
+
+Fri Apr 3 09:12:23 1998 Gavin Koch <gavin@cetus.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * gasp.c (main): Set next field of new include_path structure to
+ NULL. From Avery Pennarun <averyp@gdc.ca>.
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <deaver@amt.tay1.dec.com>
+
+ * config/tc-arm.c (decode_shift): Handle addressing mode 2 w/rrx
+ also.
+
+Wed Apr 1 13:13:20 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <alan@spri.levels.unisa.edu.au>
+
+ * 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 <schwab@issan.informatik.uni-dortmund.de>
+
+ * stabs.c (get_stab_string_offset): Always create a stab string
+ section.
+
+Sat Mar 28 22:28:02 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ 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 <ian@cygnus.com>
+
+ * 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 <clm@cygnus.com>
+
+ * config/tc-v850.c (md_assemble): Store relocation addend in
+ fixup instead of instruction.
+
+Thu Mar 26 23:07:18 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * 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 <devans@canuck.cygnus.com>
+
+ * 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 <bruno@linuix.mathematik.uni-karlsruhe.de>
+
+ * 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 <ian@cygnus.com>
+
+ Based on patch from H.J. Lu <hjl@gnu.org>:
+ * Makefile.am (DISTSTUFF): New variable.
+ (diststuff): New target.
+ * Makefile.in: Rebuild.
+
+Tue Mar 24 16:51:29 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <hjl@gnu.org>
+
+ * 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 <joel@OARcorp.com>
+
+ * configure.in: (sh*-*-rtems*): Switched from ELF to COFF.
+ * configure: Rebuild.
+
+Fri Mar 20 19:15:44 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * aclocal.m4, configure: Rebuild with libtool 1.2.
+
+Thu Mar 19 16:03:12 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * configure.in (emulations): Add thumb-pe target.
+
+ * configure (emulations): Add thumb-pe target.
+
+1998-03-17 Ken Raeburn <raeburn@cygnus.com>
+
+ * itbl-lex.l (yywrap): Don't define if already defined as a
+ macro.
+
+Fri Mar 13 16:31:38 1998 Tom Tromey <tromey@cygnus.com>
+
+ * depend.c (quote_string_for_make): New function.
+ (wrap_output): Use it.
+
+Thu Mar 12 18:28:22 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * config/obj-elf.c [TC_ALPHA]: Include <elf/alpha.h>.
+ * config/tc-alpha.h (ELF_TC_SPECIAL_SECTIONS): New.
+
+Thu Feb 26 15:49:04 1998 Michael Meissner <meissner@cygnus.com>
+
+ * 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 <devans@seba.cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * config/tc-ppc.c (md_pseudo_table): Add "section".
+ (ppc_named_section): New static function.
+
+Thu Feb 19 22:25:42 1998 Richard Henderson <rth@cygnus.com>
+
+ * 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 <fnf@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * Makefile.am (install-exec-local): Install properly when ln
+ fails or tooldir == prefix.
+
+Tue Feb 17 18:58:51 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ Based on patches from Ross Harvey <ross@teraflop.com>:
+ * 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 <gwr@mc.com>:
+ * 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 <amylaar@cygnus.co.uk>
+
+ Fix rac to accept only a0:
+ * 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 <rth@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <jlemke@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <iancarm@cygnus.com>
+
+ * expr.c: Add support for 0x1_2_3_4 bignums.
+
+Tue Feb 10 14:43:40 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * Makefile.am: Update dependencies.
+ * Makefile.in: Rebuild.
+
+Sat Feb 7 15:33:51 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-v850.c (md_parse_option): Add -mv850any command line option.
+
+Thu Feb 5 12:39:08 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <jsmith@teknema.demon.co.uk>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * config/tc-sparc.c: Only include elf/sparc.h if OBJ_ELF.
+
+Mon Feb 2 18:30:34 1998 Steve Haworth <steve@pm.cse.rmit.EDU.AU>
+
+ 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 <nickc@cygnus.com>
+
+ * config/tc-v850.c (md_assemble): Improvements to error messages.
+
+Mon Feb 2 12:39:05 1998 Geoff Keating <geoffk@ozemail.com.au>
+
+ * 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 <devans@canuck.cygnus.com>
+
+ * read.h (include_dirs): Declare.
+ (include_dir_count,include_dir_maxlen): Declare.
+
+Fri Jan 30 11:47:02 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ * 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 <billm@cygnus.com>
+
+ * 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 <billm@cygnus.com>
+
+ * as.h (flag_warn_suppress_instructionswap): added new flag.
+ * tc-d10v.c (md_parse_option,md_longopts): added "--nowarnswap"
+ command line argument.
+ * 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 <J.J.vanderHeijden@student.utwente.nl>
+
+ * configure.in (i386-*-mingw32*): New target.
+ * configure: Rebuild.
+
+Wed Jan 28 14:51:18 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <rankin@eql.caltech.edu>
+
+ 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 <ian@cygnus.com>
+
+ * config/obj-coff.h (RESOLVE_SYMBOL_REDEFINITION): Define.
+
+Wed Jan 28 09:52:00 1998 Nick Clifton <nickc@cygnus.com>
+
+ * config/tc-v850.c (v850_insert_operand): Display instruction when
+ an error is encountered.
+
+Tue Jan 27 13:32:01 1998 Robert Lipe <robertl@dgii.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * config/tc-v850.c: Tidy error message production.
+
+Tue Jan 27 12:24:32 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <nickc@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * 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 <rth@cygnus.com>
+
+ * tc-sh.c (get_specific): Handle SGR & DBR.
+
+Thu Jan 15 13:46:48 1998 Richard Henderson <rth@cygnus.com>
+
+ * tc-h8300.c (parse_reg): Take the length of the symbol into
+ account when attempting to match a register name.
+ * tc-h8500.c (parse_reg): Likewise.
+
+Wed Jan 14 17:52:33 1998 Nick Clifton <nickc@cygnus.com>
+
+ * 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 <meissner@cygnus.com>
+
+ 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 <devans@seba.cygnus.com>
+
+ * config/tc-mips.c (mips_ip): Don't test pinfo flags if INSN_MACRO.
+
+Mon Jan 12 13:04:57 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * 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.
+ * 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 <rth@cygnus.com>
+
+ * 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 <ian@cygnus.com>
+
+ * 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/contrib/binutils/gas/MAINTAINERS b/contrib/binutils/gas/MAINTAINERS
new file mode 100644
index 0000000..d59a3bd
--- /dev/null
+++ b/contrib/binutils/gas/MAINTAINERS
@@ -0,0 +1 @@
+See ../binutils/MAINTAINERS
diff --git a/contrib/binutils/gas/Makefile.am b/contrib/binutils/gas/Makefile.am
index 49b52f7..47b6253 100644
--- a/contrib/binutils/gas/Makefile.am
+++ b/contrib/binutils/gas/Makefile.am
@@ -12,6 +12,9 @@ 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@
@@ -39,17 +42,20 @@ CPU_TYPES = \
arc \
arm \
avr \
+ cris \
d10v \
d30v \
fr30 \
h8300 \
h8500 \
hppa \
+ ia64 \
i370 \
i386 \
i860 \
i960 \
m32r \
+ m68hc11 \
m68k \
m88k \
mcore \
@@ -63,6 +69,7 @@ CPU_TYPES = \
sparc \
tahoe \
tic30 \
+ tic54x \
tic80 \
vax \
w65 \
@@ -93,14 +100,18 @@ CPU_OBJ_VALID = \
case $$o in \
aout) \
case $$c in \
- a29k | arm | i386 | i860 | m68k | mips | ns32k | sparc | tahoe | tic30 | vax) \
+ a29k | arm | cris | i386 | m68k | mips | ns32k | sparc | tahoe | tic30 | vax) \
valid=yes ;; \
esac ;; \
bout) \
case $$c in \
i960) valid=yes ;; \
esac ;; \
- coff) valid=yes ;; \
+ coff) valid=yes; \
+ case $$c in \
+ cris | i860) \
+ valid= ;; \
+ esac ;; \
ecoff) \
case $$c in \
mips | alpha) valid=yes ;; \
@@ -122,16 +133,19 @@ CPU_OBJ_VALID = \
# These are like CPU_TYPES and CPU_OBJ_VALID, for the obj=multi case.
-MULTI_CPU_TYPES = i386 mips
+MULTI_CPU_TYPES = i386 mips cris
MULTI_CPU_OBJ_VALID = \
valid= ; \
case $$o in \
aout) \
case $$c in \
- i386) valid=yes ;; \
+ i386 | cris) valid=yes ;; \
+ esac ;; \
+ coff) \
+ case $$c in \
+ i386 | mips) valid=yes ;; \
esac ;; \
- coff) valid=yes ;; \
ecoff) \
case $$c in \
mips) valid=yes ;; \
@@ -209,17 +223,20 @@ TARGET_CPU_CFILES = \
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-fr30.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-m32r.c \
+ config/tc-m68hc11.c \
config/tc-m68k.c \
config/tc-m88k.c \
config/tc-mcore.c \
@@ -233,6 +250,7 @@ TARGET_CPU_CFILES = \
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 \
@@ -245,17 +263,20 @@ TARGET_CPU_HFILES = \
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-fr30.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-m32r.h \
+ config/tc-m68hc11.h \
config/tc-m68k.h \
config/tc-m88k.h \
config/tc-mcore.h \
@@ -269,6 +290,7 @@ TARGET_CPU_HFILES = \
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 \
@@ -322,7 +344,6 @@ TARG_ENV_HFILES = \
config/te-lynx.h \
config/te-mach.h \
config/te-macos.h \
- config/te-multi.h \
config/te-nbsd.h \
config/te-nbsd532.h \
config/te-pc532mach.h \
@@ -338,6 +359,8 @@ TARG_ENV_HFILES = \
# 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 \
@@ -437,15 +460,16 @@ $(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)
+ $(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): config.h as.h $(TARG_ENV_H) $(OBJ_FORMAT_H) $(TARG_CPU_H) flonum.h \
- expr.h write.h frags.h hash.h read.h symbols.h tc.h \
- obj.h listing.h bignum.h bit_fix.h $(INCDIR)/libiberty.h asintl.h
+$(OBJS): $(INCDIR)/bin-bugs.h $(INCDIR)/libiberty.h $(INCDIR)/progress.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
gasp_new_SOURCES = gasp.c macro.c sb.c hash.c
gasp_new_LDADD = ../libiberty/libiberty.a $(INTLLIBS)
@@ -485,7 +509,7 @@ check-DEJAGNU: site.exp
# 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) $(TARG_CPU_DEP_@target_cpu_type@)
+$(TARG_CPU_O): $(TARG_CPU_C)
$(COMPILE) -c $(TARG_CPU_C)
$(ATOF_TARG_O): $(ATOF_TARG_C)
$(COMPILE) -c $(ATOF_TARG_C)
@@ -532,6 +556,10 @@ 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
# The m68k operand parser.
@@ -604,7 +632,7 @@ 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
+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
@@ -708,27 +736,36 @@ de-stage3:
- (cd stage3 ; rm -f as$(EXEEXT) ; mv -f * ..)
- rmdir stage3
-# Automatic dependency computation. This is a real pain, because the
-# dependencies change based on target_cpu_type and obj_format. We
-# currently ignore any dependencies caused by emulation files.
-
DEP_FILE_DEPS = $(CFILES) $(HFILES) $(TARGET_CPU_CFILES) \
$(TARGET_CPU_HFILES) $(OBJ_FORMAT_CFILES) $(OBJ_FORMAT_HFILES)
+# 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
+ 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
- sed -f dep.sed < DEP1 > DEPA
+ 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 '# IF YOU PUT ANYTHING HERE IT WILL GO AWAY' >> DEPA
- mv -f 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
@@ -739,9 +776,7 @@ DEP1: $(CFILES) $(MULTI_CFILES)
echo '' > targ-env.h; \
echo '' > itbl-cpu.h; \
echo '' > itbl-parse.h; \
- echo '# DO NOT DELETE THIS LINE -- mkdep uses it.' > DEP; \
- echo '# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.' >> DEP; \
- $(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) $? >> DEP
+ $(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) $? > DEP
mv -f DEPDIR/DEP $@
# Work out the special dependencies for the tc-*.c files.
@@ -772,7 +807,7 @@ DEPTC: $(TARGET_CPU_CFILES)
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; \
+ echo "DEPTC_$${c}"'_multi = \' >> DEPTCA; \
for o in $(OBJ_FORMATS); do \
$(MULTI_CPU_OBJ_VALID) \
if [ x$${valid} = xyes ]; then \
@@ -811,7 +846,7 @@ DEPOBJ: $(OBJ_FORMAT_CFILES)
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; \
+ echo "DEPOBJ_$${c}"'_multi = \' >> DEPOBJA; \
for o in $(OBJ_FORMATS); do \
$(MULTI_CPU_OBJ_VALID) \
if [ x$${valid} = xyes ]; then \
@@ -825,7 +860,7 @@ DEPOBJ: $(OBJ_FORMAT_CFILES)
# 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
+ rm -f DEP2A
if [ -d DEPDIR ]; then true; else mkdir DEPDIR; fi
srcdir=`cd $(srcdir); pwd`; \
cd DEPDIR; \
@@ -836,22 +871,22 @@ DEP2: $(TARGET_CPU_HFILES) $(OBJ_FORMAT_HFILES)
echo '#include "tc-'"$${c}"'.h"' > targ-cpu.h; \
echo '#include "obj-'"$${o}"'.h"' > dummy.c; \
$(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) dummy.c | \
- sed -e "s/dummy.o: dummy.c/DEP_$${c}_$${o} =/" >> ../DEP2a; \
+ sed -e "s/dummy.o: dummy.c/DEP_$${c}_$${o} =/" >> ../DEP2A; \
else true; fi; \
done; \
done
- echo 'DEP_hppa_som = $$(BFDDIR)/som.h' >> DEP2a
+ echo 'DEP_hppa_som = $$(BFDDIR)/som.h' >> DEP2A
for c in $(MULTI_CPU_TYPES); do \
- echo 'DEP_'"$${c}"'_multi = \' >> DEP2a; \
+ 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; \
+ echo '$$(DEP_'"$${c}_$${o}"') \' >> DEP2A; \
else true; fi; \
done; \
- echo '' >> DEP2a; \
+ echo '' >> DEP2A; \
done
- mv -f DEP2a DEP2
+ mv -f DEP2A DEP2
dep.sed: dep-in.sed config.status
srcdir=`cd $(srcdir); pwd`; \
@@ -861,444 +896,379 @@ dep.sed: dep-in.sed config.status
-e "s!@SRCDIR@!$${srcdir}!"
dep: DEP
- sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < Makefile > tmp-Makefile
+ 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 '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.in > tmp-Makefile.in
+ 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 '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.am > tmp-Makefile.am
+ 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
-# DO NOT DELETE THIS LINE -- mkdep uses it.
-# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-app.o: app.c $(INCDIR)/bin-bugs.h emul.h
-as.o: as.c $(INCDIR)/bin-bugs.h emul.h subsegs.h $(INCDIR)/obstack.h \
- output-file.h sb.h macro.h
-atof-generic.o: atof-generic.c $(INCDIR)/bin-bugs.h \
- emul.h
-bignum-copy.o: bignum-copy.c $(INCDIR)/bin-bugs.h emul.h
-cond.o: cond.c $(INCDIR)/bin-bugs.h emul.h macro.h \
- sb.h $(INCDIR)/obstack.h
-depend.o: depend.c $(INCDIR)/bin-bugs.h emul.h
-dwarf2dbg.o: dwarf2dbg.c $(INCDIR)/bin-bugs.h emul.h \
- dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/dwarf2.h
-ecoff.o: ecoff.c $(INCDIR)/bin-bugs.h emul.h ecoff.h
-ehopt.o: ehopt.c $(INCDIR)/bin-bugs.h emul.h subsegs.h \
- $(INCDIR)/obstack.h $(INCDIR)/elf/dwarf2.h
-expr.o: expr.c $(INCDIR)/bin-bugs.h emul.h $(INCDIR)/obstack.h
-flonum-copy.o: flonum-copy.c $(INCDIR)/bin-bugs.h emul.h
-flonum-konst.o: flonum-konst.c
-flonum-mult.o: flonum-mult.c
-frags.o: frags.c $(INCDIR)/bin-bugs.h emul.h subsegs.h \
- $(INCDIR)/obstack.h
-hash.o: hash.c $(INCDIR)/bin-bugs.h emul.h $(INCDIR)/obstack.h
-input-file.o: input-file.c $(INCDIR)/bin-bugs.h emul.h \
- input-file.h
-input-scrub.o: input-scrub.c $(INCDIR)/bin-bugs.h emul.h \
- input-file.h sb.h
-listing.o: listing.c $(INCDIR)/bin-bugs.h emul.h input-file.h \
- subsegs.h
-literal.o: literal.c $(INCDIR)/bin-bugs.h emul.h subsegs.h \
- $(INCDIR)/obstack.h
-macro.o: macro.c sb.h macro.h
-messages.o: messages.c $(INCDIR)/bin-bugs.h emul.h
-output-file.o: output-file.c $(INCDIR)/bin-bugs.h emul.h \
- output-file.h
-read.o: read.c $(INCDIR)/bin-bugs.h emul.h subsegs.h \
- $(INCDIR)/obstack.h sb.h macro.h ecoff.h
-sb.o: sb.c sb.h
-stabs.o: stabs.c $(INCDIR)/bin-bugs.h emul.h $(INCDIR)/obstack.h \
- subsegs.h ecoff.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
-subsegs.o: subsegs.c $(INCDIR)/bin-bugs.h emul.h subsegs.h \
- $(INCDIR)/obstack.h
-symbols.o: symbols.c $(INCDIR)/bin-bugs.h emul.h $(INCDIR)/obstack.h \
- subsegs.h struc-symbol.h
-write.o: write.c $(INCDIR)/bin-bugs.h emul.h subsegs.h \
- $(INCDIR)/obstack.h output-file.h
-gasp.o: gasp.c $(INCDIR)/bin-bugs.h sb.h macro.h
-itbl-ops.o: itbl-ops.c itbl-ops.h $(INCDIR)/bin-bugs.h \
- emul.h itbl-parse.h
-e-i386aout.o: $(srcdir)/config/e-i386aout.c $(INCDIR)/bin-bugs.h \
- emul.h emul-target.h
-e-i386coff.o: $(srcdir)/config/e-i386coff.c $(INCDIR)/bin-bugs.h \
- emul.h emul-target.h
-e-i386elf.o: $(srcdir)/config/e-i386elf.c $(INCDIR)/bin-bugs.h \
- emul.h emul-target.h
-e-mipsecoff.o: $(srcdir)/config/e-mipsecoff.c $(INCDIR)/bin-bugs.h \
- emul.h emul-target.h
-e-mipself.o: $(srcdir)/config/e-mipself.c $(INCDIR)/bin-bugs.h \
- emul.h emul-target.h
-DEPTC_a29k_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/a29k.h
-DEPTC_a29k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/a29k.h
-DEPTC_a29k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/opcode/a29k.h
-DEPTC_alpha_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
- $(INCDIR)/obstack.h struc-symbol.h ecoff.h $(INCDIR)/opcode/alpha.h \
- $(srcdir)/config/atof-vax.c
-DEPTC_alpha_ecoff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-ecoff.h \
- $(srcdir)/config/tc-alpha.h ecoff.h $(INCDIR)/coff/sym.h \
- $(INCDIR)/coff/ecoff.h emul.h subsegs.h $(INCDIR)/obstack.h \
- struc-symbol.h $(INCDIR)/opcode/alpha.h $(srcdir)/config/atof-vax.c
-DEPTC_alpha_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h struc-symbol.h \
+AMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW.
+DEPTC_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/a29k.h
+DEPTC_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/a29k.h
+DEPTC_a29k_elf = $(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)/opcode/a29k.h
+DEPTC_alpha_coff = $(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 $(srcdir)/config/atof-vax.c
+DEPTC_alpha_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-alpha.h \
ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \
- $(INCDIR)/opcode/alpha.h $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \
+ subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/alpha.h \
$(srcdir)/config/atof-vax.c
-DEPTC_alpha_evax = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-evax.h \
- $(srcdir)/config/tc-alpha.h emul.h subsegs.h $(INCDIR)/obstack.h \
- struc-symbol.h ecoff.h $(INCDIR)/opcode/alpha.h $(srcdir)/config/atof-vax.c
-DEPTC_arc_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-arc.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
- $(INCDIR)/obstack.h $(INCDIR)/opcode/arc.h $(INCDIR)/elf/arc.h \
- $(INCDIR)/elf/reloc-macros.h
-DEPTC_arc_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/arc.h \
+DEPTC_alpha_elf = $(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 $(srcdir)/config/atof-vax.c
+DEPTC_alpha_evax = $(srcdir)/config/obj-evax.h $(srcdir)/config/tc-alpha.h \
+ subsegs.h $(INCDIR)/obstack.h struc-symbol.h ecoff.h \
+ $(INCDIR)/opcode/alpha.h $(srcdir)/config/atof-vax.c
+DEPTC_arc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arc.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/arc.h \
$(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h
-DEPTC_arm_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-arm.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h
-DEPTC_arm_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-arm.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h
-DEPTC_arm_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/arm.h \
+DEPTC_arc_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/arc.h $(INCDIR)/elf/arc.h \
$(INCDIR)/elf/reloc-macros.h
-DEPTC_avr_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-avr.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
- $(INCDIR)/obstack.h
-DEPTC_avr_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h
-DEPTC_d10v_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-d10v.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
+DEPTC_arm_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-arm.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h
+DEPTC_arm_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arm.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h
+DEPTC_arm_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
+ dwarf2dbg.h
+DEPTC_avr_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-avr.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/avr.h
+DEPTC_avr_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/avr.h
+DEPTC_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \
+ $(INCDIR)/opcode/cris.h dwarf2dbg.h
+DEPTC_cris_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/cris.h dwarf2dbg.h
+DEPTC_d10v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d10v.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d10v.h \
+ $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h
+DEPTC_d10v_elf = $(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 subsegs.h \
$(INCDIR)/obstack.h $(INCDIR)/opcode/d10v.h $(INCDIR)/elf/ppc.h \
$(INCDIR)/elf/reloc-macros.h
-DEPTC_d10v_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d10v.h \
- $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h
-DEPTC_d30v_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-d30v.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
+DEPTC_d30v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d30v.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d30v.h
+DEPTC_d30v_elf = $(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 subsegs.h \
$(INCDIR)/obstack.h $(INCDIR)/opcode/d30v.h
-DEPTC_d30v_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d30v.h
-DEPTC_fr30_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-fr30.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
+DEPTC_fr30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-fr30.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/fr30-desc.h \
+ $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/fr30-opc.h \
+ cgen.h
+DEPTC_fr30_elf = $(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 subsegs.h \
$(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/fr30-desc.h \
$(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/fr30-opc.h \
cgen.h
-DEPTC_fr30_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/symcat.h \
- $(srcdir)/../opcodes/fr30-desc.h $(INCDIR)/opcode/cgen.h \
- $(srcdir)/../opcodes/fr30-opc.h cgen.h
-DEPTC_h8300_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-h8300.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h
-DEPTC_h8300_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h
-DEPTC_h8500_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h
-DEPTC_h8500_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h
-DEPTC_hppa_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
- $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(BFDDIR)/libbfd.h \
- $(INCDIR)/opcode/hppa.h
-DEPTC_i370_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-i370.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
- $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/i370.h
-DEPTC_i370_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h struc-symbol.h \
- $(INCDIR)/opcode/i370.h $(INCDIR)/elf/i370.h
-DEPTC_i386_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-i386.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i386.h
-DEPTC_i386_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-i386.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i386.h
-DEPTC_i386_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i386.h
-DEPTC_i860_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-i860.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/i860.h
-DEPTC_i860_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-i860.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/opcode/i860.h
-DEPTC_i860_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/opcode/i860.h
-DEPTC_i960_bout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-bout.h \
- $(srcdir)/config/tc-i960.h emul.h $(INCDIR)/obstack.h \
+DEPTC_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h
+DEPTC_h8300_elf = $(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 $(INCDIR)/opcode/h8300.h
+DEPTC_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h
+DEPTC_h8500_elf = $(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
+DEPTC_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h
+DEPTC_hppa_elf = $(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 \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/hppa.h \
+ dwarf2dbg.h
+DEPTC_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h
+DEPTC_ia64_elf = $(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 dwarf2dbg.h \
+ subsegs.h $(INCDIR)/obstack.h
+DEPTC_i370_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i370.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/i370.h
+DEPTC_i370_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/i370.h \
+ $(INCDIR)/elf/i370.h
+DEPTC_i386_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-i386.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \
+ dwarf2dbg.h $(INCDIR)/opcode/i386.h
+DEPTC_i386_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i386.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h dwarf2dbg.h \
+ $(INCDIR)/opcode/i386.h
+DEPTC_i386_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h dwarf2dbg.h $(INCDIR)/opcode/i386.h
+DEPTC_i860_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/i860.h $(INCDIR)/elf/i860.h \
+ $(INCDIR)/elf/reloc-macros.h
+DEPTC_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h
+DEPTC_i960_coff = $(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 $(INCDIR)/opcode/i960.h
+DEPTC_i960_elf = $(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)/obstack.h \
$(INCDIR)/opcode/i960.h
-DEPTC_i960_coff = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h
-DEPTC_i960_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h
-DEPTC_m32r_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-m32r.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
+DEPTC_m32r_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m32r.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/m32r-desc.h \
+ $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/m32r-opc.h \
+ cgen.h
+DEPTC_m32r_elf = $(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 subsegs.h \
$(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/m32r-desc.h \
$(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/m32r-opc.h \
cgen.h
-DEPTC_m32r_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/symcat.h \
- $(srcdir)/../opcodes/m32r-desc.h $(INCDIR)/opcode/cgen.h \
- $(srcdir)/../opcodes/m32r-opc.h cgen.h
-DEPTC_m68k_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \
+DEPTC_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/m68hc11.h \
+ dwarf2dbg.h
+DEPTC_m68hc11_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/m68hc11.h dwarf2dbg.h
+DEPTC_m68k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \
+ subsegs.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h
+DEPTC_m68k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \
$(srcdir)/config/m68k-parse.h
-DEPTC_m68k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-m68k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \
+DEPTC_m68k_elf = $(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)/obstack.h \
+ subsegs.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h \
+ $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h
+DEPTC_m68k_hp300 = $(srcdir)/config/obj-hp300.h $(srcdir)/config/obj-aout.h \
+ $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \
$(srcdir)/config/m68k-parse.h
-DEPTC_m68k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \
- $(srcdir)/config/m68k-parse.h $(INCDIR)/elf/m68k.h \
- $(INCDIR)/elf/reloc-macros.h
-DEPTC_m68k_hp300 = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-hp300.h \
- $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \
- $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h
-DEPTC_m88k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h
-DEPTC_m88k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h
-DEPTC_mcore_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h
-DEPTC_mcore_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h \
+DEPTC_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h
+DEPTC_m88k_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h
+DEPTC_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h
+DEPTC_mcore_elf = $(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)/elf/mcore.h $(INCDIR)/elf/reloc-macros.h
-DEPTC_mips_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-mips.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h \
+DEPTC_mips_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-mips.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \
+ $(INCDIR)/opcode/mips.h itbl-ops.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 = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mips.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h \
itbl-ops.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)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mips.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h \
+DEPTC_mips_ecoff = $(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)/opcode/mips.h \
itbl-ops.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 = $(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)/opcode/mips.h itbl-ops.h \
$(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h ecoff.h \
$(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h
-DEPTC_mips_ecoff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-ecoff.h \
- $(srcdir)/config/tc-mips.h ecoff.h $(INCDIR)/coff/sym.h \
- $(INCDIR)/coff/ecoff.h emul.h subsegs.h $(INCDIR)/obstack.h \
- $(INCDIR)/opcode/mips.h itbl-ops.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)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h \
- itbl-ops.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
- ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h
-DEPTC_mn10200_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mn10200.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
+DEPTC_mn10200_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10200.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10200.h
+DEPTC_mn10200_elf = $(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 subsegs.h \
$(INCDIR)/obstack.h $(INCDIR)/opcode/mn10200.h
-DEPTC_mn10200_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10200.h
-DEPTC_mn10300_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mn10300.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
- $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h
-DEPTC_mn10300_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h
-DEPTC_ns32k_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/ns32k.h $(INCDIR)/obstack.h
-DEPTC_ns32k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-ns32k.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/opcode/ns32k.h \
+DEPTC_mn10300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10300.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h \
+ dwarf2dbg.h
+DEPTC_mn10300_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h dwarf2dbg.h
+DEPTC_ns32k_aout = $(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_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/opcode/ns32k.h $(INCDIR)/obstack.h
-DEPTC_pj_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-pj.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/opcode/pj.h
-DEPTC_pj_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/opcode/pj.h
-DEPTC_ppc_coff = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/ppc.h
-DEPTC_ppc_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/ppc.h \
- $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h
-DEPTC_sh_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-sh.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h
-DEPTC_sh_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h \
- $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h
-DEPTC_sparc_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-sparc.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h
-DEPTC_sparc_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-sparc.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h
-DEPTC_sparc_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h \
- $(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h
-DEPTC_tahoe_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h
-DEPTC_tahoe_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
+DEPTC_ns32k_coff = $(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 = $(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_pj_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pj.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/opcode/pj.h
+DEPTC_pj_elf = $(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)/opcode/pj.h
+DEPTC_ppc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ppc.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/ppc.h
+DEPTC_ppc_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/ppc.h $(INCDIR)/elf/ppc.h \
+ $(INCDIR)/elf/reloc-macros.h
+DEPTC_sh_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sh.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h \
+ struc-symbol.h dwarf2dbg.h
+DEPTC_sh_elf = $(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 struc-symbol.h \
+ $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h
+DEPTC_sparc_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-sparc.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \
+ $(INCDIR)/opcode/sparc.h
+DEPTC_sparc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sparc.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h
+DEPTC_sparc_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h $(INCDIR)/elf/sparc.h \
+ $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h
+DEPTC_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \
$(INCDIR)/opcode/tahoe.h
-DEPTC_tahoe_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h
-DEPTC_tic30_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/tic30.h
-DEPTC_tic30_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-tic30.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/tic30.h
-DEPTC_tic30_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/opcode/tic30.h
-DEPTC_tic80_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/tic80.h
-DEPTC_tic80_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/opcode/tic80.h
-DEPTC_vax_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h \
- $(INCDIR)/opcode/vax.h
-DEPTC_vax_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-vax.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(srcdir)/config/vax-inst.h \
+DEPTC_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h
+DEPTC_tahoe_elf = $(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)/obstack.h \
+ $(INCDIR)/opcode/tahoe.h
+DEPTC_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic30.h
+DEPTC_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic30.h
+DEPTC_tic30_elf = $(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)/opcode/tic30.h
+DEPTC_tic54x_coff = $(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 sb.h macro.h \
+ subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/tic54x.h
+DEPTC_tic54x_elf = $(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 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 = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic80.h
+DEPTC_tic80_elf = $(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)/opcode/tic80.h
+DEPTC_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(srcdir)/config/vax-inst.h \
$(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h
-DEPTC_vax_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h \
- $(INCDIR)/opcode/vax.h
-DEPTC_vax_vms = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-vms.h \
- $(srcdir)/config/tc-vax.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def emul.h $(srcdir)/config/vax-inst.h \
+DEPTC_vax_coff = $(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 $(INCDIR)/opcode/vax.h
+DEPTC_vax_elf = $(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 $(INCDIR)/opcode/vax.h
-DEPTC_w65_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h
-DEPTC_w65_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h
-DEPTC_v850_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-v850.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
- $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h
-DEPTC_v850_elf = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-elf.h \
+DEPTC_vax_vms = $(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 $(INCDIR)/opcode/vax.h
+DEPTC_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h
+DEPTC_w65_elf = $(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 = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h \
+ dwarf2dbg.h
+DEPTC_v850_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h dwarf2dbg.h
+DEPTC_z8k_coff = $(srcdir)/../opcodes/z8k-opc.h $(srcdir)/config/obj-coff.h \
+ $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
+DEPTC_z8k_elf = $(srcdir)/../opcodes/z8k-opc.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h
-DEPTC_z8k_coff = $(srcdir)/../opcodes/z8k-opc.h $(INCDIR)/bin-bugs.h \
- $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h \
- $(INCDIR)/bfdlink.h emul.h
-DEPTC_z8k_elf = $(srcdir)/../opcodes/z8k-opc.h $(INCDIR)/bin-bugs.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 emul.h
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-z8k.h
DEPTC_hppa_som = $(srcdir)/config/tc-hppa.h subsegs.h \
$(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h \
$(BFDDIR)/som.h
@@ -1306,332 +1276,323 @@ DEPTC_i386_multi = $(DEPTC_i386_aout) $(DEPTC_i386_coff) \
$(DEPTC_i386_elf)
DEPTC_mips_multi = $(DEPTC_mips_coff) $(DEPTC_mips_ecoff) \
$(DEPTC_mips_elf)
-DEPOBJ_a29k_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
-DEPOBJ_a29k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_a29k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_alpha_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_alpha_ecoff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-ecoff.h \
- $(srcdir)/config/tc-alpha.h ecoff.h $(INCDIR)/coff/sym.h \
- $(INCDIR)/coff/ecoff.h emul.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(BFDDIR)/libecoff.h
-DEPOBJ_alpha_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.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)/bin-bugs.h $(srcdir)/config/obj-evax.h \
- $(srcdir)/config/tc-alpha.h emul.h
-DEPOBJ_arc_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-arc.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_arc_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_arm_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-arm.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
-DEPOBJ_arm_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-arm.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_arm_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_avr_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-avr.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_avr_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_d10v_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-d10v.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_d10v_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_d30v_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-d30v.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_d30v_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_fr30_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-fr30.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_fr30_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_h8300_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-h8300.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_h8300_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_h8500_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_h8500_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_hppa_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_i370_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-i370.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_i370_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/i370.h \
+DEPTC_cris_multi = $(DEPTC_cris_aout) $(DEPTC_cris_elf)
+DEPOBJ_a29k_aout = $(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 = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_a29k_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_alpha_coff = $(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 = $(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 = $(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 ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \
+ $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \
$(INCDIR)/aout/aout64.h
-DEPOBJ_i386_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-i386.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
-DEPOBJ_i386_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-i386.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_i386_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_i860_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-i860.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
-DEPOBJ_i860_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-i860.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_i860_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_i960_bout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-bout.h \
- $(srcdir)/config/tc-i960.h emul.h $(INCDIR)/obstack.h
-DEPOBJ_i960_coff = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_i960_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_m32r_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-m32r.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_m32r_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_m68k_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
+DEPOBJ_alpha_evax = $(srcdir)/config/obj-evax.h $(srcdir)/config/tc-alpha.h
+DEPOBJ_arc_coff = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_arm_aout = $(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 = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arm.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_arm_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_avr_coff = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_cris_aout = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_d10v_coff = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_d30v_coff = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_fr30_coff = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_h8300_elf = $(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 $(INCDIR)/aout/aout64.h
+DEPOBJ_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_h8500_elf = $(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 $(INCDIR)/aout/aout64.h
+DEPOBJ_hppa_coff = $(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 = $(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 \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_ia64_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_i370_coff = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/elf/i370.h $(INCDIR)/aout/aout64.h
+DEPOBJ_i386_aout = $(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 = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i386.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_i386_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_i860_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h \
+ $(INCDIR)/obstack.h
+DEPOBJ_i960_coff = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_m32r_coff = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_m68hc11_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_m68k_aout = $(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 = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_m68k_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(srcdir)/config/obj-aout.h \
$(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
-DEPOBJ_m68k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-m68k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_m68k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(INCDIR)/bin-bugs.h \
- $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \
- $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
+DEPOBJ_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_m88k_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_mcore_elf = $(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 $(INCDIR)/aout/aout64.h
+DEPOBJ_mips_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-mips.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
$(INCDIR)/obstack.h
-DEPOBJ_m88k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_m88k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_mcore_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_mcore_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_mips_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-mips.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
-DEPOBJ_mips_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mips.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_mips_ecoff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-ecoff.h \
- $(srcdir)/config/tc-mips.h ecoff.h $(INCDIR)/coff/sym.h \
- $(INCDIR)/coff/ecoff.h emul.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(BFDDIR)/libecoff.h
-DEPOBJ_mips_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h ecoff.h $(INCDIR)/coff/sym.h \
- $(INCDIR)/coff/ecoff.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
+DEPOBJ_mips_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mips.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_mips_ecoff = $(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 = $(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 ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \
+ $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/aout/aout64.h
+DEPOBJ_mn10200_coff = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_mn10300_coff = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_ns32k_aout = $(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 = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_pj_coff = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_ppc_coff = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \
$(INCDIR)/aout/aout64.h
-DEPOBJ_mn10200_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mn10200.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_mn10200_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_mn10300_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mn10300.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_mn10300_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_ns32k_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
-DEPOBJ_ns32k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-ns32k.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_ns32k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_pj_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-pj.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_pj_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_ppc_coff = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_ppc_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/ppc.h \
- $(INCDIR)/elf/reloc-macros.h $(INCDIR)/aout/aout64.h
-DEPOBJ_sh_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-sh.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_sh_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_sparc_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-sparc.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
-DEPOBJ_sparc_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-sparc.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_sparc_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_tahoe_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
-DEPOBJ_tahoe_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_tahoe_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_tic30_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
-DEPOBJ_tic30_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-tic30.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_tic30_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_tic80_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_tic80_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_vax_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
-DEPOBJ_vax_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-vax.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
-DEPOBJ_vax_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_vax_vms = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-vms.h \
- $(srcdir)/config/tc-vax.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def emul.h subsegs.h $(INCDIR)/obstack.h
-DEPOBJ_w65_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_w65_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_v850_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-v850.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
+DEPOBJ_sh_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sh.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_sh_elf = $(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 $(INCDIR)/aout/aout64.h
+DEPOBJ_sparc_aout = $(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 = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sparc.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_sparc_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_tahoe_aout = $(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 = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_tic30_aout = $(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 = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_tic30_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_tic54x_coff = $(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_v850_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_z8k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_z8k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_tic54x_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_tic80_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_vax_aout = $(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 = $(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 = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_vax_vms = $(srcdir)/config/obj-vms.h $(srcdir)/config/tc-vax.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def subsegs.h \
+ $(INCDIR)/obstack.h
+DEPOBJ_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_w65_elf = $(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 $(INCDIR)/aout/aout64.h
+DEPOBJ_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_v850_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_z8k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_z8k_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.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
@@ -1639,6 +1600,7 @@ 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 \
@@ -1673,6 +1635,11 @@ DEP_avr_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-avr.h \
DEP_avr_elf = $(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
+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 $(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)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
DEP_d10v_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
@@ -1702,6 +1669,15 @@ DEP_h8500_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
$(INCDIR)/bfdlink.h $(srcdir)/config/tc-h8500.h
DEP_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \
$(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
+DEP_hppa_elf = $(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
+DEP_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
+DEP_ia64_elf = $(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
DEP_i370_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i370.h \
$(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
DEP_i370_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
@@ -1715,10 +1691,6 @@ DEP_i386_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i386.h \
DEP_i386_elf = $(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
-DEP_i860_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-i860.h \
- $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
-DEP_i860_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i860.h \
- $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
DEP_i860_elf = $(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
@@ -1734,6 +1706,12 @@ DEP_m32r_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m32r.h \
DEP_m32r_elf = $(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
+DEP_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h
+DEP_m68hc11_elf = $(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
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 \
@@ -1823,6 +1801,12 @@ DEP_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \
DEP_tic30_elf = $(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
+DEP_tic54x_coff = $(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
+DEP_tic54x_elf = $(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
DEP_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \
$(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h
@@ -1860,7 +1844,52 @@ 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
+as.o: as.c subsegs.h $(INCDIR)/obstack.h output-file.h \
+ sb.h macro.h
+atof-generic.o: atof-generic.c
+bignum-copy.o: bignum-copy.c
+cond.o: cond.c macro.h sb.h $(INCDIR)/obstack.h
+depend.o: depend.c
+dwarf2dbg.o: dwarf2dbg.c dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h \
+ $(INCDIR)/elf/dwarf2.h
+ecoff.o: ecoff.c ecoff.h
+ehopt.o: ehopt.c subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/dwarf2.h
+expr.o: expr.c $(INCDIR)/obstack.h
+flonum-copy.o: flonum-copy.c
+flonum-konst.o: flonum-konst.c
+flonum-mult.o: flonum-mult.c
+frags.o: frags.c subsegs.h $(INCDIR)/obstack.h
+hash.o: hash.c $(INCDIR)/obstack.h
+input-file.o: input-file.c input-file.h
+input-scrub.o: input-scrub.c input-file.h sb.h
+listing.o: listing.c input-file.h subsegs.h
+literal.o: literal.c subsegs.h $(INCDIR)/obstack.h
+macro.o: macro.c sb.h macro.h
+messages.o: messages.c
+output-file.o: output-file.c output-file.h
+read.o: read.c subsegs.h $(INCDIR)/obstack.h sb.h macro.h \
+ ecoff.h
+sb.o: sb.c sb.h
+stabs.o: stabs.c $(INCDIR)/obstack.h subsegs.h ecoff.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
+subsegs.o: subsegs.c subsegs.h $(INCDIR)/obstack.h
+symbols.o: symbols.c $(INCDIR)/obstack.h subsegs.h \
+ struc-symbol.h
+write.o: write.c subsegs.h $(INCDIR)/obstack.h output-file.h
+gasp.o: gasp.c sb.h macro.h
+itbl-ops.o: itbl-ops.c itbl-ops.h
+e-crisaout.o: $(srcdir)/config/e-crisaout.c emul-target.h
+e-criself.o: $(srcdir)/config/e-criself.c emul-target.h
+e-i386aout.o: $(srcdir)/config/e-i386aout.c emul-target.h
+e-i386coff.o: $(srcdir)/config/e-i386coff.c emul-target.h
+e-i386elf.o: $(srcdir)/config/e-i386elf.c emul-target.h
+e-mipsecoff.o: $(srcdir)/config/e-mipsecoff.c emul-target.h
+e-mipself.o: $(srcdir)/config/e-mipself.c 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@)
-# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
+#MKDEP DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING ABOVE.
diff --git a/contrib/binutils/gas/Makefile.in b/contrib/binutils/gas/Makefile.in
index 569b98e..bd1a89e 100644
--- a/contrib/binutils/gas/Makefile.in
+++ b/contrib/binutils/gas/Makefile.in
@@ -69,9 +69,13 @@ BFDLIB = @BFDLIB@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
DATADIRNAME = @DATADIRNAME@
DLLTOOL = @DLLTOOL@
EXEEXT = @EXEEXT@
+GCJ = @GCJ@
+GCJFLAGS = @GCJFLAGS@
GDBINIT = @GDBINIT@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
@@ -81,6 +85,7 @@ INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@
INSTOBJEXT = @INSTOBJEXT@
INTLDEPS = @INTLDEPS@
INTLOBJS = @INTLOBJS@
+LIBM = @LIBM@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
MAINT = @MAINT@
@@ -88,11 +93,13 @@ MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
OPCODES_LIB = @OPCODES_LIB@
PACKAGE = @PACKAGE@
POFILES = @POFILES@
POSUB = @POSUB@
RANLIB = @RANLIB@
+STRIP = @STRIP@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@@ -116,6 +123,9 @@ 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@
@@ -143,17 +153,20 @@ CPU_TYPES = \
arc \
arm \
avr \
+ cris \
d10v \
d30v \
fr30 \
h8300 \
h8500 \
hppa \
+ ia64 \
i370 \
i386 \
i860 \
i960 \
m32r \
+ m68hc11 \
m68k \
m88k \
mcore \
@@ -167,6 +180,7 @@ CPU_TYPES = \
sparc \
tahoe \
tic30 \
+ tic54x \
tic80 \
vax \
w65 \
@@ -199,14 +213,18 @@ CPU_OBJ_VALID = \
case $$o in \
aout) \
case $$c in \
- a29k | arm | i386 | i860 | m68k | mips | ns32k | sparc | tahoe | tic30 | vax) \
+ a29k | arm | cris | i386 | m68k | mips | ns32k | sparc | tahoe | tic30 | vax) \
valid=yes ;; \
esac ;; \
bout) \
case $$c in \
i960) valid=yes ;; \
esac ;; \
- coff) valid=yes ;; \
+ coff) valid=yes; \
+ case $$c in \
+ cris | i860) \
+ valid= ;; \
+ esac ;; \
ecoff) \
case $$c in \
mips | alpha) valid=yes ;; \
@@ -229,16 +247,19 @@ CPU_OBJ_VALID = \
# These are like CPU_TYPES and CPU_OBJ_VALID, for the obj=multi case.
-MULTI_CPU_TYPES = i386 mips
+MULTI_CPU_TYPES = i386 mips cris
MULTI_CPU_OBJ_VALID = \
valid= ; \
case $$o in \
aout) \
case $$c in \
- i386) valid=yes ;; \
+ i386 | cris) valid=yes ;; \
+ esac ;; \
+ coff) \
+ case $$c in \
+ i386 | mips) valid=yes ;; \
esac ;; \
- coff) valid=yes ;; \
ecoff) \
case $$c in \
mips) valid=yes ;; \
@@ -319,17 +340,20 @@ TARGET_CPU_CFILES = \
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-fr30.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-m32r.c \
+ config/tc-m68hc11.c \
config/tc-m68k.c \
config/tc-m88k.c \
config/tc-mcore.c \
@@ -343,6 +367,7 @@ TARGET_CPU_CFILES = \
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 \
@@ -356,17 +381,20 @@ TARGET_CPU_HFILES = \
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-fr30.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-m32r.h \
+ config/tc-m68hc11.h \
config/tc-m68k.h \
config/tc-m88k.h \
config/tc-mcore.h \
@@ -380,6 +408,7 @@ TARGET_CPU_HFILES = \
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 \
@@ -436,7 +465,6 @@ TARG_ENV_HFILES = \
config/te-lynx.h \
config/te-mach.h \
config/te-macos.h \
- config/te-multi.h \
config/te-nbsd.h \
config/te-nbsd532.h \
config/te-pc532mach.h \
@@ -453,6 +481,8 @@ TARG_ENV_HFILES = \
# 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 \
@@ -544,7 +574,7 @@ 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)
+ $(extra_objects) $(GASLIBS) $(INTLLIBS) $(LIBM)
as_new_DEPENDENCIES = $(TARG_CPU_O) $(OBJ_FORMAT_O) $(ATOF_TARG_O) \
$(extra_objects) $(GASLIBS) $(INTLDEPS)
@@ -586,463 +616,456 @@ MOSTLYCLEANFILES = $(STAGESTUFF) core stamp-mk.com \
testsuite/site.exp site.bak site.exp stage stage1 stage2
-CLEANFILES = dep.sed DEPTC DEPTCA DEPOBJ DEPOBJA DEP2 DEP2a DEP1 DEPA DEP DEPDIR
+CLEANFILES = dep.sed DEPTC DEPTCA DEPOBJ DEPOBJA DEP2 DEP2A DEP1 DEPA DEP DEPDIR
against = stage2
-# Automatic dependency computation. This is a real pain, because the
-# dependencies change based on target_cpu_type and obj_format. We
-# currently ignore any dependencies caused by emulation files.
-
DEP_FILE_DEPS = $(CFILES) $(HFILES) $(TARGET_CPU_CFILES) \
$(TARGET_CPU_HFILES) $(OBJ_FORMAT_CFILES) $(OBJ_FORMAT_HFILES)
-DEPTC_a29k_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/a29k.h
-DEPTC_a29k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/a29k.h
+AMKDEP = #DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW.
+DEPTC_a29k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-a29k.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/a29k.h
-DEPTC_a29k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/opcode/a29k.h
+DEPTC_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/a29k.h
-DEPTC_alpha_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
- $(INCDIR)/obstack.h struc-symbol.h ecoff.h $(INCDIR)/opcode/alpha.h \
- $(srcdir)/config/atof-vax.c
+DEPTC_a29k_elf = $(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)/opcode/a29k.h
-DEPTC_alpha_ecoff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-ecoff.h \
- $(srcdir)/config/tc-alpha.h ecoff.h $(INCDIR)/coff/sym.h \
- $(INCDIR)/coff/ecoff.h emul.h subsegs.h $(INCDIR)/obstack.h \
- struc-symbol.h $(INCDIR)/opcode/alpha.h $(srcdir)/config/atof-vax.c
+DEPTC_alpha_coff = $(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 $(srcdir)/config/atof-vax.c
-DEPTC_alpha_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h struc-symbol.h \
+DEPTC_alpha_ecoff = $(srcdir)/config/obj-ecoff.h $(srcdir)/config/tc-alpha.h \
ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \
- $(INCDIR)/opcode/alpha.h $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \
+ subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/alpha.h \
$(srcdir)/config/atof-vax.c
-DEPTC_alpha_evax = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-evax.h \
- $(srcdir)/config/tc-alpha.h emul.h subsegs.h $(INCDIR)/obstack.h \
- struc-symbol.h ecoff.h $(INCDIR)/opcode/alpha.h $(srcdir)/config/atof-vax.c
+DEPTC_alpha_elf = $(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 $(srcdir)/config/atof-vax.c
+
+DEPTC_alpha_evax = $(srcdir)/config/obj-evax.h $(srcdir)/config/tc-alpha.h \
+ subsegs.h $(INCDIR)/obstack.h struc-symbol.h ecoff.h \
+ $(INCDIR)/opcode/alpha.h $(srcdir)/config/atof-vax.c
+
+DEPTC_arc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arc.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/arc.h \
+ $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h
-DEPTC_arc_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-arc.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
+DEPTC_arc_elf = $(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 subsegs.h \
$(INCDIR)/obstack.h $(INCDIR)/opcode/arc.h $(INCDIR)/elf/arc.h \
$(INCDIR)/elf/reloc-macros.h
-DEPTC_arc_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/arc.h \
- $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h
+DEPTC_arm_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-arm.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h
+
+DEPTC_arm_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arm.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h
-DEPTC_arm_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-arm.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h
+DEPTC_arm_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h \
+ dwarf2dbg.h
-DEPTC_arm_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-arm.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h
+DEPTC_avr_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-avr.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/avr.h
-DEPTC_arm_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/arm.h \
- $(INCDIR)/elf/reloc-macros.h
+DEPTC_avr_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/avr.h
-DEPTC_avr_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-avr.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
- $(INCDIR)/obstack.h
+DEPTC_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \
+ $(INCDIR)/opcode/cris.h dwarf2dbg.h
-DEPTC_avr_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h
+DEPTC_cris_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/cris.h dwarf2dbg.h
-DEPTC_d10v_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-d10v.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
+DEPTC_d10v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d10v.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d10v.h \
+ $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h
+
+DEPTC_d10v_elf = $(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 subsegs.h \
$(INCDIR)/obstack.h $(INCDIR)/opcode/d10v.h $(INCDIR)/elf/ppc.h \
$(INCDIR)/elf/reloc-macros.h
-DEPTC_d10v_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d10v.h \
- $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h
+DEPTC_d30v_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-d30v.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d30v.h
-DEPTC_d30v_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-d30v.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
+DEPTC_d30v_elf = $(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 subsegs.h \
$(INCDIR)/obstack.h $(INCDIR)/opcode/d30v.h
-DEPTC_d30v_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/d30v.h
+DEPTC_fr30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-fr30.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/fr30-desc.h \
+ $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/fr30-opc.h \
+ cgen.h
-DEPTC_fr30_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-fr30.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
+DEPTC_fr30_elf = $(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 subsegs.h \
$(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/fr30-desc.h \
$(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/fr30-opc.h \
cgen.h
-DEPTC_fr30_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/symcat.h \
- $(srcdir)/../opcodes/fr30-desc.h $(INCDIR)/opcode/cgen.h \
- $(srcdir)/../opcodes/fr30-opc.h cgen.h
+DEPTC_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h
-DEPTC_h8300_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-h8300.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h
+DEPTC_h8300_elf = $(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 $(INCDIR)/opcode/h8300.h
-DEPTC_h8300_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/h8300.h
+DEPTC_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h
-DEPTC_h8500_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h
+DEPTC_h8500_elf = $(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
-DEPTC_h8500_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/h8500-opc.h
+DEPTC_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h
-DEPTC_hppa_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
- $(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(BFDDIR)/libbfd.h \
- $(INCDIR)/opcode/hppa.h
+DEPTC_hppa_elf = $(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 \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/hppa.h \
+ dwarf2dbg.h
-DEPTC_i370_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-i370.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
- $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/i370.h
+DEPTC_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h
-DEPTC_i370_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h struc-symbol.h \
- $(INCDIR)/opcode/i370.h $(INCDIR)/elf/i370.h
+DEPTC_ia64_elf = $(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 dwarf2dbg.h \
+ subsegs.h $(INCDIR)/obstack.h
-DEPTC_i386_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-i386.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i386.h
+DEPTC_i370_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i370.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/i370.h
-DEPTC_i386_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-i386.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i386.h
+DEPTC_i370_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/i370.h \
+ $(INCDIR)/elf/i370.h
-DEPTC_i386_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i386.h
+DEPTC_i386_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-i386.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \
+ dwarf2dbg.h $(INCDIR)/opcode/i386.h
-DEPTC_i860_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-i860.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/i860.h
+DEPTC_i386_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i386.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h dwarf2dbg.h \
+ $(INCDIR)/opcode/i386.h
-DEPTC_i860_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-i860.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/opcode/i860.h
+DEPTC_i386_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h dwarf2dbg.h $(INCDIR)/opcode/i386.h
-DEPTC_i860_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/opcode/i860.h
+DEPTC_i860_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/i860.h $(INCDIR)/elf/i860.h \
+ $(INCDIR)/elf/reloc-macros.h
-DEPTC_i960_bout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-bout.h \
- $(srcdir)/config/tc-i960.h emul.h $(INCDIR)/obstack.h \
- $(INCDIR)/opcode/i960.h
+DEPTC_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h
-DEPTC_i960_coff = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h
+DEPTC_i960_coff = $(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 $(INCDIR)/opcode/i960.h
-DEPTC_i960_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/obstack.h $(INCDIR)/opcode/i960.h
+DEPTC_i960_elf = $(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)/obstack.h \
+ $(INCDIR)/opcode/i960.h
-DEPTC_m32r_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-m32r.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
+DEPTC_m32r_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m32r.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/m32r-desc.h \
+ $(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/m32r-opc.h \
+ cgen.h
+
+DEPTC_m32r_elf = $(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 subsegs.h \
$(INCDIR)/obstack.h $(INCDIR)/symcat.h $(srcdir)/../opcodes/m32r-desc.h \
$(INCDIR)/opcode/cgen.h $(srcdir)/../opcodes/m32r-opc.h \
cgen.h
-DEPTC_m32r_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/symcat.h \
- $(srcdir)/../opcodes/m32r-desc.h $(INCDIR)/opcode/cgen.h \
- $(srcdir)/../opcodes/m32r-opc.h cgen.h
+DEPTC_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/m68hc11.h \
+ dwarf2dbg.h
-DEPTC_m68k_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \
- $(srcdir)/config/m68k-parse.h
+DEPTC_m68hc11_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/m68hc11.h dwarf2dbg.h
-DEPTC_m68k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-m68k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \
+DEPTC_m68k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \
+ subsegs.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h
+
+DEPTC_m68k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \
$(srcdir)/config/m68k-parse.h
-DEPTC_m68k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \
- $(srcdir)/config/m68k-parse.h $(INCDIR)/elf/m68k.h \
- $(INCDIR)/elf/reloc-macros.h
+DEPTC_m68k_elf = $(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)/obstack.h \
+ subsegs.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h \
+ $(INCDIR)/elf/m68k.h $(INCDIR)/elf/reloc-macros.h
-DEPTC_m68k_hp300 = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-hp300.h \
- $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \
- $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h $(INCDIR)/opcode/m68k.h $(srcdir)/config/m68k-parse.h
+DEPTC_m68k_hp300 = $(srcdir)/config/obj-hp300.h $(srcdir)/config/obj-aout.h \
+ $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/obstack.h subsegs.h $(INCDIR)/opcode/m68k.h \
+ $(srcdir)/config/m68k-parse.h
-DEPTC_m88k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h
+DEPTC_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h
-DEPTC_m88k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h
+DEPTC_m88k_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(srcdir)/config/m88k-opcode.h
-DEPTC_mcore_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h
+DEPTC_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h
-DEPTC_mcore_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/mcore-opc.h \
+DEPTC_mcore_elf = $(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)/elf/mcore.h $(INCDIR)/elf/reloc-macros.h
-DEPTC_mips_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-mips.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h \
+DEPTC_mips_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-mips.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \
+ $(INCDIR)/opcode/mips.h itbl-ops.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 = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mips.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h \
itbl-ops.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)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mips.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h \
+DEPTC_mips_ecoff = $(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)/opcode/mips.h \
itbl-ops.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 = $(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)/opcode/mips.h itbl-ops.h \
$(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h ecoff.h \
$(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h
-DEPTC_mips_ecoff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-ecoff.h \
- $(srcdir)/config/tc-mips.h ecoff.h $(INCDIR)/coff/sym.h \
- $(INCDIR)/coff/ecoff.h emul.h subsegs.h $(INCDIR)/obstack.h \
- $(INCDIR)/opcode/mips.h itbl-ops.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)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mips.h \
- itbl-ops.h $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h \
- ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h
+DEPTC_mn10200_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10200.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10200.h
-DEPTC_mn10200_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mn10200.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
+DEPTC_mn10200_elf = $(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 subsegs.h \
$(INCDIR)/obstack.h $(INCDIR)/opcode/mn10200.h
-DEPTC_mn10200_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10200.h
+DEPTC_mn10300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mn10300.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h \
+ dwarf2dbg.h
-DEPTC_mn10300_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mn10300.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
- $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h
+DEPTC_mn10300_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h dwarf2dbg.h
-DEPTC_mn10300_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/mn10300.h
+DEPTC_ns32k_aout = $(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_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/ns32k.h $(INCDIR)/obstack.h
+DEPTC_ns32k_coff = $(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_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-ns32k.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/opcode/ns32k.h \
+DEPTC_ns32k_elf = $(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_ns32k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/opcode/ns32k.h $(INCDIR)/obstack.h
+DEPTC_pj_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-pj.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/opcode/pj.h
-DEPTC_pj_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-pj.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/opcode/pj.h
+DEPTC_pj_elf = $(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)/opcode/pj.h
-DEPTC_pj_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/opcode/pj.h
+DEPTC_ppc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ppc.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/rs6000.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/ppc.h
-DEPTC_ppc_coff = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/ppc.h
+DEPTC_ppc_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/ppc.h $(INCDIR)/elf/ppc.h \
+ $(INCDIR)/elf/reloc-macros.h
-DEPTC_ppc_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/ppc.h \
- $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h
+DEPTC_sh_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sh.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h \
+ struc-symbol.h dwarf2dbg.h
-DEPTC_sh_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-sh.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h
+DEPTC_sh_elf = $(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 struc-symbol.h \
+ $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h
-DEPTC_sh_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/sh-opc.h \
- $(INCDIR)/elf/sh.h $(INCDIR)/elf/reloc-macros.h
+DEPTC_sparc_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-sparc.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h \
+ $(INCDIR)/opcode/sparc.h
-DEPTC_sparc_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-sparc.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h
+DEPTC_sparc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sparc.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h
-DEPTC_sparc_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-sparc.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h
+DEPTC_sparc_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h $(INCDIR)/elf/sparc.h \
+ $(INCDIR)/elf/reloc-macros.h dwarf2dbg.h
-DEPTC_sparc_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/sparc.h \
- $(INCDIR)/elf/sparc.h $(INCDIR)/elf/reloc-macros.h
+DEPTC_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h \
+ $(INCDIR)/opcode/tahoe.h
-DEPTC_tahoe_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h
+DEPTC_tahoe_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tahoe.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h
-DEPTC_tahoe_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
+DEPTC_tahoe_elf = $(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)/obstack.h \
$(INCDIR)/opcode/tahoe.h
-DEPTC_tahoe_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/obstack.h $(INCDIR)/opcode/tahoe.h
+DEPTC_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic30.h
-DEPTC_tic30_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/tic30.h
+DEPTC_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic30.h
-DEPTC_tic30_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-tic30.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/tic30.h
+DEPTC_tic30_elf = $(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)/opcode/tic30.h
-DEPTC_tic30_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/opcode/tic30.h
+DEPTC_tic54x_coff = $(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 sb.h macro.h \
+ subsegs.h $(INCDIR)/obstack.h struc-symbol.h $(INCDIR)/opcode/tic54x.h
-DEPTC_tic80_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/opcode/tic80.h
+DEPTC_tic54x_elf = $(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 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_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/opcode/tic80.h
+DEPTC_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/opcode/tic80.h
-DEPTC_vax_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h \
- $(INCDIR)/opcode/vax.h
+DEPTC_tic80_elf = $(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)/opcode/tic80.h
-DEPTC_vax_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-vax.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(srcdir)/config/vax-inst.h \
+DEPTC_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(srcdir)/config/vax-inst.h \
$(INCDIR)/obstack.h $(INCDIR)/opcode/vax.h
-DEPTC_vax_elf = $(INCDIR)/bin-bugs.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 \
- emul.h $(srcdir)/config/vax-inst.h $(INCDIR)/obstack.h \
- $(INCDIR)/opcode/vax.h
+DEPTC_vax_coff = $(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 $(INCDIR)/opcode/vax.h
-DEPTC_vax_vms = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-vms.h \
- $(srcdir)/config/tc-vax.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def emul.h $(srcdir)/config/vax-inst.h \
+DEPTC_vax_elf = $(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 $(INCDIR)/opcode/vax.h
-DEPTC_w65_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h
+DEPTC_vax_vms = $(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 $(INCDIR)/opcode/vax.h
-DEPTC_w65_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h
+DEPTC_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h subsegs.h $(INCDIR)/obstack.h $(srcdir)/../opcodes/w65-opc.h
-DEPTC_v850_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-v850.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h subsegs.h \
- $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h
+DEPTC_w65_elf = $(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_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h
+DEPTC_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h \
+ dwarf2dbg.h
-DEPTC_z8k_coff = $(srcdir)/../opcodes/z8k-opc.h $(INCDIR)/bin-bugs.h \
- $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \
- $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h \
- $(INCDIR)/bfdlink.h emul.h
+DEPTC_v850_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/opcode/v850.h dwarf2dbg.h
-DEPTC_z8k_elf = $(srcdir)/../opcodes/z8k-opc.h $(INCDIR)/bin-bugs.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 emul.h
+DEPTC_z8k_coff = $(srcdir)/../opcodes/z8k-opc.h $(srcdir)/config/obj-coff.h \
+ $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \
+ $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
+
+DEPTC_z8k_elf = $(srcdir)/../opcodes/z8k-opc.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
DEPTC_hppa_som = $(srcdir)/config/tc-hppa.h subsegs.h \
$(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h \
@@ -1054,415 +1077,412 @@ DEPTC_i386_multi = $(DEPTC_i386_aout) $(DEPTC_i386_coff) \
DEPTC_mips_multi = $(DEPTC_mips_coff) $(DEPTC_mips_ecoff) \
$(DEPTC_mips_elf)
-DEPOBJ_a29k_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-a29k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
+DEPTC_cris_multi = $(DEPTC_cris_aout) $(DEPTC_cris_elf)
+DEPOBJ_a29k_aout = $(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)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-a29k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_a29k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-a29k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/a29k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_a29k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_a29k_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_alpha_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-alpha.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_alpha_coff = $(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)/bin-bugs.h $(srcdir)/config/obj-ecoff.h \
- $(srcdir)/config/tc-alpha.h ecoff.h $(INCDIR)/coff/sym.h \
- $(INCDIR)/coff/ecoff.h emul.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(BFDDIR)/libecoff.h
+DEPOBJ_alpha_ecoff = $(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)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h ecoff.h $(INCDIR)/coff/sym.h \
- $(INCDIR)/coff/ecoff.h $(INCDIR)/elf/alpha.h $(INCDIR)/elf/reloc-macros.h \
+DEPOBJ_alpha_elf = $(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 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)/bin-bugs.h $(srcdir)/config/obj-evax.h \
- $(srcdir)/config/tc-alpha.h emul.h
+DEPOBJ_alpha_evax = $(srcdir)/config/obj-evax.h $(srcdir)/config/tc-alpha.h
+DEPOBJ_arc_coff = $(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_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-arc.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_arc_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_arc_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_arm_aout = $(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 = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-arm.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_arm_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-arm.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
+DEPOBJ_arm_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_arm_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-arm.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/arm.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_avr_coff = $(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_arm_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_avr_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_avr_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-avr.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/obstack.h
-DEPOBJ_avr_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_cris_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_d10v_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-d10v.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_d10v_coff = $(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)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_d10v_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_d30v_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-d30v.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_d30v_coff = $(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)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_d30v_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_fr30_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-fr30.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_fr30_coff = $(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)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_fr30_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_h8300_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-h8300.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_h8300_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8300.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8300.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_h8300_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_h8300_elf = $(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 $(INCDIR)/aout/aout64.h
-DEPOBJ_h8500_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-h8500.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_h8500_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-h8500.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/h8500.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_h8500_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_h8500_elf = $(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 $(INCDIR)/aout/aout64.h
-DEPOBJ_hppa_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-hppa.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_hppa_coff = $(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_i370_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-i370.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_hppa_elf = $(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 \
+ subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_i370_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/i370.h \
- $(INCDIR)/aout/aout64.h
+DEPOBJ_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_i386_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-i386.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
+DEPOBJ_ia64_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_i386_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-i386.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_i370_coff = $(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_i386_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_i370_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/elf/i370.h $(INCDIR)/aout/aout64.h
-DEPOBJ_i860_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-i860.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
+DEPOBJ_i386_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-i386.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/obstack.h
-DEPOBJ_i860_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-i860.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_i386_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i386.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/i386.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_i860_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_i386_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_i960_bout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-bout.h \
- $(srcdir)/config/tc-i960.h emul.h $(INCDIR)/obstack.h
+DEPOBJ_i860_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_i960_coff = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_i960_bout = $(srcdir)/config/obj-bout.h $(srcdir)/config/tc-i960.h \
+ $(INCDIR)/obstack.h
-DEPOBJ_i960_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_i960_coff = $(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_m32r_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-m32r.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_i960_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_m32r_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_m32r_coff = $(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_m68k_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
+DEPOBJ_m32r_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_m68k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-m68k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_m68k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_m68hc11_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(INCDIR)/bin-bugs.h \
- $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \
- $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/aout/aout64.h \
+DEPOBJ_m68k_aout = $(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)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-m88k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_m68k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_m88k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_m68k_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_mcore_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mcore.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_m68k_hp300 = $(srcdir)/config/obj-aout.c $(srcdir)/config/obj-aout.h \
+ $(srcdir)/config/tc-m68k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
-DEPOBJ_mcore_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_m88k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m88k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m88k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_mips_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-mips.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
+DEPOBJ_m88k_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_mips_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mips.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_mcore_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mcore.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/mcore.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_mips_ecoff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-ecoff.h \
- $(srcdir)/config/tc-mips.h ecoff.h $(INCDIR)/coff/sym.h \
- $(INCDIR)/coff/ecoff.h emul.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h $(BFDDIR)/libecoff.h
+DEPOBJ_mcore_elf = $(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 $(INCDIR)/aout/aout64.h
-DEPOBJ_mips_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.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_mips_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-mips.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/obstack.h
-DEPOBJ_mn10200_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mn10200.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_mips_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-mips.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/mipspe.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_mn10200_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_mips_ecoff = $(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_mn10300_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-mn10300.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_mips_elf = $(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 ecoff.h $(INCDIR)/coff/sym.h $(INCDIR)/coff/ecoff.h \
+ $(INCDIR)/elf/mips.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/aout/aout64.h
-DEPOBJ_mn10300_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_mn10200_coff = $(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_ns32k_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
+DEPOBJ_mn10200_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_ns32k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-ns32k.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_mn10300_coff = $(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_ns32k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_mn10300_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_pj_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-pj.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_ns32k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-ns32k.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/obstack.h
-DEPOBJ_pj_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_ns32k_coff = $(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_ppc_coff = $(INCDIR)/bin-bugs.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 \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_ns32k_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_ppc_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/ppc.h \
- $(INCDIR)/elf/reloc-macros.h $(INCDIR)/aout/aout64.h
+DEPOBJ_pj_coff = $(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_sh_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-sh.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_pj_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_sh_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_ppc_coff = $(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_sparc_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-sparc.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
+DEPOBJ_ppc_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/elf/ppc.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/aout/aout64.h
-DEPOBJ_sparc_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-sparc.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_sh_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sh.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sh.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_sparc_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_sh_elf = $(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 $(INCDIR)/aout/aout64.h
-DEPOBJ_tahoe_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-tahoe.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
+DEPOBJ_sparc_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-sparc.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/obstack.h
-DEPOBJ_tahoe_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-tahoe.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_sparc_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-sparc.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/sparc.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_tahoe_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_sparc_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_tic30_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-tic30.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
+DEPOBJ_tahoe_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tahoe.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/obstack.h
-DEPOBJ_tic30_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-tic30.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_tahoe_coff = $(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_tic30_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_tahoe_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_tic80_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-tic80.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_tic30_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-tic30.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/obstack.h
-DEPOBJ_tic80_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_tic30_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic30.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic30.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_vax_aout = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-aout.h \
- $(srcdir)/config/tc-vax.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
+DEPOBJ_tic30_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_vax_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-vax.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
+DEPOBJ_tic54x_coff = $(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_vax_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_tic54x_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_vax_vms = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-vms.h \
- $(srcdir)/config/tc-vax.h $(INCDIR)/aout/stab_gnu.h \
- $(INCDIR)/aout/stab.def emul.h subsegs.h $(INCDIR)/obstack.h
+DEPOBJ_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
-DEPOBJ_w65_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-w65.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_tic80_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_w65_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_vax_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-vax.h \
+ $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h $(INCDIR)/aout/aout64.h \
+ $(INCDIR)/obstack.h
-DEPOBJ_v850_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-v850.h $(INCDIR)/coff/internal.h \
- $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h emul.h $(INCDIR)/obstack.h \
- subsegs.h
+DEPOBJ_vax_coff = $(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_v850_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_vax_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
-DEPOBJ_z8k_coff = $(INCDIR)/bin-bugs.h $(srcdir)/config/obj-coff.h \
- $(srcdir)/config/tc-z8k.h $(INCDIR)/coff/internal.h \
- $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
- emul.h $(INCDIR)/obstack.h subsegs.h
+DEPOBJ_vax_vms = $(srcdir)/config/obj-vms.h $(srcdir)/config/tc-vax.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def subsegs.h \
+ $(INCDIR)/obstack.h
-DEPOBJ_z8k_elf = $(INCDIR)/bin-bugs.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 \
- emul.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+DEPOBJ_w65_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-w65.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/w65.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+
+DEPOBJ_w65_elf = $(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 $(INCDIR)/aout/aout64.h
+
+DEPOBJ_v850_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-v850.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h \
+ $(INCDIR)/obstack.h subsegs.h
+
+DEPOBJ_v850_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
+
+DEPOBJ_z8k_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-z8k.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/z8k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h $(INCDIR)/obstack.h subsegs.h
+
+DEPOBJ_z8k_elf = $(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 subsegs.h \
+ $(INCDIR)/obstack.h $(INCDIR)/aout/aout64.h
DEPOBJ_hppa_som = $(srcdir)/config/obj-som.h subsegs.h \
$(INCDIR)/obstack.h $(BFDDIR)/libhppa.h $(BFDDIR)/som.h \
@@ -1474,6 +1494,7 @@ DEPOBJ_i386_multi = $(DEPOBJ_i386_aout) $(DEPOBJ_i386_coff) \
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
@@ -1521,6 +1542,13 @@ DEP_avr_elf = $(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
+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 $(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)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
@@ -1561,6 +1589,18 @@ DEP_h8500_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
DEP_hppa_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-hppa.h \
$(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
+DEP_hppa_elf = $(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
+
+DEP_ia64_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-ia64.h \
+ $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
+
+DEP_ia64_elf = $(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
+
DEP_i370_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i370.h \
$(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
@@ -1579,12 +1619,6 @@ DEP_i386_elf = $(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
-DEP_i860_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-i860.h \
- $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
-
-DEP_i860_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-i860.h \
- $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h
-
DEP_i860_elf = $(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
@@ -1605,6 +1639,14 @@ DEP_m32r_elf = $(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
+DEP_m68hc11_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-m68hc11.h \
+ $(INCDIR)/coff/internal.h $(INCDIR)/coff/m68k.h $(BFDDIR)/libcoff.h \
+ $(INCDIR)/bfdlink.h
+
+DEP_m68hc11_elf = $(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
+
DEP_m68k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-m68k.h \
$(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
@@ -1728,6 +1770,14 @@ DEP_tic30_elf = $(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
+DEP_tic54x_coff = $(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
+
+DEP_tic54x_elf = $(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
+
DEP_tic80_coff = $(srcdir)/config/obj-coff.h $(srcdir)/config/tc-tic80.h \
$(INCDIR)/coff/internal.h $(INCDIR)/coff/tic80.h $(BFDDIR)/libcoff.h \
$(INCDIR)/bfdlink.h
@@ -1779,6 +1829,8 @@ DEP_i386_multi = $(DEP_i386_aout) $(DEP_i386_coff) \
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.
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
CONFIG_HEADER = config.h
@@ -1791,17 +1843,22 @@ DEFS = @DEFS@ -I. -I$(srcdir) -I.
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
-itbl_test_OBJECTS = itbl-parse.o itbl-lex.o
+itbl_test_OBJECTS = itbl-parse.$(OBJEXT) itbl-lex.$(OBJEXT)
itbl_test_DEPENDENCIES = itbl-tops.o itbl-test.o \
../libiberty/libiberty.a
itbl_test_LDFLAGS =
-as_new_OBJECTS = app.o as.o atof-generic.o bignum-copy.o cond.o \
-depend.o dwarf2dbg.o ecoff.o ehopt.o expr.o flonum-copy.o \
-flonum-konst.o flonum-mult.o frags.o hash.o input-file.o input-scrub.o \
-listing.o literal.o macro.o messages.o output-file.o read.o sb.o \
-stabs.o subsegs.o symbols.o write.o
+as_new_OBJECTS = app.$(OBJEXT) as.$(OBJEXT) atof-generic.$(OBJEXT) \
+bignum-copy.$(OBJEXT) cond.$(OBJEXT) depend.$(OBJEXT) \
+dwarf2dbg.$(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)
as_new_LDFLAGS =
-gasp_new_OBJECTS = gasp.o macro.o sb.o hash.o
+gasp_new_OBJECTS = gasp.$(OBJEXT) macro.$(OBJEXT) sb.$(OBJEXT) \
+hash.$(OBJEXT)
gasp_new_LDFLAGS =
SCRIPTS = $(noinst_SCRIPTS)
@@ -1820,14 +1877,14 @@ configure configure.in gdbinit.in itbl-lex.c itbl-parse.c
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = tar
+TAR = gtar
GZIP_ENV = --best
SOURCES = $(itbl_test_SOURCES) $(as_new_SOURCES) $(EXTRA_as_new_SOURCES) $(gasp_new_SOURCES)
OBJECTS = $(itbl_test_OBJECTS) $(as_new_OBJECTS) $(gasp_new_OBJECTS)
all: all-redirect
.SUFFIXES:
-.SUFFIXES: .S .c .l .lo .o .s .y
+.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
@@ -1885,6 +1942,11 @@ 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 $<
@@ -1893,6 +1955,7 @@ maintainer-clean-noinstPROGRAMS:
mostlyclean-compile:
-rm -f *.o core *.core
+ -rm -f *.$(OBJEXT)
clean-compile:
@@ -2219,9 +2282,10 @@ $(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): config.h as.h $(TARG_ENV_H) $(OBJ_FORMAT_H) $(TARG_CPU_H) flonum.h \
- expr.h write.h frags.h hash.h read.h symbols.h tc.h \
- obj.h listing.h bignum.h bit_fix.h $(INCDIR)/libiberty.h asintl.h
+$(OBJS): $(INCDIR)/bin-bugs.h $(INCDIR)/libiberty.h $(INCDIR)/progress.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 \
@@ -2248,7 +2312,7 @@ check-DEJAGNU: site.exp
# 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) $(TARG_CPU_DEP_@target_cpu_type@)
+$(TARG_CPU_O): $(TARG_CPU_C)
$(COMPILE) -c $(TARG_CPU_C)
$(ATOF_TARG_O): $(ATOF_TARG_C)
$(COMPILE) -c $(ATOF_TARG_C)
@@ -2295,6 +2359,10 @@ 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
# 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
@@ -2447,20 +2515,33 @@ de-stage3:
- (cd stage3 ; rm -f as$(EXEEXT) ; mv -f * ..)
- rmdir stage3
+# 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
+ 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
- sed -f dep.sed < DEP1 > DEPA
+ 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 '# IF YOU PUT ANYTHING HERE IT WILL GO AWAY' >> DEPA
- mv -f 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
@@ -2471,9 +2552,7 @@ DEP1: $(CFILES) $(MULTI_CFILES)
echo '' > targ-env.h; \
echo '' > itbl-cpu.h; \
echo '' > itbl-parse.h; \
- echo '# DO NOT DELETE THIS LINE -- mkdep uses it.' > DEP; \
- echo '# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.' >> DEP; \
- $(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) $? >> DEP
+ $(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) $? > DEP
mv -f DEPDIR/DEP $@
# Work out the special dependencies for the tc-*.c files.
@@ -2504,7 +2583,7 @@ DEPTC: $(TARGET_CPU_CFILES)
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; \
+ echo "DEPTC_$${c}"'_multi = \' >> DEPTCA; \
for o in $(OBJ_FORMATS); do \
$(MULTI_CPU_OBJ_VALID) \
if [ x$${valid} = xyes ]; then \
@@ -2543,7 +2622,7 @@ DEPOBJ: $(OBJ_FORMAT_CFILES)
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; \
+ echo "DEPOBJ_$${c}"'_multi = \' >> DEPOBJA; \
for o in $(OBJ_FORMATS); do \
$(MULTI_CPU_OBJ_VALID) \
if [ x$${valid} = xyes ]; then \
@@ -2557,7 +2636,7 @@ DEPOBJ: $(OBJ_FORMAT_CFILES)
# 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
+ rm -f DEP2A
if [ -d DEPDIR ]; then true; else mkdir DEPDIR; fi
srcdir=`cd $(srcdir); pwd`; \
cd DEPDIR; \
@@ -2568,22 +2647,22 @@ DEP2: $(TARGET_CPU_HFILES) $(OBJ_FORMAT_HFILES)
echo '#include "tc-'"$${c}"'.h"' > targ-cpu.h; \
echo '#include "obj-'"$${o}"'.h"' > dummy.c; \
$(MKDEP) -DBFD_ASSEMBLER -I. -I.. -I$${srcdir} -I../../bfd $(DEP_INCLUDES) dummy.c | \
- sed -e "s/dummy.o: dummy.c/DEP_$${c}_$${o} =/" >> ../DEP2a; \
+ sed -e "s/dummy.o: dummy.c/DEP_$${c}_$${o} =/" >> ../DEP2A; \
else true; fi; \
done; \
done
- echo 'DEP_hppa_som = $$(BFDDIR)/som.h' >> DEP2a
+ echo 'DEP_hppa_som = $$(BFDDIR)/som.h' >> DEP2A
for c in $(MULTI_CPU_TYPES); do \
- echo 'DEP_'"$${c}"'_multi = \' >> DEP2a; \
+ 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; \
+ echo '$$(DEP_'"$${c}_$${o}"') \' >> DEP2A; \
else true; fi; \
done; \
- echo '' >> DEP2a; \
+ echo '' >> DEP2A; \
done
- mv -f DEP2a DEP2
+ mv -f DEP2A DEP2
dep.sed: dep-in.sed config.status
srcdir=`cd $(srcdir); pwd`; \
@@ -2593,85 +2672,73 @@ dep.sed: dep-in.sed config.status
-e "s!@SRCDIR@!$${srcdir}!"
dep: DEP
- sed -e '/^..DO NOT DELETE THIS LINE/,$$d' < Makefile > tmp-Makefile
+ 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 '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.in > tmp-Makefile.in
+ 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 '/^..DO NOT DELETE THIS LINE/,$$d' < $(srcdir)/Makefile.am > tmp-Makefile.am
+ 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
-
-# DO NOT DELETE THIS LINE -- mkdep uses it.
-# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-app.o: app.c $(INCDIR)/bin-bugs.h emul.h
-as.o: as.c $(INCDIR)/bin-bugs.h emul.h subsegs.h $(INCDIR)/obstack.h \
- output-file.h sb.h macro.h
-atof-generic.o: atof-generic.c $(INCDIR)/bin-bugs.h \
- emul.h
-bignum-copy.o: bignum-copy.c $(INCDIR)/bin-bugs.h emul.h
-cond.o: cond.c $(INCDIR)/bin-bugs.h emul.h macro.h \
- sb.h $(INCDIR)/obstack.h
-depend.o: depend.c $(INCDIR)/bin-bugs.h emul.h
-dwarf2dbg.o: dwarf2dbg.c $(INCDIR)/bin-bugs.h emul.h \
- dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/dwarf2.h
-ecoff.o: ecoff.c $(INCDIR)/bin-bugs.h emul.h ecoff.h
-ehopt.o: ehopt.c $(INCDIR)/bin-bugs.h emul.h subsegs.h \
- $(INCDIR)/obstack.h $(INCDIR)/elf/dwarf2.h
-expr.o: expr.c $(INCDIR)/bin-bugs.h emul.h $(INCDIR)/obstack.h
-flonum-copy.o: flonum-copy.c $(INCDIR)/bin-bugs.h emul.h
+#MKDEP DO NOT PUT ANYTHING BETWEEN THIS LINE AND THE MATCHING WARNING BELOW.
+app.o: app.c
+as.o: as.c subsegs.h $(INCDIR)/obstack.h output-file.h \
+ sb.h macro.h
+atof-generic.o: atof-generic.c
+bignum-copy.o: bignum-copy.c
+cond.o: cond.c macro.h sb.h $(INCDIR)/obstack.h
+depend.o: depend.c
+dwarf2dbg.o: dwarf2dbg.c dwarf2dbg.h subsegs.h $(INCDIR)/obstack.h \
+ $(INCDIR)/elf/dwarf2.h
+ecoff.o: ecoff.c ecoff.h
+ehopt.o: ehopt.c subsegs.h $(INCDIR)/obstack.h $(INCDIR)/elf/dwarf2.h
+expr.o: expr.c $(INCDIR)/obstack.h
+flonum-copy.o: flonum-copy.c
flonum-konst.o: flonum-konst.c
flonum-mult.o: flonum-mult.c
-frags.o: frags.c $(INCDIR)/bin-bugs.h emul.h subsegs.h \
- $(INCDIR)/obstack.h
-hash.o: hash.c $(INCDIR)/bin-bugs.h emul.h $(INCDIR)/obstack.h
-input-file.o: input-file.c $(INCDIR)/bin-bugs.h emul.h \
- input-file.h
-input-scrub.o: input-scrub.c $(INCDIR)/bin-bugs.h emul.h \
- input-file.h sb.h
-listing.o: listing.c $(INCDIR)/bin-bugs.h emul.h input-file.h \
- subsegs.h
-literal.o: literal.c $(INCDIR)/bin-bugs.h emul.h subsegs.h \
- $(INCDIR)/obstack.h
+frags.o: frags.c subsegs.h $(INCDIR)/obstack.h
+hash.o: hash.c $(INCDIR)/obstack.h
+input-file.o: input-file.c input-file.h
+input-scrub.o: input-scrub.c input-file.h sb.h
+listing.o: listing.c input-file.h subsegs.h
+literal.o: literal.c subsegs.h $(INCDIR)/obstack.h
macro.o: macro.c sb.h macro.h
-messages.o: messages.c $(INCDIR)/bin-bugs.h emul.h
-output-file.o: output-file.c $(INCDIR)/bin-bugs.h emul.h \
- output-file.h
-read.o: read.c $(INCDIR)/bin-bugs.h emul.h subsegs.h \
- $(INCDIR)/obstack.h sb.h macro.h ecoff.h
+messages.o: messages.c
+output-file.o: output-file.c output-file.h
+read.o: read.c subsegs.h $(INCDIR)/obstack.h sb.h macro.h \
+ ecoff.h
sb.o: sb.c sb.h
-stabs.o: stabs.c $(INCDIR)/bin-bugs.h emul.h $(INCDIR)/obstack.h \
- subsegs.h ecoff.h $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
-subsegs.o: subsegs.c $(INCDIR)/bin-bugs.h emul.h subsegs.h \
- $(INCDIR)/obstack.h
-symbols.o: symbols.c $(INCDIR)/bin-bugs.h emul.h $(INCDIR)/obstack.h \
- subsegs.h struc-symbol.h
-write.o: write.c $(INCDIR)/bin-bugs.h emul.h subsegs.h \
- $(INCDIR)/obstack.h output-file.h
-gasp.o: gasp.c $(INCDIR)/bin-bugs.h sb.h macro.h
-itbl-ops.o: itbl-ops.c itbl-ops.h $(INCDIR)/bin-bugs.h \
- emul.h itbl-parse.h
-e-i386aout.o: $(srcdir)/config/e-i386aout.c $(INCDIR)/bin-bugs.h \
- emul.h emul-target.h
-e-i386coff.o: $(srcdir)/config/e-i386coff.c $(INCDIR)/bin-bugs.h \
- emul.h emul-target.h
-e-i386elf.o: $(srcdir)/config/e-i386elf.c $(INCDIR)/bin-bugs.h \
- emul.h emul-target.h
-e-mipsecoff.o: $(srcdir)/config/e-mipsecoff.c $(INCDIR)/bin-bugs.h \
- emul.h emul-target.h
-e-mipself.o: $(srcdir)/config/e-mipself.c $(INCDIR)/bin-bugs.h \
- emul.h emul-target.h
+stabs.o: stabs.c $(INCDIR)/obstack.h subsegs.h ecoff.h \
+ $(INCDIR)/aout/stab_gnu.h $(INCDIR)/aout/stab.def
+subsegs.o: subsegs.c subsegs.h $(INCDIR)/obstack.h
+symbols.o: symbols.c $(INCDIR)/obstack.h subsegs.h \
+ struc-symbol.h
+write.o: write.c subsegs.h $(INCDIR)/obstack.h output-file.h
+gasp.o: gasp.c sb.h macro.h
+itbl-ops.o: itbl-ops.c itbl-ops.h
+e-crisaout.o: $(srcdir)/config/e-crisaout.c emul-target.h
+e-criself.o: $(srcdir)/config/e-criself.c emul-target.h
+e-i386aout.o: $(srcdir)/config/e-i386aout.c emul-target.h
+e-i386coff.o: $(srcdir)/config/e-i386coff.c emul-target.h
+e-i386elf.o: $(srcdir)/config/e-i386elf.c emul-target.h
+e-mipsecoff.o: $(srcdir)/config/e-mipsecoff.c emul-target.h
+e-mipself.o: $(srcdir)/config/e-mipself.c 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@)
-# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
+#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.
diff --git a/contrib/binutils/gas/NEWS b/contrib/binutils/gas/NEWS
index 4143540..6c3439d 100644
--- a/contrib/binutils/gas/NEWS
+++ b/contrib/binutils/gas/NEWS
@@ -1,5 +1,27 @@
-*- text -*-
+Changes in 2.11:
+
+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
diff --git a/contrib/binutils/gas/README b/contrib/binutils/gas/README
index 4ac27db..87666df 100644
--- a/contrib/binutils/gas/README
+++ b/contrib/binutils/gas/README
@@ -229,7 +229,7 @@ warning message when this happens.
REPORTING BUGS IN GAS
=====================
-Bugs in gas should be reported to bug-gnu-utils@gnu.org. They may be
+Bugs in gas should be reported to bug-binutils@gnu.org. They may be
cross-posted to bug-gcc if they affect the use of gas with gcc. They
should not be reported just to bug-gcc, since I don't read that list,
and therefore wouldn't see them.
diff --git a/contrib/binutils/gas/acinclude.m4 b/contrib/binutils/gas/acinclude.m4
index 31a2c16..f16eefc 100644
--- a/contrib/binutils/gas/acinclude.m4
+++ b/contrib/binutils/gas/acinclude.m4
@@ -54,3 +54,19 @@ for _gas_uniq_i in _gas_uniq_dummy [$]_gas_uniq_list ; do
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/contrib/binutils/gas/aclocal.m4 b/contrib/binutils/gas/aclocal.m4
index 4b4ca84..338b221 100644
--- a/contrib/binutils/gas/aclocal.m4
+++ b/contrib/binutils/gas/aclocal.m4
@@ -67,6 +67,40 @@ 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)
+])
+
+#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.
@@ -159,415 +193,6 @@ else
fi
AC_SUBST($1)])
-
-# serial 40 AC_PROG_LIBTOOL
-AC_DEFUN(AC_PROG_LIBTOOL,
-[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
-
-# Save cache, so that ltconfig can load it
-AC_CACHE_SAVE
-
-# Actually configure libtool. ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
-$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
-|| AC_MSG_ERROR([libtool configure failed])
-
-# Reload cache, that may have been modified by ltconfig
-AC_CACHE_LOAD
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-# Redirect the config.log output again, so that the ltconfig log is not
-# clobbered by the next message.
-exec 5>>./config.log
-])
-
-AC_DEFUN(AC_LIBTOOL_SETUP,
-[AC_PREREQ(2.13)dnl
-AC_REQUIRE([AC_ENABLE_SHARED])dnl
-AC_REQUIRE([AC_ENABLE_STATIC])dnl
-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([AC_PROG_RANLIB])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_LD])dnl
-AC_REQUIRE([AC_PROG_NM])dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-dnl
-
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
-esac
-
-# 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 "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
-test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
-ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
-[libtool_flags="$libtool_flags --enable-dlopen"])
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[libtool_flags="$libtool_flags --enable-win32-dll"])
-AC_ARG_ENABLE(libtool-lock,
- [ --disable-libtool-lock avoid locking (might break parallel builds)])
-test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
-test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case "$lt_target" in
-*-*-irix6*)
- # Find out which ABI we are using.
- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- case "`/usr/bin/file conftest.o`" in
- *32-bit*)
- LD="${LD-ld} -32"
- ;;
- *N32*)
- LD="${LD-ld} -n32"
- ;;
- *64-bit*)
- LD="${LD-ld} -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"
- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
- [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
- 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
- ;;
-
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[*-*-cygwin* | *-*-mingw*)
- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
- AC_CHECK_TOOL(AS, as, false)
- AC_CHECK_TOOL(OBJDUMP, objdump, false)
- ;;
-])
-esac
-])
-
-# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
-AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
-
-# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
-AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
-
-# AC_ENABLE_SHARED - implement the --enable-shared flag
-# Usage: AC_ENABLE_SHARED[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_SHARED, [dnl
-define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(shared,
-changequote(<<, >>)dnl
-<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
-])
-
-# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
-AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_SHARED(no)])
-
-# AC_ENABLE_STATIC - implement the --enable-static flag
-# Usage: AC_ENABLE_STATIC[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_STATIC, [dnl
-define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(static,
-changequote(<<, >>)dnl
-<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
-])
-
-# AC_DISABLE_STATIC - set the default static flag to --disable-static
-AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_STATIC(no)])
-
-
-# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
-# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
-define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(fast-install,
-changequote(<<, >>)dnl
-<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
-])
-
-# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
-AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_FAST_INSTALL(no)])
-
-# AC_PROG_LD - find the path to the GNU or non-GNU linker
-AC_DEFUN(AC_PROG_LD,
-[AC_ARG_WITH(gnu-ld,
-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-ac_prog=ld
-if test "$ac_cv_prog_gcc" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by GCC])
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
- case "$ac_prog" in
- # Accept absolute paths.
-changequote(,)dnl
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
-changequote([,])dnl
- # 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
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(ac_cv_path_LD,
-[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
- ac_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 "$ac_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
- ac_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$ac_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT($LD)
-else
- AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_PROG_LD_GNU
-])
-
-AC_DEFUN(AC_PROG_LD_GNU,
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- ac_cv_prog_gnu_ld=yes
-else
- ac_cv_prog_gnu_ld=no
-fi])
-])
-
-# AC_PROG_NM - find the path to a BSD-compatible name lister
-AC_DEFUN(AC_PROG_NM,
-[AC_MSG_CHECKING([for BSD-compatible nm])
-AC_CACHE_VAL(ac_cv_path_NM,
-[if test -n "$NM"; then
- # Let the user override the test.
- ac_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=.
- if test -f $ac_dir/nm || test -f $ac_dir/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
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -B"
- break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -p"
- break
- else
- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/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 "$ac_cv_path_NM" && ac_cv_path_NM=nm
-fi])
-NM="$ac_cv_path_NM"
-AC_MSG_RESULT([$NM])
-])
-
-# AC_CHECK_LIBM - check for math library
-AC_DEFUN(AC_CHECK_LIBM,
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case "$lt_target" in
-*-*-beos* | *-*-cygwin*)
- # These system don't have libm
- ;;
-*-ncr-sysv4.3*)
- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
- AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
- ;;
-*)
- AC_CHECK_LIB(m, main, LIBM="-lm")
- ;;
-esac
-])
-
-# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl convenience library, adds --enable-ltdl-convenience to
-# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
-# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
-# to be `${top_builddir}/libltdl'. Make sure you start DIR with
-# '${top_builddir}/' (note the single quotes!) if your package is not
-# flat, and, if you're not using automake, define top_builddir as
-# appropriate in the Makefiles.
-AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- case "$enable_ltdl_convenience" in
- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
- "") enable_ltdl_convenience=yes
- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
- esac
- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
-])
-
-# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl installable library, and adds --enable-ltdl-install to
-# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
-# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
-# to be `${top_builddir}/libltdl'. Make sure you start DIR with
-# '${top_builddir}/' (note the single quotes!) if your package is not
-# flat, and, if you're not using automake, define top_builddir as
-# appropriate in the Makefiles.
-# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
-AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- AC_CHECK_LIB(ltdl, main,
- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
- [if test x"$enable_ltdl_install" = xno; then
- AC_MSG_WARN([libltdl not installed, but installation disabled])
- else
- enable_ltdl_install=yes
- fi
- ])
- if test x"$enable_ltdl_install" = x"yes"; then
- ac_configure_args="$ac_configure_args --enable-ltdl-install"
- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
- else
- ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
- LIBLTDL="-lltdl"
- INCLTDL=
- fi
-])
-
-dnl old names
-AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
-AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
-AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
-
-dnl This is just to silence aclocal about the macro not being used
-ifelse([AC_DISABLE_FAST_INSTALL])dnl
-
# Like AC_CONFIG_HEADER, but automatically create stamp file.
AC_DEFUN(AM_CONFIG_HEADER,
@@ -600,351 +225,6 @@ AC_CHECK_PROGS(LEX, flex lex, "$missing_dir/missing flex")
AC_PROG_LEX
AC_DECL_YYTEXT])
-# This file is derived from `gettext.m4'. The difference is that the
-# included macros assume Cygnus-style source and build trees.
-
-# Macro to add for using GNU gettext.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
-#
-# 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.
-
-# serial 3
-
-AC_DEFUN(CY_WITH_NLS,
- [AC_MSG_CHECKING([whether NLS is requested])
- dnl Default is enabled NLS
- AC_ARG_ENABLE(nls,
- [ --disable-nls do not use Native Language Support],
- USE_NLS=$enableval, USE_NLS=yes)
- AC_MSG_RESULT($USE_NLS)
- AC_SUBST(USE_NLS)
-
- USE_INCLUDED_LIBINTL=no
-
- dnl If we use NLS figure out what method
- if test "$USE_NLS" = "yes"; then
- AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if NLS is requested])
- AC_MSG_CHECKING([whether included gettext is requested])
- AC_ARG_WITH(included-gettext,
- [ --with-included-gettext use the GNU gettext library included here],
- nls_cv_force_use_gnu_gettext=$withval,
- nls_cv_force_use_gnu_gettext=no)
- AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
-
- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
- dnl User does not insist on using GNU NLS library. Figure out what
- dnl to use. If gettext or catgets are available (in this order) we
- dnl use this. Else we have to fall back to GNU NLS library.
- dnl catgets is only used if permitted by option --with-catgets.
- nls_cv_header_intl=
- nls_cv_header_libgt=
- CATOBJEXT=NONE
-
- AC_CHECK_HEADER(libintl.h,
- [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
- [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
- gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
-
- if test "$gt_cv_func_gettext_libc" != "yes"; then
- AC_CHECK_LIB(intl, bindtextdomain,
- [AC_CACHE_CHECK([for gettext in libintl],
- gt_cv_func_gettext_libintl,
- [AC_TRY_LINK([], [return (int) gettext ("")],
- gt_cv_func_gettext_libintl=yes,
- gt_cv_func_gettext_libintl=no)])])
- fi
-
- if test "$gt_cv_func_gettext_libc" = "yes" \
- || test "$gt_cv_func_gettext_libintl" = "yes"; then
- AC_DEFINE(HAVE_GETTEXT, 1,
- [Define as 1 if you have gettext and don't want to use GNU gettext.])
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
- if test "$MSGFMT" != "no"; then
- AC_CHECK_FUNCS(dcgettext)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
- AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
- return _nl_msg_cat_cntr],
- [CATOBJEXT=.gmo
- DATADIRNAME=share],
- [CATOBJEXT=.mo
- DATADIRNAME=lib])
- INSTOBJEXT=.mo
- fi
- fi
- ])
-
- dnl In the standard gettext, we would now check for catgets.
- dnl However, we never want to use catgets for our releases.
-
- if test "$CATOBJEXT" = "NONE"; then
- dnl Neither gettext nor catgets in included in the C library.
- dnl Fall back on GNU gettext library.
- nls_cv_use_gnu_gettext=yes
- fi
- fi
-
- if test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Mark actions used to generate GNU NLS library.
- INTLOBJS="\$(GETTOBJS)"
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
- AC_SUBST(MSGFMT)
- 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
-
- dnl Test whether we really found GNU xgettext.
- if test "$XGETTEXT" != ":"; then
- dnl If it is no GNU xgettext we define it as : so that the
- dnl Makefiles still can work.
- if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
- : ;
- else
- AC_MSG_RESULT(
- [found xgettext programs is not GNU xgettext; ignore it])
- 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
-
- dnl These rules are solely for the distribution goal. While doing this
- dnl we only have to keep exactly one list of the available catalogs
- dnl in configure.in.
- for lang in $ALL_LINGUAS; do
- GMOFILES="$GMOFILES $lang.gmo"
- POFILES="$POFILES $lang.po"
- done
-
- dnl Make all variables we use known to autoconf.
- AC_SUBST(USE_INCLUDED_LIBINTL)
- AC_SUBST(CATALOGS)
- AC_SUBST(CATOBJEXT)
- AC_SUBST(DATADIRNAME)
- AC_SUBST(GMOFILES)
- AC_SUBST(INSTOBJEXT)
- AC_SUBST(INTLDEPS)
- AC_SUBST(INTLLIBS)
- AC_SUBST(INTLOBJS)
- AC_SUBST(POFILES)
- AC_SUBST(POSUB)
- ])
-
-AC_DEFUN(CY_GNU_GETTEXT,
- [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_PROG_RANLIB])dnl
- AC_REQUIRE([AC_ISC_POSIX])dnl
- AC_REQUIRE([AC_HEADER_STDC])dnl
- AC_REQUIRE([AC_C_CONST])dnl
- AC_REQUIRE([AC_C_INLINE])dnl
- AC_REQUIRE([AC_TYPE_OFF_T])dnl
- AC_REQUIRE([AC_TYPE_SIZE_T])dnl
- AC_REQUIRE([AC_FUNC_ALLOCA])dnl
- AC_REQUIRE([AC_FUNC_MMAP])dnl
-
- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
-unistd.h values.h sys/param.h])
- AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
-__argz_count __argz_stringify __argz_next])
-
- if test "${ac_cv_func_stpcpy+set}" != "set"; then
- AC_CHECK_FUNCS(stpcpy)
- fi
- if test "${ac_cv_func_stpcpy}" = "yes"; then
- AC_DEFINE(HAVE_STPCPY, 1, [Define if you have the stpcpy function])
- fi
-
- AM_LC_MESSAGES
- CY_WITH_NLS
-
- if test "x$CATOBJEXT" != "x"; then
- if test "x$ALL_LINGUAS" = "x"; then
- LINGUAS=
- else
- AC_MSG_CHECKING(for catalogs to be installed)
- NEW_LINGUAS=
- for lang in ${LINGUAS=$ALL_LINGUAS}; do
- case "$ALL_LINGUAS" in
- *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
- esac
- done
- LINGUAS=$NEW_LINGUAS
- AC_MSG_RESULT($LINGUAS)
- fi
-
- dnl Construct list of names of catalog files to be constructed.
- if test -n "$LINGUAS"; then
- for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
- fi
- fi
-
- dnl The reference to <locale.h> in the installed <libintl.h> file
- dnl must be resolved because we cannot expect the users of this
- dnl to define HAVE_LOCALE_H.
- if test $ac_cv_header_locale_h = yes; then
- INCLUDE_LOCALE_H="#include <locale.h>"
- else
- INCLUDE_LOCALE_H="\
-/* The system does not provide the header <locale.h>. Take care yourself. */"
- fi
- AC_SUBST(INCLUDE_LOCALE_H)
-
- dnl Determine which catalog format we have (if any is needed)
- dnl For now we know about two different formats:
- dnl Linux libc-5 and the normal X/Open format
- if test -f $srcdir/po2tbl.sed.in; then
- if test "$CATOBJEXT" = ".cat"; then
- AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
-
- dnl Transform the SED scripts while copying because some dumb SEDs
- dnl cannot handle comments.
- sed -e '/^#/d' $srcdir/$msgformat-msg.sed > po2msg.sed
- fi
- dnl po2tbl.sed is always needed.
- sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
- $srcdir/po2tbl.sed.in > po2tbl.sed
- fi
-
- dnl In the intl/Makefile.in we have a special dependency which makes
- dnl only sense for gettext. We comment this out for non-gettext
- dnl packages.
- if test "$PACKAGE" = "gettext"; then
- GT_NO="#NO#"
- GT_YES=
- else
- GT_NO=
- GT_YES="#YES#"
- fi
- AC_SUBST(GT_NO)
- AC_SUBST(GT_YES)
-
- MKINSTALLDIRS="\$(srcdir)/../../mkinstalldirs"
- AC_SUBST(MKINSTALLDIRS)
-
- dnl *** For now the libtool support in intl/Makefile is not for real.
- l=
- AC_SUBST(l)
-
- dnl Generate list of files to be processed by xgettext which will
- dnl be included in po/Makefile. But only do this if the po directory
- dnl exists in srcdir.
- if test -d $srcdir/po; 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
- ])
-
-# Search path for a program which passes the given test.
-# Ulrich Drepper <drepper@cygnus.com>, 1996.
-#
-# 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.
-
-# serial 1
-
-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN(AM_PATH_PROG_WITH_TEST,
-[# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL(ac_cv_path_$1,
-[case "[$]$1" in
- /*)
- ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in ifelse([$5], , $PATH, [$5]); do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if [$3]; then
- ac_cv_path_$1="$ac_dir/$ac_word"
- break
- fi
- fi
- done
- IFS="$ac_save_ifs"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
- ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test -n "[$]$1"; then
- AC_MSG_RESULT([$]$1)
-else
- AC_MSG_RESULT(no)
-fi
-AC_SUBST($1)dnl
-])
-
-# Check whether LC_MESSAGES is available in <locale.h>.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
-#
-# 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.
-
-# serial 1
-
-AC_DEFUN(AM_LC_MESSAGES,
- [if test $ac_cv_header_locale_h = yes; then
- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
- [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
- am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
- if test $am_cv_val_LC_MESSAGES = yes; then
- AC_DEFINE(HAVE_LC_MESSAGES, 1,
- [Define if your locale.h file contains LC_MESSAGES.])
- fi
- fi])
-
# Add --enable-maintainer-mode option to configure.
# From Jim Meyering
diff --git a/contrib/binutils/gas/app.c b/contrib/binutils/gas/app.c
index 2613e74..46273c2 100644
--- a/contrib/binutils/gas/app.c
+++ b/contrib/binutils/gas/app.c
@@ -48,7 +48,7 @@ static int scrub_m68k_mri;
static const char mri_pseudo[] = ".mri 0";
#if defined TC_ARM && defined OBJ_ELF
-/* The pseudo-op for which we need to special-case `@' characters.
+/* 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;
@@ -88,9 +88,9 @@ static int process_escape PARAMS ((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. */
+ each and every time the assembler is run. xoxorich. */
-void
+void
do_scrub_begin (m68k_mri)
int m68k_mri ATTRIBUTE_UNUSED;
{
@@ -101,7 +101,6 @@ do_scrub_begin (m68k_mri)
lex['\t'] = LEX_IS_WHITESPACE;
lex['\r'] = LEX_IS_WHITESPACE;
lex['\n'] = LEX_IS_NEWLINE;
- lex[';'] = LEX_IS_LINE_SEPARATOR;
lex[':'] = LEX_IS_COLON;
#ifdef TC_M68K
@@ -212,24 +211,23 @@ static char mri_last_ch;
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;
+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;
+ int scrub_m68k_mri;
#endif
- const char * mri_state;
- char mri_last_ch;
+ const char * mri_state;
+ char mri_last_ch;
#if defined TC_ARM && defined OBJ_ELF
- const char * symver_state;
+ const char * symver_state;
#endif
- };
+};
char *
app_push ()
@@ -259,7 +257,7 @@ app_push ()
saved->symver_state = symver_state;
#endif
- /* do_scrub_begin() is not useful, just wastes time. */
+ /* do_scrub_begin() is not useful, just wastes time. */
state = 0;
saved_input = NULL;
@@ -267,13 +265,13 @@ app_push ()
return (char *) saved;
}
-void
+void
app_pop (arg)
char *arg;
{
register struct app_save *saved = (struct app_save *) arg;
- /* There is no do_scrub_end (). */
+ /* There is no do_scrub_end (). */
state = saved->state;
old_state = saved->old_state;
out_string = saved->out_string;
@@ -303,7 +301,7 @@ app_pop (arg)
/* @@ This assumes that \n &c are the same on host and target. This is not
necessarily true. */
-static int
+static int
process_escape (ch)
int ch;
{
@@ -780,19 +778,20 @@ do_scrub_chars (get, tostart, tolen)
}
#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;
- }
- }
+ 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 == '/'
@@ -913,6 +912,21 @@ do_scrub_chars (get, tostart, tolen)
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)
@@ -1000,7 +1014,7 @@ do_scrub_chars (get, tostart, tolen)
case LEX_IS_COLON:
#ifdef KEEP_WHITE_AROUND_COLON
- state = 9;
+ state = 9;
#else
if (state == 9 || state == 10)
state = 3;
@@ -1017,7 +1031,7 @@ do_scrub_chars (get, tostart, tolen)
--add_newlines;
UNGET (ch);
}
- /* fall thru into... */
+ /* Fall through. */
case LEX_IS_LINE_SEPARATOR:
state = 0;
@@ -1026,13 +1040,13 @@ do_scrub_chars (get, tostart, tolen)
#ifdef TC_V850
case LEX_IS_DOUBLEDASH_1ST:
- ch2 = GET();
+ ch2 = GET ();
if (ch2 != '-')
{
UNGET (ch2);
goto de_fault;
}
- /* read and skip to end of line */
+ /* Read and skip to end of line. */
do
{
ch = GET ();
@@ -1045,10 +1059,10 @@ do_scrub_chars (get, tostart, tolen)
state = 0;
PUT ('\n');
break;
-#endif
+#endif
#ifdef DOUBLEBAR_PARALLEL
case LEX_IS_DOUBLEBAR_1ST:
- ch2 = GET();
+ ch2 = GET ();
if (ch2 != '|')
{
UNGET (ch2);
@@ -1060,7 +1074,7 @@ do_scrub_chars (get, tostart, tolen)
PUT ('|');
PUT ('|');
break;
-#endif
+#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
@@ -1109,7 +1123,7 @@ do_scrub_chars (get, tostart, tolen)
PUT ('\n');
break;
}
- /* Loks like `# 123 "filename"' from cpp. */
+ /* Looks like `# 123 "filename"' from cpp. */
UNGET (ch);
old_state = 4;
state = -1;
@@ -1126,12 +1140,14 @@ do_scrub_chars (get, tostart, tolen)
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. */
+ 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 (' ');
+ 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
@@ -1151,12 +1167,16 @@ do_scrub_chars (get, tostart, tolen)
#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. */
+ 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 ();
@@ -1199,7 +1219,7 @@ do_scrub_chars (get, tostart, tolen)
{
int type;
- ch2 = * (unsigned char *) s;
+ ch2 = *(unsigned char *) s;
type = lex[ch2];
if (type != 0
&& type != LEX_IS_SYMBOL_COMPONENT)
@@ -1236,7 +1256,7 @@ do_scrub_chars (get, tostart, tolen)
case 2: *to++ = *from++;
case 1: *to++ = *from++;
}
- }
+ }
ch = GET ();
}
}
diff --git a/contrib/binutils/gas/as.c b/contrib/binutils/gas/as.c
index f02c42a..8c7493d 100644
--- a/contrib/binutils/gas/as.c
+++ b/contrib/binutils/gas/as.c
@@ -1,5 +1,5 @@
/* as.c - GAS main program.
- Copyright (C) 1987, 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+ Copyright (C) 1987, 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -17,21 +17,18 @@
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. */
+ 02111-1307, USA. */
-/*
- * Main program for AS; a 32-bit assembler of GNU.
+/* 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"
@@ -43,6 +40,7 @@
#include "output-file.h"
#include "sb.h"
#include "macro.h"
+#include "dwarf2dbg.h"
#ifdef HAVE_ITBL_CPU
#include "itbl-ops.h"
@@ -63,19 +61,21 @@ static void dump_statistics PARAMS ((void));
static void perform_an_assembly_pass PARAMS ((int argc, char **argv));
static int macro_expr PARAMS ((const char *, int, sb *, int *));
-int listing; /* true if a listing is wanted */
+/* True if a listing is wanted. */
+int listing;
-static char *listing_filename = NULL; /* Name of listing file. */
+/* Name of listing file. */
+static char *listing_filename = NULL;
/* Type of debugging to generate. */
-enum debug_info_type debug_type = DEBUG_NONE;
+enum debug_info_type debug_type = DEBUG_UNSPECIFIED;
/* Maximum level of macro nesting. */
-
int max_macro_nest = 100;
-char *myname; /* argv[0] */
+/* argv[0] */
+char *myname;
#ifdef BFD_ASSEMBLER
segT reg_section, expr_section;
segT text_section, data_section, bss_section;
@@ -92,8 +92,7 @@ int debug_memory = 0;
/* 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 {
struct defsym_list *next;
char *name;
valueT value;
@@ -101,10 +100,9 @@ struct defsym_list
static struct defsym_list *defsyms;
-/* Keep a record of the itbl files we read in. */
+/* Keep a record of the itbl files we read in. */
-struct itbl_file_list
-{
+struct itbl_file_list {
struct itbl_file_list *next;
char *name;
};
@@ -117,6 +115,7 @@ static struct itbl_file_list *itbl_files;
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]);
@@ -142,7 +141,7 @@ select_emulation_mode (argc, argv)
if (p)
p++;
else
- p = argv[i+1];
+ p = argv[i + 1];
if (!p || !*p)
as_fatal (_("missing emulation mode name"));
@@ -246,12 +245,12 @@ Options:\n\
fprintf (stream, "\
--em=[");
- for (i = 0; i < n_emulations-1; i++)
+ 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)
+ if (!def_em)
def_em = DEFAULT_EMULATION;
fprintf (stream, _("\
emulate output (default %s)\n"), def_em);
@@ -266,6 +265,8 @@ Options:\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"));
@@ -326,16 +327,14 @@ Options:\n\
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
- */
+/* 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 (pargc, pargv)
@@ -352,24 +351,23 @@ parse_args (pargc, pargv)
char *shortopts;
extern CONST char *md_shortopts;
- static const char std_shortopts[] =
- {
- '-', 'J',
+ static const char std_shortopts[] = {
+ '-', 'J',
#ifndef WORKING_DOT_WORD
- /* -K is not meaningful if .word is not being hacked. */
- 'K',
+ /* -K is not meaningful if .word is not being hacked. */
+ 'K',
#endif
- 'L', 'M', 'R', 'W', 'Z', 'f', 'a', ':', ':', 'D', 'I', ':', 'o', ':',
+ 'L', 'M', 'R', 'W', 'Z', 'f', 'a', ':', ':', 'D', 'I', ':', 'o', ':',
#ifndef VMS
- /* -v takes an argument on VMS, so we don't make it a generic
- option. */
- 'v',
+ /* -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'
- };
+ '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;
@@ -421,17 +419,26 @@ parse_args (pargc, pargv)
{"no-warn", no_argument, NULL, 'W'},
#define OPTION_WARN (OPTION_STD_BASE + 18)
{"warn", no_argument, NULL, OPTION_WARN},
-#define OPTION_WARN_FATAL (OPTION_STD_BASE + 19)
+#define OPTION_TARGET_HELP (OPTION_STD_BASE + 19)
+ {"target-help", no_argument, NULL, OPTION_TARGET_HELP},
+#define OPTION_WARN_FATAL (OPTION_STD_BASE + 20)
{"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. */
+ /* 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 = (struct option *) xmalloc (sizeof (std_longopts) + md_longopts_size);
+ longopts = (struct option *) 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;
@@ -471,7 +478,7 @@ parse_args (pargc, pargv)
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;
+ new_argv[new_argc++] = optarg, new_argv[new_argc] = NULL;
else
#else
case 'v':
@@ -480,7 +487,7 @@ parse_args (pargc, pargv)
print_version_id ();
break;
}
- /*FALLTHRU*/
+ /* Fall through. */
case '?':
exit (EXIT_FAILURE);
@@ -492,6 +499,10 @@ parse_args (pargc, pargv)
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);
@@ -514,7 +525,7 @@ parse_args (pargc, pargv)
case OPTION_VERSION:
/* This output is intended to follow the GNU standards document. */
printf (_("GNU assembler %s\n"), VERSION);
- printf (_("Copyright 2000 Free Software Foundation, Inc.\n"));
+ printf (_("Copyright 2001 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"));
@@ -546,7 +557,7 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
case OPTION_DEFSYM:
{
char *s;
- long i;
+ valueT i;
struct defsym_list *n;
for (s = optarg; *s != '\0' && *s != '='; s++)
@@ -554,7 +565,11 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
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 = (struct defsym_list *) xmalloc (sizeof *n);
n->next = defsyms;
n->name = optarg;
@@ -566,29 +581,29 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
case OPTION_INSTTBL:
case 't':
{
- /* optarg is the name of the file containing the instruction
- formats, opcodes, register names, etc. */
+ /* 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\n") );
+ as_warn (_("No file name following -t option\n"));
break;
}
-
+
n = (struct itbl_file_list *) 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. */
+ 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)
{
- fprintf (stderr, _("Failed to read instruction table %s\n"),
+ fprintf (stderr, _("Failed to read instruction table %s\n"),
itbl_files->name);
exit (EXIT_SUCCESS);
}
@@ -602,7 +617,7 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
case OPTION_GSTABS:
debug_type = DEBUG_STABS;
break;
-
+
case OPTION_GDWARF2:
debug_type = DEBUG_DWARF2;
break;
@@ -622,22 +637,22 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
break;
case OPTION_LISTING_LHS_WIDTH:
- listing_lhs_width = atoi(optarg);
+ 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);
+ 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);
+ listing_rhs_width = atoi (optarg);
break;
case OPTION_LISTING_CONT_LINES:
- listing_lhs_cont_lines = atoi(optarg);
+ listing_lhs_cont_lines = atoi (optarg);
break;
case 'M':
@@ -672,6 +687,9 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
case 'a':
if (optarg)
{
+ if (md_parse_option (optc, optarg) != 0)
+ break;
+
while (*optarg)
{
switch (*optarg)
@@ -713,8 +731,8 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
break;
case 'D':
- /* DEBUG is implemented: it debugs different */
- /* things from other people's assemblers. */
+ /* DEBUG is implemented: it debugs different
+ things from other people's assemblers. */
flag_debug = 1;
break;
@@ -723,7 +741,7 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
break;
case 'I':
- { /* Include file directory */
+ { /* Include file directory. */
char *temp = xstrdup (optarg);
add_include_dir (temp);
break;
@@ -737,7 +755,7 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
break;
case 'X':
- /* -X means treat warnings as errors */
+ /* -X means treat warnings as errors. */
break;
}
}
@@ -751,7 +769,7 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
static long start_time;
-int
+int
main (argc, argv)
int argc;
char **argv;
@@ -806,7 +824,7 @@ main (argc, argv)
symbol_begin ();
frag_init ();
subsegs_begin ();
- parse_args (&argc, &argv);
+ parse_args (&argc, &argv);
read_begin ();
input_scrub_begin ();
expr_begin ();
@@ -859,7 +877,8 @@ main (argc, argv)
PROGRESS (1);
- perform_an_assembly_pass (argc, argv); /* Assemble it. */
+ /* Assemble it. */
+ perform_an_assembly_pass (argc, argv);
cond_finish_check (-1);
@@ -867,6 +886,10 @@ main (argc, argv)
md_end ();
#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 (seen_at_least_1_file ()
&& (flag_always_generate_output || had_errors () == 0))
keep_it = 1;
@@ -895,8 +918,8 @@ main (argc, argv)
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 (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;
@@ -947,19 +970,16 @@ dump_statistics ()
#endif
}
+/* 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).
-/* perform_an_assembly_pass()
- *
- * 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
+ 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 (argc, argv)
int argc;
char **argv;
@@ -978,7 +998,7 @@ perform_an_assembly_pass (argc, argv)
for (i = SEG_E0; i < SEG_UNKNOWN; i++)
segment_info[i].fix_root = 0;
}
- /* Create the three fixed ones */
+ /* Create the three fixed ones. */
{
segT seg;
@@ -1009,7 +1029,7 @@ perform_an_assembly_pass (argc, argv)
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. */
+ 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
@@ -1036,22 +1056,24 @@ perform_an_assembly_pass (argc, argv)
obj_begin ();
#endif
- argv++; /* skip argv[0] */
- argc--; /* skip argv[0] */
+ /* Skip argv[0]. */
+ argv++;
+ argc--;
+
while (argc--)
{
if (*argv)
- { /* Is it a file-name argument? */
+ { /* Is it a file-name argument? */
PROGRESS (1);
saw_a_file++;
- /* argv->"" if stdin desired, else->filename */
+ /* argv->"" if stdin desired, else->filename */
read_a_source_file (*argv);
}
- argv++; /* completed that argv */
+ argv++; /* completed that argv */
}
if (!saw_a_file)
read_a_source_file ("");
-} /* perform_an_assembly_pass() */
+}
/* The interface between the macro code and gas expression handling. */
@@ -1080,5 +1102,3 @@ macro_expr (emsg, idx, in, val)
return idx;
}
-
-/* end of as.c */
diff --git a/contrib/binutils/gas/as.h b/contrib/binutils/gas/as.h
index e56d6cd..a98acfe 100644
--- a/contrib/binutils/gas/as.h
+++ b/contrib/binutils/gas/as.h
@@ -21,8 +21,7 @@
#ifndef GAS
#define GAS 1
-/*
- * I think this stuff is largely out of date. xoxorich.
+/* I think this stuff is largely out of date. xoxorich.
*
* CAPITALISED names are #defined.
* "lowercaseH" is #defined if "lowercase.h" has been #include-d.
@@ -80,7 +79,7 @@ extern void *alloca ();
/* Now, tend to the rest of the configuration. */
-/* System include files first... */
+/* System include files first... */
#include <stdio.h>
#include <ctype.h>
#ifdef HAVE_STRING_H
@@ -106,8 +105,8 @@ extern void *alloca ();
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.
- 170 gives the standard options room to grow. */
-#define OPTION_MD_BASE 170
+ 190 gives the standard options room to grow. */
+#define OPTION_MD_BASE 190
#ifdef DEBUG
#undef NDEBUG
@@ -136,8 +135,7 @@ extern void *alloca ();
#endif
-
-/* Now GNU header files... */
+/* Now GNU header files... */
#include "ansidecl.h"
#ifdef BFD_ASSEMBLER
#include "bfd.h"
@@ -185,9 +183,9 @@ extern char **environ;
/* Make Saber happier on obstack.h. */
#ifdef SABER
#undef __PTR_TO_INT
-#define __PTR_TO_INT(P) ((int)(P))
+#define __PTR_TO_INT(P) ((int) (P))
#undef __INT_TO_PTR
-#define __INT_TO_PTR(P) ((char *)(P))
+#define __INT_TO_PTR(P) ((char *) (P))
#endif
#ifndef __LINE__
@@ -222,11 +220,11 @@ extern char **environ;
#include "asintl.h"
-#define BAD_CASE(val) \
-{ \
- as_fatal(_("Case value %ld unexpected at line %d of file \"%s\"\n"), \
- (long) val, __LINE__, __FILE__); \
- }
+#define BAD_CASE(val) \
+ { \
+ as_fatal (_("Case value %ld unexpected at line %d of file \"%s\"\n"), \
+ (long) val, __LINE__, __FILE__); \
+ }
#include "flonum.h"
@@ -246,7 +244,7 @@ typedef addressT valueT;
#ifndef COMMON
#ifdef TEST
-#define COMMON /* declare our COMMONs storage here. */
+#define COMMON /* declare our COMMONs storage here. */
#else
#define COMMON extern /* our commons live elswhere */
#endif
@@ -263,12 +261,9 @@ typedef addressT valueT;
/* input_scrub.c */
-/*
- * Supplies sanitised buffers to read.c.
- * Also understands printing line-number part of error messages.
- */
+/* 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
@@ -291,20 +286,19 @@ typedef addressT valueT;
#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;
+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
@@ -319,7 +313,7 @@ typedef int subsegT;
/* What subseg we are accreting now? */
COMMON subsegT now_subseg;
-/* Segment our instructions emit to. */
+/* Segment our instructions emit to. */
COMMON segT now_seg;
#ifdef BFD_ASSEMBLER
@@ -351,51 +345,57 @@ extern segT text_section, data_section, bss_section;
/* 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,
-
- /* Org: Fr_offset, fr_symbol: address. 1 variable char: fill
- character. */
- rs_org,
+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,
+ /* JF: gunpoint */
+ rs_broken_word,
#endif
- /* machine-specific relaxable (or similarly alterable) instruction */
- rs_machine_dependent,
+ /* 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,
+ /* .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,
+ /* 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
- };
+ /* 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;
@@ -436,7 +436,7 @@ COMMON int flag_fatal_warnings; /* --fatal-warnings */
are detected. */
COMMON unsigned char flag_always_generate_output; /* -Z */
-/* This is true if the assembler should output time and space usage. */
+/* 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. */
@@ -451,7 +451,7 @@ 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. */
+/* TRUE if we need a second pass. */
COMMON int need_pass_2;
/* TRUE if we should do no relaxing, and
@@ -461,18 +461,22 @@ 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. */
+/* 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
- };
+enum debug_info_type {
+ DEBUG_UNSPECIFIED,
+ DEBUG_NONE,
+ DEBUG_STABS,
+ DEBUG_ECOFF,
+ DEBUG_DWARF,
+ DEBUG_DWARF2
+};
extern enum debug_info_type debug_type;
@@ -483,15 +487,14 @@ extern int max_macro_nest;
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) PARAMS ((int));
- /* Value to pass to handler */
- int poc_val;
- };
+struct _pseudo_type {
+ /* assembler mnemonic, lower case, no '.' */
+ const char *poc_name;
+ /* Do the work */
+ void (*poc_handler) PARAMS ((int));
+ /* Value to pass to handler */
+ int poc_val;
+};
typedef struct _pseudo_type pseudo_typeS;
@@ -619,6 +622,10 @@ void eh_frame_convert_frag PARAMS ((fragS *));
/* this one starts the chain of target dependant headers */
#include "targ-env.h"
+#ifdef TC_ARC
+#include "struc-symbol.h"
+#endif
+
#include "write.h"
#include "frags.h"
#include "hash.h"
@@ -640,6 +647,12 @@ COMMON int flag_m68k_mri;
#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
@@ -677,5 +690,3 @@ COMMON int flag_m68k_mri;
#endif
#endif /* GAS */
-
-/* end of as.h */
diff --git a/contrib/binutils/gas/asintl.h b/contrib/binutils/gas/asintl.h
index b733c85..5b6369f 100644
--- a/contrib/binutils/gas/asintl.h
+++ b/contrib/binutils/gas/asintl.h
@@ -1,5 +1,5 @@
/* asintl.h - gas-specific header for gettext code.
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
Written by Tom Tromey <tromey@cygnus.com>
@@ -18,7 +18,7 @@
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. */
+ 02111-1307, USA. */
#ifdef HAVE_LOCALE_H
# include <locale.h>
@@ -33,12 +33,11 @@
# define N_(String) (String)
# endif
#else
-/* Stubs that do something close enough. */
-# define textdomain(String) (String)
-# define gettext(String) (String)
-# define dgettext(Domain,Message) (Message)
-# define dcgettext(Domain,Message,Type) (Message)
-# define bindtextdomain(Domain,Directory) (Domain)
+# 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/contrib/binutils/gas/atof-generic.c b/contrib/binutils/gas/atof-generic.c
index de29f21..93eadc1 100644
--- a/contrib/binutils/gas/atof-generic.c
+++ b/contrib/binutils/gas/atof-generic.c
@@ -1,5 +1,5 @@
/* atof_generic.c - turn a string of digits into a Flonum
- Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 1998
+ Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 98, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -15,8 +15,9 @@
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. */
+ 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 <ctype.h>
#include <string.h>
@@ -78,14 +79,14 @@ atof_generic (address_of_string_pointer,
string_of_decimal_marks,
string_of_decimal_exponent_marks,
address_of_generic_floating_point_number)
- /* return pointer to just AFTER number we read. */
+ /* return pointer to just AFTER number we read. */
char **address_of_string_pointer;
- /* At most one per number. */
+ /* 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. */
+ int return_value; /* 0 means OK. */
char *first_digit;
unsigned int number_of_digits_before_decimal;
unsigned int number_of_digits_after_decimal;
@@ -184,9 +185,9 @@ atof_generic (address_of_string_pointer,
}
else
{
- break; /* p -> char after pre-decimal digits. */
+ break; /* p -> char after pre-decimal digits. */
}
- } /* For each digit before decimal mark. */
+ } /* For each digit before decimal mark. */
#ifndef OLD_FLOAT_READS
/* Ignore trailing 0's after the decimal point. The original code here
@@ -222,7 +223,7 @@ atof_generic (address_of_string_pointer,
{
if (isdigit ((unsigned char) c))
{
- /* This may be retracted below. */
+ /* This may be retracted below. */
number_of_digits_after_decimal++;
if ( /* seen_significant_digit || */ c > '0')
@@ -238,7 +239,7 @@ atof_generic (address_of_string_pointer,
}
break;
}
- } /* For each digit after decimal mark. */
+ } /* For each digit after decimal mark. */
}
while (number_of_digits_after_decimal
@@ -295,8 +296,6 @@ atof_generic (address_of_string_pointer,
*address_of_string_pointer = p;
-
-
number_of_digits_available =
number_of_digits_before_decimal + number_of_digits_after_decimal;
return_value = 0;
@@ -311,7 +310,7 @@ atof_generic (address_of_string_pointer,
}
else
{
- int count; /* Number of useful digits left to scan. */
+ int count; /* Number of useful digits left to scan. */
LITTLENUM_TYPE *digits_binary_low;
unsigned int precision;
@@ -326,7 +325,7 @@ atof_generic (address_of_string_pointer,
precision = (address_of_generic_floating_point_number->high
- address_of_generic_floating_point_number->low
- + 1); /* Number of destination littlenums. */
+ + 1); /* Number of destination littlenums. */
/* Includes guard bits (two littlenums worth) */
#if 0 /* The integer version below is very close, and it doesn't
@@ -335,12 +334,12 @@ atof_generic (address_of_string_pointer,
maximum_useful_digits = (((double) (precision - 2))
* ((double) (LITTLENUM_NUMBER_OF_BITS))
/ (LOG_TO_BASE_2_OF_10))
- + 2; /* 2 :: guard digits. */
+ + 2; /* 2 :: guard digits. */
#else
maximum_useful_digits = (((precision - 2))
* ( (LITTLENUM_NUMBER_OF_BITS))
* 1000000 / 3321928)
- + 2; /* 2 :: guard digits. */
+ + 2; /* 2 :: guard digits. */
#endif
if (number_of_digits_available > maximum_useful_digits)
@@ -388,7 +387,7 @@ atof_generic (address_of_string_pointer,
memset ((char *) digits_binary_low, '\0', size_of_digits_in_chars);
- /* Digits_binary_low[] is allocated and zeroed. */
+ /* Digits_binary_low[] is allocated and zeroed. */
/*
* Parse the decimal digits as if * digits_low was in the units position.
@@ -440,11 +439,10 @@ atof_generic (address_of_string_pointer,
}
else
{
- ++count; /* '.' doesn't alter digits used count. */
+ ++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.
@@ -480,7 +478,7 @@ atof_generic (address_of_string_pointer,
LITTLENUM_TYPE *power_binary_low;
int decimal_exponent_is_negative;
- /* This refers to the "-56" in "12.34E-56". */
+ /* 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;
@@ -489,7 +487,7 @@ atof_generic (address_of_string_pointer,
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. */
+ /* 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)
@@ -497,7 +495,7 @@ atof_generic (address_of_string_pointer,
decimal_exponent = -decimal_exponent;
}
- /* From now on: the decimal exponent is > 0. Its sign is separate. */
+ /* 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;
@@ -530,7 +528,7 @@ atof_generic (address_of_string_pointer,
int place_number_limit;
/* Any 10^(2^n) whose "n" exceeds this */
/* value will fall off the end of */
- /* flonum_XXXX_powers_of_ten[]. */
+ /* flonum_XXXX_powers_of_ten[]. */
int place_number;
const FLONUM_TYPE *multiplicand; /* -> 10^(2^n) */
@@ -540,8 +538,8 @@ atof_generic (address_of_string_pointer,
? 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. */
+ 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)
@@ -586,7 +584,7 @@ atof_generic (address_of_string_pointer,
(void) putchar ('\n');
#endif
} /* If this bit of decimal_exponent was computable.*/
- } /* If this bit of decimal_exponent was set. */
+ } /* 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");
@@ -605,7 +603,7 @@ atof_generic (address_of_string_pointer,
*/
flonum_multip (&power_of_10_flonum, &digits_flonum, address_of_generic_floating_point_number);
- /* Assert sign of the number we made is '+'. */
+ /* Assert sign of the number we made is '+'. */
address_of_generic_floating_point_number->sign = digits_sign_char;
}
diff --git a/contrib/binutils/gas/bignum-copy.c b/contrib/binutils/gas/bignum-copy.c
index 2bffcbf..8384ff1 100644
--- a/contrib/binutils/gas/bignum-copy.c
+++ b/contrib/binutils/gas/bignum-copy.c
@@ -1,5 +1,6 @@
/* bignum_copy.c - copy a bignum
- Copyright (C) 1987, 1990, 1991, 1992 Free Software Foundation, Inc.
+ Copyright (C) 1987, 1990, 1991, 1992, 2000
+ Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -15,7 +16,7 @@
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 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "as.h"
@@ -43,7 +44,7 @@ bignum_copy (in, in_length, out, out_length)
if (out_length < in_length)
{
LITTLENUM_TYPE *p; /* -> most significant (non-zero) input
- littlenum. */
+ littlenum. */
memcpy ((void *) out, (void *) in,
(unsigned int) out_length << LITTLENUM_SHIFT);
diff --git a/contrib/binutils/gas/bit_fix.h b/contrib/binutils/gas/bit_fix.h
index 6a729a7..b9768fd 100644
--- a/contrib/binutils/gas/bit_fix.h
+++ b/contrib/binutils/gas/bit_fix.h
@@ -1,6 +1,5 @@
-/* write.h
-
- Copyright (C) 1987, 1992 Free Software Foundation, Inc.
+/* bit_fix.h
+ Copyright (C) 1987, 1992, 2000 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -15,8 +14,9 @@
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. */
+ 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.
@@ -33,19 +33,16 @@
#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 */
- };
+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__ */
-
-/* end of bit_fix.h */
diff --git a/contrib/binutils/gas/cond.c b/contrib/binutils/gas/cond.c
index 025ca51..6c6e8ad 100644
--- a/contrib/binutils/gas/cond.c
+++ b/contrib/binutils/gas/cond.c
@@ -1,5 +1,5 @@
/* cond.c - conditional assembly pseudo-ops, and .include
- Copyright (C) 1990, 91, 92, 93, 95, 96, 97, 98, 99, 2000
+ Copyright 1990, 1991, 1992, 1993, 1995, 1997, 1998, 2000, 2001
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -24,11 +24,11 @@
#include "obstack.h"
-/* This is allocated to grow and shrink as .ifdef/.endif pairs are scanned. */
+/* This is allocated to grow and shrink as .ifdef/.endif pairs are
+ scanned. */
struct obstack cond_obstack;
-struct file_line
-{
+struct file_line {
char *file;
unsigned int line;
};
@@ -36,8 +36,7 @@ struct file_line
/* We push one of these structures for each .if, and pop it at the
.endif. */
-struct conditional_frame
-{
+struct conditional_frame {
/* The source file & line number of the "if". */
struct file_line if_file_line;
/* The source file & line of the "else". */
@@ -48,7 +47,9 @@ struct conditional_frame
int else_seen;
/* Whether we are currently ignoring input. */
int ignoring;
- /* Whether a conditional at a higher level is ignoring input. */
+ /* 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;
@@ -59,15 +60,18 @@ static char *get_mri_string PARAMS ((int, int *));
static struct conditional_frame *current_cframe = NULL;
-void
+void
s_ifdef (arg)
int arg;
{
- register char *name; /* points to name of symbol */
- register symbolS *symbolP; /* Points to symbol */
+ /* Points to name of symbol. */
+ register char *name;
+ /* Points to symbol. */
+ register symbolS *symbolP;
struct conditional_frame cframe;
- SKIP_WHITESPACE (); /* Leading whitespace is part of operand. */
+ /* Leading whitespace is part of operand. */
+ SKIP_WHITESPACE ();
name = input_line_pointer;
if (!is_name_beginner (*name))
@@ -98,9 +102,9 @@ s_ifdef (arg)
demand_empty_rest_of_line ();
} /* if a valid identifyer name */
-} /* s_ifdef() */
+}
-void
+void
s_if (arg)
int arg;
{
@@ -113,7 +117,8 @@ s_if (arg)
if (flag_mri)
stop = mri_comment_field (&stopc);
- SKIP_WHITESPACE (); /* Leading whitespace is part of operand. */
+ /* Leading whitespace is part of operand. */
+ SKIP_WHITESPACE ();
if (current_cframe != NULL && current_cframe->ignoring)
{
@@ -158,7 +163,7 @@ s_if (arg)
mri_comment_end (stop, stopc);
demand_empty_rest_of_line ();
-} /* s_if() */
+}
/* Get a string for the MRI IFC or IFNC pseudo-ops. */
@@ -246,17 +251,13 @@ s_ifc (arg)
demand_empty_rest_of_line ();
}
-void
+void
s_elseif (arg)
int arg;
{
- expressionS operand;
- int t;
-
if (current_cframe == NULL)
{
as_bad (_("\".elseif\" without matching \".if\" - ignored"));
-
}
else if (current_cframe->else_seen)
{
@@ -273,60 +274,60 @@ s_elseif (arg)
as_where (&current_cframe->else_file_line.file,
&current_cframe->else_file_line.line);
- if (!current_cframe->dead_tree)
- {
- current_cframe->ignoring = !current_cframe->ignoring;
- if (LISTING_SKIP_COND ())
- {
- if (! current_cframe->ignoring)
- listing_list (1);
- else
- listing_list (2);
- }
- } /* if not a dead tree */
- } /* if error else do it */
-
-
- SKIP_WHITESPACE (); /* Leading whitespace is part of operand. */
+ current_cframe->dead_tree |= !current_cframe->ignoring;
+ current_cframe->ignoring = current_cframe->dead_tree;
+ }
- if (current_cframe != NULL && current_cframe->ignoring)
+ 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;
+
+ 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;
+ 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->ignoring
&& (current_cframe->previous_cframe == NULL
|| ! current_cframe->previous_cframe->ignoring))
- listing_list (2);
+ {
+ if (! current_cframe->ignoring)
+ listing_list (1);
+ else
+ listing_list (2);
+ }
demand_empty_rest_of_line ();
}
-void
+void
s_endif (arg)
int arg ATTRIBUTE_UNUSED;
{
@@ -356,16 +357,15 @@ s_endif (arg)
}
demand_empty_rest_of_line ();
-} /* s_endif() */
+}
-void
+void
s_else (arg)
int arg ATTRIBUTE_UNUSED;
{
if (current_cframe == NULL)
{
as_bad (_(".else without matching .if - ignored"));
-
}
else if (current_cframe->else_seen)
{
@@ -382,20 +382,21 @@ s_else (arg)
as_where (&current_cframe->else_file_line.file,
&current_cframe->else_file_line.line);
- if (!current_cframe->dead_tree)
+ current_cframe->ignoring =
+ current_cframe->dead_tree | !current_cframe->ignoring;
+
+ if (LISTING_SKIP_COND ()
+ && (current_cframe->previous_cframe == NULL
+ || ! current_cframe->previous_cframe->ignoring))
{
- current_cframe->ignoring = !current_cframe->ignoring;
- if (LISTING_SKIP_COND ())
- {
- if (! current_cframe->ignoring)
- listing_list (1);
- else
- listing_list (2);
- }
- } /* if not a dead tree */
+ if (! current_cframe->ignoring)
+ listing_list (1);
+ else
+ listing_list (2);
+ }
current_cframe->else_seen = 1;
- } /* if error else do it */
+ }
if (flag_mri)
{
@@ -404,9 +405,9 @@ s_else (arg)
}
demand_empty_rest_of_line ();
-} /* s_else() */
+}
-void
+void
s_ifeqs (arg)
int arg;
{
@@ -443,9 +444,9 @@ s_ifeqs (arg)
listing_list (2);
demand_empty_rest_of_line ();
-} /* s_ifeqs() */
+}
-int
+int
ignore_input ()
{
char *s;
@@ -477,9 +478,9 @@ ignore_input ()
return 0;
return (current_cframe != NULL) && (current_cframe->ignoring);
-} /* ignore_input() */
+}
-static void
+static void
initialize_cframe (cframe)
struct conditional_frame *cframe;
{
@@ -533,5 +534,3 @@ cond_exit_macro (nest)
obstack_free (&cond_obstack, hold);
}
}
-
-/* end of cond.c */
diff --git a/contrib/binutils/gas/config.in b/contrib/binutils/gas/config.in
index 81f2ada..fc7ef2b 100644
--- a/contrib/binutils/gas/config.in
+++ b/contrib/binutils/gas/config.in
@@ -25,9 +25,6 @@
/* Define to `long' if <sys/types.h> doesn't define. */
#undef off_t
-/* Define if you need to in order for stat and other things to work. */
-#undef _POSIX_SOURCE
-
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
@@ -151,6 +148,9 @@
/* Define if defaulting to ELF on SCO 5. */
#undef SCO_ELF
+/* Using strict COFF? */
+#undef STRICTCOFF
+
/* Use ELF stabs for MIPS, not ECOFF stabs */
#undef MIPS_STABS_ELF
diff --git a/contrib/binutils/gas/config/aout_gnu.h b/contrib/binutils/gas/config/aout_gnu.h
index badf9cb..52ea70d 100644
--- a/contrib/binutils/gas/config/aout_gnu.h
+++ b/contrib/binutils/gas/config/aout_gnu.h
@@ -63,7 +63,6 @@ enum reloc_type
#endif /* TC_SPARC or TC_A29K */
-
#define __GNU_EXEC_MACROS__
#ifndef __STRUCT_EXEC_OVERRIDE__
@@ -183,7 +182,6 @@ enum machine_type
sizeof (struct exec))
#endif
-
#ifndef N_DATOFF
#define N_DATOFF(x) ( N_TXTOFF(x) + (x).a_text )
#endif
@@ -317,7 +315,6 @@ struct reloc_ext_bytes
unsigned char r_addend[4];
};
-
#define RELOC_EXT_BITS_EXTERN_BIG 0x80
#define RELOC_EXT_BITS_EXTERN_LITTLE 0x01
@@ -345,8 +342,6 @@ struct reloc_info_extended
/* 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
@@ -362,7 +357,6 @@ enum highlow_type
NO_SPEC = 0, PAIR, HIGH, HIGHADJ,
};
-
struct reloc_info_i860
{
unsigned long r_address;
@@ -381,7 +375,6 @@ struct reloc_info_i860
#endif /* TC_I860 */
-
struct reloc_std_bytes
{
unsigned char r_address[4];
diff --git a/contrib/binutils/gas/config/atof-ieee.c b/contrib/binutils/gas/config/atof-ieee.c
index 2e3c0dc..2a916cd 100644
--- a/contrib/binutils/gas/config/atof-ieee.c
+++ b/contrib/binutils/gas/config/atof-ieee.c
@@ -29,7 +29,7 @@ static void unget_bits PARAMS ((int));
static void make_invalid_floating_point_number PARAMS ((LITTLENUM_TYPE *));
extern const char EXP_CHARS[];
-/* Precision in LittleNums. */
+/* Precision in LittleNums. */
/* Don't count the gap in the m68k extended precision format. */
#define MAX_PRECISION (5)
#define F_PRECISION (2)
@@ -37,7 +37,7 @@ extern const char EXP_CHARS[];
#define X_PRECISION (5)
#define P_PRECISION (5)
-/* Length in LittleNums of guard bits. */
+/* Length in LittleNums of guard bits. */
#define GUARD (2)
static const unsigned long mask[] =
@@ -77,7 +77,6 @@ static const unsigned long mask[] =
0xffffffff,
};
-
static int bits_left_in_littlenum;
static int littlenums_left;
static LITTLENUM_TYPE *littlenum_pointer;
@@ -100,18 +99,22 @@ next_bits (number_of_bits)
{
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];
+ 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_value =
+ mask[number_of_bits] & (*littlenum_pointer >> bits_left_in_littlenum);
}
- return (return_value);
+ return return_value;
}
-/* Num had better be less than LITTLENUM_NUMBER_OF_BITS */
+/* Num had better be less than LITTLENUM_NUMBER_OF_BITS. */
+
static void
unget_bits (num)
int num;
@@ -124,7 +127,8 @@ unget_bits (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);
+ bits_left_in_littlenum =
+ num - (LITTLENUM_NUMBER_OF_BITS - bits_left_in_littlenum);
++littlenum_pointer;
++littlenums_left;
}
@@ -137,7 +141,8 @@ make_invalid_floating_point_number (words)
LITTLENUM_TYPE *words;
{
as_bad (_("cannot create floating-point number"));
- words[0] = (LITTLENUM_TYPE) ((unsigned) -1) >> 1; /* Zero the leftmost bit */
+ /* 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;
@@ -145,29 +150,27 @@ make_invalid_floating_point_number (words)
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! *
- * *
-\************************************************************************/
+/* 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. */
+/* 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. */
+ 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. */
+ /* 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. */
+ /* Number of 16-bit words in the format. */
int precision;
long exponent_bits;
FLONUM_TYPE save_gen_flonum;
@@ -186,7 +189,7 @@ atof_ieee (str, what_kind, words)
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. */
+ have 15 leading 0 bits, so could be useless. */
memset (bits, '\0', sizeof (LITTLENUM_TYPE) * MAX_PRECISION);
@@ -247,6 +250,7 @@ atof_ieee (str, what_kind, words)
}
/* Turn generic_floating_point_number into a real float/double/extended. */
+
int
gen_to_words (words, precision, exponent_bits)
LITTLENUM_TYPE *words;
@@ -274,17 +278,17 @@ gen_to_words (words, precision, exponent_bits)
if (generic_floating_point_number.low > generic_floating_point_number.leader)
{
- /* 0.0e0 seen. */
+ /* 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);
+ return return_value;
}
- /* NaN: Do the right thing */
+ /* NaN: Do the right thing. */
if (generic_floating_point_number.sign == 0)
{
if (precision == F_PRECISION)
@@ -301,17 +305,17 @@ gen_to_words (words, precision, exponent_bits)
words[3] = 0xffff;
words[4] = 0xffff;
words[5] = 0xffff;
-#else /* ! TC_M68K */
+#else /* ! TC_M68K */
#ifdef TC_I386
words[0] = 0xffff;
words[1] = 0xc000;
words[2] = 0;
words[3] = 0;
words[4] = 0;
-#else /* ! TC_I386 */
+#else /* ! TC_I386 */
abort ();
-#endif /* ! TC_I386 */
-#endif /* ! TC_M68K */
+#endif /* ! TC_I386 */
+#endif /* ! TC_M68K */
}
else
{
@@ -324,7 +328,7 @@ gen_to_words (words, precision, exponent_bits)
}
else if (generic_floating_point_number.sign == 'P')
{
- /* +INF: Do the right thing */
+ /* +INF: Do the right thing. */
if (precision == F_PRECISION)
{
words[0] = 0x7f80;
@@ -339,17 +343,17 @@ gen_to_words (words, precision, exponent_bits)
words[3] = 0;
words[4] = 0;
words[5] = 0;
-#else /* ! TC_M68K */
+#else /* ! TC_M68K */
#ifdef TC_I386
words[0] = 0x7fff;
words[1] = 0x8000;
words[2] = 0;
words[3] = 0;
words[4] = 0;
-#else /* ! TC_I386 */
+#else /* ! TC_I386 */
abort ();
-#endif /* ! TC_I386 */
-#endif /* ! TC_M68K */
+#endif /* ! TC_I386 */
+#endif /* ! TC_M68K */
}
else
{
@@ -358,11 +362,11 @@ gen_to_words (words, precision, exponent_bits)
words[2] = 0;
words[3] = 0;
}
- return (return_value);
+ return return_value;
}
else if (generic_floating_point_number.sign == 'N')
{
- /* Negative INF */
+ /* Negative INF. */
if (precision == F_PRECISION)
{
words[0] = 0xff80;
@@ -377,17 +381,17 @@ gen_to_words (words, precision, exponent_bits)
words[3] = 0;
words[4] = 0;
words[5] = 0;
-#else /* ! TC_M68K */
+#else /* ! TC_M68K */
#ifdef TC_I386
words[0] = 0xffff;
words[1] = 0x8000;
words[2] = 0;
words[3] = 0;
words[4] = 0;
-#else /* ! TC_I386 */
+#else /* ! TC_I386 */
abort ();
-#endif /* ! TC_I386 */
-#endif /* ! TC_M68K */
+#endif /* ! TC_I386 */
+#endif /* ! TC_M68K */
}
else
{
@@ -396,46 +400,49 @@ gen_to_words (words, precision, exponent_bits)
words[2] = 0x0;
words[3] = 0x0;
}
- return (return_value);
+ 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.
- */
+
+ /* 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 */
+
+ /* 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. */
+ generic_floating_point_number.leader. */
exponent_2 = exponent_1 * LITTLENUM_NUMBER_OF_BITS;
- /* Radix 2. */
+
+ /* Radix 2. */
exponent_3 = exponent_2 - exponent_skippage;
- /* Forget leading zeros, forget 1st bit. */
+
+ /* Forget leading zeros, forget 1st bit. */
exponent_4 = exponent_3 + ((1 << (exponent_bits - 1)) - 2);
- /* Offset exponent. */
+ /* Offset exponent. */
lp = words;
- /* Word 1. Sign, exponent and perhaps high bits. */
+ /* 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. */
+ /* Assume 2's complement integers. */
if (exponent_4 <= 0)
{
int prec_bits;
@@ -443,7 +450,8 @@ gen_to_words (words, precision, exponent_bits)
unget_bits (1);
num_bits = -exponent_4;
- prec_bits = LITTLENUM_NUMBER_OF_BITS * precision - (exponent_bits + 1 + num_bits);
+ prec_bits =
+ LITTLENUM_NUMBER_OF_BITS * precision - (exponent_bits + 1 + num_bits);
#ifdef TC_I386
if (precision == X_PRECISION && exponent_bits == 15)
{
@@ -457,14 +465,15 @@ gen_to_words (words, precision, exponent_bits)
if (num_bits >= LITTLENUM_NUMBER_OF_BITS - exponent_bits)
{
- /* Bigger than one littlenum */
+ /* 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)
+ if (num_bits + exponent_bits + 1
+ > precision * LITTLENUM_NUMBER_OF_BITS)
{
- /* Exponent overflow */
+ /* Exponent overflow. */
make_invalid_floating_point_number (words);
- return (return_value);
+ return return_value;
}
#ifdef TC_M68K
if (precision == X_PRECISION && exponent_bits == 15)
@@ -490,14 +499,15 @@ gen_to_words (words, precision, exponent_bits)
}
else
{
- word1 |= next_bits ((LITTLENUM_NUMBER_OF_BITS - 1) - (exponent_bits + num_bits));
+ 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 */
+ /* Round the mantissa up, but don't change the number. */
if (next_bits (1))
{
--lp;
@@ -570,15 +580,11 @@ gen_to_words (words, precision, exponent_bits)
}
else if ((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.
- */
+ /* 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;
}
@@ -591,7 +597,7 @@ gen_to_words (words, precision, 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. */
+ middle. Either way, it is then followed by a 1 bit. */
if (exponent_bits == 15 && precision == X_PRECISION)
{
#ifdef TC_M68K
@@ -601,21 +607,19 @@ gen_to_words (words, precision, exponent_bits)
| next_bits (LITTLENUM_NUMBER_OF_BITS - 1));
}
- /* The rest of the words are just mantissa bits. */
+ /* 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?
- */
+ /* 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.
@@ -640,33 +644,36 @@ gen_to_words (words, precision, exponent_bits)
{
#ifdef TC_M68K
/* On the m68k there is a gap of 16 bits. We must
- explicitly propagate the carry into the exponent. */
+ explicitly propagate the carry into the exponent. */
words[0] += words[1];
words[1] = 0;
lp++;
#endif
- /* Put back the integer bit. */
+ /* 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.
- */
+ /* 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));
- /* make_invalid_floating_point_number (words); */
- /* return return_value; */
+#if 0
+ make_invalid_floating_point_number (words);
+ return return_value;
+#endif
}
}
- return (return_value);
+ return return_value;
}
-#if 0 /* unused */
+#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;
@@ -705,13 +712,9 @@ print_gen (gen)
sprintf (sbuf + strlen (sbuf), "%x %x %.12g\n", arr[0], arr[1], fv);
if (gen)
- {
- generic_floating_point_number = f;
- }
+ generic_floating_point_number = f;
return (sbuf);
}
#endif
-
-/* end of atof-ieee.c */
diff --git a/contrib/binutils/gas/config/obj-aout.c b/contrib/binutils/gas/config/obj-aout.c
index eabbe92..67bb18e 100644
--- a/contrib/binutils/gas/config/obj-aout.c
+++ b/contrib/binutils/gas/config/obj-aout.c
@@ -17,7 +17,7 @@ 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. */
+02111-1307, USA. */
#define OBJ_HEADER "obj-aout.h"
@@ -99,13 +99,12 @@ const pseudo_typeS aout_pseudo_table[] =
{NULL, NULL, 0} /* end sentinel */
}; /* aout_pseudo_table */
-
#ifdef BFD_ASSEMBLER
void
obj_aout_frob_symbol (sym, punt)
symbolS *sym;
- int *punt;
+ int *punt ATTRIBUTE_UNUSED;
{
flagword flags;
asection *sec;
@@ -223,7 +222,7 @@ obj_aout_frob_file ()
#else /* ! BFD_ASSEMBLER */
-/* Relocation. */
+/* Relocation. */
/*
* emit_relocations()
@@ -233,7 +232,7 @@ obj_aout_frob_file ()
void
obj_emit_relocations (where, fixP, segment_address_in_file)
char **where;
- fixS *fixP; /* Fixup chain for this segment. */
+ fixS *fixP; /* Fixup chain for this segment. */
relax_addressT segment_address_in_file;
{
for (; fixP; fixP = fixP->fx_next)
@@ -322,13 +321,13 @@ obj_emit_symbols (where, symbol_rootP)
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. */
+ 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. */
+ /* 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);
@@ -355,11 +354,11 @@ obj_emit_symbols (where, symbol_rootP)
static void
obj_aout_line (ignore)
- int 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. */
+ are not being incompatible here. */
new_logical_line ((char *) NULL, (int) (get_absolute_expression ()));
demand_empty_rest_of_line ();
} /* obj_aout_line() */
@@ -368,7 +367,7 @@ obj_aout_line (ignore)
static void
obj_aout_weak (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
int c;
@@ -396,12 +395,12 @@ obj_aout_weak (ignore)
/* 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 ogas ignored the .type pseudo-op, so we also ignore it if
+ 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;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
int c;
@@ -409,31 +408,28 @@ obj_aout_type (ignore)
name = input_line_pointer;
c = get_symbol_end ();
- sym = symbol_find (name);
+ sym = symbol_find_or_make (name);
*input_line_pointer = c;
- if (sym != NULL)
+ SKIP_WHITESPACE ();
+ if (*input_line_pointer == ',')
{
+ ++input_line_pointer;
SKIP_WHITESPACE ();
- if (*input_line_pointer == ',')
+ if (*input_line_pointer == '@')
{
++input_line_pointer;
- SKIP_WHITESPACE ();
- if (*input_line_pointer == '@')
- {
- ++input_line_pointer;
- if (strncmp (input_line_pointer, "object", 6) == 0)
+ if (strncmp (input_line_pointer, "object", 6) == 0)
#ifdef BFD_ASSEMBLER
- aout_symbol (symbol_get_bfdsym (sym))->other = 1;
+ aout_symbol (symbol_get_bfdsym (sym))->other = 1;
#else
- S_SET_OTHER (sym, 1);
+ S_SET_OTHER (sym, 1);
#endif
- else if (strncmp (input_line_pointer, "function", 8) == 0)
+ else if (strncmp (input_line_pointer, "function", 8) == 0)
#ifdef BFD_ASSEMBLER
- aout_symbol (symbol_get_bfdsym (sym))->other = 2;
+ aout_symbol (symbol_get_bfdsym (sym))->other = 2;
#else
- S_SET_OTHER (sym, 2);
+ S_SET_OTHER (sym, 2);
#endif
- }
}
}
@@ -453,7 +449,7 @@ obj_crawl_symbol_chain (headers)
tc_crawl_symbol_chain (headers);
- symbolPP = &symbol_rootP; /*->last symbol chain link. */
+ symbolPP = &symbol_rootP; /*->last symbol chain link. */
while ((symbolP = *symbolPP) != NULL)
{
if (symbolP->sy_mri_common)
@@ -494,8 +490,7 @@ obj_crawl_symbol_chain (headers)
switch was passed to gas.
All other symbols are output. We complain if a deleted
- symbol was marked external. */
-
+ symbol was marked external. */
if (!S_IS_REGISTER (symbolP)
&& (!S_GET_NAME (symbolP)
@@ -511,11 +506,11 @@ obj_crawl_symbol_chain (headers)
end of each string */
if (!S_IS_STABD (symbolP))
{
- /* Ordinary case. */
+ /* Ordinary case. */
symbolP->sy_name_offset = string_byte_count;
string_byte_count += strlen (S_GET_NAME (symbolP)) + 1;
}
- else /* .Stabd case. */
+ else /* .Stabd case. */
symbolP->sy_name_offset = 0;
symbolPP = &symbolP->sy_next;
}
@@ -527,7 +522,7 @@ obj_crawl_symbol_chain (headers)
register names... */
{
as_bad (_("Local symbol %s never defined."), decode_local_label_name (S_GET_NAME (symbolP)));
- } /* oops. */
+ } /* oops. */
/* Unhook it from the chain */
*symbolPP = symbol_next (symbolP);
@@ -578,7 +573,7 @@ obj_pre_write_hook (headers)
}
void
-DEFUN_VOID (s_sect)
+s_sect ()
{
/* Strip out the section name */
char *section_name;
@@ -641,7 +636,14 @@ DEFUN_VOID (s_sect)
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 ()
@@ -656,6 +658,33 @@ obj_aout_s_get_other (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;
@@ -663,30 +692,67 @@ obj_aout_s_get_desc (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,
obj_aout_frob_file,
+ 0, /* frob_file_before_adjust */
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 */
- 0, /* process_stab */
- 0, /* sec_sym_ok_for_reloc */
+ 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
-
-/* end of obj-aout.c */
diff --git a/contrib/binutils/gas/config/obj-aout.h b/contrib/binutils/gas/config/obj-aout.h
index d08302a..d91cc48 100644
--- a/contrib/binutils/gas/config/obj-aout.h
+++ b/contrib/binutils/gas/config/obj-aout.h
@@ -17,7 +17,7 @@
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. */
+ 02111-1307, USA. */
/* Tag to validate a.out object file format processing */
#define OBJ_AOUT 1
@@ -33,7 +33,7 @@
#else /* ! BFD_ASSEMBLER */
#ifndef VMS
-#include "aout_gnu.h" /* Needed to define struct nlist. Sigh. */
+#include "aout_gnu.h" /* Needed to define struct nlist. Sigh. */
#else
#include "a_out.h"
#endif
@@ -229,12 +229,12 @@ extern void obj_aout_frob_file PARAMS ((void));
typedef struct
{
struct exec header; /* a.out header */
- long string_table_size; /* names + '\0' + sizeof(int) */
+ long string_table_size; /* names + '\0' + sizeof (int) */
}
object_headers;
-/* line numbering stuff. */
+/* line numbering stuff. */
#define OBJ_EMIT_LINENO(a, b, c) {;}
struct fix;
@@ -248,5 +248,3 @@ void tc_aout_fix_to_chars PARAMS ((char *where, struct fix *fixP, relax_addressT
#define EMIT_SECTION_SYMBOLS 0
#define AOUT_STABS
-
-/* end of obj-aout.h */
diff --git a/contrib/binutils/gas/config/obj-coff.c b/contrib/binutils/gas/config/obj-coff.c
index a0847c4..e16e5df 100644
--- a/contrib/binutils/gas/config/obj-coff.c
+++ b/contrib/binutils/gas/config/obj-coff.c
@@ -30,6 +30,13 @@
#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
+
static void obj_coff_bss PARAMS ((int));
const char *s_get_name PARAMS ((symbolS * s));
static void obj_coff_ln PARAMS ((int));
@@ -204,7 +211,7 @@ obj_coff_weak (ignore)
char *name;
int c;
symbolS *symbolP;
-
+
do
{
name = input_line_pointer;
@@ -213,7 +220,7 @@ obj_coff_weak (ignore)
*input_line_pointer = c;
SKIP_WHITESPACE ();
-#ifdef BFD_ASSEMBLER
+#if defined BFD_ASSEMBLER || defined S_SET_WEAK
S_SET_WEAK (symbolP);
#endif
@@ -241,7 +248,7 @@ obj_coff_weak (ignore)
static void SA_SET_SYM_TAGNDX PARAMS ((symbolS *, symbolS *));
#define GET_FILENAME_STRING(X) \
-((char*)(&((X)->sy_symbol.ost_auxent->x_file.x_n.x_offset))[1])
+((char*) (&((X)->sy_symbol.ost_auxent->x_file.x_n.x_offset))[1])
/* @@ Ick. */
static segT
@@ -316,7 +323,7 @@ S_SET_STORAGE_CLASS (sym, val)
return val;
}
-/* Merge a debug symbol containing debug information into a normal symbol. */
+/* Merge a debug symbol containing debug information into a normal symbol. */
void
c_symbol_merge (debug, normal)
@@ -340,13 +347,13 @@ c_symbol_merge (debug, normal)
* sizeof (*SYM_AUXINFO (debug))));
}
- /* Move the debug flags. */
+ /* Move the debug flags. */
SF_SET_DEBUG_FIELD (normal, SF_GET_DEBUG_FIELD (debug));
}
void
c_dot_file_symbol (filename)
- char *filename;
+ const char *filename;
{
symbolS *symbolP;
@@ -401,7 +408,7 @@ coff_obj_symbol_new_hook (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;
@@ -411,7 +418,7 @@ coff_obj_symbol_new_hook (symbolP)
if (S_IS_STRING (symbolP))
SF_SET_STRING (symbolP);
-
+
if (S_IS_LOCAL (symbolP))
SF_SET_LOCAL (symbolP);
}
@@ -429,7 +436,7 @@ int coff_n_line_nos;
static void
add_lineno (frag, offset, num)
fragS *frag;
- int offset;
+ addressT offset;
int num;
{
struct line_no *new_line =
@@ -438,7 +445,7 @@ add_lineno (frag, offset, num)
{
abort ();
}
- if (num <= 0)
+ if (num <= 0)
{
/* Zero is used as an end marker in the file. */
as_warn (_("Line numbers must be positive integers\n"));
@@ -652,7 +659,7 @@ static void
obj_coff_endef (ignore)
int ignore ATTRIBUTE_UNUSED;
{
- symbolS *symbolP;
+ symbolS *symbolP = NULL;
/* DIM BUG FIX sac@cygnus.com */
dim_index = 0;
@@ -663,7 +670,7 @@ obj_coff_endef (ignore)
return;
} /* if not inside .def/.endef */
- /* Set the section number according to storage class. */
+ /* Set the section number according to storage class. */
switch (S_GET_STORAGE_CLASS (def_symbol_in_progress))
{
case C_STRTAG:
@@ -678,7 +685,7 @@ obj_coff_endef (ignore)
break;
case C_EFCN:
- SF_SET_LOCAL (def_symbol_in_progress); /* Do not emit this symbol. */
+ 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 */
@@ -693,7 +700,7 @@ obj_coff_endef (ignore)
{
switch (name[1])
{
- case 'b':
+ case 'b':
/* .bf */
if (! in_function ())
as_warn (_("`%s' symbol without preceding function"), name);
@@ -702,12 +709,12 @@ obj_coff_endef (ignore)
clear_function ();
break;
#ifdef TE_PE
- case 'e':
+ 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_SET_SYM_LNNO (def_symbol_in_progress,
(SA_GET_SYM_LNNO (def_symbol_in_progress)
+ coff_line_base));
break;
@@ -725,16 +732,49 @@ obj_coff_endef (ignore)
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:
@@ -768,11 +808,11 @@ obj_coff_endef (ignore)
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. */
+ 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. */
+ time. */
if (S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_EFCN
|| S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_LABEL
@@ -803,7 +843,7 @@ obj_coff_endef (ignore)
symbols. [loic] */
/* The debug entry (def_symbol_in_progress) is merged into the
- previous definition. */
+ previous definition. */
c_symbol_merge (def_symbol_in_progress, symbolP);
symbol_remove (def_symbol_in_progress, &symbol_rootP, &symbol_lastP);
@@ -816,7 +856,7 @@ obj_coff_endef (ignore)
{
/* For functions, and tags, and static symbols, the symbol
*must* be where the debug symbol appears. Move the
- existing symbol to the current place. */
+ 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)
{
@@ -846,7 +886,7 @@ obj_coff_endef (ignore)
if (symbolP == NULL)
{
/* That is, if this is the first time we've seen the
- function... */
+ function... */
symbol_table_insert (def_symbol_in_progress);
} /* definition follows debug */
} /* Create the line number entry pointing to the function being defined */
@@ -982,7 +1022,7 @@ obj_coff_tag (ignore)
#endif
/* Assume that the symbol referred to by .tag is always defined.
- This was a bad assumption. I've added find_or_make. xoxorich. */
+ 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)
@@ -1065,7 +1105,7 @@ obj_coff_val (ignore)
just below. */
}
/* Otherwise, it is the name of a non debug symbol and its value
- will be calculated later. */
+ will be calculated later. */
*input_line_pointer = name_end;
}
else
@@ -1079,7 +1119,7 @@ obj_coff_val (ignore)
void
coff_obj_read_begin_hook ()
{
- /* These had better be the same. Usually 18 bytes. */
+ /* These had better be the same. Usually 18 bytes. */
#ifndef BFD_HEADERS
know (sizeof (SYMENT) == sizeof (AUXENT));
know (SYMESZ == AUXESZ);
@@ -1087,7 +1127,6 @@ coff_obj_read_begin_hook ()
tag_init ();
}
-
symbolS *coff_last_function;
static symbolS *coff_last_bf;
@@ -1132,11 +1171,14 @@ coff_frob_symbol (symp, punt)
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))
&& real != symp)
{
c_symbol_merge (symp, real);
*punt = 1;
+ return;
}
if (!S_IS_DEFINED (symp) && !SF_GET_LOCAL (symp))
{
@@ -1196,7 +1238,7 @@ coff_frob_symbol (symp, punt)
if (SF_GET_FUNCTION (symp))
symbol_get_bfdsym (symp)->flags |= BSF_FUNCTION;
- /* more ... */
+ /* more ... */
}
/* Double check weak symbols. */
@@ -1353,7 +1395,7 @@ obj_coff_section (ignore)
char c;
char *name;
unsigned int exp;
- flagword flags;
+ flagword flags, oldflags;
asection *sec;
if (flag_mri)
@@ -1375,7 +1417,7 @@ obj_coff_section (ignore)
SKIP_WHITESPACE ();
exp = 0;
- flags = SEC_LOAD;
+ flags = SEC_NO_FLAGS;
if (*input_line_pointer == ',')
{
@@ -1420,18 +1462,35 @@ obj_coff_section (ignore)
sec = subseg_new (name, (subsegT) exp);
- if (flags != SEC_NO_FLAGS)
+ oldflags = bfd_get_section_flags (stdoutput, sec);
+ if (oldflags == SEC_NO_FLAGS)
{
- flagword oldflags;
+ /* 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;
- oldflags = bfd_get_section_flags (stdoutput, sec);
- oldflags &= SEC_LINK_ONCE | SEC_LINK_DUPLICATES;
- flags |= oldflags;
+#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 ()));
+ 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;
+ if ((flags ^ oldflags) & matchflags)
+ as_warn (_("Ignoring changed section attributes for %s"), name);
}
demand_empty_rest_of_line ();
@@ -1459,14 +1518,26 @@ coff_frob_section (sec)
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. */
+ 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)
{
- size = (size + mask) & ~mask;
- bfd_set_section_size (stdoutput, sec, size);
+ 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
@@ -1526,9 +1597,9 @@ obj_coff_init_stab_section (seg)
char *stabstr_name;
unsigned int stroff;
- /* Make space for this first symbol. */
+ /* Make space for this first symbol. */
p = frag_more (12);
- /* Zero it out. */
+ /* Zero it out. */
memset (p, 0, 12);
as_where (&file, (unsigned int *) NULL);
stabstr_name = (char *) alloca (strlen (seg->name) + 4);
@@ -1555,7 +1626,7 @@ symbol_dump ()
for (symbolP = symbol_rootP; symbolP; symbolP = symbol_next (symbolP))
{
- printf(_("0x%lx: \"%s\" type = %ld, class = %d, segment = %d\n"),
+ printf (_("0x%lx: \"%s\" type = %ld, class = %d, segment = %d\n"),
(unsigned long) symbolP,
S_GET_NAME(symbolP),
(long) S_GET_DATA_TYPE(symbolP),
@@ -1569,7 +1640,7 @@ symbol_dump ()
#else /* not BFD_ASSEMBLER */
#include "frags.h"
-/* This is needed because we include internal bfd things. */
+/* This is needed because we include internal bfd things. */
#include <time.h>
#include "libbfd.h"
@@ -1616,7 +1687,7 @@ int function_lineoff = -1; /* Offset in line#s where the last function
/* structure used to keep the filenames which
are too long around so that we can stick them
into the string table */
-struct filename_list
+struct filename_list
{
char *filename;
struct filename_list *next;
@@ -1641,22 +1712,18 @@ bfd *abfd;
static void fixup_segment PARAMS ((segment_info_type *segP,
segT this_segment_type));
-
static void fixup_mdeps PARAMS ((fragS *,
object_headers *,
segT));
-
static void fill_section PARAMS ((bfd * abfd,
object_headers *,
unsigned long *));
-
static int c_line_new PARAMS ((symbolS * symbol, long paddr,
int line_number,
fragS * frag));
-
static void w_symbols PARAMS ((bfd * abfd, char *where,
symbolS * symbol_rootP));
@@ -1717,7 +1784,6 @@ relax_align (address, alignment)
return (new_address - address);
}
-
segT
s_get_segment (x)
symbolS * x;
@@ -1760,6 +1826,7 @@ size_section (abfd, idx)
break;
case rs_align:
case rs_align_code:
+ case rs_align_test:
{
addressT off;
@@ -1780,7 +1847,6 @@ size_section (abfd, idx)
return size;
}
-
static unsigned int
count_entries_in_chain (idx)
unsigned int idx;
@@ -1986,7 +2052,6 @@ do_relocs_for (abfd, h, file_cursor)
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 postions
*/
@@ -2071,6 +2136,7 @@ fill_section (abfd, h, file_cursor)
case rs_fill:
case rs_align:
case rs_align_code:
+ case rs_align_test:
case rs_org:
if (frag->fr_fix)
{
@@ -2181,7 +2247,6 @@ coff_header_append (abfd, h)
}
}
-
char *
symbol_to_chars (abfd, where, symbolP)
bfd * abfd;
@@ -2232,7 +2297,7 @@ coff_obj_symbol_new_hook (symbolP)
char underscore = 0; /* Symbol has leading _ */
/* Effective symbol */
- /* Store the pointer in the offset. */
+ /* Store the pointer in the offset. */
S_SET_ZEROES (symbolP, 0L);
S_SET_DATA_TYPE (symbolP, T_NULL);
S_SET_STORAGE_CLASS (symbolP, 0);
@@ -2360,7 +2425,6 @@ obj_coff_def (what)
unsigned int dim_index;
-
static void
obj_coff_endef (ignore)
int ignore ATTRIBUTE_UNUSED;
@@ -2375,7 +2439,7 @@ obj_coff_endef (ignore)
return;
} /* if not inside .def/.endef */
- /* Set the section number according to storage class. */
+ /* Set the section number according to storage class. */
switch (S_GET_STORAGE_CLASS (def_symbol_in_progress))
{
case C_STRTAG:
@@ -2390,7 +2454,7 @@ obj_coff_endef (ignore)
break;
case C_EFCN:
- SF_SET_LOCAL (def_symbol_in_progress); /* Do not emit this symbol. */
+ 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 */
@@ -2411,7 +2475,7 @@ obj_coff_endef (ignore)
SF_SET_PROCESS (def_symbol_in_progress);
function_lineoff = -1;
}
- /* Value is always set to . */
+ /* 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;
@@ -2462,11 +2526,11 @@ obj_coff_endef (ignore)
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. */
+ 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. */
+ time. */
if (S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_EFCN
|| S_GET_STORAGE_CLASS (def_symbol_in_progress) == C_LABEL
@@ -2492,7 +2556,7 @@ obj_coff_endef (ignore)
previous definition. */
c_symbol_merge (def_symbol_in_progress, symbolP);
- /* FIXME-SOON Should *def_symbol_in_progress be free'd? xoxorich. */
+ /* FIXME-SOON Should *def_symbol_in_progress be free'd? xoxorich. */
def_symbol_in_progress = symbolP;
if (SF_GET_FUNCTION (def_symbol_in_progress)
@@ -2501,7 +2565,7 @@ obj_coff_endef (ignore)
{
/* For functions, and tags, and static symbols, the symbol
*must* be where the debug symbol appears. Move the
- existing symbol to the current place. */
+ 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)
{
@@ -2535,7 +2599,7 @@ obj_coff_endef (ignore)
if (symbolP == NULL)
{
/* That is, if this is the first time we've seen the
- function... */
+ function... */
symbol_table_insert (def_symbol_in_progress);
} /* definition follows debug */
} /* Create the line number entry pointing to the function being defined */
@@ -2682,7 +2746,7 @@ obj_coff_tag (ignore)
#endif
/* Assume that the symbol referred to by .tag is always defined.
- This was a bad assumption. I've added find_or_make. xoxorich. */
+ 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)
@@ -2764,7 +2828,7 @@ obj_coff_val (ignore)
just below. */
}
/* Otherwise, it is the name of a non debug symbol and
- its value will be calculated later. */
+ its value will be calculated later. */
*input_line_pointer = name_end;
/* FIXME: this is to avoid an error message in the
@@ -2802,7 +2866,7 @@ obj_coff_pe_handle_link_once (type)
void
coff_obj_read_begin_hook ()
{
- /* These had better be the same. Usually 18 bytes. */
+ /* These had better be the same. Usually 18 bytes. */
#ifndef BFD_HEADERS
know (sizeof (SYMENT) == sizeof (AUXENT));
know (SYMESZ == AUXESZ);
@@ -2857,7 +2921,7 @@ yank_symbols ()
/* Debug symbols do not need all this rubbish */
symbolS *real_symbolP;
- /* L* and C_EFCN symbols never merge. */
+ /* L* and C_EFCN symbols never merge. */
if (!SF_GET_LOCAL (symbolP)
&& !SF_GET_STATICS (symbolP)
&& S_GET_STORAGE_CLASS (symbolP) != C_LABEL
@@ -2866,12 +2930,12 @@ yank_symbols ()
&& real_symbolP != symbolP)
{
/* FIXME-SOON: where do dups come from?
- Maybe tag references before definitions? xoxorich. */
+ Maybe tag references before definitions? xoxorich. */
/* Move the debug data from the debug symbol to the
real symbol. Do NOT do the oposite (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. */
+ 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
@@ -2909,7 +2973,7 @@ yank_symbols ()
/* Mainly to speed up if not -g */
if (SF_GET_PROCESS (symbolP))
{
- /* Handle the nested blocks auxiliary info. */
+ /* Handle the nested blocks auxiliary info. */
if (S_GET_STORAGE_CLASS (symbolP) == C_BLOCK)
{
if (!strcmp (S_GET_NAME (symbolP), ".bb"))
@@ -2927,7 +2991,7 @@ yank_symbols ()
/* 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. */
+ entry. */
if (last_functionP == (symbolS *) 0 &&
SF_GET_FUNCTION (symbolP))
{
@@ -2938,7 +3002,7 @@ yank_symbols ()
S_SET_NUMBER_AUXILIARY (symbolP, 1);
} /* make it at least 1 */
- /* Clobber possible stale .dim information. */
+ /* 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,
@@ -2971,7 +3035,7 @@ yank_symbols ()
else if (SF_GET_TAG (symbolP))
{
/* First descriptor of a structure must point to
- the first slot after the structure description. */
+ the first slot after the structure description. */
last_tagP = symbolP;
}
@@ -3011,8 +3075,7 @@ yank_symbols ()
[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. */
-
+ endndx will still be 22 instead of 21. */
if (SF_GET_LOCAL (symbolP))
{
@@ -3086,7 +3149,6 @@ yank_symbols ()
}
-
static unsigned int
glue_symbols (head, tail)
symbolS **head;
@@ -3165,7 +3227,7 @@ crawl_symbols (h, abfd)
* undefined symbols at the end of the list.
*/
- /* Is there a .file symbol ? If not insert one at the beginning. */
+ /* Is there a .file symbol ? If not insert one at the beginning. */
if (symbol_rootP == NULL
|| S_GET_STORAGE_CLASS (symbol_rootP) != C_FILE)
{
@@ -3176,7 +3238,6 @@ crawl_symbols (h, abfd)
* 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 (segment_info[i].name,
@@ -3272,7 +3333,6 @@ do_linenos_for (abfd, h, file_cursor)
{
segment_info_type *s = segment_info + idx;
-
if (s->scnhdr.s_nlnno != 0)
{
struct lineno_list *line_ptr;
@@ -3301,7 +3361,6 @@ do_linenos_for (abfd, h, file_cursor)
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++;
@@ -3318,7 +3377,6 @@ do_linenos_for (abfd, h, file_cursor)
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 */
@@ -3359,7 +3417,6 @@ write_object_file ()
unsigned int addr;
abfd = bfd_openw (out_file_name, TARGET_FORMAT);
-
if (abfd == 0)
{
as_perror (_("FATAL: Can't create %s"), out_file_name);
@@ -3388,21 +3445,22 @@ write_object_file ()
md_do_align (SUB_SEGMENT_ALIGN (now_seg), (char *) NULL, 0, 0,
alignment_done);
#endif
- frag_align (SUB_SEGMENT_ALIGN (now_seg),
- subseg_text_p (now_seg) ? NOP_OPCODE : 0,
- 0);
+ if (subseg_text_p (now_seg))
+ frag_align_code (SUB_SEGMENT_ALIGN (now_seg), 0);
+ else
+ frag_align (SUB_SEGMENT_ALIGN (now_seg), 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);
@@ -3476,7 +3534,7 @@ write_object_file ()
}
/* Look for ".stab" segments and fill in their initial symbols
- correctly. */
+ correctly. */
for (i = SEG_E0; i < SEG_UNKNOWN; i++)
{
name = segment_info[i].name;
@@ -3537,7 +3595,7 @@ write_object_file ()
coff_header_append (abfd, &headers);
#if 0
/* Recent changes to write need this, but where it should
- go is up to Ken.. */
+ go is up to Ken.. */
if (bfd_close_all_done (abfd) == false)
as_fatal (_("Can't close %s: %s"), out_file_name,
bfd_errmsg (bfd_get_error ()));
@@ -3683,7 +3741,6 @@ obj_coff_section (ignore)
demand_empty_rest_of_line ();
}
-
static void
obj_coff_text (ignore)
int ignore ATTRIBUTE_UNUSED;
@@ -3691,7 +3748,6 @@ obj_coff_text (ignore)
subseg_new (".text", get_absolute_expression ());
}
-
static void
obj_coff_data (ignore)
int ignore ATTRIBUTE_UNUSED;
@@ -3733,7 +3789,7 @@ c_symbol_merge (debug, normal)
(unsigned int) (S_GET_NUMBER_AUXILIARY (debug) * AUXESZ));
} /* Move all the auxiliary information */
- /* Move the debug flags. */
+ /* Move the debug flags. */
SF_SET_DEBUG_FIELD (normal, SF_GET_DEBUG_FIELD (debug));
} /* c_symbol_merge() */
@@ -3763,7 +3819,6 @@ c_line_new (symbol, paddr, line_number, frag)
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;
@@ -3805,13 +3860,13 @@ c_dot_file_symbol (filename)
SA_SET_FILE_FNAME_ZEROS (symbolP, 0);
SA_SET_FILE_FNAME_OFFSET (symbolP, 1);
- if (filename_list_tail)
+ if (filename_list_tail)
filename_list_tail->next = f;
else
filename_list_head = f;
- filename_list_tail = f;
+ filename_list_tail = f;
}
- else
+ else
{
SA_SET_FILE_FNAME (symbolP, filename);
}
@@ -3930,7 +3985,7 @@ w_symbols (abfd, where, symbol_rootP)
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. */
+ to the string in memory but must be a file offset. */
register char *temp;
/* We can't fix the lnnoptr field in yank_symbols with the other
@@ -4042,6 +4097,7 @@ fixup_mdeps (frags, h, this_segment)
{
case rs_align:
case rs_align_code:
+ case rs_align_test:
case rs_org:
#ifdef HANDLE_ALIGN
HANDLE_ALIGN (frags);
@@ -4112,7 +4168,7 @@ fixup_segment (segP, this_segment_type)
if (fixP->fx_tcbit && SF_GET_CALLNAME (add_symbolP))
{
/* Relocation should be done via the associated 'bal' entry
- point symbol. */
+ point symbol. */
if (!SF_GET_BALNAME (tc_get_bal_of_call (add_symbolP)))
{
@@ -4210,7 +4266,7 @@ fixup_segment (segP, this_segment_type)
{
/* Difference of 2 symbols from same segment. Can't
make difference of 2 undefineds: 'value' means
- something different for N_UNDF. */
+ 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. */
@@ -4237,7 +4293,7 @@ fixup_segment (segP, this_segment_type)
}
else
{
- /* Different segments in subtraction. */
+ /* 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))
@@ -4246,7 +4302,7 @@ fixup_segment (segP, this_segment_type)
}
#ifdef DIFF_EXPR_OK
else if (S_GET_SEGMENT (sub_symbolP) == this_segment_type
-#if 0 /* Okay for 68k, at least... */
+#if 0 /* Okay for 68k, at least... */
&& !pcrel
#endif
)
@@ -4306,7 +4362,7 @@ fixup_segment (segP, this_segment_type)
the i386 are relaxed, this could only arise with a
call instruction. */
- pcrel = 0; /* Lie. Don't want further pcrel processing. */
+ pcrel = 0; /* Lie. Don't want further pcrel processing. */
if (!TC_FORCE_RELOCATION (fixP))
{
fixP->fx_addsy = NULL;
@@ -4332,7 +4388,6 @@ fixup_segment (segP, this_segment_type)
break;
default:
-
#if defined(TC_A29K) || (defined(TE_PE) && defined(TC_I386)) || defined(TC_M88K)
/* This really should be handled in the linker, but
backward compatibility forbids. */
@@ -4367,13 +4422,12 @@ fixup_segment (segP, this_segment_type)
/* 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 <phdm@info.ucl.ac.be>. */
+ Philippe De Muyter <phdm@info.ucl.ac.be>. */
if (S_IS_COMMON (add_symbolP))
add_number += S_GET_VALUE (add_symbolP);
#endif
break;
-
} /* switch on symbol seg */
} /* if not in local seg */
} /* if there was a + symbol */
@@ -4452,7 +4506,7 @@ fixup_segment (segP, this_segment_type)
(unsigned long) (fragP->fr_address + where));
#endif
} /* not a bit fix */
- } /* For each fixS in this segment. */
+ } /* For each fixS in this segment. */
} /* fixup_segment() */
#endif
@@ -4468,9 +4522,9 @@ obj_coff_init_stab_section (seg)
char *stabstr_name;
unsigned int stroff;
- /* Make space for this first symbol. */
+ /* Make space for this first symbol. */
p = frag_more (12);
- /* Zero it out. */
+ /* Zero it out. */
memset (p, 0, 12);
as_where (&file, (unsigned int *) NULL);
stabstr_name = (char *) alloca (strlen (segment_info[seg].name) + 4);
@@ -4495,7 +4549,7 @@ adjust_stab_section(abfd, seg)
int i, strsz = 0, nsyms;
fragS *frag = segment_info[seg].frchainP->frch_root;
- /* Look for the associated string table section. */
+ /* Look for the associated string table section. */
secname = segment_info[seg].name;
name = (char *) alloca (strlen (secname) + 4);
@@ -4512,14 +4566,14 @@ adjust_stab_section(abfd, seg)
}
}
- /* If we found the section, get its size. */
+ /* 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. */
+ symbol, and collect a pointer to it. */
while (frag && frag->fr_fix < 12)
frag = frag->fr_next;
assert (frag != 0);
@@ -4527,7 +4581,7 @@ adjust_stab_section(abfd, seg)
assert (p != 0);
/* Write in the number of stab symbols and the size of the string
- table. */
+ 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);
}
@@ -4582,6 +4636,7 @@ const pseudo_typeS coff_pseudo_table[] =
/* 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 ()
@@ -4589,23 +4644,38 @@ 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 */
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 */
diff --git a/contrib/binutils/gas/config/obj-coff.h b/contrib/binutils/gas/config/obj-coff.h
index f60ae36..8cf7999 100644
--- a/contrib/binutils/gas/config/obj-coff.h
+++ b/contrib/binutils/gas/config/obj-coff.h
@@ -39,7 +39,7 @@
#include "bfd.h"
/* This internal_lineno crap is to stop namespace pollution from the
- bfd internal coff headerfile. */
+ bfd internal coff headerfile. */
#define internal_lineno bfd_internal_lineno
#include "coff/internal.h"
#undef internal_lineno
@@ -149,6 +149,11 @@
#define TARGET_FORMAT "coff-tic30"
#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"
@@ -250,7 +255,7 @@ extern void obj_coff_section PARAMS ((int));
/* 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. */
+/* 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));
@@ -294,13 +299,13 @@ extern void SA_SET_SYM_ENDNDX PARAMS ((symbolS *, symbolS *));
* differently.
*/
-#define SF_I960_MASK (0x000001ff) /* Bits 0-8 are used by the i960 port. */
+#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_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 */
@@ -314,8 +319,8 @@ extern void SA_SET_SYM_ENDNDX PARAMS ((symbolS *, symbolS *));
#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. */
+#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))
@@ -341,7 +346,7 @@ extern void SA_SET_SYM_ENDNDX PARAMS ((symbolS *, symbolS *));
/* 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_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)
@@ -368,8 +373,7 @@ 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 ((char *filename));
+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 *));
@@ -430,10 +434,9 @@ hey ! Where is the C_LEAFSTAT definition ? i960 - coff support is depending on i
extern const segT N_TYPE_seg[];
-/* Magic number of paged executable. */
+/* Magic number of paged executable. */
#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE 0x8300
-
/* SYMBOL TABLE */
/* Symbol table entry data type */
@@ -442,7 +445,7 @@ typedef struct
{
/* Basic symbol */
struct internal_syment ost_entry;
- /* Auxiliary entry. */
+ /* Auxiliary entry. */
union internal_auxent ost_auxent[OBJ_COFF_MAX_AUXENTRIES];
/* obj_coff internal use only flags */
unsigned int ost_flags;
@@ -502,7 +505,7 @@ typedef struct
*/
#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. */
+/* 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. */
@@ -517,7 +520,7 @@ typedef struct
/* Accessors */
/* The name of the symbol */
-#define S_GET_NAME(s) ((char*)(s)->sy_symbol.ost_entry.n_offset)
+#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 */
@@ -531,7 +534,7 @@ typedef struct
/* Modifiers */
/* Set the name of the symbol */
-#define S_SET_NAME(s,v) ((s)->sy_symbol.ost_entry.n_offset = (unsigned long)(v))
+#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 */
@@ -591,13 +594,13 @@ typedef struct
* differently.
*/
-#define SF_I960_MASK (0x000001ff) /* Bits 0-8 are used by the i960 port. */
+#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_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 */
@@ -611,9 +614,9 @@ typedef struct
#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_GET_SEGMENT (0x00200000) /* Get the section of the forward symbol. */
#define SF_ADJ_LNNOPTR (0x00400000) /* Has a lnnoptr */
-/* All other bits are unused. */
+/* All other bits are unused. */
/* Accessors */
#define SF_GET(s) ((s)->sy_symbol.ost_flags)
@@ -639,7 +642,7 @@ typedef struct
/* 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_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)
@@ -674,31 +677,31 @@ typedef struct
#endif /* OBJ_COFF_OMIT_OPTIONAL_HEADER */
#define H_GET_FILE_SIZE(h) \
- (long)(FILHSZ + OBJ_COFF_AOUTHDRSZ + \
+ (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 + \
+ (long) (FILHSZ + OBJ_COFF_AOUTHDRSZ + \
H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ)
#define H_GET_DATA_FILE_OFFSET(h) \
- (long)(FILHSZ + OBJ_COFF_AOUTHDRSZ + \
+ (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 + \
+ (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 + \
+ (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 + \
+ (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))
@@ -728,11 +731,11 @@ typedef struct
#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)\
+#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) \
+#define H_GET_HEADER_SIZE(h) (sizeof (FILHDR) \
+ (H_GET_NUMBER_OF_SECTIONS(h) * SCNHSZ))
#endif /* OBJ_COFF_OMIT_OPTIONAL_HEADER */
@@ -767,17 +770,15 @@ typedef struct
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) */
+ 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. */
+ bytes. */
long lineno_size; /* Size of the line number information
table in bytes */
} object_headers;
-
-
struct lineno_list
{
struct bfd_internal_lineno line;
@@ -785,9 +786,6 @@ struct lineno_list
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)
diff --git a/contrib/binutils/gas/config/obj-ecoff.c b/contrib/binutils/gas/config/obj-ecoff.c
index 767dc58..3f80e7d 100644
--- a/contrib/binutils/gas/config/obj-ecoff.c
+++ b/contrib/binutils/gas/config/obj-ecoff.c
@@ -34,6 +34,7 @@
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.
@@ -84,7 +85,7 @@ const pseudo_typeS obj_pseudo_table[] =
{ "extern", ecoff_directive_extern, 0 },
#ifndef TC_MIPS
- /* For TC_MIPS, tc-mips.c adds this. */
+ /* For TC_MIPS, tc-mips.c adds this. */
{ "weakext", ecoff_directive_weakext, 0 },
#endif
@@ -290,26 +291,44 @@ 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 */
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,
+ ecoff_symbol_new_hook
};
diff --git a/contrib/binutils/gas/config/obj-elf.c b/contrib/binutils/gas/config/obj-elf.c
index 21fd0fa..d56eaa9 100644
--- a/contrib/binutils/gas/config/obj-elf.c
+++ b/contrib/binutils/gas/config/obj-elf.c
@@ -17,7 +17,7 @@
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. */
+ 02111-1307, USA. */
#define OBJ_HEADER "obj-elf.h"
#include "as.h"
@@ -54,9 +54,12 @@ static bfd_vma elf_s_get_size PARAMS ((symbolS *));
static void elf_s_set_size PARAMS ((symbolS *, bfd_vma));
static bfd_vma elf_s_get_align PARAMS ((symbolS *));
static void elf_s_set_align PARAMS ((symbolS *, bfd_vma));
+static void elf_s_set_other PARAMS ((symbolS *, int));
static void elf_copy_symbol_attributes PARAMS ((symbolS *, symbolS *));
static int elf_sec_sym_ok_for_reloc PARAMS ((asection *));
static void adjust_stab_sections PARAMS ((bfd *, asection *, PTR));
+static int elf_separate_stab_sections PARAMS ((void));
+static void elf_init_stab_section PARAMS ((segT));
#ifdef NEED_ECOFF_DEBUG
static boolean elf_get_extr PARAMS ((asymbol *, EXTR *));
@@ -72,8 +75,6 @@ static void obj_elf_weak PARAMS ((int));
static void obj_elf_local PARAMS ((int));
static void obj_elf_visibility PARAMS ((int));
static void obj_elf_symver PARAMS ((int));
-static void obj_elf_vtable_inherit PARAMS ((int));
-static void obj_elf_vtable_entry PARAMS ((int));
static void obj_elf_subsection PARAMS ((int));
static void obj_elf_popsection PARAMS ((int));
@@ -95,7 +96,7 @@ static const pseudo_typeS elf_pseudo_table[] =
{"version", obj_elf_version, 0},
{"weak", obj_elf_weak, 0},
- /* These define symbol visibility. */
+ /* These define symbol visibility. */
{"internal", obj_elf_visibility, STV_INTERNAL},
{"hidden", obj_elf_visibility, STV_HIDDEN},
{"protected", obj_elf_visibility, STV_PROTECTED},
@@ -110,10 +111,10 @@ static const pseudo_typeS elf_pseudo_table[] =
{"subsection", obj_elf_subsection, 0},
/* These are GNU extensions to aid in garbage collecting C++ vtables. */
- {"vtable_inherit", obj_elf_vtable_inherit, 0},
- {"vtable_entry", obj_elf_vtable_entry, 0},
+ {"vtable_inherit", (void (*) PARAMS ((int))) &obj_elf_vtable_inherit, 0},
+ {"vtable_entry", (void (*) PARAMS ((int))) &obj_elf_vtable_entry, 0},
- /* These are used for dwarf. */
+ /* These are used for dwarf. */
{"2byte", cons, 2},
{"4byte", cons, 4},
{"8byte", cons, 8},
@@ -234,6 +235,14 @@ elf_s_get_other (sym)
}
static void
+elf_s_set_other (sym, other)
+ symbolS *sym;
+ int other;
+{
+ S_SET_OTHER (sym, other);
+}
+
+static void
elf_copy_symbol_attributes (dest, src)
symbolS *dest, *src;
{
@@ -249,7 +258,7 @@ elf_sec_sym_ok_for_reloc (sec)
void
elf_file_symbol (s)
- char *s;
+ const char *s;
{
symbolS *sym;
@@ -533,7 +542,6 @@ obj_elf_visibility (visibility)
demand_empty_rest_of_line ();
}
-
static segT previous_section;
static int previous_subsection;
@@ -546,7 +554,6 @@ struct section_stack
static struct section_stack *section_stack;
-
/* Handle the .section pseudo-op. This code supports two different
syntaxes.
@@ -617,8 +624,10 @@ obj_elf_change_section (name, type, attr, push)
char *name;
int type, attr, push;
{
- int new_sec;
+ asection *old_sec;
segT sec;
+ flagword flags;
+ int i;
#ifdef md_flush_pending_output
md_flush_pending_output ();
@@ -639,49 +648,57 @@ obj_elf_change_section (name, type, attr, push)
previous_section = now_seg;
previous_subsection = now_subseg;
- new_sec = bfd_get_section_by_name (stdoutput, name) == NULL;
+ old_sec = bfd_get_section_by_name (stdoutput, name);
sec = subseg_new (name, 0);
- if (new_sec)
- {
- flagword flags;
- symbolS *secsym;
- int i;
-
- /* See if this is one of the special sections. */
- for (i = 0; special_sections[i].name != NULL; i++)
- if (strcmp (name, special_sections[i].name) == 0)
- {
- if (type == SHT_NULL)
- type = special_sections[i].type;
- else if (type != special_sections[i].type)
- as_warn (_("Setting incorrect section type for %s"), name);
-
- if ((attr &~ special_sections[i].attributes) != 0)
+ /* See if this is one of the special sections. */
+ for (i = 0; special_sections[i].name != NULL; i++)
+ if (strcmp (name, special_sections[i].name) == 0)
+ {
+ if (type == SHT_NULL)
+ type = special_sections[i].type;
+ else if (type != special_sections[i].type)
+ {
+ if (old_sec == NULL)
+ {
+ as_warn (_("Setting incorrect section type for %s"), name);
+ }
+ else
{
- /* As a GNU extension, we permit a .note section to be
- allocatable. If the linker sees an allocateable .note
- section, it will create a PT_NOTE segment in the output
- file. */
- if (strcmp (name, ".note") != 0
- || attr != SHF_ALLOC)
- as_warn (_("Setting incorrect section attributes for %s"),
- name);
+ as_warn (_("Ignoring incorrect section type for %s"), name);
+ type = special_sections[i].type;
}
- attr |= special_sections[i].attributes;
- break;
}
-
- /* 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));
+ if ((attr &~ special_sections[i].attributes) != 0
+ && old_sec == NULL)
+ {
+ /* As a GNU extension, we permit a .note section to be
+ allocatable. If the linker sees an allocateable .note
+ section, it will create a PT_NOTE segment in the output
+ file. */
+ if (strcmp (name, ".note") != 0
+ || attr != SHF_ALLOC)
+ as_warn (_("Setting incorrect section attributes for %s"),
+ name);
+ }
+ attr |= special_sections[i].attributes;
+ break;
+ }
+
+ /* 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));
#ifdef md_elf_section_flags
- flags = md_elf_section_flags (flags, attr, type);
+ 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;
@@ -695,9 +712,19 @@ obj_elf_change_section (name, type, attr, push)
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))
+ as_warn (_("Ignoring changed section attributes for %s"), name);
+ }
#ifdef md_elf_section_change_hook
- md_elf_section_change_hook ();
+ md_elf_section_change_hook ();
#endif
}
@@ -802,7 +829,7 @@ obj_elf_section (push)
char mri_type;
#ifdef md_flush_pending_output
- md_flush_pending_output ();
+ md_flush_pending_output ();
#endif
previous_section = now_seg;
@@ -1054,7 +1081,7 @@ obj_elf_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. */
+ delightful bug, so we are not being incompatible here. */
new_logical_line ((char *) NULL, (int) (get_absolute_expression ()));
demand_empty_rest_of_line ();
}
@@ -1080,14 +1107,6 @@ obj_elf_symver (ignore)
*input_line_pointer = c;
- if (symbol_get_obj (sym)->versioned_name != NULL)
- {
- as_bad (_("multiple .symver directives for symbol `%s'"),
- S_GET_NAME (sym));
- ignore_rest_of_line ();
- return;
- }
-
SKIP_WHITESPACE ();
if (*input_line_pointer != ',')
{
@@ -1106,16 +1125,34 @@ obj_elf_symver (ignore)
*input_line_pointer++ = c;
}
- symbol_get_obj (sym)->versioned_name = xstrdup (name);
+ if (symbol_get_obj (sym)->versioned_name == NULL)
+ {
+ symbol_get_obj (sym)->versioned_name = xstrdup (name);
- *input_line_pointer = c;
+ *input_line_pointer = c;
- if (strchr (symbol_get_obj (sym)->versioned_name, ELF_VER_CHR) == NULL)
+ 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
{
- 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;
+ 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 ();
@@ -1125,7 +1162,7 @@ obj_elf_symver (ignore)
to the linker the hierarchy in which a particular table resides. The
syntax is ".vtable_inherit CHILDNAME, PARENTNAME". */
-static void
+struct fix *
obj_elf_vtable_inherit (ignore)
int ignore ATTRIBUTE_UNUSED;
{
@@ -1158,7 +1195,7 @@ obj_elf_vtable_inherit (ignore)
{
as_bad ("expected comma after name in .vtable_inherit");
ignore_rest_of_line ();
- return;
+ return NULL;
}
++input_line_pointer;
@@ -1185,19 +1222,19 @@ obj_elf_vtable_inherit (ignore)
demand_empty_rest_of_line ();
if (bad)
- return;
+ return NULL;
assert (symbol_get_value_expression (csym)->X_op == O_constant);
- fix_new (symbol_get_frag (csym),
- symbol_get_value_expression (csym)->X_add_number, 0, psym, 0, 0,
- BFD_RELOC_VTABLE_INHERIT);
+ 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". */
-static void
+struct fix *
obj_elf_vtable_entry (ignore)
int ignore ATTRIBUTE_UNUSED;
{
@@ -1219,7 +1256,7 @@ obj_elf_vtable_entry (ignore)
{
as_bad ("expected comma after name in .vtable_entry");
ignore_rest_of_line ();
- return;
+ return NULL;
}
++input_line_pointer;
@@ -1228,10 +1265,10 @@ obj_elf_vtable_entry (ignore)
offset = get_absolute_expression ();
- fix_new (frag_now, frag_now_fix (), 0, sym, offset, 0,
- BFD_RELOC_VTABLE_ENTRY);
-
demand_empty_rest_of_line ();
+
+ return fix_new (frag_now, frag_now_fix (), 0, sym, offset, 0,
+ BFD_RELOC_VTABLE_ENTRY);
}
void
@@ -1277,7 +1314,7 @@ obj_elf_version (ignore)
SKIP_WHITESPACE ();
if (*input_line_pointer == '\"')
{
- ++input_line_pointer; /* -> 1st char of string. */
+ ++input_line_pointer; /* -> 1st char of string. */
name = input_line_pointer;
while (is_a_char (c = next_char_of_string ()))
@@ -1370,7 +1407,7 @@ obj_elf_size (ignore)
}
/* Handle the ELF .type pseudo-op. This sets the type of a symbol.
- There are four syntaxes:
+ There are five syntaxes:
The first (used on Solaris) is
.type SYM,#function
@@ -1380,6 +1417,8 @@ obj_elf_size (ignore)
.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
@@ -1391,10 +1430,12 @@ obj_elf_type (ignore)
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 ();
@@ -1404,6 +1445,7 @@ obj_elf_type (ignore)
SKIP_WHITESPACE ();
if ( *input_line_pointer == '#'
|| *input_line_pointer == '@'
+ || *input_line_pointer == '"'
|| *input_line_pointer == '%')
++input_line_pointer;
@@ -1417,12 +1459,19 @@ obj_elf_type (ignore)
else if (strcmp (typename, "object") == 0
|| strcmp (typename, "STT_OBJECT") == 0)
type = BSF_OBJECT;
+#ifdef md_elf_symbol_type
+ else if ((type = md_elf_symbol_type (typename, sym, elfsym)) != -1)
+ ;
+#endif
else
as_bad (_("ignoring unrecognized symbol type \"%s\""), typename);
*input_line_pointer = c;
- symbol_get_bfdsym (sym)->flags |= type;
+ if (*input_line_pointer == '"')
+ ++input_line_pointer;
+
+ elfsym->symbol.flags |= type;
demand_empty_rest_of_line ();
}
@@ -1471,9 +1520,9 @@ obj_elf_init_stab_section (seg)
UnixWare ar crashes. */
bfd_set_section_alignment (stdoutput, seg, 2);
- /* Make space for this first symbol. */
+ /* Make space for this first symbol. */
p = frag_more (12);
- /* Zero it out. */
+ /* Zero it out. */
memset (p, 0, 12);
as_where (&file, (unsigned int *) NULL);
stabstr_name = (char *) alloca (strlen (segment_name (seg)) + 4);
@@ -1605,6 +1654,11 @@ elf_frob_symbol (symp, puntp)
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
@@ -1618,13 +1672,9 @@ elf_frob_symbol (symp, puntp)
if (! S_IS_DEFINED (symp))
{
- char *p;
-
/* Verify that the name isn't using the @@ syntax--this is
reserved for definitions of the default version to link
against. */
- p = strchr (sy_obj->versioned_name, ELF_VER_CHR);
- know (p != NULL);
if (p[1] == ELF_VER_CHR)
{
as_bad (_("invalid attempt to declare external version name as default in symbol `%s'"),
@@ -1635,36 +1685,50 @@ elf_frob_symbol (symp, puntp)
}
else
{
- symbolS *symp2;
+ 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. */
+ /* 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);
+ symp2 = symbol_find_or_make (sy_obj->versioned_name);
- /* Now we act as though we saw symp2 = sym. */
+ /* Now we act as though we saw symp2 = sym. */
- S_SET_SEGMENT (symp2, S_GET_SEGMENT (symp));
+ 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));
+ /* 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));
+ symbol_set_frag (symp2, symbol_get_frag (symp));
- /* This will copy over the size information. */
- copy_symbol_attributes (symp2, symp);
+ /* This will copy over the size information. */
+ copy_symbol_attributes (symp2, symp);
- if (S_IS_WEAK (symp))
- S_SET_WEAK (symp2);
+ if (S_IS_WEAK (symp))
+ S_SET_WEAK (symp2);
- if (S_IS_EXTERNAL (symp))
- S_SET_EXTERNAL (symp2);
+ if (S_IS_EXTERNAL (symp))
+ S_SET_EXTERNAL (symp2);
+ }
}
}
@@ -1715,6 +1779,42 @@ elf_frob_file ()
#endif
}
+/* It removes any unneeded versioned symbols from the symbol table. */
+
+void
+elf_frob_file_before_adjust ()
+{
+ if (symbol_rootP)
+ {
+ symbolS *symp;
+
+ for (symp = symbol_rootP; symp; symp = symbol_next (symp))
+ if (symbol_get_obj (symp)->versioned_name)
+ {
+ if (!S_IS_DEFINED (symp))
+ {
+ 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);
+ }
+ }
+ }
+}
+
/* 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
@@ -1890,18 +1990,45 @@ sco_id ()
#endif /* SCO_ELF */
+static int
+elf_separate_stab_sections ()
+{
+#ifdef NEED_ECOFF_DEBUG
+ return (!ECOFF_DEBUGGING);
+#else
+ return 1;
+#endif
+}
+
+static void
+elf_init_stab_section (seg)
+ 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,
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,
@@ -1910,6 +2037,8 @@ const struct format_ops elf_format_ops =
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
@@ -1918,5 +2047,5 @@ const struct format_ops elf_format_ops =
0, /* ecoff_set_ext */
#endif
elf_obj_read_begin_hook,
- elf_obj_symbol_new_hook,
+ elf_obj_symbol_new_hook
};
diff --git a/contrib/binutils/gas/config/obj-elf.h b/contrib/binutils/gas/config/obj-elf.h
index 722c5fd..43daf64 100644
--- a/contrib/binutils/gas/config/obj-elf.h
+++ b/contrib/binutils/gas/config/obj-elf.h
@@ -6,7 +6,7 @@
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)
+ 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,
@@ -19,7 +19,6 @@
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. */
@@ -28,11 +27,14 @@
#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>
+#include "bfd.h"
#define BYTES_IN_WORD 4 /* for now */
#include "bfd/elf-bfd.h"
@@ -40,7 +42,7 @@
#include "targ-cpu.h"
#ifdef TC_ALPHA
-#define ECOFF_DEBUGGING alpha_flag_mdebug
+#define ECOFF_DEBUGGING (alpha_flag_mdebug > 0)
extern int alpha_flag_mdebug;
#endif
@@ -83,16 +85,26 @@ struct elf_obj_sy
#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. */
+#define TARGET_SYMBOL_FIELDS ELF_TARGET_SYMBOL_FIELDS
+
+/* #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 PARAMS ((void));
/* should be conditional on address size! */
-#define elf_symbol(asymbol) ((elf_symbol_type *)(&(asymbol)->the_bfd))
+#define elf_symbol(asymbol) ((elf_symbol_type *) (&(asymbol)->the_bfd))
#ifndef S_GET_SIZE
#define S_GET_SIZE(S) \
@@ -128,13 +140,20 @@ extern asection *gdb_section;
#endif
extern void elf_frob_file PARAMS ((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 PARAMS ((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 PARAMS ((void));
+#ifndef obj_app_file
#define obj_app_file elf_file_symbol
-extern void elf_file_symbol PARAMS ((char *));
+#endif
+extern void elf_file_symbol PARAMS ((const char *));
extern void obj_elf_section_change_hook PARAMS ((void));
@@ -144,6 +163,8 @@ extern void obj_elf_version PARAMS ((int));
extern void obj_elf_common PARAMS ((int));
extern void obj_elf_data PARAMS ((int));
extern void obj_elf_text PARAMS ((int));
+extern struct fix *obj_elf_vtable_inherit PARAMS ((int));
+extern struct fix *obj_elf_vtable_entry PARAMS ((int));
/* BFD wants to write the udata field, which is a no-no for the
globally defined sections. */
@@ -189,6 +210,12 @@ do \
while (0)
#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
@@ -206,7 +233,7 @@ extern void obj_elf_init_stab_section PARAMS ((segT));
#undef INIT_STAB_SECTION
#define INIT_STAB_SECTION(seg) \
- ((void)(ECOFF_DEBUGGING ? 0 : (obj_elf_init_stab_section (seg), 0)))
+ ((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) \
@@ -214,6 +241,8 @@ extern void obj_elf_init_stab_section PARAMS ((segT));
ecoff_stab ((seg), (what), (string), (type), (other), (desc))
#endif /* ECOFF_DEBUGGING */
+#endif /* SEPARATE_STAB_SECTIONS not defined. */
+
extern void elf_frob_symbol PARAMS ((symbolS *, int *));
#ifndef obj_frob_symbol
#define obj_frob_symbol(symp, punt) elf_frob_symbol (symp, &punt)
diff --git a/contrib/binutils/gas/config/obj-generic.h b/contrib/binutils/gas/config/obj-generic.h
index dc18e43..00e4638 100644
--- a/contrib/binutils/gas/config/obj-generic.h
+++ b/contrib/binutils/gas/config/obj-generic.h
@@ -1,5 +1,5 @@
/* This file is obj-generic.h
- Copyright (C) 1987-1992 Free Software Foundation, Inc.
+ Copyright (C) 1987-1992, 2000 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -14,18 +14,19 @@
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. */
+ 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-generic.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 an obj specific macro off which target cpu back ends may key. */
#define OBJ_GENERIC 1
-/* include whatever target cpu is appropriate. */
+/* include whatever target cpu is appropriate. */
#include "targ-cpu.h"
/*
@@ -65,10 +66,9 @@ typedef void *object_headers;
/* symbols may or may not be defined */
#define S_IS_DEFINED(s) (0)
-
#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_EMIT_LINENO(a,b,c) /* must be *something*. This no-op's it out. */
/*
* Local Variables:
@@ -76,5 +76,3 @@ typedef void *object_headers;
* fill-column: 131
* End:
*/
-
-/* end of obj-generic.h */
diff --git a/contrib/binutils/gas/config/obj-ieee.c b/contrib/binutils/gas/config/obj-ieee.c
index 30a0798..35b49da 100644
--- a/contrib/binutils/gas/config/obj-ieee.c
+++ b/contrib/binutils/gas/config/obj-ieee.c
@@ -1,5 +1,6 @@
/* obj-format for ieee-695 records.
- Copyright (C) 1991, 92, 93, 94, 95, 1997, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1991, 92, 93, 94, 95, 97, 98, 2000
+ Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -16,19 +17,12 @@
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. */
+ 02111-1307, USA. */
+/* Created by Steve Chamberlain <steve@cygnus.com>. */
-/*
- created by
-
- steve chamberlain steve@cygnus.com
- */
-
-/*
- this will hopefully become the port through which bfd and gas talk,
- for the moment, only ieee is known to work well.
- */
+/* 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"
@@ -38,11 +32,15 @@
bfd *abfd;
-/* How many addresses does the .align take? */
+/* How many addresses does the .align take? */
+
static relax_addressT
relax_align (address, alignment)
- register relax_addressT address; /* Address now. */
- register long alignment; /* Alignment (binary). */
+ /* Address now. */
+ register relax_addressT address;
+
+ /* Alignment (binary). */
+ register long alignment;
{
relax_addressT mask;
relax_addressT new_address;
@@ -50,18 +48,20 @@ relax_align (address, alignment)
mask = ~((~0) << alignment);
new_address = (address + mask) & (~mask);
return (new_address - address);
-} /* relax_align() */
+}
+
+/* Calculate the size of the frag chain
+ and create a bfd section to contain all of it. */
-/* calculate the size of the frag chain and create a bfd section
- to contain all of it */
static void
-DEFUN (size_section, (abfd, idx),
- bfd * abfd AND
- unsigned int idx)
+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)
@@ -92,25 +92,28 @@ DEFUN (size_section, (abfd, idx),
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 */
+ 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 */
+/* Run through a frag chain and write out the data to go with it. */
+
static void
-DEFUN (fill_section, (abfd, idx),
- bfd * abfd AND
- unsigned int idx)
+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;
@@ -156,16 +159,16 @@ DEFUN (fill_section, (abfd, idx),
}
}
-/* Count the relocations in a chain */
+/* Count the relocations in a chain. */
static unsigned int
-DEFUN (count_entries_in_chain, (idx),
- unsigned int idx)
+count_entries_in_chain (idx)
+ unsigned int idx;
{
unsigned int nrelocs;
fixS *fixup_ptr;
- /* Count the relocations */
+ /* Count the relocations. */
fixup_ptr = segment_info[idx].fix_root;
nrelocs = 0;
while (fixup_ptr != (fixS *) NULL)
@@ -176,10 +179,11 @@ DEFUN (count_entries_in_chain, (idx),
return nrelocs;
}
-/* output all the relocations for a section */
+/* Output all the relocations for a section. */
+
void
-DEFUN (do_relocs_for, (idx),
- unsigned int idx)
+do_relocs_for (idx)
+ unsigned int idx;
{
unsigned int nrelocs;
arelent **reloc_ptr_vector;
@@ -188,11 +192,13 @@ DEFUN (do_relocs_for, (idx),
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_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;
@@ -203,8 +209,10 @@ DEFUN (do_relocs_for, (idx),
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();
+#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);
@@ -218,7 +226,7 @@ DEFUN (do_relocs_for, (idx),
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. */
+ being pc relative and turns into an absolute relocation. */
if (s)
{
if ((s->flags & BSF_UNDEFINED) == 0)
@@ -233,10 +241,9 @@ DEFUN (do_relocs_for, (idx),
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;
- }
+ /* This is a pcrel relocation, the addend should
+ be adjusted. */
+ to->addend -= to->address + 1;
}
else
{
@@ -245,33 +252,30 @@ DEFUN (do_relocs_for, (idx),
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;
- }
+ /* This is a pcrel relocation, the addend should
+ be adjusted. */
+ to->addend -= to->address - 1;
}
-
}
else
- {
- to->section = 0;
- }
+ to->section = 0;
ptrs++;
from = from->fx_next;
}
- /* attatch to the section */
+ /* Attatch to the section. */
section->orelocation = reloc_ptr_vector;
section->reloc_count = nrelocs;
section->flags |= SEC_LOAD;
}
}
-/* do the symbols.. */
+/* Do the symbols. */
+
static void
-DEFUN (do_symbols, (abfd),
- bfd * abfd)
+do_symbols (abfd)
+ bfd *abfd;
{
extern symbolS *symbol_rootP;
symbolS *ptr;
@@ -280,7 +284,6 @@ DEFUN (do_symbols, (abfd),
unsigned int count = 0;
unsigned int index;
-
for (ptr = symbol_rootP;
ptr != (symbolS *) NULL;
ptr = ptr->sy_next)
@@ -291,9 +294,7 @@ DEFUN (do_symbols, (abfd),
(asection *) (segment_info[ptr->sy_symbol.seg].user_stuff);
S_SET_VALUE (ptr, S_GET_VALUE (ptr) + ptr->sy_frag->fr_address);
if (ptr->sy_symbol.sy.flags == 0)
- {
- ptr->sy_symbol.sy.flags = BSF_LOCAL;
- }
+ ptr->sy_symbol.sy.flags = BSF_LOCAL;
}
else
{
@@ -330,18 +331,15 @@ DEFUN (do_symbols, (abfd),
}
/* The generic as->bfd converter. Other backends may have special case
- code */
+ code. */
void
-DEFUN_VOID (bfd_as_write_hook)
+bfd_as_write_hook ()
{
int i;
for (i = SEG_E0; i < SEG_UNKNOWN; i++)
- {
- size_section (abfd, i);
- }
-
+ size_section (abfd, i);
for (i = SEG_E0; i < SEG_UNKNOWN; i++)
fill_section (abfd, i);
@@ -350,7 +348,6 @@ DEFUN_VOID (bfd_as_write_hook)
for (i = SEG_E0; i < SEG_UNKNOWN; i++)
do_relocs_for (i);
-
}
S_SET_SEGMENT (x, y)
@@ -437,7 +434,8 @@ obj_ieee_section (ignore)
char *p = input_line_pointer;
char *s = p;
int i;
- /* Look up the name, if it doesn't exist, make it */
+
+ /* Look up the name, if it doesn't exist, make it. */
while (*p && *p != ' ' && *p != ',' && !is_end_of_line[*p])
{
p++;
@@ -447,10 +445,7 @@ obj_ieee_section (ignore)
if (segment_info[i].hadone)
{
if (strncmp (segment_info[i].name, s, p - s) == 0)
- {
- goto ok;
-
- }
+ goto ok;
}
else
break;
@@ -470,32 +465,26 @@ ok:
while (!is_end_of_line[*p])
p++;
input_line_pointer = p;
-
}
-
void cons ();
void s_ignore ();
-
void s_globl ();
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},
+ {"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;
@@ -503,13 +492,9 @@ obj_symbol_new_hook (symbolP)
symbolP->sy_symbol.sy.the_bfd = abfd;
}
-
-
-
-
#if 1
extern void
-DEFUN_VOID (write_object_file)
+write_object_file ()
{
int i;
struct frchain *frchain_ptr;
@@ -531,10 +516,10 @@ DEFUN_VOID (write_object_file)
frchain_ptr != (struct frchain *) NULL;
frchain_ptr = frchain_ptr->frch_next)
{
- /* 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. */
+ /* 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. */
subseg_set (frchain_ptr->frch_seg, frchain_ptr->frch_subseg);
#ifndef SUB_SEGMENT_ALIGN
@@ -547,18 +532,19 @@ DEFUN_VOID (write_object_file)
}
/* Now build one big frag chain for each segment, linked through
- fr_next. */
+ fr_next. */
for (i = SEG_E0; i < SEG_UNKNOWN; i++)
{
-
fragS **prev_frag_ptr_ptr;
struct frchain *next_frchain_ptr;
- /* struct frag **head_ptr = segment_info[i].frag_root;*/
+#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
- /* Im not sure what this is for */
+ /* 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)
@@ -566,17 +552,13 @@ DEFUN_VOID (write_object_file)
*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);
- }
+ relax_segment (segment_info[i].frag_root, i);
- /* Now the addresses of the frags are correct within the segment */
+ /* Now the addresses of the frags are correct within the segment. */
bfd_as_write_hook ();
bfd_close (abfd);
@@ -623,5 +605,3 @@ H_GET_TEXT_RELOCATION_SIZE ()
{
abort ();
}
-
-/* end of obj-ieee.c */
diff --git a/contrib/binutils/gas/config/obj-ieee.h b/contrib/binutils/gas/config/obj-ieee.h
index 4a0f126..fbef1cd 100644
--- a/contrib/binutils/gas/config/obj-ieee.h
+++ b/contrib/binutils/gas/config/obj-ieee.h
@@ -1,6 +1,5 @@
/* This file is obj-ieee.h
-
- Copyright (C) 1987-1992 Free Software Foundation, Inc.
+ Copyright (C) 1987-1992, 2000 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -15,12 +14,13 @@
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. */
+ 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>
+#include "bfd.h"
typedef struct
{
@@ -41,10 +41,6 @@ object_headers;
#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE 1
-
int lineno_rootP;
-
#define IEEE_STYLE
-
-/* end of obj-ieee.h */
diff --git a/contrib/binutils/gas/config/obj-multi.h b/contrib/binutils/gas/config/obj-multi.h
index 42b7eb3..1d68a0c 100644
--- a/contrib/binutils/gas/config/obj-multi.h
+++ b/contrib/binutils/gas/config/obj-multi.h
@@ -6,7 +6,7 @@
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)
+ 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,
@@ -32,6 +32,16 @@
#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))
@@ -40,6 +50,11 @@
? (*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_after_relocs() \
(this_format->frob_file_after_relocs \
? (*this_format->frob_file_after_relocs) () \
@@ -69,21 +84,43 @@
#define S_GET_SIZE \
(*this_format->s_get_size)
-#define S_SET_SIZE \
- (*this_format->s_set_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 \
- (*this_format->s_set_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) \
@@ -94,11 +131,27 @@
? (*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/contrib/binutils/gas/config/tc-alpha.c b/contrib/binutils/gas/config/tc-alpha.c
index 0eed2e2..ae42d95 100644
--- a/contrib/binutils/gas/config/tc-alpha.c
+++ b/contrib/binutils/gas/config/tc-alpha.c
@@ -1,5 +1,5 @@
/* tc-alpha.c - Processor-specific code for the DEC Alpha AXP CPU.
- Copyright (C) 1989, 93-98, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1989, 93-98, 1999, 2000, 2001 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.
@@ -58,10 +58,10 @@
#ifdef OBJ_ELF
#include "elf/alpha.h"
+#include "dwarf2dbg.h"
#endif
#include <ctype.h>
-
/* Local types */
@@ -71,22 +71,19 @@
#define MAX_INSN_FIXUPS 2
#define MAX_INSN_ARGS 5
-struct alpha_fixup
-{
+struct alpha_fixup {
expressionS exp;
bfd_reloc_code_real_type reloc;
};
-struct alpha_insn
-{
+struct alpha_insn {
unsigned insn;
int nfixups;
struct alpha_fixup fixups[MAX_INSN_FIXUPS];
unsigned sequence[MAX_INSN_FIXUPS];
};
-enum alpha_macro_arg
-{
+enum alpha_macro_arg {
MACRO_EOA = 1,
MACRO_IR,
MACRO_PIR,
@@ -100,15 +97,14 @@ enum alpha_macro_arg
MACRO_JSR
};
-struct alpha_macro
-{
+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. */
+/* Extra expression types. */
#define O_pregister O_md1 /* O_register, in parentheses */
#define O_cpregister O_md2 /* + a leading comma */
@@ -127,7 +123,6 @@ struct alpha_macro
#define USER_RELOC_P(R) ((R) >= O_literal && (R) <= O_gprellow)
#endif
-
/* Macros for extracting the type and number of encoded register tokens */
#define is_ir_num(x) (((x) & 32) == 0)
@@ -145,14 +140,14 @@ struct alpha_macro
#if 1
#define range_signed_16(x) \
- (((offsetT)(x) >> 15) == 0 || ((offsetT)(x) >> 15) == -1)
+ (((offsetT) (x) >> 15) == 0 || ((offsetT) (x) >> 15) == -1)
#define range_signed_32(x) \
- (((offsetT)(x) >> 31) == 0 || ((offsetT)(x) >> 31) == -1)
+ (((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)
+#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. */
@@ -160,36 +155,35 @@ struct alpha_macro
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))
+#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) \
+#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)), \
+#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)), \
+#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)), \
+#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)), \
+#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_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)), \
+#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 */
@@ -246,6 +240,9 @@ 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));
#endif
#ifdef OBJ_EVAX
@@ -269,7 +266,6 @@ static void alpha_align PARAMS ((int, char *, symbolS *, int));
#ifdef RELOC_OP_P
static void alpha_adjust_symtab_relocs PARAMS ((bfd *, asection *, PTR));
#endif
-
/* Generic assembler global variables which must be defined by all
targets. */
@@ -306,19 +302,18 @@ const char *md_shortopts = "Fm:gG:";
struct option md_longopts[] = {
#define OPTION_32ADDR (OPTION_MD_BASE)
{ "32addr", no_argument, NULL, OPTION_32ADDR },
-#define OPTION_RELAX (OPTION_32ADDR+1)
+#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)
+#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);
-
+size_t md_longopts_size = sizeof (md_longopts);
#ifdef OBJ_EVAX
#define AXP_REG_R0 0
@@ -376,7 +371,7 @@ static segT alpha_dtors_section;
#endif
static segT alpha_lit8_section;
-/* Symbols referring to said sections. */
+/* Symbols referring to said sections. */
#ifdef OBJ_ECOFF
static symbolS *alpha_lita_symbol;
static symbolS *alpha_lit4_symbol;
@@ -394,8 +389,8 @@ static offsetT alpha_lit4_literal;
static offsetT alpha_lit8_literal;
#endif
-/* The active .ent symbol. */
#ifdef OBJ_ELF
+/* The active .ent symbol. */
static symbolS *alpha_cur_ent_sym;
#endif
@@ -433,7 +428,7 @@ static int alpha_debug;
#ifdef OBJ_ELF
/* Whether we are emitting an mdebug section. */
-int alpha_flag_mdebug = 1;
+int alpha_flag_mdebug = -1;
#endif
/* Don't fully resolve relocations, allowing code movement in the linker. */
@@ -475,7 +470,7 @@ static int alpha_flag_show_after_trunc = 0; /* -H */
#define ALPHA_RELOC_TABLE(op) \
&alpha_reloc_op[ ((!USER_RELOC_P (op)) \
? (abort (), 0) \
- : (int)(op) - (int)O_literal) ]
+ : (int) (op) - (int) O_literal) ]
#define LITUSE_BASE 1
#define LITUSE_BYTOFF 2
@@ -547,13 +542,13 @@ static const struct alpha_reloc_op_tag {
};
static const int alpha_num_reloc_op
- = sizeof(alpha_reloc_op) / sizeof(*alpha_reloc_op);
+ = sizeof (alpha_reloc_op) / sizeof (*alpha_reloc_op);
/* Maximum # digits needed to hold the largest sequence # */
#define ALPHA_RELOC_DIGITS 25
/* Whether a sequence number is valid. */
-#define ALPHA_RELOC_SEQUENCE_OK(X) ((X) > 0 && ((unsigned)(X)) == (X))
+#define ALPHA_RELOC_SEQUENCE_OK(X) ((X) > 0 && ((unsigned) (X)) == (X))
/* Structure to hold explict sequence information. */
struct alpha_literal_tag
@@ -573,14 +568,12 @@ static struct hash_control *alpha_literal_hash;
/* A table of CPU names and opcode sets. */
-static const struct cpu_type
-{
+static const struct cpu_type {
const char *name;
unsigned flags;
-} cpu_types[] =
-{
+} 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
+ 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. */
@@ -635,24 +628,24 @@ static const struct alpha_macro alpha_macros[] = {
{ "ldt", emit_loadstore, "ldt",
{ MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "ldb", emit_ldX, (PTR)0,
+ { "ldb", emit_ldX, (PTR) 0,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "ldbu", emit_ldXu, (PTR)0,
+ { "ldbu", emit_ldXu, (PTR) 0,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "ldw", emit_ldX, (PTR)1,
+ { "ldw", emit_ldX, (PTR) 1,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "ldwu", emit_ldXu, (PTR)1,
+ { "ldwu", emit_ldXu, (PTR) 1,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "uldw", emit_uldX, (PTR)1,
+ { "uldw", emit_uldX, (PTR) 1,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "uldwu", emit_uldXu, (PTR)1,
+ { "uldwu", emit_uldXu, (PTR) 1,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "uldl", emit_uldX, (PTR)2,
+ { "uldl", emit_uldX, (PTR) 2,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "uldlu", emit_uldXu, (PTR)2,
+ { "uldlu", emit_uldXu, (PTR) 2,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "uldq", emit_uldXu, (PTR)3,
+ { "uldq", emit_uldXu, (PTR) 3,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
{ "ldgp", emit_ldgp, NULL,
@@ -696,15 +689,15 @@ static const struct alpha_macro alpha_macros[] = {
{ "stt", emit_loadstore, "stt",
{ MACRO_FPR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "stb", emit_stX, (PTR)0,
+ { "stb", emit_stX, (PTR) 0,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "stw", emit_stX, (PTR)1,
+ { "stw", emit_stX, (PTR) 1,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "ustw", emit_ustX, (PTR)1,
+ { "ustw", emit_ustX, (PTR) 1,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "ustl", emit_ustX, (PTR)2,
+ { "ustl", emit_ustX, (PTR) 2,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
- { "ustq", emit_ustX, (PTR)3,
+ { "ustq", emit_ustX, (PTR) 3,
{ MACRO_IR, MACRO_EXP, MACRO_OPIR, MACRO_BASE, MACRO_EOA } },
/* Arithmetic macros */
@@ -717,11 +710,11 @@ static const struct alpha_macro alpha_macros[] = {
{ "absq" emit_absq, 2, { EXP, IR } },
#endif
- { "sextb", emit_sextX, (PTR)0,
+ { "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,
+ { "sextw", emit_sextX, (PTR) 1,
{ MACRO_IR, MACRO_IR, MACRO_EOA,
MACRO_IR, MACRO_EOA,
/* MACRO_EXP, MACRO_IR, MACRO_EOA */ } },
@@ -801,7 +794,7 @@ static const struct alpha_macro alpha_macros[] = {
};
static const unsigned int alpha_num_macros
- = sizeof(alpha_macros) / sizeof(*alpha_macros);
+ = sizeof (alpha_macros) / sizeof (*alpha_macros);
/* Public interface functions */
@@ -824,12 +817,12 @@ md_begin ()
/* Create the opcode hash table */
alpha_opcode_hash = hash_new ();
- for (i = 0; i < alpha_num_opcodes; )
+ 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]);
+ 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);
@@ -844,7 +837,7 @@ md_begin ()
memcpy (p, name, slash - name);
strcpy (p + (slash - name), slash + 1);
- (void)hash_insert(alpha_opcode_hash, p, (PTR)&alpha_opcodes[i]);
+ (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". */
}
@@ -858,14 +851,15 @@ md_begin ()
/* Create the macro hash table */
alpha_macro_hash = hash_new ();
- for (i = 0; i < alpha_num_macros; )
+ 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]);
+ 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);
+ as_fatal (_("internal error: can't hash macro `%s': %s"),
+ name, retval);
while (++i < alpha_num_macros
&& (alpha_macros[i].name == name
@@ -878,16 +872,16 @@ md_begin ()
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);
+ 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);
+ 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 */
@@ -911,17 +905,17 @@ md_begin ()
#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);
+ 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 */
- subseg_set(text_section, 0);
+ subseg_set (text_section, 0);
#ifdef RELOC_OP_P
/* Create literal lookup hash table. */
- alpha_literal_hash = hash_new();
+ alpha_literal_hash = hash_new ();
#endif
}
@@ -964,15 +958,15 @@ md_section_align (seg, size)
segT seg;
valueT size;
{
- int align = bfd_get_section_alignment(stdoutput, seg);
- valueT mask = ((valueT)1 << align) - 1;
+ 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
+ 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 */
@@ -1060,25 +1054,25 @@ md_parse_option (c, arg)
break;
case 'G':
- g_switch_value = atoi(arg);
+ 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)
+ if (strcmp (arg, p->name) == 0)
{
alpha_target_name = p->name, alpha_target = p->flags;
goto found;
}
- as_warn(_("Unknown CPU identifier `%s'"), arg);
+ as_warn (_("Unknown CPU identifier `%s'"), arg);
found:;
}
break;
#ifdef OBJ_EVAX
- case '+': /* For g++. Hash any name > 63 chars long. */
+ case '+': /* For g++. Hash any name > 63 chars long. */
alpha_flag_hash_long_names = 1;
break;
@@ -1116,7 +1110,7 @@ void
md_show_usage (stream)
FILE *stream;
{
- fputs(_("\
+ fputs (_("\
Alpha options:\n\
-32addr treat addresses as 32-bit values\n\
-F lack floating point instructions support\n\
@@ -1243,7 +1237,7 @@ md_apply_fix (fixP, valueP)
case BFD_RELOC_23_PCREL_S2:
if (fixP->fx_pcrel == 0 && fixP->fx_addsy == 0)
{
- image = bfd_getl32(fixpos);
+ image = bfd_getl32 (fixpos);
image = (image & ~0x1FFFFF) | ((value >> 2) & 0x1FFFFF);
goto write_done;
}
@@ -1252,7 +1246,7 @@ md_apply_fix (fixP, valueP)
case BFD_RELOC_ALPHA_HINT:
if (fixP->fx_pcrel == 0 && fixP->fx_addsy == 0)
{
- image = bfd_getl32(fixpos);
+ image = bfd_getl32 (fixpos);
image = (image & ~0x3FFF) | ((value >> 2) & 0x3FFF);
goto write_done;
}
@@ -1290,16 +1284,20 @@ md_apply_fix (fixP, valueP)
abort ();
#endif
+ case BFD_RELOC_VTABLE_INHERIT:
+ case BFD_RELOC_VTABLE_ENTRY:
+ return 1;
+
default:
{
const struct alpha_operand *operand;
- if ((int)fixP->fx_r_type >= 0)
+ 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];
+ 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.
@@ -1310,9 +1308,9 @@ md_apply_fix (fixP, valueP)
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);
+ image = bfd_getl32 (fixpos);
+ image = insert_operand (image, operand, (offsetT) value,
+ fixP->fx_file, fixP->fx_line);
}
goto write_done;
}
@@ -1321,13 +1319,13 @@ md_apply_fix (fixP, valueP)
return 1;
else
{
- as_warn_where(fixP->fx_file, fixP->fx_line,
- _("type %d reloc done?\n"), (int)fixP->fx_r_type);
+ 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);
+ md_number_to_chars (fixpos, image, 4);
done:
fixP->fx_done = 1;
@@ -1339,7 +1337,7 @@ done:
*/
symbolS *
-md_undefined_symbol(name)
+md_undefined_symbol (name)
char *name;
{
if (*name == '$')
@@ -1355,7 +1353,7 @@ md_undefined_symbol(name)
/* FALLTHRU */
case 'r':
- if (!isdigit(*++name))
+ if (!isdigit (*++name))
break;
/* FALLTHRU */
@@ -1363,7 +1361,7 @@ md_undefined_symbol(name)
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')
+ else if (name[0] != '0' && isdigit (name[1]) && name[2] == '\0')
{
num = (name[0] - '0') * 10 + name[1] - '0';
if (num >= 32)
@@ -1373,14 +1371,14 @@ md_undefined_symbol(name)
break;
if (!alpha_noat_on && (num + is_float) == AXP_REG_AT)
- as_warn(_("Used $at without \".set noat\""));
+ 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\""));
+ as_warn (_("Used $at without \".set noat\""));
return alpha_register_table[AXP_REG_AT];
}
break;
@@ -1459,6 +1457,8 @@ alpha_force_relocation (f)
case BFD_RELOC_ALPHA_USER_GPRELHIGH:
case BFD_RELOC_ALPHA_USER_GPRELLOW:
#endif
+ case BFD_RELOC_VTABLE_INHERIT:
+ case BFD_RELOC_VTABLE_ENTRY:
return 1;
case BFD_RELOC_23_PCREL_S2:
@@ -1468,7 +1468,8 @@ alpha_force_relocation (f)
return 0;
default:
- assert((int)f->fx_r_type < 0 && -(int)f->fx_r_type < (int)alpha_num_operands);
+ assert ((int) f->fx_r_type < 0
+ && -(int) f->fx_r_type < (int) alpha_num_operands);
return 0;
}
}
@@ -1518,6 +1519,8 @@ alpha_fix_adjustable (f)
case BFD_RELOC_ALPHA_USER_GPRELHIGH:
case BFD_RELOC_ALPHA_USER_GPRELLOW:
#endif
+ case BFD_RELOC_VTABLE_ENTRY:
+ case BFD_RELOC_VTABLE_INHERIT:
return 0;
case BFD_RELOC_GPREL32:
@@ -1528,8 +1531,8 @@ alpha_fix_adjustable (f)
return 1;
default:
- assert ((int)f->fx_r_type < 0
- && - (int)f->fx_r_type < (int)alpha_num_operands);
+ assert ((int) f->fx_r_type < 0
+ && - (int) f->fx_r_type < (int) alpha_num_operands);
return 1;
}
/*NOTREACHED*/
@@ -1552,7 +1555,7 @@ tc_gen_reloc (sec, fixp)
/* 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);
+ assert ((int) fixp->fx_r_type > 0);
reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type);
if (reloc->howto == NULL)
@@ -1588,7 +1591,7 @@ tc_gen_reloc (sec, fixp)
* 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_IS_COMMON(fixp->fx_addsy))
+ && !S_IS_COMMON (fixp->fx_addsy))
reloc->addend -= symbol_get_bfdsym (fixp->fx_addsy)->value;
#endif
}
@@ -1615,7 +1618,7 @@ tc_get_register (frame)
char c = get_symbol_end ();
symbolS *sym = md_undefined_symbol (s);
- *strchr(s, '\0') = c;
+ *strchr (s, '\0') = c;
if (sym && (framereg = S_GET_VALUE (sym)) <= 31)
goto found;
}
@@ -1647,10 +1650,10 @@ alpha_frob_file_before_adjust ()
#ifdef RELOC_OP_P
-/* 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.
- */
+/* 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. */
void
alpha_adjust_symtab ()
@@ -1661,20 +1664,21 @@ alpha_adjust_symtab ()
fprintf (stderr, "alpha_adjust_symtab called\n");
#endif
- /* Go over each section, reordering the relocations so that all of the
- explicit LITUSE's are adjacent to the explicit LITERAL's */
- bfd_map_over_sections (stdoutput, alpha_adjust_symtab_relocs, (char *) 0);
+ /* Go over each section, reordering the relocations so that all
+ of the explicit LITUSE's are adjacent to the explicit
+ LITERAL's. */
+ bfd_map_over_sections (stdoutput, alpha_adjust_symtab_relocs,
+ (char *) 0);
}
}
-
/* Inner function to move LITUSE's next to the LITERAL. */
static void
alpha_adjust_symtab_relocs (abfd, sec, ptr)
- bfd *abfd;
+ bfd *abfd ATTRIBUTE_UNUSED;
asection *sec;
- PTR ptr;
+ PTR ptr ATTRIBUTE_UNUSED;
{
segment_info_type *seginfo = seg_info (sec);
fixS **prevP;
@@ -1689,8 +1693,9 @@ alpha_adjust_symtab_relocs (abfd, sec, ptr)
int n_dup_literals = 0;
#endif
- /* 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 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;
@@ -1703,7 +1708,7 @@ alpha_adjust_symtab_relocs (abfd, sec, ptr)
for (fixp = seginfo->fix_root; fixp; fixp = next)
{
next = fixp->fx_next;
- fixp->fx_next = (fixS *)0;
+ fixp->fx_next = (fixS *) 0;
#ifdef DEBUG2_ALPHA
n++;
#endif
@@ -1716,7 +1721,7 @@ alpha_adjust_symtab_relocs (abfd, sec, ptr)
#ifdef DEBUG2_ALPHA
fprintf (stderr,
"alpha_adjust_symtab_relocs: 0x%lx, other relocation %s\n",
- (long)fixp,
+ (long) fixp,
bfd_get_reloc_code_name (fixp->fx_r_type));
#endif
break;
@@ -1731,7 +1736,7 @@ alpha_adjust_symtab_relocs (abfd, sec, ptr)
n_dup_literals++;
fprintf (stderr,
"alpha_adjust_symtab_relocs: 0x%lx, !literal!%.6d, # literals = %2d\n",
- (long)fixp,
+ (long) fixp,
fixp->tc_fix_data.info->sequence,
fixp->tc_fix_data.info->n_literals);
#endif
@@ -1749,10 +1754,10 @@ alpha_adjust_symtab_relocs (abfd, sec, ptr)
#ifdef DEBUG2_ALPHA
fprintf (stderr,
"alpha_adjust_symtab_relocs: 0x%lx, !lituse !%.6d, # lituses = %2d, next_lituse = 0x%lx\n",
- (long)fixp,
+ (long) fixp,
fixp->tc_fix_data.info->sequence,
fixp->tc_fix_data.info->n_lituses,
- (long)fixp->tc_fix_data.next_lituse);
+ (long) fixp->tc_fix_data.next_lituse);
#endif
break;
}
@@ -1785,7 +1790,7 @@ alpha_adjust_symtab_relocs (abfd, sec, ptr)
&& ! fixp->tc_fix_data.info->multi_section_p)
{
for (lituse = fixp->tc_fix_data.info->lituse;
- lituse != (fixS *)0;
+ lituse != (fixS *) 0;
lituse = lituse->tc_fix_data.next_lituse)
{
lituse->fx_next = fixp->fx_next;
@@ -1813,7 +1818,6 @@ alpha_adjust_symtab_relocs (abfd, sec, ptr)
}
#endif /* RELOC_OP_P */
-
#ifdef DEBUG_ALPHA
static void
@@ -1882,7 +1886,7 @@ debug_exp (tok, ntok)
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);
+ (int) t->X_add_number);
}
fprintf (stderr, "\n");
fflush (stderr);
@@ -1960,7 +1964,7 @@ tokenize_arguments (str, tok, ntok)
}
r = &alpha_reloc_op[0];
- for (i = alpha_num_reloc_op-1; i >= 0; i--, r++)
+ for (i = alpha_num_reloc_op - 1; i >= 0; i--, r++)
{
if (len == r->length
&& memcmp (input_line_pointer, r->name, len) == 0)
@@ -1968,7 +1972,8 @@ tokenize_arguments (str, tok, ntok)
}
if (i < 0)
{
- as_bad (_("Unknown relocation operand: !%s"), input_line_pointer);
+ as_bad (_("Unknown relocation operand: !%s"),
+ input_line_pointer);
goto err_report;
}
@@ -1981,7 +1986,8 @@ tokenize_arguments (str, tok, ntok)
if (tok->X_op != O_constant
|| ! ALPHA_RELOC_SEQUENCE_OK (tok->X_add_number))
{
- as_bad (_("Bad sequence number: !%s!%s"), r->name, input_line_pointer);
+ as_bad (_("Bad sequence number: !%s!%s"),
+ r->name, input_line_pointer);
goto err_report;
}
@@ -2002,7 +2008,7 @@ tokenize_arguments (str, tok, ntok)
{
char *hold = input_line_pointer++;
- /* First try for parenthesized register ... */
+ /* First try for parenthesized register ... */
expression (tok);
if (*input_line_pointer == ')' && tok->X_op == O_register)
{
@@ -2059,7 +2065,7 @@ err_report:
syntax match. */
static const struct alpha_opcode *
-find_opcode_match(first_opcode, tok, pntok, pcpumatch)
+find_opcode_match (first_opcode, tok, pntok, pcpumatch)
const struct alpha_opcode *first_opcode;
const expressionS *tok;
int *pntok;
@@ -2101,22 +2107,22 @@ find_opcode_match(first_opcode, tok, pntok, pcpumatch)
{
case AXP_OPERAND_IR:
if (tok[tokidx].X_op != O_register
- || !is_ir_num(tok[tokidx].X_add_number))
+ || !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))
+ || !is_fpr_num (tok[tokidx].X_add_number))
goto match_failed;
break;
- case AXP_OPERAND_IR|AXP_OPERAND_PARENS:
+ case AXP_OPERAND_IR | AXP_OPERAND_PARENS:
if (tok[tokidx].X_op != O_pregister
- || !is_ir_num(tok[tokidx].X_add_number))
+ || !is_ir_num (tok[tokidx].X_add_number))
goto match_failed;
break;
- case AXP_OPERAND_IR|AXP_OPERAND_PARENS|AXP_OPERAND_COMMA:
+ 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))
+ || !is_ir_num (tok[tokidx].X_add_number))
goto match_failed;
break;
@@ -2139,7 +2145,7 @@ find_opcode_match(first_opcode, tok, pntok, pcpumatch)
default:
/* everything else should have been fake */
- abort();
+ abort ();
}
++tokidx;
}
@@ -2153,11 +2159,11 @@ find_opcode_match(first_opcode, tok, pntok, pcpumatch)
match_failed:;
}
- while (++opcode-alpha_opcodes < alpha_num_opcodes
- && !strcmp(opcode->name, first_opcode->name));
+ while (++opcode - alpha_opcodes < alpha_num_opcodes
+ && !strcmp (opcode->name, first_opcode->name));
if (*pcpumatch)
- *pcpumatch = got_cpu_match;
+ *pcpumatch = got_cpu_match;
return NULL;
}
@@ -2166,7 +2172,7 @@ find_opcode_match(first_opcode, tok, pntok, pcpumatch)
match. */
static const struct alpha_macro *
-find_macro_match(first_macro, tok, pntok)
+find_macro_match (first_macro, tok, pntok)
const struct alpha_macro *first_macro;
const expressionS *tok;
int *pntok;
@@ -2193,7 +2199,7 @@ find_macro_match(first_macro, tok, pntok)
/* index register */
case MACRO_IR:
if (tokidx >= ntok || tok[tokidx].X_op != O_register
- || !is_ir_num(tok[tokidx].X_add_number))
+ || !is_ir_num (tok[tokidx].X_add_number))
goto match_failed;
++tokidx;
break;
@@ -2201,7 +2207,7 @@ find_macro_match(first_macro, tok, pntok)
/* parenthesized index register */
case MACRO_PIR:
if (tokidx >= ntok || tok[tokidx].X_op != O_pregister
- || !is_ir_num(tok[tokidx].X_add_number))
+ || !is_ir_num (tok[tokidx].X_add_number))
goto match_failed;
++tokidx;
break;
@@ -2209,14 +2215,14 @@ find_macro_match(first_macro, tok, pntok)
/* optional parenthesized index register */
case MACRO_OPIR:
if (tokidx < ntok && tok[tokidx].X_op == O_pregister
- && is_ir_num(tok[tokidx].X_add_number))
+ && 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))
+ || !is_ir_num (tok[tokidx].X_add_number))
goto match_failed;
++tokidx;
break;
@@ -2224,7 +2230,7 @@ find_macro_match(first_macro, tok, pntok)
/* floating point register */
case MACRO_FPR:
if (tokidx >= ntok || tok[tokidx].X_op != O_register
- || !is_fpr_num(tok[tokidx].X_add_number))
+ || !is_fpr_num (tok[tokidx].X_add_number))
goto match_failed;
++tokidx;
break;
@@ -2298,8 +2304,8 @@ find_macro_match(first_macro, tok, pntok)
++arg;
}
}
- while (++macro-alpha_macros < alpha_num_macros
- && !strcmp(macro->name, first_macro->name));
+ while (++macro - alpha_macros < alpha_num_macros
+ && !strcmp (macro->name, first_macro->name));
return NULL;
}
@@ -2307,7 +2313,7 @@ find_macro_match(first_macro, tok, pntok)
/* Insert an operand value into an instruction. */
static unsigned
-insert_operand(insn, operand, val, file, line)
+insert_operand (insn, operand, val, file, line)
unsigned insn;
const struct alpha_operand *operand;
offsetT val;
@@ -2335,11 +2341,11 @@ insert_operand(insn, operand, val, file, line)
_("operand out of range (%s not between %d and %d)");
char buf[sizeof (val) * 3 + 2];
- sprint_value(buf, val);
+ sprint_value (buf, val);
if (file)
- as_warn_where(file, line, err, buf, min, max);
+ as_warn_where (file, line, err, buf, min, max);
else
- as_warn(err, buf, min, max);
+ as_warn (err, buf, min, max);
}
}
@@ -2363,7 +2369,7 @@ insert_operand(insn, operand, val, file, line)
*/
static void
-assemble_insn(opcode, tok, ntok, insn)
+assemble_insn (opcode, tok, ntok, insn)
const struct alpha_opcode *opcode;
const expressionS *tok;
int ntok;
@@ -2379,12 +2385,12 @@ assemble_insn(opcode, tok, ntok, insn)
for (argidx = opcode->operands; *argidx; ++argidx)
{
const struct alpha_operand *operand = &alpha_operands[*argidx];
- const expressionS *t = (const expressionS *)0;
+ 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);
+ image = insert_operand (image, operand, 0, NULL, 0);
continue;
}
@@ -2407,7 +2413,7 @@ assemble_insn(opcode, tok, ntok, insn)
}
break;
default:
- abort();
+ abort ();
}
}
else
@@ -2418,12 +2424,12 @@ assemble_insn(opcode, tok, ntok, insn)
case O_register:
case O_pregister:
case O_cpregister:
- image = insert_operand(image, operand, regno(t->X_add_number),
- NULL, 0);
+ 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);
+ image = insert_operand (image, operand, t->X_add_number, NULL, 0);
break;
default:
@@ -2431,7 +2437,7 @@ assemble_insn(opcode, tok, ntok, insn)
struct alpha_fixup *fixup;
if (insn->nfixups >= MAX_INSN_FIXUPS)
- as_fatal(_("too many fixups"));
+ as_fatal (_("too many fixups"));
fixup = &insn->fixups[insn->nfixups++];
@@ -2451,12 +2457,12 @@ assemble_insn(opcode, tok, ntok, insn)
static void
emit_insn (insn)
- struct alpha_insn *insn;
+ struct alpha_insn *insn;
{
char *f;
int i;
- /* Take care of alignment duties */
+ /* 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)
@@ -2467,10 +2473,14 @@ emit_insn (insn)
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;
+ const struct alpha_operand *operand = (const struct alpha_operand *) 0;
struct alpha_fixup *fixup = &insn->fixups[i];
int size, pcrel;
fixS *fixP;
@@ -2480,48 +2490,49 @@ emit_insn (insn)
#endif
/* Some fixups are only used internally and so have no howto */
- if ((int)fixup->reloc < 0)
+ if ((int) fixup->reloc < 0)
{
- operand = &alpha_operands[-(int)fixup->reloc];
+ operand = &alpha_operands[-(int) fixup->reloc];
size = 4;
pcrel = ((operand->flags & AXP_OPERAND_RELATIVE) != 0);
}
- else switch (fixup->reloc)
- {
+ else
+ switch (fixup->reloc)
+ {
#ifdef OBJ_ELF
- /* These relocation types are only used internally. */
- case BFD_RELOC_ALPHA_GPDISP_HI16:
- case BFD_RELOC_ALPHA_GPDISP_LO16:
- size = 2;
- pcrel = 0;
- break;
+ /* These relocation types are only used internally. */
+ case BFD_RELOC_ALPHA_GPDISP_HI16:
+ case BFD_RELOC_ALPHA_GPDISP_LO16:
+ size = 2;
+ pcrel = 0;
+ break;
#endif
#ifdef RELOC_OP_P
- /* and these also are internal only relocations */
- case BFD_RELOC_ALPHA_USER_LITERAL:
- case BFD_RELOC_ALPHA_USER_LITUSE_BASE:
- case BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF:
- case BFD_RELOC_ALPHA_USER_LITUSE_JSR:
- case BFD_RELOC_ALPHA_USER_GPDISP:
- case BFD_RELOC_ALPHA_USER_GPRELHIGH:
- case BFD_RELOC_ALPHA_USER_GPRELLOW:
- size = 2;
- pcrel = 0;
- break;
+ /* and these also are internal only relocations */
+ case BFD_RELOC_ALPHA_USER_LITERAL:
+ case BFD_RELOC_ALPHA_USER_LITUSE_BASE:
+ case BFD_RELOC_ALPHA_USER_LITUSE_BYTOFF:
+ case BFD_RELOC_ALPHA_USER_LITUSE_JSR:
+ case BFD_RELOC_ALPHA_USER_GPDISP:
+ case BFD_RELOC_ALPHA_USER_GPRELHIGH:
+ case BFD_RELOC_ALPHA_USER_GPRELLOW:
+ size = 2;
+ pcrel = 0;
+ break;
#endif
- default:
- {
- reloc_howto_type *reloc_howto
- = bfd_reloc_type_lookup (stdoutput, fixup->reloc);
- assert (reloc_howto);
+ default:
+ {
+ reloc_howto_type *reloc_howto
+ = bfd_reloc_type_lookup (stdoutput, fixup->reloc);
+ assert (reloc_howto);
- size = bfd_get_reloc_size (reloc_howto);
- pcrel = reloc_howto->pc_relative;
+ size = bfd_get_reloc_size (reloc_howto);
+ pcrel = reloc_howto->pc_relative;
+ }
+ assert (size >= 1 && size <= 4);
+ break;
}
- assert (size >= 1 && size <= 4);
- break;
- }
fixP = fix_new_exp (frag_now, f - frag_now->fr_literal, size,
&fixup->exp, pcrel, fixup->reloc);
@@ -2559,7 +2570,7 @@ emit_insn (insn)
info->segment = now_seg;
info->sequence = insn->sequence[i];
strcpy (info->string, buffer);
- errmsg = hash_insert (alpha_literal_hash, info->string, (PTR)info);
+ errmsg = hash_insert (alpha_literal_hash, info->string, (PTR) info);
if (errmsg)
as_bad (errmsg);
}
@@ -2590,7 +2601,7 @@ emit_insn (insn)
info->segment = now_seg;
info->sequence = insn->sequence[i];
strcpy (info->string, buffer);
- errmsg = hash_insert (alpha_literal_hash, info->string, (PTR)info);
+ errmsg = hash_insert (alpha_literal_hash, info->string, (PTR) info);
if (errmsg)
as_bad (errmsg);
}
@@ -2605,7 +2616,7 @@ emit_insn (insn)
#endif
default:
- if ((int)fixup->reloc < 0)
+ if ((int) fixup->reloc < 0)
{
if (operand->flags & AXP_OPERAND_NOOVERFLOW)
fixP->fx_no_overflow = 1;
@@ -2622,7 +2633,7 @@ emit_insn (insn)
than one insn in an insn structure. */
static void
-assemble_tokens_to_insn(opname, tok, ntok, insn)
+assemble_tokens_to_insn (opname, tok, ntok, insn)
const char *opname;
const expressionS *tok;
int ntok;
@@ -2645,7 +2656,7 @@ assemble_tokens_to_insn(opname, tok, ntok, insn)
as_bad (_("inappropriate arguments for opcode `%s'"), opname);
else
as_bad (_("opcode `%s' not supported for target %s"), opname,
- alpha_target_name);
+ alpha_target_name);
}
else
as_bad (_("unknown opcode `%s'"), opname);
@@ -2684,12 +2695,12 @@ assemble_tokens (opname, tok, ntok, local_macros_on)
}
#ifdef RELOC_OP_P
- if (ntok && USER_RELOC_P (tok[ntok-1].X_op))
+ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
{
- const expressionS *reloc_exp = &tok[ntok-1];
+ const expressionS *reloc_exp = &tok[ntok - 1];
const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op);
as_bad (_("Cannot use !%s!%d with %s"), r->name,
- (int)reloc_exp->X_add_number, opname);
+ (int) reloc_exp->X_add_number, opname);
ntok--;
}
#endif
@@ -2718,7 +2729,6 @@ assemble_tokens (opname, tok, ntok, local_macros_on)
else
as_bad (_("unknown opcode `%s'"), opname);
}
-
/* Some instruction sets indexed by lg(size) */
static const char * const sextX_op[] = { "sextb", "sextw", "sextl", NULL };
@@ -2751,12 +2761,12 @@ FIXME
expressionS addend;
#ifdef RELOC_OP_P
- if (ntok && USER_RELOC_P (tok[ntok-1].X_op))
+ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
{
- const expressionS *reloc_exp = &tok[ntok-1];
+ const expressionS *reloc_exp = &tok[ntok - 1];
const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op);
as_bad (_("Cannot use !%s!%d with %s"), r->name,
- (int)reloc_exp->X_add_number, "ldgp");
+ (int) reloc_exp->X_add_number, "ldgp");
ntok--;
}
#endif
@@ -2839,7 +2849,7 @@ add_to_link_pool (basesym, sym, addend)
{
if (range_signed_16 (offset))
{
- return offset;
+ return offset;
}
}
}
@@ -2938,7 +2948,7 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc)
assemble_tokens_to_insn ("ldq", newtok, 3, &insn);
- assert (explicit_reloc == (const expressionS *)0);
+ assert (explicit_reloc == (const expressionS *) 0);
assert (insn.nfixups == 1);
insn.fixups[0].reloc = BFD_RELOC_ALPHA_LITERAL;
#endif /* OBJ_ECOFF */
@@ -2960,8 +2970,9 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc)
/* 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)))
+ if (1
+ || (!range_signed_32 (addend)
+ && (alpha_noat_on || targreg == AXP_REG_AT)))
{
newtok[1] = *exp;
addend = 0;
@@ -2994,7 +3005,7 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc)
/* Find symbol or symbol pointer in link section. */
- assert (explicit_reloc == (const expressionS *)0);
+ assert (explicit_reloc == (const expressionS *) 0);
if (exp->X_add_symbol == alpha_evax_proc.symbol)
{
if (range_signed_16 (addend))
@@ -3033,7 +3044,7 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc)
}
#endif /* OBJ_EVAX */
- emit_insn(&insn);
+ emit_insn (&insn);
#ifndef OBJ_EVAX
emit_lituse = 1;
@@ -3053,14 +3064,14 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc)
break;
case O_constant:
- assert (explicit_reloc == (const expressionS *)0);
+ assert (explicit_reloc == (const expressionS *) 0);
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. */
+ absolute value and that that value will fit in 16 bits. */
- assert (explicit_reloc == (const expressionS *)0);
+ assert (explicit_reloc == (const expressionS *) 0);
set_tok_reg (newtok[0], targreg);
newtok[1] = *exp;
set_tok_preg (newtok[2], basereg);
@@ -3162,7 +3173,7 @@ load_expression (targreg, exp, pbasereg, poffset, explicit_reloc)
if (insn.nfixups > 0)
{
memmove (&insn.fixups[1], &insn.fixups[0],
- sizeof(struct alpha_fixup) * insn.nfixups);
+ sizeof (struct alpha_fixup) * insn.nfixups);
}
insn.nfixups++;
insn.fixups[0].reloc = BFD_RELOC_ALPHA_LITUSE;
@@ -3254,22 +3265,22 @@ emit_lda (tok, ntok, opname)
const PTR opname;
{
int basereg;
- const expressionS *reloc = (const expressionS *)0;
+ const expressionS *reloc = (const expressionS *) 0;
#ifdef RELOC_OP_P
- if (ntok && USER_RELOC_P (tok[ntok-1].X_op))
+ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
{
const struct alpha_reloc_op_tag *r;
- reloc = &tok[ntok-1];
+ reloc = &tok[ntok - 1];
r = ALPHA_RELOC_TABLE (reloc->X_op);
switch (reloc->X_op)
{
default:
as_bad (_("Cannot use !%s!%d with %s"), r->name,
- (int)reloc->X_add_number, (const char *)opname);
+ (int) reloc->X_add_number, (const char *) opname);
- reloc = (const expressionS *)0;
+ reloc = (const expressionS *) 0;
ntok--;
break;
@@ -3283,15 +3294,15 @@ emit_lda (tok, ntok, opname)
case O_lituse_base:
if (ntok != 4
|| tok[0].X_op != O_register
- || !is_ir_num(tok[0].X_add_number)
+ || !is_ir_num (tok[0].X_add_number)
|| tok[1].X_op != O_constant
|| tok[2].X_op != O_pregister
- || !is_ir_num(tok[2].X_add_number))
+ || !is_ir_num (tok[2].X_add_number))
{
- as_bad (_("bad instruction format for lda !%s!%d"), r->name,
- reloc->X_add_number);
+ as_bad (_("bad instruction format for lda !%s!%ld"), r->name,
+ (long) reloc->X_add_number);
- reloc = (const expressionS *)0;
+ reloc = (const expressionS *) 0;
ntok--;
break;
}
@@ -3322,12 +3333,12 @@ emit_ldah (tok, ntok, unused)
expressionS newtok[3];
#ifdef RELOC_OP_P
- if (ntok && USER_RELOC_P (tok[ntok-1].X_op))
+ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
{
- const expressionS *reloc_exp = &tok[ntok-1];
+ const expressionS *reloc_exp = &tok[ntok - 1];
const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op);
as_bad (_("Cannot use !%s!%d with %s"), r->name,
- (int)reloc_exp->X_add_number, "ldah");
+ (int) reloc_exp->X_add_number, "ldah");
ntok--;
}
#endif
@@ -3354,13 +3365,13 @@ emit_ir_load (tok, ntok, opname)
struct alpha_insn insn;
#ifdef RELOC_OP_P
- const expressionS *reloc = (const expressionS *)0;
+ const expressionS *reloc = (const expressionS *) 0;
- if (ntok && USER_RELOC_P (tok[ntok-1].X_op))
+ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
{
const struct alpha_reloc_op_tag *r;
- reloc = &tok[ntok-1];
+ reloc = &tok[ntok - 1];
switch (reloc->X_op)
{
case O_lituse_base:
@@ -3368,7 +3379,7 @@ emit_ir_load (tok, ntok, opname)
break;
case O_literal:
- if (strcmp ((const char *)opname, "ldq") == 0)
+ if (strcmp ((const char *) opname, "ldq") == 0)
{
emit_lda (tok, ntok, opname);
return;
@@ -3379,7 +3390,7 @@ emit_ir_load (tok, ntok, opname)
ntok--;
r = ALPHA_RELOC_TABLE (reloc->X_op);
as_bad (_("Cannot use !%s!%d with %s"), r->name,
- (int)reloc->X_add_number, (const char *)opname);
+ (int) reloc->X_add_number, (const char *) opname);
}
}
#endif
@@ -3390,12 +3401,12 @@ emit_ir_load (tok, ntok, opname)
basereg = tok[2].X_add_number;
lituse = load_expression (tok[0].X_add_number, &tok[1], &basereg,
- &newtok[1], (const expressionS *)0);
+ &newtok[1], (const expressionS *) 0);
newtok[0] = tok[0];
set_tok_preg (newtok[2], basereg);
- assemble_tokens_to_insn ((const char *)opname, newtok, 3, &insn);
+ assemble_tokens_to_insn ((const char *) opname, newtok, 3, &insn);
#ifdef RELOC_OP_P
if (reloc)
@@ -3419,7 +3430,7 @@ emit_ir_load (tok, ntok, opname)
if (insn.nfixups > 0)
{
memmove (&insn.fixups[1], &insn.fixups[0],
- sizeof(struct alpha_fixup) * insn.nfixups);
+ sizeof (struct alpha_fixup) * insn.nfixups);
}
insn.nfixups++;
insn.fixups[0].reloc = BFD_RELOC_ALPHA_LITUSE;
@@ -3445,16 +3456,16 @@ emit_loadstore (tok, ntok, opname)
struct alpha_insn insn;
#ifdef RELOC_OP_P
- const expressionS *reloc = (const expressionS *)0;
+ const expressionS *reloc = (const expressionS *) 0;
- if (ntok && USER_RELOC_P (tok[ntok-1].X_op))
+ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
{
reloc = &tok[--ntok];
if (reloc->X_op != O_lituse_base)
{
- const struct alpha_reloc_op_tag *r = &alpha_reloc_op[ reloc->X_md ];
+ const struct alpha_reloc_op_tag *r = &alpha_reloc_op[reloc->X_md];
as_bad (_("Cannot use !%s!%d with %s"), r->name,
- (int)reloc->X_add_number, (const char *)opname);
+ (int) reloc->X_add_number, (const char *) opname);
}
}
#endif
@@ -3464,13 +3475,13 @@ emit_loadstore (tok, ntok, opname)
else
basereg = tok[2].X_add_number;
- if (tok[1].X_op != O_constant || !range_signed_16(tok[1].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],
- (const expressionS *)0);
+ (const expressionS *) 0);
}
else
{
@@ -3481,7 +3492,7 @@ emit_loadstore (tok, ntok, opname)
newtok[0] = tok[0];
set_tok_preg (newtok[2], basereg);
- assemble_tokens_to_insn ((const char *)opname, newtok, 3, &insn);
+ assemble_tokens_to_insn ((const char *) opname, newtok, 3, &insn);
#ifdef RELOC_OP_P
if (reloc)
@@ -3505,7 +3516,7 @@ emit_loadstore (tok, ntok, opname)
if (insn.nfixups > 0)
{
memmove (&insn.fixups[1], &insn.fixups[0],
- sizeof(struct alpha_fixup) * insn.nfixups);
+ sizeof (struct alpha_fixup) * insn.nfixups);
}
insn.nfixups++;
insn.fixups[0].reloc = BFD_RELOC_ALPHA_LITUSE;
@@ -3526,20 +3537,20 @@ emit_ldXu (tok, ntok, vlgsize)
const PTR vlgsize;
{
if (alpha_target & AXP_OPCODE_BWX)
- emit_ir_load (tok, ntok, ldXu_op[(long)vlgsize]);
+ emit_ir_load (tok, ntok, ldXu_op[(long) vlgsize]);
else
{
expressionS newtok[3];
#ifdef RELOC_OP_P
- if (ntok && USER_RELOC_P (tok[ntok-1].X_op))
+ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
{
- const expressionS *reloc_exp = &tok[ntok-1];
+ const expressionS *reloc_exp = &tok[ntok - 1];
const struct alpha_reloc_op_tag *r
= ALPHA_RELOC_TABLE (reloc_exp->X_op);
as_bad (_("Cannot use !%s!%d with %s"), r->name,
- (int)reloc_exp->X_add_number, "ldbu/ldwu");
+ (int) reloc_exp->X_add_number, "ldbu/ldwu");
ntok--;
}
#endif
@@ -3564,7 +3575,7 @@ emit_ldXu (tok, ntok, vlgsize)
set_tok_reg (newtok[1], AXP_REG_AT);
newtok[2] = newtok[0];
- assemble_tokens (extXl_op[(long)vlgsize], newtok, 3, 1);
+ assemble_tokens (extXl_op[(long) vlgsize], newtok, 3, 1);
}
}
@@ -3577,7 +3588,7 @@ emit_ldX (tok, ntok, vlgsize)
const PTR vlgsize;
{
emit_ldXu (tok, ntok, vlgsize);
- assemble_tokens (sextX_op[(long)vlgsize], tok, 1, 1);
+ assemble_tokens (sextX_op[(long) vlgsize], tok, 1, 1);
}
/* Load an integral value from an unaligned address as an unsigned
@@ -3589,7 +3600,7 @@ emit_uldXu (tok, ntok, vlgsize)
int ntok;
const PTR vlgsize;
{
- long lgsize = (long)vlgsize;
+ long lgsize = (long) vlgsize;
expressionS newtok[3];
if (alpha_noat_on)
@@ -3611,7 +3622,7 @@ emit_uldXu (tok, ntok, vlgsize)
/* emit "ldq_u $t10, size-1($at)" */
set_tok_reg (newtok[0], AXP_REG_T10);
- set_tok_const (newtok[1], (1<<lgsize)-1);
+ set_tok_const (newtok[1], (1 << lgsize) - 1);
assemble_tokens ("ldq_u", newtok, 3, 1);
/* emit "extXl $t9, $at, $t9" */
@@ -3646,7 +3657,7 @@ emit_uldX (tok, ntok, vlgsize)
const PTR vlgsize;
{
emit_uldXu (tok, ntok, vlgsize);
- assemble_tokens (sextX_op[(long)vlgsize], tok, 1, 1);
+ assemble_tokens (sextX_op[(long) vlgsize], tok, 1, 1);
}
/* Implement the ldil macro. */
@@ -3660,17 +3671,17 @@ emit_ldil (tok, ntok, unused)
expressionS newtok[2];
#ifdef RELOC_OP_P
- if (ntok && USER_RELOC_P (tok[ntok-1].X_op))
+ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
{
- const expressionS *reloc_exp = &tok[ntok-1];
+ const expressionS *reloc_exp = &tok[ntok - 1];
const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op);
as_bad (_("Cannot use !%s!%d with %s"), r->name,
- (int)reloc_exp->X_add_number, "ldil");
+ (int) reloc_exp->X_add_number, "ldil");
ntok--;
}
#endif
- memcpy (newtok, tok, sizeof(newtok));
+ memcpy (newtok, tok, sizeof (newtok));
newtok[1].X_add_number = sign_extend_32 (tok[1].X_add_number);
assemble_tokens ("lda", newtok, ntok, 1);
@@ -3684,7 +3695,7 @@ emit_stX (tok, ntok, vlgsize)
int ntok;
const PTR vlgsize;
{
- int lgsize = (int)(long)vlgsize;
+ int lgsize = (int) (long) vlgsize;
if (alpha_target & AXP_OPCODE_BWX)
emit_loadstore (tok, ntok, stX_op[lgsize]);
@@ -3693,7 +3704,7 @@ emit_stX (tok, ntok, vlgsize)
expressionS newtok[3];
if (alpha_noat_on)
- as_bad(_("macro requires $at register while noat in effect"));
+ as_bad (_("macro requires $at register while noat in effect"));
/* emit "lda $at, exp" */
@@ -3742,7 +3753,7 @@ emit_ustX (tok, ntok, vlgsize)
int ntok;
const PTR vlgsize;
{
- int lgsize = (int)(long)vlgsize;
+ int lgsize = (int) (long) vlgsize;
expressionS newtok[3];
/* emit "lda $at, exp" */
@@ -3761,7 +3772,7 @@ emit_ustX (tok, ntok, vlgsize)
/* emit "ldq_u $10, size-1($at)" */
set_tok_reg (newtok[0], AXP_REG_T10);
- set_tok_const (newtok[1], (1 << lgsize)-1);
+ set_tok_const (newtok[1], (1 << lgsize) - 1);
assemble_tokens ("ldq_u", newtok, 3, 1);
/* emit "insXl src, $at, $t11" */
@@ -3812,7 +3823,7 @@ emit_ustX (tok, ntok, vlgsize)
/* emit "stq_u $t10, size-1($at)" */
set_tok_reg (newtok[0], AXP_REG_T10);
- set_tok_const (newtok[1], (1 << lgsize)-1);
+ set_tok_const (newtok[1], (1 << lgsize) - 1);
assemble_tokens ("stq_u", newtok, 3, 1);
}
@@ -3825,7 +3836,7 @@ emit_sextX (tok, ntok, vlgsize)
int ntok;
const PTR vlgsize;
{
- long lgsize = (long)vlgsize;
+ long lgsize = (long) vlgsize;
if (alpha_target & AXP_OPCODE_BWX)
assemble_tokens (sextX_op[lgsize], tok, ntok, 0);
@@ -3835,14 +3846,14 @@ emit_sextX (tok, ntok, vlgsize)
expressionS newtok[3];
#ifdef RELOC_OP_P
- if (ntok && USER_RELOC_P (tok[ntok-1].X_op))
+ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
{
- const expressionS *reloc_exp = &tok[ntok-1];
+ const expressionS *reloc_exp = &tok[ntok - 1];
const struct alpha_reloc_op_tag *r
= ALPHA_RELOC_TABLE (reloc_exp->X_op);
as_bad (_("Cannot use !%s!%d with %s"), r->name,
- (int)reloc_exp->X_add_number, "setxt");
+ (int) reloc_exp->X_add_number, "setxt");
ntok--;
}
#endif
@@ -3894,12 +3905,12 @@ emit_division (tok, ntok, symname)
expressionS newtok[3];
#ifdef RELOC_OP_P
- if (ntok && USER_RELOC_P (tok[ntok-1].X_op))
+ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
{
- const expressionS *reloc_exp = &tok[ntok-1];
+ const expressionS *reloc_exp = &tok[ntok - 1];
const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op);
as_bad (_("Cannot use !%s!%d with %s"), r->name,
- (int)reloc_exp->X_add_number, (char char *)symname);
+ (int) reloc_exp->X_add_number, (char char *) symname);
ntok--;
}
#endif
@@ -3945,7 +3956,7 @@ emit_division (tok, ntok, symname)
{
set_tok_reg (newtok[0], xr);
set_tok_reg (newtok[1], AXP_REG_R16);
- assemble_tokens ("mov", newtok, 2, 1);
+ assemble_tokens ("mov", newtok, 2, 1);
}
if (yr != AXP_REG_R16 && yr != AXP_REG_R17)
@@ -3956,7 +3967,7 @@ emit_division (tok, ntok, symname)
}
}
- sym = symbol_find_or_make ((const char *)symname);
+ sym = symbol_find_or_make ((const char *) symname);
set_tok_reg (newtok[0], AXP_REG_AT);
set_tok_sym (newtok[1], sym, 0);
@@ -4004,12 +4015,12 @@ emit_division (tok, ntok, symname)
expressionS newtok[3];
#ifdef RELOC_OP_P
- if (ntok && USER_RELOC_P (tok[ntok-1].X_op))
+ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
{
- const expressionS *reloc_exp = &tok[ntok-1];
+ const expressionS *reloc_exp = &tok[ntok - 1];
const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op);
as_bad (_("Cannot use !%s!%d with %s"), r->name,
- (int)reloc_exp->X_add_number, (const char *)symname);
+ (int) reloc_exp->X_add_number, (const char *) symname);
ntok--;
}
#endif
@@ -4022,7 +4033,7 @@ emit_division (tok, ntok, symname)
else
rr = regno (tok[2].X_add_number);
- sym = symbol_find_or_make ((const char *)symname);
+ sym = symbol_find_or_make ((const char *) symname);
/* Move the operands into the right place */
if (yr == AXP_REG_T10 && xr == AXP_REG_T11)
@@ -4057,7 +4068,7 @@ emit_division (tok, ntok, symname)
{
set_tok_reg (newtok[0], xr);
set_tok_reg (newtok[1], AXP_REG_T10);
- assemble_tokens ("mov", newtok, 2, 1);
+ assemble_tokens ("mov", newtok, 2, 1);
}
if (yr != AXP_REG_T10 && yr != AXP_REG_T11)
@@ -4111,12 +4122,12 @@ emit_jsrjmp (tok, ntok, vopname)
int r, tokidx = 0, lituse = 0;
#ifdef RELOC_OP_P
- if (ntok && USER_RELOC_P (tok[ntok-1].X_op))
+ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
{
- const expressionS *reloc_exp = &tok[ntok-1];
+ const expressionS *reloc_exp = &tok[ntok - 1];
const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op);
as_bad (_("Cannot use !%s!%d with %s"), r->name,
- (int)reloc_exp->X_add_number, opname);
+ (int) reloc_exp->X_add_number, opname);
ntok--;
}
#endif
@@ -4138,7 +4149,7 @@ emit_jsrjmp (tok, ntok, vopname)
{
int basereg = alpha_gp_register;
lituse = load_expression (r = AXP_REG_PV, &tok[tokidx], &basereg, NULL,
- (const expressionS *)0);
+ (const expressionS *) 0);
}
#endif
@@ -4162,7 +4173,7 @@ emit_jsrjmp (tok, ntok, vopname)
if (insn.nfixups > 0)
{
memmove (&insn.fixups[1], &insn.fixups[0],
- sizeof(struct alpha_fixup) * insn.nfixups);
+ sizeof (struct alpha_fixup) * insn.nfixups);
}
insn.nfixups++;
insn.fixups[0].reloc = BFD_RELOC_ALPHA_LITUSE;
@@ -4183,17 +4194,17 @@ emit_retjcr (tok, ntok, vopname)
int ntok;
const PTR vopname;
{
- const char *opname = (const char *)vopname;
+ const char *opname = (const char *) vopname;
expressionS newtok[3];
int r, tokidx = 0;
#ifdef RELOC_OP_P
- if (ntok && USER_RELOC_P (tok[ntok-1].X_op))
+ if (ntok && USER_RELOC_P (tok[ntok - 1].X_op))
{
- const expressionS *reloc_exp = &tok[ntok-1];
+ const expressionS *reloc_exp = &tok[ntok - 1];
const struct alpha_reloc_op_tag *r = ALPHA_RELOC_TABLE (reloc_exp->X_op);
as_bad (_("Cannot use !%s!%d with %s"), r->name,
- (int)reloc_exp->X_add_number, opname);
+ (int) reloc_exp->X_add_number, opname);
ntok--;
}
#endif
@@ -4216,7 +4227,7 @@ emit_retjcr (tok, ntok, vopname)
if (tokidx < ntok)
newtok[2] = tok[tokidx];
else
- set_tok_const (newtok[2], strcmp(opname, "ret") == 0);
+ set_tok_const (newtok[2], strcmp (opname, "ret") == 0);
assemble_tokens (opname, newtok, 3, 0);
}
@@ -4309,7 +4320,7 @@ s_alpha_comm (ignore)
{
offsetT align;
- input_line_pointer++;
+ input_line_pointer++;
align = get_absolute_expression ();
bfd_set_section_alignment (stdoutput, new_seg, align);
}
@@ -4324,7 +4335,7 @@ s_alpha_comm (ignore)
#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),
@@ -4343,7 +4354,7 @@ s_alpha_comm (ignore)
#endif
else
{
-#ifdef OBJ_EVAX
+#ifdef OBJ_EVAX
subseg_set (new_seg, 0);
p = frag_more (temp);
new_seg->flags |= SEC_IS_COMMON;
@@ -4499,7 +4510,7 @@ s_alpha_end (dummy)
(expressionS *) xmalloc (sizeof (expressionS));
symbol_get_obj (sym)->size->X_op = O_subtract;
symbol_get_obj (sym)->size->X_add_symbol
- = symbol_new ("L0\001", now_seg, frag_now_fix (), frag_now);
+ = symbol_new ("L0\001", now_seg, frag_now_fix (), frag_now);
symbol_get_obj (sym)->size->X_op_symbol = sym;
symbol_get_obj (sym)->size->X_add_number = 0;
}
@@ -4519,9 +4530,9 @@ s_alpha_mask (fp)
if (ECOFF_DEBUGGING)
{
if (fp)
- ecoff_directive_fmask (0);
+ ecoff_directive_fmask (0);
else
- ecoff_directive_mask (0);
+ ecoff_directive_mask (0);
}
else
discard_rest_of_line ();
@@ -4555,19 +4566,87 @@ s_alpha_prologue (ignore)
switch (arg)
{
- case 0: /* No PV required. */
- S_SET_OTHER (sym, STO_ALPHA_NOPV);
- break;
- case 1: /* Std GP load. */
- S_SET_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;
- }
+ 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;
+ }
+}
+
+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
@@ -4580,17 +4659,15 @@ s_alpha_coff_wrapper (which)
ecoff_directive_def,
ecoff_directive_dim,
ecoff_directive_endef,
- ecoff_directive_file,
ecoff_directive_scl,
ecoff_directive_tag,
ecoff_directive_val,
- ecoff_directive_loc,
};
- assert (which >= 0 && which < (int)(sizeof(fns)/sizeof(*fns)));
+ assert (which >= 0 && which < (int) (sizeof (fns)/sizeof (*fns)));
if (ECOFF_DEBUGGING)
- (*fns[which])(0);
+ (*fns[which]) (0);
else
{
as_bad (_("ECOFF debugging is disabled."));
@@ -4600,16 +4677,16 @@ s_alpha_coff_wrapper (which)
#endif /* OBJ_ELF */
#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] =
+ static char *section_name[EVAX_SECTION_COUNT + 1] =
{ "NULL", ".rdata", ".comm", ".link", ".ctors", ".dtors" };
if ((secid <= 0) || (secid > EVAX_SECTION_COUNT))
@@ -4626,7 +4703,6 @@ s_alpha_section (secid)
alpha_current_align = 0;
}
-
/* Parse .ent directives. */
static void
@@ -4664,7 +4740,6 @@ s_alpha_ent (ignore)
return;
}
-
/* Parse .frame <framreg>,<framesize>,RA,<rsa_offset> directives. */
static void
@@ -4757,15 +4832,15 @@ s_alpha_pdesc (ignore)
name = input_line_pointer;
name_end = get_symbol_end ();
- if (strncmp(name, "stack", 5) == 0)
+ if (strncmp (name, "stack", 5) == 0)
{
alpha_evax_proc.pdsckind = PDSC_S_K_KIND_FP_STACK;
}
- else if (strncmp(name, "reg", 3) == 0)
+ else if (strncmp (name, "reg", 3) == 0)
{
alpha_evax_proc.pdsckind = PDSC_S_K_KIND_FP_REGISTER;
}
- else if (strncmp(name, "null", 4) == 0)
+ else if (strncmp (name, "null", 4) == 0)
{
alpha_evax_proc.pdsckind = PDSC_S_K_KIND_NULL;
}
@@ -4790,34 +4865,33 @@ s_alpha_pdesc (ignore)
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;
+ | ((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;
+ 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;
+ *(p + 4) = 0;
+ *(p + 5) = alpha_evax_proc.type & 0x0f;
/* Signature offset. */
- md_number_to_chars (p+6, (valueT)0, 2);
+ 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);
+ 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;
@@ -4829,12 +4903,12 @@ s_alpha_pdesc (ignore)
seginfo->literal_pool_size += 8;
/* pdesc+16: Size. */
- md_number_to_chars (p, (valueT)alpha_evax_proc.framesize, 4);
+ md_number_to_chars (p, (valueT) alpha_evax_proc.framesize, 4);
- md_number_to_chars (p+4, (valueT)0, 2);
+ md_number_to_chars (p + 4, (valueT) 0, 2);
/* Entry length. */
- md_number_to_chars (p+6, alpha_evax_proc.prologue, 2);
+ md_number_to_chars (p + 6, alpha_evax_proc.prologue, 2);
if (alpha_evax_proc.pdsckind == PDSC_S_K_KIND_FP_REGISTER)
return;
@@ -4848,12 +4922,11 @@ s_alpha_pdesc (ignore)
/* 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);
+ md_number_to_chars (p + 4, alpha_evax_proc.fmask, 4);
return;
}
-
/* Support for crash debug on vms. */
static void
@@ -4889,12 +4962,11 @@ s_alpha_name (ignore)
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);
+ fix_new_exp (frag_now, p - frag_now->fr_literal, 8, &exp, 0, BFD_RELOC_64);
return;
}
-
static void
s_alpha_linkage (ignore)
int ignore;
@@ -4923,7 +4995,6 @@ s_alpha_linkage (ignore)
return;
}
-
static void
s_alpha_code_address (ignore)
int ignore;
@@ -4952,7 +5023,6 @@ s_alpha_code_address (ignore)
return;
}
-
static void
s_alpha_fp_save (ignore)
int ignore;
@@ -4964,7 +5034,6 @@ s_alpha_fp_save (ignore)
return;
}
-
static void
s_alpha_mask (ignore)
int ignore;
@@ -4979,14 +5048,13 @@ s_alpha_mask (ignore)
else
{
alpha_evax_proc.imask = val;
- (void)get_absolute_expression ();
+ (void) get_absolute_expression ();
}
demand_empty_rest_of_line ();
return;
}
-
static void
s_alpha_fmask (ignore)
int ignore;
@@ -5022,7 +5090,6 @@ s_alpha_end (ignore)
return;
}
-
static void
s_alpha_file (ignore)
int ignore;
@@ -5064,13 +5131,13 @@ s_alpha_gprel32 (ignore)
switch (e.X_op)
{
case O_constant:
- e.X_add_symbol = section_symbol(absolute_section);
+ e.X_add_symbol = section_symbol (absolute_section);
e.X_op = O_symbol;
/* FALLTHRU */
case O_symbol:
break;
default:
- abort();
+ abort ();
}
#else
#ifdef OBJ_ECOFF
@@ -5097,7 +5164,7 @@ s_alpha_gprel32 (ignore)
p = frag_more (4);
memset (p, 0, 4);
- fix_new_exp (frag_now, p-frag_now->fr_literal, 4,
+ fix_new_exp (frag_now, p - frag_now->fr_literal, 4,
&e, 0, BFD_RELOC_GPREL32);
}
@@ -5366,45 +5433,43 @@ s_alpha_arch (ignored)
ch = get_symbol_end ();
for (p = cpu_types; p->name; ++p)
- if (strcmp(name, p->name) == 0)
+ if (strcmp (name, p->name) == 0)
{
- alpha_target_name = p->name, alpha_target = p->flags;
+ alpha_target_name = p->name, alpha_target = p->flags;
goto found;
}
- as_warn("Unknown CPU identifier `%s'", name);
+ 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;
+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;
+ 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;
}
return;
}
@@ -5412,8 +5477,7 @@ alpha_print_token(f, exp)
/* The target specific pseudo-ops which we support. */
-const pseudo_typeS md_pseudo_table[] =
-{
+const pseudo_typeS md_pseudo_table[] = {
#ifdef OBJ_ECOFF
{"comm", s_alpha_comm, 0}, /* osf1 compiler does this */
{"rdata", s_alpha_rdata, 0},
@@ -5455,17 +5519,19 @@ const pseudo_typeS md_pseudo_table[] =
{"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'},
/* 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},
- {"file", s_alpha_coff_wrapper, 5},
- {"scl", s_alpha_coff_wrapper, 6},
- {"tag", s_alpha_coff_wrapper, 7},
- {"val", s_alpha_coff_wrapper, 8},
- {"loc", s_alpha_coff_wrapper, 9},
+ {"scl", s_alpha_coff_wrapper, 5},
+ {"tag", s_alpha_coff_wrapper, 6},
+ {"val", s_alpha_coff_wrapper, 7},
#else
{"prologue", s_ignore, 0},
#endif
@@ -5518,7 +5584,6 @@ const pseudo_typeS md_pseudo_table[] =
{NULL, 0, 0},
};
-
/* Build a BFD section with its flags set appropriately for the .lita,
.lit8, or .lit4 sections. */
@@ -5566,7 +5631,8 @@ select_gp_value ()
assert (alpha_gp_value == 0);
/* Get minus-one in whatever width... */
- alpha_gp_value = 0; alpha_gp_value--;
+ alpha_gp_value = 0;
+ alpha_gp_value--;
/* Select the smallest VMA of these existing sections. */
maybe_set_gp (alpha_lita_section);
@@ -5607,27 +5673,8 @@ alpha_align (n, pfill, label, force)
if (pfill == NULL)
{
- if (n > 2
- && (bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0)
- {
- static char const unop[4] = { 0x00, 0x00, 0xe0, 0x2f };
- static char const nopunop[8] = {
- 0x1f, 0x04, 0xff, 0x47,
- 0x00, 0x00, 0xe0, 0x2f
- };
-
- /* First, make sure we're on a four-byte boundary, in case
- someone has been putting .byte values into the text
- section. The DEC assembler silently fills with unaligned
- no-op instructions. This will zero-fill, then nop-fill
- with proper alignment. */
- if (alpha_current_align < 2)
- frag_align (2, 0, 0);
- if (alpha_current_align < 3)
- frag_align_pattern (3, unop, sizeof unop, 0);
- if (n > 3)
- frag_align_pattern (n, nopunop, sizeof nopunop, 0);
- }
+ if (subseg_text_p (now_seg))
+ frag_align_code (n, 0);
else
frag_align (n, 0, 0);
}
@@ -5644,10 +5691,55 @@ alpha_align (n, pfill, label, force)
record_alignment (now_seg, n);
- /* ??? if alpha_flag_relax && force && elf, record the requested alignment
+ /* ??? 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, 0xe0, 0x2f };
+ static char const nopunop[8] = {
+ 0x1f, 0x04, 0xff, 0x47,
+ 0x00, 0x00, 0xe0, 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. */
diff --git a/contrib/binutils/gas/config/tc-alpha.h b/contrib/binutils/gas/config/tc-alpha.h
index 632b04e..7edc412 100644
--- a/contrib/binutils/gas/config/tc-alpha.h
+++ b/contrib/binutils/gas/config/tc-alpha.h
@@ -90,6 +90,11 @@ 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));
@@ -146,3 +151,5 @@ do { \
(long)fixP->tc_fix_data.next_lituse); \
} while (0)
#endif
+
+#define DWARF2_LINE_MIN_INSN_LENGTH 4
diff --git a/contrib/binutils/gas/config/tc-arm.c b/contrib/binutils/gas/config/tc-arm.c
index 04f0060..514dba7 100644
--- a/contrib/binutils/gas/config/tc-arm.c
+++ b/contrib/binutils/gas/config/tc-arm.c
@@ -1,5 +1,6 @@
/* tc-arm.c -- Assemble for the ARM
- Copyright (C) 1994, 95, 96, 97, 98, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1994, 95, 96, 97, 98, 1999, 2000
+ Free Software Foundation, Inc.
Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
Modified by David Taylor (dtaylor@armltd.co.uk)
@@ -25,7 +26,7 @@
#define NO_RELOC 0
#include "as.h"
-/* need TARGET_CPU */
+/* Need TARGET_CPU. */
#include "config.h"
#include "subsegs.h"
#include "obstack.h"
@@ -34,6 +35,7 @@
#ifdef OBJ_ELF
#include "elf/arm.h"
+#include "dwarf2dbg.h"
#endif
/* Types of processor to assemble for. */
@@ -42,46 +44,53 @@
#define ARM_3 0x00000004
#define ARM_250 ARM_3
#define ARM_6 0x00000008
-#define ARM_7 ARM_6 /* same core instruction set */
-#define ARM_8 ARM_6 /* same core instruction set */
-#define ARM_9 ARM_6 /* same core instruction set */
+#define ARM_7 ARM_6 /* Same core instruction set. */
+#define ARM_8 ARM_6 /* Same core instruction set. */
+#define ARM_9 ARM_6 /* Same core instruction set. */
#define ARM_CPU_MASK 0x0000000f
-/* The following bitmasks control CPU extensions (ARM7 onwards): */
-#define ARM_LONGMUL 0x00000010 /* allow long multiplies */
-#define ARM_HALFWORD 0x00000020 /* allow half word loads */
-#define ARM_THUMB 0x00000040 /* allow BX instruction */
-#define ARM_EXT_V5 0x00000080 /* allow CLZ etc */
-#define ARM_EXT_V5E 0x00000200 /* "El Segundo" */
+/* The following bitmasks control CPU extensions (ARM7 onwards): */
+#define ARM_EXT_LONGMUL 0x00000010 /* Allow long multiplies. */
+#define ARM_EXT_HALFWORD 0x00000020 /* Allow half word loads. */
+#define ARM_EXT_THUMB 0x00000040 /* Allow BX instruction. */
+#define ARM_EXT_V5 0x00000080 /* Allow CLZ, etc. */
+#define ARM_EXT_V5E 0x00000100 /* "El Segundo". */
+#define ARM_EXT_XSCALE 0x00000200 /* Allow MIA etc. */
/* Architectures are the sum of the base and extensions. */
-#define ARM_ARCH_V4 (ARM_7 | ARM_LONGMUL | ARM_HALFWORD)
-#define ARM_ARCH_V4T (ARM_ARCH_V4 | ARM_THUMB)
+#define ARM_ARCH_V3M ARM_EXT_LONGMUL
+#define ARM_ARCH_V4 (ARM_ARCH_V3M | ARM_EXT_HALFWORD)
+#define ARM_ARCH_V4T (ARM_ARCH_V4 | ARM_EXT_THUMB)
#define ARM_ARCH_V5 (ARM_ARCH_V4 | ARM_EXT_V5)
-#define ARM_ARCH_V5T (ARM_ARCH_V5 | ARM_THUMB)
+#define ARM_ARCH_V5T (ARM_ARCH_V5 | ARM_EXT_THUMB)
+#define ARM_ARCH_V5TE (ARM_ARCH_V5T | ARM_EXT_V5E)
+#define ARM_ARCH_XSCALE (ARM_ARCH_V5TE | ARM_EXT_XSCALE)
/* Some useful combinations: */
#define ARM_ANY 0x00ffffff
#define ARM_2UP (ARM_ANY - ARM_1)
-#define ARM_ALL ARM_2UP /* Not arm1 only */
+#define ARM_ALL ARM_2UP /* Not arm1 only. */
#define ARM_3UP 0x00fffffc
-#define ARM_6UP 0x00fffff8 /* Includes ARM7 */
+#define ARM_6UP 0x00fffff8 /* Includes ARM7. */
#define FPU_CORE 0x80000000
#define FPU_FPA10 0x40000000
#define FPU_FPA11 0x40000000
#define FPU_NONE 0
-/* Some useful combinations */
-#define FPU_ALL 0xff000000 /* Note this is ~ARM_ANY */
-#define FPU_MEMMULTI 0x7f000000 /* Not fpu_core */
+/* Some useful combinations. */
+#define FPU_ALL 0xff000000 /* Note this is ~ARM_ANY. */
+#define FPU_MEMMULTI 0x7f000000 /* Not fpu_core. */
-
#ifndef CPU_DEFAULT
+#if defined __XSCALE__
+#define CPU_DEFAULT (ARM_9 | ARM_ARCH_XSCALE)
+#else
#if defined __thumb__
-#define CPU_DEFAULT (ARM_ARCH_V4 | ARM_THUMB)
+#define CPU_DEFAULT (ARM_7 | ARM_ARCH_V4T)
#else
-#define CPU_DEFAULT ARM_ALL
+#define CPU_DEFAULT ARM_ALL
+#endif
#endif
#endif
@@ -90,17 +99,18 @@
#endif
#define streq(a, b) (strcmp (a, b) == 0)
-#define skip_whitespace(str) while (* (str) == ' ') ++ (str)
+#define skip_whitespace(str) while (*(str) == ' ') ++(str)
-static unsigned long cpu_variant = CPU_DEFAULT | FPU_DEFAULT;
+static unsigned long cpu_variant = CPU_DEFAULT | FPU_DEFAULT;
static int target_oabi = 0;
#if defined OBJ_COFF || defined OBJ_ELF
-/* Flags stored in private area of BFD structure */
-static boolean uses_apcs_26 = false;
-static boolean support_interwork = false;
-static boolean uses_apcs_float = false;
-static boolean pic_code = false;
+/* Flags stored in private area of BFD structure. */
+static boolean uses_apcs_26 = false;
+static boolean atpcs = false;
+static boolean support_interwork = false;
+static boolean uses_apcs_float = false;
+static boolean pic_code = false;
#endif
/* This array holds the chars that always start a comment. If the
@@ -116,19 +126,15 @@ CONST char comment_chars[] = "@";
/* Also note that comments like this one will always work. */
CONST char line_comment_chars[] = "#";
-#ifdef TE_LINUX
CONST char line_separator_chars[] = ";";
-#else
-CONST char line_separator_chars[] = "";
-#endif
/* 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 */
+/* Chars that mean this number is a floating point constant. */
+/* As in 0f12.456 */
+/* or 0d1.2345e12 */
CONST char FLT_CHARS[] = "rRsSfFdDxXeEpP";
@@ -137,14 +143,19 @@ CONST char FLT_CHARS[] = "rRsSfFdDxXeEpP";
#define is_immediate_prefix(C) ((C) == '#' || (C) == '$')
#ifdef OBJ_ELF
-symbolS * GOT_symbol; /* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
+/* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
+symbolS * GOT_symbol;
#endif
-CONST int md_reloc_size = 8; /* Size of relocation record */
+/* 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;
-static int thumb_mode = 0; /* 0: assemble for ARM, 1: assemble for Thumb,
- 2: assemble for Thumb even though target cpu
- does not support thumb instructions. */
typedef struct arm_fix
{
int thumb_mode;
@@ -157,35 +168,61 @@ struct arm_it
int suffix;
int size;
struct
- {
- bfd_reloc_code_real_type type;
- expressionS exp;
- int pc_rel;
- } reloc;
+ {
+ bfd_reloc_code_real_type type;
+ expressionS exp;
+ int pc_rel;
+ } reloc;
};
struct arm_it inst;
-struct asm_shift
+enum asm_shift_index
{
- CONST char * template;
- unsigned long value;
+ SHIFT_LSL = 0,
+ SHIFT_LSR,
+ SHIFT_ASR,
+ SHIFT_ROR,
+ SHIFT_RRX
};
-static CONST struct asm_shift shift[] =
-{
- {"asl", 0},
- {"lsl", 0},
- {"lsr", 0x00000020},
- {"asr", 0x00000040},
- {"ror", 0x00000060},
- {"rrx", 0x00000060},
- {"ASL", 0},
- {"LSL", 0},
- {"LSR", 0x00000020},
- {"ASR", 0x00000040},
- {"ROR", 0x00000060},
- {"RRX", 0x00000060}
+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 }
};
#define NO_SHIFT_RESTRICT 1
@@ -193,7 +230,7 @@ static CONST struct asm_shift shift[] =
#define NUM_FLOAT_VALS 8
-CONST char * fp_const[] =
+CONST char * fp_const[] =
{
"0.0", "1.0", "2.0", "3.0", "4.0", "5.0", "0.5", "10.0", 0
};
@@ -217,9 +254,11 @@ LITTLENUM_TYPE fp_values[NUM_FLOAT_VALS][MAX_LITTLENUMS];
#define CP_T_UD 0x00800000
#define CP_T_WB 0x00200000
-#define CONDS_BIT (0x00100000)
-#define LOAD_BIT (0x00100000)
-#define TRANS_BIT (0x00200000)
+#define CONDS_BIT 0x00100000
+#define LOAD_BIT 0x00100000
+#define TRANS_BIT 0x00200000
+
+#define DOUBLE_LOAD_FLAG 0x00000001
struct asm_cond
{
@@ -230,7 +269,7 @@ struct asm_cond
/* This is to save a hash look-up in the common case. */
#define COND_ALWAYS 0xe0000000
-static CONST struct asm_cond conds[] =
+static CONST struct asm_cond conds[] =
{
{"eq", 0x00000000},
{"ne", 0x10000000},
@@ -255,8 +294,8 @@ static CONST struct asm_cond conds[] =
the set_bits: */
struct asm_flg
{
- CONST char * template; /* Basic flag string */
- unsigned long set_bits; /* Bits to set */
+ CONST char * template; /* Basic flag string. */
+ unsigned long set_bits; /* Bits to set. */
};
static CONST struct asm_flg s_flag[] =
@@ -267,6 +306,7 @@ static CONST struct asm_flg s_flag[] =
static CONST struct asm_flg ldr_flags[] =
{
+ {"d", DOUBLE_LOAD_FLAG},
{"b", 0x00400000},
{"t", TRANS_BIT},
{"bt", 0x00400000 | TRANS_BIT},
@@ -278,6 +318,7 @@ static CONST struct asm_flg ldr_flags[] =
static CONST struct asm_flg str_flags[] =
{
+ {"d", DOUBLE_LOAD_FLAG},
{"b", 0x00400000},
{"t", TRANS_BIT},
{"bt", 0x00400000 | TRANS_BIT},
@@ -303,24 +344,24 @@ static CONST struct asm_flg ldm_flags[] =
{"ed", 0x01800000},
{"fd", 0x00800000},
{"ea", 0x01000000},
- {"fa", 0x08000000},
+ {"fa", 0x00000000},
{"ib", 0x01800000},
{"ia", 0x00800000},
{"db", 0x01000000},
- {"da", 0x08000000},
+ {"da", 0x00000000},
{NULL, 0}
};
static CONST struct asm_flg stm_flags[] =
{
- {"ed", 0x08000000},
+ {"ed", 0x00000000},
{"fd", 0x01000000},
{"ea", 0x00800000},
{"fa", 0x01800000},
{"ib", 0x01800000},
{"ia", 0x00800000},
{"db", 0x01000000},
- {"da", 0x08000000},
+ {"da", 0x00000000},
{NULL, 0}
};
@@ -386,8 +427,11 @@ struct asm_psr
unsigned long field;
};
-#define SPSR_BIT (1 << 22) /* The bit that distnguishes CPSR and SPSR. */
-#define PSR_SHIFT 16 /* How many bits to shift the PSR_xxx bits up by. */
+/* The bit that distnguishes 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)
@@ -403,7 +447,7 @@ static CONST struct asm_psr psrs[] =
{"CPSR_flg", true, PSR_f},
{"CPSR_f", true, PSR_f},
{"SPSR_flg", false, PSR_f},
- {"SPSR_f", false, PSR_f},
+ {"SPSR_f", false, PSR_f},
{"CPSR_c", true, PSR_c},
{"CPSR_ctl", true, PSR_c},
{"SPSR_c", false, PSR_c},
@@ -412,24 +456,131 @@ static CONST struct asm_psr psrs[] =
{"CPSR_s", true, PSR_s},
{"SPSR_x", false, PSR_x},
{"SPSR_s", false, PSR_s},
- /* For backwards compatability with older toolchain we also
- support lower case versions of some of these flags. */
- {"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}
+ /* 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},
};
/* Functions called by parser. */
-/* ARM instructions */
+/* ARM instructions. */
static void do_arit PARAMS ((char *, unsigned long));
static void do_cmp PARAMS ((char *, unsigned long));
static void do_mov PARAMS ((char *, unsigned long));
@@ -437,25 +588,49 @@ static void do_ldst PARAMS ((char *, unsigned long));
static void do_ldmstm PARAMS ((char *, unsigned long));
static void do_branch PARAMS ((char *, unsigned long));
static void do_swi PARAMS ((char *, unsigned long));
-/* Pseudo Op codes */
+/* Pseudo Op codes. */
static void do_adr PARAMS ((char *, unsigned long));
static void do_adrl PARAMS ((char *, unsigned long));
static void do_nop PARAMS ((char *, unsigned long));
-/* ARM 2 */
+/* ARM 2. */
static void do_mul PARAMS ((char *, unsigned long));
static void do_mla PARAMS ((char *, unsigned long));
-/* ARM 3 */
+/* ARM 3. */
static void do_swap PARAMS ((char *, unsigned long));
-/* ARM 6 */
+/* ARM 6. */
static void do_msr PARAMS ((char *, unsigned long));
static void do_mrs PARAMS ((char *, unsigned long));
-/* ARM 7M */
+/* ARM 7M. */
static void do_mull PARAMS ((char *, unsigned long));
-/* ARM THUMB */
+/* ARM THUMB. */
static void do_bx PARAMS ((char *, unsigned long));
-
-/* Coprocessor Instructions */
+/* ARM_EXT_XScale. */
+static void do_mia PARAMS ((char *, unsigned long));
+static void do_mar PARAMS ((char *, unsigned long));
+static void do_mra PARAMS ((char *, unsigned long));
+static void do_pld PARAMS ((char *, unsigned long));
+static void do_ldrd PARAMS ((char *, unsigned long));
+
+/* ARM_EXT_V5. */
+static void do_blx PARAMS ((char *, unsigned long));
+static void do_bkpt PARAMS ((char *, unsigned long));
+static void do_clz PARAMS ((char *, unsigned long));
+static void do_lstc2 PARAMS ((char *, unsigned long));
+static void do_cdp2 PARAMS ((char *, unsigned long));
+static void do_co_reg2 PARAMS ((char *, unsigned long));
+
+static void do_t_blx PARAMS ((char *));
+static void do_t_bkpt PARAMS ((char *));
+
+/* ARM_EXT_V5E. */
+static void do_smla PARAMS ((char *, unsigned long));
+static void do_smlal PARAMS ((char *, unsigned long));
+static void do_smul PARAMS ((char *, unsigned long));
+static void do_qadd PARAMS ((char *, unsigned long));
+static void do_co_reg2c PARAMS ((char *, unsigned long));
+
+/* Coprocessor Instructions. */
static void do_cdp PARAMS ((char *, unsigned long));
static void do_lstc PARAMS ((char *, unsigned long));
static void do_co_reg PARAMS ((char *, unsigned long));
@@ -512,30 +687,49 @@ static bfd_reloc_code_real_type arm_parse_reloc PARAMS ((void));
take 2: */
#define INSN_SIZE 4
-/* LONGEST_INST is the longest basic instruction name without conditions or
- flags. ARM7M has 4 of length 5. */
+/* LONGEST_INST is the longest basic instruction name without
+ conditions or flags. ARM7M has 4 of length 5. El Segundo
+ has one basic instruction name of length 7 (SMLALxy). */
+#define LONGEST_INST 7
-#define LONGEST_INST 5
+struct asm_opcode
+{
+ /* Basic string to match. */
+ CONST char * template;
+ /* Basic instruction code. */
+ unsigned long value;
-struct asm_opcode
-{
- CONST char * template; /* Basic string to match */
- unsigned long value; /* Basic instruction code */
+ /* Compulsory suffix that must follow conds. If "", then the
+ instruction is not conditional and must have no suffix. */
+ CONST char * comp_suffix;
+
+ /* Bits to toggle if flag 'n' set. */
+ CONST struct asm_flg * flags;
- /* Compulsory suffix that must follow conds. If "", then the
- instruction is not conditional and must have no suffix. */
- CONST char * comp_suffix;
+ /* Which CPU variants this exists for. */
+ unsigned long variants;
- CONST struct asm_flg * flags; /* Bits to toggle if flag 'n' set */
- unsigned long variants; /* Which CPU variants this exists for */
- /* Function to call to parse args */
- void (* parms) PARAMS ((char *, unsigned long));
+ /* Function to call to parse args. */
+ void (* parms) PARAMS ((char *, unsigned long));
};
-static CONST struct asm_opcode insns[] =
-{
-/* ARM Instructions */
+static CONST struct asm_opcode insns[] =
+{
+/* Intel XScale extensions to ARM V5 ISA. */
+ {"mia", 0x0e200010, NULL, NULL, ARM_EXT_XSCALE, do_mia},
+ {"miaph", 0x0e280010, NULL, NULL, ARM_EXT_XSCALE, do_mia},
+ {"miabb", 0x0e2c0010, NULL, NULL, ARM_EXT_XSCALE, do_mia},
+ {"miabt", 0x0e2d0010, NULL, NULL, ARM_EXT_XSCALE, do_mia},
+ {"miatb", 0x0e2e0010, NULL, NULL, ARM_EXT_XSCALE, do_mia},
+ {"miatt", 0x0e2f0010, NULL, NULL, ARM_EXT_XSCALE, do_mia},
+ {"mar", 0x0c400000, NULL, NULL, ARM_EXT_XSCALE, do_mar},
+ {"mra", 0x0c500000, NULL, NULL, ARM_EXT_XSCALE, do_mra},
+ {"pld", 0xf450f000, "", NULL, ARM_EXT_XSCALE, do_pld},
+ {"ldr", 0x000000d0, NULL, ldr_flags, ARM_ANY, do_ldrd},
+ {"str", 0x000000f0, NULL, str_flags, ARM_ANY, do_ldrd},
+
+/* ARM Instructions. */
{"and", 0x00000000, NULL, s_flag, ARM_ANY, do_arit},
{"eor", 0x00200000, NULL, s_flag, ARM_ANY, do_arit},
{"sub", 0x00400000, NULL, s_flag, ARM_ANY, do_arit},
@@ -564,36 +758,36 @@ static CONST struct asm_opcode insns[] =
{"bl", 0x0bfffffe, NULL, NULL, ARM_ANY, do_branch},
{"b", 0x0afffffe, NULL, NULL, ARM_ANY, do_branch},
#endif
-
-/* Pseudo ops */
+
+/* Pseudo ops. */
{"adr", 0x028f0000, NULL, NULL, ARM_ANY, do_adr},
{"adrl", 0x028f0000, NULL, NULL, ARM_ANY, do_adrl},
{"nop", 0x01a00000, NULL, NULL, ARM_ANY, do_nop},
-/* ARM 2 multiplies */
+/* ARM 2 multiplies. */
{"mul", 0x00000090, NULL, s_flag, ARM_2UP, do_mul},
{"mla", 0x00200090, NULL, s_flag, ARM_2UP, do_mla},
-/* ARM 3 - swp instructions */
+/* ARM 3 - swp instructions. */
{"swp", 0x01000090, NULL, byte_flag, ARM_3UP, do_swap},
-/* ARM 6 Coprocessor instructions */
+/* ARM 6 Coprocessor instructions. */
{"mrs", 0x010f0000, NULL, NULL, ARM_6UP, do_mrs},
{"msr", 0x0120f000, NULL, NULL, ARM_6UP, do_msr},
/* ScottB: our code uses 0x0128f000 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 - need signed/unsigned flags! */
- {"smull", 0x00c00090, NULL, s_flag, ARM_LONGMUL, do_mull},
- {"umull", 0x00800090, NULL, s_flag, ARM_LONGMUL, do_mull},
- {"smlal", 0x00e00090, NULL, s_flag, ARM_LONGMUL, do_mull},
- {"umlal", 0x00a00090, NULL, s_flag, ARM_LONGMUL, do_mull},
+/* ARM 7M long multiplies - need signed/unsigned flags! */
+ {"smull", 0x00c00090, NULL, s_flag, ARM_EXT_LONGMUL, do_mull},
+ {"umull", 0x00800090, NULL, s_flag, ARM_EXT_LONGMUL, do_mull},
+ {"smlal", 0x00e00090, NULL, s_flag, ARM_EXT_LONGMUL, do_mull},
+ {"umlal", 0x00a00090, NULL, s_flag, ARM_EXT_LONGMUL, do_mull},
-/* ARM THUMB interworking */
- {"bx", 0x012fff10, NULL, NULL, ARM_THUMB, do_bx},
+/* ARM THUMB interworking. */
+ {"bx", 0x012fff10, NULL, NULL, ARM_EXT_THUMB, do_bx},
-/* Floating point instructions */
+/* Floating point instructions. */
{"wfs", 0x0e200110, NULL, NULL, FPU_ALL, do_fp_ctrl},
{"rfs", 0x0e300110, NULL, NULL, FPU_ALL, do_fp_ctrl},
{"wfc", 0x0e400110, NULL, NULL, FPU_ALL, do_fp_ctrl},
@@ -647,6 +841,48 @@ static CONST struct asm_opcode insns[] =
{"stc", 0x0c000000, NULL, cplong_flag, ARM_2UP, do_lstc},
{"mcr", 0x0e000010, NULL, NULL, ARM_2UP, do_co_reg},
{"mrc", 0x0e100010, NULL, NULL, ARM_2UP, do_co_reg},
+
+/* ARM ISA extension 5. */
+/* Note: blx is actually 2 opcodes, so the .value is set dynamically.
+ And it's sometimes conditional and sometimes not. */
+ {"blx", 0, NULL, NULL, ARM_EXT_V5, do_blx},
+ {"clz", 0x016f0f10, NULL, NULL, ARM_EXT_V5, do_clz},
+ {"bkpt", 0xe1200070, "", NULL, ARM_EXT_V5, do_bkpt},
+ {"ldc2", 0xfc100000, "", cplong_flag, ARM_EXT_V5, do_lstc2},
+ {"stc2", 0xfc000000, "", cplong_flag, ARM_EXT_V5, do_lstc2},
+ {"cdp2", 0xfe000000, "", NULL, ARM_EXT_V5, do_cdp2},
+ {"mcr2", 0xfe000010, "", NULL, ARM_EXT_V5, do_co_reg2},
+ {"mrc2", 0xfe100010, "", NULL, ARM_EXT_V5, do_co_reg2},
+
+/* ARM ISA extension 5E, El Segundo. */
+ {"smlabb", 0x01000080, NULL, NULL, ARM_EXT_V5E, do_smla},
+ {"smlatb", 0x010000a0, NULL, NULL, ARM_EXT_V5E, do_smla},
+ {"smlabt", 0x010000c0, NULL, NULL, ARM_EXT_V5E, do_smla},
+ {"smlatt", 0x010000e0, NULL, NULL, ARM_EXT_V5E, do_smla},
+
+ {"smlawb", 0x01200080, NULL, NULL, ARM_EXT_V5E, do_smla},
+ {"smlawt", 0x012000c0, NULL, NULL, ARM_EXT_V5E, do_smla},
+
+ {"smlalbb",0x01400080, NULL, NULL, ARM_EXT_V5E, do_smlal},
+ {"smlaltb",0x014000a0, NULL, NULL, ARM_EXT_V5E, do_smlal},
+ {"smlalbt",0x014000c0, NULL, NULL, ARM_EXT_V5E, do_smlal},
+ {"smlaltt",0x014000e0, NULL, NULL, ARM_EXT_V5E, do_smlal},
+
+ {"smulbb", 0x01600080, NULL, NULL, ARM_EXT_V5E, do_smul},
+ {"smultb", 0x016000a0, NULL, NULL, ARM_EXT_V5E, do_smul},
+ {"smulbt", 0x016000c0, NULL, NULL, ARM_EXT_V5E, do_smul},
+ {"smultt", 0x016000e0, NULL, NULL, ARM_EXT_V5E, do_smul},
+
+ {"smulwb", 0x012000a0, NULL, NULL, ARM_EXT_V5E, do_smul},
+ {"smulwt", 0x012000e0, NULL, NULL, ARM_EXT_V5E, do_smul},
+
+ {"qadd", 0x01000050, NULL, NULL, ARM_EXT_V5E, do_qadd},
+ {"qdadd", 0x01400050, NULL, NULL, ARM_EXT_V5E, do_qadd},
+ {"qsub", 0x01200050, NULL, NULL, ARM_EXT_V5E, do_qadd},
+ {"qdsub", 0x01600050, NULL, NULL, ARM_EXT_V5E, do_qadd},
+
+ {"mcrr", 0x0c400000, NULL, NULL, ARM_EXT_V5E, do_co_reg2c},
+ {"mrrc", 0x0c500000, NULL, NULL, ARM_EXT_V5E, do_co_reg2c},
};
/* Defines for various bits that we will want to toggle. */
@@ -786,75 +1022,85 @@ static int thumb_reg PARAMS ((char ** str, int hi_lo));
#define THUMB_HALFWORD 1
#define THUMB_BYTE 0
-struct thumb_opcode
+struct thumb_opcode
{
- CONST char * template; /* Basic string to match */
- unsigned long value; /* Basic instruction code */
- int size;
- unsigned long variants; /* Which CPU variants this exists for */
- void (* parms) PARAMS ((char *)); /* Function to call to parse args */
+ /* Basic string to match. */
+ CONST char * template;
+
+ /* Basic instruction code. */
+ unsigned long value;
+
+ int size;
+
+ /* Which CPU variants this exists for. */
+ unsigned long variants;
+
+ /* Function to call to parse args. */
+ void (* parms) PARAMS ((char *));
};
static CONST struct thumb_opcode tinsns[] =
{
- {"adc", 0x4140, 2, ARM_THUMB, do_t_arit},
- {"add", 0x0000, 2, ARM_THUMB, do_t_add},
- {"and", 0x4000, 2, ARM_THUMB, do_t_arit},
- {"asr", 0x0000, 2, ARM_THUMB, do_t_asr},
- {"b", T_OPCODE_BRANCH, 2, ARM_THUMB, do_t_branch12},
- {"beq", 0xd0fe, 2, ARM_THUMB, do_t_branch9},
- {"bne", 0xd1fe, 2, ARM_THUMB, do_t_branch9},
- {"bcs", 0xd2fe, 2, ARM_THUMB, do_t_branch9},
- {"bhs", 0xd2fe, 2, ARM_THUMB, do_t_branch9},
- {"bcc", 0xd3fe, 2, ARM_THUMB, do_t_branch9},
- {"bul", 0xd3fe, 2, ARM_THUMB, do_t_branch9},
- {"blo", 0xd3fe, 2, ARM_THUMB, do_t_branch9},
- {"bmi", 0xd4fe, 2, ARM_THUMB, do_t_branch9},
- {"bpl", 0xd5fe, 2, ARM_THUMB, do_t_branch9},
- {"bvs", 0xd6fe, 2, ARM_THUMB, do_t_branch9},
- {"bvc", 0xd7fe, 2, ARM_THUMB, do_t_branch9},
- {"bhi", 0xd8fe, 2, ARM_THUMB, do_t_branch9},
- {"bls", 0xd9fe, 2, ARM_THUMB, do_t_branch9},
- {"bge", 0xdafe, 2, ARM_THUMB, do_t_branch9},
- {"blt", 0xdbfe, 2, ARM_THUMB, do_t_branch9},
- {"bgt", 0xdcfe, 2, ARM_THUMB, do_t_branch9},
- {"ble", 0xddfe, 2, ARM_THUMB, do_t_branch9},
- {"bal", 0xdefe, 2, ARM_THUMB, do_t_branch9},
- {"bic", 0x4380, 2, ARM_THUMB, do_t_arit},
- {"bl", 0xf7fffffe, 4, ARM_THUMB, do_t_branch23},
- {"bx", 0x4700, 2, ARM_THUMB, do_t_bx},
- {"cmn", T_OPCODE_CMN, 2, ARM_THUMB, do_t_arit},
- {"cmp", 0x0000, 2, ARM_THUMB, do_t_compare},
- {"eor", 0x4040, 2, ARM_THUMB, do_t_arit},
- {"ldmia", 0xc800, 2, ARM_THUMB, do_t_ldmstm},
- {"ldr", 0x0000, 2, ARM_THUMB, do_t_ldr},
- {"ldrb", 0x0000, 2, ARM_THUMB, do_t_ldrb},
- {"ldrh", 0x0000, 2, ARM_THUMB, do_t_ldrh},
- {"ldrsb", 0x5600, 2, ARM_THUMB, do_t_lds},
- {"ldrsh", 0x5e00, 2, ARM_THUMB, do_t_lds},
- {"ldsb", 0x5600, 2, ARM_THUMB, do_t_lds},
- {"ldsh", 0x5e00, 2, ARM_THUMB, do_t_lds},
- {"lsl", 0x0000, 2, ARM_THUMB, do_t_lsl},
- {"lsr", 0x0000, 2, ARM_THUMB, do_t_lsr},
- {"mov", 0x0000, 2, ARM_THUMB, do_t_mov},
- {"mul", T_OPCODE_MUL, 2, ARM_THUMB, do_t_arit},
- {"mvn", T_OPCODE_MVN, 2, ARM_THUMB, do_t_arit},
- {"neg", T_OPCODE_NEG, 2, ARM_THUMB, do_t_arit},
- {"orr", 0x4300, 2, ARM_THUMB, do_t_arit},
- {"pop", 0xbc00, 2, ARM_THUMB, do_t_push_pop},
- {"push", 0xb400, 2, ARM_THUMB, do_t_push_pop},
- {"ror", 0x41c0, 2, ARM_THUMB, do_t_arit},
- {"sbc", 0x4180, 2, ARM_THUMB, do_t_arit},
- {"stmia", 0xc000, 2, ARM_THUMB, do_t_ldmstm},
- {"str", 0x0000, 2, ARM_THUMB, do_t_str},
- {"strb", 0x0000, 2, ARM_THUMB, do_t_strb},
- {"strh", 0x0000, 2, ARM_THUMB, do_t_strh},
- {"swi", 0xdf00, 2, ARM_THUMB, do_t_swi},
- {"sub", 0x0000, 2, ARM_THUMB, do_t_sub},
- {"tst", T_OPCODE_TST, 2, ARM_THUMB, do_t_arit},
- /* Pseudo ops: */
- {"adr", 0x0000, 2, ARM_THUMB, do_t_adr},
- {"nop", 0x46C0, 2, ARM_THUMB, do_t_nop}, /* mov r8,r8 */
+ {"adc", 0x4140, 2, ARM_EXT_THUMB, do_t_arit},
+ {"add", 0x0000, 2, ARM_EXT_THUMB, do_t_add},
+ {"and", 0x4000, 2, ARM_EXT_THUMB, do_t_arit},
+ {"asr", 0x0000, 2, ARM_EXT_THUMB, do_t_asr},
+ {"b", T_OPCODE_BRANCH, 2, ARM_EXT_THUMB, do_t_branch12},
+ {"beq", 0xd0fe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bne", 0xd1fe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bcs", 0xd2fe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bhs", 0xd2fe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bcc", 0xd3fe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bul", 0xd3fe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"blo", 0xd3fe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bmi", 0xd4fe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bpl", 0xd5fe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bvs", 0xd6fe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bvc", 0xd7fe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bhi", 0xd8fe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bls", 0xd9fe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bge", 0xdafe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"blt", 0xdbfe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bgt", 0xdcfe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"ble", 0xddfe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bal", 0xdefe, 2, ARM_EXT_THUMB, do_t_branch9},
+ {"bic", 0x4380, 2, ARM_EXT_THUMB, do_t_arit},
+ {"bl", 0xf7fffffe, 4, ARM_EXT_THUMB, do_t_branch23},
+ {"blx", 0, 0, ARM_EXT_V5, do_t_blx},
+ {"bkpt", 0xbe00, 2, ARM_EXT_V5, do_t_bkpt},
+ {"bx", 0x4700, 2, ARM_EXT_THUMB, do_t_bx},
+ {"cmn", T_OPCODE_CMN, 2, ARM_EXT_THUMB, do_t_arit},
+ {"cmp", 0x0000, 2, ARM_EXT_THUMB, do_t_compare},
+ {"eor", 0x4040, 2, ARM_EXT_THUMB, do_t_arit},
+ {"ldmia", 0xc800, 2, ARM_EXT_THUMB, do_t_ldmstm},
+ {"ldr", 0x0000, 2, ARM_EXT_THUMB, do_t_ldr},
+ {"ldrb", 0x0000, 2, ARM_EXT_THUMB, do_t_ldrb},
+ {"ldrh", 0x0000, 2, ARM_EXT_THUMB, do_t_ldrh},
+ {"ldrsb", 0x5600, 2, ARM_EXT_THUMB, do_t_lds},
+ {"ldrsh", 0x5e00, 2, ARM_EXT_THUMB, do_t_lds},
+ {"ldsb", 0x5600, 2, ARM_EXT_THUMB, do_t_lds},
+ {"ldsh", 0x5e00, 2, ARM_EXT_THUMB, do_t_lds},
+ {"lsl", 0x0000, 2, ARM_EXT_THUMB, do_t_lsl},
+ {"lsr", 0x0000, 2, ARM_EXT_THUMB, do_t_lsr},
+ {"mov", 0x0000, 2, ARM_EXT_THUMB, do_t_mov},
+ {"mul", T_OPCODE_MUL, 2, ARM_EXT_THUMB, do_t_arit},
+ {"mvn", T_OPCODE_MVN, 2, ARM_EXT_THUMB, do_t_arit},
+ {"neg", T_OPCODE_NEG, 2, ARM_EXT_THUMB, do_t_arit},
+ {"orr", 0x4300, 2, ARM_EXT_THUMB, do_t_arit},
+ {"pop", 0xbc00, 2, ARM_EXT_THUMB, do_t_push_pop},
+ {"push", 0xb400, 2, ARM_EXT_THUMB, do_t_push_pop},
+ {"ror", 0x41c0, 2, ARM_EXT_THUMB, do_t_arit},
+ {"sbc", 0x4180, 2, ARM_EXT_THUMB, do_t_arit},
+ {"stmia", 0xc000, 2, ARM_EXT_THUMB, do_t_ldmstm},
+ {"str", 0x0000, 2, ARM_EXT_THUMB, do_t_str},
+ {"strb", 0x0000, 2, ARM_EXT_THUMB, do_t_strb},
+ {"strh", 0x0000, 2, ARM_EXT_THUMB, do_t_strh},
+ {"swi", 0xdf00, 2, ARM_EXT_THUMB, do_t_swi},
+ {"sub", 0x0000, 2, ARM_EXT_THUMB, do_t_sub},
+ {"tst", T_OPCODE_TST, 2, ARM_EXT_THUMB, do_t_arit},
+ /* Pseudo ops: */
+ {"adr", 0x0000, 2, ARM_EXT_THUMB, do_t_adr},
+ {"nop", 0x46C0, 2, ARM_EXT_THUMB, do_t_nop}, /* mov r8,r8 */
};
struct reg_entry
@@ -871,7 +1117,7 @@ struct reg_entry
#define REG_LR 14
#define REG_SP 13
-/* These are the standard names. Users can add aliases with .req */
+/* These are the standard names. Users can add aliases with .req. */
static CONST struct reg_entry reg_table[] =
{
/* Processor Register Numbers. */
@@ -911,13 +1157,14 @@ static CONST struct reg_entry reg_table[] =
#define BAD_PC _("r15 not allowed here")
#define BAD_FLAGS _("Instruction should not have flags")
#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_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_reg_hsh = NULL;
-static struct hash_control * arm_psr_hsh = NULL;
+static struct hash_control * arm_reg_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:
@@ -947,7 +1194,8 @@ static int my_get_expression PARAMS ((expressionS *, char **));
CONST pseudo_typeS md_pseudo_table[] =
{
- { "req", s_req, 0 }, /* Never called becasue '.req' does not start line */
+ /* Never called becasue '.req' does not start line. */
+ { "req", s_req, 0 },
{ "bss", s_bss, 0 },
{ "align", s_align, 0 },
{ "arm", s_arm, 0 },
@@ -962,13 +1210,15 @@ CONST pseudo_typeS md_pseudo_table[] =
/* Allow for the effect of section changes. */
{ "text", arm_s_text, 0 },
{ "data", arm_s_data, 0 },
-#ifdef OBJ_ELF
+#ifdef OBJ_ELF
{ "section", arm_s_section, 0 },
{ "section.s", arm_s_section, 0 },
{ "sect", arm_s_section, 0 },
{ "sect.s", arm_s_section, 0 },
{ "word", s_arm_elf_cons, 4 },
{ "long", s_arm_elf_cons, 4 },
+ { "file", dwarf2_directive_file, 0 },
+ { "loc", dwarf2_directive_loc, 0 },
#else
{ "word", cons, 4},
#endif
@@ -991,19 +1241,24 @@ CONST pseudo_typeS md_pseudo_table[] =
symbolS * last_label_seen;
static int label_is_thumb_function_name = false;
-/* Literal stuff */
+/* Literal stuff. */
#define MAX_LITERAL_POOL_SIZE 1024
typedef struct literalS
{
- struct expressionS exp;
- struct arm_it * inst;
+ struct expressionS exp;
+ struct arm_it * inst;
} literalT;
-literalT literals[MAX_LITERAL_POOL_SIZE];
-int next_literal_pool_place = 0; /* Next free entry in the pool */
-int lit_pool_num = 1; /* Next literal pool number */
+literalT literals[MAX_LITERAL_POOL_SIZE];
+
+/* Next free entry in the pool. */
+int next_literal_pool_place = 0;
+
+/* Next literal pool number. */
+int lit_pool_num = 1;
+
symbolS * current_poolP = NULL;
static int
@@ -1019,21 +1274,21 @@ add_to_lit_pool ()
while (lit_count < next_literal_pool_place)
{
if (literals[lit_count].exp.X_op == inst.reloc.exp.X_op
- && inst.reloc.exp.X_op == O_constant
- && literals[lit_count].exp.X_add_number
- == inst.reloc.exp.X_add_number
- && literals[lit_count].exp.X_unsigned == inst.reloc.exp.X_unsigned)
- break;
+ && inst.reloc.exp.X_op == O_constant
+ && (literals[lit_count].exp.X_add_number
+ == inst.reloc.exp.X_add_number)
+ && literals[lit_count].exp.X_unsigned == inst.reloc.exp.X_unsigned)
+ break;
lit_count++;
}
- if (lit_count == next_literal_pool_place) /* new entry */
+ if (lit_count == next_literal_pool_place) /* New entry. */
{
if (next_literal_pool_place > MAX_LITERAL_POOL_SIZE)
- {
- inst.error = _("Literal Pool Overflow");
- return FAIL;
- }
+ {
+ inst.error = _("Literal Pool Overflow");
+ return FAIL;
+ }
literals[next_literal_pool_place].exp = inst.reloc.exp;
lit_count = next_literal_pool_place++;
@@ -1045,21 +1300,22 @@ add_to_lit_pool ()
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_<something>) */
- valueT valu; /* Symbol value */
- fragS * frag; /* Associated fragment */
+ symbolS * symbolP;
+ CONST char * name; /* It is copied, the caller can modify. */
+ segT segment; /* Segment identifier (SEG_<something>). */
+ 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 */
+ name_length = strlen (name) + 1; /* +1 for \0. */
obstack_grow (&notes, name, name_length);
preserved_copy_of_name = obstack_finish (&notes);
#ifdef STRIP_UNDERSCORE
@@ -1094,41 +1350,43 @@ symbol_locate (symbolP, name, segment, valu, frag)
#ifdef tc_symbol_new_hook
tc_symbol_new_hook (symbolP);
#endif
-
+
#ifdef DEBUG_SYMS
verify_symbol_chain (symbol_rootP, symbol_lastP);
-#endif /* DEBUG_SYMS */
+#endif /* DEBUG_SYMS */
}
-/* Check that an immediate is valid, and if so,
- convert it to the right format. */
+/* 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 a | (i << 7); /* 12-bit pack: [shift-cnt,const]. */
+
return FAIL;
}
/* Check to see if an immediate can be computed as two seperate 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 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)
{
@@ -1142,19 +1400,17 @@ validate_immediate_twopart (val, highpart)
{
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;
}
@@ -1164,11 +1420,10 @@ validate_offset_imm (val, hwse)
int hwse;
{
if ((hwse && val > 255) || val > 4095)
- return FAIL;
+ return FAIL;
return val;
}
-
static void
s_req (a)
int a ATTRIBUTE_UNUSED;
@@ -1181,7 +1436,7 @@ 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?.. */
+ marking in_bss, then looking at s_skip for clues. */
subseg_set (bss_section, 0);
demand_empty_rest_of_line ();
}
@@ -1190,11 +1445,12 @@ static void
s_even (ignore)
int ignore ATTRIBUTE_UNUSED;
{
- if (!need_pass_2) /* Never make frag if expect extra pass. */
+ /* 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 ();
}
@@ -1208,8 +1464,8 @@ s_ltorg (ignored)
if (current_poolP == NULL)
return;
- /* Align pool as you have word accesses */
- /* Only make a frag if we have to ... */
+ /* Align pool as you have word accesses.
+ Only make a frag if we have to. */
if (!need_pass_2)
frag_align (2, 0, 0);
@@ -1222,21 +1478,23 @@ s_ltorg (ignored)
symbol_table_insert (current_poolP);
ARM_SET_THUMB (current_poolP, thumb_mode);
-
+
#if defined OBJ_COFF || defined OBJ_ELF
ARM_SET_INTERWORK (current_poolP, support_interwork);
#endif
-
+
while (lit_count < next_literal_pool_place)
/* First output the expression in the instruction to the pool. */
- emit_expr (&(literals[lit_count++].exp), 4); /* .word */
+ emit_expr (&(literals[lit_count++].exp), 4); /* .word */
next_literal_pool_place = 0;
current_poolP = NULL;
}
+/* Same as s_align_ptwo but align 0 => align 2. */
+
static void
-s_align (unused) /* Same as s_align_ptwo but align 0 => align 2 */
+s_align (unused)
int unused ATTRIBUTE_UNUSED;
{
register int temp;
@@ -1263,7 +1521,7 @@ s_align (unused) /* Same as s_align_ptwo but align 0 => align 2 */
if (!temp)
temp = 2;
- /* Only make a frag if we HAVE to. . . */
+ /* 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 ();
@@ -1280,14 +1538,13 @@ s_force_thumb (ignore)
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 ();
}
@@ -1295,11 +1552,13 @@ 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 ();
}
@@ -1318,16 +1577,14 @@ s_thumb_set (equiv)
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.
- */
+ /* 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 != ',')
@@ -1344,7 +1601,7 @@ s_thumb_set (equiv)
if (name[0] == '.' && name[1] == '\0')
{
- /* XXX - this should not happen to .thumb_set */
+ /* XXX - this should not happen to .thumb_set. */
abort ();
}
@@ -1358,8 +1615,9 @@ s_thumb_set (equiv)
if (listing & LISTING_SYMBOLS)
{
extern struct list_info_struct * listing_tail;
- fragS * dummy_frag = (fragS *) xmalloc (sizeof(fragS));
- memset (dummy_frag, 0, sizeof(fragS));
+ 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);
@@ -1367,13 +1625,13 @@ s_thumb_set (equiv)
}
else
#endif
- symbolP = symbol_new (name, undefined_section, 0, &zero_address_frag);
-
+ symbolP = symbol_new (name, undefined_section, 0, &zero_address_frag);
+
#ifdef OBJ_COFF
- /* "set" symbols are local unless otherwise specified. */
+ /* "set" symbols are local unless otherwise specified. */
SF_SET_LOCAL (symbolP);
-#endif /* OBJ_COFF */
- } /* make a new symbol */
+#endif /* OBJ_COFF */
+ } /* Make a new symbol. */
symbol_table_insert (symbolP);
@@ -1385,11 +1643,11 @@ s_thumb_set (equiv)
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
@@ -1398,13 +1656,14 @@ s_thumb_set (equiv)
}
/* If we change section we must dump the literal pool first. */
+
static void
arm_s_text (ignore)
int ignore;
{
if (now_seg != text_section)
s_ltorg (0);
-
+
#ifdef OBJ_ELF
obj_elf_text (ignore);
#else
@@ -1423,7 +1682,7 @@ arm_s_data (ignore)
}
else if (now_seg != data_section)
s_ltorg (0);
-
+
#ifdef OBJ_ELF
obj_elf_data (ignore);
#else
@@ -1451,23 +1710,27 @@ opcode_select (width)
case 16:
if (! thumb_mode)
{
- if (! (cpu_variant & ARM_THUMB))
+ if (! (cpu_variant & ARM_EXT_THUMB))
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);
+ /* No need to force the alignment, since we will have been
+ coming from ARM mode, which is word-aligned. */
+ record_alignment (now_seg, 1);
}
break;
case 32:
if (thumb_mode)
{
- if ((cpu_variant & ARM_ANY) == ARM_THUMB)
+ if ((cpu_variant & ARM_ANY) == ARM_EXT_THUMB)
as_bad (_("selected processor does not support ARM opcodes"));
+
thumb_mode = 0;
- if (!need_pass_2)
+
+ if (!need_pass_2)
frag_align (2, 0, 0);
+
record_alignment (now_seg, 1);
}
break;
@@ -1526,9 +1789,9 @@ static int
skip_past_comma (str)
char ** str;
{
- char *p = *str, c;
+ char * p = * str, c;
int comma = 0;
-
+
while ((c = *p) == ' ' || c == ',')
{
p++;
@@ -1544,17 +1807,18 @@ skip_past_comma (str)
}
/* A standard register must be given at this point.
- Shift is the place to put it in inst.instruction.
- Restores input start point on err.
+ 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;
+ static char buff [128]; /* XXX */
+ int reg;
+ char * start = * str;
if ((reg = arm_reg_parse (str)) != FAIL && int_register (reg))
{
@@ -1565,7 +1829,7 @@ reg_required_here (str, shift)
/* 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);
@@ -1595,6 +1859,13 @@ arm_psr_parse (ccp)
/* 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);
@@ -1609,13 +1880,14 @@ arm_psr_parse (ccp)
}
/* Parse the input looking for a PSR flag. */
+
static int
psr_required_here (str)
char ** str;
{
- char * start = *str;
+ char * start = * str;
CONST struct asm_psr * psr;
-
+
psr = arm_psr_parse (str);
if (psr)
@@ -1626,7 +1898,7 @@ psr_required_here (str)
/* Set the psr flags in the MSR instruction. */
inst.instruction |= psr->field << PSR_SHIFT;
-
+
return SUCCESS;
}
@@ -1736,8 +2008,8 @@ fp_reg_required_here (str, where)
char ** str;
int where;
{
- int reg;
- char * start = *str;
+ int reg;
+ char * start = * str;
if ((reg = arm_reg_parse (str)) != FAIL && fp_register (reg))
{
@@ -1770,14 +2042,14 @@ cp_address_offset (str)
}
(*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");
@@ -1826,12 +2098,12 @@ cp_address_required_here (str)
if (*p == ']')
{
p++;
-
+
if (skip_past_comma (& p) == SUCCESS)
{
- /* [Rn], #expr */
+ /* [Rn], #expr */
write_back = WRITE_BACK;
-
+
if (reg == REG_PC)
{
inst.error = _("pc may not be used in post-increment");
@@ -1846,7 +2118,7 @@ cp_address_required_here (str)
}
else
{
- /* '['Rn, #expr']'[!] */
+ /* '['Rn, #expr']'[!] */
if (skip_past_comma (& p) == FAIL)
{
@@ -1855,7 +2127,7 @@ cp_address_required_here (str)
}
pre_inc = PRE_INDEX;
-
+
if (cp_address_offset (& p) == FAIL)
return FAIL;
@@ -1888,7 +2160,7 @@ cp_address_required_here (str)
return FAIL;
inst.reloc.type = BFD_RELOC_ARM_CP_OFF_IMM;
- inst.reloc.exp.X_add_number -= 8; /* PC rel adjust */
+ inst.reloc.exp.X_add_number -= 8; /* PC rel adjust. */
inst.reloc.pc_rel = 1;
inst.instruction |= (REG_PC << 16);
pre_inc = PRE_INDEX;
@@ -1916,7 +2188,7 @@ do_mrs (str, flags)
unsigned long flags;
{
int skip = 0;
-
+
/* Only one syntax. */
skip_whitespace (str);
@@ -1940,8 +2212,9 @@ do_mrs (str, flags)
|| strcmp (str, "cpsr") == 0
|| strcmp (str, "spsr") == 0)
skip = 4;
+
/* This is for backwards compatability with older toolchains. */
- else if (strcmp (str, "cpsr_all") == 0
+ else if ( strcmp (str, "cpsr_all") == 0
|| strcmp (str, "spsr_all") == 0)
skip = 8;
else
@@ -1953,7 +2226,7 @@ do_mrs (str, flags)
if (* str == 's' || * str == 'S')
inst.instruction |= SPSR_BIT;
str += skip;
-
+
inst.instruction |= flags;
end_of_line (str);
}
@@ -1961,6 +2234,7 @@ do_mrs (str, flags)
/* Two possible forms:
"{C|S}PSR_<field>, Rm",
"{C|S}PSR_f, #expression". */
+
static void
do_msr (str, flags)
char * str;
@@ -1970,7 +2244,7 @@ do_msr (str, flags)
if (psr_required_here (& str) == FAIL)
return;
-
+
if (skip_past_comma (& str) == FAIL)
{
inst.error = _("comma missing after psr flags");
@@ -1981,7 +2255,7 @@ do_msr (str, flags)
if (reg_required_here (& str, 0) != FAIL)
{
- inst.error = NULL;
+ inst.error = NULL;
inst.instruction |= flags;
end_of_line (str);
return;
@@ -1989,27 +2263,30 @@ do_msr (str, flags)
if (! is_immediate_prefix (* str))
{
- inst.error = _("only a register or immediate value can follow a psr flag");
+ 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");
+ inst.error =
+ _("only a register or immediate value can follow a psr flag");
return;
}
-
- if (inst.instruction & ((PSR_c | PSR_x | PSR_s) << PSR_SHIFT))
+
+ if ((cpu_variant & ARM_EXT_V5) != ARM_EXT_V5
+ && inst.instruction & ((PSR_c | PSR_x | PSR_s) << PSR_SHIFT))
{
- inst.error = _("only flag field of psr can be set with immediate value");
+ inst.error = _("immediate value cannot be used to set this field");
return;
}
-
+
flags |= INST_IMMEDIATE;
-
+
if (inst.reloc.exp.X_add_symbol)
{
inst.reloc.type = BFD_RELOC_ARM_IMMEDIATE;
@@ -2018,17 +2295,17 @@ do_msr (str, flags)
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;
+ inst.error = NULL;
inst.instruction |= flags;
end_of_line (str);
}
@@ -2037,8 +2314,8 @@ do_msr (str, flags)
UMULL RdLo, RdHi, Rm, Rs
SMULL RdLo, RdHi, Rm, Rs
UMLAL RdLo, RdHi, Rm, Rs
- SMLAL RdLo, RdHi, Rm, Rs
-*/
+ SMLAL RdLo, RdHi, Rm, Rs. */
+
static void
do_mull (str, flags)
char * str;
@@ -2046,7 +2323,7 @@ do_mull (str, flags)
{
int rdlo, rdhi, rm, rs;
- /* Only one format "rdlo, rdhi, rm, rs" */
+ /* Only one format "rdlo, rdhi, rm, rs". */
skip_whitespace (str);
if ((rdlo = reg_required_here (&str, 12)) == FAIL)
@@ -2069,7 +2346,7 @@ do_mull (str, flags)
return;
}
- /* rdhi, rdlo and rm must all be different */
+ /* 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"));
@@ -2085,7 +2362,7 @@ do_mull (str, flags)
inst.error = BAD_PC;
return;
}
-
+
inst.instruction |= flags;
end_of_line (str);
return;
@@ -2093,12 +2370,12 @@ do_mull (str, flags)
static void
do_mul (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
int rd, rm;
-
- /* Only one format "rd, rm, rs" */
+
+ /* Only one format "rd, rm, rs". */
skip_whitespace (str);
if ((rd = reg_required_here (&str, 16)) == FAIL)
@@ -2149,12 +2426,12 @@ do_mul (str, flags)
static void
do_mla (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
int rd, rm;
- /* Only one format "rd, rm, rs, rn" */
+ /* Only one format "rd, rm, rs, rn". */
skip_whitespace (str);
if ((rd = reg_required_here (&str, 16)) == FAIL)
@@ -2205,8 +2482,1073 @@ do_mla (str, flags)
return;
}
-/* Returns the index into fp_values of a floating point number, or -1 if
- not in the table. */
+/* 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 (& str, 1) == 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 (& str, 1) == 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 <text> = <expression> 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, flags)
+ char * str;
+ unsigned long flags;
+{
+ 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 if (flags)
+ inst.error = BAD_FLAGS;
+
+ 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, flags)
+ char * str;
+ unsigned long flags;
+{
+ 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"));
+
+ if (flags)
+ inst.error = BAD_FLAGS;
+ else
+ 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, flags)
+ char * str;
+ unsigned long flags;
+{
+ 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 if (flags)
+ inst.error = BAD_FLAGS;
+
+ 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, flags)
+ char * str;
+ unsigned long flags;
+{
+ 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 if (flags)
+ inst.error = BAD_FLAGS;
+
+ else
+ end_of_line (str);
+}
+
+/* ARM V5E (el Segundo)
+ MCRRcc <coproc>, <opcode>, <Rd>, <Rn>, <CRm>.
+ MRRCcc <coproc>, <opcode>, <Rd>, <Rn>, <CRm>.
+
+ 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, flags)
+ char * str;
+ unsigned long flags;
+{
+ 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;
+ }
+
+ if (flags)
+ inst.error = BAD_COND;
+
+ end_of_line (str);
+}
+
+/* ARM V5 count-leading-zeroes instruction (argument parse)
+ CLZ{<cond>} <Rd>, <Rm>
+ Condition defaults to COND_ALWAYS.
+ Error if Rd or Rm are R15. */
+
+static void
+do_clz (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ int rd, rm;
+
+ if (flags)
+ {
+ as_bad (BAD_FLAGS);
+ return;
+ }
+
+ 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} <coproc>, <CRd>, <addressing mode>
+ STC2{L} <coproc>, <CRd>, <addressing mode>
+ Instruction is not conditional, and has 0xf in the codition field.
+ Otherwise, it's the same as LDC/STC. */
+
+static void
+do_lstc2 (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ if (flags)
+ inst.error = BAD_COND;
+
+ 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) == FAIL)
+ {
+ if (! inst.error)
+ inst.error = BAD_ARGS;
+ }
+ else
+ end_of_line (str);
+}
+
+/* ARM V5 (argument parse)
+ CDP2 <coproc>, <opcode_1>, <CRd>, <CRn>, <CRm>, <opcode_2>
+ Instruction is not conditional, and has 0xf in the condition field.
+ Otherwise, it's the same as CDP. */
+
+static void
+do_cdp2 (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ 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;
+ }
+ }
+
+ if (flags)
+ inst.error = BAD_FLAGS;
+
+ end_of_line (str);
+}
+
+/* ARM V5 (argument parse)
+ MCR2 <coproc>, <opcode_1>, <Rd>, <CRn>, <CRm>, <opcode_2>
+ MRC2 <coproc>, <opcode_1>, <Rd>, <CRn>, <CRm>, <opcode_2>
+ 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, flags)
+ char * str;
+ unsigned long flags;
+{
+ 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;
+ }
+ }
+
+ if (flags)
+ inst.error = BAD_COND;
+
+ end_of_line (str);
+}
+
+/* THUMB V5 breakpoint instruction (argument parse)
+ BKPT <immed_8>. */
+
+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))
+ {
+ inst.error = _("bad or missing 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, flags)
+ char * str;
+ unsigned long flags ATTRIBUTE_UNUSED;
+{
+ 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 <target_addr> ie BLX(1)
+ BLX{<condition>} <Rm> 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 <target_addr> can be 25 bits, hence has its own reloc. */
+
+static void
+do_blx (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ char * mystr = str;
+ int rm;
+
+ if (flags)
+ {
+ as_bad (BAD_FLAGS);
+ return;
+ }
+
+ 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, flags);
+ }
+ else
+ {
+ /* This must be is BLX <target address>, 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, flags);
+ }
+}
+
+/* ARM V5 Thumb BLX (argument parse)
+ BLX <target_addr> which is BLX(1)
+ BLX <Rm> 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.
+ Note "flags" is nonzero if a flag was supplied (which is an error). */
+
+static void
+do_bkpt (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ 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))
+ {
+ inst.error = _("bad or missing 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);
+
+ if (flags)
+ inst.error = BAD_FLAGS;
+}
+
+/* Xscale multiply-accumulate (argument parse)
+ MIAcc acc0,Rm,Rs
+ MIAPHcc acc0,Rm,Rs
+ MIAxycc acc0,Rm,Rs. */
+
+static void
+do_mia (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ int rs;
+ int rm;
+
+ if (flags)
+ as_bad (BAD_FLAGS);
+
+ else 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_mar (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ int rdlo, rdhi;
+
+ if (flags)
+ as_bad (BAD_FLAGS);
+
+ else 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_mra (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ int rdlo;
+ int rdhi;
+
+ if (flags)
+ {
+ as_bad (BAD_FLAGS);
+ return;
+ }
+
+ 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);
+}
+
+/* Xscale: Preload-Cache
+
+ PLD <addr_mode>
+
+ Syntactically, like LDR with B=1, W=0, L=1. */
+
+static void
+do_pld (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ int rd;
+
+ if (flags)
+ {
+ as_bad (BAD_FLAGS);
+ return;
+ }
+
+ 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);
+
+ if (skip_past_comma (& str) == SUCCESS)
+ {
+ if (ldst_extend (& str, 0) == FAIL)
+ 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, 0) == 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);
+}
+
+/* Xscale load-consecutive (argument parse)
+ Mode is like LDRH.
+
+ LDRccD R, mode
+ STRccD R, mode. */
+
+static void
+do_ldrd (str, flags)
+ char * str;
+ unsigned long flags;
+{
+ int rd;
+ int rn;
+
+ if (flags != DOUBLE_LOAD_FLAG)
+ {
+ /* Change instruction pattern to normal ldr/str. */
+ if (inst.instruction & 0x20)
+ inst.instruction = (inst.instruction & COND_MASK) | 0x04000000; /* str */
+ else
+ inst.instruction = (inst.instruction & COND_MASK) | 0x04100000; /* ldr */
+
+ /* Perform a normal load/store instruction parse. */
+ do_ldst (str, flags);
+
+ return;
+ }
+
+ if ((cpu_variant & ARM_EXT_XSCALE) != ARM_EXT_XSCALE)
+ {
+ static char buff[128];
+
+ --str;
+ while (isspace (*str))
+ --str;
+ str -= 4;
+
+ /* Deny all knowledge. */
+ sprintf (buff, _("bad instruction '%.100s'"), str);
+ inst.error = buff;
+ return;
+ }
+
+ 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 || rd == 12)
+ {
+ inst.error = _("r12 or 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"));
+
+ 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;
@@ -2218,9 +3560,10 @@ my_get_float_expression (str)
int j;
memset (words, 0, MAX_LITTLENUMS * sizeof (LITTLENUM_TYPE));
- /* Look for a raw floating point number */
+
+ /* Look for a raw floating point number. */
if ((save_in = atof_ieee (*str, 'x', words)) != NULL
- && (is_end_of_line [(int)(*save_in)] || *save_in == '\0'))
+ && is_end_of_line[(unsigned char) *save_in])
{
for (i = 0; i < NUM_FLOAT_VALS; i++)
{
@@ -2239,7 +3582,7 @@ my_get_float_expression (str)
}
/* Try and parse a more complex expression, this will probably fail
- unless the code uses a floating point prefix (eg "0f") */
+ unless the code uses a floating point prefix (eg "0f"). */
save_in = input_line_pointer;
input_line_pointer = *str;
if (expression (&exp) == absolute_section
@@ -2248,7 +3591,7 @@ my_get_float_expression (str)
{
/* 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)
+ if (gen_to_words (words, 5, (long) 15) == 0)
{
for (i = 0; i < NUM_FLOAT_VALS; i++)
{
@@ -2273,7 +3616,8 @@ my_get_float_expression (str)
return -1;
}
-/* Return true if anything in the expression is a bignum */
+/* Return true if anything in the expression is a bignum. */
+
static int
walk_no_bignums (sp)
symbolS * sp;
@@ -2298,7 +3642,7 @@ my_get_expression (ep, str)
{
char * save_in;
segT seg;
-
+
save_in = input_line_pointer;
input_line_pointer = *str;
seg = expression (ep);
@@ -2337,116 +3681,130 @@ my_get_expression (ep, str)
return 0;
}
-/* unrestrict should be one if <shift> <register> is permitted for this
- instruction */
+/* UNRESTRICT should be one if <shift> <register> is permitted for this
+ instruction. */
static int
decode_shift (str, unrestrict)
char ** str;
int unrestrict;
{
- struct asm_shift * shft;
+ const struct asm_shift_name * shift;
char * p;
char c;
-
+
skip_whitespace (* str);
-
- for (p = *str; isalpha (*p); p++)
+
+ for (p = * str; isalpha (* p); p ++)
;
- if (p == *str)
+ if (p == * str)
{
inst.error = _("Shift expression expected");
return FAIL;
}
- c = *p;
- *p = '\0';
- shft = (struct asm_shift *) hash_find (arm_shift_hsh, *str);
- *p = c;
- if (shft)
+ c = * p;
+ * p = '\0';
+ shift = (const struct asm_shift_name *) hash_find (arm_shift_hsh, * str);
+ * p = c;
+
+ if (shift == NULL)
{
- if (!strncmp (*str, "rrx", 3)
- || !strncmp (*str, "RRX", 3))
- {
- *str = p;
- inst.instruction |= shft->value;
- return SUCCESS;
- }
+ inst.error = _("Shift expression expected");
+ return FAIL;
+ }
- skip_whitespace (p);
-
- if (unrestrict && reg_required_here (&p, 8) != FAIL)
- {
- inst.instruction |= shft->value | SHIFT_BY_REG;
- *str = p;
- return SUCCESS;
- }
- else if (is_immediate_prefix (* p))
- {
- inst.error = NULL;
- p++;
- if (my_get_expression (&inst.reloc.exp, &p))
- return FAIL;
+ assert (shift->properties->index == shift_properties[shift->properties->index].index);
- /* Validate some simple #expressions */
- if (inst.reloc.exp.X_op == O_constant)
- {
- unsigned num = inst.reloc.exp.X_add_number;
+ if (shift->properties->index == SHIFT_RRX)
+ {
+ * str = p;
+ inst.instruction |= shift->properties->bit_field;
+ return SUCCESS;
+ }
- /* Reject operations greater than 32, or lsl #32 */
- if (num > 32 || (num == 32 && shft->value == 0))
- {
- inst.error = _("Invalid immediate shift");
- return FAIL;
- }
+ skip_whitespace (p);
- /* Shifts of zero should be converted to lsl (which is zero)*/
- if (num == 0)
- {
- *str = p;
- return SUCCESS;
- }
+ if (unrestrict && 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 = (unrestrict
+ ? _("shift requires register or #expression")
+ : _("shift requires #expression"));
+ * str = p;
+ return FAIL;
+ }
- /* Shifts of 32 are encoded as 0, for those shifts that
- support it. */
- if (num == 32)
- num = 0;
+ inst.error = NULL;
+ p ++;
- inst.instruction |= (num << 7) | shft->value;
- *str = p;
- return SUCCESS;
- }
+ if (my_get_expression (& inst.reloc.exp, & p))
+ return FAIL;
- inst.reloc.type = BFD_RELOC_ARM_SHIFT_IMM;
- inst.reloc.pc_rel = 0;
- inst.instruction |= shft->value;
- *str = p;
- return SUCCESS;
- }
- else
+ /* 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)
+ )
{
- inst.error = unrestrict ? _("shift requires register or #expression")
- : _("shift requires #expression");
- *str = p;
- return FAIL;
+ /* 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;
}
- inst.error = _("Shift expression expected");
- return FAIL;
+ * str = p;
+ return SUCCESS;
}
-/* Do those data_ops which can take a negative immediate constant */
-/* by altering the instuction. A bit of a hack really */
-/* MOV <-> MVN
+/* Do those data_ops which can take a negative immediate constant
+ by altering the instuction. 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.
-*/
+ by negating the second operand. */
+
static int
negate_data_op (instruction, value)
unsigned long * instruction;
@@ -2461,60 +3819,60 @@ negate_data_op (instruction, value)
op = (*instruction >> DATA_OP_SHIFT) & 0xf;
switch (op)
{
- /* First negates */
- case OPCODE_SUB: /* ADD <-> SUB */
+ /* First negates. */
+ case OPCODE_SUB: /* ADD <-> SUB */
new_inst = OPCODE_ADD;
value = negated;
break;
- case OPCODE_ADD:
- new_inst = OPCODE_SUB;
+ case OPCODE_ADD:
+ new_inst = OPCODE_SUB;
value = negated;
break;
- case OPCODE_CMP: /* CMP <-> CMN */
+ case OPCODE_CMP: /* CMP <-> CMN */
new_inst = OPCODE_CMN;
value = negated;
break;
- case OPCODE_CMN:
- new_inst = OPCODE_CMP;
+ case OPCODE_CMN:
+ new_inst = OPCODE_CMP;
value = negated;
break;
- /* Now Inverted ops */
- case OPCODE_MOV: /* MOV <-> MVN */
- new_inst = OPCODE_MVN;
+ /* Now Inverted ops. */
+ case OPCODE_MOV: /* MOV <-> MVN */
+ new_inst = OPCODE_MVN;
value = inverted;
break;
- case OPCODE_MVN:
+ case OPCODE_MVN:
new_inst = OPCODE_MOV;
value = inverted;
break;
- case OPCODE_AND: /* AND <-> BIC */
- new_inst = OPCODE_BIC;
+ case OPCODE_AND: /* AND <-> BIC */
+ new_inst = OPCODE_BIC;
value = inverted;
break;
- case OPCODE_BIC:
+ case OPCODE_BIC:
new_inst = OPCODE_AND;
value = inverted;
break;
- case OPCODE_ADC: /* ADC <-> SBC */
- new_inst = OPCODE_SBC;
+ case OPCODE_ADC: /* ADC <-> SBC */
+ new_inst = OPCODE_SBC;
value = inverted;
break;
- case OPCODE_SBC:
+ case OPCODE_SBC:
new_inst = OPCODE_ADC;
value = inverted;
break;
- /* We cannot do anything */
- default:
+ /* We cannot do anything. */
+ default:
return FAIL;
}
@@ -2523,7 +3881,7 @@ negate_data_op (instruction, value)
*instruction &= OPCODE_MASK;
*instruction |= new_inst << DATA_OP_SHIFT;
- return value;
+ return value;
}
static int
@@ -2534,7 +3892,7 @@ data_op2 (str)
expressionS expr;
skip_whitespace (* str);
-
+
if (reg_required_here (str, 0) != FAIL)
{
if (skip_past_comma (str) == SUCCESS)
@@ -2545,12 +3903,12 @@ data_op2 (str)
}
else
{
- /* Immediate expression */
+ /* Immediate expression. */
if (is_immediate_prefix (**str))
{
(*str)++;
inst.error = NULL;
-
+
if (my_get_expression (&inst.reloc.exp, str))
return FAIL;
@@ -2563,7 +3921,7 @@ data_op2 (str)
{
if (skip_past_comma (str) == SUCCESS)
{
- /* #x, y -- ie explicit rotation by Y */
+ /* #x, y -- ie explicit rotation by Y. */
if (my_get_expression (&expr, str))
return FAIL;
@@ -2572,8 +3930,8 @@ data_op2 (str)
inst.error = _("Constant expression expected");
return FAIL;
}
-
- /* Rotate must be a multiple of 2 */
+
+ /* 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)
@@ -2587,13 +3945,13 @@ data_op2 (str)
return SUCCESS;
}
- /* Implicit rotation, select a suitable one */
+ /* 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 */
+ /* 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)
@@ -2626,7 +3984,7 @@ fp_op2 (str)
return SUCCESS;
else
{
- /* Immediate expression */
+ /* Immediate expression. */
if (*((*str)++) == '#')
{
int i;
@@ -2635,8 +3993,8 @@ fp_op2 (str)
skip_whitespace (* str);
- /* First try and match exact strings, this is to guarantee that
- some formats will work even for cross assembly */
+ /* 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++)
{
@@ -2645,7 +4003,7 @@ fp_op2 (str)
char *start = *str;
*str += strlen (fp_const[i]);
- if (is_end_of_line[(int)**str] || **str == '\0')
+ if (is_end_of_line[(unsigned char) **str])
{
inst.instruction |= i + 8;
return SUCCESS;
@@ -2667,14 +4025,15 @@ fp_op2 (str)
inst.error = _("Invalid floating point immediate expression");
return FAIL;
}
- inst.error = _("Floating point register or immediate expression expected");
+ inst.error =
+ _("Floating point register or immediate expression expected");
return FAIL;
}
}
static void
do_arit (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
skip_whitespace (str);
@@ -2697,7 +4056,7 @@ do_arit (str, flags)
static void
do_adr (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
/* This is a pseudo-op of the form "adr rd, label" to be converted
@@ -2712,26 +4071,26 @@ do_adr (str, flags)
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;
inst.reloc.exp.X_add_number -= 8; /* PC relative adjust. */
inst.reloc.pc_rel = 1;
inst.instruction |= flags;
+
end_of_line (str);
- return;
}
static void
do_adrl (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
/* 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)" */
+ add rd, rd, #high(label-.-8)" */
skip_whitespace (str);
@@ -2743,23 +4102,23 @@ do_adrl (str, flags)
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;
- inst.reloc.exp.X_add_number -= 8; /* PC relative adjust */
+ inst.reloc.exp.X_add_number -= 8; /* PC relative adjust */
inst.reloc.pc_rel = 1;
inst.instruction |= flags;
inst.size = INSN_SIZE * 2;
-
+
return;
}
static void
do_cmp (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
skip_whitespace (str);
@@ -2789,7 +4148,7 @@ do_cmp (str, flags)
static void
do_mov (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
skip_whitespace (str);
@@ -2833,8 +4192,8 @@ ldst_extend (str, hwse)
{
int value = inst.reloc.exp.X_add_number;
- if ((hwse && (value < -255 || value > 255))
- || (value < -4095 || value > 4095))
+ if ((hwse && (value < -255 || value > 255))
+ || (value < -4095 || value > 4095))
{
inst.error = _("address offset too large");
return FAIL;
@@ -2846,42 +4205,47 @@ ldst_extend (str, hwse)
add = 0;
}
- /* Halfword and signextension instructions have the
- immediate value split across bits 11..8 and bits 3..0 */
- if (hwse)
- inst.instruction |= add | HWOFFSET_IMM | ((value >> 4) << 8) | (value & 0xF);
- else
- inst.instruction |= add | value;
+ /* Halfword and signextension instructions have the
+ immediate value split across bits 11..8 and bits 3..0. */
+ if (hwse)
+ inst.instruction |= (add | HWOFFSET_IMM
+ | ((value >> 4) << 8) | (value & 0xF));
+ else
+ inst.instruction |= add | value;
}
else
{
- if (hwse)
- {
- inst.instruction |= HWOFFSET_IMM;
- inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8;
- }
- else
- inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM;
+ if (hwse)
+ {
+ inst.instruction |= HWOFFSET_IMM;
+ inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8;
+ }
+ else
+ inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM;
inst.reloc.pc_rel = 0;
}
return SUCCESS;
case '-':
- add = 0; /* and fall through */
+ add = 0;
+ /* Fall through. */
+
case '+':
- (*str)++; /* and fall through */
+ (*str)++;
+ /* Fall through. */
+
default:
if (reg_required_here (str, 0) == FAIL)
return FAIL;
if (hwse)
- inst.instruction |= add;
+ inst.instruction |= add;
else
- {
- inst.instruction |= add | OFFSET_REG;
- if (skip_past_comma (str) == SUCCESS)
- return decode_shift (str, SHIFT_RESTRICT);
- }
+ {
+ inst.instruction |= add | OFFSET_REG;
+ if (skip_past_comma (str) == SUCCESS)
+ return decode_shift (str, SHIFT_RESTRICT);
+ }
return SUCCESS;
}
@@ -2899,27 +4263,27 @@ do_ldst (str, flags)
/* This is not ideal, but it is the simplest way of dealing with the
ARM7T halfword instructions (since they use a different
- encoding, but the same mnemonic): */
+ encoding, but the same mnemonic): */
halfword = (flags & 0x80000000) != 0;
if (halfword)
{
/* This is actually a load/store of a halfword, or a
- signed-extension load */
- if ((cpu_variant & ARM_HALFWORD) == 0)
- {
- inst.error
+ signed-extension load. */
+ if ((cpu_variant & ARM_EXT_HALFWORD) == 0)
+ {
+ inst.error
= _("Processor does not support halfwords or signed bytes");
- return;
- }
+ return;
+ }
- inst.instruction = (inst.instruction & COND_MASK)
- | (flags & ~COND_MASK);
+ inst.instruction = ((inst.instruction & COND_MASK)
+ | (flags & ~COND_MASK));
flags = 0;
}
skip_whitespace (str);
-
+
if ((conflict_reg = reg_required_here (& str, 12)) == FAIL)
{
if (!inst.error)
@@ -2952,41 +4316,57 @@ do_ldst (str, flags)
if (*str == ']')
{
str ++;
-
+
if (skip_past_comma (&str) == SUCCESS)
{
- /* [Rn],... (post inc) */
+ /* [Rn],... (post inc) */
if (ldst_extend (&str, halfword) == FAIL)
return;
if (conflict_reg)
- as_warn (_("%s register same as write-back base"),
- (inst.instruction & LOAD_BIT) ? _("destination") : _("source") );
+ {
+ if (flags & TRANS_BIT)
+ as_warn (_("Rn and Rd must be different in %s"),
+ ((inst.instruction & LOAD_BIT)
+ ? "LDRT" : "STRT"));
+ else
+ as_warn (_("%s register same as write-back base"),
+ ((inst.instruction & LOAD_BIT)
+ ? _("destination") : _("source")));
+ }
}
else
{
- /* [Rn] */
- if (halfword)
- inst.instruction |= HWOFFSET_IMM;
+ /* [Rn] */
+ if (halfword)
+ inst.instruction |= HWOFFSET_IMM;
- skip_whitespace (str);
+ 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;
- }
+ 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;
+ }
flags |= INDEX_UP;
- if (! (flags & TRANS_BIT))
- pre_inc = 1;
+ if (flags & TRANS_BIT)
+ {
+ if (conflict_reg)
+ as_warn (_("Rn and Rd must be different in %s"),
+ ((inst.instruction & LOAD_BIT)
+ ? "LDRT" : "STRT"));
+ }
+ else
+ pre_inc = 1;
}
}
else
{
- /* [Rn,...] */
+ /* [Rn,...] */
if (skip_past_comma (&str) == FAIL)
{
inst.error = _("pre-indexed expression expected");
@@ -3011,7 +4391,8 @@ do_ldst (str, flags)
{
if (conflict_reg)
as_warn (_("%s register same as write-back base"),
- (inst.instruction & LOAD_BIT) ? _("destination") : _("source") );
+ ((inst.instruction & LOAD_BIT)
+ ? _("destination") : _("source")));
str++;
inst.instruction |= WRITE_BACK;
}
@@ -3019,7 +4400,7 @@ do_ldst (str, flags)
}
else if (*str == '=')
{
- /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op */
+ /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op. */
str++;
skip_whitespace (str);
@@ -3035,36 +4416,36 @@ do_ldst (str, flags)
}
if (inst.reloc.exp.X_op == O_constant
- && (value = validate_immediate(inst.reloc.exp.X_add_number)) != FAIL)
+ && (value = validate_immediate (inst.reloc.exp.X_add_number)) != FAIL)
{
- /* This can be done with a mov instruction */
+ /* This can be done with a mov instruction. */
inst.instruction &= LITERAL_MASK;
inst.instruction |= INST_IMMEDIATE | (OPCODE_MOV << DATA_OP_SHIFT);
inst.instruction |= (flags & COND_MASK) | (value & 0xfff);
- end_of_line(str);
- return;
+ end_of_line (str);
+ return;
}
else
{
- /* Insert into literal pool */
+ /* Insert into literal pool. */
if (add_to_lit_pool () == FAIL)
{
if (!inst.error)
- inst.error = _("literal pool insertion failed");
+ inst.error = _("literal pool insertion failed");
return;
}
- /* Change the instruction exp to point to the pool */
- if (halfword)
- {
- inst.instruction |= HWOFFSET_IMM;
- inst.reloc.type = BFD_RELOC_ARM_HWLITERAL;
- }
- else
+ /* Change the instruction exp to point to the pool. */
+ if (halfword)
+ {
+ inst.instruction |= HWOFFSET_IMM;
+ inst.reloc.type = BFD_RELOC_ARM_HWLITERAL;
+ }
+ else
inst.reloc.type = BFD_RELOC_ARM_LITERAL;
inst.reloc.pc_rel = 1;
inst.instruction |= (REG_PC << 16);
- pre_inc = 1;
+ pre_inc = 1;
}
}
else
@@ -3073,20 +4454,21 @@ do_ldst (str, flags)
return;
if (halfword)
- {
- inst.instruction |= HWOFFSET_IMM;
- inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8;
- }
+ {
+ inst.instruction |= HWOFFSET_IMM;
+ inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM8;
+ }
else
- inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM;
+ inst.reloc.type = BFD_RELOC_ARM_OFFSET_IMM;
#ifndef TE_WINCE
- inst.reloc.exp.X_add_number -= 8; /* PC rel adjust */
+ /* PC rel adjust. */
+ inst.reloc.exp.X_add_number -= 8;
#endif
inst.reloc.pc_rel = 1;
inst.instruction |= (REG_PC << 16);
pre_inc = 1;
}
-
+
if (pre_inc && (flags & TRANS_BIT))
inst.error = _("Pre-increment instruction with translate");
@@ -3099,11 +4481,11 @@ static long
reg_list (strp)
char ** strp;
{
- char * str = *strp;
+ char * str = * strp;
long range = 0;
int another_range;
- /* We come back here if we get ranges concatenated by '+' or '|' */
+ /* We come back here if we get ranges concatenated by '+' or '|'. */
do
{
another_range = 0;
@@ -3112,21 +4494,21 @@ reg_list (strp)
{
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");
@@ -3136,7 +4518,7 @@ reg_list (strp)
for (i = cur_reg + 1; i < reg; i++)
{
if (range & (1 << i))
- as_tsktsk
+ as_tsktsk
(_("Warning: Duplicated register (r%d) in register list"),
i);
else
@@ -3153,8 +4535,9 @@ reg_list (strp)
range |= 1 << reg;
cur_reg = reg;
- } while (skip_past_comma (&str) != FAIL
- || (in_range = 1, *str++ == '-'));
+ }
+ while (skip_past_comma (&str) != FAIL
+ || (in_range = 1, *str++ == '-'));
str--;
skip_whitespace (str);
@@ -3173,7 +4556,7 @@ reg_list (strp)
if (expr.X_op == O_constant)
{
- if (expr.X_add_number
+ if (expr.X_add_number
!= (expr.X_add_number & 0x0000ffff))
{
inst.error = _("invalid register mask");
@@ -3186,7 +4569,7 @@ reg_list (strp)
regno &= -regno;
regno = (1 << regno) - 1;
- as_tsktsk
+ as_tsktsk
(_("Warning: Duplicated register (r%d) in register list"),
regno);
}
@@ -3214,7 +4597,8 @@ reg_list (strp)
str++;
another_range = 1;
}
- } while (another_range);
+ }
+ while (another_range);
*strp = str;
return range;
@@ -3222,7 +4606,7 @@ reg_list (strp)
static void
do_ldmstm (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
int base_reg;
@@ -3268,11 +4652,11 @@ do_ldmstm (str, flags)
static void
do_swi (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
skip_whitespace (str);
-
+
/* Allow optional leading '#'. */
if (is_immediate_prefix (*str))
str++;
@@ -3283,19 +4667,19 @@ do_swi (str, flags)
inst.reloc.type = BFD_RELOC_ARM_SWI;
inst.reloc.pc_rel = 0;
inst.instruction |= flags;
-
+
end_of_line (str);
-
+
return;
}
static void
do_swap (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
int reg;
-
+
skip_whitespace (str);
if ((reg = reg_required_here (&str, 12)) == FAIL)
@@ -3354,20 +4738,20 @@ do_swap (str, flags)
static void
do_branch (str, flags)
- char * str;
+ char * str;
unsigned long flags ATTRIBUTE_UNUSED;
{
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.
+
+ /* 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;
@@ -3392,15 +4776,15 @@ do_branch (str, flags)
#else
inst.reloc.type = BFD_RELOC_ARM_PCREL_BRANCH;
inst.reloc.pc_rel = 1;
-#endif /* OBJ_ELF */
-
+#endif /* OBJ_ELF */
+
end_of_line (str);
return;
}
static void
do_bx (str, flags)
- char * str;
+ char * str;
unsigned long flags ATTRIBUTE_UNUSED;
{
int reg;
@@ -3413,15 +4797,16 @@ do_bx (str, flags)
return;
}
+ /* Note - it is not illegal to do a "bx pc". Useless, but not illegal. */
if (reg == REG_PC)
- inst.error = BAD_PC;
+ as_tsktsk (_("Use of r15 in bx in ARM mode is not really useful"));
end_of_line (str);
}
static void
do_cdp (str, flags)
- char * str;
+ char * str;
unsigned long flags ATTRIBUTE_UNUSED;
{
/* Co-processor data operation.
@@ -3483,7 +4868,7 @@ do_cdp (str, flags)
static void
do_lstc (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
/* Co-processor register load/store.
@@ -3521,7 +4906,7 @@ do_lstc (str, flags)
static void
do_co_reg (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
/* Co-processor register transfer.
@@ -3588,7 +4973,7 @@ do_co_reg (str, flags)
static void
do_fp_ctrl (str, flags)
- char * str;
+ char * str;
unsigned long flags ATTRIBUTE_UNUSED;
{
/* FP control registers.
@@ -3609,7 +4994,7 @@ do_fp_ctrl (str, flags)
static void
do_fp_ldst (str, flags)
- char * str;
+ char * str;
unsigned long flags ATTRIBUTE_UNUSED;
{
skip_whitespace (str);
@@ -3651,7 +5036,7 @@ do_fp_ldst (str, flags)
static void
do_fp_ldmstm (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
int num_regs;
@@ -3665,7 +5050,7 @@ do_fp_ldmstm (str, flags)
return;
}
- /* Get Number of registers to transfer */
+ /* Get Number of registers to transfer. */
if (skip_past_comma (&str) == FAIL
|| my_get_expression (&inst.reloc.exp, &str))
{
@@ -3744,7 +5129,8 @@ do_fp_ldmstm (str, flags)
str++;
if (reg == REG_PC)
{
- inst.error = _("R15 not allowed as base register with write-back");
+ inst.error =
+ _("R15 not allowed as base register with write-back");
return;
}
}
@@ -3753,14 +5139,14 @@ do_fp_ldmstm (str, flags)
if (flags & CP_T_Pre)
{
- /* Pre-decrement */
+ /* Pre-decrement. */
offset = 3 * num_regs;
if (write_back)
flags |= CP_T_WB;
}
else
{
- /* Post-increment */
+ /* Post-increment. */
if (write_back)
{
flags |= CP_T_WB;
@@ -3790,7 +5176,7 @@ do_fp_ldmstm (str, flags)
static void
do_fp_dyadic (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
skip_whitespace (str);
@@ -3839,7 +5225,7 @@ do_fp_dyadic (str, flags)
static void
do_fp_monadic (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
skip_whitespace (str);
@@ -3880,7 +5266,7 @@ do_fp_monadic (str, flags)
static void
do_fp_cmp (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
skip_whitespace (str);
@@ -3907,7 +5293,7 @@ do_fp_cmp (str, flags)
static void
do_fp_from_reg (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
skip_whitespace (str);
@@ -3948,7 +5334,7 @@ do_fp_from_reg (str, flags)
static void
do_fp_to_reg (str, flags)
- char * str;
+ char * str;
unsigned long flags;
{
skip_whitespace (str);
@@ -3969,13 +5355,14 @@ do_fp_to_reg (str, flags)
return;
}
-/* Thumb specific routines */
+/* 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
+ 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;
@@ -4013,6 +5400,7 @@ thumb_reg (strp, hi_lo)
/* Parse an add or subtract instruction, SUBTRACT is non-zero if the opcode
was SUB. */
+
static void
thumb_add_sub (str, subtract)
char * str;
@@ -4044,8 +5432,8 @@ thumb_add_sub (str, subtract)
if (skip_past_comma (&str) == FAIL)
{
- /* Two operand format, shuffle the registers and pretend there
- are 3 */
+ /* Two operand format, shuffle the registers
+ and pretend there are 3. */
Rn = Rs;
Rs = Rd;
}
@@ -4060,7 +5448,7 @@ thumb_add_sub (str, subtract)
}
/* 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. */
+ for the latter case, EXPR contains the immediate that was found. */
if (Rn != FAIL)
{
/* All register format. */
@@ -4072,7 +5460,7 @@ thumb_add_sub (str, subtract)
return;
}
- /* Can't do this for SUB */
+ /* Can't do this for SUB. */
if (subtract)
{
inst.error = _("subtract valid only on lo regs");
@@ -4106,7 +5494,7 @@ thumb_add_sub (str, subtract)
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
+ 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;
@@ -4123,7 +5511,7 @@ thumb_add_sub (str, subtract)
offset = -offset;
subtract = 1;
- /* Quick check, in case offset is MIN_INT */
+ /* Quick check, in case offset is MIN_INT. */
if (offset < 0)
{
inst.error = _("immediate value out of range");
@@ -4177,7 +5565,7 @@ thumb_add_sub (str, subtract)
}
}
}
-
+
end_of_line (str);
}
@@ -4208,13 +5596,13 @@ thumb_shift (str, shift)
}
else
{
- if ((Rs = thumb_reg (&str, THUMB_REG_LO)) == FAIL)
+ 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 */
+ /* Two operand format, shuffle the registers
+ and pretend there are 3. */
Rn = Rs;
Rs = Rd;
}
@@ -4229,7 +5617,7 @@ thumb_shift (str, shift)
}
/* 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. */
+ for the latter case, EXPR contains the immediate that was found. */
if (Rn != FAIL)
{
@@ -4260,8 +5648,7 @@ thumb_shift (str, shift)
if (inst.reloc.exp.X_op != O_constant)
{
/* Value isn't known yet, create a dummy reloc and let reloc
- hacking fix it up */
-
+ hacking fix it up. */
inst.reloc.type = BFD_RELOC_ARM_THUMB_SHIFT;
}
else
@@ -4274,11 +5661,11 @@ thumb_shift (str, shift)
return;
}
- /* Shifts of zero are handled by converting to LSL */
+ /* 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 */
+ /* Shifts of 32 are encoded as a shift of zero. */
if (shift_value == 32)
shift_value = 0;
@@ -4287,7 +5674,7 @@ thumb_shift (str, shift)
inst.instruction |= Rd | (Rs << 3);
}
-
+
end_of_line (str);
}
@@ -4323,7 +5710,7 @@ thumb_mov_compare (str, move)
{
if (move == THUMB_MOVE)
/* A move of two lowregs is encoded as ADD Rd, Rs, #0
- since a MOV instruction produces unpredictable results */
+ since a MOV instruction produces unpredictable results. */
inst.instruction = T_OPCODE_ADD_I3;
else
inst.instruction = T_OPCODE_CMP_LR;
@@ -4429,7 +5816,7 @@ thumb_load_store (str, load_store, size)
}
else if (*str == '=')
{
- /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op */
+ /* Parse an "ldr Rd, =expr" instruction; this is another pseudo op. */
str++;
skip_whitespace (str);
@@ -4438,7 +5825,7 @@ thumb_load_store (str, load_store, size)
return;
end_of_line (str);
-
+
if ( inst.reloc.exp.X_op != O_constant
&& inst.reloc.exp.X_op != O_symbol)
{
@@ -4449,25 +5836,26 @@ thumb_load_store (str, load_store, size)
if (inst.reloc.exp.X_op == O_constant
&& ((inst.reloc.exp.X_add_number & ~0xFF) == 0))
{
- /* This can be done with a mov instruction */
+ /* 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;
+ return;
}
- /* Insert into literal pool */
+ /* Insert into literal pool. */
if (add_to_lit_pool () == FAIL)
{
if (!inst.error)
- inst.error = "literal pool insertion failed";
+ 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);
- inst.reloc.exp.X_add_number += 4; /* Adjust ARM pipeline offset to Thumb */
+ /* Adjust ARM pipeline offset to Thumb. */
+ inst.reloc.exp.X_add_number += 4;
return;
}
@@ -4478,7 +5866,7 @@ thumb_load_store (str, load_store, size)
inst.instruction = T_OPCODE_LDR_PC | (Rd << 8);
inst.reloc.pc_rel = 1;
- inst.reloc.exp.X_add_number -= 4; /* Pipeline offset */
+ inst.reloc.exp.X_add_number -= 4; /* Pipeline offset. */
inst.reloc.type = BFD_RELOC_ARM_THUMB_OFFSET;
end_of_line (str);
return;
@@ -4532,7 +5920,7 @@ thumb_load_store (str, load_store, size)
}
else if (Ro == FAIL)
{
- /* Immediate offset */
+ /* Immediate offset. */
if (size == THUMB_WORD)
inst.instruction = (load_store == THUMB_LOAD
? T_OPCODE_LDR_IW : T_OPCODE_STR_IW);
@@ -4548,7 +5936,7 @@ thumb_load_store (str, load_store, size)
if (inst.reloc.exp.X_op == O_constant)
{
unsigned offset = inst.reloc.exp.X_add_number;
-
+
if (offset & ~(0x1f << size))
{
inst.error = _("Invalid offset");
@@ -4561,7 +5949,7 @@ thumb_load_store (str, load_store, size)
}
else
{
- /* Register offset */
+ /* Register offset. */
if (size == THUMB_WORD)
inst.instruction = (load_store == THUMB_LOAD
? T_OPCODE_LDR_RW : T_OPCODE_STR_RW);
@@ -4582,14 +5970,15 @@ static void
do_t_nop (str)
char * str;
{
- /* Do nothing */
+ /* Do nothing. */
end_of_line (str);
return;
}
-/* Handle the Format 4 instructions that do not have equivalents in other
+/* 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;
@@ -4602,8 +5991,8 @@ do_t_arit (str)
|| skip_past_comma (&str) == FAIL
|| (Rs = thumb_reg (&str, THUMB_REG_LO)) == FAIL)
{
- inst.error = BAD_ARGS;
- return;
+ inst.error = BAD_ARGS;
+ return;
}
if (skip_past_comma (&str) != FAIL)
@@ -4614,7 +6003,7 @@ do_t_arit (str)
if (inst.instruction == T_OPCODE_TST
|| inst.instruction == T_OPCODE_CMN
|| inst.instruction == T_OPCODE_NEG
- || inst.instruction == T_OPCODE_MVN)
+ || inst.instruction == T_OPCODE_MVN)
{
inst.error = BAD_ARGS;
return;
@@ -4685,23 +6074,23 @@ find_real_start (symbolP)
const char * name = S_GET_NAME (symbolP);
symbolS * new_target;
- /* This definiton must agree with the one in gcc/config/arm/thumb.c */
+ /* This definiton must agree with the one in gcc/config/arm/thumb.c. */
#define STUB_NAME ".real_start_of"
if (name == NULL)
- abort();
+ 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);
@@ -4713,14 +6102,13 @@ find_real_start (symbolP)
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);
@@ -4733,7 +6121,8 @@ do_t_branch23 (str)
&& 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);
+ inst.reloc.exp.X_add_symbol =
+ find_real_start (inst.reloc.exp.X_add_symbol);
}
static void
@@ -4791,7 +6180,7 @@ do_t_ldmstm (str)
if (inst.reloc.type != BFD_RELOC_NONE)
{
- /* This really doesn't seem worth it. */
+ /* This really doesn't seem worth it. */
inst.reloc.type = BFD_RELOC_NONE;
inst.error = _("Expression too complex");
return;
@@ -4891,7 +6280,7 @@ do_t_push_pop (str)
if (inst.reloc.type != BFD_RELOC_NONE)
{
- /* This really doesn't seem worth it. */
+ /* This really doesn't seem worth it. */
inst.reloc.type = BFD_RELOC_NONE;
inst.error = _("Expression too complex");
return;
@@ -4985,7 +6374,7 @@ do_t_adr (str)
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);
}
@@ -4993,10 +6382,10 @@ static void
insert_reg (entry)
int entry;
{
- int len = strlen (reg_table[entry].name) + 2;
- char * buf = (char *) xmalloc (len);
+ int len = strlen (reg_table[entry].name) + 2;
+ char * buf = (char *) xmalloc (len);
char * buf2 = (char *) xmalloc (len);
- int i = 0;
+ int i = 0;
#ifdef REGISTER_PREFIX
buf[i++] = REGISTER_PREFIX;
@@ -5009,8 +6398,8 @@ insert_reg (entry)
buf2[i] = '\0';
- hash_insert (arm_reg_hsh, buf, (PTR) &reg_table[entry]);
- hash_insert (arm_reg_hsh, buf2, (PTR) &reg_table[entry]);
+ hash_insert (arm_reg_hsh, buf, (PTR) & reg_table[entry]);
+ hash_insert (arm_reg_hsh, buf2, (PTR) & reg_table[entry]);
}
static void
@@ -5019,7 +6408,7 @@ insert_reg_alias (str, regnum)
int regnum;
{
struct reg_entry *new =
- (struct reg_entry *)xmalloc (sizeof (struct reg_entry));
+ (struct reg_entry *) xmalloc (sizeof (struct reg_entry));
char *name = xmalloc (strlen (str) + 1);
strcpy (name, str);
@@ -5035,7 +6424,7 @@ 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)
+ if (atof_ieee ((char *) fp_const[i], 'x', fp_values[i]) == NULL)
abort ();
}
@@ -5044,7 +6433,7 @@ 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
@@ -5052,15 +6441,15 @@ md_begin ()
|| (arm_reg_hsh = hash_new ()) == NULL
|| (arm_psr_hsh = hash_new ()) == NULL)
as_fatal (_("Virtual memory exhausted"));
-
+
for (i = 0; i < sizeof (insns) / sizeof (struct asm_opcode); i++)
hash_insert (arm_ops_hsh, insns[i].template, (PTR) (insns + i));
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) / sizeof (struct asm_shift); i++)
- hash_insert (arm_shift_hsh, shift[i].template, (PTR) (shift + 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));
@@ -5072,7 +6461,7 @@ md_begin ()
#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;
@@ -5081,45 +6470,73 @@ md_begin ()
if ((cpu_variant & FPU_ALL) == FPU_NONE) flags |= F_SOFT_FLOAT;
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;
-
+
default:
case ARM_6 | ARM_3 | ARM_2: /* Actually no CPU type defined. */
mach = bfd_mach_arm_4;
break;
-
+
case ARM_7: /* Also ARM_6. */
mach = bfd_mach_arm_3;
break;
}
-
+
/* Catch special cases. */
if (cpu_variant != (FPU_DEFAULT | CPU_DEFAULT))
{
- if (cpu_variant & (ARM_EXT_V5 & ARM_THUMB))
- mach = bfd_mach_arm_5T;
+ if (cpu_variant & ARM_EXT_XSCALE)
+ mach = bfd_mach_arm_XScale;
+ else if (cpu_variant & ARM_EXT_V5E)
+ mach = bfd_mach_arm_5TE;
else if (cpu_variant & ARM_EXT_V5)
- mach = bfd_mach_arm_5;
- else if (cpu_variant & ARM_THUMB)
- mach = bfd_mach_arm_4T;
- else if ((cpu_variant & ARM_ARCH_V4) == ARM_ARCH_V4)
- mach = bfd_mach_arm_4;
- else if (cpu_variant & ARM_LONGMUL)
+ {
+ if (cpu_variant & ARM_EXT_THUMB)
+ mach = bfd_mach_arm_5T;
+ else
+ mach = bfd_mach_arm_5;
+ }
+ else if (cpu_variant & ARM_EXT_HALFWORD)
+ {
+ if (cpu_variant & ARM_EXT_THUMB)
+ mach = bfd_mach_arm_4T;
+ else
+ mach = bfd_mach_arm_4;
+ }
+ else if (cpu_variant & ARM_EXT_LONGMUL)
mach = bfd_mach_arm_3M;
}
-
+
bfd_set_arch_mach (stdoutput, TARGET_ARCH, mach);
}
@@ -5129,6 +6546,7 @@ md_begin ()
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;
@@ -5141,10 +6559,10 @@ md_number_to_chars (buf, val, n)
number_to_chars_littleendian (buf, val, n);
}
-static valueT
+static valueT
md_chars_to_number (buf, n)
char * buf;
- int n;
+ int n;
{
valueT result = 0;
unsigned char * where = (unsigned char *) buf;
@@ -5170,8 +6588,8 @@ md_chars_to_number (buf, 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
+ 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.
@@ -5253,16 +6671,18 @@ md_atof (type, litP, sizeP)
return 0;
}
-/* The knowledge of the PC's pipeline offset is built into the insns themselves. */
+/* 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
+ 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
@@ -5280,7 +6700,8 @@ md_pcrel_from (fixP)
#endif
}
-/* Round up a section size to the appropriate boundary. */
+/* Round up a section size to the appropriate boundary. */
+
valueT
md_section_align (segment, size)
segT segment ATTRIBUTE_UNUSED;
@@ -5289,15 +6710,14 @@ md_section_align (segment, size)
#ifdef OBJ_ELF
return size;
#else
- /* Round all sects to multiple of 4 */
+ /* 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. */
+/* Under ELF we need to default _GLOBAL_OFFSET_TABLE.
+ Otherwise we have no need to default values of symbols. */
-/* ARGSUSED */
symbolS *
md_undefined_symbol (name)
char * name ATTRIBUTE_UNUSED;
@@ -5310,20 +6730,20 @@ md_undefined_symbol (name)
{
if (symbol_find (name))
as_bad ("GOT already in the symbol table");
-
+
GOT_symbol = symbol_new (name, undefined_section,
- (valueT)0, & zero_address_frag);
+ (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. */
+/* arm_reg_parse () := if it looks like a register, return its token and
+ advance the pointer. */
static int
arm_reg_parse (ccp)
@@ -5355,7 +6775,7 @@ arm_reg_parse (ccp)
*--p = 0;
reg = (struct reg_entry *) hash_find (arm_reg_hsh, start);
*p = c;
-
+
if (reg)
{
*ccp = p;
@@ -5367,9 +6787,9 @@ arm_reg_parse (ccp)
int
md_apply_fix3 (fixP, val, seg)
- fixS * fixP;
- valueT * val;
- segT seg;
+ fixS * fixP;
+ valueT * val;
+ segT seg;
{
offsetT value = * val;
offsetT newval;
@@ -5382,7 +6802,9 @@ md_apply_fix3 (fixP, val, seg)
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 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
@@ -5401,14 +6823,16 @@ md_apply_fix3 (fixP, val, 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);
}
}
- fixP->fx_addnumber = value; /* Remember value for emit_reloc. */
+ /* Remember value for emit_reloc. */
+ fixP->fx_addnumber = value;
switch (fixP->fx_r_type)
{
@@ -5434,7 +6858,7 @@ md_apply_fix3 (fixP, val, seg)
case BFD_RELOC_ARM_ADRL_IMMEDIATE:
{
unsigned int highpart = 0;
- unsigned int newinsn = 0xe1a00000; /* nop */
+ unsigned int newinsn = 0xe1a00000; /* nop. */
newimm = validate_immediate (value);
temp = md_chars_to_number (buf, INSN_SIZE);
@@ -5443,26 +6867,30 @@ md_apply_fix3 (fixP, val, seg)
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. */
+ /* 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. */
+ /* 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;
+ 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%x"), value);
+ _("Unable to compute ADRL instructions for PC offset of 0x%lx"),
+ 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. */
+ /* 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);
}
@@ -5477,16 +6905,17 @@ md_apply_fix3 (fixP, val, seg)
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;
- }
+ {
+ 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;
@@ -5494,23 +6923,23 @@ md_apply_fix3 (fixP, val, seg)
md_number_to_chars (buf, newval, INSN_SIZE);
break;
- case BFD_RELOC_ARM_OFFSET_IMM8:
- case BFD_RELOC_ARM_HWLITERAL:
+ 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)"),
+ {
+ 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;
- }
+ break;
+ }
newval = md_chars_to_number (buf, INSN_SIZE);
newval &= 0xff7ff0f0;
@@ -5520,13 +6949,13 @@ md_apply_fix3 (fixP, val, seg)
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,
+ as_bad_where (fixP->fx_file, fixP->fx_line,
_("invalid literal constant: pool needs to be closer"));
break;
}
@@ -5540,7 +6969,7 @@ md_apply_fix3 (fixP, val, seg)
case BFD_RELOC_ARM_SHIFT_IMM:
newval = md_chars_to_number (buf, INSN_SIZE);
if (((unsigned long) value) > 32
- || (value == 32
+ || (value == 32
&& (((newval & 0x60) == 0) || (newval & 0x60) == 0x60)))
{
as_bad_where (fixP->fx_file, fixP->fx_line,
@@ -5549,12 +6978,13 @@ md_apply_fix3 (fixP, val, seg)
}
if (value == 0)
- newval &= ~0x60; /* Shifts of zero must be done as lsl */
+ /* 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);
+ md_number_to_chars (buf, newval, INSN_SIZE);
break;
case BFD_RELOC_ARM_SWI:
@@ -5570,11 +7000,11 @@ md_apply_fix3 (fixP, val, seg)
else
{
if (((unsigned long) value) > 0x00ffffff)
- as_bad_where (fixP->fx_file, fixP->fx_line,
+ 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);
+ md_number_to_chars (buf, newval, INSN_SIZE);
}
break;
@@ -5601,8 +7031,8 @@ md_apply_fix3 (fixP, val, seg)
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 & 0xfe000000UL) != 0
- && ((value & 0xfe000000UL) != 0xfe000000UL))
+ 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
@@ -5611,7 +7041,7 @@ md_apply_fix3 (fixP, val, seg)
that the destination of the branch is in the same section as the
branch instruciton 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. */
@@ -5623,13 +7053,14 @@ md_apply_fix3 (fixP, val, seg)
/* Get pc relative value to go into the branch. */
value = * val;
- /* Permit a backward branch provided that enough bits are set.
- Allow a forwards branch, provided that enough bits are clear. */
- if ((value & 0xfe000000UL) == 0xfe000000UL
- || (value & 0xfe000000UL) == 0)
+ /* 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,
@@ -5638,71 +7069,88 @@ md_apply_fix3 (fixP, val, seg)
value >>= 2;
value += SEXT24 (newval);
-
- if ((value & 0xff000000UL) != 0
- && ((value & 0xff000000UL) != 0xff000000UL))
+
+ 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 */
+ 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);
+ 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 */
+ 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);
+ 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;
+ 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)
+ 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))
+ 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);
- md_number_to_chars (buf, newval, THUMB_SIZE);
- md_number_to_chars (buf + THUMB_SIZE, newval2, THUMB_SIZE);
+ newval = (newval & 0xf800) | ((value & 0x7fffff) >> 12);
+ newval2 = (newval2 & 0xf800) | ((value & 0xfff) >> 1);
+ md_number_to_chars (buf, newval, THUMB_SIZE);
+ md_number_to_chars (buf + THUMB_SIZE, newval2, THUMB_SIZE);
}
break;
@@ -5711,10 +7159,10 @@ md_apply_fix3 (fixP, val, seg)
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);
- }
+ {
+ value = fixP->fx_offset;
+ md_number_to_chars (buf, value, 1);
+ }
#endif
break;
@@ -5723,18 +7171,18 @@ md_apply_fix3 (fixP, val, seg)
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);
- }
+ {
+ 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;
+ md_number_to_chars (buf, 0, 4);
+ break;
#endif
case BFD_RELOC_RVA:
@@ -5743,23 +7191,23 @@ md_apply_fix3 (fixP, val, seg)
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);
- }
+ {
+ 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. */
+ /* It appears the instruction is fully prepared at this point. */
break;
#endif
case BFD_RELOC_ARM_GOTPC:
md_number_to_chars (buf, value, 4);
break;
-
+
case BFD_RELOC_ARM_CP_OFF_IMM:
sign = value >= 0;
if (value < -1023 || value > 1023 || (value & 3))
@@ -5768,17 +7216,18 @@ md_apply_fix3 (fixP, val, seg)
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);
+ newval |= (value >> 2) | (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 */
+ /* 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 */
+ 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
@@ -5788,42 +7237,43 @@ md_apply_fix3 (fixP, val, seg)
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));
+ (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%08X)"), value);
+ _("Invalid offset, value too big (0x%08lX)"), value);
- /* Round up, since pc will be rounded down. */
+ /* Round up, since pc will be rounded down. */
newval |= (value + 2) >> 2;
break;
- case 9: /* SP load/store */
+ case 9: /* SP load/store. */
if (value & ~0x3fc)
as_bad_where (fixP->fx_file, fixP->fx_line,
- _("Invalid offset, value too big (0x%08X)"), value);
+ _("Invalid offset, value too big (0x%08lX)"), value);
newval |= value >> 2;
break;
- case 6: /* Word load/store */
+ case 6: /* Word load/store. */
if (value & ~0x7c)
as_bad_where (fixP->fx_file, fixP->fx_line,
- _("Invalid offset, value too big (0x%08X)"), value);
- newval |= value << 4; /* 6 - 2 */
+ _("Invalid offset, value too big (0x%08lX)"), value);
+ newval |= value << 4; /* 6 - 2. */
break;
- case 7: /* Byte load/store */
+ case 7: /* Byte load/store. */
if (value & ~0x1f)
as_bad_where (fixP->fx_file, fixP->fx_line,
- _("Invalid offset, value too big (0x%08X)"), value);
+ _("Invalid offset, value too big (0x%08lX)"), value);
newval |= value << 6;
break;
- case 8: /* Halfword load/store */
+ case 8: /* Halfword load/store. */
if (value & ~0x3e)
as_bad_where (fixP->fx_file, fixP->fx_line,
- _("Invalid offset, value too big (0x%08X)"), value);
- newval |= value << 5; /* 6 - 1 */
+ _("Invalid offset, value too big (0x%08lX)"), value);
+ newval |= value << 5; /* 6 - 1. */
break;
default:
@@ -5838,89 +7288,91 @@ md_apply_fix3 (fixP, val, seg)
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
+
+ 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
+
+ 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)"),
+ 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);
- }
+ 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);
+ 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"),
+ {
+ 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;
+ newval |= value;
+ break;
- default:
- abort ();
- }
- md_number_to_chars (buf, newval , THUMB_SIZE);
+ default:
+ abort ();
+ }
+ md_number_to_chars (buf, newval, THUMB_SIZE);
break;
case BFD_RELOC_ARM_THUMB_SHIFT:
- /* 5bit shift value (0..31) */
+ /* 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);
+ md_number_to_chars (buf, newval, THUMB_SIZE);
break;
case BFD_RELOC_VTABLE_INHERIT:
@@ -5939,6 +7391,7 @@ md_apply_fix3 (fixP, val, seg)
/* Translate internal representation of relocation info to BFD target
format. */
+
arelent *
tc_gen_reloc (section, fixp)
asection * section ATTRIBUTE_UNUSED;
@@ -5987,10 +7440,12 @@ tc_gen_reloc (section, fixp)
}
case BFD_RELOC_ARM_PCREL_BRANCH:
- case BFD_RELOC_RVA:
+ 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;
@@ -5999,7 +7454,7 @@ tc_gen_reloc (section, fixp)
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 - possibly due to an implicit dump */
+ a section boundary - possibly due to an implicit dump. */
as_bad_where (fixp->fx_file, fixp->fx_line,
_("Literal referenced across section boundary (Implicit dump?)"));
return NULL;
@@ -6008,8 +7463,8 @@ tc_gen_reloc (section, fixp)
case BFD_RELOC_ARM_GOT32:
case BFD_RELOC_ARM_GOTOFF:
case BFD_RELOC_ARM_PLT32:
- code = fixp->fx_r_type;
- break;
+ code = fixp->fx_r_type;
+ break;
#endif
case BFD_RELOC_ARM_IMMEDIATE:
@@ -6020,8 +7475,7 @@ tc_gen_reloc (section, fixp)
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"),
- fixp->fx_r_type);
+ _("ADRL used for a symbol not defined in the same file"));
return NULL;
case BFD_RELOC_ARM_OFFSET_IMM:
@@ -6033,6 +7487,7 @@ tc_gen_reloc (section, fixp)
default:
{
char * type;
+
switch (fixp->fx_r_type)
{
case BFD_RELOC_ARM_IMMEDIATE: type = "IMMEDIATE"; break;
@@ -6049,22 +7504,22 @@ tc_gen_reloc (section, fixp)
default: type = _("<unknown>"); break;
}
as_bad_where (fixp->fx_file, fixp->fx_line,
- _("Can not represent %s relocation in this object file format (%d)"),
- type, fixp->fx_pcrel);
+ _("Cannot represent %s relocation in this object file format"),
+ type);
return NULL;
}
}
#ifdef OBJ_ELF
- if (code == BFD_RELOC_32_PCREL
- && GOT_symbol
- && fixp->fx_addsy == GOT_symbol)
- {
- code = BFD_RELOC_ARM_GOTPC;
- reloc->addend = fixp->fx_offset = reloc->address;
- }
+ if (code == BFD_RELOC_32_PCREL
+ && 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)
@@ -6075,10 +7530,10 @@ tc_gen_reloc (section, fixp)
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;
+ /* 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;
}
@@ -6096,7 +7551,7 @@ static void
output_inst PARAMS ((void))
{
char * to = NULL;
-
+
if (inst.error)
{
as_bad (inst.error);
@@ -6104,7 +7559,7 @@ output_inst PARAMS ((void))
}
to = frag_more (inst.size);
-
+
if (thumb_mode && (inst.size > THUMB_SIZE))
{
assert (inst.size == (2 * THUMB_SIZE));
@@ -6125,7 +7580,9 @@ output_inst PARAMS ((void))
inst.size, & inst.reloc.exp, inst.reloc.pc_rel,
inst.reloc.type);
- return;
+#ifdef OBJ_ELF
+ dwarf2_emit_insn (inst.size);
+#endif
}
void
@@ -6138,9 +7595,11 @@ md_assemble (str)
char * start;
/* Align the instruction.
- This may not be the right thing to do but ... */
- /* arm_align (2, 0); */
- listing_prev_line (); /* Defined in listing.h */
+ This may not be the right thing to do but ... */
+#if 0
+ arm_align (2, 0);
+#endif
+ listing_prev_line (); /* Defined in listing.h. */
/* Align the previous label if needed. */
if (last_label_seen != NULL)
@@ -6154,13 +7613,13 @@ md_assemble (str)
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);
@@ -6175,19 +7634,19 @@ md_assemble (str)
*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->variants & cpu_variant) == 0)
- {
- as_bad (_("selected processor does not support this opcode"));
- return;
- }
+ {
+ as_bad (_("selected processor does not support this opcode"));
+ return;
+ }
inst.instruction = opcode->value;
inst.size = opcode->size;
- (*opcode->parms)(p);
+ (*opcode->parms) (p);
output_inst ();
return;
}
@@ -6198,18 +7657,20 @@ md_assemble (str)
unsigned long cond_code;
inst.size = INSN_SIZE;
- /* p now points to the end of the opcode, probably white space, but we
+ /* P now points to the end of the opcode, probably white space, but we
have to break the opcode up in case it contains condionals and flags;
keep trying with progressively smaller basic instructions until one
matches, or we run out of opcode. */
q = (p - str > LONGEST_INST) ? str + LONGEST_INST : p;
+
for (; q != str; q--)
{
c = *q;
*q = '\0';
+
opcode = (CONST struct asm_opcode *) hash_find (arm_ops_hsh, str);
*q = c;
-
+
if (opcode && opcode->template)
{
unsigned long flag_bits = 0;
@@ -6224,24 +7685,25 @@ md_assemble (str)
{
if (opcode->comp_suffix)
{
- if (*opcode->comp_suffix != '\0')
- as_bad (_("Opcode `%s' must have suffix from list: <%s>"),
- str, opcode->comp_suffix);
- else
- /* Not a conditional instruction. */
- (*opcode->parms)(q, 0);
+ if (*opcode->comp_suffix != '\0')
+ as_bad (_("Opcode `%s' must have suffix from list: <%s>"),
+ str, opcode->comp_suffix);
+ else
+ /* Not a conditional instruction. */
+ (*opcode->parms) (q, 0);
}
else
{
- /* A conditional instruction with default condition. */
+ /* A conditional instruction with default condition. */
inst.instruction |= COND_ALWAYS;
- (*opcode->parms)(q, 0);
+ (*opcode->parms) (q, 0);
}
output_inst ();
return;
}
- /* Not just a simple opcode. Check if extra is a conditional. */
+ /* Not just a simple opcode. Check if extra is a
+ conditional. */
r = q;
if (p - r >= 2)
{
@@ -6266,23 +7728,22 @@ _("Warning: Use of the 'nv' conditional is deprecated\n"));
else
cond_code = COND_ALWAYS;
- /* Apply the conditional, or complain it's not allowed. */
+ /* Apply the conditional, or complain it's not allowed. */
if (opcode->comp_suffix && *opcode->comp_suffix == '\0')
{
- /* Instruction isn't conditional */
- if (cond_code != COND_ALWAYS)
- {
- as_bad (_("Opcode `%s' is unconditional\n"), str);
- return;
- }
+ /* Instruction isn't conditional. */
+ if (cond_code != COND_ALWAYS)
+ {
+ as_bad (_("Opcode `%s' is unconditional\n"), str);
+ return;
+ }
}
else
- /* Instruction is conditional: set the condition into it. */
- inst.instruction |= cond_code;
-
+ /* Instruction is conditional: set the condition into it. */
+ inst.instruction |= cond_code;
- /* If there is a compulsory suffix, it should come here, before
- any optional flags. */
+ /* If there is a compulsory suffix, it should come here
+ before any optional flags. */
if (opcode->comp_suffix && *opcode->comp_suffix != '\0')
{
CONST char *s = opcode->comp_suffix;
@@ -6297,8 +7758,8 @@ _("Warning: Use of the 'nv' conditional is deprecated\n"));
if (*s == '\0')
{
- as_bad (_("Opcode `%s' must have suffix from <%s>\n"), str,
- opcode->comp_suffix);
+ as_bad (_("Opcode `%s' must have suffix from <%s>\n"),
+ str, opcode->comp_suffix);
return;
}
@@ -6347,26 +7808,31 @@ _("Warning: Use of the 'nv' conditional is deprecated\n"));
}
/* It wasn't an instruction, but it might be a register alias of the form
- alias .req reg */
+ alias .req reg. */
q = p;
skip_whitespace (q);
c = *p;
*p = '\0';
-
+
if (*q && !strncmp (q, ".req ", 4))
{
int reg;
- char * copy_of_str = str;
+ char * copy_of_str;
char * r;
-
+
+#ifdef IGNORE_OPCODE_CASE
+ str = original_case_string;
+#endif
+ copy_of_str = str;
+
q += 4;
skip_whitespace (q);
for (r = q; *r != '\0'; r++)
if (*r == ' ')
break;
-
+
if (r != q)
{
int regnum;
@@ -6377,7 +7843,7 @@ _("Warning: Use of the 'nv' conditional is deprecated\n"));
*r = d;
reg = arm_reg_parse (& str);
-
+
if (reg == FAIL)
{
if (regnum != FAIL)
@@ -6389,8 +7855,8 @@ _("Warning: Use of the 'nv' conditional is deprecated\n"));
{
if (reg != regnum)
as_warn (_("ignoring redefinition of register alias '%s'"),
- copy_of_str );
-
+ copy_of_str);
+
/* Do not warn about redefinitions to the same alias. */
}
else
@@ -6399,7 +7865,7 @@ _("Warning: Use of the 'nv' conditional is deprecated\n"));
}
else
as_warn (_("ignoring incomplete .req pseuso op"));
-
+
*p = c;
return;
}
@@ -6408,38 +7874,39 @@ _("Warning: Use of the 'nv' conditional is deprecated\n"));
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. These are:
- * 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
- * -m[arm]v[2345[t]] Arm architectures
- * -mall All (except the ARM1)
- * FP variants:
- * -mfpa10, -mfpa11 FPA10 and 11 co-processor instructions
- * -mfpe-old (No float load/store multiples)
- * -mno-fpu Disable all floating point instructions
- * Run-time endian selection:
- * -EB big endian cpu
- * -EL little endian cpu
- * ARM Procedure Calling Standard:
- * -mapcs-32 32 bit APCS
- * -mapcs-26 26 bit APCS
- * -mapcs-float Pass floats in float regs
- * -mapcs-reentrant Position independent code
- * -mthumb-interwork Code supports Arm/Thumb interworking
- * -moabi Old ELF ABI
- */
+/* md_parse_option
+ Invocation line includes a switch not recognized by the base assembler.
+ See if it's a processor-specific option. These are:
+ 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)
+ -mno-fpu Disable all floating point instructions
+ Run-time endian selection:
+ -EB big endian cpu
+ -EL little endian cpu
+ ARM Procedure Calling Standard:
+ -mapcs-32 32 bit APCS
+ -mapcs-26 26 bit APCS
+ -mapcs-float Pass floats in float regs
+ -mapcs-reentrant Position independent code
+ -mthumb-interwork Code supports Arm/Thumb interworking
+ -matpcs ARM/Thumb Procedure Call Standard
+ -moabi Old ELF ABI */
CONST char * md_shortopts = "m:k";
+
struct option md_longopts[] =
{
#ifdef ARM_BI_ENDIAN
@@ -6454,6 +7921,7 @@ struct option md_longopts[] =
#endif
{NULL, no_argument, NULL, 0}
};
+
size_t md_longopts_size = sizeof (md_longopts);
int
@@ -6494,31 +7962,31 @@ md_parse_option (c, arg)
break;
#ifdef OBJ_ELF
- case 'o':
- if (streq (str, "oabi"))
- target_oabi = true;
- break;
+ case 'o':
+ if (streq (str, "oabi"))
+ target_oabi = true;
+ break;
#endif
-
- case 't':
- /* Limit assembler to generating only Thumb instructions: */
- if (streq (str, "thumb"))
- {
- cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_THUMB;
- cpu_variant = (cpu_variant & ~FPU_ALL) | FPU_NONE;
- thumb_mode = 1;
- }
- else if (streq (str, "thumb-interwork"))
- {
- if ((cpu_variant & ARM_THUMB) == 0)
+
+ case 't':
+ /* Limit assembler to generating only Thumb instructions: */
+ if (streq (str, "thumb"))
+ {
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_EXT_THUMB;
+ cpu_variant = (cpu_variant & ~FPU_ALL) | FPU_NONE;
+ thumb_mode = 1;
+ }
+ else if (streq (str, "thumb-interwork"))
+ {
+ if ((cpu_variant & ARM_EXT_THUMB) == 0)
cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_ARCH_V4T;
#if defined OBJ_COFF || defined OBJ_ELF
- support_interwork = true;
+ support_interwork = true;
#endif
- }
- else
+ }
+ else
goto bad;
- break;
+ break;
default:
if (streq (str, "all"))
@@ -6533,7 +8001,7 @@ md_parse_option (c, arg)
to us, so we must parse them here. */
str += 5;
-
+
if (streq (str, "32"))
{
uses_apcs_26 = false;
@@ -6573,16 +8041,22 @@ md_parse_option (c, arg)
{
/* Reentrant code has been generated. This does affect
linking, since there is no point in linking reentrant/
- position independent code with absolute position code. */
+ position independent code with absolute position code. */
pic_code = true;
return 1;
}
-
+
as_bad (_("Unrecognised APCS switch -m%s"), arg);
return 0;
- }
+ }
+
+ if (! strcmp (str, "atpcs"))
+ {
+ atpcs = true;
+ return 1;
+ }
#endif
- /* Strip off optional "arm" */
+ /* Strip off optional "arm". */
if (! strncmp (str, "arm", 3))
str += 3;
@@ -6627,7 +8101,8 @@ md_parse_option (c, arg)
break;
case '7':
- switch (strtol (str, & str, 10)) /* Eat the processor name */
+ /* Eat the processor name. */
+ switch (strtol (str, & str, 10))
{
case 7:
case 70:
@@ -6640,75 +8115,82 @@ md_parse_option (c, arg)
default:
goto bad;
}
- cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_7;
- for (; *str; str++)
- {
- switch (* str)
- {
- case 't':
- cpu_variant |= (ARM_THUMB | ARM_ARCH_V4);
- break;
-
- case 'm':
- cpu_variant |= ARM_LONGMUL;
- break;
-
- case 'f': /* fe => fp enabled cpu. */
- if (str[1] == 'e')
- ++ str;
- else
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_7;
+ for (; *str; str++)
+ {
+ switch (*str)
+ {
+ case 't':
+ cpu_variant |= ARM_ARCH_V4T;
+ break;
+
+ case 'm':
+ cpu_variant |= ARM_EXT_LONGMUL;
+ break;
+
+ case 'f': /* fe => fp enabled cpu. */
+ if (str[1] == 'e')
+ ++ str;
+ else
+ goto bad;
+
+ case 'c': /* Left over from 710c processor name. */
+ case 'd': /* Debug. */
+ case 'i': /* Embedded ICE. */
+ /* Included for completeness in ARM processor naming. */
+ break;
+
+ default:
goto bad;
-
- case 'c': /* Left over from 710c processor name. */
- case 'd': /* Debug */
- case 'i': /* Embedded ICE */
- /* Included for completeness in ARM processor naming. */
- break;
-
- default:
- goto bad;
- }
- }
+ }
+ }
break;
case '8':
if (streq (str, "8") || streq (str, "810"))
cpu_variant = (cpu_variant & ~ARM_ANY)
- | ARM_8 | ARM_ARCH_V4 | ARM_LONGMUL;
+ | ARM_8 | ARM_ARCH_V4;
else
goto bad;
break;
-
+
case '9':
if (streq (str, "9"))
cpu_variant = (cpu_variant & ~ARM_ANY)
- | ARM_9 | ARM_ARCH_V4 | ARM_LONGMUL | ARM_THUMB;
+ | ARM_9 | ARM_ARCH_V4T;
else if (streq (str, "920"))
cpu_variant = (cpu_variant & ~ARM_ANY)
- | ARM_9 | ARM_ARCH_V4 | ARM_LONGMUL;
+ | ARM_9 | ARM_ARCH_V4;
else if (streq (str, "920t"))
cpu_variant = (cpu_variant & ~ARM_ANY)
- | ARM_9 | ARM_ARCH_V4 | ARM_LONGMUL | ARM_THUMB;
+ | ARM_9 | ARM_ARCH_V4T;
else if (streq (str, "9tdmi"))
cpu_variant = (cpu_variant & ~ARM_ANY)
- | ARM_9 | ARM_ARCH_V4 | ARM_LONGMUL | ARM_THUMB;
+ | ARM_9 | ARM_ARCH_V4T;
else
goto bad;
break;
-
case 's':
if (streq (str, "strongarm")
|| streq (str, "strongarm110")
|| streq (str, "strongarm1100"))
cpu_variant = (cpu_variant & ~ARM_ANY)
- | ARM_8 | ARM_ARCH_V4 | ARM_LONGMUL;
+ | ARM_8 | ARM_ARCH_V4;
else
goto bad;
break;
-
+
+ case 'x':
+ if (streq (str, "xscale"))
+ cpu_variant = ARM_9 | ARM_ARCH_XSCALE;
+ else
+ goto bad;
+ break;
+
case 'v':
- /* Select variant based on architecture rather than processor. */
+ /* Select variant based on architecture rather than
+ processor. */
switch (*++str)
{
case '2':
@@ -6725,26 +8207,26 @@ md_parse_option (c, arg)
break;
}
break;
-
+
case '3':
- cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_7;
-
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_7;
+
switch (*++str)
{
- case 'm': cpu_variant |= ARM_LONGMUL; break;
+ case 'm': cpu_variant |= ARM_EXT_LONGMUL; break;
case 0: break;
default:
as_bad (_("Invalid architecture variant -m%s"), arg);
break;
}
break;
-
+
case '4':
- cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_ARCH_V4;
-
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_7 | ARM_ARCH_V4;
+
switch (*++str)
{
- case 't': cpu_variant |= ARM_THUMB; break;
+ case 't': cpu_variant |= ARM_EXT_THUMB; break;
case 0: break;
default:
as_bad (_("Invalid architecture variant -m%s"), arg);
@@ -6753,10 +8235,10 @@ md_parse_option (c, arg)
break;
case '5':
- cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_ARCH_V5;
+ cpu_variant = (cpu_variant & ~ARM_ANY) | ARM_9 | ARM_ARCH_V5;
switch (*++str)
{
- case 't': cpu_variant |= ARM_THUMB; break;
+ case 't': cpu_variant |= ARM_EXT_THUMB; break;
case 'e': cpu_variant |= ARM_EXT_V5E; break;
case 0: break;
default:
@@ -6764,13 +8246,13 @@ md_parse_option (c, arg)
break;
}
break;
-
+
default:
as_bad (_("Invalid architecture variant -m%s"), arg);
break;
}
break;
-
+
default:
bad:
as_bad (_("Invalid processor variant -m%s"), arg);
@@ -6784,12 +8266,12 @@ md_parse_option (c, arg)
pic_code = 1;
break;
#endif
-
+
default:
return 0;
}
- return 1;
+ return 1;
}
void
@@ -6810,9 +8292,10 @@ md_show_usage (fp)
#if defined OBJ_COFF || defined OBJ_ELF
fprintf (fp, _("\
-mapcs-32, -mapcs-26 specify which ARM Procedure Calling Standard to use\n\
+ -matpcs use ARM/Thumb Procedure Calling Standard\n\
-mapcs-float floating point args are passed in FP regs\n\
-mapcs-reentrant the code is position independent/reentrant\n"));
- #endif
+#endif
#ifdef OBJ_ELF
fprintf (fp, _("\
-moabi support the old ELF ABI\n"));
@@ -6840,8 +8323,8 @@ fix_new_arm (frag, where, size, exp, pc_rel, reloc)
int pc_rel;
int reloc;
{
- fixS * new_fix;
- arm_fix_data * arm_data;
+ fixS * new_fix;
+ arm_fix_data * arm_data;
switch (exp->X_op)
{
@@ -6858,7 +8341,8 @@ fix_new_arm (frag, where, size, exp, pc_rel, reloc)
break;
}
- /* Mark whether the fix is to a THUMB instruction, or an ARM instruction */
+ /* 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;
@@ -6866,8 +8350,8 @@ fix_new_arm (frag, where, size, exp, pc_rel, reloc)
return;
}
-
/* This fix_new is called by cons via TC_CONS_FIX_NEW. */
+
void
cons_fix_new_arm (frag, where, size, exp)
fragS * frag;
@@ -6877,10 +8361,10 @@ cons_fix_new_arm (frag, where, size, exp)
{
bfd_reloc_code_real_type type;
int pcrel = 0;
-
+
/* Pick a reloc.
FIXME: @@ Should look at CPU word size. */
- switch (size)
+ switch (size)
{
case 1:
type = BFD_RELOC_8;
@@ -6896,20 +8380,22 @@ cons_fix_new_arm (frag, where, size, exp)
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 ()
{
if (current_poolP == NULL)
return;
-
- subseg_set (text_section, 0); /* Put it at the end of text section. */
+
+ /* Put it at the end of text section. */
+ subseg_set (text_section, 0);
s_ltorg (0);
listing_prev_line ();
}
@@ -6925,13 +8411,13 @@ 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
-
+
if (label_is_thumb_function_name)
{
/* When the address of a Thumb function is taken the bottom
@@ -6940,7 +8426,7 @@ arm_frob_label (sym)
correctly. */
THUMB_SET_FUNC (sym, 1);
-
+
label_is_thumb_function_name = false;
}
}
@@ -6957,12 +8443,12 @@ arm_adjust_symtab ()
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_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)
@@ -6972,38 +8458,39 @@ arm_adjust_symtab ()
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;
- }
- }
+ {
+ 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;
+ 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))
@@ -7012,8 +8499,8 @@ arm_adjust_symtab ()
else
elf_sym->internal_elf_sym.st_info =
ELF_ST_INFO (bind, STT_ARM_16BIT);
- }
- }
+ }
+ }
#endif
}
@@ -7027,7 +8514,7 @@ arm_data_in_code ()
*input_line_pointer = 0;
return 1;
}
-
+
return 0;
}
@@ -7052,7 +8539,7 @@ arm_validate_fix (fixP)
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
+ 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))
@@ -7064,6 +8551,22 @@ arm_validate_fix (fixP)
return false;
}
+#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. */
+
+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
@@ -7077,26 +8580,26 @@ arm_validate_fix (fixP)
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. */
-
+
boolean
arm_fix_adjustable (fixP)
fixS * fixP;
{
if (fixP->fx_addsy == NULL)
return 1;
-
- /* Prevent all adjustments to global symbols. */
+
+ /* Prevent all adjustments to global symbols. */
if (S_IS_EXTERN (fixP->fx_addsy))
return 0;
-
+
if (S_IS_WEAK (fixP->fx_addsy))
return 0;
if (THUMB_IS_FUNC (fixP->fx_addsy)
&& fixP->fx_subsy == NULL)
return 0;
-
- /* We need the symbol name for the VTABLE entries */
+
+ /* 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;
@@ -7108,24 +8611,28 @@ const char *
elf32_arm_target_format ()
{
if (target_big_endian)
- if (target_oabi)
- return "elf32-bigarm-oabi";
- else
- return "elf32-bigarm";
+ {
+ if (target_oabi)
+ return "elf32-bigarm-oabi";
+ else
+ return "elf32-bigarm";
+ }
else
- if (target_oabi)
- return "elf32-littlearm-oabi";
- else
- return "elf32-littlearm";
+ {
+ if (target_oabi)
+ return "elf32-littlearm-oabi";
+ else
+ return "elf32-littlearm";
+ }
}
void
armelf_frob_symbol (symp, puntp)
symbolS * symp;
- int * puntp;
+ int * puntp;
{
elf_frob_symbol (symp, puntp);
-}
+}
int
arm_force_relocation (fixp)
@@ -7134,17 +8641,19 @@ arm_force_relocation (fixp)
if ( fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT
|| fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY
|| fixp->fx_r_type == BFD_RELOC_ARM_PCREL_BRANCH
- || fixp->fx_r_type == BFD_RELOC_THUMB_PCREL_BRANCH23)
+ || 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;
-
+
return 0;
}
static bfd_reloc_code_real_type
arm_parse_reloc ()
{
- char id[16];
- char * ip;
+ char id [16];
+ char * ip;
unsigned int i;
static struct
{
@@ -7154,28 +8663,27 @@ arm_parse_reloc ()
}
reloc_map[] =
{
-#define MAP(str,reloc) { str, sizeof (str)-1, reloc }
+#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 */
+ /* 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
+#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;
}
@@ -7202,34 +8710,35 @@ s_arm_elf_cons (nbytes)
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",
+ && * 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
+ {
+ 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);
+ emit_expr (&exp, (unsigned int) nbytes);
}
while (*input_line_pointer++ == ',');
- input_line_pointer--; /* Put terminator back into stream. */
+ /* Put terminator back into stream. */
+ input_line_pointer --;
demand_empty_rest_of_line ();
}
diff --git a/contrib/binutils/gas/config/tc-arm.h b/contrib/binutils/gas/config/tc-arm.h
index c5ab887..0a823dd 100644
--- a/contrib/binutils/gas/config/tc-arm.h
+++ b/contrib/binutils/gas/config/tc-arm.h
@@ -1,5 +1,5 @@
/* This file is tc-arm.h
- Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999
+ Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000
Free Software Foundation, Inc.
Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
Modified by David Taylor (dtaylor@armltd.co.uk)
@@ -68,12 +68,12 @@
#if defined OBJ_COFF || defined OBJ_ELF
# define ARM_BI_ENDIAN
-
+
# define TC_VALIDATE_FIX(fixP, segType, Label) \
if (arm_validate_fix (fixP)) add_symbolP = fixP->fx_addsy
extern boolean arm_validate_fix PARAMS ((struct fix *));
#endif
-
+
#ifdef OBJ_COFF
# if defined TE_PE
# define TC_FORCE_RELOCATION(x) ((x)->fx_r_type == BFD_RELOC_RVA)
@@ -90,7 +90,7 @@
#ifdef OBJ_ELF
# define TARGET_FORMAT elf32_arm_target_format()
extern const char * elf32_arm_target_format PARAMS ((void));
-
+
# define TC_FORCE_RELOCATION(fixp) arm_force_relocation (fixp)
extern int arm_force_relocation PARAMS ((struct fix *));
#endif
@@ -116,10 +116,14 @@
#define TC_FIX_TYPE PTR
#define TC_INIT_FIX_DATA(FIXP) ((FIXP)->tc_fix_data = NULL)
-#ifdef OBJ_ELF
+#if defined OBJ_ELF || defined OBJ_COFF
#include "write.h" /* For definition of fixS */
#define obj_fix_adjustable(fixP) arm_fix_adjustable (fixP)
boolean arm_fix_adjustable PARAMS ((fixS *));
+
+/* This arranges for gas/write.c to not apply a relocation if
+ obj_fix_adjustable() says it is not adjustable. */
+#define TC_FIX_ADJUSTABLE(fixP) obj_fix_adjustable (fixP)
#else
#define obj_fix_adjustable(fixP) 0
#endif
@@ -143,7 +147,6 @@ boolean arm_fix_adjustable PARAMS ((fixS *));
#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));
@@ -194,18 +197,20 @@ void armelf_frob_symbol PARAMS ((symbolS *, int *));
extern void cons_fix_new_arm PARAMS ((fragS *, int, int, expressionS *));
/* Don't allow symbols to be discarded on GOT related relocs,
- nor on globals. */
+ nor on globals. */
#define tc_fix_adjustable(x) (\
((x)->fx_r_type == BFD_RELOC_ARM_PLT32 \
|| (x)->fx_r_type == BFD_RELOC_ARM_GOT32 \
|| (x)->fx_r_type == BFD_RELOC_ARM_GOTOFF \
|| S_IS_EXTERN ((x)->fx_addsy) \
|| S_IS_WEAK ((x)->fx_addsy)) ? 0 : 1)
-
+
#ifdef OBJ_ELF
#define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_"
#else
#define GLOBAL_OFFSET_TABLE_NAME "__GLOBAL_OFFSET_TABLE_"
#endif
-
-/* end of tc-arm.h */
+
+#ifdef OBJ_ELF
+#define DWARF2_LINE_MIN_INSN_LENGTH 2
+#endif
diff --git a/contrib/binutils/gas/config/tc-i386.c b/contrib/binutils/gas/config/tc-i386.c
index 17b1f79..05bdcdc 100644
--- a/contrib/binutils/gas/config/tc-i386.c
+++ b/contrib/binutils/gas/config/tc-i386.c
@@ -1,6 +1,6 @@
/* i386.c -- Assemble code for the Intel 80386
- Copyright (C) 1989, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
- Free Software Foundation.
+ Copyright (C) 1989, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001
+ Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -19,17 +19,17 @@
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-/*
- Intel 80386 machine specific gas.
- Written by Eliot Dresselhaus (eliot@mgm.mit.edu).
- Bugs & suggestions are completely welcome. This is free software.
- Please help us make it better.
- */
+/* Intel 80386 machine specific gas.
+ Written by Eliot Dresselhaus (eliot@mgm.mit.edu).
+ x86_64 support by Jan Hubicka (jh@suse.cz)
+ Bugs & suggestions are completely welcome. This is free software.
+ Please help us make it better. */
#include <ctype.h>
#include "as.h"
#include "subsegs.h"
+#include "dwarf2dbg.h"
#include "opcode/i386.h"
#ifndef REGISTER_WARNINGS
@@ -52,23 +52,32 @@
#define false 0
static unsigned int mode_from_disp_size PARAMS ((unsigned int));
-static int fits_in_signed_byte PARAMS ((long));
-static int fits_in_unsigned_byte PARAMS ((long));
-static int fits_in_unsigned_word PARAMS ((long));
-static int fits_in_signed_word PARAMS ((long));
-static int smallest_imm_type PARAMS ((long));
+static int fits_in_signed_byte PARAMS ((offsetT));
+static int fits_in_unsigned_byte PARAMS ((offsetT));
+static int fits_in_unsigned_word PARAMS ((offsetT));
+static int fits_in_signed_word PARAMS ((offsetT));
+static int fits_in_unsigned_long PARAMS ((offsetT));
+static int fits_in_signed_long PARAMS ((offsetT));
+static int smallest_imm_type PARAMS ((offsetT));
+static offsetT offset_in_range PARAMS ((offsetT, int));
static int add_prefix PARAMS ((unsigned int));
-static void set_16bit_code_flag PARAMS ((int));
-static void set_16bit_gcc_code_flag PARAMS((int));
+static void set_code_flag PARAMS ((int));
+static void set_16bit_gcc_code_flag PARAMS ((int));
static void set_intel_syntax PARAMS ((int));
+static void set_cpu_arch PARAMS ((int));
#ifdef BFD_ASSEMBLER
static bfd_reloc_code_real_type reloc
- PARAMS ((int, int, bfd_reloc_code_real_type));
+ PARAMS ((int, int, int, bfd_reloc_code_real_type));
#endif
+#ifndef DEFAULT_ARCH
+#define DEFAULT_ARCH "i386"
+#endif
+static char *default_arch = DEFAULT_ARCH;
+
/* 'md_assemble ()' gathers together information and puts it into a
- i386_insn. */
+ i386_insn. */
union i386_op
{
@@ -79,19 +88,19 @@ union i386_op
struct _i386_insn
{
- /* TM holds the template for the insn were currently assembling. */
+ /* TM holds the template for the insn were currently assembling. */
template tm;
/* SUFFIX holds the instruction mnemonic suffix if given.
(e.g. 'l' for 'movl') */
char suffix;
- /* OPERANDS gives the number of given operands. */
+ /* OPERANDS gives the number of given operands. */
unsigned int operands;
/* REG_OPERANDS, DISP_OPERANDS, MEM_OPERANDS, IMM_OPERANDS give the number
of given register, displacement, memory operands and immediate
- operands. */
+ operands. */
unsigned int reg_operands, disp_operands, mem_operands, imm_operands;
/* TYPES [i] is the type (see above #defines) which tells us how to
@@ -102,6 +111,10 @@ struct _i386_insn
operand. */
union i386_op op[MAX_OPERANDS];
+ /* Flags for operands. */
+ unsigned int flags[MAX_OPERANDS];
+#define Operand_PCrel 1
+
/* Relocation type for operand */
#ifdef BFD_ASSEMBLER
enum bfd_reloc_code_real disp_reloc[MAX_OPERANDS];
@@ -116,8 +129,8 @@ struct _i386_insn
unsigned int log2_scale_factor;
/* SEG gives the seg_entries of this insn. They are zero unless
- explicit segment overrides are given. */
- const seg_entry *seg[2]; /* segments for memory operands (if given) */
+ explicit segment overrides are given. */
+ const seg_entry *seg[2];
/* PREFIX holds all the given prefix opcodes (usually null).
PREFIXES is the number of prefix opcodes. */
@@ -128,6 +141,7 @@ struct _i386_insn
addressing modes of this insn are encoded. */
modrm_byte rm;
+ rex_byte rex;
sib_byte sib;
};
@@ -142,8 +156,8 @@ const char extra_symbol_chars[] = "*%-(";
#endif
/* This array holds the chars that always start a comment. If the
- pre-processor is disabled, these aren't very useful */
-#if defined (TE_I386AIX) || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && !defined (TE_LINUX) && !defined(TE_FreeBSD))
+ pre-processor is disabled, these aren't very useful. */
+#if defined (TE_I386AIX) || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && ! defined (TE_LINUX) && !defined(TE_FreeBSD))
/* Putting '/' here makes it impossible to use the divide operator.
However, we need it for compatibility with SVR4 systems. */
const char comment_chars[] = "#/";
@@ -155,36 +169,37 @@ 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
+ .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
+ #NO_APP at the beginning of its output.
+ Also note that comments started like this one will always work if
'/' isn't otherwise defined. */
-#if defined (TE_I386AIX) || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && !defined (TE_LINUX) && !defined(TE_FreeBSD))
+#if defined (TE_I386AIX) || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) && ! defined (TE_LINUX) && !defined(TE_FreeBSD))
const char line_comment_chars[] = "";
#else
const char line_comment_chars[] = "/";
#endif
-const char line_separator_chars[] = "";
+const char line_separator_chars[] = ";";
-/* Chars that can be used to separate mant from exp in floating point nums */
+/* 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 */
+/* Chars that mean this number is a floating point constant
+ As in 0f12.456
+ or 0d1.2345e12. */
const char FLT_CHARS[] = "fFdDxX";
-/* tables for lexical analysis */
+/* Tables for lexical analysis. */
static char mnemonic_chars[256];
static char register_chars[256];
static char operand_chars[256];
static char identifier_chars[256];
static char digit_chars[256];
-/* lexical macros */
+/* Lexical macros. */
#define is_mnemonic_char(x) (mnemonic_chars[(unsigned char) x])
#define is_operand_char(x) (operand_chars[(unsigned char) x])
#define is_register_char(x) (register_chars[(unsigned char) x])
@@ -192,43 +207,71 @@ static char digit_chars[256];
#define is_identifier_char(x) (identifier_chars[(unsigned char) x])
#define is_digit_char(x) (digit_chars[(unsigned char) x])
-/* put here all non-digit non-letter charcters that may occur in an operand */
+/* All non-digit non-letter charcters that may occur in an operand. */
static char operand_special_chars[] = "%$-+(,)*._~/<>|&^!:[@]";
/* md_assemble() always leaves the strings it's passed unaltered. To
effect this we maintain a stack of saved characters that we've smashed
with '\0's (indicating end of strings for various sub-fields of the
- assembler instruction). */
+ assembler instruction). */
static char save_stack[32];
-static char *save_stack_p; /* stack pointer */
+static char *save_stack_p;
#define END_STRING_AND_SAVE(s) \
do { *save_stack_p++ = *(s); *(s) = '\0'; } while (0)
#define RESTORE_END_STRING(s) \
do { *(s) = *--save_stack_p; } while (0)
-/* The instruction we're assembling. */
+/* The instruction we're assembling. */
static i386_insn i;
/* Possible templates for current insn. */
static const templates *current_templates;
-/* Per instruction expressionS buffers: 2 displacements & 2 immediate max. */
+/* Per instruction expressionS buffers: 2 displacements & 2 immediate max. */
static expressionS disp_expressions[2], im_expressions[2];
-static int this_operand; /* current operand we are working on */
+/* Current operand we are working on. */
+static int this_operand;
+
+/* We support four different modes. FLAG_CODE variable is used to distinguish
+ these. */
+
+enum flag_code {
+ CODE_32BIT,
+ CODE_16BIT,
+ CODE_64BIT };
+
+static enum flag_code flag_code;
+static int use_rela_relocations = 0;
+
+/* The names used to print error messages. */
+static const char *flag_code_names[] =
+ {
+ "32",
+ "16",
+ "64"
+ };
-static int flag_do_long_jump; /* FIXME what does this do? */
+/* 1 for intel syntax,
+ 0 if att syntax. */
+static int intel_syntax = 0;
-static int flag_16bit_code; /* 1 if we're writing 16-bit code, 0 if 32-bit */
+/* 1 if register prefix % not required. */
+static int allow_naked_reg = 0;
-static int intel_syntax = 0; /* 1 for intel syntax, 0 if att syntax */
+/* Used in 16 bit gcc mode to add an l suffix to call, ret, enter,
+ leave, push, and pop instructions so that gcc has the same stack
+ frame as in 32 bit mode. */
+static char stackop_size = '\0';
-static int allow_naked_reg = 0; /* 1 if register prefix % not required */
+/* Non-zero to quieten some warnings. */
+static int quiet_warnings = 0;
-static char stackop_size = '\0'; /* Used in 16 bit gcc mode to add an l
- suffix to call, ret, enter, leave, push,
- and pop instructions so that gcc has the
- same stack frame as in 32 bit mode. */
+/* CPU name. */
+static const char *cpu_arch_name = NULL;
+
+/* CPU feature flags. */
+static unsigned int cpu_arch_flags = CpuUnknownFlags|CpuNo64;
/* Interface to relax_segment.
There are 2 relax states for 386 jump insns: one for conditional &
@@ -236,10 +279,10 @@ static char stackop_size = '\0'; /* Used in 16 bit gcc mode to add an l
jumps add different sizes to frags when we're figuring out what
sort of jump to choose to reach a given label. */
-/* types */
-#define COND_JUMP 1 /* conditional jump */
-#define UNCOND_JUMP 2 /* unconditional jump */
-/* sizes */
+/* Types. */
+#define COND_JUMP 1
+#define UNCOND_JUMP 2
+/* Sizes. */
#define CODE16 1
#define SMALL 0
#define SMALL16 (SMALL|CODE16)
@@ -255,7 +298,7 @@ static char stackop_size = '\0'; /* Used in 16 bit gcc mode to add an l
#endif
#define ENCODE_RELAX_STATE(type,size) \
- ((relax_substateT)((type<<2) | (size)))
+ ((relax_substateT) ((type<<2) | (size)))
#define SIZE_FROM_RELAX_STATE(s) \
( (((s) & 0x3) == BIG ? 4 : (((s) & 0x3) == BIG16 ? 2 : 1)) )
@@ -273,8 +316,7 @@ const relax_typeS md_relax_table[] =
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.
- */
+ 4) which index into the table to try if we can't fit into this one. */
{1, 1, 0, 0},
{1, 1, 0, 0},
{1, 1, 0, 0},
@@ -300,15 +342,31 @@ const relax_typeS md_relax_table[] =
};
+static const arch_entry cpu_arch[] = {
+ {"i8086", Cpu086 },
+ {"i186", Cpu086|Cpu186 },
+ {"i286", Cpu086|Cpu186|Cpu286 },
+ {"i386", Cpu086|Cpu186|Cpu286|Cpu386 },
+ {"i486", Cpu086|Cpu186|Cpu286|Cpu386|Cpu486 },
+ {"i586", Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|CpuMMX },
+ {"i686", Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuMMX|CpuSSE },
+ {"pentium", Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|CpuMMX },
+ {"pentiumpro",Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuMMX|CpuSSE },
+ {"pentium4", Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuP4|CpuMMX|CpuSSE|CpuSSE2 },
+ {"k6", Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|CpuK6|CpuMMX|Cpu3dnow },
+ {"athlon", Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuK6|CpuAthlon|CpuMMX|Cpu3dnow },
+ {"sledgehammer",Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuK6|CpuAthlon|CpuSledgehammer|CpuMMX|Cpu3dnow|CpuSSE|CpuSSE2 },
+ {NULL, 0 }
+};
void
i386_align_code (fragP, count)
fragS *fragP;
int count;
{
- /* Various efficient no-op patterns for aligning code labels. */
- /* Note: Don't try to assemble the instructions in the comments. */
- /* 0L and 0w are not legal */
+ /* Various efficient no-op patterns for aligning code labels.
+ Note: Don't try to assemble the instructions in the comments.
+ 0L and 0w are not legal. */
static const char f32_1[] =
{0x90}; /* nop */
static const char f32_2[] =
@@ -373,18 +431,24 @@ i386_align_code (fragP, count)
f32_15, f32_15, f32_15, f32_15, f32_15, f32_15, f32_15
};
+ /* ??? We can't use these fillers for x86_64, since they often kills the
+ upper halves. Solve later. */
+ if (flag_code == CODE_64BIT)
+ count = 1;
+
if (count > 0 && count <= 15)
{
- if (flag_16bit_code)
+ if (flag_code == CODE_16BIT)
{
- memcpy(fragP->fr_literal + fragP->fr_fix,
- f16_patt[count - 1], count);
- if (count > 8) /* adjust jump offset */
+ memcpy (fragP->fr_literal + fragP->fr_fix,
+ f16_patt[count - 1], count);
+ if (count > 8)
+ /* Adjust jump offset. */
fragP->fr_literal[fragP->fr_fix + 1] = count - 2;
}
else
- memcpy(fragP->fr_literal + fragP->fr_fix,
- f32_patt[count - 1], count);
+ memcpy (fragP->fr_literal + fragP->fr_fix,
+ f32_patt[count - 1], count);
fragP->fr_var = count;
}
}
@@ -399,65 +463,125 @@ static const reg_entry *parse_register PARAMS ((char *reg_string,
static void s_bss PARAMS ((int));
#endif
-symbolS *GOT_symbol; /* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
+symbolS *GOT_symbol; /* Pre-defined "_GLOBAL_OFFSET_TABLE_". */
static INLINE unsigned int
mode_from_disp_size (t)
unsigned int t;
{
- return (t & Disp8) ? 1 : (t & (Disp16|Disp32)) ? 2 : 0;
+ return (t & Disp8) ? 1 : (t & (Disp16 | Disp32 | Disp32S)) ? 2 : 0;
}
static INLINE int
fits_in_signed_byte (num)
- long num;
+ offsetT num;
{
return (num >= -128) && (num <= 127);
-} /* fits_in_signed_byte() */
+}
static INLINE int
fits_in_unsigned_byte (num)
- long num;
+ offsetT num;
{
return (num & 0xff) == num;
-} /* fits_in_unsigned_byte() */
+}
static INLINE int
fits_in_unsigned_word (num)
- long num;
+ offsetT num;
{
return (num & 0xffff) == num;
-} /* fits_in_unsigned_word() */
+}
static INLINE int
fits_in_signed_word (num)
- long num;
+ offsetT num;
{
return (-32768 <= num) && (num <= 32767);
-} /* fits_in_signed_word() */
+}
+static INLINE int
+fits_in_signed_long (num)
+ offsetT num ATTRIBUTE_UNUSED;
+{
+#ifndef BFD64
+ return 1;
+#else
+ return (!(((offsetT) -1 << 31) & num)
+ || (((offsetT) -1 << 31) & num) == ((offsetT) -1 << 31));
+#endif
+} /* fits_in_signed_long() */
+static INLINE int
+fits_in_unsigned_long (num)
+ offsetT num ATTRIBUTE_UNUSED;
+{
+#ifndef BFD64
+ return 1;
+#else
+ return (num & (((offsetT) 2 << 31) - 1)) == num;
+#endif
+} /* fits_in_unsigned_long() */
static int
smallest_imm_type (num)
- long num;
+ offsetT num;
{
-#if 0
- /* This code is disabled because all the Imm1 forms in the opcode table
- are slower on the i486, and they're the versions with the implicitly
- specified single-position displacement, which has another syntax if
- you really want to use that form. If you really prefer to have the
- one-byte-shorter Imm1 form despite these problems, re-enable this
- code. */
- if (num == 1)
- return Imm1 | Imm8 | Imm8S | Imm16 | Imm32;
-#endif
+ if (cpu_arch_flags != (Cpu086 | Cpu186 | Cpu286 | Cpu386 | Cpu486 | CpuNo64)
+ && !(cpu_arch_flags & (CpuUnknown)))
+ {
+ /* This code is disabled on the 486 because all the Imm1 forms
+ in the opcode table are slower on the i486. They're the
+ versions with the implicitly specified single-position
+ displacement, which has another syntax if you really want to
+ use that form. */
+ if (num == 1)
+ return Imm1 | Imm8 | Imm8S | Imm16 | Imm32 | Imm32S | Imm64;
+ }
return (fits_in_signed_byte (num)
- ? (Imm8S | Imm8 | Imm16 | Imm32)
+ ? (Imm8S | Imm8 | Imm16 | Imm32 | Imm32S | Imm64)
: fits_in_unsigned_byte (num)
- ? (Imm8 | Imm16 | Imm32)
+ ? (Imm8 | Imm16 | Imm32 | Imm32S | Imm64)
: (fits_in_signed_word (num) || fits_in_unsigned_word (num))
- ? (Imm16 | Imm32)
- : (Imm32));
-} /* smallest_imm_type() */
+ ? (Imm16 | Imm32 | Imm32S | Imm64)
+ : fits_in_signed_long (num)
+ ? (Imm32 | Imm32S | Imm64)
+ : fits_in_unsigned_long (num)
+ ? (Imm32 | Imm64)
+ : Imm64);
+}
+
+static offsetT
+offset_in_range (val, size)
+ offsetT val;
+ int size;
+{
+ addressT mask;
+
+ switch (size)
+ {
+ case 1: mask = ((addressT) 1 << 8) - 1; break;
+ case 2: mask = ((addressT) 1 << 16) - 1; break;
+ case 4: mask = ((addressT) 2 << 31) - 1; break;
+#ifdef BFD64
+ case 8: mask = ((addressT) 2 << 63) - 1; break;
+#endif
+ default: abort ();
+ }
+
+ /* If BFD64, sign extend val. */
+ if (!use_rela_relocations)
+ if ((val & ~(((addressT) 2 << 31) - 1)) == 0)
+ val = (val ^ ((addressT) 1 << 31)) - ((addressT) 1 << 31);
+
+ if ((val & ~mask) != 0 && (val & ~mask) != ~mask)
+ {
+ char buf1[40], buf2[40];
+
+ sprint_value (buf1, val);
+ sprint_value (buf2, val & mask);
+ as_warn (_("%s shortened to %s"), buf1, buf2);
+ }
+ return val & mask;
+}
/* Returns 0 if attempting to add a prefix where one from the same
class already exists, 1 if non rep/repne added, 2 if rep/repne
@@ -469,40 +593,43 @@ add_prefix (prefix)
int ret = 1;
int q;
- switch (prefix)
- {
- default:
- abort ();
-
- case CS_PREFIX_OPCODE:
- case DS_PREFIX_OPCODE:
- case ES_PREFIX_OPCODE:
- case FS_PREFIX_OPCODE:
- case GS_PREFIX_OPCODE:
- case SS_PREFIX_OPCODE:
- q = SEG_PREFIX;
- break;
-
- case REPNE_PREFIX_OPCODE:
- case REPE_PREFIX_OPCODE:
- ret = 2;
- /* fall thru */
- case LOCK_PREFIX_OPCODE:
- q = LOCKREP_PREFIX;
- break;
-
- case FWAIT_OPCODE:
- q = WAIT_PREFIX;
- break;
-
- case ADDR_PREFIX_OPCODE:
- q = ADDR_PREFIX;
- break;
-
- case DATA_PREFIX_OPCODE:
- q = DATA_PREFIX;
- break;
- }
+ if (prefix >= 0x40 && prefix < 0x50 && flag_code == CODE_64BIT)
+ q = REX_PREFIX;
+ else
+ switch (prefix)
+ {
+ default:
+ abort ();
+
+ case CS_PREFIX_OPCODE:
+ case DS_PREFIX_OPCODE:
+ case ES_PREFIX_OPCODE:
+ case FS_PREFIX_OPCODE:
+ case GS_PREFIX_OPCODE:
+ case SS_PREFIX_OPCODE:
+ q = SEG_PREFIX;
+ break;
+
+ case REPNE_PREFIX_OPCODE:
+ case REPE_PREFIX_OPCODE:
+ ret = 2;
+ /* fall thru */
+ case LOCK_PREFIX_OPCODE:
+ q = LOCKREP_PREFIX;
+ break;
+
+ case FWAIT_OPCODE:
+ q = WAIT_PREFIX;
+ break;
+
+ case ADDR_PREFIX_OPCODE:
+ q = ADDR_PREFIX;
+ break;
+
+ case DATA_PREFIX_OPCODE:
+ q = DATA_PREFIX;
+ break;
+ }
if (i.prefix[q])
{
@@ -516,19 +643,31 @@ add_prefix (prefix)
}
static void
-set_16bit_code_flag (new_16bit_code_flag)
- int new_16bit_code_flag;
+set_code_flag (value)
+ int value;
{
- flag_16bit_code = new_16bit_code_flag;
+ flag_code = value;
+ cpu_arch_flags &= ~(Cpu64 | CpuNo64);
+ cpu_arch_flags |= (flag_code == CODE_64BIT ? Cpu64 : CpuNo64);
+ if (value == CODE_64BIT && !(cpu_arch_flags & CpuSledgehammer))
+ {
+ as_bad (_("64bit mode not supported on this CPU."));
+ }
+ if (value == CODE_32BIT && !(cpu_arch_flags & Cpu386))
+ {
+ as_bad (_("32bit mode not supported on this CPU."));
+ }
stackop_size = '\0';
}
static void
-set_16bit_gcc_code_flag (new_16bit_code_flag)
- int new_16bit_code_flag;
+set_16bit_gcc_code_flag (new_code_flag)
+ int new_code_flag;
{
- flag_16bit_code = new_16bit_code_flag;
- stackop_size = new_16bit_code_flag ? 'l' : '\0';
+ flag_code = new_code_flag;
+ cpu_arch_flags &= ~(Cpu64 | CpuNo64);
+ cpu_arch_flags |= (flag_code == CODE_64BIT ? Cpu64 : CpuNo64);
+ stackop_size = 'l';
}
static void
@@ -544,9 +683,9 @@ set_intel_syntax (syntax_flag)
char *string = input_line_pointer;
int e = get_symbol_end ();
- if (strcmp(string, "prefix") == 0)
+ if (strcmp (string, "prefix") == 0)
ask_naked_reg = 1;
- else if (strcmp(string, "noprefix") == 0)
+ else if (strcmp (string, "noprefix") == 0)
ask_naked_reg = -1;
else
as_bad (_("bad argument to syntax directive."));
@@ -562,59 +701,110 @@ set_intel_syntax (syntax_flag)
allow_naked_reg = (intel_syntax
&& (bfd_get_symbol_leading_char (stdoutput) != '\0'));
#else
- allow_naked_reg = 0; /* conservative default */
+ /* Conservative default. */
+ allow_naked_reg = 0;
#endif
}
else
allow_naked_reg = (ask_naked_reg < 0);
}
+static void
+set_cpu_arch (dummy)
+ int dummy ATTRIBUTE_UNUSED;
+{
+ SKIP_WHITESPACE ();
+
+ if (! is_end_of_line[(unsigned char) *input_line_pointer])
+ {
+ char *string = input_line_pointer;
+ int e = get_symbol_end ();
+ int i;
+
+ for (i = 0; cpu_arch[i].name; i++)
+ {
+ if (strcmp (string, cpu_arch[i].name) == 0)
+ {
+ cpu_arch_name = cpu_arch[i].name;
+ cpu_arch_flags = cpu_arch[i].flags | (flag_code == CODE_64BIT ? Cpu64 : CpuNo64);
+ break;
+ }
+ }
+ if (!cpu_arch[i].name)
+ as_bad (_("no such architecture: `%s'"), string);
+
+ *input_line_pointer = e;
+ }
+ else
+ as_bad (_("missing cpu architecture"));
+
+ demand_empty_rest_of_line ();
+}
+
const pseudo_typeS md_pseudo_table[] =
{
-#ifndef I386COFF
- {"bss", s_bss, 0},
-#endif
#if !defined(OBJ_AOUT) && !defined(USE_ALIGN_PTWO)
{"align", s_align_bytes, 0},
#else
{"align", s_align_ptwo, 0},
#endif
+ {"arch", set_cpu_arch, 0},
+#ifndef I386COFF
+ {"bss", s_bss, 0},
+#endif
{"ffloat", float_cons, 'f'},
{"dfloat", float_cons, 'd'},
{"tfloat", float_cons, 'x'},
{"value", cons, 2},
{"noopt", s_ignore, 0},
{"optim", s_ignore, 0},
- {"code16gcc", set_16bit_gcc_code_flag, 1},
- {"code16", set_16bit_code_flag, 1},
- {"code32", set_16bit_code_flag, 0},
+ {"code16gcc", set_16bit_gcc_code_flag, CODE_16BIT},
+ {"code16", set_code_flag, CODE_16BIT},
+ {"code32", set_code_flag, CODE_32BIT},
+ {"code64", set_code_flag, CODE_64BIT},
{"intel_syntax", set_intel_syntax, 1},
{"att_syntax", set_intel_syntax, 0},
+ {"file", dwarf2_directive_file, 0},
+ {"loc", dwarf2_directive_loc, 0},
{0, 0, 0}
};
-/* for interface with expression () */
+/* For interface with expression (). */
extern char *input_line_pointer;
-/* hash table for instruction mnemonic lookup */
+/* Hash table for instruction mnemonic lookup. */
static struct hash_control *op_hash;
-/* hash table for register lookup */
+
+/* Hash table for register lookup. */
static struct hash_control *reg_hash;
-
+#ifdef BFD_ASSEMBLER
+unsigned long
+i386_mach ()
+{
+ if (!strcmp (default_arch, "x86_64"))
+ return bfd_mach_x86_64;
+ else if (!strcmp (default_arch, "i386"))
+ return bfd_mach_i386_i386;
+ else
+ as_fatal (_("Unknown architecture"));
+}
+#endif
+
void
md_begin ()
{
const char *hash_err;
- /* initialize op_hash hash table */
+ /* Initialize op_hash hash table. */
op_hash = hash_new ();
{
register const template *optab;
register templates *core_optab;
- optab = i386_optab; /* setup for loop */
+ /* Setup for loop. */
+ optab = i386_optab;
core_optab = (templates *) xmalloc (sizeof (templates));
core_optab->start = optab;
@@ -625,14 +815,13 @@ md_begin ()
|| strcmp (optab->name, (optab - 1)->name) != 0)
{
/* different name --> ship out current template list;
- add to hash table; & begin anew */
+ add to hash table; & begin anew. */
core_optab->end = optab;
hash_err = hash_insert (op_hash,
(optab - 1)->name,
(PTR) core_optab);
if (hash_err)
{
- hash_error:
as_fatal (_("Internal Error: Can't hash %s: %s"),
(optab - 1)->name,
hash_err);
@@ -645,7 +834,7 @@ md_begin ()
}
}
- /* initialize reg_hash hash table */
+ /* Initialize reg_hash hash table. */
reg_hash = hash_new ();
{
register const reg_entry *regtab;
@@ -656,11 +845,13 @@ md_begin ()
{
hash_err = hash_insert (reg_hash, regtab->reg_name, (PTR) regtab);
if (hash_err)
- goto hash_error;
+ as_fatal (_("Internal Error: Can't hash %s: %s"),
+ regtab->reg_name,
+ hash_err);
}
}
- /* fill in lexical tables: mnemonic_chars, operand_chars. */
+ /* Fill in lexical tables: mnemonic_chars, operand_chars. */
{
register int c;
register char *p;
@@ -725,10 +916,9 @@ i386_print_statistics (file)
hash_print_statistics (file, "i386 register", reg_hash);
}
-
#ifdef DEBUG386
-/* debugging routines for md_assemble */
+/* Debugging routines for md_assemble. */
static void pi PARAMS ((char *, i386_insn *));
static void pte PARAMS ((template *));
static void pt PARAMS ((unsigned int));
@@ -740,15 +930,20 @@ pi (line, x)
char *line;
i386_insn *x;
{
- register template *p;
- int i;
+ unsigned int i;
fprintf (stdout, "%s: template ", line);
pte (&x->tm);
- fprintf (stdout, " modrm: mode %x reg %x reg/mem %x",
+ fprintf (stdout, " address: base %s index %s scale %x\n",
+ x->base_reg ? x->base_reg->reg_name : "none",
+ x->index_reg ? x->index_reg->reg_name : "none",
+ x->log2_scale_factor);
+ fprintf (stdout, " modrm: mode %x reg %x reg/mem %x\n",
x->rm.mode, x->rm.reg, x->rm.regmem);
- fprintf (stdout, " base %x index %x scale %x\n",
- x->bi.base, x->bi.index, x->bi.scale);
+ fprintf (stdout, " sib: base %x index %x scale %x\n",
+ x->sib.base, x->sib.index, x->sib.scale);
+ fprintf (stdout, " rex: 64bit %x extX %x extY %x extZ %x\n",
+ x->rex.mode64, x->rex.extX, x->rex.extY, x->rex.extZ);
for (i = 0; i < x->operands; i++)
{
fprintf (stdout, " #%d: ", i + 1);
@@ -768,10 +963,9 @@ static void
pte (t)
template *t;
{
- int i;
+ unsigned int i;
fprintf (stdout, " %d operands ", t->operands);
- fprintf (stdout, "opcode %x ",
- t->base_opcode);
+ fprintf (stdout, "opcode %x ", t->base_opcode);
if (t->extension_opcode != None)
fprintf (stdout, "ext %x ", t->extension_opcode);
if (t->opcode_modifier & D)
@@ -829,15 +1023,20 @@ type_names[] =
{ Reg8, "r8" },
{ Reg16, "r16" },
{ Reg32, "r32" },
+ { Reg64, "r64" },
{ Imm8, "i8" },
{ Imm8S, "i8s" },
{ Imm16, "i16" },
{ Imm32, "i32" },
+ { Imm32S, "i32s" },
+ { Imm64, "i64" },
{ Imm1, "i1" },
{ BaseIndex, "BaseIndex" },
{ Disp8, "d8" },
{ Disp16, "d16" },
{ Disp32, "d32" },
+ { Disp32S, "d32s" },
+ { Disp64, "d64" },
{ InOutPortReg, "InOutPortReg" },
{ ShiftCount, "ShiftCount" },
{ Control, "control reg" },
@@ -861,16 +1060,9 @@ pt (t)
{
register struct type_name *ty;
- if (t == Unknown)
- {
- fprintf (stdout, _("Unknown"));
- }
- else
- {
- for (ty = type_names; ty->mask; ty++)
- if (t & ty->mask)
- fprintf (stdout, "%s, ", ty->tname);
- }
+ for (ty = type_names; ty->mask; ty++)
+ if (t & ty->mask)
+ fprintf (stdout, "%s, ", ty->tname);
fflush (stdout);
}
@@ -886,25 +1078,27 @@ tc_i386_force_relocation (fixp)
return 1;
return 0;
#else
- /* For COFF */
+ /* For COFF. */
return fixp->fx_r_type == 7;
#endif
}
#ifdef BFD_ASSEMBLER
-static bfd_reloc_code_real_type reloc
- PARAMS ((int, int, bfd_reloc_code_real_type));
static bfd_reloc_code_real_type
-reloc (size, pcrel, other)
+reloc (size, pcrel, sign, other)
int size;
int pcrel;
+ int sign;
bfd_reloc_code_real_type other;
{
- if (other != NO_RELOC) return other;
+ if (other != NO_RELOC)
+ return other;
if (pcrel)
{
+ if (!sign)
+ as_bad (_("There are no unsigned pc-relative relocations"));
switch (size)
{
case 1: return BFD_RELOC_8_PCREL;
@@ -915,64 +1109,76 @@ reloc (size, pcrel, other)
}
else
{
- switch (size)
- {
- case 1: return BFD_RELOC_8;
- case 2: return BFD_RELOC_16;
- case 4: return BFD_RELOC_32;
- }
- as_bad (_("can not do %d byte relocation"), size);
+ if (sign)
+ switch (size)
+ {
+ case 4: return BFD_RELOC_X86_64_32S;
+ }
+ else
+ switch (size)
+ {
+ case 1: return BFD_RELOC_8;
+ case 2: return BFD_RELOC_16;
+ case 4: return BFD_RELOC_32;
+ case 8: return BFD_RELOC_64;
+ }
+ as_bad (_("can not do %s %d byte relocation"),
+ sign ? "signed" : "unsigned", size);
}
+ abort ();
return BFD_RELOC_NONE;
}
-/*
- * Here we decide which fixups can be adjusted to make them relative to
- * the beginning of the section instead of the symbol. Basically we need
- * to make sure that the dynamic relocations are done correctly, so in
- * some cases we force the original symbol to be used.
- */
+/* Here we decide which fixups can be adjusted to make them relative to
+ the beginning of the section instead of the symbol. Basically we need
+ to make sure that the dynamic relocations are done correctly, so in
+ some cases we force the original symbol to be used. */
+
int
tc_i386_fix_adjustable (fixP)
fixS *fixP;
{
-#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) || defined (TE_PE)
+#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
/* Prevent all adjustments to global symbols, or else dynamic
linking will not work correctly. */
if (S_IS_EXTERNAL (fixP->fx_addsy)
|| S_IS_WEAK (fixP->fx_addsy))
return 0;
#endif
- /* adjust_reloc_syms doesn't know about the GOT */
+ /* adjust_reloc_syms doesn't know about the GOT. */
if (fixP->fx_r_type == BFD_RELOC_386_GOTOFF
|| fixP->fx_r_type == BFD_RELOC_386_PLT32
|| fixP->fx_r_type == BFD_RELOC_386_GOT32
- || fixP->fx_r_type == BFD_RELOC_RVA
+ || fixP->fx_r_type == BFD_RELOC_X86_64_PLT32
+ || fixP->fx_r_type == BFD_RELOC_X86_64_GOT32
+ || fixP->fx_r_type == BFD_RELOC_X86_64_GOTPCREL
|| fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
|| fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
return 0;
return 1;
}
#else
-#define reloc(SIZE,PCREL,OTHER) 0
-#define BFD_RELOC_16 0
-#define BFD_RELOC_32 0
-#define BFD_RELOC_16_PCREL 0
-#define BFD_RELOC_32_PCREL 0
-#define BFD_RELOC_386_PLT32 0
-#define BFD_RELOC_386_GOT32 0
-#define BFD_RELOC_386_GOTOFF 0
+#define reloc(SIZE,PCREL,SIGN,OTHER) 0
+#define BFD_RELOC_16 0
+#define BFD_RELOC_32 0
+#define BFD_RELOC_16_PCREL 0
+#define BFD_RELOC_32_PCREL 0
+#define BFD_RELOC_386_PLT32 0
+#define BFD_RELOC_386_GOT32 0
+#define BFD_RELOC_386_GOTOFF 0
+#define BFD_RELOC_X86_64_PLT32 0
+#define BFD_RELOC_X86_64_GOT32 0
+#define BFD_RELOC_X86_64_GOTPCREL 0
#endif
-static int
-intel_float_operand PARAMS ((char *mnemonic));
+static int intel_float_operand PARAMS ((char *mnemonic));
static int
intel_float_operand (mnemonic)
char *mnemonic;
{
- if (mnemonic[0] == 'f' && mnemonic[1] =='i')
+ if (mnemonic[0] == 'f' && mnemonic[1] == 'i')
return 2;
if (mnemonic[0] == 'f')
@@ -989,7 +1195,7 @@ void
md_assemble (line)
char *line;
{
- /* Points to template once we've found it. */
+ /* Points to template once we've found it. */
const template *t;
/* Count the size of the instruction generated. */
@@ -999,23 +1205,23 @@ md_assemble (line)
char mnemonic[MAX_MNEM_SIZE];
- /* Initialize globals. */
+ /* Initialize globals. */
memset (&i, '\0', sizeof (i));
for (j = 0; j < MAX_OPERANDS; j++)
i.disp_reloc[j] = NO_RELOC;
memset (disp_expressions, '\0', sizeof (disp_expressions));
memset (im_expressions, '\0', sizeof (im_expressions));
- save_stack_p = save_stack; /* reset stack pointer */
+ save_stack_p = save_stack;
/* First parse an instruction mnemonic & call i386_operand for the operands.
We assume that the scrubber has arranged it so that line[0] is the valid
- start of a (possibly prefixed) mnemonic. */
+ start of a (possibly prefixed) mnemonic. */
{
char *l = line;
char *token_start = l;
char *mnem_p;
- /* Non-zero if we found a prefix only acceptable with string insns. */
+ /* Non-zero if we found a prefix only acceptable with string insns. */
const char *expecting_string_instruction = NULL;
while (1)
@@ -1026,7 +1232,7 @@ md_assemble (line)
mnem_p++;
if (mnem_p >= mnemonic + sizeof (mnemonic))
{
- as_bad (_("no such 386 instruction: `%s'"), token_start);
+ as_bad (_("no such instruction: `%s'"), token_start);
return;
}
l++;
@@ -1060,7 +1266,7 @@ md_assemble (line)
Similarly, in 32-bit mode, do not allow addr32 or data32. */
if ((current_templates->start->opcode_modifier & (Size16 | Size32))
&& (((current_templates->start->opcode_modifier & Size32) != 0)
- ^ flag_16bit_code))
+ ^ (flag_code == CODE_16BIT)))
{
as_bad (_("redundant %s prefix"),
current_templates->start->name);
@@ -1072,8 +1278,7 @@ md_assemble (line)
case 0:
return;
case 2:
- expecting_string_instruction =
- current_templates->start->name;
+ expecting_string_instruction = current_templates->start->name;
break;
}
/* Skip past PREFIX_SEPARATOR and reset token_start. */
@@ -1090,31 +1295,57 @@ md_assemble (line)
{
case WORD_MNEM_SUFFIX:
case BYTE_MNEM_SUFFIX:
- case SHORT_MNEM_SUFFIX:
- case LONG_MNEM_SUFFIX:
+ case QWORD_MNEM_SUFFIX:
i.suffix = mnem_p[-1];
mnem_p[-1] = '\0';
current_templates = hash_find (op_hash, mnemonic);
break;
+ case SHORT_MNEM_SUFFIX:
+ case LONG_MNEM_SUFFIX:
+ if (!intel_syntax)
+ {
+ i.suffix = mnem_p[-1];
+ mnem_p[-1] = '\0';
+ current_templates = hash_find (op_hash, mnemonic);
+ }
+ break;
- /* Intel Syntax */
- case DWORD_MNEM_SUFFIX:
+ /* Intel Syntax. */
+ case 'd':
if (intel_syntax)
{
- i.suffix = mnem_p[-1];
+ if (intel_float_operand (mnemonic))
+ i.suffix = SHORT_MNEM_SUFFIX;
+ else
+ i.suffix = LONG_MNEM_SUFFIX;
mnem_p[-1] = '\0';
current_templates = hash_find (op_hash, mnemonic);
- break;
}
+ break;
}
if (!current_templates)
{
- as_bad (_("no such 386 instruction: `%s'"), token_start);
+ as_bad (_("no such instruction: `%s'"), token_start);
return;
}
}
- /* check for rep/repne without a string instruction */
+ /* Check if instruction is supported on specified architecture. */
+ if (cpu_arch_flags != 0)
+ {
+ if ((current_templates->start->cpu_flags & ~(Cpu64 | CpuNo64))
+ & ~(cpu_arch_flags & ~(Cpu64 | CpuNo64)))
+ {
+ as_warn (_("`%s' is not supported on `%s'"),
+ current_templates->start->name, cpu_arch_name);
+ }
+ else if ((Cpu386 & ~cpu_arch_flags) && (flag_code != CODE_16BIT))
+ {
+ as_warn (_("use .code16 to ensure correct addressing mode"));
+ }
+ }
+
+ /* Check for rep/repne without a string instruction. */
if (expecting_string_instruction
&& !(current_templates->start->opcode_modifier & IsString))
{
@@ -1123,20 +1354,18 @@ md_assemble (line)
return;
}
- /* There may be operands to parse. */
+ /* There may be operands to parse. */
if (*l != END_OF_INSN)
{
- /* parse operands */
-
- /* 1 if operand is pending after ','. */
+ /* 1 if operand is pending after ','. */
unsigned int expecting_operand = 0;
- /* Non-zero if operand parens not balanced. */
+ /* Non-zero if operand parens not balanced. */
unsigned int paren_not_balanced;
do
{
- /* skip optional white space before operand */
+ /* Skip optional white space before operand. */
if (is_space_char (*l))
++l;
if (!is_operand_char (*l) && *l != END_OF_INSN)
@@ -1189,7 +1418,7 @@ md_assemble (line)
l++;
}
if (l != token_start)
- { /* yes, we've read in another operand */
+ { /* Yes, we've read in another operand. */
unsigned int operand_ok;
this_operand = i.operands++;
if (i.operands > MAX_OPERANDS)
@@ -1198,15 +1427,17 @@ md_assemble (line)
MAX_OPERANDS);
return;
}
- /* now parse operand adding info to 'i' as we go along */
+ /* Now parse operand adding info to 'i' as we go along. */
END_STRING_AND_SAVE (l);
if (intel_syntax)
- operand_ok = i386_intel_operand (token_start, intel_float_operand (mnemonic));
+ operand_ok =
+ i386_intel_operand (token_start,
+ intel_float_operand (mnemonic));
else
operand_ok = i386_operand (token_start);
- RESTORE_END_STRING (l); /* restore old contents */
+ RESTORE_END_STRING (l);
if (!operand_ok)
return;
}
@@ -1225,17 +1456,18 @@ md_assemble (line)
}
}
- /* now *l must be either ',' or END_OF_INSN */
+ /* Now *l must be either ',' or END_OF_INSN. */
if (*l == ',')
{
if (*++l == END_OF_INSN)
- { /* just skip it, if it's \n complain */
+ {
+ /* Just skip it, if it's \n complain. */
goto expecting_operand_after_comma;
}
expecting_operand = 1;
}
}
- while (*l != END_OF_INSN); /* until we get end of insn */
+ while (*l != END_OF_INSN);
}
}
@@ -1244,7 +1476,7 @@ md_assemble (line)
Next, we find a template that matches the given insn,
making sure the overlap of the given operands types is consistent
- with the template operand types. */
+ with the template operand types. */
#define MATCH(overlap, given, template) \
((overlap & ~JumpAbsolute) \
@@ -1276,6 +1508,11 @@ md_assemble (line)
{
union i386_op temp_op;
unsigned int temp_type;
+#ifdef BFD_ASSEMBLER
+ enum bfd_reloc_code_real temp_reloc;
+#else
+ int temp_reloc;
+#endif
int xchg1 = 0;
int xchg2 = 0;
@@ -1295,6 +1532,9 @@ md_assemble (line)
temp_op = i.op[xchg2];
i.op[xchg2] = i.op[xchg1];
i.op[xchg1] = temp_op;
+ temp_reloc = i.disp_reloc[xchg2];
+ i.disp_reloc[xchg2] = i.disp_reloc[xchg1];
+ i.disp_reloc[xchg1] = temp_reloc;
if (i.mem_operands == 2)
{
@@ -1320,45 +1560,131 @@ md_assemble (line)
We can't do this properly yet, ie. excluding InOutPortReg,
but the following works for instructions with immediates.
In any case, we can't set i.suffix yet. */
- for (op = i.operands; --op >= 0; )
+ for (op = i.operands; --op >= 0;)
if (i.types[op] & Reg)
{
if (i.types[op] & Reg8)
guess_suffix = BYTE_MNEM_SUFFIX;
else if (i.types[op] & Reg16)
guess_suffix = WORD_MNEM_SUFFIX;
+ else if (i.types[op] & Reg32)
+ guess_suffix = LONG_MNEM_SUFFIX;
+ else if (i.types[op] & Reg64)
+ guess_suffix = QWORD_MNEM_SUFFIX;
break;
}
}
- else if (flag_16bit_code ^ (i.prefix[DATA_PREFIX] != 0))
+ else if ((flag_code == CODE_16BIT) ^ (i.prefix[DATA_PREFIX] != 0))
guess_suffix = WORD_MNEM_SUFFIX;
- for (op = i.operands; --op >= 0; )
- if ((i.types[op] & Imm)
- && i.op[op].imms->X_op == O_constant)
+ for (op = i.operands; --op >= 0;)
+ if (i.types[op] & Imm)
{
- /* If a suffix is given, this operand may be shortened. */
- switch (guess_suffix)
+ switch (i.op[op].imms->X_op)
{
- case WORD_MNEM_SUFFIX:
- i.types[op] |= Imm16;
- break;
- case BYTE_MNEM_SUFFIX:
- i.types[op] |= Imm16 | Imm8 | Imm8S;
- break;
+ case O_constant:
+ /* If a suffix is given, this operand may be shortened. */
+ switch (guess_suffix)
+ {
+ case LONG_MNEM_SUFFIX:
+ i.types[op] |= Imm32 | Imm64;
+ break;
+ case WORD_MNEM_SUFFIX:
+ i.types[op] |= Imm16 | Imm32S | Imm32 | Imm64;
+ break;
+ case BYTE_MNEM_SUFFIX:
+ i.types[op] |= Imm16 | Imm8 | Imm8S | Imm32S | Imm32 | Imm64;
+ break;
+ }
+
+ /* If this operand is at most 16 bits, convert it
+ to a signed 16 bit number before trying to see
+ whether it will fit in an even smaller size.
+ This allows a 16-bit operand such as $0xffe0 to
+ be recognised as within Imm8S range. */
+ if ((i.types[op] & Imm16)
+ && (i.op[op].imms->X_add_number & ~(offsetT) 0xffff) == 0)
+ {
+ i.op[op].imms->X_add_number =
+ (((i.op[op].imms->X_add_number & 0xffff) ^ 0x8000) - 0x8000);
+ }
+ if ((i.types[op] & Imm32)
+ && (i.op[op].imms->X_add_number & ~(((offsetT) 2 << 31) - 1)) == 0)
+ {
+ i.op[op].imms->X_add_number =
+ (i.op[op].imms->X_add_number ^ ((offsetT) 1 << 31)) - ((addressT) 1 << 31);
+ }
+ i.types[op] |= smallest_imm_type (i.op[op].imms->X_add_number);
+ /* We must avoid matching of Imm32 templates when 64bit only immediate is available. */
+ if (guess_suffix == QWORD_MNEM_SUFFIX)
+ i.types[op] &= ~Imm32;
+ break;
+ case O_absent:
+ case O_register:
+ abort ();
+ /* Symbols and expressions. */
+ default:
+ /* Convert symbolic operand to proper sizes for matching. */
+ switch (guess_suffix)
+ {
+ case QWORD_MNEM_SUFFIX:
+ i.types[op] = Imm64 | Imm32S;
+ break;
+ case LONG_MNEM_SUFFIX:
+ i.types[op] = Imm32 | Imm64;
+ break;
+ case WORD_MNEM_SUFFIX:
+ i.types[op] = Imm16 | Imm32 | Imm64;
+ break;
+ break;
+ case BYTE_MNEM_SUFFIX:
+ i.types[op] = Imm8 | Imm8S | Imm16 | Imm32S | Imm32;
+ break;
+ break;
+ }
+ break;
}
+ }
+ }
- /* If this operand is at most 16 bits, convert it to a
- signed 16 bit number before trying to see whether it will
- fit in an even smaller size. This allows a 16-bit operand
- such as $0xffe0 to be recognised as within Imm8S range. */
- if ((i.types[op] & Imm16)
- && (i.op[op].imms->X_add_number & ~(offsetT)0xffff) == 0)
+ if (i.disp_operands)
+ {
+ /* Try to use the smallest displacement type too. */
+ int op;
+
+ for (op = i.operands; --op >= 0;)
+ if ((i.types[op] & Disp)
+ && i.op[op].imms->X_op == O_constant)
+ {
+ offsetT disp = i.op[op].disps->X_add_number;
+
+ if (i.types[op] & Disp16)
+ {
+ /* We know this operand is at most 16 bits, so
+ convert to a signed 16 bit number before trying
+ to see whether it will fit in an even smaller
+ size. */
+
+ disp = (((disp & 0xffff) ^ 0x8000) - 0x8000);
+ }
+ else if (i.types[op] & Disp32)
{
- i.op[op].imms->X_add_number =
- (((i.op[op].imms->X_add_number & 0xffff) ^ 0x8000) - 0x8000);
+ /* We know this operand is at most 32 bits, so convert to a
+ signed 32 bit number before trying to see whether it will
+ fit in an even smaller size. */
+ disp &= (((offsetT) 2 << 31) - 1);
+ disp = (disp ^ ((offsetT) 1 << 31)) - ((addressT) 1 << 31);
}
- i.types[op] |= smallest_imm_type ((long) i.op[op].imms->X_add_number);
+ if (flag_code == CODE_64BIT)
+ {
+ if (fits_in_signed_long (disp))
+ i.types[op] |= Disp32S;
+ if (fits_in_unsigned_long (disp))
+ i.types[op] |= Disp32;
+ }
+ if ((i.types[op] & (Disp32 | Disp32S | Disp16))
+ && fits_in_signed_byte (disp))
+ i.types[op] |= Disp8;
}
}
@@ -1374,28 +1700,36 @@ md_assemble (line)
? No_sSuf
: (i.suffix == LONG_MNEM_SUFFIX
? No_lSuf
- : (i.suffix == DWORD_MNEM_SUFFIX
- ? No_dSuf
+ : (i.suffix == QWORD_MNEM_SUFFIX
+ ? No_qSuf
: (i.suffix == LONG_DOUBLE_MNEM_SUFFIX ? No_xSuf : 0))))));
for (t = current_templates->start;
t < current_templates->end;
t++)
{
- /* Must have right number of operands. */
+ /* Must have right number of operands. */
if (i.operands != t->operands)
continue;
/* Check the suffix, except for some instructions in intel mode. */
if ((t->opcode_modifier & suffix_check)
&& !(intel_syntax
+ && (t->opcode_modifier & IgnoreSize))
+ && !(intel_syntax
&& t->base_opcode == 0xd9
- && (t->extension_opcode == 5 /* 0xd9,5 "fldcw" */
- || t->extension_opcode == 7))) /* 0xd9,7 "f{n}stcw" */
+ && (t->extension_opcode == 5 /* 0xd9,5 "fldcw" */
+ || t->extension_opcode == 7))) /* 0xd9,7 "f{n}stcw" */
continue;
+ /* Do not verify operands when there are none. */
else if (!t->operands)
- break; /* 0 operands always matches */
+ {
+ if (t->cpu_flags & ~cpu_arch_flags)
+ continue;
+ /* We've found a match; break out of loop. */
+ break;
+ }
overlap0 = i.types[0] & t->operand_types[0];
switch (t->operands)
@@ -1414,12 +1748,11 @@ md_assemble (line)
overlap1, i.types[1],
t->operand_types[1]))
{
-
- /* check if other direction is valid ... */
+ /* Check if other direction is valid ... */
if ((t->opcode_modifier & (D|FloatD)) == 0)
continue;
- /* try reversing direction of operands */
+ /* Try reversing direction of operands. */
overlap0 = i.types[0] & t->operand_types[1];
overlap1 = i.types[1] & t->operand_types[0];
if (!MATCH (overlap0, i.types[0], t->operand_types[1])
@@ -1429,16 +1762,15 @@ md_assemble (line)
overlap1, i.types[1],
t->operand_types[0]))
{
- /* does not match either direction */
+ /* Does not match either direction. */
continue;
}
/* found_reverse_match holds which of D or FloatDR
we've found. */
found_reverse_match = t->opcode_modifier & (D|FloatDR);
- break;
}
- /* found a forward 2 operand match here */
- if (t->operands == 3)
+ /* Found a forward 2 operand match here. */
+ else if (t->operands == 3)
{
/* Here we make use of the fact that there are no
reverse match 3 operand instructions, and all 3
@@ -1453,29 +1785,41 @@ md_assemble (line)
continue;
}
- /* found either forward/reverse 2 or 3 operand match here:
- slip through to break */
+ /* Found either forward/reverse 2 or 3 operand match here:
+ slip through to break. */
}
- break; /* we've found a match; break out of loop */
- } /* for (t = ... */
+ if (t->cpu_flags & ~cpu_arch_flags)
+ {
+ found_reverse_match = 0;
+ continue;
+ }
+ /* We've found a match; break out of loop. */
+ break;
+ }
if (t == current_templates->end)
- { /* we found no match */
+ {
+ /* We found no match. */
as_bad (_("suffix or operands invalid for `%s'"),
current_templates->start->name);
return;
}
- if (!intel_syntax
- && (i.types[0] & JumpAbsolute) != (t->operand_types[0] & JumpAbsolute))
+ if (!quiet_warnings)
{
- as_warn (_("indirect %s without `*'"), t->name);
- }
+ if (!intel_syntax
+ && ((i.types[0] & JumpAbsolute)
+ != (t->operand_types[0] & JumpAbsolute)))
+ {
+ as_warn (_("indirect %s without `*'"), t->name);
+ }
- if ((t->opcode_modifier & (IsPrefix|IgnoreSize)) == (IsPrefix|IgnoreSize))
- {
- /* Warn them that a data or address size prefix doesn't affect
- assembly of the next line of code. */
- as_warn (_("stand-alone `%s' prefix"), t->name);
+ if ((t->opcode_modifier & (IsPrefix|IgnoreSize))
+ == (IsPrefix|IgnoreSize))
+ {
+ /* Warn them that a data or address size prefix doesn't
+ affect assembly of the next line of code. */
+ as_warn (_("stand-alone `%s' prefix"), t->name);
+ }
}
/* Copy the template we found. */
@@ -1493,16 +1837,16 @@ md_assemble (line)
}
/* Undo SYSV386_COMPAT brokenness when in Intel mode. See i386.h */
- if (SYSV386_COMPAT
- && intel_syntax
- && (i.tm.base_opcode & 0xfffffde0) == 0xdce0)
- i.tm.base_opcode ^= FloatR;
+ if (SYSV386_COMPAT
+ && intel_syntax
+ && (i.tm.base_opcode & 0xfffffde0) == 0xdce0)
+ i.tm.base_opcode ^= FloatR;
if (i.tm.opcode_modifier & FWait)
if (! add_prefix (FWAIT_OPCODE))
return;
- /* Check string instruction segment overrides */
+ /* Check string instruction segment overrides. */
if ((i.tm.opcode_modifier & IsString) != 0 && i.mem_operands != 0)
{
int mem_op = (i.types[0] & AnyMem) ? 0 : 1;
@@ -1533,31 +1877,47 @@ md_assemble (line)
}
}
+ if (i.reg_operands && flag_code < CODE_64BIT)
+ {
+ int op;
+ for (op = i.operands; --op >= 0;)
+ if ((i.types[op] & Reg)
+ && (i.op[op].regs->reg_flags & (RegRex64|RegRex)))
+ {
+ as_bad (_("Extended register `%%%s' available only in 64bit mode."),
+ i.op[op].regs->reg_name);
+ return;
+ }
+ }
+
/* If matched instruction specifies an explicit instruction mnemonic
suffix, use it. */
- if (i.tm.opcode_modifier & (Size16 | Size32))
+ if (i.tm.opcode_modifier & (Size16 | Size32 | Size64))
{
if (i.tm.opcode_modifier & Size16)
i.suffix = WORD_MNEM_SUFFIX;
+ else if (i.tm.opcode_modifier & Size64)
+ i.suffix = QWORD_MNEM_SUFFIX;
else
i.suffix = LONG_MNEM_SUFFIX;
}
else if (i.reg_operands)
{
/* If there's no instruction mnemonic suffix we try to invent one
- based on register operands. */
+ based on register operands. */
if (!i.suffix)
{
/* We take i.suffix from the last register operand specified,
Destination register type is more significant than source
register type. */
int op;
- for (op = i.operands; --op >= 0; )
+ for (op = i.operands; --op >= 0;)
if ((i.types[op] & Reg)
&& !(i.tm.operand_types[op] & InOutPortReg))
{
i.suffix = ((i.types[op] & Reg8) ? BYTE_MNEM_SUFFIX :
(i.types[op] & Reg16) ? WORD_MNEM_SUFFIX :
+ (i.types[op] & Reg64) ? QWORD_MNEM_SUFFIX :
LONG_MNEM_SUFFIX);
break;
}
@@ -1565,18 +1925,19 @@ md_assemble (line)
else if (i.suffix == BYTE_MNEM_SUFFIX)
{
int op;
- for (op = i.operands; --op >= 0; )
+ for (op = i.operands; --op >= 0;)
{
/* If this is an eight bit register, it's OK. If it's
the 16 or 32 bit version of an eight bit register,
- we will just use the low portion, and that's OK too. */
+ we will just use the low portion, and that's OK too. */
if (i.types[op] & Reg8)
continue;
- /* movzx and movsx should not generate this warning. */
+ /* movzx and movsx should not generate this warning. */
if (intel_syntax
&& (i.tm.base_opcode == 0xfb7
|| i.tm.base_opcode == 0xfb6
+ || i.tm.base_opcode == 0x63
|| i.tm.base_opcode == 0xfbe
|| i.tm.base_opcode == 0xfbf))
continue;
@@ -1590,16 +1951,27 @@ md_assemble (line)
#endif
)
{
+ /* Prohibit these changes in the 64bit mode, since
+ the lowering is more complicated. */
+ if (flag_code == CODE_64BIT
+ && (i.tm.operand_types[op] & InOutPortReg) == 0)
+ as_bad (_("Incorrect register `%%%s' used with`%c' suffix"),
+ i.op[op].regs->reg_name,
+ i.suffix);
#if REGISTER_WARNINGS
- if ((i.tm.operand_types[op] & InOutPortReg) == 0)
+ if (!quiet_warnings
+ && (i.tm.operand_types[op] & InOutPortReg) == 0)
as_warn (_("using `%%%s' instead of `%%%s' due to `%c' suffix"),
- (i.op[op].regs - (i.types[op] & Reg16 ? 8 : 16))->reg_name,
+ (i.op[op].regs
+ + (i.types[op] & Reg16
+ ? REGNAM_AL - REGNAM_AX
+ : REGNAM_AL - REGNAM_EAX))->reg_name,
i.op[op].regs->reg_name,
i.suffix);
#endif
continue;
}
- /* Any other register is bad */
+ /* Any other register is bad. */
if (i.types[op] & (Reg | RegMMX | RegXMM
| SReg2 | SReg3
| Control | Debug | Test
@@ -1616,6 +1988,51 @@ md_assemble (line)
else if (i.suffix == LONG_MNEM_SUFFIX)
{
int op;
+
+ for (op = i.operands; --op >= 0;)
+ /* Reject eight bit registers, except where the template
+ requires them. (eg. movzb) */
+ if ((i.types[op] & Reg8) != 0
+ && (i.tm.operand_types[op] & (Reg16 | Reg32 | Acc)) != 0)
+ {
+ as_bad (_("`%%%s' not allowed with `%s%c'"),
+ i.op[op].regs->reg_name,
+ i.tm.name,
+ i.suffix);
+ return;
+ }
+ /* Warn if the e prefix on a general reg is missing. */
+ else if ((!quiet_warnings || flag_code == CODE_64BIT)
+ && (i.types[op] & Reg16) != 0
+ && (i.tm.operand_types[op] & (Reg32|Acc)) != 0)
+ {
+ /* Prohibit these changes in the 64bit mode, since
+ the lowering is more complicated. */
+ if (flag_code == CODE_64BIT)
+ as_bad (_("Incorrect register `%%%s' used with`%c' suffix"),
+ i.op[op].regs->reg_name,
+ i.suffix);
+#if REGISTER_WARNINGS
+ else
+ as_warn (_("using `%%%s' instead of `%%%s' due to `%c' suffix"),
+ (i.op[op].regs + REGNAM_EAX - REGNAM_AX)->reg_name,
+ i.op[op].regs->reg_name,
+ i.suffix);
+#endif
+ }
+ /* Warn if the r prefix on a general reg is missing. */
+ else if ((i.types[op] & Reg64) != 0
+ && (i.tm.operand_types[op] & (Reg32|Acc)) != 0)
+ {
+ as_bad (_("Incorrect register `%%%s' used with`%c' suffix"),
+ i.op[op].regs->reg_name,
+ i.suffix);
+ }
+ }
+ else if (i.suffix == QWORD_MNEM_SUFFIX)
+ {
+ int op;
+
for (op = i.operands; --op >= 0; )
/* Reject eight bit registers, except where the template
requires them. (eg. movzb) */
@@ -1628,22 +2045,22 @@ md_assemble (line)
i.suffix);
return;
}
-#if REGISTER_WARNINGS
/* Warn if the e prefix on a general reg is missing. */
- else if ((i.types[op] & Reg16) != 0
+ else if (((i.types[op] & Reg16) != 0
+ || (i.types[op] & Reg32) != 0)
&& (i.tm.operand_types[op] & (Reg32|Acc)) != 0)
{
- as_warn (_("using `%%%s' instead of `%%%s' due to `%c' suffix"),
- (i.op[op].regs + 8)->reg_name,
- i.op[op].regs->reg_name,
- i.suffix);
+ /* Prohibit these changes in the 64bit mode, since
+ the lowering is more complicated. */
+ as_bad (_("Incorrect register `%%%s' used with`%c' suffix"),
+ i.op[op].regs->reg_name,
+ i.suffix);
}
-#endif
}
else if (i.suffix == WORD_MNEM_SUFFIX)
{
int op;
- for (op = i.operands; --op >= 0; )
+ for (op = i.operands; --op >= 0;)
/* Reject eight bit registers, except where the template
requires them. (eg. movzb) */
if ((i.types[op] & Reg8) != 0
@@ -1655,65 +2072,87 @@ md_assemble (line)
i.suffix);
return;
}
-#if REGISTER_WARNINGS
/* Warn if the e prefix on a general reg is present. */
- else if ((i.types[op] & Reg32) != 0
+ else if ((!quiet_warnings || flag_code == CODE_64BIT)
+ && (i.types[op] & Reg32) != 0
&& (i.tm.operand_types[op] & (Reg16|Acc)) != 0)
{
- as_warn (_("using `%%%s' instead of `%%%s' due to `%c' suffix"),
- (i.op[op].regs - 8)->reg_name,
- i.op[op].regs->reg_name,
- i.suffix);
- }
+ /* Prohibit these changes in the 64bit mode, since
+ the lowering is more complicated. */
+ if (flag_code == CODE_64BIT)
+ as_bad (_("Incorrect register `%%%s' used with`%c' suffix"),
+ i.op[op].regs->reg_name,
+ i.suffix);
+ else
+#if REGISTER_WARNINGS
+ as_warn (_("using `%%%s' instead of `%%%s' due to `%c' suffix"),
+ (i.op[op].regs + REGNAM_AX - REGNAM_EAX)->reg_name,
+ i.op[op].regs->reg_name,
+ i.suffix);
#endif
+ }
}
+ else if (intel_syntax && (i.tm.opcode_modifier & IgnoreSize))
+ /* Do nothing if the instruction is going to ignore the prefix. */
+ ;
else
- abort();
+ abort ();
}
else if ((i.tm.opcode_modifier & DefaultSize) && !i.suffix)
{
i.suffix = stackop_size;
}
-
/* Make still unresolved immediate matches conform to size of immediate
given in i.suffix. Note: overlap2 cannot be an immediate! */
- if ((overlap0 & (Imm8 | Imm8S | Imm16 | Imm32))
+ if ((overlap0 & (Imm8 | Imm8S | Imm16 | Imm32 | Imm32S))
&& overlap0 != Imm8 && overlap0 != Imm8S
- && overlap0 != Imm16 && overlap0 != Imm32)
+ && overlap0 != Imm16 && overlap0 != Imm32S
+ && overlap0 != Imm32 && overlap0 != Imm64)
{
if (i.suffix)
{
overlap0 &= (i.suffix == BYTE_MNEM_SUFFIX ? (Imm8 | Imm8S) :
- (i.suffix == WORD_MNEM_SUFFIX ? Imm16 : Imm32));
+ (i.suffix == WORD_MNEM_SUFFIX ? Imm16 :
+ (i.suffix == QWORD_MNEM_SUFFIX ? Imm64 | Imm32S : Imm32)));
}
- else if (overlap0 == (Imm16 | Imm32))
+ else if (overlap0 == (Imm16 | Imm32S | Imm32)
+ || overlap0 == (Imm16 | Imm32)
+ || overlap0 == (Imm16 | Imm32S))
{
overlap0 =
- (flag_16bit_code ^ (i.prefix[DATA_PREFIX] != 0)) ? Imm16 : Imm32;
+ ((flag_code == CODE_16BIT) ^ (i.prefix[DATA_PREFIX] != 0)) ? Imm16 : Imm32S;
}
- else
+ if (overlap0 != Imm8 && overlap0 != Imm8S
+ && overlap0 != Imm16 && overlap0 != Imm32S
+ && overlap0 != Imm32 && overlap0 != Imm64)
{
as_bad (_("no instruction mnemonic suffix given; can't determine immediate size"));
return;
}
}
- if ((overlap1 & (Imm8 | Imm8S | Imm16 | Imm32))
+ if ((overlap1 & (Imm8 | Imm8S | Imm16 | Imm32S | Imm32))
&& overlap1 != Imm8 && overlap1 != Imm8S
- && overlap1 != Imm16 && overlap1 != Imm32)
+ && overlap1 != Imm16 && overlap1 != Imm32S
+ && overlap1 != Imm32 && overlap1 != Imm64)
{
if (i.suffix)
{
overlap1 &= (i.suffix == BYTE_MNEM_SUFFIX ? (Imm8 | Imm8S) :
- (i.suffix == WORD_MNEM_SUFFIX ? Imm16 : Imm32));
+ (i.suffix == WORD_MNEM_SUFFIX ? Imm16 :
+ (i.suffix == QWORD_MNEM_SUFFIX ? Imm64 | Imm32S : Imm32)));
}
- else if (overlap1 == (Imm16 | Imm32))
+ else if (overlap1 == (Imm16 | Imm32 | Imm32S)
+ || overlap1 == (Imm16 | Imm32)
+ || overlap1 == (Imm16 | Imm32S))
{
overlap1 =
- (flag_16bit_code ^ (i.prefix[DATA_PREFIX] != 0)) ? Imm16 : Imm32;
+ ((flag_code == CODE_16BIT) ^ (i.prefix[DATA_PREFIX] != 0)) ? Imm16 : Imm32S;
}
- else
+ if (overlap1 != Imm8 && overlap1 != Imm8S
+ && overlap1 != Imm16 && overlap1 != Imm32S
+ && overlap1 != Imm32 && overlap1 != Imm64)
{
- as_bad (_("no instruction mnemonic suffix given; can't determine immediate size"));
+ as_bad (_("no instruction mnemonic suffix given; can't determine immediate size %x %c"),overlap1, i.suffix);
return;
}
}
@@ -1723,7 +2162,7 @@ md_assemble (line)
if (overlap0 & ImplicitRegister)
i.reg_operands--;
if (overlap0 & Imm1)
- i.imm_operands = 0; /* kludge for shift insns */
+ i.imm_operands = 0; /* kludge for shift insns. */
i.types[1] = overlap1;
if (overlap1 & ImplicitRegister)
@@ -1742,7 +2181,7 @@ md_assemble (line)
return;
}
- /* For movzx and movsx, need to check the register type */
+ /* For movzx and movsx, need to check the register type. */
if (intel_syntax
&& (i.tm.base_opcode == 0xfb6 || i.tm.base_opcode == 0xfbe))
if (i.suffix && i.suffix == BYTE_MNEM_SUFFIX)
@@ -1767,8 +2206,8 @@ md_assemble (line)
/* Now select between word & dword operations via the operand
size prefix, except for instructions that will ignore this
prefix anyway. */
- if (((intel_syntax && (i.suffix == DWORD_MNEM_SUFFIX))
- || i.suffix == LONG_MNEM_SUFFIX) == flag_16bit_code
+ if (i.suffix != QWORD_MNEM_SUFFIX
+ && (i.suffix == LONG_MNEM_SUFFIX) == (flag_code == CODE_16BIT)
&& !(i.tm.opcode_modifier & IgnoreSize))
{
unsigned int prefix = DATA_PREFIX_OPCODE;
@@ -1778,9 +2217,21 @@ md_assemble (line)
if (! add_prefix (prefix))
return;
}
+
+ /* Set mode64 for an operand. */
+ if (i.suffix == QWORD_MNEM_SUFFIX
+ && !(i.tm.opcode_modifier & NoRex64))
+ {
+ i.rex.mode64 = 1;
+ if (flag_code < CODE_64BIT)
+ {
+ as_bad (_("64bit operations available only in 64bit modes."));
+ return;
+ }
+ }
+
/* Size floating point instruction. */
- if (i.suffix == LONG_MNEM_SUFFIX
- || (intel_syntax && i.suffix == DWORD_MNEM_SUFFIX))
+ if (i.suffix == LONG_MNEM_SUFFIX)
{
if (i.tm.opcode_modifier & FloatMF)
i.tm.base_opcode ^= 4;
@@ -1796,7 +2247,7 @@ md_assemble (line)
expressionS *exp;
- assert(i.imm_operands == 0 && i.operands <= 2 && 2 < MAX_OPERANDS);
+ assert (i.imm_operands == 0 && i.operands <= 2 && 2 < MAX_OPERANDS);
exp = &im_expressions[i.imm_operands++];
i.op[i.operands].imms = exp;
@@ -1806,7 +2257,7 @@ md_assemble (line)
i.tm.extension_opcode = None;
}
- /* For insns with operands there are more diddles to do to the opcode. */
+ /* For insns with operands there are more diddles to do to the opcode. */
if (i.operands)
{
/* Default segment register this instruction will use
@@ -1820,33 +2271,35 @@ md_assemble (line)
if (i.tm.opcode_modifier & regKludge)
{
unsigned int first_reg_op = (i.types[0] & Reg) ? 0 : 1;
- /* Pretend we saw the extra register operand. */
- assert (i.op[first_reg_op+1].regs == 0);
- i.op[first_reg_op+1].regs = i.op[first_reg_op].regs;
- i.types[first_reg_op+1] = i.types[first_reg_op];
+ /* Pretend we saw the extra register operand. */
+ assert (i.op[first_reg_op + 1].regs == 0);
+ i.op[first_reg_op + 1].regs = i.op[first_reg_op].regs;
+ i.types[first_reg_op + 1] = i.types[first_reg_op];
i.reg_operands = 2;
}
if (i.tm.opcode_modifier & ShortForm)
{
- /* The register or float register operand is in operand 0 or 1. */
+ /* The register or float register operand is in operand 0 or 1. */
unsigned int op = (i.types[0] & (Reg | FloatReg)) ? 0 : 1;
- /* Register goes in low 3 bits of opcode. */
+ /* Register goes in low 3 bits of opcode. */
i.tm.base_opcode |= i.op[op].regs->reg_num;
- if ((i.tm.opcode_modifier & Ugh) != 0)
+ if (i.op[op].regs->reg_flags & RegRex)
+ i.rex.extZ = 1;
+ if (!quiet_warnings && (i.tm.opcode_modifier & Ugh) != 0)
{
/* Warn about some common errors, but press on regardless.
The first case can be generated by gcc (<= 2.8.1). */
if (i.operands == 2)
{
- /* reversed arguments on faddp, fsubp, etc. */
+ /* Reversed arguments on faddp, fsubp, etc. */
as_warn (_("translating to `%s %%%s,%%%s'"), i.tm.name,
i.op[1].regs->reg_name,
i.op[0].regs->reg_name);
}
else
{
- /* extraneous `l' suffix on fp insn */
+ /* Extraneous `l' suffix on fp insn. */
as_warn (_("translating to `%s %%%s'"), i.tm.name,
i.op[0].regs->reg_name);
}
@@ -1857,10 +2310,10 @@ md_assemble (line)
/* The opcode is completed (modulo i.tm.extension_opcode which
must be put into the modrm byte).
Now, we make the modrm & index base bytes based on all the
- info we've collected. */
+ info we've collected. */
/* i.reg_operands MUST be the number of real register operands;
- implicit registers do not count. */
+ implicit registers do not count. */
if (i.reg_operands == 2)
{
unsigned int source, dest;
@@ -1883,15 +2336,23 @@ md_assemble (line)
{
i.rm.reg = i.op[dest].regs->reg_num;
i.rm.regmem = i.op[source].regs->reg_num;
+ if (i.op[dest].regs->reg_flags & RegRex)
+ i.rex.extX = 1;
+ if (i.op[source].regs->reg_flags & RegRex)
+ i.rex.extZ = 1;
}
else
{
i.rm.reg = i.op[source].regs->reg_num;
i.rm.regmem = i.op[dest].regs->reg_num;
+ if (i.op[dest].regs->reg_flags & RegRex)
+ i.rex.extZ = 1;
+ if (i.op[source].regs->reg_flags & RegRex)
+ i.rex.extX = 1;
}
}
else
- { /* if it's not 2 reg operands... */
+ { /* If it's not 2 reg operands... */
if (i.mem_operands)
{
unsigned int fake_zero_displacement = 0;
@@ -1908,65 +2369,104 @@ md_assemble (line)
fake_zero_displacement = 1;
if (! i.index_reg)
{
- /* Operand is just <disp> */
- if (flag_16bit_code ^ (i.prefix[ADDR_PREFIX] != 0))
+ /* Operand is just <disp> */
+ if ((flag_code == CODE_16BIT) ^ (i.prefix[ADDR_PREFIX] != 0))
{
i.rm.regmem = NO_BASE_REGISTER_16;
i.types[op] &= ~Disp;
i.types[op] |= Disp16;
}
- else
+ else if (flag_code != CODE_64BIT)
{
i.rm.regmem = NO_BASE_REGISTER;
i.types[op] &= ~Disp;
i.types[op] |= Disp32;
}
+ else
+ {
+ /* 64bit mode overwrites the 32bit
+ absolute addressing by RIP relative
+ addressing and absolute addressing
+ is encoded by one of the redundant
+ SIB forms. */
+
+ i.rm.regmem = ESCAPE_TO_TWO_BYTE_ADDRESSING;
+ i.sib.base = NO_BASE_REGISTER;
+ i.sib.index = NO_INDEX_REGISTER;
+ i.types[op] &= ~Disp;
+ i.types[op] |= Disp32S;
+ }
}
- else /* ! i.base_reg && i.index_reg */
+ else /* ! i.base_reg && i.index_reg */
{
i.sib.index = i.index_reg->reg_num;
i.sib.base = NO_BASE_REGISTER;
i.sib.scale = i.log2_scale_factor;
i.rm.regmem = ESCAPE_TO_TWO_BYTE_ADDRESSING;
i.types[op] &= ~Disp;
- i.types[op] |= Disp32; /* Must be 32 bit */
+ if (flag_code != CODE_64BIT)
+ i.types[op] |= Disp32; /* Must be 32 bit */
+ else
+ i.types[op] |= Disp32S;
+ if (i.index_reg->reg_flags & RegRex)
+ i.rex.extY = 1;
}
}
+ /* RIP addressing for 64bit mode. */
+ else if (i.base_reg->reg_type == BaseIndex)
+ {
+ i.rm.regmem = NO_BASE_REGISTER;
+ i.types[op] &= ~Disp;
+ i.types[op] |= Disp32S;
+ i.flags[op] = Operand_PCrel;
+ }
else if (i.base_reg->reg_type & Reg16)
{
switch (i.base_reg->reg_num)
{
- case 3: /* (%bx) */
+ case 3: /* (%bx) */
if (! i.index_reg)
i.rm.regmem = 7;
- else /* (%bx,%si) -> 0, or (%bx,%di) -> 1 */
+ else /* (%bx,%si) -> 0, or (%bx,%di) -> 1 */
i.rm.regmem = i.index_reg->reg_num - 6;
break;
- case 5: /* (%bp) */
+ case 5: /* (%bp) */
default_seg = &ss;
if (! i.index_reg)
{
i.rm.regmem = 6;
if ((i.types[op] & Disp) == 0)
{
- /* fake (%bp) into 0(%bp) */
+ /* fake (%bp) into 0(%bp) */
i.types[op] |= Disp8;
fake_zero_displacement = 1;
}
}
- else /* (%bp,%si) -> 2, or (%bp,%di) -> 3 */
+ else /* (%bp,%si) -> 2, or (%bp,%di) -> 3 */
i.rm.regmem = i.index_reg->reg_num - 6 + 2;
break;
- default: /* (%si) -> 4 or (%di) -> 5 */
+ default: /* (%si) -> 4 or (%di) -> 5 */
i.rm.regmem = i.base_reg->reg_num - 6 + 4;
}
i.rm.mode = mode_from_disp_size (i.types[op]);
}
- else /* i.base_reg and 32 bit mode */
+ else /* i.base_reg and 32/64 bit mode */
{
+ if (flag_code == CODE_64BIT
+ && (i.types[op] & Disp))
+ {
+ if (i.types[op] & Disp8)
+ i.types[op] = Disp8 | Disp32S;
+ else
+ i.types[op] = Disp32S;
+ }
i.rm.regmem = i.base_reg->reg_num;
+ if (i.base_reg->reg_flags & RegRex)
+ i.rex.extZ = 1;
i.sib.base = i.base_reg->reg_num;
- if (i.base_reg->reg_num == EBP_REG_NUM)
+ /* x86-64 ignores REX prefix bit here to avoid
+ decoder complications. */
+ if ((i.base_reg->reg_num & 7) == EBP_REG_NUM)
{
default_seg = &ss;
if (i.disp_operands == 0)
@@ -2000,6 +2500,8 @@ md_assemble (line)
{
i.sib.index = i.index_reg->reg_num;
i.rm.regmem = ESCAPE_TO_TWO_BYTE_ADDRESSING;
+ if (i.index_reg->reg_flags & RegRex)
+ i.rex.extY = 1;
}
i.rm.mode = mode_from_disp_size (i.types[op]);
}
@@ -2007,7 +2509,7 @@ md_assemble (line)
if (fake_zero_displacement)
{
/* Fakes a zero displacement assuming that i.types[op]
- holds the correct displacement size. */
+ holds the correct displacement size. */
expressionS *exp;
assert (i.op[op].disps == 0);
@@ -2024,7 +2526,7 @@ md_assemble (line)
operand (if any) based on i.tm.extension_opcode.
Again, we must be careful to make sure that
segment/control/debug/test/MMX registers are coded
- into the i.rm.reg field. */
+ into the i.rm.reg field. */
if (i.reg_operands)
{
unsigned int op =
@@ -2040,11 +2542,19 @@ md_assemble (line)
? 1
: 2));
/* If there is an extension opcode to put here, the
- register number must be put into the regmem field. */
+ register number must be put into the regmem field. */
if (i.tm.extension_opcode != None)
- i.rm.regmem = i.op[op].regs->reg_num;
+ {
+ i.rm.regmem = i.op[op].regs->reg_num;
+ if (i.op[op].regs->reg_flags & RegRex)
+ i.rex.extZ = 1;
+ }
else
- i.rm.reg = i.op[op].regs->reg_num;
+ {
+ i.rm.reg = i.op[op].regs->reg_num;
+ if (i.op[op].regs->reg_flags & RegRex)
+ i.rex.extX = 1;
+ }
/* Now, if no memory operand has set i.rm.mode = 0, 1, 2
we must set it to 3 to indicate this is a register
@@ -2053,19 +2563,22 @@ md_assemble (line)
i.rm.mode = 3;
}
- /* Fill in i.rm.reg field with extension opcode (if any). */
+ /* Fill in i.rm.reg field with extension opcode (if any). */
if (i.tm.extension_opcode != None)
i.rm.reg = i.tm.extension_opcode;
}
}
else if (i.tm.opcode_modifier & (Seg2ShortForm | Seg3ShortForm))
{
- if (i.tm.base_opcode == POP_SEG_SHORT && i.op[0].regs->reg_num == 1)
+ if (i.tm.base_opcode == POP_SEG_SHORT
+ && i.op[0].regs->reg_num == 1)
{
as_bad (_("you can't `pop %%cs'"));
return;
}
i.tm.base_opcode |= (i.op[0].regs->reg_num << 3);
+ if (i.op[0].regs->reg_flags & RegRex)
+ i.rex.extZ = 1;
}
else if ((i.tm.base_opcode & ~(D|W)) == MOV_AX_DISP32)
{
@@ -2090,14 +2603,14 @@ md_assemble (line)
return;
}
}
- else if ((i.tm.opcode_modifier & Ugh) != 0)
+ else if (!quiet_warnings && (i.tm.opcode_modifier & Ugh) != 0)
{
/* UnixWare fsub no args is alias for fsubp, fadd -> faddp, etc. */
as_warn (_("translating to `%sp'"), i.tm.name);
}
}
- /* Handle conversion of 'int $3' --> special int3 insn. */
+ /* Handle conversion of 'int $3' --> special int3 insn. */
if (i.tm.base_opcode == INT_OPCODE && i.op[0].imms->X_add_number == 3)
{
i.tm.base_opcode = INT3_OPCODE;
@@ -2114,11 +2627,52 @@ md_assemble (line)
i.op[0].disps->X_op = O_symbol;
}
- /* We are ready to output the insn. */
+ if (i.tm.opcode_modifier & Rex64)
+ i.rex.mode64 = 1;
+
+ /* For 8bit registers we would need an empty rex prefix.
+ Also in the case instruction is already having prefix,
+ we need to convert old registers to new ones. */
+
+ if (((i.types[0] & Reg8) && (i.op[0].regs->reg_flags & RegRex64))
+ || ((i.types[1] & Reg8) && (i.op[1].regs->reg_flags & RegRex64))
+ || ((i.rex.mode64 || i.rex.extX || i.rex.extY || i.rex.extZ || i.rex.empty)
+ && ((i.types[0] & Reg8) || (i.types[1] & Reg8))))
+ {
+ int x;
+ i.rex.empty = 1;
+ for (x = 0; x < 2; x++)
+ {
+ /* Look for 8bit operand that does use old registers. */
+ if (i.types[x] & Reg8
+ && !(i.op[x].regs->reg_flags & RegRex64))
+ {
+ /* In case it is "hi" register, give up. */
+ if (i.op[x].regs->reg_num > 3)
+ as_bad (_("Can't encode registers '%%%s' in the instruction requiring REX prefix.\n"),
+ i.op[x].regs->reg_name);
+
+ /* Otherwise it is equivalent to the extended register.
+ Since the encoding don't change this is merely cosmetical
+ cleanup for debug output. */
+
+ i.op[x].regs = i.op[x].regs + 8;
+ }
+ }
+ }
+
+ if (i.rex.mode64 || i.rex.extX || i.rex.extY || i.rex.extZ || i.rex.empty)
+ add_prefix (0x40
+ | (i.rex.mode64 ? 8 : 0)
+ | (i.rex.extX ? 4 : 0)
+ | (i.rex.extY ? 2 : 0)
+ | (i.rex.extZ ? 1 : 0));
+
+ /* We are ready to output the insn. */
{
register char *p;
- /* Output jumps. */
+ /* Output jumps. */
if (i.tm.opcode_modifier & Jump)
{
int size;
@@ -2126,7 +2680,7 @@ md_assemble (line)
int prefix;
code16 = 0;
- if (flag_16bit_code)
+ if (flag_code == CODE_16BIT)
code16 = CODE16;
prefix = 0;
@@ -2136,6 +2690,11 @@ md_assemble (line)
i.prefixes -= 1;
code16 ^= CODE16;
}
+ if (i.prefix[REX_PREFIX])
+ {
+ prefix++;
+ i.prefixes--;
+ }
size = 4;
if (code16)
@@ -2153,8 +2712,10 @@ md_assemble (line)
insn_size += prefix + 1;
/* Prefix and 1 opcode byte go in fr_fix. */
p = frag_more (prefix + 1);
- if (prefix)
+ if (i.prefix[DATA_PREFIX])
*p++ = DATA_PREFIX_OPCODE;
+ if (i.prefix[REX_PREFIX])
+ *p++ = i.prefix[REX_PREFIX];
*p = i.tm.base_opcode;
/* 1 possible extra opcode + displacement go in var part.
Pass reloc in fr_var. */
@@ -2188,7 +2749,7 @@ md_assemble (line)
int code16;
code16 = 0;
- if (flag_16bit_code)
+ if (flag_code == CODE_16BIT)
code16 = CODE16;
if (i.prefix[DATA_PREFIX])
@@ -2204,6 +2765,13 @@ md_assemble (line)
size = 2;
}
+ if (i.prefix[REX_PREFIX])
+ {
+ FRAG_APPEND_1_CHAR (i.prefix[REX_PREFIX]);
+ insn_size++;
+ i.prefixes -= 1;
+ }
+
if (i.prefixes != 0 && !intel_syntax)
as_warn (_("skipping prefixes on this instruction"));
@@ -2214,7 +2782,7 @@ md_assemble (line)
}
else
{
- /* opcode can be at most two bytes */
+ /* Opcode can be at most two bytes. */
insn_size += 2 + size;
p = frag_more (2 + size);
*p++ = (i.tm.base_opcode >> 8) & 0xff;
@@ -2222,7 +2790,7 @@ md_assemble (line)
*p++ = i.tm.base_opcode & 0xff;
fix_new_exp (frag_now, p - frag_now->fr_literal, size,
- i.op[0].disps, 1, reloc (size, 1, i.disp_reloc[0]));
+ i.op[0].disps, 1, reloc (size, 1, 1, i.disp_reloc[0]));
}
else if (i.tm.opcode_modifier & JumpInterSegment)
{
@@ -2231,7 +2799,7 @@ md_assemble (line)
int code16;
code16 = 0;
- if (flag_16bit_code)
+ if (flag_code == CODE_16BIT)
code16 = CODE16;
prefix = 0;
@@ -2241,6 +2809,11 @@ md_assemble (line)
i.prefixes -= 1;
code16 ^= CODE16;
}
+ if (i.prefix[REX_PREFIX])
+ {
+ prefix++;
+ i.prefixes -= 1;
+ }
size = 4;
if (code16)
@@ -2249,14 +2822,20 @@ md_assemble (line)
if (i.prefixes != 0 && !intel_syntax)
as_warn (_("skipping prefixes on this instruction"));
- insn_size += prefix + 1 + 2 + size; /* 1 opcode; 2 segment; offset */
+ /* 1 opcode; 2 segment; offset */
+ insn_size += prefix + 1 + 2 + size;
p = frag_more (prefix + 1 + 2 + size);
- if (prefix)
+
+ if (i.prefix[DATA_PREFIX])
*p++ = DATA_PREFIX_OPCODE;
+
+ if (i.prefix[REX_PREFIX])
+ *p++ = i.prefix[REX_PREFIX];
+
*p++ = i.tm.base_opcode;
if (i.op[1].imms->X_op == O_constant)
{
- long n = (long) i.op[1].imms->X_add_number;
+ offsetT n = i.op[1].imms->X_add_number;
if (size == 2
&& !fits_in_unsigned_word (n)
@@ -2265,11 +2844,11 @@ md_assemble (line)
as_bad (_("16-bit jump out of range"));
return;
}
- md_number_to_chars (p, (valueT) n, size);
+ md_number_to_chars (p, n, size);
}
else
fix_new_exp (frag_now, p - frag_now->fr_literal, size,
- i.op[1].imms, 0, reloc (size, 0, i.disp_reloc[0]));
+ i.op[1].imms, 0, reloc (size, 0, 0, i.disp_reloc[0]));
if (i.op[0].imms->X_op != O_constant)
as_bad (_("can't handle non absolute segment in `%s'"),
i.tm.name);
@@ -2277,10 +2856,15 @@ md_assemble (line)
}
else
{
- /* Output normal instructions here. */
+ /* Output normal instructions here. */
unsigned char *q;
- /* The prefix bytes. */
+ /* All opcodes on i386 have eighter 1 or 2 bytes. We may use third
+ byte for the SSE instructions to specify prefix they require. */
+ if (i.tm.base_opcode & 0xff0000)
+ add_prefix ((i.tm.base_opcode >> 16) & 0xff);
+
+ /* The prefix bytes. */
for (q = i.prefix;
q < i.prefix + sizeof (i.prefix) / sizeof (i.prefix[0]);
q++)
@@ -2293,37 +2877,20 @@ md_assemble (line)
}
}
- /* Now the opcode; be careful about word order here! */
+ /* Now the opcode; be careful about word order here! */
if (fits_in_unsigned_byte (i.tm.base_opcode))
{
insn_size += 1;
FRAG_APPEND_1_CHAR (i.tm.base_opcode);
}
- else if (fits_in_unsigned_word (i.tm.base_opcode))
+ else
{
insn_size += 2;
p = frag_more (2);
- /* put out high byte first: can't use md_number_to_chars! */
+ /* Put out high byte first: can't use md_number_to_chars! */
*p++ = (i.tm.base_opcode >> 8) & 0xff;
*p = i.tm.base_opcode & 0xff;
}
- else
- { /* opcode is either 3 or 4 bytes */
- if (i.tm.base_opcode & 0xff000000)
- {
- insn_size += 4;
- p = frag_more (4);
- *p++ = (i.tm.base_opcode >> 24) & 0xff;
- }
- else
- {
- insn_size += 3;
- p = frag_more (3);
- }
- *p++ = (i.tm.base_opcode >> 16) & 0xff;
- *p++ = (i.tm.base_opcode >> 8) & 0xff;
- *p = (i.tm.base_opcode) & 0xff;
- }
/* Now the modrm byte and sib byte (if present). */
if (i.tm.opcode_modifier & Modrm)
@@ -2363,47 +2930,78 @@ md_assemble (line)
{
if (i.op[n].disps->X_op == O_constant)
{
- int size = 4;
- long val = (long) i.op[n].disps->X_add_number;
+ int size;
+ offsetT val;
- if (i.types[n] & (Disp8 | Disp16))
+ size = 4;
+ if (i.types[n] & (Disp8 | Disp16 | Disp64))
{
- long mask;
-
size = 2;
- mask = ~ (long) 0xffff;
if (i.types[n] & Disp8)
- {
- size = 1;
- mask = ~ (long) 0xff;
- }
-
- if ((val & mask) != 0 && (val & mask) != mask)
- as_warn (_("%ld shortened to %ld"),
- val, val & ~mask);
+ size = 1;
+ if (i.types[n] & Disp64)
+ size = 8;
}
+ val = offset_in_range (i.op[n].disps->X_add_number,
+ size);
insn_size += size;
p = frag_more (size);
- md_number_to_chars (p, (valueT) val, size);
+ md_number_to_chars (p, val, size);
}
else
{
int size = 4;
+ int sign = 0;
+ int pcrel = (i.flags[n] & Operand_PCrel) != 0;
- if (i.types[n] & Disp16)
- size = 2;
+ /* The PC relative address is computed relative
+ to the instruction boundary, so in case immediate
+ fields follows, we need to adjust the value. */
+ if (pcrel && i.imm_operands)
+ {
+ int imm_size = 4;
+ register unsigned int n1;
+
+ for (n1 = 0; n1 < i.operands; n1++)
+ if (i.types[n1] & Imm)
+ {
+ if (i.types[n1] & (Imm8 | Imm8S | Imm16 | Imm64))
+ {
+ imm_size = 2;
+ if (i.types[n1] & (Imm8 | Imm8S))
+ imm_size = 1;
+ if (i.types[n1] & Imm64)
+ imm_size = 8;
+ }
+ break;
+ }
+ /* We should find the immediate. */
+ if (n1 == i.operands)
+ abort ();
+ i.op[n].disps->X_add_number -= imm_size;
+ }
+
+ if (i.types[n] & Disp32S)
+ sign = 1;
+
+ if (i.types[n] & (Disp16 | Disp64))
+ {
+ size = 2;
+ if (i.types[n] & Disp64)
+ size = 8;
+ }
insn_size += size;
p = frag_more (size);
fix_new_exp (frag_now, p - frag_now->fr_literal, size,
- i.op[n].disps, 0,
- reloc (size, 0, i.disp_reloc[n]));
+ i.op[n].disps, pcrel,
+ reloc (size, pcrel, sign, i.disp_reloc[n]));
}
}
}
- } /* end displacement output */
+ }
- /* output immediate */
+ /* Output immediate. */
if (i.imm_operands)
{
register unsigned int n;
@@ -2414,48 +3012,53 @@ md_assemble (line)
{
if (i.op[n].imms->X_op == O_constant)
{
- int size = 4;
- long val = (long) i.op[n].imms->X_add_number;
+ int size;
+ offsetT val;
- if (i.types[n] & (Imm8 | Imm8S | Imm16))
+ size = 4;
+ if (i.types[n] & (Imm8 | Imm8S | Imm16 | Imm64))
{
- long mask;
-
size = 2;
- mask = ~ (long) 0xffff;
if (i.types[n] & (Imm8 | Imm8S))
- {
- size = 1;
- mask = ~ (long) 0xff;
- }
- if ((val & mask) != 0 && (val & mask) != mask)
- as_warn (_("%ld shortened to %ld"),
- val, val & ~mask);
+ size = 1;
+ else if (i.types[n] & Imm64)
+ size = 8;
}
+ val = offset_in_range (i.op[n].imms->X_add_number,
+ size);
insn_size += size;
p = frag_more (size);
- md_number_to_chars (p, (valueT) val, size);
+ md_number_to_chars (p, val, size);
}
else
- { /* not absolute_section */
- /* Need a 32-bit fixup (don't support 8bit
+ {
+ /* Not absolute_section.
+ Need a 32-bit fixup (don't support 8bit
non-absolute imms). Try to support other
- sizes ... */
+ sizes ... */
#ifdef BFD_ASSEMBLER
enum bfd_reloc_code_real reloc_type;
#else
int reloc_type;
#endif
int size = 4;
+ int sign = 0;
- if (i.types[n] & Imm16)
- size = 2;
- else if (i.types[n] & (Imm8 | Imm8S))
- size = 1;
+ if ((i.types[n] & (Imm32S))
+ && i.suffix == QWORD_MNEM_SUFFIX)
+ sign = 1;
+ if (i.types[n] & (Imm8 | Imm8S | Imm16 | Imm64))
+ {
+ size = 2;
+ if (i.types[n] & (Imm8 | Imm8S))
+ size = 1;
+ if (i.types[n] & Imm64)
+ size = 8;
+ }
insn_size += size;
p = frag_more (size);
- reloc_type = reloc (size, 0, i.disp_reloc[0]);
+ reloc_type = reloc (size, 0, sign, i.disp_reloc[0]);
#ifdef BFD_ASSEMBLER
if (reloc_type == BFD_RELOC_32
&& GOT_symbol
@@ -2466,6 +3069,9 @@ md_assemble (line)
(i.op[n].imms->X_op_symbol)->X_op)
== O_subtract))))
{
+ /* We don't support dynamic linking on x86-64 yet. */
+ if (flag_code == CODE_64BIT)
+ abort ();
reloc_type = BFD_RELOC_386_GOTPC;
i.op[n].imms->X_add_number += 3;
}
@@ -2475,15 +3081,17 @@ md_assemble (line)
}
}
}
- } /* end immediate output */
+ }
}
+ dwarf2_emit_insn (insn_size);
+
#ifdef DEBUG386
if (flag_debug)
{
pi (line, &i);
}
-#endif /* DEBUG386 */
+#endif /* DEBUG386 */
}
}
@@ -2495,7 +3103,7 @@ i386_immediate (imm_start)
{
char *save_input_line_pointer;
segT exp_seg = 0;
- expressionS * exp;
+ expressionS *exp;
if (i.imm_operands == MAX_IMMEDIATE_OPERANDS)
{
@@ -2514,12 +3122,10 @@ i386_immediate (imm_start)
#ifndef LEX_AT
{
- /*
- * We can have operands of the form
- * <symbol>@GOTOFF+<nnn>
- * Take the easy way out here and copy everything
- * into a temporary buffer...
- */
+ /* We can have operands of the form
+ <symbol>@GOTOFF+<nnn>
+ Take the easy way out here and copy everything
+ into a temporary buffer... */
register char *cp;
cp = strchr (input_line_pointer, '@');
@@ -2529,8 +3135,8 @@ i386_immediate (imm_start)
int len = 0;
int first;
- /* GOT relocations are not supported in 16 bit mode */
- if (flag_16bit_code)
+ /* GOT relocations are not supported in 16 bit mode. */
+ if (flag_code == CODE_16BIT)
as_bad (_("GOT relocations not supported in 16 bit mode"));
if (GOT_symbol == NULL)
@@ -2538,17 +3144,33 @@ i386_immediate (imm_start)
if (strncmp (cp + 1, "PLT", 3) == 0)
{
- i.disp_reloc[this_operand] = BFD_RELOC_386_PLT32;
+ if (flag_code == CODE_64BIT)
+ i.disp_reloc[this_operand] = BFD_RELOC_X86_64_PLT32;
+ else
+ i.disp_reloc[this_operand] = BFD_RELOC_386_PLT32;
len = 3;
}
else if (strncmp (cp + 1, "GOTOFF", 6) == 0)
{
+ if (flag_code == CODE_64BIT)
+ as_bad ("GOTOFF relocations are unsupported in 64bit mode.");
i.disp_reloc[this_operand] = BFD_RELOC_386_GOTOFF;
len = 6;
}
+ else if (strncmp (cp + 1, "GOTPCREL", 8) == 0)
+ {
+ if (flag_code == CODE_64BIT)
+ i.disp_reloc[this_operand] = BFD_RELOC_X86_64_GOTPCREL;
+ else
+ as_bad ("GOTPCREL relocations are supported only in 64bit mode.");
+ len = 8;
+ }
else if (strncmp (cp + 1, "GOT", 3) == 0)
{
- i.disp_reloc[this_operand] = BFD_RELOC_386_GOT32;
+ if (flag_code == CODE_64BIT)
+ i.disp_reloc[this_operand] = BFD_RELOC_X86_64_GOT32;
+ else
+ i.disp_reloc[this_operand] = BFD_RELOC_386_GOT32;
len = 3;
}
else
@@ -2557,7 +3179,7 @@ i386_immediate (imm_start)
/* Replace the relocation token with ' ', so that errors like
foo@GOTOFF1 will be detected. */
first = cp - input_line_pointer;
- tmpbuf = (char *) alloca (strlen(input_line_pointer));
+ tmpbuf = (char *) alloca (strlen (input_line_pointer));
memcpy (tmpbuf, input_line_pointer, first);
tmpbuf[first] = ' ';
strcpy (tmpbuf + first + 1, cp + 1 + len);
@@ -2576,7 +3198,7 @@ i386_immediate (imm_start)
if (exp->X_op == O_absent || exp->X_op == O_big)
{
- /* missing or bad expr becomes absolute 0 */
+ /* Missing or bad expr becomes absolute 0. */
as_bad (_("missing or invalid immediate expression `%s' taken as 0"),
imm_start);
exp->X_op = O_constant;
@@ -2584,17 +3206,21 @@ i386_immediate (imm_start)
exp->X_add_symbol = (symbolS *) 0;
exp->X_op_symbol = (symbolS *) 0;
}
-
- if (exp->X_op == O_constant)
+ else if (exp->X_op == O_constant)
{
- i.types[this_operand] |= Imm32; /* Size it properly later. */
+ /* Size it properly later. */
+ i.types[this_operand] |= Imm64;
+ /* If BFD64, sign extend val. */
+ if (!use_rela_relocations)
+ if ((exp->X_add_number & ~(((addressT) 2 << 31) - 1)) == 0)
+ exp->X_add_number = (exp->X_add_number ^ ((addressT) 1 << 31)) - ((addressT) 1 << 31);
}
#if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT))
- else if (
+ else if (1
#ifdef BFD_ASSEMBLER
- OUTPUT_FLAVOR == bfd_target_aout_flavour &&
+ && OUTPUT_FLAVOR == bfd_target_aout_flavour
#endif
- exp_seg != text_section
+ && exp_seg != text_section
&& exp_seg != data_section
&& exp_seg != bss_section
&& exp_seg != undefined_section
@@ -2615,10 +3241,8 @@ i386_immediate (imm_start)
{
/* This is an address. The size of the address will be
determined later, depending on destination register,
- suffix, or the default for the section. We exclude
- Imm8S here so that `push $foo' and other instructions
- with an Imm8S form will use Imm16 or Imm32. */
- i.types[this_operand] |= (Imm8 | Imm16 | Imm32);
+ suffix, or the default for the section. */
+ i.types[this_operand] |= Imm8 | Imm16 | Imm32 | Imm32S | Imm64;
}
return 1;
@@ -2677,8 +3301,10 @@ i386_displacement (disp_start, disp_end)
char *save_input_line_pointer;
int bigdisp = Disp32;
- if (flag_16bit_code ^ (i.prefix[ADDR_PREFIX] != 0))
+ if ((flag_code == CODE_16BIT) ^ (i.prefix[ADDR_PREFIX] != 0))
bigdisp = Disp16;
+ if (flag_code == CODE_64BIT)
+ bigdisp = Disp64;
i.types[this_operand] |= bigdisp;
exp = &disp_expressions[i.disp_operands];
@@ -2727,20 +3353,17 @@ i386_displacement (disp_start, disp_end)
rorl $16,%edx
#NO_APP
- So here we provide the missing zero.
- */
+ So here we provide the missing zero. */
*displacement_string_end = '0';
}
#endif
#ifndef LEX_AT
{
- /*
- * We can have operands of the form
- * <symbol>@GOTOFF+<nnn>
- * Take the easy way out here and copy everything
- * into a temporary buffer...
- */
+ /* We can have operands of the form
+ <symbol>@GOTOFF+<nnn>
+ Take the easy way out here and copy everything
+ into a temporary buffer... */
register char *cp;
cp = strchr (input_line_pointer, '@');
@@ -2750,8 +3373,8 @@ i386_displacement (disp_start, disp_end)
int len = 0;
int first;
- /* GOT relocations are not supported in 16 bit mode */
- if (flag_16bit_code)
+ /* GOT relocations are not supported in 16 bit mode. */
+ if (flag_code == CODE_16BIT)
as_bad (_("GOT relocations not supported in 16 bit mode"));
if (GOT_symbol == NULL)
@@ -2759,17 +3382,32 @@ i386_displacement (disp_start, disp_end)
if (strncmp (cp + 1, "PLT", 3) == 0)
{
- i.disp_reloc[this_operand] = BFD_RELOC_386_PLT32;
+ if (flag_code == CODE_64BIT)
+ i.disp_reloc[this_operand] = BFD_RELOC_X86_64_PLT32;
+ else
+ i.disp_reloc[this_operand] = BFD_RELOC_386_PLT32;
len = 3;
}
else if (strncmp (cp + 1, "GOTOFF", 6) == 0)
{
+ if (flag_code == CODE_64BIT)
+ as_bad ("GOTOFF relocation is not supported in 64bit mode.");
i.disp_reloc[this_operand] = BFD_RELOC_386_GOTOFF;
len = 6;
}
+ else if (strncmp (cp + 1, "GOTPCREL", 8) == 0)
+ {
+ if (flag_code != CODE_64BIT)
+ as_bad ("GOTPCREL relocation is supported only in 64bit mode.");
+ i.disp_reloc[this_operand] = BFD_RELOC_X86_64_GOTPCREL;
+ len = 8;
+ }
else if (strncmp (cp + 1, "GOT", 3) == 0)
{
- i.disp_reloc[this_operand] = BFD_RELOC_386_GOT32;
+ if (flag_code == CODE_64BIT)
+ i.disp_reloc[this_operand] = BFD_RELOC_X86_64_GOT32;
+ else
+ i.disp_reloc[this_operand] = BFD_RELOC_386_GOT32;
len = 3;
}
else
@@ -2778,7 +3416,7 @@ i386_displacement (disp_start, disp_end)
/* Replace the relocation token with ' ', so that errors like
foo@GOTOFF1 will be detected. */
first = cp - input_line_pointer;
- tmpbuf = (char *) alloca (strlen(input_line_pointer));
+ tmpbuf = (char *) alloca (strlen (input_line_pointer));
memcpy (tmpbuf, input_line_pointer, first);
tmpbuf[first] = ' ';
strcpy (tmpbuf + first + 1, cp + 1 + len);
@@ -2792,16 +3430,20 @@ i386_displacement (disp_start, disp_end)
#ifdef BFD_ASSEMBLER
/* We do this to make sure that the section symbol is in
the symbol table. We will ultimately change the relocation
- to be relative to the beginning of the section */
- if (i.disp_reloc[this_operand] == BFD_RELOC_386_GOTOFF)
+ to be relative to the beginning of the section. */
+ if (i.disp_reloc[this_operand] == BFD_RELOC_386_GOTOFF
+ || i.disp_reloc[this_operand] == BFD_RELOC_X86_64_GOTPCREL)
{
- if (S_IS_LOCAL(exp->X_add_symbol)
+ if (S_IS_LOCAL (exp->X_add_symbol)
&& S_GET_SEGMENT (exp->X_add_symbol) != undefined_section)
section_symbol (S_GET_SEGMENT (exp->X_add_symbol));
assert (exp->X_op == O_symbol);
exp->X_op = O_subtract;
exp->X_op_symbol = GOT_symbol;
- i.disp_reloc[this_operand] = BFD_RELOC_32;
+ if (i.disp_reloc[this_operand] == BFD_RELOC_X86_64_GOTPCREL)
+ i.disp_reloc[this_operand] = BFD_RELOC_32_PCREL;
+ else
+ i.disp_reloc[this_operand] = BFD_RELOC_32;
}
#endif
@@ -2817,7 +3459,7 @@ i386_displacement (disp_start, disp_end)
if (exp->X_op == O_absent || exp->X_op == O_big)
{
- /* missing or bad expr becomes absolute 0 */
+ /* Missing or bad expr becomes absolute 0. */
as_bad (_("missing or invalid displacement expression `%s' taken as 0"),
disp_start);
exp->X_op = O_constant;
@@ -2826,28 +3468,15 @@ i386_displacement (disp_start, disp_end)
exp->X_op_symbol = (symbolS *) 0;
}
- if (exp->X_op == O_constant)
- {
- if (i.types[this_operand] & Disp16)
- {
- /* We know this operand is at most 16 bits, so convert to a
- signed 16 bit number before trying to see whether it will
- fit in an even smaller size. */
- exp->X_add_number =
- (((exp->X_add_number & 0xffff) ^ 0x8000) - 0x8000);
- }
- if (fits_in_signed_byte (exp->X_add_number))
- i.types[this_operand] |= Disp8;
- }
#if (defined (OBJ_AOUT) || defined (OBJ_MAYBE_AOUT))
- else if (
+ if (exp->X_op != O_constant
#ifdef BFD_ASSEMBLER
- OUTPUT_FLAVOR == bfd_target_aout_flavour &&
+ && OUTPUT_FLAVOR == bfd_target_aout_flavour
#endif
- exp_seg != text_section
- && exp_seg != data_section
- && exp_seg != bss_section
- && exp_seg != undefined_section)
+ && exp_seg != text_section
+ && exp_seg != data_section
+ && exp_seg != bss_section
+ && exp_seg != undefined_section)
{
#ifdef BFD_ASSEMBLER
as_bad (_("unimplemented segment %s in operand"), exp_seg->name);
@@ -2857,239 +3486,72 @@ i386_displacement (disp_start, disp_end)
return 0;
}
#endif
+ else if (flag_code == CODE_64BIT)
+ i.types[this_operand] |= Disp32S | Disp32;
return 1;
}
-static int i386_operand_modifier PARAMS ((char **, int));
-
-static int
-i386_operand_modifier (op_string, got_a_float)
- char **op_string;
- int got_a_float;
-{
- if (!strncasecmp (*op_string, "BYTE PTR", 8))
- {
- i.suffix = BYTE_MNEM_SUFFIX;
- *op_string += 8;
- return BYTE_PTR;
-
- }
- else if (!strncasecmp (*op_string, "WORD PTR", 8))
- {
- if (got_a_float == 2) /* "fi..." */
- i.suffix = SHORT_MNEM_SUFFIX;
- else
- i.suffix = WORD_MNEM_SUFFIX;
- *op_string += 8;
- return WORD_PTR;
- }
-
- else if (!strncasecmp (*op_string, "DWORD PTR", 9))
- {
- if (got_a_float == 1) /* "f..." */
- i.suffix = SHORT_MNEM_SUFFIX;
- else
- i.suffix = LONG_MNEM_SUFFIX;
- *op_string += 9;
- return DWORD_PTR;
- }
-
- else if (!strncasecmp (*op_string, "QWORD PTR", 9))
- {
- i.suffix = DWORD_MNEM_SUFFIX;
- *op_string += 9;
- return QWORD_PTR;
- }
-
- else if (!strncasecmp (*op_string, "XWORD PTR", 9))
- {
- i.suffix = LONG_DOUBLE_MNEM_SUFFIX;
- *op_string += 9;
- return XWORD_PTR;
- }
-
- else if (!strncasecmp (*op_string, "SHORT", 5))
- {
- *op_string += 5;
- return SHORT;
- }
-
- else if (!strncasecmp (*op_string, "OFFSET FLAT:", 12))
- {
- *op_string += 12;
- return OFFSET_FLAT;
- }
-
- else if (!strncasecmp (*op_string, "FLAT", 4))
- {
- *op_string += 4;
- return FLAT;
- }
-
- else return NONE_FOUND;
-}
-
-static char * build_displacement_string PARAMS ((int, char *));
-
-static char *
-build_displacement_string (initial_disp, op_string)
- int initial_disp;
- char *op_string;
-{
- char *temp_string = (char *) malloc (strlen (op_string) + 1);
- char *end_of_operand_string;
- char *tc;
- char *temp_disp;
-
- temp_string[0] = '\0';
- tc = end_of_operand_string = strchr (op_string, '[');
- if (initial_disp && !end_of_operand_string)
- {
- strcpy (temp_string, op_string);
- return temp_string;
- }
-
- /* Build the whole displacement string */
- if (initial_disp)
- {
- strncpy (temp_string, op_string, end_of_operand_string - op_string);
- temp_string[end_of_operand_string - op_string] = '\0';
- temp_disp = tc;
- }
- else
- temp_disp = op_string;
-
- while (*temp_disp != '\0')
- {
- char *end_op;
- int add_minus = (*temp_disp == '-');
-
- if (*temp_disp == '+' || *temp_disp == '-' || *temp_disp == '[')
- temp_disp++;
-
- if (is_space_char (*temp_disp))
- temp_disp++;
-
- /* Don't consider registers */
- if ( !((*temp_disp == REGISTER_PREFIX || allow_naked_reg)
- && parse_register (temp_disp, &end_op)) )
- {
- char *string_start = temp_disp;
-
- while (*temp_disp != ']'
- && *temp_disp != '+'
- && *temp_disp != '-'
- && *temp_disp != '*')
- ++temp_disp;
-
- if (add_minus)
- strcat (temp_string, "-");
- else
- strcat (temp_string, "+");
-
- strncat (temp_string, string_start, temp_disp - string_start);
- if (*temp_disp == '+' || *temp_disp == '-')
- --temp_disp;
- }
-
- while (*temp_disp != '\0'
- && *temp_disp != '+'
- && *temp_disp != '-')
- ++temp_disp;
- }
-
- return temp_string;
-}
-
-static int i386_parse_seg PARAMS ((char *));
-
-static int
-i386_parse_seg (op_string)
- char *op_string;
-{
- if (is_space_char (*op_string))
- ++op_string;
-
- /* Should be one of es, cs, ss, ds fs or gs */
- switch (*op_string++)
- {
- case 'e':
- i.seg[i.mem_operands] = &es;
- break;
- case 'c':
- i.seg[i.mem_operands] = &cs;
- break;
- case 's':
- i.seg[i.mem_operands] = &ss;
- break;
- case 'd':
- i.seg[i.mem_operands] = &ds;
- break;
- case 'f':
- i.seg[i.mem_operands] = &fs;
- break;
- case 'g':
- i.seg[i.mem_operands] = &gs;
- break;
- default:
- as_bad (_("bad segment name `%s'"), op_string);
- return 0;
- }
-
- if (*op_string++ != 's')
- {
- as_bad (_("bad segment name `%s'"), op_string);
- return 0;
- }
-
- if (is_space_char (*op_string))
- ++op_string;
-
- if (*op_string != ':')
- {
- as_bad (_("bad segment name `%s'"), op_string);
- return 0;
- }
-
- return 1;
-
-}
-
-static int i386_index_check PARAMS((const char *));
+static int i386_index_check PARAMS ((const char *));
/* Make sure the memory operand we've been dealt is valid.
- Returns 1 on success, 0 on a failure.
-*/
+ Return 1 on success, 0 on a failure. */
+
static int
i386_index_check (operand_string)
const char *operand_string;
{
+ int ok;
#if INFER_ADDR_PREFIX
int fudged = 0;
tryprefix:
#endif
- if (flag_16bit_code ^ (i.prefix[ADDR_PREFIX] != 0)
- /* 16 bit mode checks */
- ? ((i.base_reg
- && ((i.base_reg->reg_type & (Reg16|BaseIndex))
- != (Reg16|BaseIndex)))
- || (i.index_reg
- && (((i.index_reg->reg_type & (Reg16|BaseIndex))
- != (Reg16|BaseIndex))
- || ! (i.base_reg
- && i.base_reg->reg_num < 6
- && i.index_reg->reg_num >= 6
- && i.log2_scale_factor == 0))))
- /* 32 bit mode checks */
- : ((i.base_reg
- && (i.base_reg->reg_type & Reg32) == 0)
- || (i.index_reg
- && ((i.index_reg->reg_type & (Reg32|BaseIndex))
- != (Reg32|BaseIndex)))))
+ ok = 1;
+ if (flag_code == CODE_64BIT)
+ {
+ /* 64bit checks. */
+ if ((i.base_reg
+ && ((i.base_reg->reg_type & Reg64) == 0)
+ && (i.base_reg->reg_type != BaseIndex
+ || i.index_reg))
+ || (i.index_reg
+ && ((i.index_reg->reg_type & (Reg64|BaseIndex))
+ != (Reg64|BaseIndex))))
+ ok = 0;
+ }
+ else
+ {
+ if ((flag_code == CODE_16BIT) ^ (i.prefix[ADDR_PREFIX] != 0))
+ {
+ /* 16bit checks. */
+ if ((i.base_reg
+ && ((i.base_reg->reg_type & (Reg16|BaseIndex|RegRex))
+ != (Reg16|BaseIndex)))
+ || (i.index_reg
+ && (((i.index_reg->reg_type & (Reg16|BaseIndex))
+ != (Reg16|BaseIndex))
+ || ! (i.base_reg
+ && i.base_reg->reg_num < 6
+ && i.index_reg->reg_num >= 6
+ && i.log2_scale_factor == 0))))
+ ok = 0;
+ }
+ else
+ {
+ /* 32bit checks. */
+ if ((i.base_reg
+ && (i.base_reg->reg_type & (Reg32 | RegRex)) != Reg32)
+ || (i.index_reg
+ && ((i.index_reg->reg_type & (Reg32|BaseIndex|RegRex))
+ != (Reg32|BaseIndex))))
+ ok = 0;
+ }
+ }
+ if (!ok)
{
#if INFER_ADDR_PREFIX
- if (i.prefix[ADDR_PREFIX] == 0 && stackop_size != '\0')
+ if (flag_code != CODE_64BIT
+ && i.prefix[ADDR_PREFIX] == 0 && stackop_size != '\0')
{
i.prefix[ADDR_PREFIX] = ADDR_PREFIX_OPCODE;
i.prefixes += 1;
@@ -3097,8 +3559,7 @@ i386_index_check (operand_string)
Disp16 or Disp32 is set.
FIXME. There doesn't seem to be any real need for separate
Disp16 and Disp32 flags. The same goes for Imm16 and Imm32.
- Removing them would probably clean up the code quite a lot.
- */
+ Removing them would probably clean up the code quite a lot. */
if (i.types[this_operand] & (Disp16|Disp32))
i.types[this_operand] ^= (Disp16|Disp32);
fudged = 1;
@@ -3111,260 +3572,14 @@ i386_index_check (operand_string)
#endif
as_bad (_("`%s' is not a valid %s bit base/index expression"),
operand_string,
- flag_16bit_code ^ (i.prefix[ADDR_PREFIX] != 0) ? "16" : "32");
- return 0;
- }
- return 1;
-}
-
-static int i386_intel_memory_operand PARAMS ((char *));
-
-static int
-i386_intel_memory_operand (operand_string)
- char *operand_string;
-{
- char *op_string = operand_string;
- char *end_of_operand_string;
-
- if ((i.mem_operands == 1
- && (current_templates->start->opcode_modifier & IsString) == 0)
- || i.mem_operands == 2)
- {
- as_bad (_("too many memory references for `%s'"),
- current_templates->start->name);
+ flag_code_names[flag_code]);
return 0;
}
-
- /* First check for a segment override. */
- if (*op_string != '[')
- {
- char *end_seg;
-
- end_seg = strchr (op_string, ':');
- if (end_seg)
- {
- if (!i386_parse_seg (op_string))
- return 0;
- op_string = end_seg + 1;
- }
- }
-
- /* Look for displacement preceding open bracket */
- if (*op_string != '[')
- {
- char *temp_string;
-
- if (i.disp_operands)
- return 0;
-
- temp_string = build_displacement_string (true, op_string);
-
- if (!i386_displacement (temp_string, temp_string + strlen (temp_string)))
- {
- free (temp_string);
- return 0;
- }
- free (temp_string);
-
- end_of_operand_string = strchr (op_string, '[');
- if (!end_of_operand_string)
- end_of_operand_string = op_string + strlen (op_string);
-
- if (is_space_char (*end_of_operand_string))
- --end_of_operand_string;
-
- op_string = end_of_operand_string;
- }
-
- if (*op_string == '[')
- {
- ++op_string;
-
- /* Pick off each component and figure out where it belongs */
-
- end_of_operand_string = op_string;
-
- while (*op_string != ']')
- {
- const reg_entry *temp_reg;
- char *end_op;
- char *temp_string;
-
- while (*end_of_operand_string != '+'
- && *end_of_operand_string != '-'
- && *end_of_operand_string != '*'
- && *end_of_operand_string != ']')
- end_of_operand_string++;
-
- temp_string = op_string;
- if (*temp_string == '+')
- {
- ++temp_string;
- if (is_space_char (*temp_string))
- ++temp_string;
- }
-
- if ((*temp_string == REGISTER_PREFIX || allow_naked_reg)
- && (temp_reg = parse_register (temp_string, &end_op)) != NULL)
- {
- if (i.base_reg == NULL)
- i.base_reg = temp_reg;
- else
- i.index_reg = temp_reg;
-
- i.types[this_operand] |= BaseIndex;
- }
- else if (*temp_string == REGISTER_PREFIX)
- {
- as_bad (_("bad register name `%s'"), temp_string);
- return 0;
- }
- else if (is_digit_char (*op_string)
- || *op_string == '+' || *op_string == '-')
- {
- char *temp_str;
-
- if (i.disp_operands != 0)
- return 0;
-
- temp_string = build_displacement_string (false, op_string);
-
- temp_str = temp_string;
- if (*temp_str == '+')
- ++temp_str;
-
- if (!i386_displacement (temp_str, temp_str + strlen (temp_str)))
- {
- free (temp_string);
- return 0;
- }
- free (temp_string);
-
- ++op_string;
- end_of_operand_string = op_string;
- while (*end_of_operand_string != ']'
- && *end_of_operand_string != '+'
- && *end_of_operand_string != '-'
- && *end_of_operand_string != '*')
- ++end_of_operand_string;
- }
- else if (*op_string == '*')
- {
- ++op_string;
-
- if (i.base_reg && !i.index_reg)
- {
- i.index_reg = i.base_reg;
- i.base_reg = 0;
- }
-
- if (!i386_scale (op_string))
- return 0;
- }
- op_string = end_of_operand_string;
- ++end_of_operand_string;
- }
- }
-
- if (i386_index_check (operand_string) == 0)
- return 0;
-
- i.mem_operands++;
- return 1;
-}
-
-static int
-i386_intel_operand (operand_string, got_a_float)
- char *operand_string;
- int got_a_float;
-{
- const reg_entry * r;
- char *end_op;
- char *op_string = operand_string;
-
- int operand_modifier = i386_operand_modifier (&op_string, got_a_float);
- if (is_space_char (*op_string))
- ++op_string;
-
- switch (operand_modifier)
- {
- case BYTE_PTR:
- case WORD_PTR:
- case DWORD_PTR:
- case QWORD_PTR:
- case XWORD_PTR:
- if (!i386_intel_memory_operand (op_string))
- return 0;
- break;
-
- case FLAT:
- case OFFSET_FLAT:
- if (!i386_immediate (op_string))
- return 0;
- break;
-
- case SHORT:
- case NONE_FOUND:
- /* Should be register or immediate */
- if (is_digit_char (*op_string)
- && strchr (op_string, '[') == 0)
- {
- if (!i386_immediate (op_string))
- return 0;
- }
- else if ((*op_string == REGISTER_PREFIX || allow_naked_reg)
- && (r = parse_register (op_string, &end_op)) != NULL)
- {
- /* Check for a segment override by searching for ':' after a
- segment register. */
- op_string = end_op;
- if (is_space_char (*op_string))
- ++op_string;
- if (*op_string == ':' && (r->reg_type & (SReg2 | SReg3)))
- {
- switch (r->reg_num)
- {
- case 0:
- i.seg[i.mem_operands] = &es;
- break;
- case 1:
- i.seg[i.mem_operands] = &cs;
- break;
- case 2:
- i.seg[i.mem_operands] = &ss;
- break;
- case 3:
- i.seg[i.mem_operands] = &ds;
- break;
- case 4:
- i.seg[i.mem_operands] = &fs;
- break;
- case 5:
- i.seg[i.mem_operands] = &gs;
- break;
- }
-
- }
- i.types[this_operand] |= r->reg_type & ~BaseIndex;
- i.op[this_operand].regs = r;
- i.reg_operands++;
- }
- else if (*op_string == REGISTER_PREFIX)
- {
- as_bad (_("bad register name `%s'"), op_string);
- return 0;
- }
- else if (!i386_intel_memory_operand (op_string))
- return 0;
-
- break;
- } /* end switch */
-
return 1;
}
/* Parse OPERAND_STRING into the i386_insn structure I. Returns non-zero
- on error. */
+ on error. */
static int
i386_operand (operand_string)
@@ -3378,7 +3593,7 @@ i386_operand (operand_string)
++op_string;
/* We check for an absolute prefix (differentiating,
- for example, 'jmp pc_relative_label' from 'jmp *absolute_label'. */
+ for example, 'jmp pc_relative_label' from 'jmp *absolute_label'. */
if (*op_string == ABSOLUTE_PREFIX)
{
++op_string;
@@ -3387,7 +3602,7 @@ i386_operand (operand_string)
i.types[this_operand] |= JumpAbsolute;
}
- /* Check if operand is a register. */
+ /* Check if operand is a register. */
if ((*op_string == REGISTER_PREFIX || allow_naked_reg)
&& (r = parse_register (op_string, &end_op)) != NULL)
{
@@ -3433,7 +3648,7 @@ i386_operand (operand_string)
as_bad (_("bad memory operand `%s'"), op_string);
return 0;
}
- /* Handle case of %es:*foo. */
+ /* Handle case of %es:*foo. */
if (*op_string == ABSOLUTE_PREFIX)
{
++op_string;
@@ -3458,7 +3673,7 @@ i386_operand (operand_string)
return 0;
}
else if (*op_string == IMMEDIATE_PREFIX)
- { /* ... or an immediate */
+ {
++op_string;
if (i.types[this_operand] & JumpAbsolute)
{
@@ -3470,12 +3685,12 @@ i386_operand (operand_string)
}
else if (is_digit_char (*op_string)
|| is_identifier_char (*op_string)
- || *op_string == '(' )
+ || *op_string == '(')
{
- /* This is a memory reference of some sort. */
+ /* This is a memory reference of some sort. */
char *base_string;
- /* Start and end of displacement string expression (if found). */
+ /* Start and end of displacement string expression (if found). */
char *displacement_string_start;
char *displacement_string_end;
@@ -3499,7 +3714,7 @@ i386_operand (operand_string)
if (is_space_char (*base_string))
--base_string;
- /* If we only have a displacement, set-up for it to be parsed later. */
+ /* If we only have a displacement, set-up for it to be parsed later. */
displacement_string_start = op_string;
displacement_string_end = base_string + 1;
@@ -3508,7 +3723,7 @@ i386_operand (operand_string)
char *temp_string;
unsigned int parens_balanced = 1;
/* We've already checked that the number of left & right ()'s are
- equal, so this loop will not be infinite. */
+ equal, so this loop will not be infinite. */
do
{
base_string--;
@@ -3560,7 +3775,7 @@ i386_operand (operand_string)
if (is_space_char (*base_string))
++base_string;
}
- else if (*base_string != ')' )
+ else if (*base_string != ')')
{
as_bad (_("expecting `,' or `)' after index register in `%s'"),
operand_string);
@@ -3573,7 +3788,7 @@ i386_operand (operand_string)
return 0;
}
- /* Check for scale factor. */
+ /* Check for scale factor. */
if (isdigit ((unsigned char) *base_string))
{
if (!i386_scale (base_string))
@@ -3637,14 +3852,15 @@ i386_operand (operand_string)
i.mem_operands++;
}
else
- { /* it's not a memory operand; argh! */
+ {
+ /* It's not a memory operand; argh! */
as_bad (_("invalid char %s beginning operand %d `%s'"),
output_invalid (*op_string),
this_operand + 1,
op_string);
return 0;
}
- return 1; /* normal return */
+ return 1; /* Normal return. */
}
/* md_estimate_size_before_relax()
@@ -3670,7 +3886,7 @@ md_estimate_size_before_relax (fragP, segment)
an externally visible symbol, because it may be overridden by a
shared library. */
if (S_GET_SEGMENT (fragP->fr_symbol) != segment
-#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) || defined (TE_PE)
+#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
|| S_IS_EXTERNAL (fragP->fr_symbol)
|| S_IS_WEAK (fragP->fr_symbol)
#endif
@@ -3699,8 +3915,9 @@ md_estimate_size_before_relax (fragP, segment)
switch (opcode[0])
{
- case JUMP_PC_RELATIVE: /* make jmp (0xeb) a dword displacement jump */
- opcode[0] = 0xe9; /* dword disp jmp */
+ case JUMP_PC_RELATIVE:
+ /* Make jmp (0xeb) a dword displacement jump. */
+ opcode[0] = 0xe9;
fragP->fr_fix += size;
fix_new (fragP, old_fr_fix, size,
fragP->fr_symbol,
@@ -3713,7 +3930,8 @@ md_estimate_size_before_relax (fragP, segment)
to the dword-displacement jump 0x0f,0x8N. */
opcode[1] = opcode[0] + 0x10;
opcode[0] = TWO_BYTE_OPCODE_ESCAPE;
- fragP->fr_fix += 1 + size; /* we've added an opcode byte */
+ /* We've added an opcode byte. */
+ fragP->fr_fix += 1 + size;
fix_new (fragP, old_fr_fix + 1, size,
fragP->fr_symbol,
fragP->fr_offset, 1,
@@ -3723,20 +3941,19 @@ md_estimate_size_before_relax (fragP, segment)
frag_wane (fragP);
return fragP->fr_fix - old_fr_fix;
}
- return 1; /* Guess a short jump. */
+ /* Guess a short jump. */
+ return 1;
}
-/*
- * md_convert_frag();
- *
- * Called after relax() is finished.
- * In: Address of frag.
- * fr_type == rs_machine_dependent.
- * fr_subtype is what the address relaxed to.
- *
- * Out: Any fixSs and constants are set up.
- * Caller will turn frag into a ".space 0".
- */
+/* Called after relax() is finished.
+
+ In: Address of frag.
+ fr_type == rs_machine_dependent.
+ fr_subtype is what the address relaxed to.
+
+ Out: Any fixSs and constants are set up.
+ Caller will turn frag into a ".space 0". */
+
#ifndef BFD_ASSEMBLER
void
md_convert_frag (headers, sec, fragP)
@@ -3753,23 +3970,29 @@ md_convert_frag (abfd, sec, fragP)
{
register unsigned char *opcode;
unsigned char *where_to_put_displacement = NULL;
- unsigned int target_address;
- unsigned int opcode_address;
+ offsetT target_address;
+ offsetT opcode_address;
unsigned int extension = 0;
- int displacement_from_opcode_start;
+ offsetT displacement_from_opcode_start;
opcode = (unsigned char *) fragP->fr_opcode;
- /* Address we want to reach in file space. */
+ /* Address we want to reach in file space. */
target_address = S_GET_VALUE (fragP->fr_symbol) + fragP->fr_offset;
-#ifdef BFD_ASSEMBLER /* not needed otherwise? */
- target_address += symbol_get_frag (fragP->fr_symbol)->fr_address;
+#ifdef BFD_ASSEMBLER
+ /* Not needed otherwise? */
+ {
+ /* Local symbols which have already been resolved have a NULL frags. */
+ fragS *sym_frag = symbol_get_frag (fragP->fr_symbol);
+ if (sym_frag)
+ target_address += sym_frag->fr_address;
+ }
#endif
- /* Address opcode resides at in file space. */
+ /* Address opcode resides at in file space. */
opcode_address = fragP->fr_address + fragP->fr_fix;
- /* Displacement from opcode start to fill into instruction. */
+ /* Displacement from opcode start to fill into instruction. */
displacement_from_opcode_start = target_address - opcode_address;
switch (fragP->fr_subtype)
@@ -3778,33 +4001,33 @@ md_convert_frag (abfd, sec, fragP)
case ENCODE_RELAX_STATE (COND_JUMP, SMALL16):
case ENCODE_RELAX_STATE (UNCOND_JUMP, SMALL):
case ENCODE_RELAX_STATE (UNCOND_JUMP, SMALL16):
- /* don't have to change opcode */
- extension = 1; /* 1 opcode + 1 displacement */
+ /* Don't have to change opcode. */
+ extension = 1; /* 1 opcode + 1 displacement */
where_to_put_displacement = &opcode[1];
break;
case ENCODE_RELAX_STATE (COND_JUMP, BIG):
- extension = 5; /* 2 opcode + 4 displacement */
+ extension = 5; /* 2 opcode + 4 displacement */
opcode[1] = opcode[0] + 0x10;
opcode[0] = TWO_BYTE_OPCODE_ESCAPE;
where_to_put_displacement = &opcode[2];
break;
case ENCODE_RELAX_STATE (UNCOND_JUMP, BIG):
- extension = 4; /* 1 opcode + 4 displacement */
+ extension = 4; /* 1 opcode + 4 displacement */
opcode[0] = 0xe9;
where_to_put_displacement = &opcode[1];
break;
case ENCODE_RELAX_STATE (COND_JUMP, BIG16):
- extension = 3; /* 2 opcode + 2 displacement */
+ extension = 3; /* 2 opcode + 2 displacement */
opcode[1] = opcode[0] + 0x10;
opcode[0] = TWO_BYTE_OPCODE_ESCAPE;
where_to_put_displacement = &opcode[2];
break;
case ENCODE_RELAX_STATE (UNCOND_JUMP, BIG16):
- extension = 2; /* 1 opcode + 2 displacement */
+ extension = 2; /* 1 opcode + 2 displacement */
opcode[0] = 0xe9;
where_to_put_displacement = &opcode[1];
break;
@@ -3813,17 +4036,21 @@ md_convert_frag (abfd, sec, fragP)
BAD_CASE (fragP->fr_subtype);
break;
}
- /* now put displacement after opcode */
+ /* Now put displacement after opcode. */
md_number_to_chars ((char *) where_to_put_displacement,
(valueT) (displacement_from_opcode_start - extension),
SIZE_FROM_RELAX_STATE (fragP->fr_subtype));
fragP->fr_fix += extension;
}
+/* Size of byte displacement jmp. */
+int md_short_jump_size = 2;
+
+/* Size of dword displacement jmp. */
+int md_long_jump_size = 5;
-int md_short_jump_size = 2; /* size of byte displacement jmp */
-int md_long_jump_size = 5; /* size of dword displacement jmp */
-const int md_reloc_size = 8; /* Size of relocation record */
+/* Size of relocation record. */
+const int md_reloc_size = 8;
void
md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol)
@@ -3832,10 +4059,11 @@ md_create_short_jump (ptr, from_addr, to_addr, frag, to_symbol)
fragS *frag ATTRIBUTE_UNUSED;
symbolS *to_symbol ATTRIBUTE_UNUSED;
{
- long offset;
+ offsetT offset;
offset = to_addr - (from_addr + 2);
- md_number_to_chars (ptr, (valueT) 0xeb, 1); /* opcode for byte-disp jump */
+ /* Opcode for byte-disp jump. */
+ md_number_to_chars (ptr, (valueT) 0xeb, 1);
md_number_to_chars (ptr + 1, (valueT) offset, 1);
}
@@ -3843,25 +4071,14 @@ void
md_create_long_jump (ptr, from_addr, to_addr, frag, to_symbol)
char *ptr;
addressT from_addr, to_addr;
- fragS *frag;
- symbolS *to_symbol;
+ fragS *frag ATTRIBUTE_UNUSED;
+ symbolS *to_symbol ATTRIBUTE_UNUSED;
{
- long offset;
+ offsetT offset;
- if (flag_do_long_jump)
- {
- offset = to_addr - S_GET_VALUE (to_symbol);
- md_number_to_chars (ptr, (valueT) 0xe9, 1);/* opcode for long jmp */
- md_number_to_chars (ptr + 1, (valueT) offset, 4);
- fix_new (frag, (ptr + 1) - frag->fr_literal, 4,
- to_symbol, (offsetT) 0, 0, BFD_RELOC_32);
- }
- else
- {
- offset = to_addr - (from_addr + 5);
- md_number_to_chars (ptr, (valueT) 0xe9, 1);
- md_number_to_chars (ptr + 1, (valueT) offset, 4);
- }
+ offset = to_addr - (from_addr + 5);
+ md_number_to_chars (ptr, (valueT) 0xe9, 1);
+ md_number_to_chars (ptr + 1, (valueT) offset, 4);
}
/* Apply a fixup (fixS) to segment data, once it has been determined
@@ -3873,9 +4090,14 @@ md_create_long_jump (ptr, from_addr, to_addr, frag, to_symbol)
int
md_apply_fix3 (fixP, valp, seg)
- fixS *fixP; /* The fix we're to put in. */
- valueT *valp; /* Pointer to the value of the bits. */
- segT seg ATTRIBUTE_UNUSED; /* Segment fix is from. */
+ /* The fix we're to put in. */
+ fixS *fixP;
+
+ /* Pointer to the value of the bits. */
+ valueT *valp;
+
+ /* Segment fix is from. */
+ segT seg ATTRIBUTE_UNUSED;
{
register char *p = fixP->fx_where + fixP->fx_frag->fr_literal;
valueT value = *valp;
@@ -3907,7 +4129,7 @@ md_apply_fix3 (fixP, valp, seg)
if ((fixP->fx_r_type == BFD_RELOC_32_PCREL
|| fixP->fx_r_type == BFD_RELOC_16_PCREL
|| fixP->fx_r_type == BFD_RELOC_8_PCREL)
- && fixP->fx_addsy)
+ && fixP->fx_addsy && !use_rela_relocations)
{
#ifndef OBJ_AOUT
if (OUTPUT_FLAVOR == bfd_target_elf_flavour
@@ -3943,49 +4165,25 @@ md_apply_fix3 (fixP, valp, seg)
address offset for a PC relative symbol. */
if (S_GET_SEGMENT (fixP->fx_addsy) != seg)
value += md_pcrel_from (fixP);
- else if (S_IS_EXTERNAL (fixP->fx_addsy)
- || S_IS_WEAK (fixP->fx_addsy))
- {
- /* We are generating an external relocation for this defined
- symbol. We add the address, because
- bfd_install_relocation will subtract it. VALUE already
- holds the symbol value, because fixup_segment added it
- in. We subtract it out, and then we subtract it out
- again because bfd_install_relocation will add it in
- again. */
- value += md_pcrel_from (fixP);
- value -= 2 * S_GET_VALUE (fixP->fx_addsy);
- }
#endif
}
-#ifdef TE_PE
- else if (fixP->fx_addsy != NULL
- && S_IS_DEFINED (fixP->fx_addsy)
- && (S_IS_EXTERNAL (fixP->fx_addsy)
- || S_IS_WEAK (fixP->fx_addsy)))
- {
- /* We are generating an external relocation for this defined
- symbol. VALUE already holds the symbol value, and
- bfd_install_relocation will add it in again. We don't want
- either addition. */
- value -= 2 * S_GET_VALUE (fixP->fx_addsy);
- }
-#endif
/* Fix a few things - the dynamic linker expects certain values here,
- and we must not dissappoint it. */
+ and we must not dissappoint it. */
#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
if (OUTPUT_FLAVOR == bfd_target_elf_flavour
&& fixP->fx_addsy)
- switch (fixP->fx_r_type) {
- case BFD_RELOC_386_PLT32:
- /* Make the jump instruction point to the address of the operand. At
- runtime we merely add the offset to the actual PLT entry. */
- value = 0xfffffffc;
- break;
- case BFD_RELOC_386_GOTPC:
-/*
- * This is tough to explain. We end up with this one if we have
+ switch (fixP->fx_r_type)
+ {
+ case BFD_RELOC_386_PLT32:
+ case BFD_RELOC_X86_64_PLT32:
+ /* Make the jump instruction point to the address of the operand. At
+ runtime we merely add the offset to the actual PLT entry. */
+ value = -4;
+ break;
+ case BFD_RELOC_386_GOTPC:
+
+/* This is tough to explain. We end up with this one if we have
* operands that look like "_GLOBAL_OFFSET_TABLE_+[.-.L284]". The goal
* here is to obtain the absolute address of the GOT, and it is strongly
* preferable from a performance point of view to avoid using a runtime
@@ -4020,55 +4218,55 @@ md_apply_fix3 (fixP, valp, seg)
* explicitly mentioned, and I wonder whether it would simplify matters
* to do it this way. Who knows. In earlier versions of the PIC patches,
* the pcrel_adjust field was used to store the correction, but since the
- * expression is not pcrel, I felt it would be confusing to do it this way.
- */
- value -= 1;
- break;
- case BFD_RELOC_386_GOT32:
- value = 0; /* Fully resolved at runtime. No addend. */
- break;
- case BFD_RELOC_386_GOTOFF:
- break;
-
- case BFD_RELOC_VTABLE_INHERIT:
- case BFD_RELOC_VTABLE_ENTRY:
- fixP->fx_done = 0;
- return 1;
+ * expression is not pcrel, I felt it would be confusing to do it this
+ * way. */
+
+ value -= 1;
+ break;
+ case BFD_RELOC_386_GOT32:
+ case BFD_RELOC_X86_64_GOT32:
+ value = 0; /* Fully resolved at runtime. No addend. */
+ break;
+ case BFD_RELOC_386_GOTOFF:
+ case BFD_RELOC_X86_64_GOTPCREL:
+ break;
+
+ case BFD_RELOC_VTABLE_INHERIT:
+ case BFD_RELOC_VTABLE_ENTRY:
+ fixP->fx_done = 0;
+ return 1;
+
+ default:
+ break;
+ }
+#endif /* defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) */
+ *valp = value;
+#endif /* defined (BFD_ASSEMBLER) && !defined (TE_Mach) */
- default:
- break;
+#ifndef BFD_ASSEMBLER
+ md_number_to_chars (p, value, fixP->fx_size);
+#else
+ /* Are we finished with this relocation now? */
+ if (fixP->fx_addsy == 0 && fixP->fx_pcrel == 0)
+ fixP->fx_done = 1;
+ else if (use_rela_relocations)
+ {
+ fixP->fx_no_overflow = 1;
+ value = 0;
}
-#endif /* defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF) */
- *valp = value;
-#endif /* defined (BFD_ASSEMBLER) && !defined (TE_Mach) */
md_number_to_chars (p, value, fixP->fx_size);
+#endif
return 1;
}
-
-#if 0
-/* This is never used. */
-long /* Knows about the byte order in a word. */
-md_chars_to_number (con, nbytes)
- unsigned char con[]; /* Low order byte 1st. */
- int nbytes; /* Number of bytes in the input. */
-{
- long retval;
- for (retval = 0, con += nbytes - 1; nbytes--; con--)
- {
- retval <<= BITS_PER_CHAR;
- retval |= *con;
- }
- return retval;
-}
-#endif /* 0 */
-
#define MAX_LITTLENUMS 6
-/* Turn the string pointed to by litP into a floating point constant of type
- type, and emit the appropriate bytes. The number of LITTLENUMS emitted
- is stored in *sizeP . An error message is returned, or NULL on OK. */
+/* Turn the string pointed to by litP into a floating point constant
+ of type TYPE, and emit the appropriate bytes. 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;
@@ -4118,8 +4316,6 @@ md_atof (type, litP, sizeP)
char output_invalid_buf[8];
-static char * output_invalid PARAMS ((int));
-
static char *
output_invalid (c)
int c;
@@ -4131,7 +4327,6 @@ output_invalid (c)
return output_invalid_buf;
}
-
/* REG_STRING starts *before* REGISTER_PREFIX. */
static const reg_entry *
@@ -4159,12 +4354,18 @@ parse_register (reg_string, end_op)
s++;
}
+ /* For naked regs, make sure that we are not dealing with an identifier.
+ This prevents confusing an identifier like `eax_var' with register
+ `eax'. */
+ if (allow_naked_reg && identifier_chars[(unsigned char) *s])
+ return (const reg_entry *) NULL;
+
*end_op = s;
r = (const reg_entry *) hash_find (reg_hash, reg_name_given);
/* Handle floating point regs, allowing spaces in the (i) part. */
- if (r == i386_regtab /* %st is first entry of table */)
+ if (r == i386_regtab /* %st is first entry of table */)
{
if (is_space_char (*s))
++s;
@@ -4185,7 +4386,7 @@ parse_register (reg_string, end_op)
return r;
}
}
- /* We have "%st(" then garbage */
+ /* We have "%st(" then garbage. */
return (const reg_entry *) NULL;
}
}
@@ -4194,11 +4395,18 @@ parse_register (reg_string, end_op)
}
#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
-CONST char *md_shortopts = "kmVQ:sq";
+const char *md_shortopts = "kVQ:sq";
#else
-CONST char *md_shortopts = "m";
+const char *md_shortopts = "q";
#endif
+
struct option md_longopts[] = {
+#define OPTION_32 (OPTION_MD_BASE + 0)
+ {"32", no_argument, NULL, OPTION_32},
+#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
+#define OPTION_64 (OPTION_MD_BASE + 1)
+ {"64", no_argument, NULL, OPTION_64},
+#endif
{NULL, no_argument, NULL, 0}
};
size_t md_longopts_size = sizeof (md_longopts);
@@ -4210,13 +4418,14 @@ md_parse_option (c, arg)
{
switch (c)
{
- case 'm':
- flag_do_long_jump = 1;
+ case 'q':
+ quiet_warnings = 1;
break;
#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
- /* -k: Ignore for FreeBSD compatibility. */
- case 'k':
+ /* -Qy, -Qn: SVR4 arguments controlling whether a .comment section
+ should be emitted or not. FIXME: Not implemented. */
+ case 'Q':
break;
/* -V: SVR4 argument to print version ID. */
@@ -4224,9 +4433,8 @@ md_parse_option (c, arg)
print_version_id ();
break;
- /* -Qy, -Qn: SVR4 arguments controlling whether a .comment section
- should be emitted or not. FIXME: Not implemented. */
- case 'Q':
+ /* -k: Ignore for FreeBSD compatibility. */
+ case 'k':
break;
case 's':
@@ -4234,12 +4442,28 @@ md_parse_option (c, arg)
.stab instead of .stab.excl. We always use .stab anyhow. */
break;
- case 'q':
- /* -q: On i386 Solaris, this tells the native assembler does
- fewer checks. */
+ case OPTION_64:
+ {
+ const char **list, **l;
+
+ list = bfd_target_list ();
+ for (l = list; *l != NULL; l++)
+ if (strcmp (*l, "elf64-x86-64") == 0)
+ {
+ default_arch = "x86_64";
+ break;
+ }
+ if (*l == NULL)
+ as_fatal (_("No compiled in support for x86_64"));
+ free (list);
+ }
break;
#endif
+ case OPTION_32:
+ default_arch = "i386";
+ break;
+
default:
return 0;
}
@@ -4250,41 +4474,51 @@ void
md_show_usage (stream)
FILE *stream;
{
- fprintf (stream, _("\
- -m do long jump\n"));
#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
fprintf (stream, _("\
- -V print assembler version number\n\
- -k ignored\n\
- -Qy, -Qn ignored\n\
- -q ignored\n\
- -s ignored\n"));
+ -Q ignored\n\
+ -V print assembler version number\n\
+ -k ignored\n\
+ -q quieten some warnings\n\
+ -s ignored\n"));
+#else
+ fprintf (stream, _("\
+ -q quieten some warnings\n"));
#endif
}
#ifdef BFD_ASSEMBLER
-#if ((defined (OBJ_MAYBE_ELF) && defined (OBJ_MAYBE_COFF)) \
- || (defined (OBJ_MAYBE_ELF) && defined (OBJ_MAYBE_AOUT)) \
- || (defined (OBJ_MAYBE_COFF) && defined (OBJ_MAYBE_AOUT)))
+#if ((defined (OBJ_MAYBE_COFF) && defined (OBJ_MAYBE_AOUT)) \
+ || defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF))
/* Pick the target format to use. */
-const char *
+const char *
i386_target_format ()
{
+ if (!strcmp (default_arch, "x86_64"))
+ set_code_flag (CODE_64BIT);
+ else if (!strcmp (default_arch, "i386"))
+ set_code_flag (CODE_32BIT);
+ else
+ as_fatal (_("Unknown architecture"));
switch (OUTPUT_FLAVOR)
{
#ifdef OBJ_MAYBE_AOUT
case bfd_target_aout_flavour:
- return AOUT_TARGET_FORMAT;
+ return AOUT_TARGET_FORMAT;
#endif
#ifdef OBJ_MAYBE_COFF
case bfd_target_coff_flavour:
return "coff-i386";
#endif
-#ifdef OBJ_MAYBE_ELF
+#if defined (OBJ_MAYBE_ELF) || defined (OBJ_ELF)
case bfd_target_elf_flavour:
- return "elf32-i386";
+ {
+ if (flag_code == CODE_64BIT)
+ use_rela_relocations = 1;
+ return flag_code == CODE_64BIT ? "elf64-x86-64" : "elf32-i386";
+ }
#endif
default:
abort ();
@@ -4292,8 +4526,8 @@ i386_target_format ()
}
}
-#endif /* OBJ_MAYBE_ more than one */
-#endif /* BFD_ASSEMBLER */
+#endif /* OBJ_MAYBE_ more than one */
+#endif /* BFD_ASSEMBLER */
symbolS *
md_undefined_symbol (name)
@@ -4317,6 +4551,7 @@ md_undefined_symbol (name)
}
/* Round up a section size to the appropriate boundary. */
+
valueT
md_section_align (segment, size)
segT segment ATTRIBUTE_UNUSED;
@@ -4368,7 +4603,6 @@ s_bss (ignore)
#endif
-
#ifdef BFD_ASSEMBLER
void
@@ -4377,7 +4611,19 @@ i386_validate_fix (fixp)
{
if (fixp->fx_subsy && fixp->fx_subsy == GOT_symbol)
{
- fixp->fx_r_type = BFD_RELOC_386_GOTOFF;
+ /* GOTOFF relocation are nonsense in 64bit mode. */
+ if (fixp->fx_r_type == BFD_RELOC_32_PCREL)
+ {
+ if (flag_code != CODE_64BIT)
+ abort ();
+ fixp->fx_r_type = BFD_RELOC_X86_64_GOTPCREL;
+ }
+ else
+ {
+ if (flag_code == CODE_64BIT)
+ abort ();
+ fixp->fx_r_type = BFD_RELOC_386_GOTOFF;
+ }
fixp->fx_subsy = 0;
}
}
@@ -4392,10 +4638,14 @@ tc_gen_reloc (section, fixp)
switch (fixp->fx_r_type)
{
+ case BFD_RELOC_X86_64_PLT32:
+ case BFD_RELOC_X86_64_GOT32:
+ case BFD_RELOC_X86_64_GOTPCREL:
case BFD_RELOC_386_PLT32:
case BFD_RELOC_386_GOT32:
case BFD_RELOC_386_GOTOFF:
case BFD_RELOC_386_GOTPC:
+ case BFD_RELOC_X86_64_32S:
case BFD_RELOC_RVA:
case BFD_RELOC_VTABLE_ENTRY:
case BFD_RELOC_VTABLE_INHERIT:
@@ -4427,6 +4677,7 @@ tc_gen_reloc (section, fixp)
case 1: code = BFD_RELOC_8; break;
case 2: code = BFD_RELOC_16; break;
case 4: code = BFD_RELOC_32; break;
+ case 8: code = BFD_RELOC_64; break;
}
}
break;
@@ -4435,22 +4686,37 @@ tc_gen_reloc (section, fixp)
if (code == BFD_RELOC_32
&& GOT_symbol
&& fixp->fx_addsy == GOT_symbol)
- code = BFD_RELOC_386_GOTPC;
+ {
+ /* We don't support GOTPC on 64bit targets. */
+ if (flag_code == CODE_64BIT)
+ abort ();
+ code = BFD_RELOC_386_GOTPC;
+ }
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;
- /* HACK: Since i386 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)
- rel->address = fixp->fx_offset;
+ if (!use_rela_relocations)
+ {
+ /* HACK: Since i386 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)
+ rel->address = fixp->fx_offset;
- if (fixp->fx_pcrel)
- rel->addend = fixp->fx_addnumber;
+ if (fixp->fx_pcrel)
+ rel->addend = fixp->fx_addnumber;
+ else
+ rel->addend = 0;
+ }
+ /* Use the rela in 64bit mode. */
else
- rel->addend = 0;
+ {
+ rel->addend = fixp->fx_offset;
+ if (fixp->fx_pcrel)
+ rel->addend -= fixp->fx_size;
+ }
rel->howto = bfd_reloc_type_lookup (stdoutput, code);
if (rel->howto == NULL)
@@ -4466,7 +4732,7 @@ tc_gen_reloc (section, fixp)
return rel;
}
-#else /* ! BFD_ASSEMBLER */
+#else /* ! BFD_ASSEMBLER */
#if (defined(OBJ_AOUT) | defined(OBJ_BOUT))
void
@@ -4475,12 +4741,10 @@ tc_aout_fix_to_chars (where, fixP, segment_address_in_file)
fixS *fixP;
relax_addressT segment_address_in_file;
{
- /*
- * In: length of relocation (or of address) in chars: 1, 2 or 4.
- * Out: GNU LD relocation length code: 0, 1, or 2.
- */
+ /* In: length of relocation (or of address) in chars: 1, 2 or 4.
+ Out: GNU LD relocation length code: 0, 1, or 2. */
- static const unsigned char nbytes_r_length[] = {42, 0, 1, 42, 2};
+ static const unsigned char nbytes_r_length[] = { 42, 0, 1, 42, 2 };
long r_symbolnum;
know (fixP->fx_addsy != NULL);
@@ -4502,7 +4766,7 @@ tc_aout_fix_to_chars (where, fixP, segment_address_in_file)
| (((fixP->fx_pcrel << 0) & 0x01) & 0x0f));
}
-#endif /* OBJ_AOUT or OBJ_BOUT */
+#endif /* OBJ_AOUT or OBJ_BOUT. */
#if defined (I386COFF)
@@ -4532,8 +4796,956 @@ tc_coff_sizemachdep (frag)
return 0;
}
-#endif /* I386COFF */
+#endif /* I386COFF */
-#endif /* ! BFD_ASSEMBLER */
+#endif /* ! BFD_ASSEMBLER */
-/* end of tc-i386.c */
+/* Parse operands using Intel syntax. This implements a recursive descent
+ parser based on the BNF grammar published in Appendix B of the MASM 6.1
+ Programmer's Guide.
+
+ FIXME: We do not recognize the full operand grammar defined in the MASM
+ documentation. In particular, all the structure/union and
+ high-level macro operands are missing.
+
+ Uppercase words are terminals, lower case words are non-terminals.
+ Objects surrounded by double brackets '[[' ']]' are optional. Vertical
+ bars '|' denote choices. Most grammar productions are implemented in
+ functions called 'intel_<production>'.
+
+ Initial production is 'expr'.
+
+ addOp + | -
+
+ alpha [a-zA-Z]
+
+ byteRegister AL | AH | BL | BH | CL | CH | DL | DH
+
+ constant digits [[ radixOverride ]]
+
+ dataType BYTE | WORD | DWORD | QWORD | XWORD
+
+ digits decdigit
+ | digits decdigit
+ | digits hexdigit
+
+ decdigit [0-9]
+
+ e05 e05 addOp e06
+ | e06
+
+ e06 e06 mulOp e09
+ | e09
+
+ e09 OFFSET e10
+ | e09 PTR e10
+ | e09 : e10
+ | e10
+
+ e10 e10 [ expr ]
+ | e11
+
+ e11 ( expr )
+ | [ expr ]
+ | constant
+ | dataType
+ | id
+ | $
+ | register
+
+ => expr SHORT e05
+ | e05
+
+ gpRegister AX | EAX | BX | EBX | CX | ECX | DX | EDX
+ | BP | EBP | SP | ESP | DI | EDI | SI | ESI
+
+ hexdigit a | b | c | d | e | f
+ | A | B | C | D | E | F
+
+ id alpha
+ | id alpha
+ | id decdigit
+
+ mulOp * | / | MOD
+
+ quote " | '
+
+ register specialRegister
+ | gpRegister
+ | byteRegister
+
+ segmentRegister CS | DS | ES | FS | GS | SS
+
+ specialRegister CR0 | CR2 | CR3
+ | DR0 | DR1 | DR2 | DR3 | DR6 | DR7
+ | TR3 | TR4 | TR5 | TR6 | TR7
+
+ We simplify the grammar in obvious places (e.g., register parsing is
+ done by calling parse_register) and eliminate immediate left recursion
+ to implement a recursive-descent parser.
+
+ expr SHORT e05
+ | e05
+
+ e05 e06 e05'
+
+ e05' addOp e06 e05'
+ | Empty
+
+ e06 e09 e06'
+
+ e06' mulOp e09 e06'
+ | Empty
+
+ e09 OFFSET e10 e09'
+ | e10 e09'
+
+ e09' PTR e10 e09'
+ | : e10 e09'
+ | Empty
+
+ e10 e11 e10'
+
+ e10' [ expr ] e10'
+ | Empty
+
+ e11 ( expr )
+ | [ expr ]
+ | BYTE
+ | WORD
+ | DWORD
+ | QWORD
+ | XWORD
+ | .
+ | $
+ | register
+ | id
+ | constant */
+
+/* Parsing structure for the intel syntax parser. Used to implement the
+ semantic actions for the operand grammar. */
+struct intel_parser_s
+ {
+ char *op_string; /* The string being parsed. */
+ int got_a_float; /* Whether the operand is a float. */
+ int op_modifier; /* Operand modifier. */
+ int is_mem; /* 1 if operand is memory reference. */
+ const reg_entry *reg; /* Last register reference found. */
+ char *disp; /* Displacement string being built. */
+ };
+
+static struct intel_parser_s intel_parser;
+
+/* Token structure for parsing intel syntax. */
+struct intel_token
+ {
+ int code; /* Token code. */
+ const reg_entry *reg; /* Register entry for register tokens. */
+ char *str; /* String representation. */
+ };
+
+static struct intel_token cur_token, prev_token;
+
+/* Token codes for the intel parser. Since T_SHORT is already used
+ by COFF, undefine it first to prevent a warning. */
+#define T_NIL -1
+#define T_CONST 1
+#define T_REG 2
+#define T_BYTE 3
+#define T_WORD 4
+#define T_DWORD 5
+#define T_QWORD 6
+#define T_XWORD 7
+#undef T_SHORT
+#define T_SHORT 8
+#define T_OFFSET 9
+#define T_PTR 10
+#define T_ID 11
+
+/* Prototypes for intel parser functions. */
+static int intel_match_token PARAMS ((int code));
+static void intel_get_token PARAMS ((void));
+static void intel_putback_token PARAMS ((void));
+static int intel_expr PARAMS ((void));
+static int intel_e05 PARAMS ((void));
+static int intel_e05_1 PARAMS ((void));
+static int intel_e06 PARAMS ((void));
+static int intel_e06_1 PARAMS ((void));
+static int intel_e09 PARAMS ((void));
+static int intel_e09_1 PARAMS ((void));
+static int intel_e10 PARAMS ((void));
+static int intel_e10_1 PARAMS ((void));
+static int intel_e11 PARAMS ((void));
+
+static int
+i386_intel_operand (operand_string, got_a_float)
+ char *operand_string;
+ int got_a_float;
+{
+ int ret;
+ char *p;
+
+ /* Initialize token holders. */
+ cur_token.code = prev_token.code = T_NIL;
+ cur_token.reg = prev_token.reg = NULL;
+ cur_token.str = prev_token.str = NULL;
+
+ /* Initialize parser structure. */
+ p = intel_parser.op_string = (char *) malloc (strlen (operand_string) + 1);
+ if (p == NULL)
+ abort ();
+ strcpy (intel_parser.op_string, operand_string);
+ intel_parser.got_a_float = got_a_float;
+ intel_parser.op_modifier = -1;
+ intel_parser.is_mem = 0;
+ intel_parser.reg = NULL;
+ intel_parser.disp = (char *) malloc (strlen (operand_string) + 1);
+ if (intel_parser.disp == NULL)
+ abort ();
+ intel_parser.disp[0] = '\0';
+
+ /* Read the first token and start the parser. */
+ intel_get_token ();
+ ret = intel_expr ();
+
+ if (ret)
+ {
+ /* If we found a memory reference, hand it over to i386_displacement
+ to fill in the rest of the operand fields. */
+ if (intel_parser.is_mem)
+ {
+ if ((i.mem_operands == 1
+ && (current_templates->start->opcode_modifier & IsString) == 0)
+ || i.mem_operands == 2)
+ {
+ as_bad (_("too many memory references for '%s'"),
+ current_templates->start->name);
+ ret = 0;
+ }
+ else
+ {
+ char *s = intel_parser.disp;
+ i.mem_operands++;
+
+ /* Add the displacement expression. */
+ if (*s != '\0')
+ ret = i386_displacement (s, s + strlen (s))
+ && i386_index_check (s);
+ }
+ }
+
+ /* Constant and OFFSET expressions are handled by i386_immediate. */
+ else if (intel_parser.op_modifier == OFFSET_FLAT
+ || intel_parser.reg == NULL)
+ ret = i386_immediate (intel_parser.disp);
+ }
+
+ free (p);
+ free (intel_parser.disp);
+
+ return ret;
+}
+
+/* expr SHORT e05
+ | e05 */
+static int
+intel_expr ()
+{
+ /* expr SHORT e05 */
+ if (cur_token.code == T_SHORT)
+ {
+ intel_parser.op_modifier = SHORT;
+ intel_match_token (T_SHORT);
+
+ return (intel_e05 ());
+ }
+
+ /* expr e05 */
+ else
+ return intel_e05 ();
+}
+
+/* e05 e06 e05'
+
+ e05' addOp e06 e05'
+ | Empty */
+static int
+intel_e05 ()
+{
+ return (intel_e06 () && intel_e05_1 ());
+}
+
+static int
+intel_e05_1 ()
+{
+ /* e05' addOp e06 e05' */
+ if (cur_token.code == '+' || cur_token.code == '-')
+ {
+ strcat (intel_parser.disp, cur_token.str);
+ intel_match_token (cur_token.code);
+
+ return (intel_e06 () && intel_e05_1 ());
+ }
+
+ /* e05' Empty */
+ else
+ return 1;
+}
+
+/* e06 e09 e06'
+
+ e06' mulOp e09 e06'
+ | Empty */
+static int
+intel_e06 ()
+{
+ return (intel_e09 () && intel_e06_1 ());
+}
+
+static int
+intel_e06_1 ()
+{
+ /* e06' mulOp e09 e06' */
+ if (cur_token.code == '*' || cur_token.code == '/')
+ {
+ strcat (intel_parser.disp, cur_token.str);
+ intel_match_token (cur_token.code);
+
+ return (intel_e09 () && intel_e06_1 ());
+ }
+
+ /* e06' Empty */
+ else
+ return 1;
+}
+
+/* e09 OFFSET e10 e09'
+ | e10 e09'
+
+ e09' PTR e10 e09'
+ | : e10 e09'
+ | Empty */
+static int
+intel_e09 ()
+{
+ /* e09 OFFSET e10 e09' */
+ if (cur_token.code == T_OFFSET)
+ {
+ intel_parser.is_mem = 0;
+ intel_parser.op_modifier = OFFSET_FLAT;
+ intel_match_token (T_OFFSET);
+
+ return (intel_e10 () && intel_e09_1 ());
+ }
+
+ /* e09 e10 e09' */
+ else
+ return (intel_e10 () && intel_e09_1 ());
+}
+
+static int
+intel_e09_1 ()
+{
+ /* e09' PTR e10 e09' */
+ if (cur_token.code == T_PTR)
+ {
+ if (prev_token.code == T_BYTE)
+ i.suffix = BYTE_MNEM_SUFFIX;
+
+ else if (prev_token.code == T_WORD)
+ {
+ if (intel_parser.got_a_float == 2) /* "fi..." */
+ i.suffix = SHORT_MNEM_SUFFIX;
+ else
+ i.suffix = WORD_MNEM_SUFFIX;
+ }
+
+ else if (prev_token.code == T_DWORD)
+ {
+ if (intel_parser.got_a_float == 1) /* "f..." */
+ i.suffix = SHORT_MNEM_SUFFIX;
+ else
+ i.suffix = LONG_MNEM_SUFFIX;
+ }
+
+ else if (prev_token.code == T_QWORD)
+ {
+ if (intel_parser.got_a_float == 1) /* "f..." */
+ i.suffix = LONG_MNEM_SUFFIX;
+ else
+ i.suffix = QWORD_MNEM_SUFFIX;
+ }
+
+ else if (prev_token.code == T_XWORD)
+ i.suffix = LONG_DOUBLE_MNEM_SUFFIX;
+
+ else
+ {
+ as_bad (_("Unknown operand modifier `%s'\n"), prev_token.str);
+ return 0;
+ }
+
+ intel_match_token (T_PTR);
+
+ return (intel_e10 () && intel_e09_1 ());
+ }
+
+ /* e09 : e10 e09' */
+ else if (cur_token.code == ':')
+ {
+ /* Mark as a memory operand only if it's not already known to be an
+ offset expression. */
+ if (intel_parser.op_modifier != OFFSET_FLAT)
+ intel_parser.is_mem = 1;
+
+ return (intel_match_token (':') && intel_e10 () && intel_e09_1 ());
+ }
+
+ /* e09' Empty */
+ else
+ return 1;
+}
+
+/* e10 e11 e10'
+
+ e10' [ expr ] e10'
+ | Empty */
+static int
+intel_e10 ()
+{
+ return (intel_e11 () && intel_e10_1 ());
+}
+
+static int
+intel_e10_1 ()
+{
+ /* e10' [ expr ] e10' */
+ if (cur_token.code == '[')
+ {
+ intel_match_token ('[');
+
+ /* Mark as a memory operand only if it's not already known to be an
+ offset expression. If it's an offset expression, we need to keep
+ the brace in. */
+ if (intel_parser.op_modifier != OFFSET_FLAT)
+ intel_parser.is_mem = 1;
+ else
+ strcat (intel_parser.disp, "[");
+
+ /* Add a '+' to the displacement string if necessary. */
+ if (*intel_parser.disp != '\0'
+ && *(intel_parser.disp + strlen (intel_parser.disp) - 1) != '+')
+ strcat (intel_parser.disp, "+");
+
+ if (intel_expr () && intel_match_token (']'))
+ {
+ /* Preserve brackets when the operand is an offset expression. */
+ if (intel_parser.op_modifier == OFFSET_FLAT)
+ strcat (intel_parser.disp, "]");
+
+ return intel_e10_1 ();
+ }
+ else
+ return 0;
+ }
+
+ /* e10' Empty */
+ else
+ return 1;
+}
+
+/* e11 ( expr )
+ | [ expr ]
+ | BYTE
+ | WORD
+ | DWORD
+ | QWORD
+ | XWORD
+ | $
+ | .
+ | register
+ | id
+ | constant */
+static int
+intel_e11 ()
+{
+ /* e11 ( expr ) */
+ if (cur_token.code == '(')
+ {
+ intel_match_token ('(');
+ strcat (intel_parser.disp, "(");
+
+ if (intel_expr () && intel_match_token (')'))
+ {
+ strcat (intel_parser.disp, ")");
+ return 1;
+ }
+ else
+ return 0;
+ }
+
+ /* e11 [ expr ] */
+ else if (cur_token.code == '[')
+ {
+ intel_match_token ('[');
+
+ /* Mark as a memory operand only if it's not already known to be an
+ offset expression. If it's an offset expression, we need to keep
+ the brace in. */
+ if (intel_parser.op_modifier != OFFSET_FLAT)
+ intel_parser.is_mem = 1;
+ else
+ strcat (intel_parser.disp, "[");
+
+ /* Operands for jump/call inside brackets denote absolute addresses. */
+ if (current_templates->start->opcode_modifier & Jump
+ || current_templates->start->opcode_modifier & JumpDword
+ || current_templates->start->opcode_modifier & JumpByte
+ || current_templates->start->opcode_modifier & JumpInterSegment)
+ i.types[this_operand] |= JumpAbsolute;
+
+ /* Add a '+' to the displacement string if necessary. */
+ if (*intel_parser.disp != '\0'
+ && *(intel_parser.disp + strlen (intel_parser.disp) - 1) != '+')
+ strcat (intel_parser.disp, "+");
+
+ if (intel_expr () && intel_match_token (']'))
+ {
+ /* Preserve brackets when the operand is an offset expression. */
+ if (intel_parser.op_modifier == OFFSET_FLAT)
+ strcat (intel_parser.disp, "]");
+
+ return 1;
+ }
+ else
+ return 0;
+ }
+
+ /* e11 BYTE
+ | WORD
+ | DWORD
+ | QWORD
+ | XWORD */
+ else if (cur_token.code == T_BYTE
+ || cur_token.code == T_WORD
+ || cur_token.code == T_DWORD
+ || cur_token.code == T_QWORD
+ || cur_token.code == T_XWORD)
+ {
+ intel_match_token (cur_token.code);
+
+ return 1;
+ }
+
+ /* e11 $
+ | . */
+ else if (cur_token.code == '$' || cur_token.code == '.')
+ {
+ strcat (intel_parser.disp, cur_token.str);
+ intel_match_token (cur_token.code);
+
+ /* Mark as a memory operand only if it's not already known to be an
+ offset expression. */
+ if (intel_parser.op_modifier != OFFSET_FLAT)
+ intel_parser.is_mem = 1;
+
+ return 1;
+ }
+
+ /* e11 register */
+ else if (cur_token.code == T_REG)
+ {
+ const reg_entry *reg = intel_parser.reg = cur_token.reg;
+
+ intel_match_token (T_REG);
+
+ /* Check for segment change. */
+ if (cur_token.code == ':')
+ {
+ if (reg->reg_type & (SReg2 | SReg3))
+ {
+ switch (reg->reg_num)
+ {
+ case 0:
+ i.seg[i.mem_operands] = &es;
+ break;
+ case 1:
+ i.seg[i.mem_operands] = &cs;
+ break;
+ case 2:
+ i.seg[i.mem_operands] = &ss;
+ break;
+ case 3:
+ i.seg[i.mem_operands] = &ds;
+ break;
+ case 4:
+ i.seg[i.mem_operands] = &fs;
+ break;
+ case 5:
+ i.seg[i.mem_operands] = &gs;
+ break;
+ }
+ }
+ else
+ {
+ as_bad (_("`%s' is not a valid segment register"), reg->reg_name);
+ return 0;
+ }
+ }
+
+ /* Not a segment register. Check for register scaling. */
+ else if (cur_token.code == '*')
+ {
+ if (!intel_parser.is_mem)
+ {
+ as_bad (_("Register scaling only allowed in memory operands."));
+ return 0;
+ }
+
+ /* What follows must be a valid scale. */
+ if (intel_match_token ('*')
+ && strchr ("01248", *cur_token.str))
+ {
+ i.index_reg = reg;
+ i.types[this_operand] |= BaseIndex;
+
+ /* Set the scale after setting the register (otherwise,
+ i386_scale will complain) */
+ i386_scale (cur_token.str);
+ intel_match_token (T_CONST);
+ }
+ else
+ {
+ as_bad (_("expecting scale factor of 1, 2, 4, or 8: got `%s'"),
+ cur_token.str);
+ return 0;
+ }
+ }
+
+ /* No scaling. If this is a memory operand, the register is either a
+ base register (first occurrence) or an index register (second
+ occurrence). */
+ else if (intel_parser.is_mem && !(reg->reg_type & (SReg2 | SReg3)))
+ {
+ if (i.base_reg && i.index_reg)
+ {
+ as_bad (_("Too many register references in memory operand.\n"));
+ return 0;
+ }
+
+ if (i.base_reg == NULL)
+ i.base_reg = reg;
+ else
+ i.index_reg = reg;
+
+ i.types[this_operand] |= BaseIndex;
+ }
+
+ /* Offset modifier. Add the register to the displacement string to be
+ parsed as an immediate expression after we're done. */
+ else if (intel_parser.op_modifier == OFFSET_FLAT)
+ strcat (intel_parser.disp, reg->reg_name);
+
+ /* It's neither base nor index nor offset. */
+ else
+ {
+ i.types[this_operand] |= reg->reg_type & ~BaseIndex;
+ i.op[this_operand].regs = reg;
+ i.reg_operands++;
+ }
+
+ /* Since registers are not part of the displacement string (except
+ when we're parsing offset operands), we may need to remove any
+ preceding '+' from the displacement string. */
+ if (*intel_parser.disp != '\0'
+ && intel_parser.op_modifier != OFFSET_FLAT)
+ {
+ char *s = intel_parser.disp;
+ s += strlen (s) - 1;
+ if (*s == '+')
+ *s = '\0';
+ }
+
+ return 1;
+ }
+
+ /* e11 id */
+ else if (cur_token.code == T_ID)
+ {
+ /* Add the identifier to the displacement string. */
+ strcat (intel_parser.disp, cur_token.str);
+ intel_match_token (T_ID);
+
+ /* The identifier represents a memory reference only if it's not
+ preceded by an offset modifier. */
+ if (intel_parser.op_modifier != OFFSET_FLAT)
+ intel_parser.is_mem = 1;
+
+ return 1;
+ }
+
+ /* e11 constant */
+ else if (cur_token.code == T_CONST
+ || cur_token.code == '-'
+ || cur_token.code == '+')
+ {
+ char *save_str;
+
+ /* Allow constants that start with `+' or `-'. */
+ if (cur_token.code == '-' || cur_token.code == '+')
+ {
+ strcat (intel_parser.disp, cur_token.str);
+ intel_match_token (cur_token.code);
+ if (cur_token.code != T_CONST)
+ {
+ as_bad (_("Syntax error. Expecting a constant. Got `%s'.\n"),
+ cur_token.str);
+ return 0;
+ }
+ }
+
+ save_str = (char *) malloc (strlen (cur_token.str) + 1);
+ if (save_str == NULL)
+ abort ();
+ strcpy (save_str, cur_token.str);
+
+ /* Get the next token to check for register scaling. */
+ intel_match_token (cur_token.code);
+
+ /* Check if this constant is a scaling factor for an index register. */
+ if (cur_token.code == '*')
+ {
+ if (intel_match_token ('*') && cur_token.code == T_REG)
+ {
+ if (!intel_parser.is_mem)
+ {
+ as_bad (_("Register scaling only allowed in memory operands."));
+ return 0;
+ }
+
+ /* The constant is followed by `* reg', so it must be
+ a valid scale. */
+ if (strchr ("01248", *save_str))
+ {
+ i.index_reg = cur_token.reg;
+ i.types[this_operand] |= BaseIndex;
+
+ /* Set the scale after setting the register (otherwise,
+ i386_scale will complain) */
+ i386_scale (save_str);
+ intel_match_token (T_REG);
+
+ /* Since registers are not part of the displacement
+ string, we may need to remove any preceding '+' from
+ the displacement string. */
+ if (*intel_parser.disp != '\0')
+ {
+ char *s = intel_parser.disp;
+ s += strlen (s) - 1;
+ if (*s == '+')
+ *s = '\0';
+ }
+
+ free (save_str);
+
+ return 1;
+ }
+ else
+ return 0;
+ }
+
+ /* The constant was not used for register scaling. Since we have
+ already consumed the token following `*' we now need to put it
+ back in the stream. */
+ else
+ intel_putback_token ();
+ }
+
+ /* Add the constant to the displacement string. */
+ strcat (intel_parser.disp, save_str);
+ free (save_str);
+
+ return 1;
+ }
+
+ as_bad (_("Unrecognized token '%s'"), cur_token.str);
+ return 0;
+}
+
+/* Match the given token against cur_token. If they match, read the next
+ token from the operand string. */
+static int
+intel_match_token (code)
+ int code;
+{
+ if (cur_token.code == code)
+ {
+ intel_get_token ();
+ return 1;
+ }
+ else
+ {
+ as_bad (_("Unexpected token `%s'\n"), cur_token.str);
+ return 0;
+ }
+}
+
+/* Read a new token from intel_parser.op_string and store it in cur_token. */
+static void
+intel_get_token ()
+{
+ char *end_op;
+ const reg_entry *reg;
+ struct intel_token new_token;
+
+ new_token.code = T_NIL;
+ new_token.reg = NULL;
+ new_token.str = NULL;
+
+ /* Free the memory allocated to the previous token and move
+ cur_token to prev_token. */
+ if (prev_token.str)
+ free (prev_token.str);
+
+ prev_token = cur_token;
+
+ /* Skip whitespace. */
+ while (is_space_char (*intel_parser.op_string))
+ intel_parser.op_string++;
+
+ /* Return an empty token if we find nothing else on the line. */
+ if (*intel_parser.op_string == '\0')
+ {
+ cur_token = new_token;
+ return;
+ }
+
+ /* The new token cannot be larger than the remainder of the operand
+ string. */
+ new_token.str = (char *) malloc (strlen (intel_parser.op_string) + 1);
+ if (new_token.str == NULL)
+ abort ();
+ new_token.str[0] = '\0';
+
+ if (strchr ("0123456789", *intel_parser.op_string))
+ {
+ char *p = new_token.str;
+ char *q = intel_parser.op_string;
+ new_token.code = T_CONST;
+
+ /* Allow any kind of identifier char to encompass floating point and
+ hexadecimal numbers. */
+ while (is_identifier_char (*q))
+ *p++ = *q++;
+ *p = '\0';
+
+ /* Recognize special symbol names [0-9][bf]. */
+ if (strlen (intel_parser.op_string) == 2
+ && (intel_parser.op_string[1] == 'b'
+ || intel_parser.op_string[1] == 'f'))
+ new_token.code = T_ID;
+ }
+
+ else if (strchr ("+-/*:[]()", *intel_parser.op_string))
+ {
+ new_token.code = *intel_parser.op_string;
+ new_token.str[0] = *intel_parser.op_string;
+ new_token.str[1] = '\0';
+ }
+
+ else if ((*intel_parser.op_string == REGISTER_PREFIX || allow_naked_reg)
+ && ((reg = parse_register (intel_parser.op_string, &end_op)) != NULL))
+ {
+ new_token.code = T_REG;
+ new_token.reg = reg;
+
+ if (*intel_parser.op_string == REGISTER_PREFIX)
+ {
+ new_token.str[0] = REGISTER_PREFIX;
+ new_token.str[1] = '\0';
+ }
+
+ strcat (new_token.str, reg->reg_name);
+ }
+
+ else if (is_identifier_char (*intel_parser.op_string))
+ {
+ char *p = new_token.str;
+ char *q = intel_parser.op_string;
+
+ /* A '.' or '$' followed by an identifier char is an identifier.
+ Otherwise, it's operator '.' followed by an expression. */
+ if ((*q == '.' || *q == '$') && !is_identifier_char (*(q + 1)))
+ {
+ new_token.code = *q;
+ new_token.str[0] = *q;
+ new_token.str[1] = '\0';
+ }
+ else
+ {
+ while (is_identifier_char (*q) || *q == '@')
+ *p++ = *q++;
+ *p = '\0';
+
+ if (strcasecmp (new_token.str, "BYTE") == 0)
+ new_token.code = T_BYTE;
+
+ else if (strcasecmp (new_token.str, "WORD") == 0)
+ new_token.code = T_WORD;
+
+ else if (strcasecmp (new_token.str, "DWORD") == 0)
+ new_token.code = T_DWORD;
+
+ else if (strcasecmp (new_token.str, "QWORD") == 0)
+ new_token.code = T_QWORD;
+
+ else if (strcasecmp (new_token.str, "XWORD") == 0)
+ new_token.code = T_XWORD;
+
+ else if (strcasecmp (new_token.str, "PTR") == 0)
+ new_token.code = T_PTR;
+
+ else if (strcasecmp (new_token.str, "SHORT") == 0)
+ new_token.code = T_SHORT;
+
+ else if (strcasecmp (new_token.str, "OFFSET") == 0)
+ {
+ new_token.code = T_OFFSET;
+
+ /* ??? This is not mentioned in the MASM grammar but gcc
+ makes use of it with -mintel-syntax. OFFSET may be
+ followed by FLAT: */
+ if (strncasecmp (q, " FLAT:", 6) == 0)
+ strcat (new_token.str, " FLAT:");
+ }
+
+ /* ??? This is not mentioned in the MASM grammar. */
+ else if (strcasecmp (new_token.str, "FLAT") == 0)
+ new_token.code = T_OFFSET;
+
+ else
+ new_token.code = T_ID;
+ }
+ }
+
+ else
+ as_bad (_("Unrecognized token `%s'\n"), intel_parser.op_string);
+
+ intel_parser.op_string += strlen (new_token.str);
+ cur_token = new_token;
+}
+
+/* Put cur_token back into the token stream and make cur_token point to
+ prev_token. */
+static void
+intel_putback_token ()
+{
+ intel_parser.op_string -= strlen (cur_token.str);
+ free (cur_token.str);
+ cur_token = prev_token;
+
+ /* Forget prev_token. */
+ prev_token.code = T_NIL;
+ prev_token.reg = NULL;
+ prev_token.str = NULL;
+}
diff --git a/contrib/binutils/gas/config/tc-i386.h b/contrib/binutils/gas/config/tc-i386.h
index 2bf9a7f..a68d5e4 100644
--- a/contrib/binutils/gas/config/tc-i386.h
+++ b/contrib/binutils/gas/config/tc-i386.h
@@ -1,5 +1,5 @@
/* tc-i386.h -- Header file for tc-i386.c
- Copyright (C) 1989, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+ Copyright (C) 1989, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001
Free Software Foundation.
This file is part of GAS, the GNU Assembler.
@@ -41,21 +41,25 @@ struct fix;
#define tc_fix_adjustable(X) tc_i386_fix_adjustable(X)
extern int tc_i386_fix_adjustable PARAMS ((struct fix *));
-/* This is the relocation type for direct references to GLOBAL_OFFSET_TABLE.
- * It comes up in complicated expressions such as
- * _GLOBAL_OFFSET_TABLE_+[.-.L284], which cannot be expressed normally with
- * the regular expressions. The fixup specified here when used at runtime
- * implies that we should add the address of the GOT to the specified location,
- * and as a result we have simplified the expression into something we can use.
- */
-#define TC_RELOC_GLOBAL_OFFSET_TABLE BFD_RELOC_386_GOTPC
+#if (defined (OBJ_MAYBE_ELF) || defined (OBJ_ELF) || defined (OBJ_MAYBE_COFF) || defined (OBJ_COFF)) && !defined (TE_PE)
+/* This arranges for gas/write.c to not apply a relocation if
+ tc_fix_adjustable() says it is not adjustable.
+ The "! symbol_used_in_reloc_p" test is there specifically to cover
+ the case of non-global symbols in linkonce sections. It's the
+ generally correct thing to do though; If a reloc is going to be
+ emitted against a symbol then we don't want to adjust the fixup by
+ applying the reloc during assembly. The reloc will be applied by
+ the linker during final link. */
+#define TC_FIX_ADJUSTABLE(fixP) \
+ (! symbol_used_in_reloc_p ((fixP)->fx_addsy) && tc_fix_adjustable (fixP))
+#endif
/* This expression evaluates to false if the relocation is for a local object
for which we still want to do the relocation at runtime. True if we
are willing to perform this relocation while building the .o file.
This is only used for pcrel relocations, so GOTOFF does not need to be
checked here. I am not sure if some of the others are ever used with
- pcrel, but it is easier to be safe than sorry. */
+ pcrel, but it is easier to be safe than sorry. */
#define TC_RELOC_RTSYM_LOC_FIXUP(FIX) \
((FIX)->fx_r_type != BFD_RELOC_386_PLT32 \
@@ -68,7 +72,12 @@ extern int tc_i386_fix_adjustable PARAMS ((struct fix *));
&& ! S_IS_COMMON ((FIX)->fx_addsy))))
#define TARGET_ARCH bfd_arch_i386
+#define TARGET_MACH (i386_mach ())
+extern unsigned long i386_mach PARAMS ((void));
+#ifdef TE_FreeBSD
+#define AOUT_TARGET_FORMAT "a.out-i386-freebsd"
+#endif
#ifdef TE_NetBSD
#define AOUT_TARGET_FORMAT "a.out-i386-netbsd"
#endif
@@ -88,9 +97,8 @@ extern int tc_i386_fix_adjustable PARAMS ((struct fix *));
#define AOUT_TARGET_FORMAT "a.out-i386"
#endif
-#if ((defined (OBJ_MAYBE_ELF) && defined (OBJ_MAYBE_COFF)) \
- || (defined (OBJ_MAYBE_ELF) && defined (OBJ_MAYBE_AOUT)) \
- || (defined (OBJ_MAYBE_COFF) && defined (OBJ_MAYBE_AOUT)))
+#if ((defined (OBJ_MAYBE_COFF) && defined (OBJ_MAYBE_AOUT)) \
+ || defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF))
extern const char *i386_target_format PARAMS ((void));
#define TARGET_FORMAT i386_target_format ()
#else
@@ -134,7 +142,6 @@ extern int tc_coff_sizemachdep PARAMS ((fragS *frag));
/* Need this for PIC relocations */
#define NEED_FX_R_TYPE
-
#ifdef TE_386BSD
/* The BSDI linker apparently rejects objects with a machine type of
M_386 (100). */
@@ -184,13 +191,14 @@ extern const char extra_symbol_chars[];
/* Prefixes will be emitted in the order defined below.
WAIT_PREFIX must be the first prefix since FWAIT is really is an
- instruction, and so must come before any prefixes. */
+ instruction, and so must come before any prefixes. */
#define WAIT_PREFIX 0
#define LOCKREP_PREFIX 1
#define ADDR_PREFIX 2
#define DATA_PREFIX 3
#define SEG_PREFIX 4
-#define MAX_PREFIXES 5 /* max prefixes per opcode */
+#define REX_PREFIX 5 /* must come last. */
+#define MAX_PREFIXES 6 /* max prefixes per opcode */
/* we define the syntax here (modulo base,index,scale syntax) */
#define REGISTER_PREFIX '%'
@@ -217,10 +225,9 @@ extern const char extra_symbol_chars[];
#define BYTE_MNEM_SUFFIX 'b'
#define SHORT_MNEM_SUFFIX 's'
#define LONG_MNEM_SUFFIX 'l'
+#define QWORD_MNEM_SUFFIX 'q'
/* Intel Syntax */
#define LONG_DOUBLE_MNEM_SUFFIX 'x'
-/* Intel Syntax */
-#define DWORD_MNEM_SUFFIX 'd'
/* modrm.mode = REGMEM_FIELD_HAS_REG when a register is in there */
#define REGMEM_FIELD_HAS_REG 0x3/* always = 0x3 */
@@ -239,77 +246,6 @@ extern const char extra_symbol_chars[];
#define OFFSET_FLAT 6
#define FLAT 7
#define NONE_FOUND 8
-/*
- When an operand is read in it is classified by its type. This type includes
- all the possible ways an operand can be used. Thus, '%eax' is both 'register
- # 0' and 'The Accumulator'. In our language this is expressed by OR'ing
- 'Reg32' (any 32 bit register) and 'Acc' (the accumulator).
- Operands are classified so that we can match given operand types with
- the opcode table in opcode/i386.h.
- */
-/* register */
-#define Reg8 0x1 /* 8 bit reg */
-#define Reg16 0x2 /* 16 bit reg */
-#define Reg32 0x4 /* 32 bit reg */
-/* immediate */
-#define Imm8 0x8 /* 8 bit immediate */
-#define Imm8S 0x10 /* 8 bit immediate sign extended */
-#define Imm16 0x20 /* 16 bit immediate */
-#define Imm32 0x40 /* 32 bit immediate */
-#define Imm1 0x80 /* 1 bit immediate */
-/* memory */
-#define BaseIndex 0x100
-/* Disp8,16,32 are used in different ways, depending on the
- instruction. For jumps, they specify the size of the PC relative
- displacement, for baseindex type instructions, they specify the
- size of the offset relative to the base register, and for memory
- offset instructions such as `mov 1234,%al' they specify the size of
- the offset relative to the segment base. */
-#define Disp8 0x200 /* 8 bit displacement */
-#define Disp16 0x400 /* 16 bit displacement */
-#define Disp32 0x800 /* 32 bit displacement */
-/* specials */
-#define InOutPortReg 0x1000 /* register to hold in/out port addr = dx */
-#define ShiftCount 0x2000 /* register to hold shift cound = cl */
-#define Control 0x4000 /* Control register */
-#define Debug 0x8000 /* Debug register */
-#define Test 0x10000 /* Test register */
-#define FloatReg 0x20000 /* Float register */
-#define FloatAcc 0x40000 /* Float stack top %st(0) */
-#define SReg2 0x80000 /* 2 bit segment register */
-#define SReg3 0x100000 /* 3 bit segment register */
-#define Acc 0x200000 /* Accumulator %al or %ax or %eax */
-#define JumpAbsolute 0x400000
-#define RegMMX 0x800000 /* MMX register */
-#define RegXMM 0x1000000 /* XMM registers in PIII */
-#define EsSeg 0x2000000 /* String insn operand with fixed es segment */
-/* InvMem is for instructions with a modrm byte that only allow a
- general register encoding in the i.tm.mode and i.tm.regmem fields,
- eg. control reg moves. They really ought to support a memory form,
- but don't, so we add an InvMem flag to the register operand to
- indicate that it should be encoded in the i.tm.regmem field. */
-#define InvMem 0x4000000
-
-#define Reg (Reg8|Reg16|Reg32) /* gen'l register */
-#define WordReg (Reg16|Reg32)
-#define ImplicitRegister (InOutPortReg|ShiftCount|Acc|FloatAcc)
-#define Imm (Imm8|Imm8S|Imm16|Imm32) /* gen'l immediate */
-#define Disp (Disp8|Disp16|Disp32) /* General displacement */
-#define AnyMem (Disp|BaseIndex|InvMem) /* General memory */
-/* The following aliases are defined because the opcode table
- carefully specifies the allowed memory types for each instruction.
- At the moment we can only tell a memory reference size by the
- instruction suffix, so there's not much point in defining Mem8,
- Mem16, Mem32 and Mem64 opcode modifiers - We might as well just use
- the suffix directly to check memory operands. */
-#define LLongMem AnyMem /* 64 bits (or more) */
-#define LongMem AnyMem /* 32 bit memory ref */
-#define ShortMem AnyMem /* 16 bit memory ref */
-#define WordMem AnyMem /* 16 or 32 bit memory ref */
-#define ByteMem AnyMem /* 8 bit memory ref */
-
-#define SMALLEST_DISP_TYPE(num) \
- (fits_in_signed_byte(num) ? (Disp8|Disp32) : Disp32)
typedef struct
{
@@ -328,7 +264,33 @@ typedef struct
AMD 3DNow! instructions.
If this template has no extension opcode (the usual case) use None */
unsigned int extension_opcode;
-#define None 0xffff /* If no extension_opcode is possible. */
+#define None 0xffff /* If no extension_opcode is possible. */
+
+ /* cpu feature flags */
+ unsigned int cpu_flags;
+#define Cpu086 0x1 /* Any old cpu will do, 0 does the same */
+#define Cpu186 0x2 /* i186 or better required */
+#define Cpu286 0x4 /* i286 or better required */
+#define Cpu386 0x8 /* i386 or better required */
+#define Cpu486 0x10 /* i486 or better required */
+#define Cpu586 0x20 /* i585 or better required */
+#define Cpu686 0x40 /* i686 or better required */
+#define CpuP4 0x80 /* Pentium4 or better required */
+#define CpuK6 0x100 /* AMD K6 or better required*/
+#define CpuAthlon 0x200 /* AMD Athlon or better required*/
+#define CpuSledgehammer 0x400 /* Sledgehammer or better required */
+#define CpuMMX 0x800 /* MMX support required */
+#define CpuSSE 0x1000 /* Streaming SIMD extensions required */
+#define CpuSSE2 0x2000 /* Streaming SIMD extensions 2 required */
+#define Cpu3dnow 0x4000 /* 3dnow! support required */
+#define CpuUnknown 0x8000 /* The CPU is unknown, be on the safe side. */
+
+ /* These flags are set by gas depending on the flag_code. */
+#define Cpu64 0x4000000 /* 64bit support required */
+#define CpuNo64 0x8000000 /* Not supported in the 64bit mode */
+
+ /* The default value for unknown CPUs - enable all features to avoid problems. */
+#define CpuUnknownFlags (Cpu086|Cpu186|Cpu286|Cpu386|Cpu486|Cpu586|Cpu686|CpuP4|CpuSledgehammer|CpuMMX|CpuSSE|CpuSSE2|Cpu3dnow|CpuK6|CpuAthlon)
/* the bits in opcode_modifier are used to generate the final opcode from
the base_opcode. These bits also are used to detect alternate forms of
@@ -344,35 +306,107 @@ typedef struct
#define FloatR 0x8 /* src/dest swap for floats: MUST BE 0x8 */
#define ShortForm 0x10 /* register is in low 3 bits of opcode */
#define FloatMF 0x20 /* FP insn memory format bit, sized by 0x4 */
-#define Jump 0x40 /* special case for jump insns. */
+#define Jump 0x40 /* special case for jump insns. */
#define JumpDword 0x80 /* call and jump */
#define JumpByte 0x100 /* loop and jecxz */
#define JumpInterSegment 0x200 /* special case for intersegment leaps/calls */
#define FloatD 0x400 /* direction for float insns: MUST BE 0x400 */
#define Seg2ShortForm 0x800 /* encoding of load segment reg insns */
-#define Seg3ShortForm 0x1000 /* fs/gs segment register insns. */
+#define Seg3ShortForm 0x1000 /* fs/gs segment register insns. */
#define Size16 0x2000 /* needs size prefix if in 32-bit mode */
#define Size32 0x4000 /* needs size prefix if in 16-bit mode */
-#define IgnoreSize 0x8000 /* instruction ignores operand size prefix */
-#define DefaultSize 0x10000 /* default insn size depends on mode */
-#define No_bSuf 0x20000 /* b suffix on instruction illegal */
-#define No_wSuf 0x40000 /* w suffix on instruction illegal */
-#define No_lSuf 0x80000 /* l suffix on instruction illegal */
-#define No_sSuf 0x100000 /* s suffix on instruction illegal */
-#define No_dSuf 0x200000 /* d suffix on instruction illegal */
-#define No_xSuf 0x400000 /* x suffix on instruction illegal */
-#define FWait 0x800000 /* instruction needs FWAIT */
-#define IsString 0x1000000 /* quick test for string instructions */
-#define regKludge 0x2000000 /* fake an extra reg operand for clr, imul */
-#define IsPrefix 0x4000000 /* opcode is a prefix */
-#define ImmExt 0x8000000 /* instruction has extension in 8 bit imm */
+#define Size64 0x8000 /* needs size prefix if in 16-bit mode */
+#define IgnoreSize 0x10000 /* instruction ignores operand size prefix */
+#define DefaultSize 0x20000 /* default insn size depends on mode */
+#define No_bSuf 0x40000 /* b suffix on instruction illegal */
+#define No_wSuf 0x80000 /* w suffix on instruction illegal */
+#define No_lSuf 0x100000 /* l suffix on instruction illegal */
+#define No_sSuf 0x200000 /* s suffix on instruction illegal */
+#define No_qSuf 0x400000 /* q suffix on instruction illegal */
+#define No_xSuf 0x800000 /* x suffix on instruction illegal */
+#define FWait 0x1000000 /* instruction needs FWAIT */
+#define IsString 0x2000000 /* quick test for string instructions */
+#define regKludge 0x4000000 /* fake an extra reg operand for clr, imul */
+#define IsPrefix 0x8000000 /* opcode is a prefix */
+#define ImmExt 0x10000000 /* instruction has extension in 8 bit imm */
+#define NoRex64 0x20000000 /* instruction don't need Rex64 prefix. */
+#define Rex64 0x40000000 /* instruction require Rex64 prefix. */
#define Ugh 0x80000000 /* deprecated fp insn, gets a warning */
/* operand_types[i] describes the type of operand i. This is made
by OR'ing together all of the possible type masks. (e.g.
'operand_types[i] = Reg|Imm' specifies that operand i can be
- either a register or an immediate operand */
+ either a register or an immediate operand. */
unsigned int operand_types[3];
+
+ /* operand_types[i] bits */
+ /* register */
+#define Reg8 0x1 /* 8 bit reg */
+#define Reg16 0x2 /* 16 bit reg */
+#define Reg32 0x4 /* 32 bit reg */
+#define Reg64 0x8 /* 64 bit reg */
+ /* immediate */
+#define Imm8 0x10 /* 8 bit immediate */
+#define Imm8S 0x20 /* 8 bit immediate sign extended */
+#define Imm16 0x40 /* 16 bit immediate */
+#define Imm32 0x80 /* 32 bit immediate */
+#define Imm32S 0x100 /* 32 bit immediate sign extended */
+#define Imm64 0x200 /* 64 bit immediate */
+#define Imm1 0x400 /* 1 bit immediate */
+ /* memory */
+#define BaseIndex 0x800
+ /* Disp8,16,32 are used in different ways, depending on the
+ instruction. For jumps, they specify the size of the PC relative
+ displacement, for baseindex type instructions, they specify the
+ size of the offset relative to the base register, and for memory
+ offset instructions such as `mov 1234,%al' they specify the size of
+ the offset relative to the segment base. */
+#define Disp8 0x1000 /* 8 bit displacement */
+#define Disp16 0x2000 /* 16 bit displacement */
+#define Disp32 0x4000 /* 32 bit displacement */
+#define Disp32S 0x8000 /* 32 bit signed displacement */
+#define Disp64 0x10000 /* 64 bit displacement */
+ /* specials */
+#define InOutPortReg 0x20000 /* register to hold in/out port addr = dx */
+#define ShiftCount 0x40000 /* register to hold shift cound = cl */
+#define Control 0x80000 /* Control register */
+#define Debug 0x100000 /* Debug register */
+#define Test 0x200000 /* Test register */
+#define FloatReg 0x400000 /* Float register */
+#define FloatAcc 0x800000 /* Float stack top %st(0) */
+#define SReg2 0x1000000 /* 2 bit segment register */
+#define SReg3 0x2000000 /* 3 bit segment register */
+#define Acc 0x4000000 /* Accumulator %al or %ax or %eax */
+#define JumpAbsolute 0x8000000
+#define RegMMX 0x10000000 /* MMX register */
+#define RegXMM 0x20000000 /* XMM registers in PIII */
+#define EsSeg 0x40000000 /* String insn operand with fixed es segment */
+
+ /* InvMem is for instructions with a modrm byte that only allow a
+ general register encoding in the i.tm.mode and i.tm.regmem fields,
+ eg. control reg moves. They really ought to support a memory form,
+ but don't, so we add an InvMem flag to the register operand to
+ indicate that it should be encoded in the i.tm.regmem field. */
+#define InvMem 0x80000000
+
+#define Reg (Reg8|Reg16|Reg32|Reg64) /* gen'l register */
+#define WordReg (Reg16|Reg32|Reg64)
+#define ImplicitRegister (InOutPortReg|ShiftCount|Acc|FloatAcc)
+#define Imm (Imm8|Imm8S|Imm16|Imm32S|Imm32|Imm64) /* gen'l immediate */
+#define EncImm (Imm8|Imm16|Imm32|Imm32S) /* Encodable gen'l immediate */
+#define Disp (Disp8|Disp16|Disp32|Disp32S|Disp64) /* General displacement */
+#define AnyMem (Disp8|Disp16|Disp32|Disp32S|BaseIndex|InvMem) /* General memory */
+ /* The following aliases are defined because the opcode table
+ carefully specifies the allowed memory types for each instruction.
+ At the moment we can only tell a memory reference size by the
+ instruction suffix, so there's not much point in defining Mem8,
+ Mem16, Mem32 and Mem64 opcode modifiers - We might as well just use
+ the suffix directly to check memory operands. */
+#define LLongMem AnyMem /* 64 bits (or more) */
+#define LongMem AnyMem /* 32 bit memory ref */
+#define ShortMem AnyMem /* 16 bit memory ref */
+#define WordMem AnyMem /* 16 or 32 bit memory ref */
+#define ByteMem AnyMem /* 8 bit memory ref */
}
template;
@@ -384,47 +418,70 @@ template;
END.
*/
typedef struct
- {
- const template *start;
- const template *end;
- } templates;
+{
+ const template *start;
+ const template *end;
+}
+templates;
/* these are for register name --> number & type hash lookup */
typedef struct
- {
- char *reg_name;
- unsigned int reg_type;
- unsigned int reg_num;
- }
+{
+ char *reg_name;
+ unsigned int reg_type;
+ unsigned int reg_flags;
+#define RegRex 0x1 /* Extended register. */
+#define RegRex64 0x2 /* Extended 8 bit register. */
+ unsigned int reg_num;
+}
reg_entry;
typedef struct
- {
- char *seg_name;
- unsigned int seg_prefix;
- }
+{
+ char *seg_name;
+ unsigned int seg_prefix;
+}
seg_entry;
-/* 386 operand encoding bytes: see 386 book for details of this. */
+/* 386 operand encoding bytes: see 386 book for details of this. */
typedef struct
- {
- unsigned int regmem; /* codes register or memory operand */
- unsigned int reg; /* codes register operand (or extended opcode) */
- unsigned int mode; /* how to interpret regmem & reg */
- }
+{
+ unsigned int regmem; /* codes register or memory operand */
+ unsigned int reg; /* codes register operand (or extended opcode) */
+ unsigned int mode; /* how to interpret regmem & reg */
+}
modrm_byte;
-/* 386 opcode byte to code indirect addressing. */
+/* x86-64 extension prefix. */
typedef struct
{
- unsigned base;
- unsigned index;
- unsigned scale;
+ unsigned int mode64;
+ unsigned int extX; /* Used to extend modrm reg field. */
+ unsigned int extY; /* Used to extend SIB index field. */
+ unsigned int extZ; /* Used to extend modrm reg/mem, SIB base, modrm base fields. */
+ unsigned int empty; /* Used to old-style byte registers to new style. */
}
+rex_byte;
+
+/* 386 opcode byte to code indirect addressing. */
+typedef struct
+{
+ unsigned base;
+ unsigned index;
+ unsigned scale;
+}
sib_byte;
+/* x86 arch names and features */
+typedef struct
+{
+ const char *name; /* arch name */
+ unsigned int flags; /* cpu feature flags */
+}
+arch_entry;
+
/* The name of the global offset table generated by the compiler. Allow
- this to be overridden if need be. */
+ this to be overridden if need be. */
#ifndef GLOBAL_OFFSET_TABLE_NAME
#define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_"
#endif
@@ -446,13 +503,12 @@ if ((n) && !need_pass_2 \
&& (!(fill) || ((char)*(fill) == (char)0x90 && (len) == 1)) \
&& subseg_text_p (now_seg)) \
{ \
- char *p; \
- p = frag_var (rs_align_code, 15, 1, (relax_substateT) max, \
- (symbolS *) 0, (offsetT) (n), (char *) 0); \
- *p = 0x90; \
+ frag_align_code ((n), (max)); \
goto around; \
}
+#define MAX_MEM_FOR_RS_ALIGN_CODE 15
+
extern void i386_align_code PARAMS ((fragS *, int));
#define HANDLE_ALIGN(fragP) \
@@ -475,5 +531,3 @@ extern void sco_id PARAMS ((void));
#endif
#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */
-
-/* end of tc-i386.h */
diff --git a/contrib/binutils/gas/config/tc-m68851.h b/contrib/binutils/gas/config/tc-m68851.h
index 0f6d741..398e1d2 100644
--- a/contrib/binutils/gas/config/tc-m68851.h
+++ b/contrib/binutils/gas/config/tc-m68851.h
@@ -1,22 +1,23 @@
/* This file is tc-m68851.h
- Copyright (C) 1987-1992 Free Software Foundation, Inc.
-
+ Copyright (C) 1987-1992, 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. */
+ 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. */
/*
* pmmu.h
@@ -26,16 +27,16 @@
to us as part of the changes for the m68851 Memory Management Unit */
/* Copyright (C) 1987 Free Software Foundation, Inc.
-
+
This file is part of Gas, the GNU Assembler.
-
+
The GNU assembler is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY. No author or distributor
accepts responsibility to anyone for the consequences of using it
or for whether it serves any particular purpose or works at all,
unless he says so in writing. Refer to the GNU Assembler General
Public License for full details.
-
+
Everyone is granted permission to copy, modify and redistribute
the GNU Assembler, but only under the conditions described in the
GNU Assembler General Public License. A copy of this license is
@@ -47,10 +48,10 @@
#ifdef m68851
/*
- I didn't use much imagination in choosing the
+ I didn't use much imagination in choosing the
following codes, so many of them aren't very
mnemonic. -rab
-
+
P pmmu register
Possible values:
000 TC Translation Control reg
@@ -58,28 +59,28 @@
101 VAL Validate Access Level
110 SCC Stack Change Control
111 AC Access Control
-
+
W wide pmmu registers
Possible values:
001 DRP Dma Root Pointer
010 SRP Supervisor Root Pointer
011 CRP Cpu Root Pointer
-
+
f function code register
0 SFC
1 DFC
-
+
V VAL register only
-
+
X BADx, BACx
100 BAD Breakpoint Acknowledge Data
101 BAC Breakpoint Acknowledge Control
-
+
Y PSR
Z PCSR
-
+
| memory (modes 2-6, 7.*)
-
+
*/
/*
@@ -136,8 +137,7 @@
{"pbwcw", one(0xf089), one(0xffbf), "Bc"},
{"pbws", one(0xf0c8), one(0xffbf), "Bc"},
{"pbwsw", one(0xf088), one(0xffbf), "Bc"},
-
-
+
{"pdbac", two(0xf048, 0x0007), two(0xfff8, 0xffff), "DsBw"},
{"pdbas", two(0xf048, 0x0006), two(0xfff8, 0xffff), "DsBw"},
{"pdbbc", two(0xf048, 0x0001), two(0xfff8, 0xffff), "DsBw"},
@@ -154,53 +154,53 @@
{"pdbss", two(0xf048, 0x0004), two(0xfff8, 0xffff), "DsBw"},
{"pdbwc", two(0xf048, 0x0009), two(0xfff8, 0xffff), "DsBw"},
{"pdbws", two(0xf048, 0x0008), two(0xfff8, 0xffff), "DsBw"},
-
+
{"pflusha", two(0xf000, 0x2400), two(0xffff, 0xffff), "" },
-
+
{"pflush", two(0xf000, 0x3010), two(0xffc0, 0xfe10), "T3T9" },
{"pflush", two(0xf000, 0x3810), two(0xffc0, 0xfe10), "T3T9&s" },
{"pflush", two(0xf000, 0x3008), two(0xffc0, 0xfe18), "D3T9" },
{"pflush", two(0xf000, 0x3808), two(0xffc0, 0xfe18), "D3T9&s" },
{"pflush", two(0xf000, 0x3000), two(0xffc0, 0xfe1e), "f3T9" },
{"pflush", two(0xf000, 0x3800), two(0xffc0, 0xfe1e), "f3T9&s" },
-
+
{"pflushs", two(0xf000, 0x3410), two(0xfff8, 0xfe10), "T3T9" },
{"pflushs", two(0xf000, 0x3c00), two(0xfff8, 0xfe00), "T3T9&s" },
{"pflushs", two(0xf000, 0x3408), two(0xfff8, 0xfe18), "D3T9" },
{"pflushs", two(0xf000, 0x3c08), two(0xfff8, 0xfe18), "D3T9&s" },
{"pflushs", two(0xf000, 0x3400), two(0xfff8, 0xfe1e), "f3T9" },
{"pflushs", two(0xf000, 0x3c00), two(0xfff8, 0xfe1e), "f3T9&s"},
-
+
{"pflushr", two(0xf000, 0xa000), two(0xffc0, 0xffff), "|s" },
-
+
{"ploadr", two(0xf000, 0x2210), two(0xffc0, 0xfff0), "T3&s" },
{"ploadr", two(0xf000, 0x2208), two(0xffc0, 0xfff8), "D3&s" },
{"ploadr", two(0xf000, 0x2200), two(0xffc0, 0xfffe), "f3&s" },
{"ploadw", two(0xf000, 0x2010), two(0xffc0, 0xfff0), "T3&s" },
{"ploadw", two(0xf000, 0x2008), two(0xffc0, 0xfff8), "D3&s" },
{"ploadw", two(0xf000, 0x2000), two(0xffc0, 0xfffe), "f3&s" },
-
+
/* TC, CRP, DRP, SRP, CAL, VAL, SCC, AC */
{"pmove", two(0xf000, 0x4000), two(0xffc0, 0xe3ff), "*sP8" },
{"pmove", two(0xf000, 0x4200), two(0xffc0, 0xe3ff), "P8%s" },
{"pmove", two(0xf000, 0x4000), two(0xffc0, 0xe3ff), "|sW8" },
{"pmove", two(0xf000, 0x4200), two(0xffc0, 0xe3ff), "W8~s" },
-
+
/* BADx, BACx */
{"pmove", two(0xf000, 0x6200), two(0xffc0, 0xe3e3), "*sX3" },
{"pmove", two(0xf000, 0x6000), two(0xffc0, 0xe3e3), "X3%s" },
-
+
/* PSR, PCSR */
/* {"pmove", two(0xf000, 0x6100), two(oxffc0, oxffff), "*sZ8" }, */
{"pmove", two(0xf000, 0x6000), two(0xffc0, 0xffff), "*sY8" },
{"pmove", two(0xf000, 0x6200), two(0xffc0, 0xffff), "Y8%s" },
{"pmove", two(0xf000, 0x6600), two(0xffc0, 0xffff), "Z8%s" },
-
+
{"prestore", one(0xf140), one(0xffc0), "&s"},
{"prestore", one(0xf158), one(0xfff8), "+s"},
{"psave", one(0xf100), one(0xffc0), "&s"},
{"psave", one(0xf100), one(0xffc0), "+s"},
-
+
{"psac", two(0xf040, 0x0007), two(0xffc0, 0xffff), "@s"},
{"psas", two(0xf040, 0x0006), two(0xffc0, 0xffff), "@s"},
{"psbc", two(0xf040, 0x0001), two(0xffc0, 0xffff), "@s"},
@@ -217,88 +217,86 @@
{"psss", two(0xf040, 0x0004), two(0xffc0, 0xffff), "@s"},
{"pswc", two(0xf040, 0x0009), two(0xffc0, 0xffff), "@s"},
{"psws", two(0xf040, 0x0008), two(0xffc0, 0xffff), "@s"},
-
+
{"ptestr", two(0xf000, 0x8210), two(0xffc0, 0xe3f0), "T3&sQ8" },
{"ptestr", two(0xf000, 0x8310), two(0xffc0, 0xe310), "T3&sQ8A9" },
{"ptestr", two(0xf000, 0x8208), two(0xffc0, 0xe3f8), "D3&sQ8" },
{"ptestr", two(0xf000, 0x8308), two(0xffc0, 0xe318), "D3&sQ8A9" },
{"ptestr", two(0xf000, 0x8200), two(0xffc0, 0xe3fe), "f3&sQ8" },
{"ptestr", two(0xf000, 0x8300), two(0xffc0, 0xe31e), "f3&sQ8A9" },
-
+
{"ptestw", two(0xf000, 0x8010), two(0xffc0, 0xe3f0), "T3&sQ8" },
{"ptestw", two(0xf000, 0x8110), two(0xffc0, 0xe310), "T3&sQ8A9" },
{"ptestw", two(0xf000, 0x8008), two(0xffc0, 0xe3f8), "D3&sQ8" },
{"ptestw", two(0xf000, 0x8108), two(0xffc0, 0xe318), "D3&sQ8A9" },
{"ptestw", two(0xf000, 0x8000), two(0xffc0, 0xe3fe), "f3&sQ8" },
{"ptestw", two(0xf000, 0x8100), two(0xffc0, 0xe31e), "f3&sQ8A9" },
-
+
{"ptrapacw", two(0xf07a, 0x0007), two(0xffff, 0xffff), "#w"},
{"ptrapacl", two(0xf07b, 0x0007), two(0xffff, 0xffff), "#l"},
{"ptrapac", two(0xf07c, 0x0007), two(0xffff, 0xffff), ""},
-
+
{"ptrapasw", two(0xf07a, 0x0006), two(0xffff, 0xffff), "#w"},
{"ptrapasl", two(0xf07b, 0x0006), two(0xffff, 0xffff), "#l"},
{"ptrapas", two(0xf07c, 0x0006), two(0xffff, 0xffff), ""},
-
+
{"ptrapbcw", two(0xf07a, 0x0001), two(0xffff, 0xffff), "#w"},
{"ptrapbcl", two(0xf07b, 0x0001), two(0xffff, 0xffff), "#l"},
{"ptrapbc", two(0xf07c, 0x0001), two(0xffff, 0xffff), ""},
-
+
{"ptrapbsw", two(0xf07a, 0x0000), two(0xffff, 0xffff), "#w"},
{"ptrapbsl", two(0xf07b, 0x0000), two(0xffff, 0xffff), "#l"},
{"ptrapbs", two(0xf07c, 0x0000), two(0xffff, 0xffff), ""},
-
+
{"ptrapccw", two(0xf07a, 0x000f), two(0xffff, 0xffff), "#w"},
{"ptrapccl", two(0xf07b, 0x000f), two(0xffff, 0xffff), "#l"},
{"ptrapcc", two(0xf07c, 0x000f), two(0xffff, 0xffff), ""},
-
+
{"ptrapcsw", two(0xf07a, 0x000e), two(0xffff, 0xffff), "#w"},
{"ptrapcsl", two(0xf07b, 0x000e), two(0xffff, 0xffff), "#l"},
{"ptrapcs", two(0xf07c, 0x000e), two(0xffff, 0xffff), ""},
-
+
{"ptrapgcw", two(0xf07a, 0x000d), two(0xffff, 0xffff), "#w"},
{"ptrapgcl", two(0xf07b, 0x000d), two(0xffff, 0xffff), "#l"},
{"ptrapgc", two(0xf07c, 0x000d), two(0xffff, 0xffff), ""},
-
+
{"ptrapgsw", two(0xf07a, 0x000c), two(0xffff, 0xffff), "#w"},
{"ptrapgsl", two(0xf07b, 0x000c), two(0xffff, 0xffff), "#l"},
{"ptrapgs", two(0xf07c, 0x000c), two(0xffff, 0xffff), ""},
-
+
{"ptrapicw", two(0xf07a, 0x000b), two(0xffff, 0xffff), "#w"},
{"ptrapicl", two(0xf07b, 0x000b), two(0xffff, 0xffff), "#l"},
{"ptrapic", two(0xf07c, 0x000b), two(0xffff, 0xffff), ""},
-
+
{"ptrapisw", two(0xf07a, 0x000a), two(0xffff, 0xffff), "#w"},
{"ptrapisl", two(0xf07b, 0x000a), two(0xffff, 0xffff), "#l"},
{"ptrapis", two(0xf07c, 0x000a), two(0xffff, 0xffff), ""},
-
+
{"ptraplcw", two(0xf07a, 0x0003), two(0xffff, 0xffff), "#w"},
{"ptraplcl", two(0xf07b, 0x0003), two(0xffff, 0xffff), "#l"},
{"ptraplc", two(0xf07c, 0x0003), two(0xffff, 0xffff), ""},
-
+
{"ptraplsw", two(0xf07a, 0x0002), two(0xffff, 0xffff), "#w"},
{"ptraplsl", two(0xf07b, 0x0002), two(0xffff, 0xffff), "#l"},
{"ptrapls", two(0xf07c, 0x0002), two(0xffff, 0xffff), ""},
-
+
{"ptrapscw", two(0xf07a, 0x0005), two(0xffff, 0xffff), "#w"},
{"ptrapscl", two(0xf07b, 0x0005), two(0xffff, 0xffff), "#l"},
{"ptrapsc", two(0xf07c, 0x0005), two(0xffff, 0xffff), ""},
-
+
{"ptrapssw", two(0xf07a, 0x0004), two(0xffff, 0xffff), "#w"},
{"ptrapssl", two(0xf07b, 0x0004), two(0xffff, 0xffff), "#l"},
{"ptrapss", two(0xf07c, 0x0004), two(0xffff, 0xffff), ""},
-
+
{"ptrapwcw", two(0xf07a, 0x0009), two(0xffff, 0xffff), "#w"},
{"ptrapwcl", two(0xf07b, 0x0009), two(0xffff, 0xffff), "#l"},
{"ptrapwc", two(0xf07c, 0x0009), two(0xffff, 0xffff), ""},
-
+
{"ptrapwsw", two(0xf07a, 0x0008), two(0xffff, 0xffff), "#w"},
{"ptrapwsl", two(0xf07b, 0x0008), two(0xffff, 0xffff), "#l"},
{"ptrapws", two(0xf07c, 0x0008), two(0xffff, 0xffff), ""},
-
+
{"pvalid", two(0xf000, 0x2800), two(0xffc0, 0xffff), "Vs&s"},
{"pvalid", two(0xf000, 0x2c00), two(0xffc0, 0xfff8), "A3&s" },
-
-#endif /* m68851 */
-/* end of tc-m68851.h */
+#endif /* m68851 */
diff --git a/contrib/binutils/gas/config/tc-ppc.c b/contrib/binutils/gas/config/tc-ppc.c
index 365a535..2b826cb 100644
--- a/contrib/binutils/gas/config/tc-ppc.c
+++ b/contrib/binutils/gas/config/tc-ppc.c
@@ -1,5 +1,5 @@
/* tc-ppc.c -- Assemble for the PowerPC or POWER (RS/6000)
- Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000
+ Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000
Free Software Foundation, Inc.
Written by Ian Lance Taylor, Cygnus Support.
@@ -18,7 +18,7 @@
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. */
+ 02111-1307, USA. */
#include <stdio.h>
#include <ctype.h>
@@ -29,6 +29,7 @@
#ifdef OBJ_ELF
#include "elf/ppc.h"
+#include "dwarf2dbg.h"
#endif
#ifdef TE_PE
@@ -86,6 +87,7 @@ static void ppc_stabx PARAMS ((int));
static void ppc_rename PARAMS ((int));
static void ppc_toc PARAMS ((int));
static void ppc_xcoff_cons PARAMS ((int));
+static void ppc_machine PARAMS ((int));
static void ppc_vbyte PARAMS ((int));
#endif
@@ -182,9 +184,11 @@ const pseudo_typeS md_pseudo_table[] =
{ "text", ppc_section, 't' },
{ "toc", ppc_toc, 0 },
{ "long", ppc_xcoff_cons, 2 },
+ { "llong", ppc_xcoff_cons, 3 },
{ "word", ppc_xcoff_cons, 1 },
{ "short", ppc_xcoff_cons, 1 },
{ "vbyte", ppc_vbyte, 0 },
+ { "machine", ppc_machine, 0 },
#endif
#ifdef OBJ_ELF
@@ -194,6 +198,8 @@ const pseudo_typeS md_pseudo_table[] =
{ "rdata", ppc_elf_rdata, 0 },
{ "rodata", ppc_elf_rdata, 0 },
{ "lcomm", ppc_elf_lcomm, 0 },
+ { "file", dwarf2_directive_file, 0 },
+ { "loc", dwarf2_directive_loc, 0 },
#endif
#ifdef TE_PE
@@ -236,11 +242,14 @@ struct pd_reg
1. r<reg_num> which has the value <reg_num>.
2. r.<reg_num> which has the value <reg_num>.
-
Each floating point register has predefined names of the form:
1. f<reg_num> which has the value <reg_num>.
2. f.<reg_num> which has the value <reg_num>.
+ Each vector unit register has predefined names of the form:
+ 1. v<reg_num> which has the value <reg_num>.
+ 2. v.<reg_num> which has the value <reg_num>.
+
Each condition register has predefined names of the form:
1. cr<reg_num> which has the value <reg_num>.
2. cr.<reg_num> which has the value <reg_num>.
@@ -260,7 +269,7 @@ struct pd_reg
srr0 has the value 26
srr1 has the value 27
- The table is sorted. Suitable for searching by a binary search. */
+ The table is sorted. Suitable for searching by a binary search. */
static const struct pd_reg pre_defined_registers[] =
{
@@ -289,70 +298,70 @@ static const struct pd_reg pre_defined_registers[] =
{ "dsisr", 18 }, /* Data Storage Interrupt Status Register */
{ "f.0", 0 }, /* Floating point registers */
- { "f.1", 1 },
- { "f.10", 10 },
- { "f.11", 11 },
- { "f.12", 12 },
- { "f.13", 13 },
- { "f.14", 14 },
- { "f.15", 15 },
- { "f.16", 16 },
- { "f.17", 17 },
- { "f.18", 18 },
- { "f.19", 19 },
- { "f.2", 2 },
- { "f.20", 20 },
- { "f.21", 21 },
- { "f.22", 22 },
- { "f.23", 23 },
- { "f.24", 24 },
- { "f.25", 25 },
- { "f.26", 26 },
- { "f.27", 27 },
- { "f.28", 28 },
- { "f.29", 29 },
- { "f.3", 3 },
+ { "f.1", 1 },
+ { "f.10", 10 },
+ { "f.11", 11 },
+ { "f.12", 12 },
+ { "f.13", 13 },
+ { "f.14", 14 },
+ { "f.15", 15 },
+ { "f.16", 16 },
+ { "f.17", 17 },
+ { "f.18", 18 },
+ { "f.19", 19 },
+ { "f.2", 2 },
+ { "f.20", 20 },
+ { "f.21", 21 },
+ { "f.22", 22 },
+ { "f.23", 23 },
+ { "f.24", 24 },
+ { "f.25", 25 },
+ { "f.26", 26 },
+ { "f.27", 27 },
+ { "f.28", 28 },
+ { "f.29", 29 },
+ { "f.3", 3 },
{ "f.30", 30 },
{ "f.31", 31 },
- { "f.4", 4 },
- { "f.5", 5 },
- { "f.6", 6 },
- { "f.7", 7 },
- { "f.8", 8 },
- { "f.9", 9 },
-
- { "f0", 0 },
- { "f1", 1 },
- { "f10", 10 },
- { "f11", 11 },
- { "f12", 12 },
- { "f13", 13 },
- { "f14", 14 },
- { "f15", 15 },
- { "f16", 16 },
- { "f17", 17 },
- { "f18", 18 },
- { "f19", 19 },
- { "f2", 2 },
- { "f20", 20 },
- { "f21", 21 },
- { "f22", 22 },
- { "f23", 23 },
- { "f24", 24 },
- { "f25", 25 },
- { "f26", 26 },
- { "f27", 27 },
- { "f28", 28 },
- { "f29", 29 },
- { "f3", 3 },
+ { "f.4", 4 },
+ { "f.5", 5 },
+ { "f.6", 6 },
+ { "f.7", 7 },
+ { "f.8", 8 },
+ { "f.9", 9 },
+
+ { "f0", 0 },
+ { "f1", 1 },
+ { "f10", 10 },
+ { "f11", 11 },
+ { "f12", 12 },
+ { "f13", 13 },
+ { "f14", 14 },
+ { "f15", 15 },
+ { "f16", 16 },
+ { "f17", 17 },
+ { "f18", 18 },
+ { "f19", 19 },
+ { "f2", 2 },
+ { "f20", 20 },
+ { "f21", 21 },
+ { "f22", 22 },
+ { "f23", 23 },
+ { "f24", 24 },
+ { "f25", 25 },
+ { "f26", 26 },
+ { "f27", 27 },
+ { "f28", 28 },
+ { "f29", 29 },
+ { "f3", 3 },
{ "f30", 30 },
{ "f31", 31 },
- { "f4", 4 },
- { "f5", 5 },
- { "f6", 6 },
- { "f7", 7 },
- { "f8", 8 },
- { "f9", 9 },
+ { "f4", 4 },
+ { "f5", 5 },
+ { "f6", 6 },
+ { "f7", 7 },
+ { "f8", 8 },
+ { "f9", 9 },
{ "fpscr", 0 },
@@ -439,11 +448,77 @@ static const struct pd_reg pre_defined_registers[] =
{ "srr0", 26 }, /* Machine Status Save/Restore Register 0 */
{ "srr1", 27 }, /* Machine Status Save/Restore Register 1 */
+ { "v.0", 0 }, /* Vector registers */
+ { "v.1", 1 },
+ { "v.10", 10 },
+ { "v.11", 11 },
+ { "v.12", 12 },
+ { "v.13", 13 },
+ { "v.14", 14 },
+ { "v.15", 15 },
+ { "v.16", 16 },
+ { "v.17", 17 },
+ { "v.18", 18 },
+ { "v.19", 19 },
+ { "v.2", 2 },
+ { "v.20", 20 },
+ { "v.21", 21 },
+ { "v.22", 22 },
+ { "v.23", 23 },
+ { "v.24", 24 },
+ { "v.25", 25 },
+ { "v.26", 26 },
+ { "v.27", 27 },
+ { "v.28", 28 },
+ { "v.29", 29 },
+ { "v.3", 3 },
+ { "v.30", 30 },
+ { "v.31", 31 },
+ { "v.4", 4 },
+ { "v.5", 5 },
+ { "v.6", 6 },
+ { "v.7", 7 },
+ { "v.8", 8 },
+ { "v.9", 9 },
+
+ { "v0", 0 },
+ { "v1", 1 },
+ { "v10", 10 },
+ { "v11", 11 },
+ { "v12", 12 },
+ { "v13", 13 },
+ { "v14", 14 },
+ { "v15", 15 },
+ { "v16", 16 },
+ { "v17", 17 },
+ { "v18", 18 },
+ { "v19", 19 },
+ { "v2", 2 },
+ { "v20", 20 },
+ { "v21", 21 },
+ { "v22", 22 },
+ { "v23", 23 },
+ { "v24", 24 },
+ { "v25", 25 },
+ { "v26", 26 },
+ { "v27", 27 },
+ { "v28", 28 },
+ { "v29", 29 },
+ { "v3", 3 },
+ { "v30", 30 },
+ { "v31", 31 },
+ { "v4", 4 },
+ { "v5", 5 },
+ { "v6", 6 },
+ { "v7", 7 },
+ { "v8", 8 },
+ { "v9", 9 },
+
{ "xer", 1 },
};
-#define REG_NAME_CNT (sizeof(pre_defined_registers) / sizeof(struct pd_reg))
+#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. */
@@ -512,11 +587,11 @@ register_name (expressionP)
reg_number = reg_name_search (pre_defined_registers, REG_NAME_CNT, name);
/* look to see if it's in the register table */
- if (reg_number >= 0)
+ if (reg_number >= 0)
{
expressionP->X_op = O_register;
expressionP->X_add_number = reg_number;
-
+
/* make the rest nice */
expressionP->X_add_symbol = NULL;
expressionP->X_op_symbol = NULL;
@@ -591,6 +666,9 @@ static int ppc_cpu = 0;
PPC_OPCODE_32 or PPC_OPCODE_64. */
static unsigned long ppc_size = PPC_OPCODE_32;
+/* Whether to target xcoff64 */
+static int ppc_xcoff64 = 0;
+
/* Opcode hash table. */
static struct hash_control *ppc_hash;
@@ -599,7 +677,7 @@ static struct hash_control *ppc_macro_hash;
#ifdef OBJ_ELF
/* What type of shared library support to use */
-static enum { SHLIB_NONE, SHLIB_PIC, SHILB_MRELOCATABLE } shlib = SHLIB_NONE;
+static enum { SHLIB_NONE, SHLIB_PIC, SHLIB_MRELOCATABLE } shlib = SHLIB_NONE;
/* Flags to set in the elf header */
static flagword ppc_flags = 0;
@@ -670,7 +748,7 @@ static segT reldata_section;
static segT rdata_section;
static segT tocdata_section;
-/* The current section and the previous section. See ppc_previous. */
+/* The current section and the previous section. See ppc_previous. */
static segT ppc_previous_section;
static segT ppc_current_section;
@@ -688,7 +766,7 @@ CONST char *md_shortopts = "um:";
struct option md_longopts[] = {
{NULL, no_argument, NULL, 0}
};
-size_t md_longopts_size = sizeof(md_longopts);
+size_t md_longopts_size = sizeof (md_longopts);
int
md_parse_option (c, arg)
@@ -740,6 +818,16 @@ md_parse_option (c, arg)
break;
#endif
+ /* a64 and a32 determine whether to use XCOFF64 or XCOFF32. */
+ case 'a':
+ if (strcmp (arg, "64") == 0)
+ ppc_xcoff64 = 1;
+ else if (strcmp (arg, "32") == 0)
+ ppc_xcoff64 = 0;
+ else
+ return 0;
+ break;
+
case 'm':
/* -mpwrx and -mpwr2 mean to assemble for the IBM POWER/2
(RIOS2). */
@@ -749,7 +837,7 @@ md_parse_option (c, arg)
else if (strcmp (arg, "pwr") == 0)
ppc_cpu = PPC_OPCODE_POWER;
/* -m601 means to assemble for the Motorola PowerPC 601, which includes
- instructions that are holdovers from the Power. */
+ instructions that are holdovers from the Power. */
else if (strcmp (arg, "601") == 0)
ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_601;
/* -mppc, -mppc32, -m603, and -m604 mean to assemble for the
@@ -757,9 +845,12 @@ md_parse_option (c, arg)
else if (strcmp (arg, "ppc") == 0
|| strcmp (arg, "ppc32") == 0
|| strcmp (arg, "403") == 0
+ || strcmp (arg, "405") == 0
|| strcmp (arg, "603") == 0
|| strcmp (arg, "604") == 0)
ppc_cpu = PPC_OPCODE_PPC;
+ else if (strcmp (arg, "7400") == 0)
+ ppc_cpu = PPC_OPCODE_PPC | PPC_OPCODE_ALTIVEC;
/* -mppc64 and -m620 mean to assemble for the 64-bit PowerPC
620. */
else if (strcmp (arg, "ppc64") == 0 || strcmp (arg, "620") == 0)
@@ -791,13 +882,13 @@ md_parse_option (c, arg)
/* -mrelocatable/-mrelocatable-lib -- warn about initializations that require relocation */
else if (strcmp (arg, "relocatable") == 0)
{
- shlib = SHILB_MRELOCATABLE;
+ shlib = SHLIB_MRELOCATABLE;
ppc_flags |= EF_PPC_RELOCATABLE;
}
else if (strcmp (arg, "relocatable-lib") == 0)
{
- shlib = SHILB_MRELOCATABLE;
+ shlib = SHLIB_MRELOCATABLE;
ppc_flags |= EF_PPC_RELOCATABLE_LIB;
}
@@ -869,13 +960,13 @@ void
md_show_usage (stream)
FILE *stream;
{
- fprintf(stream, _("\
+ fprintf (stream, _("\
PowerPC options:\n\
-u ignored\n\
-mpwrx, -mpwr2 generate code for IBM POWER/2 (RIOS2)\n\
-mpwr generate code for IBM POWER (RIOS1)\n\
-m601 generate code for Motorola PowerPC 601\n\
--mppc, -mppc32, -m403, -m603, -m604\n\
+-mppc, -mppc32, -m403, -m405, -m603, -m604\n\
generate code for Motorola PowerPC 603/604\n\
-mppc64, -m620 generate code for Motorola PowerPC 620\n\
-mppc64bridge generate code for PowerPC 64, including bridge insns\n\
@@ -884,7 +975,7 @@ PowerPC options:\n\
-mregnames Allow symbolic names for registers\n\
-mno-regnames Do not allow symbolic names for registers\n"));
#ifdef OBJ_ELF
- fprintf(stream, _("\
+ fprintf (stream, _("\
-mrelocatable support for GCC's -mrelocatble option\n\
-mrelocatable-lib support for GCC's -mrelocatble-lib option\n\
-memb set PPC_EMB bit in ELF flags\n\
@@ -948,6 +1039,37 @@ ppc_arch ()
return bfd_arch_unknown;
}
+unsigned long
+ppc_mach ()
+{
+ return (ppc_size == PPC_OPCODE_64) ? 620 : 0;
+}
+
+int
+ppc_subseg_align()
+{
+ return (ppc_xcoff64) ? 3 : 2;
+}
+
+extern char*
+ppc_target_format()
+{
+#ifdef OBJ_COFF
+#ifdef TE_PE
+ return (target_big_endian ? "pe-powerpc" : "pe-powerpcle");
+#elif TE_POWERMAC
+#else
+ return (ppc_xcoff64 ? "aixcoff64-rs6000" : "aixcoff-rs6000");
+#endif
+#ifdef TE_POWERMAC
+ return "xcoff-powermac";
+#endif
+#endif
+#ifdef OBJ_ELF
+ return (target_big_endian ? "elf32-powerpc" : "elf32-powerpcle");
+#endif
+}
+
/* This function is called when the assembler starts up. It is called
after the options have been parsed and the output file has been
opened. */
@@ -964,7 +1086,7 @@ md_begin ()
ppc_set_cpu ();
#ifdef OBJ_ELF
- /* Set the ELF flags if desired. */
+ /* Set the ELF flags if desired. */
if (ppc_flags && !msolaris)
bfd_set_private_flags (stdoutput, ppc_flags);
#endif
@@ -1042,7 +1164,7 @@ md_begin ()
#ifdef TE_PE
ppc_current_section = text_section;
- ppc_previous_section = 0;
+ ppc_previous_section = 0;
#endif
}
@@ -1147,7 +1269,7 @@ ppc_elf_suffix (str_p, exp_p)
int len;
struct map_bfd *ptr;
-#define MAP(str,reloc) { str, sizeof(str)-1, reloc }
+#define MAP(str,reloc) { str, sizeof (str)-1, reloc }
static struct map_bfd mapping[] = {
MAP ("l", BFD_RELOC_LO16),
@@ -1248,9 +1370,9 @@ ppc_elf_suffix (str_p, exp_p)
return BFD_RELOC_UNUSED;
}
-/* Like normal .long/.short/.word, except support @got, etc. */
+/* Like normal .long/.short/.word, except support @got, etc. */
/* clobbers input_line_pointer, checks */
-/* end-of-line. */
+/* end-of-line. */
static void
ppc_elf_cons (nbytes)
register int nbytes; /* 1=.byte, 2=.word, 4=.long */
@@ -1290,7 +1412,7 @@ ppc_elf_cons (nbytes)
}
while (*input_line_pointer++ == ',');
- input_line_pointer--; /* Put terminator back into stream. */
+ input_line_pointer--; /* Put terminator back into stream. */
demand_empty_rest_of_line ();
}
@@ -1434,7 +1556,7 @@ ppc_elf_validate_fix (fixp, seg)
case SHLIB_PIC:
return;
- case SHILB_MRELOCATABLE:
+ case SHLIB_MRELOCATABLE:
if (fixp->fx_r_type <= BFD_RELOC_UNUSED
&& fixp->fx_r_type != BFD_RELOC_16_GOTOFF
&& fixp->fx_r_type != BFD_RELOC_HI16_GOTOFF
@@ -1476,7 +1598,7 @@ ppc_elf_validate_fix (fixp, seg)
*
* Anything else is an error of one kind or another.
*
- * out:
+ * out:
* return value: success or failure
* toc_kind: kind of toc reference
* input_line_pointer:
@@ -1492,8 +1614,8 @@ ppc_elf_validate_fix (fixp, seg)
*
*/
-enum toc_size_qualifier
-{
+enum toc_size_qualifier
+{
default_toc, /* The toc cell constructed should be the system default size */
data_in_toc, /* This is a direct reference to a toc cell */
must_be_32, /* The toc cell constructed must be 32 bits wide */
@@ -1515,24 +1637,24 @@ parse_toc_entry(toc_kind)
/* skip over the '[' , and whitespace */
++input_line_pointer;
SKIP_WHITESPACE ();
-
+
/* find the spelling of the operand */
toc_spec = input_line_pointer;
c = get_symbol_end ();
- if (strcmp(toc_spec, "toc") == 0)
+ if (strcmp(toc_spec, "toc") == 0)
{
t = default_toc;
}
- else if (strcmp(toc_spec, "tocv") == 0)
+ else if (strcmp(toc_spec, "tocv") == 0)
{
t = data_in_toc;
}
- else if (strcmp(toc_spec, "toc32") == 0)
+ else if (strcmp(toc_spec, "toc32") == 0)
{
t = must_be_32;
}
- else if (strcmp(toc_spec, "toc64") == 0)
+ else if (strcmp(toc_spec, "toc64") == 0)
{
t = must_be_64;
}
@@ -1547,8 +1669,8 @@ parse_toc_entry(toc_kind)
/* now find the ']' */
*input_line_pointer = c; /* put back the delimiting char */
- SKIP_WHITESPACE (); /* leading whitespace could be there. */
- c = *input_line_pointer++; /* input_line_pointer->past char in c. */
+ SKIP_WHITESPACE (); /* leading whitespace could be there. */
+ c = *input_line_pointer++; /* input_line_pointer->past char in c. */
if (c != ']')
{
@@ -1721,13 +1843,13 @@ md_assemble (str)
input_line_pointer = str;
#ifdef TE_PE
- if (*input_line_pointer == '[')
+ if (*input_line_pointer == '[')
{
/* We are expecting something like the second argument here:
lwz r4,[toc].GS.0.static_int(rtoc)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
- The argument following the `]' must be a symbol name, and the
+ The argument following the `]' must be a symbol name, and the
register must be the toc register: 'rtoc' or '2'
The effect is to 0 as the displacement field
@@ -1755,7 +1877,7 @@ md_assemble (str)
/* go parse off the [tocXX] part */
valid_toc = parse_toc_entry(&toc_kind);
- if (!valid_toc)
+ if (!valid_toc)
{
/* Note: message has already been issued. */
/* FIXME: what sort of recovery should we do? */
@@ -1781,8 +1903,8 @@ md_assemble (str)
/* FIXME: It's a little confusing what the tocv qualifier can */
/* be used for. At the very least, I've seen three */
/* uses, only one of which I'm sure I can explain. */
- if (ex.X_op == O_symbol)
- {
+ if (ex.X_op == O_symbol)
+ {
assert (ex.X_add_symbol != NULL);
if (symbol_get_bfdsym (ex.X_add_symbol)->section
!= tocdata_section)
@@ -1806,10 +1928,10 @@ md_assemble (str)
as_bad (_("Unimplemented toc64 expression modifier"));
break;
default:
- fprintf(stderr,
+ fprintf (stderr,
_("Unexpected return value [%d] from parse_toc_entry!\n"),
toc_kind);
- abort();
+ abort ();
break;
}
@@ -1858,7 +1980,7 @@ md_assemble (str)
else if (ex.X_op == O_constant)
{
#ifdef OBJ_ELF
- /* Allow @HA, @L, @H on constants. */
+ /* Allow @HA, @L, @H on constants. */
char *orig_str = str;
if ((reloc = ppc_elf_suffix (&str, &ex)) != BFD_RELOC_UNUSED)
@@ -1978,6 +2100,10 @@ md_assemble (str)
f = frag_more (4);
md_number_to_chars (f, insn, 4);
+#ifdef OBJ_ELF
+ dwarf2_emit_insn (4);
+#endif
+
/* Create any fixups. At this point we do not use a
bfd_reloc_code_real_type, but instead just use the
BFD_RELOC_UNUSED plus the operand index. This lets us easily
@@ -2003,7 +2129,7 @@ md_assemble (str)
offset = target_big_endian ? (4 - size) : 0;
if (size < 1 || size > 4)
- abort();
+ abort ();
fixP = fix_new_exp (frag_now, f - frag_now->fr_literal + offset, size,
&fixups[i].exp, reloc_howto->pc_relative,
@@ -2064,7 +2190,7 @@ ppc_macro (str, macro)
if (s == (char *) NULL)
break;
*s++ = '\0';
- }
+ }
if (count != macro->operands)
{
@@ -2111,7 +2237,7 @@ ppc_macro (str, macro)
/* Assemble the constructed instruction. */
md_assemble (complete);
-}
+}
#ifdef OBJ_ELF
/* For ELF, add support for SHF_EXCLUDE and SHT_ORDERED */
@@ -2296,7 +2422,7 @@ ppc_comm (lcomm)
lcomm_name = input_line_pointer;
lcomm_endc = get_symbol_end ();
-
+
lcomm_sym = symbol_find_or_make (lcomm_name);
*input_line_pointer = lcomm_endc;
@@ -2313,9 +2439,9 @@ ppc_comm (lcomm)
ignore_rest_of_line ();
return;
}
-
+
record_alignment (bss_section, align);
-
+
if (! lcomm
|| ! S_IS_DEFINED (lcomm_sym))
{
@@ -2337,7 +2463,7 @@ ppc_comm (lcomm)
subseg_set (bss_section, 1);
frag_align (align, 0, 0);
-
+
symbol_set_frag (def_sym, frag_now);
pfrag = frag_var (rs_org, 1, 1, (relax_substateT) 0, def_sym,
def_size, (char *) NULL);
@@ -2377,7 +2503,7 @@ ppc_comm (lcomm)
static void
ppc_csect (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
char endc;
@@ -2385,7 +2511,7 @@ ppc_csect (ignore)
name = input_line_pointer;
endc = get_symbol_end ();
-
+
sym = symbol_find_or_make (name);
*input_line_pointer = endc;
@@ -2478,16 +2604,16 @@ ppc_change_csect (sym)
symbol_set_frag (sym, frag_now);
S_SET_VALUE (sym, (valueT) frag_now_fix ());
- symbol_get_tc (sym)->align = 2;
+ symbol_get_tc (sym)->align = (ppc_xcoff64) ? 3 : 2;
symbol_get_tc (sym)->output = 1;
symbol_get_tc (sym)->within = sym;
-
+
for (list = *list_ptr;
symbol_get_tc (list)->next != (symbolS *) NULL;
list = symbol_get_tc (list)->next)
;
symbol_get_tc (list)->next = sym;
-
+
symbol_remove (sym, &symbol_rootP, &symbol_lastP);
symbol_append (sym, symbol_get_tc (list)->within, &symbol_rootP,
&symbol_lastP);
@@ -2527,7 +2653,7 @@ ppc_section (type)
static void
ppc_named_section (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *user_name;
const char *real_name;
@@ -2562,7 +2688,7 @@ ppc_named_section (ignore)
static void
ppc_extern (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
char endc;
@@ -2581,7 +2707,7 @@ ppc_extern (ignore)
static void
ppc_lglobl (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
char endc;
@@ -2604,7 +2730,7 @@ ppc_lglobl (ignore)
static void
ppc_rename (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
char endc;
@@ -2640,7 +2766,7 @@ ppc_rename (ignore)
static void
ppc_stabx (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
int len;
@@ -2747,7 +2873,7 @@ ppc_stabx (ignore)
static void
ppc_function (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
char endc;
@@ -2838,7 +2964,7 @@ ppc_function (ignore)
static void
ppc_bf (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
symbolS *sym;
@@ -2866,7 +2992,7 @@ ppc_bf (ignore)
static void
ppc_ef (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
symbolS *sym;
@@ -2915,7 +3041,7 @@ ppc_biei (ei)
S_SET_STORAGE_CLASS (sym, ei ? C_EINCL : C_BINCL);
symbol_get_tc (sym)->output = 1;
-
+
for (look = last_biei ? last_biei : symbol_rootP;
(look != (symbolS *) NULL
&& (S_GET_STORAGE_CLASS (look) == C_FILE
@@ -2939,7 +3065,7 @@ ppc_biei (ei)
static void
ppc_bs (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
char endc;
@@ -2975,7 +3101,7 @@ ppc_bs (ignore)
static void
ppc_es (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
symbolS *sym;
@@ -3000,7 +3126,7 @@ ppc_es (ignore)
static void
ppc_bb (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
symbolS *sym;
@@ -3027,7 +3153,7 @@ ppc_bb (ignore)
static void
ppc_eb (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
symbolS *sym;
@@ -3052,7 +3178,7 @@ ppc_eb (ignore)
static void
ppc_bc (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
int len;
@@ -3075,7 +3201,7 @@ ppc_bc (ignore)
static void
ppc_ec (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
symbolS *sym;
@@ -3095,7 +3221,7 @@ ppc_ec (ignore)
static void
ppc_toc (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
if (ppc_toc_csect != (symbolS *) NULL)
subseg_set (data_section, symbol_get_tc (ppc_toc_csect)->subseg);
@@ -3104,7 +3230,7 @@ ppc_toc (ignore)
subsegT subseg;
symbolS *sym;
symbolS *list;
-
+
subseg = ppc_data_subsegment;
++ppc_data_subsegment;
@@ -3120,7 +3246,7 @@ ppc_toc (ignore)
symbol_get_tc (sym)->within = sym;
ppc_toc_csect = sym;
-
+
for (list = ppc_data_csects;
symbol_get_tc (list)->next != (symbolS *) NULL;
list = symbol_get_tc (list)->next)
@@ -3150,8 +3276,16 @@ ppc_xcoff_cons (log_size)
}
static void
+ppc_machine(dummy)
+ int dummy ATTRIBUTE_UNUSED;
+{
+ discard_rest_of_line();
+ /* What does aix use this for? */
+}
+
+static void
ppc_vbyte (dummy)
- int dummy;
+ int dummy ATTRIBUTE_UNUSED;
{
expressionS exp;
int byte_count;
@@ -3269,7 +3403,7 @@ ppc_tc (ignore)
else
{
++input_line_pointer;
- cons (4);
+ cons ((ppc_size == PPC_OPCODE_64) ? 8 : 4);
}
}
@@ -3293,11 +3427,11 @@ ppc_set_current_section (new)
*/
static void
ppc_previous(ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
symbolS *tmp;
- if (ppc_previous_section == NULL)
+ if (ppc_previous_section == NULL)
{
as_warn(_("No previous section to return to. Directive ignored."));
return;
@@ -3326,16 +3460,16 @@ ppc_previous(ignore)
*/
static void
ppc_pdata(ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
- if (pdata_section == 0)
+ if (pdata_section == 0)
{
pdata_section = subseg_new (".pdata", 0);
-
+
bfd_set_section_flags (stdoutput, pdata_section,
(SEC_ALLOC | SEC_LOAD | SEC_RELOC
| SEC_READONLY | SEC_DATA ));
-
+
bfd_set_section_alignment (stdoutput, pdata_section, 2);
}
else
@@ -3361,9 +3495,9 @@ ppc_pdata(ignore)
*/
static void
ppc_ydata(ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
- if (ydata_section == 0)
+ if (ydata_section == 0)
{
ydata_section = subseg_new (".ydata", 0);
bfd_set_section_flags (stdoutput, ydata_section,
@@ -3398,14 +3532,14 @@ ppc_ydata(ignore)
*/
static void
ppc_reldata(ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
if (reldata_section == 0)
{
reldata_section = subseg_new (".reldata", 0);
bfd_set_section_flags (stdoutput, reldata_section,
- ( SEC_ALLOC | SEC_LOAD | SEC_RELOC
+ ( SEC_ALLOC | SEC_LOAD | SEC_RELOC
| SEC_DATA ));
bfd_set_section_alignment (stdoutput, reldata_section, 2);
@@ -3429,7 +3563,7 @@ ppc_reldata(ignore)
*/
static void
ppc_rdata(ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
if (rdata_section == 0)
{
@@ -3448,7 +3582,7 @@ ppc_rdata(ignore)
}
/* pseudo-op: .ualong
- behaviour: much like .int, with the exception that no alignment is
+ behaviour: much like .int, with the exception that no alignment is
performed.
FIXME: test the alignment statement
errors: None
@@ -3456,7 +3590,7 @@ ppc_rdata(ignore)
*/
static void
ppc_ualong(ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
/* try for long */
cons ( 4 );
@@ -3471,7 +3605,7 @@ ppc_ualong(ignore)
*/
static void
ppc_znop(ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
unsigned long insn;
const struct powerpc_opcode *opcode;
@@ -3519,10 +3653,10 @@ ppc_znop(ignore)
}
-/* pseudo-op:
- behaviour:
- errors:
- warnings:
+/* pseudo-op:
+ behaviour:
+ errors:
+ warnings:
*/
static void
ppc_pe_comm(lcomm)
@@ -3622,7 +3756,7 @@ ppc_pe_comm(lcomm)
* additions/changes for the moto-pas assembler support. There are three
* categories:
*
- * FIXME: I just noticed this. This doesn't work at all really. It it
+ * FIXME: I just noticed this. This doesn't work at all really. It it
* setting bits that bfd probably neither understands or uses. The
* correct approach (?) will have to incorporate extra fields attached
* to the section to hold the system specific stuff. (krk)
@@ -3655,7 +3789,7 @@ ppc_pe_comm(lcomm)
void
ppc_pe_section (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
/* Strip out the section name */
char *section_name;
@@ -3721,7 +3855,7 @@ ppc_pe_section (ignore)
as_bad (_("Unsupported section attribute -- 'a'"));
break;
case 'c': /* code section */
- flags |= SEC_CODE;
+ flags |= SEC_CODE;
break;
case 'd': /* section has initialized data */
flags |= SEC_DATA;
@@ -3737,7 +3871,7 @@ ppc_pe_section (ignore)
flags |= SEC_HAS_CONTENTS;
break;
case 'n': /* section can be discarded */
- flags &=~ SEC_LOAD;
+ flags &=~ SEC_LOAD;
break;
case 'R': /* Remove section at link time */
flags |= SEC_NEVER_LOAD;
@@ -3817,7 +3951,7 @@ ppc_pe_section (ignore)
static void
ppc_pe_function (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
char endc;
@@ -3840,7 +3974,7 @@ ppc_pe_function (ignore)
static void
ppc_pe_tocd (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
if (tocdata_section == 0)
{
@@ -4245,7 +4379,7 @@ ppc_frob_symbol (sym)
}
a->x_csect.x_smtyp = XTY_LD;
}
-
+
a->x_csect.x_parmhash = 0;
a->x_csect.x_snhash = 0;
if (symbol_get_tc (sym)->class == -1)
@@ -4354,8 +4488,8 @@ ppc_frob_section (sec)
#endif /* OBJ_XCOFF */
/* 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
+ 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 *
@@ -4406,7 +4540,7 @@ md_atof (type, litp, sizep)
litp += 2;
}
}
-
+
return NULL;
}
@@ -4461,7 +4595,6 @@ md_convert_frag (abfd, sec, fragp)
/* We have no need to default values of symbols. */
-/*ARGSUSED*/
symbolS *
md_undefined_symbol (name)
char *name ATTRIBUTE_UNUSED;
@@ -4802,7 +4935,6 @@ md_apply_fix3 (fixp, valuep, seg)
else if ((operand->flags & PPC_OPERAND_PARENS) != 0
&& operand->bits == 16
&& operand->shift == 0
- && operand->insert == NULL
&& fixp->fx_addsy != NULL
&& ppc_is_toc_sym (fixp->fx_addsy))
{
@@ -4849,6 +4981,14 @@ md_apply_fix3 (fixp, valuep, seg)
value, 4);
break;
+ case BFD_RELOC_64:
+ if (fixp->fx_pcrel)
+ fixp->fx_r_type = BFD_RELOC_64_PCREL;
+ /* fall through */
+ case BFD_RELOC_64_PCREL:
+ md_number_to_chars (fixp->fx_frag->fr_literal + fixp->fx_where,
+ value, 8);
+ break;
case BFD_RELOC_LO16:
case BFD_RELOC_16:
case BFD_RELOC_GPREL16:
@@ -4934,7 +5074,7 @@ md_apply_fix3 (fixp, valuep, seg)
{
char *where;
unsigned long insn;
-
+
/* Fetch the instruction, insert the fully resolved operand
value, and stuff the instruction back again. */
where = fixp->fx_frag->fr_literal + fixp->fx_where;
@@ -4971,7 +5111,7 @@ md_apply_fix3 (fixp, valuep, seg)
break;
default:
- fprintf(stderr,
+ fprintf (stderr,
_("Gas failure, reloc value %d\n"), fixp->fx_r_type);
fflush(stderr);
abort ();
diff --git a/contrib/binutils/gas/config/tc-ppc.h b/contrib/binutils/gas/config/tc-ppc.h
index 783a215..f246cd7 100644
--- a/contrib/binutils/gas/config/tc-ppc.h
+++ b/contrib/binutils/gas/config/tc-ppc.h
@@ -18,7 +18,7 @@
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. */
+ 02111-1307, USA. */
#define TC_PPC
@@ -47,31 +47,16 @@ struct fix;
/* The target BFD architecture. */
#define TARGET_ARCH (ppc_arch ())
+#define TARGET_MACH (ppc_mach ())
extern enum bfd_architecture ppc_arch PARAMS ((void));
+extern unsigned long ppc_mach PARAMS ((void));
/* Whether or not the target is big endian */
extern int target_big_endian;
/* The target BFD format. */
-#ifdef OBJ_COFF
-#ifdef TE_PE
-#define TARGET_FORMAT (target_big_endian ? "pe-powerpc" : "pe-powerpcle")
-#else
-#define TARGET_FORMAT "aixcoff-rs6000"
-#endif
-#endif
-
-/* PowerMac has a BFD slightly different from AIX's. */
-#ifdef TE_POWERMAC
-#ifdef TARGET_FORMAT
-#undef TARGET_FORMAT
-#endif
-#define TARGET_FORMAT "xcoff-powermac"
-#endif
-
-#ifdef OBJ_ELF
-#define TARGET_FORMAT (target_big_endian ? "elf32-powerpc" : "elf32-powerpcle")
-#endif
+#define TARGET_FORMAT (ppc_target_format ())
+extern char* ppc_target_format ();
/* Permit temporary numeric labels. */
#define LOCAL_LABELS_FB 1
@@ -186,7 +171,8 @@ extern int ppc_frob_symbol PARAMS ((symbolS *));
extern void ppc_adjust_symtab PARAMS ((void));
/* Niclas Andersson <nican@ida.liu.se> says this is needed. */
-#define SUB_SEGMENT_ALIGN(SEG) 2
+extern int ppc_subseg_align PARAMS ((void));
+#define SUB_SEGMENT_ALIGN(SEG) ppc_subseg_align()
/* We also need to copy, in particular, the class of the symbol,
over what obj-coff would otherwise have copied. */
@@ -200,7 +186,6 @@ do { \
symbol_get_tc (dest)->within = symbol_get_tc (src)->within; \
} while (0)
-
#endif /* OBJ_XCOFF */
#ifdef OBJ_ELF
@@ -246,7 +231,7 @@ extern int ppc_section_flags PARAMS ((int, int, int));
#define tc_comment_chars ppc_comment_chars
extern const char *ppc_comment_chars;
-/* Keep relocations relative to the GOT, or non-PC relative. */
+/* Keep relocations relative to the GOT, or non-PC relative. */
#define tc_fix_adjustable(FIX) \
((FIX)->fx_r_type != BFD_RELOC_16_GOTOFF \
&& (FIX)->fx_r_type != BFD_RELOC_LO16_GOTOFF \
@@ -273,6 +258,7 @@ extern const char *ppc_comment_chars;
&& S_IS_DEFINED ((FIX)->fx_addsy) \
&& ! S_IS_COMMON ((FIX)->fx_addsy)))
+#define DWARF2_LINE_MIN_INSN_LENGTH 4
#endif /* OBJ_ELF */
/* call md_apply_fix3 with segment instead of md_apply_fix */
@@ -286,4 +272,3 @@ extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
extern int ppc_parse_name PARAMS ((const char *, struct expressionS *));
#define md_operand(x)
-
diff --git a/contrib/binutils/gas/config/tc-sparc.c b/contrib/binutils/gas/config/tc-sparc.c
index 149610e..6c9827c 100644
--- a/contrib/binutils/gas/config/tc-sparc.c
+++ b/contrib/binutils/gas/config/tc-sparc.c
@@ -1,5 +1,6 @@
/* tc-sparc.c -- Assemble for the SPARC
- Copyright (C) 1989, 90-96, 97, 98, 99, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1989, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 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
@@ -15,7 +16,7 @@
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. */
+ Boston, MA 02111-1307, USA. */
#include <stdio.h>
#include <ctype.h>
@@ -27,6 +28,7 @@
#ifdef OBJ_ELF
#include "elf/sparc.h"
+#include "dwarf2dbg.h"
#endif
static struct sparc_arch *lookup_arch PARAMS ((char *));
@@ -91,6 +93,9 @@ static enum sparc_opcode_arch_val warn_after_architecture;
has been used in -64. */
static int no_undeclared_regs;
+/* Non-zero if we should try to relax jumps and calls. */
+static int sparc_relax;
+
/* Non-zero if we are generating PIC code. */
int sparc_pic_code;
@@ -114,7 +119,7 @@ static symbolS *globals[8];
|| SPARC_OPCODE_ARCH_V9_P (max_architecture))
#endif
-/* handle of the OPCODE hash table */
+/* Handle of the OPCODE hash table. */
static struct hash_control *op_hash;
static int log2 PARAMS ((int));
@@ -130,7 +135,7 @@ static void s_register PARAMS ((int));
const pseudo_typeS md_pseudo_table[] =
{
- {"align", s_align_bytes, 0}, /* Defaulting is invalid (0) */
+ {"align", s_align_bytes, 0}, /* Defaulting is invalid (0). */
{"common", s_common, 0},
{"empty", s_empty, 0},
{"global", s_globl, 0},
@@ -147,7 +152,9 @@ const pseudo_typeS md_pseudo_table[] =
{"uaword", s_uacons, 4},
{"uaxword", s_uacons, 8},
#ifdef OBJ_ELF
- /* these are specific to sparc/svr4 */
+ {"file", dwarf2_directive_file, 0},
+ {"loc", dwarf2_directive_loc, 0},
+ /* These are specific to sparc/svr4. */
{"2byte", s_uacons, 2},
{"4byte", s_uacons, 4},
{"8byte", s_uacons, 8},
@@ -156,37 +163,40 @@ const pseudo_typeS md_pseudo_table[] =
{NULL, 0, 0},
};
-const int md_reloc_size = 12; /* Size of relocation record */
+/* Size of relocation record. */
+const int md_reloc_size = 12;
/* 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[] = "!"; /* JF removed '|' from comment_chars */
+ pre-processor is disabled, these aren't very useful. */
+const char comment_chars[] = "!"; /* JF removed '|' from
+ 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 */
+ .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. */
+ #NO_APP at the beginning of its output. */
/* Also note that comments started like this one will always
- work if '/' isn't otherwise defined. */
+ work if '/' isn't otherwise defined. */
const char line_comment_chars[] = "#";
-const char line_separator_chars[] = "";
+const char line_separator_chars[] = ";";
-/* Chars that can be used to separate mant from exp in floating point nums */
+/* 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 */
+/* Chars that mean this number is a floating point constant.
+ As in 0f12.456
+ or 0d1.2345e12 */
const char FLT_CHARS[] = "rRsSfFdDxXpP";
/* Also be aware that MAXIMUM_NUMBER_OF_CHARS_FOR_FLOAT may have to be
changed in read.c. Ideally it shouldn't have to know about it at all,
but nothing is ideal around here. */
-#define isoctal(c) ((unsigned)((c) - '0') < '8')
+#define isoctal(c) ((unsigned) ((c) - '0') < '8')
struct sparc_it
{
@@ -210,7 +220,7 @@ static void output_insn
and file formats. */
enum sparc_arch_types {v6, v7, v8, sparclet, sparclite, sparc86x, v8plus,
- v8plusa, v9, v9a, v9_64};
+ v8plusa, v9, v9a, v9b, v9_64};
static struct sparc_arch {
char *name;
@@ -230,8 +240,10 @@ static struct sparc_arch {
{ "sparc86x", "sparclite", sparc86x, 32, 1 },
{ "v8plus", "v9", v9, 0, 1 },
{ "v8plusa", "v9a", v9, 0, 1 },
+ { "v8plusb", "v9b", v9, 0, 1 },
{ "v9", "v9", v9, 0, 1 },
{ "v9a", "v9a", v9, 0, 1 },
+ { "v9b", "v9b", v9, 0, 1 },
/* This exists to allow configure.in/Makefile.in to pass one
value to specify both the default machine and default word size. */
{ "v9-64", "v9", v9, 64, 0 },
@@ -294,7 +306,8 @@ sparc_target_format ()
return "a.out-sunos-big";
else if (default_arch_type == sparc86x && target_little_endian_data)
return "a.out-sunos-big";
- else return "a.out-sparc-little";
+ else
+ return "a.out-sparc-little";
#else
return "a.out-sunos-big";
#endif
@@ -320,8 +333,7 @@ sparc_target_format ()
abort ();
}
-/*
- * md_parse_option
+/* md_parse_option
* Invocation line includes a switch not recognized by the base assembler.
* See if it's a processor-specific option. These are:
*
@@ -330,16 +342,20 @@ sparc_target_format ()
*
* -Av6, -Av7, -Av8, -Asparclite, -Asparclet
* Standard 32 bit architectures.
- * -Av8plus, -Av8plusa
- * Sparc64 in a 32 bit world.
- * -Av9, -Av9a
+ * -Av9, -Av9a, -Av9b
* Sparc64 in either a 32 or 64 bit world (-32/-64 says which).
* This used to only mean 64 bits, but properly specifying it
* complicated gcc's ASM_SPECs, so now opcode selection is
* specified orthogonally to word size (except when specifying
* the default, but that is an internal implementation detail).
- * -xarch=v8plus, -xarch=v8plusa
- * Same as -Av8plus{,a}, for compatibility with Sun's assembler.
+ * -Av8plus, -Av8plusa, -Av8plusb
+ * Same as -Av9{,a,b}.
+ * -xarch=v8plus, -xarch=v8plusa, -xarch=v8plusb
+ * Same as -Av8plus{,a,b} -32, for compatibility with Sun's
+ * assembler.
+ * -xarch=v9, -xarch=v9a, -xarch=v9b
+ * Same as -Av9{,a,b} -64, for compatibility with Sun's
+ * assembler.
*
* Select the architecture and possibly the file format.
* Instructions or features not supported by the selected
@@ -348,7 +364,7 @@ sparc_target_format ()
* The default is to start at v6, and bump the architecture up
* whenever an instruction is seen at a higher level. In 32 bit
* environments, v9 is not bumped up to, the user must pass
- * -Av8plus{,a}.
+ * -Av8plus{,a,b}.
*
* If -bump is specified, a warning is printing when bumping to
* higher levels.
@@ -415,9 +431,14 @@ struct option md_longopts[] = {
#define OPTION_UNDECLARED_REGS (OPTION_MD_BASE + 13)
{"undeclared-regs", no_argument, NULL, OPTION_UNDECLARED_REGS},
#endif
+#define OPTION_RELAX (OPTION_MD_BASE + 14)
+ {"relax", no_argument, NULL, OPTION_RELAX},
+#define OPTION_NO_RELAX (OPTION_MD_BASE + 15)
+ {"no-relax", no_argument, NULL, OPTION_NO_RELAX},
{NULL, no_argument, NULL, 0}
};
-size_t md_longopts_size = sizeof(md_longopts);
+
+size_t md_longopts_size = sizeof (md_longopts);
int
md_parse_option (c, arg)
@@ -437,15 +458,13 @@ md_parse_option (c, arg)
break;
case OPTION_XARCH:
- /* This is for compatibility with Sun's assembler. */
- if (strcmp (arg, "v8plus") != 0
- && strcmp (arg, "v8plusa") != 0)
- {
- as_bad (_("invalid architecture -xarch=%s"), arg);
- return 0;
- }
-
- /* fall through */
+#ifdef OBJ_ELF
+ if (strncmp (arg, "v9", 2) != 0)
+ md_parse_option (OPTION_32, NULL);
+ else
+ md_parse_option (OPTION_64, NULL);
+#endif
+ /* Fall through. */
case 'A':
{
@@ -456,7 +475,10 @@ md_parse_option (c, arg)
if (sa == NULL
|| ! sa->user_option_p)
{
- as_bad (_("invalid architecture -A%s"), arg);
+ if (c == OPTION_XARCH)
+ as_bad (_("invalid architecture -xarch=%s"), arg);
+ else
+ as_bad (_("invalid architecture -A%s"), arg);
return 0;
}
@@ -547,15 +569,15 @@ md_parse_option (c, arg)
case 'Q':
/* Qy - do emit .comment
- Qn - do not emit .comment */
+ Qn - do not emit .comment. */
break;
case 's':
- /* use .stab instead of .stab.excl */
+ /* Use .stab instead of .stab.excl. */
break;
case 'q':
- /* quick -- native assembler does fewer checks */
+ /* quick -- Native assembler does fewer checks. */
break;
case 'K':
@@ -574,6 +596,14 @@ md_parse_option (c, arg)
break;
#endif
+ case OPTION_RELAX:
+ sparc_relax = 1;
+ break;
+
+ case OPTION_NO_RELAX:
+ sparc_relax = 0;
+ break;
+
default:
return 0;
}
@@ -586,26 +616,49 @@ md_show_usage (stream)
FILE *stream;
{
const struct sparc_arch *arch;
+ int column;
/* We don't get a chance to initialize anything before we're called,
so handle that now. */
if (! default_init_p)
init_default_arch ();
- fprintf(stream, _("SPARC options:\n"));
+ fprintf (stream, _("SPARC options:\n"));
+ column = 0;
for (arch = &sparc_arch_table[0]; arch->name; arch++)
{
+ if (!arch->user_option_p)
+ continue;
if (arch != &sparc_arch_table[0])
fprintf (stream, " | ");
- if (arch->user_option_p)
- fprintf (stream, "-A%s", arch->name);
+ if (column + strlen(arch->name) > 70)
+ {
+ column = 0;
+ fputc ('\n', stream);
+ }
+ column += 5 + 2 + strlen(arch->name);
+ fprintf (stream, "-A%s", arch->name);
}
- fprintf (stream, _("\n-xarch=v8plus | -xarch=v8plusa\n"));
- fprintf (stream, _("\
+ for (arch = &sparc_arch_table[0]; arch->name; arch++)
+ {
+ if (!arch->user_option_p)
+ continue;
+ fprintf (stream, " | ");
+ if (column + strlen(arch->name) > 65)
+ {
+ column = 0;
+ fputc ('\n', stream);
+ }
+ column += 5 + 7 + strlen(arch->name);
+ fprintf (stream, "-xarch=%s", arch->name);
+ }
+ fprintf (stream, _("\n\
specify variant of SPARC architecture\n\
-bump warn when assembler switches architectures\n\
-sparc ignored\n\
---enforce-aligned-data force .long, etc., to be aligned correctly\n"));
+--enforce-aligned-data force .long, etc., to be aligned correctly\n\
+-relax relax jumps and branches (default)\n\
+-no-relax avoid changing any jumps and branches\n"));
#ifdef OBJ_AOUT
fprintf (stream, _("\
-k generate PIC\n"));
@@ -642,7 +695,7 @@ md_show_usage (stream)
#endif
}
-/* native operand size opcode translation */
+/* Native operand size opcode translation. */
struct
{
char *name;
@@ -663,13 +716,13 @@ struct
{NULL, NULL, NULL},
};
-/* sparc64 priviledged registers */
+/* sparc64 priviledged registers. */
struct priv_reg_entry
- {
- char *name;
- int regnum;
- };
+{
+ char *name;
+ int regnum;
+};
struct priv_reg_entry priv_reg_table[] =
{
@@ -690,14 +743,16 @@ struct priv_reg_entry priv_reg_table[] =
{"wstate", 14},
{"fq", 15},
{"ver", 31},
- {"", -1}, /* end marker */
+ {"", -1}, /* End marker. */
};
-/* v9a specific asrs */
+/* v9a specific asrs. */
struct priv_reg_entry v9a_asr_table[] =
{
{"tick_cmpr", 23},
+ {"sys_tick_cmpr", 25},
+ {"sys_tick", 24},
{"softint", 22},
{"set_softint", 20},
{"pic", 17},
@@ -705,7 +760,7 @@ struct priv_reg_entry v9a_asr_table[] =
{"gsr", 19},
{"dcr", 18},
{"clear_softint", 21},
- {"", -1}, /* end marker */
+ {"", -1}, /* End marker. */
};
static int
@@ -720,7 +775,8 @@ cmp_reg_entry (parg, qarg)
}
/* 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. */
+ set up all the tables, etc. that the MD part of the assembler will
+ need. */
void
md_begin ()
@@ -764,15 +820,16 @@ md_begin ()
for (i = 0; native_op_table[i].name; i++)
{
const struct sparc_opcode *insn;
- char *name = sparc_arch_size == 32 ? native_op_table[i].name32 :
- native_op_table[i].name64;
- insn = (struct sparc_opcode *)hash_find (op_hash, name);
+ char *name = ((sparc_arch_size == 32)
+ ? native_op_table[i].name32
+ : native_op_table[i].name64);
+ insn = (struct sparc_opcode *) hash_find (op_hash, name);
if (insn == NULL)
- {
- as_bad (_("Internal error: can't find opcode `%s' for `%s'\n"),
- name, native_op_table[i].name);
- lose = 1;
- }
+ {
+ as_bad (_("Internal error: can't find opcode `%s' for `%s'\n"),
+ name, native_op_table[i].name);
+ lose = 1;
+ }
else
{
retval = hash_insert (op_hash, native_op_table[i].name, (PTR) insn);
@@ -821,31 +878,28 @@ md_begin ()
void
sparc_md_end ()
{
+ unsigned long mach = bfd_mach_sparc;
+
if (sparc_arch_size == 64)
- {
- if (current_architecture == SPARC_OPCODE_ARCH_V9A)
- bfd_set_arch_mach (stdoutput, bfd_arch_sparc, bfd_mach_sparc_v9a);
- else
- bfd_set_arch_mach (stdoutput, bfd_arch_sparc, bfd_mach_sparc_v9);
- }
+ switch (current_architecture)
+ {
+ case SPARC_OPCODE_ARCH_V9A: mach = bfd_mach_sparc_v9a; break;
+ case SPARC_OPCODE_ARCH_V9B: mach = bfd_mach_sparc_v9b; break;
+ default: mach = bfd_mach_sparc_v9; break;
+ }
else
- {
- if (current_architecture == SPARC_OPCODE_ARCH_V9)
- bfd_set_arch_mach (stdoutput, bfd_arch_sparc, bfd_mach_sparc_v8plus);
- else if (current_architecture == SPARC_OPCODE_ARCH_V9A)
- bfd_set_arch_mach (stdoutput, bfd_arch_sparc, bfd_mach_sparc_v8plusa);
- else if (current_architecture == SPARC_OPCODE_ARCH_SPARCLET)
- bfd_set_arch_mach (stdoutput, bfd_arch_sparc, bfd_mach_sparc_sparclet);
- else if (default_arch_type == sparc86x && target_little_endian_data)
- bfd_set_arch_mach (stdoutput, bfd_arch_sparc, bfd_mach_sparc_sparclite_le);
- else
- {
- /* The sparclite is treated like a normal sparc. Perhaps it shouldn't
- be but for now it is (since that's the way it's always been
- treated). */
- bfd_set_arch_mach (stdoutput, bfd_arch_sparc, bfd_mach_sparc);
- }
- }
+ switch (current_architecture)
+ {
+ case SPARC_OPCODE_ARCH_SPARCLET: mach = bfd_mach_sparc_sparclet; break;
+ case SPARC_OPCODE_ARCH_V9: mach = bfd_mach_sparc_v8plus; break;
+ case SPARC_OPCODE_ARCH_V9A: mach = bfd_mach_sparc_v8plusa; break;
+ case SPARC_OPCODE_ARCH_V9B: mach = bfd_mach_sparc_v8plusb; break;
+ /* The sparclite is treated like a normal sparc. Perhaps it shouldn't
+ be but for now it is (since that's the way it's always been
+ treated). */
+ default: break;
+ }
+ bfd_set_arch_mach (stdoutput, bfd_arch_sparc, mach);
}
/* Return non-zero if VAL is in the range -(MAX+1) to MAX. */
@@ -860,7 +914,7 @@ in_signed_range (val, max)
0xffffffff is always considered -1 on sparc32. */
if (sparc_arch_size == 32)
{
- bfd_signed_vma sign = (bfd_signed_vma)1 << 31;
+ bfd_signed_vma sign = (bfd_signed_vma) 1 << 31;
val = ((val & 0xffffffff) ^ sign) - sign;
}
if (val > max)
@@ -950,6 +1004,7 @@ static const struct sparc_opcode *last_insn;
static unsigned long last_opcode;
/* Handle the set and setuw synthetic instructions. */
+
static void
synthetize_setuw (insn)
const struct sparc_opcode *insn;
@@ -961,18 +1016,18 @@ synthetize_setuw (insn)
{
if (SPARC_OPCODE_ARCH_V9_P (max_architecture))
{
- if (sizeof(offsetT) > 4
+ if (sizeof (offsetT) > 4
&& (the_insn.exp.X_add_number < 0
|| the_insn.exp.X_add_number > (offsetT) 0xffffffff))
as_warn (_("set: number not in 0..4294967295 range"));
}
else
{
- if (sizeof(offsetT) > 4
+ if (sizeof (offsetT) > 4
&& (the_insn.exp.X_add_number < -(offsetT) 0x80000000
|| the_insn.exp.X_add_number > (offsetT) 0xffffffff))
as_warn (_("set: number not in -2147483648..4294967295 range"));
- the_insn.exp.X_add_number = (int)the_insn.exp.X_add_number;
+ the_insn.exp.X_add_number = (int) the_insn.exp.X_add_number;
}
}
@@ -983,10 +1038,10 @@ synthetize_setuw (insn)
{
the_insn.opcode = (SETHI_INSN | RD (rd)
| ((the_insn.exp.X_add_number >> 10)
- & (the_insn.exp.X_op == O_constant ? 0x3fffff : 0)));
+ & (the_insn.exp.X_op == O_constant
+ ? 0x3fffff : 0)));
the_insn.reloc = (the_insn.exp.X_op != O_constant
- ? BFD_RELOC_HI22
- : BFD_RELOC_NONE);
+ ? BFD_RELOC_HI22 : BFD_RELOC_NONE);
output_insn (insn, &the_insn);
need_hi22_p = 1;
}
@@ -999,16 +1054,16 @@ synthetize_setuw (insn)
the_insn.opcode = (OR_INSN | (need_hi22_p ? RS1 (rd) : 0)
| RD (rd) | IMMED
| (the_insn.exp.X_add_number
- & (the_insn.exp.X_op != O_constant ? 0 :
- need_hi22_p ? 0x3ff : 0x1fff)));
+ & (the_insn.exp.X_op != O_constant
+ ? 0 : need_hi22_p ? 0x3ff : 0x1fff)));
the_insn.reloc = (the_insn.exp.X_op != O_constant
- ? BFD_RELOC_LO10
- : BFD_RELOC_NONE);
+ ? BFD_RELOC_LO10 : BFD_RELOC_NONE);
output_insn (insn, &the_insn);
}
}
-
+
/* Handle the setsw synthetic instruction. */
+
static void
synthetize_setsw (insn)
const struct sparc_opcode *insn;
@@ -1028,13 +1083,13 @@ synthetize_setsw (insn)
return;
}
- if (sizeof(offsetT) > 4
+ if (sizeof (offsetT) > 4
&& (the_insn.exp.X_add_number < -(offsetT) 0x80000000
|| the_insn.exp.X_add_number > (offsetT) 0xffffffff))
as_warn (_("setsw: number not in -2147483648..4294967295 range"));
- low32 = the_insn.exp.X_add_number;
-
+ low32 = the_insn.exp.X_add_number;
+
if (low32 >= 0)
{
synthetize_setuw (insn);
@@ -1042,7 +1097,7 @@ synthetize_setsw (insn)
}
opc = OR_INSN;
-
+
the_insn.reloc = BFD_RELOC_NONE;
/* See if operand is absolute and small; skip sethi if so. */
if (low32 < -(1 << 12))
@@ -1060,6 +1115,7 @@ synthetize_setsw (insn)
}
/* Handle the setsw synthetic instruction. */
+
static void
synthetize_setx (insn)
const struct sparc_opcode *insn;
@@ -1070,7 +1126,7 @@ synthetize_setx (insn)
int upper_dstreg;
int need_hh22_p = 0, need_hm10_p = 0, need_hi22_p = 0, need_lo10_p = 0;
int need_xor10_p = 0;
-
+
#define SIGNEXT32(x) ((((x) & 0xffffffff) ^ 0x80000000) - 0x80000000)
lower32 = SIGNEXT32 (the_insn.exp.X_add_number);
upper32 = SIGNEXT32 (BSR (the_insn.exp.X_add_number, 32));
@@ -1098,7 +1154,8 @@ synthetize_setx (insn)
return;
}
need_hh22_p = need_hm10_p = need_hi22_p = need_lo10_p = 1;
- lower32 = 0; upper32 = 0;
+ lower32 = 0;
+ upper32 = 0;
}
else
{
@@ -1106,18 +1163,18 @@ synthetize_setx (insn)
Otherwise fixup_segment will complain about not being able to
write an 8 byte number in a 4 byte field. */
the_insn.exp.X_add_number = 0;
-
+
/* Only need hh22 if `or' insn can't handle constant. */
if (upper32 < -(1 << 12) || upper32 >= (1 << 12))
need_hh22_p = 1;
-
+
/* Does bottom part (after sethi) have bits? */
if ((need_hh22_p && (upper32 & 0x3ff) != 0)
/* No hh22, but does upper32 still have bits we can't set
from lower32? */
|| (! need_hh22_p && upper32 != 0 && upper32 != -1))
need_hm10_p = 1;
-
+
/* If the lower half is all zero, we build the upper half directly
into the dst reg. */
if (lower32 != 0
@@ -1131,7 +1188,7 @@ synthetize_setx (insn)
|| (lower32 < 0 && upper32 != -1)
|| (lower32 >= 0 && upper32 == -1))
need_hi22_p = 1;
-
+
if (need_hi22_p && upper32 == -1)
need_xor10_p = 1;
@@ -1147,7 +1204,7 @@ synthetize_setx (insn)
/* Output directly to dst reg if lower 32 bits are all zero. */
upper_dstreg = dstreg;
}
-
+
if (!upper_dstreg && dstreg)
as_warn (_("setx: illegal temporary register g0"));
@@ -1159,12 +1216,12 @@ synthetize_setx (insn)
? BFD_RELOC_SPARC_HH22 : BFD_RELOC_NONE);
output_insn (insn, &the_insn);
}
-
+
if (need_hi22_p)
{
the_insn.opcode = (SETHI_INSN | RD (dstreg)
| (((need_xor10_p ? ~lower32 : lower32)
- >> 10) & 0x3fffff));
+ >> 10) & 0x3fffff));
the_insn.reloc = (the_insn.exp.X_op != O_constant
? BFD_RELOC_SPARC_LM22 : BFD_RELOC_NONE);
output_insn (insn, &the_insn);
@@ -1181,7 +1238,7 @@ synthetize_setx (insn)
? BFD_RELOC_SPARC_HM10 : BFD_RELOC_NONE);
output_insn (insn, &the_insn);
}
-
+
if (need_lo10_p)
{
/* FIXME: One nice optimization to do here is to OR the low part
@@ -1195,7 +1252,7 @@ synthetize_setx (insn)
? BFD_RELOC_LO10 : BFD_RELOC_NONE);
output_insn (insn, &the_insn);
}
-
+
/* If we needed to build the upper part, shift it into place. */
if (need_hh22_p || need_hm10_p)
{
@@ -1204,7 +1261,7 @@ synthetize_setx (insn)
the_insn.reloc = BFD_RELOC_NONE;
output_insn (insn, &the_insn);
}
-
+
/* To get -1 in upper32, we do sethi %hi(~x), r; xor r, -0x400 | x, r. */
if (need_xor10_p)
{
@@ -1268,14 +1325,14 @@ md_assemble (str)
switch (special_case)
{
case SPECIAL_CASE_NONE:
- /* normal insn */
+ /* Normal insn. */
output_insn (insn, &the_insn);
break;
case SPECIAL_CASE_SETSW:
synthetize_setsw (insn);
break;
-
+
case SPECIAL_CASE_SET:
synthetize_setuw (insn);
break;
@@ -1283,24 +1340,24 @@ md_assemble (str)
case SPECIAL_CASE_SETX:
synthetize_setx (insn);
break;
-
+
case SPECIAL_CASE_FDIV:
{
int rd = (the_insn.opcode >> 25) & 0x1f;
-
+
output_insn (insn, &the_insn);
-
+
/* According to information leaked from Sun, the "fdiv" instructions
on early SPARC machines would produce incorrect results sometimes.
The workaround is to add an fmovs of the destination register to
itself just after the instruction. This was true on machines
- with Weitek 1165 float chips, such as the Sun-4/260 and /280. */
+ with Weitek 1165 float chips, such as the Sun-4/260 and /280. */
assert (the_insn.reloc == BFD_RELOC_NONE);
the_insn.opcode = FMOVS_INSN | rd | RD (rd);
output_insn (insn, &the_insn);
return;
}
-
+
default:
as_fatal (_("failed special case insn sanity check"));
}
@@ -1341,8 +1398,7 @@ sparc_ip (str, pinsn)
case ',':
comma = 1;
-
- /*FALLTHROUGH */
+ /* Fall through. */
case ' ':
*s++ = '\0';
@@ -1371,10 +1427,8 @@ sparc_ip (str, pinsn)
the_insn.reloc = BFD_RELOC_NONE;
v9_arg_p = 0;
- /*
- * Build the opcode, checking as we go to make
- * sure that the operands match
- */
+ /* Build the opcode, checking as we go to make sure that the
+ operands match. */
for (args = insn->args;; ++args)
{
switch (*args)
@@ -1397,10 +1451,12 @@ sparc_ip (str, pinsn)
goto error;
}
kmask |= mask;
- while (*s == ' ') { ++s; continue; }
+ while (*s == ' ')
+ ++s;
if (*s == '|' || *s == '+')
++s;
- while (*s == ' ') { ++s; continue; }
+ while (*s == ' ')
+ ++s;
}
}
else
@@ -1421,6 +1477,24 @@ sparc_ip (str, pinsn)
continue;
}
+ case '3':
+ {
+ int smask = 0;
+
+ if (! parse_const_expr_arg (&s, &smask))
+ {
+ error_message = _(": invalid siam mode expression");
+ goto error;
+ }
+ if (smask < 0 || smask > 7)
+ {
+ error_message = _(": invalid siam mode number");
+ goto error;
+ }
+ opcode |= smask;
+ continue;
+ }
+
case '*':
{
int fcn = 0;
@@ -1457,7 +1531,7 @@ sparc_ip (str, pinsn)
if (*s == '%')
{
struct priv_reg_entry *p = priv_reg_table;
- unsigned int len = 9999999; /* init to make gcc happy */
+ unsigned int len = 9999999; /* Init to make gcc happy. */
s += 1;
while (p->name[0] > s[0])
@@ -1489,11 +1563,11 @@ sparc_ip (str, pinsn)
case '_':
case '/':
- /* Parse a v9a ancillary state register. */
+ /* Parse a v9a/v9b ancillary state register. */
if (*s == '%')
{
struct priv_reg_entry *p = v9a_asr_table;
- unsigned int len = 9999999; /* init to make gcc happy */
+ unsigned int len = 9999999; /* Init to make gcc happy. */
s += 1;
while (p->name[0] > s[0])
@@ -1507,14 +1581,22 @@ sparc_ip (str, pinsn)
}
if (p->name[0] != s[0])
{
- error_message = _(": unrecognizable v9a ancillary state register");
+ error_message = _(": unrecognizable v9a or v9b ancillary state register");
goto error;
}
if (*args == '/' && (p->regnum == 20 || p->regnum == 21))
{
error_message = _(": rd on write only ancillary state register");
goto error;
- }
+ }
+ if (p->regnum >= 24
+ && (insn->architecture
+ & SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9A)))
+ {
+ /* %sys_tick and %sys_tick_cmpr are v9bnotv9a */
+ error_message = _(": unrecognizable v9a ancillary state register");
+ goto error;
+ }
if (*args == '/')
opcode |= (p->regnum << 14);
else
@@ -1524,7 +1606,7 @@ sparc_ip (str, pinsn)
}
else
{
- error_message = _(": unrecognizable v9a ancillary state register");
+ error_message = _(": unrecognizable v9a or v9b ancillary state register");
goto error;
}
@@ -1569,7 +1651,7 @@ sparc_ip (str, pinsn)
error_message = _(": expecting %asrN");
goto error;
}
- } /* if %asr */
+ } /* if %asr */
break;
case 'I':
@@ -1714,7 +1796,7 @@ sparc_ip (str, pinsn)
}
break;
- case '\0': /* end of args */
+ case '\0': /* End of args. */
if (*s == '\0')
{
match = 1;
@@ -1733,7 +1815,7 @@ sparc_ip (str, pinsn)
}
break;
- case '[': /* these must match exactly */
+ case '[': /* These must match exactly. */
case ']':
case ',':
case ' ':
@@ -1741,7 +1823,7 @@ sparc_ip (str, pinsn)
continue;
break;
- case '#': /* must be at least one digit */
+ case '#': /* Must be at least one digit. */
if (isdigit ((unsigned char) *s++))
{
while (isdigit ((unsigned char) *s))
@@ -1752,7 +1834,7 @@ sparc_ip (str, pinsn)
}
break;
- case 'C': /* coprocessor state register */
+ case 'C': /* Coprocessor state register. */
if (strncmp (s, "%csr", 4) == 0)
{
s += 4;
@@ -1760,7 +1842,7 @@ sparc_ip (str, pinsn)
}
break;
- case 'b': /* next operand is a coprocessor register */
+ case 'b': /* Next operand is a coprocessor register. */
case 'c':
case 'D':
if (*s++ == '%' && *s++ == 'c' && isdigit ((unsigned char) *s))
@@ -1893,7 +1975,7 @@ sparc_ip (str, pinsn)
}
if ((mask & ~1) == 2 && sparc_arch_size == 64
- && no_undeclared_regs && ! globals [mask])
+ && no_undeclared_regs && ! globals[mask])
as_bad (_("detected global register use not covered by .register pseudo-op"));
/* Got the register, now figure out where
@@ -1987,7 +2069,7 @@ sparc_ip (str, pinsn)
else
{
break;
- } /* if not an 'f' register. */
+ } /* if not an 'f' register. */
switch (*args)
{
@@ -1997,7 +2079,6 @@ sparc_ip (str, pinsn)
opcode |= RS1 (mask);
continue;
-
case 'f':
case 'B':
case 'R':
@@ -2009,11 +2090,11 @@ sparc_ip (str, pinsn)
case 'J':
opcode |= RD (mask);
continue;
- } /* pack it in. */
+ } /* Pack it in. */
know (0);
break;
- } /* float arg */
+ } /* float arg */
case 'F':
if (strncmp (s, "%fsr", 4) == 0)
@@ -2023,26 +2104,26 @@ sparc_ip (str, pinsn)
}
break;
- case '0': /* 64 bit immediate (set, setsw, setx insn) */
- the_insn.reloc = BFD_RELOC_NONE; /* reloc handled elsewhere */
+ case '0': /* 64 bit immediate (set, setsw, setx insn) */
+ the_insn.reloc = BFD_RELOC_NONE; /* reloc handled elsewhere */
goto immediate;
- case 'l': /* 22 bit PC relative immediate */
+ case 'l': /* 22 bit PC relative immediate */
the_insn.reloc = BFD_RELOC_SPARC_WDISP22;
the_insn.pcrel = 1;
goto immediate;
- case 'L': /* 30 bit immediate */
+ case 'L': /* 30 bit immediate */
the_insn.reloc = BFD_RELOC_32_PCREL_S2;
the_insn.pcrel = 1;
goto immediate;
case 'h':
- case 'n': /* 22 bit immediate */
+ case 'n': /* 22 bit immediate */
the_insn.reloc = BFD_RELOC_SPARC22;
goto immediate;
- case 'i': /* 13 bit immediate */
+ case 'i': /* 13 bit immediate */
the_insn.reloc = BFD_RELOC_SPARC13;
/* fallthrough */
@@ -2086,16 +2167,16 @@ sparc_ip (str, pinsn)
{ "l44", 3, BFD_RELOC_SPARC_L44, 1, 0 },
{ "uhi", 3, BFD_RELOC_SPARC_HH22, 1, 0 },
{ "ulo", 3, BFD_RELOC_SPARC_HM10, 1, 0 },
- { NULL }
+ { NULL, 0, 0, 0, 0 }
};
const struct ops *o;
-
+
for (o = ops; o->name; o++)
if (strncmp (s + 1, o->name, o->len) == 0)
break;
if (o->name == NULL)
break;
-
+
if (s[o->len + 1] != '(')
{
as_bad (_("Illegal operands: %%%s requires arguments in ()"), o->name);
@@ -2137,7 +2218,7 @@ sparc_ip (str, pinsn)
as_bad (_("Illegal operands: %%%s requires arguments in ()"), op_arg);
return special_case;
}
-
+
*s1 = '\0';
(void) get_expression (s);
*s1 = ')';
@@ -2152,10 +2233,11 @@ sparc_ip (str, pinsn)
*s1 = '0';
s = s1;
op_exp = the_insn.exp;
- memset (&the_insn.exp, 0, sizeof(the_insn.exp));
+ memset (&the_insn.exp, 0, sizeof (the_insn.exp));
}
- for (s1 = s; *s1 && *s1 != ',' && *s1 != ']'; s1++) ;
+ for (s1 = s; *s1 && *s1 != ',' && *s1 != ']'; s1++)
+ ;
if (s1 != s && isdigit ((unsigned char) s1[-1]))
{
@@ -2210,7 +2292,7 @@ sparc_ip (str, pinsn)
case BFD_RELOC_SPARC_HH22:
val = BSR (val, 32);
- /* intentional fallthrough */
+ /* Fall through. */
case BFD_RELOC_SPARC_LM22:
case BFD_RELOC_HI22:
@@ -2219,7 +2301,7 @@ sparc_ip (str, pinsn)
case BFD_RELOC_SPARC_HM10:
val = BSR (val, 32);
- /* intentional fallthrough */
+ /* Fall through. */
case BFD_RELOC_LO10:
val &= 0x3ff;
@@ -2240,7 +2322,7 @@ sparc_ip (str, pinsn)
break;
case BFD_RELOC_SPARC_HIX22:
- val = ~ val;
+ val = ~val;
val = (val >> 10) & 0x3fffff;
break;
@@ -2335,7 +2417,7 @@ sparc_ip (str, pinsn)
}
opcode |= ASI (asi);
continue;
- } /* alternate space */
+ } /* Alternate space. */
case 'p':
if (strncmp (s, "%psr", 4) == 0)
@@ -2345,7 +2427,7 @@ sparc_ip (str, pinsn)
}
break;
- case 'q': /* floating point queue */
+ case 'q': /* Floating point queue. */
if (strncmp (s, "%fq", 3) == 0)
{
s += 3;
@@ -2353,7 +2435,7 @@ sparc_ip (str, pinsn)
}
break;
- case 'Q': /* coprocessor queue */
+ case 'Q': /* Coprocessor queue. */
if (strncmp (s, "%cq", 3) == 0)
{
s += 3;
@@ -2459,16 +2541,16 @@ sparc_ip (str, pinsn)
default:
as_fatal (_("failed sanity check."));
- } /* switch on arg code */
+ } /* switch on arg code. */
/* Break out of for() loop. */
break;
- } /* for each arg that we expect */
+ } /* For each arg that we expect. */
error:
if (match == 0)
{
- /* Args don't match. */
+ /* Args don't match. */
if (&insn[1] - sparc_opcodes < sparc_num_opcodes
&& (insn->name == insn[1].name
|| !strcmp (insn->name, insn[1].name)))
@@ -2485,20 +2567,25 @@ sparc_ip (str, pinsn)
}
else
{
- /* We have a match. Now see if the architecture is ok. */
+ /* We have a match. Now see if the architecture is OK. */
int needed_arch_mask = insn->architecture;
if (v9_arg_p)
{
- needed_arch_mask &= ~ ((1 << SPARC_OPCODE_ARCH_V9)
- | (1 << SPARC_OPCODE_ARCH_V9A));
- needed_arch_mask |= (1 << SPARC_OPCODE_ARCH_V9);
+ needed_arch_mask &=
+ ~(SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9) - 1);
+ if (! needed_arch_mask)
+ needed_arch_mask =
+ SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9);
}
- if (needed_arch_mask & SPARC_OPCODE_SUPPORTED (current_architecture))
- ; /* ok */
+ if (needed_arch_mask
+ & SPARC_OPCODE_SUPPORTED (current_architecture))
+ /* OK. */
+ ;
/* Can we bump up the architecture? */
- else if (needed_arch_mask & SPARC_OPCODE_SUPPORTED (max_architecture))
+ else if (needed_arch_mask
+ & SPARC_OPCODE_SUPPORTED (max_architecture))
{
enum sparc_opcode_arch_val needed_architecture =
sparc_ffs (SPARC_OPCODE_SUPPORTED (max_architecture)
@@ -2523,12 +2610,12 @@ sparc_ip (str, pinsn)
happen but what about tomorrow? */
else
{
- int arch,printed_one_p = 0;
+ int arch, printed_one_p = 0;
char *p;
char required_archs[SPARC_OPCODE_ARCH_MAX * 16];
/* Create a list of the architectures that support the insn. */
- needed_arch_mask &= ~ SPARC_OPCODE_SUPPORTED (max_architecture);
+ needed_arch_mask &= ~SPARC_OPCODE_SUPPORTED (max_architecture);
p = required_archs;
arch = sparc_ffs (needed_arch_mask);
while ((1 << arch) <= needed_arch_mask)
@@ -2550,10 +2637,10 @@ sparc_ip (str, pinsn)
sparc_opcode_archs[max_architecture].name);
return special_case;
}
- } /* if no match */
+ } /* If no match. */
break;
- } /* forever looking for a match */
+ } /* Forever looking for a match. */
the_insn.opcode = opcode;
return special_case;
@@ -2659,18 +2746,18 @@ output_insn (insn, the_insn)
{
char *toP = frag_more (4);
- /* put out the opcode */
+ /* Put out the opcode. */
if (INSN_BIG_ENDIAN)
number_to_chars_bigendian (toP, (valueT) the_insn->opcode, 4);
else
number_to_chars_littleendian (toP, (valueT) the_insn->opcode, 4);
- /* put out the symbol-dependent stuff */
+ /* Put out the symbol-dependent stuff. */
if (the_insn->reloc != BFD_RELOC_NONE)
{
- fixS *fixP = fix_new_exp (frag_now, /* which frag */
- (toP - frag_now->fr_literal), /* where */
- 4, /* size */
+ fixS *fixP = fix_new_exp (frag_now, /* Which frag. */
+ (toP - frag_now->fr_literal), /* Where. */
+ 4, /* Size. */
&the_insn->exp,
the_insn->pcrel,
the_insn->reloc);
@@ -2685,18 +2772,21 @@ output_insn (insn, the_insn)
last_insn = insn;
last_opcode = the_insn->opcode;
+
+#ifdef OBJ_ELF
+ dwarf2_emit_insn (4);
+#endif
}
-/*
- This is identical to the md_atof in m68k.c. I think this is right,
- but I'm not sure.
+/* 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.
- */
+ 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 */
+/* Equal to MAX_PRECISION in atof-ieee.c. */
#define MAX_LITTLENUMS 6
char *
@@ -2705,7 +2795,7 @@ md_atof (type, litP, sizeP)
char *litP;
int *sizeP;
{
- int i,prec;
+ int i, prec;
LITTLENUM_TYPE words[MAX_LITTLENUMS];
char *t;
@@ -2749,7 +2839,8 @@ md_atof (type, litP, sizeP)
{
for (i = 0; i < prec; i++)
{
- md_number_to_chars (litP, (valueT) words[i], sizeof (LITTLENUM_TYPE));
+ md_number_to_chars (litP, (valueT) words[i],
+ sizeof (LITTLENUM_TYPE));
litP += sizeof (LITTLENUM_TYPE);
}
}
@@ -2757,11 +2848,12 @@ md_atof (type, litP, sizeP)
{
for (i = prec - 1; i >= 0; i--)
{
- md_number_to_chars (litP, (valueT) words[i], sizeof (LITTLENUM_TYPE));
+ md_number_to_chars (litP, (valueT) words[i],
+ sizeof (LITTLENUM_TYPE));
litP += sizeof (LITTLENUM_TYPE);
}
}
-
+
return 0;
}
@@ -2778,14 +2870,15 @@ md_number_to_chars (buf, val, n)
number_to_chars_bigendian (buf, val, n);
else if (target_little_endian_data
&& ((n == 4 || n == 2) && ~now_seg->flags & SEC_ALLOC))
- /* Output debug words, which are not in allocated sections, as big endian */
+ /* Output debug words, which are not in allocated sections, as big
+ endian. */
number_to_chars_bigendian (buf, val, n);
else if (target_little_endian_data || ! target_big_endian)
number_to_chars_littleendian (buf, val, n);
}
/* Apply a fixS to the frags, now that we know the value it ought to
- hold. */
+ hold. */
int
md_apply_fix3 (fixP, value, segment)
@@ -2801,7 +2894,7 @@ md_apply_fix3 (fixP, value, segment)
assert (fixP->fx_r_type < BFD_RELOC_UNUSED);
- fixP->fx_addnumber = val; /* Remember value for emit_reloc */
+ fixP->fx_addnumber = val; /* Remember value for emit_reloc. */
#ifdef OBJ_ELF
/* FIXME: SPARC ELF relocations don't use an addend in the data
@@ -2890,7 +2983,7 @@ md_apply_fix3 (fixP, value, segment)
{
md_number_to_chars (buf, val, 8);
}
- else if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
+ else if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
|| fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
{
fixP->fx_done = 0;
@@ -2904,7 +2997,7 @@ md_apply_fix3 (fixP, value, segment)
insn = bfd_getb32 ((unsigned char *) buf);
else
insn = bfd_getl32 ((unsigned char *) buf);
-
+
switch (fixP->fx_r_type)
{
case BFD_RELOC_32_PCREL_S2:
@@ -2915,7 +3008,91 @@ md_apply_fix3 (fixP, value, segment)
|| fixP->fx_addsy == NULL
|| symbol_section_p (fixP->fx_addsy))
++val;
+
insn |= val & 0x3fffffff;
+
+ /* See if we have a delay slot. */
+ if (sparc_relax && fixP->fx_where + 8 <= fixP->fx_frag->fr_fix)
+ {
+#define G0 0
+#define O7 15
+#define XCC (2 << 20)
+#define COND(x) (((x)&0xf)<<25)
+#define CONDA COND(0x8)
+#define INSN_BPA (F2(0,1) | CONDA | BPRED | XCC)
+#define INSN_BA (F2(0,2) | CONDA)
+#define INSN_OR F3(2, 0x2, 0)
+#define INSN_NOP F2(0,4)
+
+ long delay;
+
+ /* If the instruction is a call with either:
+ restore
+ arithmetic instruction with rd == %o7
+ where rs1 != %o7 and rs2 if it is register != %o7
+ then we can optimize if the call destination is near
+ by changing the call into a branch always. */
+ if (INSN_BIG_ENDIAN)
+ delay = bfd_getb32 ((unsigned char *) buf + 4);
+ else
+ delay = bfd_getl32 ((unsigned char *) buf + 4);
+ if ((insn & OP (~0)) != OP (1) || (delay & OP (~0)) != OP (2))
+ break;
+ if ((delay & OP3 (~0)) != OP3 (0x3d) /* Restore. */
+ && ((delay & OP3 (0x28)) != 0 /* Arithmetic. */
+ || ((delay & RD (~0)) != RD (O7))))
+ break;
+ if ((delay & RS1 (~0)) == RS1 (O7)
+ || ((delay & F3I (~0)) == 0
+ && (delay & RS2 (~0)) == RS2 (O7)))
+ break;
+ /* Ensure the branch will fit into simm22. */
+ if ((val & 0x3fe00000)
+ && (val & 0x3fe00000) != 0x3fe00000)
+ break;
+ /* Check if the arch is v9 and branch will fit
+ into simm19. */
+ if (((val & 0x3c0000) == 0
+ || (val & 0x3c0000) == 0x3c0000)
+ && (sparc_arch_size == 64
+ || current_architecture >= SPARC_OPCODE_ARCH_V9))
+ /* ba,pt %xcc */
+ insn = INSN_BPA | (val & 0x7ffff);
+ else
+ /* ba */
+ insn = INSN_BA | (val & 0x3fffff);
+ if (fixP->fx_where >= 4
+ && ((delay & (0xffffffff ^ RS1 (~0)))
+ == (INSN_OR | RD (O7) | RS2 (G0))))
+ {
+ long setter;
+ int reg;
+
+ if (INSN_BIG_ENDIAN)
+ setter = bfd_getb32 ((unsigned char *) buf - 4);
+ else
+ setter = bfd_getl32 ((unsigned char *) buf - 4);
+ if ((setter & (0xffffffff ^ RD (~0)))
+ != (INSN_OR | RS1 (O7) | RS2 (G0)))
+ break;
+ /* The sequence was
+ or %o7, %g0, %rN
+ call foo
+ or %rN, %g0, %o7
+
+ If call foo was replaced with ba, replace
+ or %rN, %g0, %o7 with nop. */
+ reg = (delay & RS1 (~0)) >> 14;
+ if (reg != ((setter & RD (~0)) >> 25)
+ || reg == G0 || reg == O7)
+ break;
+
+ if (INSN_BIG_ENDIAN)
+ bfd_putb32 (INSN_NOP, (unsigned char *) buf + 4);
+ else
+ bfd_putl32 (INSN_NOP, (unsigned char *) buf + 4);
+ }
+ }
break;
case BFD_RELOC_SPARC_11:
@@ -2954,7 +3131,7 @@ md_apply_fix3 (fixP, value, segment)
break;
case BFD_RELOC_SPARC_WDISP16:
- /* FIXME: simplify */
+ /* FIXME: simplify. */
if (((val > 0) && (val & ~0x3fffc))
|| ((val < 0) && (~(val - 1) & ~0x3fffc)))
as_bad_where (fixP->fx_file, fixP->fx_line,
@@ -2965,7 +3142,7 @@ md_apply_fix3 (fixP, value, segment)
break;
case BFD_RELOC_SPARC_WDISP19:
- /* FIXME: simplify */
+ /* FIXME: simplify. */
if (((val > 0) && (val & ~0x1ffffc))
|| ((val < 0) && (~(val - 1) & ~0x1ffffc)))
as_bad_where (fixP->fx_file, fixP->fx_line,
@@ -2977,7 +3154,7 @@ md_apply_fix3 (fixP, value, segment)
case BFD_RELOC_SPARC_HH22:
val = BSR (val, 32);
- /* intentional fallthrough */
+ /* Fall through. */
case BFD_RELOC_SPARC_LM22:
case BFD_RELOC_HI22:
@@ -3001,7 +3178,7 @@ md_apply_fix3 (fixP, value, segment)
case BFD_RELOC_SPARC_HM10:
val = BSR (val, 32);
- /* intentional fallthrough */
+ /* Fall through. */
case BFD_RELOC_LO10:
if (!fixP->fx_addsy)
@@ -3018,7 +3195,7 @@ md_apply_fix3 (fixP, value, segment)
case BFD_RELOC_SPARC_OLO10:
val &= 0x3ff;
val += fixP->tc_fix_data;
- /* intentional fallthrough */
+ /* Fall through. */
case BFD_RELOC_SPARC13:
if (! in_signed_range (val, 0x1fff))
@@ -3029,7 +3206,7 @@ md_apply_fix3 (fixP, value, segment)
case BFD_RELOC_SPARC_WDISP22:
val = (val >> 2) + 1;
- /* FALLTHROUGH */
+ /* Fall through. */
case BFD_RELOC_SPARC_BASE22:
insn |= val & 0x3fffff;
break;
@@ -3056,7 +3233,7 @@ md_apply_fix3 (fixP, value, segment)
case BFD_RELOC_SPARC_HIX22:
if (!fixP->fx_addsy)
{
- val ^= ~ (offsetT) 0;
+ val ^= ~(offsetT) 0;
insn |= (val >> 10) & 0x3fffff;
}
break;
@@ -3089,6 +3266,7 @@ md_apply_fix3 (fixP, value, segment)
/* Translate internal representation of relocation info to BFD target
format. */
+
arelent **
tc_gen_reloc (section, fixp)
asection *section;
@@ -3190,7 +3368,7 @@ tc_gen_reloc (section, fixp)
break;
}
}
-#endif /* defined (OBJ_ELF) || defined (OBJ_AOUT) */
+#endif /* defined (OBJ_ELF) || defined (OBJ_AOUT) */
if (code == BFD_RELOC_SPARC_OLO10)
reloc->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_LO10);
@@ -3224,7 +3402,7 @@ tc_gen_reloc (section, fixp)
else
reloc->addend = fixp->fx_offset - reloc->address;
-#else /* elf or coff */
+#else /* elf or coff */
if (reloc->howto->pc_relative == 0
|| code == BFD_RELOC_SPARC_PC10
@@ -3246,7 +3424,8 @@ tc_gen_reloc (section, fixp)
relocs[2] = NULL;
reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
- *reloc->sym_ptr_ptr = symbol_get_bfdsym (section_symbol (absolute_section));
+ *reloc->sym_ptr_ptr
+ = symbol_get_bfdsym (section_symbol (absolute_section));
reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
reloc->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_SPARC13);
reloc->addend = fixp->tc_fix_data;
@@ -3255,20 +3434,20 @@ tc_gen_reloc (section, fixp)
return relocs;
}
-/* We have no need to default values of symbols. */
+/* We have no need to default values of symbols. */
-/* ARGSUSED */
symbolS *
md_undefined_symbol (name)
- char *name;
+ char *name ATTRIBUTE_UNUSED;
{
return 0;
-} /* md_undefined_symbol() */
+}
+
+/* Round up a section size to the appropriate boundary. */
-/* Round up a section size to the appropriate boundary. */
valueT
md_section_align (segment, size)
- segT segment;
+ segT segment ATTRIBUTE_UNUSED;
valueT size;
{
#ifndef OBJ_ELF
@@ -3277,7 +3456,8 @@ md_section_align (segment, size)
valueT align = ((valueT) 1
<< (valueT) bfd_get_section_alignment (stdoutput, segment));
valueT newsize;
- /* turn alignment value into a mask */
+
+ /* Turn alignment value into a mask. */
align--;
newsize = (size + align) & ~align;
return newsize;
@@ -3289,8 +3469,8 @@ md_section_align (segment, size)
/* Exactly what point is a PC-relative offset relative TO?
On the sparc, they're relative to the address of the offset, plus
its size. This gets us to the following instruction.
- (??? Is this right? FIXME-SOON) */
-long
+ (??? Is this right? FIXME-SOON) */
+long
md_pcrel_from (fixP)
fixS *fixP;
{
@@ -3322,9 +3502,7 @@ log2 (value)
return (value == 1) ? shift : -1;
}
-/*
- * sort of like s_lcomm
- */
+/* Sort of like s_lcomm. */
#ifndef OBJ_ELF
static int max_alignment = 15;
@@ -3332,7 +3510,7 @@ static int max_alignment = 15;
static void
s_reserve (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
char *p;
@@ -3362,7 +3540,7 @@ s_reserve (ignore)
as_bad (_("BSS length (%d.) <0! Ignored."), size);
ignore_rest_of_line ();
return;
- } /* bad length */
+ } /* Bad length. */
*p = 0;
symbolP = symbol_find_or_make (name);
@@ -3441,18 +3619,20 @@ s_reserve (ignore)
segT current_seg = now_seg;
subsegT current_subseg = now_subseg;
- subseg_set (bss_section, 1); /* switch to bss */
+ /* Switch to bss. */
+ subseg_set (bss_section, 1);
if (align)
- frag_align (align, 0, 0); /* do alignment */
+ /* Do alignment. */
+ frag_align (align, 0, 0);
- /* detach from old frag */
- if (S_GET_SEGMENT(symbolP) == bss_section)
+ /* Detach from old frag. */
+ if (S_GET_SEGMENT (symbolP) == bss_section)
symbol_get_frag (symbolP)->fr_symbol = NULL;
symbol_set_frag (symbolP, frag_now);
- pfrag = frag_var (rs_org, 1, 1, (relax_substateT)0, symbolP,
- (offsetT) size, (char *)0);
+ pfrag = frag_var (rs_org, 1, 1, (relax_substateT) 0, symbolP,
+ (offsetT) size, (char *) 0);
*pfrag = 0;
S_SET_SEGMENT (symbolP, bss_section);
@@ -3466,16 +3646,16 @@ s_reserve (ignore)
}
else
{
- as_warn("Ignoring attempt to re-define symbol %s",
- S_GET_NAME (symbolP));
- } /* if not redefining */
+ as_warn ("Ignoring attempt to re-define symbol %s",
+ S_GET_NAME (symbolP));
+ } /* if not redefining. */
demand_empty_rest_of_line ();
}
static void
s_common (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
char c;
@@ -3485,7 +3665,7 @@ s_common (ignore)
name = input_line_pointer;
c = get_symbol_end ();
- /* just after name is now '\0' */
+ /* Just after name is now '\0'. */
p = input_line_pointer;
*p = c;
SKIP_WHITESPACE ();
@@ -3495,7 +3675,10 @@ s_common (ignore)
ignore_rest_of_line ();
return;
}
- input_line_pointer++; /* skip ',' */
+
+ /* Skip ','. */
+ input_line_pointer++;
+
if ((temp = get_absolute_expression ()) < 0)
{
as_bad (_(".COMMon length (%d.) <0! Ignored."), temp);
@@ -3594,7 +3777,7 @@ s_common (ignore)
subseg_set (old_sec, old_subsec);
}
else
-#endif /* OBJ_ELF */
+#endif /* OBJ_ELF */
{
allocate_common:
S_SET_VALUE (symbolP, (valueT) size);
@@ -3653,7 +3836,7 @@ s_common (ignore)
static void
s_empty (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
/* The easy way to implement is to just forget about the last
instruction. */
@@ -3662,7 +3845,7 @@ s_empty (ignore)
static void
s_seg (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
if (strncmp (input_line_pointer, "\"text\"", 6) == 0)
@@ -3688,8 +3871,8 @@ s_seg (ignore)
input_line_pointer += 5;
/* We only support 2 segments -- text and data -- for now, so
things in the "bss segment" will have to go into data for now.
- You can still allocate SEG_BSS stuff with .lcomm or .reserve. */
- subseg_set (data_section, 255); /* FIXME-SOMEDAY */
+ You can still allocate SEG_BSS stuff with .lcomm or .reserve. */
+ subseg_set (data_section, 255); /* FIXME-SOMEDAY. */
return;
}
as_bad (_("Unknown segment type"));
@@ -3705,7 +3888,7 @@ s_data1 ()
static void
s_proc (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
while (!is_end_of_line[(unsigned char) *input_line_pointer])
{
@@ -3738,7 +3921,7 @@ s_uacons (bytes)
static void
s_ncons (bytes)
- int bytes;
+ int bytes ATTRIBUTE_UNUSED;
{
cons (sparc_arch_size == 32 ? 4 : 8);
}
@@ -3747,13 +3930,13 @@ s_ncons (bytes)
/* Handle the SPARC ELF .register pseudo-op. This sets the binding of a
global register.
The syntax is:
-
+
.register %g[2367],{#scratch|symbolname|#ignore}
- */
+*/
static void
s_register (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char c;
int reg;
@@ -3776,7 +3959,7 @@ s_register (ignore)
c = get_symbol_end ();
if (strcmp (regname, "scratch") && strcmp (regname, "ignore"))
as_bad (_("register syntax is .register %%g[2367],{#scratch|symbolname|#ignore}"));
- if (regname [0] == 'i')
+ if (regname[0] == 'i')
regname = NULL;
else
regname = "";
@@ -3788,17 +3971,17 @@ s_register (ignore)
}
if (sparc_arch_size == 64)
{
- if (globals [reg])
+ if (globals[reg])
{
- if ((regname && globals [reg] != (symbolS *)1
- && strcmp (S_GET_NAME (globals [reg]), regname))
- || ((regname != NULL) ^ (globals [reg] != (symbolS *)1)))
+ if ((regname && globals[reg] != (symbolS *) 1
+ && strcmp (S_GET_NAME (globals[reg]), regname))
+ || ((regname != NULL) ^ (globals[reg] != (symbolS *) 1)))
as_bad (_("redefinition of global register"));
}
else
{
if (regname == NULL)
- globals [reg] = (symbolS *)1;
+ globals[reg] = (symbolS *) 1;
else
{
if (*regname)
@@ -3807,26 +3990,26 @@ s_register (ignore)
as_bad (_("Register symbol %s already defined."),
regname);
}
- globals [reg] = symbol_make (regname);
- flags = symbol_get_bfdsym (globals [reg])->flags;
+ globals[reg] = symbol_make (regname);
+ flags = symbol_get_bfdsym (globals[reg])->flags;
if (! *regname)
flags = flags & ~(BSF_GLOBAL|BSF_LOCAL|BSF_WEAK);
if (! (flags & (BSF_GLOBAL|BSF_LOCAL|BSF_WEAK)))
flags |= BSF_GLOBAL;
- symbol_get_bfdsym (globals [reg])->flags = flags;
- S_SET_VALUE (globals [reg], (valueT)reg);
- S_SET_ALIGN (globals [reg], reg);
- S_SET_SIZE (globals [reg], 0);
+ symbol_get_bfdsym (globals[reg])->flags = flags;
+ S_SET_VALUE (globals[reg], (valueT) reg);
+ S_SET_ALIGN (globals[reg], reg);
+ S_SET_SIZE (globals[reg], 0);
/* Although we actually want undefined_section here,
we have to use absolute_section, because otherwise
generic as code will make it a COM section.
We fix this up in sparc_adjust_symtab. */
- S_SET_SEGMENT (globals [reg], absolute_section);
- S_SET_OTHER (globals [reg], 0);
- elf_symbol (symbol_get_bfdsym (globals [reg]))
+ S_SET_SEGMENT (globals[reg], absolute_section);
+ S_SET_OTHER (globals[reg], 0);
+ elf_symbol (symbol_get_bfdsym (globals[reg]))
->internal_elf_sym.st_info =
ELF_ST_INFO(STB_GLOBAL, STT_REGISTER);
- elf_symbol (symbol_get_bfdsym (globals [reg]))
+ elf_symbol (symbol_get_bfdsym (globals[reg]))
->internal_elf_sym.st_shndx = SHN_UNDEF;
}
}
@@ -3839,12 +4022,12 @@ s_register (ignore)
/* Adjust the symbol table. We set undefined sections for STT_REGISTER
symbols which need it. */
-
+
void
sparc_adjust_symtab ()
{
symbolS *sym;
-
+
for (sym = symbol_rootP; sym != NULL; sym = symbol_next (sym))
{
if (ELF_ST_TYPE (elf_symbol (symbol_get_bfdsym (sym))
@@ -3902,51 +4085,65 @@ sparc_cons_align (nbytes)
return;
}
- p = frag_var (rs_align_code, 1, 1, (relax_substateT) 0,
+ p = frag_var (rs_align_test, 1, 1, (relax_substateT) 0,
(symbolS *) NULL, (offsetT) nalign, (char *) NULL);
record_alignment (now_seg, nalign);
}
-/* This is where we do the unexpected alignment check.
- This is called from HANDLE_ALIGN in tc-sparc.h. */
+/* This is called from HANDLE_ALIGN in tc-sparc.h. */
void
sparc_handle_align (fragp)
fragS *fragp;
{
- if (fragp->fr_type == rs_align_code && !fragp->fr_subtype
- && fragp->fr_next->fr_address - fragp->fr_address - fragp->fr_fix != 0)
- as_bad_where (fragp->fr_file, fragp->fr_line, _("misaligned data"));
- if (fragp->fr_type == rs_align_code && fragp->fr_subtype == 1024)
- {
- int count = fragp->fr_next->fr_address - fragp->fr_address - fragp->fr_fix;
-
- if (count >= 4
- && !(count & 3)
- && count <= 1024
- && !((long)(fragp->fr_literal + fragp->fr_fix) & 3))
- {
- unsigned *p = (unsigned *)(fragp->fr_literal + fragp->fr_fix);
- int i;
-
- for (i = 0; i < count; i += 4, p++)
- if (INSN_BIG_ENDIAN)
- number_to_chars_bigendian ((char *)p, 0x01000000, 4); /* emit nops */
- else
- number_to_chars_littleendian ((char *)p, 0x10000000, 4);
-
- if (SPARC_OPCODE_ARCH_V9_P (max_architecture) && count > 8)
- {
- char *waddr = &fragp->fr_literal[fragp->fr_fix];
- unsigned wval = (0x30680000 | count >> 2); /* ba,a,pt %xcc, 1f */
- if (INSN_BIG_ENDIAN)
- number_to_chars_bigendian (waddr, wval, 4);
- else
- number_to_chars_littleendian (waddr, wval, 4);
- }
- fragp->fr_var = count;
- }
+ int count, fix;
+ char *p;
+
+ count = fragp->fr_next->fr_address - fragp->fr_address - fragp->fr_fix;
+
+ switch (fragp->fr_type)
+ {
+ case rs_align_test:
+ if (count != 0)
+ as_bad_where (fragp->fr_file, fragp->fr_line, _("misaligned data"));
+ break;
+
+ case rs_align_code:
+ p = fragp->fr_literal + fragp->fr_fix;
+ fix = 0;
+
+ if (count & 3)
+ {
+ fix = count & 3;
+ memset (p, 0, fix);
+ p += fix;
+ count -= fix;
+ }
+
+ if (SPARC_OPCODE_ARCH_V9_P (max_architecture) && count > 8)
+ {
+ unsigned wval = (0x30680000 | count >> 2); /* ba,a,pt %xcc, 1f */
+ if (INSN_BIG_ENDIAN)
+ number_to_chars_bigendian (p, wval, 4);
+ else
+ number_to_chars_littleendian (p, wval, 4);
+ p += 4;
+ count -= 4;
+ fix += 4;
+ }
+
+ if (INSN_BIG_ENDIAN)
+ number_to_chars_bigendian (p, 0x01000000, 4);
+ else
+ number_to_chars_littleendian (p, 0x01000000, 4);
+
+ fragp->fr_fix += fix;
+ fragp->fr_var = 4;
+ break;
+
+ default:
+ break;
}
}
@@ -3976,6 +4173,8 @@ sparc_elf_final_processing ()
elf_elfheader (stdoutput)->e_flags |= EF_SPARC_32PLUS;
if (current_architecture == SPARC_OPCODE_ARCH_V9A)
elf_elfheader (stdoutput)->e_flags |= EF_SPARC_SUN_US1;
+ else if (current_architecture == SPARC_OPCODE_ARCH_V9B)
+ elf_elfheader (stdoutput)->e_flags |= EF_SPARC_SUN_US1|EF_SPARC_SUN_US3;
}
#endif
@@ -3997,7 +4196,7 @@ cons_fix_new_sparc (frag, where, nbytes, exp)
(nbytes == 4 ? BFD_RELOC_32 : BFD_RELOC_64)));
if (target_little_endian_data && nbytes == 4
- && now_seg->flags & SEC_ALLOC)
+ && now_seg->flags & SEC_ALLOC)
r = BFD_RELOC_SPARC_REV32;
fix_new_exp (frag, where, (int) nbytes, exp, 0, r);
}
@@ -4005,13 +4204,12 @@ cons_fix_new_sparc (frag, where, nbytes, exp)
#ifdef OBJ_ELF
int
elf32_sparc_force_relocation (fixp)
- struct fix *fixp;
+ struct fix *fixp;
{
if (fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT
|| fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
return 1;
-
+
return 0;
}
#endif
-
diff --git a/contrib/binutils/gas/config/tc-sparc.h b/contrib/binutils/gas/config/tc-sparc.h
index 91fda22..17bef83 100644
--- a/contrib/binutils/gas/config/tc-sparc.h
+++ b/contrib/binutils/gas/config/tc-sparc.h
@@ -50,31 +50,24 @@ extern const char *sparc_target_format PARAMS ((void));
#define WORKING_DOT_WORD
-#define md_convert_frag(b,s,f) {as_fatal (_("sparc convert_frag\n"));}
+#define md_convert_frag(b,s,f) \
+ as_fatal (_("sparc convert_frag\n"))
#define md_estimate_size_before_relax(f,s) \
- (as_fatal(_("estimate_size_before_relax called")),1)
+ (as_fatal(_("estimate_size_before_relax called")), 1)
#define LISTING_HEADER "SPARC GAS "
extern int sparc_pic_code;
-#define md_do_align(n, fill, len, max, around) \
-if ((n) && (n) <= 10 && !need_pass_2 && !(fill) \
- && subseg_text_p (now_seg)) \
- { \
- char *p; \
- p = frag_var (rs_align_code, 1 << n, 1, (relax_substateT) 1024, \
- (symbolS *) 0, (offsetT) (n), (char *) 0); \
- *p = 0x00; \
- goto around; \
- }
-
/* We require .word, et. al., to be aligned correctly. */
#define md_cons_align(nbytes) sparc_cons_align (nbytes)
extern void sparc_cons_align PARAMS ((int));
+
#define HANDLE_ALIGN(fragp) sparc_handle_align (fragp)
extern void sparc_handle_align PARAMS ((struct frag *));
+#define MAX_MEM_FOR_RS_ALIGN_CODE (3 + 4 + 4)
+
#if defined (OBJ_ELF) || defined (OBJ_AOUT)
/* This expression evaluates to false if the relocation is for a local
@@ -186,14 +179,16 @@ extern void cons_fix_new_sparc
{ \
(X)->tc_fix_data = 0; \
} \
- while(0)
+ while (0)
#define TC_FIX_DATA_PRINT(FILE, FIXP) \
do \
{ \
- fprintf((FILE), "addend2=%ld\n", \
+ fprintf ((FILE), "addend2=%ld\n", \
(unsigned long) (FIXP)->tc_fix_data); \
} \
- while(0)
+ while (0)
+
+#define DWARF2_LINE_MIN_INSN_LENGTH 4
/* end of tc-sparc.h */
diff --git a/contrib/binutils/gas/config/tc-tic30.c b/contrib/binutils/gas/config/tc-tic30.c
index 255c06a..e11cb33 100644
--- a/contrib/binutils/gas/config/tc-tic30.c
+++ b/contrib/binutils/gas/config/tc-tic30.c
@@ -1,5 +1,5 @@
/* tc-c30.c -- Assembly code for the Texas Instruments TMS320C30
- Copyright (C) 1998, 1999 Free Software Foundation.
+ Copyright (C) 1998, 1999, 2000 Free Software Foundation.
Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au)
This file is part of GAS, the GNU Assembler.
@@ -19,20 +19,20 @@
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-/*
- Texas Instruments TMS320C30 machine specific gas.
+/* Texas Instruments TMS320C30 machine specific gas.
Written by Steven Haworth (steve@pm.cse.rmit.edu.au).
Bugs & suggestions are completely welcome. This is free software.
- Please help us make it better.
- */
+ Please help us make it better. */
#include "as.h"
#include "opcode/tic30.h"
-/* put here all non-digit non-letter charcters that may occur in an operand */
+/* Put here all non-digit non-letter charcters that may occur in an
+ operand. */
static char operand_special_chars[] = "%$-+(,)*._~/<>&^!:[@]";
-static char *ordinal_names[] =
-{"first", "second", "third", "fourth", "fifth"};
+static char *ordinal_names[] = {
+ "first", "second", "third", "fourth", "fifth"
+};
const int md_reloc_size = 0;
@@ -41,19 +41,19 @@ const char line_comment_chars[] = "*";
const char line_separator_chars[] = "";
const char *md_shortopts = "";
-struct option md_longopts[] =
-{
+struct option md_longopts[] = {
{NULL, no_argument, NULL, 0}
};
size_t md_longopts_size = sizeof (md_longopts);
-/* Chars that mean this number is a floating point constant */
+/* Chars that mean this number is a floating point constant. */
/* As in 0f12.456 */
/* or 0d1.2345e12 */
const char FLT_CHARS[] = "fFdDxX";
-/* Chars that can be used to separate mant from exp in floating point nums */
+/* Chars that can be used to separate mant from exp in floating point
+ nums. */
const char EXP_CHARS[] = "eE";
/* tables for lexical analysis */
@@ -72,8 +72,7 @@ static char digit_chars[256];
#define is_identifier_char(x) (identifier_chars[(unsigned char) x])
#define is_digit_char(x) (digit_chars[(unsigned char) x])
-const pseudo_typeS md_pseudo_table[] =
-{
+const pseudo_typeS md_pseudo_table[] = {
{0, 0, 0}
};
@@ -85,7 +84,7 @@ const pseudo_typeS md_pseudo_table[] =
#include <stdarg.h>
int
-debug (const char *string,...)
+debug (const char *string, ...)
{
if (flag_debug)
{
@@ -230,42 +229,32 @@ md_begin ()
#define PC_Register 0x00000000
#define PC_Relative 0x02000000
-typedef struct
-{
+typedef struct {
unsigned op_type;
- struct
- {
- int resolved;
- unsigned address;
- char *label;
- expressionS direct_expr;
- }
- direct;
- struct
- {
- unsigned mod;
- int ARnum;
- unsigned char disp;
- }
- indirect;
- struct
- {
- unsigned opcode;
- }
- reg;
- struct
- {
- int resolved;
- int decimal_found;
- float f_number;
- int s_number;
- unsigned int u_number;
- char *label;
- expressionS imm_expr;
- }
- immediate;
-}
-operand;
+ struct {
+ int resolved;
+ unsigned address;
+ char *label;
+ expressionS direct_expr;
+ } direct;
+ struct {
+ unsigned mod;
+ int ARnum;
+ unsigned char disp;
+ } indirect;
+ struct {
+ unsigned opcode;
+ } reg;
+ struct {
+ int resolved;
+ int decimal_found;
+ float f_number;
+ int s_number;
+ unsigned int u_number;
+ char *label;
+ expressionS imm_expr;
+ } immediate;
+} operand;
int tic30_parallel_insn PARAMS ((char *));
operand *tic30_operand PARAMS ((char *));
@@ -273,15 +262,14 @@ char *tic30_find_parallel_insn PARAMS ((char *, char *));
template *opcode;
-struct tic30_insn
- {
- template *tm; /* Template of current instruction */
- unsigned opcode; /* Final opcode */
- int operands; /* Number of given operands */
- /* Type of operand given in instruction */
- operand *operand_type[MAX_OPERANDS];
- unsigned addressing_mode; /* Final addressing mode of instruction */
- };
+struct tic30_insn {
+ template *tm; /* Template of current instruction */
+ unsigned opcode; /* Final opcode */
+ int operands; /* Number of given operands */
+ /* Type of operand given in instruction */
+ operand *operand_type[MAX_OPERANDS];
+ unsigned addressing_mode; /* Final addressing mode of instruction */
+};
struct tic30_insn insn;
static int found_parallel_insn;
@@ -317,7 +305,7 @@ md_assemble (line)
return;
}
/* Check if instruction is a parallel instruction by seeing if the first
- character is a q. */
+ character is a q. */
if (*token_start == 'q')
{
if (tic30_parallel_insn (token_start))
@@ -444,7 +432,7 @@ md_assemble (line)
int numops = insn.tm->operands;
/* If operands are not the same, then see if any of the operands are not
required. Then recheck with number of given operands. If they are still not
- the same, then give an error, otherwise carry on. */
+ the same, then give an error, otherwise carry on. */
for (i = 0; i < insn.tm->operands; i++)
if (insn.tm->operand_types[i] & NotReq)
numops--;
@@ -465,7 +453,7 @@ md_assemble (line)
if (insn.tm->opcode_modifier == AddressMode)
{
int addr_insn = 0;
- /* Store instruction uses the second operand for the address mode. */
+ /* Store instruction uses the second operand for the address mode. */
if ((insn.tm->operand_types[1] & (Indirect | Direct)) == (Indirect | Direct))
addr_insn = 1;
if (insn.operand_type[addr_insn]->op_type & (AllReg))
@@ -484,11 +472,11 @@ md_assemble (line)
return;
}
}
- /* Now set the addressing mode for 3 operand instructions. */
+ /* Now set the addressing mode for 3 operand instructions. */
if ((insn.tm->operand_types[0] & op3T1) && (insn.tm->operand_types[1] & op3T2))
{
/* Set the addressing mode to the values used for 2 operand instructions in the
- G addressing field of the opcode. */
+ G addressing field of the opcode. */
char *p;
switch (insn.operand_type[0]->op_type)
{
@@ -522,7 +510,7 @@ md_assemble (line)
}
/* Now make up the opcode for the 3 operand instructions. As in parallel
instructions, there will be no unresolved values, so they can be fully formed
- and added to the frag table. */
+ and added to the frag table. */
insn.opcode = insn.tm->base_opcode;
if (insn.operand_type[0]->op_type & Indirect)
{
@@ -549,7 +537,7 @@ md_assemble (line)
char *p;
int am_insn = -1;
insn.opcode = insn.tm->base_opcode;
- /* Create frag for instruction - all instructions are 4 bytes long. */
+ /* Create frag for instruction - all instructions are 4 bytes long. */
p = frag_more (INSN_SIZE);
if ((insn.operands > 0) && (insn.tm->opcode_modifier == AddressMode))
{
@@ -746,7 +734,7 @@ md_assemble (line)
md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
fix = fix_new_exp (frag_now, p + 3 - (frag_now->fr_literal), 1, &insn.operand_type[0]->direct.direct_expr, 0, 0);
/* Ensure that the assembler doesn't complain about fitting a 24-bit
- address into 8 bits. */
+ address into 8 bits. */
fix->fx_no_overflow = 1;
}
}
@@ -790,12 +778,12 @@ md_assemble (line)
}
else if (insn.tm->operand_types[0] & NotReq)
{
- /* Check for NOP instruction without arguments. */
+ /* Check for NOP instruction without arguments. */
md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
}
else if (insn.tm->operands == 0)
{
- /* Check for instructions without operands. */
+ /* Check for instructions without operands. */
md_number_to_chars (p, (valueT) insn.opcode, INSN_SIZE);
}
}
@@ -813,13 +801,12 @@ md_assemble (line)
debug ("\n");
}
-struct tic30_par_insn
-{
+struct tic30_par_insn {
partemplate *tm; /* Template of current parallel instruction */
int operands[2]; /* Number of given operands for each insn */
/* Type of operand given in instruction */
operand *operand_type[2][MAX_OPERANDS];
- int swap_operands; /* Whether to swap operands around. */
+ int swap_operands; /* Whether to swap operands around. */
unsigned p_field; /* Value of p field in multiply add/sub instructions */
unsigned opcode; /* Final opcode */
};
@@ -1039,7 +1026,7 @@ tic30_parallel_insn (char *token)
/* Get number of R register and indirect reference contained within the first
two operands of each instruction. This is required for the multiply
parallel instructions which require two R registers and two indirect
- references, but not in any particular place. */
+ references, but not in any particular place. */
if ((p_insn.operand_type[count][i]->op_type & Rn) && i < 2)
num_rn++;
else if ((p_insn.operand_type[count][i]->op_type & Indirect) && i < 2)
@@ -1109,7 +1096,7 @@ tic30_parallel_insn (char *token)
debug ("P field: %08X\n", p_insn.p_field);
/* Finalise opcode. This is easier for parallel instructions as they have to be
fully resolved, there are no memory addresses allowed, except through indirect
- addressing, so there are no labels to resolve. */
+ addressing, so there are no labels to resolve. */
{
p_insn.opcode = p_insn.tm->base_opcode;
switch (p_insn.tm->oporder)
@@ -1201,7 +1188,7 @@ tic30_parallel_insn (char *token)
}
break;
}
- } /* Opcode is finalised at this point for all parallel instructions. */
+ } /* Opcode is finalised at this point for all parallel instructions. */
{ /* Output opcode */
char *p;
p = frag_more (INSN_SIZE);
@@ -1303,7 +1290,7 @@ tic30_operand (token)
if (*(token + count) == '(')
{
/* Parenthesis found, so check if a displacement value is inside. If so, get
- the value and remove it from the buffer. */
+ the value and remove it from the buffer. */
if (is_digit_char (*(token + count + 1)))
{
char disp[10];
@@ -1459,7 +1446,7 @@ tic30_find_parallel_insn (current_line, next_line)
char *parallel_insn;
debug ("In tic30_find_parallel_insn()\n");
- while (!is_end_of_line[(int) *next_line])
+ while (!is_end_of_line[(unsigned char) *next_line])
{
if (*next_line == PARALLEL_SEPARATOR && *(next_line + 1) == PARALLEL_SEPARATOR)
{
@@ -1495,7 +1482,7 @@ tic30_find_parallel_insn (current_line, next_line)
int char_ptr = 0;
char c;
- while (!is_end_of_line[(int) (c = *line)] && *line)
+ while (!is_end_of_line[(unsigned char) (c = *line)])
{
if (is_opcode_char (c) && search_status == NONE)
{
@@ -1543,7 +1530,7 @@ tic30_find_parallel_insn (current_line, next_line)
#undef END_OPERANDS
/* In order to get gas to ignore any | chars at the start of a line,
- this function returns true if a | is found in a line. */
+ this function returns true if a | is found in a line. */
int
tic30_unrecognized_line (c)
@@ -1588,7 +1575,7 @@ md_apply_fix (fixP, valP)
char *buf = fixP->fx_frag->fr_literal + fixP->fx_where;
value /= INSN_SIZE;
if (fixP->fx_size == 1)
- { /* Special fix for LDP instruction. */
+ { /* Special fix for LDP instruction. */
value = (value & 0x00FF0000) >> 16;
}
debug ("new value = %ld\n", (long) value);
@@ -1650,7 +1637,7 @@ md_pcrel_from (fixP)
debug ("fx_size = %d\n", fixP->fx_size);
/* Find the opcode that represents the current instruction in the fr_literal
storage area, and check bit 21. Bit 21 contains whether the current instruction
- is a delayed one or not, and then set the offset value appropriately. */
+ is a delayed one or not, and then set the offset value appropriately. */
if (fixP->fx_frag->fr_literal[fixP->fx_where - fixP->fx_size + 1] & 0x20)
offset = 3;
else
@@ -1682,7 +1669,8 @@ md_atof (what_statement_type, literalP, sizeP)
debug ("literal = %s\n", literalP);
debug ("line = ");
token = input_line_pointer;
- while (!is_end_of_line[(unsigned) *input_line_pointer] && (*input_line_pointer) && (*input_line_pointer != ','))
+ while (!is_end_of_line[(unsigned char) *input_line_pointer]
+ && (*input_line_pointer != ','))
{
debug ("%c", *input_line_pointer);
input_line_pointer++;
diff --git a/contrib/binutils/gas/config/tc-tic30.h b/contrib/binutils/gas/config/tc-tic30.h
index d172d2e..5b34cf1 100644
--- a/contrib/binutils/gas/config/tc-tic30.h
+++ b/contrib/binutils/gas/config/tc-tic30.h
@@ -1,5 +1,5 @@
/* tc-tic30.h -- Header file for tc-tic30.c
- Copyright (C) 1998 Free Software Foundation.
+ Copyright (C) 1998, 2000 Free Software Foundation.
Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au)
This file is part of GAS, the GNU Assembler.
@@ -45,7 +45,7 @@ char *output_invalid PARAMS ((int c));
/* Define this to 1 if you want the debug output to be on stdout,
otherwise stderr will be used. If stderr is used, there will be a
better synchronisation with the as_bad outputs, but you can't
- capture the output. */
+ capture the output. */
#define USE_STDOUT 0
#define tc_unrecognized_line tic30_unrecognized_line
diff --git a/contrib/binutils/gas/config/tc-v850.c b/contrib/binutils/gas/config/tc-v850.c
index e53054d..57931950 100644
--- a/contrib/binutils/gas/config/tc-v850.c
+++ b/contrib/binutils/gas/config/tc-v850.c
@@ -1,5 +1,5 @@
/* tc-v850.c -- Assembler code for the NEC V850
- Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation.
+ Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation.
This file is part of GAS, the GNU Assembler.
@@ -21,60 +21,58 @@
#include <stdio.h>
#include <ctype.h>
#include "as.h"
-#include "subsegs.h"
+#include "subsegs.h"
#include "opcode/v850.h"
+#include "dwarf2dbg.h"
#define AREA_ZDA 0
#define AREA_SDA 1
#define AREA_TDA 2
-/* sign-extend a 16-bit number */
-#define SEXT16(x) ((((x) & 0xffff) ^ (~ 0x7fff)) + 0x8000)
+/* Sign-extend a 16-bit number. */
+#define SEXT16(x) ((((x) & 0xffff) ^ (~0x7fff)) + 0x8000)
/* Temporarily holds the reloc in a cons expression. */
-static bfd_reloc_code_real_type hold_cons_reloc;
+static bfd_reloc_code_real_type hold_cons_reloc = BFD_RELOC_UNUSED;
/* Set to TRUE if we want to be pedantic about signed overflows. */
static boolean warn_signed_overflows = FALSE;
static boolean warn_unsigned_overflows = FALSE;
/* Indicates the target BFD machine number. */
-static int machine = -1;
+static int machine = -1;
/* Indicates the target processor(s) for the assemble. */
-static unsigned int processor_mask = -1;
-
+static int processor_mask = -1;
/* Structure to hold information about predefined registers. */
-struct reg_name
-{
- const char * name;
- int value;
+struct reg_name {
+ const char *name;
+ int value;
};
-/* Generic assembler global variables which must be defined by all targets. */
+/* Generic assembler global variables which must be defined by all
+ targets. */
-/* Characters which always start a comment. */
+/* 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
+/* 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
+/* 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,
+/* Characters which mean that a number is a floating point constant,
as in 0d1.0. */
const char FLT_CHARS[] = "dD";
-
-const relax_typeS md_relax_table[] =
-{
+const relax_typeS md_relax_table[] = {
/* Conditional branches. */
{0xff, -0x100, 2, 1},
{0x1fffff, -0x200000, 6, 0},
@@ -83,7 +81,6 @@ const relax_typeS md_relax_table[] =
{0x1fffff, -0x200000, 4, 0},
};
-
static segT sdata_section = NULL;
static segT tdata_section = NULL;
static segT zdata_section = NULL;
@@ -98,207 +95,207 @@ static segT zcommon_section = NULL;
static segT call_table_data_section = NULL;
static segT call_table_text_section = NULL;
-/* fixups */
+/* Fixups. */
#define MAX_INSN_FIXUPS (5)
-struct v850_fixup
-{
- expressionS exp;
- int opindex;
+struct v850_fixup {
+ expressionS exp;
+ int opindex;
bfd_reloc_code_real_type reloc;
};
-struct v850_fixup fixups [MAX_INSN_FIXUPS];
+struct v850_fixup fixups[MAX_INSN_FIXUPS];
static int fc;
-
void
-v850_sdata (int ignore)
+v850_sdata (int ignore ATTRIBUTE_UNUSED)
{
- obj_elf_section_change_hook();
-
+ obj_elf_section_change_hook ();
+
subseg_set (sdata_section, (subsegT) get_absolute_expression ());
demand_empty_rest_of_line ();
}
void
-v850_tdata (int ignore)
+v850_tdata (int ignore ATTRIBUTE_UNUSED)
{
- obj_elf_section_change_hook();
-
+ obj_elf_section_change_hook ();
+
subseg_set (tdata_section, (subsegT) get_absolute_expression ());
-
+
demand_empty_rest_of_line ();
}
void
-v850_zdata (int ignore)
+v850_zdata (int ignore ATTRIBUTE_UNUSED)
{
- obj_elf_section_change_hook();
-
+ obj_elf_section_change_hook ();
+
subseg_set (zdata_section, (subsegT) get_absolute_expression ());
-
+
demand_empty_rest_of_line ();
}
void
-v850_sbss (int ignore)
+v850_sbss (int ignore ATTRIBUTE_UNUSED)
{
- obj_elf_section_change_hook();
-
+ obj_elf_section_change_hook ();
+
subseg_set (sbss_section, (subsegT) get_absolute_expression ());
-
+
demand_empty_rest_of_line ();
}
void
-v850_tbss (int ignore)
+v850_tbss (int ignore ATTRIBUTE_UNUSED)
{
- obj_elf_section_change_hook();
-
+ obj_elf_section_change_hook ();
+
subseg_set (tbss_section, (subsegT) get_absolute_expression ());
-
+
demand_empty_rest_of_line ();
}
void
-v850_zbss (int ignore)
+v850_zbss (int ignore ATTRIBUTE_UNUSED)
{
- obj_elf_section_change_hook();
-
+ obj_elf_section_change_hook ();
+
subseg_set (zbss_section, (subsegT) get_absolute_expression ());
-
+
demand_empty_rest_of_line ();
}
void
-v850_rosdata (int ignore)
+v850_rosdata (int ignore ATTRIBUTE_UNUSED)
{
- obj_elf_section_change_hook();
-
+ obj_elf_section_change_hook ();
+
subseg_set (rosdata_section, (subsegT) get_absolute_expression ());
-
+
demand_empty_rest_of_line ();
}
void
-v850_rozdata (int ignore)
+v850_rozdata (int ignore ATTRIBUTE_UNUSED)
{
- obj_elf_section_change_hook();
-
+ obj_elf_section_change_hook ();
+
subseg_set (rozdata_section, (subsegT) get_absolute_expression ());
-
+
demand_empty_rest_of_line ();
}
void
-v850_call_table_data (int ignore)
+v850_call_table_data (int ignore ATTRIBUTE_UNUSED)
{
- obj_elf_section_change_hook();
-
+ obj_elf_section_change_hook ();
+
subseg_set (call_table_data_section, (subsegT) get_absolute_expression ());
-
+
demand_empty_rest_of_line ();
}
void
-v850_call_table_text (int ignore)
+v850_call_table_text (int ignore ATTRIBUTE_UNUSED)
{
- obj_elf_section_change_hook();
-
+ obj_elf_section_change_hook ();
+
subseg_set (call_table_text_section, (subsegT) get_absolute_expression ());
-
+
demand_empty_rest_of_line ();
}
void
-v850_bss (int ignore)
+v850_bss (int ignore ATTRIBUTE_UNUSED)
{
register int temp = get_absolute_expression ();
- obj_elf_section_change_hook();
-
+ obj_elf_section_change_hook ();
+
subseg_set (bss_section, (subsegT) temp);
-
+
demand_empty_rest_of_line ();
}
void
-v850_offset (int ignore)
+v850_offset (int ignore ATTRIBUTE_UNUSED)
{
int temp = get_absolute_expression ();
-
- temp -= frag_now_fix();
-
+
+ temp -= frag_now_fix ();
+
if (temp > 0)
(void) frag_more (temp);
-
+
demand_empty_rest_of_line ();
}
-/* Copied from obj_elf_common() in gas/config/obj-elf.c */
+/* Copied from obj_elf_common() in gas/config/obj-elf.c. */
+
static void
v850_comm (area)
int area;
{
- char * name;
- char c;
- char * p;
- int temp;
- int size;
- symbolS * symbolP;
- int have_align;
+ char *name;
+ char c;
+ char *p;
+ int temp;
+ unsigned int size;
+ symbolS *symbolP;
+ int have_align;
name = input_line_pointer;
c = get_symbol_end ();
-
- /* just after name is now '\0' */
+
+ /* 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 ',' */
-
+
+ /* Skip ','. */
+ input_line_pointer++;
+
if ((temp = get_absolute_expression ()) < 0)
{
- /* xgettext:c-format */
+ /* xgettext:c-format */
as_bad (_(".COMMon length (%d.) < 0! Ignored."), temp);
ignore_rest_of_line ();
return;
}
-
+
size = temp;
*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 (S_GET_VALUE (symbolP) != 0)
{
if (S_GET_VALUE (symbolP) != size)
{
- /* xgettext:c-format */
+ /* xgettext:c-format */
as_warn (_("Length of .comm \"%s\" is already %ld. Not changed to %d."),
S_GET_NAME (symbolP), (long) S_GET_VALUE (symbolP), size);
}
}
-
- know (symbol_get_frag (symbolP) == & zero_address_frag);
-
+
+ know (symbol_get_frag (symbolP) == &zero_address_frag);
+
if (*input_line_pointer != ',')
have_align = 0;
else
@@ -307,7 +304,7 @@ v850_comm (area)
input_line_pointer++;
SKIP_WHITESPACE ();
}
-
+
if (! have_align || *input_line_pointer != '"')
{
if (! have_align)
@@ -315,60 +312,60 @@ v850_comm (area)
else
{
temp = get_absolute_expression ();
-
+
if (temp < 0)
{
temp = 0;
as_warn (_("Common alignment negative; 0 assumed"));
}
}
-
+
if (symbol_get_obj (symbolP)->local)
{
- segT old_sec;
- int old_subsec;
- char * pfrag;
- int align;
- flagword applicable;
+ segT old_sec;
+ int old_subsec;
+ char *pfrag;
+ int align;
+ flagword applicable;
old_sec = now_seg;
old_subsec = now_subseg;
-
+
applicable = bfd_applicable_section_flags (stdoutput);
-
+
applicable &= SEC_ALLOC;
-
+
switch (area)
{
case AREA_SDA:
if (sbss_section == NULL)
{
sbss_section = subseg_new (".sbss", 0);
-
+
bfd_set_section_flags (stdoutput, sbss_section, applicable);
-
+
seg_info (sbss_section)->bss = 1;
}
break;
-
+
case AREA_ZDA:
if (zbss_section == NULL)
{
zbss_section = subseg_new (".zbss", 0);
-
+
bfd_set_section_flags (stdoutput, sbss_section, applicable);
-
+
seg_info (zbss_section)->bss = 1;
}
break;
-
+
case AREA_TDA:
if (tbss_section == NULL)
{
tbss_section = subseg_new (".tbss", 0);
-
+
bfd_set_section_flags (stdoutput, tbss_section, applicable);
-
+
seg_info (tbss_section)->bss = 1;
}
break;
@@ -376,10 +373,10 @@ v850_comm (area)
if (temp)
{
- /* convert to a power of 2 alignment */
+ /* Convert to a power of 2 alignment. */
for (align = 0; (temp & 1) == 0; temp >>= 1, ++align)
;
-
+
if (temp != 1)
{
as_bad (_("Common alignment not a power of 2"));
@@ -389,31 +386,31 @@ v850_comm (area)
}
else
align = 0;
-
+
switch (area)
{
case AREA_SDA:
record_alignment (sbss_section, align);
- obj_elf_section_change_hook();
+ obj_elf_section_change_hook ();
subseg_set (sbss_section, 0);
break;
case AREA_ZDA:
record_alignment (zbss_section, align);
- obj_elf_section_change_hook();
+ obj_elf_section_change_hook ();
subseg_set (zbss_section, 0);
break;
case AREA_TDA:
record_alignment (tbss_section, align);
- obj_elf_section_change_hook();
+ obj_elf_section_change_hook ();
subseg_set (tbss_section, 0);
break;
default:
- abort();
+ abort ();
}
-
+
if (align)
frag_align (align, 0, 0);
@@ -437,33 +434,33 @@ v850_comm (area)
default:
abort ();
}
-
+
symbol_set_frag (symbolP, frag_now);
pfrag = frag_var (rs_org, 1, 1, (relax_substateT) 0, symbolP,
(offsetT) size, (char *) 0);
*pfrag = 0;
S_SET_SIZE (symbolP, size);
-
+
switch (area)
{
case AREA_SDA:
S_SET_SEGMENT (symbolP, sbss_section);
break;
-
+
case AREA_ZDA:
S_SET_SEGMENT (symbolP, zbss_section);
break;
-
+
case AREA_TDA:
S_SET_SEGMENT (symbolP, tbss_section);
break;
-
+
default:
- abort();
+ abort ();
}
-
+
S_CLEAR_EXTERNAL (symbolP);
- obj_elf_section_change_hook();
+ obj_elf_section_change_hook ();
subseg_set (old_sec, old_subsec);
}
else
@@ -472,68 +469,72 @@ v850_comm (area)
S_SET_VALUE (symbolP, (valueT) size);
S_SET_ALIGN (symbolP, temp);
S_SET_EXTERNAL (symbolP);
-
+
switch (area)
{
case AREA_SDA:
if (scommon_section == NULL)
{
- flagword applicable;
-
- applicable = bfd_applicable_section_flags (stdoutput);
-
+ flagword applicable =
+ bfd_applicable_section_flags (stdoutput);
+
scommon_section = subseg_new (".scommon", 0);
-
- bfd_set_section_flags (stdoutput, scommon_section, applicable
+
+ bfd_set_section_flags (stdoutput, scommon_section,
+ (applicable
& (SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA
- | SEC_HAS_CONTENTS) | SEC_IS_COMMON);
+ | SEC_HAS_CONTENTS)) | SEC_IS_COMMON);
}
S_SET_SEGMENT (symbolP, scommon_section);
break;
-
+
case AREA_ZDA:
if (zcommon_section == NULL)
{
- flagword applicable;
-
- applicable = bfd_applicable_section_flags (stdoutput);
-
+ flagword applicable =
+ bfd_applicable_section_flags (stdoutput);
+
zcommon_section = subseg_new (".zcommon", 0);
-
- bfd_set_section_flags (stdoutput, zcommon_section, applicable
+
+ bfd_set_section_flags (stdoutput, zcommon_section,
+ (applicable
& (SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA
- | SEC_HAS_CONTENTS) | SEC_IS_COMMON);
+ | SEC_HAS_CONTENTS)) | SEC_IS_COMMON);
}
S_SET_SEGMENT (symbolP, zcommon_section);
break;
-
+
case AREA_TDA:
if (tcommon_section == NULL)
{
- flagword applicable;
-
- applicable = bfd_applicable_section_flags (stdoutput);
-
+ flagword applicable =
+ bfd_applicable_section_flags (stdoutput);
+
tcommon_section = subseg_new (".tcommon", 0);
-
- bfd_set_section_flags (stdoutput, tcommon_section, applicable
- & (SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_DATA
- | SEC_HAS_CONTENTS) | SEC_IS_COMMON);
+
+ bfd_set_section_flags (stdoutput, tcommon_section,
+ ((applicable
+ & (SEC_ALLOC | SEC_LOAD
+ | SEC_RELOC | SEC_DATA
+ | SEC_HAS_CONTENTS))
+ | SEC_IS_COMMON));
}
S_SET_SEGMENT (symbolP, tcommon_section);
break;
-
+
default:
- abort();
+ abort ();
}
}
}
else
{
input_line_pointer++;
+
/* @@ Some use the dot, some don't. Can we get some consistency?? */
if (*input_line_pointer == '.')
input_line_pointer++;
+
/* @@ Some say data, some say bss. */
if (strncmp (input_line_pointer, "bss\"", 4)
&& strncmp (input_line_pointer, "data\"", 5))
@@ -576,15 +577,14 @@ set_machine (int number)
switch (machine)
{
- case 0: processor_mask = PROCESSOR_V850; break;
- case bfd_mach_v850e: processor_mask = PROCESSOR_V850E; break;
+ case 0: processor_mask = PROCESSOR_V850; break;
+ case bfd_mach_v850e: processor_mask = PROCESSOR_V850E; break;
case bfd_mach_v850ea: processor_mask = PROCESSOR_V850EA; break;
}
}
/* The target specific pseudo-ops which we support. */
-const pseudo_typeS md_pseudo_table[] =
-{
+const pseudo_typeS md_pseudo_table[] = {
{"sdata", v850_sdata, 0},
{"tdata", v850_tdata, 0},
{"zdata", v850_zdata, 0},
@@ -604,19 +604,20 @@ const pseudo_typeS md_pseudo_table[] =
{"call_table_text", v850_call_table_text, 0},
{"v850e", set_machine, bfd_mach_v850e},
{"v850ea", set_machine, bfd_mach_v850ea},
+ {"file", dwarf2_directive_file },
+ {"loc", dwarf2_directive_loc },
{ NULL, NULL, 0}
};
/* Opcode hash table. */
static struct hash_control *v850_hash;
-/* This table is sorted. Suitable for searching by a binary search. */
-static const struct reg_name pre_defined_registers[] =
-{
+/* This table is sorted. Suitable for searching by a binary search. */
+static const struct reg_name pre_defined_registers[] = {
{ "ep", 30 }, /* ep - element ptr */
- { "gp", 4 }, /* gp - global ptr */
- { "hp", 2 }, /* hp - handler stack ptr */
- { "lp", 31 }, /* lp - link ptr */
+ { "gp", 4 }, /* gp - global ptr */
+ { "hp", 2 }, /* hp - handler stack ptr */
+ { "lp", 31 }, /* lp - link ptr */
{ "r0", 0 },
{ "r1", 1 },
{ "r10", 10 },
@@ -649,15 +650,15 @@ static const struct reg_name pre_defined_registers[] =
{ "r7", 7 },
{ "r8", 8 },
{ "r9", 9 },
- { "sp", 3 }, /* sp - stack ptr */
- { "tp", 5 }, /* tp - text ptr */
+ { "sp", 3 }, /* sp - stack ptr */
+ { "tp", 5 }, /* tp - text ptr */
{ "zero", 0 },
};
-#define REG_NAME_CNT (sizeof (pre_defined_registers) / sizeof (struct reg_name))
+#define REG_NAME_CNT \
+ (sizeof (pre_defined_registers) / sizeof (struct reg_name))
-static const struct reg_name system_registers[] =
-{
+static const struct reg_name system_registers[] = {
{ "ctbp", 20 },
{ "ctpc", 16 },
{ "ctpsw", 17 },
@@ -670,17 +671,19 @@ static const struct reg_name system_registers[] =
{ "fepsw", 3 },
{ "psw", 5 },
};
-#define SYSREG_NAME_CNT (sizeof (system_registers) / sizeof (struct reg_name))
-static const struct reg_name system_list_registers[] =
-{
+#define SYSREG_NAME_CNT \
+ (sizeof (system_registers) / sizeof (struct reg_name))
+
+static const struct reg_name system_list_registers[] = {
{"PS", 5 },
{"SR", 0 + 1}
};
-#define SYSREGLIST_NAME_CNT (sizeof (system_list_registers) / sizeof (struct reg_name))
-static const struct reg_name cc_names[] =
-{
+#define SYSREGLIST_NAME_CNT \
+ (sizeof (system_list_registers) / sizeof (struct reg_name))
+
+static const struct reg_name cc_names[] = {
{ "c", 0x1 },
{ "e", 0x2 },
{ "ge", 0xe },
@@ -704,22 +707,24 @@ static const struct reg_name cc_names[] =
{ "v", 0x0 },
{ "z", 0x2 },
};
-#define CC_NAME_CNT (sizeof (cc_names) / sizeof (struct reg_name))
-/* reg_name_search does a binary search of the given register table
- to see if "name" is a valid regiter name. Returns the register
- number from the array on success, or -1 on failure. */
+#define CC_NAME_CNT \
+ (sizeof (cc_names) / sizeof (struct reg_name))
+
+/* Do a binary search of the given register table 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 (regs, regcount, name, accept_numbers)
- const struct reg_name * regs;
- int regcount;
- const char * name;
- boolean accept_numbers;
+ const struct reg_name *regs;
+ int regcount;
+ const char *name;
+ boolean accept_numbers;
{
int middle, low, high;
int cmp;
- symbolS * symbolP;
+ symbolS *symbolP;
/* If the register name is a symbol, then evaluate it. */
if ((symbolP = symbol_find (name)) != NULL)
@@ -728,19 +733,20 @@ reg_name_search (regs, regcount, name, accept_numbers)
If the symbol is an alias for a number, then return the number. */
if (symbol_equated_p (symbolP))
{
- name = S_GET_NAME (symbol_get_value_expression (symbolP)->X_add_symbol);
+ name
+ = S_GET_NAME (symbol_get_value_expression (symbolP)->X_add_symbol);
}
else if (accept_numbers)
{
int reg = S_GET_VALUE (symbolP);
-
+
if (reg >= 0 && reg <= 31)
return reg;
}
/* Otherwise drop through and try parsing name normally. */
}
-
+
low = 0;
high = regcount - 1;
@@ -759,7 +765,6 @@ reg_name_search (regs, regcount, name, accept_numbers)
return -1;
}
-
/* Summary of register_name().
*
* in: Input_line_pointer points to 1st char of operand.
@@ -768,18 +773,18 @@ reg_name_search (regs, regcount, name, accept_numbers)
* The operand may have been a register: in this case, X_op == O_register,
* X_add_number is set to the register number, and truth is returned.
* Input_line_pointer->(next non-blank) char after operand, or is in
- * its original state.
- */
+ * its original state. */
+
static boolean
register_name (expressionP)
- expressionS * expressionP;
+ expressionS *expressionP;
{
- int reg_number;
- char * name;
- char * start;
- char c;
+ int reg_number;
+ char *name;
+ char *start;
+ char c;
- /* Find the spelling of the operand */
+ /* Find the spelling of the operand. */
start = name = input_line_pointer;
c = get_symbol_end ();
@@ -787,78 +792,79 @@ register_name (expressionP)
reg_number = reg_name_search (pre_defined_registers, REG_NAME_CNT,
name, FALSE);
- * input_line_pointer = c; /* put back the delimiting char */
-
- /* look to see if it's in the register table */
- if (reg_number >= 0)
+ /* Put back the delimiting char. */
+ *input_line_pointer = c;
+
+ /* Look to see if it's in the register table. */
+ if (reg_number >= 0)
{
expressionP->X_op = O_register;
expressionP->X_add_number = reg_number;
- /* make the rest nice */
+ /* Make the rest nice. */
expressionP->X_add_symbol = NULL;
expressionP->X_op_symbol = NULL;
-
+
return true;
}
else
{
- /* reset the line as if we had not done anything */
+ /* Reset the line as if we had not done anything. */
input_line_pointer = start;
-
+
return false;
}
}
/* Summary of system_register_name().
*
- * in: Input_line_pointer points to 1st char of operand.
- * expressionP points to an expression structure to be filled in.
- * accept_numbers is true iff numerical register names may be used.
- * accept_list_names is true iff the special names PS and SR may be
+ * in: INPUT_LINE_POINTER points to 1st char of operand.
+ * EXPRESSIONP points to an expression structure to be filled in.
+ * ACCEPT_NUMBERS is true iff numerical register names may be used.
+ * ACCEPT_LIST_NAMES is true iff the special names PS and SR may be
* accepted.
*
* out: A expressionS structure in expressionP.
* The operand may have been a register: in this case, X_op == O_register,
* X_add_number is set to the register number, and truth is returned.
* Input_line_pointer->(next non-blank) char after operand, or is in
- * its original state.
- */
+ * its original state. */
+
static boolean
system_register_name (expressionP, accept_numbers, accept_list_names)
- expressionS * expressionP;
- boolean accept_numbers;
- boolean accept_list_names;
+ expressionS *expressionP;
+ boolean accept_numbers;
+ boolean accept_list_names;
{
- int reg_number;
- char * name;
- char * start;
- char c;
+ int reg_number;
+ char *name;
+ char *start;
+ char c;
- /* Find the spelling of the operand */
+ /* Find the spelling of the operand. */
start = name = input_line_pointer;
c = get_symbol_end ();
reg_number = reg_name_search (system_registers, SYSREG_NAME_CNT, name,
accept_numbers);
- * input_line_pointer = c; /* put back the delimiting char */
-
+ /* Put back the delimiting char. */
+ *input_line_pointer = c;
+
if (reg_number < 0
&& accept_numbers)
{
- input_line_pointer = start; /* reset input_line pointer */
+ /* Reset input_line pointer. */
+ input_line_pointer = start;
- if (isdigit (* input_line_pointer))
+ if (isdigit (*input_line_pointer))
{
- reg_number = strtol (input_line_pointer, & input_line_pointer, 10);
-
- /* Make sure that the register number is allowable. */
- if ( reg_number < 0
- || reg_number > 5
- && reg_number < 16
- || reg_number > 20
- )
+ reg_number = strtol (input_line_pointer, &input_line_pointer, 10);
+
+ /* Make sure that the register number is allowable. */
+ if (reg_number < 0
+ || (reg_number > 5 && reg_number < 16)
+ || reg_number > 20)
{
reg_number = -1;
}
@@ -869,17 +875,18 @@ system_register_name (expressionP, accept_numbers, accept_list_names)
reg_number = reg_name_search (system_list_registers,
SYSREGLIST_NAME_CNT, name, FALSE);
- * input_line_pointer = c; /* put back the delimiting char */
+ /* Put back the delimiting char. */
+ *input_line_pointer = c;
}
}
-
- /* look to see if it's in the register table */
- if (reg_number >= 0)
+
+ /* Look to see if it's in the register table. */
+ if (reg_number >= 0)
{
expressionP->X_op = O_register;
expressionP->X_add_number = reg_number;
- /* make the rest nice */
+ /* Make the rest nice. */
expressionP->X_add_symbol = NULL;
expressionP->X_op_symbol = NULL;
@@ -887,47 +894,48 @@ system_register_name (expressionP, accept_numbers, accept_list_names)
}
else
{
- /* reset the line as if we had not done anything */
+ /* Reset the line as if we had not done anything. */
input_line_pointer = start;
-
+
return false;
}
}
/* Summary of cc_name().
*
- * in: Input_line_pointer points to 1st char of operand.
+ * in: INPUT_LINE_POINTER points to 1st char of operand.
*
* out: A expressionS.
* The operand may have been a register: in this case, X_op == O_register,
* X_add_number is set to the register number, and truth is returned.
* Input_line_pointer->(next non-blank) char after operand, or is in
- * its original state.
- */
+ * its original state. */
+
static boolean
cc_name (expressionP)
- expressionS * expressionP;
+ expressionS *expressionP;
{
- int reg_number;
- char * name;
- char * start;
- char c;
+ int reg_number;
+ char *name;
+ char *start;
+ char c;
- /* Find the spelling of the operand */
+ /* Find the spelling of the operand. */
start = name = input_line_pointer;
c = get_symbol_end ();
reg_number = reg_name_search (cc_names, CC_NAME_CNT, name, FALSE);
- * input_line_pointer = c; /* put back the delimiting char */
-
- /* look to see if it's in the register table */
- if (reg_number >= 0)
+ /* Put back the delimiting char. */
+ *input_line_pointer = c;
+
+ /* Look to see if it's in the register table. */
+ if (reg_number >= 0)
{
expressionP->X_op = O_constant;
expressionP->X_add_number = reg_number;
- /* make the rest nice */
+ /* Make the rest nice. */
expressionP->X_add_symbol = NULL;
expressionP->X_op_symbol = NULL;
@@ -935,9 +943,9 @@ cc_name (expressionP)
}
else
{
- /* reset the line as if we had not done anything */
+ /* Reset the line as if we had not done anything. */
input_line_pointer = start;
-
+
return false;
}
}
@@ -945,16 +953,16 @@ cc_name (expressionP)
static void
skip_white_space (void)
{
- while ( * input_line_pointer == ' '
- || * input_line_pointer == '\t')
- ++ input_line_pointer;
+ while (*input_line_pointer == ' '
+ || *input_line_pointer == '\t')
+ ++input_line_pointer;
}
/* Summary of parse_register_list ().
*
- * in: Input_line_pointer points to 1st char of a list of registers.
- * insn is the partially constructed instruction.
- * operand is the operand being inserted.
+ * in: INPUT_LINE_POINTER points to 1st char of a list of registers.
+ * INSN is the partially constructed instruction.
+ * OPERAND is the operand being inserted.
*
* out: NULL if the parse completed successfully, otherwise a
* pointer to an error message is returned. If the parse
@@ -973,24 +981,29 @@ skip_white_space (void)
* registers in the lists. The LSB in the expression refers to
* the lowest numbered permissable register in the register list,
* and so on upwards. System registers are considered to be very
- * high numbers.
- *
- */
+ * high numbers. */
+
static char *
-parse_register_list
-(
- unsigned long * insn,
- const struct v850_operand * operand
-)
+parse_register_list (insn, operand)
+ unsigned long *insn;
+ const struct v850_operand *operand;
{
- static int type1_regs[ 32 ] = { 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 29, 28, 23, 22, 21, 20, 27, 26, 25, 24 };
- static int type2_regs[ 32 ] = { 19, 18, 17, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 29, 28, 23, 22, 21, 20, 27, 26, 25, 24 };
- static int type3_regs[ 32 ] = { 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, 13, 12, 7, 6, 5, 4, 11, 10, 9, 8 };
- int * regs;
+ static int type1_regs[32] = {
+ 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 31, 29, 28, 23, 22, 21, 20, 27, 26, 25, 24
+ };
+ static int type2_regs[32] = {
+ 19, 18, 17, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 30, 31, 29, 28, 23, 22, 21, 20, 27, 26, 25, 24
+ };
+ static int type3_regs[32] = {
+ 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 14, 15, 13, 12, 7, 6, 5, 4, 11, 10, 9, 8
+ };
+ int *regs;
expressionS exp;
-
- /* Select a register array to parse. */
+ /* Select a register array to parse. */
switch (operand->shift)
{
case 0xffe00001: regs = type1_regs; break;
@@ -1006,15 +1019,14 @@ parse_register_list
/* If the expression starts with a curly brace it is a register list.
Otherwise it is a constant expression, whoes bits indicate which
registers are to be included in the list. */
-
- if (* input_line_pointer != '{')
+
+ if (*input_line_pointer != '{')
{
- int bits;
int reg;
int i;
-
- expression (& exp);
-
+
+ expression (&exp);
+
if (exp.X_op != O_constant)
return _("constant expression or register list expected");
@@ -1022,71 +1034,71 @@ parse_register_list
{
if (exp.X_add_number & 0xFFFFF000)
return _("high bits set in register list expression");
-
- for (reg = 20; reg < 32; reg ++)
+
+ for (reg = 20; reg < 32; reg++)
if (exp.X_add_number & (1 << (reg - 20)))
{
for (i = 0; i < 32; i++)
if (regs[i] == reg)
- * insn |= (1 << i);
+ *insn |= (1 << i);
}
}
else if (regs == type2_regs)
{
if (exp.X_add_number & 0xFFFE0000)
return _("high bits set in register list expression");
-
- for (reg = 1; reg < 16; reg ++)
+
+ for (reg = 1; reg < 16; reg++)
if (exp.X_add_number & (1 << (reg - 1)))
{
for (i = 0; i < 32; i++)
if (regs[i] == reg)
- * insn |= (1 << i);
+ *insn |= (1 << i);
}
if (exp.X_add_number & (1 << 15))
- * insn |= (1 << 3);
-
+ *insn |= (1 << 3);
+
if (exp.X_add_number & (1 << 16))
- * insn |= (1 << 19);
+ *insn |= (1 << 19);
}
- else /* regs == type3_regs */
+ else /* regs == type3_regs */
{
if (exp.X_add_number & 0xFFFE0000)
return _("high bits set in register list expression");
-
- for (reg = 16; reg < 32; reg ++)
+
+ for (reg = 16; reg < 32; reg++)
if (exp.X_add_number & (1 << (reg - 16)))
{
for (i = 0; i < 32; i++)
if (regs[i] == reg)
- * insn |= (1 << i);
+ *insn |= (1 << i);
}
if (exp.X_add_number & (1 << 16))
- * insn |= (1 << 19);
+ *insn |= (1 << 19);
}
return NULL;
}
- input_line_pointer ++;
+ input_line_pointer++;
/* Parse the register list until a terminator (closing curly brace or
new-line) is found. */
for (;;)
{
- if (register_name (& exp))
+ if (register_name (&exp))
{
- int i;
-
+ int i;
+
/* Locate the given register in the list, and if it is there,
insert the corresponding bit into the instruction. */
for (i = 0; i < 32; i++)
{
- if (regs[ i ] == exp.X_add_number)
+ if (regs[i] == exp.X_add_number)
{
- * insn |= (1 << i);
+ *insn |= (1 << i);
break;
}
}
@@ -1096,7 +1108,7 @@ parse_register_list
return _("illegal register included in list");
}
}
- else if (system_register_name (& exp, true, true))
+ else if (system_register_name (&exp, true, true))
{
if (regs == type1_regs)
{
@@ -1107,34 +1119,34 @@ parse_register_list
if (regs == type2_regs)
return _("PSW cannot be included in list");
else
- * insn |= 0x8;
+ *insn |= 0x8;
}
else if (exp.X_add_number < 4)
- * insn |= 0x80000;
+ *insn |= 0x80000;
else
return _("High value system registers cannot be included in list");
}
- else if (* input_line_pointer == '}')
+ else if (*input_line_pointer == '}')
{
- input_line_pointer ++;
+ input_line_pointer++;
break;
}
- else if (* input_line_pointer == ',')
+ else if (*input_line_pointer == ',')
{
- input_line_pointer ++;
+ input_line_pointer++;
continue;
}
- else if (* input_line_pointer == '-')
+ else if (*input_line_pointer == '-')
{
- /* We have encountered a range of registers: rX - rY */
- int j;
+ /* We have encountered a range of registers: rX - rY. */
+ int j;
expressionS exp2;
/* Skip the dash. */
- ++ input_line_pointer;
+ ++input_line_pointer;
/* Get the second register in the range. */
- if (! register_name (& exp2))
+ if (! register_name (&exp2))
{
return _("second register should follow dash in register list");
exp2.X_add_number = exp.X_add_number;
@@ -1143,15 +1155,15 @@ parse_register_list
/* Add the rest of the registers in the range. */
for (j = exp.X_add_number + 1; j <= exp2.X_add_number; j++)
{
- int i;
-
+ int i;
+
/* Locate the given register in the list, and if it is there,
insert the corresponding bit into the instruction. */
for (i = 0; i < 32; i++)
{
- if (regs[ i ] == j)
+ if (regs[i] == j)
{
- * insn |= (1 << i);
+ *insn |= (1 << i);
break;
}
}
@@ -1171,18 +1183,17 @@ parse_register_list
return NULL;
}
-CONST char * md_shortopts = "m:";
+CONST char *md_shortopts = "m:";
-struct option md_longopts[] =
-{
+struct option md_longopts[] = {
{NULL, no_argument, NULL, 0}
};
-size_t md_longopts_size = sizeof md_longopts;
+size_t md_longopts_size = sizeof (md_longopts);
void
md_show_usage (stream)
- FILE * stream;
+ FILE *stream;
{
fprintf (stream, _(" V850 options:\n"));
fprintf (stream, _(" -mwarn-signed-overflow Warn if signed immediate values overflow\n"));
@@ -1195,13 +1206,14 @@ md_show_usage (stream)
int
md_parse_option (c, arg)
- int c;
- char * arg;
+ int c;
+ char *arg;
{
if (c != 'm')
{
- /* xgettext:c-format */
- fprintf (stderr, _("unknown command line option: -%c%s\n"), c, arg);
+ if (c != 'a')
+ /* xgettext:c-format */
+ fprintf (stderr, _("unknown command line option: -%c%s\n"), c, arg);
return 0;
}
@@ -1230,36 +1242,39 @@ md_parse_option (c, arg)
}
else if (strcmp (arg, "v850any") == 0)
{
- machine = 0; /* Tell the world that this is for any v850 chip. */
- processor_mask = PROCESSOR_V850EA; /* But support instructions for the extended versions. */
+ /* Tell the world that this is for any v850 chip. */
+ machine = 0;
+
+ /* But support instructions for the extended versions. */
+ processor_mask = PROCESSOR_V850EA;
}
else
{
- /* xgettext:c-format */
+ /* xgettext:c-format */
fprintf (stderr, _("unknown command line option: -%c%s\n"), c, arg);
return 0;
}
-
+
return 1;
}
symbolS *
md_undefined_symbol (name)
- char * name;
+ char *name ATTRIBUTE_UNUSED;
{
return 0;
}
char *
md_atof (type, litp, sizep)
- int type;
- char * litp;
- int * sizep;
+ int type;
+ char *litp;
+ int *sizep;
{
- int prec;
+ int prec;
LITTLENUM_TYPE words[4];
- char * t;
- int i;
+ char *t;
+ int i;
switch (type)
{
@@ -1275,7 +1290,7 @@ md_atof (type, litp, sizep)
*sizep = 0;
return _("bad call to md_atof");
}
-
+
t = atof_ieee (input_line_pointer, type, words);
if (t)
input_line_pointer = t;
@@ -1291,16 +1306,16 @@ md_atof (type, litp, sizep)
return NULL;
}
-
/* Very gross. */
+
void
md_convert_frag (abfd, sec, fragP)
- bfd * abfd;
- asection * sec;
- fragS * fragP;
+ bfd *abfd ATTRIBUTE_UNUSED;
+ asection *sec;
+ fragS *fragP;
{
subseg_change (sec, 0);
-
+
/* In range conditional or unconditional branch. */
if (fragP->fr_subtype == 0 || fragP->fr_subtype == 2)
{
@@ -1312,7 +1327,7 @@ md_convert_frag (abfd, sec, fragP)
/* Out of range conditional branch. Emit a branch around a jump. */
else if (fragP->fr_subtype == 1)
{
- unsigned char *buffer =
+ unsigned char *buffer =
(unsigned char *) (fragP->fr_fix + fragP->fr_literal);
/* Reverse the condition of the first branch. */
@@ -1349,8 +1364,8 @@ md_convert_frag (abfd, sec, fragP)
valueT
md_section_align (seg, addr)
- asection * seg;
- valueT addr;
+ asection *seg;
+ valueT addr;
{
int align = bfd_get_section_alignment (stdoutput, seg);
return ((addr + (1 << align) - 1) & (-1 << align));
@@ -1359,41 +1374,40 @@ md_section_align (seg, addr)
void
md_begin ()
{
- char * prev_name = "";
- register const struct v850_opcode * op;
- flagword applicable;
+ char *prev_name = "";
+ register const struct v850_opcode *op;
+ flagword applicable;
if (strncmp (TARGET_CPU, "v850ea", 6) == 0)
{
if (machine == -1)
machine = bfd_mach_v850ea;
-
+
if (processor_mask == -1)
processor_mask = PROCESSOR_V850EA;
}
else if (strncmp (TARGET_CPU, "v850e", 5) == 0)
{
if (machine == -1)
- machine = bfd_mach_v850e;
-
+ machine = bfd_mach_v850e;
+
if (processor_mask == -1)
processor_mask = PROCESSOR_V850E;
}
- else
- if (strncmp (TARGET_CPU, "v850", 4) == 0)
+ else if (strncmp (TARGET_CPU, "v850", 4) == 0)
{
if (machine == -1)
- machine = 0;
-
+ machine = 0;
+
if (processor_mask == -1)
processor_mask = PROCESSOR_V850;
}
else
- /* xgettext:c-format */
- as_bad (_("Unable to determine default target processor from string: %s"),
+ /* xgettext:c-format */
+ as_bad (_("Unable to determine default target processor from string: %s"),
TARGET_CPU);
- v850_hash = hash_new();
+ v850_hash = hash_new ();
/* Insert unique names into hash table. The V850 instruction set
has many identical opcode names that have different opcodes based
@@ -1403,7 +1417,7 @@ md_begin ()
op = v850_opcodes;
while (op->name)
{
- if (strcmp (prev_name, op->name))
+ if (strcmp (prev_name, op->name))
{
prev_name = (char *) op->name;
hash_insert (v850_hash, op->name, (char *) op);
@@ -1414,90 +1428,115 @@ md_begin ()
bfd_set_arch_mach (stdoutput, TARGET_ARCH, machine);
applicable = bfd_applicable_section_flags (stdoutput);
-
+
call_table_data_section = subseg_new (".call_table_data", 0);
bfd_set_section_flags (stdoutput, call_table_data_section,
applicable & (SEC_ALLOC | SEC_LOAD | SEC_RELOC
| SEC_DATA | SEC_HAS_CONTENTS));
-
+
call_table_text_section = subseg_new (".call_table_text", 0);
bfd_set_section_flags (stdoutput, call_table_text_section,
applicable & (SEC_ALLOC | SEC_LOAD | SEC_READONLY
| SEC_CODE));
-
+
/* Restore text section as the current default. */
subseg_set (text_section, 0);
}
-
static bfd_reloc_code_real_type
-handle_ctoff (const struct v850_operand * operand)
+handle_ctoff (const struct v850_operand *operand)
{
if (operand == NULL)
return BFD_RELOC_V850_CALLT_16_16_OFFSET;
- if ( operand->bits != 6
+ if (operand->bits != 6
|| operand->shift != 0)
{
as_bad (_("ctoff() relocation used on an instruction which does not support it"));
return BFD_RELOC_64; /* Used to indicate an error condition. */
}
-
+
return BFD_RELOC_V850_CALLT_6_7_OFFSET;
}
static bfd_reloc_code_real_type
-handle_sdaoff (const struct v850_operand * operand)
+handle_sdaoff (const struct v850_operand *operand)
{
- if (operand == NULL) return BFD_RELOC_V850_SDA_16_16_OFFSET;
- if (operand->bits == 15 && operand->shift == 17) return BFD_RELOC_V850_SDA_15_16_OFFSET;
- if (operand->bits == -1) return BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET;
-
- if ( operand->bits != 16
+ if (operand == NULL)
+ return BFD_RELOC_V850_SDA_16_16_OFFSET;
+
+ if (operand->bits == 15 && operand->shift == 17)
+ return BFD_RELOC_V850_SDA_15_16_OFFSET;
+
+ if (operand->bits == -1)
+ return BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET;
+
+ if (operand->bits != 16
|| operand->shift != 16)
{
as_bad (_("sdaoff() relocation used on an instruction which does not support it"));
return BFD_RELOC_64; /* Used to indicate an error condition. */
}
-
+
return BFD_RELOC_V850_SDA_16_16_OFFSET;
}
static bfd_reloc_code_real_type
-handle_zdaoff (const struct v850_operand * operand)
+handle_zdaoff (const struct v850_operand *operand)
{
- if (operand == NULL) return BFD_RELOC_V850_ZDA_16_16_OFFSET;
- if (operand->bits == 15 && operand->shift == 17) return BFD_RELOC_V850_ZDA_15_16_OFFSET;
- if (operand->bits == -1) return BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET;
+ if (operand == NULL)
+ return BFD_RELOC_V850_ZDA_16_16_OFFSET;
+
+ if (operand->bits == 15 && operand->shift == 17)
+ return BFD_RELOC_V850_ZDA_15_16_OFFSET;
- if ( operand->bits != 16
+ if (operand->bits == -1)
+ return BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET;
+
+ if (operand->bits != 16
|| operand->shift != 16)
{
as_bad (_("zdaoff() relocation used on an instruction which does not support it"));
- return BFD_RELOC_64; /* Used to indicate an error condition. */
+ /* Used to indicate an error condition. */
+ return BFD_RELOC_64;
}
-
+
return BFD_RELOC_V850_ZDA_16_16_OFFSET;
}
static bfd_reloc_code_real_type
-handle_tdaoff (const struct v850_operand * operand)
+handle_tdaoff (const struct v850_operand *operand)
{
- if (operand == NULL) return BFD_RELOC_V850_TDA_7_7_OFFSET; /* data item, not an instruction. */
- if (operand->bits == 6 && operand->shift == 1) return BFD_RELOC_V850_TDA_6_8_OFFSET; /* sld.w/sst.w, operand: D8_6 */
- if (operand->bits == 4 && operand->insert != NULL) return BFD_RELOC_V850_TDA_4_5_OFFSET; /* sld.hu, operand: D5-4 */
- if (operand->bits == 4 && operand->insert == NULL) return BFD_RELOC_V850_TDA_4_4_OFFSET; /* sld.bu, operand: D4 */
- if (operand->bits == 16 && operand->shift == 16) return BFD_RELOC_V850_TDA_16_16_OFFSET; /* set1 & chums, operands: D16 */
-
+ if (operand == NULL)
+ /* Data item, not an instruction. */
+ return BFD_RELOC_V850_TDA_7_7_OFFSET;
+
+ if (operand->bits == 6 && operand->shift == 1)
+ /* sld.w/sst.w, operand: D8_6 */
+ return BFD_RELOC_V850_TDA_6_8_OFFSET;
+
+ if (operand->bits == 4 && operand->insert != NULL)
+ /* sld.hu, operand: D5-4 */
+ return BFD_RELOC_V850_TDA_4_5_OFFSET;
+
+ if (operand->bits == 4 && operand->insert == NULL)
+ /* sld.bu, operand: D4 */
+ return BFD_RELOC_V850_TDA_4_4_OFFSET;
+
+ if (operand->bits == 16 && operand->shift == 16)
+ /* set1 & chums, operands: D16 */
+ return BFD_RELOC_V850_TDA_16_16_OFFSET;
+
if (operand->bits != 7)
{
as_bad (_("tdaoff() relocation used on an instruction which does not support it"));
- return BFD_RELOC_64; /* Used to indicate an error condition. */
+ /* Used to indicate an error condition. */
+ return BFD_RELOC_64;
}
-
+
return operand->insert != NULL
- ? BFD_RELOC_V850_TDA_7_8_OFFSET /* sld.h/sst.h, operand: D8_7 */
- : BFD_RELOC_V850_TDA_7_7_OFFSET; /* sld.b/sst.b, opreand: D7 */
+ ? BFD_RELOC_V850_TDA_7_8_OFFSET /* sld.h/sst.h, operand: D8_7 */
+ : BFD_RELOC_V850_TDA_7_7_OFFSET; /* sld.b/sst.b, opreand: D7 */
}
/* Warning: The code in this function relies upon the definitions
@@ -1505,15 +1544,14 @@ handle_tdaoff (const struct v850_operand * operand)
matching the hard coded values contained herein. */
static bfd_reloc_code_real_type
-v850_reloc_prefix (const struct v850_operand * operand)
+v850_reloc_prefix (const struct v850_operand *operand)
{
boolean paren_skipped = false;
-
/* Skip leading opening parenthesis. */
- if (* input_line_pointer == '(')
+ if (*input_line_pointer == '(')
{
- ++ input_line_pointer;
+ ++input_line_pointer;
paren_skipped = true;
}
@@ -1523,20 +1561,20 @@ v850_reloc_prefix (const struct v850_operand * operand)
input_line_pointer += strlen (name); \
return reloc; \
}
-
- CHECK_ ("hi0", BFD_RELOC_HI16);
- CHECK_ ("hi", BFD_RELOC_HI16_S);
- CHECK_ ("lo", BFD_RELOC_LO16);
+
+ CHECK_ ("hi0", BFD_RELOC_HI16 );
+ CHECK_ ("hi", BFD_RELOC_HI16_S );
+ CHECK_ ("lo", BFD_RELOC_LO16 );
CHECK_ ("sdaoff", handle_sdaoff (operand));
CHECK_ ("zdaoff", handle_zdaoff (operand));
CHECK_ ("tdaoff", handle_tdaoff (operand));
- CHECK_ ("hilo", BFD_RELOC_32);
- CHECK_ ("ctoff", handle_ctoff (operand));
-
+ CHECK_ ("hilo", BFD_RELOC_32 );
+ CHECK_ ("ctoff", handle_ctoff (operand) );
+
/* Restore skipped parenthesis. */
if (paren_skipped)
- -- input_line_pointer;
-
+ --input_line_pointer;
+
return BFD_RELOC_UNUSED;
}
@@ -1544,31 +1582,31 @@ v850_reloc_prefix (const struct v850_operand * operand)
static unsigned long
v850_insert_operand (insn, operand, val, file, line, str)
- unsigned long insn;
- const struct v850_operand * operand;
- offsetT val;
- char * file;
- unsigned int line;
- char * str;
+ unsigned long insn;
+ const struct v850_operand *operand;
+ offsetT val;
+ char *file;
+ unsigned int line;
+ char *str;
{
if (operand->insert)
{
- const char * message = NULL;
-
- insn = operand->insert (insn, val, & message);
+ const char *message = NULL;
+
+ insn = operand->insert (insn, val, &message);
if (message != NULL)
{
if ((operand->flags & V850_OPERAND_SIGNED)
&& ! warn_signed_overflows
&& strstr (message, "out of range") != NULL)
{
- /* skip warning... */
+ /* Skip warning... */
}
else if ((operand->flags & V850_OPERAND_SIGNED) == 0
&& ! warn_unsigned_overflows
&& strstr (message, "out of range") != NULL)
{
- /* skip warning... */
+ /* Skip warning... */
}
else if (str)
{
@@ -1590,8 +1628,7 @@ v850_insert_operand (insn, operand, val, file, line, str)
{
if (operand->bits != 32)
{
- long min, max;
- offsetT test;
+ long min, max;
if ((operand->flags & V850_OPERAND_SIGNED) != 0)
{
@@ -1599,25 +1636,26 @@ v850_insert_operand (insn, operand, val, file, line, str)
max = (1 << operand->bits) - 1;
else
max = (1 << (operand->bits - 1)) - 1;
-
- min = - (1 << (operand->bits - 1));
+
+ min = -(1 << (operand->bits - 1));
}
else
{
max = (1 << operand->bits) - 1;
-
+
if (! warn_unsigned_overflows)
- min = - (1 << (operand->bits - 1));
+ min = -(1 << (operand->bits - 1));
else
min = 0;
}
-
+
if (val < (offsetT) min || val > (offsetT) max)
{
- /* xgettext:c-format */
- const char * err = _("operand out of range (%s not between %ld and %ld)");
- char buf[100];
-
+ /* xgettext:c-format */
+ const char *err =
+ _("operand out of range (%s not between %ld and %ld)");
+ char buf[100];
+
/* Restore min and mix to expected values for decimal ranges. */
if ((operand->flags & V850_OPERAND_SIGNED)
&& ! warn_signed_overflows)
@@ -1630,12 +1668,12 @@ v850_insert_operand (insn, operand, val, file, line, str)
if (str)
{
sprintf (buf, "%s: ", str);
-
+
sprint_value (buf + strlen (buf), val);
}
else
sprint_value (buf, val);
-
+
if (file == (char *) NULL)
as_warn (err, buf, min, max);
else
@@ -1645,74 +1683,73 @@ v850_insert_operand (insn, operand, val, file, line, str)
insn |= (((long) val & ((1 << operand->bits) - 1)) << operand->shift);
}
-
+
return insn;
}
-
-static char copy_of_instruction [128];
+static char copy_of_instruction[128];
void
-md_assemble (str)
- char * str;
+md_assemble (str)
+ char *str;
{
- char * s;
- char * start_of_operands;
- struct v850_opcode * opcode;
- struct v850_opcode * next_opcode;
- const unsigned char * opindex_ptr;
- int next_opindex;
- int relaxable;
- unsigned long insn;
- unsigned long insn_size;
- char * f;
- int i;
- int match;
- boolean extra_data_after_insn = false;
- unsigned extra_data_len;
- unsigned long extra_data;
- char * saved_input_line_pointer;
-
-
+ char *s;
+ char *start_of_operands;
+ struct v850_opcode *opcode;
+ struct v850_opcode *next_opcode;
+ const unsigned char *opindex_ptr;
+ int next_opindex;
+ int relaxable = 0;
+ unsigned long insn;
+ unsigned long insn_size;
+ unsigned long total_insn_size = 0;
+ char *f;
+ int i;
+ int match;
+ boolean extra_data_after_insn = false;
+ unsigned extra_data_len = 0;
+ unsigned long extra_data = 0;
+ char *saved_input_line_pointer;
+
strncpy (copy_of_instruction, str, sizeof (copy_of_instruction) - 1);
-
+
/* Get the opcode. */
for (s = str; *s != '\0' && ! isspace (*s); s++)
continue;
-
+
if (*s != '\0')
*s++ = '\0';
- /* find the first opcode with the proper name */
+ /* Find the first opcode with the proper name. */
opcode = (struct v850_opcode *) hash_find (v850_hash, str);
if (opcode == NULL)
{
- /* xgettext:c-format */
+ /* xgettext:c-format */
as_bad (_("Unrecognized opcode: `%s'"), str);
ignore_rest_of_line ();
return;
}
str = s;
- while (isspace (* str))
- ++ str;
+ while (isspace (*str))
+ ++str;
start_of_operands = str;
saved_input_line_pointer = input_line_pointer;
-
+
for (;;)
{
- const char * errmsg = NULL;
+ const char *errmsg = NULL;
match = 0;
-
+
if ((opcode->processors & processor_mask) == 0)
{
errmsg = _("Target processor does not support this instruction.");
goto error;
}
-
+
relaxable = 0;
fc = 0;
next_opindex = 0;
@@ -1721,36 +1758,36 @@ md_assemble (str)
input_line_pointer = str = start_of_operands;
- for (opindex_ptr = opcode->operands; *opindex_ptr != 0; opindex_ptr ++)
+ for (opindex_ptr = opcode->operands; *opindex_ptr != 0; opindex_ptr++)
{
- const struct v850_operand * operand;
- char * hold;
- expressionS ex;
- bfd_reloc_code_real_type reloc;
+ const struct v850_operand *operand;
+ char *hold;
+ expressionS ex;
+ bfd_reloc_code_real_type reloc;
if (next_opindex == 0)
{
- operand = & v850_operands[ * opindex_ptr ];
+ operand = &v850_operands[*opindex_ptr];
}
else
{
- operand = & v850_operands[ next_opindex ];
+ operand = &v850_operands[next_opindex];
next_opindex = 0;
}
errmsg = NULL;
while (*str == ' ' || *str == ',' || *str == '[' || *str == ']')
- ++ str;
+ ++str;
if (operand->flags & V850_OPERAND_RELAX)
relaxable = 1;
- /* Gather the operand. */
+ /* Gather the operand. */
hold = input_line_pointer;
input_line_pointer = str;
-
- /* lo(), hi(), hi0(), etc... */
+
+ /* lo(), hi(), hi0(), etc... */
if ((reloc = v850_reloc_prefix (operand)) != BFD_RELOC_UNUSED)
{
/* This is a fake reloc, used to indicate an error condition. */
@@ -1759,8 +1796,8 @@ md_assemble (str)
match = 1;
goto error;
}
-
- expression (& ex);
+
+ expression (&ex);
if (ex.X_op == O_constant)
{
@@ -1770,7 +1807,7 @@ md_assemble (str)
/* To cope with "not1 7, zdaoff(0xfffff006)[r0]"
and the like. */
/* Fall through. */
-
+
case BFD_RELOC_LO16:
{
/* Truncate, then sign extend the value. */
@@ -1788,27 +1825,27 @@ md_assemble (str)
case BFD_RELOC_HI16_S:
{
/* Truncate, then sign extend the value. */
- int temp = (ex.X_add_number >> 16) & 0xffff;
+ int temp = (ex.X_add_number >> 16) & 0xffff;
temp += (ex.X_add_number >> 15) & 1;
ex.X_add_number = SEXT16 (temp);
break;
}
-
+
case BFD_RELOC_32:
if ((operand->flags & V850E_IMMEDIATE32) == 0)
{
errmsg = _("immediate operand is too large");
goto error;
}
-
+
extra_data_after_insn = true;
extra_data_len = 4;
extra_data = ex.X_add_number;
ex.X_add_number = 0;
break;
-
+
default:
fprintf (stderr, "reloc: %d\n", reloc);
as_bad (_("AAARG -> unhandled constant reloc"));
@@ -1817,10 +1854,10 @@ md_assemble (str)
if (fc > MAX_INSN_FIXUPS)
as_fatal (_("too many fixups"));
-
- fixups[ fc ].exp = ex;
- fixups[ fc ].opindex = * opindex_ptr;
- fixups[ fc ].reloc = reloc;
+
+ fixups[fc].exp = ex;
+ fixups[fc].opindex = *opindex_ptr;
+ fixups[fc].reloc = reloc;
fc++;
}
else
@@ -1832,54 +1869,54 @@ md_assemble (str)
errmsg = _("immediate operand is too large");
goto error;
}
-
+
extra_data_after_insn = true;
extra_data_len = 4;
extra_data = ex.X_add_number;
}
-
+
if (fc > MAX_INSN_FIXUPS)
as_fatal (_("too many fixups"));
- fixups[ fc ].exp = ex;
- fixups[ fc ].opindex = * opindex_ptr;
- fixups[ fc ].reloc = reloc;
+ fixups[fc].exp = ex;
+ fixups[fc].opindex = *opindex_ptr;
+ fixups[fc].reloc = reloc;
fc++;
}
}
else
{
errmsg = NULL;
-
- if ((operand->flags & V850_OPERAND_REG) != 0)
+
+ if ((operand->flags & V850_OPERAND_REG) != 0)
{
- if (!register_name (& ex))
+ if (!register_name (&ex))
{
errmsg = _("invalid register name");
}
else if ((operand->flags & V850_NOT_R0)
- && ex.X_add_number == 0)
+ && ex.X_add_number == 0)
{
errmsg = _("register r0 cannot be used here");
-
+
/* Force an error message to be generated by
skipping over any following potential matches
for this opcode. */
opcode += 3;
}
}
- else if ((operand->flags & V850_OPERAND_SRG) != 0)
+ else if ((operand->flags & V850_OPERAND_SRG) != 0)
{
- if (!system_register_name (& ex, true, false))
+ if (!system_register_name (&ex, true, false))
{
errmsg = _("invalid system register name");
}
}
else if ((operand->flags & V850_OPERAND_EP) != 0)
{
- char * start = input_line_pointer;
- char c = get_symbol_end ();
-
+ char *start = input_line_pointer;
+ char c = get_symbol_end ();
+
if (strcmp (start, "ep") != 0 && strcmp (start, "r30") != 0)
{
/* Put things back the way we found them. */
@@ -1888,34 +1925,35 @@ md_assemble (str)
errmsg = _("expected EP register");
goto error;
}
-
+
*input_line_pointer = c;
str = input_line_pointer;
input_line_pointer = hold;
-
- while (*str == ' ' || *str == ',' || *str == '[' || *str == ']')
- ++ str;
+
+ while (*str == ' ' || *str == ','
+ || *str == '[' || *str == ']')
+ ++str;
continue;
}
- else if ((operand->flags & V850_OPERAND_CC) != 0)
+ else if ((operand->flags & V850_OPERAND_CC) != 0)
{
- if (!cc_name (& ex))
+ if (!cc_name (&ex))
{
errmsg = _("invalid condition code name");
}
}
- else if (operand->flags & V850E_PUSH_POP)
+ else if (operand->flags & V850E_PUSH_POP)
{
- errmsg = parse_register_list (& insn, operand);
-
+ errmsg = parse_register_list (&insn, operand);
+
/* The parse_register_list() function has already done
everything, so fake a dummy expression. */
ex.X_op = O_constant;
ex.X_add_number = 0;
}
- else if (operand->flags & V850E_IMMEDIATE16)
+ else if (operand->flags & V850E_IMMEDIATE16)
{
- expression (& ex);
+ expression (&ex);
if (ex.X_op != O_constant)
errmsg = _("constant expression expected");
@@ -1928,30 +1966,30 @@ md_assemble (str)
else
errmsg = _("constant too big to fit into instruction");
}
-
+
extra_data_after_insn = true;
extra_data_len = 2;
extra_data = ex.X_add_number;
ex.X_add_number = 0;
}
- else if (operand->flags & V850E_IMMEDIATE32)
+ else if (operand->flags & V850E_IMMEDIATE32)
{
- expression (& ex);
-
+ expression (&ex);
+
if (ex.X_op != O_constant)
errmsg = _("constant expression expected");
-
+
extra_data_after_insn = true;
extra_data_len = 4;
extra_data = ex.X_add_number;
ex.X_add_number = 0;
}
- else if (register_name (& ex)
+ else if (register_name (&ex)
&& (operand->flags & V850_OPERAND_REG) == 0)
{
char c;
- int exists = 0;
-
+ int exists = 0;
+
/* It is possible that an alias has been defined that
matches a register name. For example the code may
include a ".set ZERO, 0" directive, which matches
@@ -1962,14 +2000,14 @@ md_assemble (str)
input_line_pointer = str;
c = get_symbol_end ();
-
+
if (symbol_find (str) != NULL)
exists = 1;
-
- * input_line_pointer = c;
+
+ *input_line_pointer = c;
input_line_pointer = str;
-
- expression (& ex);
+
+ expression (&ex);
if (ex.X_op != O_constant)
{
@@ -1977,21 +2015,22 @@ md_assemble (str)
the parsing of the instruction, (because another
field is missing) then report this. */
if (opindex_ptr[1] != 0
- && (v850_operands [opindex_ptr [1]].flags & V850_OPERAND_REG))
+ && (v850_operands[opindex_ptr[1]].flags
+ & V850_OPERAND_REG))
errmsg = _("syntax error: value is missing before the register name");
else
errmsg = _("syntax error: register not expected");
- /* If we created a symbol in the process of this test then
- delete it now, so that it will not be output with the real
- symbols... */
+ /* If we created a symbol in the process of this
+ test then delete it now, so that it will not
+ be output with the real symbols... */
if (exists == 0
&& ex.X_op == O_symbol)
symbol_remove (ex.X_add_symbol,
- & symbol_rootP, & symbol_lastP);
+ &symbol_rootP, &symbol_lastP);
}
}
- else if (system_register_name (& ex, false, false)
+ else if (system_register_name (&ex, false, false)
&& (operand->flags & V850_OPERAND_SRG) == 0)
{
errmsg = _("syntax error: system register not expected");
@@ -2003,7 +2042,7 @@ md_assemble (str)
}
else
{
- expression (& ex);
+ expression (&ex);
/* Special case:
If we are assembling a MOV instruction (or a CALLT.... :-)
and the immediate value does not fit into the bits
@@ -2013,18 +2052,22 @@ md_assemble (str)
if (((insn & 0x07e0) == 0x0200)
&& ex.X_op == O_constant
- && (ex.X_add_number < (- (1 << (operand->bits - 1)))
+ && (ex.X_add_number < (-(1 << (operand->bits - 1)))
|| ex.X_add_number > ((1 << operand->bits) - 1)))
errmsg = _("immediate operand is too large");
}
if (errmsg)
goto error;
-
-/* fprintf (stderr, " insn: %x, operand %d, op: %d, add_number: %d\n",
- insn, opindex_ptr - opcode->operands, ex.X_op, ex.X_add_number); */
- switch (ex.X_op)
+#if 0
+ fprintf (stderr,
+ " insn: %x, operand %d, op: %d, add_number: %d\n",
+ insn, opindex_ptr - opcode->operands,
+ ex.X_op, ex.X_add_number);
+#endif
+
+ switch (ex.X_op)
{
case O_illegal:
errmsg = _("illegal operand");
@@ -2033,7 +2076,8 @@ md_assemble (str)
errmsg = _("missing operand");
goto error;
case O_register:
- if ((operand->flags & (V850_OPERAND_REG | V850_OPERAND_SRG)) == 0)
+ if ((operand->flags
+ & (V850_OPERAND_REG | V850_OPERAND_SRG)) == 0)
{
errmsg = _("invalid operand");
goto error;
@@ -2054,9 +2098,9 @@ md_assemble (str)
if (fc >= MAX_INSN_FIXUPS)
as_fatal (_("too many fixups"));
- fixups[ fc ].exp = ex;
- fixups[ fc ].opindex = * opindex_ptr;
- fixups[ fc ].reloc = BFD_RELOC_UNUSED;
+ fixups[fc].exp = ex;
+ fixups[fc].opindex = *opindex_ptr;
+ fixups[fc].reloc = BFD_RELOC_UNUSED;
++fc;
break;
}
@@ -2073,7 +2117,7 @@ md_assemble (str)
error:
if (match == 0)
- {
+ {
next_opcode = opcode + 1;
if (next_opcode->name != NULL
&& strcmp (next_opcode->name, opcode->name) == 0)
@@ -2084,33 +2128,33 @@ md_assemble (str)
processor. */
if ((opcode->processors & processor_mask) == 0)
goto error;
-
+
continue;
}
-
+
as_bad ("%s: %s", copy_of_instruction, errmsg);
-
- if (* input_line_pointer == ']')
- ++ input_line_pointer;
-
+
+ if (*input_line_pointer == ']')
+ ++input_line_pointer;
+
ignore_rest_of_line ();
input_line_pointer = saved_input_line_pointer;
return;
- }
+ }
break;
}
-
+
while (isspace (*str))
++str;
if (*str != '\0')
- /* xgettext:c-format */
+ /* xgettext:c-format */
as_bad (_("junk at end of line: `%s'"), str);
input_line_pointer = str;
- /* Write out the instruction. */
-
+ /* Write out the instruction. */
+
if (relaxable && fc > 0)
{
insn_size = 2;
@@ -2121,7 +2165,7 @@ md_assemble (str)
f = frag_var (rs_machine_dependent, 4, 2, 2,
fixups[0].exp.X_add_symbol,
fixups[0].exp.X_add_number,
- (char *)fixups[0].opindex);
+ (char *) fixups[0].opindex);
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f + 2, 0, 2);
}
@@ -2130,12 +2174,13 @@ md_assemble (str)
f = frag_var (rs_machine_dependent, 6, 4, 0,
fixups[0].exp.X_add_symbol,
fixups[0].exp.X_add_number,
- (char *)fixups[0].opindex);
+ (char *) fixups[0].opindex);
md_number_to_chars (f, insn, insn_size);
md_number_to_chars (f + 2, 0, 4);
}
+ total_insn_size = insn_size;
}
- else
+ else
{
/* Four byte insns have an opcode with the two high bits on. */
if ((insn & 0x0600) == 0x0600)
@@ -2143,18 +2188,20 @@ md_assemble (str)
else
insn_size = 2;
- /* Special case: 32 bit MOV */
+ /* Special case: 32 bit MOV. */
if ((insn & 0xffe0) == 0x0620)
insn_size = 2;
-
+
f = frag_more (insn_size);
-
+ total_insn_size = insn_size;
+
md_number_to_chars (f, insn, insn_size);
if (extra_data_after_insn)
{
f = frag_more (extra_data_len);
-
+ total_insn_size += extra_data_len;
+
md_number_to_chars (f, extra_data, extra_data_len);
extra_data_after_insn = false;
@@ -2166,43 +2213,41 @@ md_assemble (str)
BFD_RELOC_UNUSED plus 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_fix. */
+ md_apply_fix. */
for (i = 0; i < fc; i++)
{
- const struct v850_operand * operand;
- bfd_reloc_code_real_type reloc;
-
- operand = & v850_operands[ fixups[i].opindex ];
+ const struct v850_operand *operand;
+ bfd_reloc_code_real_type reloc;
+
+ operand = &v850_operands[fixups[i].opindex];
reloc = fixups[i].reloc;
-
+
if (reloc != BFD_RELOC_UNUSED)
{
- reloc_howto_type * reloc_howto = bfd_reloc_type_lookup (stdoutput,
- reloc);
- int size;
- int address;
- fixS * fixP;
+ reloc_howto_type *reloc_howto =
+ bfd_reloc_type_lookup (stdoutput, reloc);
+ int size;
+ int address;
+ fixS *fixP;
if (!reloc_howto)
- abort();
-
+ abort ();
+
size = bfd_get_reloc_size (reloc_howto);
/* XXX This will abort on an R_V850_8 reloc -
- is this reloc actually used ? */
- if (size != 2 && size != 4)
+ is this reloc actually used? */
+ if (size != 2 && size != 4)
abort ();
address = (f - frag_now->fr_literal) + insn_size - size;
if (reloc == BFD_RELOC_32)
- {
- address += 2;
- }
-
+ address += 2;
+
fixP = fix_new_exp (frag_now, address, size,
- & fixups[i].exp,
+ &fixups[i].exp,
reloc_howto->pc_relative,
reloc);
@@ -2213,67 +2258,69 @@ md_assemble (str)
case BFD_RELOC_HI16_S:
fixP->fx_no_overflow = 1;
break;
+ default:
+ break;
}
}
else
{
- fix_new_exp (
- frag_now,
+ fix_new_exp (frag_now,
f - frag_now->fr_literal, 4,
& fixups[i].exp,
- 1 /* FIXME: V850_OPERAND_RELATIVE ??? */,
+ 1 /* FIXME: V850_OPERAND_RELATIVE ??? */,
(bfd_reloc_code_real_type) (fixups[i].opindex
- + (int) BFD_RELOC_UNUSED)
- );
+ + (int) BFD_RELOC_UNUSED));
}
}
input_line_pointer = saved_input_line_pointer;
+
+ dwarf2_emit_insn (total_insn_size);
}
+/* If while processing a fixup, a reloc really needs to be created
+ then it is done here. */
-/* 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;
- fixS * 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);
+ 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,
- /* xgettext:c-format */
- _("reloc %d not supported by object file format"),
+ /* xgettext:c-format */
+ _("reloc %d not supported by object file format"),
(int) fixp->fx_r_type);
xfree (reloc);
-
+
return NULL;
}
-
- if ( fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY
+
+ 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;
-
+
return reloc;
}
/* Assume everything will fit in two bytes, then expand as necessary. */
+
int
md_estimate_size_before_relax (fragp, seg)
- fragS * fragp;
- asection * seg;
+ fragS *fragp;
+ asection *seg ATTRIBUTE_UNUSED;
{
if (fragp->fr_subtype == 0)
fragp->fr_var = 4;
@@ -2282,12 +2329,12 @@ md_estimate_size_before_relax (fragp, seg)
else
abort ();
return 2;
-}
+}
long
v850_pcrel_from_section (fixp, section)
- fixS * fixp;
- segT section;
+ fixS *fixp;
+ segT section;
{
/* If the symbol is undefined, or in a section other than our own,
or it is weak (in which case it may well be in another section,
@@ -2297,20 +2344,20 @@ v850_pcrel_from_section (fixp, section)
|| S_IS_WEAK (fixp->fx_addsy)
|| (S_GET_SEGMENT (fixp->fx_addsy) != section)))
return 0;
-
+
return fixp->fx_frag->fr_address + fixp->fx_where;
}
int
md_apply_fix3 (fixp, valuep, seg)
- fixS * fixp;
- valueT * valuep;
- segT seg;
+ fixS *fixp;
+ valueT *valuep;
+ segT seg ATTRIBUTE_UNUSED;
{
valueT value;
- char * where;
+ char *where;
- if ( fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT
+ if (fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT
|| fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
{
fixp->fx_done = 0;
@@ -2319,11 +2366,11 @@ md_apply_fix3 (fixp, valuep, seg)
if (fixp->fx_addsy == (symbolS *) NULL)
{
- value = * valuep;
+ value = *valuep;
fixp->fx_done = 1;
}
else if (fixp->fx_pcrel)
- value = * valuep;
+ value = *valuep;
else
{
value = fixp->fx_offset;
@@ -2342,12 +2389,12 @@ md_apply_fix3 (fixp, valuep, seg)
if ((int) fixp->fx_r_type >= (int) BFD_RELOC_UNUSED)
{
- int opindex;
- const struct v850_operand * operand;
- unsigned long insn;
+ int opindex;
+ const struct v850_operand *operand;
+ unsigned long insn;
opindex = (int) fixp->fx_r_type - (int) BFD_RELOC_UNUSED;
- operand = & v850_operands[ opindex ];
+ operand = &v850_operands[opindex];
/* Fetch the instruction, insert the fully resolved operand
value, and stuff the instruction back again.
@@ -2363,12 +2410,12 @@ md_apply_fix3 (fixp, valuep, seg)
if (fixp->fx_done)
{
- /* Nothing else to do here. */
+ /* Nothing else to do here. */
return 1;
}
- /* Determine a BFD reloc value based on the operand information.
- We are only prepared to turn a few of the operands into relocs. */
+ /* Determine a BFD reloc value based on the operand information.
+ We are only prepared to turn a few of the operands into relocs. */
if (operand->bits == 22)
fixp->fx_r_type = BFD_RELOC_V850_22_PCREL;
@@ -2376,10 +2423,12 @@ md_apply_fix3 (fixp, valuep, seg)
fixp->fx_r_type = BFD_RELOC_V850_9_PCREL;
else
{
- /* fprintf (stderr, "bits: %d, insn: %x\n", operand->bits, insn); */
-
+#if 0
+ fprintf (stderr, "bits: %d, insn: %x\n", operand->bits, insn);
+#endif
+
as_bad_where (fixp->fx_file, fixp->fx_line,
- _("unresolved expression that must be resolved"));
+ _("unresolved expression that must be resolved"));
fixp->fx_done = 1;
return 1;
}
@@ -2390,23 +2439,23 @@ md_apply_fix3 (fixp, valuep, seg)
where = fixp->fx_frag->fr_literal + fixp->fx_where;
if (fixp->fx_size == 1)
- * where = value & 0xff;
+ *where = value & 0xff;
else if (fixp->fx_size == 2)
bfd_putl16 (value & 0xffff, (unsigned char *) where);
else if (fixp->fx_size == 4)
bfd_putl32 (value, (unsigned char *) where);
}
-
+
fixp->fx_addnumber = value;
return 1;
}
-
/* Parse a cons expression. We have to handle hi(), lo(), etc
on the v850. */
+
void
parse_cons_expression_v850 (exp)
- expressionS * exp;
+ expressionS *exp;
{
/* See if there's a reloc prefix like hi() we have to handle. */
hold_cons_reloc = v850_reloc_prefix (NULL);
@@ -2418,9 +2467,10 @@ parse_cons_expression_v850 (exp)
/* Create a fixup for a cons expression. If parse_cons_expression_v850
found a reloc prefix, then we use that reloc, else we choose an
appropriate one based on the size of the expression. */
+
void
cons_fix_new_v850 (frag, where, size, exp)
- fragS * frag;
+ fragS *frag;
int where;
int size;
expressionS *exp;
@@ -2439,44 +2489,47 @@ cons_fix_new_v850 (frag, where, size, exp)
fix_new_exp (frag, where, size, exp, 0, hold_cons_reloc);
else
fix_new (frag, where, size, NULL, 0, 0, hold_cons_reloc);
+
+ hold_cons_reloc = BFD_RELOC_UNUSED;
}
boolean
v850_fix_adjustable (fixP)
- fixS * fixP;
+ fixS *fixP;
{
if (fixP->fx_addsy == NULL)
return 1;
-
- /* Prevent all adjustments to global symbols. */
+
+ /* Prevent all adjustments to global symbols. */
if (S_IS_EXTERN (fixP->fx_addsy))
return 0;
-
+
+ /* Similarly for weak symbols. */
if (S_IS_WEAK (fixP->fx_addsy))
return 0;
-
- /* Don't adjust function names */
+
+ /* Don't adjust function names. */
if (S_IS_FUNCTION (fixP->fx_addsy))
return 0;
- /* We need the symbol name for the VTABLE entries */
- if ( fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
+ /* 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;
}
-
+
int
v850_force_relocation (fixP)
- struct fix * fixP;
+ struct fix *fixP;
{
if (fixP->fx_addsy && S_IS_WEAK (fixP->fx_addsy))
return 1;
-
- if ( fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
+
+ if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT
|| fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
return 1;
-
+
return 0;
}
diff --git a/contrib/binutils/gas/config/tc-v850.h b/contrib/binutils/gas/config/tc-v850.h
index fad4d1c..1e597f0 100644
--- a/contrib/binutils/gas/config/tc-v850.h
+++ b/contrib/binutils/gas/config/tc-v850.h
@@ -1,5 +1,5 @@
/* tc-v850.h -- Header file for tc-v850.c.
- Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -16,7 +16,7 @@
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. */
+ 02111-1307, USA. */
#define TC_V850
@@ -39,6 +39,13 @@
#define obj_fix_adjustable(fixP) v850_fix_adjustable(fixP)
#define TC_FORCE_RELOCATION(fixp) v850_force_relocation(fixp)
+
+#ifdef OBJ_ELF
+/* This arranges for gas/write.c to not apply a relocation if
+ obj_fix_adjustable() says it is not adjustable. */
+#define TC_FIX_ADJUSTABLE(fixP) obj_fix_adjustable (fixP)
+#endif
+
extern int v850_force_relocation PARAMS ((struct fix *));
/* Permit temporary numeric labels. */
@@ -50,7 +57,7 @@ extern int v850_force_relocation PARAMS ((struct fix *));
#define WORKING_DOT_WORD
#define md_number_to_chars number_to_chars_littleendian
-
+
/* We need to handle lo(), hi(), etc etc in .hword, .word, etc
directives, so we have to parse "cons" expressions ourselves. */
#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) parse_cons_expression_v850 (EXP)
@@ -58,7 +65,6 @@ extern int v850_force_relocation PARAMS ((struct fix *));
extern const struct relax_type md_relax_table[];
#define TC_GENERIC_RELAX_TABLE md_relax_table
-
/* This section must be in the small data area (pointed to by GP). */
#define SHF_V850_GPREL 0x10000000
/* This section must be in the tiny data area (pointed to by EP). */
@@ -83,3 +89,5 @@ extern const struct relax_type md_relax_table[];
#define MD_PCREL_FROM_SECTION(fixP,section) v850_pcrel_from_section (fixP, section)
extern long v850_pcrel_from_section ();
+
+#define DWARF2_LINE_MIN_INSN_LENGTH 2
diff --git a/contrib/binutils/gas/config/tc-z8k.c b/contrib/binutils/gas/config/tc-z8k.c
index f89b14b3..58c85ea 100644
--- a/contrib/binutils/gas/config/tc-z8k.c
+++ b/contrib/binutils/gas/config/tc-z8k.c
@@ -1,5 +1,6 @@
/* tc-z8k.c -- Assemble code for the Zilog Z800n
- Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 1999 Free Software Foundation.
+ Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000
+ Free Software Foundation.
This file is part of GAS, the GNU Assembler.
@@ -18,10 +19,8 @@
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-/*
- Written By Steve Chamberlain
- sac@cygnus.com
- */
+/* Written By Steve Chamberlain <sac@cygnus.com>. */
+
#define DEFINE_TABLE
#include <stdio.h>
@@ -31,25 +30,15 @@
#include "bfd.h"
#include <ctype.h>
-const char comment_chars[] =
-{'!', 0};
-const char line_separator_chars[] =
-{';', 0};
-const char line_comment_chars[] =
-{'#', 0};
+const char comment_chars[] = "!";
+const char line_comment_chars[] = "#";
+const char line_separator_chars[] = ";";
extern int machine;
extern int coff_flags;
int segmented_mode;
const int md_reloc_size;
-/* 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
- */
-
void cons ();
void
@@ -68,8 +57,7 @@ s_unseg ()
coff_flags = F_Z8002;
}
-static
-void
+static void
even ()
{
frag_align (1, 0, 0);
@@ -92,7 +80,6 @@ tohex (c)
void
sval ()
{
-
SKIP_WHITESPACE ();
if (*input_line_pointer == '\'')
{
@@ -112,47 +99,53 @@ sval ()
}
demand_empty_rest_of_line ();
}
-
}
-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},
- {"z8001", s_segm, 0},
- {"z8002", s_unseg, 0},
-
-
- {"segm", s_segm, 0},
- {"unsegm", s_unseg, 0},
- {"unseg", s_unseg, 0},
- {"name", s_app_file, 0},
- {"global", s_globl, 0},
- {"wval", cons, 2},
- {"lval", cons, 4},
- {"bval", cons, 1},
- {"sval", sval, 0},
- {"rsect", obj_coff_section, 0},
- {"sect", obj_coff_section, 0},
- {"block", s_space, 0},
- {"even", even, 0},
- {0, 0, 0}
+
+/* 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},
+ {"z8001" , s_segm , 0},
+ {"z8002" , s_unseg , 0},
+
+ {"segm" , s_segm , 0},
+ {"unsegm" , s_unseg , 0},
+ {"unseg" , s_unseg , 0},
+ {"name" , s_app_file , 0},
+ {"global" , s_globl , 0},
+ {"wval" , cons , 2},
+ {"lval" , cons , 4},
+ {"bval" , cons , 1},
+ {"sval" , sval , 0},
+ {"rsect" , obj_coff_section, 0},
+ {"sect" , obj_coff_section, 0},
+ {"block" , s_space , 0},
+ {"even" , even , 0},
+ {0 , 0 , 0}
};
const char EXP_CHARS[] = "eE";
-/* Chars that mean this number is a floating point constant */
-/* As in 0f12.456 */
-/* or 0d1.2345e12 */
+/* 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 */
+/* Opcode mnemonics. */
+static struct hash_control *opcode_hash_control;
void
md_begin ()
@@ -165,7 +158,7 @@ md_begin ()
for (opcode = z8k_table; opcode->name; opcode++)
{
- /* Only enter unique codes into the table */
+ /* Only enter unique codes into the table. */
char *src = opcode->name;
if (strcmp (opcode->name, prev_name))
@@ -177,10 +170,10 @@ md_begin ()
prev_name = opcode->name;
}
- /* default to z8002 */
+ /* Default to z8002. */
s_unseg ();
- /* insert the pseudo ops too */
+ /* Insert the pseudo ops, too. */
for (idx = 0; md_pseudo_table[idx].poc_name; idx++)
{
opcode_entry_type *fake_opcode;
@@ -194,24 +187,27 @@ md_begin ()
linkrelax = 1;
}
-struct z8k_exp
-{
+struct z8k_exp {
char *e_beg;
char *e_end;
expressionS e_exp;
};
-typedef struct z8k_op
-{
- char regsize; /* 'b','w','r','q' */
- unsigned int reg; /* 0..15 */
+
+typedef struct z8k_op {
+ /* 'b','w','r','q'. */
+ char regsize;
+
+ /* 0 .. 15. */
+ unsigned int reg;
int mode;
- unsigned int x_reg; /* any other register associated with the mode */
- expressionS exp; /* any expression */
-}
+ /* Any other register associated with the mode. */
+ unsigned int x_reg;
-op_type;
+ /* Any expression. */
+ expressionS exp;
+} op_type;
static expressionS *da_operand;
static expressionS *imm_operand;
@@ -223,9 +219,9 @@ int the_flags;
int the_interrupt;
char *
-DEFUN (whatreg, (reg, src),
- int *reg AND
- char *src)
+whatreg (reg, src)
+ int *reg;
+ char *src;
{
if (isdigit (src[1]))
{
@@ -239,28 +235,28 @@ DEFUN (whatreg, (reg, src),
}
}
-/*
- parse operands
+/* Parse operands
- rh0-rh7, rl0-rl7
- r0-r15
- rr0-rr14
- rq0--rq12
- WREG r0,r1,r2,r3,r4,r5,r6,r7,fp,sp
- r0l,r0h,..r7l,r7h
- @WREG
- @WREG+
- @-WREG
- #const
+ rh0-rh7, rl0-rl7
+ r0-r15
+ rr0-rr14
+ rq0--rq12
+ WREG r0,r1,r2,r3,r4,r5,r6,r7,fp,sp
+ r0l,r0h,..r7l,r7h
+ @WREG
+ @WREG+
+ @-WREG
+ #const
+*/
- */
+/* Try to parse a reg name. Return a pointer to the first character
+ in SRC after the reg name. */
-/* try and parse a reg name, returns number of chars consumed */
char *
-DEFUN (parse_reg, (src, mode, reg),
- char *src AND
- int *mode AND
- unsigned int *reg)
+parse_reg (src, mode, reg)
+ char *src;
+ int *mode;
+ unsigned int *reg;
{
char *res = 0;
char regno;
@@ -268,69 +264,68 @@ DEFUN (parse_reg, (src, mode, reg),
if (src[0] == 's' && src[1] == 'p')
{
if (segmented_mode)
- {
- *mode = CLASS_REG_LONG;
- *reg = 14;
- }
+ {
+ *mode = CLASS_REG_LONG;
+ *reg = 14;
+ }
else
- {
- *mode = CLASS_REG_WORD;
- *reg = 15;
- }
+ {
+ *mode = CLASS_REG_WORD;
+ *reg = 15;
+ }
return src + 2;
}
if (src[0] == 'r')
{
if (src[1] == 'r')
- {
- *mode = CLASS_REG_LONG;
- res = whatreg (reg, src + 2);
+ {
+ *mode = CLASS_REG_LONG;
+ res = whatreg (reg, src + 2);
regno = *reg;
if (regno > 14)
- as_warn (_("register rr%d, out of range."),regno);
- }
+ as_warn (_("register rr%d, out of range."), regno);
+ }
else if (src[1] == 'h')
- {
- *mode = CLASS_REG_BYTE;
- res = whatreg (reg, src + 2);
+ {
+ *mode = CLASS_REG_BYTE;
+ res = whatreg (reg, src + 2);
regno = *reg;
if (regno > 7)
- as_warn (_("register rh%d, out of range."),regno);
- }
+ as_warn (_("register rh%d, out of range."), regno);
+ }
else if (src[1] == 'l')
- {
- *mode = CLASS_REG_BYTE;
- res = whatreg (reg, src + 2);
+ {
+ *mode = CLASS_REG_BYTE;
+ res = whatreg (reg, src + 2);
regno = *reg;
if (regno > 7)
- as_warn (_("register rl%d, out of range."),regno);
- *reg += 8;
- }
+ as_warn (_("register rl%d, out of range."), regno);
+ *reg += 8;
+ }
else if (src[1] == 'q')
- {
- *mode = CLASS_REG_QUAD;
- res = whatreg (reg, src + 2);
+ {
+ *mode = CLASS_REG_QUAD;
+ res = whatreg (reg, src + 2);
regno = *reg;
if (regno > 12)
- as_warn (_("register rq%d, out of range."),regno);
- }
+ as_warn (_("register rq%d, out of range."), regno);
+ }
else
- {
- *mode = CLASS_REG_WORD;
- res = whatreg (reg, src + 1);
+ {
+ *mode = CLASS_REG_WORD;
+ res = whatreg (reg, src + 1);
regno = *reg;
if (regno > 15)
- as_warn (_("register r%d, out of range."),regno);
- }
+ as_warn (_("register r%d, out of range."), regno);
+ }
}
return res;
-
}
char *
-DEFUN (parse_exp, (s, op),
- char *s AND
- expressionS * op)
+parse_exp (s, op)
+ char *s;
+ expressionS *op;
{
char *save = input_line_pointer;
char *new;
@@ -356,31 +351,27 @@ DEFUN (parse_exp, (s, op),
exp(r)
r(#exp)
r(r)
-
-
-
*/
-static
-char *
-DEFUN (checkfor, (ptr, what),
- char *ptr AND
- char what)
+static char *
+checkfor (ptr, what)
+ char *ptr;
+ char what;
{
if (*ptr == what)
ptr++;
else
- {
- as_bad (_("expected %c"), what);
- }
+ as_bad (_("expected %c"), what);
+
return ptr;
}
-/* Make sure the mode supplied is the size of a word */
+/* Make sure the mode supplied is the size of a word. */
+
static void
-DEFUN (regword, (mode, string),
- int mode AND
- char *string)
+regword (mode, string)
+ int mode;
+ char *string;
{
int ok;
@@ -391,11 +382,12 @@ DEFUN (regword, (mode, string),
}
}
-/* Make sure the mode supplied is the size of an address */
+/* Make sure the mode supplied is the size of an address. */
+
static void
-DEFUN (regaddr, (mode, string),
- int mode AND
- char *string)
+regaddr (mode, string)
+ int mode;
+ char *string;
{
int ok;
@@ -406,30 +398,28 @@ DEFUN (regaddr, (mode, string),
}
}
-struct ctrl_names
-{
- int value;
- char *name;
+struct ctrl_names {
+ int value;
+ char *name;
};
-struct ctrl_names ctrl_table[] =
-{
- 0x2, "fcw",
- 0X3, "refresh",
- 0x4, "psapseg",
- 0x5, "psapoff",
- 0x5, "psap",
- 0x6, "nspseg",
- 0x7, "nspoff",
- 0x7, "nsp",
- 0, 0
+struct ctrl_names ctrl_table[] = {
+ 0x2, "fcw",
+ 0X3, "refresh",
+ 0x4, "psapseg",
+ 0x5, "psapoff",
+ 0x5, "psap",
+ 0x6, "nspseg",
+ 0x7, "nspoff",
+ 0x7, "nsp",
+ 0 , 0
};
-
+
static void
-DEFUN (get_ctrl_operand, (ptr, mode, dst),
- char **ptr AND
- struct z8k_op *mode AND
- unsigned int dst)
+get_ctrl_operand (ptr, mode, dst)
+ char **ptr;
+ struct z8k_op *mode;
+ unsigned int dst;
{
char *src = *ptr;
int r;
@@ -444,28 +434,27 @@ DEFUN (get_ctrl_operand, (ptr, mode, dst),
int j;
for (j = 0; ctrl_table[i].name[j]; j++)
- {
- if (ctrl_table[i].name[j] != src[j])
- goto fail;
- }
+ {
+ if (ctrl_table[i].name[j] != src[j])
+ goto fail;
+ }
the_ctrl = ctrl_table[i].value;
*ptr = src + j;
return;
- fail:;
+ fail:
+ ;
}
the_ctrl = 0;
return;
}
-struct flag_names
-{
+struct flag_names {
int value;
char *name;
};
-struct flag_names flag_table[] =
-{
+struct flag_names flag_table[] = {
0x1, "p",
0x1, "v",
0x2, "s",
@@ -476,10 +465,10 @@ struct flag_names flag_table[] =
};
static void
-DEFUN (get_flags_operand, (ptr, mode, dst),
- char **ptr AND
- struct z8k_op *mode AND
- unsigned int dst)
+get_flags_operand (ptr, mode, dst)
+ char **ptr;
+ struct z8k_op *mode;
+ unsigned int dst;
{
char *src = *ptr;
int r;
@@ -493,35 +482,32 @@ DEFUN (get_flags_operand, (ptr, mode, dst),
the_flags = 0;
for (j = 0; j <= 9; j++)
{
- if (!src[j])
+ if (!src[j])
goto done;
- for (i = 0; flag_table[i].name; i++)
- {
- if (flag_table[i].name[0] == src[j])
- {
- the_flags = the_flags | flag_table[i].value;
- goto match;
- }
- }
+ for (i = 0; flag_table[i].name; i++)
+ {
+ if (flag_table[i].name[0] == src[j])
+ {
+ the_flags = the_flags | flag_table[i].value;
+ goto match;
+ }
+ }
goto done;
match:
- ;
+ ;
}
- done:
+ done:
*ptr = src + j;
return;
}
-
-struct interrupt_names
-{
+struct interrupt_names {
int value;
char *name;
};
-struct interrupt_names intr_table[] =
-{
+struct interrupt_names intr_table[] = {
0x1, "nvi",
0x2, "vi",
0x3, "both",
@@ -530,10 +516,10 @@ struct interrupt_names intr_table[] =
};
static void
-DEFUN (get_interrupt_operand, (ptr, mode, dst),
- char **ptr AND
- struct z8k_op *mode AND
- unsigned int dst)
+get_interrupt_operand (ptr, mode, dst)
+ char **ptr;
+ struct z8k_op *mode;
+ unsigned int dst;
{
char *src = *ptr;
int r;
@@ -548,28 +534,27 @@ DEFUN (get_interrupt_operand, (ptr, mode, dst),
int j;
for (j = 0; intr_table[i].name[j]; j++)
- {
- if (intr_table[i].name[j] != src[j])
- goto fail;
- }
+ {
+ if (intr_table[i].name[j] != src[j])
+ goto fail;
+ }
the_interrupt = intr_table[i].value;
*ptr = src + j;
return;
- fail:;
+ fail:
+ ;
}
the_interrupt = 0x0;
return;
}
-struct cc_names
-{
+struct cc_names {
int value;
char *name;
};
-struct cc_names table[] =
-{
+struct cc_names table[] = {
0x0, "f",
0x1, "lt",
0x2, "le",
@@ -592,14 +577,14 @@ struct cc_names table[] =
0xe, "nz",
0xf, "nc",
0xf, "uge",
- 0, 0
+ 0 , 0
};
static void
-DEFUN (get_cc_operand, (ptr, mode, dst),
- char **ptr AND
- struct z8k_op *mode AND
- unsigned int dst)
+get_cc_operand (ptr, mode, dst)
+ char **ptr;
+ struct z8k_op *mode;
+ unsigned int dst;
{
char *src = *ptr;
int r;
@@ -621,7 +606,8 @@ DEFUN (get_cc_operand, (ptr, mode, dst),
the_cc = table[i].value;
*ptr = src + j;
return;
- fail:;
+ fail:
+ ;
}
the_cc = 0x8;
}
@@ -672,20 +658,18 @@ get_operand (ptr, mode, dst)
end = parse_reg (src, &nw, &nr);
if (end)
{
- /* Got Ra(Rb) */
+ /* Got Ra(Rb). */
src = end;
if (*src != ')')
- {
- as_bad (_("Missing ) in ra(rb)"));
- }
+ as_bad (_("Missing ) in ra(rb)"));
else
- {
- src++;
- }
+ src++;
regaddr (mode->mode, "ra(rb) ra");
-/* regword (mode->mode, "ra(rb) rb");*/
+#if 0
+ regword (mode->mode, "ra(rb) rb");
+#endif
mode->mode = CLASS_BX;
mode->reg = regn;
mode->x_reg = nr;
@@ -693,7 +677,7 @@ get_operand (ptr, mode, dst)
}
else
{
- /* Got Ra(disp) */
+ /* Got Ra(disp). */
if (*src == '#')
src++;
src = parse_exp (src, &(mode->exp));
@@ -712,7 +696,7 @@ get_operand (ptr, mode, dst)
}
else
{
- /* No initial reg */
+ /* No initial reg. */
src = parse_exp (src, &(mode->exp));
if (*src == '(')
{
@@ -727,7 +711,7 @@ get_operand (ptr, mode, dst)
}
else
{
- /* Just an address */
+ /* Just an address. */
mode->mode = CLASS_DA;
mode->reg = 0;
mode->x_reg = 0;
@@ -738,15 +722,15 @@ get_operand (ptr, mode, dst)
*ptr = src;
}
-static
-char *
+static char *
get_operands (opcode, op_end, operand)
opcode_entry_type *opcode;
char *op_end;
op_type *operand;
{
char *ptr = op_end;
-char *savptr;
+ char *savptr;
+
switch (opcode->noperands)
{
case 0:
@@ -757,21 +741,21 @@ char *savptr;
case 1:
ptr++;
if (opcode->arg_info[0] == CLASS_CC)
- {
- get_cc_operand (&ptr, operand + 0, 0);
- }
+ {
+ get_cc_operand (&ptr, operand + 0, 0);
+ }
else if (opcode->arg_info[0] == CLASS_FLAGS)
- {
- get_flags_operand (&ptr, operand + 0, 0);
- }
- else if (opcode->arg_info[0] == (CLASS_IMM +(ARG_IMM2)))
- {
- get_interrupt_operand (&ptr, operand + 0, 0);
- }
+ {
+ get_flags_operand (&ptr, operand + 0, 0);
+ }
+ else if (opcode->arg_info[0] == (CLASS_IMM + (ARG_IMM2)))
+ {
+ get_interrupt_operand (&ptr, operand + 0, 0);
+ }
else
- {
- get_operand (&ptr, operand + 0, 0);
- }
+ {
+ get_operand (&ptr, operand + 0, 0);
+ }
operand[1].mode = 0;
break;
@@ -779,32 +763,32 @@ char *savptr;
ptr++;
savptr = ptr;
if (opcode->arg_info[0] == CLASS_CC)
- {
- get_cc_operand (&ptr, operand + 0, 0);
- }
+ {
+ get_cc_operand (&ptr, operand + 0, 0);
+ }
else if (opcode->arg_info[0] == CLASS_CTRL)
- {
- get_ctrl_operand (&ptr, operand + 0, 0);
- if (the_ctrl == 0)
- {
- ptr = savptr;
- get_operand (&ptr, operand + 0, 0);
- if (ptr == 0)
- return;
- if (*ptr == ',')
- ptr++;
- get_ctrl_operand (&ptr, operand + 1, 1);
- return ptr;
- }
- }
+ {
+ get_ctrl_operand (&ptr, operand + 0, 0);
+ if (the_ctrl == 0)
+ {
+ ptr = savptr;
+ get_operand (&ptr, operand + 0, 0);
+ if (ptr == 0)
+ return;
+ if (*ptr == ',')
+ ptr++;
+ get_ctrl_operand (&ptr, operand + 1, 1);
+ return ptr;
+ }
+ }
else
- {
- get_operand (&ptr, operand + 0, 0);
- }
+ {
+ get_operand (&ptr, operand + 0, 0);
+ }
if (ptr == 0)
- return;
+ return;
if (*ptr == ',')
- ptr++;
+ ptr++;
get_operand (&ptr, operand + 1, 1);
break;
@@ -832,6 +816,7 @@ char *savptr;
ptr++;
get_cc_operand (&ptr, operand + 3, 3);
break;
+
default:
abort ();
}
@@ -840,15 +825,13 @@ char *savptr;
}
/* Passed a pointer to a list of opcodes which use different
- addressing modes, return the opcode which matches the opcodes
- provided
- */
+ addressing modes. Return the opcode which matches the opcodes
+ provided. */
-static
-opcode_entry_type *
-DEFUN (get_specific, (opcode, operands),
- opcode_entry_type * opcode AND
- op_type * operands)
+static opcode_entry_type *
+get_specific (opcode, operands)
+ opcode_entry_type *opcode;
+ op_type *operands;
{
opcode_entry_type *this_try = opcode;
@@ -869,29 +852,29 @@ DEFUN (get_specific, (opcode, operands),
if ((mode & CLASS_MASK) != (this_try->arg_info[i] & CLASS_MASK))
{
- /* it could be an pc rel operand, if this is a da mode and
- we like disps, then insert it */
+ /* It could be an pc rel operand, if this is a da mode
+ and we like disps, then insert it. */
if (mode == CLASS_DA && this_try->arg_info[i] == CLASS_DISP)
{
- /* This is the case */
+ /* This is the case. */
operands[i].mode = CLASS_DISP;
}
else if (mode == CLASS_BA && this_try->arg_info[i])
{
- /* Can't think of a way to turn what we've been given into
- something that's ok */
+ /* Can't think of a way to turn what we've been
+ given into something that's OK. */
goto fail;
}
else if (this_try->arg_info[i] & CLASS_PR)
{
if (mode == CLASS_REG_LONG && segmented_mode)
{
- /* ok */
+ /* OK. */
}
else if (mode == CLASS_REG_WORD && !segmented_mode)
{
- /* ok */
+ /* OK. */
}
else
goto fail;
@@ -920,7 +903,8 @@ DEFUN (get_specific, (opcode, operands),
}
found = 1;
- fail:;
+ fail:
+ ;
}
if (found)
return this_try;
@@ -929,22 +913,24 @@ DEFUN (get_specific, (opcode, operands),
}
static void
-DEFUN (check_operand, (operand, width, string),
- struct z8k_op *operand AND
- unsigned int width AND
- char *string)
+check_operand (operand, width, string)
+ struct z8k_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*/
+ /* 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 ((operand->exp.X_add_number & ~width) != 0 &&
(operand->exp.X_add_number | width) != (~0))
{
- as_warn (_("operand %s0x%x out of range."), string, operand->exp.X_add_number);
+ as_warn (_("operand %s0x%x out of range."),
+ string, operand->exp.X_add_number);
}
}
@@ -953,10 +939,10 @@ DEFUN (check_operand, (operand, width, string),
static char buffer[20];
static void
-DEFUN (newfix, (ptr, type, operand),
- int ptr AND
- int type AND
- expressionS * operand)
+newfix (ptr, type, operand)
+ int ptr;
+ int type;
+ expressionS *operand;
{
if (operand->X_add_symbol
|| operand->X_op_symbol
@@ -972,11 +958,11 @@ DEFUN (newfix, (ptr, type, operand),
}
static char *
-DEFUN (apply_fix, (ptr, type, operand, size),
- char *ptr AND
- int type AND
- expressionS * operand AND
- int size)
+apply_fix (ptr, type, operand, size)
+ char *ptr;
+ int type;
+ expressionS *operand;
+ int size;
{
int n = operand->X_add_number;
@@ -985,12 +971,12 @@ DEFUN (apply_fix, (ptr, type, operand, size),
#if 1
switch (size)
{
- case 8: /* 8 nibbles == 32 bits */
+ case 8: /* 8 nibbles == 32 bits */
*ptr++ = n >> 28;
*ptr++ = n >> 24;
*ptr++ = n >> 20;
*ptr++ = n >> 16;
- case 4: /* 4 niblles == 16 bits */
+ case 4: /* 4 niblles == 16 bits */
*ptr++ = n >> 12;
*ptr++ = n >> 8;
case 2:
@@ -1004,12 +990,13 @@ DEFUN (apply_fix, (ptr, type, operand, size),
}
-/* Now we know what sort of opcodes it is, lets build the bytes -
- */
+/* Now we know what sort of opcodes it is. Let's build the bytes. */
+
#define INSERT(x,y) *x++ = y>>24; *x++ = y>> 16; *x++=y>>8; *x++ =y;
+
static void
build_bytes (this_try, operand)
- opcode_entry_type * this_try;
+ opcode_entry_type *this_try;
struct z8k_op *operand;
{
unsigned int i;
@@ -1029,18 +1016,18 @@ build_bytes (this_try, operand)
memset (buffer, 20, 0);
class_ptr = this_try->byte_info;
-top:;
+ top:
for (nibble = 0; c = *class_ptr++; nibble++)
{
switch (c & CLASS_MASK)
{
default:
-
abort ();
+
case CLASS_ADDRESS:
- /* Direct address, we don't cope with the SS mode right now */
+ /* Direct address, we don't cope with the SS mode right now. */
if (segmented_mode)
{
da_operand->X_add_number |= 0x80000000;
@@ -1053,23 +1040,23 @@ top:;
da_operand = 0;
break;
case CLASS_DISP8:
- /* pc rel 8 bit */
+ /* pc rel 8 bit */
output_ptr = apply_fix (output_ptr, R_JR, da_operand, 2);
da_operand = 0;
break;
case CLASS_0DISP7:
- /* pc rel 7 bit */
+ /* pc rel 7 bit */
*output_ptr = 0;
output_ptr = apply_fix (output_ptr, R_DISP7, da_operand, 2);
da_operand = 0;
break;
case CLASS_1DISP7:
- /* pc rel 7 bit */
+ /* pc rel 7 bit */
*output_ptr = 0x80;
output_ptr = apply_fix (output_ptr, R_DISP7, da_operand, 2);
- output_ptr[-2] = 0x8;
+ output_ptr[-2] = 0x8;
da_operand = 0;
break;
@@ -1078,53 +1065,45 @@ top:;
if (imm_operand)
{
if (imm_operand->X_add_number == 2)
- {
- *output_ptr |= 2;
- }
+ *output_ptr |= 2;
else if (imm_operand->X_add_number != 1)
- {
- as_bad (_("immediate must be 1 or 2"));
- }
+ as_bad (_("immediate must be 1 or 2"));
}
else
- {
- as_bad (_("immediate 1 or 2 expected"));
- }
+ as_bad (_("immediate 1 or 2 expected"));
output_ptr++;
break;
case CLASS_CC:
*output_ptr++ = the_cc;
break;
- case CLASS_0CCC:
- *output_ptr++ = the_ctrl;
- break;
- case CLASS_1CCC:
- *output_ptr++ = the_ctrl | 0x8;
- break;
- case CLASS_00II:
- *output_ptr++ = (~the_interrupt & 0x3);
- break;
- case CLASS_01II:
- *output_ptr++ = (~the_interrupt & 0x3) | 0x4;
- break;
- case CLASS_FLAGS:
- *output_ptr++ = the_flags;
- break;
+ case CLASS_0CCC:
+ *output_ptr++ = the_ctrl;
+ break;
+ case CLASS_1CCC:
+ *output_ptr++ = the_ctrl | 0x8;
+ break;
+ case CLASS_00II:
+ *output_ptr++ = (~the_interrupt & 0x3);
+ break;
+ case CLASS_01II:
+ *output_ptr++ = (~the_interrupt & 0x3) | 0x4;
+ break;
+ case CLASS_FLAGS:
+ *output_ptr++ = the_flags;
+ break;
case CLASS_BIT:
*output_ptr++ = c & 0xf;
break;
case CLASS_REGN0:
if (reg[c & 0xf] == 0)
- {
- as_bad (_("can't use R0 here"));
- }
+ as_bad (_("can't use R0 here"));
+ /* Fall through. */
case CLASS_REG:
case CLASS_REG_BYTE:
case CLASS_REG_WORD:
case CLASS_REG_LONG:
case CLASS_REG_QUAD:
- /* Insert bit mattern of
- right reg */
+ /* Insert bit mattern of right reg. */
*output_ptr++ = reg[c & 0xf];
break;
case CLASS_DISP:
@@ -1168,8 +1147,7 @@ top:;
}
}
- /* Copy from the nibble buffer into the frag */
-
+ /* Copy from the nibble buffer into the frag. */
{
int length = (output_ptr - buffer) / 2;
char *src = buffer;
@@ -1181,19 +1159,16 @@ top:;
src += 2;
fragp++;
}
-
}
-
}
/* This is the guts of the machine-dependent assembler. STR points to a
- machine dependent instruction. This funciton is supposed to emit
- the frags/bytes it assembles to.
- */
+ machine dependent instruction. This function is supposed to emit
+ the frags/bytes it assembles to. */
void
-DEFUN (md_assemble, (str),
- char *str)
+md_assemble (str)
+ char *str;
{
char *op_start;
char *op_end;
@@ -1205,18 +1180,15 @@ DEFUN (md_assemble, (str),
char *dot = 0;
char c;
- /* Drop leading whitespace */
+ /* Drop leading whitespace. */
while (*str == ' ')
str++;
- /* find the op code end */
+ /* Find the op code end. */
for (op_start = op_end = str;
*op_end != 0 && *op_end != ' ';
op_end++)
- {
- }
-
- ;
+ ;
if (op_end == op_start)
{
@@ -1226,9 +1198,7 @@ DEFUN (md_assemble, (str),
*op_end = 0;
- opcode = (opcode_entry_type *) hash_find (opcode_hash_control,
- op_start);
-
+ opcode = (opcode_entry_type *) hash_find (opcode_hash_control, op_start);
if (opcode == NULL)
{
@@ -1238,7 +1208,7 @@ DEFUN (md_assemble, (str),
if (opcode->opcode == 250)
{
- /* was really a pseudo op */
+ /* Was really a pseudo op. */
pseudo_typeS *p;
char oc;
@@ -1246,7 +1216,6 @@ DEFUN (md_assemble, (str),
char *old = input_line_pointer;
*op_end = c;
-
input_line_pointer = op_end;
oc = *old;
@@ -1261,15 +1230,14 @@ DEFUN (md_assemble, (str),
}
else
{
- input_line_pointer = get_operands (opcode, op_end,
- operand);
+ input_line_pointer = 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 */
+ /* Couldn't find an opcode which matched the operands. */
char *where = frag_more (2);
where[0] = 0x0;
@@ -1284,34 +1252,35 @@ DEFUN (md_assemble, (str),
}
void
-DEFUN (tc_crawl_symbol_chain, (headers),
- object_headers * headers)
+tc_crawl_symbol_chain (headers)
+ object_headers *headers;
{
printf (_("call to tc_crawl_symbol_chain \n"));
}
symbolS *
-DEFUN (md_undefined_symbol, (name),
- char *name)
+md_undefined_symbol (name)
+ char *name;
{
return 0;
}
void
-DEFUN (tc_headers_hook, (headers),
- object_headers * headers)
+tc_headers_hook (headers)
+ object_headers *headers;
{
printf (_("call to tc_headers_hook \n"));
}
-/* Various routines to kill one day */
-/* Equal to MAX_PRECISION in atof-ieee.c */
+/* 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.
- */
+/* 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;
@@ -1368,10 +1337,12 @@ md_atof (type, litP, sizeP)
}
CONST char *md_shortopts = "z:";
+
struct option md_longopts[] = {
{NULL, no_argument, NULL, 0}
};
-size_t md_longopts_size = sizeof(md_longopts);
+
+size_t md_longopts_size = sizeof (md_longopts);
int
md_parse_option (c, arg)
@@ -1403,7 +1374,7 @@ void
md_show_usage (stream)
FILE *stream;
{
- fprintf(stream, _("\
+ fprintf (stream, _("\
Z8K options:\n\
-z8001 generate segmented code\n\
-z8002 generate unsegmented code\n"));
@@ -1427,11 +1398,12 @@ md_convert_frag (headers, seg, fragP)
}
valueT
-DEFUN (md_section_align, (seg, size),
- segT seg AND
- valueT size)
+md_section_align (seg, size)
+ segT seg;
+ valueT size;
{
- return ((size + (1 << section_alignment[(int) seg]) - 1) & (-1 << section_alignment[(int) seg]));
+ return ((size + (1 << section_alignment[(int) seg]) - 1)
+ & (-1 << section_alignment[(int) seg]));
}
@@ -1451,13 +1423,19 @@ md_apply_fix (fixP, val)
case R_JR:
*buf++ = val;
- /* if (val != 0) abort();*/
+#if 0
+ if (val != 0)
+ abort ();
+#endif
break;
case R_DISP7:
*buf++ += val;
- /* if (val != 0) abort();*/
+#if 0
+ if (val != 0)
+ abort ();
+#endif
break;
case R_IMM8:
@@ -1488,7 +1466,6 @@ md_apply_fix (fixP, val)
default:
abort ();
-
}
}
@@ -1501,16 +1478,17 @@ md_estimate_size_before_relax (fragP, segment_type)
abort ();
}
-/* Put number into target byte order */
+/* Put number into target byte order. */
void
-DEFUN (md_number_to_chars, (ptr, use, nbytes),
- char *ptr AND
- valueT use AND
- int nbytes)
+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;
@@ -1533,30 +1511,31 @@ tc_reloc_mangle (fix_ptr, intr, base)
{
symbolS *symbol_ptr;
- if (fix_ptr->fx_addsy &&
- fix_ptr->fx_subsy)
+ if (fix_ptr->fx_addsy
+ && fix_ptr->fx_subsy)
{
symbolS *add = fix_ptr->fx_addsy;
symbolS *sub = fix_ptr->fx_subsy;
- if (S_GET_SEGMENT(add) != S_GET_SEGMENT(sub))
+
+ if (S_GET_SEGMENT (add) != S_GET_SEGMENT (sub))
+ as_bad (_("Can't subtract symbols in different sections %s %s"),
+ S_GET_NAME (add), S_GET_NAME (sub));
+ else
{
- as_bad(_("Can't subtract symbols in different sections %s %s"),
- S_GET_NAME(add), S_GET_NAME(sub));
+ int diff = S_GET_VALUE (add) - S_GET_VALUE (sub);
+
+ fix_ptr->fx_addsy = 0;
+ fix_ptr->fx_subsy = 0;
+ fix_ptr->fx_offset += diff;
}
- else {
- int diff = S_GET_VALUE(add) - S_GET_VALUE(sub);
- fix_ptr->fx_addsy = 0;
- fix_ptr->fx_subsy = 0;
- fix_ptr->fx_offset += diff;
- }
}
symbol_ptr = fix_ptr->fx_addsy;
/* If this relocation is attached to a symbol then it's ok
- to output it */
+ to output it. */
if (fix_ptr->fx_r_type == 0)
{
- /* cons likes to create reloc32's whatever the size of the reloc.. */
+ /* cons likes to create reloc32's whatever the size of the reloc. */
switch (fix_ptr->fx_size)
{
case 2:
@@ -1571,12 +1550,9 @@ tc_reloc_mangle (fix_ptr, intr, base)
default:
abort ();
}
-
}
else
- {
- intr->r_type = fix_ptr->fx_r_type;
- }
+ 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;
@@ -1586,4 +1562,3 @@ tc_reloc_mangle (fix_ptr, intr, base)
else
intr->r_symndx = -1;
}
-
diff --git a/contrib/binutils/gas/config/tc-z8k.h b/contrib/binutils/gas/config/tc-z8k.h
index d88b656..130c01c 100644
--- a/contrib/binutils/gas/config/tc-z8k.h
+++ b/contrib/binutils/gas/config/tc-z8k.h
@@ -1,5 +1,6 @@
/* This file is tc-z8k.h
- Copyright (C) 1987-1992, 93, 95, 97, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1987-1992, 93, 95, 97, 98, 2000
+ Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -18,7 +19,6 @@
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-
#define TC_Z8K
#define TARGET_BYTES_BIG_ENDIAN 1
@@ -33,7 +33,7 @@ struct internal_reloc;
#endif
/* This macro translates between an internal fix and an coff reloc type */
-#define TC_COFF_FIX2RTYPE(fixP) abort();
+#define TC_COFF_FIX2RTYPE(fixP) abort ();
#define BFD_ARCH bfd_arch_z8k
#define COFF_MAGIC 0x8000
@@ -50,5 +50,3 @@ extern void tc_reloc_mangle
#define RELOC_32 1234
#define md_operand(x)
-
-/* end of tc-z8k.h */
diff --git a/contrib/binutils/gas/config/te-386bsd.h b/contrib/binutils/gas/config/te-386bsd.h
index dbff990..0f077b5 100644
--- a/contrib/binutils/gas/config/te-386bsd.h
+++ b/contrib/binutils/gas/config/te-386bsd.h
@@ -1,21 +1,22 @@
/* te-386bsd.h -- 386BSD target environment declarations.
Copyright (C) 1987, 1990, 1991, 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. */
+ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
#define TE_386BSD 1
@@ -28,4 +29,4 @@
* End:
*/
-/* end of te-sun3.h */
+/* end of te-386bsd.h */
diff --git a/contrib/binutils/gas/config/te-aux.h b/contrib/binutils/gas/config/te-aux.h
index da6fa01..38445d9 100644
--- a/contrib/binutils/gas/config/te-aux.h
+++ b/contrib/binutils/gas/config/te-aux.h
@@ -2,7 +2,7 @@
/* From obj-coff.h:
This internal_lineno crap is to stop namespace pollution from the
- bfd internal coff headerfile. */
+ bfd internal coff headerfile. */
#define internal_lineno bfd_internal_lineno
#include "coff/aux-coff.h" /* override bits in coff/internal.h */
#undef internal_lineno
diff --git a/contrib/binutils/gas/config/te-nbsd.h b/contrib/binutils/gas/config/te-nbsd.h
index cee4600..010a711 100644
--- a/contrib/binutils/gas/config/te-nbsd.h
+++ b/contrib/binutils/gas/config/te-nbsd.h
@@ -1,18 +1,18 @@
/* te-nbsd.h -- NetBSD target environment declarations.
Copyright (C) 1987, 90, 91, 92, 94, 95, 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
diff --git a/contrib/binutils/gas/config/te-ppcnw.h b/contrib/binutils/gas/config/te-ppcnw.h
index 2ddf050..d23e38c 100644
--- a/contrib/binutils/gas/config/te-ppcnw.h
+++ b/contrib/binutils/gas/config/te-ppcnw.h
@@ -1,21 +1,22 @@
/* te-ppcnw.h -- Power PC running Netware environment declarations.
Copyright (C) 1994 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 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
/* Added these, because if we don't know what we're targetting we may
need an assembler version of libgcc, and that will use local
@@ -26,6 +27,6 @@
/* these define interfaces */
#include "obj-format.h"
-/* gcc uses escape sequences for ppc/netware */
+/* gcc uses escape sequences for ppc/netware. */
#undef NO_STRING_ESCAPES
diff --git a/contrib/binutils/gas/config/te-sparcaout.h b/contrib/binutils/gas/config/te-sparcaout.h
index 6310184..6c92f63 100644
--- a/contrib/binutils/gas/config/te-sparcaout.h
+++ b/contrib/binutils/gas/config/te-sparcaout.h
@@ -1,21 +1,22 @@
/* te-sparcaout.h -- embedded sparc-aout target environment declarations.
Copyright (C) 1996 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 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA. */
#define TE_SPARCAOUT 1
#include "obj-format.h"
diff --git a/contrib/binutils/gas/config/te-sysv32.h b/contrib/binutils/gas/config/te-sysv32.h
index 923e6e5..c60728a 100644
--- a/contrib/binutils/gas/config/te-sysv32.h
+++ b/contrib/binutils/gas/config/te-sysv32.h
@@ -1,4 +1,4 @@
-/* Remove leading underscore from the gcc generated symbol names */
+/* Remove leading underscore from the gcc generated symbol names. */
#define STRIP_UNDERSCORE
#include "obj-format.h"
diff --git a/contrib/binutils/gas/configure b/contrib/binutils/gas/configure
index 28f69be..dbdad71 100755
--- a/contrib/binutils/gas/configure
+++ b/contrib/binutils/gas/configure
@@ -22,12 +22,16 @@ ac_help="$ac_help
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-bfd-assembler use BFD back end for writing object files"
ac_help="$ac_help
targets alternative target configurations besides the primary"
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"
@@ -51,6 +55,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -165,6 +170,7 @@ Configuration:
--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
@@ -335,6 +341,11 @@ EOF
-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=*)
@@ -500,12 +511,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
@@ -543,6 +558,68 @@ else
ac_n= ac_c='\c' ac_t=
fi
+echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
+echo "configure:563: 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 <<EOF
+#line 568 "configure"
+#include "confdefs.h"
+
+int main() {
+
+#ifndef __CYGWIN__
+#define __CYGWIN__ __CYGWIN32__
+#endif
+return __CYGWIN__;
+; return 0; }
+EOF
+if { (eval echo configure:579: \"$ac_compile\") 1>&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:596: 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 <<EOF
+#line 601 "configure"
+#include "confdefs.h"
+
+int main() {
+return __MINGW32__;
+; return 0; }
+EOF
+if { (eval echo configure:608: \"$ac_compile\") 1>&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=
@@ -592,7 +669,7 @@ 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:596: checking host system type" >&5
+echo "configure:673: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -613,7 +690,7 @@ 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:617: checking target system type" >&5
+echo "configure:694: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -631,7 +708,7 @@ 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:635: checking build system type" >&5
+echo "configure:712: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -654,6 +731,49 @@ test "$host_alias" != "$target_alias" &&
program_prefix=${target_alias}-
+ echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6
+echo "configure:736: 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 <<EOF
+#line 744 "configure"
+#include "confdefs.h"
+/* 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 strerror();
+
+int main() {
+strerror()
+; return 0; }
+EOF
+if { (eval echo configure:755: \"$ac_link\") 1>&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
+
+
+
+
# 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:
@@ -666,7 +786,7 @@ test "$host_alias" != "$target_alias" &&
# 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:670: checking for a BSD compatible install" >&5
+echo "configure:790: 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
@@ -719,7 +839,7 @@ 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:723: checking whether build environment is sane" >&5
+echo "configure:843: checking whether build environment is sane" >&5
# Just in case
sleep 1
echo timestamp > conftestfile
@@ -776,7 +896,7 @@ test "$program_suffix" != NONE &&
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:780: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:900: 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
@@ -805,7 +925,7 @@ fi
PACKAGE=gas
-VERSION=2.10.1
+VERSION=2.11
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; }
@@ -822,7 +942,7 @@ EOF
missing_dir=`cd $ac_aux_dir && pwd`
echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
-echo "configure:826: checking for working aclocal" >&5
+echo "configure:946: 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.
@@ -835,7 +955,7 @@ else
fi
echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
-echo "configure:839: checking for working autoconf" >&5
+echo "configure:959: 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.
@@ -848,7 +968,7 @@ else
fi
echo $ac_n "checking for working automake""... $ac_c" 1>&6
-echo "configure:852: checking for working automake" >&5
+echo "configure:972: 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.
@@ -861,7 +981,7 @@ else
fi
echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
-echo "configure:865: checking for working autoheader" >&5
+echo "configure:985: 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.
@@ -874,7 +994,7 @@ else
fi
echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
-echo "configure:878: checking for working makeinfo" >&5
+echo "configure:998: 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.
@@ -957,40 +1077,10 @@ else
enable_fast_install=yes
fi
-# 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:964: 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
-
# 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:994: checking for $ac_word" >&5
+echo "configure:1084: 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
@@ -1020,7 +1110,7 @@ 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:1024: checking for $ac_word" >&5
+echo "configure:1114: 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
@@ -1071,7 +1161,7 @@ fi
# 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:1075: checking for $ac_word" >&5
+echo "configure:1165: 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
@@ -1103,7 +1193,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1107: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1197: 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.
@@ -1114,12 +1204,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1118 "configure"
+#line 1208 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1213: \"$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
@@ -1145,12 +1235,12 @@ 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:1149: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1239: 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:1154: checking whether we are using GNU C" >&5
+echo "configure:1244: 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
@@ -1159,7 +1249,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1163: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1253: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1178,7 +1268,7 @@ 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:1182: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1272: 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
@@ -1221,8 +1311,14 @@ ac_prog=ld
if test "$ac_cv_prog_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:1225: checking for ld used by GCC" >&5
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
+echo "configure:1315: 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]:[\\/]*)
@@ -1245,10 +1341,10 @@ echo "configure:1225: checking for ld used by GCC" >&5
esac
elif test "$with_gnu_ld" = yes; then
echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1249: checking for GNU ld" >&5
+echo "configure:1345: checking for GNU ld" >&5
else
echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1252: checking for non-GNU ld" >&5
+echo "configure:1348: checking for non-GNU ld" >&5
fi
if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1283,7 +1379,7 @@ else
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:1287: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1383: checking if the linker ($LD) is GNU ld" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1296,10 +1392,23 @@ fi
fi
echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
+with_gnu_ld=$ac_cv_prog_gnu_ld
+
+echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
+echo "configure:1400: 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:1303: checking for BSD-compatible nm" >&5
+echo "configure:1412: checking for BSD-compatible nm" >&5
if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1310,18 +1419,20 @@ 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=.
- if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
+ 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
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -B"
+ # 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
+ ac_cv_path_NM="$tmp_nm -B"
break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -p"
+ elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+ ac_cv_path_NM="$tmp_nm -p"
break
else
- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
+ ac_cv_path_NM=${ac_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
@@ -1335,7 +1446,7 @@ NM="$ac_cv_path_NM"
echo "$ac_t""$NM" 1>&6
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1339: checking whether ln -s works" >&5
+echo "configure:1450: 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
@@ -1355,12 +1466,484 @@ else
echo "$ac_t""no" 1>&6
fi
+echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
+echo "configure:1471: 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
+aix4*)
+ 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'
+ ;;
+
+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*)
+ # TODO: Does this work for hpux-11 too?
+ lt_cv_deplibs_check_method='file_magic (s0-90-90-9|PA-RISC0-9.0-9) shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+
+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
+ ;;
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
+# This must be Linux ELF.
+linux-gnu*)
+ case "$host_cpu" in
+ alpha* | 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 :
+ else
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ fi
+ ;;
+
+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
+ ;;
+
+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:1614: 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:1620: \"$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:1640: 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:1650: \"$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:1683: 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 <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+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:1745: 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 <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+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:1816: 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:1848: 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:1883: 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:1915: 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"
@@ -1379,13 +1962,24 @@ 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 "$lt_target" in
+case "$host" in
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 1388 "configure"' > conftest.$ac_ext
- if { (eval echo configure:1389: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ echo '#line 1982 "configure"' > conftest.$ac_ext
+ if { (eval echo configure:1983: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
case "`/usr/bin/file conftest.o`" in
*32-bit*)
LD="${LD-ld} -32"
@@ -1406,19 +2000,27 @@ case "$lt_target" in
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -belf"
echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:1410: checking whether the C compiler needs -belf" >&5
+echo "configure:2004: 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
- cat > conftest.$ac_ext <<EOF
-#line 1415 "configure"
+
+ 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 2017 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:1422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2024: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
lt_cv_cc_needs_belf=yes
else
@@ -1428,6 +2030,13 @@ else
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
@@ -1491,12 +2100,14 @@ rm -f confcache
# Actually configure libtool. ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
+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 $ac_aux_dir/ltmain.sh $lt_target \
+$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
@@ -1510,7 +2121,7 @@ fi
# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
+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'
@@ -1520,6 +2131,12 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
exec 5>>./config.log
+
+
+
+
+
+
user_bfd_gas=
# Check whether --enable-bfd-assembler or --disable-bfd-assembler was given.
if test "${enable_bfd_assembler+set}" = set; then
@@ -1552,6 +2169,29 @@ fi
using_cgen=no
+build_warnings="-W -Wall"
+# 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
+
+
# Generate a header file
@@ -1619,10 +2259,14 @@ for this_target in $target $canon_targets ; do
armb*) cpu_type=arm endian=little ;;
armv*l) cpu_type=arm endian=little ;;
armv*b) cpu_type=arm endian=big ;;
+ xscale*) cpu_type=arm endian=little ;;
strongarm*) cpu_type=arm endian=little ;;
thumb*) cpu_type=arm endian=little ;;
hppa*) cpu_type=hppa ;;
- i[456]86) cpu_type=i386 ;;
+ i[3456]86) cpu_type=i386 arch=i386;;
+ x86_64) cpu_type=i386 arch=x86_64;;
+ ia64) cpu_type=ia64 ;;
+ m6811|m6812|m68hc12) cpu_type=m68hc11 ;;
m680[012346]0) cpu_type=m68k ;;
m68008) cpu_type=m68k ;;
m683??) cpu_type=m68k ;;
@@ -1661,6 +2305,7 @@ for this_target in $target $canon_targets ; do
a29k-amd-udi) fmt=coff ;;
a29k-amd-ebmon) fmt=coff ;;
a29k-nyu-sym1) fmt=coff ;;
+ a29k-*-rtems*) fmt=coff ;;
a29k-*-vxworks*) fmt=coff ;;
alpha*-*-*vms*) fmt=evax ;;
@@ -1669,42 +2314,57 @@ for this_target in $target $canon_targets ; do
alpha*-*-osf*) fmt=ecoff ;;
alpha*-*-linuxecoff*) fmt=ecoff ;;
alpha*-*-linux-gnu*) fmt=elf em=linux ;;
- alpha*-*-freebsd*) fmt=elf em=freebsd ;;
alpha*-*-netbsd*) fmt=elf em=nbsd ;;
arc-*-elf*) fmt=elf bfd_gas=yes ;;
arm-*-aout) fmt=aout ;;
arm-*-coff | thumb-*-coff) fmt=coff ;;
+ arm-*-rtems | thumb-*-rtems) fmt=elf ;;
arm-*-elf | thumb-*-elf) fmt=elf ;;
arm*-*-conix*) fmt=elf ;;
arm-*-linux*aout*) fmt=aout em=linux ;;
- arm*-*-linux-gnu*) fmt=elf em=linux ;;
- arm-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
+ arm*-*-linux-gnu* | arm*-*-uclinux*)
+ fmt=elf em=linux ;;
+ arm-*-netbsd*) fmt=aout em=nbsd ;;
arm-*-oabi | thumb-*-oabi) fmt=elf ;;
arm-epoc-pe | thumb-epoc-pe) fmt=coff em=epoc-pe ;;
- arm-*-wince) fmt=coff em=wince-pe bfd_gas=yes;;
+ arm-*-wince) fmt=coff em=wince-pe ;;
arm-*-pe | thumb-*-pe) fmt=coff em=pe ;;
arm-*-riscix*) fmt=aout em=riscix ;;
avr-*-*) fmt=elf bfd_gas=yes ;;
+ cris-*-*) fmt=multi bfd_gas=yes ;;
+
d10v-*-*) fmt=elf bfd_gas=yes ;;
d30v-*-*) fmt=elf bfd_gas=yes ;;
fr30-*-*) fmt=elf bfd_gas=yes ;;
+ hppa-*-linux-gnu*) case ${cpu} in
+ hppa*64*)
+ fmt=elf em=hppalinux64;;
+ hppa*)
+ fmt=elf em=linux;;
+ esac ;;
hppa-*-*elf*) fmt=elf em=hppa ;;
- hppa-*-linux-gnu*) fmt=elf em=hppa ;;
hppa-*-lites*) fmt=elf em=hppa ;;
hppa-*-osf*) fmt=som em=hppa ;;
hppa-*-rtems*) fmt=elf em=hppa ;;
+ hppa-*-hpux11*) case ${cpu} in
+ hppa*64*)
+ fmt=elf em=hppa64 ;;
+ hppa*)
+ fmt=som em=hppa ;;
+ esac ;;
hppa-*-hpux*) fmt=som em=hppa ;;
hppa-*-mpeix*) fmt=som em=hppa ;;
hppa-*-bsd*) fmt=som em=hppa ;;
hppa-*-hiux*) fmt=som em=hppa ;;
+ h8300-*-rtems*) fmt=coff ;;
h8300-*-coff) fmt=coff ;;
i370-*-elf* | i370-*-linux*) fmt=elf ;;
@@ -1719,12 +2379,12 @@ for this_target in $target $canon_targets ; do
i386-*-linux*aout* | i386-*-linuxoldld) fmt=aout em=linux ;;
i386-*-linux*coff*) fmt=coff em=linux ;;
i386-*-linux-gnu*) fmt=elf em=linux bfd_gas=yes ;;
+ x86_64-*-linux-gnu*) fmt=elf em=linux bfd_gas=yes ;;
i386-*-lynxos*) fmt=coff em=lynx ;;
- i386-*-sysv4* | i386-*-solaris* | i386-*-elf)
+ i386-*-sysv[45]* | i386-*-solaris* | i386-*-elf)
fmt=elf bfd_gas=yes ;;
i386-*-freebsdaout* | i386-*-freebsd[12].* | i386-*-freebsd[12])
fmt=aout em=386bsd ;;
- i386-*-freebsd*) fmt=elf bfd_gas=yes ;;
i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*)
fmt=coff ;;
i386-*-sco3.2v5*) fmt=elf
@@ -1738,25 +2398,31 @@ EOF
i386-*-sco3.2*) fmt=coff ;;
i386-*-vsta) fmt=aout ;;
i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*)
- fmt=coff em=go32;;
- i386-*-rtemscoff*) fmt=coff ;;
+ fmt=coff em=go32 bfd_gas=yes
+ cat >> confdefs.h <<\EOF
+#define STRICTCOFF 1
+EOF
+
+ ;;
i386-*-rtemself*) fmt=elf ;;
- i386-*-rtems*) fmt=elf ;;
+ i386-*-rtems*) fmt=coff ;;
i386-*-gnu*) fmt=elf ;;
i386-*-mach*)
fmt=aout em=mach bfd_gas=yes ;;
i386-*-msdos*) fmt=aout ;;
i386-*-moss*) fmt=elf ;;
- i386-*-pe) fmt=coff em=pe ;;
+ i386-*-pe) fmt=coff em=pe bfd_gas=yes ;;
i386-*-cygwin*) fmt=coff em=pe bfd_gas=yes ;;
i386-*-interix*) fmt=coff em=interix bfd_gas=yes ;;
i386-*-mingw32*) fmt=coff em=pe bfd_gas=yes ;;
- i386-*-*nt*) fmt=coff em=pe ;;
+ i386-*-*nt*) fmt=coff em=pe bfd_gas=yes ;;
i386-*-vxworks*) fmt=aout ;;
+ i386-*-chaos) fmt=elf ;;
+ i860-stardent-sysv4* | i860-stardent-elf*)
+ fmt=elf bfd_gas=yes endian=little
+ echo "configure: warning: GAS support for ${generic_target} is preliminary and a work in progress" 1>&2 ;;
i960-*-bout) fmt=bout ;;
i960-*-coff) fmt=coff em=ic960 ;;
- i960-*-rtemscoff*) fmt=coff em=ic960 ;;
- i960-*-rtemself*) fmt=elf ;;
i960-*-rtems*) fmt=coff em=ic960 ;;
i960-*-nindy*) fmt=bout ;;
i960-*-vxworks4*) fmt=bout ;;
@@ -1765,8 +2431,14 @@ EOF
i960-*-vxworks*) fmt=bout ;;
i960-*-elf*) fmt=elf ;;
+ ia64-*-elf*) fmt=elf ;;
+ ia64-*-linux-gnu*) fmt=elf em=linux ;;
+ ia64-*-hpux*) fmt=elf em=hpux ;;
+
m32r-*-*) fmt=elf bfd_gas=yes ;;
+ m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)fmt=elf bfd_gas=yes ;;
+
m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
fmt=aout em=sun3 ;;
m68k-motorola-sysv*) fmt=coff em=delta ;;
@@ -1775,10 +2447,7 @@ EOF
m68k-*-sysv4*) # must be before -sysv*
fmt=elf em=svr4 ;;
m68k-*-elf*) fmt=elf ;;
- m68k-*-rtemscoff*) fmt=coff ;;
- m68k-*-rtemself*) fmt=elf ;;
- m68k-*-rtems*) fmt=elf ;;
- m68k-*-coff | m68k-*-sysv*)
+ m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
fmt=coff ;;
m68k-*-hpux*) fmt=hp300 em=hp300 ;;
m68k-*-linux*aout*) fmt=aout em=linux ;;
@@ -1812,6 +2481,7 @@ EOF
mips-*-irix*) fmt=ecoff ;;
mips-*-lnews*) fmt=ecoff em=lnews ;;
mips-*-riscos*) fmt=ecoff ;;
+ mips-*-sysv4*MP*) fmt=elf em=tmips ;;
mips-*-sysv*) fmt=ecoff ;;
mips-*-elf* | mips-*-rtems* | mips-*-linux-gnu* | mips-*-gnu* | mips-*-openbsd*)
fmt=elf ;;
@@ -1853,12 +2523,12 @@ EOF
ppc-*-netware*) fmt=elf em=ppcnw ;;
ppc-*-vxworks*) fmt=elf ;;
+ sh-*-linux*) fmt=elf em=linux ;;
sh-*-elf*) fmt=elf ;;
sh-*-coff*) fmt=coff ;;
sh-*-pe*) fmt=coff em=pe bfd_gas=yes;;
sh-*-rtemself*) fmt=elf ;;
- sh-*-rtemscoff*) fmt=coff ;;
- sh-*-rtems*) fmt=coff ;;
+ sh-*-rtems*) fmt=coff ;;
ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;;
ns32k-pc532-netbsd* | ns32k-pc532-lites*) fmt=aout em=nbsd532 ;;
@@ -1890,9 +2560,13 @@ EOF
strongarm-*-coff) fmt=coff ;;
strongarm-*-elf) fmt=elf ;;
+ xscale-*-coff) fmt=coff ;;
+ xscale-*-elf) fmt=elf ;;
tic30-*-*aout*) fmt=aout bfd_gas=yes ;;
tic30-*-*coff*) fmt=coff bfd_gas=yes ;;
+ tic54x-*-* | c54x*-*-*)
+ fmt=coff bfd_gas=yes need_libm=yes;;
tic80-*-*) fmt=coff ;;
v850-*-*) fmt=elf bfd_gas=yes ;;
@@ -1909,6 +2583,7 @@ EOF
w65-*-*) fmt=coff ;;
+ *-*-freebsd*) fmt=elf bfd_gas=yes ;;
*-*-aout | *-*-scout)
fmt=aout ;;
*-*-nindy*)
@@ -1945,11 +2620,13 @@ EOF
arm-*) bfd_gas=yes ;;
# not yet
# i386-aout) bfd_gas=preferred ;;
+ ia64*-*) bfd_gas=yes ;;
mips-*) bfd_gas=yes ;;
ns32k-*) bfd_gas=yes ;;
ppc-*) bfd_gas=yes ;;
sparc-*) bfd_gas=yes ;;
strongarm-*) bfd_gas=yes ;;
+ xscale-*) bfd_gas=yes ;;
*-elf) bfd_gas=yes ;;
*-ecoff) bfd_gas=yes ;;
*-som) bfd_gas=yes ;;
@@ -2012,6 +2689,14 @@ EOF
fi
;;
+ i386)
+ if test $this_target = $target ; then
+ cat >> confdefs.h <<EOF
+#define DEFAULT_ARCH "${arch}"
+EOF
+
+ fi
+ ;;
sparc)
if test $this_target = $target ; then
cat >> confdefs.h <<EOF
@@ -2064,6 +2749,9 @@ EOF
big) emulation="mipsbelf mipslelf mipself" ;;
*) emulation="mipslelf mipsbelf mipself" ;;
esac ;;
+ mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
+ # i386-pc-pe-coff != i386-pc-coff.
+ i386-*-pe-coff) ;;
# Uncommenting the next line will turn on support for i386 AOUT
# for the default linux configuration
# i386-*-linux*-elf) emulation="i386elf i386aout" ;;
@@ -2071,6 +2759,10 @@ EOF
i386-*-aout) emulation="i386aout" ;;
i386-*-coff) emulation="i386coff" ;;
i386-*-elf) emulation="i386elf" ;;
+
+ # Always all formats. The first stated emulation becomes the default.
+ cris-*-*aout*) emulation="crisaout criself" ;;
+ cris-*-*) emulation="criself crisaout" ;;
esac
emulations="$emulations $emulation"
@@ -2206,12 +2898,12 @@ for em in . $emulations ; do
fmt=elf file=mipself ;;
mipsbecoff | mipslecoff)
fmt=ecoff file=mipsecoff ;;
- i386aout)
- fmt=aout file=i386aout ;;
- i386coff)
- fmt=coff file=i386coff ;;
- i386elf)
- fmt=elf file=i386elf ;;
+ *coff)
+ fmt=coff file=$em ;;
+ *aout)
+ fmt=aout file=$em ;;
+ *elf)
+ fmt=elf file=$em ;;
esac
formats="$formats $fmt"
emfiles="$emfiles e-$file.o"
@@ -2389,7 +3081,7 @@ EOF
# 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:2393: checking for $ac_word" >&5
+echo "configure:3085: 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
@@ -2419,7 +3111,7 @@ 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:2423: checking for $ac_word" >&5
+echo "configure:3115: 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
@@ -2470,7 +3162,7 @@ fi
# 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:2474: checking for $ac_word" >&5
+echo "configure:3166: 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
@@ -2502,7 +3194,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:2506: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:3198: 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.
@@ -2513,12 +3205,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 2517 "configure"
+#line 3209 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:2522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3214: \"$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
@@ -2544,12 +3236,12 @@ 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:2548: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:3240: 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:2553: checking whether we are using GNU C" >&5
+echo "configure:3245: 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
@@ -2558,7 +3250,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2562: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3254: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -2577,7 +3269,7 @@ 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:2581: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:3273: 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
@@ -2614,7 +3306,7 @@ 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:2618: checking for $ac_word" >&5
+echo "configure:3310: 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
@@ -2645,7 +3337,7 @@ done
test -n "$YACC" || YACC="yacc"
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:2649: checking how to run the C preprocessor" >&5
+echo "configure:3341: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -2660,13 +3352,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 2664 "configure"
+#line 3356 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2670: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3362: \"$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
:
@@ -2677,13 +3369,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 2681 "configure"
+#line 3373 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2687: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3379: \"$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
:
@@ -2694,13 +3386,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 2698 "configure"
+#line 3390 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2704: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3396: \"$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
:
@@ -2730,7 +3422,7 @@ 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:2734: checking for $ac_word" >&5
+echo "configure:3426: 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
@@ -2763,7 +3455,7 @@ 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:2767: checking for $ac_word" >&5
+echo "configure:3459: 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
@@ -2797,7 +3489,7 @@ then
*) ac_lib=l ;;
esac
echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6
-echo "configure:2801: checking for yywrap in -l$ac_lib" >&5
+echo "configure:3493: 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
@@ -2805,7 +3497,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-l$ac_lib $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2809 "configure"
+#line 3501 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2816,7 +3508,7 @@ int main() {
yywrap()
; return 0; }
EOF
-if { (eval echo configure:2820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2839,7 +3531,7 @@ fi
fi
echo $ac_n "checking lex output file root""... $ac_c" 1>&6
-echo "configure:2843: checking lex output file root" >&5
+echo "configure:3535: 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
@@ -2860,7 +3552,7 @@ 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:2864: checking whether yytext is a pointer" >&5
+echo "configure:3556: 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
@@ -2872,14 +3564,14 @@ echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c
ac_save_LIBS="$LIBS"
LIBS="$LIBS $LEXLIB"
cat > conftest.$ac_ext <<EOF
-#line 2876 "configure"
+#line 3568 "configure"
#include "confdefs.h"
`cat $LEX_OUTPUT_ROOT.c`
int main() {
; return 0; }
EOF
-if { (eval echo configure:2883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_prog_lex_yytext_pointer=yes
else
@@ -2902,34 +3594,43 @@ fi
ALL_LINGUAS=
-echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:2907: checking for POSIXized ISC" >&5
-if test -d /etc/conf/kconfig.d &&
- grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
-then
- echo "$ac_t""yes" 1>&6
- ISC=yes # If later tests want to check for ISC.
- cat >> confdefs.h <<\EOF
-#define _POSIX_SOURCE 1
-EOF
-
- if test "$GCC" = yes; then
- CC="$CC -posix"
- else
- CC="$CC -Xp"
- fi
+# 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:3601: 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
- ISC=
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:2928: checking for ANSI C header files" >&5
+echo "configure:3629: 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 <<EOF
-#line 2933 "configure"
+#line 3634 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -2937,7 +3638,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2941: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3642: \"$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*
@@ -2954,7 +3655,7 @@ 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
-#line 2958 "configure"
+#line 3659 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -2972,7 +3673,7 @@ 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
-#line 2976 "configure"
+#line 3677 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2993,7 +3694,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2997 "configure"
+#line 3698 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3004,7 +3705,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:3008: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -3028,18 +3729,18 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:3032: checking for working const" >&5
+echo "configure:3733: 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 <<EOF
-#line 3037 "configure"
+#line 3738 "configure"
#include "confdefs.h"
int main() {
/* Ultrix mips cc rejects this. */
-typedef int charset[2]; const charset x = {0,0};
+typedef int charset[2]; const charset x;
/* SunOS 4.1.1 cc rejects this. */
char const *const *ccp;
char **p;
@@ -3082,7 +3783,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:3086: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3787: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -3103,21 +3804,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:3107: checking for inline" >&5
+echo "configure:3808: 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 <<EOF
-#line 3114 "configure"
+#line 3815 "configure"
#include "confdefs.h"
int main() {
-} int $ac_kw foo() {
+} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:3121: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3822: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -3143,12 +3844,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:3147: checking for off_t" >&5
+echo "configure:3848: 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 <<EOF
-#line 3152 "configure"
+#line 3853 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3176,12 +3877,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3180: checking for size_t" >&5
+echo "configure:3881: 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 <<EOF
-#line 3185 "configure"
+#line 3886 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -3211,19 +3912,19 @@ 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:3215: checking for working alloca.h" >&5
+echo "configure:3916: 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 <<EOF
-#line 3220 "configure"
+#line 3921 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
-void *p = alloca(2 * sizeof(int));
+char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:3227: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3928: \"$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
@@ -3244,12 +3945,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:3248: checking for alloca" >&5
+echo "configure:3949: 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 <<EOF
-#line 3253 "configure"
+#line 3954 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -3277,7 +3978,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:3281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3982: \"$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
@@ -3309,12 +4010,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:3313: checking whether alloca needs Cray hooks" >&5
+echo "configure:4014: 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 <<EOF
-#line 3318 "configure"
+#line 4019 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -3339,12 +4040,12 @@ 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:3343: checking for $ac_func" >&5
+echo "configure:4044: 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 <<EOF
-#line 3348 "configure"
+#line 4049 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3367,7 +4068,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4072: \"$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
@@ -3394,7 +4095,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:3398: checking stack direction for C alloca" >&5
+echo "configure:4099: 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
@@ -3402,7 +4103,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 3406 "configure"
+#line 4107 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -3421,7 +4122,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:3425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4126: \"$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
@@ -3446,17 +4147,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:3450: checking for $ac_hdr" >&5
+echo "configure:4151: 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
-#line 3455 "configure"
+#line 4156 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3460: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4161: \"$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*
@@ -3485,12 +4186,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3489: checking for $ac_func" >&5
+echo "configure:4190: 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 <<EOF
-#line 3494 "configure"
+#line 4195 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3513,7 +4214,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4218: \"$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
@@ -3538,7 +4239,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:3542: checking for working mmap" >&5
+echo "configure:4243: 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
@@ -3546,7 +4247,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 3550 "configure"
+#line 4251 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -3573,15 +4274,12 @@ else
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
/* This mess was copied from the GNU getpagesize.h. */
#ifndef HAVE_GETPAGESIZE
+# ifdef HAVE_UNISTD_H
+# include <unistd.h>
+# endif
/* Assume that all systems that can run configure have sys/param.h. */
# ifndef HAVE_SYS_PARAM_H
@@ -3636,7 +4334,7 @@ main()
/*
* First, make a file with some known garbage in it.
*/
- data = (char*)malloc(pagesize);
+ data = malloc(pagesize);
if (!data)
exit(1);
for (i = 0; i < pagesize; ++i)
@@ -3657,7 +4355,7 @@ main()
fd = open("conftestmmap", O_RDWR);
if (fd < 0)
exit(1);
- data2 = (char*)malloc(2 * pagesize);
+ data2 = malloc(2 * pagesize);
if (!data2)
exit(1);
data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
@@ -3675,7 +4373,7 @@ main()
*/
for (i = 0; i < pagesize; ++i)
*(data2 + i) = *(data2 + i) + 1;
- data3 = (char*)malloc(pagesize);
+ data3 = malloc(pagesize);
if (!data3)
exit(1);
if (read(fd, data3, pagesize) != pagesize)
@@ -3689,7 +4387,7 @@ main()
}
EOF
-if { (eval echo configure:3693: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4391: \"$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
@@ -3717,17 +4415,17 @@ 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:3721: checking for $ac_hdr" >&5
+echo "configure:4419: 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
-#line 3726 "configure"
+#line 4424 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3731: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4429: \"$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*
@@ -3757,12 +4455,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3761: checking for $ac_func" >&5
+echo "configure:4459: 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 <<EOF
-#line 3766 "configure"
+#line 4464 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3785,7 +4483,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4487: \"$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
@@ -3814,12 +4512,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3818: checking for $ac_func" >&5
+echo "configure:4516: 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 <<EOF
-#line 3823 "configure"
+#line 4521 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3842,7 +4540,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4544: \"$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
@@ -3876,19 +4574,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:3880: checking for LC_MESSAGES" >&5
+echo "configure:4578: 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 <<EOF
-#line 3885 "configure"
+#line 4583 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:3892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4590: \"$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
@@ -3909,7 +4607,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:3913: checking whether NLS is requested" >&5
+echo "configure:4611: 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"
@@ -3929,7 +4627,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:3933: checking whether included gettext is requested" >&5
+echo "configure:4631: 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"
@@ -3948,17 +4646,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:3952: checking for libintl.h" >&5
+echo "configure:4650: 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
-#line 3957 "configure"
+#line 4655 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3962: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4660: \"$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*
@@ -3975,19 +4673,19 @@ 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:3979: checking for gettext in libc" >&5
+echo "configure:4677: 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 <<EOF
-#line 3984 "configure"
+#line 4682 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:3991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4689: \"$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
@@ -4003,7 +4701,7 @@ 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:4007: checking for bindtextdomain in -lintl" >&5
+echo "configure:4705: 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
@@ -4011,7 +4709,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4015 "configure"
+#line 4713 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4022,7 +4720,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:4026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4038,19 +4736,19 @@ 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:4042: checking for gettext in libintl" >&5
+echo "configure:4740: 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 <<EOF
-#line 4047 "configure"
+#line 4745 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:4054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4752: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -4078,7 +4776,7 @@ 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:4082: checking for $ac_word" >&5
+echo "configure:4780: 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
@@ -4112,12 +4810,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4116: checking for $ac_func" >&5
+echo "configure:4814: 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 <<EOF
-#line 4121 "configure"
+#line 4819 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4140,7 +4838,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4144: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4842: \"$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
@@ -4167,7 +4865,7 @@ 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:4171: checking for $ac_word" >&5
+echo "configure:4869: 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
@@ -4203,7 +4901,7 @@ 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:4207: checking for $ac_word" >&5
+echo "configure:4905: 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
@@ -4235,7 +4933,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 4239 "configure"
+#line 4937 "configure"
#include "confdefs.h"
int main() {
@@ -4243,7 +4941,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:4247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -4275,7 +4973,7 @@ fi
# 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:4279: checking for $ac_word" >&5
+echo "configure:4977: 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
@@ -4309,7 +5007,7 @@ 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:4313: checking for $ac_word" >&5
+echo "configure:5011: 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
@@ -4345,7 +5043,7 @@ 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:4349: checking for $ac_word" >&5
+echo "configure:5047: 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
@@ -4435,7 +5133,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:4439: checking for catalogs to be installed" >&5
+echo "configure:5137: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -4463,17 +5161,17 @@ echo "configure:4439: checking for catalogs to be installed" >&5
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:4467: checking for linux/version.h" >&5
+echo "configure:5165: 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
-#line 4472 "configure"
+#line 5170 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4477: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5175: \"$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*
@@ -4536,7 +5234,7 @@ fi
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:4540: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:5238: 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"
@@ -4558,72 +5256,10 @@ fi
MAINT=$MAINTAINER_MODE_TRUE
-echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:4563: 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 <<EOF
-#line 4568 "configure"
-#include "confdefs.h"
-
-int main() {
-
-#ifndef __CYGWIN__
-#define __CYGWIN__ __CYGWIN32__
-#endif
-return __CYGWIN__;
-; return 0; }
-EOF
-if { (eval echo configure:4579: \"$ac_compile\") 1>&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:4596: 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 <<EOF
-#line 4601 "configure"
-#include "confdefs.h"
-
-int main() {
-return __MINGW32__;
-; return 0; }
-EOF
-if { (eval echo configure:4608: \"$ac_compile\") 1>&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
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:4627: checking for executable suffix" >&5
+echo "configure:5263: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4633,10 +5269,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:4637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:5273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -4658,17 +5294,17 @@ for ac_hdr in string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h e
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4662: checking for $ac_hdr" >&5
+echo "configure:5298: 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
-#line 4667 "configure"
+#line 5303 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4672: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5308: \"$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*
@@ -4698,7 +5334,7 @@ done
# Put this here so that autoconf's "cross-compiling" message doesn't confuse
# people who are not cross-compiling but are compiling cross-assemblers.
echo $ac_n "checking whether compiling a cross-assembler""... $ac_c" 1>&6
-echo "configure:4702: checking whether compiling a cross-assembler" >&5
+echo "configure:5338: checking whether compiling a cross-assembler" >&5
if test "${host}" = "${target}"; then
cross_gas=no
else
@@ -4713,19 +5349,19 @@ echo "$ac_t""$cross_gas" 1>&6
# 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:4717: checking for working alloca.h" >&5
+echo "configure:5353: 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 <<EOF
-#line 4722 "configure"
+#line 5358 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
-void *p = alloca(2 * sizeof(int));
+char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:4729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5365: \"$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
@@ -4746,12 +5382,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:4750: checking for alloca" >&5
+echo "configure:5386: 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 <<EOF
-#line 4755 "configure"
+#line 5391 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -4779,7 +5415,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:4783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5419: \"$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
@@ -4811,12 +5447,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:4815: checking whether alloca needs Cray hooks" >&5
+echo "configure:5451: 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 <<EOF
-#line 4820 "configure"
+#line 5456 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -4841,12 +5477,12 @@ 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:4845: checking for $ac_func" >&5
+echo "configure:5481: 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 <<EOF
-#line 4850 "configure"
+#line 5486 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -4869,7 +5505,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:4873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5509: \"$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
@@ -4896,7 +5532,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:4900: checking stack direction for C alloca" >&5
+echo "configure:5536: 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
@@ -4904,7 +5540,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 4908 "configure"
+#line 5544 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -4923,7 +5559,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:4927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5563: \"$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
@@ -4945,21 +5581,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:4949: checking for inline" >&5
+echo "configure:5585: 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 <<EOF
-#line 4956 "configure"
+#line 5592 "configure"
#include "confdefs.h"
int main() {
-} int $ac_kw foo() {
+} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:4963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5599: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -4989,12 +5625,12 @@ esac
for ac_func in unlink remove
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4993: checking for $ac_func" >&5
+echo "configure:5629: 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 <<EOF
-#line 4998 "configure"
+#line 5634 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5017,7 +5653,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5021: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5657: \"$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
@@ -5046,12 +5682,12 @@ done
for ac_func in sbrk
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5050: checking for $ac_func" >&5
+echo "configure:5686: 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 <<EOF
-#line 5055 "configure"
+#line 5691 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5074,7 +5710,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5078: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5714: \"$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
@@ -5099,16 +5735,146 @@ fi
done
+# do we need the math library?
+case "${need_libm}" in
+yes)
+ LIBM=
+case "$host" in
+*-*-beos* | *-*-cygwin* | *-*-pw32*)
+ # These system don't have libm
+ ;;
+*-ncr-sysv4.3*)
+ echo $ac_n "checking for _mwvalidcheckl in -lmw""... $ac_c" 1>&6
+echo "configure:5749: checking for _mwvalidcheckl in -lmw" >&5
+ac_lib_var=`echo mw'_'_mwvalidcheckl | 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="-lmw $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 5757 "configure"
+#include "confdefs.h"
+/* 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 _mwvalidcheckl();
+
+int main() {
+_mwvalidcheckl()
+; return 0; }
+EOF
+if { (eval echo configure:5768: \"$ac_link\") 1>&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
+ LIBM="-lmw"
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
+echo "configure:5789: checking for main in -lm" >&5
+ac_lib_var=`echo m'_'main | 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="-lm $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 5797 "configure"
+#include "confdefs.h"
+
+int main() {
+main()
+; return 0; }
+EOF
+if { (eval echo configure:5804: \"$ac_link\") 1>&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
+ LIBM="$LIBM -lm"
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ ;;
+*)
+ echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
+echo "configure:5827: checking for main in -lm" >&5
+ac_lib_var=`echo m'_'main | 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="-lm $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 5835 "configure"
+#include "confdefs.h"
+
+int main() {
+main()
+; return 0; }
+EOF
+if { (eval echo configure:5842: \"$ac_link\") 1>&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
+ LIBM="-lm"
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+ ;;
+esac
+
+
+ ;;
+esac
+
# Some non-ANSI preprocessors botch requoting inside strings. That's bad
# enough, but on some of those systems, the assert macro relies on requoting
# working properly!
echo $ac_n "checking for working assert macro""... $ac_c" 1>&6
-echo "configure:5107: checking for working assert macro" >&5
+echo "configure:5873: checking for working assert macro" >&5
if eval "test \"`echo '$''{'gas_cv_assert_ok'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5112 "configure"
+#line 5878 "configure"
#include "confdefs.h"
#include <assert.h>
#include <stdio.h>
@@ -5124,7 +5890,7 @@ assert (a == b
; return 0; }
EOF
-if { (eval echo configure:5128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gas_cv_assert_ok=yes
else
@@ -5165,12 +5931,12 @@ gas_test_headers="
"
echo $ac_n "checking whether declaration is required for strstr""... $ac_c" 1>&6
-echo "configure:5169: checking whether declaration is required for strstr" >&5
+echo "configure:5935: checking whether declaration is required for strstr" >&5
if eval "test \"`echo '$''{'gas_cv_decl_needed_strstr'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5174 "configure"
+#line 5940 "configure"
#include "confdefs.h"
$gas_test_headers
int main() {
@@ -5181,7 +5947,7 @@ x = (f) strstr;
; return 0; }
EOF
-if { (eval echo configure:5185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gas_cv_decl_needed_strstr=no
else
@@ -5202,12 +5968,12 @@ fi
echo $ac_n "checking whether declaration is required for malloc""... $ac_c" 1>&6
-echo "configure:5206: checking whether declaration is required for malloc" >&5
+echo "configure:5972: checking whether declaration is required for malloc" >&5
if eval "test \"`echo '$''{'gas_cv_decl_needed_malloc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5211 "configure"
+#line 5977 "configure"
#include "confdefs.h"
$gas_test_headers
int main() {
@@ -5218,7 +5984,7 @@ x = (f) malloc;
; return 0; }
EOF
-if { (eval echo configure:5222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gas_cv_decl_needed_malloc=no
else
@@ -5239,12 +6005,12 @@ fi
echo $ac_n "checking whether declaration is required for free""... $ac_c" 1>&6
-echo "configure:5243: checking whether declaration is required for free" >&5
+echo "configure:6009: checking whether declaration is required for free" >&5
if eval "test \"`echo '$''{'gas_cv_decl_needed_free'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5248 "configure"
+#line 6014 "configure"
#include "confdefs.h"
$gas_test_headers
int main() {
@@ -5255,7 +6021,7 @@ x = (f) free;
; return 0; }
EOF
-if { (eval echo configure:5259: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gas_cv_decl_needed_free=no
else
@@ -5276,12 +6042,12 @@ fi
echo $ac_n "checking whether declaration is required for sbrk""... $ac_c" 1>&6
-echo "configure:5280: checking whether declaration is required for sbrk" >&5
+echo "configure:6046: checking whether declaration is required for sbrk" >&5
if eval "test \"`echo '$''{'gas_cv_decl_needed_sbrk'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5285 "configure"
+#line 6051 "configure"
#include "confdefs.h"
$gas_test_headers
int main() {
@@ -5292,7 +6058,7 @@ x = (f) sbrk;
; return 0; }
EOF
-if { (eval echo configure:5296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6062: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gas_cv_decl_needed_sbrk=no
else
@@ -5313,12 +6079,12 @@ fi
echo $ac_n "checking whether declaration is required for environ""... $ac_c" 1>&6
-echo "configure:5317: checking whether declaration is required for environ" >&5
+echo "configure:6083: checking whether declaration is required for environ" >&5
if eval "test \"`echo '$''{'gas_cv_decl_needed_environ'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5322 "configure"
+#line 6088 "configure"
#include "confdefs.h"
$gas_test_headers
int main() {
@@ -5329,7 +6095,7 @@ x = (f) environ;
; return 0; }
EOF
-if { (eval echo configure:5333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gas_cv_decl_needed_environ=no
else
@@ -5353,12 +6119,12 @@ fi
# for it?
echo $ac_n "checking whether declaration is required for errno""... $ac_c" 1>&6
-echo "configure:5357: checking whether declaration is required for errno" >&5
+echo "configure:6123: checking whether declaration is required for errno" >&5
if eval "test \"`echo '$''{'gas_cv_decl_needed_errno'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5362 "configure"
+#line 6128 "configure"
#include "confdefs.h"
#ifdef HAVE_ERRNO_H
@@ -5373,7 +6139,7 @@ x = (f) errno;
; return 0; }
EOF
-if { (eval echo configure:5377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gas_cv_decl_needed_errno=no
else
@@ -5554,10 +6320,14 @@ s%@AUTOMAKE@%$AUTOMAKE%g
s%@AUTOHEADER@%$AUTOHEADER%g
s%@MAKEINFO@%$MAKEINFO%g
s%@SET_MAKE@%$SET_MAKE%g
-s%@RANLIB@%$RANLIB%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%@GDBINIT@%$GDBINIT%g
s%@cgen_cpu_prefix@%$cgen_cpu_prefix%g
s%@extra_objects@%$extra_objects%g
@@ -5598,7 +6368,7 @@ 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%@EXEEXT@%$EXEEXT%g
+s%@LIBM@%$LIBM%g
CEOF
EOF
diff --git a/contrib/binutils/gas/configure.in b/contrib/binutils/gas/configure.in
index 1707acd..62c50dd 100644
--- a/contrib/binutils/gas/configure.in
+++ b/contrib/binutils/gas/configure.in
@@ -9,8 +9,9 @@ AC_PREREQ(2.13)
AC_INIT(as.h)
AC_CANONICAL_SYSTEM
+AC_ISC_POSIX
-AM_INIT_AUTOMAKE(gas, 2.10.1)
+AM_INIT_AUTOMAKE(gas, 2.11)
AM_PROG_LIBTOOL
@@ -40,6 +41,27 @@ esac])dnl
using_cgen=no
+build_warnings="-W -Wall"
+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)
+
# Generate a header file
AM_CONFIG_HEADER(config.h:config.in)
@@ -95,11 +117,15 @@ changequote([,])dnl
armb*) cpu_type=arm endian=little ;;
armv*l) cpu_type=arm endian=little ;;
armv*b) cpu_type=arm endian=big ;;
+ xscale*) cpu_type=arm endian=little ;;
strongarm*) cpu_type=arm endian=little ;;
thumb*) cpu_type=arm endian=little ;;
hppa*) cpu_type=hppa ;;
changequote(,)dnl
- i[456]86) cpu_type=i386 ;;
+ i[3456]86) cpu_type=i386 arch=i386;;
+ x86_64) cpu_type=i386 arch=x86_64;;
+ ia64) cpu_type=ia64 ;;
+ m6811|m6812|m68hc12) cpu_type=m68hc11 ;;
m680[012346]0) cpu_type=m68k ;;
changequote([,])dnl
m68008) cpu_type=m68k ;;
@@ -139,6 +165,7 @@ changequote([,])dnl
a29k-amd-udi) fmt=coff ;;
a29k-amd-ebmon) fmt=coff ;;
a29k-nyu-sym1) fmt=coff ;;
+ a29k-*-rtems*) fmt=coff ;;
a29k-*-vxworks*) fmt=coff ;;
alpha*-*-*vms*) fmt=evax ;;
@@ -147,42 +174,57 @@ changequote([,])dnl
alpha*-*-osf*) fmt=ecoff ;;
alpha*-*-linuxecoff*) fmt=ecoff ;;
alpha*-*-linux-gnu*) fmt=elf em=linux ;;
- alpha*-*-freebsd*) fmt=elf em=freebsd ;;
alpha*-*-netbsd*) fmt=elf em=nbsd ;;
arc-*-elf*) fmt=elf bfd_gas=yes ;;
arm-*-aout) fmt=aout ;;
arm-*-coff | thumb-*-coff) fmt=coff ;;
+ arm-*-rtems | thumb-*-rtems) fmt=elf ;;
arm-*-elf | thumb-*-elf) fmt=elf ;;
arm*-*-conix*) fmt=elf ;;
arm-*-linux*aout*) fmt=aout em=linux ;;
- arm*-*-linux-gnu*) fmt=elf em=linux ;;
- arm-*-netbsd*) fmt=aout em=nbsd bfd_gas=yes ;;
+ arm*-*-linux-gnu* | arm*-*-uclinux*)
+ fmt=elf em=linux ;;
+ arm-*-netbsd*) fmt=aout em=nbsd ;;
arm-*-oabi | thumb-*-oabi) fmt=elf ;;
arm-epoc-pe | thumb-epoc-pe) fmt=coff em=epoc-pe ;;
- arm-*-wince) fmt=coff em=wince-pe bfd_gas=yes;;
+ arm-*-wince) fmt=coff em=wince-pe ;;
arm-*-pe | thumb-*-pe) fmt=coff em=pe ;;
arm-*-riscix*) fmt=aout em=riscix ;;
avr-*-*) fmt=elf bfd_gas=yes ;;
+ cris-*-*) fmt=multi bfd_gas=yes ;;
+
d10v-*-*) fmt=elf bfd_gas=yes ;;
d30v-*-*) fmt=elf bfd_gas=yes ;;
fr30-*-*) fmt=elf bfd_gas=yes ;;
+ hppa-*-linux-gnu*) case ${cpu} in
+ hppa*64*)
+ fmt=elf em=hppalinux64;;
+ hppa*)
+ fmt=elf em=linux;;
+ esac ;;
hppa-*-*elf*) fmt=elf em=hppa ;;
- hppa-*-linux-gnu*) fmt=elf em=hppa ;;
hppa-*-lites*) fmt=elf em=hppa ;;
hppa-*-osf*) fmt=som em=hppa ;;
hppa-*-rtems*) fmt=elf em=hppa ;;
+ hppa-*-hpux11*) case ${cpu} in
+ hppa*64*)
+ fmt=elf em=hppa64 ;;
+ hppa*)
+ fmt=som em=hppa ;;
+ esac ;;
hppa-*-hpux*) fmt=som em=hppa ;;
hppa-*-mpeix*) fmt=som em=hppa ;;
hppa-*-bsd*) fmt=som em=hppa ;;
hppa-*-hiux*) fmt=som em=hppa ;;
+ h8300-*-rtems*) fmt=coff ;;
h8300-*-coff) fmt=coff ;;
i370-*-elf* | i370-*-linux*) fmt=elf ;;
@@ -197,14 +239,14 @@ changequote([,])dnl
i386-*-linux*aout* | i386-*-linuxoldld) fmt=aout em=linux ;;
i386-*-linux*coff*) fmt=coff em=linux ;;
i386-*-linux-gnu*) fmt=elf em=linux bfd_gas=yes ;;
+ x86_64-*-linux-gnu*) fmt=elf em=linux bfd_gas=yes ;;
i386-*-lynxos*) fmt=coff em=lynx ;;
- i386-*-sysv4* | i386-*-solaris* | i386-*-elf)
- fmt=elf bfd_gas=yes ;;
changequote(,)dnl
+ i386-*-sysv[45]* | i386-*-solaris* | i386-*-elf)
+ fmt=elf bfd_gas=yes ;;
i386-*-freebsdaout* | i386-*-freebsd[12].* | i386-*-freebsd[12])
fmt=aout em=386bsd ;;
changequote([,])dnl
- i386-*-freebsd*) fmt=elf bfd_gas=yes ;;
i386-*-coff | i386-*-sysv* | i386-*-sco3.2v5*coff | i386-*-isc*)
fmt=coff ;;
i386-*-sco3.2v5*) fmt=elf
@@ -216,25 +258,28 @@ changequote([,])dnl
i386-*-sco3.2*) fmt=coff ;;
i386-*-vsta) fmt=aout ;;
i386-*-msdosdjgpp* | i386-*-go32* | i386-go32-rtems*)
- fmt=coff em=go32;;
- i386-*-rtemscoff*) fmt=coff ;;
+ fmt=coff em=go32 bfd_gas=yes
+ AC_DEFINE(STRICTCOFF, 1, [Using strict COFF?])
+ ;;
i386-*-rtemself*) fmt=elf ;;
- i386-*-rtems*) fmt=elf ;;
+ i386-*-rtems*) fmt=coff ;;
i386-*-gnu*) fmt=elf ;;
i386-*-mach*)
fmt=aout em=mach bfd_gas=yes ;;
i386-*-msdos*) fmt=aout ;;
i386-*-moss*) fmt=elf ;;
- i386-*-pe) fmt=coff em=pe ;;
+ i386-*-pe) fmt=coff em=pe bfd_gas=yes ;;
i386-*-cygwin*) fmt=coff em=pe bfd_gas=yes ;;
i386-*-interix*) fmt=coff em=interix bfd_gas=yes ;;
i386-*-mingw32*) fmt=coff em=pe bfd_gas=yes ;;
- i386-*-*nt*) fmt=coff em=pe ;;
+ i386-*-*nt*) fmt=coff em=pe bfd_gas=yes ;;
i386-*-vxworks*) fmt=aout ;;
+ i386-*-chaos) fmt=elf ;;
+ i860-stardent-sysv4* | i860-stardent-elf*)
+ fmt=elf bfd_gas=yes endian=little
+ AC_MSG_WARN(GAS support for ${generic_target} is preliminary and a work in progress) ;;
i960-*-bout) fmt=bout ;;
i960-*-coff) fmt=coff em=ic960 ;;
- i960-*-rtemscoff*) fmt=coff em=ic960 ;;
- i960-*-rtemself*) fmt=elf ;;
i960-*-rtems*) fmt=coff em=ic960 ;;
i960-*-nindy*) fmt=bout ;;
i960-*-vxworks4*) fmt=bout ;;
@@ -243,8 +288,14 @@ changequote([,])dnl
i960-*-vxworks*) fmt=bout ;;
i960-*-elf*) fmt=elf ;;
+ ia64-*-elf*) fmt=elf ;;
+ ia64-*-linux-gnu*) fmt=elf em=linux ;;
+ ia64-*-hpux*) fmt=elf em=hpux ;;
+
m32r-*-*) fmt=elf bfd_gas=yes ;;
+ m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)fmt=elf bfd_gas=yes ;;
+
m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos*)
fmt=aout em=sun3 ;;
m68k-motorola-sysv*) fmt=coff em=delta ;;
@@ -253,10 +304,7 @@ changequote([,])dnl
m68k-*-sysv4*) # must be before -sysv*
fmt=elf em=svr4 ;;
m68k-*-elf*) fmt=elf ;;
- m68k-*-rtemscoff*) fmt=coff ;;
- m68k-*-rtemself*) fmt=elf ;;
- m68k-*-rtems*) fmt=elf ;;
- m68k-*-coff | m68k-*-sysv*)
+ m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
fmt=coff ;;
m68k-*-hpux*) fmt=hp300 em=hp300 ;;
m68k-*-linux*aout*) fmt=aout em=linux ;;
@@ -290,6 +338,7 @@ changequote([,])dnl
mips-*-irix*) fmt=ecoff ;;
mips-*-lnews*) fmt=ecoff em=lnews ;;
mips-*-riscos*) fmt=ecoff ;;
+ mips-*-sysv4*MP*) fmt=elf em=tmips ;;
mips-*-sysv*) fmt=ecoff ;;
mips-*-elf* | mips-*-rtems* | mips-*-linux-gnu* | mips-*-gnu* | mips-*-openbsd*)
fmt=elf ;;
@@ -327,12 +376,12 @@ changequote([,])dnl
ppc-*-netware*) fmt=elf em=ppcnw ;;
ppc-*-vxworks*) fmt=elf ;;
+ sh-*-linux*) fmt=elf em=linux ;;
sh-*-elf*) fmt=elf ;;
sh-*-coff*) fmt=coff ;;
sh-*-pe*) fmt=coff em=pe bfd_gas=yes;;
sh-*-rtemself*) fmt=elf ;;
- sh-*-rtemscoff*) fmt=coff ;;
- sh-*-rtems*) fmt=coff ;;
+ sh-*-rtems*) fmt=coff ;;
ns32k-pc532-mach* | ns32k-pc532-ux*) fmt=aout em=pc532mach ;;
ns32k-pc532-netbsd* | ns32k-pc532-lites*) fmt=aout em=nbsd532 ;;
@@ -364,9 +413,13 @@ changequote([,])dnl
strongarm-*-coff) fmt=coff ;;
strongarm-*-elf) fmt=elf ;;
+ xscale-*-coff) fmt=coff ;;
+ xscale-*-elf) fmt=elf ;;
tic30-*-*aout*) fmt=aout bfd_gas=yes ;;
tic30-*-*coff*) fmt=coff bfd_gas=yes ;;
+ tic54x-*-* | c54x*-*-*)
+ fmt=coff bfd_gas=yes need_libm=yes;;
tic80-*-*) fmt=coff ;;
v850-*-*) fmt=elf bfd_gas=yes ;;
@@ -383,6 +436,7 @@ changequote([,])dnl
w65-*-*) fmt=coff ;;
+ *-*-freebsd*) fmt=elf bfd_gas=yes ;;
*-*-aout | *-*-scout)
fmt=aout ;;
*-*-nindy*)
@@ -417,11 +471,13 @@ changequote([,])dnl
arm-*) bfd_gas=yes ;;
# not yet
# i386-aout) bfd_gas=preferred ;;
+ ia64*-*) bfd_gas=yes ;;
mips-*) bfd_gas=yes ;;
ns32k-*) bfd_gas=yes ;;
ppc-*) bfd_gas=yes ;;
sparc-*) bfd_gas=yes ;;
strongarm-*) bfd_gas=yes ;;
+ xscale-*) bfd_gas=yes ;;
*-elf) bfd_gas=yes ;;
*-ecoff) bfd_gas=yes ;;
*-som) bfd_gas=yes ;;
@@ -484,6 +540,11 @@ changequote([,])dnl
fi
;;
+ i386)
+ if test $this_target = $target ; then
+ AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
+ fi
+ ;;
sparc)
if test $this_target = $target ; then
AC_DEFINE_UNQUOTED(DEFAULT_ARCH, "${arch}", [Default architecture.])
@@ -533,6 +594,9 @@ changequote([,])dnl
big) emulation="mipsbelf mipslelf mipself" ;;
*) emulation="mipslelf mipsbelf mipself" ;;
esac ;;
+ mips-*-sysv4*MP*-*) emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
+ # i386-pc-pe-coff != i386-pc-coff.
+ i386-*-pe-coff) ;;
# Uncommenting the next line will turn on support for i386 AOUT
# for the default linux configuration
# i386-*-linux*-elf) emulation="i386elf i386aout" ;;
@@ -540,6 +604,10 @@ changequote([,])dnl
i386-*-aout) emulation="i386aout" ;;
i386-*-coff) emulation="i386coff" ;;
i386-*-elf) emulation="i386elf" ;;
+
+ # Always all formats. The first stated emulation becomes the default.
+ cris-*-*aout*) emulation="crisaout criself" ;;
+ cris-*-*) emulation="criself crisaout" ;;
esac
emulations="$emulations $emulation"
@@ -654,12 +722,12 @@ for em in . $emulations ; do
fmt=elf file=mipself ;;
mipsbecoff | mipslecoff)
fmt=ecoff file=mipsecoff ;;
- i386aout)
- fmt=aout file=i386aout ;;
- i386coff)
- fmt=coff file=i386coff ;;
- i386elf)
- fmt=elf file=i386elf ;;
+ *coff)
+ fmt=coff file=$em ;;
+ *aout)
+ fmt=aout file=$em ;;
+ *elf)
+ fmt=elf file=$em ;;
esac
formats="$formats $fmt"
emfiles="$emfiles e-$file.o"
@@ -787,6 +855,14 @@ AC_CHECK_FUNCS(unlink remove, break)
# Some systems don't have sbrk().
AC_CHECK_FUNCS(sbrk)
+# do we need the math library?
+case "${need_libm}" in
+yes)
+ AC_CHECK_LIBM
+ AC_SUBST(LIBM)
+ ;;
+esac
+
# Some non-ANSI preprocessors botch requoting inside strings. That's bad
# enough, but on some of those systems, the assert macro relies on requoting
# working properly!
diff --git a/contrib/binutils/gas/debug.c b/contrib/binutils/gas/debug.c
index e99f23f..e9f6f09 100644
--- a/contrib/binutils/gas/debug.c
+++ b/contrib/binutils/gas/debug.c
@@ -62,8 +62,7 @@ dmp_frag (fp, indent)
printf ("%srs_fill(%d)\n", indent, fp->fr_offset);
printf ("%s", indent);
var_chars (fp, fp->fr_var + fp->fr_fix);
- printf ("%s\t repeated %d times,",
- indent, fp->fr_offset);
+ printf ("%s\t repeated %d times,", indent, fp->fr_offset);
printf (" fixed length if # chars == 0)\n");
break;
case rs_org:
diff --git a/contrib/binutils/gas/dep-in.sed b/contrib/binutils/gas/dep-in.sed
index 8771f0f..fd1be2c 100644
--- a/contrib/binutils/gas/dep-in.sed
+++ b/contrib/binutils/gas/dep-in.sed
@@ -2,37 +2,41 @@
/\\$/N
/\\$/b loop
-s! ../config.h!!g
-s! ../../bfd/bfd.h!!g
-s! ../itbl-parse.h!!g
+s! \.\./! !g
s!@INCDIR@!$(INCDIR)!g
s!@BFDDIR@!$(BFDDIR)!g
s!@SRCDIR@/config!$(srcdir)/config!g
-s!@SRCDIR@/../opcodes!$(srcdir)/../opcodes!g
+s!@SRCDIR@/\.\./opcodes!$(srcdir)/../opcodes!g
s!@SRCDIR@/!!g
-s! config.h!!g
-s! as.h!!g
-s! asintl.h!!g
-s! targ-env.h!!g
-s! obj-format.h!!g
-s! targ-cpu.h!!g
-s! flonum.h!!g
-s! expr.h!!g
-s! write.h!!g
-s! frags.h!!g
-s! hash.h!!g
-s! read.h!!g
-s! symbols.h!!g
-s! tc.h!!g
-s! obj.h!!g
-s! listing.h!!g
-s! bignum.h!!g
-s! bit_fix.h!!g
-s! itbl-cpu.h!!g
-s! \$(srcdir)/config/te-generic.h!!g
-s! \$(INCDIR)/libiberty.h!!g
-s! \$(INCDIR)/ansidecl.h!!g
-s! \$(INCDIR)/fopen-same.h!!g
+s! \$(INCDIR)/ansidecl\.h!!g
+s! \$(INCDIR)/fopen-same\.h!!g
+s! \$(srcdir)/config/te-generic\.h!!g
+s! \.\./bfd/bfd\.h!!g
+s! itbl-cpu\.h!!g
+s! itbl-parse\.h!!g
+
+s! \$(INCDIR)/bin-bugs\.h!!g
+s! \$(INCDIR)/libiberty\.h!!g
+s! \$(INCDIR)/progress\.h!!g
+s! obj-format\.h!!g
+s! targ-cpu\.h!!g
+s! targ-env\.h!!g
+s! as\.h!!g
+s! asintl\.h!!g
+s! bignum\.h!!g
+s! bit_fix\.h!!g
+s! config\.h!!g
+s! emul\.h!!g
+s! expr\.h!!g
+s! flonum\.h!!g
+s! frags\.h!!g
+s! hash\.h!!g
+s! listing\.h!!g
+s! obj\.h!!g
+s! read\.h!!g
+s! symbols\.h!!g
+s! tc\.h!!g
+s! write\.h!!g
s/\\\n */ /g
diff --git a/contrib/binutils/gas/depend.c b/contrib/binutils/gas/depend.c
index f17c7c8..05a9708 100644
--- a/contrib/binutils/gas/depend.c
+++ b/contrib/binutils/gas/depend.c
@@ -23,8 +23,7 @@
/* The file to write to, or NULL if no dependencies being kept. */
static char *dep_file = NULL;
-struct dependency
-{
+struct dependency {
char *file;
struct dependency *next;
};
@@ -40,9 +39,7 @@ static void wrap_output PARAMS ((FILE *, char *, int));
/* Number of columns allowable. */
#define MAX_COLUMNS 72
-
-
/* Start saving dependencies, to be written to FILENAME. If this is
never called, then dependency tracking is simply skipped. */
@@ -66,7 +63,7 @@ register_dependency (filename)
for (dep = dep_chain; dep != NULL; dep = dep->next)
{
- if (! strcmp (filename, dep->file))
+ if (!strcmp (filename, dep->file))
return;
}
@@ -105,7 +102,7 @@ quote_string_for_make (file, src)
the end of a file name; and backslashes in other
contexts should not be doubled. */
char *q;
- for (q = p - 1; src < q && q[-1] == '\\'; q--)
+ for (q = p - 1; src < q && q[-1] == '\\'; q--)
{
if (file)
putc ('\\', file);
@@ -118,7 +115,7 @@ quote_string_for_make (file, src)
putc ('\\', file);
i++;
goto ordinary_char;
-
+
case '$':
if (file)
putc (c, file);
@@ -154,7 +151,11 @@ wrap_output (f, string, spacer)
if (len == 0)
return;
- if (column && MAX_COLUMNS - 1 /*spacer*/ - 2 /*` \'*/ < column + len)
+ if (column
+ && (MAX_COLUMNS
+ - 1 /* spacer */
+ - 2 /* ` \' */
+ < column + len))
{
fprintf (f, " \\\n ");
column = 0;
diff --git a/contrib/binutils/gas/doc/Makefile.am b/contrib/binutils/gas/doc/Makefile.am
index c6eaf77..60761a4 100644
--- a/contrib/binutils/gas/doc/Makefile.am
+++ b/contrib/binutils/gas/doc/Makefile.am
@@ -17,6 +17,7 @@ asconfig.texi: $(CONFIG).texi
CPU_DOCS = \
c-a29k.texi \
+ c-arc.texi \
c-arm.texi \
c-d10v.texi \
c-h8300.texi \
@@ -24,14 +25,17 @@ CPU_DOCS = \
c-hppa.texi \
c-i370.texi \
c-i386.texi \
+ c-i860.texi \
c-i960.texi \
c-m32r.texi \
+ c-m68hc11.texi \
c-m68k.texi \
c-mips.texi \
c-ns32k.texi \
c-pj.texi \
c-sh.texi \
c-sparc.texi \
+ c-tic54x.texi \
c-vax.texi \
c-v850.texi \
c-z8k.texi
diff --git a/contrib/binutils/gas/doc/Makefile.in b/contrib/binutils/gas/doc/Makefile.in
index 0be6179..5f9b258 100644
--- a/contrib/binutils/gas/doc/Makefile.in
+++ b/contrib/binutils/gas/doc/Makefile.in
@@ -69,9 +69,13 @@ BFDLIB = @BFDLIB@
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
DATADIRNAME = @DATADIRNAME@
DLLTOOL = @DLLTOOL@
EXEEXT = @EXEEXT@
+GCJ = @GCJ@
+GCJFLAGS = @GCJFLAGS@
GDBINIT = @GDBINIT@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
@@ -83,6 +87,7 @@ INTLDEPS = @INTLDEPS@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
LEX = @LEX@
+LIBM = @LIBM@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
MAINT = @MAINT@
@@ -90,14 +95,17 @@ MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
OPCODES_LIB = @OPCODES_LIB@
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@
atof = @atof@
cgen_cpu_prefix = @cgen_cpu_prefix@
@@ -119,6 +127,7 @@ info_TEXINFOS = as.texinfo gasp.texi
CPU_DOCS = \
c-a29k.texi \
+ c-arc.texi \
c-arm.texi \
c-d10v.texi \
c-h8300.texi \
@@ -126,14 +135,17 @@ CPU_DOCS = \
c-hppa.texi \
c-i370.texi \
c-i386.texi \
+ c-i860.texi \
c-i960.texi \
c-m32r.texi \
+ c-m68hc11.texi \
c-m68k.texi \
c-mips.texi \
c-ns32k.texi \
c-pj.texi \
c-sh.texi \
c-sparc.texi \
+ c-tic54x.texi \
c-vax.texi \
c-v850.texi \
c-z8k.texi
@@ -163,7 +175,7 @@ DIST_COMMON = Makefile.am Makefile.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = tar
+TAR = gtar
GZIP_ENV = --best
all: all-redirect
.SUFFIXES:
diff --git a/contrib/binutils/gas/doc/all.texi b/contrib/binutils/gas/doc/all.texi
index d1058fb..22742b4 100644
--- a/contrib/binutils/gas/doc/all.texi
+++ b/contrib/binutils/gas/doc/all.texi
@@ -35,14 +35,17 @@
@set HPPA
@set I370
@set I80386
+@set I860
@set I960
@set M32R
+@set M68HC11
@set M680X0
@set MCORE
@set MIPS
@set PJ
@set SH
@set SPARC
+@set C54X
@set V850
@set VAX
@set VXWORKS
diff --git a/contrib/binutils/gas/doc/as.1 b/contrib/binutils/gas/doc/as.1
index 5fc517c..0e9d0ce 100644
--- a/contrib/binutils/gas/doc/as.1
+++ b/contrib/binutils/gas/doc/as.1
@@ -1,6 +1,6 @@
-.\" Copyright (c) 1991, 1992, 1996, 1997, 1998 Free Software Foundation
+.\" Copyright (c) 1991, 1992, 1996, 1997, 1998, 2000 Free Software Foundation
.\" See section COPYING for conditions for redistribution
-.TH as 1 "29 March 1996" "cygnus support" "GNU Development Tools"
+.TH as 1 "29 March 1996" "Free Software Foundation" "GNU Development Tools"
.SH NAME
GNU as \- the portable GNU assembler.
@@ -290,19 +290,377 @@ Using as: The GNU Assembler\c
.BR ld "(" 1 ")."
.SH COPYING
-Copyright (c) 1991, 1992 Free Software Foundation, Inc.
+Copyright (c) 1991, 1992, 2000 Free Software Foundation, Inc.
.PP
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-.PP
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
+This document is distributed under the terms of the GNU Free
+Documentation License, version 1.1. That license is described in the
+sources for this manual page, but it is not displayed here in order to
+make this manual more consise. Copies of this license can also be
+obtained from: http://www.gnu.org/copyleft/.
+
+\" GNU Free Documentation License
+\" Version 1.1, March 2000
+
+\" Copyright (C) 2000 Free Software Foundation, Inc.
+\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+\" Everyone is permitted to copy and distribute verbatim
+\" copies of this license document, but changing it is
+\" not allowed.
+\" .PP
+\" 0. PREAMBLE
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 1. APPLICABILITY AND DEFINITIONS
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 2. VERBATIM COPYING
+\" .PP
+\" 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.
+\" .PP
+\" You may also lend copies, under the same conditions stated above, and
+\" you may publicly display copies.
+\" .PP
+\" 3. COPYING IN QUANTITY
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 4. MODIFICATIONS
+\" .PP
+\" 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:
+\" .PP
+\" 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.
+\" .PP
+\" 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).
+\" .PP
+\" C. State on the Title page the name of the publisher of the
+\" Modified Version, as the publisher.
+\" .PP
+\" D. Preserve all the copyright notices of the Document.
+\" .PP
+\" E. Add an appropriate copyright notice for your modifications
+\" adjacent to the other copyright notices.
+\" .PP
+\" 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.
+\" Preserve in that license notice the full lists of Invariant Sections
+\" and required Cover Texts given in the Document's license notice.
+\" .PP
+\" H. Include an unaltered copy of this License.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" M. Delete any section entitled "Endorsements". Such a section
+\" may not be included in the Modified Version.
+\" .PP
+\" N. Do not retitle any existing section as "Endorsements"
+\" or to conflict in title with any Invariant Section.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 5. COMBINING DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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."
+\" .PP
+
+\" 6. COLLECTIONS OF DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 7. AGGREGATION WITH INDEPENDENT WORKS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 8. TRANSLATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 9. TERMINATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 10. FUTURE REVISIONS OF THIS LICENSE
+\" .PP
+\" 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/.
+\" .PP
+\" 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.
+\" .PP
+
+\" ADDENDUM: How to use this License for your documents
+\" .PP
+\" 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:
+\" .PP
+\" Copyright (c) YEAR YOUR NAME.
+\" Permission is granted to copy, distribute and/or
+\" modify this document under the terms of the GNU
+\" Free Documentation License, Version 1.1 or any later
+\" version published by the Free Software Foundation;
+\" with the Invariant Sections being LIST THEIR TITLES,
+\" with the Front-Cover Texts being LIST, and with the
+\" Back-Cover Texts being LIST. A copy of the license
+\" is included in the section entitled "GNU Free
+\" Documentation License".
+\" .PP
+\" If you have no Invariant Sections, write "with no Invariant Sections"
+\" instead of saying which ones are invariant. If you have no
+\" Front-Cover Texts, write "no Front-Cover Texts" instead of
+\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+\" .PP
+\" 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/contrib/binutils/gas/doc/as.texinfo b/contrib/binutils/gas/doc/as.texinfo
index 4ceb104..fb80ca5 100644
--- a/contrib/binutils/gas/doc/as.texinfo
+++ b/contrib/binutils/gas/doc/as.texinfo
@@ -1,5 +1,5 @@
\input texinfo @c -*-Texinfo-*-
-@c Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 2000
+@c Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 2000, 2001
@c Free Software Foundation, Inc.
@c UPDATE!! On future updates--
@c (1) check for new machine-dep cmdline options in
@@ -87,11 +87,14 @@ END-INFO-DIR-ENTRY
@ifinfo
This file documents the GNU Assembler "@value{AS}".
-Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
+Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+ Permission is granted to copy, 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".
@ignore
Permission is granted to process this file through Tex and print the
@@ -100,13 +103,6 @@ notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).
@end ignore
-Permission is granted to copy and distribute modified versions of this manual
-under the conditions for verbatim copying, provided that the entire resulting
-derived work is distributed under the terms of a permission notice identical to
-this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
@end ifinfo
@titlepage
@@ -142,19 +138,15 @@ done.
@end tex
@vskip 0pt plus 1filll
-Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
-Permission is granted to copy and distribute modified versions of this manual
-under the conditions for verbatim copying, provided that the entire resulting
-derived work is distributed under the terms of a permission notice identical to
-this one.
+ Permission is granted to copy, 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".
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
@end titlepage
@ifinfo
@@ -167,6 +159,11 @@ This file is a user guide to the @sc{gnu} assembler @code{@value{AS}} version
This version of the file describes @code{@value{AS}} configured to generate
code for @value{TARGET} architectures.
@end ifclear
+
+This document is distributed under the terms of the GNU Free
+Documentation License. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
+
@menu
* Overview:: Overview
* Invoking:: Command-Line Options
@@ -178,6 +175,7 @@ code for @value{TARGET} architectures.
* Machine Dependencies:: Machine Dependent Features
* Reporting Bugs:: Reporting Bugs
* Acknowledgements:: Who Did What
+* GNU Free Documentation License:: GNU Free Documentation License
* Index:: Index
@end menu
@end ifinfo
@@ -205,12 +203,13 @@ Here is a brief summary of how to invoke @code{@value{AS}}. For details,
[ -f ] [ --gstabs ] [ --gdwarf2 ] [ --help ] [ -I @var{dir} ] [ -J ] [ -K ] [ -L ]
[ --keep-locals ] [ -o @var{objfile} ] [ -R ] [ --statistics ] [ -v ]
[ -version ] [ --version ] [ -W ] [ --warn ] [ --fatal-warnings ]
- [ -w ] [ -x ] [ -Z ]
+ [ -w ] [ -x ] [ -Z ] [ --target-help ]
@ifset A29K
@c am29k has no machine-dependent assembler options
@end ifset
@ifset ARC
- [ -mbig-endian | -mlittle-endian ]
+ [ -marc[5|6|7|8] ]
+ [ -EB | -EL ]
@end ifset
@ifset ARM
[ -m[arm]1 | -m[arm]2 | -m[arm]250 | -m[arm]3 | -m[arm]6 | -m[arm]60 |
@@ -219,7 +218,7 @@ Here is a brief summary of how to invoke @code{@value{AS}}. For details,
-m[arm]810 | -m[arm]9 | -m[arm]920 | -m[arm]920t | -m[arm]9tdmi |
-mstrongarm | -mstrongarm110 | -mstrongarm1100 ]
[ -m[arm]v2 | -m[arm]v2a | -m[arm]v3 | -m[arm]v3m | -m[arm]v4 | -m[arm]v4t |
- -m[arm]v5 | -[arm]v5t ]
+ -m[arm]v5 | -[arm]v5t | -[arm]v5te ]
[ -mthumb | -mall ]
[ -mfpa10 | -mfpa11 | -mfpe-old | -mno-fpu ]
[ -EB | -EL ]
@@ -249,6 +248,10 @@ Here is a brief summary of how to invoke @code{@value{AS}}. For details,
-Av8plus | -Av8plusa | -Av9 | -Av9a ]
[ -xarch=v8plus | -xarch=v8plusa ] [ -bump ] [ -32 | -64 ]
@end ifset
+@ifset TIC54X
+ [ -mcpu=54[123589] | -mcpu=54[56]lp ] [ -mfar-mode | -mf ]
+ [ -merrors-to-file <filename> | -me <filename> ]
+@end ifset
@ifset Z8000
@c Z8000 has no machine-dependent assembler options
@end ifset
@@ -257,15 +260,26 @@ Here is a brief summary of how to invoke @code{@value{AS}}. For details,
[ -ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC ]
[ -b ] [ -no-relax ]
@end ifset
+@ifset M32R
+ [ --m32rx | --[no-]warn-explicit-parallel-conflicts | --W[n]p ]
+@end ifset
@ifset M680X0
[ -l ] [ -m68000 | -m68010 | -m68020 | ... ]
@end ifset
@ifset MCORE
[ -jsri2bsr ] [ -sifilter ] [ -relax ]
+ [ -mcpu=[210|340] ]
+@end ifset
+@ifset M68HC11
+ [ -m68hc11 | -m68hc12 ]
+ [ --force-long-branchs ] [ --short-branchs ] [ --strict-direct-mode ]
+ [ --print-insn-syntax ] [ --print-opcodes ] [ --generate-example ]
@end ifset
@ifset MIPS
[ -nocpp ] [ -EL ] [ -EB ] [ -G @var{num} ] [ -mcpu=@var{CPU} ]
- [ -mips1 ] [ -mips2 ] [ -mips3 ] [ -m4650 ] [ -no-m4650 ]
+ [ -mips1 ] [ -mips2 ] [ -mips3 ] [ -mips4 ] [ -mips5 ]
+ [ -mips32 ] [ -mips64 ]
+ [ -m4650 ] [ -no-m4650 ]
[ --trap ] [ --break ]
[ --emulation=@var{name} ]
@end ifset
@@ -325,11 +339,15 @@ may help debugging assembler code, if the debugger can handle it.
@item --gdwarf2
Generate DWARF2 debugging information for each assembler line. This
-may help debugging assembler code, if the debugger can handle it.
+may help debugging assembler code, if the debugger can handle it. Note - this
+option is only supported by some targets, not all of them.
@item --help
Print a summary of the command line options and exit.
+@item --target-help
+Print a summary of all target specific options and exit.
+
@item -I @var{dir}
Add directory @var{dir} to the search list for @code{.include} directives.
@@ -399,17 +417,10 @@ The following options are available when @value{AS} is configured for
an ARC processor.
@table @code
-
-@cindex ARC endianness
-@cindex endianness, ARC
-@cindex big endian output, ARC
-@item -mbig-endian
-Generate ``big endian'' format output.
-
-@cindex little endian output, ARC
-@item -mlittle-endian
-Generate ``little endian'' format output.
-
+@item -marc[5|6|7|8]
+This option selects the core processor variant.
+@item -EB | -EL
+Select either big-endian (-EB) or little-endian (-EL) output.
@end table
@end ifset
@@ -425,7 +436,7 @@ Specify which ARM architecture variant is used by the target.
@item -mthumb | -mall
Enable or disable Thumb only instruction decoding.
@item -mfpa10 | -mfpa11 | -mfpe-old | -mno-fpu
-Select which Floating Point architcture is the target.
+Select which Floating Point architecture is the target.
@item -mapcs-32 | -mapcs-26 | -mapcs-float | -mapcs-reentrant | -moabi
Select which procedure calling convention is in use.
@item -EB | -EL
@@ -486,6 +497,26 @@ error if necessary.
@end table
@end ifset
+@ifset M32R
+The following options are available when @value{AS} is configured for the
+Mitsubishi M32R series.
+
+@table @code
+
+@item --m32rx
+Specify which processor in the M32R family is the target. The default
+is normally the M32R, but this option changes it to the M32RX.
+
+@item --warn-explicit-parallel-conflicts or --Wp
+Produce warning messages when questionable parallel constructs are
+encountered.
+
+@item --no-warn-explicit-parallel-conflicts or --Wnp
+Do not produce warning messages when questionable parallel constructs are
+encountered.
+
+@end table
+@end ifset
@ifset M680X0
The following options are available when @value{AS} is configured for the
@@ -534,6 +565,41 @@ Generate ``little endian'' format output.
@end table
@end ifset
+@ifset M68HC11
+The following options are available when @value{AS} is configured for the
+Motorola 68HC11 or 68HC12 series.
+
+@table @code
+
+@item -m68hc11 | -m68hc12
+Specify what processor is the target. The default is
+defined by the configuration option when building the assembler.
+
+@item --force-long-branchs
+Relative branches are turned into absolute ones. This concerns
+conditional branches, unconditional branches and branches to a
+sub routine.
+
+@item -S | --short-branchs
+Do not turn relative branchs into absolute ones
+when the offset is out of range.
+
+@item --strict-direct-mode
+Do not turn the direct addressing mode into extended addressing mode
+when the instruction does not support direct addressing mode.
+
+@item --print-insn-syntax
+Print the syntax of instruction in case of error.
+
+@item --print-opcodes
+print the list of instructions with syntax and then exit.
+
+@item --generate-example
+print an example of instruction for each possible instruction and then exit.
+This option is only useful for testing @code{@value{AS}}.
+
+@end table
+@end ifset
@ifset SPARC
The following options are available when @code{@value{AS}} is configured
@@ -559,6 +625,22 @@ Warn when the assembler switches to another architecture.
@end table
@end ifset
+@ifset TIC54X
+The following options are available when @value{AS} is configured for the 'c54x
+architecture.
+
+@table @code
+@item -mfar-mode
+Enable extended addressing mode. All addresses and relocations will assume
+extended addressing (usually 23 bits).
+@item -mcpu=@var{CPU_VERSION}
+Sets the CPU version being compiled for.
+@item -merrors-to-file @var{FILENAME}
+Redirect error output to a file, for broken systems which don't support such
+behaviour in the shell.
+@end table
+@end ifset
+
@ifset MIPS
The following options are available when @value{AS} is configured for
a MIPS processor.
@@ -583,10 +665,15 @@ Generate ``little endian'' format output.
@item -mips1
@itemx -mips2
@itemx -mips3
+@itemx -mips4
+@itemx -mips32
Generate code for a particular MIPS Instruction Set Architecture level.
@samp{-mips1} corresponds to the @sc{r2000} and @sc{r3000} processors,
@samp{-mips2} to the @sc{r6000} processor, and @samp{-mips3} to the @sc{r4000}
processor.
+@samp{-mips5}, @samp{-mips32}, and @samp{-mips64} correspond
+to generic @sc{MIPS V}, @sc{MIPS32}, and @sc{MIPS64} ISA
+processors, respectively.
@item -m4650
@itemx -no-m4650
@@ -596,8 +683,9 @@ instructions around accesses to the @samp{HI} and @samp{LO} registers.
@samp{-no-m4650} turns off this option.
@item -mcpu=@var{CPU}
-Generate code for a particular MIPS cpu. This has little effect on the
-assembler, but it is passed by @code{@value{GCC}}.
+Generate code for a particular MIPS cpu. It is exactly equivalent to
+@samp{-m@var{cpu}}, except that there are more value of @var{cpu}
+understood.
@cindex emulation
@item --emulation=@var{name}
@@ -654,11 +742,20 @@ The command line option @samp{-nojsri2bsr} can be used to disable it.
@item -sifilter
@itemx -nosifilter
Enable or disable the silicon filter behaviour. By default this is disabled.
-The default can be overidden by the @samp{-sifilter} command line option.
+The default can be overridden by the @samp{-sifilter} command line option.
@item -relax
Alter jump instructions for long displacements.
+@item -mcpu=[210|340]
+Select the cpu type on the target hardware. This controls which instructions
+can be assembled.
+
+@item -EB
+Assemble for a big endian target.
+
+@item -EL
+Assemble for a little endian target.
@end table
@end ifset
@@ -933,7 +1030,7 @@ information for the debugger.
@node Errors
@section Error and Warning Messages
-@cindex error messsages
+@cindex error messages
@cindex warning messages
@cindex messages from assembler
@code{@value{AS}} may write warnings and error messages to the standard error
@@ -1564,6 +1661,9 @@ is considered a comment and is ignored. The line comment character is
@ifset HPPA
@samp{;} for the HPPA;
@end ifset
+@ifset I80386
+@samp{#} on the i386 and x86-64;
+@end ifset
@ifset I960
@samp{#} on the i960;
@end ifset
@@ -1582,6 +1682,9 @@ is considered a comment and is ignored. The line comment character is
@ifset M680X0
@samp{|} on the 680x0;
@end ifset
+@ifset M68HC11
+@samp{#} on the 68HC11 and 68HC12;
+@end ifset
@ifset VAX
@samp{#} on the Vax;
@end ifset
@@ -1592,7 +1695,7 @@ is considered a comment and is ignored. The line comment character is
@samp{#} on the V850;
@end ifset
see @ref{Machine Dependencies}. @refill
-@c FIXME What about i386, m88k, i860?
+@c FIXME What about m88k, i860?
@ifset GENERIC
On some machines there are two different line comment characters. One
@@ -2297,7 +2400,7 @@ in the data section.
@cindex bss section
@item bss section
This section contains zeroed bytes when your program begins running. It
-is used to hold unitialized variables or common storage. The length of
+is used to hold uninitialized variables or common storage. The length of
each partial program's bss section is important, but because it starts
out containing zeroed bytes there is no need to store explicit zero
bytes in the object file. The bss section was invented to eliminate
@@ -3128,11 +3231,19 @@ Some machine configurations provide additional directives.
* Float:: @code{.float @var{flonums}}
* Func:: @code{.func}
* Global:: @code{.global @var{symbol}}, @code{.globl @var{symbol}}
+@ifset ELF
+* Hidden:: @code{.hidden @var{names}}
+@end ifset
+
* hword:: @code{.hword @var{expressions}}
* Ident:: @code{.ident}
* If:: @code{.if @var{absolute expression}}
* Include:: @code{.include "@var{file}"}
* Int:: @code{.int @var{expressions}}
+@ifset ELF
+* Internal:: @code{.internal @var{names}}
+@end ifset
+
* Irp:: @code{.irp @var{symbol},@var{values}}@dots{}
* Irpc:: @code{.irpc @var{symbol},@var{values}}@dots{}
* Lcomm:: @code{.lcomm @var{symbol} , @var{length}}
@@ -3151,14 +3262,26 @@ Some machine configurations provide additional directives.
* Macro:: @code{.macro @var{name} @var{args}}@dots{}
* MRI:: @code{.mri @var{val}}
-
* Nolist:: @code{.nolist}
* Octa:: @code{.octa @var{bignums}}
* Org:: @code{.org @var{new-lc} , @var{fill}}
* P2align:: @code{.p2align @var{abs-expr} , @var{abs-expr}}
+@ifset ELF
+* PopSection:: @code{.popsection}
+* Previous:: @code{.previous}
+@end ifset
+
* Print:: @code{.print @var{string}}
+@ifset ELF
+* Protected:: @code{.protected @var{names}}
+@end ifset
+
* Psize:: @code{.psize @var{lines}, @var{columns}}
* Purgem:: @code{.purgem @var{name}}
+@ifset ELF
+* PushSection:: @code{.pushsection @var{name}}
+@end ifset
+
* Quad:: @code{.quad @var{bignums}}
* Rept:: @code{.rept @var{count}}
* Sbttl:: @code{.sbttl "@var{subheading}"}
@@ -3170,10 +3293,7 @@ Some machine configurations provide additional directives.
* Set:: @code{.set @var{symbol}, @var{expression}}
* Short:: @code{.short @var{expressions}}
* Single:: @code{.single @var{flonums}}
-@ifset COFF
-* Size:: @code{.size}
-@end ifset
-
+* Size:: @code{.size [@var{name} , @var{expression}]}
* Skip:: @code{.skip @var{size} , @var{fill}}
* Sleb128:: @code{.sleb128 @var{expressions}}
* Space:: @code{.space @var{size} , @var{fill}}
@@ -3184,23 +3304,29 @@ Some machine configurations provide additional directives.
* String:: @code{.string "@var{str}"}
* Struct:: @code{.struct @var{expression}}
@ifset ELF
+* SubSection:: @code{.subsection}
* Symver:: @code{.symver @var{name},@var{name2@@nodename}}
@end ifset
+
@ifset COFF
* Tag:: @code{.tag @var{structname}}
@end ifset
* Text:: @code{.text @var{subsection}}
* Title:: @code{.title "@var{heading}"}
+* Type:: @code{.type <@var{int} | @var{name} , @var{type description}>}
+* Uleb128:: @code{.uleb128 @var{expressions}}
@ifset COFF
-* Type:: @code{.type @var{int}}
* Val:: @code{.val @var{addr}}
@end ifset
+
@ifset ELF
-* Visibility:: @code{.internal @var{name}, .hidden @var{name}, .protected @var{name}}
+* Version:: @code{.version "@var{string}"}
+* VTableEntry:: @code{.vtable_entry @var{table}, @var{offset}}
+* VTableInherit:: @code{.vtable_inherit @var{child}, @var{parent}}
+* Weak:: @code{.weak @var{names}}
@end ifset
-* Uleb128:: @code{.uleb128 @var{expressions}}
* Word:: @code{.word @var{expressions}}
* Deprecated:: Deprecated Directives
@end menu
@@ -3658,6 +3784,22 @@ partial programs. You may need the HPPA-only @code{.EXPORT} directive as well.
@xref{HPPA Directives,, HPPA Assembler Directives}.
@end ifset
+@ifset ELF
+@node Hidden
+@section @code{.hidden @var{names}}
+
+@cindex @code{.hidden} directive
+@cindex Visibility
+This one of the ELF visibility directives. The other two are
+@code{.internal} (@pxref{Internal,,@code{.internal}}) and
+@code{.protected} (@pxref{Protected,,@code{.protected}}).
+
+This directive overrides the named symbols default visibility (which is set by
+their binding: local, global or weak). The directive sets the visibility to
+@code{hidden} which means that the symbols are not visible to other components.
+Such symbols are always considered to be @code{protected} as well.
+@end ifset
+
@node hword
@section @code{.hword @var{expressions}}
@@ -3800,6 +3942,23 @@ integers. On the H8/300H and the Hitachi SH, however, @code{.int} emits
@end ifset
@end ifclear
+@ifset ELF
+@node Internal
+@section @code{.internal @var{names}}
+
+@cindex @code{.internal} directive
+@cindex Visibility
+This one of the ELF visibility directives. The other two are
+@code{.hidden} (@pxref{Hidden,,@code{.hidden}}) and
+@code{.protected} (@pxref{Protected,,@code{.protected}}).
+
+This directive overrides the named symbols default visibility (which is set by
+their binding: local, global or weak). The directive sets the visibility to
+@code{internal} which means that the symbols are considered to be @code{hidden}
+(ie not visible to other components), and that some extra, processor specific
+processing must also be performed upon the symbols as well.
+@end ifset
+
@node Irp
@section @code{.irp @var{symbol},@var{values}}@dots{}
@@ -4227,6 +4386,42 @@ filled in with the value 0x368d (the exact placement of the bytes depends upon
the endianness of the processor). If it skips 1 or 3 bytes, the fill value is
undefined.
+@ifset ELF
+@node Previous
+@section @code{.previous}
+
+@cindex @code{.previous} directive
+@cindex Section Stack
+This is one of the ELF section stack manipulation directives. The others are
+@code{.section} (@pxref{Section}), @code{.subsection} (@pxref{SubSection}),
+@code{.pushsection} (@pxref{PushSection}), and @code{.popsection}
+(@pxref{PopSection}).
+
+This directive swaps the current section (and subsection) with most recently
+referenced section (and subsection) prior to this one. Multiple
+@code{.previous} directives in a row will flip between two sections (and their
+subsections).
+
+In terms of the section stack, this directive swaps the current section with
+the top section on the section stack.
+@end ifset
+
+@ifset ELF
+@node PopSection
+@section @code{.popsection}
+
+@cindex @code{.popsection} directive
+@cindex Section Stack
+This is one of the ELF section stack manipulation directives. The others are
+@code{.section} (@pxref{Section}), @code{.subsection} (@pxref{SubSection}),
+@code{.pushsection} (@pxref{PushSection}), and @code{.previous}
+(@pxref{Previous}).
+
+This directive replaces the current section (and subsection) with the top
+section (and subsection) on the section stack. This section is popped off the
+stack.
+@end ifset
+
@node Print
@section @code{.print @var{string}}
@@ -4234,6 +4429,23 @@ undefined.
@code{@value{AS}} will print @var{string} on the standard output during
assembly. You must put @var{string} in double quotes.
+@ifset ELF
+@node Protected
+@section @code{.protected @var{names}}
+
+@cindex @code{.protected} directive
+@cindex Visibility
+This one of the ELF visibility directives. The other two are
+@code{.hidden} (@pxref{Hidden}) and @code{.internal} (@pxref{Internal}).
+
+This directive overrides the named symbols default visibility (which is set by
+their binding: local, global or weak). The directive sets the visibility to
+@code{protected} which means that any references to the symbols from within the
+components that defines them must be resolved to the definition in that
+component, even if a definition in another component would normally preempt
+this.
+@end ifset
+
@node Psize
@section @code{.psize @var{lines} , @var{columns}}
@@ -4261,6 +4473,22 @@ those explicitly specified with @code{.eject}.
Undefine the macro @var{name}, so that later uses of the string will not be
expanded. @xref{Macro}.
+@ifset ELF
+@node PushSection
+@section @code{.pushsection @var{name} , @var{subsection}}
+
+@cindex @code{.pushsection} directive
+@cindex Section Stack
+This is one of the ELF section stack manipulation directives. The others are
+@code{.section} (@pxref{Section}), @code{.subsection} (@pxref{SubSection}),
+@code{.popsection} (@pxref{PopSection}), and @code{.previous}
+(@pxref{Previous}).
+
+This directive is a synonym for @code{.section}. It pushes the current section
+(and subsection) onto the top of the section stack, and then replaces the
+current section and subsection with @code{name} and @code{subsection}.
+@end ifset
+
@node Quad
@section @code{.quad @var{bignums}}
@@ -4338,7 +4566,7 @@ accepts this directive but ignores it.
@end ifset
@node Section
-@section @code{.section @var{name}}
+@section @code{.section @var{name}} (COFF version)
@cindex @code{section} directive
@cindex named section
@@ -4349,9 +4577,9 @@ This directive is only supported for targets that actually support arbitrarily
named sections; on @code{a.out} targets, for example, it is not accepted, even
with a standard @code{a.out} section name.
-@ifset COFF
For COFF targets, the @code{.section} directive is used in one of the following
ways:
+
@smallexample
.section @var{name}[, "@var{flags}"]
.section @var{name}[, @var{subsegment}]
@@ -4382,15 +4610,28 @@ loaded and writable.
If the optional argument to the @code{.section} directive is not quoted, it is
taken as a subsegment number (@pxref{Sub-Sections}).
-@end ifset
+
+@section @code{.section @var{name}} (ELF version)
+
+@cindex @code{section} directive
+@cindex named section
@ifset ELF
+@cindex Section Stack
+This is one of the ELF section stack manipulation directives. The others are
+@code{.subsection} (@pxref{SubSection}), @code{.pushsection}
+(@pxref{PushSection}), @code{.popsection} (@pxref{PopSection}), and
+@code{.previous} (@pxref{Previous}).
+@end ifset
+
For ELF targets, the @code{.section} directive is used like this:
+
@smallexample
-.section @var{name}[, "@var{flags}"[, @@@var{type}]]
+.section @var{name} [, "@var{flags}"[, @@@var{type}]]
@end smallexample
+
The optional @var{flags} argument is a quoted string which may contain any
-combintion of the following characters:
+combination of the following characters:
@table @code
@item a
section is allocatable
@@ -4415,9 +4656,11 @@ executable. The section will contain data.
For ELF targets, the assembler supports another type of @code{.section}
directive for compatibility with the Solaris assembler:
+
@smallexample
.section "@var{name}"[, @var{flags}...]
@end smallexample
+
Note that the section name is quoted. There may be a sequence of comma
separated flags:
@table @code
@@ -4428,7 +4671,11 @@ section is writable
@item #execinstr
section is executable
@end table
-@end ifset
+
+This directive replaces the current section and subsection. The replaced
+section and subsection are pushed onto the section stack. See the contents of
+the gas testsuite directory @code{gas/testsuite/gas/elf} for some examples of
+how this directive and the other section stack directives work.
@node Set
@section @code{.set @var{symbol}, @var{expression}}
@@ -4489,21 +4736,27 @@ numbers in @sc{ieee} format.
@end ifset
@end ifclear
-@ifset COFF
@node Size
-@section @code{.size}
+@section @code{.size} (COFF version)
@cindex @code{size} directive
This directive is generated by compilers to include auxiliary debugging
information in the symbol table. It is only permitted inside
@code{.def}/@code{.endef} pairs.
-@ifset BOUT
+@ifset BOUT
@samp{.size} is only meaningful when generating COFF format output; when
@code{@value{AS}} is generating @code{b.out}, it accepts this directive but
ignores it.
@end ifset
-@end ifset
+
+@section @code{.size @var{name} , @var{expression}} (ELF version)
+@cindex @code{size} directive
+
+This directive is used to set the size associated with a symbol @var{name}.
+The size in bytes is computed from @var{expression} which can make use of label
+arithmetic. This directive is typically used to set the size of function
+symbols.
@node Sleb128
@section @code{.sleb128 @var{expressions}}
@@ -4658,6 +4911,22 @@ use a @code{.section} directive of some sort to change to some other section
before further assembly.
@ifset ELF
+@node SubSection
+@section @code{.subsection @var{name}}
+
+@cindex @code{.subsection} directive
+@cindex Section Stack
+This is one of the ELF section stack manipulation directives. The others are
+@code{.section} (@pxref{Section}), @code{.pushsection} (@pxref{PushSection}),
+@code{.popsection} (@pxref{PopSection}), and @code{.previous}
+(@pxref{Previous}).
+
+This directive replaces the current subsection with @code{name}. The current
+section is not changed. The replaced subsection is put onto the section stack
+in place of the then current top of stack subsection.
+@end ifset
+
+@ifset ELF
@node Symver
@section @code{.symver}
@cindex @code{symver} directive
@@ -4670,12 +4939,12 @@ There are cases where it may make sense to use this in objects to be bound
into an application itself so as to override a versioned symbol from a
shared library.
-For ELF targets, the @code{.symver} directive is used like this:
+For ELF targets, the @code{.symver} directive can be used like this:
@smallexample
.symver @var{name}, @var{name2@@nodename}
@end smallexample
-In this case, the symbol @var{name} must exist and be defined within the file
-being assembled. The @code{.versym} directive effectively creates a symbol
+If the symbol @var{name} is defined within the file
+being assembled, the @code{.symver} directive effectively creates a symbol
alias with the name @var{name2@@nodename}, and in fact the main reason that we
just don't try and create a regular alias is that the @var{@@} character isn't
permitted in symbol names. The @var{name2} part of the name is the actual name
@@ -4688,6 +4957,29 @@ the name of a node specified in the version script supplied to the linker when
building a shared library. If you are attempting to override a versioned
symbol from a shared library, then @var{nodename} should correspond to the
nodename of the symbol you are trying to override.
+
+If the symbol @var{name} is not defined within the file being assembled, all
+references to @var{name} will be changed to @var{name2@@nodename}. If no
+reference to @var{name} is made, @var{name2@@nodename} will be removed from the
+symbol table.
+
+Another usage of the @code{.symver} directive is:
+@smallexample
+.symver @var{name}, @var{name2@@@@nodename}
+@end smallexample
+In this case, the symbol @var{name} must exist and be defined within
+the file being assembled. It is similar to @var{name2@@nodename}. The
+difference is @var{name2@@@@nodename} will also be used to resolve
+references to @var{name2} by the linker.
+
+The third usage of the @code{.symver} directive is:
+@smallexample
+.symver @var{name}, @var{name2@@@@@@nodename}
+@end smallexample
+When @var{name} is not defined within the
+file being assembled, it is treated as @var{name2@@nodename}. When
+@var{name} is defined within the file being assembled, the symbol
+name, @var{name}, will be changed to @var{name2@@@@nodename}.
@end ifset
@ifset COFF
@@ -4729,22 +5021,55 @@ source file name and pagenumber) when generating assembly listings.
This directive affects subsequent pages, as well as the current page if
it appears within ten lines of the top of a page.
-@ifset COFF
@node Type
-@section @code{.type @var{int}}
+@section @code{.type @var{int}} (COFF version)
@cindex COFF symbol type
@cindex symbol type, COFF
@cindex @code{type} directive
This directive, permitted only within @code{.def}/@code{.endef} pairs,
records the integer @var{int} as the type attribute of a symbol table entry.
-@ifset BOUT
+@ifset BOUT
@samp{.type} is associated only with COFF format output; when
@code{@value{AS}} is configured for @code{b.out} output, it accepts this
directive but ignores it.
@end ifset
-@end ifset
+
+@section @code{.type @var{name} , @var{type description}} (ELF version)
+
+@cindex ELF symbol type
+@cindex symbol type, ELF
+@cindex @code{type} directive
+This directive is used to set the type of symbol @var{name} to be either a
+function symbol or an object symbol. There are five different syntaxes
+supported for the @var{type description} field, in order to provide
+compatibility with various other assemblers. The syntaxes supported are:
+
+@smallexample
+ .type <name>,#function
+ .type <name>,#object
+
+ .type <name>,@@function
+ .type <name>,@@object
+
+ .type <name>,%function
+ .type <name>,%object
+
+ .type <name>,"function"
+ .type <name>,"object"
+
+ .type <name> STT_FUNCTION
+ .type <name> STT_OBJECT
+@end smallexample
+
+@node Uleb128
+@section @code{.uleb128 @var{expressions}}
+
+@cindex @code{uleb128} directive
+@var{uleb128} stands for ``unsigned little endian base 128.'' This is a
+compact, variable length representation of numbers used by the DWARF
+symbolic debugging format. @xref{Sleb128,@code{.sleb128}}.
@ifset COFF
@node Val
@@ -4763,46 +5088,40 @@ configured for @code{b.out}, it accepts this directive but ignores it.
@end ifset
@end ifset
-@node Uleb128
-@section @code{.uleb128 @var{expressions}}
-
-@cindex @code{uleb128} directive
-@var{uleb128} stands for ``unsigned little endian base 128.'' This is a
-compact, variable length representation of numbers used by the DWARF
-symbolic debugging format. @xref{Sleb128,@code{.sleb128}}.
-
@ifset ELF
-@node Visibility
-@section @code{.internal}, @code{.hidden}, @code{.protected}
-@cindex @code{internal} directive
-@cindex @code{hidden} directive
-@cindex @code{protected} directive
-@cindex symbol visibility
+@node Version
+@section @code{.version "@var{string}"}
-These directives can be used to set the visibility of a specified symbol. By
-default a symbol's visibility is set by its binding (local, global or weak),
-but these directives can be used to override that.
+@cindex @code{.version}
+This directive creates a @code{.note} section and places into it an ELF
+formatted note of type NT_VERSION. The note's name is set to @code{string}.
+@end ifset
-A visibility of @code{protected} means that any references to the symbol from
-within the component that defines the symbol must be resolved to the definition
-in that component, even if a definition in another component would normally
-preempt this.
+@ifset ELF
+@node VTableEntry
+@section @code{.vtable_entry @var{table}, @var{offset}}
-A visibility of @code{hidden} means that the symbol is not visible to other
-components. Such a symbol is always considered to be protected as well.
+@cindex @code{.vtable_entry}
+This directive finds or creates a symbol @code{table} and creates a
+@code{VTABLE_ENTRY} relocation for it with an addend of @code{offset}.
-A visibility of @code{internal} is the same as a visibility of @code{hidden},
-except that some extra, processor specific processing must also be performed
-upon the symbol.
+@node VTableInherit
+@section @code{.vtable_inherit @var{child}, @var{parent}}
-For ELF targets, the directives are used like this:
+@cindex @code{.vtable_inherit}
+This directive finds the symbol @code{child} and finds or creates the symbol
+@code{parent} and then creates a @code{VTABLE_INHERIT} relocation for the
+parent whose addend is the value of the child symbol. As a special case the
+parent name of @code{0} is treated as refering the @code{*ABS*} section.
+@end ifset
-@smallexample
-.internal @var{name}
-.hidden @var{name}
-.protected @var{name}
-@end smallexample
+@ifset ELF
+@node Weak
+@section @code{.weak @var{names}}
+@cindex @code{.weak}
+This directive sets the weak attribute on the comma separated list of symbol
+@code{names}. If the symbols do not already exist, they will be created.
@end ifset
@node Word
@@ -4842,7 +5161,7 @@ interest to you does 32-bit addressing (or doesn't require it;
@end ifset
In order to assemble compiler output into something that works,
-@code{@value{AS}} occasionlly does strange things to @samp{.word} directives.
+@code{@value{AS}} occasionally does strange things to @samp{.word} directives.
Directives of the form @samp{.word sym1-sym2} are often emitted by
compilers as part of jump tables. Therefore, when @code{@value{AS}} assembles a
directive of the form @samp{.word sym1-sym2}, and the difference between
@@ -4929,14 +5248,23 @@ subject, see the hardware manufacturer's manual.
* ESA/390-Dependent:: IBM ESA/390 Dependent Features
@end ifset
@ifset I80386
-* i386-Dependent:: Intel 80386 Dependent Features
+* i386-Dependent:: Intel 80386 and AMD x86-64 Dependent Features
+@end ifset
+@ifset I860
+* i860-Dependent:: Intel 80860 Dependent Features
@end ifset
@ifset I960
* i960-Dependent:: Intel 80960 Dependent Features
@end ifset
+@ifset M32R
+* M32R-Dependent:: M32R Dependent Features
+@end ifset
@ifset M680X0
* M68K-Dependent:: M680x0 Dependent Features
@end ifset
+@ifset M68HC11
+* M68HC11-Dependent:: M68HC11 and 68HC12 Dependent Features
+@end ifset
@ifset MIPS
* MIPS-Dependent:: MIPS Dependent Features
@end ifset
@@ -4949,6 +5277,9 @@ subject, see the hardware manufacturer's manual.
@ifset SPARC
* Sparc-Dependent:: SPARC Dependent Features
@end ifset
+@ifset TIC54X
+* TIC54X-Dependent:: TI TMS320C54x Dependent Features
+@end ifset
@ifset V850
* V850-Dependent:: V850 Dependent Features
@end ifset
@@ -4972,80 +5303,7 @@ subject, see the hardware manufacturer's manual.
@c in both conditional blocks.
@ifset ARC
-@ifset GENERIC
-@page
-@node ARC-Dependent
-@chapter ARC Dependent Features
-@end ifset
-@ifclear GENERIC
-@node Machine Dependencies
-@chapter ARC Dependent Features
-@end ifclear
-
-@cindex ARC support
-@menu
-* ARC-Opts:: Options
-* ARC-Float:: Floating Point
-* ARC-Directives:: Sparc Machine Directives
-@end menu
-
-@node ARC-Opts
-@section Options
-
-@cindex options for ARC
-@cindex ARC options
-@cindex architectures, ARC
-@cindex ARC architectures
-The ARC chip family includes several successive levels (or other
-variants) of chip, using the same core instruction set, but including
-a few additional instructions at each level.
-
-By default, @code{@value{AS}} assumes the core instruction set (ARC
-base). The @code{.cpu} pseudo-op is intended to be used to select
-the variant.
-
-@table @code
-@cindex @code{-mbig-endian} option (ARC)
-@cindex @code{-mlittle-endian} option (ARC)
-@cindex ARC big-endian output
-@cindex ARC little-endian output
-@cindex big-endian output, ARC
-@cindex little-endian output, ARC
-@item -mbig-endian
-@itemx -mlittle-endian
-Any @sc{arc} configuration of @code{@value{AS}} can select big-endian or
-little-endian output at run time (unlike most other @sc{gnu} development
-tools, which must be configured for one or the other). Use
-@samp{-mbig-endian} to select big-endian output, and @samp{-mlittle-endian}
-for little-endian.
-@end table
-
-@node ARC-Float
-@section Floating Point
-
-@cindex floating point, ARC (@sc{ieee})
-@cindex ARC floating point (@sc{ieee})
-The ARC cpu family currently does not have hardware floating point
-support. Software floating point support is provided by @code{GCC}
-and uses @sc{ieee} floating-point numbers.
-
-@node ARC-Directives
-@section ARC Machine Directives
-
-@cindex ARC machine directives
-@cindex machine directives, ARC
-The ARC version of @code{@value{AS}} supports the following additional
-machine directives:
-
-@table @code
-@item .cpu
-@cindex @code{cpu} directive, SPARC
-This must be followed by the desired cpu.
-The ARC is intended to be customizable, @code{.cpu} is used to
-select the desired variant [though currently there are none].
-
-@end table
-
+@include c-arc.texi
@end ifset
@ifset A29K
@@ -5103,15 +5361,26 @@ family.
@include c-i386.texi
@end ifset
+@ifset I860
+@include c-i860.texi
+@end ifset
+
@ifset I960
@include c-i960.texi
@end ifset
+@ifset M32R
+@include c-m32r.texi
+@end ifset
@ifset M680X0
@include c-m68k.texi
@end ifset
+@ifset M68HC11
+@include c-m68hc11.texi
+@end ifset
+
@ifset MIPS
@include c-mips.texi
@end ifset
@@ -5132,6 +5401,10 @@ family.
@include c-sparc.texi
@end ifset
+@ifset TIC54X
+@include c-tic54x.texi
+@end ifset
+
@ifset Z8000
@include c-z8k.texi
@end ifset
@@ -5212,7 +5485,7 @@ 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 @code{@value{AS}}
-to @samp{bug-gnu-utils@@gnu.org}.
+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
@@ -5435,6 +5708,9 @@ Linas Vepstas added GAS support for the ESA/390 "IBM 370" architecture.
Richard Henderson rewrote the Alpha assembler. Klaus Kaempf wrote GAS and BFD
support for openVMS/Alpha.
+Timothy Wall, Michael Hayes, and Greg Smart contributed to the various tic*
+flavors.
+
Several engineers at Cygnus Support have also provided many small bug fixes and
configuration enhancements.
@@ -5443,6 +5719,369 @@ you have contributed significant work and are not mentioned on this list, and
want to be, let us know. Some of the history has been lost; we are not
intentionally leaving anyone out.
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+
+ GNU Free Documentation License
+
+ Version 1.1, March 2000
+
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+written document "free" in the sense of freedom: to assure everyone
+the effective freedom to copy and redistribute it, with or without
+modifying it, either commercially or noncommercially. Secondarily,
+this License preserves for the author and publisher a way to get
+credit for their work, while not being considered responsible for
+modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a
+notice placed by the copyright holder saying it can be distributed
+under the terms of this License. The "Document", below, refers to any
+such manual or work. Any member of the public is a licensee, and is
+addressed as "you".
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (For example, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, whose contents can be viewed and edited directly and
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup has been designed to thwart or discourage
+subsequent modification by readers is not Transparent. A copy that is
+not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML designed for human modification. Opaque formats include
+PostScript, PDF, proprietary formats that can be read and edited only
+by proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML produced by some word processors for output
+purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100,
+and the Document's license notice requires Cover Texts, you must enclose
+the copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a publicly-accessible computer-network location containing a complete
+Transparent copy of the Document, free of added material, which the
+general network-using public has access to download anonymously at no
+charge using public-standard network protocols. If you use the latter
+option, you must take reasonably prudent steps, when you begin
+distribution of Opaque copies in quantity, to ensure that this
+Transparent copy will remain thus accessible at the stated location
+until at least one year after the last time you distribute an Opaque
+copy (directly or through your agents or retailers) of that edition to
+the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has less than five).
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section entitled "History", and its title, and add to
+ it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. In any section entitled "Acknowledgements" or "Dedications",
+ preserve the section's title, and preserve in the section all the
+ substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section as "Endorsements"
+ or to conflict in title with any Invariant Section.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled "History"
+in the various original documents, forming one section entitled
+"History"; likewise combine any sections entitled "Acknowledgements",
+and any sections entitled "Dedications". You must delete all sections
+entitled "Endorsements."
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, does not as a whole count as a Modified Version
+of the Document, provided no compilation copyright is claimed for the
+compilation. Such a compilation is called an "aggregate", and this
+License does not apply to the other self-contained works thus compiled
+with the Document, on account of their being thus compiled, if they
+are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one quarter
+of the entire aggregate, the Document's Cover Texts may be placed on
+covers that surround only the Document within the aggregate.
+Otherwise they must appear on covers around the whole aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License provided that you also include the
+original English version of this License. In case of a disagreement
+between the translation and the original English version of this
+License, the original English version will prevail.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1
+ or any later version published by the Free Software Foundation;
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+@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 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.
+
@node Index
@unnumbered Index
diff --git a/contrib/binutils/gas/doc/c-arm.texi b/contrib/binutils/gas/doc/c-arm.texi
index e354982..d3de43b 100644
--- a/contrib/binutils/gas/doc/c-arm.texi
+++ b/contrib/binutils/gas/doc/c-arm.texi
@@ -32,15 +32,18 @@
@cindex @code{-marm} command line option, ARM
@item -marm@code{[2|250|3|6|60|600|610|620|7|7m|7d|7dm|7di|7dmi|70|700|700i|710|710c|7100|7500|7500fe|7tdmi|8|810|9|9tdmi|920|strongarm|strongarm110|strongarm1100]}
+@itemx -mxscale
This option specifies the target processor. The assembler will issue an
error message if an attempt is made to assemble an instruction which
will not execute on the target processor.
@cindex @code{-marmv} command line option, ARM
-@item -marmv@code{[2|2a|3|3m|4|4t|5|5t]}
+@item -marmv@code{[2|2a|3|3m|4|4t|5|5t|5te]}
This option specifies the target architecture. The assembler will issue
an error message if an attempt is made to assemble an instruction which
will not execute on the target architecture.
+The option @code{-marmv5te} specifies that v5t architecture should be
+used with the El Segundo extensions enabled.
@cindex @code{-mthumb} command line option, ARM
@item -mthumb
@@ -51,13 +54,13 @@ This option specifies that only Thumb instructions should be assembled.
This option specifies that any Arm or Thumb instruction should be assembled.
@cindex @code{-mfpa} command line option, ARM
-@item -mfpa @var{[10|11]}
+@item -mfpa @code{[10|11]}
This option specifies the floating point architecture in use on the
target processor.
@cindex @code{-mfpe-old} command line option, ARM
@item -mfpe-old
-Do not allow the assemble of floating point multiple instructions.
+Do not allow the assembly of floating point multiple instructions.
@cindex @code{-mno-fpu} command line option, ARM
@item -mno-fpu
@@ -69,11 +72,19 @@ This option specifies that the output generated by the assembler should
be marked as supporting interworking.
@cindex @code{-mapcs} command line option, ARM
-@item -mapcs @var{[26|32]}
+@item -mapcs @code{[26|32]}
This option specifies that the output generated by the assembler should
be marked as supporting the indicated version of the Arm Procedure.
Calling Standard.
+@cindex @code{-matpcs} command line option, ARM
+@item -matpcs
+This option specifies that the output generated by the assembler should
+be marked as supporting the Arm/Thumb Procedure Calling Standard. If
+enabled this option will cause the assembler to create an empty
+debugging section in the object file called .arm.atpcs. Debuggers can
+use this to determine the ABI being used by.
+
@cindex @code{-mapcs-float} command line option, ARM
@item -mapcs-float
This indicates the the floating point variant of the APCS should be
@@ -98,7 +109,8 @@ be marked as being encoded for a little-endian processor.
@cindex @code{-k} command line option, ARM
@cindex PIC code generation for ARM
@item -k
-This option enables the generation of PIC (position independent code).
+This option specifies that the output of the assembler should be marked
+as position-independent code (PIC).
@cindex @code{-moabi} command line option, ARM
@item -moabi
@@ -129,8 +141,8 @@ the first character of a line, the whole line is treated as a comment.
@cindex line separator, ARM
@cindex statement separator, ARM
@cindex ARM line separator
-On ARM systems running the GNU/Linux operating system, @samp{;} can be
-used instead of a newline to separate statements.
+The @samp{;} character can be used instead of a newline to separate
+statements.
@cindex immediate character, ARM
@cindex ARM immediate character
@@ -180,7 +192,7 @@ example:
@end smallexample
@cindex @code{code} directive, ARM
-@item .code @var{[16|32]}
+@item .code @code{[16|32]}
This directive selects the instruction set being generated. The value 16
selects Thumb, with the value 32 selecting ARM.
@@ -203,7 +215,8 @@ This directive specifies that the following symbol is the name of a
Thumb encoded function. This information is necessary in order to allow
the assembler and linker to generate correct code for interworking
between Arm and Thumb instructions and should be used even if
-interworking is not going to be performed.
+interworking is not going to be performed. The presence of this
+directive also implies @code{.thumb}
@cindex @code{thumb_set} directive, ARM
@item .thumb_set
@@ -277,7 +290,7 @@ will not make use of the literal pool.
@end smallexample
This instruction will load the address of @var{label} into the indicated
-register. The instruction will evaluate to one or two a PC relative ADD
+register. The instruction will evaluate to one or two PC relative ADD
or SUB instructions depending upon where the label is located. If a
second instruction is not needed a NOP instruction will be generated in
its place, so that this instruction is always 8 bytes long.
diff --git a/contrib/binutils/gas/doc/c-i386.texi b/contrib/binutils/gas/doc/c-i386.texi
index 8a9c85a..110d560 100644
--- a/contrib/binutils/gas/doc/c-i386.texi
+++ b/contrib/binutils/gas/doc/c-i386.texi
@@ -13,6 +13,12 @@
@cindex i386 support
@cindex i80306 support
+@cindex x86-64 support
+
+The i386 version @code{@value{AS}} supports both the original Intel 386
+architecture in both 16 and 32-bit mode as well as AMD x86-64 architecture
+extending the Intel architecture to 64-bits.
+
@menu
* i386-Options:: Options
* i386-Syntax:: AT&T Syntax versus Intel Syntax
@@ -24,6 +30,7 @@
* i386-Float:: Floating Point
* i386-SIMD:: Intel's MMX and AMD's 3DNow! SIMD Operations
* i386-16bit:: Writing 16-bit Code
+* i386-Arch:: Specifying an x86 CPU architecture
* i386-Bugs:: AT&T Syntax bugs
* i386-Notes:: Notes
@end menu
@@ -31,17 +38,52 @@
@node i386-Options
@section Options
-@cindex options for i386 (none)
-@cindex i386 options (none)
-The 80386 has no machine dependent options.
+@cindex options for i386
+@cindex options for x86-64
+@cindex i386 options
+@cindex x86-64 options
+
+The i386 version of @code{@value{AS}} has a few machine
+dependent options:
+
+@table @code
+@cindex @samp{--32} option, i386
+@cindex @samp{--32} option, x86-64
+@cindex @samp{--64} option, i386
+@cindex @samp{--64} option, x86-64
+@item --32 | --64
+Select the word size, either 32 bits or 64 bits. Selecting 32-bit
+implies Intel i386 architecture, while 64-bit implies AMD x86-64
+architecture.
+
+These options are only available with the ELF object file format, and
+require that the necessary BFD support has been included (on a 32-bit
+platform you have to add --enable-64-bit-bfd to configure enable 64-bit
+usage and use x86-64 as target platform).
+@end table
@node i386-Syntax
@section AT&T Syntax versus Intel Syntax
+@cindex i386 intel_syntax pseudo op
+@cindex intel_syntax pseudo op, i386
+@cindex i386 att_syntax pseudo op
+@cindex att_syntax pseudo op, i386
@cindex i386 syntax compatibility
@cindex syntax compatibility, i386
-In order to maintain compatibility with the output of @code{@value{GCC}},
-@code{@value{AS}} supports AT&T System V/386 assembler syntax. This is quite
+@cindex x86-64 intel_syntax pseudo op
+@cindex intel_syntax pseudo op, x86-64
+@cindex x86-64 att_syntax pseudo op
+@cindex att_syntax pseudo op, x86-64
+@cindex x86-64 syntax compatibility
+@cindex syntax compatibility, x86-64
+
+@code{@value{AS}} now supports assembly using Intel assembler syntax.
+@code{.intel_syntax} selects Intel mode, and @code{.att_syntax} switches
+back to the usual AT&T mode for compatibility with the output of
+@code{@value{GCC}}. Either of these directives may have an optional
+argument, @code{prefix}, or @code{noprefix} specifying whether registers
+require a @samp{%} prefix. AT&T System V/386 assembler syntax is quite
different from Intel syntax. We mention these differences because
almost all 80386 documents use Intel syntax. Notable differences
between the two syntaxes are:
@@ -53,6 +95,14 @@ between the two syntaxes are:
@cindex jump/call operands, i386
@cindex i386 jump/call operands
@cindex operand delimiters, i386
+
+@cindex immediate operands, x86-64
+@cindex x86-64 immediate operands
+@cindex register operands, x86-64
+@cindex x86-64 register operands
+@cindex jump/call operands, x86-64
+@cindex x86-64 jump/call operands
+@cindex operand delimiters, x86-64
@itemize @bullet
@item
AT&T immediate operands are preceded by @samp{$}; Intel immediate
@@ -63,6 +113,8 @@ operands are prefixed by @samp{*}; they are undelimited in Intel syntax.
@cindex i386 source, destination operands
@cindex source, destination operands; i386
+@cindex x86-64 source, destination operands
+@cindex source, destination operands; x86-64
@item
AT&T and Intel syntax use the opposite order for source and destination
operands. Intel @samp{add eax, 4} is @samp{addl $4, %eax}. The
@@ -74,17 +126,23 @@ reversed order. @ref{i386-Bugs}.
@cindex mnemonic suffixes, i386
@cindex sizes operands, i386
@cindex i386 size suffixes
+@cindex mnemonic suffixes, x86-64
+@cindex sizes operands, x86-64
+@cindex x86-64 size suffixes
@item
In AT&T syntax the size of memory operands is determined from the last
character of the instruction mnemonic. Mnemonic suffixes of @samp{b},
-@samp{w}, and @samp{l} specify byte (8-bit), word (16-bit), and long
-(32-bit) memory references. Intel syntax accomplishes this by prefixing
-memory operands (@emph{not} the instruction mnemonics) with @samp{byte
-ptr}, @samp{word ptr}, and @samp{dword ptr}. Thus, Intel @samp{mov al,
-byte ptr @var{foo}} is @samp{movb @var{foo}, %al} in AT&T syntax.
+@samp{w}, @samp{l} and @samp{q} specify byte (8-bit), word (16-bit), long
+(32-bit) and quadruple word (64-bit) memory references. Intel syntax accomplishes
+this by prefixing memory operands (@emph{not} the instruction mnemonics) with
+@samp{byte ptr}, @samp{word ptr}, @samp{dword ptr} and @samp{qword ptr}. Thus,
+Intel @samp{mov al, byte ptr @var{foo}} is @samp{movb @var{foo}, %al} in AT&T
+syntax.
@cindex return instructions, i386
@cindex i386 jump, call, return
+@cindex return instructions, x86-64
+@cindex x86-64 jump, call, return
@item
Immediate form long jumps and calls are
@samp{lcall/ljmp $@var{section}, $@var{offset}} in AT&T syntax; the
@@ -96,6 +154,8 @@ is @samp{lret $@var{stack-adjust}} in AT&T syntax; Intel syntax is
@cindex sections, i386
@cindex i386 sections
+@cindex sections, x86-64
+@cindex x86-64 sections
@item
The AT&T assembler does not provide support for multiple section
programs. Unix style systems expect all programs to be single sections.
@@ -106,17 +166,20 @@ programs. Unix style systems expect all programs to be single sections.
@cindex i386 instruction naming
@cindex instruction naming, i386
+@cindex x86-64 instruction naming
+@cindex instruction naming, x86-64
+
Instruction mnemonics are suffixed with one character modifiers which
-specify the size of operands. The letters @samp{b}, @samp{w}, and
-@samp{l} specify byte, word, and long operands. If no suffix is
-specified by an instruction then @code{@value{AS}} tries to fill in the
-missing suffix based on the destination register operand (the last one
-by convention). Thus, @samp{mov %ax, %bx} is equivalent to @samp{movw
-%ax, %bx}; also, @samp{mov $1, %bx} is equivalent to @samp{movw $1,
-%bx}. Note that this is incompatible with the AT&T Unix assembler which
-assumes that a missing mnemonic suffix implies long operand size. (This
-incompatibility does not affect compiler output since compilers always
-explicitly specify the mnemonic suffix.)
+specify the size of operands. The letters @samp{b}, @samp{w}, @samp{l}
+and @samp{q} specify byte, word, long and quadruple word operands. If
+no suffix is specified by an instruction then @code{@value{AS}} tries to
+fill in the missing suffix based on the destination register operand
+(the last one by convention). Thus, @samp{mov %ax, %bx} is equivalent
+to @samp{movw %ax, %bx}; also, @samp{mov $1, %bx} is equivalent to
+@samp{movw $1, bx}. Note that this is incompatible with the AT&T Unix
+assembler which assumes that a missing mnemonic suffix implies long
+operand size. (This incompatibility does not affect compiler output
+since compilers always explicitly specify the mnemonic suffix.)
Almost all instructions have the same names in AT&T and Intel format.
There are a few exceptions. The sign extend and zero extend
@@ -130,10 +193,14 @@ are tacked on to this base name, the @emph{from} suffix before the
@emph{to} suffix. Thus, @samp{movsbl %al, %edx} is AT&T syntax for
``move sign extend @emph{from} %al @emph{to} %edx.'' Possible suffixes,
thus, are @samp{bl} (from byte to long), @samp{bw} (from byte to word),
-and @samp{wl} (from word to long).
+@samp{wl} (from word to long), @samp{bq} (from byte to quadruple word),
+@samp{wq} (from word to quadruple word), and @samp{lq} (from long to
+quadruple word).
@cindex conversion instructions, i386
@cindex i386 conversion instructions
+@cindex conversion instructions, x86-64
+@cindex x86-64 conversion instructions
The Intel-syntax conversion instructions
@itemize @bullet
@@ -148,14 +215,25 @@ The Intel-syntax conversion instructions
@item
@samp{cdq} --- sign-extend dword in @samp{%eax} to quad in @samp{%edx:%eax},
+
+@item
+@samp{cdqe} --- sign-extend dword in @samp{%eax} to quad in @samp{%rax}
+(x86-64 only),
+
+@item
+@samp{cdo} --- sign-extend quad in @samp{%rax} to octuple in
+@samp{%rdx:%rax} (x86-64 only),
@end itemize
@noindent
-are called @samp{cbtw}, @samp{cwtl}, @samp{cwtd}, and @samp{cltd} in
-AT&T naming. @code{@value{AS}} accepts either naming for these instructions.
+are called @samp{cbtw}, @samp{cwtl}, @samp{cwtd}, @samp{cltd}, @samp{cltq}, and
+@samp{cqto} in AT&T naming. @code{@value{AS}} accepts either naming for these
+instructions.
@cindex jump instructions, i386
@cindex call instructions, i386
+@cindex jump instructions, x86-64
+@cindex call instructions, x86-64
Far call/jump instructions are @samp{lcall} and @samp{ljmp} in
AT&T syntax, but are @samp{call far} and @samp{jump far} in Intel
convention.
@@ -165,6 +243,8 @@ convention.
@cindex i386 registers
@cindex registers, i386
+@cindex x86-64 registers
+@cindex registers, x86-64
Register operands are always prefixed with @samp{%}. The 80386 registers
consist of
@@ -204,6 +284,44 @@ the 2 test registers @samp{%tr6} and @samp{%tr7}.
the 8 floating point register stack @samp{%st} or equivalently
@samp{%st(0)}, @samp{%st(1)}, @samp{%st(2)}, @samp{%st(3)},
@samp{%st(4)}, @samp{%st(5)}, @samp{%st(6)}, and @samp{%st(7)}.
+These registers are overloaded by 8 MMX registers @samp{%mm0},
+@samp{%mm1}, @samp{%mm2}, @samp{%mm3}, @samp{%mm4}, @samp{%mm5},
+@samp{%mm6} and @samp{%mm7}.
+
+@item
+the 8 SSE registers registers @samp{%xmm0}, @samp{%xmm1}, @samp{%xmm2},
+@samp{%xmm3}, @samp{%xmm4}, @samp{%xmm5}, @samp{%xmm6} and @samp{%xmm7}.
+@end itemize
+
+The AMD x86-64 architecture extends the register set by:
+
+@itemize @bullet
+@item
+enhancing the 8 32-bit registers to 64-bit: @samp{%rax} (the
+accumulator), @samp{%rbx}, @samp{%rcx}, @samp{%rdx}, @samp{%rdi},
+@samp{%rsi}, @samp{%rbp} (the frame pointer), @samp{%rsp} (the stack
+pointer)
+
+@item
+the 8 extended registers @samp{%r8}--@samp{%r15}.
+
+@item
+the 8 32-bit low ends of the extended registers: @samp{%r8d}--@samp{%r15d}
+
+@item
+the 8 16-bit low ends of the extended registers: @samp{%r8w}--@samp{%r15w}
+
+@item
+the 8 8-bit low ends of the extended registers: @samp{%r8b}--@samp{%r15b}
+
+@item
+the 4 8-bit registers: @samp{%sil}, @samp{%dil}, @samp{%bpl}, @samp{%spl}.
+
+@item
+the 8 debug registers: @samp{%db8}--@samp{%db15}.
+
+@item
+the 8 SSE registers: @samp{%xmm8}--@samp{%xmm15}.
@end itemize
@node i386-Prefixes
@@ -270,6 +388,20 @@ complete the current instruction. This should never be needed for the
The @samp{rep}, @samp{repe}, and @samp{repne} prefixes are added
to string instructions to make them repeat @samp{%ecx} times (@samp{%cx}
times if the current address size is 16-bits).
+@cindex REX prefixes, i386
+@item
+The @samp{rex} family of prefixes is used by x86-64 to encode
+extensions to i386 instruction set. The @samp{rex} prefix has four
+bits --- an operand size overwrite (@code{64}) used to change operand size
+from 32-bit to 64-bit and X, Y and Z extensions bits used to extend the
+register set.
+
+You may write the @samp{rex} prefixes directly. The @samp{rex64xyz}
+instruction emits @samp{rex} prefix with all the bits set. By omitting
+the @code{64}, @code{x}, @code{y} or @code{z} you may write other
+prefixes as well. Normally, there is no need to write the prefixes
+explicitly, since gas will automatically generate them based on the
+instruction operands.
@end itemize
@node i386-Memory
@@ -277,6 +409,8 @@ times if the current address size is 16-bits).
@cindex i386 memory references
@cindex memory references, i386
+@cindex x86-64 memory references
+@cindex memory references, x86-64
An Intel syntax indirect memory reference of the form
@smallexample
@@ -333,14 +467,34 @@ prefixed with @samp{*}. If no @samp{*} is specified, @code{@value{AS}}
always chooses PC relative addressing for jump/call labels.
Any instruction that has a memory operand, but no register operand,
-@emph{must} specify its size (byte, word, or long) with an instruction
-mnemonic suffix (@samp{b}, @samp{w}, or @samp{l}, respectively).
+@emph{must} specify its size (byte, word, long, or quadruple) with an
+instruction mnemonic suffix (@samp{b}, @samp{w}, @samp{l} or @samp{q},
+respectively).
+
+The x86-64 architecture adds an RIP (instruction pointer relative)
+addressing. This addressing mode is specified by using @samp{rip} as a
+base register. Only constant offsets are valid. For example:
+
+@table @asis
+@item AT&T: @samp{1234(%rip)}, Intel: @samp{[rip + 1234]}
+Points to the address 1234 bytes past the end of the current
+instruction.
+
+@item AT&T: @samp{symbol(%rip)}, Intel: @samp{[rip + symbol]}
+Points to the @code{symbol} in RIP relative way, this is shorter than
+the default absolute addressing.
+@end table
+
+Other addressing modes remain unchanged in x86-64 architecture, except
+registers used are 64-bit instead of 32-bit.
@node i386-jumps
@section Handling of Jump Instructions
@cindex jump optimization, i386
@cindex i386 jump optimization
+@cindex jump optimization, x86-64
+@cindex x86-64 jump optimization
Jump instructions are always optimized to use the smallest possible
displacements. This is accomplished by using byte (8-bit) displacement
jumps whenever the target is sufficiently close. If a byte displacement
@@ -369,6 +523,8 @@ cx_nonzero:
@cindex i386 floating point
@cindex floating point, i386
+@cindex x86-64 floating point
+@cindex floating point, x86-64
All 80387 floating point types except packed BCD are supported.
(BCD support may be added without much difficulty). These data
types are 16-, 32-, and 64- bit integers, and single (32-bit),
@@ -381,6 +537,10 @@ data type. Constructors build these data types into memory.
@cindex @code{single} directive, i386
@cindex @code{double} directive, i386
@cindex @code{tfloat} directive, i386
+@cindex @code{float} directive, x86-64
+@cindex @code{single} directive, x86-64
+@cindex @code{double} directive, x86-64
+@cindex @code{tfloat} directive, x86-64
@itemize @bullet
@item
Floating point constructors are @samp{.float} or @samp{.single},
@@ -394,6 +554,10 @@ top) and @samp{fstpt} (store 80-bit real and pop stack) instructions.
@cindex @code{long} directive, i386
@cindex @code{int} directive, i386
@cindex @code{quad} directive, i386
+@cindex @code{word} directive, x86-64
+@cindex @code{long} directive, x86-64
+@cindex @code{int} directive, x86-64
+@cindex @code{quad} directive, x86-64
@item
Integer constructors are @samp{.word}, @samp{.long} or @samp{.int}, and
@samp{.quad} for the 16-, 32-, and 64-bit integer formats. The
@@ -417,6 +581,9 @@ then stores the result in the 4 byte location @samp{mem})
@cindex MMX, i386
@cindex 3DNow!, i386
@cindex SIMD, i386
+@cindex MMX, x86-64
+@cindex 3DNow!, x86-64
+@cindex SIMD, x86-64
@code{@value{AS}} supports Intel's MMX instruction set (SIMD
instructions for integer data), available on Intel's Pentium MMX
@@ -446,7 +613,10 @@ instructions is reversed from the Intel syntax.
@cindex @code{code16gcc} directive, i386
@cindex @code{code16} directive, i386
@cindex @code{code32} directive, i386
-While @code{@value{AS}} normally writes only ``pure'' 32-bit i386 code,
+@cindex @code{code64} directive, i386
+@cindex @code{code64} directive, x86-64
+While @code{@value{AS}} normally writes only ``pure'' 32-bit i386 code
+or 64-bit x86-64 code depending on the default configuration,
it also supports writing code to run in real mode or in 16-bit protected
mode code segments. To do this, put a @samp{.code16} or
@samp{.code16gcc} directive before the assembly language instructions to
@@ -506,14 +676,44 @@ non-commutative arithmetic floating point operations with two register
operands where the source register is @samp{%st} and the destination
register is @samp{%st(i)}.
+@node i386-Arch
+@section Specifying CPU Architecture
+
+@cindex arch directive, i386
+@cindex i386 arch directive
+@cindex arch directive, x86-64
+@cindex x86-64 arch directive
+
+@code{@value{AS}} may be told to assemble for a particular CPU
+architecture with the @code{.arch @var{cpu_type}} directive. This
+directive enables a warning when gas detects an instruction that is not
+supported on the CPU specified. The choices for @var{cpu_type} are:
+
+@multitable @columnfractions .20 .20 .20 .20
+@item @samp{i8086} @tab @samp{i186} @tab @samp{i286} @tab @samp{i386}
+@item @samp{i486} @tab @samp{i586} @tab @samp{i686} @tab @samp{pentium}
+@item @samp{pentiumpro} @tab @samp{pentium4} @tab @samp{k6} @tab @samp{athlon}
+@item @samp{sledgehammer}
+@end multitable
+
+Apart from the warning, there is only one other effect on
+@code{@value{AS}} operation; If you specify a CPU other than
+@samp{i486}, then shift by one instructions such as @samp{sarl $1, %eax}
+will automatically use a two byte opcode sequence. The larger three
+byte opcode sequence is used on the 486 (and when no architecture is
+specified) because it executes faster on the 486. Note that you can
+explicitly request the two byte opcode by writing @samp{sarl %eax}.
+
@node i386-Notes
@section Notes
@cindex i386 @code{mul}, @code{imul} instructions
@cindex @code{mul} instruction, i386
@cindex @code{imul} instruction, i386
+@cindex @code{mul} instruction, x86-64
+@cindex @code{imul} instruction, x86-64
There is some trickery concerning the @samp{mul} and @samp{imul}
-instructions that deserves mention. The 16-, 32-, and 64-bit expanding
+instructions that deserves mention. The 16-, 32-, 64- and 128-bit expanding
multiplies (base opcode @samp{0xf6}; extension 4 for @samp{mul} and 5
for @samp{imul}) can be output only in the one operand form. Thus,
@samp{imul %ebx, %eax} does @emph{not} select the expanding multiply;
diff --git a/contrib/binutils/gas/doc/gasp.texi b/contrib/binutils/gas/doc/gasp.texi
index 64cd6f4..e023edc 100644
--- a/contrib/binutils/gas/doc/gasp.texi
+++ b/contrib/binutils/gas/doc/gasp.texi
@@ -3,10 +3,14 @@
@c
@c This file documents the assembly preprocessor "GASP"
@c
-@c Copyright (c) 1994 Free Software Foundation, Inc.
+@c Copyright (c) 1994, 2000 Free Software Foundation, Inc.
@c
-@c This text may be freely distributed under the terms of the GNU
-@c General Public License.
+@c Permission is granted to copy, distribute and/or modify this document
+@c under the terms of the GNU Free Documentation License, Version 1.1
+@c or any later version published by the Free Software Foundation;
+@c with no Invariant Sections, with no Front-Cover Texts, and with no
+@c Back-Cover Texts. A copy of the license is included in the
+@c section entitled "GNU Free Documentation License".
@ifinfo
@format
@@ -37,27 +41,19 @@ END-INFO-DIR-ENTRY
@end tex
@vskip 0pt plus 1filll
-Copyright @copyright{} 1994, 1995 Free Software Foundation, Inc.
+Copyright @copyright{} 1994, 1995, 2000 Free Software Foundation, Inc.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+ Permission is granted to copy, 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".
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
@end titlepage
@ifinfo
-Copyright @copyright{} 1994, 1995 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+Copyright @copyright{} 1994, 1995, 2000 Free Software Foundation, Inc.
@ignore
Permission is granted to process this file through TeX and print the
@@ -66,13 +62,13 @@ notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).
@end ignore
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
+ 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".
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
@node Top
@top GASP
@@ -87,6 +83,7 @@ Steve Chamberlain wrote GASP; Roland Pesch wrote this manual.
* Overview:: What is GASP?
* Invoking GASP:: Command line options.
* Commands:: Preprocessor commands.
+* GNU Free Documentation License:: GNU Free Documentation License
* Index:: Index.
@end menu
@end ifinfo
@@ -1077,6 +1074,369 @@ You can write @samp{%@var{expr}} to evaluate the expression @var{expr}
and use the result as a string.
@end table
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+
+ GNU Free Documentation License
+
+ Version 1.1, March 2000
+
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+written document "free" in the sense of freedom: to assure everyone
+the effective freedom to copy and redistribute it, with or without
+modifying it, either commercially or noncommercially. Secondarily,
+this License preserves for the author and publisher a way to get
+credit for their work, while not being considered responsible for
+modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a
+notice placed by the copyright holder saying it can be distributed
+under the terms of this License. The "Document", below, refers to any
+such manual or work. Any member of the public is a licensee, and is
+addressed as "you".
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (For example, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, whose contents can be viewed and edited directly and
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup has been designed to thwart or discourage
+subsequent modification by readers is not Transparent. A copy that is
+not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML designed for human modification. Opaque formats include
+PostScript, PDF, proprietary formats that can be read and edited only
+by proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML produced by some word processors for output
+purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100,
+and the Document's license notice requires Cover Texts, you must enclose
+the copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a publicly-accessible computer-network location containing a complete
+Transparent copy of the Document, free of added material, which the
+general network-using public has access to download anonymously at no
+charge using public-standard network protocols. If you use the latter
+option, you must take reasonably prudent steps, when you begin
+distribution of Opaque copies in quantity, to ensure that this
+Transparent copy will remain thus accessible at the stated location
+until at least one year after the last time you distribute an Opaque
+copy (directly or through your agents or retailers) of that edition to
+the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has less than five).
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section entitled "History", and its title, and add to
+ it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. In any section entitled "Acknowledgements" or "Dedications",
+ preserve the section's title, and preserve in the section all the
+ substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section as "Endorsements"
+ or to conflict in title with any Invariant Section.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled "History"
+in the various original documents, forming one section entitled
+"History"; likewise combine any sections entitled "Acknowledgements",
+and any sections entitled "Dedications". You must delete all sections
+entitled "Endorsements."
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, does not as a whole count as a Modified Version
+of the Document, provided no compilation copyright is claimed for the
+compilation. Such a compilation is called an "aggregate", and this
+License does not apply to the other self-contained works thus compiled
+with the Document, on account of their being thus compiled, if they
+are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one quarter
+of the entire aggregate, the Document's Cover Texts may be placed on
+covers that surround only the Document within the aggregate.
+Otherwise they must appear on covers around the whole aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License provided that you also include the
+original English version of this License. In case of a disagreement
+between the translation and the original English version of this
+License, the original English version will prevail.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1
+ or any later version published by the Free Software Foundation;
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+@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 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.
+
@node Index
@unnumbered Index
diff --git a/contrib/binutils/gas/doc/internals.texi b/contrib/binutils/gas/doc/internals.texi
index 8453c48..a42bc0f 100644
--- a/contrib/binutils/gas/doc/internals.texi
+++ b/contrib/binutils/gas/doc/internals.texi
@@ -8,8 +8,7 @@
This chapter describes the internals of the assembler. It is incomplete, but
it may help a bit.
-This chapter was last modified on $Date: 2000/03/26 14:47:33 $. It is not updated regularly, and it
-may be out of date.
+This chapter is not updated regularly, and it may be out of date.
@menu
* GAS versions:: GAS versions
@@ -464,7 +463,7 @@ the other fields; see the definition in @file{expr.h} for the possibilities.
An @code{operatorT} value of @code{O_big} indicates either a floating point
number, stored in the global variable @code{generic_floating_point_number}, or
-an integer to large to store in an @code{offsetT} type, stored in the global
+an integer too large to store in an @code{offsetT} type, stored in the global
array @code{generic_bignum}. This rather inflexible approach makes it
impossible to use floating point numbers or large expressions in complex
expressions.
@@ -645,7 +644,7 @@ The variable characters are to be repeated @code{fr_offset} times. If
have this type.
@item rs_leb128
-This state is used to implement the DWARF ``little endian base 128''
+This state is used to implement the DWARF ``little endian base 128''
variable length number format. The @code{fr_symbol} is always an expression
symbol, as constant expressions are emitted directly. The @code{fr_offset}
field is used during relaxation to hold the previous size of the number so
@@ -774,6 +773,12 @@ variable. Normally the default value of @samp{generic} is fine. The
configuration process will create a file named @file{targ-env.h} in the build
directory which includes @file{te-@var{em}.h}.
+There is a special case for COFF. For historical reason, the GNU COFF
+assembler doesn't follow the documented behavior on certain debug symbols for
+the compatibility with other COFF assemblers. A port can define
+@code{STRICTCOFF} in the configure script to make the GNU COFF assembler
+to follow the documented behavior.
+
Porting GAS to a new CPU requires writing the @file{tc-@var{CPU}} files.
Porting GAS to a new object file format requires writing the
@file{obj-@var{fmt}} files. There is sometimes some interaction between these
@@ -884,7 +889,7 @@ pseudo-ops which are specific to the CPU.
If this macro is defined, GAS will call it with a @code{pseudo_typeS} argument.
It should return non-zero if the pseudo-op is a conditional which controls
whether code is assembled, such as @samp{.if}. GAS knows about the normal
-conditional pseudo-ops,and you should normally not have to define this macro.
+conditional pseudo-ops, and you should normally not have to define this macro.
@item comment_chars
@cindex comment_chars
@@ -913,7 +918,7 @@ comment when they appear at the start of a line.
@item line_separator_chars
@cindex line_separator_chars
This is a null terminated @code{const char} array of characters which separate
-lines (semicolon and newline are such characters by default, and need not be
+lines (null and newline are such characters by default, and need not be
listed in this array). Note that line_separator_chars do not separate lines
if found in a comment, such as after a character in line_comment_chars or
comment_chars.
@@ -965,7 +970,7 @@ default value is @code{LEX_NAME | LEX_BEGIN_NAME}.
@item NUMBERS_WITH_SUFFIX
@cindex NUMBERS_WITH_SUFFIX
When this macro is defined to be non-zero, the parser allows the radix of a
-constant to be indicated with a suffix. Valid suffixes are binary (B),
+constant to be indicated with a suffix. Valid suffixes are binary (B),
octal (Q), and hexadecimal (H). Case is not significant.
@item SINGLE_QUOTE_STRINGS
@@ -992,6 +997,7 @@ If you define this macro, GAS will assume that any text at the start of a line
is a label, even if it does not have a colon.
@item TC_START_LABEL
+@itemx TC_START_LABEL_WITHOUT_COLON
@cindex TC_START_LABEL
You may define this macro to control what GAS considers to be a label. The
default definition is to accept any name followed by a colon character.
@@ -999,7 +1005,7 @@ default definition is to accept any name followed by a colon character.
@item TC_START_LABEL_WITHOUT_COLON
@cindex TC_START_LABEL_WITHOUT_COLON
Same as TC_START_LABEL, but should be used instead of TC_START_LABEL when
-LABELS_WITHOUT_COLONS is defined.
+LABELS_WITHOUT_COLONS is defined.
@item NO_PSEUDO_DOT
@cindex NO_PSEUDO_DOT
@@ -1133,11 +1139,13 @@ relocation entry.
@itemx md_long_jump_size
@itemx md_create_short_jump
@itemx md_create_long_jump
+@itemx TC_CHECK_ADJUSTED_BROKEN_DOT_WORD
@cindex WORKING_DOT_WORD
@cindex md_short_jump_size
@cindex md_long_jump_size
@cindex md_create_short_jump
@cindex md_create_long_jump
+@cindex TC_CHECK_ADJUSTED_BROKEN_DOT_WORD
If @code{WORKING_DOT_WORD} is defined, GAS will not do broken word processing
(@pxref{Broken words}). Otherwise, you should set @code{md_short_jump_size} to
the size of a short jump (a jump that is just long enough to jump around a
@@ -1145,6 +1153,10 @@ number of long jumps) and @code{md_long_jump_size} to the size of a long jump
(a jump that can go anywhere in the function). You should define
@code{md_create_short_jump} to create a short jump around a number of long
jumps, and define @code{md_create_long_jump} to create a long jump.
+If defined, the macro TC_CHECK_ADJUSTED_BROKEN_DOT_WORD will be called for each
+adjusted word just before the word is output. The macro takes two arguments,
+an @code{addressT} with the adjusted word and a pointer to the current
+@code{struct broken_word}.
@item md_estimate_size_before_relax
@cindex md_estimate_size_before_relax
@@ -1177,6 +1189,15 @@ If you define this macro, and the global variable @samp{linkrelax} is set
@samp{.align} directive will cause extra space to be allocated. The linker can
then discard this space when relaxing the section.
+@item TC_LINKRELAX_FIXUP (@var{segT})
+@cindex TC_LINKRELAX_FIXUP
+If defined, this macro allows control over whether fixups for a
+given section will be processed when the @var{linkrelax} variable is
+set. The macro is given the N_TYPE bits for the section in its
+@var{segT} argument. If the macro evaluates to a non-zero value
+then the fixups will be converted into relocs, otherwise they will
+be passed to @var{md_apply_fix3} as normal.
+
@item md_convert_frag
@cindex md_convert_frag
GAS will call this for each rs_machine_dependent fragment.
@@ -1251,7 +1272,7 @@ size.
@cindex md_macro_start
If defined, GAS will call this macro when it starts to include a macro
expansion. @code{macro_nest} indicates the current macro nesting level, which
-includes the one being expanded.
+includes the one being expanded.
@item md_macro_info
@cindex md_macro_info
@@ -1263,7 +1284,7 @@ macro (macro_entry *), which includes expansion of the formal arguments.
@item md_macro_end
@cindex md_macro_end
Complement to md_macro_start. If defined, it is called when finished
-processing an inserted macro expansion, just before decrementing macro_nest.
+processing an inserted macro expansion, just before decrementing macro_nest.
@item DOUBLEBAR_PARALLEL
@cindex DOUBLEBAR_PARALLEL
@@ -1332,6 +1353,13 @@ source line. The default value is 4.
@item LISTING_RHS_WIDTH
The maximum number of characters to print from one line of the input file. The
default value is 100.
+
+@item TC_COFF_SECTION_DEFAULT_ATTRIBUTES
+@cindex TC_COFF_SECTION_DEFAULT_ATTRIBUTES
+The COFF @code{.section} directive will use the value of this macro to set
+a new section's attributes when a directive has no valid flags or when the
+flag is @code{w}. The default value of the macro is @code{SEC_LOAD | SEC_DATA}.
+
@end table
@node Object format backend
@@ -1400,8 +1428,8 @@ generate a @code{.file} symbol if none was generated previously.
@item SEPARATE_STAB_SECTIONS
@cindex SEPARATE_STAB_SECTIONS
-You may define this macro to indicate that stabs should be placed in separate
-sections, as in ELF.
+You may define this macro to a nonzero value to indicate that stabs should be
+placed in separate sections, as in ELF.
@item INIT_STAB_SECTION
@cindex INIT_STAB_SECTION
@@ -1573,6 +1601,16 @@ called to convert the frag to an @code{rs_fill} frag with no variant part.
Sometimes changing addressing modes may also require rewriting the instruction.
It can be accessed via @code{fr_opcode} or @code{fr_fix}.
+If you generate frags separately for the basic insn opcode and any relaxable
+operands, do not call @code{fix_new} thinking you can emit fixups for the
+opcode field from the relaxable frag. It is not garanteed to be the same frag.
+If you need to emit fixups for the opcode field from inspection of the
+relaxable frag, then you need to generate a common frag for both the basic
+opcode and relaxable fields, or you need to provide the frag for the opcode to
+pass to @code{fix_new}. The latter can be done for example by defining
+@code{TC_FRAG_TYPE} to include a pointer to it and defining @code{TC_FRAG_INIT}
+to set the pointer.
+
Sometimes @code{fr_var} is increased instead, and @code{frag_wane} is not
called. I'm not sure, but I think this is to keep @code{fr_fix} referring to
an earlier byte, and @code{fr_subtype} set to @code{rs_machine_dependent} so
diff --git a/contrib/binutils/gas/dwarf2dbg.c b/contrib/binutils/gas/dwarf2dbg.c
index b83175a..e44574d 100644
--- a/contrib/binutils/gas/dwarf2dbg.c
+++ b/contrib/binutils/gas/dwarf2dbg.c
@@ -28,8 +28,21 @@
FILENO is the filenumber. */
#include "ansidecl.h"
-
#include "as.h"
+
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#else
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifndef INT_MAX
+#define INT_MAX (int) (((unsigned) (-1)) >> 1)
+#endif
+#endif
+
+#ifdef BFD_ASSEMBLER
+
#include "dwarf2dbg.h"
#include "subsegs.h"
@@ -63,7 +76,7 @@
#ifndef DWARF2_LINE_MIN_INSN_LENGTH
/* Define the architecture-dependent minimum instruction length (in
bytes). This value should be rather too small than too big. */
-# define DWARF2_LINE_MIN_INSN_LENGTH 4
+# define DWARF2_LINE_MIN_INSN_LENGTH 1
#endif
/* Flag that indicates the initial value of the is_stmt_start flag.
@@ -72,12 +85,6 @@
is not made available by the GCC front-end. */
#define DWARF2_LINE_DEFAULT_IS_STMT 1
-/* Flag that indicates the initial value of the is_stmt_start flag.
- In the present implementation, we do not mark any lines as
- the beginning of a source statement, because that information
- is not made available by the GCC front-end. */
-#define DWARF2_LINE_DEFAULT_IS_STMT 1
-
/* Given a special op, return the line skip amount. */
#define SPECIAL_LINE(op) \
(((op) - DWARF2_LINE_OPCODE_BASE)%DWARF2_LINE_RANGE + DWARF2_LINE_BASE)
@@ -89,682 +96,1213 @@
/* The maximum address skip amount that can be encoded with a special op. */
#define MAX_SPECIAL_ADDR_DELTA SPECIAL_ADDR(255)
-#define INITIAL_STATE \
- /* Initialize as per DWARF2.0 standard. */ \
- 0, /* address */ \
- 1, /* file */ \
- 1, /* line */ \
- 0, /* column */ \
- DWARF2_LINE_DEFAULT_IS_STMT, /* is_stmt */ \
- 0, /* basic_block */ \
- 1 /* empty_sequence */
-
-static struct
- {
- /* state machine state as per DWARF2 manual: */
- struct dwarf2_sm
- {
- addressT addr;
- unsigned int filenum;
- unsigned int line;
- unsigned int column;
- unsigned int
- is_stmt : 1,
- basic_block : 1,
- empty_sequence : 1; /* current code sequence has no DWARF2 directives? */
- }
- sm;
-
- unsigned int
- any_dwarf2_directives : 1; /* did we emit any DWARF2 line debug directives? */
-
- fragS * frag; /* frag that "addr" is relative to */
- segT text_seg; /* text segment "addr" is relative to */
- subsegT text_subseg;
- segT line_seg; /* ".debug_line" segment */
- int last_filename; /* index of last filename that was used */
- int num_filenames; /* index of last filename in use */
- int filename_len; /* length of the filename array */
- struct
- {
- int dir; /* valid after gen_dir_list() only */
- char *name; /* full path before gen_dir_list(), filename afterwards */
- }
- *file;
+struct line_entry {
+ struct line_entry *next;
+ fragS *frag;
+ addressT frag_ofs;
+ struct dwarf2_line_info loc;
+};
+
+struct line_subseg {
+ struct line_subseg *next;
+ subsegT subseg;
+ struct line_entry *head;
+ struct line_entry **ptail;
+};
+
+struct line_seg {
+ struct line_seg *next;
+ segT seg;
+ struct line_subseg *head;
+ symbolS *text_start;
+ symbolS *text_end;
+};
+
+/* Collects data for all line table entries during assembly. */
+static struct line_seg *all_segs;
+
+struct file_entry {
+ char *filename;
+ unsigned int dir;
+};
+
+/* Table of files used by .debug_line. */
+static struct file_entry *files;
+static unsigned int files_in_use;
+static unsigned int files_allocated;
+
+/* True when we've seen a .loc directive recently. Used to avoid
+ doing work when there's nothing to do. */
+static boolean loc_directive_seen;
+
+/* Current location as indicated by the most recent .loc directive. */
+static struct dwarf2_line_info current;
+
+/* Fake label name. */
+static char const fake_label_name[] = ".L0\001";
+
+/* The size of an address on the target. */
+static unsigned int sizeof_address;
+
+static struct line_subseg *get_line_subseg PARAMS ((segT, subsegT));
+static unsigned int get_filenum PARAMS ((const char *));
+static struct frag *first_frag_for_seg PARAMS ((segT));
+static struct frag *last_frag_for_seg PARAMS ((segT));
+static void out_byte PARAMS ((int));
+static void out_opcode PARAMS ((int));
+static void out_two PARAMS ((int));
+static void out_four PARAMS ((int));
+static void out_abbrev PARAMS ((int, int));
+static void out_uleb128 PARAMS ((addressT));
+static symbolS *symbol_new_now PARAMS ((void));
+static void set_symbol_value_now PARAMS ((symbolS *));
+static offsetT get_frag_fix PARAMS ((fragS *));
+static void out_set_addr PARAMS ((segT, fragS *, addressT));
+static int size_inc_line_addr PARAMS ((int, addressT));
+static void emit_inc_line_addr PARAMS ((int, addressT, char *, int));
+static void out_inc_line_addr PARAMS ((int, addressT));
+static void relax_inc_line_addr PARAMS ((int, segT, fragS *, addressT,
+ fragS *, addressT));
+static void process_entries PARAMS ((segT, struct line_entry *));
+static void out_file_list PARAMS ((void));
+static void out_debug_line PARAMS ((segT));
+static void out_debug_aranges PARAMS ((segT, segT));
+static void out_debug_abbrev PARAMS ((segT));
+static void out_debug_info PARAMS ((segT, segT, segT));
+
+/* Find or create an entry for SEG+SUBSEG in ALL_SEGS. */
+
+static struct line_subseg *
+get_line_subseg (seg, subseg)
+ segT seg;
+ subsegT subseg;
+{
+ static segT last_seg;
+ static subsegT last_subseg;
+ static struct line_subseg *last_line_subseg;
- struct dwarf2_line_info current; /* current source info: */
+ struct line_seg *s;
+ struct line_subseg **pss, *ss;
- /* counters for statistical purposes: */
- unsigned int num_line_entries;
- unsigned int opcode_hist[256]; /* histogram of opcode frequencies */
- }
-ls =
- {
- {
- INITIAL_STATE
- },
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- NULL,
- { NULL, 0, 0, 0, 0 },
- 0,
+ if (seg == last_seg && subseg == last_subseg)
+ return last_line_subseg;
+
+ for (s = all_segs; s; s = s->next)
+ if (s->seg == seg)
+ goto found_seg;
+
+ s = (struct line_seg *) xmalloc (sizeof (*s));
+ s->next = all_segs;
+ s->seg = seg;
+ s->head = NULL;
+ all_segs = s;
+
+ found_seg:
+ for (pss = &s->head; (ss = *pss) != NULL ; pss = &ss->next)
{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ if (ss->subseg == subseg)
+ goto found_subseg;
+ if (ss->subseg > subseg)
+ break;
}
- };
+ ss = (struct line_subseg *) xmalloc (sizeof (*ss));
+ ss->next = *pss;
+ ss->subseg = subseg;
+ ss->head = NULL;
+ ss->ptail = &ss->head;
+ *pss = ss;
-/* Function prototypes: */
-static void out_uleb128 PARAMS ((addressT));
-static void out_sleb128 PARAMS ((offsetT));
-static void gen_addr_line PARAMS ((int, addressT));
-static void reset_state_machine PARAMS ((void));
-static void out_set_addr PARAMS ((addressT));
-static void out_end_sequence PARAMS ((void));
-static int get_filenum PARAMS ((int, char *));
-static void gen_dir_list PARAMS ((void));
-static void gen_file_list PARAMS ((void));
-static void print_stats PARAMS ((unsigned long));
+ found_subseg:
+ last_seg = seg;
+ last_subseg = subseg;
+ last_line_subseg = ss;
+ return ss;
+}
-#define out_byte(byte) FRAG_APPEND_1_CHAR(byte)
-#define out_opcode(opc) (out_byte ((opc)), ++ls.opcode_hist[(opc) & 0xff])
+/* Record an entry for LOC ocurring at OFS within the current fragment. */
-/* Output an unsigned "little-endian base 128" number. */
-static void
-out_uleb128 (value)
- addressT value;
+void
+dwarf2_gen_line_info (ofs, loc)
+ addressT ofs;
+ struct dwarf2_line_info *loc;
{
- unsigned char byte, more = 0x80;
+ struct line_subseg *ss;
+ struct line_entry *e;
+
+ /* Early out for as-yet incomplete location information. */
+ if (loc->filenum == 0 || loc->line == 0)
+ return;
- do
+ e = (struct line_entry *) xmalloc (sizeof (*e));
+ e->next = NULL;
+ e->frag = frag_now;
+ e->frag_ofs = ofs;
+ e->loc = *loc;
+
+ ss = get_line_subseg (now_seg, now_subseg);
+ *ss->ptail = e;
+ ss->ptail = &e->next;
+}
+
+void
+dwarf2_where (line)
+ struct dwarf2_line_info *line;
+{
+ if (debug_type == DEBUG_DWARF2)
{
- byte = value & 0x7f;
- value >>= 7;
- if (value == 0)
- more = 0;
- out_byte (more | byte);
+ char *filename;
+ as_where (&filename, &line->line);
+ line->filenum = get_filenum (filename);
+ line->column = 0;
+ line->flags = DWARF2_FLAG_BEGIN_STMT;
}
- while (more);
+ else
+ *line = current;
}
-/* Output a signed "little-endian base 128" number. */
-static void
-out_sleb128 (value)
- offsetT value;
+/* Called for each machine instruction, or relatively atomic group of
+ machine instructions (ie built-in macro). The instruction or group
+ is SIZE bytes in length. If dwarf2 line number generation is called
+ for, emit a line statement appropriately. */
+
+void
+dwarf2_emit_insn (size)
+ int size;
{
- unsigned char byte, more = 0x80;
+ struct dwarf2_line_info loc;
+
+ if (debug_type != DEBUG_DWARF2 && ! loc_directive_seen)
+ return;
+ loc_directive_seen = false;
+
+ dwarf2_where (&loc);
+ dwarf2_gen_line_info (frag_now_fix () - size, &loc);
+}
+
+/* Get a .debug_line file number for FILENAME. */
- do
+static unsigned int
+get_filenum (filename)
+ const char *filename;
+{
+ static unsigned int last_used;
+ unsigned int i;
+
+ if (last_used)
+ if (strcmp (filename, files[last_used].filename) == 0)
+ return last_used;
+
+ for (i = 1; i < files_in_use; ++i)
+ if (strcmp (filename, files[i].filename) == 0)
+ return i;
+
+ if (i >= files_allocated)
{
- byte = value & 0x7f;
- value >>= 7;
- if (((value == 0) && ((byte & 0x40) == 0))
- || ((value == -1) && ((byte & 0x40) != 0)))
- more = 0;
- out_byte (more | byte);
+ unsigned int old = files_allocated;
+
+ files_allocated = i + 32;
+ files = (struct file_entry *)
+ xrealloc (files, (i + 32) * sizeof (struct file_entry));
+
+ memset (files + old, 0, (i + 32 - old) * sizeof (struct file_entry));
}
- while (more);
+
+ files[i].filename = xstrdup (filename);
+ files[i].dir = 0;
+ files_in_use = i + 1;
+ last_used = i;
+
+ return i;
}
-/* Encode a pair of line and address skips as efficiently as possible.
- Note that the line skip is signed, whereas the address skip is
- unsigned. */
-static void
-gen_addr_line (line_delta, addr_delta)
- int line_delta;
- addressT addr_delta;
-{
- unsigned int tmp, opcode;
+/* Handle the .file directive. */
- tmp = line_delta - DWARF2_LINE_BASE;
+void
+dwarf2_directive_file (dummy)
+ int dummy ATTRIBUTE_UNUSED;
+{
+ offsetT num;
+ const char *filename;
+ int filename_len;
- if (tmp >= DWARF2_LINE_RANGE)
+ /* Continue to accept a bare string and pass it off. */
+ SKIP_WHITESPACE ();
+ if (*input_line_pointer == '"')
{
- out_opcode (DW_LNS_advance_line);
- out_sleb128 (line_delta);
- tmp = 0 - DWARF2_LINE_BASE;
- line_delta = 0;
+ s_app_file (0);
+ return;
}
- tmp += DWARF2_LINE_OPCODE_BASE;
+ num = get_absolute_expression ();
+ filename = demand_copy_C_string (&filename_len);
+ demand_empty_rest_of_line ();
- /* try using a special opcode: */
- opcode = tmp + addr_delta*DWARF2_LINE_RANGE;
- if (opcode <= 255)
+ if (num < 1)
{
- out_opcode (opcode);
+ as_bad (_("File number less than one"));
return;
}
- /* try using DW_LNS_const_add_pc followed by special op: */
- opcode = tmp + (addr_delta - MAX_SPECIAL_ADDR_DELTA)*DWARF2_LINE_RANGE;
- if (opcode <= 255)
+ if (num < files_in_use && files[num].filename != 0)
{
- out_opcode (DW_LNS_const_add_pc);
- out_opcode (opcode);
+ as_bad (_("File number %d already allocated"), num);
return;
}
- out_opcode (DW_LNS_advance_pc);
- out_uleb128 (addr_delta);
+ if (num >= (int) files_allocated)
+ {
+ unsigned int old = files_allocated;
- if (line_delta)
- out_opcode (tmp); /* output line-delta */
- else
- out_opcode (DW_LNS_copy); /* append new row with current info */
+ files_allocated = num + 16;
+ files = (struct file_entry *)
+ xrealloc (files, (num + 16) * sizeof (struct file_entry));
+
+ /* Zero the new memory. */
+ memset (files + old, 0, (num + 16 - old) * sizeof (struct file_entry));
+ }
+
+ files[num].filename = filename;
+ files[num].dir = 0;
+ files_in_use = num + 1;
}
-static void
-reset_state_machine ()
+void
+dwarf2_directive_loc (dummy)
+ int dummy ATTRIBUTE_UNUSED;
{
- static const struct dwarf2_sm initial_state = { INITIAL_STATE };
+ offsetT filenum, line, column;
+
+ filenum = get_absolute_expression ();
+ SKIP_WHITESPACE ();
+ line = get_absolute_expression ();
+ SKIP_WHITESPACE ();
+ column = get_absolute_expression ();
+ demand_empty_rest_of_line ();
+
+ if (filenum < 1)
+ {
+ as_bad (_("File number less than one"));
+ return;
+ }
+ if (filenum >= (int) files_in_use || files[filenum].filename == 0)
+ {
+ as_bad (_("Unassigned file number %ld"), (long) filenum);
+ return;
+ }
+
+ current.filenum = filenum;
+ current.line = line;
+ current.column = column;
+ current.flags = DWARF2_FLAG_BEGIN_STMT;
- ls.sm = initial_state;
+ loc_directive_seen = true;
+
+#ifndef NO_LISTING
+ if (listing)
+ listing_source_line (line);
+#endif
}
+
+static struct frag *
+first_frag_for_seg (seg)
+ segT seg;
+{
+ frchainS *f, *first = NULL;
-/* Set an absolute address (may results in a relocation entry): */
-static void
-out_set_addr (addr)
- addressT addr;
+ for (f = frchain_root; f; f = f->frch_next)
+ if (f->frch_seg == seg
+ && (! first || first->frch_subseg > f->frch_subseg))
+ first = f;
+
+ return first ? first->frch_root : NULL;
+}
+
+static struct frag *
+last_frag_for_seg (seg)
+ segT seg;
{
- subsegT saved_subseg;
- segT saved_seg;
- expressionS expr;
- symbolS *sym;
- int bytes_per_address;
+ frchainS *f, *last = NULL;
- saved_seg = now_seg;
- saved_subseg = now_subseg;
+ for (f = frchain_root; f; f = f->frch_next)
+ if (f->frch_seg == seg
+ && (! last || last->frch_subseg < f->frch_subseg))
+ last= f;
- subseg_set (ls.text_seg, ls.text_subseg);
- sym = symbol_new (".L0\001", now_seg, addr, frag_now);
+ return last ? last->frch_last : NULL;
+}
+
+/* Emit a single byte into the current segment. */
- subseg_set (saved_seg, saved_subseg);
+static inline void
+out_byte (byte)
+ int byte;
+{
+ FRAG_APPEND_1_CHAR (byte);
+}
-#ifdef BFD_ASSEMBLER
- bytes_per_address = bfd_arch_bits_per_address (stdoutput) / 8;
-#else
- /* FIXME. */
- bytes_per_address = 4;
-#endif
+/* Emit a statement program opcode into the current segment. */
- out_opcode (DW_LNS_extended_op);
- out_uleb128 (bytes_per_address + 1);
+static inline void
+out_opcode (opc)
+ int opc;
+{
+ out_byte (opc);
+}
- out_opcode (DW_LNE_set_address);
- expr.X_op = O_symbol;
- expr.X_add_symbol = sym;
- expr.X_add_number = 0;
- emit_expr (&expr, bytes_per_address);
+/* Emit a two-byte word into the current segment. */
+
+static inline void
+out_two (data)
+ int data;
+{
+ md_number_to_chars (frag_more (2), data, 2);
}
-/* Emit DW_LNS_end_sequence and reset state machine. Does not
- preserve the current segment/sub-segment! */
+/* Emit a four byte word into the current segment. */
+
+static inline void
+out_four (data)
+ int data;
+{
+ md_number_to_chars (frag_more (4), data, 4);
+}
+
+/* Emit an unsigned "little-endian base 128" number. */
+
static void
-out_end_sequence ()
+out_uleb128 (value)
+ addressT value;
{
- addressT addr, delta;
- fragS *text_frag;
+ output_leb128 (frag_more (sizeof_leb128 (value, 0)), value, 0);
+}
- if (ls.text_seg)
- {
- subseg_set (ls.text_seg, ls.text_subseg);
-#ifdef md_current_text_addr
- addr = md_current_text_addr ();
-#else
- addr = frag_now_fix ();
-#endif
- text_frag = frag_now;
- subseg_set (ls.line_seg, DL_BODY);
- if (text_frag != ls.frag)
- {
- out_set_addr (addr);
- ls.sm.addr = addr;
- ls.frag = text_frag;
- }
- else
- {
- delta = (addr - ls.sm.addr) / DWARF2_LINE_MIN_INSN_LENGTH;
- if (delta > 0)
- {
- /* Advance address without updating the line-debug
- matrix---the end_sequence entry is used only to tell
- the debugger the end of the sequence.*/
- out_opcode (DW_LNS_advance_pc);
- out_uleb128 (delta);
- }
- }
- }
- else
- subseg_set (ls.line_seg, DL_BODY);
+/* Emit a tuple for .debug_abbrev. */
- out_opcode (DW_LNS_extended_op);
- out_uleb128 (1);
- out_byte (DW_LNE_end_sequence);
+static inline void
+out_abbrev (name, form)
+ int name, form;
+{
+ out_uleb128 (name);
+ out_uleb128 (form);
+}
- reset_state_machine ();
+/* Create a new fake symbol whose value is the current position. */
+
+static symbolS *
+symbol_new_now ()
+{
+ return symbol_new (fake_label_name, now_seg, frag_now_fix (), frag_now);
}
-/* Look up a filenumber either by filename or by filenumber. If both
- a filenumber and a filename are specified, lookup by filename takes
- precedence. If the filename cannot be found, it is added to the
- filetable and the filenumber for the new entry is returned. */
-static int
-get_filenum (filenum, file)
- int filenum;
- char *file;
+/* Set the value of SYM to the current position in the current segment. */
+
+static void
+set_symbol_value_now (sym)
+ symbolS *sym;
{
- int i, last = filenum - 1;
- char char0 = file[0];
+ S_SET_SEGMENT (sym, now_seg);
+ S_SET_VALUE (sym, frag_now_fix ());
+ symbol_set_frag (sym, frag_now);
+}
- /* If filenum is out of range of the filename table, then try using the
- table entry returned from the previous call. */
- if (last >= ls.num_filenames || last < 0)
- last = ls.last_filename;
+/* Get the size of a fragment. */
- /* Do a quick check against the specified or previously used filenum. */
- if (ls.num_filenames > 0 && ls.file[last].name[0] == char0
- && strcmp (ls.file[last].name + 1, file + 1) == 0)
- return last + 1;
+static offsetT
+get_frag_fix (frag)
+ fragS *frag;
+{
+ frchainS *fr;
- /* no match, fall back to simple linear scan: */
- for (i = 0; i < ls.num_filenames; ++i)
- {
- if (ls.file[i].name[0] == char0
- && strcmp (ls.file[i].name + 1, file + 1) == 0)
- {
- ls.last_filename = i;
- return i + 1;
- }
- }
+ if (frag->fr_next)
+ return frag->fr_fix;
- /* no match: enter new filename */
- if (ls.num_filenames >= ls.filename_len)
- {
- ls.filename_len += 13;
- ls.file = xrealloc (ls.file, ls.filename_len * sizeof (ls.file[0]));
- }
- ls.file[ls.num_filenames].dir = 0;
- ls.file[ls.num_filenames].name = file;
- ls.last_filename = ls.num_filenames;
- return ++ls.num_filenames;
+ /* If a fragment is the last in the chain, special measures must be
+ taken to find its size before relaxation, since it may be pending
+ on some subsegment chain. */
+ for (fr = frchain_root; fr; fr = fr->frch_next)
+ if (fr->frch_last == frag)
+ {
+ return ((char *) obstack_next_free (&fr->frch_obstack)
+ - frag->fr_literal);
+ }
+
+ abort ();
}
-/* Emit an entry in the line number table if the address or line has changed.
- ADDR is relative to the current frag in the text section. */
+/* Set an absolute address (may result in a relocation entry). */
-void
-dwarf2_gen_line_info (addr, l)
- addressT addr;
- struct dwarf2_line_info *l;
+static void
+out_set_addr (seg, frag, ofs)
+ segT seg;
+ fragS *frag;
+ addressT ofs;
{
- unsigned int filenum = l->filenum;
- unsigned int any_output = 0;
- subsegT saved_subseg;
- segT saved_seg;
- fragS *saved_frag;
+ expressionS expr;
+ symbolS *sym;
- if (flag_debug)
- fprintf (stderr, "line: addr %lx file `%s' line %u col %u flags %x\n",
- (unsigned long) addr, l->filename, l->line, l->column, l->flags);
+ sym = symbol_new (fake_label_name, seg, ofs, frag);
- if (filenum > 0 && !l->filename)
- {
- if (filenum >= (unsigned int) ls.num_filenames)
- {
- as_warn ("Encountered bad file number in line number debug info!");
- return;
- }
- }
- else if (l->filename)
- filenum = get_filenum (filenum, l->filename);
- else
- return; /* no filename, no filnum => no play */
+ out_opcode (DW_LNS_extended_op);
+ out_uleb128 (sizeof_address + 1);
- /* Must save these before the subseg_new call, as that call will change
- them. */
- saved_seg = now_seg;
- saved_subseg = now_subseg;
- saved_frag = frag_now;
+ out_opcode (DW_LNE_set_address);
+ expr.X_op = O_symbol;
+ expr.X_add_symbol = sym;
+ expr.X_add_number = 0;
+ emit_expr (&expr, sizeof_address);
+}
- if (!ls.line_seg)
- {
-#ifdef BFD_ASSEMBLER
- symbolS *secsym;
-#endif
+/* Encode a pair of line and address skips as efficiently as possible.
+ Note that the line skip is signed, whereas the address skip is unsigned.
- ls.line_seg = subseg_new (".debug_line", 0);
+ The following two routines *must* be kept in sync. This is
+ enforced by making emit_inc_line_addr abort if we do not emit
+ exactly the expected number of bytes. */
-#ifdef BFD_ASSEMBLER
- bfd_set_section_flags (stdoutput, ls.line_seg, SEC_READONLY);
+static int
+size_inc_line_addr (line_delta, addr_delta)
+ int line_delta;
+ addressT addr_delta;
+{
+ unsigned int tmp, opcode;
+ int len = 0;
- /* We're going to need this symbol. */
- secsym = symbol_find (".debug_line");
- if (secsym != NULL)
- symbol_set_bfdsym (secsym, ls.line_seg->symbol);
- else
- symbol_table_insert (section_symbol (ls.line_seg));
+ /* Scale the address delta by the minimum instruction length. */
+#if DWARF2_LINE_MIN_INSN_LENGTH > 1
+ assert (addr_delta % DWARF2_LINE_MIN_INSN_LENGTH == 0);
+ addr_delta /= DWARF2_LINE_MIN_INSN_LENGTH;
#endif
- }
-
- subseg_set (ls.line_seg, DL_BODY);
- if (ls.text_seg != saved_seg || ls.text_subseg != saved_subseg)
+ /* INT_MAX is a signal that this is actually a DW_LNE_end_sequence.
+ We cannot use special opcodes here, since we want the end_sequence
+ to emit the matrix entry. */
+ if (line_delta == INT_MAX)
{
- if (!ls.sm.empty_sequence)
- {
- out_end_sequence (); /* terminate previous sequence */
- ls.sm.empty_sequence = 1;
- }
- any_output = 1;
- ls.text_seg = saved_seg;
- ls.text_subseg = saved_subseg;
- out_set_addr (addr);
- ls.sm.addr = addr;
- ls.frag = saved_frag;
+ if (addr_delta == MAX_SPECIAL_ADDR_DELTA)
+ len = 1;
+ else
+ len = 1 + sizeof_leb128 (addr_delta, 0);
+ return len + 3;
}
- if (ls.sm.filenum != filenum)
+ /* Bias the line delta by the base. */
+ tmp = line_delta - DWARF2_LINE_BASE;
+
+ /* If the line increment is out of range of a special opcode, we
+ must encode it with DW_LNS_advance_line. */
+ if (tmp >= DWARF2_LINE_RANGE)
{
- any_output = 1;
- out_opcode (DW_LNS_set_file);
- out_uleb128 (filenum);
- ls.sm.filenum = filenum;
+ len = 1 + sizeof_leb128 (line_delta, 1);
+ line_delta = 0;
+ tmp = 0 - DWARF2_LINE_BASE;
}
- if (ls.sm.column != l->column)
+ /* Bias the opcode by the special opcode base. */
+ tmp += DWARF2_LINE_OPCODE_BASE;
+
+ /* Avoid overflow when addr_delta is large. */
+ if (addr_delta < 256 + MAX_SPECIAL_ADDR_DELTA)
{
- any_output = 1;
- out_opcode (DW_LNS_set_column);
- out_uleb128 (l->column);
- ls.sm.column = l->column;
+ /* Try using a special opcode. */
+ opcode = tmp + addr_delta * DWARF2_LINE_RANGE;
+ if (opcode <= 255)
+ return len + 1;
+
+ /* Try using DW_LNS_const_add_pc followed by special op. */
+ opcode = tmp + (addr_delta - MAX_SPECIAL_ADDR_DELTA) * DWARF2_LINE_RANGE;
+ if (opcode <= 255)
+ return len + 2;
}
- if (((l->flags & DWARF2_FLAG_BEGIN_STMT) != 0) != ls.sm.is_stmt)
+ /* Otherwise use DW_LNS_advance_pc. */
+ len += 1 + sizeof_leb128 (addr_delta, 0);
+
+ /* DW_LNS_copy or special opcode. */
+ len += 1;
+
+ return len;
+}
+
+static void
+emit_inc_line_addr (line_delta, addr_delta, p, len)
+ int line_delta;
+ addressT addr_delta;
+ char *p;
+ int len;
+{
+ unsigned int tmp, opcode;
+ int need_copy = 0;
+ char *end = p + len;
+
+#if DWARF2_LINE_MIN_INSN_LENGTH > 1
+ /* Scale the address delta by the minimum instruction length. */
+ assert (addr_delta % DWARF2_LINE_MIN_INSN_LENGTH == 0);
+ addr_delta /= DWARF2_LINE_MIN_INSN_LENGTH;
+#endif
+ /* INT_MAX is a signal that this is actually a DW_LNE_end_sequence.
+ We cannot use special opcodes here, since we want the end_sequence
+ to emit the matrix entry. */
+ if (line_delta == INT_MAX)
{
- any_output = 1;
- out_opcode (DW_LNS_negate_stmt);
+ if (addr_delta == MAX_SPECIAL_ADDR_DELTA)
+ *p++ = DW_LNS_const_add_pc;
+ else
+ {
+ *p++ = DW_LNS_advance_pc;
+ p += output_leb128 (p, addr_delta, 0);
+ }
+
+ *p++ = DW_LNS_extended_op;
+ *p++ = 1;
+ *p++ = DW_LNE_end_sequence;
+ goto done;
}
- if (l->flags & DWARF2_FLAG_BEGIN_BLOCK)
+ /* Bias the line delta by the base. */
+ tmp = line_delta - DWARF2_LINE_BASE;
+
+ /* If the line increment is out of range of a special opcode, we
+ must encode it with DW_LNS_advance_line. */
+ if (tmp >= DWARF2_LINE_RANGE)
{
- any_output = 1;
- out_opcode (DW_LNS_set_basic_block);
+ *p++ = DW_LNS_advance_line;
+ p += output_leb128 (p, line_delta, 1);
+
+ /* Prettier, I think, to use DW_LNS_copy instead of a
+ "line +0, addr +0" special opcode. */
+ if (addr_delta == 0)
+ {
+ *p++ = DW_LNS_copy;
+ goto done;
+ }
+
+ line_delta = 0;
+ tmp = 0 - DWARF2_LINE_BASE;
+ need_copy = 1;
}
- if (ls.sm.line != l->line)
+ /* Bias the opcode by the special opcode base. */
+ tmp += DWARF2_LINE_OPCODE_BASE;
+
+ /* Avoid overflow when addr_delta is large. */
+ if (addr_delta < 256 + MAX_SPECIAL_ADDR_DELTA)
{
- any_output = 1;
- if (saved_frag != ls.frag)
+ /* Try using a special opcode. */
+ opcode = tmp + addr_delta * DWARF2_LINE_RANGE;
+ if (opcode <= 255)
+ {
+ *p++ = opcode;
+ goto done;
+ }
+
+ /* Try using DW_LNS_const_add_pc followed by special op. */
+ opcode = tmp + (addr_delta - MAX_SPECIAL_ADDR_DELTA) * DWARF2_LINE_RANGE;
+ if (opcode <= 255)
{
- /* If a new frag got allocated (for whatever reason), then
- deal with it by generating a reference symbol. Note: no
- end_sequence needs to be generated because the address did
- not really decrease (only the reference point changed). */
- out_set_addr (addr);
- ls.sm.addr = addr;
- ls.frag = saved_frag;
+ *p++ = DW_LNS_const_add_pc;
+ *p++ = opcode;
+ goto done;
}
- gen_addr_line (l->line - ls.sm.line,
- (addr - ls.sm.addr) / DWARF2_LINE_MIN_INSN_LENGTH);
- ls.sm.basic_block = 0;
- ls.sm.line = l->line;
- ls.sm.addr = addr;
}
- subseg_set (saved_seg, saved_subseg);
+ /* Otherwise use DW_LNS_advance_pc. */
+ *p++ = DW_LNS_advance_pc;
+ p += output_leb128 (p, addr_delta, 0);
- ls.num_line_entries += any_output;
- if (any_output)
- ls.sm.empty_sequence = 0;
+ if (need_copy)
+ *p++ = DW_LNS_copy;
+ else
+ *p++ = tmp;
+
+ done:
+ assert (p == end);
}
+/* Handy routine to combine calls to the above two routines. */
+
static void
-gen_dir_list ()
+out_inc_line_addr (line_delta, addr_delta)
+ int line_delta;
+ addressT addr_delta;
{
- char *str, *slash, *dir_list, *dp, *cp;
- int i, j, num_dirs;
+ int len = size_inc_line_addr (line_delta, addr_delta);
+ emit_inc_line_addr (line_delta, addr_delta, frag_more (len), len);
+}
+
+/* Generate a variant frag that we can use to relax address/line
+ increments between fragments of the target segment. */
+
+static void
+relax_inc_line_addr (line_delta, seg, to_frag, to_ofs, from_frag, from_ofs)
+ int line_delta;
+ segT seg;
+ fragS *to_frag, *from_frag;
+ addressT to_ofs, from_ofs;
+{
+ symbolS *to_sym, *from_sym;
+ expressionS expr;
+ int max_chars;
+
+ to_sym = symbol_new (fake_label_name, seg, to_ofs, to_frag);
+ from_sym = symbol_new (fake_label_name, seg, from_ofs, from_frag);
+
+ expr.X_op = O_subtract;
+ expr.X_add_symbol = to_sym;
+ expr.X_op_symbol = from_sym;
+ expr.X_add_number = 0;
+
+ /* The maximum size of the frag is the line delta with a maximum
+ sized address delta. */
+ max_chars = size_inc_line_addr (line_delta, -DWARF2_LINE_MIN_INSN_LENGTH);
+
+ frag_var (rs_dwarf2dbg, max_chars, max_chars, 1,
+ make_expr_symbol (&expr), line_delta, NULL);
+}
- dir_list = frag_more (0);
- num_dirs = 0;
+/* The function estimates the size of a rs_dwarf2dbg variant frag
+ based on the current values of the symbols. It is called before
+ the relaxation loop. We set fr_subtype to the expected length. */
- for (i = 0; i < ls.num_filenames; ++i)
+int
+dwarf2dbg_estimate_size_before_relax (frag)
+ fragS *frag;
+{
+ offsetT addr_delta;
+ int size;
+
+ addr_delta = resolve_symbol_value (frag->fr_symbol, 0);
+ size = size_inc_line_addr (frag->fr_offset, addr_delta);
+
+ frag->fr_subtype = size;
+
+ return size;
+}
+
+/* This function relaxes a rs_dwarf2dbg variant frag based on the
+ current values of the symbols. fr_subtype is the current length
+ of the frag. This returns the change in frag length. */
+
+int
+dwarf2dbg_relax_frag (frag)
+ fragS *frag;
+{
+ int old_size, new_size;
+
+ old_size = frag->fr_subtype;
+ new_size = dwarf2dbg_estimate_size_before_relax (frag);
+
+ return new_size - old_size;
+}
+
+/* This function converts a rs_dwarf2dbg variant frag into a normal
+ fill frag. This is called after all relaxation has been done.
+ fr_subtype will be the desired length of the frag. */
+
+void
+dwarf2dbg_convert_frag (frag)
+ fragS *frag;
+{
+ offsetT addr_diff;
+
+ addr_diff = resolve_symbol_value (frag->fr_symbol, 1);
+
+ /* fr_var carries the max_chars that we created the fragment with.
+ fr_subtype carries the current expected length. We must, of
+ course, have allocated enough memory earlier. */
+ assert (frag->fr_var >= (int) frag->fr_subtype);
+
+ emit_inc_line_addr (frag->fr_offset, addr_diff,
+ frag->fr_literal + frag->fr_fix, frag->fr_subtype);
+
+ frag->fr_fix += frag->fr_subtype;
+ frag->fr_type = rs_fill;
+ frag->fr_var = 0;
+ frag->fr_offset = 0;
+}
+
+/* Generate .debug_line content for the chain of line number entries
+ beginning at E, for segment SEG. */
+
+static void
+process_entries (seg, e)
+ segT seg;
+ struct line_entry *e;
+{
+ unsigned filenum = 1;
+ unsigned line = 1;
+ unsigned column = 0;
+ unsigned flags = DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_BEGIN_STMT : 0;
+ fragS *frag = NULL;
+ fragS *last_frag;
+ addressT frag_ofs = 0;
+ addressT last_frag_ofs;
+ struct line_entry *next;
+
+ while (e)
{
- str = ls.file[i].name;
- slash = strrchr (str, '/');
- if (slash)
+ int changed = 0;
+
+ if (filenum != e->loc.filenum)
{
- *slash = '\0';
- for (j = 0, dp = dir_list; j < num_dirs; ++j)
- {
- if (strcmp (str, dp) == 0)
- {
- ls.file[i].dir = j + 1;
- break;
- }
- dp += strlen (dp);
- }
- if (j >= num_dirs)
+ filenum = e->loc.filenum;
+ out_opcode (DW_LNS_set_file);
+ out_uleb128 (filenum);
+ changed = 1;
+ }
+
+ if (column != e->loc.column)
+ {
+ column = e->loc.column;
+ out_opcode (DW_LNS_set_column);
+ out_uleb128 (column);
+ changed = 1;
+ }
+
+ if ((e->loc.flags ^ flags) & DWARF2_FLAG_BEGIN_STMT)
+ {
+ flags = e->loc.flags;
+ out_opcode (DW_LNS_negate_stmt);
+ changed = 1;
+ }
+
+ if (e->loc.flags & DWARF2_FLAG_BEGIN_BLOCK)
+ {
+ out_opcode (DW_LNS_set_basic_block);
+ changed = 1;
+ }
+
+ if (line != e->loc.line || changed)
+ {
+ int line_delta = e->loc.line - line;
+ if (frag == NULL)
{
- /* didn't find this directory: append it to the list */
- size_t size = strlen (str) + 1;
- cp = frag_more (size);
- memcpy (cp, str, size);
- ls.file[i].dir = ++num_dirs;
+ out_set_addr (seg, e->frag, e->frag_ofs);
+ out_inc_line_addr (line_delta, 0);
}
- *slash = '/';
- ls.file[i].name = slash + 1;
+ else if (frag == e->frag)
+ out_inc_line_addr (line_delta, e->frag_ofs - frag_ofs);
+ else
+ relax_inc_line_addr (line_delta, seg, e->frag, e->frag_ofs,
+ frag, frag_ofs);
+
+ frag = e->frag;
+ frag_ofs = e->frag_ofs;
+ line = e->loc.line;
+ }
+ else if (frag == NULL)
+ {
+ out_set_addr (seg, e->frag, e->frag_ofs);
+ frag = e->frag;
+ frag_ofs = e->frag_ofs;
}
+
+ next = e->next;
+ free (e);
+ e = next;
}
- out_byte ('\0'); /* terminate directory list */
+
+ /* Emit a DW_LNE_end_sequence for the end of the section. */
+ last_frag = last_frag_for_seg (seg);
+ last_frag_ofs = get_frag_fix (last_frag);
+ if (frag == last_frag)
+ out_inc_line_addr (INT_MAX, last_frag_ofs - frag_ofs);
+ else
+ relax_inc_line_addr (INT_MAX, seg, last_frag, last_frag_ofs,
+ frag, frag_ofs);
}
+/* Emit the directory and file tables for .debug_line. */
+
static void
-gen_file_list ()
+out_file_list ()
{
size_t size;
char *cp;
- int i;
+ unsigned int i;
+
+ /* Terminate directory list. */
+ out_byte ('\0');
- for (i = 0; i < ls.num_filenames; ++i)
+ for (i = 1; i < files_in_use; ++i)
{
- size = strlen (ls.file[i].name) + 1;
+ if (files[i].filename == NULL)
+ {
+ as_bad (_("Unassigned file number %u"), i);
+ continue;
+ }
+
+ size = strlen (files[i].filename) + 1;
cp = frag_more (size);
- memcpy (cp, ls.file[i].name, size);
+ memcpy (cp, files[i].filename, size);
- out_uleb128 (ls.file[i].dir); /* directory number */
+ out_uleb128 (files[i].dir); /* directory number */
out_uleb128 (0); /* last modification timestamp */
out_uleb128 (0); /* filesize */
}
- out_byte (0); /* terminate filename list */
+
+ /* Terminate filename list. */
+ out_byte (0);
}
+/* Emit the collected .debug_line data. */
+
static void
-print_stats (total_size)
- unsigned long total_size;
+out_debug_line (line_seg)
+ segT line_seg;
{
- static const char *opc_name[] =
- {
- "extended", "copy", "advance_pc", "advance_line", "set_file",
- "set_column", "negate_stmt", "set_basic_block", "const_add_pc",
- "fixed_advance_pc"
- };
- size_t i;
- int j;
+ expressionS expr;
+ symbolS *line_start;
+ symbolS *prologue_end;
+ symbolS *line_end;
+ struct line_seg *s;
+
+ subseg_set (line_seg, 0);
+
+ line_start = symbol_new_now ();
+ prologue_end = symbol_make (fake_label_name);
+ line_end = symbol_make (fake_label_name);
+
+ /* Total length of the information for this compilation unit. */
+ expr.X_op = O_subtract;
+ expr.X_add_symbol = line_end;
+ expr.X_op_symbol = line_start;
+ expr.X_add_number = -4;
+ emit_expr (&expr, 4);
+
+ /* Version. */
+ out_two (2);
+
+ /* Length of the prologue following this length. */
+ expr.X_op = O_subtract;
+ expr.X_add_symbol = prologue_end;
+ expr.X_op_symbol = line_start;
+ expr.X_add_number = - (4 + 2 + 4);
+ emit_expr (&expr, 4);
+
+ /* Parameters of the state machine. */
+ out_byte (DWARF2_LINE_MIN_INSN_LENGTH);
+ out_byte (DWARF2_LINE_DEFAULT_IS_STMT);
+ out_byte (DWARF2_LINE_BASE);
+ out_byte (DWARF2_LINE_RANGE);
+ out_byte (DWARF2_LINE_OPCODE_BASE);
+
+ /* Standard opcode lengths. */
+ out_byte (0); /* DW_LNS_copy */
+ out_byte (1); /* DW_LNS_advance_pc */
+ out_byte (1); /* DW_LNS_advance_line */
+ out_byte (1); /* DW_LNS_set_file */
+ out_byte (1); /* DW_LNS_set_column */
+ out_byte (0); /* DW_LNS_negate_stmt */
+ out_byte (0); /* DW_LNS_set_basic_block */
+ out_byte (0); /* DW_LNS_const_add_pc */
+ out_byte (1); /* DW_LNS_fixed_advance_pc */
+
+ out_file_list ();
+
+ set_symbol_value_now (prologue_end);
+
+ /* For each section, emit a statement program. */
+ for (s = all_segs; s; s = s->next)
+ process_entries (s->seg, s->head->head);
+
+ set_symbol_value_now (line_end);
+}
+
+/* Emit data for .debug_aranges. */
+
+static void
+out_debug_aranges (aranges_seg, info_seg)
+ segT aranges_seg;
+ segT info_seg;
+{
+ unsigned int addr_size = sizeof_address;
+ addressT size, skip;
+ struct line_seg *s;
+ expressionS expr;
+ char *p;
+
+ size = 4 + 2 + 4 + 1 + 1;
+
+ skip = 2 * addr_size - (size & (2 * addr_size - 1));
+ if (skip == 2 * addr_size)
+ skip = 0;
+ size += skip;
+
+ for (s = all_segs; s; s = s->next)
+ size += 2 * addr_size;
+
+ size += 2 * addr_size;
- fprintf (stderr, "Average size: %g bytes/line\n",
- total_size / (double) ls.num_line_entries);
+ subseg_set (aranges_seg, 0);
- fprintf (stderr, "\nStandard opcode histogram:\n");
+ /* Length of the compilation unit. */
+ out_four (size - 4);
- for (i = 0; i < sizeof (opc_name)/sizeof (opc_name[0]); ++i)
+ /* Version. */
+ out_two (2);
+
+ /* Offset to .debug_info. */
+ expr.X_op = O_symbol;
+ expr.X_add_symbol = section_symbol (info_seg);
+ expr.X_add_number = 0;
+ emit_expr (&expr, 4);
+
+ /* Size of an address (offset portion). */
+ out_byte (addr_size);
+
+ /* Size of a segment descriptor. */
+ out_byte (0);
+
+ /* Align the header. */
+ if (skip)
+ frag_align (ffs (2 * addr_size) - 1, 0, 0);
+
+ for (s = all_segs; s; s = s->next)
{
- fprintf (stderr, "%s", opc_name[i]);
- for (j = strlen (opc_name[i]); j < 16; ++j)
- fprintf (stderr, " ");
- fprintf (stderr, ": %u\n", ls.opcode_hist[i]);
+ fragS *frag;
+ symbolS *beg, *end;
+
+ frag = first_frag_for_seg (s->seg);
+ beg = symbol_new (fake_label_name, s->seg, 0, frag);
+ s->text_start = beg;
+
+ frag = last_frag_for_seg (s->seg);
+ end = symbol_new (fake_label_name, s->seg, get_frag_fix (frag), frag);
+ s->text_end = end;
+
+ expr.X_op = O_symbol;
+ expr.X_add_symbol = beg;
+ expr.X_add_number = 0;
+ emit_expr (&expr, addr_size);
+
+ expr.X_op = O_subtract;
+ expr.X_add_symbol = end;
+ expr.X_op_symbol = beg;
+ expr.X_add_number = 0;
+ emit_expr (&expr, addr_size);
}
- fprintf (stderr, "\nSpecial opcodes:\naddr\t\t\t\tline skip\n");
+ p = frag_more (2 * addr_size);
+ md_number_to_chars (p, 0, addr_size);
+ md_number_to_chars (p + addr_size, 0, addr_size);
+}
+
+/* Emit data for .debug_abbrev. Note that this must be kept in
+ sync with out_debug_info below. */
- fprintf (stderr, "skip: ");
- for (j = DWARF2_LINE_BASE; j < DWARF2_LINE_BASE + DWARF2_LINE_RANGE; ++j)
- fprintf (stderr, "%3d", j);
- fprintf (stderr, "\n-----");
+static void
+out_debug_abbrev (abbrev_seg)
+ segT abbrev_seg;
+{
+ subseg_set (abbrev_seg, 0);
- for (; i < 256; ++i)
+ out_uleb128 (1);
+ out_uleb128 (DW_TAG_compile_unit);
+ out_byte (DW_CHILDREN_no);
+ out_abbrev (DW_AT_stmt_list, DW_FORM_data4);
+ if (all_segs->next == NULL)
{
- j = SPECIAL_LINE (i);
- if (j == DWARF2_LINE_BASE)
- fprintf (stderr, "\n%4u: ",
- ((unsigned int)
- DWARF2_LINE_MIN_INSN_LENGTH * SPECIAL_ADDR (i)));
- fprintf (stderr, " %2u", ls.opcode_hist[i]);
+ out_abbrev (DW_AT_low_pc, DW_FORM_addr);
+ out_abbrev (DW_AT_high_pc, DW_FORM_addr);
}
- fprintf (stderr, "\n");
+ out_abbrev (DW_AT_comp_dir, DW_FORM_string);
+ out_abbrev (DW_AT_producer, DW_FORM_string);
+ out_abbrev (DW_AT_language, DW_FORM_data2);
+ out_abbrev (0, 0);
+
+ /* Terminate the abbreviations for this compilation unit. */
+ out_byte (0);
}
-void
-dwarf2_finish ()
+/* Emit a description of this compilation unit for .debug_info. */
+
+static void
+out_debug_info (info_seg, abbrev_seg, line_seg)
+ segT info_seg;
+ segT abbrev_seg;
+ segT line_seg;
{
- addressT body_size, total_size, prolog_size;
- subsegT saved_subseg;
- segT saved_seg;
- char *cp;
+ char producer[128];
+ char *comp_dir;
+ expressionS expr;
+ symbolS *info_start;
+ symbolS *info_end;
+ char *p;
+ int len;
- if (!ls.line_seg)
- /* no .debug_line segment, no work to do... */
- return;
+ subseg_set (info_seg, 0);
- saved_seg = now_seg;
- saved_subseg = now_subseg;
+ info_start = symbol_new_now ();
+ info_end = symbol_make (fake_label_name);
- if (!ls.sm.empty_sequence)
- out_end_sequence ();
- total_size = body_size = frag_now_fix ();
+ /* Compilation Unit length. */
+ expr.X_op = O_subtract;
+ expr.X_add_symbol = info_end;
+ expr.X_op_symbol = info_start;
+ expr.X_add_number = -4;
+ emit_expr (&expr, 4);
- /* now generate the directory and file lists: */
- subseg_set (ls.line_seg, DL_FILES);
- gen_dir_list ();
- gen_file_list ();
- total_size += frag_now_fix ();
+ /* DWARF version. */
+ out_two (2);
- /* and now the header ("statement program prolog", in DWARF2 lingo...) */
- subseg_set (ls.line_seg, DL_PROLOG);
+ /* .debug_abbrev offset */
+ expr.X_op = O_symbol;
+ expr.X_add_symbol = section_symbol (abbrev_seg);
+ expr.X_add_number = 0;
+ emit_expr (&expr, 4);
- cp = frag_more (15 + DWARF2_LINE_OPCODE_BASE - 1);
+ /* Target address size. */
+ out_byte (sizeof_address);
- total_size += frag_now_fix ();
- prolog_size = total_size - body_size - 10;
+ /* DW_TAG_compile_unit DIE abbrev */
+ out_uleb128 (1);
-# define STUFF(val,size) md_number_to_chars (cp, val, size); cp += size;
- STUFF (total_size - 4, 4); /* length */
- STUFF (2, 2); /* version */
- STUFF (prolog_size, 4); /* prologue_length */
- STUFF (DWARF2_LINE_MIN_INSN_LENGTH, 1);
- STUFF (DWARF2_LINE_DEFAULT_IS_STMT, 1);
- STUFF (DWARF2_LINE_BASE, 1);
- STUFF (DWARF2_LINE_RANGE, 1);
- STUFF (DWARF2_LINE_OPCODE_BASE, 1);
+ /* DW_AT_stmt_list */
+ expr.X_op = O_symbol;
+ expr.X_add_symbol = section_symbol (line_seg);
+ expr.X_add_number = 0;
+ emit_expr (&expr, 4);
+
+ /* These two attributes may only be emitted if all of the code is
+ contiguous. Multiple sections are not that. */
+ if (all_segs->next == NULL)
+ {
+ /* DW_AT_low_pc */
+ expr.X_op = O_symbol;
+ expr.X_add_symbol = all_segs->text_start;
+ expr.X_add_number = 0;
+ emit_expr (&expr, sizeof_address);
+
+ /* DW_AT_high_pc */
+ expr.X_op = O_symbol;
+ expr.X_add_symbol = all_segs->text_end;
+ expr.X_add_number = 0;
+ emit_expr (&expr, sizeof_address);
+ }
+
+ /* DW_AT_comp_dir */
+ comp_dir = getpwd ();
+ len = strlen (comp_dir) + 1;
+ p = frag_more (len);
+ memcpy (p, comp_dir, len);
- /* standard_opcode_lengths: */
- STUFF (0, 1); /* DW_LNS_copy */
- STUFF (1, 1); /* DW_LNS_advance_pc */
- STUFF (1, 1); /* DW_LNS_advance_line */
- STUFF (1, 1); /* DW_LNS_set_file */
- STUFF (1, 1); /* DW_LNS_set_column */
- STUFF (0, 1); /* DW_LNS_negate_stmt */
- STUFF (0, 1); /* DW_LNS_set_basic_block */
- STUFF (0, 1); /* DW_LNS_const_add_pc */
- STUFF (1, 1); /* DW_LNS_fixed_advance_pc */
+ /* DW_AT_producer */
+ sprintf (producer, "GNU AS %s", VERSION);
+ len = strlen (producer) + 1;
+ p = frag_more (len);
+ memcpy (p, producer, len);
- subseg_set (saved_seg, saved_subseg);
+ /* DW_AT_language. Yes, this is probably not really MIPS, but the
+ dwarf2 draft has no standard code for assembler. */
+ out_two (DW_LANG_Mips_Assembler);
- if (flag_debug)
- print_stats (total_size);
+ set_symbol_value_now (info_end);
}
void
-dwarf2_directive_file (dummy)
- int dummy ATTRIBUTE_UNUSED;
+dwarf2_finish ()
{
- int len;
+ segT line_seg;
+ struct line_seg *s;
- /* Continue to accept a bare string and pass it off. */
- SKIP_WHITESPACE ();
- if (*input_line_pointer == '"')
+ /* If no debug information was recorded, nothing to do. */
+ if (all_segs == NULL)
+ return;
+
+ /* Calculate the size of an address for the target machine. */
+ sizeof_address = bfd_arch_bits_per_address (stdoutput) / 8;
+
+ /* Create and switch to the line number section. */
+ line_seg = subseg_new (".debug_line", 0);
+ bfd_set_section_flags (stdoutput, line_seg, SEC_READONLY);
+
+ /* For each subsection, chain the debug entries together. */
+ for (s = all_segs; s; s = s->next)
{
- s_app_file (0);
- return;
+ struct line_subseg *ss = s->head;
+ struct line_entry **ptail = ss->ptail;
+
+ while ((ss = ss->next) != NULL)
+ {
+ *ptail = ss->head;
+ ptail = ss->ptail;
+ }
}
- ls.any_dwarf2_directives = 1;
+ out_debug_line (line_seg);
+
+ /* If this is assembler generated line info, we need .debug_info
+ and .debug_abbrev sections as well. */
+ if (debug_type == DEBUG_DWARF2)
+ {
+ segT abbrev_seg;
+ segT info_seg;
+ segT aranges_seg;
- if (debug_type == DEBUG_NONE)
- /* Automatically turn on DWARF2 debug info unless something else
- has been selected. */
- debug_type = DEBUG_DWARF2;
+ info_seg = subseg_new (".debug_info", 0);
+ abbrev_seg = subseg_new (".debug_abbrev", 0);
+ aranges_seg = subseg_new (".debug_aranges", 0);
- ls.current.filenum = get_absolute_expression ();
- ls.current.filename = demand_copy_C_string (&len);
+ bfd_set_section_flags (stdoutput, info_seg, SEC_READONLY);
+ bfd_set_section_flags (stdoutput, abbrev_seg, SEC_READONLY);
+ bfd_set_section_flags (stdoutput, aranges_seg, SEC_READONLY);
- demand_empty_rest_of_line ();
+ record_alignment (aranges_seg, ffs (2 * sizeof_address) - 1);
+
+ out_debug_aranges (aranges_seg, info_seg);
+ out_debug_abbrev (abbrev_seg);
+ out_debug_info (info_seg, abbrev_seg, line_seg);
+ }
}
+#else
void
-dwarf2_directive_loc (dummy)
- int dummy ATTRIBUTE_UNUSED;
+dwarf2_finish ()
+{
+}
+
+int
+dwarf2dbg_estimate_size_before_relax (frag)
+ fragS *frag ATTRIBUTE_UNUSED;
{
- ls.any_dwarf2_directives = 1;
+ as_fatal (_("dwarf2 is not supported for this object file format"));
+ return 0;
+}
- ls.current.filenum = get_absolute_expression ();
- SKIP_WHITESPACE ();
- ls.current.line = get_absolute_expression ();
- SKIP_WHITESPACE ();
- ls.current.column = get_absolute_expression ();
- demand_empty_rest_of_line ();
+int
+dwarf2dbg_relax_frag (frag)
+ fragS *frag ATTRIBUTE_UNUSED;
+{
+ as_fatal (_("dwarf2 is not supported for this object file format"));
+ return 0;
+}
- ls.current.flags = DWARF2_FLAG_BEGIN_STMT;
+void
+dwarf2dbg_convert_frag (frag)
+ fragS *frag ATTRIBUTE_UNUSED;
+{
+ as_fatal (_("dwarf2 is not supported for this object file format"));
+}
-#ifndef NO_LISTING
- if (listing)
- listing_source_line (ls.current.line);
-#endif
+void
+dwarf2_emit_insn (size)
+ int size ATTRIBUTE_UNUSED;
+{
}
void
-dwarf2_where (line)
- struct dwarf2_line_info *line;
+dwarf2_directive_file (dummy)
+ int dummy ATTRIBUTE_UNUSED;
{
- if (ls.any_dwarf2_directives)
- *line = ls.current;
- else
- {
- as_where (&line->filename, &line->line);
- line->filenum = 0;
- line->column = 0;
- line->flags = DWARF2_FLAG_BEGIN_STMT;
- }
+ as_fatal (_("dwarf2 is not supported for this object file format"));
+}
+
+void
+dwarf2_directive_loc (dummy)
+ int dummy ATTRIBUTE_UNUSED;
+{
+ as_fatal (_("dwarf2 is not supported for this object file format"));
}
+#endif /* BFD_ASSEMBLER */
diff --git a/contrib/binutils/gas/dwarf2dbg.h b/contrib/binutils/gas/dwarf2dbg.h
index a3eec1c..cdb76ab 100644
--- a/contrib/binutils/gas/dwarf2dbg.h
+++ b/contrib/binutils/gas/dwarf2dbg.h
@@ -1,5 +1,5 @@
/* dwarf2dbg.h - DWARF2 debug support
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -26,14 +26,12 @@
#define DWARF2_FLAG_BEGIN_STMT (1 << 0) /* beginning of statement */
#define DWARF2_FLAG_BEGIN_BLOCK (1 << 1) /* beginning of basic block */
-struct dwarf2_line_info
- {
- char *filename;
- unsigned int filenum;
- unsigned int line;
- unsigned int column;
- unsigned int flags;
- };
+struct dwarf2_line_info {
+ unsigned int filenum;
+ unsigned int line;
+ unsigned int column;
+ unsigned int flags;
+};
/* Implements the .file FILENO "FILENAME" directive. FILENO can be 0
to indicate that no file number has been assigned. All real file
@@ -58,12 +56,17 @@ extern void dwarf2_where PARAMS ((struct dwarf2_line_info *l));
source information passed in the arguments. ADDR should be the
frag-relative offset of the instruction the information is for and
L is the source information that should be associated with that
- address. */
+ address. */
extern void dwarf2_gen_line_info PARAMS ((addressT addr,
struct dwarf2_line_info *l));
-/* Must be called after all other input is processed to finish up the
- .debug_line section. */
+/* Must be called for each generated instruction. */
+extern void dwarf2_emit_insn PARAMS ((int));
+
extern void dwarf2_finish PARAMS ((void));
+extern int dwarf2dbg_estimate_size_before_relax PARAMS ((fragS *));
+extern int dwarf2dbg_relax_frag PARAMS ((fragS *));
+extern void dwarf2dbg_convert_frag PARAMS ((fragS *));
+
#endif /* AS_DWARF2DBG_H */
diff --git a/contrib/binutils/gas/ecoff.c b/contrib/binutils/gas/ecoff.c
index 436c8c4..f04e530 100644
--- a/contrib/binutils/gas/ecoff.c
+++ b/contrib/binutils/gas/ecoff.c
@@ -161,7 +161,6 @@
tqFar -- 8086 far pointers
tqVol -- volatile
-
The dense number table is used in the front ends, and disappears by
the time the .o is created.
@@ -256,8 +255,6 @@
5) index: pointer to a local symbol or aux. entry.
-
-
For the following program:
#include <stdio.h>
@@ -727,9 +724,9 @@ typedef enum bt {
/* States for whether to hash type or not. */
typedef enum hash_state {
- hash_no = 0, /* don't hash type */
- hash_yes = 1, /* ok to hash type, or use previous hash */
- hash_record = 2 /* ok to record hash, but don't use prev. */
+ hash_no = 0, /* Don't hash type */
+ hash_yes = 1, /* OK to hash type, or use previous hash */
+ hash_record = 2 /* OK to record hash, but don't use prev. */
} hash_state_t;
/* Types of different sized allocation requests. */
@@ -770,7 +767,7 @@ enum aux_type {
can't be represented (assuming there are strings > 4096 bytes). */
/* FIXME: Yes, there can be such strings while emitting C++ class debug
- info. Templates are the offender here, the test case in question
+ info. Templates are the offender here, the test case in question
having a mangled class name of
t7rb_tree4Z4xkeyZt4pair2ZC4xkeyZt7xsocket1Z4UserZt9select1st2Zt4pair\
@@ -799,7 +796,6 @@ typedef struct vlinks {
unsigned long start_index; /* starting index # of page */
} vlinks_t;
-
/* Virtual array header. */
typedef struct varray {
vlinks_t *first; /* first page link */
@@ -825,11 +821,9 @@ typedef struct varray {
OBJECTS_PER_PAGE (type), /* objects_last_page */ \
}
-
-/* Master type for indexes within the symbol table. */
+/* Master type for indexes within the symbol table. */
typedef unsigned long symint_t;
-
/* Linked list support for nested scopes (file, block, structure, etc.). */
typedef struct scope {
struct scope *prev; /* previous scope level */
@@ -838,7 +832,6 @@ typedef struct scope {
st_t type; /* type of the node */
} scope_t;
-
/* For a local symbol we store a gas symbol as well as the debugging
information we generate. The gas symbol will be NULL if this is
only a debugging symbol. */
@@ -855,7 +848,6 @@ typedef struct localsym {
EXTR ecoff_sym; /* ECOFF debugging symbol */
} localsym_t;
-
/* For aux information we keep the type and the data. */
typedef struct ecoff_aux {
enum aux_type type; /* aux type */
@@ -872,7 +864,6 @@ typedef struct ecoff_proc {
/* Number of proc_t structures allocated. */
static unsigned long proc_cnt;
-
/* Forward reference list for tags referenced, but not yet defined. */
typedef struct forward {
struct forward *next; /* next forward reference */
@@ -881,7 +872,6 @@ typedef struct forward {
aux_t *index_ptr; /* pointer to store symbol index */
} forward_t;
-
/* Linked list support for tags. The first tag in the list is always
the current tag for that block. */
typedef struct tag {
@@ -895,7 +885,6 @@ typedef struct tag {
localsym_t *sym; /* file's local symbols */
} tag_t;
-
/* Head of a block's linked list of tags. */
typedef struct thead {
struct thead *prev; /* previous block */
@@ -903,7 +892,6 @@ typedef struct thead {
struct tag *first_tag; /* first tag in block defined */
} thead_t;
-
/* Union containing pointers to each the small structures which are freed up. */
typedef union small_free {
scope_t *f_scope; /* scope structure */
@@ -912,7 +900,6 @@ typedef union small_free {
forward_t *f_forward; /* forward tag reference */
} small_free_t;
-
/* String hash table entry. */
typedef struct shash {
@@ -925,7 +912,6 @@ typedef struct shash {
proc_t *proc_ptr; /* procedure descriptor pointer */
} shash_t;
-
/* Type hash table support. The size of the hash table must fit
within a page with the other extended file descriptor information.
Because unique types which are hashed are fewer in number than
@@ -943,7 +929,6 @@ typedef struct thash {
symint_t indx; /* index within string table */
} thash_t;
-
/* Extended file descriptor that contains all of the support necessary
to add things to each file separately. */
typedef struct efdr {
@@ -967,8 +952,7 @@ typedef struct efdr {
} efdr_t;
/* Pre-initialized extended file structure. */
-static const efdr_t init_file =
-{
+static const efdr_t init_file = {
{ /* FDR structure */
0, /* adr: memory address of beginning of file */
0, /* rss: file name (of source, if known) */
@@ -1015,11 +999,9 @@ static const efdr_t init_file =
{ 0 }, /* thash_head: type hash table */
};
-
static efdr_t *first_file; /* first file descriptor */
static efdr_t **last_file_ptr = &first_file; /* file descriptor tail */
-
/* Line number information is kept in a list until the assembly is
finished. */
typedef struct lineno_list {
@@ -1060,7 +1042,6 @@ typedef union page {
lineno_list_t lineno [ PAGE_SIZE / sizeof (lineno_list_t) ];
} page_type;
-
/* Structure holding allocation information for small sized structures. */
typedef struct alloc_info {
char *alloc_name; /* name of this allocation type (must be first) */
@@ -1072,7 +1053,6 @@ typedef struct alloc_info {
int total_pages; /* total number of pages allocated */
} alloc_info_t;
-
/* Type information collected together. */
typedef struct type_info {
bt_t basic_type; /* basic type */
@@ -1130,7 +1110,7 @@ static const type_info_t type_info_init = {
/* Global hash table for the tags table and global table for file
descriptors. */
-static varray_t file_desc = INIT_VARRAY (efdr_t);
+static varray_t file_desc = INIT_VARRAY (efdr_t);
static struct hash_control *tag_hash;
@@ -1143,7 +1123,6 @@ static type_info_t void_type_info;
static type_info_t last_func_type_info;
static symbolS *last_func_sym_value;
-
/* Convert COFF basic type to ECOFF basic type. The T_NULL type
really should use bt_Void, but this causes the current ecoff GDB to
issue unsupported type messages, and the Ultrix 4.00 dbx (aka MIPS
@@ -1399,9 +1378,8 @@ static const st_t map_coff_sym_type[] = {
st_Nil, /* 106: C_HIDDEN ??? */
};
-
/* Keep track of different sized allocation requests. */
-static alloc_info_t alloc_counts[ (int)alloc_type_last ];
+static alloc_info_t alloc_counts[(int) alloc_type_last];
/* Record whether we have seen any debugging information. */
int ecoff_debugging_seen = 0;
@@ -1545,8 +1523,8 @@ add_varray_page (vp)
#endif
new_links->datum = allocate_page ();
- alloc_counts[(int)alloc_type_varray].total_alloc++;
- alloc_counts[(int)alloc_type_varray].total_pages++;
+ alloc_counts[(int) alloc_type_varray].total_alloc++;
+ alloc_counts[(int) alloc_type_varray].total_pages++;
new_links->start_index = vp->num_allocated;
vp->objects_last_page = 0;
@@ -1582,11 +1560,11 @@ add_string (vp, hash_tbl, str, ret_hash)
register const char *err;
if (vp->objects_last_page + len >= PAGE_USIZE)
- {
- vp->num_allocated =
- ((vp->num_allocated + PAGE_USIZE - 1) / PAGE_USIZE) * PAGE_USIZE;
- add_varray_page (vp);
- }
+ {
+ vp->num_allocated =
+ ((vp->num_allocated + PAGE_USIZE - 1) / PAGE_USIZE) * PAGE_USIZE;
+ add_varray_page (vp);
+ }
hash_ptr = allocate_shash ();
hash_ptr->indx = vp->num_allocated;
@@ -1636,10 +1614,10 @@ add_ecoff_symbol (str, type, storage, sym_value, addend, value, indx)
vp = &cur_file_ptr->symbols;
- if (vp->objects_last_page == vp->objects_per_page)
+ if (vp->objects_last_page == vp->objects_per_page)
add_varray_page (vp);
- psym = &vp->last->datum->sym[ vp->objects_last_page++ ];
+ psym = &vp->last->datum->sym[vp->objects_last_page++];
if (str == (const char *) NULL && sym_value != (symbolS *) NULL)
psym->name = S_GET_NAME (sym_value);
@@ -1705,8 +1683,8 @@ add_ecoff_symbol (str, type, storage, sym_value, addend, value, indx)
scope_delta = 1;
/* For every block type except file, struct, union, or
- enumeration blocks, push a level on the tag stack. We omit
- file types, so that tags can span file boundaries. */
+ enumeration blocks, push a level on the tag stack. We omit
+ file types, so that tags can span file boundaries. */
if (type != st_File && storage != sc_Info)
{
ptag_head = allocate_thead ();
@@ -1802,11 +1780,12 @@ add_ecoff_symbol (str, type, storage, sym_value, addend, value, indx)
value, depth, sc_str);
if (str_start && str_end_p1 - str_start > 0)
- fprintf (stderr, " st= %-11s name= %.*s\n", st_str, str_end_p1 - str_start, str_start);
+ fprintf (stderr, " st= %-11s name= %.*s\n",
+ st_str, str_end_p1 - str_start, str_start);
else
{
unsigned long len = strlen (st_str);
- fprintf (stderr, " st= %.*s\n", len-1, st_str);
+ fprintf (stderr, " st= %.*s\n", len - 1, st_str);
}
}
#endif
@@ -1839,7 +1818,6 @@ add_aux_sym_symint (aux_word)
return vp->num_allocated++;
}
-
/* Add an auxiliary symbol (passing a file/symbol index combo). */
static symint_t
@@ -1899,9 +1877,8 @@ add_aux_sym_tir (t, state, hash_tbl)
aux.ti.tq4 = (int) t->type_qualifiers[4];
aux.ti.tq5 = (int) t->type_qualifiers[5];
-
/* For anything that adds additional information, we must not hash,
- so check here, and reset our state. */
+ so check here, and reset our state. */
if (state != hash_no
&& (t->type_qualifiers[0] == tq_Array
@@ -1951,11 +1928,11 @@ add_aux_sym_tir (t, state, hash_tbl)
}
}
- /* Everything is set up, add the aux symbol. */
+ /* Everything is set up, add the aux symbol. */
if (vp->objects_last_page == vp->objects_per_page)
add_varray_page (vp);
- aux_ptr = &vp->last->datum->aux[ vp->objects_last_page++ ];
+ aux_ptr = &vp->last->datum->aux[vp->objects_last_page++];
aux_ptr->type = aux_tir;
aux_ptr->data = aux;
@@ -1971,8 +1948,7 @@ add_aux_sym_tir (t, state, hash_tbl)
for an enum bitfield. */
if (t->bitfield)
- (void) add_aux_sym_symint ((symint_t)t->sizes[t->num_sizes-1]);
-
+ (void) add_aux_sym_symint ((symint_t) t->sizes[t->num_sizes - 1]);
/* Add tag information if needed. Structure, union, and enum
references add 2 aux symbols: a [file index, symbol index]
@@ -1983,7 +1959,7 @@ add_aux_sym_tir (t, state, hash_tbl)
|| t->basic_type == bt_Enum)
{
register symint_t file_index = t->tag_ptr->ifd;
- register localsym_t *sym = t->tag_ptr->sym;
+ register localsym_t *sym = t->tag_ptr->sym;
register forward_t *forward_ref = allocate_forward ();
if (sym != (localsym_t *) NULL)
@@ -1999,11 +1975,11 @@ add_aux_sym_tir (t, state, hash_tbl)
(void) add_aux_sym_rndx (ST_RFDESCAPE, indexNil);
forward_ref->index_ptr
- = &vp->last->datum->aux[ vp->objects_last_page - 1];
+ = &vp->last->datum->aux[vp->objects_last_page - 1];
(void) add_aux_sym_symint (file_index);
forward_ref->ifd_ptr
- = &vp->last->datum->aux[ vp->objects_last_page - 1];
+ = &vp->last->datum->aux[vp->objects_last_page - 1];
}
/* Add information about array bounds if they exist. */
@@ -2021,7 +1997,7 @@ add_aux_sym_tir (t, state, hash_tbl)
};
/* NOTE: Mips documentation claims that the bitfield width goes here.
- But it needs to be emitted earlier. */
+ But it needs to be emitted earlier. */
return ret;
}
@@ -2045,16 +2021,16 @@ get_tag (tag, sym, basic_type)
if (hash_ptr != (shash_t *) NULL
&& hash_ptr->tag_ptr != (tag_t *) NULL)
- {
- tag_ptr = hash_ptr->tag_ptr;
- if (sym != (localsym_t *) NULL)
- {
- tag_ptr->basic_type = basic_type;
- tag_ptr->ifd = cur_file_ptr->file_index;
- tag_ptr->sym = sym;
- }
- return tag_ptr;
- }
+ {
+ tag_ptr = hash_ptr->tag_ptr;
+ if (sym != (localsym_t *) NULL)
+ {
+ tag_ptr->basic_type = basic_type;
+ tag_ptr->ifd = cur_file_ptr->file_index;
+ tag_ptr->sym = sym;
+ }
+ return tag_ptr;
+ }
if (hash_ptr == (shash_t *) NULL)
{
@@ -2091,7 +2067,7 @@ get_tag (tag, sym, basic_type)
static void
add_unknown_tag (ptag)
- tag_t *ptag; /* pointer to tag information */
+ tag_t *ptag; /* pointer to tag information */
{
shash_t *hash_ptr = ptag->hash_ptr;
char *name = hash_ptr->string;
@@ -2101,7 +2077,7 @@ add_unknown_tag (ptag)
#ifdef ECOFF_DEBUG
if (debug > 1)
{
- char *agg_type = "{unknown aggregate type}";
+ char *agg_type = "{unknown aggregate type}";
switch (ptag->basic_type)
{
case bt_Struct: agg_type = "struct"; break;
@@ -2240,9 +2216,11 @@ add_file (file_name, indx, fake)
this if we see a .file directive with a string, since that
implies that some sort of debugging information is being
provided. */
- if (! symbol_table_frozen && debug_type == DEBUG_NONE)
+ if (! symbol_table_frozen && debug_type == DEBUG_UNSPECIFIED)
debug_type = DEBUG_ECOFF;
}
+ else
+ debug_type = DEBUG_NONE;
#ifndef NO_LISTING
if (listing)
@@ -2294,7 +2272,7 @@ add_file (file_name, indx, fake)
}
}
- /* If this is a new file, create it. */
+ /* If this is a new file, create it. */
if (fil_ptr == (efdr_t *) NULL)
{
if (file_desc.objects_last_page == file_desc.objects_per_page)
@@ -2334,7 +2312,7 @@ add_file (file_name, indx, fake)
last_file_ptr = &fil_ptr->next_file;
/* Add void & int types to the file (void should be first to catch
- errant 0's within the index fields). */
+ errant 0's within the index fields). */
fil_ptr->void_type = add_aux_sym_tir (&void_type_info,
hash_yes,
&cur_file_ptr->thash_head[0]);
@@ -2359,7 +2337,7 @@ ecoff_new_file (name)
/* This is a hand coded assembler file, so automatically turn on
debugging information. */
- if (debug_type == DEBUG_NONE)
+ if (debug_type == DEBUG_UNSPECIFIED)
debug_type = DEBUG_ECOFF;
}
@@ -2368,10 +2346,10 @@ ecoff_new_file (name)
/* Convert storage class to string. */
static char *
-sc_to_string(storage_class)
+sc_to_string (storage_class)
sc_t storage_class;
{
- switch(storage_class)
+ switch (storage_class)
{
case sc_Nil: return "Nil,";
case sc_Text: return "Text,";
@@ -2409,10 +2387,10 @@ sc_to_string(storage_class)
/* Convert symbol type to string. */
static char *
-st_to_string(symbol_type)
+st_to_string (symbol_type)
st_t symbol_type;
{
- switch(symbol_type)
+ switch (symbol_type)
{
case st_Nil: return "Nil,";
case st_Global: return "Global,";
@@ -2734,13 +2712,13 @@ ecoff_directive_type (ignore)
coff_type.basic_type = map_coff_types[coff_type.orig_type];
tq_ptr = &coff_type.type_qualifiers[N_TQ];
- while (val &~ N_BTMASK)
+ while (val & ~N_BTMASK)
{
if (tq_ptr == &coff_type.type_qualifiers[0])
{
/* FIXME: We could handle this by setting the continued bit.
- There would still be a limit: the .type argument can not
- be infinite. */
+ There would still be a limit: the .type argument can not
+ be infinite. */
as_warn (_("The type of %s is too complex; it will be simplified"),
coff_sym_name);
break;
@@ -2764,11 +2742,11 @@ ecoff_directive_type (ignore)
if (tq_shft != &coff_type.type_qualifiers[0] && tq_shft[-1] == tq_Proc)
{
/* If this is a function, ignore it, so that we don't get two
- entries (one from the .ent, and one for the .def that
- precedes it). Save the type information so that the end
- block can properly add it after the begin block index. For
- MIPS knows what reason, we must strip off the function type
- at this point. */
+ entries (one from the .ent, and one for the .def that
+ precedes it). Save the type information so that the end
+ block can properly add it after the begin block index. For
+ MIPS knows what reason, we must strip off the function type
+ at this point. */
coff_is_function = 1;
tq_shft[-1] = tq_Nil;
}
@@ -2888,8 +2866,8 @@ ecoff_directive_endef (ignore)
}
/* If this is an array, make sure the same number of dimensions
- and sizes were passed, creating extra sizes for multiply
- dimensioned arrays if not passed. */
+ and sizes were passed, creating extra sizes for multiply
+ dimensioned arrays if not passed. */
coff_type.extra_sizes = 0;
if (diff)
{
@@ -2914,7 +2892,7 @@ ecoff_directive_endef (ignore)
&& coff_type.num_sizes - coff_type.extra_sizes == 1)
{
/* Is this a bitfield? This is indicated by a structure memeber
- having a size field that isn't an array. */
+ having a size field that isn't an array. */
coff_type.bitfield = 1;
}
@@ -2959,7 +2937,7 @@ ecoff_directive_endef (ignore)
break;
/* For the beginning of structs, unions, and enumerations, the
- size info needs to be passed in the value field. */
+ size info needs to be passed in the value field. */
case st_Block:
if (coff_type.num_sizes - coff_type.num_dims - coff_type.extra_sizes
!= 1)
@@ -2974,8 +2952,8 @@ ecoff_directive_endef (ignore)
break;
/* For the end of structs, unions, and enumerations, omit the
- name which is always ".eos". This needs to be done last, so
- that any error reporting above gives the correct name. */
+ name which is always ".eos". This needs to be done last, so
+ that any error reporting above gives the correct name. */
case st_End:
free (name);
name = (char *) NULL;
@@ -2984,10 +2962,10 @@ ecoff_directive_endef (ignore)
break;
/* Members of structures and unions that aren't bitfields, need
- to adjust the value from a byte offset to a bit offset.
- Members of enumerations do not have the value adjusted, and
- can be distinguished by indx == indexNil. For enumerations,
- update the maximum enumeration value. */
+ to adjust the value from a byte offset to a bit offset.
+ Members of enumerations do not have the value adjusted, and
+ can be distinguished by indx == indexNil. For enumerations,
+ update the maximum enumeration value. */
case st_Member:
if (! coff_type.bitfield && ! coff_inside_enumeration)
coff_value *= 8;
@@ -3245,9 +3223,10 @@ ecoff_directive_frame (ignore)
cur_proc_ptr->pdr.pcreg = tc_get_register (0);
-#if 0 /* Alpha-OSF1 adds "the offset of saved $a0 from $sp", according
- to Sandro. I don't yet know where this value should be stored, if
- anywhere. */
+#if 0
+ /* Alpha-OSF1 adds "the offset of saved $a0 from $sp", according to
+ Sandro. I don't yet know where this value should be stored, if
+ anywhere. */
demand_empty_rest_of_line ();
#else
s_ignore (42);
@@ -3388,7 +3367,7 @@ mark_stabs (ignore)
{
if (! stabs_seen)
{
- /* Add a dummy @stabs dymbol. */
+ /* Add a dummy @stabs dymbol. */
stabs_seen = 1;
(void) add_ecoff_symbol (stabs_symbol, stNil, scInfo,
(symbolS *) NULL,
@@ -3399,7 +3378,7 @@ mark_stabs (ignore)
/* Parse .weakext directives. */
#ifndef TC_MIPS
-/* For TC_MIPS use the version in tc-mips.c. */
+/* For TC_MIPS use the version in tc-mips.c. */
void
ecoff_directive_weakext (ignore)
int ignore;
@@ -3434,7 +3413,7 @@ ecoff_directive_weakext (ignore)
if (exp.X_op != O_symbol)
{
as_bad (_("bad .weakext directive"));
- ignore_rest_of_line();
+ ignore_rest_of_line ();
return;
}
symbol_set_value_expression (symbolP, &exp);
@@ -3646,7 +3625,7 @@ ecoff_frob_symbol (sym)
static asymbol scom_symbol;
/* We must construct a fake section similar to bfd_com_section
- but with the name .scommon. */
+ but with the name .scommon. */
if (scom_section.name == NULL)
{
scom_section = bfd_com_section;
@@ -3761,7 +3740,7 @@ ecoff_build_lineno (backend, buf, bufend, offset, linecntptr)
embedded PIC code, it will put strings in the .text section
before the first procedure. We cope by inserting a dummy line if
the address of the first procedure is not 0. Hopefully this
- won't screw things up too badly.
+ won't screw things up too badly.
Don't do this for ECOFF assembly source line numbers. They work
without this extra attention. */
@@ -3789,8 +3768,8 @@ ecoff_build_lineno (backend, buf, bufend, offset, linecntptr)
long delta;
/* Get the offset to the memory address of the next line number
- (in words). Do this first, so that we can skip ahead to the
- next useful line number entry. */
+ (in words). Do this first, so that we can skip ahead to the
+ next useful line number entry. */
if (l->next == (lineno_list_t *) NULL)
{
/* We want a count of zero, but it will be decremented
@@ -4030,11 +4009,11 @@ ecoff_build_symbols (backend, buf, bufend, offset)
symint_t indx;
/* The value of a block start symbol is the
- offset from the start of the procedure. For
- other symbols we just use the gas value (but
- we must offset it by the vma of the section,
- just as BFD does, because BFD will not see
- this value). */
+ offset from the start of the procedure. For
+ other symbols we just use the gas value (but
+ we must offset it by the vma of the section,
+ just as BFD does, because BFD will not see
+ this value). */
if (sym_ptr->ecoff_sym.asym.st == (int) st_Block
&& sym_ptr->ecoff_sym.asym.sc == (int) sc_Text)
{
@@ -4066,8 +4045,8 @@ ecoff_build_symbols (backend, buf, bufend, offset)
sym_ptr->ecoff_sym.asym.st = st_StaticProc;
/* Get the type and storage class based on where
- the symbol actually wound up. Traditionally,
- N_LBRAC and N_RBRAC are *not* relocated. */
+ the symbol actually wound up. Traditionally,
+ N_LBRAC and N_RBRAC are *not* relocated. */
indx = sym_ptr->ecoff_sym.asym.index;
if (sym_ptr->ecoff_sym.asym.st == st_Nil
&& sym_ptr->ecoff_sym.asym.sc == sc_Nil
@@ -4143,8 +4122,8 @@ ecoff_build_symbols (backend, buf, bufend, offset)
else
{
/* This must be a user named section.
- This is not possible in ECOFF, but it
- is in ELF. */
+ This is not possible in ECOFF, but it
+ is in ELF. */
sc = sc_Data;
}
@@ -4153,11 +4132,11 @@ ecoff_build_symbols (backend, buf, bufend, offset)
}
/* This is just an external symbol if it is
- outside a procedure and it has a type.
- FIXME: g++ will generate symbols which have
- different names in the debugging information
- than the actual symbol. Should we handle
- them here? */
+ outside a procedure and it has a type.
+ FIXME: g++ will generate symbols which have
+ different names in the debugging information
+ than the actual symbol. Should we handle
+ them here? */
if ((S_IS_EXTERNAL (as_sym)
|| S_IS_WEAK (as_sym)
|| ! S_IS_DEFINED (as_sym))
@@ -4167,14 +4146,14 @@ ecoff_build_symbols (backend, buf, bufend, offset)
local = 0;
/* This is just an external symbol if it is a
- common symbol. */
+ common symbol. */
if (S_IS_COMMON (as_sym))
local = 0;
/* If an st_end symbol has an associated gas
- symbol, then it is a local label created for
- a .bend or .end directive. Stabs line
- numbers will have \001 in the names. */
+ symbol, then it is a local label created for
+ a .bend or .end directive. Stabs line
+ numbers will have \001 in the names. */
if (local
&& sym_ptr->ecoff_sym.asym.st != st_End
&& strchr (sym_ptr->name, '\001') == 0)
@@ -4222,10 +4201,10 @@ ecoff_build_symbols (backend, buf, bufend, offset)
}
/* The value of the symbol marking the end of a
- procedure is the size of the procedure. The
- value of the symbol marking the end of a
- block is the offset from the start of the
- procedure to the block. */
+ procedure is the size of the procedure. The
+ value of the symbol marking the end of a
+ block is the offset from the start of the
+ procedure to the block. */
if (begin_type == st_Proc
|| begin_type == st_StaticProc)
{
@@ -4239,7 +4218,7 @@ ecoff_build_symbols (backend, buf, bufend, offset)
- S_GET_VALUE (begin_ptr->as_sym));
/* If the size is odd, this is probably a
- mips16 function; force it to be even. */
+ mips16 function; force it to be even. */
if ((sym_ptr->ecoff_sym.asym.value & 1) != 0)
++sym_ptr->ecoff_sym.asym.value;
@@ -4305,7 +4284,7 @@ ecoff_build_symbols (backend, buf, bufend, offset)
sym_ptr->ecoff_sym.ifd = fil_ptr->file_index;
/* Don't try to merge an FDR which has an
- external symbol attached to it. */
+ external symbol attached to it. */
if (S_IS_EXTERNAL (as_sym) || S_IS_WEAK (as_sym))
fil_ptr->fdr.fMerge = 0;
}
@@ -4386,9 +4365,9 @@ ecoff_build_procs (backend, buf, bufend, offset)
if (first)
{
/* This code used to force the adr of the very
- first fdr to be 0. However, the native tools
- don't do that, and I can't remember why it
- used to work that way, so I took it out. */
+ first fdr to be 0. However, the native tools
+ don't do that, and I can't remember why it
+ used to work that way, so I took it out. */
fil_ptr->fdr.adr = adr;
first = 0;
}
@@ -4700,7 +4679,7 @@ ecoff_build_debug (hdr, bufp, backend)
efdr_t *fil_ptr;
int end_warning;
efdr_t *hold_file_ptr;
- proc_t * hold_proc_ptr;
+ proc_t *hold_proc_ptr;
symbolS *sym;
char *buf;
char *bufend;
@@ -4871,7 +4850,6 @@ allocate_cluster (npages)
return value;
}
-
static page_type *cluster_ptr = NULL;
static unsigned long pages_left = 0;
@@ -4893,7 +4871,7 @@ allocate_page ()
pages_left--;
return cluster_ptr++;
-#else /* MALLOC_CHECK */
+#else /* MALLOC_CHECK */
page_type *ptr;
@@ -4901,7 +4879,7 @@ allocate_page ()
memset (ptr, 0, PAGE_USIZE);
return ptr;
-#endif /* MALLOC_CHECK */
+#endif /* MALLOC_CHECK */
}
/* Allocate scoping information. */
@@ -4914,23 +4892,23 @@ allocate_scope ()
#ifndef MALLOC_CHECK
- ptr = alloc_counts[(int)alloc_type_scope].free_list.f_scope;
+ ptr = alloc_counts[(int) alloc_type_scope].free_list.f_scope;
if (ptr != (scope_t *) NULL)
- alloc_counts[ (int)alloc_type_scope ].free_list.f_scope = ptr->free;
+ alloc_counts[(int) alloc_type_scope].free_list.f_scope = ptr->free;
else
{
- register int unallocated = alloc_counts[(int)alloc_type_scope].unallocated;
- register page_type *cur_page = alloc_counts[(int)alloc_type_scope].cur_page;
+ register int unallocated = alloc_counts[(int) alloc_type_scope].unallocated;
+ register page_type *cur_page = alloc_counts[(int) alloc_type_scope].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (scope_t);
- alloc_counts[(int)alloc_type_scope].cur_page = cur_page = allocate_page ();
- alloc_counts[(int)alloc_type_scope].total_pages++;
+ alloc_counts[(int) alloc_type_scope].cur_page = cur_page = allocate_page ();
+ alloc_counts[(int) alloc_type_scope].total_pages++;
}
ptr = &cur_page->scope[--unallocated];
- alloc_counts[(int)alloc_type_scope].unallocated = unallocated;
+ alloc_counts[(int) alloc_type_scope].unallocated = unallocated;
}
#else
@@ -4939,7 +4917,7 @@ allocate_scope ()
#endif
- alloc_counts[(int)alloc_type_scope].total_alloc++;
+ alloc_counts[(int) alloc_type_scope].total_alloc++;
*ptr = initial_scope;
return ptr;
}
@@ -4950,11 +4928,11 @@ static void
free_scope (ptr)
scope_t *ptr;
{
- alloc_counts[(int)alloc_type_scope].total_free++;
+ alloc_counts[(int) alloc_type_scope].total_free++;
#ifndef MALLOC_CHECK
- ptr->free = alloc_counts[(int)alloc_type_scope].free_list.f_scope;
- alloc_counts[(int)alloc_type_scope].free_list.f_scope = ptr;
+ ptr->free = alloc_counts[(int) alloc_type_scope].free_list.f_scope;
+ alloc_counts[(int) alloc_type_scope].free_list.f_scope = ptr;
#else
free ((PTR) ptr);
#endif
@@ -4970,18 +4948,18 @@ allocate_vlinks ()
#ifndef MALLOC_CHECK
- register int unallocated = alloc_counts[(int)alloc_type_vlinks].unallocated;
- register page_type *cur_page = alloc_counts[(int)alloc_type_vlinks].cur_page;
+ register int unallocated = alloc_counts[(int) alloc_type_vlinks].unallocated;
+ register page_type *cur_page = alloc_counts[(int) alloc_type_vlinks].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (vlinks_t);
- alloc_counts[(int)alloc_type_vlinks].cur_page = cur_page = allocate_page ();
- alloc_counts[(int)alloc_type_vlinks].total_pages++;
+ alloc_counts[(int) alloc_type_vlinks].cur_page = cur_page = allocate_page ();
+ alloc_counts[(int) alloc_type_vlinks].total_pages++;
}
ptr = &cur_page->vlinks[--unallocated];
- alloc_counts[(int)alloc_type_vlinks].unallocated = unallocated;
+ alloc_counts[(int) alloc_type_vlinks].unallocated = unallocated;
#else
@@ -4989,7 +4967,7 @@ allocate_vlinks ()
#endif
- alloc_counts[(int)alloc_type_vlinks].total_alloc++;
+ alloc_counts[(int) alloc_type_vlinks].total_alloc++;
*ptr = initial_vlinks;
return ptr;
}
@@ -5004,18 +4982,18 @@ allocate_shash ()
#ifndef MALLOC_CHECK
- register int unallocated = alloc_counts[(int)alloc_type_shash].unallocated;
- register page_type *cur_page = alloc_counts[(int)alloc_type_shash].cur_page;
+ register int unallocated = alloc_counts[(int) alloc_type_shash].unallocated;
+ register page_type *cur_page = alloc_counts[(int) alloc_type_shash].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (shash_t);
- alloc_counts[(int)alloc_type_shash].cur_page = cur_page = allocate_page ();
- alloc_counts[(int)alloc_type_shash].total_pages++;
+ alloc_counts[(int) alloc_type_shash].cur_page = cur_page = allocate_page ();
+ alloc_counts[(int) alloc_type_shash].total_pages++;
}
ptr = &cur_page->shash[--unallocated];
- alloc_counts[(int)alloc_type_shash].unallocated = unallocated;
+ alloc_counts[(int) alloc_type_shash].unallocated = unallocated;
#else
@@ -5023,7 +5001,7 @@ allocate_shash ()
#endif
- alloc_counts[(int)alloc_type_shash].total_alloc++;
+ alloc_counts[(int) alloc_type_shash].total_alloc++;
*ptr = initial_shash;
return ptr;
}
@@ -5038,18 +5016,18 @@ allocate_thash ()
#ifndef MALLOC_CHECK
- register int unallocated = alloc_counts[(int)alloc_type_thash].unallocated;
- register page_type *cur_page = alloc_counts[(int)alloc_type_thash].cur_page;
+ register int unallocated = alloc_counts[(int) alloc_type_thash].unallocated;
+ register page_type *cur_page = alloc_counts[(int) alloc_type_thash].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (thash_t);
- alloc_counts[(int)alloc_type_thash].cur_page = cur_page = allocate_page ();
- alloc_counts[(int)alloc_type_thash].total_pages++;
+ alloc_counts[(int) alloc_type_thash].cur_page = cur_page = allocate_page ();
+ alloc_counts[(int) alloc_type_thash].total_pages++;
}
ptr = &cur_page->thash[--unallocated];
- alloc_counts[(int)alloc_type_thash].unallocated = unallocated;
+ alloc_counts[(int) alloc_type_thash].unallocated = unallocated;
#else
@@ -5057,7 +5035,7 @@ allocate_thash ()
#endif
- alloc_counts[(int)alloc_type_thash].total_alloc++;
+ alloc_counts[(int) alloc_type_thash].total_alloc++;
*ptr = initial_thash;
return ptr;
}
@@ -5072,23 +5050,23 @@ allocate_tag ()
#ifndef MALLOC_CHECK
- ptr = alloc_counts[(int)alloc_type_tag].free_list.f_tag;
+ ptr = alloc_counts[(int) alloc_type_tag].free_list.f_tag;
if (ptr != (tag_t *) NULL)
- alloc_counts[(int)alloc_type_tag].free_list.f_tag = ptr->free;
+ alloc_counts[(int) alloc_type_tag].free_list.f_tag = ptr->free;
else
{
- register int unallocated = alloc_counts[(int)alloc_type_tag].unallocated;
- register page_type *cur_page = alloc_counts[(int)alloc_type_tag].cur_page;
+ register int unallocated = alloc_counts[(int) alloc_type_tag].unallocated;
+ register page_type *cur_page = alloc_counts[(int) alloc_type_tag].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (tag_t);
- alloc_counts[(int)alloc_type_tag].cur_page = cur_page = allocate_page ();
- alloc_counts[(int)alloc_type_tag].total_pages++;
+ alloc_counts[(int) alloc_type_tag].cur_page = cur_page = allocate_page ();
+ alloc_counts[(int) alloc_type_tag].total_pages++;
}
ptr = &cur_page->tag[--unallocated];
- alloc_counts[(int)alloc_type_tag].unallocated = unallocated;
+ alloc_counts[(int) alloc_type_tag].unallocated = unallocated;
}
#else
@@ -5097,7 +5075,7 @@ allocate_tag ()
#endif
- alloc_counts[(int)alloc_type_tag].total_alloc++;
+ alloc_counts[(int) alloc_type_tag].total_alloc++;
*ptr = initial_tag;
return ptr;
}
@@ -5108,11 +5086,11 @@ static void
free_tag (ptr)
tag_t *ptr;
{
- alloc_counts[(int)alloc_type_tag].total_free++;
+ alloc_counts[(int) alloc_type_tag].total_free++;
#ifndef MALLOC_CHECK
- ptr->free = alloc_counts[(int)alloc_type_tag].free_list.f_tag;
- alloc_counts[(int)alloc_type_tag].free_list.f_tag = ptr;
+ ptr->free = alloc_counts[(int) alloc_type_tag].free_list.f_tag;
+ alloc_counts[(int) alloc_type_tag].free_list.f_tag = ptr;
#else
free ((PTR_T) ptr);
#endif
@@ -5128,18 +5106,18 @@ allocate_forward ()
#ifndef MALLOC_CHECK
- register int unallocated = alloc_counts[(int)alloc_type_forward].unallocated;
- register page_type *cur_page = alloc_counts[(int)alloc_type_forward].cur_page;
+ register int unallocated = alloc_counts[(int) alloc_type_forward].unallocated;
+ register page_type *cur_page = alloc_counts[(int) alloc_type_forward].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (forward_t);
- alloc_counts[(int)alloc_type_forward].cur_page = cur_page = allocate_page ();
- alloc_counts[(int)alloc_type_forward].total_pages++;
+ alloc_counts[(int) alloc_type_forward].cur_page = cur_page = allocate_page ();
+ alloc_counts[(int) alloc_type_forward].total_pages++;
}
ptr = &cur_page->forward[--unallocated];
- alloc_counts[(int)alloc_type_forward].unallocated = unallocated;
+ alloc_counts[(int) alloc_type_forward].unallocated = unallocated;
#else
@@ -5147,7 +5125,7 @@ allocate_forward ()
#endif
- alloc_counts[(int)alloc_type_forward].total_alloc++;
+ alloc_counts[(int) alloc_type_forward].total_alloc++;
*ptr = initial_forward;
return ptr;
}
@@ -5162,23 +5140,23 @@ allocate_thead ()
#ifndef MALLOC_CHECK
- ptr = alloc_counts[(int)alloc_type_thead].free_list.f_thead;
+ ptr = alloc_counts[(int) alloc_type_thead].free_list.f_thead;
if (ptr != (thead_t *) NULL)
- alloc_counts[ (int)alloc_type_thead ].free_list.f_thead = ptr->free;
+ alloc_counts[(int) alloc_type_thead].free_list.f_thead = ptr->free;
else
{
- register int unallocated = alloc_counts[(int)alloc_type_thead].unallocated;
- register page_type *cur_page = alloc_counts[(int)alloc_type_thead].cur_page;
+ register int unallocated = alloc_counts[(int) alloc_type_thead].unallocated;
+ register page_type *cur_page = alloc_counts[(int) alloc_type_thead].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (thead_t);
- alloc_counts[(int)alloc_type_thead].cur_page = cur_page = allocate_page ();
- alloc_counts[(int)alloc_type_thead].total_pages++;
+ alloc_counts[(int) alloc_type_thead].cur_page = cur_page = allocate_page ();
+ alloc_counts[(int) alloc_type_thead].total_pages++;
}
ptr = &cur_page->thead[--unallocated];
- alloc_counts[(int)alloc_type_thead].unallocated = unallocated;
+ alloc_counts[(int) alloc_type_thead].unallocated = unallocated;
}
#else
@@ -5187,7 +5165,7 @@ allocate_thead ()
#endif
- alloc_counts[(int)alloc_type_thead].total_alloc++;
+ alloc_counts[(int) alloc_type_thead].total_alloc++;
*ptr = initial_thead;
return ptr;
}
@@ -5198,11 +5176,11 @@ static void
free_thead (ptr)
thead_t *ptr;
{
- alloc_counts[(int)alloc_type_thead].total_free++;
+ alloc_counts[(int) alloc_type_thead].total_free++;
#ifndef MALLOC_CHECK
- ptr->free = (thead_t *) alloc_counts[(int)alloc_type_thead].free_list.f_thead;
- alloc_counts[(int)alloc_type_thead].free_list.f_thead = ptr;
+ ptr->free = (thead_t *) alloc_counts[(int) alloc_type_thead].free_list.f_thead;
+ alloc_counts[(int) alloc_type_thead].free_list.f_thead = ptr;
#else
free ((PTR_T) ptr);
#endif
@@ -5216,18 +5194,18 @@ allocate_lineno_list ()
#ifndef MALLOC_CHECK
- register int unallocated = alloc_counts[(int)alloc_type_lineno].unallocated;
- register page_type *cur_page = alloc_counts[(int)alloc_type_lineno].cur_page;
+ register int unallocated = alloc_counts[(int) alloc_type_lineno].unallocated;
+ register page_type *cur_page = alloc_counts[(int) alloc_type_lineno].cur_page;
if (unallocated == 0)
{
unallocated = PAGE_SIZE / sizeof (lineno_list_t);
- alloc_counts[(int)alloc_type_lineno].cur_page = cur_page = allocate_page ();
- alloc_counts[(int)alloc_type_lineno].total_pages++;
+ alloc_counts[(int) alloc_type_lineno].cur_page = cur_page = allocate_page ();
+ alloc_counts[(int) alloc_type_lineno].total_pages++;
}
ptr = &cur_page->lineno[--unallocated];
- alloc_counts[(int)alloc_type_lineno].unallocated = unallocated;
+ alloc_counts[(int) alloc_type_lineno].unallocated = unallocated;
#else
@@ -5235,7 +5213,7 @@ allocate_lineno_list ()
#endif
- alloc_counts[(int)alloc_type_lineno].total_alloc++;
+ alloc_counts[(int) alloc_type_lineno].total_alloc++;
*ptr = initial_lineno_list;
return ptr;
}
@@ -5257,7 +5235,7 @@ ecoff_set_gp_prolog_size (sz)
cur_proc_ptr->pdr.gp_used = 1;
}
-int
+int
ecoff_no_current_file ()
{
return cur_file_ptr == (efdr_t *) NULL;
@@ -5272,7 +5250,7 @@ ecoff_generate_asm_lineno ()
as_where (&filename, &lineno);
- if (current_stabs_filename == (char *)NULL
+ if (current_stabs_filename == (char *) NULL
|| strcmp (current_stabs_filename, filename))
add_file (filename, 0, 1);
@@ -5297,7 +5275,7 @@ ecoff_generate_asm_lineno ()
pl = &noproc_lineno;
while (*pl != (lineno_list_t *) NULL)
- pl = &(*pl)->next;
+ pl = &(*pl)->next;
*pl = list;
}
else
diff --git a/contrib/binutils/gas/ehopt.c b/contrib/binutils/gas/ehopt.c
index a0a5f62..4131436 100644
--- a/contrib/binutils/gas/ehopt.c
+++ b/contrib/binutils/gas/ehopt.c
@@ -1,5 +1,5 @@
/* ehopt.c--optimize gcc exception frame information.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2000 Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>.
This file is part of GAS, the GNU Assembler.
@@ -17,7 +17,7 @@ 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. */
+02111-1307, USA. */
#include "as.h"
#include "subsegs.h"
@@ -31,13 +31,17 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
/* Try to optimize gcc 2.8 exception frame information.
Exception frame information is emitted for every function in the
- .eh_frame section. Simple information for a function with no
- exceptions looks like this:
+ .eh_frame or .debug_frame sections. Simple information for a function
+ with no exceptions looks like this:
__FRAME_BEGIN__:
.4byte .LLCIE1 / Length of Common Information Entry
.LSCIE1:
+#if .eh_frame
.4byte 0x0 / CIE Identifier Tag
+#elif .debug_frame
+ .4byte 0xffffffff / CIE Identifier Tag
+#endif
.byte 0x1 / CIE Version
.byte 0x0 / CIE Augmentation (none)
.byte 0x1 / ULEB128 0x1 (CIE Code Alignment Factor)
@@ -84,30 +88,33 @@ __FRAME_BEGIN__:
not know this value, it always uses four bytes. We will know the
value at the end of assembly, so we can do better. */
-static int eh_frame_code_alignment PARAMS ((void));
+static int eh_frame_code_alignment PARAMS ((int));
/* Get the code alignment factor from the CIE. */
static int
-eh_frame_code_alignment ()
+eh_frame_code_alignment (in_seg)
+ int in_seg;
{
+ /* ??? Assume .eh_frame and .debug_frame have the same alignment. */
static int code_alignment;
- segT current_seg;
- subsegT current_subseg;
+
fragS *f;
fixS *fix;
int offset;
+ char CIE_id;
char augmentation[10];
int iaug;
if (code_alignment != 0)
return code_alignment;
- /* We should find the CIE at the start of the .eh_frame section. */
+ /* Can't find the alignment if we've changed sections. */
+ if (! in_seg)
+ return -1;
+
+ /* We should find the CIE at the start of the section. */
- current_seg = now_seg;
- current_subseg = now_subseg;
- subseg_new (".eh_frame", 0);
#if defined (BFD_ASSEMBLER) || defined (MANY_SEGMENTS)
f = seg_info (now_seg)->frchainP->frch_root;
#else
@@ -118,11 +125,15 @@ eh_frame_code_alignment ()
#else
fix = *seg_fix_rootP;
#endif
- subseg_set (current_seg, current_subseg);
/* Look through the frags of the section to find the code alignment. */
- /* First make sure that the CIE Identifier Tag is 0. */
+ /* First make sure that the CIE Identifier Tag is 0/-1. */
+
+ if (strcmp (segment_name (now_seg), ".debug_frame") == 0)
+ CIE_id = (char)0xff;
+ else
+ CIE_id = 0;
offset = 4;
while (f != NULL && offset >= f->fr_fix)
@@ -132,10 +143,10 @@ eh_frame_code_alignment ()
}
if (f == NULL
|| f->fr_fix - offset < 4
- || f->fr_literal[offset] != 0
- || f->fr_literal[offset + 1] != 0
- || f->fr_literal[offset + 2] != 0
- || f->fr_literal[offset + 3] != 0)
+ || f->fr_literal[offset] != CIE_id
+ || f->fr_literal[offset + 1] != CIE_id
+ || f->fr_literal[offset + 2] != CIE_id
+ || f->fr_literal[offset + 3] != CIE_id)
{
code_alignment = -1;
return -1;
@@ -261,33 +272,42 @@ check_eh_frame (exp, pnbytes)
expressionS *exp;
unsigned int *pnbytes;
{
- static int saw_size;
- static symbolS *size_end_sym;
- static int saw_advance_loc4;
- static fragS *loc4_frag;
- static int loc4_fix;
-
- if (saw_size
- && S_IS_DEFINED (size_end_sym))
+ struct frame_data
+ {
+ symbolS *size_end_sym;
+ fragS *loc4_frag;
+ int saw_size;
+ int saw_advance_loc4;
+ int loc4_fix;
+ };
+
+ static struct frame_data eh_frame_data;
+ static struct frame_data debug_frame_data;
+ struct frame_data *d;
+
+ /* Don't optimize. */
+ if (flag_traditional_format)
+ return 0;
+
+ /* Select the proper section data. */
+ if (strcmp (segment_name (now_seg), ".eh_frame") == 0)
+ d = &eh_frame_data;
+ else if (strcmp (segment_name (now_seg), ".debug_frame") == 0)
+ d = &debug_frame_data;
+ else
+ return 0;
+
+ if (d->saw_size && S_IS_DEFINED (d->size_end_sym))
{
/* We have come to the end of the CIE or FDE. See below where
we set saw_size. We must check this first because we may now
be looking at the next size. */
- saw_size = 0;
- saw_advance_loc4 = 0;
+ d->saw_size = 0;
+ d->saw_advance_loc4 = 0;
}
- if (flag_traditional_format)
- {
- /* Don't optimize. */
- }
- else if (strcmp (segment_name (now_seg), ".eh_frame") != 0)
- {
- saw_size = 0;
- saw_advance_loc4 = 0;
- }
- else if (! saw_size
- && *pnbytes == 4)
+ if (! d->saw_size
+ && *pnbytes == 4)
{
/* This might be the size of the CIE or FDE. We want to know
the size so that we don't accidentally optimize across an FDE
@@ -301,23 +321,23 @@ check_eh_frame (exp, pnbytes)
if ((exp->X_op == O_symbol || exp->X_op == O_subtract)
&& ! S_IS_DEFINED (exp->X_add_symbol))
{
- saw_size = 1;
- size_end_sym = exp->X_add_symbol;
+ d->saw_size = 1;
+ d->size_end_sym = exp->X_add_symbol;
}
}
- else if (saw_size
+ else if (d->saw_size
&& *pnbytes == 1
&& exp->X_op == O_constant
&& exp->X_add_number == DW_CFA_advance_loc4)
{
/* This might be a DW_CFA_advance_loc4. Record the frag and the
position within the frag, so that we can change it later. */
- saw_advance_loc4 = 1;
+ d->saw_advance_loc4 = 1;
frag_grow (1);
- loc4_frag = frag_now;
- loc4_fix = frag_now_fix ();
+ d->loc4_frag = frag_now;
+ d->loc4_fix = frag_now_fix ();
}
- else if (saw_advance_loc4
+ else if (d->saw_advance_loc4
&& *pnbytes == 4
&& exp->X_op == O_constant)
{
@@ -328,9 +348,9 @@ check_eh_frame (exp, pnbytes)
reduced to a constant. We can do the optimization entirely
in this function. */
- saw_advance_loc4 = 0;
+ d->saw_advance_loc4 = 0;
- ca = eh_frame_code_alignment ();
+ ca = eh_frame_code_alignment (1);
if (ca < 0)
{
/* Don't optimize. */
@@ -338,41 +358,40 @@ check_eh_frame (exp, pnbytes)
else if (exp->X_add_number % ca == 0
&& exp->X_add_number / ca < 0x40)
{
- loc4_frag->fr_literal[loc4_fix]
+ d->loc4_frag->fr_literal[d->loc4_fix]
= DW_CFA_advance_loc | (exp->X_add_number / ca);
/* No more bytes needed. */
return 1;
}
else if (exp->X_add_number < 0x100)
{
- loc4_frag->fr_literal[loc4_fix] = DW_CFA_advance_loc1;
+ d->loc4_frag->fr_literal[d->loc4_fix] = DW_CFA_advance_loc1;
*pnbytes = 1;
}
else if (exp->X_add_number < 0x10000)
{
- loc4_frag->fr_literal[loc4_fix] = DW_CFA_advance_loc2;
+ d->loc4_frag->fr_literal[d->loc4_fix] = DW_CFA_advance_loc2;
*pnbytes = 2;
}
}
- else if (saw_advance_loc4
+ else if (d->saw_advance_loc4
&& *pnbytes == 4
&& exp->X_op == O_subtract)
{
-
/* This is a case we can optimize. The expression was not
reduced, so we can not finish the optimization until the end
of the assembly. We set up a variant frag which we handle
later. */
- saw_advance_loc4 = 0;
+ d->saw_advance_loc4 = 0;
frag_var (rs_cfa, 4, 0, 0, make_expr_symbol (exp),
- loc4_fix, (char *) loc4_frag);
+ d->loc4_fix, (char *) d->loc4_frag);
return 1;
}
else
- saw_advance_loc4 = 0;
+ d->saw_advance_loc4 = 0;
return 0;
}
@@ -389,7 +408,7 @@ eh_frame_estimate_size_before_relax (frag)
offsetT diff;
int ret;
- ca = eh_frame_code_alignment ();
+ ca = eh_frame_code_alignment (0);
diff = resolve_symbol_value (frag->fr_symbol, 0);
if (ca < 0)
@@ -444,7 +463,7 @@ eh_frame_convert_frag (frag)
{
int ca;
- ca = eh_frame_code_alignment ();
+ ca = eh_frame_code_alignment (0);
assert (ca > 0 && diff % ca == 0 && diff / ca < 0x40);
loc4_frag->fr_literal[loc4_fix] = DW_CFA_advance_loc | (diff / ca);
}
diff --git a/contrib/binutils/gas/expr.c b/contrib/binutils/gas/expr.c
index 7cca437..2df2f63 100644
--- a/contrib/binutils/gas/expr.c
+++ b/contrib/binutils/gas/expr.c
@@ -1,5 +1,5 @@
/* expr.c -operands, expressions-
- Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+ Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -17,14 +17,12 @@
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. */
+ 02111-1307, USA. */
-/*
- * This is really a branch office of as-read.c. I split it out to clearly
- * distinguish the world of expressions from the world of statements.
- * (It also gives smaller files to re-compile.)
- * Here, "operand"s are of expressions, not instructions.
- */
+/* This is really a branch office of as-read.c. I split it out to clearly
+ distinguish the world of expressions from the world of statements.
+ (It also gives smaller files to re-compile.)
+ Here, "operand"s are of expressions, not instructions. */
#include <ctype.h>
#include <string.h>
@@ -43,15 +41,14 @@ static void mri_char_constant PARAMS ((expressionS *));
static void current_location PARAMS ((expressionS *));
static void clean_up_expression PARAMS ((expressionS * expressionP));
static segT operand PARAMS ((expressionS *));
-static operatorT operator PARAMS ((void));
+static operatorT operator PARAMS ((int *));
extern const char EXP_CHARS[], FLT_CHARS[];
/* We keep a mapping of expression symbols to file positions, so that
we can provide better error messages. */
-struct expr_symbol_line
-{
+struct expr_symbol_line {
struct expr_symbol_line *next;
symbolS *sym;
char *file;
@@ -210,10 +207,8 @@ expr_build_dot ()
return make_expr_symbol (&e);
}
-/*
- * Build any floating-point literal here.
- * Also build any bignum literal here.
- */
+/* Build any floating-point literal here.
+ Also build any bignum literal here. */
/* Seems atof_machine can backscan through generic_bignum and hit whatever
happens to be loaded before it in memory. And its way too complicated
@@ -221,23 +216,23 @@ expr_build_dot ()
and never write into the early words, thus they'll always be zero.
I hate Dean's floating-point code. Bleh. */
LITTLENUM_TYPE generic_bignum[SIZE_OF_LARGE_NUMBER + 6];
-FLONUM_TYPE generic_floating_point_number =
-{
- &generic_bignum[6], /* low (JF: Was 0) */
- &generic_bignum[SIZE_OF_LARGE_NUMBER + 6 - 1], /* high JF: (added +6) */
- 0, /* leader */
- 0, /* exponent */
- 0 /* sign */
+
+FLONUM_TYPE generic_floating_point_number = {
+ &generic_bignum[6], /* low. (JF: Was 0) */
+ &generic_bignum[SIZE_OF_LARGE_NUMBER + 6 - 1], /* high. JF: (added +6) */
+ 0, /* leader. */
+ 0, /* exponent. */
+ 0 /* sign. */
};
-/* If nonzero, we've been asked to assemble nan, +inf or -inf */
+
+/* If nonzero, we've been asked to assemble nan, +inf or -inf. */
int generic_floating_point_magic;
static void
floating_constant (expressionP)
expressionS *expressionP;
{
- /* input_line_pointer->*/
- /* floating-point constant. */
+ /* input_line_pointer -> floating-point constant. */
int error_code;
error_code = atof_generic (&input_line_pointer, ".", EXP_CHARS,
@@ -255,13 +250,13 @@ floating_constant (expressionP)
}
}
expressionP->X_op = O_big;
- /* input_line_pointer->just after constant, */
- /* which may point to whitespace. */
+ /* input_line_pointer -> just after constant, which may point to
+ whitespace. */
expressionP->X_add_number = -1;
}
-static valueT
-generic_bignum_to_int32 ()
+static valueT
+generic_bignum_to_int32 ()
{
valueT number =
((generic_bignum[1] & LITTLENUM_MASK) << LITTLENUM_NUMBER_OF_BITS)
@@ -271,17 +266,17 @@ generic_bignum_to_int32 ()
}
#ifdef BFD64
-static valueT
-generic_bignum_to_int64 ()
+static valueT
+generic_bignum_to_int64 ()
{
- valueT number =
- ((((((((valueT) generic_bignum[3] & LITTLENUM_MASK)
- << LITTLENUM_NUMBER_OF_BITS)
- | ((valueT) generic_bignum[2] & LITTLENUM_MASK))
- << LITTLENUM_NUMBER_OF_BITS)
- | ((valueT) generic_bignum[1] & LITTLENUM_MASK))
- << LITTLENUM_NUMBER_OF_BITS)
- | ((valueT) generic_bignum[0] & LITTLENUM_MASK));
+ valueT number =
+ ((((((((valueT) generic_bignum[3] & LITTLENUM_MASK)
+ << LITTLENUM_NUMBER_OF_BITS)
+ | ((valueT) generic_bignum[2] & LITTLENUM_MASK))
+ << LITTLENUM_NUMBER_OF_BITS)
+ | ((valueT) generic_bignum[1] & LITTLENUM_MASK))
+ << LITTLENUM_NUMBER_OF_BITS)
+ | ((valueT) generic_bignum[0] & LITTLENUM_MASK));
return number;
}
#endif
@@ -291,19 +286,19 @@ integer_constant (radix, expressionP)
int radix;
expressionS *expressionP;
{
- char *start; /* start of number. */
+ char *start; /* Start of number. */
char *suffix = NULL;
char c;
- valueT number; /* offset or (absolute) value */
- short int digit; /* value of next digit in current radix */
- short int maxdig = 0;/* highest permitted digit value. */
- int too_many_digits = 0; /* if we see >= this number of */
- char *name; /* points to name of symbol */
- symbolS *symbolP; /* points to symbol */
+ valueT number; /* Offset or (absolute) value. */
+ short int digit; /* Value of next digit in current radix. */
+ short int maxdig = 0; /* Highest permitted digit value. */
+ int too_many_digits = 0; /* If we see >= this number of. */
+ char *name; /* Points to name of symbol. */
+ symbolS *symbolP; /* Points to symbol. */
- int small; /* true if fits in 32 bits. */
+ int small; /* True if fits in 32 bits. */
- /* May be bignum, or may fit in 32 bits. */
+ /* May be bignum, or may fit in 32 bits. */
/* Most numbers fit into 32 bits, and we want this case to be fast.
so we pretend it will fit into 32 bits. If, after making up a 32
bit number, we realise that we have scanned more digits than
@@ -316,7 +311,7 @@ integer_constant (radix, expressionP)
32 bits, and change it back to a 32-bit number if it fits. The
number we are looking for is expected to be positive, but if it
fits into 32 bits as an unsigned number, we let it be a 32-bit
- number. The cavalier approach is for speed in ordinary cases. */
+ number. The cavalier approach is for speed in ordinary cases. */
/* This has been extended for 64 bits. We blindly assume that if
you're compiling in 64-bit mode, the target is a 64-bit machine.
This should be cleaned up. */
@@ -389,7 +384,7 @@ integer_constant (radix, expressionP)
break;
case 10:
maxdig = radix = 10;
- too_many_digits = (valuesize + 11) / 4; /* very rough */
+ too_many_digits = (valuesize + 11) / 4; /* Very rough. */
}
#undef valuesize
start = input_line_pointer;
@@ -400,26 +395,26 @@ integer_constant (radix, expressionP)
{
number = number * radix + digit;
}
- /* c contains character after number. */
- /* input_line_pointer->char after c. */
+ /* c contains character after number. */
+ /* input_line_pointer->char after c. */
small = (input_line_pointer - start - 1) < too_many_digits;
- if (radix == 16 && c == '_')
+ if (radix == 16 && c == '_')
{
/* This is literal of the form 0x333_0_12345678_1.
This example is equivalent to 0x00000333000000001234567800000001. */
int num_little_digits = 0;
int i;
- input_line_pointer = start; /*->1st digit. */
+ input_line_pointer = start; /* -> 1st digit. */
know (LITTLENUM_NUMBER_OF_BITS == 16);
- for (c = '_'; c == '_'; num_little_digits+=2)
+ for (c = '_'; c == '_'; num_little_digits += 2)
{
- /* Convert one 64-bit word. */
- int ndigit = 0;
+ /* Convert one 64-bit word. */
+ int ndigit = 0;
number = 0;
for (c = *input_line_pointer++;
(digit = hex_value (c)) < maxdig;
@@ -430,20 +425,23 @@ integer_constant (radix, expressionP)
}
/* Check for 8 digit per word max. */
- if (ndigit > 8)
+ if (ndigit > 8)
as_bad (_("A bignum with underscores may not have more than 8 hex digits in any word."));
- /* Add this chunk to the bignum. Shift things down 2 little digits.*/
+ /* Add this chunk to the bignum.
+ Shift things down 2 little digits. */
know (LITTLENUM_NUMBER_OF_BITS == 16);
- for (i = min (num_little_digits + 1, SIZE_OF_LARGE_NUMBER - 1); i >= 2; i--)
- generic_bignum[i] = generic_bignum[i-2];
+ for (i = min (num_little_digits + 1, SIZE_OF_LARGE_NUMBER - 1);
+ i >= 2;
+ i--)
+ generic_bignum[i] = generic_bignum[i - 2];
- /* Add the new digits as the least significant new ones. */
+ /* Add the new digits as the least significant new ones. */
generic_bignum[0] = number & 0xffffffff;
generic_bignum[1] = number >> 16;
}
- /* Again, c is char after number, input_line_pointer->after c. */
+ /* Again, c is char after number, input_line_pointer->after c. */
if (num_little_digits > SIZE_OF_LARGE_NUMBER - 1)
num_little_digits = SIZE_OF_LARGE_NUMBER - 1;
@@ -454,14 +452,14 @@ integer_constant (radix, expressionP)
as_bad (_("A bignum with underscores must have exactly 4 words."));
/* We might have some leading zeros. These can be trimmed to give
- * us a change to fit this constant into a small number.
- */
- while (generic_bignum[num_little_digits-1] == 0 && num_little_digits > 1)
+ us a change to fit this constant into a small number. */
+ while (generic_bignum[num_little_digits - 1] == 0
+ && num_little_digits > 1)
num_little_digits--;
-
+
if (num_little_digits <= 2)
{
- /* will fit into 32 bits. */
+ /* will fit into 32 bits. */
number = generic_bignum_to_int32 ();
small = 1;
}
@@ -476,16 +474,16 @@ integer_constant (radix, expressionP)
else
{
small = 0;
- number = num_little_digits; /* number of littlenums in the bignum. */
+
+ /* Number of littlenums in the bignum. */
+ number = num_little_digits;
}
}
else if (!small)
{
- /*
- * we saw a lot of digits. manufacture a bignum the hard way.
- */
- LITTLENUM_TYPE *leader; /*->high order littlenum of the bignum. */
- LITTLENUM_TYPE *pointer; /*->littlenum we are frobbing now. */
+ /* We saw a lot of digits. manufacture a bignum the hard way. */
+ LITTLENUM_TYPE *leader; /* -> high order littlenum of the bignum. */
+ LITTLENUM_TYPE *pointer; /* -> littlenum we are frobbing now. */
long carry;
leader = generic_bignum;
@@ -493,15 +491,11 @@ integer_constant (radix, expressionP)
generic_bignum[1] = 0;
generic_bignum[2] = 0;
generic_bignum[3] = 0;
- input_line_pointer = start; /*->1st digit. */
+ input_line_pointer = start; /* -> 1st digit. */
c = *input_line_pointer++;
- for (;
- (carry = hex_value (c)) < maxdig;
- c = *input_line_pointer++)
+ for (; (carry = hex_value (c)) < maxdig; c = *input_line_pointer++)
{
- for (pointer = generic_bignum;
- pointer <= leader;
- pointer++)
+ for (pointer = generic_bignum; pointer <= leader; pointer++)
{
long work;
@@ -513,17 +507,17 @@ integer_constant (radix, expressionP)
{
if (leader < generic_bignum + SIZE_OF_LARGE_NUMBER - 1)
{
- /* room to grow a longer bignum. */
+ /* Room to grow a longer bignum. */
*++leader = carry;
}
}
}
- /* again, c is char after number, */
- /* input_line_pointer->after c. */
+ /* Again, c is char after number. */
+ /* input_line_pointer -> after c. */
know (LITTLENUM_NUMBER_OF_BITS == 16);
if (leader < generic_bignum + 2)
{
- /* will fit into 32 bits. */
+ /* Will fit into 32 bits. */
number = generic_bignum_to_int32 ();
small = 1;
}
@@ -537,39 +531,37 @@ integer_constant (radix, expressionP)
#endif
else
{
- number = leader - generic_bignum + 1; /* number of littlenums in the bignum. */
+ /* Number of littlenums in the bignum. */
+ number = leader - generic_bignum + 1;
}
}
- if ((NUMBERS_WITH_SUFFIX || flag_m68k_mri)
- && suffix != NULL
+ if ((NUMBERS_WITH_SUFFIX || flag_m68k_mri)
+ && suffix != NULL
&& input_line_pointer - 1 == suffix)
c = *input_line_pointer++;
if (small)
{
- /*
- * here with number, in correct radix. c is the next char.
- * note that unlike un*x, we allow "011f" "0x9f" to
- * both mean the same as the (conventional) "9f". this is simply easier
- * than checking for strict canonical form. syntax sux!
- */
+ /* Here with number, in correct radix. c is the next char.
+ Note that unlike un*x, we allow "011f" "0x9f" to both mean
+ the same as the (conventional) "9f".
+ This is simply easier than checking for strict canonical
+ form. Syntax sux! */
if (LOCAL_LABELS_FB && c == 'b')
{
- /*
- * backward ref to local label.
- * because it is backward, expect it to be defined.
- */
+ /* Backward ref to local label.
+ Because it is backward, expect it to be defined. */
/* Construct a local label. */
name = fb_label_name ((int) number, 0);
- /* seen before, or symbol is defined: ok */
+ /* Seen before, or symbol is defined: OK. */
symbolP = symbol_find (name);
if ((symbolP != NULL) && (S_IS_DEFINED (symbolP)))
{
- /* local labels are never absolute. don't waste time
- checking absoluteness. */
+ /* Local labels are never absolute. Don't waste time
+ checking absoluteness. */
know (SEG_NORMAL (S_GET_SEGMENT (symbolP)));
expressionP->X_op = O_symbol;
@@ -577,7 +569,7 @@ integer_constant (radix, expressionP)
}
else
{
- /* either not seen or not defined. */
+ /* Either not seen or not defined. */
/* @@ Should print out the original string instead of
the parsed number. */
as_bad (_("backw. ref to unknown label \"%d:\", 0 assumed."),
@@ -589,19 +581,18 @@ integer_constant (radix, expressionP)
} /* case 'b' */
else if (LOCAL_LABELS_FB && c == 'f')
{
- /*
- * forward reference. expect symbol to be undefined or
- * unknown. undefined: seen it before. unknown: never seen
- * it before.
- * construct a local label name, then an undefined symbol.
- * don't create a xseg frag for it: caller may do that.
- * just return it as never seen before.
- */
+ /* Forward reference. Expect symbol to be undefined or
+ unknown. undefined: seen it before. unknown: never seen
+ it before.
+
+ Construct a local label name, then an undefined symbol.
+ Don't create a xseg frag for it: caller may do that.
+ Just return it as never seen before. */
name = fb_label_name ((int) number, 1);
symbolP = symbol_find_or_make (name);
- /* we have no need to check symbol properties. */
+ /* We have no need to check symbol properties. */
#ifndef many_segments
- /* since "know" puts its arg into a "string", we
+ /* Since "know" puts its arg into a "string", we
can't have newlines in the argument. */
know (S_GET_SEGMENT (symbolP) == undefined_section || S_GET_SEGMENT (symbolP) == text_section || S_GET_SEGMENT (symbolP) == data_section);
#endif
@@ -640,15 +631,15 @@ integer_constant (radix, expressionP)
number |= (-(number >> (TARGET_WORD_SIZE - 1))) << (TARGET_WORD_SIZE - 1);
#endif
expressionP->X_add_number = number;
- input_line_pointer--; /* restore following character. */
- } /* really just a number */
+ input_line_pointer--; /* Restore following character. */
+ } /* Really just a number. */
}
else
{
- /* not a small number */
+ /* Not a small number. */
expressionP->X_op = O_big;
- expressionP->X_add_number = number; /* number of littlenums */
- input_line_pointer--; /*->char following number. */
+ expressionP->X_add_number = number; /* Number of littlenums. */
+ input_line_pointer--; /* -> char following number. */
}
}
@@ -766,24 +757,20 @@ current_location (expressionp)
}
}
-/*
- * Summary of operand().
- *
- * in: Input_line_pointer points to 1st char of operand, which may
- * be a space.
- *
- * out: A expressionS.
- * The operand may have been empty: in this case X_op == O_absent.
- * Input_line_pointer->(next non-blank) char after operand.
- */
+/* In: Input_line_pointer points to 1st char of operand, which may
+ be a space.
+
+ Out: A expressionS.
+ The operand may have been empty: in this case X_op == O_absent.
+ Input_line_pointer->(next non-blank) char after operand. */
static segT
operand (expressionP)
expressionS *expressionP;
{
char c;
- symbolS *symbolP; /* points to symbol */
- char *name; /* points to name of symbol */
+ symbolS *symbolP; /* Points to symbol. */
+ char *name; /* Points to name of symbol. */
segT segment;
/* All integers are regarded as unsigned unless they are negated.
@@ -794,10 +781,13 @@ operand (expressionP)
though it appears negative if valueT is 32 bits. */
expressionP->X_unsigned = 1;
- /* digits, assume it is a bignum. */
+ /* Digits, assume it is a bignum. */
+
+ SKIP_WHITESPACE (); /* Leading whitespace is part of operand. */
+ c = *input_line_pointer++; /* input_line_pointer -> past char in c. */
- SKIP_WHITESPACE (); /* leading whitespace is part of operand. */
- c = *input_line_pointer++; /* input_line_pointer->past char in c. */
+ if (is_end_of_line[(unsigned char) c])
+ goto eol;
switch (c)
{
@@ -812,13 +802,25 @@ operand (expressionP)
case '9':
input_line_pointer--;
- integer_constant ((NUMBERS_WITH_SUFFIX || flag_m68k_mri)
- ? 0 : 10,
+ integer_constant ((NUMBERS_WITH_SUFFIX || flag_m68k_mri)
+ ? 0 : 10,
expressionP);
break;
+#ifdef LITERAL_PREFIXDOLLAR_HEX
+ case '$':
+ integer_constant (16, expressionP);
+ break;
+#endif
+
+#ifdef LITERAL_PREFIXPERCENT_BIN
+ case '%':
+ integer_constant (2, expressionP);
+ break;
+#endif
+
case '0':
- /* non-decimal radix */
+ /* Non-decimal radix. */
if (NUMBERS_WITH_SUFFIX || flag_m68k_mri)
{
@@ -833,7 +835,7 @@ operand (expressionP)
integer_constant (0, expressionP);
break;
}
- }
+ }
c = *input_line_pointer;
switch (c)
{
@@ -860,7 +862,7 @@ operand (expressionP)
}
else
{
- /* The string was only zero */
+ /* The string was only zero. */
expressionP->X_op = O_constant;
expressionP->X_add_number = 0;
}
@@ -912,8 +914,8 @@ operand (expressionP)
case '6':
case '7':
integer_constant ((flag_m68k_mri || NUMBERS_WITH_SUFFIX)
- ? 0 : 8,
- expressionP);
+ ? 0 : 8,
+ expressionP);
break;
case 'f':
@@ -935,11 +937,11 @@ operand (expressionP)
case 0:
case ERROR_EXPONENT_OVERFLOW:
if (*cp == 'f' || *cp == 'b')
- /* looks like a difference expression */
+ /* Looks like a difference expression. */
goto is_0f_label;
else if (cp == input_line_pointer + 1)
/* No characters has been accepted -- looks like
- end of operand. */
+ end of operand. */
goto is_0f_label;
else
goto is_0f_float;
@@ -958,7 +960,7 @@ operand (expressionP)
break;
is_0f_float:
- /* fall through */
+ /* Fall through. */
;
}
@@ -998,17 +1000,21 @@ operand (expressionP)
#ifndef NEED_INDEX_OPERATOR
case '[':
#endif
- /* didn't begin with digit & not a name */
+ /* Didn't begin with digit & not a name. */
segment = expression (expressionP);
- /* Expression() will pass trailing whitespace */
- if ((c == '(' && *input_line_pointer++ != ')')
- || (c == '[' && *input_line_pointer++ != ']'))
+ /* expression () will pass trailing whitespace. */
+ if ((c == '(' && *input_line_pointer != ')')
+ || (c == '[' && *input_line_pointer != ']'))
{
- as_bad (_("Missing ')' assumed"));
- input_line_pointer--;
+#ifdef RELAX_PAREN_GROUPING
+ if (c != '(')
+#endif
+ as_bad (_("Missing '%c' assumed"), c == '(' ? ')' : ']');
}
+ else
+ input_line_pointer++;
SKIP_WHITESPACE ();
- /* here with input_line_pointer->char after "(...)" */
+ /* Here with input_line_pointer -> char after "(...)". */
return segment;
#ifdef TC_M68K
@@ -1027,9 +1033,9 @@ operand (expressionP)
if (! flag_m68k_mri)
{
/* Warning: to conform to other people's assemblers NO
- ESCAPEMENT is permitted for a single quote. The next
+ ESCAPEMENT is permitted for a single quote. The next
character, parity errors and all, is taken as the value
- of the operand. VERY KINKY. */
+ of the operand. VERY KINKY. */
expressionP->X_op = O_constant;
expressionP->X_add_number = *input_line_pointer++;
break;
@@ -1050,7 +1056,7 @@ operand (expressionP)
/* Fall through. */
#endif
case '~':
- /* ~ is permitted to start a label on the Delta. */
+ /* '~' is permitted to start a label on the Delta. */
if (is_name_beginner (c))
goto isname;
case '!':
@@ -1059,12 +1065,13 @@ operand (expressionP)
operand (expressionP);
if (expressionP->X_op == O_constant)
{
- /* input_line_pointer -> char after operand */
+ /* input_line_pointer -> char after operand. */
if (c == '-')
{
expressionP->X_add_number = - expressionP->X_add_number;
- /* Notice: '-' may overflow: no warning is given. This is
- compatible with other people's assemblers. Sigh. */
+ /* Notice: '-' may overflow: no warning is given.
+ This is compatible with other people's
+ assemblers. Sigh. */
expressionP->X_unsigned = 0;
}
else if (c == '~' || c == '"')
@@ -1092,15 +1099,15 @@ operand (expressionP)
#if defined (DOLLAR_DOT) || defined (TC_M68K)
case '$':
- /* $ is the program counter when in MRI mode, or when DOLLAR_DOT
- is defined. */
+ /* '$' is the program counter when in MRI mode, or when
+ DOLLAR_DOT is defined. */
#ifndef DOLLAR_DOT
if (! flag_m68k_mri)
goto de_fault;
#endif
if (flag_m68k_mri && hex_p (*input_line_pointer))
{
- /* In MRI mode, $ is also used as the prefix for a
+ /* In MRI mode, '$' is also used as the prefix for a
hexadecimal constant. */
integer_constant (16, expressionP);
break;
@@ -1166,11 +1173,10 @@ operand (expressionP)
{
goto isname;
}
+
case ',':
- case '\n':
- case '\0':
eol:
- /* can't imagine any other kind of operand */
+ /* Can't imagine any other kind of operand. */
expressionP->X_op = O_absent;
input_line_pointer--;
break;
@@ -1211,14 +1217,10 @@ operand (expressionP)
#ifdef TC_M68K
de_fault:
#endif
- if (is_end_of_line[(unsigned char) c])
- goto eol;
- if (is_name_beginner (c)) /* here if did not begin with a digit */
+ if (is_name_beginner (c)) /* Here if did not begin with a digit. */
{
- /*
- * Identifier begins here.
- * This is kludged for speed, so code is repeated.
- */
+ /* Identifier begins here.
+ This is kludged for speed, so code is repeated. */
isname:
name = --input_line_pointer;
c = get_symbol_end ();
@@ -1271,7 +1273,7 @@ operand (expressionP)
SKIP_WHITESPACE ();
break;
- }
+ }
#endif
symbolP = symbol_find_or_make (name);
@@ -1301,7 +1303,7 @@ operand (expressionP)
{
/* Let the target try to parse it. Success is indicated by changing
the X_op field to something other than O_absent and pointing
- input_line_pointer passed the expression. If it can't parse the
+ input_line_pointer past the expression. If it can't parse the
expression, X_op and input_line_pointer should be unchanged. */
expressionP->X_op = O_absent;
--input_line_pointer;
@@ -1317,12 +1319,10 @@ operand (expressionP)
break;
}
- /*
- * It is more 'efficient' to clean up the expressionS when they are created.
- * Doing it here saves lines of code.
- */
+ /* It is more 'efficient' to clean up the expressionS when they are
+ created. Doing it here saves lines of code. */
clean_up_expression (expressionP);
- SKIP_WHITESPACE (); /*->1st char after operand. */
+ SKIP_WHITESPACE (); /* -> 1st char after operand. */
know (*input_line_pointer != ' ');
/* The PA port needs this information. */
@@ -1338,19 +1338,18 @@ operand (expressionP)
case O_register:
return reg_section;
}
-} /* operand() */
+}
-/* Internal. Simplify a struct expression for use by expr() */
-
-/*
- * In: address of a expressionS.
- * The X_op field of the expressionS may only take certain values.
- * Elsewise we waste time special-case testing. Sigh. Ditto SEG_ABSENT.
- * Out: expressionS may have been modified:
- * 'foo-foo' symbol references cancelled to 0,
- * which changes X_op from O_subtract to O_constant.
- * Unused fields zeroed to help expr().
- */
+/* Internal. Simplify a struct expression for use by expr (). */
+
+/* In: address of a expressionS.
+ The X_op field of the expressionS may only take certain values.
+ Elsewise we waste time special-case testing. Sigh. Ditto SEG_ABSENT.
+
+ Out: expressionS may have been modified:
+ 'foo-foo' symbol references cancelled to 0, which changes X_op
+ from O_subtract to O_constant.
+ Unused fields zeroed to help expr (). */
static void
clean_up_expression (expressionP)
@@ -1394,35 +1393,32 @@ clean_up_expression (expressionP)
}
}
-/* Expression parser. */
-
-/*
- * We allow an empty expression, and just assume (absolute,0) silently.
- * Unary operators and parenthetical expressions are treated as operands.
- * As usual, Q==quantity==operand, O==operator, X==expression mnemonics.
- *
- * We used to do a aho/ullman shift-reduce parser, but the logic got so
- * warped that I flushed it and wrote a recursive-descent parser instead.
- * Now things are stable, would anybody like to write a fast parser?
- * Most expressions are either register (which does not even reach here)
- * or 1 symbol. Then "symbol+constant" and "symbol-symbol" are common.
- * So I guess it doesn't really matter how inefficient more complex expressions
- * are parsed.
- *
- * After expr(RANK,resultP) input_line_pointer->operator of rank <= RANK.
- * Also, we have consumed any leading or trailing spaces (operand does that)
- * and done all intervening operators.
- *
- * This returns the segment of the result, which will be
- * absolute_section or the segment of a symbol.
- */
+/* Expression parser. */
+
+/* We allow an empty expression, and just assume (absolute,0) silently.
+ Unary operators and parenthetical expressions are treated as operands.
+ As usual, Q==quantity==operand, O==operator, X==expression mnemonics.
+
+ We used to do a aho/ullman shift-reduce parser, but the logic got so
+ warped that I flushed it and wrote a recursive-descent parser instead.
+ Now things are stable, would anybody like to write a fast parser?
+ Most expressions are either register (which does not even reach here)
+ or 1 symbol. Then "symbol+constant" and "symbol-symbol" are common.
+ So I guess it doesn't really matter how inefficient more complex expressions
+ are parsed.
+
+ After expr(RANK,resultP) input_line_pointer->operator of rank <= RANK.
+ Also, we have consumed any leading or trailing spaces (operand does that)
+ and done all intervening operators.
+
+ This returns the segment of the result, which will be
+ absolute_section or the segment of a symbol. */
#undef __
#define __ O_illegal
-static const operatorT op_encoding[256] =
-{ /* maps ASCII->operators */
-
+/* Maps ASCII -> operators. */
+static const operatorT op_encoding[256] = {
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __,
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __,
@@ -1455,28 +1451,25 @@ static const operatorT op_encoding[256] =
__, __, __, __, __, __, __, __, __, __, __, __, __, __, __, __
};
-
-/*
- * Rank Examples
- * 0 operand, (expression)
- * 1 ||
- * 2 &&
- * 3 = <> < <= >= >
- * 4 + -
- * 5 used for * / % in MRI mode
- * 6 & ^ ! |
- * 7 * / % << >>
- * 8 unary - unary ~
- */
-static operator_rankT op_rank[] =
-{
+/* Rank Examples
+ 0 operand, (expression)
+ 1 ||
+ 2 &&
+ 3 = <> < <= >= >
+ 4 + -
+ 5 used for * / % in MRI mode
+ 6 & ^ ! |
+ 7 * / % << >>
+ 8 unary - unary ~
+*/
+static operator_rankT op_rank[] = {
0, /* O_illegal */
0, /* O_absent */
0, /* O_constant */
0, /* O_symbol */
0, /* O_symbol_rva */
0, /* O_register */
- 0, /* O_bit */
+ 0, /* O_big */
9, /* O_uminus */
9, /* O_bit_not */
9, /* O_logical_not */
@@ -1524,8 +1517,8 @@ static operator_rankT op_rank[] =
mode. Also, MRI uses a different bit_not operator, and this fixes
that as well. */
-#define STANDARD_MUL_PRECEDENCE (7)
-#define MRI_MUL_PRECEDENCE (5)
+#define STANDARD_MUL_PRECEDENCE 8
+#define MRI_MUL_PRECEDENCE 6
void
expr_set_precedence ()
@@ -1559,17 +1552,22 @@ expr_begin ()
}
}
-/* Return the encoding for the operator at INPUT_LINE_POINTER.
- Advance INPUT_LINE_POINTER to the last character in the operator
- (i.e., don't change it for a single character operator). */
+/* Return the encoding for the operator at INPUT_LINE_POINTER, and
+ sets NUM_CHARS to the number of characters in the operator.
+ Does not advance INPUT_LINE_POINTER. */
static inline operatorT
-operator ()
+operator (num_chars)
+ int *num_chars;
{
int c;
operatorT ret;
c = *input_line_pointer & 0xff;
+ *num_chars = 1;
+
+ if (is_end_of_line[c])
+ return O_illegal;
switch (c)
{
@@ -1591,14 +1589,14 @@ operator ()
ret = O_le;
break;
}
- ++input_line_pointer;
+ *num_chars = 2;
return ret;
case '=':
if (input_line_pointer[1] != '=')
return op_encoding[c];
- ++input_line_pointer;
+ *num_chars = 2;
return O_eq;
case '>':
@@ -1613,7 +1611,7 @@ operator ()
ret = O_ge;
break;
}
- ++input_line_pointer;
+ *num_chars = 2;
return ret;
case '!':
@@ -1624,52 +1622,54 @@ operator ()
return O_bit_inclusive_or;
return op_encoding[c];
}
- ++input_line_pointer;
+ *num_chars = 2;
return O_bit_exclusive_or;
case '|':
if (input_line_pointer[1] != '|')
return op_encoding[c];
- ++input_line_pointer;
+ *num_chars = 2;
return O_logical_or;
case '&':
if (input_line_pointer[1] != '&')
return op_encoding[c];
- ++input_line_pointer;
+ *num_chars = 2;
return O_logical_and;
}
- /*NOTREACHED*/
+ /* NOTREACHED */
}
/* Parse an expression. */
segT
expr (rankarg, resultP)
- int rankarg; /* Larger # is higher rank. */
- expressionS *resultP; /* Deliver result here. */
+ int rankarg; /* Larger # is higher rank. */
+ expressionS *resultP; /* Deliver result here. */
{
operator_rankT rank = (operator_rankT) rankarg;
segT retval;
expressionS right;
operatorT op_left;
operatorT op_right;
+ int op_chars;
know (rank >= 0);
retval = operand (resultP);
- know (*input_line_pointer != ' '); /* Operand() gobbles spaces. */
+ /* operand () gobbles spaces. */
+ know (*input_line_pointer != ' ');
- op_left = operator ();
+ op_left = operator (&op_chars);
while (op_left != O_illegal && op_rank[(int) op_left] > rank)
{
segT rightseg;
- input_line_pointer++; /*->after 1st character of operator. */
+ input_line_pointer += op_chars; /* -> after operator. */
rightseg = expr (op_rank[(int) op_left], &right);
if (right.X_op == O_absent)
@@ -1709,16 +1709,17 @@ expr (rankarg, resultP)
)
as_bad (_("operation combines symbols in different segments"));
- op_right = operator ();
+ op_right = operator (&op_chars);
- know (op_right == O_illegal || op_rank[(int) op_right] <= op_rank[(int) op_left]);
+ know (op_right == O_illegal
+ || op_rank[(int) op_right] <= op_rank[(int) op_left]);
know ((int) op_left >= (int) O_multiply
&& (int) op_left <= (int) O_logical_or);
- /* input_line_pointer->after right-hand quantity. */
- /* left-hand quantity in resultP */
- /* right-hand quantity in right. */
- /* operator in op_left. */
+ /* input_line_pointer->after right-hand quantity. */
+ /* left-hand quantity in resultP. */
+ /* right-hand quantity in right. */
+ /* operator in op_left. */
if (resultP->X_op == O_big)
{
@@ -1744,6 +1745,14 @@ expr (rankarg, resultP)
}
/* Optimize common cases. */
+#ifdef md_optimize_expr
+ if (md_optimize_expr (resultP, op_left, &right))
+ {
+ /* Skip. */
+ ;
+ }
+ else
+#endif
if (op_left == O_add && right.X_op == O_constant)
{
/* X + constant. */
@@ -1864,7 +1873,7 @@ expr (rankarg, resultP)
}
op_left = op_right;
- } /* While next operator is >= this rank. */
+ } /* While next operator is >= this rank. */
/* The PA port needs this information. */
if (resultP->X_add_symbol)
@@ -1873,21 +1882,18 @@ expr (rankarg, resultP)
return resultP->X_op == O_constant ? absolute_section : retval;
}
-/*
- * get_symbol_end()
- *
- * This lives here because it belongs equally in expr.c & read.c.
- * Expr.c is just a branch office read.c anyway, and putting it
- * here lessens the crowd at read.c.
- *
- * Assume input_line_pointer is at start of symbol name.
- * Advance input_line_pointer past symbol name.
- * Turn that character into a '\0', returning its former value.
- * This allows a string compare (RMS wants symbol names to be strings)
- * of the symbol name.
- * There will always be a char following symbol name, because all good
- * lines end in end-of-line.
- */
+/* This lives here because it belongs equally in expr.c & read.c.
+ expr.c is just a branch office read.c anyway, and putting it
+ here lessens the crowd at read.c.
+
+ Assume input_line_pointer is at start of symbol name.
+ Advance input_line_pointer past symbol name.
+ Turn that character into a '\0', returning its former value.
+ This allows a string compare (RMS wants symbol names to be strings)
+ of the symbol name.
+ There will always be a char following symbol name, because all good
+ lines end in end-of-line. */
+
char
get_symbol_end ()
{
@@ -1907,14 +1913,10 @@ get_symbol_end ()
return (c);
}
-
unsigned int
get_single_number ()
{
expressionS exp;
operand (&exp);
return exp.X_add_number;
-
}
-
-/* end of expr.c */
diff --git a/contrib/binutils/gas/expr.h b/contrib/binutils/gas/expr.h
index 0ed6af6..d63ab7f 100644
--- a/contrib/binutils/gas/expr.h
+++ b/contrib/binutils/gas/expr.h
@@ -1,5 +1,5 @@
/* expr.h -> header file for expr.c
- Copyright (C) 1987, 92-98, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1987, 92-99, 2000 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -39,8 +39,7 @@
NOTE: This enumeration must match the op_rank array in expr.c. */
-typedef enum
-{
+typedef enum {
/* An illegal expression. */
O_illegal,
/* A nonexistent expression. */
@@ -111,8 +110,7 @@ typedef enum
O_max
} operatorT;
-typedef struct expressionS
-{
+typedef struct expressionS {
/* The main symbol. */
symbolS *X_add_symbol;
/* The second symbol, if needed. */
@@ -142,16 +140,16 @@ typedef struct expressionS
unsigned short X_md;
} expressionS;
-/* "result" should be type (expressionS *). */
+/* "result" should be type (expressionS *). */
#define expression(result) expr (0, result)
/* If an expression is O_big, look here for its value. These common
- data may be clobbered whenever expr() is called. */
-/* Flonums returned here. Big enough to hold most precise flonum. */
+ data may be clobbered whenever expr() is called. */
+/* Flonums returned here. Big enough to hold most precise flonum. */
extern FLONUM_TYPE generic_floating_point_number;
-/* Bignums returned here. */
+/* Bignums returned here. */
extern LITTLENUM_TYPE generic_bignum[];
-/* Number of littlenums in above. */
+/* Number of littlenums in above. */
#define SIZE_OF_LARGE_NUMBER (20)
typedef char operator_rankT;
@@ -169,5 +167,3 @@ extern symbolS *expr_build_uconstant PARAMS ((offsetT));
extern symbolS *expr_build_unary PARAMS ((operatorT, symbolS *));
extern symbolS *expr_build_binary PARAMS ((operatorT, symbolS *, symbolS *));
extern symbolS *expr_build_dot PARAMS ((void));
-
-/* end of expr.h */
diff --git a/contrib/binutils/gas/flonum-copy.c b/contrib/binutils/gas/flonum-copy.c
index 5bcc5cc..79a34c0 100644
--- a/contrib/binutils/gas/flonum-copy.c
+++ b/contrib/binutils/gas/flonum-copy.c
@@ -1,5 +1,5 @@
/* flonum_copy.c - copy a flonum
- Copyright (C) 1987, 1990, 1991, 1992 Free Software Foundation, Inc.
+ Copyright (C) 1987, 1990, 1991, 1992, 2000 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -14,8 +14,9 @@
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. */
+ 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"
@@ -24,8 +25,8 @@ flonum_copy (in, out)
FLONUM_TYPE *in;
FLONUM_TYPE *out;
{
- unsigned int in_length; /* 0 origin */
- unsigned int out_length; /* 0 origin */
+ unsigned int in_length; /* 0 origin */
+ unsigned int out_length; /* 0 origin */
out->sign = in->sign;
in_length = in->leader - in->low;
@@ -37,37 +38,35 @@ flonum_copy (in, out)
else
{
out_length = out->high - out->low;
- /*
- * Assume no GAPS in packing of littlenums.
- * I.e. sizeof(array) == sizeof(element) * number_of_elements.
- */
+ /* Assume no GAPS in packing of littlenums.
+ I.e. sizeof(array) == sizeof(element) * number_of_elements. */
if (in_length <= out_length)
{
{
- /*
- * For defensive programming, zero any high-order littlenums we don't need.
- * This is destroying evidence and wasting time, so why bother???
- */
+ /* For defensive programming, zero any high-order
+ littlenums we don't need. This is destroying evidence
+ and wasting time, so why bother??? */
if (in_length < out_length)
{
- memset ((char *) (out->low + in_length + 1), '\0', out_length - in_length);
+ memset ((char *) (out->low + in_length + 1), '\0',
+ out_length - in_length);
}
}
- memcpy ((void *) (out->low), (void *) (in->low), ((in_length + 1) * sizeof (LITTLENUM_TYPE)));
+ memcpy ((void *) (out->low), (void *) (in->low),
+ ((in_length + 1) * sizeof (LITTLENUM_TYPE)));
out->exponent = in->exponent;
out->leader = in->leader - in->low + out->low;
}
else
{
- int shorten; /* 1-origin. Number of littlenums we drop. */
+ int shorten; /* 1-origin. Number of littlenums we drop. */
shorten = in_length - out_length;
/* Assume out_length >= 0 ! */
- memcpy ((void *) (out->low), (void *) (in->low + shorten), ((out_length + 1) * sizeof (LITTLENUM_TYPE)));
+ memcpy ((void *) (out->low), (void *) (in->low + shorten),
+ ((out_length + 1) * sizeof (LITTLENUM_TYPE)));
out->leader = out->high;
out->exponent = in->exponent + shorten;
}
} /* if any significant bits */
-} /* flonum_copy() */
-
-/* end of flonum_copy.c */
+}
diff --git a/contrib/binutils/gas/flonum-konst.c b/contrib/binutils/gas/flonum-konst.c
index 22bba05..599ce5e 100644
--- a/contrib/binutils/gas/flonum-konst.c
+++ b/contrib/binutils/gas/flonum-konst.c
@@ -1,5 +1,5 @@
/* flonum_const.c - Useful Flonum constants
- Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 1996
+ Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -23,13 +23,13 @@
#include "flonum.h"
/* JF: I added the last entry to this table, and I'm not
sure if its right or not. Could go either way. I wish
- I really understood this stuff. */
-
+ I really understood this stuff. */
const int table_size_of_flonum_powers_of_ten = 13;
-static const LITTLENUM_TYPE zero[] =
-{1};
+static const LITTLENUM_TYPE zero[] = {
+ 1
+};
/***********************************************************************\
* *
@@ -44,131 +44,149 @@ static const LITTLENUM_TYPE zero[] =
\***********************************************************************/
/* JF: If this equals 6553/(2^16)+39321/(2^32)+... it approaches .1 */
-static const LITTLENUM_TYPE minus_1[] =
-{
+static const LITTLENUM_TYPE minus_1[] = {
39322, 39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321,
- 39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321, 6553};
-static const LITTLENUM_TYPE plus_1[] =
-{10};
+ 39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321, 6553
+};
+
+static const LITTLENUM_TYPE plus_1[] = {
+ 10
+};
/* JF: If this equals 655/(2^16) + 23592/(2^32) + ... it approaches .01 */
-static const LITTLENUM_TYPE minus_2[] =
-{
+static const LITTLENUM_TYPE minus_2[] = {
10486, 36700, 62914, 23592, 49807, 10485, 36700, 62914, 23592, 49807,
- 10485, 36700, 62914, 23592, 49807, 10485, 36700, 62914, 23592, 655};
-static const LITTLENUM_TYPE plus_2[] =
-{100};
+ 10485, 36700, 62914, 23592, 49807, 10485, 36700, 62914, 23592, 655
+};
+
+static const LITTLENUM_TYPE plus_2[] = {
+ 100
+};
/* This approaches .0001 */
-static const LITTLENUM_TYPE minus_3[] =
-{
+static const LITTLENUM_TYPE minus_3[] = {
52534, 20027, 37329, 65116, 64067, 60397, 14784, 18979, 33659, 19503,
- 2726, 9542, 629, 2202, 40475, 10590, 4299, 47815, 36280, 6};
-static const LITTLENUM_TYPE plus_3[] =
-{10000};
+ 2726, 9542, 629, 2202, 40475, 10590, 4299, 47815, 36280, 6
+};
+
+static const LITTLENUM_TYPE plus_3[] = {
+ 10000
+};
/* JF: this approaches 1e-8 */
-static const LITTLENUM_TYPE minus_4[] =
-{
+static const LITTLENUM_TYPE minus_4[] = {
22517, 49501, 54293, 19424, 60699, 6716, 24348, 22618, 23904, 21327,
- 3919, 44703, 19149, 28803, 48959, 6259, 50273, 62237, 42};
+ 3919, 44703, 19149, 28803, 48959, 6259, 50273, 62237, 42
+};
+
/* This equals 1525 * 2^16 + 57600 */
-static const LITTLENUM_TYPE plus_4[] =
-{57600, 1525};
+static const LITTLENUM_TYPE plus_4[] = {
+ 57600, 1525
+};
/* This approaches 1e-16 */
-static const LITTLENUM_TYPE minus_5[] =
-{
+static const LITTLENUM_TYPE minus_5[] = {
22199, 45957, 17005, 26266, 10526, 16260, 55017, 35680, 40443, 19789,
- 17356, 30195, 55905, 28426, 63010, 44197, 1844};
-static const LITTLENUM_TYPE plus_5[] =
-{28609, 34546, 35};
+ 17356, 30195, 55905, 28426, 63010, 44197, 1844
+};
-static const LITTLENUM_TYPE minus_6[] =
-{
+static const LITTLENUM_TYPE plus_5[] = {
+ 28609, 34546, 35
+};
+
+static const LITTLENUM_TYPE minus_6[] = {
30926, 26518, 13110, 43018, 54982, 48258, 24658, 15209, 63366, 11929,
- 20069, 43857, 60487, 51};
-static const LITTLENUM_TYPE plus_6[] =
-{61313, 34220, 16731, 11629, 1262};
+ 20069, 43857, 60487, 51
+};
-static const LITTLENUM_TYPE minus_7[] =
-{
- 29819, 14733, 21490, 40602, 31315, 65186, 2695};
-static const LITTLENUM_TYPE plus_7[] =
-{
- 7937, 49002, 60772, 28216, 38893, 55975, 63988, 59711, 20227, 24};
+static const LITTLENUM_TYPE plus_6[] = {
+ 61313, 34220, 16731, 11629, 1262
+};
-static const LITTLENUM_TYPE minus_8[] =
-{
+static const LITTLENUM_TYPE minus_7[] = {
+ 29819, 14733, 21490, 40602, 31315, 65186, 2695
+};
+
+static const LITTLENUM_TYPE plus_7[] = {
+ 7937, 49002, 60772, 28216, 38893, 55975, 63988, 59711, 20227, 24
+};
+
+static const LITTLENUM_TYPE minus_8[] = {
27579, 64807, 12543, 794, 13907, 61297, 12013, 64360, 15961, 20566,
- 24178, 15922, 59427, 110};
-static const LITTLENUM_TYPE plus_8[] =
-{
+ 24178, 15922, 59427, 110
+};
+
+static const LITTLENUM_TYPE plus_8[] = {
15873, 11925, 39177, 991, 14589, 3861, 58415, 9076, 62956, 54223,
- 56328, 50180, 45274, 48333, 32537, 42547, 9731, 59679, 590};
+ 56328, 50180, 45274, 48333, 32537, 42547, 9731, 59679, 590
+};
-static const LITTLENUM_TYPE minus_9[] =
-{
+static const LITTLENUM_TYPE minus_9[] = {
11042, 8464, 58971, 63429, 6022, 63485, 5500, 53464, 47545, 50068,
56988, 22819, 49708, 54493, 9920, 47667, 40409, 35764, 10383, 54466,
- 32702, 17493, 32420, 34382, 22750, 20681, 12300};
-static const LITTLENUM_TYPE plus_9[] =
-{
+ 32702, 17493, 32420, 34382, 22750, 20681, 12300
+};
+
+static const LITTLENUM_TYPE plus_9[] = {
20678, 27614, 28272, 53066, 55311, 54677, 29038, 9906, 26288, 44486,
13860, 7445, 54106, 15426, 21518, 25599, 29632, 52309, 61207, 26105,
- 10482, 21948, 51191, 32988, 60892, 62574, 61390, 24540, 21495, 5};
+ 10482, 21948, 51191, 32988, 60892, 62574, 61390, 24540, 21495, 5
+};
-static const LITTLENUM_TYPE minus_10[] =
-{
+static const LITTLENUM_TYPE minus_10[] = {
6214, 48771, 23471, 30163, 31763, 38013, 57001, 11770, 18263, 36366,
20742, 45086, 56969, 53231, 37856, 55814, 38057, 15692, 46761, 8713,
- 6102, 20083, 8269, 11839, 11571, 50963, 15649, 11698, 40675, 2308};
-static const LITTLENUM_TYPE plus_10[] =
-{
+ 6102, 20083, 8269, 11839, 11571, 50963, 15649, 11698, 40675, 2308
+};
+
+static const LITTLENUM_TYPE plus_10[] = {
63839, 36576, 45712, 44516, 37803, 29482, 4966, 30556, 37961, 23310,
27070, 44972, 29507, 48257, 45209, 7494, 17831, 38728, 41577, 29443,
- 36016, 7955, 35339, 35479, 36011, 14553, 49618, 5588, 25396, 28};
+ 36016, 7955, 35339, 35479, 36011, 14553, 49618, 5588, 25396, 28
+};
-static const LITTLENUM_TYPE minus_11[] =
-{
+static const LITTLENUM_TYPE minus_11[] = {
16663, 56882, 61983, 7804, 36555, 32060, 34502, 1000, 14356, 21681,
6605, 34767, 51411, 59048, 53614, 39850, 30079, 6496, 6846, 26841,
- 40778, 19578, 59899, 44085, 54016, 24259, 11232, 21229, 21313, 81};
-static const LITTLENUM_TYPE plus_11[] =
-{
+ 40778, 19578, 59899, 44085, 54016, 24259, 11232, 21229, 21313, 81
+};
+
+static const LITTLENUM_TYPE plus_11[] = {
92, 9054, 62707, 17993, 7821, 56838, 13992, 21321, 29637, 48426,
42982, 38668, 49574, 28820, 18200, 18927, 53979, 16219, 37484, 2516,
- 44642, 14665, 11587, 41926, 13556, 23956, 54320, 6661, 55766, 805};
+ 44642, 14665, 11587, 41926, 13556, 23956, 54320, 6661, 55766, 805
+};
-static const LITTLENUM_TYPE minus_12[] =
-{
+static const LITTLENUM_TYPE minus_12[] = {
33202, 45969, 58804, 56734, 16482, 26007, 44984, 49334, 31007, 32944,
44517, 63329, 47131, 15291, 59465, 2264, 23218, 11829, 59771, 38798,
- 31051, 28748, 23129, 40541, 41562, 35108, 50620, 59014, 51817, 6613};
-static const LITTLENUM_TYPE plus_12[] =
-{
+ 31051, 28748, 23129, 40541, 41562, 35108, 50620, 59014, 51817, 6613
+};
+
+static const LITTLENUM_TYPE plus_12[] = {
10098, 37922, 58070, 7432, 10470, 63465, 23718, 62190, 47420, 7009,
38443, 4587, 45596, 38472, 52129, 52779, 29012, 13559, 48688, 31678,
- 41753, 58662, 10668, 36067, 29906, 56906, 21461, 46556, 59571, 9};
+ 41753, 58662, 10668, 36067, 29906, 56906, 21461, 46556, 59571, 9
+};
-static const LITTLENUM_TYPE minus_13[] =
-{
+static const LITTLENUM_TYPE minus_13[] = {
45309, 27592, 37144, 34637, 34328, 41671, 34620, 24135, 53401, 22112,
21576, 45147, 39310, 44051, 48572, 3676, 46544, 59768, 33350, 2323,
- 49524, 61568, 3903, 36487, 36356, 30903, 14975, 9035, 29715, 667};
-static const LITTLENUM_TYPE plus_13[] =
-{
+ 49524, 61568, 3903, 36487, 36356, 30903, 14975, 9035, 29715, 667
+};
+
+static const LITTLENUM_TYPE plus_13[] = {
18788, 16960, 6318, 45685, 55400, 46230, 35794, 25588, 7253, 55541,
49716, 59760, 63592, 8191, 63765, 58530, 44667, 13294, 10001, 55586,
- 47887, 18738, 9509, 40896, 42506, 52580, 4171, 325, 12329, 98};
+ 47887, 18738, 9509, 40896, 42506, 52580, 4171, 325, 12329, 98
+};
/* Shut up complaints about differing pointer types. They only differ
in the const attribute, but there isn't any easy way to do this
*/
#define X (LITTLENUM_TYPE *)
-const FLONUM_TYPE flonum_negative_powers_of_ten[] =
-{
+const FLONUM_TYPE flonum_negative_powers_of_ten[] = {
{X zero, X zero, X zero, 0, '+'},
{X minus_1, X minus_1 + 19, X minus_1 + 19, -20, '+'},
{X minus_2, X minus_2 + 19, X minus_2 + 19, -20, '+'},
@@ -185,8 +203,7 @@ const FLONUM_TYPE flonum_negative_powers_of_ten[] =
{X minus_13, X minus_13 + 29, X minus_13 + 29, -880, '+'},
};
-const FLONUM_TYPE flonum_positive_powers_of_ten[] =
-{
+const FLONUM_TYPE flonum_positive_powers_of_ten[] = {
{X zero, X zero, X zero, 0, '+'},
{X plus_1, X plus_1 + 0, X plus_1 + 0, 0, '+'},
{X plus_2, X plus_2 + 0, X plus_2 + 0, 0, '+'},
@@ -204,6 +221,8 @@ const FLONUM_TYPE flonum_positive_powers_of_ten[] =
};
#ifdef VMS
-void dummy1 () { }
+void
+dummy1 ()
+{
+}
#endif
-/* end of flonum_const.c */
diff --git a/contrib/binutils/gas/flonum-mult.c b/contrib/binutils/gas/flonum-mult.c
index 434a73b..9733724 100644
--- a/contrib/binutils/gas/flonum-mult.c
+++ b/contrib/binutils/gas/flonum-mult.c
@@ -1,5 +1,6 @@
/* flonum_mult.c - multiply two flonums
- Copyright (C) 1987, 1990, 1991, 1992 Free Software Foundation, Inc.
+ Copyright (C) 1987, 1990, 1991, 1992, 2000
+ Free Software Foundation, Inc.
This file is part of Gas, the GNU Assembler.
@@ -22,25 +23,22 @@
#include "flonum.h"
/* plan for a . b => p(roduct)
-
-
+
+-------+-------+-/ /-+-------+-------+
| a | a | ... | a | a |
| A | A-1 | | 1 | 0 |
+-------+-------+-/ /-+-------+-------+
-
-
+
+-------+-------+-/ /-+-------+-------+
| b | b | ... | b | b |
| B | B-1 | | 1 | 0 |
+-------+-------+-/ /-+-------+-------+
-
-
+
+-------+-------+-/ /-+-------+-/ /-+-------+-------+
| p | p | ... | p | ... | p | p |
| A+B+1| A+B | | N | | 1 | 0 |
+-------+-------+-/ /-+-------+-/ /-+-------+-------+
-
+
/^\
(carry) a .b ... | ... a .b a .b
A B | 0 1 0 0
@@ -56,49 +54,48 @@
| \
+----- P = > a .b
N /__ i j
-
+
N = 0 ... A+B
-
+
for all i,j where i+j=N
[i,j integers > 0]
-
+
a[], b[], p[] may not intersect.
Zero length factors signify 0 significant bits: treat as 0.0.
0.0 factors do the right thing.
Zero length product OK.
-
+
I chose the ForTran accent "foo[bar]" instead of the C accent "*garply"
because I felt the ForTran way was more intuitive. The C way would
probably yield better code on most C compilers. Dean Elsner.
- (C style also gives deeper insight [to me] ... oh well ...)
- */
+ (C style also gives deeper insight [to me] ... oh well ...) */
-void
+void
flonum_multip (a, b, product)
const FLONUM_TYPE *a;
const FLONUM_TYPE *b;
FLONUM_TYPE *product;
{
- int size_of_a; /* 0 origin */
- int size_of_b; /* 0 origin */
- int size_of_product; /* 0 origin */
- int size_of_sum; /* 0 origin */
- int extra_product_positions; /* 1 origin */
+ int size_of_a; /* 0 origin */
+ int size_of_b; /* 0 origin */
+ int size_of_product; /* 0 origin */
+ int size_of_sum; /* 0 origin */
+ int extra_product_positions; /* 1 origin */
unsigned long work;
unsigned long carry;
long exponent;
LITTLENUM_TYPE *q;
long significant; /* TRUE when we emit a non-0 littlenum */
- /* ForTran accent follows. */
- int P; /* Scan product low-order -> high. */
+ /* ForTran accent follows. */
+ int P; /* Scan product low-order -> high. */
int N; /* As in sum above. */
- int A; /* Which [] of a? */
- int B; /* Which [] of b? */
+ int A; /* Which [] of a? */
+ int B; /* Which [] of b? */
- if ((a->sign != '-' && a->sign != '+') || (b->sign != '-' && b->sign != '+'))
+ if ((a->sign != '-' && a->sign != '+')
+ || (b->sign != '-' && b->sign != '+'))
{
- /* ...
- Got to fail somehow. Any suggestions? */
+ /* Got to fail somehow. Any suggestions? */
product->sign = 0;
return;
}
@@ -111,8 +108,8 @@ flonum_multip (a, b, product)
extra_product_positions = size_of_product - size_of_sum;
if (extra_product_positions < 0)
{
- P = extra_product_positions; /* P < 0 */
- exponent -= extra_product_positions; /* Increases exponent. */
+ P = extra_product_positions; /* P < 0 */
+ exponent -= extra_product_positions; /* Increases exponent. */
}
else
{
@@ -130,7 +127,8 @@ flonum_multip (a, b, product)
if (A <= size_of_a && B <= size_of_b && B >= 0)
{
#ifdef TRACE
- printf ("a:low[%d.]=%04x b:low[%d.]=%04x work_before=%08x\n", A, a->low[A], B, b->low[B], work);
+ printf ("a:low[%d.]=%04x b:low[%d.]=%04x work_before=%08x\n",
+ A, a->low[A], B, b->low[B], work);
#endif
/* Watch out for sign extension! Without the casts, on
the DEC Alpha, the multiplication result is *signed*
@@ -162,23 +160,19 @@ flonum_multip (a, b, product)
exponent++;
}
}
- /*
- * [P]-> position # size_of_sum + 1.
- * This is where 'carry' should go.
- */
+ /* [P]-> position # size_of_sum + 1.
+ This is where 'carry' should go. */
#ifdef TRACE
printf ("final carry =%04x\n", carry);
#endif
if (carry)
{
if (extra_product_positions > 0)
- {
- product->low[P] = carry;
- }
+ product->low[P] = carry;
else
{
- /* No room at high order for carry littlenum. */
- /* Shift right 1 to make room for most significant littlenum. */
+ /* No room at high order for carry littlenum. */
+ /* Shift right 1 to make room for most significant littlenum. */
exponent++;
P--;
for (q = product->low + P; q >= product->low; q--)
@@ -190,11 +184,7 @@ flonum_multip (a, b, product)
}
}
else
- {
- P--;
- }
+ P--;
product->leader = product->low + P;
product->exponent = exponent;
}
-
-/* end of flonum_mult.c */
diff --git a/contrib/binutils/gas/flonum.h b/contrib/binutils/gas/flonum.h
index 6684f49..d1a5042 100644
--- a/contrib/binutils/gas/flonum.h
+++ b/contrib/binutils/gas/flonum.h
@@ -1,6 +1,6 @@
/* flonum.h - Floating point package
-
- Copyright (C) 1987, 90, 91, 92, 94, 95, 1996 Free Software Foundation, Inc.
+ Copyright (C) 1987, 90, 91, 92, 94, 95, 96, 2000
+ Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -49,8 +49,7 @@
A sign value of 'P' means we've been asked to assemble +Inf
A sign value of 'N' means we've been asked to assemble -Inf
*/
-struct FLONUM_STRUCT
-{
+struct FLONUM_STRUCT {
LITTLENUM_TYPE *low; /* low order littlenum of a bignum */
LITTLENUM_TYPE *high; /* high order littlenum of a bignum */
LITTLENUM_TYPE *leader; /* -> 1st non-zero littlenum */
@@ -61,7 +60,6 @@ struct FLONUM_STRUCT
typedef struct FLONUM_STRUCT FLONUM_TYPE;
-
/***********************************************************************\
* *
* Since we can (& do) meet with exponents like 10^5000, it *
@@ -74,15 +72,11 @@ typedef struct FLONUM_STRUCT FLONUM_TYPE;
* *
\***********************************************************************/
-
extern const FLONUM_TYPE flonum_positive_powers_of_ten[];
extern const FLONUM_TYPE flonum_negative_powers_of_ten[];
extern const int table_size_of_flonum_powers_of_ten;
-/* Flonum_XXX_powers_of_ten[] table has */
-/* legal indices from 0 to */
-/* + this number inclusive. */
-
-
+/* Flonum_XXX_powers_of_ten[] table has legal indices from 0 to
+ + this number inclusive. */
/***********************************************************************\
* *
@@ -106,5 +100,3 @@ void flonum_multip PARAMS ((const FLONUM_TYPE * a, const FLONUM_TYPE * b,
\***********************************************************************/
#define ERROR_EXPONENT_OVERFLOW (2)
-
-/* end of flonum.h */
diff --git a/contrib/binutils/gas/frags.c b/contrib/binutils/gas/frags.c
index d184664..f2f8cfe 100644
--- a/contrib/binutils/gas/frags.c
+++ b/contrib/binutils/gas/frags.c
@@ -27,6 +27,7 @@ extern fragS zero_address_frag;
extern fragS bss_address_frag;
/* Initialization for frag routines. */
+
void
frag_init ()
{
@@ -37,6 +38,7 @@ frag_init ()
/* Allocate a frag on the specified obstack.
Call this routine from everywhere else, so that all the weird alignment
hackery can be done in just one place. */
+
fragS *
frag_alloc (ob)
struct obstack *ob;
@@ -53,15 +55,12 @@ frag_alloc (ob)
return ptr;
}
-/*
- * frag_grow()
- *
- * Try to augment current frag by nchars chars.
- * If there is no room, close of the current frag with a ".fill 0"
- * and begin a new frag. Unless the new frag has nchars chars available
- * do not return. Do not set up any fields of *now_frag.
- */
-void
+/* Try to augment current frag by nchars chars.
+ If there is no room, close of the current frag with a ".fill 0"
+ and begin a new frag. Unless the new frag has nchars chars available
+ do not return. Do not set up any fields of *now_frag. */
+
+void
frag_grow (nchars)
unsigned int nchars;
{
@@ -74,41 +73,40 @@ frag_grow (nchars)
frag_new (0);
oldc = frchain_now->frch_obstack.chunk_size;
frchain_now->frch_obstack.chunk_size = 2 * nchars + SIZEOF_STRUCT_FRAG;
- while ((n = obstack_room (&frchain_now->frch_obstack)) < nchars)
- {
- frag_wane (frag_now);
- frag_new (0);
- }
+ if (frchain_now->frch_obstack.chunk_size > 0)
+ while ((n = obstack_room (&frchain_now->frch_obstack)) < nchars
+ && (unsigned long) frchain_now->frch_obstack.chunk_size > nchars)
+ {
+ frag_wane (frag_now);
+ frag_new (0);
+ }
frchain_now->frch_obstack.chunk_size = oldc;
}
if (obstack_room (&frchain_now->frch_obstack) < nchars)
as_fatal (_("Can't extend frag %d. chars"), nchars);
}
-/*
- * frag_new()
- *
- * Call this to close off a completed frag, and start up a new (empty)
- * frag, in the same subsegment as the old frag.
- * [frchain_now remains the same but frag_now is updated.]
- * Because this calculates the correct value of fr_fix by
- * looking at the obstack 'frags', it needs to know how many
- * characters at the end of the old frag belong to the maximal
- * variable part; The rest must belong to fr_fix.
- * It doesn't actually set up the old frag's fr_var. You may have
- * set fr_var == 1, but allocated 10 chars to the end of the frag;
- * In this case you pass old_frags_var_max_size == 10.
- * In fact, you may use fr_var for something totally unrelated to the
- * size of the variable part of the frag; None of the generic frag
- * handling code makes use of fr_var.
- *
- * Make a new frag, initialising some components. Link new frag at end
- * of frchain_now.
- */
-void
+/* Call this to close off a completed frag, and start up a new (empty)
+ frag, in the same subsegment as the old frag.
+ [frchain_now remains the same but frag_now is updated.]
+ Because this calculates the correct value of fr_fix by
+ looking at the obstack 'frags', it needs to know how many
+ characters at the end of the old frag belong to the maximal
+ variable part; The rest must belong to fr_fix.
+ It doesn't actually set up the old frag's fr_var. You may have
+ set fr_var == 1, but allocated 10 chars to the end of the frag;
+ In this case you pass old_frags_var_max_size == 10.
+ In fact, you may use fr_var for something totally unrelated to the
+ size of the variable part of the frag; None of the generic frag
+ handling code makes use of fr_var.
+
+ Make a new frag, initialising some components. Link new frag at end
+ of frchain_now. */
+
+void
frag_new (old_frags_var_max_size)
/* Number of chars (already allocated on obstack frags) in
- variable_length part of frag. */
+ variable_length part of frag. */
int old_frags_var_max_size;
{
fragS *former_last_fragP;
@@ -122,7 +120,7 @@ frag_new (old_frags_var_max_size)
assert (frag_now->fr_type != 0);
/* This will align the obstack so the next struct we allocate on it
- will begin at a correct boundary. */
+ will begin at a correct boundary. */
obstack_finish (&frchain_now->frch_obstack);
frchP = frchain_now;
know (frchP);
@@ -136,7 +134,7 @@ frag_new (old_frags_var_max_size)
/* Generally, frag_now->points to an address rounded up to next
alignment. However, characters will add to obstack frags
IMMEDIATELY after the struct frag, even if they are not starting
- at an alignment address. */
+ at an alignment address. */
former_last_fragP->fr_next = frag_now;
frchP->frch_last = frag_now;
@@ -150,17 +148,13 @@ frag_new (old_frags_var_max_size)
assert (frchain_now->frch_last == frag_now);
frag_now->fr_next = NULL;
-} /* frag_new() */
+}
-/*
- * frag_more()
- *
- * Start a new frag unless we have n more chars of room in the current frag.
- * Close off the old frag with a .fill 0.
- *
- * Return the address of the 1st char to write into. Advance
- * frag_now_growth past the new chars.
- */
+/* Start a new frag unless we have n more chars of room in the current frag.
+ Close off the old frag with a .fill 0.
+
+ Return the address of the 1st char to write into. Advance
+ frag_now_growth past the new chars. */
char *
frag_more (nchars)
@@ -184,18 +178,14 @@ frag_more (nchars)
retval = obstack_next_free (&frchain_now->frch_obstack);
obstack_blank_fast (&frchain_now->frch_obstack, nchars);
return (retval);
-} /* frag_more() */
+}
-/*
- * frag_var()
- *
- * Start a new frag unless we have max_chars more chars of room in the current frag.
- * Close off the old frag with a .fill 0.
- *
- * Set up a machine_dependent relaxable frag, then start a new frag.
- * Return the address of the 1st char of the var part of the old frag
- * to write into.
- */
+/* Start a new frag unless we have max_chars more chars of room in the
+ current frag. Close off the old frag with a .fill 0.
+
+ Set up a machine_dependent relaxable frag, then start a new frag.
+ Return the address of the 1st char of the var part of the old frag
+ to write into. */
char *
frag_var (type, max_chars, var, subtype, symbol, offset, opcode)
@@ -231,13 +221,9 @@ frag_var (type, max_chars, var, subtype, symbol, offset, opcode)
return (retval);
}
-/*
- * frag_variant()
- *
- * OVE: This variant of frag_var assumes that space for the tail has been
- * allocated by caller.
- * No call to frag_grow is done.
- */
+/* OVE: This variant of frag_var assumes that space for the tail has been
+ allocated by caller.
+ No call to frag_grow is done. */
char *
frag_variant (type, max_chars, var, subtype, symbol, offset, opcode)
@@ -269,14 +255,11 @@ frag_variant (type, max_chars, var, subtype, symbol, offset, opcode)
as_where (&frag_now->fr_file, &frag_now->fr_line);
frag_new (max_chars);
return (retval);
-} /* frag_variant() */
+}
-/*
- * frag_wane()
- *
- * Reduce the variable end of a frag to a harmless state.
- */
-void
+/* Reduce the variable end of a frag to a harmless state. */
+
+void
frag_wane (fragP)
register fragS *fragP;
{
@@ -292,7 +275,7 @@ frag_wane (fragP)
the maximum number of characters to skip when doing the alignment,
or 0 if there is no maximum. */
-void
+void
frag_align (alignment, fill_character, max)
int alignment;
int fill_character;
@@ -301,9 +284,10 @@ frag_align (alignment, fill_character, max)
if (now_seg == absolute_section)
{
addressT new_off;
+ addressT mask;
- new_off = ((abs_section_offset + alignment - 1)
- &~ ((1 << alignment) - 1));
+ mask = (~(addressT) 0) << alignment;
+ new_off = (abs_section_offset + ~mask) & mask;
if (max == 0 || new_off - abs_section_offset <= (addressT) max)
abs_section_offset = new_off;
}
@@ -324,7 +308,7 @@ frag_align (alignment, fill_character, max)
FILL_PATTERN. MAX is the maximum number of characters to skip when
doing the alignment, or 0 if there is no maximum. */
-void
+void
frag_align_pattern (alignment, fill_pattern, n_fill, max)
int alignment;
const char *fill_pattern;
@@ -338,20 +322,53 @@ frag_align_pattern (alignment, fill_pattern, n_fill, max)
memcpy (p, fill_pattern, n_fill);
}
+/* The NOP_OPCODE is for the alignment fill value. Fill it with a nop
+ instruction so that the disassembler does not choke on it. */
+#ifndef NOP_OPCODE
+#define NOP_OPCODE 0x00
+#endif
+
+/* Use this to restrict the amount of memory allocated for representing
+ the alignment code. Needs to be large enough to hold any fixed sized
+ prologue plus the replicating portion. */
+#ifndef MAX_MEM_FOR_RS_ALIGN_CODE
+ /* Assume that if HANDLE_ALIGN is not defined then no special action
+ is required to code fill, which means that we get just repeat the
+ one NOP_OPCODE byte. */
+# ifndef HANDLE_ALIGN
+# define MAX_MEM_FOR_RS_ALIGN_CODE 1
+# else
+# define MAX_MEM_FOR_RS_ALIGN_CODE ((1 << alignment) - 1)
+# endif
+#endif
+
+void
+frag_align_code (alignment, max)
+ int alignment;
+ int max;
+{
+ char *p;
+
+ p = frag_var (rs_align_code, MAX_MEM_FOR_RS_ALIGN_CODE, 1,
+ (relax_substateT) max, (symbolS *) 0,
+ (offsetT) alignment, (char *) 0);
+ *p = NOP_OPCODE;
+}
+
addressT
frag_now_fix_octets ()
{
if (now_seg == absolute_section)
return abs_section_offset;
- return ((char*) obstack_next_free (&frchain_now->frch_obstack)
- - frag_now->fr_literal);
+ return ((char *) obstack_next_free (&frchain_now->frch_obstack)
+ - frag_now->fr_literal);
}
addressT
frag_now_fix ()
{
- return frag_now_fix_octets() / OCTETS_PER_BYTE;
+ return frag_now_fix_octets () / OCTETS_PER_BYTE;
}
void
@@ -365,5 +382,3 @@ frag_append_1_char (datum)
}
obstack_1grow (&frchain_now->frch_obstack, datum);
}
-
-/* end of frags.c */
diff --git a/contrib/binutils/gas/frags.h b/contrib/binutils/gas/frags.h
index dcd9a2f..c1c652b 100644
--- a/contrib/binutils/gas/frags.h
+++ b/contrib/binutils/gas/frags.h
@@ -26,37 +26,34 @@
struct obstack;
#endif
-/*
- * A code fragment (frag) is some known number of chars, followed by some
- * unknown number of chars. Typically the unknown number of chars is an
- * instruction address whose size is yet unknown. We always know the greatest
- * possible size the unknown number of chars may become, and reserve that
- * much room at the end of the frag.
- * Once created, frags do not change address during assembly.
- * We chain the frags in (a) forward-linked list(s). The object-file address
- * of the 1st char of a frag is generally not known until after relax().
- * Many things at assembly time describe an address by {object-file-address
- * of a particular frag}+offset.
-
- BUG: it may be smarter to have a single pointer off to various different
- notes for different frag kinds. See how code pans
- */
-
-struct frag
-{
- /* Object file address (as an octet offset). */
+/* A code fragment (frag) is some known number of chars, followed by some
+ unknown number of chars. Typically the unknown number of chars is an
+ instruction address whose size is yet unknown. We always know the greatest
+ possible size the unknown number of chars may become, and reserve that
+ much room at the end of the frag.
+ Once created, frags do not change address during assembly.
+ We chain the frags in (a) forward-linked list(s). The object-file address
+ of the 1st char of a frag is generally not known until after relax().
+ Many things at assembly time describe an address by {object-file-address
+ of a particular frag}+offset.
+
+ BUG: it may be smarter to have a single pointer off to various different
+ notes for different frag kinds. See how code pans. */
+
+struct frag {
+ /* Object file address (as an octet offset). */
addressT fr_address;
- /* Chain forward; ascending address order. Rooted in frch_root. */
+ /* Chain forward; ascending address order. Rooted in frch_root. */
struct frag *fr_next;
- /* (Fixed) number of octets we know we have. May be 0. */
+ /* (Fixed) number of octets we know we have. May be 0. */
offsetT fr_fix;
/* May be used for (Variable) number of octets after above.
The generic frag handling code no longer makes any use of fr_var. */
offsetT fr_var;
- /* For variable-length tail. */
+ /* For variable-length tail. */
symbolS *fr_symbol;
- /* For variable-length tail. */
+ /* For variable-length tail. */
offsetT fr_offset;
/* Points to opcode low addr byte, for relaxation. */
char *fr_opcode;
@@ -94,8 +91,8 @@ struct frag
};
#define SIZEOF_STRUCT_FRAG \
-((char *)zero_address_frag.fr_literal-(char *)&zero_address_frag)
-/* We want to say fr_literal[0] above. */
+((char *) zero_address_frag.fr_literal - (char *) &zero_address_frag)
+/* We want to say fr_literal[0] above. */
/* Current frag we are building. This frag is incomplete. It is,
however, included in frchain_now. The fr_fix field is bogus;
@@ -104,31 +101,28 @@ COMMON fragS *frag_now;
extern addressT frag_now_fix PARAMS ((void));
extern addressT frag_now_fix_octets PARAMS ((void));
-/* For foreign-segment symbol fixups. */
+/* For foreign-segment symbol fixups. */
COMMON fragS zero_address_frag;
-/* For local common (N_BSS segment) fixups. */
+/* For local common (N_BSS segment) fixups. */
COMMON fragS bss_address_frag;
#if 0
-/*
- * A macro to speed up appending exactly 1 char
- * to current frag.
- */
-/* JF changed < 1 to <= 1 to avoid a race conditon */
-#define FRAG_APPEND_1_CHAR(datum) \
-{ \
- if (obstack_room( &frags ) <= 1) {\
- frag_wane (frag_now); \
- frag_new (0); \
- } \
- obstack_1grow( &frags, datum ); \
+/* A macro to speed up appending exactly 1 char to current frag. */
+/* JF changed < 1 to <= 1 to avoid a race conditon. */
+#define FRAG_APPEND_1_CHAR(datum) \
+{ \
+ if (obstack_room (&frags) <= 1) \
+ { \
+ frag_wane (frag_now); \
+ frag_new (0); \
+ } \
+ obstack_1grow (&frags, datum); \
}
#else
extern void frag_append_1_char PARAMS ((int));
#define FRAG_APPEND_1_CHAR(X) frag_append_1_char (X)
#endif
-
void frag_init PARAMS ((void));
fragS *frag_alloc PARAMS ((struct obstack *));
void frag_grow PARAMS ((unsigned int nchars));
@@ -138,6 +132,7 @@ void frag_align_pattern PARAMS ((int alignment,
const char *fill_pattern,
int n_fill,
int max));
+void frag_align_code PARAMS ((int alignment, int max));
void frag_new PARAMS ((int old_frags_var_max_size));
void frag_wane PARAMS ((fragS * fragP));
diff --git a/contrib/binutils/gas/gasp.c b/contrib/binutils/gas/gasp.c
index a8f5619..b38bbf8 100644
--- a/contrib/binutils/gas/gasp.c
+++ b/contrib/binutils/gas/gasp.c
@@ -20,14 +20,12 @@
You should have received a copy of the GNU General Public License
along with GASP; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
+ 02111-1307, USA. */
/*
-
This program translates the input macros and stuff into a form
suitable for gas to consume.
-
gasp [-sdhau] [-c char] [-o <outfile>] <infile>*
-s copy source to output
@@ -43,10 +41,8 @@ suitable for gas to consume.
Macro arg parameters subsituted by name, don't need the &.
String can start with ' too.
Strings can be surrounded by <..>
- A %<exp> in a string evaluates the expression
+ A %<exp> in a string evaluates the expression
Literal char in a string with !
-
-
*/
#include "config.h"
@@ -83,29 +79,28 @@ extern void as_abort PARAMS ((const char *, int, const char *));
is used by the hash table code used by macro.c. */
int chunksize = 0;
-#define MAX_INCLUDES 30 /* Maximum include depth */
-#define MAX_REASONABLE 1000 /* Maximum number of expansions */
-
-int unreasonable; /* -u on command line */
-int stats; /* -d on command line */
-int print_line_number; /* -p flag on command line */
-int copysource; /* -c flag on command line */
-int warnings; /* Number of WARNINGs generated so far. */
-int errors; /* Number of ERRORs generated so far. */
-int fatals; /* Number of fatal ERRORs generated so far (either 0 or 1). */
-int alternate = 0; /* -a on command line */
-int mri = 0; /* -M on command line */
+#define MAX_INCLUDES 30 /* Maximum include depth. */
+#define MAX_REASONABLE 1000 /* Maximum number of expansions. */
+
+int unreasonable; /* -u on command line. */
+int stats; /* -d on command line. */
+int print_line_number; /* -p flag on command line. */
+int copysource; /* -c flag on command line. */
+int warnings; /* Number of WARNINGs generated so far. */
+int errors; /* Number of ERRORs generated so far. */
+int fatals; /* Number of fatal ERRORs generated so far (either 0 or 1). */
+int alternate = 0; /* -a on command line. */
+int mri = 0; /* -M on command line. */
char comment_char = '!';
-int radix = 10; /* Default radix */
+int radix = 10; /* Default radix. */
-int had_end; /* Seen .END */
+int had_end; /* Seen .END. */
-/* The output stream */
+/* The output stream. */
FILE *outfile;
-/* the attributes of each character are stored as a bit pattern
- chartype, which gives us quick tests. */
-
+/* The attributes of each character are stored as a bit pattern
+ chartype, which gives us quick tests. */
#define FIRSTBIT 1
#define NEXTBIT 2
@@ -121,7 +116,6 @@ FILE *outfile;
#define ISBASE(x) (chartype[(unsigned char)(x)] & BASEBIT)
static char chartype[256];
-
/* Conditional assembly uses the `ifstack'. Each aif pushes another
entry onto the stack, and sets the on flag if it should. The aelse
sets hadelse, and toggles on. An aend pops a level. We limit to
@@ -130,118 +124,101 @@ static char chartype[256];
a bug in the user's macro structure. */
#define IFNESTING 100
-struct
- {
- int on; /* is the level being output */
- int hadelse; /* has an aelse been seen */
- }
-ifstack[IFNESTING];
+struct {
+ int on; /* Is the level being output. */
+ int hadelse; /* Has an aelse been seen. */
+} ifstack[IFNESTING];
+
int ifi;
/* The final and intermediate results of expression evaluation are kept in
exp_t's. Note that a symbol is not an sb, but a pointer into the input
- line. It must be coped somewhere safe before the next line is read in. */
-
-typedef struct
- {
- char *name;
- int len;
- }
-symbol;
+ line. It must be coped somewhere safe before the next line is read in. */
-typedef struct
- {
- int value; /* constant part */
- symbol add_symbol; /* name part */
- symbol sub_symbol; /* name part */
- }
-exp_t;
+typedef struct {
+ char *name;
+ int len;
+} symbol;
+typedef struct {
+ int value; /* Constant part. */
+ symbol add_symbol; /* Name part. */
+ symbol sub_symbol; /* Name part. */
+} exp_t;
/* Hashing is done in a pretty standard way. A hash_table has a
pointer to a vector of pointers to hash_entrys, and the size of the
vector. A hash_entry contains a union of all the info we like to
store in hash table. If there is a hash collision, hash_entries
- with the same hash are kept in a chain. */
-
-/* What the data in a hash_entry means */
-typedef enum
- {
- hash_integer, /* name->integer mapping */
- hash_string, /* name->string mapping */
- hash_macro, /* name is a macro */
- hash_formal /* name is a formal argument */
- } hash_type;
-
-typedef struct hs
- {
- sb key; /* symbol name */
- hash_type type; /* symbol meaning */
- union
- {
- sb s;
- int i;
- struct macro_struct *m;
- struct formal_struct *f;
- } value;
- struct hs *next; /* next hash_entry with same hash key */
- } hash_entry;
-
-typedef struct
- {
- hash_entry **table;
- int size;
- } hash_table;
-
-
-/* how we nest files and expand macros etc.
-
- we keep a stack of of include_stack structs. each include file
- pushes a new level onto the stack. we keep an sb with a pushback
+ with the same hash are kept in a chain. */
+
+/* What the data in a hash_entry means. */
+typedef enum {
+ hash_integer, /* Name->integer mapping. */
+ hash_string, /* Name->string mapping. */
+ hash_macro, /* Name is a macro. */
+ hash_formal /* Name is a formal argument. */
+} hash_type;
+
+typedef struct hs {
+ sb key; /* Symbol name. */
+ hash_type type; /* Symbol meaning. */
+ union {
+ sb s;
+ int i;
+ struct macro_struct *m;
+ struct formal_struct *f;
+ } value;
+ struct hs *next; /* Next hash_entry with same hash key. */
+} hash_entry;
+
+typedef struct {
+ hash_entry **table;
+ int size;
+} hash_table;
+
+/* How we nest files and expand macros etc.
+
+ We keep a stack of of include_stack structs. Each include file
+ pushes a new level onto the stack. We keep an sb with a pushback
too. unget chars are pushed onto the pushback sb, getchars first
checks the pushback sb before reading from the input stream.
- small things are expanded by adding the text of the item onto the
- pushback sb. larger items are grown by pushing a new level and
- allocating the entire pushback buf for the item. each time
- something like a macro is expanded, the stack index is changed. we
+ Small things are expanded by adding the text of the item onto the
+ pushback sb. Larger items are grown by pushing a new level and
+ allocating the entire pushback buf for the item. Each time
+ something like a macro is expanded, the stack index is changed. We
can then perform an exitm by popping all entries off the stack with
- the same stack index. if we're being reasonable, we can detect
- recusive expansion by checking the index is reasonably small.
- */
-
-typedef enum
- {
- include_file, include_repeat, include_while, include_macro
- } include_type;
-
-struct include_stack
- {
- sb pushback; /* current pushback stream */
- int pushback_index; /* next char to read from stream */
- FILE *handle; /* open file */
- sb name; /* name of file */
- int linecount; /* number of lines read so far */
- include_type type;
- int index; /* index of this layer */
- }
-include_stack[MAX_INCLUDES];
+ the same stack index. If we're being reasonable, we can detect
+ recusive expansion by checking the index is reasonably small. */
+
+typedef enum {
+ include_file, include_repeat, include_while, include_macro
+} include_type;
+
+struct include_stack {
+ sb pushback; /* Current pushback stream. */
+ int pushback_index; /* Next char to read from stream. */
+ FILE *handle; /* Open file. */
+ sb name; /* Name of file. */
+ int linecount; /* Number of lines read so far. */
+ include_type type;
+ int index; /* Index of this layer. */
+} include_stack[MAX_INCLUDES];
struct include_stack *sp;
#define isp (sp - include_stack)
-/* Include file list */
+/* Include file list. */
-typedef struct include_path
-{
+typedef struct include_path {
struct include_path *next;
sb path;
-} include_path;
+} include_path;
include_path *paths_head;
include_path *paths_tail;
-
static void quit PARAMS ((void));
static void hash_new_table PARAMS ((int, hash_table *));
static int hash PARAMS ((sb *));
@@ -334,16 +311,36 @@ static void do_define PARAMS ((const char *));
static void show_usage PARAMS ((FILE *, int));
static void show_help PARAMS ((void));
-#define FATAL(x) \
- do { include_print_where_line (stderr); fprintf x ; fatals++; quit(); } while(0)
-#define ERROR(x) \
- do { include_print_where_line (stderr); fprintf x; errors++; } while(0)
-#define WARNING(x) \
- do { include_print_where_line (stderr); fprintf x; warnings++;} while(0)
-
+#define FATAL(x) \
+ do \
+ { \
+ include_print_where_line (stderr); \
+ fprintf x; \
+ fatals++; \
+ quit (); \
+ } \
+ while (0)
+
+#define ERROR(x) \
+ do \
+ { \
+ include_print_where_line (stderr); \
+ fprintf x; \
+ errors++; \
+ } \
+ while (0)
+
+#define WARNING(x) \
+ do \
+ { \
+ include_print_where_line (stderr); \
+ fprintf x; \
+ warnings++; \
+ } \
+ while (0)
+
+/* Exit the program and return the right ERROR code. */
-
-/* exit the program and return the right ERROR code. */
static void
quit ()
{
@@ -353,20 +350,22 @@ quit ()
else
exitcode = 0;
- if (stats)
+ if (stats)
{
int i;
- for (i = 0; i < sb_max_power_two; i++)
+ for (i = 0; i < sb_max_power_two; i++)
{
- fprintf (stderr, "strings size %8d : %d\n", 1<<i, string_count[i]);
+ fprintf (stderr, "strings size %8d : %d\n",
+ 1 << i, string_count[i]);
}
}
exit (exitcode);
}
-/* hash table maintenance. */
+/* Hash table maintenance. */
-/* build a new hash table with size buckets, and fill in the info at ptr. */
+/* Build a new hash table with size buckets
+ and fill in the info at ptr. */
static void
hash_new_table (size, ptr)
@@ -381,7 +380,7 @@ hash_new_table (size, ptr)
ptr->table[i] = 0;
}
-/* calculate and return the hash value of the sb at key. */
+/* Calculate and return the hash value of the sb at key. */
static int
hash (key)
@@ -398,11 +397,10 @@ hash (key)
return k & 0xf0fff;
}
-/* lookup key in hash_table tab, if present, then return it, otherwise
- build a new one and fill it with hash_integer. */
+/* Look up key in hash_table tab. If present, then return it,
+ otherwise build a new one and fill it with hash_integer. */
-static
-hash_entry *
+static hash_entry *
hash_create (tab, key)
hash_table *tab;
sb *key;
@@ -433,11 +431,10 @@ hash_create (tab, key)
}
}
-/* add sb name with key into hash_table tab. if replacing old value
- and again, then ERROR. */
+/* Add sb name with key into hash_table tab.
+ If replacing old value and again, then ERROR. */
-static
-void
+static void
hash_add_to_string_table (tab, key, name, again)
hash_table *tab;
sb *key;
@@ -457,14 +454,13 @@ hash_add_to_string_table (tab, key, name, again)
ptr->type = hash_string;
sb_reset (&ptr->value.s);
-
+
sb_add_sb (&ptr->value.s, name);
}
-/* add integer name to hash_table tab with sb key. */
+/* Add integer name to hash_table tab with sb key. */
-static
-void
+static void
hash_add_to_int_table (tab, key, name)
hash_table *tab;
sb *key;
@@ -474,11 +470,10 @@ hash_add_to_int_table (tab, key, name)
ptr->value.i = name;
}
-/* lookup sb key in hash_table tab. if found return hash_entry result,
- else 0. */
-
-static
-hash_entry *
+/* Look up sb key in hash_table tab.
+ If found, return hash_entry result, else 0. */
+
+static hash_entry *
hash_lookup (tab, key)
hash_table *tab;
sb *key;
@@ -496,7 +491,6 @@ hash_lookup (tab, key)
return 0;
}
-
/* expressions
are handled in a really simple recursive decent way. each bit of
@@ -511,14 +505,12 @@ hash_lookup (tab, key)
+ -
&
| ~
-
*/
+/* Make sure that the exp_t at term is constant.
+ If not the give the op ERROR. */
-/* make sure that the exp_t at term is constant, if not the give the op ERROR. */
-
-static
-void
+static void
checkconst (op, term)
int op;
exp_t *term;
@@ -530,12 +522,10 @@ checkconst (op, term)
}
}
-/* turn the number in string at idx into a number of base,
- fill in ptr and return the index of the first character not in the
- number. */
+/* Turn the number in string at idx into a number of base, fill in
+ ptr, and return the index of the first character not in the number. */
-static
-int
+static int
sb_strtol (idx, string, base, ptr)
int idx;
sb *string;
@@ -615,8 +605,6 @@ level_0 (idx, string, lhs)
return sb_skip_white (idx, string);
}
-
-
static int
level_1 (idx, string, lhs)
int idx;
@@ -695,7 +683,6 @@ level_2 (idx, string, lhs)
return sb_skip_white (idx, string);
}
-
static int
level_3 (idx, string, lhs)
int idx;
@@ -720,7 +707,7 @@ level_3 (idx, string, lhs)
{
ERROR ((stderr, _("can't add two relocatable expressions\n")));
}
- /* change nn+symbol to symbol + nn */
+ /* Change nn+symbol to symbol + nn. */
if (rhs.add_symbol.name)
{
lhs->add_symbol = rhs.add_symbol;
@@ -794,10 +781,9 @@ level_5 (idx, string, lhs)
return sb_skip_white (idx, string);
}
-
-/* parse the expression at offset idx into string, fill up res with
- the result. return the index of the first char past the expression.
- */
+/* Parse the expression at offset idx into string, fill up res with
+ the result. Return the index of the first char past the
+ expression. */
static int
exp_parse (idx, string, res)
@@ -808,9 +794,8 @@ exp_parse (idx, string, res)
return level_5 (sb_skip_white (idx, string), string, res);
}
-
-/* turn the expression at exp into text and glue it onto the end of
- string. */
+/* Turn the expression at exp into text and glue it onto the end of
+ string. */
static void
exp_string (exp, string)
@@ -849,10 +834,9 @@ exp_string (exp, string)
sb_add_char (string, '0');
}
-
-/* parse the expression at offset idx into sb in, return the value in val.
- if the expression is not constant, give ERROR emsg. returns the index
- of the first character past the end of the expression. */
+/* Parse the expression at offset idx into sb in. Return the value in
+ val. If the expression is not constant, give ERROR emsg. Return
+ the index of the first character past the end of the expression. */
static int
exp_get_abs (emsg, idx, in, val)
@@ -869,11 +853,17 @@ exp_get_abs (emsg, idx, in, val)
return idx;
}
+/* Current label parsed from line. */
+sb label;
+
+/* Hash table for all assigned variables. */
+hash_table assign_hash_table;
-sb label; /* current label parsed from line */
-hash_table assign_hash_table; /* hash table for all assigned variables */
-hash_table keyword_hash_table; /* hash table for keyword */
-hash_table vars; /* hash table for eq variables */
+/* Hash table for keyword. */
+hash_table keyword_hash_table;
+
+/* Hash table for eq variables. */
+hash_table vars;
#define in_comment ';'
@@ -886,7 +876,7 @@ strip_comments (out)
int i = 0;
for (i = 0; i < out->len; i++)
{
- if (ISCOMMENTCHAR(s[i]))
+ if (ISCOMMENTCHAR (s[i]))
{
out->len = i;
return;
@@ -895,7 +885,7 @@ strip_comments (out)
}
#endif
-/* push back character ch so that it can be read again. */
+/* Push back character ch so that it can be read again. */
static void
unget (ch)
@@ -911,10 +901,10 @@ unget (ch)
sb_add_char (&sp->pushback, ch);
}
-/* push the sb ptr onto the include stack, with the given name, type and index. */
+/* Push the sb ptr onto the include stack, with the given name, type
+ and index. */
-static
-void
+static void
include_buf (name, ptr, type, index)
sb *name;
sb *ptr;
@@ -935,10 +925,10 @@ include_buf (name, ptr, type, index)
sb_add_sb (&sp->pushback, ptr);
}
+/* Used in ERROR messages, print info on where the include stack is
+ onto file. */
-/* used in ERROR messages, print info on where the include stack is onto file. */
-static
-void
+static void
include_print_where_line (file)
FILE *file;
{
@@ -951,7 +941,8 @@ include_print_where_line (file)
}
}
-/* used in listings, print the line number onto file. */
+/* Used in listings, print the line number onto file. */
+
static void
include_print_line (file)
FILE *file;
@@ -973,8 +964,7 @@ include_print_line (file)
}
}
-
-/* read a line from the top of the include stack into sb in. */
+/* Read a line from the top of the include stack into sb in. */
static int
get_line (in)
@@ -1022,7 +1012,7 @@ get_line (in)
online = 0;
if (ch == '+')
{
- /* continued line */
+ /* Continued line. */
if (copysource)
{
putc (comment_char, outfile);
@@ -1047,7 +1037,7 @@ get_line (in)
return more;
}
-/* find a label from sb in and put it in out. */
+/* Find a label from sb in and put it in out. */
static int
grab_label (in, out)
@@ -1060,9 +1050,9 @@ grab_label (in, out)
{
sb_add_char (out, in->ptr[i]);
i++;
- while ((ISNEXTCHAR (in->ptr[i])
+ while ((ISNEXTCHAR (in->ptr[i])
|| in->ptr[i] == '\\'
- || in->ptr[i] == '&')
+ || in->ptr[i] == '&')
&& i < in->len)
{
sb_add_char (out, in->ptr[i]);
@@ -1072,8 +1062,8 @@ grab_label (in, out)
return i;
}
-/* find all strange base stuff and turn into decimal. also
- find all the other numbers and convert them from the default radix */
+/* Find all strange base stuff and turn into decimal. Also
+ find all the other numbers and convert them from the default radix. */
static void
change_base (idx, in, out)
@@ -1133,7 +1123,7 @@ change_base (idx, in, out)
}
else if (ISFIRSTCHAR (in->ptr[idx]))
{
- /* copy entire names through quickly */
+ /* Copy entire names through quickly. */
sb_add_char (out, in->ptr[idx]);
idx++;
while (idx < in->len && ISNEXTCHAR (in->ptr[idx]))
@@ -1145,13 +1135,13 @@ change_base (idx, in, out)
else if (isdigit ((unsigned char) in->ptr[idx]))
{
int value;
- /* all numbers must start with a digit, let's chew it and
- spit out decimal */
+ /* All numbers must start with a digit, let's chew it and
+ spit out decimal. */
idx = sb_strtol (idx, in, radix, &value);
sprintf (buffer, "%d", value);
sb_add_string (out, buffer);
- /* skip all undigsested letters */
+ /* Skip all undigsested letters. */
while (idx < in->len && ISNEXTCHAR (in->ptr[idx]))
{
sb_add_char (out, in->ptr[idx]);
@@ -1161,7 +1151,7 @@ change_base (idx, in, out)
else if (in->ptr[idx] == '"' || in->ptr[idx] == '\'')
{
char tchar = in->ptr[idx];
- /* copy entire names through quickly */
+ /* Copy entire names through quickly. */
sb_add_char (out, in->ptr[idx]);
idx++;
while (idx < in->len && in->ptr[idx] != tchar)
@@ -1172,7 +1162,7 @@ change_base (idx, in, out)
}
else
{
- /* nothing special, just pass it through */
+ /* Nothing special, just pass it through. */
sb_add_char (out, in->ptr[idx]);
idx++;
}
@@ -1180,7 +1170,8 @@ change_base (idx, in, out)
}
-/* .end */
+/* .end */
+
static void
do_end (in)
sb *in;
@@ -1190,7 +1181,7 @@ do_end (in)
fprintf (outfile, "%s\n", sb_name (in));
}
-/* .assign */
+/* .assign */
static void
do_assign (again, idx, in)
@@ -1198,7 +1189,7 @@ do_assign (again, idx, in)
int idx;
sb *in;
{
- /* stick label in symbol table with following value */
+ /* Stick label in symbol table with following value. */
exp_t e;
sb acc;
@@ -1209,11 +1200,9 @@ do_assign (again, idx, in)
sb_kill (&acc);
}
+/* .radix [b|q|d|h] */
-/* .radix [b|q|d|h] */
-
-static
-void
+static void
do_radix (ptr)
sb *ptr;
{
@@ -1241,8 +1230,7 @@ do_radix (ptr)
}
}
-
-/* Parse off a .b, .w or .l */
+/* Parse off a .b, .w or .l. */
static int
get_opsize (idx, in, size)
@@ -1281,13 +1269,13 @@ get_opsize (idx, in, size)
return idx;
}
-static
-int eol(idx, line)
+static int
+eol (idx, line)
int idx;
sb *line;
{
idx = sb_skip_white (idx, line);
- if (idx < line->len
+ if (idx < line->len
&& ISCOMMENTCHAR(line->ptr[idx]))
return 1;
if (idx >= line->len)
@@ -1295,8 +1283,8 @@ int eol(idx, line)
return 0;
}
-/* .data [.b|.w|.l] <data>*
- or d[bwl] <data>* */
+/* .data [.b|.w|.l] <data>*
+ or d[bwl] <data>* */
static void
do_data (idx, in, size)
@@ -1309,13 +1297,14 @@ do_data (idx, in, size)
sb acc;
sb_new (&acc);
- if (!size)
+ if (!size)
{
idx = get_opsize (idx, in, &opsize);
}
- else {
- opsize = size;
- }
+ else
+ {
+ opsize = size;
+ }
switch (opsize)
{
case 4:
@@ -1329,13 +1318,12 @@ do_data (idx, in, size)
break;
}
-
fprintf (outfile, "%s\t", opname);
- idx = sb_skip_white (idx, in);
+ idx = sb_skip_white (idx, in);
- if (alternate
- && idx < in->len
+ if (alternate
+ && idx < in->len
&& in->ptr[idx] == '"')
{
int i;
@@ -1343,11 +1331,11 @@ do_data (idx, in, size)
for (i = 0; i < acc.len; i++)
{
if (i)
- fprintf(outfile,",");
+ fprintf (outfile, ",");
fprintf (outfile, "%d", acc.ptr[i]);
}
}
- else
+ else
{
while (!eol (idx, in))
{
@@ -1368,7 +1356,7 @@ do_data (idx, in, size)
fprintf (outfile, "\n");
}
-/* .datab [.b|.w|.l] <repeat>,<fill> */
+/* .datab [.b|.w|.l] <repeat>,<fill> */
static void
do_datab (idx, in)
@@ -1388,7 +1376,7 @@ do_datab (idx, in)
fprintf (outfile, ".fill\t%d,%d,%d\n", repeat, opsize, fill);
}
-/* .align <size> */
+/* .align <size> */
static void
do_align (idx, in)
@@ -1415,7 +1403,7 @@ do_align (idx, in)
fprintf (outfile, "\n");
}
-/* .res[.b|.w|.l] <size> */
+/* .res[.b|.w|.l] <size> */
static void
do_res (idx, in, type)
@@ -1427,7 +1415,7 @@ do_res (idx, in, type)
int count = 0;
idx = get_opsize (idx, in, &size);
- while (!eol(idx, in))
+ while (!eol (idx, in))
{
idx = sb_skip_white (idx, in);
if (in->ptr[idx] == ',')
@@ -1441,8 +1429,7 @@ do_res (idx, in, type)
}
}
-
-/* .export */
+/* .export */
static void
do_export (in)
@@ -1451,7 +1438,7 @@ do_export (in)
fprintf (outfile, ".global %s\n", sb_name (in));
}
-/* .print [list] [nolist] */
+/* .print [list] [nolist] */
static void
do_print (idx, in)
@@ -1475,7 +1462,8 @@ do_print (idx, in)
}
}
-/* .head */
+/* .head */
+
static void
do_heading (idx, in)
int idx;
@@ -1488,7 +1476,7 @@ do_heading (idx, in)
sb_kill (&head);
}
-/* .page */
+/* .page */
static void
do_page ()
@@ -1496,7 +1484,8 @@ do_page ()
fprintf (outfile, ".eject\n");
}
-/* .form [lin=<value>] [col=<value>] */
+/* .form [lin=<value>] [col=<value>] */
+
static void
do_form (idx, in)
int idx;
@@ -1527,7 +1516,6 @@ do_form (idx, in)
}
-
/* Fetch string from the input stream,
rules:
'Bxyx<whitespace> -> return 'Bxyza
@@ -1535,6 +1523,7 @@ do_form (idx, in)
"<string>" -> return string
xyx<whitespace> -> return xyz
*/
+
static int
get_any_string (idx, in, out, expand, pretend_quoted)
int idx;
@@ -1548,7 +1537,7 @@ get_any_string (idx, in, out, expand, pretend_quoted)
if (idx < in->len)
{
- if (in->len > 2 && in->ptr[idx+1] == '\'' && ISBASE (in->ptr[idx]))
+ if (in->len > 2 && in->ptr[idx + 1] == '\'' && ISBASE (in->ptr[idx]))
{
while (!ISSEP (in->ptr[idx]))
sb_add_char (out, in->ptr[idx++]);
@@ -1559,12 +1548,12 @@ get_any_string (idx, in, out, expand, pretend_quoted)
{
int val;
char buf[20];
- /* Turns the next expression into a string */
+ /* Turns the next expression into a string. */
idx = exp_get_abs (_("% operator needs absolute expression"),
idx + 1,
in,
&val);
- sprintf(buf, "%d", val);
+ sprintf (buf, "%d", val);
sb_add_string (out, buf);
}
else if (in->ptr[idx] == '"'
@@ -1573,35 +1562,36 @@ get_any_string (idx, in, out, expand, pretend_quoted)
{
if (alternate && expand)
{
- /* Keep the quotes */
- sb_add_char (out, '\"');
-
- idx = getstring (idx, in, out);
- sb_add_char (out, '\"');
+ /* Keep the quotes. */
+ sb_add_char (out, '\"');
+
+ idx = getstring (idx, in, out);
+ sb_add_char (out, '\"');
}
- else {
- idx = getstring (idx, in, out);
- }
+ else
+ {
+ idx = getstring (idx, in, out);
+ }
}
- else
+ else
{
- while (idx < in->len
+ while (idx < in->len
&& (in->ptr[idx] == '"'
|| in->ptr[idx] == '\''
- || pretend_quoted
+ || pretend_quoted
|| !ISSEP (in->ptr[idx])))
{
- if (in->ptr[idx] == '"'
+ if (in->ptr[idx] == '"'
|| in->ptr[idx] == '\'')
{
char tchar = in->ptr[idx];
sb_add_char (out, in->ptr[idx++]);
while (idx < in->len
&& in->ptr[idx] != tchar)
- sb_add_char (out, in->ptr[idx++]);
+ sb_add_char (out, in->ptr[idx++]);
if (idx == in->len)
- return idx;
+ return idx;
}
sb_add_char (out, in->ptr[idx++]);
}
@@ -1611,9 +1601,8 @@ get_any_string (idx, in, out, expand, pretend_quoted)
return idx;
}
-
-/* skip along sb in starting at idx, suck off whitespace a ( and more
- whitespace. return the idx of the next char */
+/* Skip along sb in starting at idx, suck off whitespace a ( and more
+ whitespace. Return the idx of the next char. */
static int
skip_openp (idx, in)
@@ -1627,8 +1616,8 @@ skip_openp (idx, in)
return idx;
}
-/* skip along sb in starting at idx, suck off whitespace a ) and more
- whitespace. return the idx of the next char */
+/* Skip along sb in starting at idx, suck off whitespace a ) and more
+ whitespace. Return the idx of the next char. */
static int
skip_closep (idx, in)
@@ -1642,7 +1631,7 @@ skip_closep (idx, in)
return idx;
}
-/* .len */
+/* .len */
static int
dolen (idx, in, out)
@@ -1665,11 +1654,9 @@ dolen (idx, in, out)
return idx;
}
+/* .instr */
-/* .instr */
-
-static
-int
+static int
doinstr (idx, in, out)
int idx;
sb *in;
@@ -1714,7 +1701,6 @@ doinstr (idx, in, out)
return idx;
}
-
static int
dosubstr (idx, in, out)
int idx;
@@ -1734,14 +1720,13 @@ dosubstr (idx, in, out)
idx = exp_get_abs (_("need absolute length.\n"), idx, in, &len);
idx = skip_closep (idx, in);
-
if (len < 0 || pos < 0 ||
pos > string.len
|| pos + len > string.len)
{
sb_add_string (out, " ");
}
- else
+ else
{
sb_add_char (out, '"');
while (len > 0)
@@ -1751,11 +1736,12 @@ dosubstr (idx, in, out)
}
sb_add_char (out, '"');
}
- sb_kill(&string);
+ sb_kill (&string);
return idx;
}
-/* scan line, change tokens in the hash table to their replacements */
+/* Scan line, change tokens in the hash table to their replacements. */
+
static void
process_assigns (idx, in, buf)
int idx;
@@ -1813,7 +1799,7 @@ process_assigns (idx, in, buf)
idx = dosubstr (idx + 7, in, buf);
else if (ISFIRSTCHAR (in->ptr[idx]))
{
- /* may be a simple name subsitution, see if we have a word */
+ /* May be a simple name subsitution, see if we have a word. */
sb acc;
int cur = idx + 1;
while (cur < in->len
@@ -1825,12 +1811,12 @@ process_assigns (idx, in, buf)
ptr = hash_lookup (&assign_hash_table, &acc);
if (ptr)
{
- /* Found a definition for it */
+ /* Found a definition for it. */
sb_add_sb (buf, &ptr->value.s);
}
else
{
- /* No definition, just copy the word */
+ /* No definition, just copy the word. */
sb_add_sb (buf, &acc);
}
sb_kill (&acc);
@@ -1857,8 +1843,7 @@ get_and_process (idx, in, out)
return idx;
}
-static
-void
+static void
process_file ()
{
sb line;
@@ -1870,13 +1855,13 @@ process_file ()
sb_new (&line);
sb_new (&t1);
sb_new (&t2);
- sb_new(&acc);
+ sb_new (&acc);
sb_new (&label_in);
sb_reset (&line);
more = get_line (&line);
while (more)
{
- /* Find any label and pseudo op that we're intested in */
+ /* Find any label and pseudo op that we're intested in. */
int l;
if (line.len == 0)
{
@@ -1893,7 +1878,7 @@ process_file ()
else
{
l = grab_label (&line, &label_in);
- sb_reset (&label);
+ sb_reset (&label);
if (line.ptr[l] == ':')
l++;
@@ -1936,15 +1921,12 @@ process_file ()
if (process_pseudo_op (l, &line, &acc))
{
-
-
}
else if (condass_on ())
{
if (macro_op (l, &line))
{
-
}
else
{
@@ -1955,7 +1937,7 @@ process_file ()
}
else
fprintf (outfile, "\t");
- sb_reset(&t1);
+ sb_reset (&t1);
process_assigns (l, &line, &t1);
sb_reset (&t2);
change_base (0, &t1, &t2);
@@ -1964,13 +1946,14 @@ process_file ()
}
}
}
- else {
- /* Only a label on this line */
- if (label.len && condass_on())
- {
- fprintf (outfile, "%s:\n", sb_name (&label));
- }
- }
+ else
+ {
+ /* Only a label on this line. */
+ if (label.len && condass_on ())
+ {
+ fprintf (outfile, "%s:\n", sb_name (&label));
+ }
+ }
}
if (had_end)
@@ -1983,10 +1966,6 @@ process_file ()
WARNING ((stderr, _("END missing from end of file.\n")));
}
-
-
-
-
static void
free_old_entry (ptr)
hash_entry *ptr;
@@ -1994,11 +1973,11 @@ free_old_entry (ptr)
if (ptr)
{
if (ptr->type == hash_string)
- sb_kill(&ptr->value.s);
+ sb_kill (&ptr->value.s);
}
}
-/* name: .ASSIGNA <value> */
+/* name: .ASSIGNA <value> */
static void
do_assigna (idx, in)
@@ -2026,7 +2005,7 @@ do_assigna (idx, in)
sb_kill (&tmp);
}
-/* name: .ASSIGNC <string> */
+/* name: .ASSIGNC <string> */
static void
do_assignc (idx, in)
@@ -2052,15 +2031,14 @@ do_assignc (idx, in)
sb_kill (&acc);
}
-
-/* name: .REG (reg) */
+/* name: .REG (reg) */
static void
do_reg (idx, in)
int idx;
sb *in;
{
- /* remove reg stuff from inside parens */
+ /* Remove reg stuff from inside parens. */
sb what;
if (!mri)
idx = skip_openp (idx, in);
@@ -2079,7 +2057,6 @@ do_reg (idx, in)
sb_kill (&what);
}
-
static int
condass_lookup_name (inbuf, idx, out, warn)
sb *inbuf;
@@ -2101,14 +2078,13 @@ condass_lookup_name (inbuf, idx, out, warn)
idx++;
ptr = hash_lookup (&vars, &condass_acc);
-
if (!ptr)
{
- if (warn)
+ if (warn)
{
WARNING ((stderr, _("Can't find preprocessor variable %s.\n"), sb_name (&condass_acc)));
}
- else
+ else
{
sb_add_string (out, "0");
}
@@ -2197,11 +2173,12 @@ istrue (idx, in)
{
int cond;
int same;
- /* This is a string comparision */
+ /* This is a string comparision. */
idx = getstring (idx, in, &acc_a);
idx = whatcond (idx, in, &cond);
idx = getstring (idx, in, &acc_b);
- same = acc_a.len == acc_b.len && (strncmp (acc_a.ptr, acc_b.ptr, acc_a.len) == 0);
+ same = acc_a.len == acc_b.len
+ && (strncmp (acc_a.ptr, acc_b.ptr, acc_a.len) == 0);
if (cond != EQ && cond != NE)
{
@@ -2212,7 +2189,7 @@ istrue (idx, in)
res = (cond != EQ) ^ same;
}
else
- /* This is a numeric expression */
+ /* This is a numeric expression. */
{
int vala;
int valb;
@@ -2264,7 +2241,8 @@ istrue (idx, in)
return res;
}
-/* .AIF */
+/* .AIF */
+
static void
do_aif (idx, in)
int idx;
@@ -2275,16 +2253,16 @@ do_aif (idx, in)
FATAL ((stderr, _("AIF nesting unreasonable.\n")));
}
ifi++;
- ifstack[ifi].on = ifstack[ifi-1].on ? istrue (idx, in) : 0;
+ ifstack[ifi].on = ifstack[ifi - 1].on ? istrue (idx, in) : 0;
ifstack[ifi].hadelse = 0;
}
+/* .AELSE */
-/* .AELSE */
static void
do_aelse ()
{
- ifstack[ifi].on = ifstack[ifi-1].on ? !ifstack[ifi].on : 0;
+ ifstack[ifi].on = ifstack[ifi - 1].on ? !ifstack[ifi].on : 0;
if (ifstack[ifi].hadelse)
{
ERROR ((stderr, _("Multiple AELSEs in AIF.\n")));
@@ -2292,8 +2270,8 @@ do_aelse ()
ifstack[ifi].hadelse = 1;
}
+/* .AENDI */
-/* .AENDI */
static void
do_aendi ()
{
@@ -2343,7 +2321,7 @@ do_if (idx, in, cond)
}
ifi++;
- ifstack[ifi].on = ifstack[ifi-1].on ? res: 0;
+ ifstack[ifi].on = ifstack[ifi - 1].on ? res : 0;
ifstack[ifi].hadelse = 0;
}
@@ -2394,7 +2372,7 @@ get_mri_string (idx, in, val, terminator)
return idx;
}
-/* MRI IFC, IFNC. */
+/* MRI IFC, IFNC */
static void
do_ifc (idx, in, ifnc)
@@ -2429,11 +2407,12 @@ do_ifc (idx, in, ifnc)
res ^= ifnc;
ifi++;
- ifstack[ifi].on = ifstack[ifi-1].on ? res : 0;
+ ifstack[ifi].on = ifstack[ifi - 1].on ? res : 0;
ifstack[ifi].hadelse = 0;
}
-/* .ENDR */
+/* .ENDR */
+
static void
do_aendr ()
{
@@ -2443,10 +2422,9 @@ do_aendr ()
ERROR ((stderr, _("ENDR without a REPT.\n")));
}
-/* .AWHILE */
+/* .AWHILE */
-static
-void
+static void
do_awhile (idx, in)
int idx;
sb *in;
@@ -2474,7 +2452,7 @@ do_awhile (idx, in)
.AWHILE exp
foo
.ENDW
- */
+ */
if (doit)
{
@@ -2487,7 +2465,7 @@ do_awhile (idx, in)
sb_add_string (&copy, "\n");
sb_add_sb (&copy, &sub);
sb_add_string (&copy, "\t.AENDW\n");
- /* Push another WHILE */
+ /* Push another WHILE. */
include_buf (&exp, &copy, include_while, index);
sb_kill (&copy);
}
@@ -2495,8 +2473,7 @@ do_awhile (idx, in)
sb_kill (&sub);
}
-
-/* .AENDW */
+/* .AENDW */
static void
do_aendw ()
@@ -2504,10 +2481,9 @@ do_aendw ()
ERROR ((stderr, _("AENDW without a AENDW.\n")));
}
-
/* .EXITM
-
- Pop things off the include stack until the type and index changes */
+
+ Pop things off the include stack until the type and index changes. */
static void
do_exitm ()
@@ -2527,7 +2503,7 @@ do_exitm ()
}
}
-/* .AREPEAT */
+/* .AREPEAT */
static void
do_arepeat (idx, in)
@@ -2535,9 +2511,9 @@ do_arepeat (idx, in)
sb *in;
{
int line = linecount ();
- sb exp; /* buffer with expression in it */
- sb copy; /* expanded repeat block */
- sb sub; /* contents of AREPEAT */
+ sb exp; /* Buffer with expression in it. */
+ sb copy; /* Expanded repeat block. */
+ sb sub; /* Contents of AREPEAT. */
int rc;
int ret;
char buffer[30];
@@ -2565,7 +2541,7 @@ do_arepeat (idx, in)
.AREPEAT 19
foo
.AENDR
- */
+ */
int index = include_next_index ();
sb_add_sb (&copy, &sub);
if (rc > 1)
@@ -2589,7 +2565,7 @@ do_arepeat (idx, in)
sb_kill (&copy);
}
-/* .ENDM */
+/* .ENDM */
static void
do_endm ()
@@ -2619,11 +2595,11 @@ do_irp (idx, in, irpc)
sb_kill (&out);
}
-/* MACRO PROCESSING */
+/* Macro processing. */
+
+/* Parse off LOCAL n1, n2,... Invent a label name for it. */
-/* Parse off LOCAL n1, n2,... Invent a label name for it */
-static
-void
+static void
do_local (idx, line)
int idx ATTRIBUTE_UNUSED;
sb *line ATTRIBUTE_UNUSED;
@@ -2674,7 +2650,7 @@ macro_op (idx, in)
return 1;
}
-/* STRING HANDLING */
+/* String handling. */
static int
getstring (idx, in, acc)
@@ -2685,8 +2661,8 @@ getstring (idx, in, acc)
idx = sb_skip_white (idx, in);
while (idx < in->len
- && (in->ptr[idx] == '"'
- || in->ptr[idx] == '<'
+ && (in->ptr[idx] == '"'
+ || in->ptr[idx] == '<'
|| (in->ptr[idx] == '\'' && alternate)))
{
if (in->ptr[idx] == '<')
@@ -2700,30 +2676,32 @@ getstring (idx, in, acc)
{
if (in->ptr[idx] == '!')
{
- idx++ ;
+ idx++;
+ sb_add_char (acc, in->ptr[idx++]);
+ }
+ else
+ {
+ if (in->ptr[idx] == '>')
+ nest--;
+ if (in->ptr[idx] == '<')
+ nest++;
sb_add_char (acc, in->ptr[idx++]);
}
- else {
- if (in->ptr[idx] == '>')
- nest--;
- if (in->ptr[idx] == '<')
- nest++;
- sb_add_char (acc, in->ptr[idx++]);
- }
}
idx++;
}
- else {
- int code;
- idx++;
- idx = exp_get_abs (_("Character code in string must be absolute expression.\n"),
- idx, in, &code);
- sb_add_char (acc, code);
+ else
+ {
+ int code;
+ idx++;
+ idx = exp_get_abs (_("Character code in string must be absolute expression.\n"),
+ idx, in, &code);
+ sb_add_char (acc, code);
- if (in->ptr[idx] != '>')
- ERROR ((stderr, _("Missing > for character code.\n")));
- idx++;
- }
+ if (in->ptr[idx] != '>')
+ ERROR ((stderr, _("Missing > for character code.\n")));
+ idx++;
+ }
}
else if (in->ptr[idx] == '"' || in->ptr[idx] == '\'')
{
@@ -2733,30 +2711,30 @@ getstring (idx, in, acc)
{
if (alternate && in->ptr[idx] == '!')
{
- idx++ ;
+ idx++;
sb_add_char (acc, in->ptr[idx++]);
}
- else {
- if (in->ptr[idx] == tchar)
- {
- idx++;
- if (idx >= in->len || in->ptr[idx] != tchar)
- break;
- }
- sb_add_char (acc, in->ptr[idx]);
- idx++;
- }
+ else
+ {
+ if (in->ptr[idx] == tchar)
+ {
+ idx++;
+ if (idx >= in->len || in->ptr[idx] != tchar)
+ break;
+ }
+ sb_add_char (acc, in->ptr[idx]);
+ idx++;
+ }
}
}
}
-
+
return idx;
}
-/* .SDATA[C|Z] <string> */
+/* .SDATA[C|Z] <string> */
-static
-void
+static void
do_sdata (idx, in, type)
int idx;
sb *in;
@@ -2803,12 +2781,14 @@ do_sdata (idx, in, type)
fprintf (outfile, "0");
}
idx = sb_skip_comma (idx, in);
- if (idx == pidx) break;
+ if (idx == pidx)
+ break;
}
if (!alternate && in->ptr[idx] != ',' && idx != in->len)
{
fprintf (outfile, "\n");
- ERROR ((stderr, _("illegal character in SDATA line (0x%x).\n"), in->ptr[idx]));
+ ERROR ((stderr, _("illegal character in SDATA line (0x%x).\n"),
+ in->ptr[idx]));
break;
}
idx++;
@@ -2817,7 +2797,7 @@ do_sdata (idx, in, type)
fprintf (outfile, "\n");
}
-/* .SDATAB <count> <string> */
+/* .SDATAB <count> <string> */
static void
do_sdatab (idx, in)
@@ -2933,7 +2913,7 @@ include_pop ()
/* Get the next character from the include stack. If there's anything
in the pushback buffer, take that first. If we're at eof, pop from
- the stack and try again. Keep the linecount up to date. */
+ the stack and try again. Keep the linecount up to date. */
static int
get ()
@@ -2943,7 +2923,7 @@ get ()
if (sp->pushback.len != sp->pushback_index)
{
r = (char) (sp->pushback.ptr[sp->pushback_index++]);
- /* When they've all gone, reset the pointer */
+ /* When they've all gone, reset the pointer. */
if (sp->pushback_index == sp->pushback.len)
{
sp->pushback.len = 0;
@@ -2992,8 +2972,7 @@ include_next_index ()
return ++index;
}
-
-/* Initialize the chartype vector. */
+/* Initialize the chartype vector. */
static void
chartype_init ()
@@ -3019,7 +2998,7 @@ chartype_init ()
|| x == 'h' || x == 'H'
|| x == 'd' || x == 'D')
chartype [x] |= BASEBIT;
-
+
if (x == ' ' || x == '\t')
chartype[x] |= WHITEBIT;
@@ -3028,11 +3007,9 @@ chartype_init ()
}
}
-
-
-/* What to do with all the keywords */
-#define PROCESS 0x1000 /* Run substitution over the line */
-#define LAB 0x2000 /* Spit out the label */
+/* What to do with all the keywords. */
+#define PROCESS 0x1000 /* Run substitution over the line. */
+#define LAB 0x2000 /* Spit out the label. */
#define K_EQU (PROCESS|1)
#define K_ASSIGN (PROCESS|2)
@@ -3089,16 +3066,13 @@ chartype_init ()
#define K_IRP (PROCESS|54)
#define K_IRPC (PROCESS|55)
-
-struct keyword
-{
+struct keyword {
char *name;
int code;
int extra;
};
-static struct keyword kinfo[] =
-{
+static struct keyword kinfo[] = {
{ "EQU", K_EQU, 0 },
{ "ALTERNATE", K_ALTERNATE, 0 },
{ "ASSIGN", K_ASSIGN, 0 },
@@ -3149,8 +3123,7 @@ static struct keyword kinfo[] =
handle them here as well, in case they are used in a recursive
macro to end the recursion. */
-static struct keyword mrikinfo[] =
-{
+static struct keyword mrikinfo[] = {
{ "IFEQ", K_IFEQ, 0 },
{ "IFNE", K_IFNE, 0 },
{ "IFLT", K_IFLT, 0 },
@@ -3170,7 +3143,7 @@ static struct keyword mrikinfo[] =
};
/* Look for a pseudo op on the line. If one's there then call
- its handler. */
+ its handler. */
static int
process_pseudo_op (idx, line, acc)
@@ -3182,7 +3155,7 @@ process_pseudo_op (idx, line, acc)
if (line->ptr[idx] == '.' || alternate || mri)
{
- /* Scan forward and find pseudo name */
+ /* Scan forward and find pseudo name. */
char *in;
hash_entry *ptr;
@@ -3208,13 +3181,15 @@ process_pseudo_op (idx, line, acc)
{
#if 0
/* This one causes lots of pain when trying to preprocess
- ordinary code */
- WARNING ((stderr, _("Unrecognised pseudo op `%s'.\n"), sb_name (acc)));
+ ordinary code. */
+ WARNING ((stderr, _("Unrecognised pseudo op `%s'.\n"),
+ sb_name (acc)));
#endif
return 0;
}
if (ptr->value.i & LAB)
- { /* output the label */
+ {
+ /* Output the label. */
if (label.len)
{
fprintf (outfile, "%s:\t", sb_name (&label));
@@ -3235,13 +3210,13 @@ process_pseudo_op (idx, line, acc)
if (ptr->value.i & PROCESS)
{
- /* Polish the rest of the line before handling the pseudo op */
+ /* Polish the rest of the line before handling the pseudo op. */
#if 0
- strip_comments(line);
+ strip_comments (line);
#endif
sb_reset (acc);
process_assigns (idx, line, acc);
- sb_reset(line);
+ sb_reset (line);
change_base (0, acc, line);
idx = 0;
}
@@ -3427,8 +3402,6 @@ process_pseudo_op (idx, line, acc)
return 0;
}
-
-
/* Add a keyword to the hash table. */
static void
@@ -3450,10 +3423,10 @@ add_keyword (name, code)
hash_add_to_int_table (&keyword_hash_table, &label, code);
sb_kill (&label);
-}
+}
/* Build the keyword hash table - put each keyword in the table twice,
- once upper and once lower case.*/
+ once upper and once lower case. */
static void
process_init ()
@@ -3470,7 +3443,6 @@ process_init ()
}
}
-
static void
do_define (string)
const char *string;
@@ -3480,10 +3452,9 @@ do_define (string)
hash_entry *ptr;
sb_new (&label);
-
while (*string)
{
- if (*string == '=')
+ if (*string == '=')
{
sb value;
sb_new (&value);
@@ -3493,13 +3464,14 @@ do_define (string)
sb_add_char (&value, *string);
string++;
}
- exp_get_abs (_("Invalid expression on command line.\n"), 0, &value, &res);
+ exp_get_abs (_("Invalid expression on command line.\n"),
+ 0, &value, &res);
sb_kill (&value);
break;
}
sb_add_char (&label, *string);
- string ++;
+ string++;
}
ptr = hash_create (&vars, &label);
@@ -3508,6 +3480,7 @@ do_define (string)
ptr->value.i = res;
sb_kill (&label);
}
+
char *program_name;
/* The list of long options. */
@@ -3556,11 +3529,11 @@ Usage: %s \n\
}
/* Display a help message and exit. */
+
static void
show_help ()
{
- printf (_("%s: Gnu Assembler Macro Preprocessor\n"),
- program_name);
+ printf (_("%s: Gnu Assembler Macro Preprocessor\n"), program_name);
show_usage (stdout, 0);
}
@@ -3640,7 +3613,7 @@ main (argc, argv)
break;
case 'h':
show_help ();
- /*NOTREACHED*/
+ /* NOTREACHED */
case 'v':
/* This output is intended to follow the GNU standards document. */
printf (_("GNU assembler pre-processor %s\n"), program_version);
@@ -3649,12 +3622,12 @@ main (argc, argv)
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);
- /*NOTREACHED*/
+ /* NOTREACHED */
case 0:
break;
default:
show_usage (stderr, 1);
- /*NOTREACHED*/
+ /* NOTREACHED */
}
}
@@ -3662,24 +3635,26 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
macro_init (alternate, mri, 0, exp_get_abs);
- if (out_name) {
- outfile = fopen (out_name, "w");
- if (!outfile)
- {
- fprintf (stderr, _("%s: Can't open output file `%s'.\n"),
- program_name, out_name);
- exit (1);
- }
- }
- else {
- outfile = stdout;
- }
+ if (out_name)
+ {
+ outfile = fopen (out_name, "w");
+ if (!outfile)
+ {
+ fprintf (stderr, _("%s: Can't open output file `%s'.\n"),
+ program_name, out_name);
+ exit (1);
+ }
+ }
+ else
+ {
+ outfile = stdout;
+ }
chartype_init ();
if (!outfile)
outfile = stdout;
- /* Process all the input files */
+ /* Process all the input files. */
while (optind < argc)
{
diff --git a/contrib/binutils/gas/hash.c b/contrib/binutils/gas/hash.c
index 0f129fb..f2e98a6 100644
--- a/contrib/binutils/gas/hash.c
+++ b/contrib/binutils/gas/hash.c
@@ -1,5 +1,5 @@
/* hash.c -- gas hash table code
- Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 98, 1999
+ Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 98, 99, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -37,8 +37,7 @@
/* An entry in a hash table. */
-struct hash_entry
-{
+struct hash_entry {
/* Next entry for this hash code. */
struct hash_entry *next;
/* String being hashed. */
@@ -52,8 +51,7 @@ struct hash_entry
/* A hash table. */
-struct hash_control
-{
+struct hash_control {
/* The hash array. */
struct hash_entry **table;
/* The number of slots in the hash table. */
@@ -99,7 +97,7 @@ hash_new ()
ret->deletions = 0;
#endif
- return ret;
+ return ret;
}
/* Delete a hash table, freeing all allocated memory. */
@@ -222,7 +220,7 @@ hash_insert (table, key, value)
++table->insertions;
#endif
- p = obstack_alloc (&table->memory, sizeof *p);
+ p = (struct hash_entry *) obstack_alloc (&table->memory, sizeof (*p));
p->string = key;
p->hash = hash;
p->data = value;
@@ -262,7 +260,7 @@ hash_jam (table, key, value)
++table->insertions;
#endif
- p = obstack_alloc (&table->memory, sizeof *p);
+ p = (struct hash_entry *) obstack_alloc (&table->memory, sizeof (*p));
p->string = key;
p->hash = hash;
p->data = value;
@@ -415,14 +413,23 @@ hash_print_statistics (f, name, table)
/* This test program is left over from the old hash table code. */
-#define TABLES (6) /* number of hash tables to maintain */
- /* (at once) in any testing */
-#define STATBUFSIZE (12) /* we can have 12 statistics */
+/* Number of hash tables to maintain (at once) in any testing. */
+#define TABLES (6)
+
+/* We can have 12 statistics. */
+#define STATBUFSIZE (12)
+
+/* Display statistics here. */
+int statbuf[STATBUFSIZE];
+
+/* Human farts here. */
+char answer[100];
-int statbuf[STATBUFSIZE]; /* display statistics here */
-char answer[100]; /* human farts here */
-char *hashtable[TABLES]; /* we test many hash tables at once */
-char *h; /* points to curent hash_control */
+/* We test many hash tables at once. */
+char *hashtable[TABLES];
+
+/* Points to curent hash_control. */
+char *h;
char **pp;
char *p;
char *name;
@@ -430,8 +437,9 @@ char *value;
int size;
int used;
char command;
-int number; /* number 0:TABLES-1 of current hashed */
- /* symbol table */
+
+/* Number 0:TABLES-1 of current hashed symbol table. */
+int number;
int
main ()
@@ -450,7 +458,7 @@ main ()
gets (answer);
command = answer[0];
if (isupper (command))
- command = tolower (command); /* ecch! */
+ command = tolower (command); /* Ecch! */
switch (command)
{
case '#':
@@ -460,8 +468,8 @@ main ()
case '?':
for (pp = hashtable; pp < hashtable + TABLES; pp++)
{
- printf ("address of hash table #%d control block is %xx\n"
- ,pp - hashtable, *pp);
+ printf ("address of hash table #%d control block is %xx\n",
+ pp - hashtable, *pp);
}
break;
case 'a':
@@ -542,7 +550,7 @@ what (description)
printf (" %s : ", description);
gets (answer);
- /* will one day clean up answer here */
+ /* Will one day clean up answer here. */
retval = malloc (strlen (answer) + 1);
if (!retval)
{
@@ -561,7 +569,6 @@ destroy (string, value)
free (value);
}
-
void
applicatee (string, value)
char *string;
@@ -570,11 +577,12 @@ applicatee (string, value)
printf ("%.20s-%.20s\n", string, value);
}
+/* Determine number: what hash table to use.
+ Also determine h: points to hash_control. */
+
void
-whattable () /* determine number: what hash table to use */
- /* also determine h: points to hash_control */
+whattable ()
{
-
for (;;)
{
printf (" what hash table (%d:%d) ? ", 0, TABLES - 1);
@@ -596,6 +604,4 @@ whattable () /* determine number: what hash table to use */
}
}
-#endif /* #ifdef TEST */
-
-/* end of hash.c */
+#endif /* TEST */
diff --git a/contrib/binutils/gas/input-file.c b/contrib/binutils/gas/input-file.c
index 634f6f7..b390a8f 100644
--- a/contrib/binutils/gas/input-file.c
+++ b/contrib/binutils/gas/input-file.c
@@ -1,5 +1,5 @@
/* input_file.c - Deal with Input Files -
- Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 98, 1999
+ Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 98, 99, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -57,35 +57,34 @@ static FILE *f_in;
static char *file_name;
/* Struct for saving the state of this module for file includes. */
-struct saved_file
- {
- FILE *f_in;
- char *file_name;
- int preprocess;
- char *app_save;
- };
+struct saved_file {
+ FILE *f_in;
+ char *file_name;
+ int preprocess;
+ char *app_save;
+};
-/* These hooks accomodate most operating systems. */
+/* These hooks accomodate most operating systems. */
-void
+void
input_file_begin ()
{
f_in = (FILE *) 0;
}
-void
+void
input_file_end ()
{
}
-/* Return BUFFER_SIZE. */
-unsigned int
+/* Return BUFFER_SIZE. */
+unsigned int
input_file_buffer_size ()
{
return (BUFFER_SIZE);
}
-int
+int
input_file_is_open ()
{
return f_in != (FILE *) 0;
@@ -130,7 +129,7 @@ input_file_pop (arg)
void
input_file_open (filename, pre)
- char *filename; /* "" means use stdin. Must not be 0. */
+ char *filename; /* "" means use stdin. Must not be 0. */
int pre;
{
int c;
@@ -138,16 +137,16 @@ input_file_open (filename, pre)
preprocess = pre;
- assert (filename != 0); /* Filename may not be NULL. */
+ assert (filename != 0); /* Filename may not be NULL. */
if (filename[0])
- { /* We have a file name. Suck it and see. */
+ { /* We have a file name. Suck it and see. */
f_in = fopen (filename, "r");
file_name = filename;
}
else
- { /* use stdin for the input file. */
+ { /* use stdin for the input file. */
f_in = stdin;
- file_name = _("{standard input}"); /* For error messages. */
+ file_name = _("{standard input}"); /* For error messages. */
}
if (f_in == (FILE *) 0)
{
@@ -180,7 +179,7 @@ input_file_open (filename, pre)
}
/* Close input file. */
-void
+void
input_file_close ()
{
if (f_in != NULL)
@@ -188,7 +187,7 @@ input_file_close ()
fclose (f_in);
} /* don't close a null file pointer */
f_in = 0;
-} /* input_file_close() */
+}
/* This function is passed to do_scrub_chars. */
@@ -212,9 +211,9 @@ input_file_get (buf, buflen)
char *
input_file_give_next_buffer (where)
- char *where; /* Where to place 1st character of new buffer. */
+ char *where; /* Where to place 1st character of new buffer. */
{
- char *return_value; /* -> Last char of what we read, + 1. */
+ char *return_value; /* -> Last char of what we read, + 1. */
register int size;
if (f_in == (FILE *) 0)
@@ -245,5 +244,3 @@ input_file_give_next_buffer (where)
}
return (return_value);
}
-
-/* end of input-file.c */
diff --git a/contrib/binutils/gas/input-file.h b/contrib/binutils/gas/input-file.h
index 129bf28..14cb5e3 100644
--- a/contrib/binutils/gas/input-file.h
+++ b/contrib/binutils/gas/input-file.h
@@ -14,12 +14,12 @@
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. */
+ 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. */
/*"input_file.c":Operating-system dependant functions to read source files.*/
-
/*
* No matter what the operating system, this module must provide the
* following services to its callers.
@@ -64,5 +64,3 @@ void input_file_close PARAMS ((void));
void input_file_end PARAMS ((void));
void input_file_open PARAMS ((char *filename, int pre));
void input_file_pop PARAMS ((char *arg));
-
-/* end of input_file.h */
diff --git a/contrib/binutils/gas/input-scrub.c b/contrib/binutils/gas/input-scrub.c
index ecbdaef..73cf1ec 100644
--- a/contrib/binutils/gas/input-scrub.c
+++ b/contrib/binutils/gas/input-scrub.c
@@ -1,5 +1,5 @@
/* input_scrub.c - Break up input buffers into whole numbers of lines.
- Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 1997
+ Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 97, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -17,7 +17,7 @@
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. */
+ 02111-1307, USA. */
#include <errno.h> /* Need this to make errno declaration right */
#include "as.h"
@@ -52,21 +52,22 @@
*/
#define BEFORE_STRING ("\n")
-#define AFTER_STRING ("\0") /* memcpy of 0 chars might choke. */
+#define AFTER_STRING ("\0") /* memcpy of 0 chars might choke. */
#define BEFORE_SIZE (1)
#define AFTER_SIZE (1)
-static char *buffer_start; /*->1st char of full buffer area. */
-static char *partial_where; /*->after last full line in buffer. */
-static int partial_size; /* >=0. Number of chars in partial line in buffer. */
+static char *buffer_start; /*->1st char of full buffer area. */
+static char *partial_where; /*->after last full line in buffer. */
+static int partial_size; /* >=0. Number of chars in partial line in buffer. */
+
+/* Because we need AFTER_STRING just after last full line, it clobbers
+ 1st part of partial line. So we preserve 1st part of partial line
+ here. */
static char save_source[AFTER_SIZE];
-/* Because we need AFTER_STRING just after last */
-/* full line, it clobbers 1st part of partial */
-/* line. So we preserve 1st part of partial */
-/* line here. */
-static unsigned int buffer_length; /* What is the largest size buffer that */
-/* input_file_give_next_buffer() could */
-/* return to us? */
+
+/* What is the largest size buffer that input_file_give_next_buffer()
+ could return to us? */
+static unsigned int buffer_length;
/* The index into an sb structure we are reading from. -1 if none. */
static int sb_index = -1;
@@ -84,54 +85,54 @@ int macro_nest;
but the latest one are saved off in a struct input_save. These files remain
open, so we are limited by the number of open files allowed by the
underlying OS. We may also sequentially read more than one source file in an
- assembly. */
+ assembly. */
/* We must track the physical file and line number for error messages. We also
track a "logical" file and line number corresponding to (C?) compiler
source line numbers. Whenever we open a file we must fill in
- physical_input_file. So if it is NULL we have not opened any files yet. */
+ physical_input_file. So if it is NULL we have not opened any files yet. */
static char *physical_input_file;
static char *logical_input_file;
-typedef unsigned int line_numberT; /* 1-origin line number in a source file. */
-/* A line ends in '\n' or eof. */
+typedef unsigned int line_numberT; /* 1-origin line number in a source file. */
+/* A line ends in '\n' or eof. */
static line_numberT physical_input_line;
static int logical_input_line;
/* Struct used to save the state of the input handler during include files */
-struct input_save
- {
- char *buffer_start;
- char *partial_where;
- int partial_size;
- char save_source[AFTER_SIZE];
- unsigned int buffer_length;
- char *physical_input_file;
- char *logical_input_file;
- line_numberT physical_input_line;
- int logical_input_line;
- int sb_index;
- sb from_sb;
- int from_sb_is_expansion; /* Should we do a conditional check? */
- struct input_save *next_saved_file; /* Chain of input_saves */
- char *input_file_save; /* Saved state of input routines */
- char *saved_position; /* Caller's saved position in buf */
- };
+struct input_save {
+ char * buffer_start;
+ char * partial_where;
+ int partial_size;
+ char save_source[AFTER_SIZE];
+ unsigned int buffer_length;
+ char * physical_input_file;
+ char * logical_input_file;
+ line_numberT physical_input_line;
+ int logical_input_line;
+ int sb_index;
+ sb from_sb;
+ int from_sb_is_expansion; /* Should we do a conditional check? */
+ struct input_save * next_saved_file; /* Chain of input_saves. */
+ char * input_file_save; /* Saved state of input routines. */
+ char * saved_position; /* Caller's saved position in buf. */
+};
static struct input_save *input_scrub_push PARAMS ((char *saved_position));
static char *input_scrub_pop PARAMS ((struct input_save *arg));
static void as_1_char PARAMS ((unsigned int c, FILE * stream));
/* Saved information about the file that .include'd this one. When we hit EOF,
- we automatically pop to that file. */
+ we automatically pop to that file. */
static struct input_save *next_saved_file;
/* Push the state of input reading and scrubbing so that we can #include.
The return value is a 'void *' (fudged for old compilers) to a save
- area, which can be restored by passing it to input_scrub_pop(). */
+ area, which can be restored by passing it to input_scrub_pop(). */
+
static struct input_save *
input_scrub_push (saved_position)
char *saved_position;
@@ -166,7 +167,7 @@ input_scrub_push (saved_position)
memcpy (buffer_start, BEFORE_STRING, (int) BEFORE_SIZE);
return saved;
-} /* input_scrub_push() */
+}
static char *
input_scrub_pop (saved)
@@ -196,12 +197,12 @@ input_scrub_pop (saved)
return saved_position;
}
-
void
input_scrub_begin ()
{
know (strlen (BEFORE_STRING) == BEFORE_SIZE);
- know (strlen (AFTER_STRING) == AFTER_SIZE || (AFTER_STRING[0] == '\0' && AFTER_SIZE == 1));
+ know (strlen (AFTER_STRING) == AFTER_SIZE
+ || (AFTER_STRING[0] == '\0' && AFTER_SIZE == 1));
input_file_begin ();
@@ -210,10 +211,10 @@ input_scrub_begin ()
buffer_start = xmalloc ((BEFORE_SIZE + buffer_length + buffer_length + AFTER_SIZE));
memcpy (buffer_start, BEFORE_STRING, (int) BEFORE_SIZE);
- /* Line number things. */
+ /* Line number things. */
logical_input_line = -1;
logical_input_file = (char *) NULL;
- physical_input_file = NULL; /* No file read yet. */
+ physical_input_file = NULL; /* No file read yet. */
next_saved_file = NULL; /* At EOF, don't pop to any other file */
do_scrub_begin (flag_m68k_mri);
}
@@ -229,9 +230,10 @@ input_scrub_end ()
}
}
-/* Start reading input from a new file. */
+/* Start reading input from a new file.
+ Return start of caller's part of buffer. */
-char * /* Return start of caller's part of buffer. */
+char *
input_scrub_new_file (filename)
char *filename;
{
@@ -243,10 +245,9 @@ input_scrub_new_file (filename)
return (buffer_start + BEFORE_SIZE);
}
-
/* Include a file from the current file. Save our state, cause it to
be restored on EOF, and begin handling a new file. Same result as
- input_scrub_new_file. */
+ input_scrub_new_file. */
char *
input_scrub_include_file (filename, position)
@@ -267,7 +268,7 @@ input_scrub_include_sb (from, position, is_expansion)
int is_expansion;
{
if (macro_nest > max_macro_nest)
- as_fatal (_("buffers nested too deeply"));
+ as_fatal (_("macros nested too deeply"));
++macro_nest;
#ifdef md_macro_start
@@ -305,22 +306,24 @@ char *
input_scrub_next_buffer (bufp)
char **bufp;
{
- register char *limit; /*->just after last char of buffer. */
+ register char *limit; /*->just after last char of buffer. */
if (sb_index >= 0)
{
if (sb_index >= from_sb.len)
{
sb_kill (&from_sb);
- if (from_sb_is_expansion)
- {
- cond_finish_check (macro_nest);
+ if (from_sb_is_expansion
+ )
+ {
+ cond_finish_check (macro_nest);
#ifdef md_macro_end
- /* allow the target to clean up per-macro expansion data */
- md_macro_end ();
+ /* Allow the target to clean up per-macro expansion
+ data. */
+ md_macro_end ();
#endif
- }
- --macro_nest;
+ }
+ --macro_nest;
partial_where = NULL;
if (next_saved_file != NULL)
*bufp = input_scrub_pop (next_saved_file);
@@ -347,7 +350,7 @@ input_scrub_next_buffer (bufp)
+ partial_size);
if (limit)
{
- register char *p; /* Find last newline. */
+ register char *p; /* Find last newline. */
for (p = limit - 1; *p != '\n'; --p)
;
@@ -396,24 +399,21 @@ input_scrub_next_buffer (bufp)
/* Tell the listing we've finished the file. */
LISTING_EOF ();
- /* If we should pop to another file at EOF, do it. */
+ /* If we should pop to another file at EOF, do it. */
if (next_saved_file)
{
*bufp = input_scrub_pop (next_saved_file); /* Pop state */
- /* partial_where is now correct to return, since we popped it. */
+ /* partial_where is now correct to return, since we popped it. */
}
}
return (partial_where);
-} /* input_scrub_next_buffer() */
+}
-/*
- * The remaining part of this file deals with line numbers, error
- * messages and so on.
- */
-
+/* The remaining part of this file deals with line numbers, error
+ messages and so on. Return TRUE if we opened any file. */
int
-seen_at_least_1_file () /* TRUE if we opened any file. */
+seen_at_least_1_file ()
{
return (physical_input_file != NULL);
}
@@ -429,20 +429,17 @@ bump_line_counters ()
}
}
-/*
- * new_logical_line()
- *
- * Tells us what the new logical line number and file are.
- * If the line_number is -1, we don't change the current logical line
- * number. If it is -2, we decrement the logical line number (this is
- * to support the .appfile pseudo-op inserted into the stream by
- * do_scrub_chars).
- * If the fname is NULL, we don't change the current logical file name.
- * Returns nonzero if the filename actually changes.
- */
+/* Tells us what the new logical line number and file are.
+ If the line_number is -1, we don't change the current logical line
+ number. If it is -2, we decrement the logical line number (this is
+ to support the .appfile pseudo-op inserted into the stream by
+ do_scrub_chars).
+ If the fname is NULL, we don't change the current logical file name.
+ Returns nonzero if the filename actually changes. */
+
int
new_logical_line (fname, line_number)
- char *fname; /* DON'T destroy it! We point to it! */
+ char *fname; /* DON'T destroy it! We point to it! */
int line_number;
{
if (line_number >= 0)
@@ -459,16 +456,13 @@ new_logical_line (fname, line_number)
}
else
return 0;
-} /* new_logical_line() */
+}
-/*
- * a s _ w h e r e ()
- *
- * Return the current file name and line number.
- * namep should be char * const *, but there are compilers which screw
- * up declarations like that, and it's easier to avoid it.
- */
-void
+/* Return the current file name and line number.
+ namep should be char * const *, but there are compilers which screw
+ up declarations like that, and it's easier to avoid it. */
+
+void
as_where (namep, linep)
char **namep;
unsigned int *linep;
@@ -492,37 +486,30 @@ as_where (namep, linep)
if (linep != NULL)
*linep = 0;
}
-} /* as_where() */
+}
+/* Output to given stream how much of line we have scanned so far.
+ Assumes we have scanned up to and including input_line_pointer.
+ No free '\n' at end of line. */
-
-
-/*
- * a s _ h o w m u c h ()
- *
- * Output to given stream how much of line we have scanned so far.
- * Assumes we have scanned up to and including input_line_pointer.
- * No free '\n' at end of line.
- */
void
as_howmuch (stream)
- FILE *stream; /* Opened for write please. */
+ FILE *stream; /* Opened for write please. */
{
- register char *p; /* Scan input line. */
- /* register char c; JF unused */
+ register char *p; /* Scan input line. */
for (p = input_line_pointer - 1; *p != '\n'; --p)
{
}
- ++p; /* p->1st char of line. */
+ ++p; /* p->1st char of line. */
for (; p <= input_line_pointer; p++)
{
- /* Assume ASCII. EBCDIC & other micro-computer char sets ignored. */
+ /* Assume ASCII. EBCDIC & other micro-computer char sets ignored. */
as_1_char ((unsigned char) *p, stream);
}
}
-static void
+static void
as_1_char (c, stream)
unsigned int c;
FILE *stream;
@@ -539,5 +526,3 @@ as_1_char (c, stream)
}
(void) putc (c, stream);
}
-
-/* end of input_scrub.c */
diff --git a/contrib/binutils/gas/itbl-ops.c b/contrib/binutils/gas/itbl-ops.c
index 27cca60..9a78219 100644
--- a/contrib/binutils/gas/itbl-ops.c
+++ b/contrib/binutils/gas/itbl-ops.c
@@ -114,45 +114,39 @@ int itbl_have_entries = 0;
/*======================================================================*/
/* structures for keeping itbl format entries */
-struct itbl_range
- {
- int sbit; /* mask starting bit position */
- int ebit; /* mask ending bit position */
- };
-
-struct itbl_field
- {
- e_type type; /* dreg/creg/greg/immed/symb */
- struct itbl_range range; /* field's bitfield range within instruction */
- unsigned long flags; /* field flags */
- struct itbl_field *next; /* next field in list */
- };
+struct itbl_range {
+ int sbit; /* mask starting bit position */
+ int ebit; /* mask ending bit position */
+};
+struct itbl_field {
+ e_type type; /* dreg/creg/greg/immed/symb */
+ struct itbl_range range; /* field's bitfield range within instruction */
+ unsigned long flags; /* field flags */
+ struct itbl_field *next; /* next field in list */
+};
/* These structures define the instructions and registers for a processor.
* If the type is an instruction, the structure defines the format of an
* instruction where the fields are the list of operands.
* The flags field below uses the same values as those defined in the
- * gnu assembler and are machine specific. */
-struct itbl_entry
- {
- e_processor processor; /* processor number */
- e_type type; /* dreg/creg/greg/insn */
- char *name; /* mnemionic name for insn/register */
- unsigned long value; /* opcode/instruction mask/register number */
- unsigned long flags; /* effects of the instruction */
- struct itbl_range range; /* bit range within instruction for value */
- struct itbl_field *fields; /* list of operand definitions (if any) */
- struct itbl_entry *next; /* next entry */
- };
-
+ * gnu assembler and are machine specific. */
+struct itbl_entry {
+ e_processor processor; /* processor number */
+ e_type type; /* dreg/creg/greg/insn */
+ char *name; /* mnemionic name for insn/register */
+ unsigned long value; /* opcode/instruction mask/register number */
+ unsigned long flags; /* effects of the instruction */
+ struct itbl_range range; /* bit range within instruction for value */
+ struct itbl_field *fields; /* list of operand definitions (if any) */
+ struct itbl_entry *next; /* next entry */
+};
/* local data and structures */
static int itbl_num_opcodes = 0;
/* Array of entries for each processor and entry type */
-static struct itbl_entry *entries[e_nprocs][e_ntypes] =
-{
+static struct itbl_entry *entries[e_nprocs][e_ntypes] = {
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0},
@@ -163,30 +157,28 @@ static struct itbl_entry *entries[e_nprocs][e_ntypes] =
static unsigned long build_opcode PARAMS ((struct itbl_entry *e));
static e_type get_type PARAMS ((int yytype));
static e_processor get_processor PARAMS ((int yyproc));
-static struct itbl_entry **get_entries PARAMS ((e_processor processor,
+static struct itbl_entry **get_entries PARAMS ((e_processor processor,
e_type type));
-static struct itbl_entry *find_entry_byname PARAMS ((e_processor processor,
+static struct itbl_entry *find_entry_byname PARAMS ((e_processor processor,
e_type type, char *name));
-static struct itbl_entry *find_entry_byval PARAMS ((e_processor processor,
+static struct itbl_entry *find_entry_byval PARAMS ((e_processor processor,
e_type type, unsigned long val, struct itbl_range *r));
-static struct itbl_entry *alloc_entry PARAMS ((e_processor processor,
+static struct itbl_entry *alloc_entry PARAMS ((e_processor processor,
e_type type, char *name, unsigned long value));
-static unsigned long apply_range PARAMS ((unsigned long value,
+static unsigned long apply_range PARAMS ((unsigned long value,
struct itbl_range r));
-static unsigned long extract_range PARAMS ((unsigned long value,
+static unsigned long extract_range PARAMS ((unsigned long value,
struct itbl_range r));
-static struct itbl_field *alloc_field PARAMS ((e_type type, int sbit,
+static struct itbl_field *alloc_field PARAMS ((e_type type, int sbit,
int ebit, unsigned long flags));
-
/*======================================================================*/
/* Interfaces to the parser */
-
/* Open the table and use lex and yacc to parse the entries.
* Return 1 for failure; 0 for success. */
-int
+int
itbl_parse (char *insntbl)
{
extern FILE *yyin;
@@ -213,7 +205,7 @@ struct itbl_entry *
itbl_add_reg (int yyprocessor, int yytype, char *regname,
int regnum)
{
-#if 0
+#if 0
#include "as.h"
#include "symbols.h"
/* Since register names don't have a prefix, we put them in the symbol table so
@@ -256,7 +248,7 @@ itbl_add_operand (struct itbl_entry *e, int yytype, int sbit,
struct itbl_field *f, **last_f;
if (!e)
return 0;
- /* Add to end of fields' list. */
+ /* Add to end of fields' list. */
f = alloc_field (get_type (yytype), sbit, ebit, flags);
if (f)
{
@@ -269,7 +261,6 @@ itbl_add_operand (struct itbl_entry *e, int yytype, int sbit,
return f;
}
-
/*======================================================================*/
/* Interfaces for assembler and disassembler */
@@ -278,8 +269,9 @@ itbl_add_operand (struct itbl_entry *e, int yytype, int sbit,
#include "symbols.h"
static void append_insns_as_macros (void);
-/* initialize for gas */
-void
+/* Initialize for gas. */
+
+void
itbl_init (void)
{
struct itbl_entry *e, **es;
@@ -287,11 +279,11 @@ itbl_init (void)
e_type type;
if (!itbl_have_entries)
- return;
+ return;
/* Since register names don't have a prefix, put them in the symbol table so
they can't be used as symbols. This simplifies argument parsing as
- we can let gas parse registers for us. */
+ we can let gas parse registers for us. */
/* Use symbol_create instead of symbol_new so we don't try to
output registers into the object file's symbol table. */
@@ -302,22 +294,21 @@ itbl_init (void)
for (e = *es; e; e = e->next)
{
symbol_table_insert (symbol_create (e->name, reg_section,
- e->value, &zero_address_frag));
+ e->value, &zero_address_frag));
}
}
append_insns_as_macros ();
}
-
-/* Append insns to opcodes table and increase number of opcodes
- * Structure of opcodes table:
+/* Append insns to opcodes table and increase number of opcodes
+ * Structure of opcodes table:
* struct itbl_opcode
* {
* const char *name;
- * const char *args; - string describing the arguments.
- * unsigned long match; - opcode, or ISA level if pinfo=INSN_MACRO
- * unsigned long mask; - opcode mask, or macro id if pinfo=INSN_MACRO
- * unsigned long pinfo; - insn flags, or INSN_MACRO
+ * const char *args; - string describing the arguments.
+ * unsigned long match; - opcode, or ISA level if pinfo=INSN_MACRO
+ * unsigned long mask; - opcode mask, or macro id if pinfo=INSN_MACRO
+ * unsigned long pinfo; - insn flags, or INSN_MACRO
* };
* examples:
* {"li", "t,i", 0x34000000, 0xffe00000, WR_t },
@@ -325,7 +316,7 @@ itbl_init (void)
*/
static char *form_args (struct itbl_entry *e);
-static void
+static void
append_insns_as_macros (void)
{
struct ITBL_OPCODE_STRUCT *new_opcodes, *o;
@@ -333,7 +324,7 @@ append_insns_as_macros (void)
int n, id, size, new_size, new_num_opcodes;
if (!itbl_have_entries)
- return;
+ return;
if (!itbl_num_opcodes) /* no new instructions to add! */
{
@@ -352,7 +343,7 @@ append_insns_as_macros (void)
ASSERT (new_size > size);
/* FIXME since ITBL_OPCODES culd be a static table,
- we can't realloc or delete the old memory. */
+ we can't realloc or delete the old memory. */
new_opcodes = (struct ITBL_OPCODE_STRUCT *) malloc (new_size);
if (!new_opcodes)
{
@@ -363,7 +354,7 @@ append_insns_as_macros (void)
memcpy (new_opcodes, ITBL_OPCODES, size);
/* FIXME! some NUMOPCODES are calculated expressions.
- These need to be changed before itbls can be supported. */
+ These need to be changed before itbls can be supported. */
id = ITBL_NUM_MACROS; /* begin the next macro id after the last */
o = &new_opcodes[ITBL_NUM_OPCODES]; /* append macro to opcodes list */
@@ -407,7 +398,7 @@ append_insns_as_macros (void)
Don't free name though, since name is being used by the new
opcodes table.
- Eventually, we should also free the new opcodes table itself
+ Eventually, we should also free the new opcodes table itself
on exit.
*/
}
@@ -454,7 +445,6 @@ form_args (struct itbl_entry *e)
}
#endif /* !STAND_ALONE */
-
/* Get processor's register name from val */
int
@@ -501,13 +491,12 @@ itbl_get_val (e_processor processor, e_type type, char *name,
return 1;
}
-
/* Assemble instruction "name" with operands "s".
* name - name of instruction
* s - operands
* returns - long word for assembled instruction */
-unsigned long
+unsigned long
itbl_assemble (char *name, char *s)
{
unsigned long opcode;
@@ -527,11 +516,11 @@ itbl_assemble (char *name, char *s)
break;
}
if (!e)
- return 0; /* opcode not in table; invalid instrustion */
+ return 0; /* opcode not in table; invalid instruction */
opcode = build_opcode (e);
/* parse opcode's args (if any) */
- for (f = e->fields; f; f = f->next) /* for each arg, ... */
+ for (f = e->fields; f; f = f->next) /* for each arg, ... */
{
struct itbl_entry *r;
unsigned long value;
@@ -573,7 +562,7 @@ itbl_assemble (char *name, char *s)
*/
/* If not a symbol, fall thru to IMMED */
case e_immed:
- if (*n == '0' && *(n + 1) == 'x') /* hex begins 0x... */
+ if (*n == '0' && *(n + 1) == 'x') /* hex begins 0x... */
{
n += 2;
value = strtol (n, 0, 16);
@@ -603,7 +592,7 @@ itbl_assemble (char *name, char *s)
* returns - 1 if succeeded; 0 if failed
*/
-int
+int
itbl_disassemble (char *s, unsigned long insn)
{
e_processor processor;
@@ -611,24 +600,24 @@ itbl_disassemble (char *s, unsigned long insn)
struct itbl_field *f;
if (!ITBL_IS_INSN (insn))
- return 0; /* error*/
+ return 0; /* error */
processor = get_processor (ITBL_DECODE_PNUM (insn));
/* find entry in list */
e = find_entry_byval (processor, e_insn, insn, 0);
if (!e)
- return 0; /* opcode not in table; invalid instrustion */
+ return 0; /* opcode not in table; invalid instruction */
strcpy (s, e->name);
- /* parse insn's args (if any) */
- for (f = e->fields; f; f = f->next) /* for each arg, ... */
+ /* Parse insn's args (if any). */
+ for (f = e->fields; f; f = f->next) /* for each arg, ... */
{
struct itbl_entry *r;
unsigned long value;
- if (f == e->fields) /* first operand is preceeded by tab */
+ if (f == e->fields) /* First operand is preceeded by tab. */
strcat (s, "\t");
- else /* ','s separate following operands */
+ else /* ','s separate following operands. */
strcat (s, ",");
value = extract_range (insn, f->range);
/* n should be in form $n or 0xhhh (are symbol names valid?? */
@@ -638,7 +627,7 @@ itbl_disassemble (char *s, unsigned long insn)
case e_creg:
case e_greg:
/* Accept either a string name
- * or '$' followed by the register number */
+ or '$' followed by the register number. */
r = find_entry_byval (e->processor, f->type, value, &f->range);
if (r)
strcat (s, r->name);
@@ -646,11 +635,9 @@ itbl_disassemble (char *s, unsigned long insn)
sprintf (s, "%s$%lu", s, value);
break;
case e_addr:
- /* use assembler's symbol table to find symbol */
- /* FIXME!! Do we need this?
- * if so, what about relocs??
- */
- /* If not a symbol, fall thru to IMMED */
+ /* Use assembler's symbol table to find symbol. */
+ /* FIXME!! Do we need this? If so, what about relocs?? */
+ /* If not a symbol, fall through to IMMED. */
case e_immed:
sprintf (s, "%s0x%lx", s, value);
break;
@@ -658,7 +645,7 @@ itbl_disassemble (char *s, unsigned long insn)
return 0; /* error; invalid field spec */
}
}
- return 1; /* done! */
+ return 1; /* Done! */
}
/*======================================================================*/
@@ -670,7 +657,7 @@ itbl_disassemble (char *s, unsigned long insn)
/* Calculate instruction's opcode and function values from entry */
-static unsigned long
+static unsigned long
build_opcode (struct itbl_entry *e)
{
unsigned long opcode;
@@ -691,7 +678,7 @@ build_opcode (struct itbl_entry *e)
* mask: 0x01f00000.
*/
-static unsigned long
+static unsigned long
apply_range (unsigned long rval, struct itbl_range r)
{
unsigned long mask;
@@ -715,7 +702,7 @@ apply_range (unsigned long rval, struct itbl_range r)
/* Calculate relative value given the absolute value and bit position range
* within the instruction. */
-static unsigned long
+static unsigned long
extract_range (unsigned long aval, struct itbl_range r)
{
unsigned long mask;
@@ -772,7 +759,7 @@ find_entry_byname (e_processor processor,
struct itbl_entry *e, **es;
es = get_entries (processor, type);
- for (e = *es; e; e = e->next) /* for each entry, ... */
+ for (e = *es; e; e = e->next) /* for each entry, ... */
{
if (!strcmp (e->name, n))
return e;
@@ -794,7 +781,7 @@ find_entry_byval (e_processor processor, e_type type,
unsigned long eval;
es = get_entries (processor, type);
- for (e = *es; e; e = e->next) /* for each entry, ... */
+ for (e = *es; e; e = e->next) /* for each entry, ... */
{
if (processor != e->processor)
continue;
@@ -804,7 +791,7 @@ find_entry_byval (e_processor processor, e_type type,
* This could cause ambiguities.
* For operands, we get an extracted value and a range.
*/
- /* if range is 0, mask val against the range of the compared entry. */
+ /* if range is 0, mask val against the range of the compared entry. */
if (r == 0) /* if no range passed, must be whole 32-bits
* so create 32-bit value from entry's range */
{
@@ -825,7 +812,7 @@ find_entry_byval (e_processor processor, e_type type,
return 0;
}
-/* Return a pointer to the list of entries for a given processor and type. */
+/* Return a pointer to the list of entries for a given processor and type. */
static struct itbl_entry **
get_entries (e_processor processor, e_type type)
@@ -833,9 +820,9 @@ get_entries (e_processor processor, e_type type)
return &entries[processor][type];
}
-/* Return an integral value for the processor passed from yyparse. */
+/* Return an integral value for the processor passed from yyparse. */
-static e_processor
+static e_processor
get_processor (int yyproc)
{
/* translate from yacc's processor to enum */
@@ -844,9 +831,9 @@ get_processor (int yyproc)
return e_invproc; /* error; invalid processor */
}
-/* Return an integral value for the entry type passed from yyparse. */
+/* Return an integral value for the entry type passed from yyparse. */
-static e_type
+static e_type
get_type (int yytype)
{
switch (yytype)
@@ -869,7 +856,6 @@ get_type (int yytype)
}
}
-
/* Allocate and initialize an entry */
static struct itbl_entry *
diff --git a/contrib/binutils/gas/itbl-ops.h b/contrib/binutils/gas/itbl-ops.h
index d69ea7f..3dfd6f0 100644
--- a/contrib/binutils/gas/itbl-ops.h
+++ b/contrib/binutils/gas/itbl-ops.h
@@ -1,5 +1,5 @@
/* itbl-ops.h
- Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -81,7 +81,7 @@ typedef enum
e_invproc /* invalid processor */
} e_processor;
-/* 0 means an instruction table was not specified. */
+/* 0 means an instruction table was not specified. */
extern int itbl_have_entries;
/* These routines are visible to the main part of the assembler */
@@ -99,7 +99,7 @@ char *itbl_get_name PARAMS ((e_processor processor, e_type type,
unsigned long val));
/* These routines are called by the table parser used to build the
- dynamic list of new processor instructions and registers. */
+ dynamic list of new processor instructions and registers. */
struct itbl_entry *itbl_add_reg PARAMS ((int yyproc, int yytype,
char *regname, int regnum));
diff --git a/contrib/binutils/gas/listing.c b/contrib/binutils/gas/listing.c
index cecf245..8168ebe 100644
--- a/contrib/binutils/gas/listing.c
+++ b/contrib/binutils/gas/listing.c
@@ -1,5 +1,6 @@
/* listing.c - mainting assembly listings
- Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+ 2001
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -17,12 +18,10 @@ 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. */
+02111-1307, USA. */
/*
- Contributed by Steve Chamberlain
- sac@cygnus.com
-
+ Contributed by Steve Chamberlain <sac@cygnus.com>
A listing page looks like:
@@ -57,7 +56,6 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
If the counter goes below zero, listing is suppressed.
-
Listings are a maintained by read calling various listing_<foo>
functions. What happens most is that the macro NO_LISTING is not
defined (from the Makefile), then the macro LISTING_NEWLINE expands
@@ -121,56 +119,52 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#define LISTING_LHS_CONT_LINES 4
#endif
-/* This structure remembers which .s were used */
-typedef struct file_info_struct
-{
+/* This structure remembers which .s were used. */
+typedef struct file_info_struct {
struct file_info_struct * next;
char * filename;
long pos;
unsigned int linenum;
int at_end;
-}
-file_info_type;
+} file_info_type;
/* This structure rememebrs which line from which file goes into which
- frag */
-struct list_info_struct
-{
- /* Frag which this line of source is nearest to */
- fragS * frag;
+ frag. */
+struct list_info_struct {
+ /* Frag which this line of source is nearest to. */
+ fragS *frag;
- /* The actual line in the source file */
+ /* The actual line in the source file. */
unsigned int line;
/* Pointer to the file info struct for the file which this line
- belongs to */
- file_info_type * file;
+ belongs to. */
+ file_info_type *file;
/* The expanded text of any macro that may have been executing. */
- char * line_contents;
+ char *line_contents;
- /* Next in list */
- struct list_info_struct * next;
+ /* Next in list. */
+ struct list_info_struct *next;
/* Pointer to the file info struct for the high level language
- source line that belongs here */
- file_info_type * hll_file;
- /* High level language source line */
+ source line that belongs here. */
+ file_info_type *hll_file;
+ /* High level language source line. */
unsigned int hll_line;
- /* Pointer to any error message associated with this line */
- char * message;
+ /* Pointer to any error message associated with this line. */
+ char *message;
- enum
- {
- EDICT_NONE,
- EDICT_SBTTL,
- EDICT_TITLE,
- EDICT_NOLIST,
- EDICT_LIST,
- EDICT_NOLIST_NEXT,
- EDICT_EJECT
- } edict;
- char * edict_arg;
+ enum {
+ EDICT_NONE,
+ EDICT_SBTTL,
+ EDICT_TITLE,
+ EDICT_NOLIST,
+ EDICT_LIST,
+ EDICT_NOLIST_NEXT,
+ EDICT_EJECT
+ } edict;
+ char *edict_arg;
/* Nonzero if this line is to be omitted because it contains
debugging information. This can become a flags field if we come
@@ -180,7 +174,6 @@ struct list_info_struct
typedef struct list_info_struct list_info_type;
-
int listing_lhs_width = LISTING_LHS_WIDTH;
int listing_lhs_width_second = LISTING_LHS_WIDTH_SECOND;
int listing_lhs_cont_lines = LISTING_LHS_CONT_LINES;
@@ -198,7 +191,7 @@ static int paper_height = 60;
extern int listing;
/* File to output listings to. */
-static FILE * list_file;
+static FILE *list_file;
/* This static array is used to keep the text of data to be printed
before the start of the line. */
@@ -209,13 +202,13 @@ static FILE * list_file;
* listing_lhs_cont_lines) \
+ 20)
-static char * data_buffer;
+static char *data_buffer;
/* Prototypes. */
static void listing_message PARAMS ((const char *name, const char *message));
-static file_info_type * file_info PARAMS ((const char *file_name));
+static file_info_type *file_info PARAMS ((const char *file_name));
static void new_frag PARAMS ((void));
-static char * buffer_line PARAMS ((file_info_type *file,
+static char *buffer_line PARAMS ((file_info_type *file,
char *line, unsigned int size));
static void listing_page PARAMS ((list_info_type *list));
static unsigned int calc_hex PARAMS ((list_info_type *list));
@@ -229,18 +222,17 @@ static void print_source PARAMS ((file_info_type *current_file,
static int debugging_pseudo PARAMS ((list_info_type *, const char *));
static void listing_listing PARAMS ((char *name));
-
static void
listing_message (name, message)
const char *name;
const char *message;
{
- unsigned int l = strlen (name) + strlen (message) + 1;
- char *n = (char *) xmalloc (l);
- strcpy (n, name);
- strcat (n, message);
if (listing_tail != (list_info_type *) NULL)
{
+ unsigned int l = strlen (name) + strlen (message) + 1;
+ char *n = (char *) xmalloc (l);
+ strcpy (n, name);
+ strcat (n, message);
listing_tail->message = n;
}
}
@@ -263,7 +255,7 @@ static file_info_type *
file_info (file_name)
const char *file_name;
{
- /* Find an entry with this file name */
+ /* Find an entry with this file name. */
file_info_type *p = file_info_head;
while (p != (file_info_type *) NULL)
@@ -273,7 +265,7 @@ file_info (file_name)
p = p->next;
}
- /* Make new entry */
+ /* Make new entry. */
p = (file_info_type *) xmalloc (sizeof (file_info_type));
p->next = file_info_head;
@@ -287,7 +279,6 @@ file_info (file_name)
return p;
}
-
static void
new_frag ()
{
@@ -334,7 +325,8 @@ listing_newline (ps)
as_where (&file, &line);
if (ps == NULL)
{
- if (line == last_line && !(last_file && file && strcmp (file, last_file)))
+ if (line == last_line
+ && !(last_file && file && strcmp (file, last_file)))
return;
new = (list_info_type *) xmalloc (sizeof (list_info_type));
@@ -346,22 +338,22 @@ listing_newline (ps)
same as the one used by input_scrub_new_file(), if that is
not true, then this code will fail].
- If we are reading from stdin, then we need to save each input line
- here (assuming of course that we actually have a line of input to read),
- so that it can be displayed in the listing that is produced at the end
- of the assembly. */
+ If we are reading from stdin, then we need to save each input
+ line here (assuming of course that we actually have a line of
+ input to read), so that it can be displayed in the listing
+ that is produced at the end of the assembly. */
if (strcmp (file, _("{standard input}")) == 0
&& input_line_pointer != NULL)
{
- char * copy;
+ char *copy;
int len;
int seen_quote = 0;
for (copy = input_line_pointer - 1;
- * copy && (seen_quote
- || (! is_end_of_line [(unsigned char) * copy]));
- copy ++)
- if (* copy == '"' && copy[-1] != '\\')
+ *copy && (seen_quote
+ || (! is_end_of_line [(unsigned char) *copy]));
+ copy++)
+ if (*copy == '"' && copy[-1] != '\\')
seen_quote = ! seen_quote;
len = (copy - input_line_pointer) + 2;
@@ -370,21 +362,21 @@ listing_newline (ps)
if (copy != NULL)
{
- char * src = input_line_pointer - 1;
- char * dest = copy;
-
+ char *src = input_line_pointer - 1;
+ char *dest = copy;
+
while (--len)
{
- unsigned char c = * src ++;
+ unsigned char c = *src++;
/* Omit control characters in the listing. */
if (isascii (c) && ! iscntrl (c))
- * dest ++ = c;
+ *dest++ = c;
}
-
+
*dest = 0;
}
-
+
new->line_contents = copy;
}
else
@@ -398,14 +390,14 @@ listing_newline (ps)
last_line = line;
last_file = file;
-
+
new_frag ();
if (listing_tail)
listing_tail->next = new;
else
head = new;
-
+
listing_tail = new;
new->frag = frag_now;
@@ -417,7 +409,7 @@ listing_newline (ps)
new->hll_file = (file_info_type *) NULL;
new->hll_line = 0;
new->debugging = 0;
-
+
new_frag ();
#ifdef OBJ_ELF
@@ -464,15 +456,13 @@ listing_prev_line ()
new_frag ();
}
-/*
- This function returns the next source line from the file supplied,
- truncated to size. It appends a fake line to the end of each input
- file to make
-*/
+/* This function returns the next source line from the file supplied,
+ truncated to size. It appends a fake line to the end of each input
+ file to make. */
static char *
buffer_line (file, line, size)
- file_info_type * file;
+ file_info_type *file;
char *line;
unsigned int size;
{
@@ -481,7 +471,7 @@ buffer_line (file, line, size)
char *p = line;
- /* If we couldn't open the file, return an empty line */
+ /* If we couldn't open the file, return an empty line. */
if (file->at_end)
return "";
@@ -501,15 +491,16 @@ buffer_line (file, line, size)
file->at_end = 1;
return "";
}
-
+
/* Seek to where we were last time this file was open. */
if (file->pos)
- fseek(last_open_file, file->pos, SEEK_SET);
+ fseek (last_open_file, file->pos, SEEK_SET);
}
c = fgetc (last_open_file);
- size -= 1; /* leave room for null */
+ /* Leave room for null. */
+ size -= 1;
while (c != EOF && c != '\n')
{
@@ -532,23 +523,22 @@ buffer_line (file, line, size)
return line;
}
-
static const char *fn;
static unsigned int eject; /* Eject pending */
static unsigned int page; /* Current page number */
-static char *title; /* current title */
-static char *subtitle; /* current subtitle */
-static unsigned int on_page; /* number of lines printed on current page */
-
+static char *title; /* Current title */
+static char *subtitle; /* Current subtitle */
+static unsigned int on_page; /* Number of lines printed on current page */
static void
listing_page (list)
list_info_type *list;
{
/* Grope around, see if we can see a title or subtitle edict coming up
- soon (we look down 10 lines of the page and see if it's there)*/
- if ((eject || (on_page >= (unsigned int) paper_height)) && paper_height != 0)
+ soon. (we look down 10 lines of the page and see if it's there) */
+ if ((eject || (on_page >= (unsigned int) paper_height))
+ && paper_height != 0)
{
unsigned int c = 10;
int had_title = 0;
@@ -572,7 +562,6 @@ listing_page (list)
c--;
}
-
if (page > 1)
{
fprintf (list_file, "\f");
@@ -586,19 +575,18 @@ listing_page (list)
}
}
-
static unsigned int
calc_hex (list)
- list_info_type * list;
+ list_info_type *list;
{
int data_buffer_size;
list_info_type *first = list;
- unsigned int address = ~ (unsigned int) 0;
+ unsigned int address = ~(unsigned int) 0;
fragS *frag;
fragS *frag_ptr;
unsigned int octet_in_frag;
- /* Find first frag which says it belongs to this line */
+ /* Find first frag which says it belongs to this line. */
frag = list->frag;
while (frag && frag->line != list)
frag = frag->fr_next;
@@ -607,15 +595,15 @@ calc_hex (list)
data_buffer_size = 0;
- /* Dump all the frags which belong to this line */
+ /* Dump all the frags which belong to this line. */
while (frag_ptr != (fragS *) NULL && frag_ptr->line == first)
{
- /* Print as many bytes from the fixed part as is sensible */
+ /* Print as many bytes from the fixed part as is sensible. */
octet_in_frag = 0;
while ((offsetT) octet_in_frag < frag_ptr->fr_fix
&& data_buffer_size < MAX_BYTES - 3)
{
- if (address == ~ (unsigned int) 0)
+ if (address == ~(unsigned int) 0)
{
address = frag_ptr->fr_address / OCTETS_PER_BYTE;
}
@@ -626,16 +614,17 @@ calc_hex (list)
data_buffer_size += 2;
octet_in_frag++;
}
+ if (frag_ptr->fr_type == rs_fill)
{
unsigned int var_rep_max = octet_in_frag;
unsigned int var_rep_idx = octet_in_frag;
- /* Print as many bytes from the variable part as is sensible */
+ /* Print as many bytes from the variable part as is sensible. */
while (((offsetT) octet_in_frag
< (frag_ptr->fr_fix + frag_ptr->fr_var * frag_ptr->fr_offset))
&& data_buffer_size < MAX_BYTES - 3)
{
- if (address == ~ (unsigned int) 0)
+ if (address == ~(unsigned int) 0)
{
address = frag_ptr->fr_address / OCTETS_PER_BYTE;
}
@@ -662,11 +651,6 @@ calc_hex (list)
return address;
}
-
-
-
-
-
static void
print_lines (list, lineno, string, address)
list_info_type *list;
@@ -681,21 +665,21 @@ print_lines (list, lineno, string, address)
char *src = data_buffer;
int cur;
- /* Print the stuff on the first line */
+ /* Print the stuff on the first line. */
listing_page (list);
nchars = (LISTING_WORD_SIZE * 2 + 1) * listing_lhs_width;
-
- /* Print the hex for the first line */
- if (address == ~ (unsigned int) 0)
+
+ /* Print the hex for the first line. */
+ if (address == ~(unsigned int) 0)
{
fprintf (list_file, "% 4d ", lineno);
for (idx = 0; idx < nchars; idx++)
fprintf (list_file, " ");
fprintf (list_file, "\t%s\n", string ? string : "");
-
- on_page ++;
-
+
+ on_page++;
+
listing_page (0);
return;
@@ -706,62 +690,61 @@ print_lines (list, lineno, string, address)
else
fprintf (list_file, "% 4d %04x ", lineno, address);
- /* And the data to go along with it */
+ /* And the data to go along with it. */
idx = 0;
cur = 0;
while (src[cur] && idx < nchars)
{
int offset;
offset = cur;
- fprintf (list_file, "%c%c", src[offset], src[offset+1]);
+ fprintf (list_file, "%c%c", src[offset], src[offset + 1]);
cur += 2;
octet_in_word++;
-
+
if (octet_in_word == LISTING_WORD_SIZE)
{
fprintf (list_file, " ");
idx++;
octet_in_word = 0;
}
-
+
idx += 2;
}
-
+
for (; idx < nchars; idx++)
fprintf (list_file, " ");
-
+
fprintf (list_file, "\t%s\n", string ? string : "");
on_page++;
listing_page (list);
-
+
if (list->message)
{
fprintf (list_file, "**** %s\n", list->message);
listing_page (list);
on_page++;
}
-
+
for (lines = 0;
lines < (unsigned int) listing_lhs_cont_lines
&& src[cur];
- lines ++)
+ lines++)
{
- nchars = ((LISTING_WORD_SIZE * 2) + 1)
- * listing_lhs_width_second - 1;
+ nchars = ((LISTING_WORD_SIZE * 2) + 1) * listing_lhs_width_second - 1;
idx = 0;
-
- /* Print any more lines of data, but more compactly */
+
+ /* Print any more lines of data, but more compactly. */
fprintf (list_file, "% 4d ", lineno);
-
+
while (src[cur] && idx < nchars)
{
- int offset;
- offset = cur;
- fprintf (list_file, "%c%c", src[offset], src[offset+1]);
+ int offset;
+ offset = cur;
+ fprintf (list_file, "%c%c", src[offset], src[offset + 1]);
cur += 2;
idx += 2;
octet_in_word++;
-
+
if (octet_in_word == LISTING_WORD_SIZE)
{
fprintf (list_file, " ");
@@ -769,14 +752,13 @@ print_lines (list, lineno, string, address)
octet_in_word = 0;
}
}
-
+
fprintf (list_file, "\n");
- on_page ++;
+ on_page++;
listing_page (list);
}
}
-
static void
list_symbol_table ()
{
@@ -841,7 +823,7 @@ list_symbol_table ()
buf, S_GET_NAME (ptr));
}
- on_page ++;
+ on_page++;
listing_page (0);
}
}
@@ -1008,7 +990,6 @@ listing_listing (name)
list = head->next;
-
while (list)
{
unsigned int list_line;
@@ -1027,6 +1008,8 @@ listing_listing (name)
show_listing--;
break;
case EDICT_NOLIST_NEXT:
+ if (show_listing == 0)
+ list_line--;
break;
case EDICT_EJECT:
break;
@@ -1049,7 +1032,8 @@ listing_listing (name)
p = buffer_line (list->file, buffer, width);
}
- if (list->edict == EDICT_LIST)
+ if (list->edict == EDICT_LIST
+ || (list->edict == EDICT_NOLIST_NEXT && show_listing == 0))
{
/* Enable listing for the single line that caused the enable. */
list_line++;
@@ -1094,7 +1078,7 @@ listing_listing (name)
p = buffer_line (list->file, buffer, width);
if (list->file->linenum < list_line)
- address = ~ (unsigned int) 0;
+ address = ~(unsigned int) 0;
else
address = calc_hex (list);
@@ -1110,7 +1094,7 @@ listing_listing (name)
}
}
- if (list->edict == EDICT_NOLIST_NEXT)
+ if (list->edict == EDICT_NOLIST_NEXT && show_listing == 1)
--show_listing;
list = list->next;
@@ -1126,7 +1110,7 @@ listing_print (name)
char *name;
{
int using_stdout;
-
+
title = "";
subtitle = "";
@@ -1175,7 +1159,6 @@ listing_print (name)
}
}
-
void
listing_file (name)
const char *name;
@@ -1235,7 +1218,6 @@ listing_list (on)
}
}
-
void
listing_psize (width_only)
int width_only;
@@ -1324,8 +1306,6 @@ listing_title (depth)
}
}
-
-
void
listing_source_line (line)
unsigned int line;
@@ -1346,12 +1326,9 @@ listing_source_file (file)
listing_tail->hll_file = file_info (file);
}
-
-
#else
-
-/* Dummy functions for when compiled without listing enabled */
+/* Dummy functions for when compiled without listing enabled. */
void
listing_flags (ignore)
@@ -1360,21 +1337,21 @@ listing_flags (ignore)
s_ignore (0);
}
-void
+void
listing_list (on)
int on;
{
s_ignore (0);
}
-void
+void
listing_eject (ignore)
int ignore;
{
s_ignore (0);
}
-void
+void
listing_psize (ignore)
int ignore;
{
@@ -1388,7 +1365,7 @@ listing_nopage (ignore)
s_ignore (0);
}
-void
+void
listing_title (depth)
int depth;
{
@@ -1402,20 +1379,21 @@ listing_file (name)
}
-void
+void
listing_newline (name)
char *name;
{
}
-void
+void
listing_source_line (n)
unsigned int n;
{
}
-void
+
+void
listing_source_file (n)
const char *n;
{
diff --git a/contrib/binutils/gas/literal.c b/contrib/binutils/gas/literal.c
index a3f8fc4..f3ccce3 100644
--- a/contrib/binutils/gas/literal.c
+++ b/contrib/binutils/gas/literal.c
@@ -1,5 +1,5 @@
/* as.c - GAS literal pool management.
- Copyright (C) 1994 Free Software Foundation, Inc.
+ Copyright (C) 1994, 2000 Free Software Foundation, Inc.
Written by Ken Raeburn (raeburn@cygnus.com).
This file is part of GAS, the GNU Assembler.
@@ -16,7 +16,7 @@
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 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* This isn't quite a "constant" pool. Some of the values may get
adjusted at run time, e.g., for symbolic relocations when shared
diff --git a/contrib/binutils/gas/macro.c b/contrib/binutils/gas/macro.c
index 12a757e..74a17ff 100644
--- a/contrib/binutils/gas/macro.c
+++ b/contrib/binutils/gas/macro.c
@@ -1,5 +1,6 @@
/* macro.c - macro support for gas and gasp
- Copyright (C) 1994, 95, 96, 97, 98, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1994, 95, 96, 97, 98, 99, 2000
+ Free Software Foundation, Inc.
Written by Steve and Judy Chamberlain of Cygnus Support,
sac@cygnus.com
@@ -19,7 +20,7 @@
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. */
+ 02111-1307, USA. */
#include "config.h"
@@ -172,7 +173,7 @@ buffer_and_nest (from, to, ptr, get_line)
while (more)
{
- /* Try and find the first pseudo op on the line */
+ /* Try and find the first pseudo op on the line. */
int i = line_start;
if (! macro_alternate && ! macro_mri)
@@ -180,26 +181,26 @@ buffer_and_nest (from, to, ptr, get_line)
/* With normal syntax we can suck what we want till we get
to the dot. With the alternate, labels have to start in
the first column, since we cant tell what's a label and
- whats a pseudoop */
+ whats a pseudoop. */
- /* Skip leading whitespace */
+ /* Skip leading whitespace. */
while (i < ptr->len && ISWHITE (ptr->ptr[i]))
i++;
- /* Skip over a label */
+ /* Skip over a label. */
while (i < ptr->len
&& (isalnum ((unsigned char) ptr->ptr[i])
|| ptr->ptr[i] == '_'
|| ptr->ptr[i] == '$'))
i++;
- /* And a colon */
+ /* And a colon. */
if (i < ptr->len
&& ptr->ptr[i] == ':')
i++;
}
- /* Skip trailing whitespace */
+ /* Skip trailing whitespace. */
while (i < ptr->len && ISWHITE (ptr->ptr[i]))
i++;
@@ -208,24 +209,26 @@ buffer_and_nest (from, to, ptr, get_line)
|| macro_mri))
{
if (ptr->ptr[i] == '.')
- i++;
+ i++;
if (strncasecmp (ptr->ptr + i, from, from_len) == 0
- && (ptr->len == (i + from_len) || ! isalnum (ptr->ptr[i + from_len])))
+ && (ptr->len == (i + from_len)
+ || ! isalnum (ptr->ptr[i + from_len])))
depth++;
if (strncasecmp (ptr->ptr + i, to, to_len) == 0
- && (ptr->len == (i + to_len) || ! isalnum (ptr->ptr[i + to_len])))
+ && (ptr->len == (i + to_len)
+ || ! isalnum (ptr->ptr[i + to_len])))
{
depth--;
if (depth == 0)
{
- /* Reset the string to not include the ending rune */
+ /* Reset the string to not include the ending rune. */
ptr->len = line_start;
break;
}
}
}
- /* Add a CR to the end and keep running */
+ /* Add a CR to the end and keep running. */
sb_add_char (ptr, '\n');
line_start = ptr->len;
more = get_line (ptr);
@@ -257,7 +260,7 @@ get_token (idx, in, name)
sb_add_char (name, in->ptr[idx++]);
}
}
- /* Ignore trailing & */
+ /* Ignore trailing &. */
if (macro_alternate && idx < in->len && in->ptr[idx] == '&')
idx++;
return idx;
@@ -274,7 +277,7 @@ getstring (idx, in, acc)
idx = sb_skip_white (idx, in);
while (idx < in->len
- && (in->ptr[idx] == '"'
+ && (in->ptr[idx] == '"'
|| (in->ptr[idx] == '<' && (macro_alternate || macro_mri))
|| (in->ptr[idx] == '\'' && macro_alternate)))
{
@@ -287,7 +290,7 @@ getstring (idx, in, acc)
{
if (in->ptr[idx] == '!')
{
- idx++ ;
+ idx++;
sb_add_char (acc, in->ptr[idx++]);
}
else
@@ -304,29 +307,47 @@ getstring (idx, in, acc)
else if (in->ptr[idx] == '"' || in->ptr[idx] == '\'')
{
char tchar = in->ptr[idx];
+ int escaped = 0;
+
idx++;
+
while (idx < in->len)
{
+ if (in->ptr[idx - 1] == '\\')
+ escaped ^= 1;
+ else
+ escaped = 0;
+
if (macro_alternate && in->ptr[idx] == '!')
{
- idx++ ;
- sb_add_char (acc, in->ptr[idx++]);
+ idx ++;
+
+ sb_add_char (acc, in->ptr[idx]);
+
+ idx ++;
+ }
+ else if (escaped && in->ptr[idx] == tchar)
+ {
+ sb_add_char (acc, tchar);
+ idx ++;
}
else
{
if (in->ptr[idx] == tchar)
{
- idx++;
+ idx ++;
+
if (idx >= in->len || in->ptr[idx] != tchar)
break;
}
+
sb_add_char (acc, in->ptr[idx]);
- idx++;
+ idx ++;
}
}
}
}
-
+
return idx;
}
@@ -351,7 +372,7 @@ get_any_string (idx, in, out, expand, pretend_quoted)
if (idx < in->len)
{
- if (in->len > 2 && in->ptr[idx+1] == '\'' && ISBASE (in->ptr[idx]))
+ if (in->len > 2 && in->ptr[idx + 1] == '\'' && ISBASE (in->ptr[idx]))
{
while (!ISSEP (in->ptr[idx]))
sb_add_char (out, in->ptr[idx++]);
@@ -362,7 +383,7 @@ get_any_string (idx, in, out, expand, pretend_quoted)
{
int val;
char buf[20];
- /* Turns the next expression into a string */
+ /* Turns the next expression into a string. */
idx = (*macro_expr) (_("% operator needs absolute expression"),
idx + 1,
in,
@@ -378,39 +399,39 @@ get_any_string (idx, in, out, expand, pretend_quoted)
&& ! macro_strip_at
&& expand)
{
- /* Keep the quotes */
- sb_add_char (out, '\"');
+ /* Keep the quotes. */
+ sb_add_char (out, '\"');
idx = getstring (idx, in, out);
- sb_add_char (out, '\"');
+ sb_add_char (out, '\"');
}
else
{
idx = getstring (idx, in, out);
}
}
- else
+ else
{
- while (idx < in->len
+ while (idx < in->len
&& (in->ptr[idx] == '"'
|| in->ptr[idx] == '\''
- || pretend_quoted
+ || pretend_quoted
|| (in->ptr[idx] != ' '
&& in->ptr[idx] != '\t'
&& in->ptr[idx] != ','
&& (in->ptr[idx] != '<'
|| (! macro_alternate && ! macro_mri)))))
{
- if (in->ptr[idx] == '"'
+ if (in->ptr[idx] == '"'
|| in->ptr[idx] == '\'')
{
char tchar = in->ptr[idx];
sb_add_char (out, in->ptr[idx++]);
while (idx < in->len
&& in->ptr[idx] != tchar)
- sb_add_char (out, in->ptr[idx++]);
+ sb_add_char (out, in->ptr[idx++]);
if (idx == in->len)
- return idx;
+ return idx;
}
sb_add_char (out, in->ptr[idx++]);
}
@@ -449,15 +470,15 @@ do_formals (macro, idx, in)
idx = sb_skip_white (idx, in);
if (formal->name.len)
{
- /* This is a formal */
+ /* This is a formal. */
if (idx < in->len && in->ptr[idx] == '=')
{
- /* Got a default */
+ /* Got a default. */
idx = get_any_string (idx + 1, in, &formal->def, 1, 0);
}
}
- /* Add to macro's hash table */
+ /* Add to macro's hash table. */
hash_jam (macro->formal_hash, sb_terminate (&formal->name), formal);
formal->index = macro->formal_count;
@@ -490,7 +511,7 @@ do_formals (macro, idx, in)
sb_add_string (&formal->name, name);
- /* Add to macro's hash table */
+ /* Add to macro's hash table. */
hash_jam (macro->formal_hash, name, formal);
formal->index = NARG_INDEX;
@@ -532,14 +553,14 @@ define_macro (idx, in, label, get_line, namep)
sb_add_sb (&name, label);
if (idx < in->len && in->ptr[idx] == '(')
{
- /* It's the label: MACRO (formals,...) sort */
+ /* It's the label: MACRO (formals,...) sort */
idx = do_formals (macro, idx + 1, in);
if (in->ptr[idx] != ')')
return _("missing ) after formals");
}
else
{
- /* It's the label: MACRO formals,... sort */
+ /* It's the label: MACRO formals,... sort */
idx = do_formals (macro, idx, in);
}
}
@@ -550,7 +571,7 @@ define_macro (idx, in, label, get_line, namep)
idx = do_formals (macro, idx, in);
}
- /* and stick it in the macro hash table */
+ /* And stick it in the macro hash table. */
for (idx = 0; idx < name.len; idx++)
if (isupper ((unsigned char) name.ptr[idx]))
name.ptr[idx] = tolower (name.ptr[idx]);
@@ -627,7 +648,7 @@ sub_actual (start, in, t, formal_hash, kind, out, copyifnotthere)
{
sb_add_sb (out, t);
}
- else
+ else
{
sb_add_char (out, '\\');
sb_add_sb (out, t);
@@ -676,14 +697,14 @@ macro_expand_body (in, out, formals, formal_hash, comment_char, locals)
src++;
if (in->ptr[src] == comment_char && comment_char != '\0')
{
- /* This is a comment, just drop the rest of the line */
+ /* This is a comment, just drop the rest of the line. */
while (src < in->len
&& in->ptr[src] != '\n')
src++;
}
else if (in->ptr[src] == '(')
{
- /* Sub in till the next ')' literally */
+ /* Sub in till the next ')' literally. */
src++;
while (src < in->len && in->ptr[src] != ')')
{
@@ -696,17 +717,17 @@ macro_expand_body (in, out, formals, formal_hash, comment_char, locals)
}
else if (in->ptr[src] == '@')
{
- /* Sub in the macro invocation number */
+ /* Sub in the macro invocation number. */
char buffer[10];
src++;
- sprintf (buffer, "%05d", macro_number);
+ sprintf (buffer, "%d", macro_number);
sb_add_string (out, buffer);
}
else if (in->ptr[src] == '&')
{
/* This is a preprocessor variable name, we don't do them
- here */
+ here. */
sb_add_char (out, '\\');
sb_add_char (out, '&');
src++;
@@ -901,10 +922,10 @@ macro_expand (idx, in, m, out, comment_char)
const char *err;
sb_new (&t);
-
- /* Reset any old value the actuals may have */
+
+ /* Reset any old value the actuals may have. */
for (f = m->formals; f; f = f->next)
- sb_reset (&f->actual);
+ sb_reset (&f->actual);
f = m->formals;
while (f != NULL && f->index < 0)
f = f->next;
@@ -930,13 +951,13 @@ macro_expand (idx, in, m, out, comment_char)
}
}
- /* Peel off the actuals and store them away in the hash tables' actuals */
+ /* Peel off the actuals and store them away in the hash tables' actuals. */
idx = sb_skip_white (idx, in);
while (idx < in->len && in->ptr[idx] != comment_char)
{
int scan;
- /* Look and see if it's a positional or keyword arg */
+ /* Look and see if it's a positional or keyword arg. */
scan = idx;
while (scan < in->len
&& !ISSEP (in->ptr[scan])
@@ -950,19 +971,19 @@ macro_expand (idx, in, m, out, comment_char)
/* It's OK to go from positional to keyword. */
/* This is a keyword arg, fetch the formal name and
- then the actual stuff */
+ then the actual stuff. */
sb_reset (&t);
idx = get_token (idx, in, &t);
if (in->ptr[idx] != '=')
return _("confusion in formal parameters");
- /* Lookup the formal in the macro's list */
+ /* Lookup the formal in the macro's list. */
ptr = (formal_entry *) hash_find (m->formal_hash, sb_terminate (&t));
if (!ptr)
return _("macro formal argument does not exist");
else
{
- /* Insert this value into the right place */
+ /* Insert this value into the right place. */
sb_reset (&ptr->actual);
idx = get_any_string (idx + 1, in, &ptr->actual, 0, 0);
if (ptr->actual.len > 0)
@@ -971,7 +992,7 @@ macro_expand (idx, in, m, out, comment_char)
}
else
{
- /* This is a positional arg */
+ /* This is a positional arg. */
is_positional = 1;
if (is_keyword)
return _("can't mix positional and keyword arguments");
@@ -1118,7 +1139,7 @@ check_macro (line, expand, comment_char, error, info)
sb_kill (&line_sb);
- /* export the macro information if requested */
+ /* Export the macro information if requested. */
if (info)
*info = macro;
@@ -1163,7 +1184,7 @@ expand_irp (irpc, idx, in, out, get_line, comment_char)
sb_new (&sub);
if (! buffer_and_nest (mn, "ENDR", &sub, get_line))
return _("unexpected end of file in irp or irpc");
-
+
sb_new (&f.name);
sb_new (&f.def);
sb_new (&f.actual);
diff --git a/contrib/binutils/gas/macro.h b/contrib/binutils/gas/macro.h
index 9c61acd..030fc91 100644
--- a/contrib/binutils/gas/macro.h
+++ b/contrib/binutils/gas/macro.h
@@ -1,5 +1,5 @@
/* macro.h - header file for macro support for gas and gasp
- Copyright (C) 1994, 95, 96, 97, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1994, 95, 96, 97, 98, 2000 Free Software Foundation, Inc.
Written by Steve and Judy Chamberlain of Cygnus Support,
sac@cygnus.com
@@ -19,7 +19,7 @@
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. */
+ 02111-1307, USA. */
#ifndef MACRO_H
@@ -28,41 +28,37 @@
#include "ansidecl.h"
#include "sb.h"
-/* Structures used to store macros.
+/* Structures used to store macros.
Each macro knows its name and included text. It gets built with a
list of formal arguments, and also keeps a hash table which points
into the list to speed up formal search. Each formal knows its
name and its default value. Each time the macro is expanded, the
- formals get the actual values attatched to them. */
+ formals get the actual values attatched to them. */
/* describe the formal arguments to a macro */
-typedef struct formal_struct
- {
- struct formal_struct *next; /* next formal in list */
- sb name; /* name of the formal */
- sb def; /* the default value */
- sb actual; /* the actual argument (changed on each expansion) */
- int index; /* the index of the formal 0..formal_count-1 */
- }
-formal_entry;
+typedef struct formal_struct {
+ struct formal_struct *next; /* next formal in list */
+ sb name; /* name of the formal */
+ sb def; /* the default value */
+ sb actual; /* the actual argument (changed on each expansion) */
+ int index; /* the index of the formal 0..formal_count-1 */
+} formal_entry;
/* Other values found in the index field of a formal_entry. */
#define QUAL_INDEX (-1)
#define NARG_INDEX (-2)
#define LOCAL_INDEX (-3)
-/* describe the macro. */
+/* describe the macro. */
-typedef struct macro_struct
- {
- sb sub; /* substitution text. */
- int formal_count; /* number of formal args. */
- formal_entry *formals; /* pointer to list of formal_structs */
- struct hash_control *formal_hash; /* hash table of formals. */
- }
-macro_entry;
+typedef struct macro_struct {
+ sb sub; /* substitution text. */
+ int formal_count; /* number of formal args. */
+ formal_entry *formals; /* pointer to list of formal_structs */
+ struct hash_control *formal_hash; /* hash table of formals. */
+} macro_entry;
/* Whether any macros have been defined. */
@@ -81,7 +77,7 @@ extern void macro_mri_mode PARAMS ((int));
extern const char *define_macro
PARAMS ((int idx, sb *in, sb *label, int (*get_line) PARAMS ((sb *)),
const char **namep));
-extern int check_macro PARAMS ((const char *, sb *, int, const char **,
+extern int check_macro PARAMS ((const char *, sb *, int, const char **,
macro_entry **));
extern void delete_macro PARAMS ((const char *));
extern const char *expand_irp
diff --git a/contrib/binutils/gas/messages.c b/contrib/binutils/gas/messages.c
index e4b7ad0..e342673 100644
--- a/contrib/binutils/gas/messages.c
+++ b/contrib/binutils/gas/messages.c
@@ -1,5 +1,5 @@
/* messages.c - error reporter -
- Copyright (C) 1987, 91, 92, 93, 94, 95, 96, 97, 1998
+ Copyright (C) 1987, 91, 92, 93, 94, 95, 96, 97, 98, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -16,7 +16,7 @@
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. */
+ 02111-1307, USA. */
#include "as.h"
@@ -47,8 +47,7 @@ static void as_show_where PARAMS ((void));
static void as_warn_internal PARAMS ((char *, unsigned int, char *));
static void as_bad_internal PARAMS ((char *, unsigned int, char *));
-/*
- * Despite the rest of the comments in this file, (FIXME-SOON),
+/* Despite the rest of the comments in this file, (FIXME-SOON),
* here is the current scheme for error messages etc:
*
* as_fatal() is used when gas is quite confused and
@@ -105,26 +104,26 @@ identify (file)
fprintf (stderr, _("Assembler messages:\n"));
}
-static int warning_count; /* Count of number of warnings issued */
+/* The number of warnings issued. */
+static int warning_count;
-int
+int
had_warnings ()
{
return (warning_count);
}
/* Nonzero if we've hit a 'bad error', and should not write an obj file,
- and exit with a nonzero error code */
+ and exit with a nonzero error code. */
static int error_count;
-int
+int
had_errors ()
{
return (error_count);
}
-
/* Print the current location to stderr. */
static void
@@ -139,15 +138,11 @@ as_show_where ()
fprintf (stderr, "%s:%u: ", file, line);
}
-/*
- * a s _ p e r r o r
- *
- * Like perror(3), but with more info.
- */
+/* Like perror(3), but with more info. */
-void
+void
as_perror (gripe, filename)
- const char *gripe; /* Unpunctuated error theme. */
+ const char *gripe; /* Unpunctuated error theme. */
const char *filename;
{
const char *errtxt;
@@ -166,18 +161,15 @@ as_perror (gripe, filename)
#endif
}
-/*
- * a s _ t s k t s k ()
- *
- * Send to stderr a string as a warning, and locate warning
- * in input file(s).
- * Please only use this for when we have some recovery action.
- * Please explain in string (which may have '\n's) what recovery was done.
- */
+/* Send to stderr a string as a warning, and locate warning
+ in input file(s).
+ Please only use this for when we have some recovery action.
+ Please explain in string (which may have '\n's) what recovery was
+ done. */
#ifdef USE_STDARG
-void
-as_tsktsk (const char *format,...)
+void
+as_tsktsk (const char *format, ...)
{
va_list args;
@@ -186,9 +178,9 @@ as_tsktsk (const char *format,...)
vfprintf (stderr, format, args);
va_end (args);
(void) putc ('\n', stderr);
-} /* as_tsktsk() */
+}
#else
-void
+void
as_tsktsk (format, va_alist)
const char *format;
va_dcl
@@ -200,7 +192,7 @@ as_tsktsk (format, va_alist)
vfprintf (stderr, format, args);
va_end (args);
(void) putc ('\n', stderr);
-} /* as_tsktsk() */
+}
#endif /* not NO_STDARG */
/* The common portion of as_warn and as_warn_where. */
@@ -227,18 +219,15 @@ as_warn_internal (file, line, buffer)
#endif
}
-/*
- * a s _ w a r n ()
- *
- * Send to stderr a string as a warning, and locate warning
- * in input file(s).
- * Please only use this for when we have some recovery action.
- * Please explain in string (which may have '\n's) what recovery was done.
- */
+/* Send to stderr a string as a warning, and locate warning
+ in input file(s).
+ Please only use this for when we have some recovery action.
+ Please explain in string (which may have '\n's) what recovery was
+ done. */
#ifdef USE_STDARG
-void
-as_warn (const char *format,...)
+void
+as_warn (const char *format, ...)
{
va_list args;
char buffer[2000];
@@ -250,10 +239,9 @@ as_warn (const char *format,...)
va_end (args);
as_warn_internal ((char *) NULL, 0, buffer);
}
-} /* as_warn() */
+}
#else
-/*VARARGS1 */
-void
+void
as_warn (format, va_alist)
const char *format;
va_dcl
@@ -268,16 +256,16 @@ as_warn (format, va_alist)
va_end (args);
as_warn_internal ((char *) NULL, 0, buffer);
}
-} /* as_warn() */
+}
#endif /* not NO_STDARG */
-/* as_warn_where, like as_bad but the file name and line number are
- passed in. Unfortunately, we have to repeat the function in order
- to handle the varargs correctly and portably. */
+/* Like as_bad but the file name and line number are passed in.
+ Unfortunately, we have to repeat the function in order to handle
+ the varargs correctly and portably. */
#ifdef USE_STDARG
-void
-as_warn_where (char *file, unsigned int line, const char *format,...)
+void
+as_warn_where (char *file, unsigned int line, const char *format, ...)
{
va_list args;
char buffer[2000];
@@ -289,10 +277,9 @@ as_warn_where (char *file, unsigned int line, const char *format,...)
va_end (args);
as_warn_internal (file, line, buffer);
}
-} /* as_warn() */
+}
#else
-/*VARARGS1 */
-void
+void
as_warn_where (file, line, format, va_alist)
char *file;
unsigned int line;
@@ -309,7 +296,7 @@ as_warn_where (file, line, format, va_alist)
va_end (args);
as_warn_internal (file, line, buffer);
}
-} /* as_warn() */
+}
#endif /* not NO_STDARG */
/* The common portion of as_bad and as_bad_where. */
@@ -336,18 +323,15 @@ as_bad_internal (file, line, buffer)
#endif
}
-/*
- * a s _ b a d ()
- *
- * Send to stderr a string as a warning, and locate warning in input file(s).
- * Please us when there is no recovery, but we want to continue processing
- * but not produce an object file.
- * Please explain in string (which may have '\n's) what recovery was done.
- */
+/* Send to stderr a string as a warning, and locate warning in input
+ file(s). Please us when there is no recovery, but we want to
+ continue processing but not produce an object file.
+ Please explain in string (which may have '\n's) what recovery was
+ done. */
#ifdef USE_STDARG
-void
-as_bad (const char *format,...)
+void
+as_bad (const char *format, ...)
{
va_list args;
char buffer[2000];
@@ -360,8 +344,7 @@ as_bad (const char *format,...)
}
#else
-/*VARARGS1 */
-void
+void
as_bad (format, va_alist)
const char *format;
va_dcl
@@ -377,13 +360,13 @@ as_bad (format, va_alist)
}
#endif /* not NO_STDARG */
-/* as_bad_where, like as_bad but the file name and line number are
- passed in. Unfortunately, we have to repeat the function in order
- to handle the varargs correctly and portably. */
+/* Like as_bad but the file name and line number are passed in.
+ Unfortunately, we have to repeat the function in order to handle
+ the varargs correctly and portably. */
#ifdef USE_STDARG
-void
-as_bad_where (char *file, unsigned int line, const char *format,...)
+void
+as_bad_where (char *file, unsigned int line, const char *format, ...)
{
va_list args;
char buffer[2000];
@@ -396,8 +379,7 @@ as_bad_where (char *file, unsigned int line, const char *format,...)
}
#else
-/*VARARGS1 */
-void
+void
as_bad_where (file, line, format, va_alist)
char *file;
unsigned int line;
@@ -415,18 +397,14 @@ as_bad_where (file, line, format, va_alist)
}
#endif /* not NO_STDARG */
-/*
- * a s _ f a t a l ()
- *
- * Send to stderr a string as a fatal message, and print location of error in
- * input file(s).
- * Please only use this for when we DON'T have some recovery action.
- * It xexit()s with a warning status.
- */
+/* Send to stderr a string as a fatal message, and print location of
+ error in input file(s).
+ Please only use this for when we DON'T have some recovery action.
+ It xexit()s with a warning status. */
#ifdef USE_STDARG
-void
-as_fatal (const char *format,...)
+void
+as_fatal (const char *format, ...)
{
va_list args;
@@ -436,11 +414,14 @@ as_fatal (const char *format,...)
vfprintf (stderr, format, args);
(void) putc ('\n', stderr);
va_end (args);
+ /* Delete the output file, if it exists. This will prevent make from
+ thinking that a file was created and hence does not need rebuilding. */
+ if (out_file_name != NULL)
+ unlink (out_file_name);
xexit (EXIT_FAILURE);
-} /* as_fatal() */
+}
#else
-/*VARARGS1*/
-void
+void
as_fatal (format, va_alist)
char *format;
va_dcl
@@ -454,13 +435,11 @@ as_fatal (format, va_alist)
(void) putc ('\n', stderr);
va_end (args);
xexit (EXIT_FAILURE);
-} /* as_fatal() */
+}
#endif /* not NO_STDARG */
-/*
- * as_assert: Indicate assertion failure.
- * Arguments: Filename, line number, optional function name.
- */
+/* Indicate assertion failure.
+ Arguments: Filename, line number, optional function name. */
void
as_assert (file, line, fn)
@@ -480,6 +459,7 @@ as_assert (file, line, fn)
/* as_abort: Print a friendly message saying how totally hosed we are,
and exit without producing a core file. */
+
void
as_abort (file, line, fn)
const char *file, *fn;
@@ -537,5 +517,3 @@ sprint_value (buf, val)
#endif
abort ();
}
-
-/* end of messages.c */
diff --git a/contrib/binutils/gas/obj.h b/contrib/binutils/gas/obj.h
index 7fe5551..4c9759f 100644
--- a/contrib/binutils/gas/obj.h
+++ b/contrib/binutils/gas/obj.h
@@ -50,18 +50,27 @@ struct format_ops {
int flavor;
unsigned dfl_leading_underscore : 1;
unsigned emit_section_symbols : 1;
+ void (*begin) PARAMS ((void));
+ void (*app_file) PARAMS ((const char *));
void (*frob_symbol) PARAMS ((symbolS *, int *));
void (*frob_file) PARAMS ((void));
+ void (*frob_file_before_adjust) PARAMS ((void));
void (*frob_file_after_relocs) PARAMS ((void));
bfd_vma (*s_get_size) PARAMS ((symbolS *));
void (*s_set_size) PARAMS ((symbolS *, bfd_vma));
bfd_vma (*s_get_align) PARAMS ((symbolS *));
void (*s_set_align) PARAMS ((symbolS *, bfd_vma));
int (*s_get_other) PARAMS ((symbolS *));
+ void (*s_set_other) PARAMS ((symbolS *, int));
int (*s_get_desc) PARAMS ((symbolS *));
+ void (*s_set_desc) PARAMS ((symbolS *, int));
+ int (*s_get_type) PARAMS ((symbolS *));
+ void (*s_set_type) PARAMS ((symbolS *, int));
void (*copy_symbol_attributes) PARAMS ((symbolS *, symbolS *));
void (*generate_asm_lineno) PARAMS ((void));
void (*process_stab) PARAMS ((segT, int, const char *, int, int, int));
+ int (*separate_stab_sections) PARAMS ((void));
+ void (*init_stab_section) PARAMS ((segT));
int (*sec_sym_ok_for_reloc) PARAMS ((asection *));
void (*pop_insert) PARAMS ((void));
/* For configurations using ECOFF_DEBUGGING, this callback is used. */
diff --git a/contrib/binutils/gas/po/POTFILES.in b/contrib/binutils/gas/po/POTFILES.in
index b4d0125..30dab30 100644
--- a/contrib/binutils/gas/po/POTFILES.in
+++ b/contrib/binutils/gas/po/POTFILES.in
@@ -13,6 +13,8 @@ bit_fix.h
cgen.h
cond.c
cond.c
+config/e-crisaout.c
+config/e-criself.c
config/e-i386aout.c
config/e-i386coff.c
config/e-i386elf.c
@@ -46,6 +48,10 @@ config/tc-arc.c
config/tc-arc.h
config/tc-arm.c
config/tc-arm.h
+config/tc-avr.c
+config/tc-avr.h
+config/tc-cris.c
+config/tc-cris.h
config/tc-d10v.c
config/tc-d10v.h
config/tc-d30v.c
@@ -66,8 +72,12 @@ config/tc-i860.c
config/tc-i860.h
config/tc-i960.c
config/tc-i960.h
+config/tc-ia64.c
+config/tc-ia64.h
config/tc-m32r.c
config/tc-m32r.h
+config/tc-m68hc11.c
+config/tc-m68hc11.h
config/tc-m68k.c
config/tc-m68k.h
config/tc-m88k.c
@@ -94,6 +104,8 @@ config/tc-tahoe.c
config/tc-tahoe.h
config/tc-tic30.c
config/tc-tic30.h
+config/tc-tic54x.c
+config/tc-tic54x.h
config/tc-tic80.c
config/tc-tic80.h
config/tc-v850.c
diff --git a/contrib/binutils/gas/po/gas.pot b/contrib/binutils/gas/po/gas.pot
index 4a2cd86..4428b64 100644
--- a/contrib/binutils/gas/po/gas.pot
+++ b/contrib/binutils/gas/po/gas.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-04-05 14:09+0930\n"
+"POT-Creation-Date: 2001-01-11 12:04-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -14,76 +14,76 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
-#: app.c:466 app.c:480
+#: app.c:464 app.c:478
msgid "end of file in comment"
msgstr ""
-#: app.c:559
+#: app.c:557
msgid "end of file in string: inserted '\"'"
msgstr ""
-#: app.c:625
+#: app.c:623
#, c-format
msgid "Unknown escape '\\%c' in string: Ignored"
msgstr ""
-#: app.c:634
+#: app.c:632
msgid "End of file in string: '\"' inserted"
msgstr ""
-#: app.c:754
+#: app.c:752
msgid "end of file not at end of a line; newline inserted"
msgstr ""
-#: app.c:911
+#: app.c:910
msgid "end of file in multiline comment"
msgstr ""
-#: app.c:960
+#: app.c:974
msgid "end of file after a one-character quote; \\0 inserted"
msgstr ""
-#: app.c:968
+#: app.c:982
msgid "end of file in escape character"
msgstr ""
-#: app.c:980
+#: app.c:994
msgid "Missing close quote: (assumed)"
msgstr ""
-#: app.c:1043 app.c:1097 app.c:1166
+#: app.c:1057 app.c:1111 app.c:1186
msgid "end of file in comment; newline inserted"
msgstr ""
-#: app.c:1107
+#: app.c:1121
msgid "EOF in Comment: Newline inserted"
msgstr ""
-#: as.c:148
+#: as.c:147
msgid "missing emulation mode name"
msgstr ""
-#: as.c:163
+#: as.c:162
#, c-format
msgid "unrecognized emulation name `%s'"
msgstr ""
-#: as.c:210
+#: as.c:209
#, c-format
msgid "GNU assembler version %s (%s) using BFD version %s"
msgstr ""
-#: as.c:213
+#: as.c:212
#, c-format
msgid "GNU assembler version %s (%s)"
msgstr ""
-#: as.c:222
+#: as.c:221
#, c-format
msgid "Usage: %s [option...] [asmfile...]\n"
msgstr ""
-#: as.c:224
+#: as.c:223
msgid ""
"Options:\n"
" -a[sub-option...]\t turn on listings\n"
@@ -100,135 +100,139 @@ msgid ""
" \t =FILE list to FILE (must be last sub-option)\n"
msgstr ""
-#: as.c:238
+#: as.c:237
msgid " -D produce assembler debugging messages\n"
msgstr ""
-#: as.c:240
+#: as.c:239
msgid " --defsym SYM=VAL define symbol SYM to given value\n"
msgstr ""
-#: as.c:256
+#: as.c:255
#, c-format
msgid " emulate output (default %s)\n"
msgstr ""
-#: as.c:260
+#: as.c:259
msgid " -f skip whitespace and comment preprocessing\n"
msgstr ""
-#: as.c:262
+#: as.c:261
msgid " --gstabs generate stabs debugging information\n"
msgstr ""
-#: as.c:264
+#: as.c:263
msgid " --gdwarf2 generate DWARF2 debugging information\n"
msgstr ""
-#: as.c:266
+#: as.c:265
msgid " --help show this message and exit\n"
msgstr ""
-#: as.c:268
+#: as.c:267
+msgid " --target-help show target specific options\n"
+msgstr ""
+
+#: as.c:269
msgid ""
" -I DIR add DIR to search list for .include directives\n"
msgstr ""
-#: as.c:270
+#: as.c:271
msgid " -J don't warn about signed overflow\n"
msgstr ""
-#: as.c:272
+#: as.c:273
msgid ""
" -K warn when differences altered for long "
"displacements\n"
msgstr ""
-#: as.c:274
+#: as.c:275
msgid " -L,--keep-locals keep local symbols (e.g. starting with `L')\n"
msgstr ""
-#: as.c:276
+#: as.c:277
msgid " -M,--mri assemble in MRI compatibility mode\n"
msgstr ""
-#: as.c:278
+#: as.c:279
msgid ""
" --MD FILE write dependency information in FILE (default "
"none)\n"
msgstr ""
-#: as.c:280
+#: as.c:281
msgid " -nocpp ignored\n"
msgstr ""
-#: as.c:282
+#: as.c:283
msgid ""
" -o OBJFILE name the object-file output OBJFILE (default "
"a.out)\n"
msgstr ""
-#: as.c:284
+#: as.c:285
msgid " -R fold data section into text section\n"
msgstr ""
-#: as.c:286
+#: as.c:287
msgid ""
" --statistics print various measured statistics from execution\n"
msgstr ""
-#: as.c:288
+#: as.c:289
msgid " --strip-local-absolute strip local absolute symbols\n"
msgstr ""
-#: as.c:290
+#: as.c:291
msgid ""
" --traditional-format Use same format as native assembler when possible\n"
msgstr ""
-#: as.c:292
+#: as.c:293
msgid " --version print assembler version number and exit\n"
msgstr ""
-#: as.c:294
+#: as.c:295
msgid " -W --no-warn suppress warnings\n"
msgstr ""
-#: as.c:296
+#: as.c:297
msgid " --warn don't suppress warnings\n"
msgstr ""
-#: as.c:298
+#: as.c:299
msgid " --fatal-warnings treat warnings as errors\n"
msgstr ""
-#: as.c:300
+#: as.c:301
msgid ""
" --itbl INSTTBL extend instruction set to include instructions\n"
" matching the specifications defined in file "
"INSTTBL\n"
msgstr ""
-#: as.c:303
+#: as.c:304
msgid " -w ignored\n"
msgstr ""
-#: as.c:305
+#: as.c:306
msgid " -X ignored\n"
msgstr ""
-#: as.c:307
+#: as.c:308
msgid " -Z generate object file even after errors\n"
msgstr ""
-#: as.c:309
+#: as.c:310
msgid ""
" --listing-lhs-width set the width in words of the output data column "
"of\n"
" the listing\n"
msgstr ""
-#: as.c:312
+#: as.c:313
msgid ""
" --listing-lhs-width2 set the width in words of the continuation lines\n"
" of the output data column; ignored if smaller "
@@ -236,398 +240,408 @@ msgid ""
" the width of the first line\n"
msgstr ""
-#: as.c:316
+#: as.c:317
msgid ""
" --listing-rhs-width set the max width in characters of the lines from\n"
" the source file\n"
msgstr ""
-#: as.c:319
+#: as.c:320
msgid ""
" --listing-cont-lines set the maximum number of continuation lines used\n"
" for the output data column of the listing\n"
msgstr ""
-#: as.c:326 gasp.c:3554
+#: as.c:327 gasp.c:3527
#, c-format
msgid "Report bugs to %s\n"
msgstr ""
#. This output is intended to follow the GNU standards document.
-#: as.c:516
+#: as.c:527
#, c-format
msgid "GNU assembler %s\n"
msgstr ""
-#: as.c:517
-msgid "Copyright 1997 Free Software Foundation, Inc.\n"
+#: as.c:528
+msgid "Copyright 2000 Free Software Foundation, Inc.\n"
msgstr ""
-#: as.c:518 gasp.c:3648
+#: as.c:529 gasp.c:3621
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 ""
-#: as.c:521
+#: as.c:532
#, c-format
msgid "This assembler was configured for a target of `%s'.\n"
msgstr ""
-#: as.c:528
+#: as.c:539
msgid "multiple emulation names specified"
msgstr ""
-#: as.c:530
+#: as.c:541
msgid "emulations not handled in this configuration"
msgstr ""
-#: as.c:535
+#: as.c:546
#, c-format
msgid "alias = %s\n"
msgstr ""
-#: as.c:536
+#: as.c:547
#, c-format
msgid "canonical = %s\n"
msgstr ""
-#: as.c:537
+#: as.c:548
#, c-format
msgid "cpu-type = %s\n"
msgstr ""
-#: as.c:539
+#: as.c:550
#, c-format
msgid "format = %s\n"
msgstr ""
-#: as.c:542
+#: as.c:553
#, c-format
msgid "bfd-target = %s\n"
msgstr ""
-#: as.c:555
+#: as.c:566
msgid "bad defsym; format is --defsym name=value"
msgstr ""
-#: as.c:575
+#: as.c:590
msgid "No file name following -t option\n"
msgstr ""
-#: as.c:591
+#: as.c:606
#, c-format
msgid "Failed to read instruction table %s\n"
msgstr ""
-#: as.c:705
+#: as.c:723
#, c-format
msgid "invalid listing option `%c'"
msgstr ""
-#: as.c:899
+#: as.c:922
#, c-format
msgid "%d warnings, treating warnings as errors"
msgstr ""
-#: as.c:930
+#: as.c:953
#, c-format
msgid "%s: total time in assembly: %ld.%06ld\n"
msgstr ""
-#: as.c:933
+#: as.c:956
#, c-format
msgid "%s: data size %ld\n"
msgstr ""
+#: as.h:225
+#, c-format
+msgid "Case value %ld unexpected at line %d of file \"%s\"\n"
+msgstr ""
+
#.
#. * We have a GROSS internal error.
#. * This should never happen.
#.
-#: atof-generic.c:438 config/tc-a29k.c:544 config/tc-i860.c:335
-#: config/tc-i860.c:708 config/tc-m68k.c:3124 config/tc-m68k.c:3153
-#: config/tc-sparc.c:2462
+#: atof-generic.c:437 config/tc-a29k.c:544 config/tc-i860.c:340
+#: config/tc-i860.c:832 config/tc-m68k.c:3176 config/tc-m68k.c:3205
+#: config/tc-sparc.c:2543
msgid "failed sanity check."
msgstr ""
-#: cond.c:75
+#: cond.c:77
msgid "invalid identifier for \".ifdef\""
msgstr ""
-#: cond.c:128
+#: cond.c:131
msgid "non-constant expression in \".if\" statement"
msgstr ""
-#: cond.c:224
+#: cond.c:227
msgid "bad format for ifc or ifnc"
msgstr ""
-#: cond.c:258
+#: cond.c:261
msgid "\".elseif\" without matching \".if\" - ignored"
msgstr ""
-#: cond.c:263
+#: cond.c:266
msgid "\".elseif\" after \".else\" - ignored"
msgstr ""
-#: cond.c:266 cond.c:375
+#: cond.c:269 cond.c:378
msgid "here is the previous \"else\""
msgstr ""
-#: cond.c:269 cond.c:378
+#: cond.c:272 cond.c:381
msgid "here is the previous \"if\""
msgstr ""
-#: cond.c:302
+#: cond.c:305
msgid "non-constant expression in \".elseif\" statement"
msgstr ""
-#: cond.c:337
+#: cond.c:340
msgid "\".endif\" without \".if\""
msgstr ""
-#: cond.c:367
+#: cond.c:370
msgid ".else without matching .if - ignored"
msgstr ""
-#: cond.c:372
+#: cond.c:375
msgid "duplicate \"else\" - ignored"
msgstr ""
-#: cond.c:423
+#: cond.c:426
msgid ".ifeqs syntax error"
msgstr ""
-#: cond.c:506
+#: cond.c:509
msgid "end of macro inside conditional"
msgstr ""
-#: cond.c:508
+#: cond.c:511
msgid "end of file inside conditional"
msgstr ""
-#: cond.c:511
+#: cond.c:514
msgid "here is the start of the unterminated conditional"
msgstr ""
-#: cond.c:515
+#: cond.c:518
msgid "here is the \"else\" of the unterminated conditional"
msgstr ""
-#: config/obj-aout.c:163
+#: config/obj-aout.c:162
#, c-format
msgid "Attempt to put a common symbol into set %s"
msgstr ""
-#: config/obj-aout.c:167
+#: config/obj-aout.c:166
#, c-format
msgid "Attempt to put an undefined symbol into set %s"
msgstr ""
-#: config/obj-aout.c:198 config/obj-coff.c:1204 config/obj-elf.c:1675
-#: ecoff.c:3668
+#: config/obj-aout.c:197 config/obj-coff.c:1246 config/obj-elf.c:1739
+#: ecoff.c:3647
#, c-format
msgid "Symbol `%s' can not be both weak and common"
msgstr ""
-#: config/obj-aout.c:256 config/obj-coff.c:1916
+#: config/obj-aout.c:255 config/obj-coff.c:1982
msgid "unresolved relocation"
msgstr ""
-#: config/obj-aout.c:258 config/obj-coff.c:1918
+#: config/obj-aout.c:257 config/obj-coff.c:1984
#, c-format
msgid "bad relocation: symbol `%s' not in symbol table"
msgstr ""
-#: config/obj-aout.c:345
+#: config/obj-aout.c:344
#, c-format
msgid "%s: bad type for weak symbol"
msgstr ""
-#: config/obj-aout.c:462 config/obj-coff.c:2849 write.c:1805
+#: config/obj-aout.c:458 config/obj-coff.c:2913 write.c:1868
#, c-format
msgid "%s: global symbols not supported in common sections"
msgstr ""
-#: config/obj-aout.c:529
+#: config/obj-aout.c:524
#, c-format
msgid "Local symbol %s never defined."
msgstr ""
-#: config/obj-aout.c:617
+#: config/obj-aout.c:612
msgid "subsegment index too high"
msgstr ""
-#: config/obj-bout.c:313 config/obj-vms.c:566
+#: config/obj-bout.c:319 config/obj-vms.c:561
#, c-format
msgid "Local symbol %s never defined"
msgstr ""
-#: config/obj-coff.c:149
+#: config/obj-coff.c:156
#, c-format
msgid "Inserting \"%s\" into structure table failed: %s"
msgstr ""
#. Zero is used as an end marker in the file.
-#: config/obj-coff.c:444
+#: config/obj-coff.c:451
msgid "Line numbers must be positive integers\n"
msgstr ""
-#: config/obj-coff.c:477 config/obj-coff.c:2263
+#: config/obj-coff.c:484 config/obj-coff.c:2328
msgid ".ln pseudo-op inside .def/.endef: ignored."
msgstr ""
-#: config/obj-coff.c:520 ecoff.c:3304
+#: config/obj-coff.c:527 ecoff.c:3283
msgid ".loc outside of .text"
msgstr ""
-#: config/obj-coff.c:527
+#: config/obj-coff.c:534
msgid ".loc pseudo-op inside .def/.endef: ignored."
msgstr ""
-#: config/obj-coff.c:615 config/obj-coff.c:2320
+#: config/obj-coff.c:622 config/obj-coff.c:2385
msgid ".def pseudo-op used inside of .def/.endef: ignored."
msgstr ""
-#: config/obj-coff.c:661 config/obj-coff.c:2373
+#: config/obj-coff.c:668 config/obj-coff.c:2437
msgid ".endef pseudo-op used outside of .def/.endef: ignored."
msgstr ""
-#: config/obj-coff.c:699
+#: config/obj-coff.c:706
#, c-format
msgid "`%s' symbol without preceding function"
msgstr ""
-#: config/obj-coff.c:753 config/obj-coff.c:2448
+#: config/obj-coff.c:793 config/obj-coff.c:2512
#, c-format
msgid "unexpected storage class %d"
msgstr ""
-#: config/obj-coff.c:866 config/obj-coff.c:2555
+#: config/obj-coff.c:906 config/obj-coff.c:2619
msgid ".dim pseudo-op used outside of .def/.endef: ignored."
msgstr ""
-#: config/obj-coff.c:886 config/obj-coff.c:2575
+#: config/obj-coff.c:926 config/obj-coff.c:2639
msgid "badly formed .dim directive ignored"
msgstr ""
-#: config/obj-coff.c:937 config/obj-coff.c:2638
+#: config/obj-coff.c:977 config/obj-coff.c:2702
msgid ".size pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:953 config/obj-coff.c:2654
+#: config/obj-coff.c:993 config/obj-coff.c:2718
msgid ".scl pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:971 config/obj-coff.c:2672
+#: config/obj-coff.c:1011 config/obj-coff.c:2736
msgid ".tag pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:990 config/obj-coff.c:2690
+#: config/obj-coff.c:1030 config/obj-coff.c:2754
#, c-format
msgid "tag not found for .tag %s"
msgstr ""
-#: config/obj-coff.c:1005 config/obj-coff.c:2705
+#: config/obj-coff.c:1045 config/obj-coff.c:2769
msgid ".type pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:1027 config/obj-coff.c:2727
+#: config/obj-coff.c:1067 config/obj-coff.c:2791
msgid ".val pseudo-op used outside of .def/.endef ignored."
msgstr ""
-#: config/obj-coff.c:1165 config/obj-coff.c:2922
+#: config/obj-coff.c:1207 config/obj-coff.c:2986
msgid "mismatched .eb"
msgstr ""
-#: config/obj-coff.c:1183 config/obj-coff.c:2962
+#: config/obj-coff.c:1225 config/obj-coff.c:3026
msgid "C_EFCN symbol out of scope"
msgstr ""
#. STYP_INFO
#. STYP_LIB
#. STYP_OVER
-#: config/obj-coff.c:1405
+#: config/obj-coff.c:1447
#, c-format
msgid "unsupported section attribute '%c'"
msgstr ""
-#: config/obj-coff.c:1410 config/obj-coff.c:3668 config/tc-ppc.c:3791
+#: config/obj-coff.c:1452 config/obj-coff.c:3726 config/tc-ppc.c:3925
#, c-format
msgid "unknown section attribute '%c'"
msgstr ""
-#: config/obj-coff.c:1432 config/tc-ppc.c:3809 read.c:2504
+#: config/obj-coff.c:1482 config/tc-ppc.c:3943 read.c:2512
#, c-format
msgid "error setting flags for \"%s\": %s"
msgstr ""
-#: config/obj-coff.c:1558
+#: config/obj-coff.c:1493 config/obj-elf.c:723
+#, c-format
+msgid "Ignoring changed section attributes for %s"
+msgstr ""
+
+#: config/obj-coff.c:1629
#, c-format
msgid "0x%lx: \"%s\" type = %ld, class = %d, segment = %d\n"
msgstr ""
-#: config/obj-coff.c:1743 config/obj-ieee.c:69
+#: config/obj-coff.c:1809 config/obj-ieee.c:69
msgid "Out of step\n"
msgstr ""
-#: config/obj-coff.c:2178
+#: config/obj-coff.c:2244
msgid "bfd_coff_swap_scnhdr_out failed"
msgstr ""
-#: config/obj-coff.c:2405
+#: config/obj-coff.c:2469
msgid "`.bf' symbol without preceding function\n"
msgstr ""
-#: config/obj-coff.c:3365 config/obj-ieee.c:522 output-file.c:52
+#: config/obj-coff.c:3422 config/obj-ieee.c:507 output-file.c:52
#: output-file.c:119
#, c-format
msgid "FATAL: Can't create %s"
msgstr ""
-#: config/obj-coff.c:3542
+#: config/obj-coff.c:3600
#, c-format
msgid "Can't close %s: %s"
msgstr ""
-#: config/obj-coff.c:3576
+#: config/obj-coff.c:3634
#, c-format
msgid "Too many new sections; can't add \"%s\""
msgstr ""
-#: config/obj-coff.c:3986 config/tc-m88k.c:1260 config/tc-sparc.c:3354
+#: config/obj-coff.c:4041 config/tc-m88k.c:1257 config/tc-sparc.c:3531
msgid "Expected comma after name"
msgstr ""
-#: config/obj-coff.c:3992 read.c:1967
+#: config/obj-coff.c:4047 read.c:1956
msgid "Missing size expression"
msgstr ""
-#: config/obj-coff.c:3998
+#: config/obj-coff.c:4053
#, c-format
msgid "lcomm length (%d.) <0! Ignored."
msgstr ""
-#: config/obj-coff.c:4026 read.c:2188
+#: config/obj-coff.c:4081 read.c:2190
#, c-format
msgid "Symbol %s already defined"
msgstr ""
-#: config/obj-coff.c:4120 config/tc-i960.c:3255
+#: config/obj-coff.c:4176 config/tc-i960.c:3215
#, c-format
msgid "No 'bal' entry point for leafproc %s"
msgstr ""
-#: config/obj-coff.c:4199 write.c:2507
+#: config/obj-coff.c:4255 write.c:2575
#, c-format
msgid "Negative of non-absolute symbol %s"
msgstr ""
-#: config/obj-coff.c:4220 write.c:2521
+#: config/obj-coff.c:4276 write.c:2589
msgid "callj to difference of 2 symbols"
msgstr ""
-#: config/obj-coff.c:4266
+#: config/obj-coff.c:4322
#, c-format
msgid "Can't emit reloc {- %s-seg symbol \"%s\"} @ file address %ld."
msgstr ""
@@ -635,218 +649,221 @@ msgstr ""
#. 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.
-#: config/obj-coff.c:4356 config/tc-i960.c:3275 write.c:2665
+#: config/obj-coff.c:4411 config/tc-i960.c:3235 write.c:2733
msgid "can't use COBR format with external label"
msgstr ""
-#: config/obj-coff.c:4436
+#: config/obj-coff.c:4490
#, c-format
msgid "Value of %ld too large for field of %d bytes at 0x%lx"
msgstr ""
-#: config/obj-coff.c:4450 write.c:2764
+#: config/obj-coff.c:4504 write.c:2823
#, c-format
msgid "Signed .word overflow; switch may be too large; %ld at 0x%lx"
msgstr ""
-#: config/obj-ecoff.c:240
+#: config/obj-ecoff.c:241
msgid "Can't set GP value"
msgstr ""
-#: config/obj-ecoff.c:247
+#: config/obj-ecoff.c:248
msgid "Can't set register masks"
msgstr ""
-#: config/obj-elf.c:299 config/tc-sparc.c:3495 config/tc-v850.c:263
+#: config/obj-elf.c:308 config/tc-sparc.c:3674 config/tc-v850.c:259
msgid "Expected comma after symbol-name"
msgstr ""
-#: config/obj-elf.c:306 config/tc-arc.c:779 config/tc-sparc.c:3502
+#: config/obj-elf.c:315 config/tc-sparc.c:3684
#, c-format
msgid ".COMMon length (%d.) <0! Ignored."
msgstr ""
-#: config/obj-elf.c:316 config/tc-alpha.c:4320 config/tc-sparc.c:3512
-#: config/tc-v850.c:285
+#: config/obj-elf.c:325 config/tc-alpha.c:4335 config/tc-sparc.c:3694
+#: config/tc-v850.c:282
msgid "Ignoring attempt to re-define symbol"
msgstr ""
-#: config/obj-elf.c:324 config/tc-arc.c:797 config/tc-sparc.c:3520
-#: config/tc-v850.c:295
+#: config/obj-elf.c:333 config/tc-sparc.c:3702 config/tc-v850.c:292
#, c-format
msgid "Length of .comm \"%s\" is already %ld. Not changed to %d."
msgstr ""
-#: config/obj-elf.c:347 config/tc-arc.c:816 config/tc-v850.c:322
+#: config/obj-elf.c:356 config/tc-v850.c:319
msgid "Common alignment negative; 0 assumed"
msgstr ""
-#: config/obj-elf.c:366 config/tc-m32r.c:1269 config/tc-ppc.c:1396
-#: config/tc-v850.c:385
+#: config/obj-elf.c:375 config/tc-m32r.c:1286 config/tc-ppc.c:1518
+#: config/tc-v850.c:382
msgid "Common alignment not a power of 2"
msgstr ""
-#: config/obj-elf.c:429 config/tc-arc.c:876 config/tc-sparc.c:3644
-#: config/tc-v850.c:563
+#: config/obj-elf.c:438 config/tc-sparc.c:3826 config/tc-v850.c:564
#, c-format
msgid "bad .common segment %s"
msgstr ""
-#: config/obj-elf.c:658
+#: config/obj-elf.c:664
#, c-format
msgid "Setting incorrect section type for %s"
msgstr ""
#: config/obj-elf.c:668
#, c-format
+msgid "Ignoring incorrect section type for %s"
+msgstr ""
+
+#: config/obj-elf.c:681
+#, c-format
msgid "Setting incorrect section attributes for %s"
msgstr ""
-#: config/obj-elf.c:726
+#: config/obj-elf.c:753
msgid "Unrecognized .section attribute: want a,w,x"
msgstr ""
-#: config/obj-elf.c:766
+#: config/obj-elf.c:793
msgid "Unrecognized section attribute"
msgstr ""
-#: config/obj-elf.c:788
+#: config/obj-elf.c:815
msgid "Unrecognized section type"
msgstr ""
-#: config/obj-elf.c:839
+#: config/obj-elf.c:866
msgid "Missing section name"
msgstr ""
-#: config/obj-elf.c:905
+#: config/obj-elf.c:932
msgid "Bad .section directive - character following name is not '#'"
msgstr ""
-#: config/obj-elf.c:1006
+#: config/obj-elf.c:1033
msgid ".previous without corresponding .section; ignored"
msgstr ""
-#: config/obj-elf.c:1033
+#: config/obj-elf.c:1060
msgid ".popsection without corresponding .pushsection; ignored"
msgstr ""
-#: config/obj-elf.c:1085
-#, c-format
-msgid "multiple .symver directives for symbol `%s'"
-msgstr ""
-
-#: config/obj-elf.c:1094
+#: config/obj-elf.c:1113
msgid "expected comma after name in .symver"
msgstr ""
-#: config/obj-elf.c:1115
+#: config/obj-elf.c:1137
#, c-format
msgid "missing version name in `%s' for symbol `%s'"
msgstr ""
-#: config/obj-elf.c:1324 config/obj-som.c:148 config/obj-som.c:193
+#: config/obj-elf.c:1148
+#, c-format
+msgid "multiple versions [`%s'|`%s'] for symbol `%s'"
+msgstr ""
+
+#: config/obj-elf.c:1361 config/obj-som.c:155 config/obj-som.c:201
msgid "Expected quoted string"
msgstr ""
-#: config/obj-elf.c:1345
+#: config/obj-elf.c:1382
#, c-format
msgid "expected comma after name `%s' in .size directive"
msgstr ""
-#: config/obj-elf.c:1354
+#: config/obj-elf.c:1391
msgid "missing expression in .size directive"
msgstr ""
-#: config/obj-elf.c:1421
+#: config/obj-elf.c:1467
#, c-format
msgid "ignoring unrecognized symbol type \"%s\""
msgstr ""
-#: config/obj-elf.c:1599
+#: config/obj-elf.c:1648
msgid ".size expression too complicated to fix up"
msgstr ""
-#: config/obj-elf.c:1630
+#: config/obj-elf.c:1680
#, c-format
msgid ""
"invalid attempt to declare external version name as default in symbol `%s'"
msgstr ""
-#: config/obj-elf.c:1762
+#: config/obj-elf.c:1862
#, c-format
msgid "Failed to set up debugging information: %s"
msgstr ""
-#: config/obj-elf.c:1782
+#: config/obj-elf.c:1882
#, c-format
msgid "Can't start writing .mdebug section: %s"
msgstr ""
-#: config/obj-elf.c:1790
+#: config/obj-elf.c:1890
#, c-format
msgid "Could not write .mdebug section: %s"
msgstr ""
-#: config/obj-ieee.c:460
+#: config/obj-ieee.c:455
msgid "too many sections"
msgstr ""
-#: config/obj-som.c:131
+#: config/obj-som.c:138
msgid "Only one .version pseudo-op per file!"
msgstr ""
-#: config/obj-som.c:157
+#: config/obj-som.c:164
#, c-format
msgid "FATAL: Attaching version header %s"
msgstr ""
-#: config/obj-som.c:176
+#: config/obj-som.c:184
msgid "Only one .copyright pseudo-op per file!"
msgstr ""
-#: config/obj-som.c:202
+#: config/obj-som.c:210
#, c-format
msgid "FATAL: Attaching copyright header %s"
msgstr ""
-#: config/obj-vms.c:464
+#: config/obj-vms.c:462
#, c-format
msgid "compiler emitted zero-size common symbol `%s' already defined"
msgstr ""
-#: config/obj-vms.c:474
+#: config/obj-vms.c:472
#, c-format
msgid "compiler redefined zero-size common symbol `%s'"
msgstr ""
-#: config/obj-vms.c:597
+#: config/obj-vms.c:591
#, c-format
msgid "Couldn't create VMS object file \"%s\""
msgstr ""
-#: config/obj-vms.c:623
+#: config/obj-vms.c:616
msgid "I/O error writing VMS object file (length prefix)"
msgstr ""
-#: config/obj-vms.c:637
+#: config/obj-vms.c:630
msgid "I/O error writing VMS object file"
msgstr ""
-#: config/obj-vms.c:1240
+#: config/obj-vms.c:1220
msgid "Couldn't find source file \"%s\", status=%%X%x"
msgstr ""
-#: config/obj-vms.c:1749 config/obj-vms.c:2937
+#: config/obj-vms.c:1718 config/obj-vms.c:2894
#, c-format
msgid "debugger forward reference error, dbx type %d"
msgstr ""
-#: config/obj-vms.c:1825
+#: config/obj-vms.c:1793
#, c-format
msgid "Variable descriptor %d too complicated. Defined as `void *'."
msgstr ""
-#: config/obj-vms.c:2144
+#: config/obj-vms.c:2107
msgid ""
"***Warning - the assembly code generated by the compiler has placed \n"
" global constant(s) in the text psect. These will not be available to \n"
@@ -857,92 +874,92 @@ msgid ""
" I didn't warn you! \n"
msgstr ""
-#: config/obj-vms.c:2463
+#: config/obj-vms.c:2421
#, c-format
msgid "debugginer output: %d is an unknown untyped variable."
msgstr ""
-#: config/obj-vms.c:2681
+#: config/obj-vms.c:2639
#, c-format
msgid "debugger output: structure element `%s' has undefined type"
msgstr ""
-#: config/obj-vms.c:2792
+#: config/obj-vms.c:2750
#, c-format
msgid "debugger output: %d is an unknown type of variable."
msgstr ""
-#: config/obj-vms.c:2926
+#: config/obj-vms.c:2883
#, c-format
msgid "debugger output: Unable to resolve %d circular references."
msgstr ""
-#: config/obj-vms.c:3131
+#: config/obj-vms.c:3085
#, c-format
msgid "Module name truncated: %s\n"
msgstr ""
-#: config/obj-vms.c:3410
+#: config/obj-vms.c:3363
#, c-format
msgid "Symbol %s replaced by %s\n"
msgstr ""
#. impossible
-#: config/obj-vms.c:3694
+#: config/obj-vms.c:3646
#, c-format
msgid "Unknown VMS psect type (%ld)"
msgstr ""
-#: config/obj-vms.c:3735
+#: config/obj-vms.c:3687
#, c-format
msgid "Globalsymbol attribute for symbol %s was unexpected."
msgstr ""
-#: config/obj-vms.c:3885
+#: config/obj-vms.c:3836
msgid "Invalid data type for globalvalue"
msgstr ""
-#: config/obj-vms.c:3897
+#: config/obj-vms.c:3848
#, c-format
msgid "Invalid globalvalue of %s"
msgstr ""
-#: config/obj-vms.c:4247
+#: config/obj-vms.c:4198
msgid "Couldn't find fixup fragment when checking for indirect reference"
msgstr ""
-#: config/obj-vms.c:4591 config/obj-vms.c:4733
+#: config/obj-vms.c:4541 config/obj-vms.c:4682
msgid "Fixup data addsy and subsy don't have the same type"
msgstr ""
-#: config/obj-vms.c:4595 config/obj-vms.c:4737
+#: config/obj-vms.c:4545 config/obj-vms.c:4686
msgid "Fixup data addsy and subsy don't have an appropriate type"
msgstr ""
-#: config/obj-vms.c:4598 config/obj-vms.c:4740
+#: config/obj-vms.c:4548 config/obj-vms.c:4689
msgid "Fixup data is erroneously \"pcrel\""
msgstr ""
-#: config/obj-vms.c:4614 config/obj-vms.c:4759
+#: config/obj-vms.c:4564 config/obj-vms.c:4708
msgid "Fixup datum is not a longword"
msgstr ""
-#: config/obj-vms.c:4618 config/obj-vms.c:4763
+#: config/obj-vms.c:4568 config/obj-vms.c:4712
msgid "Fixup datum is not \"fixP->fx_addsy\""
msgstr ""
-#: config/obj-vms.c:4834
+#: config/obj-vms.c:4783
#, c-format
msgid ""
"g++ wrote an extern reference to `%s' as a routine.\n"
"I will fix it, but I hope that it was note really a routine."
msgstr ""
-#: config/obj-vms.c:4966
+#: config/obj-vms.c:4915
msgid "Can't handle global xtors symbols yet."
msgstr ""
-#: config/obj-vms.c:4969
+#: config/obj-vms.c:4918
#, c-format
msgid "Unknown %s"
msgstr ""
@@ -950,31 +967,32 @@ msgstr ""
#.
#. * Error otherwise.
#.
-#: config/obj-vms.c:5054
+#: config/obj-vms.c:5003
#, c-format
msgid "unhandled stab type %d"
msgstr ""
-#: config/tc-a29k.c:160 config/tc-sparc.c:3696
+#: config/tc-a29k.c:160 config/tc-sparc.c:3878
msgid "Unknown segment type"
msgstr ""
#. Probably a memory allocation problem? Give up now.
-#: config/tc-a29k.c:330 config/tc-hppa.c:1387 config/tc-i860.c:202
-#: config/tc-mips.c:1062 config/tc-mips.c:1104 config/tc-sparc.c:789
+#: config/tc-a29k.c:330 config/tc-hppa.c:1412 config/tc-mips.c:1030
+#: config/tc-mips.c:1072 config/tc-sparc.c:846
msgid "Broken assembler. No assembly attempted."
msgstr ""
-#: config/tc-a29k.c:375 config/tc-arc.c:535 config/tc-d10v.c:507
-#: config/tc-d30v.c:553 config/tc-h8300.c:305 config/tc-h8500.c:297
-#: config/tc-mcore.c:656 config/tc-mn10200.c:935 config/tc-mn10300.c:1294
-#: config/tc-ppc.c:1852 config/tc-sh.c:632 config/tc-tic80.c:291
-#: config/tc-v850.c:2033 config/tc-w65.c:257 config/tc-z8k.c:341
+#: config/tc-a29k.c:375 config/tc-avr.c:1124 config/tc-d10v.c:532
+#: config/tc-d30v.c:552 config/tc-h8300.c:296 config/tc-h8500.c:294
+#: config/tc-mcore.c:655 config/tc-mn10200.c:954 config/tc-mn10300.c:1335
+#: config/tc-ppc.c:1974 config/tc-sh.c:838 config/tc-tic80.c:282
+#: config/tc-v850.c:2076 config/tc-w65.c:248 config/tc-z8k.c:336
msgid "missing operand"
msgstr ""
-#: config/tc-a29k.c:415 config/tc-hppa.c:1533 config/tc-i860.c:407
-#: config/tc-i860.c:423 config/tc-sparc.c:1352 config/tc-sparc.c:1358
+#: config/tc-a29k.c:415 config/tc-cris.c:913 config/tc-cris.c:921
+#: config/tc-hppa.c:1545 config/tc-i860.c:431 config/tc-i860.c:448
+#: config/tc-sparc.c:1408 config/tc-sparc.c:1414
#, c-format
msgid "Unknown opcode: `%s'"
msgstr ""
@@ -994,64 +1012,64 @@ msgstr ""
msgid "Immediate value of %ld is too large"
msgstr ""
-#: config/tc-a29k.c:892 config/tc-i860.c:940
+#: config/tc-a29k.c:890
#, c-format
msgid "bad relocation type: 0x%02x"
msgstr ""
-#: config/tc-a29k.c:916
+#: config/tc-a29k.c:914
#, c-format
msgid "need %o3\n"
msgstr ""
-#: config/tc-a29k.c:932
+#: config/tc-a29k.c:930
msgid "a29k_convert_frag\n"
msgstr ""
-#: config/tc-a29k.c:941
+#: config/tc-a29k.c:939
msgid "a29k_estimate_size_before_relax\n"
msgstr ""
-#: config/tc-a29k.c:1092
+#: config/tc-a29k.c:1090
#, c-format
msgid "label \"$%d\" redefined"
msgstr ""
-#: config/tc-a29k.c:1165
+#: config/tc-a29k.c:1163
msgid "Invalid expression after %%%%\n"
msgstr ""
-#: config/tc-a29k.c:1176
+#: config/tc-a29k.c:1174
msgid "Invalid register in & expression"
msgstr ""
-#: config/tc-alpha.c:834
+#: config/tc-alpha.c:837
#, c-format
msgid "internal error: can't hash opcode `%s': %s"
msgstr ""
-#: config/tc-alpha.c:868
+#: config/tc-alpha.c:871
#, c-format
msgid "internal error: can't hash macro `%s': %s"
msgstr ""
-#: config/tc-alpha.c:951 config/tc-i960.c:2738
+#: config/tc-alpha.c:954 config/tc-i960.c:2700
msgid "syntax error"
msgstr ""
-#: config/tc-alpha.c:1025 config/tc-arm.c:5167 config/tc-h8300.c:1413
-#: config/tc-h8500.c:1222 config/tc-hppa.c:3904 config/tc-i860.c:813
-#: config/tc-m68k.c:4125 config/tc-m88k.c:1106 config/tc-ns32k.c:1589
-#: config/tc-sparc.c:2741 config/tc-z8k.c:1355
+#: config/tc-alpha.c:1028 config/tc-arm.c:6629 config/tc-h8300.c:1373
+#: config/tc-h8500.c:1197 config/tc-hppa.c:3939 config/tc-i860.c:931
+#: config/tc-m68hc11.c:478 config/tc-m68k.c:4179 config/tc-m88k.c:1105
+#: config/tc-ns32k.c:1663 config/tc-sparc.c:2830 config/tc-z8k.c:1324
msgid "Bad call to MD_ATOF()"
msgstr ""
-#: config/tc-alpha.c:1075
+#: config/tc-alpha.c:1078
#, c-format
msgid "Unknown CPU identifier `%s'"
msgstr ""
-#: config/tc-alpha.c:1119
+#: config/tc-alpha.c:1122
msgid ""
"Alpha options:\n"
"-32addr\t\t\ttreat addresses as 32-bit values\n"
@@ -1062,974 +1080,948 @@ msgid ""
"\t\t\tthese variants include PALcode opcodes\n"
msgstr ""
-#: config/tc-alpha.c:1129
+#: config/tc-alpha.c:1132
msgid ""
"VMS options:\n"
"-+\t\t\thash encode (don't truncate) names longer than 64 characters\n"
"-H\t\t\tshow new symbol after hash truncation\n"
msgstr ""
-#: config/tc-alpha.c:1298
+#: config/tc-alpha.c:1305
#, c-format
msgid "unhandled relocation type %s"
msgstr ""
-#: config/tc-alpha.c:1311
+#: config/tc-alpha.c:1318
msgid "non-absolute expression in constant field"
msgstr ""
-#: config/tc-alpha.c:1325
+#: config/tc-alpha.c:1332
#, c-format
msgid "type %d reloc done?\n"
msgstr ""
-#: config/tc-alpha.c:1376 config/tc-alpha.c:1383 config/tc-mips.c:7360
+#: config/tc-alpha.c:1383 config/tc-alpha.c:1390 config/tc-mips.c:7356
msgid "Used $at without \".set noat\""
msgstr ""
-#: config/tc-alpha.c:1561
+#: config/tc-alpha.c:1572
#, c-format
msgid "cannot represent `%s' relocation in object file"
msgstr ""
-#: config/tc-alpha.c:1568
+#: config/tc-alpha.c:1579
#, c-format
msgid "internal error? cannot generate `%s' relocation"
msgstr ""
-#: config/tc-alpha.c:1622
+#: config/tc-alpha.c:1633
#, c-format
msgid "frame reg expected, using $%d."
msgstr ""
-#: config/tc-alpha.c:1747
+#: config/tc-alpha.c:1758
#, c-format
msgid "No !literal!%d was found"
msgstr ""
#. only support one relocation op per insn
-#: config/tc-alpha.c:1935
+#: config/tc-alpha.c:1946
msgid "More than one relocation op per insn"
msgstr ""
-#: config/tc-alpha.c:1952
+#: config/tc-alpha.c:1963
msgid "No relocation operand"
msgstr ""
-#: config/tc-alpha.c:1958
+#: config/tc-alpha.c:1969
#, c-format
msgid "No !sequence-number after !%s"
msgstr ""
-#: config/tc-alpha.c:1971
+#: config/tc-alpha.c:1982
#, c-format
msgid "Unknown relocation operand: !%s"
msgstr ""
-#: config/tc-alpha.c:1984
+#: config/tc-alpha.c:1995
#, c-format
msgid "Bad sequence number: !%s!%s"
msgstr ""
-#: config/tc-alpha.c:2335
+#: config/tc-alpha.c:2346
#, c-format
msgid "operand out of range (%s not between %d and %d)"
msgstr ""
-#: config/tc-alpha.c:2434 config/tc-arc.c:548 config/tc-d10v.c:596
-#: config/tc-d30v.c:636 config/tc-mn10200.c:990 config/tc-mn10300.c:1365
-#: config/tc-ppc.c:1818 config/tc-ppc.c:1926 config/tc-ppc.c:1938
-#: config/tc-v850.c:1819 config/tc-v850.c:1842 config/tc-v850.c:2055
+#: config/tc-alpha.c:2445 config/tc-d10v.c:621 config/tc-d30v.c:640
+#: config/tc-mn10200.c:1009 config/tc-mn10300.c:1406 config/tc-ppc.c:1940
+#: config/tc-ppc.c:2048 config/tc-ppc.c:2060 config/tc-v850.c:1856
+#: config/tc-v850.c:1879 config/tc-v850.c:2099
msgid "too many fixups"
msgstr ""
-#: config/tc-alpha.c:2645 config/tc-alpha.c:2714
+#: config/tc-alpha.c:2660 config/tc-alpha.c:2729
#, c-format
msgid "inappropriate arguments for opcode `%s'"
msgstr ""
-#: config/tc-alpha.c:2647 config/tc-alpha.c:2716
+#: config/tc-alpha.c:2662 config/tc-alpha.c:2731
#, c-format
msgid "opcode `%s' not supported for target %s"
msgstr ""
-#: config/tc-alpha.c:2651 config/tc-alpha.c:2719
+#: config/tc-alpha.c:2666 config/tc-alpha.c:2734 config/tc-avr.c:1090
#, c-format
msgid "unknown opcode `%s'"
msgstr ""
-#: config/tc-alpha.c:2691 config/tc-alpha.c:2758 config/tc-alpha.c:3269
-#: config/tc-alpha.c:3329 config/tc-alpha.c:3381 config/tc-alpha.c:3456
-#: config/tc-alpha.c:3541 config/tc-alpha.c:3667 config/tc-alpha.c:3844
-#: config/tc-alpha.c:3901 config/tc-alpha.c:4011 config/tc-alpha.c:4118
-#: config/tc-alpha.c:4195
+#: config/tc-alpha.c:2706 config/tc-alpha.c:2773 config/tc-alpha.c:3284
+#: config/tc-alpha.c:3344 config/tc-alpha.c:3396 config/tc-alpha.c:3471
+#: config/tc-alpha.c:3556 config/tc-alpha.c:3682 config/tc-alpha.c:3859
+#: config/tc-alpha.c:3916 config/tc-alpha.c:4026 config/tc-alpha.c:4133
+#: config/tc-alpha.c:4210
#, c-format
msgid "Cannot use !%s!%d with %s"
msgstr ""
-#: config/tc-alpha.c:2779
+#: config/tc-alpha.c:2794
msgid "can not resolve expression"
msgstr ""
-#: config/tc-alpha.c:2921 config/tc-alpha.c:3113
+#: config/tc-alpha.c:2936 config/tc-alpha.c:3128
msgid "overflow in literal (.lita) table"
msgstr ""
-#: config/tc-alpha.c:2928 config/tc-alpha.c:2951 config/tc-alpha.c:3126
-#: config/tc-alpha.c:3470 config/tc-alpha.c:3548 config/tc-alpha.c:3596
-#: config/tc-alpha.c:3696 config/tc-alpha.c:3921 config/tc-alpha.c:4033
+#: config/tc-alpha.c:2943 config/tc-alpha.c:2966 config/tc-alpha.c:3141
+#: config/tc-alpha.c:3485 config/tc-alpha.c:3563 config/tc-alpha.c:3611
+#: config/tc-alpha.c:3711 config/tc-alpha.c:3936 config/tc-alpha.c:4048
msgid "macro requires $at register while noat in effect"
msgstr ""
-#: config/tc-alpha.c:2930 config/tc-alpha.c:2953 config/tc-alpha.c:3128
+#: config/tc-alpha.c:2945 config/tc-alpha.c:2968 config/tc-alpha.c:3143
msgid "macro requires $at while $at in use"
msgstr ""
-#: config/tc-alpha.c:3075 expr.c:86 read.c:3160
+#: config/tc-alpha.c:3090 expr.c:83 read.c:3164
msgid "bignum invalid; zero assumed"
msgstr ""
-#: config/tc-alpha.c:3077 expr.c:88 read.c:3162 read.c:3498 read.c:4396
+#: config/tc-alpha.c:3092 expr.c:85 read.c:3166 read.c:3499 read.c:4397
msgid "floating point number invalid; zero assumed"
msgstr ""
-#: config/tc-alpha.c:3082
+#: config/tc-alpha.c:3097
msgid "can't handle expression"
msgstr ""
-#: config/tc-alpha.c:3119
+#: config/tc-alpha.c:3134
msgid "overflow in literal (.lit8) table"
msgstr ""
-#: config/tc-alpha.c:3291
+#: config/tc-alpha.c:3306
#, c-format
-msgid "bad instruction format for lda !%s!%d"
+msgid "bad instruction format for lda !%s!%ld"
msgstr ""
-#: config/tc-alpha.c:4291 config/tc-ppc.c:1345 config/tc-ppc.c:3555
-#: read.c:1387
+#: config/tc-alpha.c:4306 config/tc-ppc.c:1467 config/tc-ppc.c:3689
+#: read.c:1369
#, c-format
msgid ".COMMon length (%ld.) <0! Ignored."
msgstr ""
-#: config/tc-alpha.c:4329 config/tc-alpha.c:4338 config/tc-ppc.c:3592
-#: read.c:1408
+#: config/tc-alpha.c:4344 config/tc-alpha.c:4353 config/tc-ppc.c:3726
+#: read.c:1393
#, c-format
msgid "Length of .comm \"%s\" is already %ld. Not changed to %ld."
msgstr ""
-#: config/tc-alpha.c:4440 ecoff.c:3109
+#: config/tc-alpha.c:4455 ecoff.c:3087
msgid ".ent directive has no name"
msgstr ""
-#: config/tc-alpha.c:4448
+#: config/tc-alpha.c:4463
msgid "nested .ent directives"
msgstr ""
-#: config/tc-alpha.c:4484 ecoff.c:3057
+#: config/tc-alpha.c:4499 ecoff.c:3035
msgid ".end directive has no name"
msgstr ""
-#: config/tc-alpha.c:4493
+#: config/tc-alpha.c:4508
msgid ".end directive names different symbol than .ent"
msgstr ""
-#: config/tc-alpha.c:4568
+#: config/tc-alpha.c:4585
#, c-format
msgid "Invalid argument %d to .prologue."
msgstr ""
-#: config/tc-alpha.c:4596
+#: config/tc-alpha.c:4677
msgid "ECOFF debugging is disabled."
msgstr ""
-#: config/tc-alpha.c:4617
+#: config/tc-alpha.c:4698
msgid "Unknown section directive"
msgstr ""
-#: config/tc-alpha.c:4654
+#: config/tc-alpha.c:4734
msgid ".ent directive has no symbol"
msgstr ""
-#: config/tc-alpha.c:4682
+#: config/tc-alpha.c:4761
msgid "Bad .frame directive 1./2. param"
msgstr ""
-#: config/tc-alpha.c:4694
+#: config/tc-alpha.c:4773
msgid "Bad .frame directive 3./4. param"
msgstr ""
-#: config/tc-alpha.c:4719
+#: config/tc-alpha.c:4798
msgid ".pdesc directive not in link (.link) section"
msgstr ""
-#: config/tc-alpha.c:4727
+#: config/tc-alpha.c:4806
msgid ".pdesc has no matching .ent"
msgstr ""
-#: config/tc-alpha.c:4738
+#: config/tc-alpha.c:4817
msgid ".pdesc directive has no entry symbol"
msgstr ""
-#: config/tc-alpha.c:4751
+#: config/tc-alpha.c:4830
msgid "No comma after .pdesc <entryname>"
msgstr ""
-#: config/tc-alpha.c:4774
+#: config/tc-alpha.c:4853
msgid "unknown procedure kind"
msgstr ""
-#: config/tc-alpha.c:4869
+#: config/tc-alpha.c:4947
msgid ".name directive not in link (.link) section"
msgstr ""
-#: config/tc-alpha.c:4877
+#: config/tc-alpha.c:4955
msgid ".name directive has no symbol"
msgstr ""
-#: config/tc-alpha.c:4912
+#: config/tc-alpha.c:4989
msgid "No symbol after .linkage"
msgstr ""
-#: config/tc-alpha.c:4941
+#: config/tc-alpha.c:5017
msgid "No symbol after .code_address"
msgstr ""
-#: config/tc-alpha.c:4976 ecoff.c:3274
+#: config/tc-alpha.c:5050 ecoff.c:3253
msgid "Bad .mask directive"
msgstr ""
-#: config/tc-alpha.c:4998 ecoff.c:3205
+#: config/tc-alpha.c:5071 ecoff.c:3183
msgid "Bad .fmask directive"
msgstr ""
-#: config/tc-alpha.c:5169 config/tc-arm.c:1325 read.c:2151 read.c:2731
-#: stabs.c:460
+#: config/tc-alpha.c:5241 config/tc-arm.c:1593 read.c:2150 read.c:2737
+#: stabs.c:464
#, c-format
msgid "Expected comma after name \"%s\""
msgstr ""
#. *symbol_get_obj (symbolP) = (signed char) temp;
-#: config/tc-alpha.c:5180
+#: config/tc-alpha.c:5252
#, c-format
msgid "unhandled: .proc %s,%d"
msgstr ""
-#: config/tc-alpha.c:5215
+#: config/tc-alpha.c:5287
#, c-format
msgid "Tried to .set unrecognized mode `%s'"
msgstr ""
#. not fatal, but it might not work in the end
-#: config/tc-alpha.c:5232
+#: config/tc-alpha.c:5304
msgid "File overrides no-base-register option."
msgstr ""
-#: config/tc-alpha.c:5249
+#: config/tc-alpha.c:5321
#, c-format
msgid "Bad base register, using $%d."
msgstr ""
-#: config/tc-alpha.c:5271
+#: config/tc-alpha.c:5343
#, c-format
msgid "Alignment too large: %d. assumed"
msgstr ""
-#: config/tc-alpha.c:5275 config/tc-d30v.c:2182
+#: config/tc-alpha.c:5347 config/tc-d30v.c:2219
msgid "Alignment negative: 0 assumed"
msgstr ""
-#: config/tc-alpha.c:5588
+#: config/tc-alpha.c:5662
#, c-format
msgid "Chose GP value of %lx\n"
msgstr ""
-#: config/tc-arc.c:137
-msgid ""
-"ARC options:\n"
-"-EB\t\t\tgenerate big endian output\n"
-"-EL\t\t\tgenerate little endian output\n"
-msgstr ""
-
-#: config/tc-arc.c:155 config/tc-arc.c:178 config/tc-arc.c:922
-#: config/tc-hppa.c:1347 config/tc-hppa.c:6734 config/tc-hppa.c:6740
-#: config/tc-hppa.c:6746 config/tc-hppa.c:6752 config/tc-mn10300.c:883
-#: config/tc-mn10300.c:1993
-msgid "could not set architecture and machine"
-msgstr ""
-
-#: config/tc-arc.c:175
-msgid "virtual memory exhausted"
-msgstr ""
-
-#: config/tc-arc.c:254 config/tc-mn10200.c:1354 config/tc-mn10300.c:1904
-#: config/tc-ppc.c:1102 config/tc-v850.c:1618
-#, c-format
-msgid "operand out of range (%s not between %ld and %ld)"
-msgstr ""
-
-#: config/tc-arc.c:389
-#, c-format
-msgid "unknown syntax format character `%c'"
-msgstr ""
-
-#: config/tc-arc.c:488
-msgid "too many suffixes"
-msgstr ""
-
-#: config/tc-arc.c:533 config/tc-d10v.c:505 config/tc-d30v.c:551
-#: config/tc-mn10200.c:932 config/tc-mn10300.c:1291 config/tc-ppc.c:1850
-#: config/tc-tic80.c:287 config/tc-v850.c:2030
-msgid "illegal operand"
-msgstr ""
-
-#: config/tc-arc.c:620 config/tc-mn10200.c:1031 config/tc-mn10300.c:1435
-#: config/tc-ppc.c:1975 config/tc-v850.c:2108
-#, c-format
-msgid "junk at end of line: `%s'"
-msgstr ""
-
-#: config/tc-arc.c:660
-msgid "8 byte instruction in delay slot"
-msgstr ""
-
-#: config/tc-arc.c:662
-msgid "8 byte jump instruction with delay slot"
-msgstr ""
-
-#: config/tc-arc.c:670
-msgid "conditional branch follows set of flags"
-msgstr ""
-
-#: config/tc-arc.c:749 config/tc-arm.c:6377
-#, c-format
-msgid "bad instruction `%s'"
-msgstr ""
-
-#: config/tc-arc.c:772
-msgid "expected comma after symbol-name"
-msgstr ""
-
-#: config/tc-arc.c:789
-msgid "ignoring attempt to re-define symbol"
-msgstr ""
-
-#: config/tc-arc.c:804
-msgid "expected comma after common length"
-msgstr ""
-
-#: config/tc-arc.c:897
-msgid ".cpu command must appear before any instructions"
-msgstr ""
-
-#: config/tc-arc.c:916
-msgid ".cpu conflicts with previous value"
-msgstr ""
-
-#: config/tc-arc.c:927
-msgid "bad .cpu op"
-msgstr ""
-
-#: config/tc-arc.c:951 config/tc-ppc.c:2623
-msgid "missing rename string"
-msgstr ""
-
-#: config/tc-arc.c:963
-msgid "invalid symbol to rename to"
+#: config/tc-arc.c:1618 config/tc-arm.c:7532
+msgid "md_estimate_size_before_relax\n"
msgstr ""
-#: config/tc-arc.c:1010 config/tc-d10v.c:284 config/tc-d30v.c:366
-#: config/tc-mips.c:8770 config/tc-mn10200.c:355 config/tc-pj.c:365
-#: config/tc-ppc.c:4384 config/tc-sh.c:1742 config/tc-v850.c:1276
-msgid "bad call to md_atof"
+#: config/tc-arc.c:1630
+msgid "md_convert_frag\n"
msgstr ""
-#: config/tc-arc.c:1097
-#, c-format
-msgid "missing ')' in %-op"
+#: config/tc-arm.c:1156
+msgid "Bad arguments to instruction"
msgstr ""
-#: config/tc-arc.c:1131
-msgid "expression too complex for %%st"
+#: config/tc-arm.c:1157
+msgid "r15 not allowed here"
msgstr ""
-#: config/tc-arc.c:1326 config/tc-arm.c:3142 config/tc-d10v.c:1475
-#: config/tc-d30v.c:1828 config/tc-mips.c:3250 config/tc-mips.c:4182
-#: config/tc-mips.c:4967 config/tc-mips.c:5513 config/tc-ppc.c:4720
-#: config/tc-v850.c:2338
-msgid "expression too complex"
+#: config/tc-arm.c:1158
+msgid "Instruction should not have flags"
msgstr ""
-#: config/tc-arc.c:1392 config/tc-ppc.c:4823 config/tc-v850.c:2382
-msgid "unresolved expression that must be resolved"
+#: config/tc-arm.c:1159
+msgid "Instruction is not conditional"
msgstr ""
-#: config/tc-arc.c:1457 config/tc-sparc.c:3203
-#, c-format
-msgid "internal error: can't export reloc type %d (`%s')"
+#: config/tc-arm.c:1160
+msgid "acc0 expected"
msgstr ""
-#: config/tc-arm.c:1023
+#: config/tc-arm.c:1289
msgid "Literal Pool Overflow"
msgstr ""
-#: config/tc-arm.c:1165
+#: config/tc-arm.c:1431
msgid "Invalid syntax for .req directive."
msgstr ""
-#: config/tc-arm.c:1237 config/tc-mips.c:9963 read.c:2040
+#: config/tc-arm.c:1506 config/tc-mips.c:9916 read.c:2035
#, c-format
msgid "Alignment too large: %d. assumed."
msgstr ""
-#: config/tc-arm.c:1240 read.c:2045
+#: config/tc-arm.c:1509 read.c:2040
msgid "Alignment negative. 0 assumed."
msgstr ""
-#: config/tc-arm.c:1374 config/tc-m32r.c:418 read.c:2790 read.c:4867
+#: config/tc-arm.c:1643 config/tc-m32r.c:417 read.c:2795 read.c:4857
#, c-format
msgid "symbol `%s' already defined"
msgstr ""
-#: config/tc-arm.c:1444
+#: config/tc-arm.c:1714
msgid "selected processor does not support THUMB opcodes"
msgstr ""
-#: config/tc-arm.c:1456
+#: config/tc-arm.c:1727
msgid "selected processor does not support ARM opcodes"
msgstr ""
-#: config/tc-arm.c:1465
+#: config/tc-arm.c:1739
#, c-format
msgid "invalid instruction size selected (%d)"
msgstr ""
-#: config/tc-arm.c:1500
+#: config/tc-arm.c:1774
#, c-format
msgid "invalid operand to .code directive (%d) (expecting 16 or 32)"
msgstr ""
-#: config/tc-arm.c:1511
+#: config/tc-arm.c:1785
msgid "Garbage following instruction"
msgstr ""
#. In the few cases where we might be able to accept something else
#. this error can be overridden.
-#: config/tc-arm.c:1560
+#: config/tc-arm.c:1835
#, c-format
msgid "Register expected, not '%.100s'"
msgstr ""
-#. In the few cases where we might be able to accept something else
-#. this error can be overridden.
-#: config/tc-arm.c:1586
-msgid "<psr(f)> expected"
+#. In the few cases where we might be able to accept
+#. something else this error can be overridden.
+#: config/tc-arm.c:1907
+msgid "flag for {c}psr instruction expected"
msgstr ""
-#: config/tc-arm.c:1616
+#: config/tc-arm.c:1937
msgid "Illegal co-processor number"
msgstr ""
-#: config/tc-arm.c:1623
+#: config/tc-arm.c:1944
msgid "Bad or missing co-processor number"
msgstr ""
-#: config/tc-arm.c:1647
+#: config/tc-arm.c:1968 config/tc-arm.c:3054 config/tc-arm.c:3246
msgid "bad or missing expression"
msgstr ""
-#: config/tc-arm.c:1653
+#: config/tc-arm.c:1974
msgid "immediate co-processor expression too large"
msgstr ""
#. In the few cases where we might be able to accept something else
#. this error can be overridden.
-#: config/tc-arm.c:1678
+#: config/tc-arm.c:1999
msgid "Co-processor register expected"
msgstr ""
#. In the few cases where we might be able to accept something else
#. this error can be overridden.
-#: config/tc-arm.c:1702
+#: config/tc-arm.c:2023
msgid "Floating point register expected"
msgstr ""
-#: config/tc-arm.c:1719
+#: config/tc-arm.c:2040
msgid "immediate expression expected"
msgstr ""
-#: config/tc-arm.c:1734
+#: config/tc-arm.c:2055
msgid "co-processor address must be word aligned"
msgstr ""
-#: config/tc-arm.c:1740
+#: config/tc-arm.c:2061
msgid "offset too large"
msgstr ""
-#: config/tc-arm.c:1788
+#: config/tc-arm.c:2109
msgid "pc may not be used in post-increment"
msgstr ""
-#: config/tc-arm.c:1804 config/tc-arm.c:2934
+#: config/tc-arm.c:2125 config/tc-arm.c:2578 config/tc-arm.c:3438
+#: config/tc-arm.c:4358
msgid "pre-indexed expression expected"
msgstr ""
-#: config/tc-arm.c:1817 config/tc-arm.c:2946 config/tc-arm.c:3288
+#: config/tc-arm.c:2138 config/tc-arm.c:2591 config/tc-arm.c:3449
+#: config/tc-arm.c:4370 config/tc-arm.c:4716
msgid "missing ]"
msgstr ""
-#: config/tc-arm.c:1827
+#: config/tc-arm.c:2148
msgid "pc may not be used with write-back"
msgstr ""
-#: config/tc-arm.c:1881
-msgid "<psr> expected"
+#: config/tc-arm.c:2203
+msgid "comma expected after register name"
msgstr ""
-#: config/tc-arm.c:1942 config/tc-arm.c:2556
-msgid "Register or shift expression expected"
+#: config/tc-arm.c:2222
+msgid "{C|S}PSR expected"
msgstr ""
-#: config/tc-arm.c:1956 config/tc-arm.c:2271 config/tc-arm.c:2523
-#: config/tc-arm.c:2543
-msgid "Invalid constant"
+#: config/tc-arm.c:2250
+msgid "comma missing after psr flags"
msgstr ""
-#: config/tc-arm.c:1967
-msgid "Error: unrecognised syntax for second argument to msr instruction"
+#: config/tc-arm.c:2267 config/tc-arm.c:2277
+msgid "only a register or immediate value can follow a psr flag"
msgstr ""
-#: config/tc-arm.c:2016
+#: config/tc-arm.c:2284
+msgid "immediate value cannot be used to set this field"
+msgstr ""
+
+#: config/tc-arm.c:2301 config/tc-arm.c:3673 config/tc-arm.c:3939
+#: config/tc-arm.c:3959
+msgid "Invalid constant"
+msgstr ""
+
+#: config/tc-arm.c:2351
msgid "rdhi, rdlo and rm must all be different"
msgstr ""
-#: config/tc-arm.c:2072
+#: config/tc-arm.c:2407
msgid "rd and rm should be different in mul"
msgstr ""
-#: config/tc-arm.c:2128
+#: config/tc-arm.c:2463
msgid "rd and rm should be different in mla"
msgstr ""
-#: config/tc-arm.c:2255
-msgid "bad_segment"
+#: config/tc-arm.c:2512
+#, c-format
+msgid "acc0 expected, not '%.100s'"
msgstr ""
-#: config/tc-arm.c:2301 config/tc-arm.c:2378
-msgid "Shift expression expected"
+#: config/tc-arm.c:2695
+msgid "rdhi and rdlo must be different"
msgstr ""
-#: config/tc-arm.c:2342
-msgid "Invalid immediate shift"
+#: config/tc-arm.c:2815
+msgid "Warning: Instruction unpredictable when using r15"
+msgstr ""
+
+#: config/tc-arm.c:3063 config/tc-arm.c:3255 config/tc-arm.c:5503
+#: config/tc-arm.c:5536 config/tc-arm.c:5546
+msgid "immediate value out of range"
+msgstr ""
+
+#: config/tc-arm.c:3403
+msgid "'[' expected after PLD mnemonic"
+msgstr ""
+
+#: config/tc-arm.c:3428 config/tc-arm.c:3458
+msgid "writeback used in preload instruction"
+msgstr ""
+
+#. Deny all knowledge.
+#: config/tc-arm.c:3506
+#, c-format
+msgid "bad instruction '%.100s'"
+msgstr ""
+
+#: config/tc-arm.c:3530
+msgid "Destination register must be even"
+msgstr ""
+
+#: config/tc-arm.c:3536
+msgid "r12 or r14 not allowed here"
+msgstr ""
+
+#: config/tc-arm.c:3544
+msgid "pre/post-indexing used when modified address register is destination"
+msgstr ""
+
+#: config/tc-arm.c:3657
+msgid "bad_segment"
+msgstr ""
+
+#: config/tc-arm.c:3703 config/tc-arm.c:3714
+msgid "Shift expression expected"
msgstr ""
-#: config/tc-arm.c:2371
+#: config/tc-arm.c:3738
msgid "shift requires register or #expression"
msgstr ""
-#: config/tc-arm.c:2372
+#: config/tc-arm.c:3739
msgid "shift requires #expression"
msgstr ""
-#: config/tc-arm.c:2514 config/tc-arm.c:2975
+#: config/tc-arm.c:3769
+msgid "Shift of 0 ignored."
+msgstr ""
+
+#: config/tc-arm.c:3775
+msgid "Invalid immediate shift"
+msgstr ""
+
+#: config/tc-arm.c:3930 config/tc-arm.c:4400
msgid "Constant expression expected"
msgstr ""
-#: config/tc-arm.c:2609
+#: config/tc-arm.c:3972
+msgid "Register or shift expression expected"
+msgstr ""
+
+#: config/tc-arm.c:4025
msgid "Invalid floating point immediate expression"
msgstr ""
-#: config/tc-arm.c:2612
+#: config/tc-arm.c:4029
msgid "Floating point register or immediate expression expected"
msgstr ""
-#: config/tc-arm.c:2781
+#: config/tc-arm.c:4198
msgid "address offset too large"
msgstr ""
-#: config/tc-arm.c:2853
+#: config/tc-arm.c:4275
msgid "Processor does not support halfwords or signed bytes"
msgstr ""
-#: config/tc-arm.c:2874
+#: config/tc-arm.c:4296
msgid "Address expected"
msgstr ""
-#: config/tc-arm.c:2904 config/tc-arm.c:2918 config/tc-arm.c:2955
+#: config/tc-arm.c:4326 config/tc-arm.c:4341 config/tc-arm.c:4379
#, c-format
msgid "%s register same as write-back base"
msgstr ""
-#: config/tc-arm.c:2905 config/tc-arm.c:2919 config/tc-arm.c:2956
+#: config/tc-arm.c:4328 config/tc-arm.c:4343 config/tc-arm.c:4381
msgid "destination"
msgstr ""
-#: config/tc-arm.c:2905 config/tc-arm.c:2919 config/tc-arm.c:2956
+#: config/tc-arm.c:4328 config/tc-arm.c:4343 config/tc-arm.c:4381
msgid "source"
msgstr ""
-#: config/tc-arm.c:2995
+#: config/tc-arm.c:4420
msgid "literal pool insertion failed"
msgstr ""
-#: config/tc-arm.c:3033
+#: config/tc-arm.c:4459
msgid "Pre-increment instruction with translate"
msgstr ""
-#: config/tc-arm.c:3074
+#: config/tc-arm.c:4500
msgid "Bad range in register list"
msgstr ""
-#: config/tc-arm.c:3082 config/tc-arm.c:3091 config/tc-arm.c:3132
+#: config/tc-arm.c:4508 config/tc-arm.c:4517 config/tc-arm.c:4559
#, c-format
msgid "Warning: Duplicated register (r%d) in register list"
msgstr ""
-#: config/tc-arm.c:3094
+#: config/tc-arm.c:4520
msgid "Warning: Register range not in ascending order"
msgstr ""
-#: config/tc-arm.c:3105
+#: config/tc-arm.c:4532
msgid "Missing `}'"
msgstr ""
-#: config/tc-arm.c:3121
+#: config/tc-arm.c:4548
msgid "invalid register mask"
msgstr ""
-#: config/tc-arm.c:3180
+#: config/tc-arm.c:4569 config/tc-avr.c:852 config/tc-cris.c:2733
+#: config/tc-d10v.c:1560 config/tc-d30v.c:1865 config/tc-mips.c:3230
+#: config/tc-mips.c:4162 config/tc-mips.c:4947 config/tc-mips.c:5493
+#: config/tc-ppc.c:4854 config/tc-v850.c:2385
+msgid "expression too complex"
+msgstr ""
+
+#: config/tc-arm.c:4608
msgid "r15 not allowed as base register"
msgstr ""
-#: config/tc-arm.c:3248 config/tc-arm.c:3262
+#: config/tc-arm.c:4676 config/tc-arm.c:4690
msgid "r15 not allowed in swap"
msgstr ""
-#: config/tc-arm.c:3615 config/tc-v850.c:1921 config/tc-v850.c:1942
+#: config/tc-arm.c:4788
+msgid "Use of r15 in bx in ARM mode is not really useful"
+msgstr ""
+
+#: config/tc-arm.c:5044 config/tc-v850.c:1959 config/tc-v850.c:1980
msgid "constant expression expected"
msgstr ""
-#: config/tc-arm.c:3621
+#: config/tc-arm.c:5050
msgid "Constant value required for number of registers"
msgstr ""
-#: config/tc-arm.c:3629
+#: config/tc-arm.c:5058
msgid "number of registers must be in the range [1:4]"
msgstr ""
-#: config/tc-arm.c:3689
+#: config/tc-arm.c:5119
msgid "R15 not allowed as base register with write-back"
msgstr ""
-#: config/tc-arm.c:3936
+#: config/tc-arm.c:5367
msgid "lo register required"
msgstr ""
-#: config/tc-arm.c:3944
+#: config/tc-arm.c:5375
msgid "hi register required"
msgstr ""
-#: config/tc-arm.c:4013
+#: config/tc-arm.c:5445
msgid "dest and source1 must be the same register"
msgstr ""
-#: config/tc-arm.c:4020
+#: config/tc-arm.c:5452
msgid "subtract valid only on lo regs"
msgstr ""
-#: config/tc-arm.c:4044
+#: config/tc-arm.c:5476
msgid "invalid Hi register with immediate"
msgstr ""
-#: config/tc-arm.c:4071 config/tc-arm.c:4104 config/tc-arm.c:4114
-msgid "immediate value out of range"
-msgstr ""
-
-#: config/tc-arm.c:4082
+#: config/tc-arm.c:5514
msgid "invalid immediate value for stack adjust"
msgstr ""
-#: config/tc-arm.c:4093
+#: config/tc-arm.c:5525
msgid "invalid immediate for address calculation"
msgstr ""
-#: config/tc-arm.c:4180
+#: config/tc-arm.c:5612
msgid "source1 and dest must be same register"
msgstr ""
-#: config/tc-arm.c:4215
+#: config/tc-arm.c:5646
msgid "Invalid immediate for shift"
msgstr ""
-#: config/tc-arm.c:4294
+#: config/tc-arm.c:5725
msgid "only lo regs allowed with immediate"
msgstr ""
-#: config/tc-arm.c:4313
+#: config/tc-arm.c:5744
msgid "invalid immediate"
msgstr ""
-#: config/tc-arm.c:4367
+#: config/tc-arm.c:5798
msgid "expected ']'"
msgstr ""
-#: config/tc-arm.c:4433
+#: config/tc-arm.c:5865
msgid "byte or halfword not valid for base register"
msgstr ""
-#: config/tc-arm.c:4438
+#: config/tc-arm.c:5870
msgid "R15 based store not allowed"
msgstr ""
-#: config/tc-arm.c:4443
+#: config/tc-arm.c:5875
msgid "Invalid base register for register offset"
msgstr ""
-#: config/tc-arm.c:4461
+#: config/tc-arm.c:5893
msgid "invalid offset"
msgstr ""
-#: config/tc-arm.c:4472
+#: config/tc-arm.c:5904
msgid "invalid base register in load/store"
msgstr ""
-#: config/tc-arm.c:4496
+#: config/tc-arm.c:5928
msgid "Invalid offset"
msgstr ""
-#: config/tc-arm.c:4570
+#: config/tc-arm.c:6003
msgid "dest and source1 one must be the same register"
msgstr ""
-#: config/tc-arm.c:4578
+#: config/tc-arm.c:6011
msgid "Rs and Rd must be different in MUL"
msgstr ""
-#: config/tc-arm.c:4722
+#: config/tc-arm.c:6155
msgid ""
"Inserted missing '!': load/store multiple always writes back base register"
msgstr ""
-#: config/tc-arm.c:4738 config/tc-arm.c:4838
+#: config/tc-arm.c:6171 config/tc-arm.c:6271
msgid "Expression too complex"
msgstr ""
-#: config/tc-arm.c:4744
+#: config/tc-arm.c:6177
msgid "only lo-regs valid in load/store multiple"
msgstr ""
-#: config/tc-arm.c:4790
+#: config/tc-arm.c:6223
msgid "Syntax: ldrs[b] Rd, [Rb, Ro]"
msgstr ""
-#: config/tc-arm.c:4854
+#: config/tc-arm.c:6287
msgid "invalid register list to push/pop instruction"
msgstr ""
-#: config/tc-arm.c:4996
+#: config/tc-arm.c:6429 config/tc-cris.c:664
msgid "Virtual memory exhausted"
msgstr ""
-#: config/tc-arm.c:5394
+#: config/tc-arm.c:6835
#, c-format
msgid "invalid constant (%lx) after fixup"
msgstr ""
-#: config/tc-arm.c:5428
+#: config/tc-arm.c:6871
#, c-format
-msgid "Unable to compute ADRL instructions for PC offset of 0x%x"
+msgid "Unable to compute ADRL instructions for PC offset of 0x%lx"
msgstr ""
-#: config/tc-arm.c:5456
+#: config/tc-arm.c:6901
#, c-format
msgid "bad immediate value for offset (%ld)"
msgstr ""
-#: config/tc-arm.c:5477 config/tc-arm.c:5499
+#: config/tc-arm.c:6923 config/tc-arm.c:6945
msgid "invalid literal constant: pool needs to be closer"
msgstr ""
-#: config/tc-arm.c:5479
+#: config/tc-arm.c:6925
#, c-format
msgid "bad immediate value for half-word offset (%ld)"
msgstr ""
-#: config/tc-arm.c:5516
+#: config/tc-arm.c:6962
msgid "shift expression is too large"
msgstr ""
-#: config/tc-arm.c:5534 config/tc-arm.c:5543
+#: config/tc-arm.c:6981 config/tc-arm.c:6990
msgid "Invalid swi expression"
msgstr ""
-#: config/tc-arm.c:5553
+#: config/tc-arm.c:7000
msgid "Invalid expression in load/store multiple"
msgstr ""
-#: config/tc-arm.c:5605
+#: config/tc-arm.c:7053
msgid "gas can't handle same-section branch dest >= 0x04000000"
msgstr ""
-#: config/tc-arm.c:5614
+#: config/tc-arm.c:7062
msgid "out of range branch"
msgstr ""
-#: config/tc-arm.c:5631 config/tc-arm.c:5647 config/tc-mips.c:9790
+#: config/tc-arm.c:7095 config/tc-arm.c:7111 config/tc-mips.c:9743
msgid "Branch out of range"
msgstr ""
-#: config/tc-arm.c:5669
+#: config/tc-arm.c:7134
msgid "Branch with link out of range"
msgstr ""
-#: config/tc-arm.c:5736
+#: config/tc-arm.c:7201
msgid "Illegal value for co-processor offset"
msgstr ""
-#: config/tc-arm.c:5759
+#: config/tc-arm.c:7225
#, c-format
msgid "Invalid offset, target not word aligned (0x%08X)"
msgstr ""
-#: config/tc-arm.c:5764 config/tc-arm.c:5773 config/tc-arm.c:5780
-#: config/tc-arm.c:5787 config/tc-arm.c:5794
+#: config/tc-arm.c:7231 config/tc-arm.c:7240 config/tc-arm.c:7247
+#: config/tc-arm.c:7254 config/tc-arm.c:7261
#, c-format
-msgid "Invalid offset, value too big (0x%08X)"
+msgid "Invalid offset, value too big (0x%08lX)"
msgstr ""
-#: config/tc-arm.c:5831
+#: config/tc-arm.c:7300
msgid "Invalid immediate for stack address calculation"
msgstr ""
-#: config/tc-arm.c:5840
+#: config/tc-arm.c:7309
#, c-format
msgid "Invalid immediate for address calculation (value = 0x%08lX)"
msgstr ""
-#: config/tc-arm.c:5850
+#: config/tc-arm.c:7319
msgid "Invalid 8bit immediate"
msgstr ""
-#: config/tc-arm.c:5858
+#: config/tc-arm.c:7327
msgid "Invalid 3bit immediate"
msgstr ""
-#: config/tc-arm.c:5874
+#: config/tc-arm.c:7343
#, c-format
msgid "Invalid immediate: %ld is too large"
msgstr ""
-#: config/tc-arm.c:5889
+#: config/tc-arm.c:7358
#, c-format
msgid "Illegal Thumb shift value: %ld"
msgstr ""
-#: config/tc-arm.c:5903
+#: config/tc-arm.c:7372 config/tc-mn10300.c:1961
#, c-format
msgid "Bad relocation fixup type (%d)"
msgstr ""
-#: config/tc-arm.c:5973
+#: config/tc-arm.c:7445
msgid "Literal referenced across section boundary (Implicit dump?)"
msgstr ""
-#: config/tc-arm.c:5986
+#: config/tc-arm.c:7458
#, c-format
msgid "Internal_relocation (type %d) not fixed up (IMMEDIATE)"
msgstr ""
-#: config/tc-arm.c:5992
+#: config/tc-arm.c:7464
msgid "ADRL used for a symbol not defined in the same file"
msgstr ""
-#: config/tc-arm.c:5998
+#: config/tc-arm.c:7469
#, c-format
msgid "Internal_relocation (type %d) not fixed up (OFFSET_IMM)"
msgstr ""
-#: config/tc-arm.c:6018 config/tc-mcore.c:2110 config/tc-ns32k.c:2283
+#: config/tc-arm.c:7490 config/tc-cris.c:2672 config/tc-mcore.c:2109
+#: config/tc-ns32k.c:2369
msgid "<unknown>"
msgstr ""
-#: config/tc-arm.c:6021
+#: config/tc-arm.c:7493
#, c-format
-msgid "Can not represent %s relocation in this object file format (%d)"
+msgid "Cannot represent %s relocation in this object file format"
msgstr ""
-#: config/tc-arm.c:6042 config/tc-mips.c:11281 config/tc-sh.c:2866
+#: config/tc-arm.c:7514 config/tc-mips.c:11261 config/tc-sh.c:3177
#, c-format
msgid "Can not represent %s relocation in this object file format"
msgstr ""
-#: config/tc-arm.c:6060
-msgid "md_estimate_size_before_relax\n"
-msgstr ""
-
-#: config/tc-arm.c:6135
+#: config/tc-arm.c:7611
#, c-format
msgid "No operator -- statement `%s'\n"
msgstr ""
-#: config/tc-arm.c:6153
+#: config/tc-arm.c:7629
msgid "selected processor does not support this opcode"
msgstr ""
-#: config/tc-arm.c:6197
+#: config/tc-arm.c:7675
#, c-format
msgid "Opcode `%s' must have suffix from list: <%s>"
msgstr ""
-#: config/tc-arm.c:6227
+#: config/tc-arm.c:7706
msgid "Warning: Use of the 'nv' conditional is deprecated\n"
msgstr ""
-#: config/tc-arm.c:6244
+#: config/tc-arm.c:7723
#, c-format
msgid "Opcode `%s' is unconditional\n"
msgstr ""
-#: config/tc-arm.c:6269
+#: config/tc-arm.c:7747
#, c-format
msgid "Opcode `%s' must have suffix from <%s>\n"
msgstr ""
-#: config/tc-arm.c:6355
+#: config/tc-arm.c:7838
#, c-format
msgid "register '%s' does not exist\n"
msgstr ""
-#: config/tc-arm.c:6360
+#: config/tc-arm.c:7843
#, c-format
msgid "ignoring redefinition of register alias '%s'"
msgstr ""
-#: config/tc-arm.c:6366
+#: config/tc-arm.c:7849
#, c-format
msgid ""
"ignoring redefinition of register alias '%s' to non-existant register '%s'"
msgstr ""
-#: config/tc-arm.c:6370
+#: config/tc-arm.c:7853
msgid "ignoring incomplete .req pseuso op"
msgstr ""
-#: config/tc-arm.c:6550
+#: config/tc-arm.c:7860
+#, c-format
+msgid "bad instruction `%s'"
+msgstr ""
+
+#: config/tc-arm.c:8035
#, c-format
msgid "Unrecognised APCS switch -m%s"
msgstr ""
-#: config/tc-arm.c:6693 config/tc-arm.c:6706 config/tc-arm.c:6719
-#: config/tc-arm.c:6732 config/tc-arm.c:6738
+#: config/tc-arm.c:8192 config/tc-arm.c:8205 config/tc-arm.c:8218
+#: config/tc-arm.c:8231 config/tc-arm.c:8237
#, c-format
msgid "Invalid architecture variant -m%s"
msgstr ""
-#: config/tc-arm.c:6745
+#: config/tc-arm.c:8244
#, c-format
msgid "Invalid processor variant -m%s"
msgstr ""
-#: config/tc-arm.c:6768
+#: config/tc-arm.c:8267
msgid ""
" ARM Specific Assembler Options:\n"
" -m[arm][<processor name>] select processor variant\n"
@@ -2045,134 +2037,477 @@ msgid ""
" -k generate PIC code.\n"
msgstr ""
-#: config/tc-arm.c:6780
+#: config/tc-arm.c:8279
msgid ""
" -mapcs-32, -mapcs-26 specify which ARM Procedure Calling Standard to "
"use\n"
+" -matpcs use ARM/Thumb Procedure Calling Standard\n"
" -mapcs-float floating point args are passed in FP regs\n"
" -mapcs-reentrant the code is position independent/reentrant\n"
msgstr ""
-#: config/tc-arm.c:6786
+#: config/tc-arm.c:8286
msgid " -moabi support the old ELF ABI\n"
msgstr ""
-#: config/tc-arm.c:6790
+#: config/tc-arm.c:8290
msgid ""
" -EB assemble code for a big endian cpu\n"
" -EL assemble code for a little endian cpu\n"
msgstr ""
-#: config/tc-arm.c:6939
+#: config/tc-arm.c:8443
#, c-format
msgid "%s: unexpected function type: %d"
msgstr ""
-#: config/tc-d10v.c:228
+#: config/tc-arm.h:98
+msgid "arm convert_frag\n"
+msgstr ""
+
+#: config/tc-avr.c:185
+msgid "Known MCU names:"
+msgstr ""
+
+#: config/tc-avr.c:254
+msgid ""
+"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"
+msgstr ""
+
+#: config/tc-avr.c:264
+msgid ""
+" -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"
+msgstr ""
+
+#: config/tc-avr.c:312
+#, c-format
+msgid "unknown MCU: %s\n"
+msgstr ""
+
+#: config/tc-avr.c:321
+#, c-format
+msgid "redefinition of mcu type `%s' to `%s'"
+msgstr ""
+
+#: config/tc-avr.c:372 config/tc-d10v.c:313 config/tc-d30v.c:366
+#: config/tc-mips.c:8789 config/tc-mn10200.c:375 config/tc-pj.c:356
+#: config/tc-ppc.c:4518 config/tc-sh.c:2058 config/tc-v850.c:1291
+msgid "bad call to md_atof"
+msgstr ""
+
+#: config/tc-avr.c:435
+msgid "constant value required"
+msgstr ""
+
+#: config/tc-avr.c:438
+#, c-format
+msgid "number must be less than %d"
+msgstr ""
+
+#: config/tc-avr.c:490
+msgid "`,' required"
+msgstr ""
+
+#: config/tc-avr.c:509
+msgid "undefined combination of operands"
+msgstr ""
+
+#: config/tc-avr.c:518
+msgid "skipping two-word instruction"
+msgstr ""
+
+#: config/tc-avr.c:580
+msgid "register r16-r23 required"
+msgstr ""
+
+#: config/tc-avr.c:586
+msgid "register number above 15 required"
+msgstr ""
+
+#: config/tc-avr.c:592
+msgid "even register number required"
+msgstr ""
+
+#: config/tc-avr.c:598
+msgid "register r24, r26, r28 or r30 required"
+msgstr ""
+
+#: config/tc-avr.c:604
+msgid "register name or number from 0 to 31 required"
+msgstr ""
+
+#: config/tc-avr.c:622
+msgid "pointer register (X, Y or Z) required"
+msgstr ""
+
+#: config/tc-avr.c:629
+msgid "cannot both predecrement and postincrement"
+msgstr ""
+
+#: config/tc-avr.c:637
+msgid "addressing mode not supported"
+msgstr ""
+
+#: config/tc-avr.c:643
+msgid "can't predecrement"
+msgstr ""
+
+#: config/tc-avr.c:646
+msgid "pointer register Z required"
+msgstr ""
+
+#: config/tc-avr.c:664
+msgid "pointer register (Y or Z) required"
+msgstr ""
+
+#: config/tc-avr.c:769
+#, c-format
+msgid "unknown constraint `%c'"
+msgstr ""
+
+#: config/tc-avr.c:882 config/tc-avr.c:898 config/tc-avr.c:999
+#, c-format
+msgid "odd address operand: %ld"
+msgstr ""
+
+#: config/tc-avr.c:890 config/tc-avr.c:909
+#, c-format
+msgid "operand out of range: %ld"
+msgstr ""
+
+#: config/tc-avr.c:1008 config/tc-d10v.c:1631 config/tc-d30v.c:1990
+#, c-format
+msgid "line %d: unknown relocation type: 0x%x"
+msgstr ""
+
+#: config/tc-avr.c:1022
+msgid "only constant expression allowed"
+msgstr ""
+
+#: config/tc-avr.c:1060 config/tc-d10v.c:1495 config/tc-d30v.c:1807
+#: config/tc-mn10200.c:1254 config/tc-mn10300.c:1810 config/tc-ppc.c:5161
+#: config/tc-v850.c:2301
+#, c-format
+msgid "reloc %d not supported by object file format"
+msgstr ""
+
+#: config/tc-avr.c:1084 config/tc-d10v.c:1102 config/tc-d10v.c:1116
+#: config/tc-h8300.c:1239 config/tc-h8500.c:1098 config/tc-mcore.c:988
+#: config/tc-pj.c:265 config/tc-sh.c:1640 config/tc-z8k.c:1195
+msgid "can't find opcode "
+msgstr ""
+
+#: config/tc-avr.c:1101
+#, c-format
+msgid "illegal opcode %s for mcu %s"
+msgstr ""
+
+#: config/tc-avr.c:1109
+msgid "garbage at end of line"
+msgstr ""
+
+#: config/tc-avr.c:1173
+msgid "illegal expression"
+msgstr ""
+
+#: config/tc-avr.c:1199 config/tc-avr.c:1265
+msgid "`)' required"
+msgstr ""
+
+#: config/tc-avr.c:1219
+#, c-format
+msgid "constant out of 8-bit range: %d"
+msgstr ""
+
+#: config/tc-avr.c:1222
+msgid "expression possibly out of 8-bit range"
+msgstr ""
+
+#: config/tc-avr.c:1293 config/tc-avr.c:1300
+#, c-format
+msgid "illegal %srelocation size: %d"
+msgstr ""
+
+#: config/tc-cris.c:672
+#, c-format
+msgid "Can't hash `%s': %s\n"
+msgstr ""
+
+#: config/tc-cris.c:673
+msgid "(unknown reason)"
+msgstr ""
+
+#: config/tc-cris.c:677
+#, c-format
+msgid "Buggy opcode: `%s' \"%s\"\n"
+msgstr ""
+
+#: config/tc-cris.c:1002
+#, c-format
+msgid "Immediate value not in 5 bit unsigned range: %ld"
+msgstr ""
+
+#: config/tc-cris.c:1018
+#, c-format
+msgid "Immediate value not in 4 bit unsigned range: %ld"
+msgstr ""
+
+#: config/tc-cris.c:1057
+#, c-format
+msgid "Immediate value not in 6 bit range: %ld"
+msgstr ""
+
+#: config/tc-cris.c:1072
+#, c-format
+msgid "Immediate value not in 6 bit unsigned range: %ld"
+msgstr ""
+
+#. Others have a generic warning.
+#: config/tc-cris.c:1159
+#, c-format
+msgid "Unimplemented register `%s' specified"
+msgstr ""
+
+#. We've come to the end of instructions with this
+#. opcode, so it must be an error.
+#: config/tc-cris.c:1309
+msgid "Illegal operands"
+msgstr ""
+
+#: config/tc-cris.c:1341 config/tc-cris.c:1372
+#, c-format
+msgid "Immediate value not in 8 bit range: %ld"
+msgstr ""
+
+#: config/tc-cris.c:1351 config/tc-cris.c:1379
+#, c-format
+msgid "Immediate value not in 16 bit range: %ld"
+msgstr ""
+
+#. FIXME: Find out and change to as_warn_where. Add testcase.
+#: config/tc-cris.c:2316
+msgid "32-bit conditional branch generated"
+msgstr ""
+
+#. FIXME: Is this function mentioned in the internals.texi manual? If
+#. not, add it.
+#: config/tc-cris.c:2395
+msgid "Bad call to md_atof () - floating point formats are not supported"
+msgstr ""
+
+#: config/tc-cris.c:2456
+#, c-format
+msgid "Value not in 16 bit range: %ld"
+msgstr ""
+
+#: config/tc-cris.c:2466
+#, c-format
+msgid "Value not in 8 bit range: %ld"
+msgstr ""
+
+#: config/tc-cris.c:2473
+#, c-format
+msgid "Value not in 4 bit unsigned range: %ld"
+msgstr ""
+
+#: config/tc-cris.c:2480
+#, c-format
+msgid "Value not in 5 bit unsigned range: %ld"
+msgstr ""
+
+#: config/tc-cris.c:2487
+#, c-format
+msgid "Value not in 6 bit range: %ld"
+msgstr ""
+
+#: config/tc-cris.c:2494
+#, c-format
+msgid "Value not in 6 bit unsigned range: %ld"
+msgstr ""
+
+#: config/tc-cris.c:2542
+msgid "Please use --help to see usage and options for this assembler.\n"
+msgstr ""
+
+#: config/tc-cris.c:2554
+msgid "--no-underscore is invalid with a.out format"
+msgstr ""
+
+#: config/tc-cris.c:2619
+msgid ""
+"Semantics error. This type of operand can not be relocated, it must be an "
+"assembly-time constant"
+msgstr ""
+
+#: config/tc-cris.c:2673
+#, c-format
+msgid "Cannot generate relocation type for symbol %s, code %s"
+msgstr ""
+
+#: config/tc-cris.c:2686
+msgid "CRIS-specific options:\n"
+msgstr ""
+
+#: config/tc-cris.c:2688
+msgid ""
+" -h, -H Don't execute, print this help text. Deprecated.\n"
+msgstr ""
+
+#: config/tc-cris.c:2690
+msgid " -N Warn when branches are expanded to jumps.\n"
+msgstr ""
+
+#: config/tc-cris.c:2692
+msgid ""
+" --underscore User symbols are normally prepended with "
+"underscore.\n"
+msgstr ""
+
+#: config/tc-cris.c:2694
+msgid " Registers will not need any prefix.\n"
+msgstr ""
+
+#: config/tc-cris.c:2696
+msgid " --no-underscore User symbols do not have any prefix.\n"
+msgstr ""
+
+#: config/tc-cris.c:2698
+msgid " Registers will require a `$'-prefix.\n"
+msgstr ""
+
+#: config/tc-cris.c:2718
+msgid "Invalid relocation"
+msgstr ""
+
+#: config/tc-cris.c:2758
+msgid "Invalid pc-relative relocation"
+msgstr ""
+
+#: config/tc-cris.c:2796
+#, c-format
+msgid "Adjusted signed .word (%ld) overflows: `switch'-statement too large."
+msgstr ""
+
+#: config/tc-cris.c:2870
+msgid "Unknown .syntax operand"
+msgstr ""
+
+#: config/tc-d10v.c:246
msgid ""
"D10V options:\n"
-"-O optimize. Will do some operations in parallel.\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"
msgstr ""
-#: config/tc-d10v.c:547 config/tc-d10v.c:629 config/tc-d30v.c:652
+#: config/tc-d10v.c:530 config/tc-d30v.c:550 config/tc-mn10200.c:951
+#: config/tc-mn10300.c:1332 config/tc-ppc.c:1972 config/tc-tic80.c:278
+#: config/tc-v850.c:2073
+msgid "illegal operand"
+msgstr ""
+
+#: config/tc-d10v.c:573 config/tc-d10v.c:655 config/tc-d30v.c:656
#, c-format
msgid "operand out of range: %d"
msgstr ""
-#: config/tc-d10v.c:690
+#: config/tc-d10v.c:716
msgid "Instruction must be executed in parallel with another instruction."
msgstr ""
-#: config/tc-d10v.c:742
+#: config/tc-d10v.c:772
msgid "Instruction must be executed in parallel"
msgstr ""
-#: config/tc-d10v.c:745
+#: config/tc-d10v.c:775
msgid "Long instructions may not be combined."
msgstr ""
-#: config/tc-d10v.c:785
+#: config/tc-d10v.c:817
msgid "One of these instructions may not be executed in parallel."
msgstr ""
-#: config/tc-d10v.c:790 config/tc-d30v.c:860
+#: config/tc-d10v.c:821 config/tc-d30v.c:877
msgid "Two IU instructions may not be executed in parallel"
msgstr ""
-#: config/tc-d10v.c:792 config/tc-d10v.c:800 config/tc-d10v.c:815
-#: config/tc-d10v.c:828 config/tc-d30v.c:861 config/tc-d30v.c:870
+#: config/tc-d10v.c:823 config/tc-d10v.c:831 config/tc-d10v.c:848
+#: config/tc-d10v.c:865 config/tc-d30v.c:878 config/tc-d30v.c:887
msgid "Swapping instruction order"
msgstr ""
-#: config/tc-d10v.c:798 config/tc-d30v.c:867
+#: config/tc-d10v.c:829 config/tc-d30v.c:884
msgid "Two MU instructions may not be executed in parallel"
msgstr ""
-#: config/tc-d10v.c:819 config/tc-d30v.c:886
+#: config/tc-d10v.c:852 config/tc-d30v.c:904
msgid "IU instruction may not be in the left container"
msgstr ""
-#: config/tc-d10v.c:832 config/tc-d30v.c:899
-msgid "MU instruction may not be in the right container"
+#: config/tc-d10v.c:854 config/tc-d10v.c:871
+msgid ""
+"Instruction in R container is squashed by flow control instruction in L "
+"container."
msgstr ""
-#: config/tc-d10v.c:836 config/tc-d30v.c:907
-msgid "unknown execution type passed to write_2_short()"
+#: config/tc-d10v.c:869 config/tc-d30v.c:915
+msgid "MU instruction may not be in the right container"
msgstr ""
-#: config/tc-d10v.c:1049 config/tc-d10v.c:1063 config/tc-h8300.c:1279
-#: config/tc-h8500.c:1122 config/tc-mcore.c:989 config/tc-pj.c:274
-#: config/tc-sh.c:1355 config/tc-z8k.c:1223
-msgid "can't find opcode "
+#: config/tc-d10v.c:877 config/tc-d30v.c:927
+msgid "unknown execution type passed to write_2_short()"
msgstr ""
-#: config/tc-d10v.c:1076 config/tc-d10v.c:1094 config/tc-d30v.c:1385
+#: config/tc-d10v.c:1130 config/tc-d10v.c:1151 config/tc-d30v.c:1411
msgid "Unable to mix instructions as specified"
msgstr ""
-#: config/tc-d10v.c:1142 config/tc-d30v.c:1520
+#: config/tc-d10v.c:1198 config/tc-d30v.c:1548
#, c-format
msgid "unknown opcode: %s"
msgstr ""
-#: config/tc-d10v.c:1223 config/tc-d10v.c:1369 config/tc-tic80.c:537
+#: config/tc-d10v.c:1280 config/tc-d10v.c:1451 config/tc-tic80.c:535
msgid "bad opcode or operands"
msgstr ""
-#: config/tc-d10v.c:1272 config/tc-m68k.c:4232
+#: config/tc-d10v.c:1353 config/tc-m68k.c:4286
msgid "value out of range"
msgstr ""
-#: config/tc-d10v.c:1344
+#: config/tc-d10v.c:1426
msgid "illegal operand - register name found where none expected"
msgstr ""
-#: config/tc-d10v.c:1380 config/tc-tic80.c:548
+#: config/tc-d10v.c:1462 config/tc-tic80.c:546
msgid "Register number must be EVEN"
msgstr ""
-#: config/tc-d10v.c:1412 config/tc-d30v.c:1772 config/tc-mn10200.c:1233
-#: config/tc-mn10300.c:1761 config/tc-ppc.c:5020 config/tc-v850.c:2255
-#, c-format
-msgid "reloc %d not supported by object file format"
-msgstr ""
-
-#: config/tc-d10v.c:1525
+#: config/tc-d10v.c:1611
#, c-format
msgid "line %d: rep or repi must include at least 4 instructions"
msgstr ""
-#: config/tc-d10v.c:1544 config/tc-d30v.c:1953
-#, c-format
-msgid "line %d: unknown relocation type: 0x%x"
-msgstr ""
-
-#: config/tc-d30v.c:191
+#: config/tc-d30v.c:192
#, c-format
msgid "Register name %s conflicts with symbol of the same name"
msgstr ""
-#: config/tc-d30v.c:289
+#: config/tc-d30v.c:288
msgid ""
"\n"
"D30V options:\n"
@@ -2185,112 +2520,126 @@ msgid ""
"-C Opposite of -C. -c is the default.\n"
msgstr ""
-#: config/tc-d30v.c:463
+#: config/tc-d30v.c:462
msgid "unexpected 12-bit reloc type"
msgstr ""
-#: config/tc-d30v.c:470
+#: config/tc-d30v.c:469
msgid "unexpected 18-bit reloc type"
msgstr ""
-#: config/tc-d30v.c:714
+#: config/tc-d30v.c:720
#, c-format
msgid "%s NOP inserted"
msgstr ""
-#: config/tc-d30v.c:715
+#: config/tc-d30v.c:721
msgid "sequential"
msgstr ""
-#: config/tc-d30v.c:715
+#: config/tc-d30v.c:721
msgid "parallel"
msgstr ""
-#: config/tc-d30v.c:856
+#: config/tc-d30v.c:873
msgid "Instructions may not be executed in parallel"
msgstr ""
-#: config/tc-d30v.c:869 config/tc-d30v.c:876 config/tc-d30v.c:892
-#: config/tc-d30v.c:901
+#: config/tc-d30v.c:886
#, c-format
msgid "Executing %s in IU may not work"
msgstr ""
-#: config/tc-d30v.c:888
+#: config/tc-d30v.c:893
+#, c-format
+msgid "Executing %s in IU may not work in parallel execution"
+msgstr ""
+
+#: config/tc-d30v.c:906
#, c-format
msgid "special left instruction `%s' kills instruction `%s' in right container"
msgstr ""
-#: config/tc-d30v.c:1267 config/tc-d30v.c:1284
+#: config/tc-d30v.c:917
+#, c-format
+msgid "Executing %s in reverse serial with %s may not work"
+msgstr ""
+
+#: config/tc-d30v.c:920
+#, c-format
+msgid "Executing %s in IU in reverse serial may not work"
+msgstr ""
+
+#: config/tc-d30v.c:1290 config/tc-d30v.c:1307
msgid "Cannot assemble instruction"
msgstr ""
-#: config/tc-d30v.c:1269
+#: config/tc-d30v.c:1292
msgid "First opcode is long. Unable to mix instructions as specified."
msgstr ""
-#: config/tc-d30v.c:1337
+#: config/tc-d30v.c:1361
msgid "word of NOPs added between word multiply and load"
msgstr ""
-#: config/tc-d30v.c:1339
+#: config/tc-d30v.c:1363
msgid "word of NOPs added between word multiply and 16-bit multiply"
msgstr ""
-#: config/tc-d30v.c:1369
+#: config/tc-d30v.c:1395
msgid "Instruction uses long version, so it cannot be mixed as specified"
msgstr ""
-#: config/tc-d30v.c:1453 config/tc-d30v.c:1490
+#: config/tc-d30v.c:1478 config/tc-d30v.c:1516
#, c-format
msgid "unknown condition code: %s"
msgstr ""
-#: config/tc-d30v.c:1483
+#: config/tc-d30v.c:1509
#, c-format
msgid "cmpu doesn't support condition code %s"
msgstr ""
-#: config/tc-d30v.c:1531
+#: config/tc-d30v.c:1559
#, c-format
msgid "operands for opcode `%s' do not match any valid format"
msgstr ""
-#: config/tc-d30v.c:1744
+#: config/tc-d30v.c:1777
msgid "Odd numbered register used as target of multi-register instruction"
msgstr ""
-#: config/tc-d30v.c:1842
+#: config/tc-d30v.c:1879
#, c-format
msgid "line %d: unable to place address of symbol '%s' into a byte"
msgstr ""
-#: config/tc-d30v.c:1845
+#: config/tc-d30v.c:1882
#, c-format
msgid "line %d: unable to place value %x into a byte"
msgstr ""
-#: config/tc-d30v.c:1853
+#: config/tc-d30v.c:1890
#, c-format
msgid "line %d: unable to place address of symbol '%s' into a short"
msgstr ""
-#: config/tc-d30v.c:1856
+#: config/tc-d30v.c:1893
#, c-format
msgid "line %d: unable to place value %x into a short"
msgstr ""
-#: config/tc-d30v.c:1864
+#: config/tc-d30v.c:1901
#, c-format
msgid "line %d: unable to place address of symbol '%s' into a quad"
msgstr ""
-#: config/tc-d30v.c:2034
+#: config/tc-d30v.c:2072
#, c-format
msgid "value too large to fit in %d bits"
msgstr ""
-#: config/tc-d30v.c:2178
+#: config/tc-d30v.c:2215
#, c-format
msgid "Alignment too large: %d assumed"
msgstr ""
@@ -2304,984 +2653,1144 @@ msgstr ""
msgid "Instruction %s not allowed in a delay slot."
msgstr ""
-#: config/tc-fr30.c:380 config/tc-m32r.c:1537
+#: config/tc-fr30.c:380 config/tc-m32r.c:1555
msgid "Addend to unresolved symbol not on word boundary."
msgstr ""
-#: config/tc-fr30.c:538 config/tc-i960.c:786 config/tc-m32r.c:1844
+#: config/tc-fr30.c:538 config/tc-i960.c:772 config/tc-m32r.c:1864
msgid "Bad call to md_atof()"
msgstr ""
-#: config/tc-h8300.c:254 config/tc-h8300.c:262
+#: config/tc-h8300.c:245 config/tc-h8300.c:253
msgid "Reg not valid for H8/300"
msgstr ""
-#: config/tc-h8300.c:423 config/tc-h8300.c:426 config/tc-h8300.c:429
-#: config/tc-h8300.c:433
+#: config/tc-h8300.c:413 config/tc-h8300.c:416 config/tc-h8300.c:419
+#: config/tc-h8300.c:423
msgid "Invalid register list for ldm/stm\n"
msgstr ""
-#: config/tc-h8300.c:490 config/tc-h8300.c:553 config/tc-h8300.c:560
+#: config/tc-h8300.c:475 config/tc-h8300.c:537 config/tc-h8300.c:544
msgid "Wrong size pointer register for architecture."
msgstr ""
-#: config/tc-h8300.c:518 config/tc-h8300.c:527 config/tc-h8300.c:537
+#: config/tc-h8300.c:502 config/tc-h8300.c:511 config/tc-h8300.c:521
msgid "expected @(exp, reg16)"
msgstr ""
-#: config/tc-h8300.c:617
+#: config/tc-h8300.c:600
msgid "expect :8 or :16 here"
msgstr ""
-#: config/tc-h8300.c:823
+#: config/tc-h8300.c:801
#, c-format
msgid "operand %s0x%lx out of range."
msgstr ""
-#: config/tc-h8300.c:910
+#: config/tc-h8300.c:889
msgid "Can't work out size of operand.\n"
msgstr ""
-#: config/tc-h8300.c:964
+#: config/tc-h8300.c:937
#, c-format
msgid "Opcode `%s' with these operand types not available in H8/300 mode"
msgstr ""
-#: config/tc-h8300.c:1016 config/tc-h8300.c:1036
+#: config/tc-h8300.c:988 config/tc-h8300.c:1008
msgid "Need #1 or #2 here"
msgstr ""
-#: config/tc-h8300.c:1031
+#: config/tc-h8300.c:1003
msgid "#4 not valid on H8/300."
msgstr ""
-#: config/tc-h8300.c:1112 config/tc-h8300.c:1150
+#: config/tc-h8300.c:1089 config/tc-h8300.c:1121
#, c-format
msgid "branch operand has odd offset (%lx)\n"
msgstr ""
-#: config/tc-h8300.c:1191
+#: config/tc-h8300.c:1159
msgid "destination operand must be 16 bit register"
msgstr ""
-#: config/tc-h8300.c:1201
+#: config/tc-h8300.c:1168
msgid "source operand must be 8 bit register"
msgstr ""
-#: config/tc-h8300.c:1209
+#: config/tc-h8300.c:1176
msgid "destination operand must be 16bit absolute address"
msgstr ""
-#: config/tc-h8300.c:1216
+#: config/tc-h8300.c:1183
msgid "destination operand must be 8 bit register"
msgstr ""
-#: config/tc-h8300.c:1225
+#: config/tc-h8300.c:1191
msgid "source operand must be 16bit absolute address"
msgstr ""
-#: config/tc-h8300.c:1233
+#: config/tc-h8300.c:1199
msgid "invalid operands"
msgstr ""
-#: config/tc-h8300.c:1290 config/tc-h8500.c:1129 config/tc-mips.c:7966
-#: config/tc-sh.c:1584 config/tc-w65.c:759 config/tc-z8k.c:1235
+#: config/tc-h8300.c:1250 config/tc-h8500.c:1104 config/tc-mips.c:7984
+#: config/tc-sh.c:1877 config/tc-w65.c:740 config/tc-z8k.c:1205
msgid "unknown opcode"
msgstr ""
-#: config/tc-h8300.c:1336
+#: config/tc-h8300.c:1296
msgid "mismatch between opcode size and operand size"
msgstr ""
-#: config/tc-h8300.c:1348 config/tc-h8500.c:1157 config/tc-sh.c:1698
-#: config/tc-w65.c:791 config/tc-z8k.c:1290
+#: config/tc-h8300.c:1307 config/tc-h8500.c:1131 config/tc-sh.c:2013
+#: config/tc-w65.c:770 config/tc-z8k.c:1258
msgid "call to tc_crawl_symbol_chain \n"
msgstr ""
-#: config/tc-h8300.c:1362 config/tc-h8500.c:1171 config/tc-sh.c:1705
-#: config/tc-w65.c:805 config/tc-z8k.c:1304
+#: config/tc-h8300.c:1321 config/tc-h8500.c:1145 config/tc-sh.c:2020
+#: config/tc-w65.c:784 config/tc-z8k.c:1272
msgid "call to tc_headers_hook \n"
msgstr ""
-#: config/tc-h8300.c:1451 config/tc-h8500.c:1260 config/tc-z8k.c:1415
+#: config/tc-h8300.c:1412 config/tc-h8500.c:1235 config/tc-z8k.c:1386
msgid "call to tc_aout_fix_to_chars \n"
msgstr ""
-#: config/tc-h8300.c:1461 config/tc-z8k.c:1425
+#: config/tc-h8300.c:1422 config/tc-z8k.c:1396
msgid "call to md_convert_frag \n"
msgstr ""
-#: config/tc-h8300.c:1506 config/tc-z8k.c:1500
+#: config/tc-h8300.c:1467 config/tc-z8k.c:1477
msgid "call tomd_estimate_size_before_relax \n"
msgstr ""
-#: config/tc-h8500.c:337
+#: config/tc-h8500.c:333
msgid ":24 not valid for this opcode"
msgstr ""
-#: config/tc-h8500.c:344
+#: config/tc-h8500.c:340
msgid "expect :8,:16 or :24"
msgstr ""
-#: config/tc-h8500.c:401
+#: config/tc-h8500.c:397
msgid "syntax error in reg list"
msgstr ""
-#: config/tc-h8500.c:419
+#: config/tc-h8500.c:415
msgid "missing final register in range"
msgstr ""
-#: config/tc-h8500.c:506 config/tc-h8500.c:513 config/tc-h8500.c:519
+#: config/tc-h8500.c:502 config/tc-h8500.c:509 config/tc-h8500.c:515
msgid "expected @(exp, Rn)"
msgstr ""
-#: config/tc-h8500.c:535
+#: config/tc-h8500.c:531
msgid "@Rn+ needs word register"
msgstr ""
-#: config/tc-h8500.c:545
+#: config/tc-h8500.c:541
msgid "@Rn needs word register"
msgstr ""
-#: config/tc-h8500.c:845 config/tc-sh.c:1149
+#: config/tc-h8500.c:838 config/tc-sh.c:1357
#, c-format
msgid "unhandled %d\n"
msgstr ""
-#: config/tc-h8500.c:873 config/tc-sh.c:1173
+#: config/tc-h8500.c:866 config/tc-sh.c:1382
#, c-format
msgid "operand must be absolute in range %d..%d"
msgstr ""
-#: config/tc-h8500.c:963 config/tc-sh.c:1299
+#: config/tc-h8500.c:955 config/tc-sh.c:1580
#, c-format
msgid "failed for %d\n"
msgstr ""
-#: config/tc-h8500.c:1145 config/tc-sh.c:1394 config/tc-sh.c:1632
-#: config/tc-w65.c:779
+#: config/tc-h8500.c:1120 config/tc-sh.c:1681 config/tc-sh.c:1926
+#: config/tc-w65.c:759
msgid "invalid operands for opcode"
msgstr ""
-#: config/tc-hppa.c:1140
+#. Simple range checking for FIELD againt HIGH and LOW bounds.
+#. IGNORE is used to suppress the error message.
+#: config/tc-hppa.c:1119
+#, c-format
+msgid "Field out of range [%d..%d] (%d)."
+msgstr ""
+
+#. Simple alignment checking for FIELD againt ALIGN (a power of two).
+#. IGNORE is used to suppress the error message.
+#: config/tc-hppa.c:1133
+#, c-format
+msgid "Field not properly aligned [%d] (%d)."
+msgstr ""
+
+#: config/tc-hppa.c:1162
msgid "Missing .exit\n"
msgstr ""
-#: config/tc-hppa.c:1143
+#: config/tc-hppa.c:1165
msgid "Missing .procend\n"
msgstr ""
-#: config/tc-hppa.c:1322
+#: config/tc-hppa.c:1345
msgid "Invalid field selector. Assuming F%%."
msgstr ""
-#: config/tc-hppa.c:1353
+#: config/tc-hppa.c:1372 config/tc-hppa.c:6839 config/tc-hppa.c:6845
+#: config/tc-hppa.c:6851 config/tc-hppa.c:6857 config/tc-mn10300.c:924
+#: config/tc-mn10300.c:2133
+msgid "could not set architecture and machine"
+msgstr ""
+
+#: config/tc-hppa.c:1378
msgid "-R option not supported on this target."
msgstr ""
-#: config/tc-hppa.c:1369 config/tc-sparc.c:746 config/tc-sparc.c:781
+#: config/tc-hppa.c:1394 config/tc-sparc.c:802 config/tc-sparc.c:838
#, c-format
msgid "Internal error: can't hash `%s': %s\n"
msgstr ""
-#: config/tc-hppa.c:1377 config/tc-i860.c:191
+#: config/tc-hppa.c:1402 config/tc-i860.c:190
#, c-format
msgid "internal error: losing opcode: `%s' \"%s\"\n"
msgstr ""
-#: config/tc-hppa.c:1446 config/tc-hppa.c:6873 config/tc-hppa.c:6928
+#: config/tc-hppa.c:1471 config/tc-hppa.c:6978 config/tc-hppa.c:7033
msgid "Missing function name for .PROC (corrupted label chain)"
msgstr ""
-#: config/tc-hppa.c:1449 config/tc-hppa.c:6931
+#: config/tc-hppa.c:1474 config/tc-hppa.c:7036
msgid "Missing function name for .PROC"
msgstr ""
-#: config/tc-hppa.c:1570 config/tc-hppa.c:4715
+#: config/tc-hppa.c:1582 config/tc-hppa.c:4812
msgid "could not update architecture and machine"
msgstr ""
-#: config/tc-hppa.c:1783
+#: config/tc-hppa.c:1789
msgid "Invalid Indexed Load Completer."
msgstr ""
-#: config/tc-hppa.c:1788
+#: config/tc-hppa.c:1794
msgid "Invalid Indexed Load Completer Syntax."
msgstr ""
-#: config/tc-hppa.c:1824
+#: config/tc-hppa.c:1830
msgid "Invalid Short Load/Store Completer."
msgstr ""
-#: config/tc-hppa.c:1883 config/tc-hppa.c:1888
+#: config/tc-hppa.c:1889 config/tc-hppa.c:1894
msgid "Invalid Store Bytes Short Completer"
msgstr ""
-#: config/tc-hppa.c:2199 config/tc-hppa.c:2205
+#: config/tc-hppa.c:2205 config/tc-hppa.c:2211
msgid "Invalid left/right combination completer"
msgstr ""
-#: config/tc-hppa.c:2254 config/tc-hppa.c:2261
+#: config/tc-hppa.c:2260 config/tc-hppa.c:2267
msgid "Invalid permutation completer"
msgstr ""
-#: config/tc-hppa.c:2362
+#: config/tc-hppa.c:2368
#, c-format
msgid "Invalid Add Condition: %s"
msgstr ""
-#: config/tc-hppa.c:2373 config/tc-hppa.c:2383
+#: config/tc-hppa.c:2379 config/tc-hppa.c:2389
#, c-format
msgid "Invalid Add and Branch Condition: %c"
msgstr ""
-#: config/tc-hppa.c:2404
+#: config/tc-hppa.c:2410
msgid "Invalid Compare/Subtract Condition"
msgstr ""
-#: config/tc-hppa.c:2444
+#: config/tc-hppa.c:2450
#, c-format
msgid "Invalid Bit Branch Condition: %c"
msgstr ""
-#: config/tc-hppa.c:2530
+#: config/tc-hppa.c:2536
#, c-format
msgid "Invalid Compare/Subtract Condition: %s"
msgstr ""
-#: config/tc-hppa.c:2542
+#: config/tc-hppa.c:2548
#, c-format
msgid "Invalid Compare/Subtract Condition: %c"
msgstr ""
-#: config/tc-hppa.c:2557
+#: config/tc-hppa.c:2563
msgid "Invalid Compare and Branch Condition."
msgstr ""
-#: config/tc-hppa.c:2655
+#: config/tc-hppa.c:2659
msgid "Invalid Logical Instruction Condition."
msgstr ""
-#: config/tc-hppa.c:2711
+#: config/tc-hppa.c:2714
msgid "Invalid Shift/Extract/Deposit Condition."
msgstr ""
-#: config/tc-hppa.c:2823
+#: config/tc-hppa.c:2826
msgid "Invalid Unit Instruction Condition."
msgstr ""
-#: config/tc-hppa.c:3096 config/tc-hppa.c:3129 config/tc-hppa.c:3166
-#: config/tc-hppa.c:3205
+#: config/tc-hppa.c:3174 config/tc-hppa.c:3205 config/tc-hppa.c:3238
+#: config/tc-hppa.c:3270
msgid "Branch to unaligned address"
msgstr ""
-#: config/tc-hppa.c:3389
+#: config/tc-hppa.c:3450
msgid "Invalid SFU identifier"
msgstr ""
-#: config/tc-hppa.c:3439
+#: config/tc-hppa.c:3500
msgid "Invalid COPR identifier"
msgstr ""
-#: config/tc-hppa.c:3568
+#: config/tc-hppa.c:3629
msgid "Invalid Floating Point Operand Format."
msgstr ""
-#: config/tc-hppa.c:3706 config/tc-hppa.c:3730 config/tc-hppa.c:3753
-#: config/tc-hppa.c:3776 config/tc-hppa.c:3799
+#: config/tc-hppa.c:3746 config/tc-hppa.c:3766 config/tc-hppa.c:3786
+#: config/tc-hppa.c:3806 config/tc-hppa.c:3826
msgid "Invalid register for single precision fmpyadd or fmpysub"
msgstr ""
-#: config/tc-hppa.c:3848
+#: config/tc-hppa.c:3883
#, c-format
msgid "Invalid operands %s"
msgstr ""
-#: config/tc-hppa.c:4415
-msgid "Unknown relocation encountered in md_apply_fix."
+#: config/tc-hppa.c:4001
+#, c-format
+msgid "Cannot handle fixup at %s:%d"
+msgstr ""
+
+#: config/tc-hppa.c:4296
+msgid " -Q ignored\n"
+msgstr ""
+
+#: config/tc-hppa.c:4300
+msgid " -c print a warning if a comment is found\n"
msgstr ""
-#: config/tc-hppa.c:4425
+#: config/tc-hppa.c:4366
#, c-format
-msgid "no hppa_fixup entry for this fixup (fixP = 0x%x, type = 0x%x)\n"
+msgid "no hppa_fixup entry for fixup type 0x%x at %s:%d"
msgstr ""
-#: config/tc-hppa.c:4567 config/tc-hppa.c:4592
+#: config/tc-hppa.c:4533
+msgid "Unknown relocation encountered in md_apply_fix."
+msgstr ""
+
+#: config/tc-hppa.c:4676 config/tc-hppa.c:4701
#, c-format
msgid "Undefined register: '%s'."
msgstr ""
-#: config/tc-hppa.c:4630
+#: config/tc-hppa.c:4735
#, c-format
msgid "Non-absolute symbol: '%s'."
msgstr ""
-#: config/tc-hppa.c:4645
+#: config/tc-hppa.c:4750
#, c-format
msgid "Undefined absolute constant: '%s'."
msgstr ""
-#: config/tc-hppa.c:4754
+#: config/tc-hppa.c:4851
#, c-format
msgid "Invalid FP Compare Condition: %s"
msgstr ""
-#: config/tc-hppa.c:4810
+#: config/tc-hppa.c:4907
#, c-format
msgid "Invalid FTEST completer: %s"
msgstr ""
-#: config/tc-hppa.c:4877 config/tc-hppa.c:4915
+#: config/tc-hppa.c:4974 config/tc-hppa.c:5012
#, c-format
msgid "Invalid FP Operand Format: %3s"
msgstr ""
-#: config/tc-hppa.c:4994
+#: config/tc-hppa.c:5091
msgid "Bad segment in expression."
msgstr ""
-#: config/tc-hppa.c:5053
+#: config/tc-hppa.c:5150
msgid "Bad segment (should be absolute)."
msgstr ""
-#: config/tc-hppa.c:5152
+#: config/tc-hppa.c:5193
#, c-format
msgid "Invalid argument location: %s\n"
msgstr ""
-#: config/tc-hppa.c:5183
+#: config/tc-hppa.c:5224
#, c-format
msgid "Invalid argument description: %d"
msgstr ""
-#: config/tc-hppa.c:5206
+#: config/tc-hppa.c:5247
#, c-format
msgid "Invalid Nullification: (%c)"
msgstr ""
-#: config/tc-hppa.c:5950
+#: config/tc-hppa.c:5983
#, c-format
msgid "Invalid .CALL argument: %s"
msgstr ""
-#: config/tc-hppa.c:6082
+#: config/tc-hppa.c:6114
msgid ".callinfo is not within a procedure definition"
msgstr ""
-#: config/tc-hppa.c:6102
+#: config/tc-hppa.c:6134
#, c-format
msgid "FRAME parameter must be a multiple of 8: %d\n"
msgstr ""
-#: config/tc-hppa.c:6121
+#: config/tc-hppa.c:6153
msgid "Value for ENTRY_GR must be in the range 3..18\n"
msgstr ""
-#: config/tc-hppa.c:6133
+#: config/tc-hppa.c:6165
msgid "Value for ENTRY_FR must be in the range 12..21\n"
msgstr ""
-#: config/tc-hppa.c:6143
+#: config/tc-hppa.c:6175
msgid "Value for ENTRY_SR must be 3\n"
msgstr ""
-#: config/tc-hppa.c:6199
+#: config/tc-hppa.c:6231
#, c-format
msgid "Invalid .CALLINFO argument: %s"
msgstr ""
-#: config/tc-hppa.c:6293
+#: config/tc-hppa.c:6342
msgid "The .ENTER pseudo-op is not supported"
msgstr ""
-#: config/tc-hppa.c:6309
+#: config/tc-hppa.c:6358
msgid "Misplaced .entry. Ignored."
msgstr ""
-#: config/tc-hppa.c:6313
+#: config/tc-hppa.c:6362
msgid "Missing .callinfo."
msgstr ""
-#: config/tc-hppa.c:6361
+#: config/tc-hppa.c:6426
+msgid ".REG expression must be a register"
+msgstr ""
+
+#: config/tc-hppa.c:6442 read.c:4728
+msgid "bad or irreducible absolute expression; zero assumed"
+msgstr ""
+
+#: config/tc-hppa.c:6453
msgid ".REG must use a label"
msgstr ""
-#: config/tc-hppa.c:6363
+#: config/tc-hppa.c:6455
msgid ".EQU must use a label"
msgstr ""
-#: config/tc-hppa.c:6416
+#: config/tc-hppa.c:6508
msgid ".EXIT must appear within a procedure"
msgstr ""
-#: config/tc-hppa.c:6420
+#: config/tc-hppa.c:6512
msgid "Missing .callinfo"
msgstr ""
-#: config/tc-hppa.c:6424
+#: config/tc-hppa.c:6516
msgid "No .ENTRY for this .EXIT"
msgstr ""
-#: config/tc-hppa.c:6451
+#: config/tc-hppa.c:6543
#, c-format
msgid "Cannot define export symbol: %s\n"
msgstr ""
-#: config/tc-hppa.c:6504
+#: config/tc-hppa.c:6601
#, c-format
msgid "Using ENTRY rather than CODE in export directive for %s"
msgstr ""
-#: config/tc-hppa.c:6613
+#: config/tc-hppa.c:6718
#, c-format
msgid "Undefined .EXPORT/.IMPORT argument (ignored): %s"
msgstr ""
-#: config/tc-hppa.c:6695
+#: config/tc-hppa.c:6800
msgid "Missing label name on .LABEL"
msgstr ""
-#: config/tc-hppa.c:6700
+#: config/tc-hppa.c:6805
msgid "extra .LABEL arguments ignored."
msgstr ""
-#: config/tc-hppa.c:6717
+#: config/tc-hppa.c:6822
msgid "The .LEAVE pseudo-op is not supported"
msgstr ""
-#: config/tc-hppa.c:6756
+#: config/tc-hppa.c:6861
msgid "Unrecognized .LEVEL argument\n"
msgstr ""
-#: config/tc-hppa.c:6792
+#: config/tc-hppa.c:6897
#, c-format
msgid "Cannot define static symbol: %s\n"
msgstr ""
-#: config/tc-hppa.c:6827
+#: config/tc-hppa.c:6932
msgid "Nested procedures"
msgstr ""
-#: config/tc-hppa.c:6837
+#: config/tc-hppa.c:6942
msgid "Cannot allocate unwind descriptor\n"
msgstr ""
-#: config/tc-hppa.c:6935
+#: config/tc-hppa.c:7040
msgid "misplaced .procend"
msgstr ""
-#: config/tc-hppa.c:6938
+#: config/tc-hppa.c:7043
msgid "Missing .callinfo for this procedure"
msgstr ""
-#: config/tc-hppa.c:6941
+#: config/tc-hppa.c:7046
msgid "Missing .EXIT for a .ENTRY"
msgstr ""
-#: config/tc-hppa.c:6980
+#: config/tc-hppa.c:7084
msgid "Not in a space.\n"
msgstr ""
-#: config/tc-hppa.c:6983
+#: config/tc-hppa.c:7087
msgid "Not in a subspace.\n"
msgstr ""
-#: config/tc-hppa.c:7073
+#: config/tc-hppa.c:7178
msgid "Invalid .SPACE argument"
msgstr ""
-#: config/tc-hppa.c:7121
+#: config/tc-hppa.c:7225
msgid "Can't change spaces within a procedure definition. Ignored"
msgstr ""
-#: config/tc-hppa.c:7248
+#: config/tc-hppa.c:7354
#, c-format
msgid "Undefined space: '%s' Assuming space number = 0."
msgstr ""
-#: config/tc-hppa.c:7272
+#: config/tc-hppa.c:7378
msgid "Must be in a space before changing or declaring subspaces.\n"
msgstr ""
-#: config/tc-hppa.c:7276
+#: config/tc-hppa.c:7382
msgid "Can't change subspaces within a procedure definition. Ignored"
msgstr ""
-#: config/tc-hppa.c:7311
+#: config/tc-hppa.c:7417
msgid "Parameters of an existing subspace can't be modified"
msgstr ""
-#: config/tc-hppa.c:7362
+#: config/tc-hppa.c:7468
msgid "Alignment must be a power of 2"
msgstr ""
-#: config/tc-hppa.c:7404
+#: config/tc-hppa.c:7510
msgid "FIRST not supported as a .SUBSPACE argument"
msgstr ""
-#: config/tc-hppa.c:7406
+#: config/tc-hppa.c:7512
msgid "Invalid .SUBSPACE argument"
msgstr ""
-#: config/tc-hppa.c:7589
+#: config/tc-hppa.c:7692
#, c-format
msgid "Internal error: Unable to find containing space for %s."
msgstr ""
-#: config/tc-hppa.c:7630
+#: config/tc-hppa.c:7731
#, c-format
msgid "Out of memory: could not allocate new space chain entry: %s\n"
msgstr ""
-#: config/tc-hppa.c:7716
+#: config/tc-hppa.c:7817
#, c-format
msgid "Out of memory: could not allocate new subspace chain entry: %s\n"
msgstr ""
-#: config/tc-hppa.c:8383
+#: config/tc-hppa.c:8511
#, c-format
msgid "Symbol '%s' could not be created."
msgstr ""
-#: config/tc-hppa.c:8387
+#: config/tc-hppa.c:8515
msgid "No memory for symbol name."
msgstr ""
-#: config/tc-i386.c:509
+#: config/tc-i386.c:581
+#, c-format
+msgid "%s shortened to %s"
+msgstr ""
+
+#: config/tc-i386.c:636
msgid "same type of prefix used twice"
msgstr ""
-#: config/tc-i386.c:552
+#: config/tc-i386.c:654
+msgid "64bit mode not supported on this CPU."
+msgstr ""
+
+#: config/tc-i386.c:658
+msgid "32bit mode not supported on this CPU."
+msgstr ""
+
+#: config/tc-i386.c:691
msgid "bad argument to syntax directive."
msgstr ""
-#: config/tc-i386.c:636 config/tc-m68k.c:3750
+#: config/tc-i386.c:734
+#, c-format
+msgid "no such architecture: `%s'"
+msgstr ""
+
+#: config/tc-i386.c:739
+msgid "missing cpu architecture"
+msgstr ""
+
+#: config/tc-i386.c:812 config/tc-i386.c:835 config/tc-m68k.c:3802
#, c-format
msgid "Internal Error: Can't hash %s: %s"
msgstr ""
-#: config/tc-i386.c:866
-msgid "Unknown"
+#: config/tc-i386.c:1088
+msgid "There are no unsigned pc-relative relocations"
msgstr ""
-#: config/tc-i386.c:914 config/tc-i386.c:4407
+#: config/tc-i386.c:1095 config/tc-i386.c:4622
#, c-format
msgid "can not do %d byte pc-relative relocation"
msgstr ""
-#: config/tc-i386.c:924 config/tc-i386.c:4421
+#: config/tc-i386.c:1112
#, c-format
-msgid "can not do %d byte relocation"
+msgid "can not do %s %d byte relocation"
msgstr ""
-#: config/tc-i386.c:1030 config/tc-i386.c:1113
+#: config/tc-i386.c:1221 config/tc-i386.c:1314
#, c-format
-msgid "no such 386 instruction: `%s'"
+msgid "no such instruction: `%s'"
msgstr ""
-#: config/tc-i386.c:1039
+#: config/tc-i386.c:1230
#, c-format
msgid "invalid character %s in mnemonic"
msgstr ""
-#: config/tc-i386.c:1046
+#: config/tc-i386.c:1237
msgid "expecting prefix; got nothing"
msgstr ""
-#: config/tc-i386.c:1048
+#: config/tc-i386.c:1239
msgid "expecting mnemonic; got nothing"
msgstr ""
-#: config/tc-i386.c:1066
+#: config/tc-i386.c:1257
#, c-format
msgid "redundant %s prefix"
msgstr ""
-#: config/tc-i386.c:1122
+#: config/tc-i386.c:1325
+#, c-format
+msgid "`%s' is not supported on `%s'"
+msgstr ""
+
+#: config/tc-i386.c:1330
+msgid "use .code16 to ensure correct addressing mode"
+msgstr ""
+
+#: config/tc-i386.c:1338
#, c-format
msgid "expecting string instruction after `%s'"
msgstr ""
-#: config/tc-i386.c:1145
+#: config/tc-i386.c:1359
#, c-format
msgid "invalid character %s before operand %d"
msgstr ""
-#: config/tc-i386.c:1159
+#: config/tc-i386.c:1373
#, c-format
msgid "unbalanced parenthesis in operand %d."
msgstr ""
-#: config/tc-i386.c:1162
+#: config/tc-i386.c:1376
#, c-format
msgid "unbalanced brackets in operand %d."
msgstr ""
-#: config/tc-i386.c:1171
+#: config/tc-i386.c:1385
#, c-format
msgid "invalid character %s in operand %d"
msgstr ""
-#: config/tc-i386.c:1198
+#: config/tc-i386.c:1412
#, c-format
msgid "spurious operands; (%d operands/instruction max)"
msgstr ""
-#: config/tc-i386.c:1219
+#: config/tc-i386.c:1435
msgid "expecting operand after ','; got nothing"
msgstr ""
-#: config/tc-i386.c:1224
+#: config/tc-i386.c:1440
msgid "expecting operand before ','; got nothing"
msgstr ""
-#. we found no match
-#: config/tc-i386.c:1464
+#. We found no match.
+#: config/tc-i386.c:1782
#, c-format
msgid "suffix or operands invalid for `%s'"
msgstr ""
-#: config/tc-i386.c:1472
+#: config/tc-i386.c:1793
#, c-format
msgid "indirect %s without `*'"
msgstr ""
-#. Warn them that a data or address size prefix doesn't affect
-#. assembly of the next line of code.
-#: config/tc-i386.c:1479
+#. Warn them that a data or address size prefix doesn't
+#. affect assembly of the next line of code.
+#: config/tc-i386.c:1801
#, c-format
msgid "stand-alone `%s' prefix"
msgstr ""
-#: config/tc-i386.c:1514 config/tc-i386.c:1529
+#: config/tc-i386.c:1837 config/tc-i386.c:1852
msgid "`%s' operand %d must use `%%es' segment"
msgstr ""
-#: config/tc-i386.c:1596 config/tc-i386.c:1637 config/tc-i386.c:1664
+#: config/tc-i386.c:1867
+msgid "Extended register `%%%s' available only in 64bit mode."
+msgstr ""
+
+#. Prohibit these changes in the 64bit mode, since
+#. the lowering is more complicated.
+#: config/tc-i386.c:1938 config/tc-i386.c:1989 config/tc-i386.c:2004
+#: config/tc-i386.c:2032 config/tc-i386.c:2060
+msgid "Incorrect register `%%%s' used with`%c' suffix"
+msgstr ""
+
+#: config/tc-i386.c:1944 config/tc-i386.c:1994 config/tc-i386.c:2065
msgid "using `%%%s' instead of `%%%s' due to `%c' suffix"
msgstr ""
-#: config/tc-i386.c:1609 config/tc-i386.c:1626 config/tc-i386.c:1653
+#: config/tc-i386.c:1957 config/tc-i386.c:1975 config/tc-i386.c:2019
+#: config/tc-i386.c:2046
msgid "`%%%s' not allowed with `%s%c'"
msgstr ""
-#: config/tc-i386.c:1697 config/tc-i386.c:1717
+#: config/tc-i386.c:2106
msgid "no instruction mnemonic suffix given; can't determine immediate size"
msgstr ""
-#: config/tc-i386.c:1742
+#: config/tc-i386.c:2132
+#, c-format
+msgid ""
+"no instruction mnemonic suffix given; can't determine immediate size %x %c"
+msgstr ""
+
+#: config/tc-i386.c:2157
msgid ""
"no instruction mnemonic suffix given and no register operands; can't size "
"instruction"
msgstr ""
-#. reversed arguments on faddp, fsubp, etc.
-#: config/tc-i386.c:1844
+#: config/tc-i386.c:2205
+msgid "64bit operations available only in 64bit modes."
+msgstr ""
+
+#. Reversed arguments on faddp, fsubp, etc.
+#: config/tc-i386.c:2273
msgid "translating to `%s %%%s,%%%s'"
msgstr ""
-#. extraneous `l' suffix on fp insn
-#: config/tc-i386.c:1851
+#. Extraneous `l' suffix on fp insn.
+#: config/tc-i386.c:2280
msgid "translating to `%s %%%s'"
msgstr ""
-#: config/tc-i386.c:2066
+#: config/tc-i386.c:2551
msgid "you can't `pop %%cs'"
msgstr ""
#. UnixWare fsub no args is alias for fsubp, fadd -> faddp, etc.
-#: config/tc-i386.c:2097
+#: config/tc-i386.c:2584
#, c-format
msgid "translating to `%sp'"
msgstr ""
-#: config/tc-i386.c:2146 config/tc-i386.c:2208 config/tc-i386.c:2250
+#: config/tc-i386.c:2627
+msgid ""
+"Can't encode registers '%%%s' in the instruction requiring REX prefix.\n"
+msgstr ""
+
+#: config/tc-i386.c:2679 config/tc-i386.c:2751 config/tc-i386.c:2798
msgid "skipping prefixes on this instruction"
msgstr ""
-#: config/tc-i386.c:2265
+#: config/tc-i386.c:2819
msgid "16-bit jump out of range"
msgstr ""
-#: config/tc-i386.c:2274
+#: config/tc-i386.c:2828
#, c-format
msgid "can't handle non absolute segment in `%s'"
msgstr ""
-#: config/tc-i386.c:2382 config/tc-i386.c:2432
-#, c-format
-msgid "%ld shortened to %ld"
-msgstr ""
-
-#: config/tc-i386.c:2502
+#: config/tc-i386.c:3085
msgid "only 1 or 2 immediate operands are allowed"
msgstr ""
-#: config/tc-i386.c:2534 config/tc-i386.c:2755
+#: config/tc-i386.c:3115 config/tc-i386.c:3353
msgid "GOT relocations not supported in 16 bit mode"
msgstr ""
-#: config/tc-i386.c:2555 config/tc-i386.c:2776
+#: config/tc-i386.c:3152 config/tc-i386.c:3389
msgid "bad reloc specifier in expression"
msgstr ""
-#: config/tc-i386.c:2573 config/tc-i386.c:2810
+#: config/tc-i386.c:3170 config/tc-i386.c:3424
#, c-format
msgid "ignoring junk `%s' after expression"
msgstr ""
-#. missing or bad expr becomes absolute 0
-#: config/tc-i386.c:2580
+#. Missing or bad expr becomes absolute 0.
+#: config/tc-i386.c:3177
#, c-format
msgid "missing or invalid immediate expression `%s' taken as 0"
msgstr ""
-#: config/tc-i386.c:2607 config/tc-i386.c:2853
+#: config/tc-i386.c:3208 config/tc-i386.c:3454
#, c-format
msgid "unimplemented segment %s in operand"
msgstr ""
-#: config/tc-i386.c:2609 config/tc-i386.c:2855
+#: config/tc-i386.c:3210 config/tc-i386.c:3456
#, c-format
msgid "unimplemented segment type %d in operand"
msgstr ""
-#: config/tc-i386.c:2653
+#: config/tc-i386.c:3252 config/tc-i386.c:5392
#, c-format
msgid "expecting scale factor of 1, 2, 4, or 8: got `%s'"
msgstr ""
-#: config/tc-i386.c:2659
+#: config/tc-i386.c:3258
#, c-format
msgid "scale factor of %d without an index register"
msgstr ""
-#. missing or bad expr becomes absolute 0
-#: config/tc-i386.c:2821
+#. Missing or bad expr becomes absolute 0.
+#: config/tc-i386.c:3435
#, c-format
msgid "missing or invalid displacement expression `%s' taken as 0"
msgstr ""
-#: config/tc-i386.c:3035 config/tc-i386.c:3041 config/tc-i386.c:3050
-#, c-format
-msgid "bad segment name `%s'"
-msgstr ""
-
-#: config/tc-i386.c:3108
+#: config/tc-i386.c:3541
#, c-format
msgid "`%s' is not a valid base/index expression"
msgstr ""
-#: config/tc-i386.c:3112
+#: config/tc-i386.c:3545
#, c-format
msgid "`%s' is not a valid %s bit base/index expression"
msgstr ""
-#: config/tc-i386.c:3133 config/tc-i386.c:3487
+#: config/tc-i386.c:3620
#, c-format
-msgid "too many memory references for `%s'"
+msgid "bad memory operand `%s'"
msgstr ""
-#: config/tc-i386.c:3219 config/tc-i386.c:3354 config/tc-i386.c:3457
-#: config/tc-i386.c:3572 config/tc-i386.c:3608
+#: config/tc-i386.c:3635
#, c-format
-msgid "bad register name `%s'"
+msgid "junk `%s' after register"
msgstr ""
-#: config/tc-i386.c:3433
+#: config/tc-i386.c:3644 config/tc-i386.c:3759 config/tc-i386.c:3795
#, c-format
-msgid "bad memory operand `%s'"
+msgid "bad register name `%s'"
msgstr ""
-#: config/tc-i386.c:3448
-#, c-format
-msgid "junk `%s' after register"
+#: config/tc-i386.c:3652
+msgid "immediate operand illegal with absolute jump"
msgstr ""
-#: config/tc-i386.c:3465
-msgid "immediate operand illegal with absolute jump"
+#: config/tc-i386.c:3674
+#, c-format
+msgid "too many memory references for `%s'"
msgstr ""
-#: config/tc-i386.c:3565
+#: config/tc-i386.c:3752
#, c-format
msgid "expecting `,' or `)' after index register in `%s'"
msgstr ""
-#: config/tc-i386.c:3587
+#: config/tc-i386.c:3774
#, c-format
msgid "expecting `)' after scale factor in `%s'"
msgstr ""
-#: config/tc-i386.c:3594
+#: config/tc-i386.c:3781
#, c-format
msgid "expecting index register or scale factor after `,'; got '%c'"
msgstr ""
-#: config/tc-i386.c:3601
+#: config/tc-i386.c:3788
#, c-format
msgid "expecting `,' or `)' after base register in `%s'"
msgstr ""
-#. it's not a memory operand; argh!
-#: config/tc-i386.c:3641
+#. It's not a memory operand; argh!
+#: config/tc-i386.c:3829
#, c-format
msgid "invalid char %s beginning operand %d `%s'"
msgstr ""
-#: config/tc-i386.c:4099
+#: config/tc-i386.c:4267
msgid "Bad call to md_atof ()"
msgstr ""
-#: config/tc-i386.c:4250
-msgid " -m\t\t\t do long jump\n"
+#: config/tc-i386.c:4431 config/tc-sparc.c:548
+#, c-format
+msgid "No compiled in support for %d bit object file format"
msgstr ""
-#: config/tc-i386.c:4253
+#: config/tc-i386.c:4449
msgid ""
-" -V\t\t\t print assembler version number\n"
-" -k\t\t\t ignored\n"
-" -Qy, -Qn\t\t ignored\n"
-" -q\t\t\t ignored\n"
-" -s\t\t\t ignored\n"
+" -Q ignored\n"
+" -V print assembler version number\n"
+" -k ignored\n"
+" -q quieten some warnings\n"
+" -s ignored\n"
msgstr ""
-#: config/tc-i386.c:4307
+#: config/tc-i386.c:4456
+msgid " -q quieten some warnings\n"
+msgstr ""
+
+#: config/tc-i386.c:4475
+msgid "Unknown architecture"
+msgstr ""
+
+#: config/tc-i386.c:4515
msgid "GOT already in symbol table"
msgstr ""
-#: config/tc-i386.c:4456
+#: config/tc-i386.c:4636
#, c-format
-msgid "cannot represent relocation type %s"
+msgid "can not do %d byte relocation"
msgstr ""
-#: config/tc-i860.c:157 config/tc-i860.c:161
-msgid "Unknown temporary pseudo register"
+#: config/tc-i386.c:4697
+#, c-format
+msgid "cannot represent relocation type %s"
msgstr ""
-#: config/tc-i860.c:183 config/tc-mips.c:1059
+#: config/tc-i386.c:4994
#, c-format
-msgid "internal error: can't hash `%s': %s\n"
+msgid "too many memory references for '%s'"
msgstr ""
-#: config/tc-i860.c:341
+#: config/tc-i386.c:5157
#, c-format
-msgid "Expanded opcode after delayed branch: `%s'"
+msgid "Unknown operand modifier `%s'\n"
msgstr ""
-#: config/tc-i860.c:343
+#: config/tc-i386.c:5364
#, c-format
-msgid "Expanded opcode in dual mode: `%s'"
+msgid "`%s' is not a valid segment register"
msgstr ""
-#: config/tc-i860.c:580
-msgid "Fsr1 equals fdest with Pipelining"
+#: config/tc-i386.c:5374 config/tc-i386.c:5495
+msgid "Register scaling only allowed in memory operands."
msgstr ""
-#: config/tc-i860.c:631
-msgid "5-bit immediate too large"
+#: config/tc-i386.c:5405
+msgid "Too many register references in memory operand.\n"
msgstr ""
-#: config/tc-i860.c:725
-msgid "Illegal operands"
+#: config/tc-i386.c:5474
+#, c-format
+msgid "Syntax error. Expecting a constant. Got `%s'.\n"
msgstr ""
-#: config/tc-i860.c:749 config/tc-sparc.c:2644
-msgid "bad segment"
+#: config/tc-i386.c:5544
+#, c-format
+msgid "Unrecognized token '%s'"
msgstr ""
-#: config/tc-i860.c:878
+#: config/tc-i386.c:5561
#, c-format
-msgid "26-bit branch w/o pc relative set: 0x%08x"
+msgid "Unexpected token `%s'\n"
msgstr ""
-#. align pcrel offset, see manual
-#. check for overflow
-#: config/tc-i860.c:882
+#: config/tc-i386.c:5705
#, c-format
-msgid "26-bit branch offset overflow: 0x%08x"
+msgid "Unrecognized token `%s'\n"
msgstr ""
-#: config/tc-i860.c:891 config/tc-i860.c:922
-#, c-format
-msgid "16-bit immediate 4-byte alignment error: 0x%08x"
+#: config/tc-i860.c:154 config/tc-i860.c:158
+msgid "Unknown temporary pseudo register"
msgstr ""
-#: config/tc-i860.c:896 config/tc-i860.c:927
+#: config/tc-i860.c:181 config/tc-mips.c:1027
#, c-format
-msgid "16-bit immediate 2-byte alignment error: 0x%08x"
+msgid "internal error: can't hash `%s': %s\n"
+msgstr ""
+
+#: config/tc-i860.c:201
+msgid "Defective assembler. No assembly attempted."
msgstr ""
-#: config/tc-i860.c:904
+#: config/tc-i860.c:347
#, c-format
-msgid "16-bit branch offset overflow: 0x%08x"
+msgid "Expanded opcode after delayed branch: `%s'"
msgstr ""
-#: config/tc-i860.c:912
+#: config/tc-i860.c:351
#, c-format
-msgid "16-bit immediate 16-byte alignment error: 0x%08x"
+msgid "Expanded opcode in dual mode: `%s'"
msgstr ""
-#: config/tc-i860.c:917
+#: config/tc-i860.c:355
#, c-format
-msgid "16-bit immediate 8-byte alignment error: 0x%08x"
+msgid "An instruction was expanded (%s)"
+msgstr ""
+
+#: config/tc-i860.c:613
+msgid "Pipelined instruction: fsrc1 = fdest"
msgstr ""
-#: config/tc-i860.c:933
+#: config/tc-i860.c:776 config/tc-i860.c:783 config/tc-i860.c:790
+msgid "Assembler does not yet support PIC"
+msgstr ""
+
+#: config/tc-i860.c:849
#, c-format
-msgid "16-bit immediate overflow: 0x%08x"
+msgid "Illegal operands for %s"
+msgstr ""
+
+#: config/tc-i860.c:873 config/tc-sparc.c:2730
+msgid "bad segment"
msgstr ""
-#: config/tc-i860.c:951
+#: config/tc-i860.c:965
msgid "md_number_to_disp\n"
msgstr ""
-#: config/tc-i860.c:961
+#: config/tc-i860.c:975
msgid "i860_number_to_field\n"
msgstr ""
-#: config/tc-i860.c:1001
-msgid "i860_convert_frag\n"
+#: config/tc-i860.c:984
+msgid "i860_estimate_size_before_relax\n"
msgstr ""
-#: config/tc-i860.c:1010
-msgid "i860_estimate_size_before_relax\n"
+#: config/tc-i860.c:1075
+msgid ""
+" -EL\t\t\t generate code for little endian mode (default)\n"
+" -EB\t\t\t generate code for big endian mode\n"
+" -mwarn-expand\t\t warn if pseudo operations are expanded\n"
+msgstr ""
+
+#. SVR4 compatibility flags.
+#: config/tc-i860.c:1081
+msgid ""
+" -V\t\t\t print assembler version number\n"
+" -Qy, -Qn\t\t ignored\n"
+msgstr ""
+
+#: config/tc-i860.c:1150
+msgid "This immediate requires 0 MOD 2 alignment"
+msgstr ""
+
+#: config/tc-i860.c:1153
+msgid "This immediate requires 0 MOD 4 alignment"
+msgstr ""
+
+#: config/tc-i860.c:1156
+msgid "This immediate requires 0 MOD 8 alignment"
+msgstr ""
+
+#: config/tc-i860.c:1159
+msgid "This immediate requires 0 MOD 16 alignment"
msgstr ""
-#: config/tc-i960.c:559
+#: config/tc-i860.c:1257
+msgid "5-bit immediate too large"
+msgstr ""
+
+#: config/tc-i860.c:1260
+msgid "5-bit field must be absolute"
+msgstr ""
+
+#: config/tc-i860.c:1306 config/tc-i860.c:1329
+msgid "A branch offset requires 0 MOD 4 alignment"
+msgstr ""
+
+#: config/tc-i860.c:1350
+#, c-format
+msgid "Unrecognized fix-up (0x%08x)"
+msgstr ""
+
+#: config/tc-i860.h:82
+msgid "i860_convert_frag\n"
+msgstr ""
+
+#: config/tc-i960.c:549
#, c-format
msgid "Hashing returned \"%s\"."
msgstr ""
#. Offset of last character in opcode mnemonic
-#: config/tc-i960.c:593
+#: config/tc-i960.c:583
msgid "branch prediction invalid on this opcode"
msgstr ""
-#: config/tc-i960.c:636
+#: config/tc-i960.c:623
#, c-format
msgid "invalid opcode, \"%s\"."
msgstr ""
-#: config/tc-i960.c:641
+#: config/tc-i960.c:628
#, c-format
msgid "improper number of operands. expecting %d, got %d"
msgstr ""
-#: config/tc-i960.c:876
+#: config/tc-i960.c:860
#, c-format
msgid "Fixup of %ld too large for field width of %d"
msgstr ""
-#: config/tc-i960.c:994
+#: config/tc-i960.c:977
#, c-format
msgid "invalid architecture %s"
msgstr ""
-#: config/tc-i960.c:1014
+#: config/tc-i960.c:997
msgid "I960 options:\n"
msgstr ""
-#: config/tc-i960.c:1017
+#: config/tc-i960.c:1000
msgid ""
"\n"
"\t\t\tspecify variant of 960 architecture\n"
@@ -3292,636 +3801,1053 @@ msgid ""
"\t\t\tlong displacements\n"
msgstr ""
-#: config/tc-i960.c:1425
+#: config/tc-i960.c:1403
msgid "too many operands"
msgstr ""
-#: config/tc-i960.c:1485 config/tc-i960.c:1715
+#: config/tc-i960.c:1462 config/tc-i960.c:1689
msgid "expression syntax error"
msgstr ""
-#: config/tc-i960.c:1523
+#: config/tc-i960.c:1500
msgid "attempt to branch into different segment"
msgstr ""
-#: config/tc-i960.c:1527
+#: config/tc-i960.c:1504
#, c-format
msgid "target of %s instruction must be a label"
msgstr ""
-#: config/tc-i960.c:1567
+#: config/tc-i960.c:1543
msgid "unmatched '['"
msgstr ""
-#: config/tc-i960.c:1578
+#: config/tc-i960.c:1554
msgid "garbage after index spec ignored"
msgstr ""
#. We never moved: there was no opcode either!
-#: config/tc-i960.c:1645
+#: config/tc-i960.c:1620
msgid "missing opcode"
msgstr ""
-#: config/tc-i960.c:1953
+#: config/tc-i960.c:1923
msgid "invalid constant"
msgstr ""
-#: config/tc-i960.c:2066
+#: config/tc-i960.c:2035
msgid "invalid index register"
msgstr ""
-#: config/tc-i960.c:2089
+#: config/tc-i960.c:2058
msgid "invalid scale factor"
msgstr ""
-#: config/tc-i960.c:2272
+#: config/tc-i960.c:2241
msgid "unaligned register"
msgstr ""
-#: config/tc-i960.c:2295
+#: config/tc-i960.c:2264
msgid "no such sfr in this architecture"
msgstr ""
-#: config/tc-i960.c:2333
+#: config/tc-i960.c:2302
msgid "illegal literal"
msgstr ""
#. Should not happen: see block comment above
-#: config/tc-i960.c:2566
+#: config/tc-i960.c:2532
#, c-format
msgid "Trying to 'bal' to %s"
msgstr ""
-#: config/tc-i960.c:2577
+#: config/tc-i960.c:2543
msgid "Looks like a proc, but can't tell what kind.\n"
msgstr ""
-#: config/tc-i960.c:2609
+#: config/tc-i960.c:2574
msgid "should have 1 or 2 operands"
msgstr ""
-#: config/tc-i960.c:2618 config/tc-i960.c:2637
+#: config/tc-i960.c:2583 config/tc-i960.c:2602
#, c-format
msgid "Redefining leafproc %s"
msgstr ""
-#: config/tc-i960.c:2669
+#: config/tc-i960.c:2633
msgid "should have two operands"
msgstr ""
-#: config/tc-i960.c:2679
+#: config/tc-i960.c:2643
msgid "'entry_num' must be absolute number in [0,31]"
msgstr ""
-#: config/tc-i960.c:2688
+#: config/tc-i960.c:2652
#, c-format
msgid "Redefining entrynum for sysproc %s"
msgstr ""
-#: config/tc-i960.c:2799
+#: config/tc-i960.c:2759
msgid "architecture of opcode conflicts with that of earlier instruction(s)"
msgstr ""
-#: config/tc-i960.c:2820
+#: config/tc-i960.c:2780
msgid "big endian mode is not supported"
msgstr ""
-#: config/tc-i960.c:2822
+#: config/tc-i960.c:2782
#, c-format
msgid "ignoring unrecognized .endian type `%s'"
msgstr ""
-#: config/tc-i960.c:3104
+#: config/tc-i960.c:3064
#, c-format
msgid "leafproc symbol '%s' undefined"
msgstr ""
-#: config/tc-i960.c:3114
+#: config/tc-i960.c:3074
#, c-format
msgid "Warning: making leafproc entries %s and %s both global\n"
msgstr ""
-#: config/tc-i960.c:3223
+#: config/tc-i960.c:3183
msgid "option --link-relax is only supported in b.out format"
msgstr ""
-#: config/tc-i960.c:3266
+#: config/tc-i960.c:3226
msgid "callj to difference of two symbols"
msgstr ""
+#: config/tc-ia64.c:4077
+msgid "Register name expected"
+msgstr ""
+
+#: config/tc-ia64.c:4082 config/tc-ia64.c:4368
+msgid "Comma expected"
+msgstr ""
+
+#: config/tc-ia64.c:4090
+msgid "Register value annotation ignored"
+msgstr ""
+
+#: config/tc-ia64.c:4114
+msgid "Directive invalid within a bundle"
+msgstr ""
+
+#: config/tc-ia64.c:4181
+msgid "Missing predicate relation type"
+msgstr ""
+
+#: config/tc-ia64.c:4197
+msgid "Unrecognized predicate relation type"
+msgstr ""
+
+#: config/tc-ia64.c:4217 config/tc-ia64.c:4242
+msgid "Predicate register expected"
+msgstr ""
+
+#: config/tc-ia64.c:4229
+msgid "Duplicate predicate register ignored"
+msgstr ""
+
+#: config/tc-ia64.c:4251
+msgid "Bad register range"
+msgstr ""
+
+#: config/tc-ia64.c:4279
+msgid "Predicate source and target required"
+msgstr ""
+
+#: config/tc-ia64.c:4281 config/tc-ia64.c:4293
+msgid "Use of p0 is not valid in this context"
+msgstr ""
+
+#: config/tc-ia64.c:4288
+msgid "At least two PR arguments expected"
+msgstr ""
+
+#: config/tc-ia64.c:4302
+msgid "At least one PR argument expected"
+msgstr ""
+
+#: config/tc-ia64.c:4338
+#, c-format
+msgid "Inserting \"%s\" into entry hint table failed: %s"
+msgstr ""
+
+#. FIXME -- need 62-bit relocation type
+#: config/tc-ia64.c:4758
+msgid "62-bit relocation not yet implemented"
+msgstr ""
+
+#: config/tc-ia64.c:4820
+msgid "lower 16 bits of mask ignored"
+msgstr ""
+
+#: config/tc-ia64.c:5317
+msgid "Value truncated to 62 bits"
+msgstr ""
+
+#: config/tc-ia64.c:5668
+msgid ""
+"Additional NOP may be necessary to workaround Itanium processor A/B step "
+"errata"
+msgstr ""
+
+#: config/tc-ia64.c:5849
+#, c-format
+msgid "Unrecognized option '-x%s'"
+msgstr ""
+
+#: config/tc-ia64.c:5877
+msgid ""
+"IA-64 options:\n"
+" -milp32|-milp64|-mlp64|-mp64\tselect data model (default -mlp64)\n"
+" -mle | -mbe\t\t select little- or big-endian byte order (default -mle)\n"
+" -x | -xexplicit\t turn on dependency violation checking (default)\n"
+" -xauto\t\t automagically remove dependency violations\n"
+" -xdebug\t\t debug dependency violation checker\n"
+msgstr ""
+
+#: config/tc-ia64.c:6147 config/tc-mips.c:1014
+msgid "Could not set architecture and machine"
+msgstr ""
+
+#: config/tc-ia64.c:6223
+msgid "Explicit stops are ignored in auto mode"
+msgstr ""
+
+#: config/tc-ia64.c:6273
+msgid "Found '{' after explicit switch to automatic mode"
+msgstr ""
+
+#: config/tc-ia64.c:6686
+#, c-format
+msgid "Unhandled dependency %s for %s (%s), note %d"
+msgstr ""
+
+#: config/tc-ia64.c:7962
+#, c-format
+msgid "Unrecognized dependency specifier %d\n"
+msgstr ""
+
+#: config/tc-ia64.c:8753
+msgid "Only the first path encountering the conflict is reported"
+msgstr ""
+
+#: config/tc-ia64.c:8756
+msgid "This is the location of the conflicting usage"
+msgstr ""
+
#. Pretend that we do not recognise this option.
-#: config/tc-m32r.c:223
+#: config/tc-m32r.c:231
msgid "Unrecognised option: -hidden"
msgstr ""
-#: config/tc-m32r.c:256
+#: config/tc-m32r.c:265
msgid " M32R specific command line options:\n"
msgstr ""
-#: config/tc-m32r.c:258
+#: config/tc-m32r.c:267
msgid ""
" -m32r disable support for the m32rx instruction set\n"
msgstr ""
-#: config/tc-m32r.c:260
+#: config/tc-m32r.c:269
msgid " -m32rx support the extended m32rx instruction set\n"
msgstr ""
-#: config/tc-m32r.c:262
+#: config/tc-m32r.c:271
msgid " -O try to combine instructions in parallel\n"
msgstr ""
-#: config/tc-m32r.c:265
+#: config/tc-m32r.c:274
msgid ""
" -warn-explicit-parallel-conflicts warn when parallel instructions\n"
msgstr ""
-#: config/tc-m32r.c:267
+#: config/tc-m32r.c:276
msgid " violate contraints\n"
msgstr ""
-#: config/tc-m32r.c:269
+#: config/tc-m32r.c:278
msgid " -no-warn-explicit-parallel-conflicts do not warn when parallel\n"
msgstr ""
-#: config/tc-m32r.c:271
+#: config/tc-m32r.c:280
msgid ""
" instructions violate contraints\n"
msgstr ""
-#: config/tc-m32r.c:273
+#: config/tc-m32r.c:282
msgid ""
" -Wp synonym for -warn-explicit-parallel-conflicts\n"
msgstr ""
-#: config/tc-m32r.c:275
+#: config/tc-m32r.c:284
msgid ""
" -Wnp synonym for -no-warn-explicit-parallel-conflicts\n"
msgstr ""
-#: config/tc-m32r.c:278
+#: config/tc-m32r.c:287
msgid ""
" -warn-unmatched-high warn when an (s)high reloc has no matching low "
"reloc\n"
msgstr ""
-#: config/tc-m32r.c:280
+#: config/tc-m32r.c:289
msgid " -no-warn-unmatched-high do not warn about missing low relocs\n"
msgstr ""
-#: config/tc-m32r.c:282
+#: config/tc-m32r.c:291
msgid " -Wuh synonym for -warn-unmatched-high\n"
msgstr ""
-#: config/tc-m32r.c:284
+#: config/tc-m32r.c:293
msgid " -Wnuh synonym for -no-warn-unmatched-high\n"
msgstr ""
-#: config/tc-m32r.c:288
+#: config/tc-m32r.c:297
msgid " -relax create linker relaxable code\n"
msgstr ""
-#: config/tc-m32r.c:290
+#: config/tc-m32r.c:299
msgid " -cpu-desc provide runtime cpu description file\n"
msgstr ""
-#: config/tc-m32r.c:685
+#: config/tc-m32r.c:688
msgid "Instructions write to the same destination register."
msgstr ""
-#: config/tc-m32r.c:693
+#: config/tc-m32r.c:696
msgid "Instructions do not use parallel execution pipelines."
msgstr ""
-#: config/tc-m32r.c:700
+#: config/tc-m32r.c:703
msgid "Instructions share the same execution pipeline"
msgstr ""
-#: config/tc-m32r.c:769 config/tc-m32r.c:855
+#: config/tc-m32r.c:773 config/tc-m32r.c:870
#, c-format
msgid "not a 16 bit instruction '%s'"
msgstr ""
-#: config/tc-m32r.c:776 config/tc-m32r.c:862 config/tc-m32r.c:1017
+#: config/tc-m32r.c:780 config/tc-m32r.c:877 config/tc-m32r.c:1033
#, c-format
msgid "unknown instruction '%s'"
msgstr ""
-#: config/tc-m32r.c:784 config/tc-m32r.c:869 config/tc-m32r.c:1024
+#: config/tc-m32r.c:789 config/tc-m32r.c:884 config/tc-m32r.c:1040
#, c-format
msgid "instruction '%s' is for the M32RX only"
msgstr ""
-#: config/tc-m32r.c:792 config/tc-m32r.c:877
+#: config/tc-m32r.c:798 config/tc-m32r.c:893
#, c-format
msgid "instruction '%s' cannot be executed in parallel."
msgstr ""
-#: config/tc-m32r.c:839 config/tc-m32r.c:902 config/tc-m32r.c:1074
+#: config/tc-m32r.c:854 config/tc-m32r.c:918 config/tc-m32r.c:1090
msgid "internal error: lookup/get operands failed"
msgstr ""
-#: config/tc-m32r.c:887
+#: config/tc-m32r.c:903
#, c-format
msgid "'%s': only the NOP instruction can be issued in parallel on the m32r"
msgstr ""
-#: config/tc-m32r.c:916
+#: config/tc-m32r.c:932
#, c-format
msgid ""
"%s: output of 1st instruction is the same as an input to 2nd instruction - "
"is this intentional ?"
msgstr ""
-#: config/tc-m32r.c:920
+#: config/tc-m32r.c:936
#, c-format
msgid ""
"%s: output of 2nd instruction is the same as an input to 1st instruction - "
"is this intentional ?"
msgstr ""
-#: config/tc-m32r.c:1235 config/tc-ppc.c:1337 config/tc-ppc.c:3547 read.c:1378
+#: config/tc-m32r.c:1250 config/tc-ppc.c:1459 config/tc-ppc.c:3681 read.c:1358
msgid "Expected comma after symbol-name: rest of line ignored."
msgstr ""
-#: config/tc-m32r.c:1244
+#: config/tc-m32r.c:1260
#, c-format
msgid ".SCOMMon length (%ld.) <0! Ignored."
msgstr ""
-#: config/tc-m32r.c:1258 config/tc-ppc.c:1359 config/tc-ppc.c:2266
-#: config/tc-ppc.c:3571
+#: config/tc-m32r.c:1274 config/tc-ppc.c:1481 config/tc-ppc.c:2392
+#: config/tc-ppc.c:3705
msgid "ignoring bad alignment"
msgstr ""
-#: config/tc-m32r.c:1284 config/tc-ppc.c:1370 config/tc-ppc.c:3583 read.c:1398
-#: read.c:2111
+#: config/tc-m32r.c:1301 config/tc-ppc.c:1492 config/tc-ppc.c:3717 read.c:1382
+#: read.c:2108
#, c-format
msgid "Ignoring attempt to re-define symbol `%s'."
msgstr ""
-#: config/tc-m32r.c:1293
+#: config/tc-m32r.c:1310
#, c-format
msgid "Length of .scomm \"%s\" is already %ld. Not changed to %ld."
msgstr ""
-#: config/tc-m32r.c:1766
+#: config/tc-m32r.c:1786
msgid "Unmatched high/shigh reloc"
msgstr ""
-#: config/tc-m68k.c:646
+#: config/tc-m68hc11.c:305
+#, c-format
+msgid ""
+"Motorola 68HC11/68HC12 options:\n"
+" -m68hc11 | -m68hc12 specify the processor [default %s]\n"
+" --force-long-branchs always turn relative branchs into absolute ones\n"
+" -S,--short-branchs do not turn relative branchs into absolute ones\n"
+" when the offset is out of range\n"
+" --strict-direct-mode do not turn the direct mode into extended mode\n"
+" when the instruction does not support direct mode\n"
+" --print-insn-syntax print the syntax of instruction in case of error\n"
+" --print-opcodes print the list of instructions with syntax\n"
+" --generate-example generate an example of each instruction\n"
+" (used for testing)\n"
+msgstr ""
+
+#: config/tc-m68hc11.c:346
+#, c-format
+msgid "Default target `%s' is not supported."
+msgstr ""
+
+#. Dump the opcode statistics table.
+#: config/tc-m68hc11.c:365
+msgid "Name # Modes Min ops Max ops Modes mask # Used\n"
+msgstr ""
+
+#: config/tc-m68hc11.c:415
+#, c-format
+msgid "Option `%s' is not recognized."
+msgstr ""
+
+#: config/tc-m68hc11.c:636
+msgid "#<imm8>"
+msgstr ""
+
+#: config/tc-m68hc11.c:645
+msgid "#<imm16>"
+msgstr ""
+
+#: config/tc-m68hc11.c:654 config/tc-m68hc11.c:663
+msgid "<imm8>,X"
+msgstr ""
+
+#: config/tc-m68hc11.c:681
+msgid "*<abs8>"
+msgstr ""
+
+#: config/tc-m68hc11.c:693
+msgid "#<mask>"
+msgstr ""
+
+#: config/tc-m68hc11.c:703
+#, c-format
+msgid "symbol%d"
+msgstr ""
+
+#: config/tc-m68hc11.c:705
+msgid "<abs>"
+msgstr ""
+
+#: config/tc-m68hc11.c:724
+msgid "<label>"
+msgstr ""
+
+#: config/tc-m68hc11.c:740
+#, c-format
+msgid ""
+"# Example of `%s' instructions\n"
+"\t.sect .text\n"
+"_start:\n"
+msgstr ""
+
+#: config/tc-m68hc11.c:788
+#, c-format
+msgid "Instruction `%s' is not recognized."
+msgstr ""
+
+#: config/tc-m68hc11.c:793
+#, c-format
+msgid "Instruction formats for `%s':"
+msgstr ""
+
+#: config/tc-m68hc11.c:926
+#, c-format
+msgid "Immediate operand is not allowed for operand %d."
+msgstr ""
+
+#: config/tc-m68hc11.c:952
+msgid "Indirect indexed addressing is not valid for 68HC11."
+msgstr ""
+
+#: config/tc-m68hc11.c:972
+msgid "Spurious `,' or bad indirect register addressing mode."
+msgstr ""
+
+#: config/tc-m68hc11.c:988
+msgid "Missing second register or offset for indexed-indirect mode."
+msgstr ""
+
+#: config/tc-m68hc11.c:998
+msgid "Missing second register for indexed-indirect mode."
+msgstr ""
+
+#: config/tc-m68hc11.c:1014
+msgid "Missing `]' to close indexed-indirect mode."
+msgstr ""
+
+#: config/tc-m68hc11.c:1058
+msgid "Illegal operand."
+msgstr ""
+
+#: config/tc-m68hc11.c:1063
+msgid "Missing operand."
+msgstr ""
+
+#: config/tc-m68hc11.c:1115
+msgid "Pre-increment mode is not valid for 68HC11"
+msgstr ""
+
+#: config/tc-m68hc11.c:1128
+msgid "Wrong register in register indirect mode."
+msgstr ""
+
+#: config/tc-m68hc11.c:1136
+msgid "Missing `]' to close register indirect operand."
+msgstr ""
+
+#: config/tc-m68hc11.c:1153
+msgid "Post-decrement mode is not valid for 68HC11."
+msgstr ""
+
+#: config/tc-m68hc11.c:1161
+msgid "Post-increment mode is not valid for 68HC11."
+msgstr ""
+
+#: config/tc-m68hc11.c:1178
+msgid "Invalid indexed indirect mode."
+msgstr ""
+
+#: config/tc-m68hc11.c:1272
+#, c-format
+msgid "Trap id `%ld' is out of range."
+msgstr ""
+
+#: config/tc-m68hc11.c:1276
+msgid "Trap id must be within [0x30..0x39] or [0x40..0xff]."
+msgstr ""
+
+#: config/tc-m68hc11.c:1283
+#, c-format
+msgid "Operand out of 8-bit range: `%ld'."
+msgstr ""
+
+#: config/tc-m68hc11.c:1290
+msgid "The trap id must be a constant."
+msgstr ""
+
+#: config/tc-m68hc11.c:1315
+#, c-format
+msgid "Operand `%x' not recognized in fixup8."
+msgstr ""
+
+#: config/tc-m68hc11.c:1335
+#, c-format
+msgid "Operand out of 16-bit range: `%ld'."
+msgstr ""
+
+#: config/tc-m68hc11.c:1356
+#, c-format
+msgid "Operand `%x' not recognized in fixup16."
+msgstr ""
+
+#: config/tc-m68hc11.c:1374
+#, c-format
+msgid "Unexpected branch conversion with `%x'"
+msgstr ""
+
+#: config/tc-m68hc11.c:1463 config/tc-m68hc11.c:1592
+#, c-format
+msgid "Operand out of range for a relative branch: `%ld'"
+msgstr ""
+
+#: config/tc-m68hc11.c:1560
+msgid "Invalid register for dbcc/tbcc instruction."
+msgstr ""
+
+#: config/tc-m68hc11.c:1651
+#, c-format
+msgid "Increment/decrement value is out of range: `%ld'."
+msgstr ""
+
+#: config/tc-m68hc11.c:1662
+msgid "Expecting a register."
+msgstr ""
+
+#: config/tc-m68hc11.c:1677
+msgid "Invalid register for post/pre increment."
+msgstr ""
+
+#: config/tc-m68hc11.c:1707
+msgid "Invalid register."
+msgstr ""
+
+#: config/tc-m68hc11.c:1714
+#, c-format
+msgid "Offset out of 16-bit range: %ld."
+msgstr ""
+
+#: config/tc-m68hc11.c:1719
+#, c-format
+msgid "Offset out of 5-bit range for movw/movb insn: %ld."
+msgstr ""
+
+#: config/tc-m68hc11.c:1774
+msgid "Expecting register D for indexed indirect mode."
+msgstr ""
+
+#: config/tc-m68hc11.c:1776
+msgid "Indexed indirect mode is not allowed for movb/movw."
+msgstr ""
+
+#: config/tc-m68hc11.c:1793
+msgid "Invalid accumulator register."
+msgstr ""
+
+#: config/tc-m68hc11.c:1818
+msgid "Invalid indexed register."
+msgstr ""
+
+#: config/tc-m68hc11.c:1826
+msgid "Addressing mode not implemented yet."
+msgstr ""
+
+#: config/tc-m68hc11.c:1841
+msgid "Invalid source register for this instruction, use 'tfr'."
+msgstr ""
+
+#: config/tc-m68hc11.c:1843
+msgid "Invalid source register."
+msgstr ""
+
+#: config/tc-m68hc11.c:1848
+msgid "Invalid destination register for this instruction, use 'tfr'."
+msgstr ""
+
+#: config/tc-m68hc11.c:1850
+msgid "Invalid destination register."
+msgstr ""
+
+#: config/tc-m68hc11.c:1939
+msgid "Invalid indexed register, expecting register X."
+msgstr ""
+
+#: config/tc-m68hc11.c:1941
+msgid "Invalid indexed register, expecting register Y."
+msgstr ""
+
+#: config/tc-m68hc11.c:2238
+msgid "No instruction or missing opcode."
+msgstr ""
+
+#: config/tc-m68hc11.c:2303
+#, c-format
+msgid "Opcode `%s' is not recognized."
+msgstr ""
+
+#: config/tc-m68hc11.c:2325
+#, c-format
+msgid "Garbage at end of instruction: `%s'."
+msgstr ""
+
+#: config/tc-m68hc11.c:2348
+#, c-format
+msgid "Invalid operand for `%s'"
+msgstr ""
+
+#: config/tc-m68hc11.c:2405
+#, c-format
+msgid "Relocation %d is not supported by object file format."
+msgstr ""
+
+#: config/tc-m68hc11.c:2571
+msgid "bra or bsr with undefined symbol."
+msgstr ""
+
+#: config/tc-m68hc11.c:2683
+#, c-format
+msgid "Subtype %d is not recognized."
+msgstr ""
+
+#: config/tc-m68hc11.c:2720
+msgid "Expression too complex."
+msgstr ""
+
+#: config/tc-m68hc11.c:2749
+msgid "Value out of 16-bit range."
+msgstr ""
+
+#: config/tc-m68hc11.c:2772
+#, c-format
+msgid "Value %ld too large for 8-bit PC-relative branch."
+msgstr ""
+
+#: config/tc-m68hc11.c:2779
+#, c-format
+msgid "Auto increment/decrement offset '%ld' is out of range."
+msgstr ""
+
+#: config/tc-m68hc11.c:2790
+#, c-format
+msgid "Line %d: unknown relocation type: 0x%x."
+msgstr ""
+
+#: config/tc-m68k.c:680
msgid "Unknown PC relative instruction"
msgstr ""
-#: config/tc-m68k.c:772
+#: config/tc-m68k.c:806
#, c-format
msgid "Can not do %d byte pc-relative relocation"
msgstr ""
-#: config/tc-m68k.c:774
+#: config/tc-m68k.c:808
#, c-format
msgid "Can not do %d byte pc-relative pic relocation"
msgstr ""
-#: config/tc-m68k.c:779
+#: config/tc-m68k.c:813
#, c-format
msgid "Can not do %d byte relocation"
msgstr ""
-#: config/tc-m68k.c:781
+#: config/tc-m68k.c:815
#, c-format
msgid "Can not do %d byte pic relocation"
msgstr ""
-#: config/tc-m68k.c:885 config/tc-mips.c:11262
+#: config/tc-m68k.c:919 config/tc-mips.c:11242
#, c-format
msgid "Cannot make %s relocation PC relative"
msgstr ""
-#: config/tc-m68k.c:998 config/tc-tahoe.c:1505 config/tc-vax.c:1774
+#: config/tc-m68k.c:1032 config/tc-tahoe.c:1503 config/tc-vax.c:1766
msgid "No operator"
msgstr ""
-#: config/tc-m68k.c:1028 config/tc-tahoe.c:1522 config/tc-vax.c:1791
+#: config/tc-m68k.c:1062 config/tc-tahoe.c:1520 config/tc-vax.c:1783
msgid "Unknown operator"
msgstr ""
-#: config/tc-m68k.c:1803
+#: config/tc-m68k.c:1837
msgid "invalid instruction for this architecture; needs "
msgstr ""
-#: config/tc-m68k.c:1808
+#: config/tc-m68k.c:1842
msgid "fpu (68040, 68060 or 68881/68882)"
msgstr ""
-#: config/tc-m68k.c:1811
+#: config/tc-m68k.c:1845
msgid "mmu (68030 or 68851)"
msgstr ""
-#: config/tc-m68k.c:1814
+#: config/tc-m68k.c:1848
msgid "68020 or higher"
msgstr ""
-#: config/tc-m68k.c:1817
+#: config/tc-m68k.c:1851
msgid "68000 or higher"
msgstr ""
-#: config/tc-m68k.c:1820
+#: config/tc-m68k.c:1854
msgid "68010 or higher"
msgstr ""
-#: config/tc-m68k.c:1848
+#: config/tc-m68k.c:1883
msgid "operands mismatch"
msgstr ""
-#: config/tc-m68k.c:1905 config/tc-m68k.c:1911 config/tc-m68k.c:1917
+#: config/tc-m68k.c:1940 config/tc-m68k.c:1946 config/tc-m68k.c:1952
msgid "operand out of range"
msgstr ""
-#: config/tc-m68k.c:1974
+#: config/tc-m68k.c:2009
#, c-format
msgid "Bignum too big for %c format; truncated"
msgstr ""
-#: config/tc-m68k.c:2042
+#: config/tc-m68k.c:2077
msgid "displacement too large for this architecture; needs 68020 or higher"
msgstr ""
-#: config/tc-m68k.c:2152
+#: config/tc-m68k.c:2187
msgid ""
"scale factor invalid on this architecture; needs cpu32 or 68020 or higher"
msgstr ""
-#: config/tc-m68k.c:2157
+#: config/tc-m68k.c:2192
msgid "invalid index size for coldfire"
msgstr ""
-#: config/tc-m68k.c:2210
+#: config/tc-m68k.c:2245
msgid "Forcing byte displacement"
msgstr ""
-#: config/tc-m68k.c:2212
+#: config/tc-m68k.c:2247
msgid "byte displacement out of range"
msgstr ""
-#: config/tc-m68k.c:2259 config/tc-m68k.c:2297
+#: config/tc-m68k.c:2294 config/tc-m68k.c:2332
msgid "invalid operand mode for this architecture; needs 68020 or higher"
msgstr ""
-#: config/tc-m68k.c:2283 config/tc-m68k.c:2317
+#: config/tc-m68k.c:2318 config/tc-m68k.c:2352
msgid ":b not permitted; defaulting to :w"
msgstr ""
-#: config/tc-m68k.c:2399
+#: config/tc-m68k.c:2429
msgid "unsupported byte value; use a different suffix"
msgstr ""
-#: config/tc-m68k.c:2413
+#: config/tc-m68k.c:2443
msgid "unknown/incorrect operand"
msgstr ""
-#: config/tc-m68k.c:2446 config/tc-m68k.c:2454 config/tc-m68k.c:2461
-#: config/tc-m68k.c:2468
+#: config/tc-m68k.c:2476 config/tc-m68k.c:2484 config/tc-m68k.c:2491
+#: config/tc-m68k.c:2498
msgid "out of range"
msgstr ""
-#: config/tc-m68k.c:2518
+#: config/tc-m68k.c:2548
msgid "Can't use long branches on 68000/68010/5200"
msgstr ""
-#: config/tc-m68k.c:2606
+#: config/tc-m68k.c:2658
msgid "Expression out of range, using 0"
msgstr ""
-#: config/tc-m68k.c:2718 config/tc-m68k.c:2734
+#: config/tc-m68k.c:2770 config/tc-m68k.c:2786
msgid "Floating point register in register list"
msgstr ""
-#: config/tc-m68k.c:2724
+#: config/tc-m68k.c:2776
msgid "Wrong register in floating-point reglist"
msgstr ""
-#: config/tc-m68k.c:2740
+#: config/tc-m68k.c:2792
msgid "incorrect register in reglist"
msgstr ""
-#: config/tc-m68k.c:2746
+#: config/tc-m68k.c:2798
msgid "wrong register in floating-point reglist"
msgstr ""
-#: config/tc-m68k.c:2822
+#: config/tc-m68k.c:2874
msgid "failed sanity check"
msgstr ""
#. ERROR
-#: config/tc-m68k.c:3187
+#: config/tc-m68k.c:3239
msgid "Extra )"
msgstr ""
#. ERROR
-#: config/tc-m68k.c:3198
+#: config/tc-m68k.c:3250
msgid "Missing )"
msgstr ""
-#: config/tc-m68k.c:3215
+#: config/tc-m68k.c:3267
msgid "Missing operand"
msgstr ""
-#: config/tc-m68k.c:3547
+#: config/tc-m68k.c:3599
#, c-format
msgid "%s -- statement `%s' ignored"
msgstr ""
-#: config/tc-m68k.c:3591
+#: config/tc-m68k.c:3643
#, c-format
msgid "Don't know how to figure width of %c in md_assemble()"
msgstr ""
-#: config/tc-m68k.c:3759 config/tc-m68k.c:3795
+#: config/tc-m68k.c:3811 config/tc-m68k.c:3849
#, c-format
msgid "Internal Error: Can't find %s in hash table"
msgstr ""
-#: config/tc-m68k.c:3762 config/tc-m68k.c:3798
+#: config/tc-m68k.c:3814 config/tc-m68k.c:3852
#, c-format
msgid "Internal Error: Can't hash %s: %s"
msgstr ""
-#: config/tc-m68k.c:3926
+#: config/tc-m68k.c:3980
#, c-format
msgid "unrecognized default cpu `%s' ???"
msgstr ""
-#: config/tc-m68k.c:3938
+#: config/tc-m68k.c:3992
msgid "68040 and 68851 specified; mmu instructions may assemble incorrectly"
msgstr ""
-#: config/tc-m68k.c:3958
+#: config/tc-m68k.c:4012
msgid "options for 68881 and no-68881 both given"
msgstr ""
-#: config/tc-m68k.c:3960
+#: config/tc-m68k.c:4014
msgid "options for 68851 and no-68851 both given"
msgstr ""
-#: config/tc-m68k.c:4031
+#: config/tc-m68k.c:4085
#, c-format
msgid "text label `%s' aligned to odd boundary"
msgstr ""
-#: config/tc-m68k.c:4248
+#: config/tc-m68k.c:4302
msgid "invalid byte branch offset"
msgstr ""
-#: config/tc-m68k.c:4305
+#: config/tc-m68k.c:4360
msgid "short branch with zero offset: use :w"
msgstr ""
-#: config/tc-m68k.c:4351
-msgid "Long branch offset not supported."
-msgstr ""
-
-#: config/tc-m68k.c:4412
-#, c-format
-msgid "Internal error (long PC-relative operand) for insn 0x%04x at 0x%lx"
-msgstr ""
-
-#: config/tc-m68k.c:4443
-msgid "displacement doesn't fit in one byte"
-msgstr ""
-
-#: config/tc-m68k.c:4556
-msgid "Long branch offset to extern symbol not supported."
-msgstr ""
-
-#: config/tc-m68k.c:4905 config/tc-m68k.c:4916
+#: config/tc-m68k.c:4896 config/tc-m68k.c:4907
msgid "expression out of range: defaulting to 1"
msgstr ""
-#: config/tc-m68k.c:4948
+#: config/tc-m68k.c:4939
msgid "expression out of range: defaulting to 0"
msgstr ""
-#: config/tc-m68k.c:4981 config/tc-m68k.c:4993
+#: config/tc-m68k.c:4972 config/tc-m68k.c:4984
#, c-format
msgid "Can't deal with expression; defaulting to %ld"
msgstr ""
-#: config/tc-m68k.c:5007
+#: config/tc-m68k.c:4998
msgid "expression doesn't fit in BYTE"
msgstr ""
-#: config/tc-m68k.c:5011
+#: config/tc-m68k.c:5002
msgid "expression doesn't fit in WORD"
msgstr ""
-#: config/tc-m68k.c:5104
+#: config/tc-m68k.c:5095
#, c-format
msgid "%s: unrecognized processor name"
msgstr ""
-#: config/tc-m68k.c:5169
+#: config/tc-m68k.c:5160
msgid "bad coprocessor id"
msgstr ""
-#: config/tc-m68k.c:5175
+#: config/tc-m68k.c:5166
msgid "unrecognized fopt option"
msgstr ""
-#: config/tc-m68k.c:5309
+#: config/tc-m68k.c:5300
#, c-format
msgid "option `%s' may not be negated"
msgstr ""
-#: config/tc-m68k.c:5320
+#: config/tc-m68k.c:5311
#, c-format
msgid "option `%s' not recognized"
msgstr ""
-#: config/tc-m68k.c:5353
+#: config/tc-m68k.c:5344
msgid "bad format of OPT NEST=depth"
msgstr ""
-#: config/tc-m68k.c:5416
+#: config/tc-m68k.c:5407
msgid "missing label"
msgstr ""
-#: config/tc-m68k.c:5440 config/tc-m68k.c:5469
+#: config/tc-m68k.c:5431 config/tc-m68k.c:5460
msgid "bad register list"
msgstr ""
-#: config/tc-m68k.c:5442
+#: config/tc-m68k.c:5433
#, c-format
msgid "bad register list: %s"
msgstr ""
-#: config/tc-m68k.c:5540
+#: config/tc-m68k.c:5531
msgid "restore without save"
msgstr ""
-#: config/tc-m68k.c:5717 config/tc-m68k.c:6066
+#: config/tc-m68k.c:5708 config/tc-m68k.c:6057
msgid "syntax error in structured control directive"
msgstr ""
-#: config/tc-m68k.c:5768
+#: config/tc-m68k.c:5759
msgid "missing condition code in structured control directive"
msgstr ""
-#: config/tc-m68k.c:6100
+#: config/tc-m68k.c:6091
msgid "missing then"
msgstr ""
-#: config/tc-m68k.c:6182
+#: config/tc-m68k.c:6173
msgid "else without matching if"
msgstr ""
-#: config/tc-m68k.c:6216
+#: config/tc-m68k.c:6207
msgid "endi without matching if"
msgstr ""
-#: config/tc-m68k.c:6257
+#: config/tc-m68k.c:6248
msgid "break outside of structured loop"
msgstr ""
-#: config/tc-m68k.c:6296
+#: config/tc-m68k.c:6287
msgid "next outside of structured loop"
msgstr ""
-#: config/tc-m68k.c:6348
+#: config/tc-m68k.c:6339
msgid "missing ="
msgstr ""
-#: config/tc-m68k.c:6386
+#: config/tc-m68k.c:6377
msgid "missing to or downto"
msgstr ""
-#: config/tc-m68k.c:6422 config/tc-m68k.c:6456 config/tc-m68k.c:6666
+#: config/tc-m68k.c:6413 config/tc-m68k.c:6447 config/tc-m68k.c:6657
msgid "missing do"
msgstr ""
-#: config/tc-m68k.c:6559
+#: config/tc-m68k.c:6550
msgid "endf without for"
msgstr ""
-#: config/tc-m68k.c:6615
+#: config/tc-m68k.c:6606
msgid "until without repeat"
msgstr ""
-#: config/tc-m68k.c:6702
+#: config/tc-m68k.c:6693
msgid "endw without while"
msgstr ""
-#: config/tc-m68k.c:6818
+#: config/tc-m68k.c:6817
#, c-format
msgid "unrecognized option `%s'"
msgstr ""
-#: config/tc-m68k.c:6863
+#: config/tc-m68k.c:6862
#, c-format
msgid "unrecognized architecture specification `%s'"
msgstr ""
-#: config/tc-m68k.c:6933
+#: config/tc-m68k.c:6932
msgid ""
"680X0 options:\n"
"-l\t\t\tuse 1 word for refs to undefined symbols [default 2]\n"
@@ -3934,13 +4860,14 @@ msgid ""
"\t\t\t[default yes for 68020, 68030, and cpu32]\n"
msgstr ""
-#: config/tc-m68k.c:6943
+#: config/tc-m68k.c:6942
msgid ""
"-m68851 | -mno-68851\n"
"\t\t\ttarget has/lacks memory-management unit coprocessor\n"
"\t\t\t[default yes for 68020 and up]\n"
"-pic, -k\t\tgenerate position independent code\n"
"-S\t\t\tturn jbsr into jsr\n"
+"--pcrel never turn PC-relative branches into absolute jumps\n"
"--register-prefix-optional\n"
"\t\t\trecognize register names without prefix character\n"
"--bitwise-or\t\tdo not treat `|' as a comment character\n"
@@ -3964,230 +4891,234 @@ msgstr ""
msgid "Opcode(%d.%s): "
msgstr ""
-#: config/tc-m88k.c:206
+#: config/tc-m88k.c:205
#, c-format
msgid "Can't hash instruction '%s':%s"
msgstr ""
-#: config/tc-m88k.c:258
+#: config/tc-m88k.c:257
#, c-format
msgid "Invalid mnemonic '%s'"
msgstr ""
-#: config/tc-m88k.c:278
+#: config/tc-m88k.c:277
msgid "Parameter syntax error"
msgstr ""
-#: config/tc-m88k.c:333
+#: config/tc-m88k.c:332
msgid "Unknown relocation type"
msgstr ""
#. Having this here repeats the warning somtimes.
#. But can't we stand that?
-#: config/tc-m88k.c:446
+#: config/tc-m88k.c:445
msgid "Use of obsolete instruction"
msgstr ""
-#: config/tc-m88k.c:563
+#: config/tc-m88k.c:562
msgid "Expression truncated to 16 bits"
msgstr ""
-#: config/tc-m88k.c:629 config/tc-m88k.c:651
+#: config/tc-m88k.c:628 config/tc-m88k.c:650
msgid "Expression truncated to 5 bits"
msgstr ""
-#: config/tc-m88k.c:873
+#: config/tc-m88k.c:872
msgid "Expression truncated to 9 bits"
msgstr ""
-#: config/tc-m88k.c:895
+#: config/tc-m88k.c:894
msgid "Removed lower 2 bits of expression"
msgstr ""
-#: config/tc-m88k.c:1034
+#: config/tc-m88k.c:1033
msgid "Bad relocation type"
msgstr ""
-#: config/tc-m88k.c:1047
+#: config/tc-m88k.c:1046
msgid "md_number_to_disp not defined"
msgstr ""
-#: config/tc-m88k.c:1057
+#: config/tc-m88k.c:1056
msgid "md_number_to_field not defined"
msgstr ""
-#: config/tc-m88k.c:1170
+#: config/tc-m88k.c:1169
msgid "Relaxation should never occur"
msgstr ""
-#: config/tc-m88k.c:1267 config/tc-sparc.c:3363 read.c:1973
+#: config/tc-m88k.c:1264 config/tc-sparc.c:3540 read.c:1962
#, c-format
msgid "BSS length (%d.) <0! Ignored."
msgstr ""
-#: config/tc-m88k.c:1311
+#: config/tc-m88k.c:1308
#, c-format
msgid "Ignoring attempt to re-define symbol %s."
msgstr ""
-#: config/tc-mcore.c:509
+#: config/tc-m88k.h:78
+msgid "m88k convert_frag\n"
+msgstr ""
+
+#: config/tc-mcore.c:508
#, c-format
msgid "register expected, but saw '%.6s'"
msgstr ""
-#: config/tc-mcore.c:593
+#: config/tc-mcore.c:592
#, c-format
msgid "control register expected, but saw '%.6s'"
msgstr ""
-#: config/tc-mcore.c:631
+#: config/tc-mcore.c:630
msgid "bad/missing psr specifier"
msgstr ""
-#: config/tc-mcore.c:792
+#: config/tc-mcore.c:791
msgid "more than 65K literal pools"
msgstr ""
-#: config/tc-mcore.c:846
+#: config/tc-mcore.c:845
msgid "missing ']'"
msgstr ""
-#: config/tc-mcore.c:886
+#: config/tc-mcore.c:885
msgid "operand must be a constant"
msgstr ""
-#: config/tc-mcore.c:888
+#: config/tc-mcore.c:887
#, c-format
msgid "operand must be absolute in range %d..%d, not %d"
msgstr ""
-#: config/tc-mcore.c:926
+#: config/tc-mcore.c:925
msgid "operand must be a multiple of 4"
msgstr ""
-#: config/tc-mcore.c:933
+#: config/tc-mcore.c:932
msgid "operand must be a multiple of 2"
msgstr ""
-#: config/tc-mcore.c:947 config/tc-mcore.c:1459 config/tc-mcore.c:1513
+#: config/tc-mcore.c:946 config/tc-mcore.c:1458 config/tc-mcore.c:1512
msgid "base register expected"
msgstr ""
-#: config/tc-mcore.c:996
+#: config/tc-mcore.c:995
#, c-format
msgid "unknown opcode \"%s\""
msgstr ""
-#: config/tc-mcore.c:1039
+#: config/tc-mcore.c:1038
msgid "invalid register: r15 illegal"
msgstr ""
-#: config/tc-mcore.c:1087 config/tc-mcore.c:1663
+#: config/tc-mcore.c:1086 config/tc-mcore.c:1662
msgid "M340 specific opcode used when assembling for M210"
msgstr ""
-#: config/tc-mcore.c:1105 config/tc-mcore.c:1144 config/tc-mcore.c:1163
-#: config/tc-mcore.c:1182 config/tc-mcore.c:1209 config/tc-mcore.c:1238
-#: config/tc-mcore.c:1275 config/tc-mcore.c:1310 config/tc-mcore.c:1329
-#: config/tc-mcore.c:1348 config/tc-mcore.c:1380 config/tc-mcore.c:1405
-#: config/tc-mcore.c:1462 config/tc-mcore.c:1516 config/tc-mcore.c:1552
-#: config/tc-mcore.c:1610 config/tc-mcore.c:1632 config/tc-mcore.c:1655
+#: config/tc-mcore.c:1104 config/tc-mcore.c:1143 config/tc-mcore.c:1162
+#: config/tc-mcore.c:1181 config/tc-mcore.c:1208 config/tc-mcore.c:1237
+#: config/tc-mcore.c:1274 config/tc-mcore.c:1309 config/tc-mcore.c:1328
+#: config/tc-mcore.c:1347 config/tc-mcore.c:1379 config/tc-mcore.c:1404
+#: config/tc-mcore.c:1461 config/tc-mcore.c:1515 config/tc-mcore.c:1551
+#: config/tc-mcore.c:1609 config/tc-mcore.c:1631 config/tc-mcore.c:1654
msgid "second operand missing"
msgstr ""
-#: config/tc-mcore.c:1120
+#: config/tc-mcore.c:1119
msgid "destination register must be r1"
msgstr ""
-#: config/tc-mcore.c:1141
+#: config/tc-mcore.c:1140
msgid "source register must be r1"
msgstr ""
-#: config/tc-mcore.c:1204 config/tc-mcore.c:1261
+#: config/tc-mcore.c:1203 config/tc-mcore.c:1260
msgid "immediate is not a power of two"
msgstr ""
-#: config/tc-mcore.c:1232
+#: config/tc-mcore.c:1231
msgid "translating bgeni to movi"
msgstr ""
-#: config/tc-mcore.c:1269
+#: config/tc-mcore.c:1268
msgid "translating mgeni to movi"
msgstr ""
-#: config/tc-mcore.c:1301
+#: config/tc-mcore.c:1300
msgid "translating bmaski to movi"
msgstr ""
-#: config/tc-mcore.c:1375
+#: config/tc-mcore.c:1374
#, c-format
msgid "displacement too large (%d)"
msgstr ""
-#: config/tc-mcore.c:1389
+#: config/tc-mcore.c:1388
msgid "Invalid register: r0 and r15 illegal"
msgstr ""
-#: config/tc-mcore.c:1420
+#: config/tc-mcore.c:1419
msgid "bad starting register: r0 and r15 invalid"
msgstr ""
-#: config/tc-mcore.c:1433
+#: config/tc-mcore.c:1432
msgid "ending register must be r15"
msgstr ""
-#: config/tc-mcore.c:1453
+#: config/tc-mcore.c:1452
msgid "bad base register: must be r0"
msgstr ""
-#: config/tc-mcore.c:1471
+#: config/tc-mcore.c:1470
msgid "first register must be r4"
msgstr ""
-#: config/tc-mcore.c:1482
+#: config/tc-mcore.c:1481
msgid "last register must be r7"
msgstr ""
-#: config/tc-mcore.c:1519
+#: config/tc-mcore.c:1518
msgid "reg-reg expected"
msgstr ""
-#: config/tc-mcore.c:1629
+#: config/tc-mcore.c:1628
msgid "second operand must be 1"
msgstr ""
-#: config/tc-mcore.c:1650
+#: config/tc-mcore.c:1649
msgid "zero used as immediate value"
msgstr ""
-#: config/tc-mcore.c:1677
+#: config/tc-mcore.c:1676
msgid "duplicated psr bit specifier"
msgstr ""
-#: config/tc-mcore.c:1683
+#: config/tc-mcore.c:1682
msgid "`af' must appear alone"
msgstr ""
-#: config/tc-mcore.c:1690
+#: config/tc-mcore.c:1689
#, c-format
msgid "unimplemented opcode \"%s\""
msgstr ""
-#: config/tc-mcore.c:1699
+#: config/tc-mcore.c:1698
#, c-format
msgid "ignoring operands: %s "
msgstr ""
-#: config/tc-mcore.c:1768 config/tc-w65.c:856
+#: config/tc-mcore.c:1767 config/tc-w65.c:836
msgid "Bad call to MD_NTOF()"
msgstr ""
-#: config/tc-mcore.c:1841
+#: config/tc-mcore.c:1840
#, c-format
msgid "unrecognised cpu type '%s'"
msgstr ""
-#: config/tc-mcore.c:1860
+#: config/tc-mcore.c:1859
msgid ""
"MCORE specific options:\n"
" -{no-}jsri2bsr\t {dis}able jsri to bsr transformation (def: dis)\n"
@@ -4197,244 +5128,254 @@ msgid ""
" -EL assemble for a little endian system\n"
msgstr ""
-#: config/tc-mcore.c:1879
+#: config/tc-mcore.c:1878
msgid "failed sanity check: short_jump"
msgstr ""
-#: config/tc-mcore.c:1890
+#: config/tc-mcore.c:1889
msgid "failed sanity check: long_jump"
msgstr ""
-#: config/tc-mcore.c:1917
+#: config/tc-mcore.c:1916
#, c-format
msgid "odd displacement at %x"
msgstr ""
-#: config/tc-mcore.c:2105
+#: config/tc-mcore.c:2104
msgid "unknown"
msgstr ""
-#: config/tc-mcore.c:2136
+#: config/tc-mcore.c:2135
#, c-format
msgid "odd distance branch (0x%x bytes)"
msgstr ""
-#: config/tc-mcore.c:2140
+#: config/tc-mcore.c:2139
#, c-format
msgid "pcrel for branch to %s too far (0x%x)"
msgstr ""
-#: config/tc-mcore.c:2159
+#: config/tc-mcore.c:2158
#, c-format
msgid "pcrel for lrw/jmpi/jsri to %s too far (0x%x)"
msgstr ""
-#: config/tc-mcore.c:2170
+#: config/tc-mcore.c:2169
#, c-format
msgid "pcrel for loopt too far (0x%x)"
msgstr ""
-#: config/tc-mcore.c:2402
+#: config/tc-mcore.c:2400
#, c-format
msgid "Can not do %d byte %srelocation"
msgstr ""
-#: config/tc-mcore.c:2404
+#: config/tc-mcore.c:2402
msgid "pc-relative"
msgstr ""
-#: config/tc-mcore.c:2421 config/tc-pj.c:586 config/tc-sh.c:3005
+#: config/tc-mcore.c:2419 config/tc-pj.c:569 config/tc-sh.c:3326
#, c-format
msgid "Cannot represent relocation type %s"
msgstr ""
-#: config/tc-mips.c:860
-msgid "-G not supported in this configuration."
+#: config/tc-mips.c:642
+#, c-format
+msgid "internal Error, line %d, %s"
msgstr ""
-#: config/tc-mips.c:1005
-msgid "trap exception not supported at ISA 1"
+#: config/tc-mips.c:644
+msgid "MIPS internal Error"
msgstr ""
-#: config/tc-mips.c:1046
-msgid "Could not set architecture and machine"
+#: config/tc-mips.c:927
+msgid "-G not supported in this configuration."
+msgstr ""
+
+#: config/tc-mips.c:996
+msgid "trap exception not supported at ISA 1"
msgstr ""
-#: config/tc-mips.c:1085
+#: config/tc-mips.c:1053
#, c-format
msgid "internal: can't hash `%s': %s"
msgstr ""
-#: config/tc-mips.c:1093
+#: config/tc-mips.c:1061
#, c-format
msgid "internal error: bad mips16 opcode: %s %s\n"
msgstr ""
-#: config/tc-mips.c:1262
+#: config/tc-mips.c:1229
#, c-format
msgid "returned from mips_ip(%s) insn_opcode = 0x%x\n"
msgstr ""
-#: config/tc-mips.c:1816 config/tc-mips.c:11394
+#: config/tc-mips.c:1782 config/tc-mips.c:11374
msgid "extended instruction in delay slot"
msgstr ""
-#: config/tc-mips.c:1838 config/tc-mips.c:1845
+#: config/tc-mips.c:1804 config/tc-mips.c:1811
#, c-format
msgid "jump to misaligned address (0x%lx)"
msgstr ""
-#: config/tc-mips.c:2495 config/tc-mips.c:2836
+#: config/tc-mips.c:2460 config/tc-mips.c:2814
msgid "Macro instruction expanded into multiple instructions"
msgstr ""
-#: config/tc-mips.c:2889
+#: config/tc-mips.c:2867
msgid "unsupported large constant"
msgstr ""
-#: config/tc-mips.c:2891
+#: config/tc-mips.c:2869
#, c-format
msgid "Instruction %s requires absolute expression"
msgstr ""
-#: config/tc-mips.c:3037
+#: config/tc-mips.c:3015
msgid "Number larger than 32 bits"
msgstr ""
-#: config/tc-mips.c:3058
+#: config/tc-mips.c:3036
msgid "Number larger than 64 bits"
msgstr ""
-#: config/tc-mips.c:3324 config/tc-mips.c:3396 config/tc-mips.c:5075
-#: config/tc-mips.c:5126 config/tc-mips.c:5662 config/tc-mips.c:5725
+#: config/tc-mips.c:3304 config/tc-mips.c:3376 config/tc-mips.c:5055
+#: config/tc-mips.c:5106 config/tc-mips.c:5642 config/tc-mips.c:5705
msgid "PIC code offset overflow (max 16 signed bits)"
msgstr ""
-#: config/tc-mips.c:3635
+#: config/tc-mips.c:3615
#, c-format
msgid "Branch %s is always false (nop)"
msgstr ""
-#: config/tc-mips.c:3640
+#: config/tc-mips.c:3620
#, c-format
msgid "Branch likely %s is always false"
msgstr ""
-#: config/tc-mips.c:3647 config/tc-mips.c:3721 config/tc-mips.c:3824
-#: config/tc-mips.c:3879 config/tc-mips.c:6762 config/tc-mips.c:6771
-#: config/tc-mips.c:6779 config/tc-mips.c:6888
+#: config/tc-mips.c:3627 config/tc-mips.c:3701 config/tc-mips.c:3804
+#: config/tc-mips.c:3859 config/tc-mips.c:6742 config/tc-mips.c:6751
+#: config/tc-mips.c:6759 config/tc-mips.c:6868
msgid "Unsupported large constant"
msgstr ""
#. result is always true
-#: config/tc-mips.c:3683
+#: config/tc-mips.c:3663
#, c-format
msgid "Branch %s is always true"
msgstr ""
-#: config/tc-mips.c:3955 config/tc-mips.c:4062
+#: config/tc-mips.c:3935 config/tc-mips.c:4042
msgid "Divide by zero."
msgstr ""
-#: config/tc-mips.c:4646
+#: config/tc-mips.c:4626
msgid "MIPS PIC call to register other than $25"
msgstr ""
-#: config/tc-mips.c:4651 config/tc-mips.c:4763
+#: config/tc-mips.c:4631 config/tc-mips.c:4743
msgid "No .cprestore pseudo-op used in PIC code"
msgstr ""
-#: config/tc-mips.c:4836 config/tc-mips.c:4925 config/tc-mips.c:5413
-#: config/tc-mips.c:5454 config/tc-mips.c:5472 config/tc-mips.c:6101
+#: config/tc-mips.c:4816 config/tc-mips.c:4905 config/tc-mips.c:5393
+#: config/tc-mips.c:5434 config/tc-mips.c:5452 config/tc-mips.c:6081
msgid "opcode not supported on this processor"
msgstr ""
-#: config/tc-mips.c:5932 config/tc-mips.c:6656
+#: config/tc-mips.c:5912 config/tc-mips.c:6636
msgid "Macro used $at after \".set noat\""
msgstr ""
-#: config/tc-mips.c:6072 config/tc-mips.c:6090
+#: config/tc-mips.c:6052 config/tc-mips.c:6070
msgid "rotate count too large"
msgstr ""
-#: config/tc-mips.c:6141
+#: config/tc-mips.c:6121
#, c-format
msgid "Instruction %s: result is always false"
msgstr ""
-#: config/tc-mips.c:6310
+#: config/tc-mips.c:6290
#, c-format
msgid "Instruction %s: result is always true"
msgstr ""
-#: config/tc-mips.c:6449 config/tc-mips.c:6476 config/tc-mips.c:6548
-#: config/tc-mips.c:6573
+#: config/tc-mips.c:6429 config/tc-mips.c:6456 config/tc-mips.c:6528
+#: config/tc-mips.c:6553
msgid "operand overflow"
msgstr ""
#. FIXME: Check if this is one of the itbl macros, since they
#. are added dynamically.
-#: config/tc-mips.c:6652
+#: config/tc-mips.c:6632
#, c-format
msgid "Macro %s not implemented yet"
msgstr ""
-#: config/tc-mips.c:6922
+#: config/tc-mips.c:6902
#, c-format
msgid "internal: bad mips opcode (mask error): %s %s"
msgstr ""
-#: config/tc-mips.c:6974
+#: config/tc-mips.c:6958
#, c-format
msgid "internal: bad mips opcode (unknown operand type `%c'): %s %s"
msgstr ""
-#: config/tc-mips.c:6981
+#: config/tc-mips.c:6965
#, c-format
msgid "internal: bad mips opcode (bits 0x%lx undefined): %s %s"
msgstr ""
-#: config/tc-mips.c:7089
+#: config/tc-mips.c:7073
#, c-format
-msgid "opcode not supported on this processor: %d (MIPS%d)"
+msgid "opcode not supported on this processor: %s (%s)"
msgstr ""
-#: config/tc-mips.c:7159
+#: config/tc-mips.c:7144
#, c-format
msgid "Improper shift amount (%ld)"
msgstr ""
-#: config/tc-mips.c:7186 config/tc-mips.c:8306 config/tc-mips.c:8421
+#: config/tc-mips.c:7170 config/tc-mips.c:8324 config/tc-mips.c:8439
#, c-format
msgid "Invalid value for `%s' (%lu)"
msgstr ""
-#: config/tc-mips.c:7204
+#: config/tc-mips.c:7188
#, c-format
msgid "Illegal break code (%ld)"
msgstr ""
-#: config/tc-mips.c:7218
+#: config/tc-mips.c:7202
#, c-format
msgid "Illegal lower break code (%ld)"
msgstr ""
-#: config/tc-mips.c:7231
+#: config/tc-mips.c:7215
#, c-format
-msgid "Illegal syscall code (%ld)"
+msgid "Illegal 20-bit code (%ld)"
msgstr ""
-#: config/tc-mips.c:7243
+#: config/tc-mips.c:7227
#, c-format
msgid "Coproccesor code > 25 bits (%ld)"
msgstr ""
-#: config/tc-mips.c:7257
+#: config/tc-mips.c:7240
+#, c-format
+msgid "Illegal 19-bit code (%ld)"
+msgstr ""
+
+#: config/tc-mips.c:7252
#, c-format
msgid "Invalidate performance regster (%ld)"
msgstr ""
-#: config/tc-mips.c:7293
+#: config/tc-mips.c:7289
#, c-format
msgid "Invalid register number (%d)"
msgstr ""
@@ -4449,11 +5390,11 @@ msgstr ""
msgid "Float register should be even, was %d"
msgstr ""
-#: config/tc-mips.c:7515 config/tc-mips.c:7751 config/tc-mips.c:7790
+#: config/tc-mips.c:7514
msgid "absolute expression required"
msgstr ""
-#: config/tc-mips.c:7576
+#: config/tc-mips.c:7575
#, c-format
msgid "Bad floating point constant: %s"
msgstr ""
@@ -4462,104 +5403,103 @@ msgstr ""
msgid "Can't use floating point insn in this section"
msgstr ""
-#: config/tc-mips.c:7753
+#: config/tc-mips.c:7751
msgid "16 bit expression not in range 0..65535"
msgstr ""
-#: config/tc-mips.c:7792
+#: config/tc-mips.c:7788
msgid "16 bit expression not in range -32768..32767"
msgstr ""
-#: config/tc-mips.c:7863
+#: config/tc-mips.c:7859
msgid "lui expression not in range 0..65535"
msgstr ""
-#: config/tc-mips.c:7887
+#: config/tc-mips.c:7883
#, c-format
msgid "invalid condition code register $fcc%d"
msgstr ""
-#: config/tc-mips.c:7895
+#: config/tc-mips.c:7908
+msgid "invalid coprocessor sub-selection value (0-7)"
+msgstr ""
+
+#: config/tc-mips.c:7913
#, c-format
msgid "bad char = '%c'\n"
msgstr ""
-#: config/tc-mips.c:7908 config/tc-mips.c:8446
+#: config/tc-mips.c:7926 config/tc-mips.c:8464
msgid "illegal operands"
msgstr ""
-#: config/tc-mips.c:7975
+#: config/tc-mips.c:7993
msgid "unrecognized opcode"
msgstr ""
-#: config/tc-mips.c:8084
+#: config/tc-mips.c:8102
#, c-format
msgid "invalid register number (%d)"
msgstr ""
-#: config/tc-mips.c:8165
+#: config/tc-mips.c:8183
msgid "used $at without \".set noat\""
msgstr ""
-#: config/tc-mips.c:8340
+#: config/tc-mips.c:8358
msgid "can't parse register list"
msgstr ""
-#: config/tc-mips.c:8374 config/tc-mips.c:8404
+#: config/tc-mips.c:8392 config/tc-mips.c:8422
msgid "invalid register list"
msgstr ""
-#: config/tc-mips.c:8571
+#: config/tc-mips.c:8590
msgid "extended operand requested but not required"
msgstr ""
-#: config/tc-mips.c:8573
+#: config/tc-mips.c:8592
msgid "invalid unextended operand value"
msgstr ""
-#: config/tc-mips.c:8601
+#: config/tc-mips.c:8620
msgid "operand value out of range for instruction"
msgstr ""
-#: config/tc-mips.c:9052
-#, c-format
-msgid "ignoring invalid leading 'v' in -mcpu=%s switch"
-msgstr ""
-
-#: config/tc-mips.c:9058
+#: config/tc-mips.c:9005
#, c-format
msgid "invalid architecture -mcpu=%s"
msgstr ""
-#: config/tc-mips.c:9108
+#: config/tc-mips.c:9054
msgid "-G may not be used with embedded PIC code"
msgstr ""
-#: config/tc-mips.c:9120
+#: config/tc-mips.c:9066
msgid "-call_shared is supported only for ELF format"
msgstr ""
-#: config/tc-mips.c:9126 config/tc-mips.c:10205 config/tc-mips.c:10373
+#: config/tc-mips.c:9072 config/tc-mips.c:10158 config/tc-mips.c:10332
msgid "-G may not be used with SVR4 PIC code"
msgstr ""
-#: config/tc-mips.c:9135
+#: config/tc-mips.c:9081
msgid "-non_shared is supported only for ELF format"
msgstr ""
-#: config/tc-mips.c:9151
+#: config/tc-mips.c:9097
msgid "-G is not supported for this configuration"
msgstr ""
-#: config/tc-mips.c:9156
+#: config/tc-mips.c:9102
msgid "-G may not be used with SVR4 or embedded PIC code"
msgstr ""
-#: config/tc-mips.c:9180
+#: config/tc-mips.c:9126
msgid "No compiled in support for 64 bit object file format"
msgstr ""
-#: config/tc-mips.c:9270
+#: config/tc-mips.c:9218
msgid ""
"MIPS options:\n"
"-membedded-pic\t\tgenerate embedded position independent code\n"
@@ -4570,37 +5510,41 @@ msgid ""
"\t\t\timplicitly with the gp register [default 8]\n"
msgstr ""
-#: config/tc-mips.c:9278
+#: config/tc-mips.c:9226
msgid ""
"-mips1\t\t\tgenerate MIPS ISA I instructions\n"
"-mips2\t\t\tgenerate MIPS ISA II instructions\n"
"-mips3\t\t\tgenerate MIPS ISA III instructions\n"
"-mips4\t\t\tgenerate MIPS ISA IV instructions\n"
+"-mips5 generate MIPS ISA V instructions\n"
+"-mips32 generate MIPS32 ISA instructions\n"
+"-mips64 generate MIPS64 ISA instructions\n"
"-mcpu=CPU\t\tgenerate code for CPU, where CPU is one of:\n"
msgstr ""
-#: config/tc-mips.c:9304
+#: config/tc-mips.c:9257
msgid ""
"-mCPU\t\t\tequivalent to -mcpu=CPU.\n"
"-no-mCPU\t\tdon't generate code specific to CPU.\n"
"\t\t\tFor -mCPU and -no-mCPU, CPU must be one of:\n"
msgstr ""
-#: config/tc-mips.c:9317
+#: config/tc-mips.c:9270
msgid ""
"-mips16\t\t\tgenerate mips16 instructions\n"
"-no-mips16\t\tdo not generate mips16 instructions\n"
msgstr ""
-#: config/tc-mips.c:9320
+#: config/tc-mips.c:9273
msgid ""
"-O0\t\t\tremove unneeded NOPs, do not swap branches\n"
"-O\t\t\tremove unneeded NOPs and swap branches\n"
+"--[no-]construct-floats [dis]allow floating point values to be constructed\n"
"--trap, --no-break\ttrap exception on div by 0 and mult overflow\n"
"--break, --no-trap\tbreak exception on div by 0 and mult overflow\n"
msgstr ""
-#: config/tc-mips.c:9326
+#: config/tc-mips.c:9280
msgid ""
"-KPIC, -call_shared\tgenerate SVR4 position independent code\n"
"-non_shared\t\tdo not generate position independent code\n"
@@ -4609,408 +5553,429 @@ msgid ""
"-64\t\t\tcreate 64 bit object file\n"
msgstr ""
-#: config/tc-mips.c:9383
+#: config/tc-mips.c:9337
#, c-format
msgid "Unsupported reloc size %d"
msgstr ""
-#: config/tc-mips.c:9486
+#: config/tc-mips.c:9440
msgid "Unmatched %%hi reloc"
msgstr ""
-#: config/tc-mips.c:9610
+#: config/tc-mips.c:9563
msgid "Invalid PC relative reloc"
msgstr ""
-#: config/tc-mips.c:9720 config/tc-sparc.c:2925 config/tc-sparc.c:2932
-#: config/tc-sparc.c:2939 config/tc-sparc.c:2946 config/tc-sparc.c:2953
-#: config/tc-sparc.c:2962 config/tc-sparc.c:2973 config/tc-sparc.c:2999
-#: config/tc-sparc.c:3027 write.c:971 write.c:1035
+#: config/tc-mips.c:9673 config/tc-sparc.c:3101 config/tc-sparc.c:3108
+#: config/tc-sparc.c:3115 config/tc-sparc.c:3122 config/tc-sparc.c:3129
+#: config/tc-sparc.c:3138 config/tc-sparc.c:3149 config/tc-sparc.c:3175
+#: config/tc-sparc.c:3203 write.c:992 write.c:1056
msgid "relocation overflow"
msgstr ""
-#: config/tc-mips.c:9736
+#: config/tc-mips.c:9689
#, c-format
msgid "Branch to odd address (%lx)"
msgstr ""
-#: config/tc-mips.c:9900
+#: config/tc-mips.c:9853
#, c-format
msgid "%08lx UNDEFINED\n"
msgstr ""
-#: config/tc-mips.c:9966
+#: config/tc-mips.c:9919
msgid "Alignment negative: 0 assumed."
msgstr ""
-#: config/tc-mips.c:10054
+#: config/tc-mips.c:10007
msgid "No read only data section in this object file format"
msgstr ""
-#: config/tc-mips.c:10077
+#: config/tc-mips.c:10030
msgid "Global pointers not supported; recompile -G 0"
msgstr ""
-#: config/tc-mips.c:10163
+#: config/tc-mips.c:10116
#, c-format
msgid "%s: no such section"
msgstr ""
-#: config/tc-mips.c:10200
+#: config/tc-mips.c:10153
#, c-format
msgid ".option pic%d not supported"
msgstr ""
-#: config/tc-mips.c:10211
+#: config/tc-mips.c:10164
#, c-format
msgid "Unrecognized option \"%s\""
msgstr ""
-#: config/tc-mips.c:10274
+#: config/tc-mips.c:10227
msgid "`noreorder' must be set before `nomacro'"
msgstr ""
-#: config/tc-mips.c:10309
+#: config/tc-mips.c:10269
msgid "unknown ISA level"
msgstr ""
-#: config/tc-mips.c:10332
+#: config/tc-mips.c:10291
msgid ".set pop with no .set push"
msgstr ""
-#: config/tc-mips.c:10356
+#: config/tc-mips.c:10315
#, c-format
msgid "Tried to set unrecognized symbol: %s\n"
msgstr ""
-#: config/tc-mips.c:10406
+#: config/tc-mips.c:10365
msgid ".cpload not in noreorder section"
msgstr ""
-#: config/tc-mips.c:10488
+#: config/tc-mips.c:10447
msgid "Unsupported use of .gpword"
msgstr ""
-#: config/tc-mips.c:10625
+#: config/tc-mips.c:10584
msgid "expected `$'"
msgstr ""
-#: config/tc-mips.c:10633
+#: config/tc-mips.c:10592
msgid "Bad register number"
msgstr ""
-#: config/tc-mips.c:10649
+#: config/tc-mips.c:10608
msgid "Unrecognized register name"
msgstr ""
-#: config/tc-mips.c:10848
+#: config/tc-mips.c:10807
msgid "unsupported PC relative reference to different section"
msgstr ""
-#: config/tc-mips.c:10957
+#: config/tc-mips.c:10916
msgid "unsupported relocation"
msgstr ""
-#: config/tc-mips.c:11040
+#: config/tc-mips.c:11020
msgid "AT used after \".set noat\" or macro used after \".set nomacro\""
msgstr ""
-#: config/tc-mips.c:11103
+#: config/tc-mips.c:11083
msgid "Double check fx_r_type in tc-mips.c:tc_gen_reloc"
msgstr ""
-#: config/tc-mips.c:11615
+#: config/tc-mips.c:11596
msgid "missing `.end' at end of assembly"
msgstr ""
-#: config/tc-mips.c:11630
+#: config/tc-mips.c:11611
msgid "Expected simple number."
msgstr ""
-#: config/tc-mips.c:11656
+#: config/tc-mips.c:11637
#, c-format
msgid " *input_line_pointer == '%c' 0x%02x\n"
msgstr ""
-#: config/tc-mips.c:11658
+#: config/tc-mips.c:11639
msgid "Invalid number"
msgstr ""
-#: config/tc-mips.c:11713
+#: config/tc-mips.c:11693
msgid ".end not in text section"
msgstr ""
-#: config/tc-mips.c:11717
+#: config/tc-mips.c:11697
msgid ".end directive without a preceding .ent directive."
msgstr ""
-#: config/tc-mips.c:11726
+#: config/tc-mips.c:11706
msgid ".end symbol does not match .ent symbol."
msgstr ""
-#: config/tc-mips.c:11729
+#: config/tc-mips.c:11709
msgid ".end directive missing or unknown symbol"
msgstr ""
-#: config/tc-mips.c:11804
+#: config/tc-mips.c:11784
msgid ".ent or .aent not in text section."
msgstr ""
-#: config/tc-mips.c:11807
+#: config/tc-mips.c:11787
msgid "missing `.end'"
msgstr ""
-#: config/tc-mips.c:11840 ecoff.c:3227
+#: config/tc-mips.c:11820 ecoff.c:3205
msgid ".frame outside of .ent"
msgstr ""
-#: config/tc-mips.c:11851 ecoff.c:3238
+#: config/tc-mips.c:11831 ecoff.c:3216
msgid "Bad .frame directive"
msgstr ""
-#: config/tc-mips.c:11881
+#: config/tc-mips.c:11861
msgid ".mask/.fmask outside of .ent"
msgstr ""
-#: config/tc-mips.c:11888
+#: config/tc-mips.c:11868
msgid "Bad .mask/.fmask directive"
msgstr ""
-#: config/tc-mn10200.c:313
+#: config/tc-mn10200.c:333
msgid ""
"MN10200 options:\n"
"none yet\n"
msgstr ""
-#: config/tc-mn10200.c:788 config/tc-mn10300.c:912 config/tc-ppc.c:1614
-#: config/tc-v850.c:1691
+#: config/tc-mn10200.c:807 config/tc-mn10300.c:953 config/tc-ppc.c:1736
+#: config/tc-v850.c:1728
#, c-format
msgid "Unrecognized opcode: `%s'"
msgstr ""
-#: config/tc-mn10300.c:495
+#: config/tc-mn10200.c:1050 config/tc-mn10300.c:1476 config/tc-ppc.c:2097
+#: config/tc-v850.c:2152
+#, c-format
+msgid "junk at end of line: `%s'"
+msgstr ""
+
+#: config/tc-mn10200.c:1374 config/tc-mn10300.c:2045 config/tc-ppc.c:1224
+#: config/tc-v850.c:1656
+#, c-format
+msgid "operand out of range (%s not between %ld and %ld)"
+msgstr ""
+
+#: config/tc-mn10300.c:542
msgid ""
"MN10300 options:\n"
"none yet\n"
msgstr ""
-#: config/tc-mn10300.c:930
+#: config/tc-mn10300.c:970
msgid "Invalid opcode/operands"
msgstr ""
-#: config/tc-mn10300.c:1406
+#: config/tc-mn10300.c:1447
msgid "Invalid register specification."
msgstr ""
-#: config/tc-ns32k.c:444
+#: config/tc-ns32k.c:446
msgid "Invalid syntax in PC-relative addressing mode"
msgstr ""
-#: config/tc-ns32k.c:468
+#: config/tc-ns32k.c:470
msgid "Invalid syntax in External addressing mode"
msgstr ""
-#: config/tc-ns32k.c:537
+#: config/tc-ns32k.c:550
msgid "Invalid syntax in Memory Relative addressing mode"
msgstr ""
-#: config/tc-ns32k.c:604
+#: config/tc-ns32k.c:617
msgid "Invalid scaled-indexed mode, use (b,w,d,q)"
msgstr ""
-#: config/tc-ns32k.c:609
+#: config/tc-ns32k.c:622
msgid "Syntax in scaled-indexed mode, use [Rn:m] where n=[0..7] m={b,w,d,q}"
msgstr ""
-#: config/tc-ns32k.c:615
+#: config/tc-ns32k.c:627
msgid "Scaled-indexed addressing mode combined with scaled-index"
msgstr ""
-#: config/tc-ns32k.c:624
+#: config/tc-ns32k.c:638
msgid "Invalid or illegal addressing mode combined with scaled-index"
msgstr ""
-#: config/tc-ns32k.c:731
+#: config/tc-ns32k.c:750
msgid "Premature end of suffix -- Defaulting to d"
msgstr ""
-#: config/tc-ns32k.c:744
+#: config/tc-ns32k.c:763
msgid "Bad suffix after ':' use {b|w|d} Defaulting to d"
msgstr ""
-#: config/tc-ns32k.c:785
+#: config/tc-ns32k.c:809
msgid "Very short instr to option, ie you can't do it on a NULLstr"
msgstr ""
-#: config/tc-ns32k.c:829
+#: config/tc-ns32k.c:860
msgid "No such entry in list. (cpu/mmu register)"
msgstr ""
-#: config/tc-ns32k.c:870
+#: config/tc-ns32k.c:901
msgid "Internal consistency error. check ns32k-opcode.h"
msgstr ""
-#: config/tc-ns32k.c:891
+#: config/tc-ns32k.c:925
msgid "Address of immediate operand"
msgstr ""
-#: config/tc-ns32k.c:892
+#: config/tc-ns32k.c:926
msgid "Invalid immediate write operand."
msgstr ""
-#: config/tc-ns32k.c:1019
+#: config/tc-ns32k.c:1056
msgid "Bad opcode-table-option, check in file ns32k-opcode.h"
msgstr ""
-#: config/tc-ns32k.c:1048
+#: config/tc-ns32k.c:1089
msgid "No such opcode"
msgstr ""
-#: config/tc-ns32k.c:1116
+#: config/tc-ns32k.c:1166
msgid "Bad suffix, defaulting to d"
msgstr ""
-#: config/tc-ns32k.c:1138
+#: config/tc-ns32k.c:1194
msgid "Too many operands passed to instruction"
msgstr ""
-#. check error in default
-#: config/tc-ns32k.c:1149
+#. Check error in default.
+#: config/tc-ns32k.c:1207
msgid "Wrong numbers of operands in default, check ns32k-opcodes.h"
msgstr ""
-#: config/tc-ns32k.c:1154
+#: config/tc-ns32k.c:1211
msgid "Wrong number of operands"
msgstr ""
-#: config/tc-ns32k.c:1273
+#: config/tc-ns32k.c:1332
msgid "iif convert internal pcrel/binary"
msgstr ""
-#: config/tc-ns32k.c:1289
+#: config/tc-ns32k.c:1349
msgid "Bignum too big for long"
msgstr ""
-#: config/tc-ns32k.c:1364
+#: config/tc-ns32k.c:1427
msgid "iif convert internal pcrel/pointer"
msgstr ""
-#: config/tc-ns32k.c:1369
+#: config/tc-ns32k.c:1432
msgid "Internal logic error in iif.iifP[n].type"
msgstr ""
-#. We cant relax this case
-#: config/tc-ns32k.c:1403
+#. We cant relax this case.
+#: config/tc-ns32k.c:1470
msgid "Can't relax difference"
msgstr ""
-#: config/tc-ns32k.c:1452
+#: config/tc-ns32k.c:1518
msgid "Displacement to large for :d"
msgstr ""
-#: config/tc-ns32k.c:1463
+#: config/tc-ns32k.c:1531
msgid "Internal logic error in iif.iifP[].type"
msgstr ""
-#: config/tc-ns32k.c:1518
+#: config/tc-ns32k.c:1591
#, c-format
msgid "Can not do %d byte pc-relative relocation for storage type %d"
msgstr ""
-#: config/tc-ns32k.c:1521
+#: config/tc-ns32k.c:1594
#, c-format
msgid "Can not do %d byte relocation for storage type %d"
msgstr ""
-#: config/tc-ns32k.c:1553
+#. Fatal.
+#: config/tc-ns32k.c:1626
#, c-format
msgid "Can't hash %s: %s"
msgstr ""
-#: config/tc-ns32k.c:1637
+#: config/tc-ns32k.c:1714
msgid "Byte displacement out of range. line number not valid"
msgstr ""
-#: config/tc-ns32k.c:1646
+#: config/tc-ns32k.c:1723
msgid "Word displacement out of range. line number not valid"
msgstr ""
-#: config/tc-ns32k.c:1660
+#: config/tc-ns32k.c:1737
msgid "Double word displacement out of range"
msgstr ""
-#: config/tc-ns32k.c:1680
+#: config/tc-ns32k.c:1757
#, c-format
msgid "Internal logic error. line %s, file \"%s\""
msgstr ""
-#: config/tc-ns32k.c:1728
+#: config/tc-ns32k.c:1805
#, c-format
msgid "Internal logic error. line %s, file \"%s\""
msgstr ""
-#: config/tc-ns32k.c:1839
+#: config/tc-ns32k.c:1909
msgid "Bit field out of range"
msgstr ""
-#: config/tc-ns32k.c:2088
+#: config/tc-ns32k.c:2176
#, c-format
msgid "invalid architecture option -m%s"
msgstr ""
-#: config/tc-ns32k.c:2104
+#: config/tc-ns32k.c:2192
msgid ""
"NS32K options:\n"
"-m32032 | -m32532\tselect variant of NS32K architecture\n"
msgstr ""
-#: config/tc-ns32k.c:2284
+#: config/tc-ns32k.c:2370
#, c-format
msgid "Cannot find relocation type for symbol %s, code %d"
msgstr ""
-#: config/tc-pj.c:70 config/tc-pj.c:78
+#: config/tc-pj.c:66 config/tc-pj.c:74
msgid "confusing relocation expressions"
msgstr ""
-#: config/tc-pj.c:172
+#: config/tc-pj.c:165
msgid "can't have relocation for ipush"
msgstr ""
-#: config/tc-pj.c:282
+#: config/tc-pj.c:272
#, c-format
msgid "unknown opcode %s"
msgstr ""
-#: config/tc-pj.c:431
+#: config/tc-pj.c:421
msgid ""
"PJ options:\n"
"-little\t\t\tgenerate little endian code\n"
"-big\t\t\tgenerate big endian code\n"
msgstr ""
-#: config/tc-pj.c:472 config/tc-sh.c:2577 config/tc-sh.c:2584
-#: config/tc-sh.c:2591 config/tc-sh.c:2598
+#: config/tc-pj.c:458 config/tc-sh.c:2899 config/tc-sh.c:2906
+#: config/tc-sh.c:2913 config/tc-sh.c:2920
msgid "pcrel too far"
msgstr ""
-#: config/tc-pj.c:541 config/tc-sh.c:2670
+#: config/tc-pj.c:526 config/tc-sh.c:3011
msgid "offset out of range"
msgstr ""
-#: config/tc-ppc.c:835
+#: config/tc-pj.h:38
+msgid "convert_frag\n"
+msgstr ""
+
+#: config/tc-pj.h:39
+msgid "estimate size\n"
+msgstr ""
+
+#: config/tc-ppc.c:926
#, c-format
msgid "invalid switch -m%s"
msgstr ""
-#: config/tc-ppc.c:872
+#: config/tc-ppc.c:963
msgid ""
"PowerPC options:\n"
"-u\t\t\tignored\n"
"-mpwrx, -mpwr2\t\tgenerate code for IBM POWER/2 (RIOS2)\n"
"-mpwr\t\t\tgenerate code for IBM POWER (RIOS1)\n"
"-m601\t\t\tgenerate code for Motorola PowerPC 601\n"
-"-mppc, -mppc32, -m403, -m603, -m604\n"
+"-mppc, -mppc32, -m403, -m405, -m603, -m604\n"
"\t\t\tgenerate code for Motorola PowerPC 603/604\n"
"-mppc64, -m620\t\tgenerate code for Motorola PowerPC 620\n"
"-mppc64bridge\t\tgenerate code for PowerPC 64, including bridge insns\n"
@@ -5020,7 +5985,7 @@ msgid ""
"-mno-regnames\t\tDo not allow symbolic names for registers\n"
msgstr ""
-#: config/tc-ppc.c:887
+#: config/tc-ppc.c:978
msgid ""
"-mrelocatable\t\tsupport for GCC's -mrelocatble option\n"
"-mrelocatable-lib\tsupport for GCC's -mrelocatble-lib option\n"
@@ -5034,305 +5999,313 @@ msgid ""
"-Qy, -Qn\t\tignored\n"
msgstr ""
-#: config/tc-ppc.c:922
+#: config/tc-ppc.c:1013
#, c-format
msgid "Unknown default cpu = %s, os = %s"
msgstr ""
-#: config/tc-ppc.c:947
+#: config/tc-ppc.c:1038
msgid "Neither Power nor PowerPC opcodes were selected."
msgstr ""
-#: config/tc-ppc.c:995
+#: config/tc-ppc.c:1117
#, c-format
msgid "Internal assembler error for instruction %s"
msgstr ""
-#: config/tc-ppc.c:1014
+#: config/tc-ppc.c:1136
#, c-format
msgid "Internal assembler error for macro %s"
msgstr ""
-#: config/tc-ppc.c:1224
+#: config/tc-ppc.c:1346
msgid "identifier+constant@got means identifier@got+constant"
msgstr ""
-#: config/tc-ppc.c:1278
+#: config/tc-ppc.c:1400 config/tc-sh.c:341 config/tc-sh.c:369
#, c-format
msgid "%s relocations do not fit in %d bytes\n"
msgstr ""
-#: config/tc-ppc.c:1378
+#: config/tc-ppc.c:1500
#, c-format
msgid "Length of .lcomm \"%s\" is already %ld. Not changed to %ld."
msgstr ""
-#: config/tc-ppc.c:1460
+#: config/tc-ppc.c:1582
msgid "Relocation cannot be done when using -mrelocatable"
msgstr ""
-#: config/tc-ppc.c:1541
+#: config/tc-ppc.c:1663
#, c-format
msgid "syntax error: invalid toc specifier `%s'"
msgstr ""
-#: config/tc-ppc.c:1555
+#: config/tc-ppc.c:1677
#, c-format
msgid "syntax error: expected `]', found `%c'"
msgstr ""
-#: config/tc-ppc.c:1790
+#: config/tc-ppc.c:1912
msgid "[tocv] symbol is not a toc symbol"
msgstr ""
-#: config/tc-ppc.c:1801
+#: config/tc-ppc.c:1923
msgid "Unimplemented toc32 expression modifier"
msgstr ""
-#: config/tc-ppc.c:1806
+#: config/tc-ppc.c:1928
msgid "Unimplemented toc64 expression modifier"
msgstr ""
-#: config/tc-ppc.c:1810
+#: config/tc-ppc.c:1932
#, c-format
msgid "Unexpected return value [%d] from parse_toc_entry!\n"
msgstr ""
-#: config/tc-ppc.c:1963
+#: config/tc-ppc.c:2085
#, c-format
msgid "syntax error; found `%c' but expected `%c'"
msgstr ""
-#: config/tc-ppc.c:2071
+#: config/tc-ppc.c:2197
msgid "wrong number of operands"
msgstr ""
-#: config/tc-ppc.c:2127
+#: config/tc-ppc.c:2253
msgid "Bad .section directive: want a,w,x,e in string"
msgstr ""
-#: config/tc-ppc.c:2241
+#: config/tc-ppc.c:2367
msgid "missing size"
msgstr ""
-#: config/tc-ppc.c:2250
+#: config/tc-ppc.c:2376
msgid "negative size"
msgstr ""
-#: config/tc-ppc.c:2291
+#: config/tc-ppc.c:2417
msgid "missing real symbol name"
msgstr ""
-#: config/tc-ppc.c:2312
+#: config/tc-ppc.c:2438
msgid "attempt to redefine symbol"
msgstr ""
-#: config/tc-ppc.c:2546
+#: config/tc-ppc.c:2672
msgid "The XCOFF file format does not support arbitrary sections"
msgstr ""
-#: config/tc-ppc.c:2654 config/tc-ppc.c:3171 read.c:2985
+#: config/tc-ppc.c:2749
+msgid "missing rename string"
+msgstr ""
+
+#: config/tc-ppc.c:2780 config/tc-ppc.c:3305 read.c:2992
msgid "missing value"
msgstr ""
-#: config/tc-ppc.c:2672
+#: config/tc-ppc.c:2798
msgid "illegal .stabx expression; zero assumed"
msgstr ""
-#: config/tc-ppc.c:2704
+#: config/tc-ppc.c:2830
msgid "missing class"
msgstr ""
-#: config/tc-ppc.c:2713
+#: config/tc-ppc.c:2839
msgid "missing type"
msgstr ""
-#: config/tc-ppc.c:2774
+#: config/tc-ppc.c:2900
msgid "missing symbol name"
msgstr ""
-#: config/tc-ppc.c:2950
+#: config/tc-ppc.c:3076
msgid "nested .bs blocks"
msgstr ""
-#: config/tc-ppc.c:2983
+#: config/tc-ppc.c:3109
msgid ".es without preceding .bs"
msgstr ""
-#: config/tc-ppc.c:3163
+#: config/tc-ppc.c:3297
msgid "non-constant byte count"
msgstr ""
-#: config/tc-ppc.c:3208
+#: config/tc-ppc.c:3342
msgid ".tc not in .toc section"
msgstr ""
-#: config/tc-ppc.c:3227
+#: config/tc-ppc.c:3361
msgid ".tc with no label"
msgstr ""
-#: config/tc-ppc.c:3302
+#: config/tc-ppc.c:3436
msgid "No previous section to return to. Directive ignored."
msgstr ""
#. Section Contents
#. unknown
-#: config/tc-ppc.c:3721
+#: config/tc-ppc.c:3855
msgid "Unsupported section attribute -- 'a'"
msgstr ""
-#: config/tc-ppc.c:3911
+#: config/tc-ppc.c:4045
msgid "bad symbol suffix"
msgstr ""
-#: config/tc-ppc.c:4004
+#: config/tc-ppc.c:4138
msgid "Unrecognized symbol suffix"
msgstr ""
-#: config/tc-ppc.c:4086
+#: config/tc-ppc.c:4220
msgid "two .function pseudo-ops with no intervening .ef"
msgstr ""
-#: config/tc-ppc.c:4099
+#: config/tc-ppc.c:4233
msgid ".ef with no preceding .function"
msgstr ""
-#: config/tc-ppc.c:4227
+#: config/tc-ppc.c:4361
#, c-format
msgid "warning: symbol %s has no csect"
msgstr ""
-#: config/tc-ppc.c:4528
+#: config/tc-ppc.c:4662
msgid "symbol in .toc does not match any .tc"
msgstr ""
-#: config/tc-ppc.c:4826
+#: config/tc-ppc.c:4956 config/tc-v850.c:2431
+msgid "unresolved expression that must be resolved"
+msgstr ""
+
+#: config/tc-ppc.c:4959
msgid "unsupported relocation type"
msgstr ""
-#: config/tc-ppc.c:4880
+#: config/tc-ppc.c:5021
#, c-format
msgid "cannot emit PC relative %s relocation against %s"
msgstr ""
-#: config/tc-ppc.c:4885
+#: config/tc-ppc.c:5026
#, c-format
msgid "cannot emit PC relative %s relocation"
msgstr ""
-#: config/tc-ppc.c:4947
+#: config/tc-ppc.c:5088
msgid "must branch to an address a multiple of 4"
msgstr ""
-#: config/tc-ppc.c:4951
+#: config/tc-ppc.c:5092
#, c-format
msgid "@local or @plt branch destination is too far away, %ld bytes"
msgstr ""
-#: config/tc-ppc.c:4975
+#: config/tc-ppc.c:5116
#, c-format
msgid "Gas failure, reloc value %d\n"
msgstr ""
-#: config/tc-sh.c:675
+#: config/tc-sh.c:878
msgid "illegal register after @-"
msgstr ""
-#: config/tc-sh.c:691
+#: config/tc-sh.c:894
msgid "must be @(r0,...)"
msgstr ""
-#: config/tc-sh.c:707
+#: config/tc-sh.c:910
msgid "syntax error in @(r0,...)"
msgstr ""
-#: config/tc-sh.c:739 config/tc-sh.c:744
+#: config/tc-sh.c:943 config/tc-sh.c:948
msgid "syntax error in @(disp,[Rn, gbr, pc])"
msgstr ""
-#: config/tc-sh.c:749
+#: config/tc-sh.c:953
msgid "expecting )"
msgstr ""
-#: config/tc-sh.c:758
+#: config/tc-sh.c:962
msgid "illegal register after @"
msgstr ""
-#: config/tc-sh.c:1262
+#: config/tc-sh.c:1523
#, c-format
msgid "Invalid register: 'r%d'"
msgstr ""
-#: config/tc-sh.c:1398
+#: config/tc-sh.c:1686
msgid "insn can't be combined with parallel processing insn"
msgstr ""
-#: config/tc-sh.c:1405 config/tc-sh.c:1416
+#: config/tc-sh.c:1693 config/tc-sh.c:1704
msgid "multiple movx specifications"
msgstr ""
-#: config/tc-sh.c:1410 config/tc-sh.c:1437
+#: config/tc-sh.c:1698 config/tc-sh.c:1725
msgid "multiple movy specifications"
msgstr ""
-#: config/tc-sh.c:1418
+#: config/tc-sh.c:1706
msgid "invalid movx address register"
msgstr ""
-#: config/tc-sh.c:1424 config/tc-sh.c:1429
+#: config/tc-sh.c:1712 config/tc-sh.c:1717
msgid "invalid movx dsp register"
msgstr ""
-#: config/tc-sh.c:1446 config/tc-sh.c:1451
+#: config/tc-sh.c:1734 config/tc-sh.c:1739
msgid "invalid movy dsp register"
msgstr ""
-#: config/tc-sh.c:1455
+#: config/tc-sh.c:1743
msgid "invalid movy address register"
msgstr ""
-#: config/tc-sh.c:1461
+#: config/tc-sh.c:1749
msgid "dsp immediate shift value not constant"
msgstr ""
-#: config/tc-sh.c:1468 config/tc-sh.c:1481
+#: config/tc-sh.c:1756 config/tc-sh.c:1769
msgid "multiple parallel processing specifications"
msgstr ""
-#: config/tc-sh.c:1474
+#: config/tc-sh.c:1762
msgid "multiple condition specifications"
msgstr ""
-#: config/tc-sh.c:1490
+#: config/tc-sh.c:1778
msgid "insn cannot be combined with pmuls"
msgstr ""
-#: config/tc-sh.c:1507
+#: config/tc-sh.c:1795
msgid "bad padd / psub pmuls output operand"
msgstr ""
-#: config/tc-sh.c:1517
+#: config/tc-sh.c:1805
msgid "condition not followed by conditionalizable insn"
msgstr ""
-#: config/tc-sh.c:1527
+#: config/tc-sh.c:1815
msgid "unrecognized characters at end of parallel processing insn"
msgstr ""
-#: config/tc-sh.c:1637
+#: config/tc-sh.c:1931
#, c-format
msgid "excess operands: '%s'"
msgstr ""
-#: config/tc-sh.c:1783
+#: config/tc-sh.c:2099
msgid ".uses pseudo-op seen when not relaxing"
msgstr ""
-#: config/tc-sh.c:1789
+#: config/tc-sh.c:2105
msgid "bad .uses format"
msgstr ""
-#: config/tc-sh.c:1850
+#: config/tc-sh.c:2166
msgid ""
"SH options:\n"
"-little\t\t\tgenerate little endian code\n"
@@ -5341,139 +6314,129 @@ msgid ""
"-dsp\t\t\tenable sh-dsp insns, and disable sh3e / sh4 insns.\n"
msgstr ""
-#: config/tc-sh.c:1861 config/tc-w65.c:883
+#: config/tc-sh.c:2177 config/tc-w65.c:862
msgid "call to tc_Nout_fix_to_chars \n"
msgstr ""
-#: config/tc-sh.c:1947
+#: config/tc-sh.c:2261
msgid ".uses does not refer to a local symbol in the same section"
msgstr ""
-#: config/tc-sh.c:1966
+#: config/tc-sh.c:2280
msgid "can't find fixup pointed to by .uses"
msgstr ""
-#: config/tc-sh.c:1989
+#: config/tc-sh.c:2303
msgid ".uses target does not refer to a local symbol in the same section"
msgstr ""
-#: config/tc-sh.c:2086
-#, c-format
-msgid "at 0x%lx, displacement overflows 12-bit field"
+#: config/tc-sh.c:2401
+msgid "displacement overflows 12-bit field"
msgstr ""
-#: config/tc-sh.c:2089
+#: config/tc-sh.c:2404
#, c-format
-msgid "at 0x%lx, displacement to defined symbol %s overflows 12-bit field"
+msgid "displacement to defined symbol %s overflows 12-bit field"
msgstr ""
-#: config/tc-sh.c:2093
+#: config/tc-sh.c:2408
#, c-format
-msgid "at 0x%lx, displacement to undefined symbol %s overflows 12-bit field"
+msgid "displacement to undefined symbol %s overflows 12-bit field"
msgstr ""
-#: config/tc-sh.c:2209
-#, c-format
-msgid "at 0x%lx, displacement overflows 8-bit field"
+#: config/tc-sh.c:2486
+msgid "displacement overflows 8-bit field"
msgstr ""
-#: config/tc-sh.c:2212
+#: config/tc-sh.c:2489
#, c-format
-msgid "at 0x%lx, displacement to defined symbol %s overflows 8-bit field "
+msgid "displacement to defined symbol %s overflows 8-bit field"
msgstr ""
-#: config/tc-sh.c:2216
+#: config/tc-sh.c:2493
#, c-format
-msgid "at 0x%lx, displacement to undefined symbol %s overflows 8-bit field "
+msgid "displacement to undefined symbol %s overflows 8-bit field "
msgstr ""
-#: config/tc-sh.c:2269
+#: config/tc-sh.c:2506
#, c-format
msgid "overflow in branch to %s; converted into longer instruction sequence"
msgstr ""
-#: config/tc-sh.c:2344 config/tc-sh.c:2372 config/tc-sparc.c:3902
-#: config/tc-sparc.c:3921
+#: config/tc-sh.c:2581 config/tc-sh.c:2629 config/tc-sparc.c:4084
+#: config/tc-sparc.c:4109
msgid "misaligned data"
msgstr ""
-#: config/tc-sh.c:2662
+#: config/tc-sh.c:3003
msgid "misaligned offset"
msgstr ""
-#: config/tc-sparc.c:268
+#: config/tc-sparc.c:280
msgid "Invalid default architecture, broken assembler."
msgstr ""
-#: config/tc-sparc.c:272 config/tc-sparc.c:465
+#: config/tc-sparc.c:284 config/tc-sparc.c:487
msgid "Bad opcode table, broken assembler."
msgstr ""
-#: config/tc-sparc.c:444
+#: config/tc-sparc.c:479
#, c-format
msgid "invalid architecture -xarch=%s"
msgstr ""
-#: config/tc-sparc.c:459
+#: config/tc-sparc.c:481
#, c-format
msgid "invalid architecture -A%s"
msgstr ""
-#: config/tc-sparc.c:526
-#, c-format
-msgid "No compiled in support for %d bit object file format"
-msgstr ""
-
-#: config/tc-sparc.c:563
+#: config/tc-sparc.c:585
msgid "Unrecognized option following -K"
msgstr ""
-#: config/tc-sparc.c:595
+#: config/tc-sparc.c:626
msgid "SPARC options:\n"
msgstr ""
-#: config/tc-sparc.c:603
+#: config/tc-sparc.c:655
msgid ""
"\n"
-"-xarch=v8plus | -xarch=v8plusa\n"
-msgstr ""
-
-#: config/tc-sparc.c:604
-msgid ""
"\t\t\tspecify variant of SPARC architecture\n"
"-bump\t\t\twarn when assembler switches architectures\n"
"-sparc\t\t\tignored\n"
"--enforce-aligned-data\tforce .long, etc., to be aligned correctly\n"
+"-relax\t\t\trelax jumps and branches (default)\n"
+"-no-relax\t\tavoid changing any jumps and branches\n"
msgstr ""
-#: config/tc-sparc.c:610
+#: config/tc-sparc.c:663
msgid "-k\t\t\tgenerate PIC\n"
msgstr ""
-#: config/tc-sparc.c:614
+#: config/tc-sparc.c:667
msgid ""
"-32\t\t\tcreate 32 bit object file\n"
"-64\t\t\tcreate 64 bit object file\n"
msgstr ""
-#: config/tc-sparc.c:617
+#: config/tc-sparc.c:670
#, c-format
msgid "\t\t\t[default is %d]\n"
msgstr ""
-#: config/tc-sparc.c:619
+#: config/tc-sparc.c:672
msgid ""
"-TSO\t\t\tuse Total Store Ordering\n"
"-PSO\t\t\tuse Partial Store Ordering\n"
"-RMO\t\t\tuse Relaxed Memory Ordering\n"
msgstr ""
-#: config/tc-sparc.c:623
+#: config/tc-sparc.c:676
#, c-format
msgid "\t\t\t[default is %s]\n"
msgstr ""
-#: config/tc-sparc.c:625
+#: config/tc-sparc.c:678
msgid ""
"-KPIC\t\t\tgenerate PIC\n"
"-V\t\t\tprint assembler version number\n"
@@ -5486,7 +6449,7 @@ msgid ""
"-s\t\t\tignored\n"
msgstr ""
-#: config/tc-sparc.c:637
+#: config/tc-sparc.c:690
msgid ""
"-EL\t\t\tgenerate code for a little endian machine\n"
"-EB\t\t\tgenerate code for a big endian machine\n"
@@ -5494,249 +6457,275 @@ msgid ""
" instructions and little endian data.\n"
msgstr ""
-#: config/tc-sparc.c:754
+#: config/tc-sparc.c:810
#, c-format
msgid "Internal error: losing opcode: `%s' \"%s\"\n"
msgstr ""
-#: config/tc-sparc.c:772
+#: config/tc-sparc.c:829
#, c-format
msgid "Internal error: can't find opcode `%s' for `%s'\n"
msgstr ""
-#: config/tc-sparc.c:921
+#: config/tc-sparc.c:975
msgid "Support for 64-bit arithmetic not compiled in."
msgstr ""
-#: config/tc-sparc.c:967
+#: config/tc-sparc.c:1022
msgid "set: number not in 0..4294967295 range"
msgstr ""
-#: config/tc-sparc.c:974
+#: config/tc-sparc.c:1029
msgid "set: number not in -2147483648..4294967295 range"
msgstr ""
-#: config/tc-sparc.c:1034
+#: config/tc-sparc.c:1089
msgid "setsw: number not in -2147483648..4294967295 range"
msgstr ""
-#: config/tc-sparc.c:1082
+#: config/tc-sparc.c:1138
msgid "setx: temporary register same as destination register"
msgstr ""
-#: config/tc-sparc.c:1152
+#: config/tc-sparc.c:1209
msgid "setx: illegal temporary register g0"
msgstr ""
-#: config/tc-sparc.c:1249
+#: config/tc-sparc.c:1306
msgid "FP branch in delay slot"
msgstr ""
-#: config/tc-sparc.c:1265
+#: config/tc-sparc.c:1322
msgid "FP branch preceded by FP instruction; NOP inserted"
msgstr ""
-#: config/tc-sparc.c:1305
+#: config/tc-sparc.c:1362
msgid "failed special case insn sanity check"
msgstr ""
-#: config/tc-sparc.c:1396
+#: config/tc-sparc.c:1450
msgid ": invalid membar mask name"
msgstr ""
-#: config/tc-sparc.c:1410
+#: config/tc-sparc.c:1466
msgid ": invalid membar mask expression"
msgstr ""
-#: config/tc-sparc.c:1415
+#: config/tc-sparc.c:1471
msgid ": invalid membar mask number"
msgstr ""
-#: config/tc-sparc.c:1433
+#: config/tc-sparc.c:1486
+msgid ": invalid siam mode expression"
+msgstr ""
+
+#: config/tc-sparc.c:1491
+msgid ": invalid siam mode number"
+msgstr ""
+
+#: config/tc-sparc.c:1507
msgid ": invalid prefetch function name"
msgstr ""
-#: config/tc-sparc.c:1441
+#: config/tc-sparc.c:1515
msgid ": invalid prefetch function expression"
msgstr ""
-#: config/tc-sparc.c:1446
+#: config/tc-sparc.c:1520
msgid ": invalid prefetch function number"
msgstr ""
-#: config/tc-sparc.c:1474 config/tc-sparc.c:1486
+#: config/tc-sparc.c:1548 config/tc-sparc.c:1560
msgid ": unrecognizable privileged register"
msgstr ""
-#: config/tc-sparc.c:1510 config/tc-sparc.c:1527
-msgid ": unrecognizable v9a ancillary state register"
+#: config/tc-sparc.c:1584 config/tc-sparc.c:1609
+msgid ": unrecognizable v9a or v9b ancillary state register"
msgstr ""
-#: config/tc-sparc.c:1515
+#: config/tc-sparc.c:1589
msgid ": rd on write only ancillary state register"
msgstr ""
-#: config/tc-sparc.c:1551
+#. %sys_tick and %sys_tick_cmpr are v9bnotv9a
+#: config/tc-sparc.c:1597
+msgid ": unrecognizable v9a ancillary state register"
+msgstr ""
+
+#: config/tc-sparc.c:1633
msgid ": asr number must be between 16 and 31"
msgstr ""
-#: config/tc-sparc.c:1559
+#: config/tc-sparc.c:1641
msgid ": asr number must be between 0 and 31"
msgstr ""
-#: config/tc-sparc.c:1569
+#: config/tc-sparc.c:1651
msgid ": expecting %asrN"
msgstr ""
-#: config/tc-sparc.c:1897
+#: config/tc-sparc.c:1979
msgid "detected global register use not covered by .register pseudo-op"
msgstr ""
-#: config/tc-sparc.c:1969
+#: config/tc-sparc.c:2050
msgid ": There are only 64 f registers; [0-63]"
msgstr ""
-#: config/tc-sparc.c:1971 config/tc-sparc.c:1983
+#: config/tc-sparc.c:2052 config/tc-sparc.c:2064
msgid ": There are only 32 f registers; [0-31]"
msgstr ""
-#: config/tc-sparc.c:2102 config/tc-sparc.c:2138
+#: config/tc-sparc.c:2182 config/tc-sparc.c:2218
msgid "Illegal operands: %%%s requires arguments in ()"
msgstr ""
-#: config/tc-sparc.c:2150
+#: config/tc-sparc.c:2230
msgid ""
"Illegal operands: Can't do arithmetics other than + and - involving %%%s()"
msgstr ""
-#: config/tc-sparc.c:2259
+#: config/tc-sparc.c:2340
msgid "Illegal operands: Can't add non-constant expression to %%%s()"
msgstr ""
-#: config/tc-sparc.c:2269
+#: config/tc-sparc.c:2350
msgid ""
"Illegal operands: Can't do arithmetics involving %%%s() of a relocatable "
"symbol"
msgstr ""
-#: config/tc-sparc.c:2287
+#: config/tc-sparc.c:2368
msgid ": PC-relative operand can't be a constant"
msgstr ""
-#: config/tc-sparc.c:2320
+#: config/tc-sparc.c:2401
msgid ": invalid ASI name"
msgstr ""
-#: config/tc-sparc.c:2328
+#: config/tc-sparc.c:2409
msgid ": invalid ASI expression"
msgstr ""
-#: config/tc-sparc.c:2333
+#: config/tc-sparc.c:2414
msgid ": invalid ASI number"
msgstr ""
-#: config/tc-sparc.c:2430
+#: config/tc-sparc.c:2511
msgid "OPF immediate operand out of range (0-0x1ff)"
msgstr ""
-#: config/tc-sparc.c:2435
+#: config/tc-sparc.c:2516
msgid "non-immediate OPF operand, ignored"
msgstr ""
-#: config/tc-sparc.c:2454
+#: config/tc-sparc.c:2535
msgid ": invalid cpreg name"
msgstr ""
-#: config/tc-sparc.c:2483
+#: config/tc-sparc.c:2564
#, c-format
msgid "Illegal operands%s"
msgstr ""
-#: config/tc-sparc.c:2512
+#: config/tc-sparc.c:2598
#, c-format
msgid "architecture bumped from \"%s\" to \"%s\" on \"%s\""
msgstr ""
-#: config/tc-sparc.c:2548
+#: config/tc-sparc.c:2634
#, c-format
msgid "Architecture mismatch on \"%s\"."
msgstr ""
-#: config/tc-sparc.c:2549
+#: config/tc-sparc.c:2635
#, c-format
msgid " (Requires %s; requested architecture is %s.)"
msgstr ""
-#: config/tc-sparc.c:3073
+#: config/tc-sparc.c:3249
#, c-format
msgid "bad or unhandled relocation type: 0x%02x"
msgstr ""
-#: config/tc-sparc.c:3375
+#: config/tc-sparc.c:3380
+#, c-format
+msgid "internal error: can't export reloc type %d (`%s')"
+msgstr ""
+
+#: config/tc-sparc.c:3552
msgid "bad .reserve segment -- expected BSS segment"
msgstr ""
-#: config/tc-sparc.c:3392
+#: config/tc-sparc.c:3569
msgid "missing alignment"
msgstr ""
-#: config/tc-sparc.c:3403 config/tc-sparc.c:3548
+#: config/tc-sparc.c:3580 config/tc-sparc.c:3730
#, c-format
msgid "alignment too large; assuming %d"
msgstr ""
-#: config/tc-sparc.c:3409 config/tc-sparc.c:3554
+#: config/tc-sparc.c:3586 config/tc-sparc.c:3736
msgid "negative alignment"
msgstr ""
-#: config/tc-sparc.c:3419 config/tc-sparc.c:3577
+#: config/tc-sparc.c:3596 config/tc-sparc.c:3759
msgid "alignment not a power of 2"
msgstr ""
-#: config/tc-sparc.c:3534
+#: config/tc-sparc.c:3716
msgid "Expected comma after common length"
msgstr ""
-#: config/tc-sparc.c:3769 config/tc-sparc.c:3779
+#: config/tc-sparc.c:3951 config/tc-sparc.c:3961
msgid "register syntax is .register %%g[2367],{#scratch|symbolname|#ignore}"
msgstr ""
-#: config/tc-sparc.c:3797
+#: config/tc-sparc.c:3979
msgid "redefinition of global register"
msgstr ""
-#: config/tc-sparc.c:3808
+#: config/tc-sparc.c:3990
#, c-format
msgid "Register symbol %s already defined."
msgstr ""
-#: config/tc-tahoe.c:387
+#: config/tc-sparc.h:54
+msgid "sparc convert_frag\n"
+msgstr ""
+
+#: config/tc-sparc.h:56
+msgid "estimate_size_before_relax called"
+msgstr ""
+
+#: config/tc-tahoe.c:386
msgid "The -a option doesn't exist. (Despite what the man page says!"
msgstr ""
-#: config/tc-tahoe.c:391 config/tc-vax.c:3141
+#: config/tc-tahoe.c:390 config/tc-vax.c:3132
#, c-format
msgid "Displacement length %s ignored!"
msgstr ""
-#: config/tc-tahoe.c:395 config/tc-vax.c:3133
+#: config/tc-tahoe.c:394 config/tc-vax.c:3124
msgid "SYMBOL TABLE not implemented"
msgstr ""
-#: config/tc-tahoe.c:399 config/tc-vax.c:3137
+#: config/tc-tahoe.c:398 config/tc-vax.c:3128
msgid "TOKEN TRACE not implemented"
msgstr ""
-#: config/tc-tahoe.c:403 config/tc-vax.c:3145
+#: config/tc-tahoe.c:402 config/tc-vax.c:3136
#, c-format
msgid "I don't need or use temp. file \"%s\"."
msgstr ""
-#: config/tc-tahoe.c:407 config/tc-vax.c:3149
+#: config/tc-tahoe.c:406 config/tc-vax.c:3140
msgid "I don't use an interpass file! -V ignored"
msgstr ""
-#: config/tc-tahoe.c:421
+#: config/tc-tahoe.c:420
msgid ""
"Tahoe options:\n"
"-a\t\t\tignored\n"
@@ -5748,207 +6737,672 @@ msgid ""
"-V\t\t\tignored\n"
msgstr ""
-#: config/tc-tahoe.c:1075
+#: config/tc-tahoe.c:1074
msgid "Casting a branch displacement is bad form, and is ignored."
msgstr ""
-#: config/tc-tahoe.c:1131
+#: config/tc-tahoe.c:1130
msgid "Couldn't parse the [index] in this operand."
msgstr ""
-#: config/tc-tahoe.c:1137
+#: config/tc-tahoe.c:1136
msgid "Couldn't find the opening '[' for the index of this operand."
msgstr ""
-#: config/tc-tahoe.c:1177
+#: config/tc-tahoe.c:1176
msgid "Couldn't find the opening '(' for the deref of this operand."
msgstr ""
-#: config/tc-tahoe.c:1187
+#: config/tc-tahoe.c:1186
msgid "Operand can't be both pre-inc and post-dec."
msgstr ""
-#: config/tc-tahoe.c:1217
+#: config/tc-tahoe.c:1216
msgid "I parsed 2 registers in this operand."
msgstr ""
-#: config/tc-tahoe.c:1267
+#: config/tc-tahoe.c:1266
msgid "Can't relocate expression error."
msgstr ""
#. This is an error. Tahoe doesn't allow any expressions
#. bigger that a 32 bit long word. Any bigger has to be referenced
#. by address.
-#: config/tc-tahoe.c:1274
+#: config/tc-tahoe.c:1273
msgid "Expression is too large for a 32 bits."
msgstr ""
-#: config/tc-tahoe.c:1279
+#: config/tc-tahoe.c:1278
msgid "Junk at end of expression."
msgstr ""
-#: config/tc-tahoe.c:1319
+#: config/tc-tahoe.c:1317
msgid "Syntax error in direct register mode."
msgstr ""
-#: config/tc-tahoe.c:1321
+#: config/tc-tahoe.c:1319
msgid "You can't index a register in direct register mode."
msgstr ""
-#: config/tc-tahoe.c:1324
+#: config/tc-tahoe.c:1322
msgid "SP can't be the source operand with direct register addressing."
msgstr ""
-#: config/tc-tahoe.c:1326
+#: config/tc-tahoe.c:1324
msgid "Can't take the address of a register."
msgstr ""
-#: config/tc-tahoe.c:1328
+#: config/tc-tahoe.c:1326
msgid "Direct Register can't be used in a branch."
msgstr ""
-#: config/tc-tahoe.c:1330
+#: config/tc-tahoe.c:1328
msgid "For quad access, the register must be even and < 14."
msgstr ""
-#: config/tc-tahoe.c:1332
+#: config/tc-tahoe.c:1330
msgid "You can't cast a direct register."
msgstr ""
-#: config/tc-tahoe.c:1338
+#: config/tc-tahoe.c:1336
msgid "Using reg 14 for quadwords can tromp the FP register."
msgstr ""
-#: config/tc-tahoe.c:1350
+#: config/tc-tahoe.c:1348
msgid "Syntax error in auto-dec mode."
msgstr ""
-#: config/tc-tahoe.c:1352
+#: config/tc-tahoe.c:1350
msgid "You can't have an index auto dec mode."
msgstr ""
-#: config/tc-tahoe.c:1354
+#: config/tc-tahoe.c:1352
msgid "Auto dec mode cant be used for reading."
msgstr ""
-#: config/tc-tahoe.c:1356
+#: config/tc-tahoe.c:1354
msgid "Auto dec only works of the SP register."
msgstr ""
-#: config/tc-tahoe.c:1358
+#: config/tc-tahoe.c:1356
msgid "Auto dec can't be used in a branch."
msgstr ""
-#: config/tc-tahoe.c:1360
+#: config/tc-tahoe.c:1358
msgid "Auto dec won't work with quadwords."
msgstr ""
-#: config/tc-tahoe.c:1367
+#: config/tc-tahoe.c:1365
msgid "Syntax error in one of the auto-inc modes."
msgstr ""
-#: config/tc-tahoe.c:1373
+#: config/tc-tahoe.c:1371
msgid "Auto inc deferred only works of the SP register."
msgstr ""
-#: config/tc-tahoe.c:1375
+#: config/tc-tahoe.c:1373
msgid "You can't have an index auto inc deferred mode."
msgstr ""
-#: config/tc-tahoe.c:1377 config/tc-tahoe.c:1388
+#: config/tc-tahoe.c:1375 config/tc-tahoe.c:1386
msgid "Auto inc can't be used in a branch."
msgstr ""
-#: config/tc-tahoe.c:1384
+#: config/tc-tahoe.c:1382
msgid "You can't write to an auto inc register."
msgstr ""
-#: config/tc-tahoe.c:1386
+#: config/tc-tahoe.c:1384
msgid "Auto inc only works of the SP register."
msgstr ""
-#: config/tc-tahoe.c:1390
+#: config/tc-tahoe.c:1388
msgid "Auto inc won't work with quadwords."
msgstr ""
-#: config/tc-tahoe.c:1392
+#: config/tc-tahoe.c:1390
msgid "You can't have an index in auto inc mode."
msgstr ""
-#: config/tc-tahoe.c:1400
+#: config/tc-tahoe.c:1398
msgid "You can't index the sp register."
msgstr ""
-#: config/tc-tahoe.c:1406
+#: config/tc-tahoe.c:1404
msgid "Syntax error in register displaced mode."
msgstr ""
-#: config/tc-tahoe.c:1425
+#: config/tc-tahoe.c:1423
msgid "An offest is needed for this operand."
msgstr ""
-#: config/tc-tahoe.c:1437
+#: config/tc-tahoe.c:1435
msgid "You can't index a register in immediate mode."
msgstr ""
-#: config/tc-tahoe.c:1439
+#: config/tc-tahoe.c:1437
msgid "Immediate access can't be used as an address."
msgstr ""
-#: config/tc-tahoe.c:1550
+#: config/tc-tahoe.c:1548
#, c-format
msgid "Compiler bug: ODD number of bytes in arg structure %s."
msgstr ""
-#: config/tc-tahoe.c:1577 config/tc-vax.c:1847
+#: config/tc-tahoe.c:1575 config/tc-vax.c:1839
msgid "Not enough operands"
msgstr ""
-#: config/tc-tahoe.c:1587 config/tc-vax.c:1854
+#: config/tc-tahoe.c:1585 config/tc-vax.c:1846
msgid "Too many operands"
msgstr ""
-#: config/tc-tahoe.c:1638 config/tc-vax.c:368
+#: config/tc-tahoe.c:1636 config/tc-vax.c:364
#, c-format
msgid "Ignoring statement due to \"%s\""
msgstr ""
-#: config/tc-tahoe.c:1733
+#: config/tc-tahoe.c:1731
#, c-format
msgid "Compliler bug: Got a case (%d) I wasn't expecting."
msgstr ""
-#: config/tc-tahoe.c:1827
+#: config/tc-tahoe.c:1825
msgid "Real branch displacements must be expressions."
msgstr ""
-#: config/tc-tahoe.c:1830
+#: config/tc-tahoe.c:1828
#, c-format
msgid "Complier error: I got an unknown synthetic branch :%c"
msgstr ""
-#: config/tc-tahoe.c:1971
+#: config/tc-tahoe.c:1969
#, c-format
msgid "Barf, bad mode %x\n"
msgstr ""
+#. Only word (et al.), align, or conditionals are allowed within
+#. .struct/.union.
+#: config/tc-tic54x.c:75
+msgid "pseudo-op illegal within .struct/.union"
+msgstr ""
+
+#: config/tc-tic54x.c:84
+msgid "C54x-specific command line options:\n"
+msgstr ""
+
+#: config/tc-tic54x.c:85
+msgid "-mfar-mode | -mf Use extended addressing\n"
+msgstr ""
+
+#: config/tc-tic54x.c:86
+msgid "-mcpu=<CPU version> Specify the CPU version\n"
+msgstr ""
+
+#: config/tc-tic54x.c:88
+msgid "-mcoff-version={0|1|2} Select COFF version\n"
+msgstr ""
+
+#: config/tc-tic54x.c:90
+msgid "-merrors-to-file <filename>\n"
+msgstr ""
+
+#: config/tc-tic54x.c:91
+msgid "-me <filename> Redirect errors to a file\n"
+msgstr ""
+
+#: config/tc-tic54x.c:351
+msgid "Comma and symbol expected for '.asg STRING, SYMBOL'"
+msgstr ""
+
+#: config/tc-tic54x.c:405
+msgid "Unterminated string after absolute expression"
+msgstr ""
+
+#: config/tc-tic54x.c:413
+msgid "Comma and symbol expected for '.eval EXPR, SYMBOL'"
+msgstr ""
+
+#: config/tc-tic54x.c:425
+msgid "symbols assigned with .eval must begin with a letter"
+msgstr ""
+
+#: config/tc-tic54x.c:682
+msgid "Offset on nested structures is ignored"
+msgstr ""
+
+#: config/tc-tic54x.c:732
+#, c-format
+msgid ".end%s without preceding .%s"
+msgstr ""
+
+#: config/tc-tic54x.c:799
+#, c-format
+msgid "Unrecognized struct/union tag '%s'"
+msgstr ""
+
+#: config/tc-tic54x.c:801
+msgid ".tag requires a structure tag"
+msgstr ""
+
+#: config/tc-tic54x.c:807
+msgid "Label required for .tag"
+msgstr ""
+
+#: config/tc-tic54x.c:825
+#, c-format
+msgid ".tag target '%s' undefined"
+msgstr ""
+
+#: config/tc-tic54x.c:887
+#, c-format
+msgid ".field count '%d' out of range (1 <= X <= 32)"
+msgstr ""
+
+#: config/tc-tic54x.c:917
+#, c-format
+msgid "Unrecognized field type '%c'"
+msgstr ""
+
+#. Disallow .byte with a non constant expression that will
+#. require relocation.
+#: config/tc-tic54x.c:1052
+msgid "Relocatable values require at least WORD storage"
+msgstr ""
+
+#: config/tc-tic54x.c:1114
+msgid "Use of .def/.ref is deprecated. Use .global instead"
+msgstr ""
+
+#: config/tc-tic54x.c:1305
+msgid ".space/.bes repeat count is negative, ignored"
+msgstr ""
+
+#: config/tc-tic54x.c:1310
+msgid ".space/.bes repeat count is zero, ignored"
+msgstr ""
+
+#: config/tc-tic54x.c:1388
+msgid "Missing size argument"
+msgstr ""
+
+#: config/tc-tic54x.c:1525
+msgid "CPU version has already been set"
+msgstr ""
+
+#: config/tc-tic54x.c:1529
+#, c-format
+msgid "Unrecognized version '%s'"
+msgstr ""
+
+#: config/tc-tic54x.c:1535
+msgid "Changing of CPU version on the fly not supported"
+msgstr ""
+
+#: config/tc-tic54x.c:1670
+msgid "p2align not supported on this target"
+msgstr ""
+
+#: config/tc-tic54x.c:1683
+msgid "Argument to .even ignored"
+msgstr ""
+
+#: config/tc-tic54x.c:1730
+msgid "Invalid field size, must be from 1 to 32"
+msgstr ""
+
+#: config/tc-tic54x.c:1743
+msgid "field size must be 16 when value is relocatable"
+msgstr ""
+
+#: config/tc-tic54x.c:1757
+msgid "field value truncated"
+msgstr ""
+
+#: config/tc-tic54x.c:1863 config/tc-tic54x.c:2175
+#, c-format
+msgid "Unrecognized section '%s'"
+msgstr ""
+
+#: config/tc-tic54x.c:1872
+msgid "Current section is unitialized, section name required for .clink"
+msgstr ""
+
+#: config/tc-tic54x.c:2084
+msgid "ENDLOOP without corresponding LOOP"
+msgstr ""
+
+#: config/tc-tic54x.c:2127
+msgid "Mixing of normal and extended addressing not supported"
+msgstr ""
+
+#: config/tc-tic54x.c:2133
+msgid "Extended addressing not supported on the specified CPU"
+msgstr ""
+
+#: config/tc-tic54x.c:2181
+msgid ".sblock may be used for initialized sections only"
+msgstr ""
+
+#: config/tc-tic54x.c:2212
+msgid "Symbol missing for .set/.equ"
+msgstr ""
+
+#: config/tc-tic54x.c:2269
+msgid ".var may only be used within a macro definition"
+msgstr ""
+
+#: config/tc-tic54x.c:2277
+msgid "Substitution symbols must begin with a letter"
+msgstr ""
+
+#: config/tc-tic54x.c:2368
+#, c-format
+msgid "Can't open macro library file '%s' for reading."
+msgstr ""
+
+#: config/tc-tic54x.c:2375
+#, c-format
+msgid "File '%s' not in macro archive format"
+msgstr ""
+
+#: config/tc-tic54x.c:2532
+#, c-format
+msgid "Bad COFF version '%s'"
+msgstr ""
+
+#: config/tc-tic54x.c:2541
+#, c-format
+msgid "Bad CPU version '%s'"
+msgstr ""
+
+#: config/tc-tic54x.c:2553 config/tc-tic54x.c:2556
+#, c-format
+msgid "Can't redirect stderr to the file '%s'"
+msgstr ""
+
+#: config/tc-tic54x.c:2702
+#, c-format
+msgid "Undefined substitution symbol '%s'"
+msgstr ""
+
+#: config/tc-tic54x.c:3390
+msgid "Badly formed address expression"
+msgstr ""
+
+#: config/tc-tic54x.c:3655
+#, c-format
+msgid "Invalid dmad syntax '%s'"
+msgstr ""
+
+#: config/tc-tic54x.c:3771
+msgid "Address mode *+ARx is write-only. Results of reading are undefined."
+msgstr ""
+
+#: config/tc-tic54x.c:3791
+#, c-format
+msgid "Unrecognized indirect address format \"%s\""
+msgstr ""
+
+#: config/tc-tic54x.c:3828
+#, c-format
+msgid "Operand '%s' out of range (%d <= x <= %d)"
+msgstr ""
+
+#: config/tc-tic54x.c:3848
+msgid "Error in relocation handling"
+msgstr ""
+
+#: config/tc-tic54x.c:3869 config/tc-tic54x.c:3933 config/tc-tic54x.c:3963
+#, c-format
+msgid "Unrecognized condition code \"%s\""
+msgstr ""
+
+#: config/tc-tic54x.c:3886
+#, c-format
+msgid "Condition \"%s\" does not match preceding group"
+msgstr ""
+
+#: config/tc-tic54x.c:3894
+#, c-format
+msgid ""
+"Condition \"%s\" uses a different accumulator from a preceding condition"
+msgstr ""
+
+#: config/tc-tic54x.c:3901
+msgid "Only one comparison conditional allowed"
+msgstr ""
+
+#: config/tc-tic54x.c:3906
+msgid "Only one overflow conditional allowed"
+msgstr ""
+
+#: config/tc-tic54x.c:3914
+#, c-format
+msgid "Duplicate %s conditional"
+msgstr ""
+
+#: config/tc-tic54x.c:3948
+msgid "Invalid auxiliary register (use AR0-AR7)"
+msgstr ""
+
+#: config/tc-tic54x.c:3983
+msgid "lk addressing modes are invalid for memory-mapped register addressing"
+msgstr ""
+
+#: config/tc-tic54x.c:3991
+msgid ""
+"Address mode *+ARx is not allowed in memory-mapped register addressing. "
+"Resulting behavior is undefined."
+msgstr ""
+
+#: config/tc-tic54x.c:4017
+msgid ""
+"Destination accumulator for each part of this parallel instruction must be "
+"different"
+msgstr ""
+
+#: config/tc-tic54x.c:4066
+#, c-format
+msgid "Memory mapped register \"%s\" out of range"
+msgstr ""
+
+#: config/tc-tic54x.c:4105
+msgid "Invalid operand (use 1, 2, or 3)"
+msgstr ""
+
+#: config/tc-tic54x.c:4130
+msgid "A status register or status bit name is required"
+msgstr ""
+
+#: config/tc-tic54x.c:4140
+#, c-format
+msgid "Unrecognized status bit \"%s\""
+msgstr ""
+
+#: config/tc-tic54x.c:4163
+#, c-format
+msgid "Invalid status register \"%s\""
+msgstr ""
+
+#: config/tc-tic54x.c:4175
+#, c-format
+msgid "Operand \"%s\" out of range (use 1 or 2)"
+msgstr ""
+
+#: config/tc-tic54x.c:4375
+#, c-format
+msgid "Unrecognized instruction \"%s\""
+msgstr ""
+
+#: config/tc-tic54x.c:4404
+#, c-format
+msgid "Unrecognized operand list '%s' for instruction '%s'"
+msgstr ""
+
+#: config/tc-tic54x.c:4436
+#, c-format
+msgid "Unrecognized parallel instruction \"%s\""
+msgstr ""
+
+#: config/tc-tic54x.c:4488
+#, c-format
+msgid "Invalid operand (s) for parallel instruction \"%s\""
+msgstr ""
+
+#: config/tc-tic54x.c:4491
+#, c-format
+msgid "Unrecognized parallel instruction combination \"%s || %s\""
+msgstr ""
+
+#: config/tc-tic54x.c:4723
+#, c-format
+msgid "%s symbol recursion stopped at second appearance of '%s'"
+msgstr ""
+
+#: config/tc-tic54x.c:4762
+msgid "Unrecognized substitution symbol function"
+msgstr ""
+
+#: config/tc-tic54x.c:4767
+msgid "Missing '(' after substitution symbol function"
+msgstr ""
+
+#: config/tc-tic54x.c:4781
+msgid "Expecting second argument"
+msgstr ""
+
+#: config/tc-tic54x.c:4794 config/tc-tic54x.c:4843
+msgid "Extra junk in function call, expecting ')'"
+msgstr ""
+
+#: config/tc-tic54x.c:4819
+msgid "Function expects two arguments"
+msgstr ""
+
+#: config/tc-tic54x.c:4832
+msgid "Expecting character constant argument"
+msgstr ""
+
+#: config/tc-tic54x.c:4838
+msgid "Both arguments must be substitution symbols"
+msgstr ""
+
+#: config/tc-tic54x.c:4891
+#, c-format
+msgid "Invalid subscript (use 1 to %d)"
+msgstr ""
+
+#: config/tc-tic54x.c:4901
+#, c-format
+msgid "Invalid length (use 0 to %d"
+msgstr ""
+
+#: config/tc-tic54x.c:4911
+msgid "Missing ')' in subscripted substitution symbol expression"
+msgstr ""
+
+#: config/tc-tic54x.c:4931
+msgid "Missing forced substitution terminator ':'"
+msgstr ""
+
+#: config/tc-tic54x.c:5104
+#, c-format
+msgid ""
+"Instruction does not fit in available delay slots (%d-word insn, %d slots "
+"left)"
+msgstr ""
+
+#: config/tc-tic54x.c:5145
+#, c-format
+msgid "Unrecognized parallel instruction '%s'"
+msgstr ""
+
+#: config/tc-tic54x.c:5157
+#, c-format
+msgid "Instruction '%s' requires an LP cpu version"
+msgstr ""
+
+#: config/tc-tic54x.c:5164
+#, c-format
+msgid "Instruction '%s' requires far mode addressing"
+msgstr ""
+
+#: config/tc-tic54x.c:5176
+#, c-format
+msgid ""
+"Instruction does not fit in available delay slots (%d-word insn, %d slots "
+"left). Resulting behavior is undefined."
+msgstr ""
+
+#: config/tc-tic54x.c:5186
+msgid ""
+"Instructions which cause PC discontinuity are not allowed in a delay slot. "
+"Resulting behavior is undefined."
+msgstr ""
+
+#: config/tc-tic54x.c:5197
+#, c-format
+msgid "'%s' is not repeatable. Resulting behavior is undefined."
+msgstr ""
+
+#: config/tc-tic54x.c:5201
+msgid ""
+"Instructions using long offset modifiers or absolute addresses are not "
+"repeatable. Resulting behavior is undefined."
+msgstr ""
+
+#: config/tc-tic54x.c:5392
+#, c-format
+msgid "Unsupported relocation size %d"
+msgstr ""
+
+#: config/tc-tic54x.c:5544
+msgid "non-absolute value used with .space/.bes"
+msgstr ""
+
+#: config/tc-tic54x.c:5548
+#, c-format
+msgid "negative value ignored in %s"
+msgstr ""
+
+#: config/tc-tic54x.c:5635
+#, c-format
+msgid "attempt to .space/.bes backwards? (%ld)"
+msgstr ""
+
+#: config/tc-tic54x.c:5668
+#, c-format
+msgid "Invalid label '%s'"
+msgstr ""
+
+#: config/tc-tic80.c:25
+#, c-format
+msgid "internal error:%s:%d: %s\n"
+msgstr ""
+
+#: config/tc-tic80.c:28
+#, c-format
+msgid "internal error:%s:%d: %s %d\n"
+msgstr ""
+
#: config/tc-tic80.c:90
msgid "Relaxation is a luxury we can't afford"
msgstr ""
-#: config/tc-tic80.c:141
+#: config/tc-tic80.c:140
msgid "bad call to md_atof ()"
msgstr ""
-#: config/tc-tic80.c:245
+#: config/tc-tic80.c:238
msgid "':' not followed by 'm' or 's'"
msgstr ""
-#: config/tc-tic80.c:259
+#: config/tc-tic80.c:251
msgid "paren nesting"
msgstr ""
-#: config/tc-tic80.c:274
+#: config/tc-tic80.c:265
msgid "mismatched parenthesis"
msgstr ""
@@ -5956,374 +7410,374 @@ msgstr ""
msgid "unhandled expression type"
msgstr ""
-#: config/tc-tic80.c:682
+#: config/tc-tic80.c:681
msgid "symbol reloc that is not PC relative or 32 bits"
msgstr ""
-#: config/tc-tic80.c:705
+#: config/tc-tic80.c:710
msgid "unhandled operand modifier"
msgstr ""
-#: config/tc-tic80.c:746
+#: config/tc-tic80.c:752
msgid "unhandled expression"
msgstr ""
-#: config/tc-tic80.c:797
+#: config/tc-tic80.c:801
#, c-format
msgid "Invalid mnemonic: '%s'"
msgstr ""
-#: config/tc-tic80.c:813
+#: config/tc-tic80.c:814
#, c-format
msgid "Invalid operands: '%s'"
msgstr ""
-#: config/tc-tic80.c:890
+#: config/tc-tic80.c:892
msgid "unhandled predefined symbol bits"
msgstr ""
-#: config/tc-tic80.c:986
+#: config/tc-tic80.c:984
#, c-format
msgid "PC offset 0x%lx outside range 0x%lx-0x%lx"
msgstr ""
-#: config/tc-tic80.c:1001
+#: config/tc-tic80.c:999
msgid "unhandled relocation type in fixup"
msgstr ""
-#: config/tc-tic80.c:1038
+#: config/tc-tic80.c:1035
msgid "md_convert_frag() not implemented yet"
msgstr ""
-#: config/tc-v850.c:273
+#: config/tc-v850.c:270
#, c-format
msgid ".COMMon length (%d.) < 0! Ignored."
msgstr ""
-#: config/tc-v850.c:1000
+#: config/tc-v850.c:1013
#, c-format
msgid "unknown operand shift: %x\n"
msgstr ""
-#: config/tc-v850.c:1001
+#: config/tc-v850.c:1014
msgid "internal failure in parse_register_list"
msgstr ""
-#: config/tc-v850.c:1019
+#: config/tc-v850.c:1031
msgid "constant expression or register list expected"
msgstr ""
-#: config/tc-v850.c:1024 config/tc-v850.c:1037 config/tc-v850.c:1056
+#: config/tc-v850.c:1036 config/tc-v850.c:1049 config/tc-v850.c:1068
msgid "high bits set in register list expression"
msgstr ""
-#: config/tc-v850.c:1096 config/tc-v850.c:1160
+#: config/tc-v850.c:1108 config/tc-v850.c:1172
msgid "illegal register included in list"
msgstr ""
-#: config/tc-v850.c:1103
+#: config/tc-v850.c:1115
msgid "system registers cannot be included in list"
msgstr ""
-#: config/tc-v850.c:1108
+#: config/tc-v850.c:1120
msgid "PSW cannot be included in list"
msgstr ""
-#: config/tc-v850.c:1115
+#: config/tc-v850.c:1127
msgid "High value system registers cannot be included in list"
msgstr ""
-#: config/tc-v850.c:1139
+#: config/tc-v850.c:1151
msgid "second register should follow dash in register list"
msgstr ""
-#: config/tc-v850.c:1187
+#: config/tc-v850.c:1198
msgid " V850 options:\n"
msgstr ""
-#: config/tc-v850.c:1188
+#: config/tc-v850.c:1199
msgid " -mwarn-signed-overflow Warn if signed immediate values overflow\n"
msgstr ""
-#: config/tc-v850.c:1189
+#: config/tc-v850.c:1200
msgid ""
" -mwarn-unsigned-overflow Warn if unsigned immediate values overflow\n"
msgstr ""
-#: config/tc-v850.c:1190
+#: config/tc-v850.c:1201
msgid " -mv850 The code is targeted at the v850\n"
msgstr ""
-#: config/tc-v850.c:1191
+#: config/tc-v850.c:1202
msgid " -mv850e The code is targeted at the v850e\n"
msgstr ""
-#: config/tc-v850.c:1192
+#: config/tc-v850.c:1203
msgid " -mv850ea The code is targeted at the v850ea\n"
msgstr ""
-#: config/tc-v850.c:1193
+#: config/tc-v850.c:1204
msgid ""
" -mv850any The code is generic, despite any processor "
"specific instructions\n"
msgstr ""
-#: config/tc-v850.c:1204 config/tc-v850.c:1239
+#: config/tc-v850.c:1216 config/tc-v850.c:1254
#, c-format
msgid "unknown command line option: -%c%s\n"
msgstr ""
-#: config/tc-v850.c:1393
+#: config/tc-v850.c:1407
#, c-format
msgid "Unable to determine default target processor from string: %s"
msgstr ""
-#: config/tc-v850.c:1442
+#: config/tc-v850.c:1455
msgid "ctoff() relocation used on an instruction which does not support it"
msgstr ""
-#: config/tc-v850.c:1459
+#: config/tc-v850.c:1477
msgid "sdaoff() relocation used on an instruction which does not support it"
msgstr ""
-#: config/tc-v850.c:1476
+#: config/tc-v850.c:1499
msgid "zdaoff() relocation used on an instruction which does not support it"
msgstr ""
-#: config/tc-v850.c:1494
+#: config/tc-v850.c:1532
msgid "tdaoff() relocation used on an instruction which does not support it"
msgstr ""
-#: config/tc-v850.c:1712
+#: config/tc-v850.c:1749
msgid "Target processor does not support this instruction."
msgstr ""
-#: config/tc-v850.c:1802 config/tc-v850.c:1832 config/tc-v850.c:2018
+#: config/tc-v850.c:1839 config/tc-v850.c:1869 config/tc-v850.c:2057
msgid "immediate operand is too large"
msgstr ""
-#: config/tc-v850.c:1814
+#: config/tc-v850.c:1851
msgid "AAARG -> unhandled constant reloc"
msgstr ""
-#: config/tc-v850.c:1858
+#: config/tc-v850.c:1895
msgid "invalid register name"
msgstr ""
-#: config/tc-v850.c:1863
+#: config/tc-v850.c:1900
msgid "register r0 cannot be used here"
msgstr ""
-#: config/tc-v850.c:1875
+#: config/tc-v850.c:1912
msgid "invalid system register name"
msgstr ""
-#: config/tc-v850.c:1888
+#: config/tc-v850.c:1925
msgid "expected EP register"
msgstr ""
-#: config/tc-v850.c:1904
+#: config/tc-v850.c:1942
msgid "invalid condition code name"
msgstr ""
-#: config/tc-v850.c:1925 config/tc-v850.c:1929
+#: config/tc-v850.c:1963 config/tc-v850.c:1967
msgid "constant too big to fit into instruction"
msgstr ""
-#: config/tc-v850.c:1981
+#: config/tc-v850.c:2020
msgid "syntax error: value is missing before the register name"
msgstr ""
-#: config/tc-v850.c:1983
+#: config/tc-v850.c:2022
msgid "syntax error: register not expected"
msgstr ""
-#: config/tc-v850.c:1997
+#: config/tc-v850.c:2036
msgid "syntax error: system register not expected"
msgstr ""
-#: config/tc-v850.c:2002
+#: config/tc-v850.c:2041
msgid "syntax error: condition code not expected"
msgstr ""
-#: config/tc-v850.c:2038
+#: config/tc-v850.c:2082
msgid "invalid operand"
msgstr ""
-#: config/tc-vax.c:263
+#: config/tc-vax.c:259
#, c-format
msgid "VIP_BEGIN error:%s"
msgstr ""
-#: config/tc-vax.c:387
+#: config/tc-vax.c:383
#, c-format
msgid "Ignoring statement because \"%s\""
msgstr ""
-#: config/tc-vax.c:434
+#: config/tc-vax.c:430
msgid "Can't relocate expression"
msgstr ""
-#: config/tc-vax.c:537
+#: config/tc-vax.c:533
msgid "Bignum not permitted in short literal. Immediate mode assumed."
msgstr ""
-#: config/tc-vax.c:546
+#: config/tc-vax.c:542
msgid "Can't do flonum short literal: immediate mode used."
msgstr ""
-#: config/tc-vax.c:591
+#: config/tc-vax.c:587
#, c-format
msgid "A bignum/flonum may not be a displacement: 0x%lx used"
msgstr ""
-#: config/tc-vax.c:913
+#: config/tc-vax.c:908
#, c-format
msgid "Short literal overflow(%ld.), immediate mode assumed."
msgstr ""
-#: config/tc-vax.c:922
+#: config/tc-vax.c:917
#, c-format
msgid "Forced short literal to immediate mode. now_seg=%s to_seg=%s"
msgstr ""
-#: config/tc-vax.c:981
+#: config/tc-vax.c:976
msgid "Length specification ignored. Address mode 9F used"
msgstr ""
-#: config/tc-vax.c:1030
+#: config/tc-vax.c:1025
msgid "Invalid operand: immediate value used as base address."
msgstr ""
-#: config/tc-vax.c:1032
+#: config/tc-vax.c:1027
msgid "Invalid operand: immediate value used as address."
msgstr ""
-#: config/tc-vax.c:1826
+#: config/tc-vax.c:1818
msgid "odd number of bytes in operand description"
msgstr ""
-#: config/tc-vax.c:1842
+#: config/tc-vax.c:1834
msgid "Bad operand"
msgstr ""
-#: config/tc-vax.c:2399
+#: config/tc-vax.c:2390
msgid "no '[' to match ']'"
msgstr ""
-#: config/tc-vax.c:2417
+#: config/tc-vax.c:2408
msgid "bad register in []"
msgstr ""
-#: config/tc-vax.c:2419
+#: config/tc-vax.c:2410
msgid "[PC] index banned"
msgstr ""
-#: config/tc-vax.c:2454
+#: config/tc-vax.c:2445
msgid "no '(' to match ')'"
msgstr ""
-#: config/tc-vax.c:2589
+#: config/tc-vax.c:2580
msgid "invalid branch operand"
msgstr ""
-#: config/tc-vax.c:2618
+#: config/tc-vax.c:2609
msgid "address prohibits @"
msgstr ""
-#: config/tc-vax.c:2620
+#: config/tc-vax.c:2611
msgid "address prohibits #"
msgstr ""
-#: config/tc-vax.c:2624
+#: config/tc-vax.c:2615
msgid "address prohibits -()"
msgstr ""
-#: config/tc-vax.c:2626
+#: config/tc-vax.c:2617
msgid "address prohibits ()+"
msgstr ""
-#: config/tc-vax.c:2629
+#: config/tc-vax.c:2620
msgid "address prohibits ()"
msgstr ""
-#: config/tc-vax.c:2631
+#: config/tc-vax.c:2622
msgid "address prohibits []"
msgstr ""
-#: config/tc-vax.c:2633
+#: config/tc-vax.c:2624
msgid "address prohibits register"
msgstr ""
-#: config/tc-vax.c:2635
+#: config/tc-vax.c:2626
msgid "address prohibits displacement length specifier"
msgstr ""
-#: config/tc-vax.c:2665
+#: config/tc-vax.c:2656
msgid "invalid operand of S^#"
msgstr ""
-#: config/tc-vax.c:2682
+#: config/tc-vax.c:2673
msgid "S^# needs expression"
msgstr ""
-#: config/tc-vax.c:2689
+#: config/tc-vax.c:2680
msgid "S^# may only read-access"
msgstr ""
-#: config/tc-vax.c:2714
+#: config/tc-vax.c:2705
msgid "invalid operand of -()"
msgstr ""
-#: config/tc-vax.c:2720
+#: config/tc-vax.c:2711
msgid "-(PC) unpredictable"
msgstr ""
-#: config/tc-vax.c:2722
+#: config/tc-vax.c:2713
msgid "[]index same as -()register: unpredictable"
msgstr ""
-#: config/tc-vax.c:2758
+#: config/tc-vax.c:2749
msgid "invalid operand of ()+"
msgstr ""
-#: config/tc-vax.c:2764
+#: config/tc-vax.c:2755
msgid "(PC)+ unpredictable"
msgstr ""
-#: config/tc-vax.c:2766
+#: config/tc-vax.c:2757
msgid "[]index same as ()+register: unpredictable"
msgstr ""
-#: config/tc-vax.c:2791
+#: config/tc-vax.c:2782
msgid "# conflicts length"
msgstr ""
-#: config/tc-vax.c:2793
+#: config/tc-vax.c:2784
msgid "# bars register"
msgstr ""
-#: config/tc-vax.c:2815
+#: config/tc-vax.c:2806
msgid "writing or modifying # is unpredictable"
msgstr ""
-#: config/tc-vax.c:2845
+#: config/tc-vax.c:2836
msgid "length not needed"
msgstr ""
-#: config/tc-vax.c:2852
+#: config/tc-vax.c:2843
msgid "can't []index a register, because it has no address"
msgstr ""
-#: config/tc-vax.c:2854
+#: config/tc-vax.c:2845
msgid "a register has no address"
msgstr ""
-#: config/tc-vax.c:2865
+#: config/tc-vax.c:2856
msgid "PC part of operand unpredictable"
msgstr ""
-#: config/tc-vax.c:3194
+#: config/tc-vax.c:3185
msgid ""
"VAX options:\n"
"-d LENGTH\t\tignored\n"
@@ -6334,7 +7788,7 @@ msgid ""
"-V\t\t\tignored\n"
msgstr ""
-#: config/tc-vax.c:3203
+#: config/tc-vax.c:3194
msgid ""
"VMS options:\n"
"-+\t\t\thash encode names longer than 31 characters\n"
@@ -6345,678 +7799,693 @@ msgid ""
"-v\"VERSION\"\t\tcode being assembled was produced by compiler \"VERSION\"\n"
msgstr ""
-#: config/tc-w65.c:136
+#: config/tc-w65.c:127
msgid "need on or off."
msgstr ""
-#: config/tc-w65.c:321 config/tc-w65.c:364
+#: config/tc-w65.c:311 config/tc-w65.c:354
msgid "syntax error after <exp"
msgstr ""
-#: config/tc-z8k.c:290
+#: config/tc-z8k.c:286
#, c-format
msgid "register rr%d, out of range."
msgstr ""
-#: config/tc-z8k.c:298
+#: config/tc-z8k.c:294
#, c-format
msgid "register rh%d, out of range."
msgstr ""
-#: config/tc-z8k.c:306
+#: config/tc-z8k.c:302
#, c-format
msgid "register rl%d, out of range."
msgstr ""
-#: config/tc-z8k.c:315
+#: config/tc-z8k.c:311
#, c-format
msgid "register rq%d, out of range."
msgstr ""
-#: config/tc-z8k.c:323
+#: config/tc-z8k.c:319
#, c-format
msgid "register r%d, out of range."
msgstr ""
-#: config/tc-z8k.c:374
+#: config/tc-z8k.c:364
#, c-format
msgid "expected %c"
msgstr ""
-#: config/tc-z8k.c:390
+#: config/tc-z8k.c:381
#, c-format
msgid "register is wrong size for a word %s"
msgstr ""
-#: config/tc-z8k.c:405
+#: config/tc-z8k.c:397
#, c-format
msgid "register is wrong size for address %s"
msgstr ""
-#: config/tc-z8k.c:680
+#: config/tc-z8k.c:665
msgid "Missing ) in ra(rb)"
msgstr ""
-#: config/tc-z8k.c:947
+#: config/tc-z8k.c:932
#, c-format
msgid "operand %s0x%x out of range."
msgstr ""
-#: config/tc-z8k.c:1086
+#: config/tc-z8k.c:1070
msgid "immediate must be 1 or 2"
msgstr ""
-#: config/tc-z8k.c:1091
+#: config/tc-z8k.c:1073
msgid "immediate 1 or 2 expected"
msgstr ""
-#: config/tc-z8k.c:1119
+#: config/tc-z8k.c:1099
msgid "can't use R0 here"
msgstr ""
-#: config/tc-z8k.c:1278
+#: config/tc-z8k.c:1246
msgid "Can't find opcode to match operands"
msgstr ""
-#: config/tc-z8k.c:1390
+#: config/tc-z8k.c:1361
#, c-format
msgid "invalid architecture -z%s"
msgstr ""
-#: config/tc-z8k.c:1406
+#: config/tc-z8k.c:1377
msgid ""
"Z8K options:\n"
"-z8001\t\t\tgenerate segmented code\n"
"-z8002\t\t\tgenerate unsegmented code\n"
msgstr ""
-#: config/tc-z8k.c:1543
+#: config/tc-z8k.c:1521
#, c-format
msgid "Can't subtract symbols in different sections %s %s"
msgstr ""
-#: depend.c:195
+#: depend.c:196
#, c-format
msgid "Can't open `%s' for writing"
msgstr ""
-#: depend.c:207
+#: depend.c:208
#, c-format
msgid "Can't close `%s'"
msgstr ""
-#: ecoff.c:1577
+#: dwarf2dbg.c:345 dwarf2dbg.c:379
+msgid "File number less than zero"
+msgstr ""
+
+#: dwarf2dbg.c:385
+#, c-format
+msgid "Unassigned file number %ld"
+msgstr ""
+
+#: dwarf2dbg.c:1255 dwarf2dbg.c:1263 dwarf2dbg.c:1271 dwarf2dbg.c:1284
+#: dwarf2dbg.c:1291
+msgid "dwarf2 is not supported for this object file format"
+msgstr ""
+
+#: ecoff.c:1555
#, c-format
msgid "String too big (%lu bytes)"
msgstr ""
-#: ecoff.c:1603
+#: ecoff.c:1581
#, c-format
msgid "Inserting \"%s\" into string hash table: %s"
msgstr ""
-#: ecoff.c:1635 ecoff.c:1828 ecoff.c:1854 ecoff.c:1886 ecoff.c:2042
-#: ecoff.c:2156
+#: ecoff.c:1613 ecoff.c:1807 ecoff.c:1832 ecoff.c:1864 ecoff.c:2018
+#: ecoff.c:2132
msgid "no current file pointer"
msgstr ""
-#: ecoff.c:1722
+#: ecoff.c:1700
msgid "too many st_End's"
msgstr ""
-#: ecoff.c:2068
+#: ecoff.c:2044
#, c-format
msgid "Inserting \"%s\" into tag hash table: %s"
msgstr ""
-#: ecoff.c:2234
+#: ecoff.c:2210
msgid "fake .file after real one"
msgstr ""
-#: ecoff.c:2322
+#: ecoff.c:2300
msgid "Filename goes over one page boundary."
msgstr ""
-#: ecoff.c:2457
+#: ecoff.c:2435
msgid ".begin directive without a preceding .file directive"
msgstr ""
-#: ecoff.c:2464
+#: ecoff.c:2442
msgid ".begin directive without a preceding .ent directive"
msgstr ""
-#: ecoff.c:2496
+#: ecoff.c:2474
msgid ".bend directive without a preceding .file directive"
msgstr ""
-#: ecoff.c:2503
+#: ecoff.c:2481
msgid ".bend directive without a preceding .ent directive"
msgstr ""
-#: ecoff.c:2516
+#: ecoff.c:2494
msgid ".bend directive names unknown symbol"
msgstr ""
-#: ecoff.c:2560
+#: ecoff.c:2538
msgid ".def pseudo-op used inside of .def/.endef; ignored"
msgstr ""
-#: ecoff.c:2562
+#: ecoff.c:2540
msgid "Empty symbol name in .def; ignored"
msgstr ""
-#: ecoff.c:2600
+#: ecoff.c:2578
msgid ".dim pseudo-op used outside of .def/.endef; ignored"
msgstr ""
-#: ecoff.c:2615
+#: ecoff.c:2593
msgid "Badly formed .dim directive"
msgstr ""
-#: ecoff.c:2628
+#: ecoff.c:2606
msgid "Too many .dim entries"
msgstr ""
-#: ecoff.c:2649
+#: ecoff.c:2627
msgid ".scl pseudo-op used outside of .def/.endef; ignored"
msgstr ""
-#: ecoff.c:2675
+#: ecoff.c:2653
msgid ".size pseudo-op used outside of .def/.endef; ignored"
msgstr ""
-#: ecoff.c:2690
+#: ecoff.c:2668
msgid "Badly formed .size directive"
msgstr ""
-#: ecoff.c:2703
+#: ecoff.c:2681
msgid "Too many .size entries"
msgstr ""
-#: ecoff.c:2726
+#: ecoff.c:2704
msgid ".type pseudo-op used outside of .def/.endef; ignored"
msgstr ""
#. FIXME: We could handle this by setting the continued bit.
#. There would still be a limit: the .type argument can not
#. be infinite.
-#: ecoff.c:2744
+#: ecoff.c:2722
#, c-format
msgid "The type of %s is too complex; it will be simplified"
msgstr ""
-#: ecoff.c:2755
+#: ecoff.c:2733
msgid "Unrecognized .type argument"
msgstr ""
-#: ecoff.c:2794
+#: ecoff.c:2772
msgid ".tag pseudo-op used outside of .def/.endef; ignored"
msgstr ""
-#: ecoff.c:2821
+#: ecoff.c:2799
msgid ".val pseudo-op used outside of .def/.endef; ignored"
msgstr ""
-#: ecoff.c:2829
+#: ecoff.c:2807
msgid ".val expression is too copmlex"
msgstr ""
-#: ecoff.c:2860
+#: ecoff.c:2838
msgid ".endef pseudo-op used before .def; ignored"
msgstr ""
-#: ecoff.c:2886
+#: ecoff.c:2864
msgid "Bad COFF debugging info"
msgstr ""
-#: ecoff.c:2935
+#: ecoff.c:2913
#, c-format
msgid "No tag specified for %s"
msgstr ""
-#: ecoff.c:2967
+#: ecoff.c:2945
msgid "Bad COFF debugging information"
msgstr ""
-#: ecoff.c:3039
+#: ecoff.c:3017
msgid ".end directive without a preceding .file directive"
msgstr ""
-#: ecoff.c:3046
+#: ecoff.c:3024
msgid ".end directive without a preceding .ent directive"
msgstr ""
-#: ecoff.c:3069
+#: ecoff.c:3047
msgid ".end directive names unknown symbol"
msgstr ""
-#: ecoff.c:3098
+#: ecoff.c:3076
msgid "second .ent directive found before .end directive"
msgstr ""
-#: ecoff.c:3173
+#: ecoff.c:3151
msgid "No way to handle .file within .ent/.end section"
msgstr ""
-#: ecoff.c:3198
+#: ecoff.c:3176
msgid ".fmask outside of .ent"
msgstr ""
-#: ecoff.c:3267
+#: ecoff.c:3246
msgid ".mask outside of .ent"
msgstr ""
-#: ecoff.c:3297
+#: ecoff.c:3276
msgid ".loc before .file"
msgstr ""
-#: ecoff.c:3423
+#: ecoff.c:3402
#, c-format
msgid "Ignoring attempt to redefine symbol `%s'."
msgstr ""
-#: ecoff.c:3436
+#: ecoff.c:3415
msgid "bad .weakext directive"
msgstr ""
-#: ecoff.c:3505
+#: ecoff.c:3484
#, c-format
msgid ".stab%c is not supported"
msgstr ""
-#: ecoff.c:3515
+#: ecoff.c:3494
#, c-format
msgid ".stab%c: ignoring non-zero other field"
msgstr ""
-#: ecoff.c:3549
+#: ecoff.c:3528
#, c-format
msgid ""
"Line number (%d) for .stab%c directive cannot fit in index field (20 bits)"
msgstr ""
-#: ecoff.c:3585
+#: ecoff.c:3564
#, c-format
msgid "Illegal .stab%c directive, bad character"
msgstr ""
-#: ecoff.c:4047 ecoff.c:4236 ecoff.c:4261
+#: ecoff.c:4026 ecoff.c:4215 ecoff.c:4240
msgid ".begin/.bend in different segments"
msgstr ""
-#: ecoff.c:4762
+#: ecoff.c:4741
msgid "Missing .end or .bend at end of file"
msgstr ""
-#: ecoff.c:5253
+#: ecoff.c:5231
msgid "GP prologue size exceeds field size, using 0 instead"
msgstr ""
-#: expr.c:250
+#: expr.c:245
msgid ""
"bad floating-point constant: exponent overflow, probably assembling junk"
msgstr ""
-#: expr.c:254
+#: expr.c:249
#, c-format
msgid "bad floating-point constant: unknown error code=%d."
msgstr ""
-#: expr.c:434
+#: expr.c:429
msgid ""
"A bignum with underscores may not have more than 8 hex digits in any word."
msgstr ""
-#: expr.c:454
+#: expr.c:452
msgid "A bignum with underscores must have exactly 4 words."
msgstr ""
-#. either not seen or not defined.
+#. Either not seen or not defined.
#. @@ Should print out the original string instead of
#. the parsed number.
-#: expr.c:583
+#: expr.c:575
#, c-format
msgid "backw. ref to unknown label \"%d:\", 0 assumed."
msgstr ""
-#: expr.c:707
+#: expr.c:698
msgid "Character constant too large"
msgstr ""
-#: expr.c:947
+#: expr.c:949
#, c-format
msgid "expr.c(operand): bad atof_generic return val %d"
msgstr ""
-#: expr.c:1007
-msgid "Missing ')' assumed"
+#: expr.c:1012
+#, c-format
+msgid "Missing '%c' assumed"
msgstr ""
-#: expr.c:1018 read.c:3866
+#: expr.c:1024 read.c:3869
msgid "EBCDIC constants are not supported"
msgstr ""
-#: expr.c:1088
+#: expr.c:1095
#, c-format
msgid "Unary operator %c ignored because bad operand follows"
msgstr ""
-#: expr.c:1134 expr.c:1159
+#: expr.c:1141 expr.c:1166
msgid "syntax error in .startof. or .sizeof."
msgstr ""
-#: expr.c:1312
+#: expr.c:1314
msgid "Bad expression"
msgstr ""
-#: expr.c:1677
+#: expr.c:1674
msgid "missing operand; zero assumed"
msgstr ""
-#: expr.c:1710
+#: expr.c:1707
msgid "operation combines symbols in different segments"
msgstr ""
-#: expr.c:1726
+#: expr.c:1724
msgid "left operand is a bignum; integer 0 assumed"
msgstr ""
-#: expr.c:1728
+#: expr.c:1726
msgid "left operand is a float; integer 0 assumed"
msgstr ""
-#: expr.c:1737
+#: expr.c:1735
msgid "right operand is a bignum; integer 0 assumed"
msgstr ""
-#: expr.c:1739
+#: expr.c:1737
msgid "right operand is a float; integer 0 assumed"
msgstr ""
-#: expr.c:1787 symbols.c:1109
+#: expr.c:1793 symbols.c:1089
msgid "division by zero"
msgstr ""
-#: frags.c:85
+#: frags.c:86
#, c-format
msgid "Can't extend frag %d. chars"
msgstr ""
-#: frags.c:170
+#: frags.c:167
msgid "attempt to allocate data in absolute section"
msgstr ""
-#: frags.c:176
+#: frags.c:173
msgid "attempt to allocate data in common section"
msgstr ""
-#: gasp.c:455
+#: gasp.c:452
msgid "redefinition not allowed\n"
msgstr ""
-#: gasp.c:529
+#: gasp.c:521
#, c-format
msgid "the %c operator cannot take non-absolute arguments.\n"
msgstr ""
-#: gasp.c:606
+#: gasp.c:596
msgid "string where expression expected.\n"
msgstr ""
-#: gasp.c:612
+#: gasp.c:602
msgid "can't find primary in expression.\n"
msgstr ""
-#: gasp.c:652
+#: gasp.c:640
msgid "misplaced closing parens.\n"
msgstr ""
-#: gasp.c:689
+#: gasp.c:677
msgid "attempt to divide by zero.\n"
msgstr ""
-#: gasp.c:721
+#: gasp.c:708
msgid "can't add two relocatable expressions\n"
msgstr ""
-#: gasp.c:926
+#: gasp.c:916
msgid "unreasonable nesting.\n"
msgstr ""
-#: gasp.c:1004
+#: gasp.c:994
msgid "End of file not at start of line.\n"
msgstr ""
-#: gasp.c:1125
+#: gasp.c:1115
#, c-format
msgid "Illegal base character %c.\n"
msgstr ""
-#: gasp.c:1240
+#: gasp.c:1229
#, c-format
msgid "radix is %c must be one of b, q, d or h"
msgstr ""
-#: gasp.c:1276
+#: gasp.c:1264
#, c-format
msgid "size must be one of b, w or l, is %c.\n"
msgstr ""
-#: gasp.c:1384
+#: gasp.c:1372
msgid "datab repeat must be constant.\n"
msgstr ""
-#: gasp.c:1386
+#: gasp.c:1374
msgid "datab data must be absolute.\n"
msgstr ""
-#: gasp.c:1400
+#: gasp.c:1388
msgid "align needs absolute expression.\n"
msgstr ""
-#: gasp.c:1407
+#: gasp.c:1395
msgid ".align needs absolute fill value.\n"
msgstr ""
-#: gasp.c:1435
+#: gasp.c:1423
msgid "res needs absolute expression for fill count.\n"
msgstr ""
-#: gasp.c:1515
+#: gasp.c:1504
msgid "form LIN= needs absolute expresssion.\n"
msgstr ""
-#: gasp.c:1518
+#: gasp.c:1507
msgid "COL="
msgstr ""
-#: gasp.c:1521
+#: gasp.c:1510
msgid "form COL= needs absolute expresssion.\n"
msgstr ""
-#. Turns the next expression into a string
-#: gasp.c:1563 macro.c:366
+#. Turns the next expression into a string.
+#: gasp.c:1552 macro.c:387
#, c-format
msgid "% operator needs absolute expression"
msgstr ""
-#: gasp.c:1625
+#: gasp.c:1614
msgid "misplaced ( .\n"
msgstr ""
-#: gasp.c:1640
+#: gasp.c:1629
msgid "misplaced ).\n"
msgstr ""
-#: gasp.c:1694
+#: gasp.c:1681
msgid ".instr needs absolute expresson.\n"
msgstr ""
-#: gasp.c:1732
+#: gasp.c:1718
msgid "need absolute position.\n"
msgstr ""
-#: gasp.c:1734
+#: gasp.c:1720
msgid "need absolute length.\n"
msgstr ""
-#: gasp.c:1983
+#: gasp.c:1966
msgid "END missing from end of file.\n"
msgstr ""
-#: gasp.c:2013
+#: gasp.c:1992
msgid ".ASSIGNA needs constant expression argument.\n"
msgstr ""
-#: gasp.c:2017
+#: gasp.c:1996
msgid ".ASSIGNA without label.\n"
msgstr ""
-#: gasp.c:2042
+#: gasp.c:2021
msgid ".ASSIGNS without label.\n"
msgstr ""
-#: gasp.c:2109
+#: gasp.c:2085
#, c-format
msgid "Can't find preprocessor variable %s.\n"
msgstr ""
-#: gasp.c:2174
+#: gasp.c:2150
msgid "Comparison operator must be one of EQ, NE, LT, LE, GT or GE.\n"
msgstr ""
-#: gasp.c:2208
+#: gasp.c:2185
msgid "Comparison operator for strings must be EQ or NE\n"
msgstr ""
-#: gasp.c:2220 gasp.c:2230 gasp.c:2332
+#: gasp.c:2197 gasp.c:2207 gasp.c:2310
msgid "Conditional operator must have absolute operands.\n"
msgstr ""
-#: gasp.c:2225
+#: gasp.c:2202
msgid "String compared against expression.\n"
msgstr ""
-#: gasp.c:2275
+#: gasp.c:2253
msgid "AIF nesting unreasonable.\n"
msgstr ""
-#: gasp.c:2290
+#: gasp.c:2268
msgid "Multiple AELSEs in AIF.\n"
msgstr ""
-#: gasp.c:2306
+#: gasp.c:2284
msgid "AENDI without AIF.\n"
msgstr ""
-#: gasp.c:2329 gasp.c:2411
+#: gasp.c:2307 gasp.c:2389
msgid "IF nesting unreasonable.\n"
msgstr ""
-#: gasp.c:2421
+#: gasp.c:2399
msgid "Bad format for IF or IFNC.\n"
msgstr ""
-#: gasp.c:2441
+#: gasp.c:2420
msgid "AENDR without a AREPEAT.\n"
msgstr ""
-#: gasp.c:2443
+#: gasp.c:2422
msgid "ENDR without a REPT.\n"
msgstr ""
-#: gasp.c:2466
+#: gasp.c:2444
#, c-format
msgid "AWHILE without a AENDW at %d.\n"
msgstr ""
-#: gasp.c:2504
+#: gasp.c:2481
msgid "AENDW without a AENDW.\n"
msgstr ""
-#: gasp.c:2549
+#: gasp.c:2525
msgid "AREPEAT must have absolute operand.\n"
msgstr ""
-#: gasp.c:2555
+#: gasp.c:2531
#, c-format
msgid "AREPEAT without a AENDR at %d.\n"
msgstr ""
-#: gasp.c:2597
+#: gasp.c:2573
msgid ".ENDM without a matching .MACRO.\n"
msgstr ""
-#: gasp.c:2631
+#: gasp.c:2607
msgid "LOCAL outside of MACRO"
msgstr ""
-#: gasp.c:2644
+#: gasp.c:2620
#, c-format
msgid "macro at line %d: %s\n"
msgstr ""
-#: gasp.c:2667
+#: gasp.c:2643
msgid "macro expansion"
msgstr ""
-#: gasp.c:2719
+#: gasp.c:2697
msgid "Character code in string must be absolute expression.\n"
msgstr ""
-#: gasp.c:2724
+#: gasp.c:2702
msgid "Missing > for character code.\n"
msgstr ""
-#: gasp.c:2783
+#: gasp.c:2761
#, c-format
msgid "string for SDATAC longer than 255 characters (%d).\n"
msgstr ""
-#: gasp.c:2811
+#: gasp.c:2790
#, c-format
msgid "illegal character in SDATA line (0x%x).\n"
msgstr ""
-#: gasp.c:2832
+#: gasp.c:2812
msgid "Must have absolute SDATAB repeat count.\n"
msgstr ""
-#: gasp.c:2835
+#: gasp.c:2815
#, c-format
msgid "Must have positive SDATAB repeat count (%d).\n"
msgstr ""
-#: gasp.c:2863
+#: gasp.c:2843
#, c-format
msgid "Unreasonable include depth (%ld).\n"
msgstr ""
-#: gasp.c:2917
+#: gasp.c:2897
#, c-format
msgid "Can't open include file `%s'.\n"
msgstr ""
-#: gasp.c:2991
+#: gasp.c:2971
msgid "Unreasonable expansion (-u turns off check).\n"
msgstr ""
#. This one causes lots of pain when trying to preprocess
-#. ordinary code
-#: gasp.c:3212
+#. ordinary code.
+#: gasp.c:3185
#, c-format
msgid "Unrecognised pseudo op `%s'.\n"
msgstr ""
-#: gasp.c:3279
+#: gasp.c:3254
msgid "ORG command not allowed.\n"
msgstr ""
-#: gasp.c:3496
+#: gasp.c:3467
msgid "Invalid expression on command line.\n"
msgstr ""
-#: gasp.c:3537
+#: gasp.c:3510
#, c-format
msgid ""
"Usage: %s \n"
@@ -7029,7 +8498,7 @@ msgid ""
" [-p] [--print] print line numbers\n"
msgstr ""
-#: gasp.c:3546
+#: gasp.c:3519
msgid ""
" [-s] [--copysource] copy source through as comments \n"
" [-u] [--unreasonable] allow unreasonable nesting\n"
@@ -7040,37 +8509,37 @@ msgid ""
" [in-file]\n"
msgstr ""
-#: gasp.c:3562
+#: gasp.c:3536
#, c-format
msgid "%s: Gnu Assembler Macro Preprocessor\n"
msgstr ""
#. This output is intended to follow the GNU standards document.
-#: gasp.c:3646
+#: gasp.c:3619
#, c-format
msgid "GNU assembler pre-processor %s\n"
msgstr ""
-#: gasp.c:3647
+#: gasp.c:3620
msgid "Copyright 1996 Free Software Foundation, Inc.\n"
msgstr ""
-#: gasp.c:3669
+#: gasp.c:3643
#, c-format
msgid "%s: Can't open output file `%s'.\n"
msgstr ""
-#: gasp.c:3692
+#: gasp.c:3667
#, c-format
msgid "%s: Can't open input file `%s'.\n"
msgstr ""
-#: gasp.c:3711
+#: gasp.c:3686
#, c-format
msgid "Internal error, aborting at %s line %d"
msgstr ""
-#: gasp.c:3714
+#: gasp.c:3689
msgid ""
"\n"
"Please report this bug.\n"
@@ -7083,147 +8552,147 @@ msgstr ""
#. same as the one used by input_scrub_new_file(), if that is
#. not true, then this code will fail].
#.
-#. If we are reading from stdin, then we need to save each input line
-#. here (assuming of course that we actually have a line of input to read),
-#. so that it can be displayed in the listing that is produced at the end
-#. of the assembly.
-#: input-file.c:150 input-scrub.c:239 listing.c:353
+#. If we are reading from stdin, then we need to save each input
+#. line here (assuming of course that we actually have a line of
+#. input to read), so that it can be displayed in the listing
+#. that is produced at the end of the assembly.
+#: input-file.c:149 input-scrub.c:241 listing.c:344
msgid "{standard input}"
msgstr ""
-#: input-file.c:154
+#: input-file.c:153
#, c-format
msgid "Can't open %s for reading."
msgstr ""
-#: input-file.c:205 input-file.c:234
+#: input-file.c:204 input-file.c:233
#, c-format
msgid "Can't read from %s"
msgstr ""
-#: input-file.c:242
+#: input-file.c:241
#, c-format
msgid "Can't close %s"
msgstr ""
-#: input-scrub.c:270
-msgid "buffers nested too deeply"
+#: input-scrub.c:271
+msgid "macros nested too deeply"
msgstr ""
-#: input-scrub.c:371
+#: input-scrub.c:374
msgid "partial line at end of file ignored"
msgstr ""
-#: input-scrub.c:393
+#: input-scrub.c:396
msgid "Partial line at end of file ignored"
msgstr ""
-#: itbl-ops.c:359
+#: itbl-ops.c:350
msgid "Unable to allocate memory for new instructions\n"
msgstr ""
-#: listing.c:252
+#: listing.c:243
msgid "Warning:"
msgstr ""
-#: listing.c:259
+#: listing.c:250
msgid "Error:"
msgstr ""
-#: listing.c:1145
+#: listing.c:1125
#, c-format
msgid "can't open list file: %s"
msgstr ""
-#: listing.c:1169
+#: listing.c:1149
#, c-format
msgid "error closing list file: %s"
msgstr ""
-#: listing.c:1250
+#: listing.c:1228
msgid "strange paper height, set to no form"
msgstr ""
-#: listing.c:1316
+#: listing.c:1294
msgid "New line in title"
msgstr ""
-#: macro.c:529
+#: macro.c:550
msgid "unexpected end of file in macro definition"
msgstr ""
-#: macro.c:538
+#: macro.c:559
msgid "missing ) after formals"
msgstr ""
-#: macro.c:695
+#: macro.c:716
msgid "missplaced )"
msgstr ""
-#: macro.c:957
+#: macro.c:978
msgid "confusion in formal parameters"
msgstr ""
-#: macro.c:962
+#: macro.c:983
msgid "macro formal argument does not exist"
msgstr ""
-#: macro.c:977
+#: macro.c:998
msgid "can't mix positional and keyword arguments"
msgstr ""
-#: macro.c:985
+#: macro.c:1006
msgid "too many positional arguments"
msgstr ""
-#: macro.c:1165
+#: macro.c:1186
msgid "unexpected end of file in irp or irpc"
msgstr ""
-#: macro.c:1173
+#: macro.c:1194
msgid "missing model parameter"
msgstr ""
-#: messages.c:105
+#: messages.c:104
msgid "Assembler messages:\n"
msgstr ""
-#: messages.c:222
+#: messages.c:214
msgid "Warning: "
msgstr ""
-#: messages.c:331
+#: messages.c:318
msgid "Error: "
msgstr ""
-#: messages.c:435 messages.c:452
+#: messages.c:413 messages.c:429
msgid "Fatal error: "
msgstr ""
-#: messages.c:471
+#: messages.c:446
msgid "Internal error!\n"
msgstr ""
-#: messages.c:473
+#: messages.c:448
#, c-format
msgid "Assertion failure in %s at %s line %d.\n"
msgstr ""
-#: messages.c:476
+#: messages.c:451
#, c-format
msgid "Assertion failure at %s line %d.\n"
msgstr ""
-#: messages.c:477 messages.c:495
+#: messages.c:452 messages.c:471
msgid "Please report this bug.\n"
msgstr ""
-#: messages.c:490
+#: messages.c:466
#, c-format
msgid "Internal error, aborting at %s line %d in %s\n"
msgstr ""
-#: messages.c:493
+#: messages.c:469
#, c-format
msgid "Internal error, aborting at %s line %d\n"
msgstr ""
@@ -7251,472 +8720,468 @@ msgstr ""
msgid "Can't continue"
msgstr ""
-#: read.c:454
+#: read.c:445
#, c-format
msgid "error constructing %s pseudo-op table: %s"
msgstr ""
-#: read.c:819
+#: read.c:802
#, c-format
msgid "Unknown pseudo-op: `%s'"
msgstr ""
-#: read.c:952
+#: read.c:934
#, c-format
msgid "label \"%d$\" redefined"
msgstr ""
-#: read.c:1169
+#: read.c:1152
msgid ".abort detected. Abandoning ship."
msgstr ""
-#: read.c:1260 read.c:2033
+#: read.c:1238 read.c:2027
msgid "Alignment not a power of 2"
msgstr ""
-#: read.c:1268
+#: read.c:1247
#, c-format
msgid "Alignment too large: %u assumed"
msgstr ""
-#: read.c:1300
+#: read.c:1279
msgid "expected fill pattern missing"
msgstr ""
-#: read.c:1497
+#: read.c:1483
#, c-format
msgid "attempt to re-define symbol `%s'"
msgstr ""
#. Some of the back ends can't deal with non-positive line numbers.
#. Besides, it's silly.
-#: read.c:1621
+#: read.c:1607
#, c-format
msgid "Line numbers must be positive; line number %d rejected."
msgstr ""
-#: read.c:1648
+#: read.c:1635
msgid "start address not supported"
msgstr ""
-#: read.c:1658
+#: read.c:1645
msgid ".err encountered"
msgstr ""
-#: read.c:1677 read.c:1679
+#: read.c:1664 read.c:1666
#, c-format
msgid ".fail %ld encountered"
msgstr ""
-#: read.c:1716
+#: read.c:1703
#, c-format
msgid ".fill size clamped to %d."
msgstr ""
-#: read.c:1721
+#: read.c:1708
msgid "Size negative: .fill ignored."
msgstr ""
-#: read.c:1727
+#: read.c:1714
msgid "Repeat < 0, .fill ignored"
msgstr ""
-#: read.c:1885
+#: read.c:1874
#, c-format
msgid "unrecognized .linkonce type `%s'"
msgstr ""
-#: read.c:1898 read.c:1924
+#: read.c:1887 read.c:1913
msgid ".linkonce is not supported for this object file format"
msgstr ""
-#: read.c:1920
+#: read.c:1909
#, c-format
msgid "bfd_set_section_flags: %s"
msgstr ""
-#: read.c:1989
+#: read.c:1978
#, c-format
msgid "error setting flags for \".sbss\": %s"
msgstr ""
-#: read.c:2011
+#: read.c:2001
msgid "Expected comma after size"
msgstr ""
-#: read.c:2019
+#: read.c:2011
msgid "Missing alignment"
msgstr ""
-#: read.c:2161
+#: read.c:2162
msgid "bad expression"
msgstr ""
-#: read.c:2292
+#: read.c:2299
#, c-format
msgid "attempt to redefine pseudo-op `%s' ignored"
msgstr ""
-#: read.c:2358
+#: read.c:2365
#, c-format
msgid "invalid segment \"%s\"; segment \"%s\" assumed"
msgstr ""
-#: read.c:2364
+#: read.c:2371
msgid "ignoring fill value in absolute section"
msgstr ""
-#: read.c:2367
+#: read.c:2374
msgid "only constant offsets supported in absolute section"
msgstr ""
-#: read.c:2399
+#: read.c:2406
msgid "MRI style ORG pseudo-op not supported"
msgstr ""
-#: read.c:2487
+#: read.c:2495
msgid "unrecognized section type"
msgstr ""
-#: read.c:2555
+#: read.c:2563
#, c-format
msgid "unrecognized section type `%s'"
msgstr ""
-#: read.c:2569
+#: read.c:2577
msgid "absolute sections are not supported"
msgstr ""
-#: read.c:2584
+#: read.c:2592
#, c-format
msgid "unrecognized section command `%s'"
msgstr ""
-#: read.c:2672
+#: read.c:2680
#, c-format
msgid "%s without %s"
msgstr ""
-#: read.c:2876
+#: read.c:2881
msgid "Unsupported variable size or fill value"
msgstr ""
-#: read.c:2901
+#: read.c:2906
msgid ".space repeat count is zero, ignored"
msgstr ""
-#: read.c:2903
+#: read.c:2908
msgid ".space repeat count is negative, ignored"
msgstr ""
-#: read.c:2932
+#: read.c:2937
msgid "space allocation too complex in absolute section"
msgstr ""
-#: read.c:2937
+#: read.c:2943
msgid "space allocation too complex in common section"
msgstr ""
-#: read.c:3024 read.c:4113
+#: read.c:3031 read.c:4114
#, c-format
msgid "Bad floating literal: %s"
msgstr ""
-#: read.c:3100
+#: read.c:3104
#, c-format
msgid "Rest of line ignored. First ignored character is `%c'."
msgstr ""
-#: read.c:3103
+#: read.c:3107
#, c-format
msgid "Rest of line ignored. First ignored character valued 0x%x."
msgstr ""
-#: read.c:3154
+#: read.c:3158
msgid "illegal expression; zero assumed"
msgstr ""
-#: read.c:3156
+#: read.c:3160
msgid "missing expression; zero assumed"
msgstr ""
-#: read.c:3329
+#: read.c:3331
msgid "rva without symbol"
msgstr ""
-#: read.c:3454
+#: read.c:3455
msgid "attempt to store value in absolute section"
msgstr ""
-#: read.c:3492 read.c:4390
+#: read.c:3493 read.c:4391
msgid "zero assumed for missing expression"
msgstr ""
-#: read.c:3504 read.c:4402
+#: read.c:3505 read.c:4403
msgid "register value used as expression"
msgstr ""
#. Leading bits contain both 0s & 1s.
-#: read.c:3594
+#: read.c:3595
#, c-format
msgid "Value 0x%lx truncated to 0x%lx."
msgstr ""
-#: read.c:3610
+#: read.c:3611
#, c-format
msgid "Bignum truncated to %d bytes"
msgstr ""
-#: read.c:3687
+#: read.c:3688
#, c-format
msgid "unsupported BFD relocation size %u"
msgstr ""
-#: read.c:3776
+#: read.c:3778
msgid "using a bit field width of zero"
msgstr ""
-#: read.c:3784
+#: read.c:3786
#, c-format
msgid "field width \"%s\" too complex for a bitfield"
msgstr ""
-#: read.c:3792
+#: read.c:3794
#, c-format
msgid "field width %lu too big to fit in %d bytes: truncated to %d bits"
msgstr ""
-#: read.c:3813
+#: read.c:3816
#, c-format
msgid "field value \"%s\" too complex for a bitfield"
msgstr ""
-#: read.c:3937
+#: read.c:3942
msgid "Unresolvable or nonpositive repeat count; using 1"
msgstr ""
-#: read.c:3988
+#: read.c:3993
#, c-format
msgid "Unknown floating type type '%c'"
msgstr ""
-#: read.c:4010
+#: read.c:4015
msgid "Floating point constant too large"
msgstr ""
-#: read.c:4135
+#: read.c:4136
msgid "unresolvable or nonpositive repeat count; using 1"
msgstr ""
-#: read.c:4539
+#: read.c:4534
msgid "Expected <nn>"
msgstr ""
#. To be compatible with BSD 4.2 as: give the luser a linefeed!!
-#: read.c:4572 read.c:4655
+#: read.c:4567 read.c:4653
msgid "Unterminated string: Newline inserted."
msgstr ""
-#: read.c:4663
+#: read.c:4661
msgid "Bad escaped character in string, '?' assumed"
msgstr ""
-#: read.c:4689
+#: read.c:4687
msgid "expected address expression; zero assumed"
msgstr ""
-#: read.c:4709
+#: read.c:4707
#, c-format
msgid "symbol \"%s\" undefined; zero assumed"
msgstr ""
-#: read.c:4712
+#: read.c:4710
msgid "some symbol undefined; zero assumed"
msgstr ""
-#: read.c:4730
-msgid "bad or irreducible absolute expression; zero assumed"
-msgstr ""
-
-#: read.c:4768
+#: read.c:4763
msgid "This string may not contain '\\0'"
msgstr ""
-#: read.c:4807
+#: read.c:4800
msgid "Missing string"
msgstr ""
-#: read.c:5036
+#: read.c:5022
msgid "missing .func"
msgstr ""
-#: read.c:5053
+#: read.c:5039
msgid ".endfunc missing for previous .func"
msgstr ""
-#: stabs.c:209
+#: stabs.c:213
msgid ".stabs: Missing comma"
msgstr ""
-#: stabs.c:217 stabs.c:225 stabs.c:236
+#: stabs.c:221 stabs.c:229 stabs.c:240
#, c-format
msgid ".stab%c: Missing comma"
msgstr ""
-#: stabs.c:415
+#: stabs.c:419
msgid "comma missing in .xstabs"
msgstr ""
-#: subsegs.c:379
+#: subsegs.c:376
#, c-format
msgid "Attempt to switch to nonexistent segment \"%s\""
msgstr ""
-#: symbols.c:365 symbols.c:467
+#: symbols.c:357 symbols.c:456
#, c-format
msgid "Symbol %s already defined."
msgstr ""
-#: symbols.c:453
+#: symbols.c:442
#, c-format
msgid "Symbol \"%s\" is already defined as \"%s\"/%s%ld."
msgstr ""
-#: symbols.c:536 symbols.c:543
+#: symbols.c:519 symbols.c:526
#, c-format
msgid "Inserting \"%s\" into symbol table failed: %s"
msgstr ""
-#: symbols.c:894
+#: symbols.c:872
#, c-format
msgid "Symbol definition loop encountered at %s"
msgstr ""
-#: symbols.c:1071 symbols.c:1075
+#: symbols.c:1050 symbols.c:1054
#, c-format
msgid "undefined symbol %s in operation"
msgstr ""
-#: symbols.c:1079
+#: symbols.c:1059
msgid "invalid section for operation"
msgstr ""
-#: symbols.c:1084 symbols.c:1088
+#: symbols.c:1064 symbols.c:1068
#, c-format
msgid "undefined symbol %s in operation setting %s"
msgstr ""
-#: symbols.c:1093
+#: symbols.c:1073
#, c-format
msgid "invalid section for operation setting %s"
msgstr ""
-#: symbols.c:1111
+#: symbols.c:1091
#, c-format
msgid "division by zero when setting %s"
msgstr ""
-#: symbols.c:1183 write.c:1881
+#: symbols.c:1163 write.c:1945
#, c-format
msgid "can't resolve value for symbol \"%s\""
msgstr ""
-#: symbols.c:1556
+#: symbols.c:1533
#, c-format
msgid "\"%d\" (instance number %d of a %s label)"
msgstr ""
-#: symbols.c:1606
+#: symbols.c:1589
#, c-format
msgid "Attempt to get value of unresolved symbol %s"
msgstr ""
-#: write.c:169
+#: write.c:172
#, c-format
msgid "field fx_size too small to hold %d"
msgstr ""
-#: write.c:306
+#: write.c:309
msgid "rva not supported"
msgstr ""
-#: write.c:502
+#: write.c:517
#, c-format
msgid "attempt to .org/.space backwards? (%ld)"
msgstr ""
-#: write.c:974
+#: write.c:995
msgid "relocation out of range"
msgstr ""
-#: write.c:977
+#: write.c:998
#, c-format
msgid "%s:%u: bad return from bfd_install_relocation: %x"
msgstr ""
-#: write.c:1022
+#: write.c:1043
msgid "internal error: fixup not contained within frag"
msgstr ""
-#: write.c:1038
+#: write.c:1059
#, c-format
msgid "%s:%u: bad return from bfd_install_relocation"
msgstr ""
-#: write.c:1125 write.c:1149
+#: write.c:1146 write.c:1170
#, c-format
msgid "FATAL: Can't write %s"
msgstr ""
-#: write.c:1180
+#: write.c:1202
msgid "Cannot write to output file."
msgstr ""
-#: write.c:1412
+#: write.c:1451
#, c-format
msgid "%d error%s, %d warning%s, generating bad object file.\n"
msgstr ""
-#: write.c:1419
+#: write.c:1458
#, c-format
msgid "%d error%s, %d warning%s, no object file generated.\n"
msgstr ""
-#: write.c:1818
+#: write.c:1882
#, c-format
msgid "local label %s is not defined"
msgstr ""
-#: write.c:2123
+#: write.c:2187
#, c-format
msgid "alignment padding (%lu bytes) not a multiple of %ld"
msgstr ""
-#: write.c:2229
+#: write.c:2297
#, c-format
msgid ".word %s-%s+%s didn't fit"
msgstr ""
-#: write.c:2309
+#: write.c:2378
msgid "attempt to .org backwards ignored"
msgstr ""
-#: write.c:2332
+#: write.c:2402
msgid ".space specifies non-absolute value"
msgstr ""
-#: write.c:2336
+#: write.c:2406
msgid ".space or .fill with negative value, ignored"
msgstr ""
-#: write.c:2587
+#: write.c:2657
#, c-format
msgid ""
"Subtraction of two symbols in different sections \"%s\" {%s section} - "
"\"%s\" {%s section} at file address %s."
msgstr ""
-#: write.c:2752
+#: write.c:2811
#, c-format
msgid "Value of %s too large for field of %d bytes at %s"
msgstr ""
diff --git a/contrib/binutils/gas/read.c b/contrib/binutils/gas/read.c
index 1522842..1086bf0 100644
--- a/contrib/binutils/gas/read.c
+++ b/contrib/binutils/gas/read.c
@@ -17,28 +17,25 @@ 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. */
+02111-1307, USA. */
#if 0
-#define MASK_CHAR (0xFF) /* If your chars aren't 8 bits, you will
- change this a bit. But then, GNU isn't
- spozed to run on your machine anyway.
- (RMS is so shortsighted sometimes.)
- */
+/* If your chars aren't 8 bits, you will change this a bit.
+ But then, GNU isn't spozed to run on your machine anyway.
+ (RMS is so shortsighted sometimes.) */
+#define MASK_CHAR (0xFF)
#else
-#define MASK_CHAR ((int)(unsigned char)-1)
+#define MASK_CHAR ((int)(unsigned char) -1)
#endif
-
/* This is the largest known floating point format (for now). It will
- grow when we do 4361 style flonums. */
-
+ grow when we do 4361 style flonums. */
#define MAXIMUM_NUMBER_OF_CHARS_FOR_FLOAT (16)
/* Routines that read assembler source text to build spagetti in memory.
Another group of these functions is in the expr.c module. */
-/* for isdigit() */
+/* For isdigit (). */
#include <ctype.h>
#include "as.h"
@@ -55,28 +52,22 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
/* Set by the object-format or the target. */
#ifndef TC_IMPLICIT_LCOMM_ALIGNMENT
-#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) \
- do { \
- if ((SIZE) >= 8) \
- (P2VAR) = 3; \
- else if ((SIZE) >= 4) \
- (P2VAR) = 2; \
- else if ((SIZE) >= 2) \
- (P2VAR) = 1; \
- else \
- (P2VAR) = 0; \
- } while (0)
-#endif
-
-/* The NOP_OPCODE is for the alignment fill value.
- * fill it a nop instruction so that the disassembler does not choke
- * on it
- */
-#ifndef NOP_OPCODE
-#define NOP_OPCODE 0x00
+#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) \
+ do \
+ { \
+ if ((SIZE) >= 8) \
+ (P2VAR) = 3; \
+ else if ((SIZE) >= 4) \
+ (P2VAR) = 2; \
+ else if ((SIZE) >= 2) \
+ (P2VAR) = 1; \
+ else \
+ (P2VAR) = 0; \
+ } \
+ while (0)
#endif
-char *input_line_pointer; /*->next char of source file to parse. */
+char *input_line_pointer; /*->next char of source file to parse. */
#if BITS_PER_CHAR != 8
/* The following table is indexed by[(char)] and will break if
@@ -105,6 +96,8 @@ die horribly;
#endif
#ifndef LEX_HASH
+/* The IA-64 assembler uses # as a suffix designating a symbol. We include
+ it in the symbol and strip it out in tc_canonicalize_symbol_name. */
#define LEX_HASH 0
#endif
@@ -118,9 +111,8 @@ die horribly;
#define LEX_TILDE 0
#endif
-/* used by is_... macros. our ctype[] */
-char lex_type[256] =
-{
+/* Used by is_... macros. our ctype[]. */
+char lex_type[256] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* @ABCDEFGHIJKLMNO */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ[\]^_ */
0, 0, 0, LEX_HASH, LEX_DOLLAR, LEX_PCT, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, /* _!"#$%&'()*+,-./ */
@@ -128,7 +120,7 @@ char lex_type[256] =
LEX_AT, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* @ABCDEFGHIJKLMNO */
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, LEX_BR, 0, LEX_BR, 0, 3, /* PQRSTUVWXYZ[\]^_ */
0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* `abcdefghijklmno */
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, LEX_BR, 0, LEX_BR, LEX_TILDE, 0, /* pqrstuvwxyz{|}~. */
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, LEX_BR, 0, LEX_BR, LEX_TILDE, 0, /* pqrstuvwxyz{|}~. */
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
@@ -139,58 +131,59 @@ char lex_type[256] =
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
};
-
-/*
- * In: a character.
- * Out: 1 if this character ends a line.
- */
-#define Z_ (0)
-char is_end_of_line[256] =
-{
+/* In: a character.
+ Out: 1 if this character ends a line. */
+char is_end_of_line[256] = {
#ifdef CR_EOL
- 99, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, 99, Z_, Z_, 99, Z_, Z_, /* @abcdefghijklmno */
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, /* @abcdefghijklmno */
#else
- 99, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, 99, Z_, Z_, Z_, Z_, Z_, /* @abcdefghijklmno */
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, /* @abcdefghijklmno */
#endif
- Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, /* */
-#ifdef TC_HPPA
- Z_,99, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, /* _!"#$%&'()*+,-./ */
- Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, /* 0123456789:;<=>? */
-#else
- Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, /* */
- Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, 99, Z_, Z_, Z_, Z_, /* 0123456789:;<=>? */
-#endif
- Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, /* */
- Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, /* */
- Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, /* */
- Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, /* */
- Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, /* */
- Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, /* */
- Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, /* */
- Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, /* */
- Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, Z_, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* _!"#$%&'()*+,-./ */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0123456789:;<=>? */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /* */
};
-#undef Z_
-/* Functions private to this file. */
+#ifdef IGNORE_OPCODE_CASE
+char original_case_string[128];
+#endif
+
+/* Functions private to this file. */
-static char *buffer; /* 1st char of each buffer of lines is here. */
-static char *buffer_limit; /*->1 + last char in buffer. */
+static char *buffer; /* 1st char of each buffer of lines is here. */
+static char *buffer_limit; /*->1 + last char in buffer. */
-/* TARGET_BYTES_BIG_ENDIAN is required to be defined to either 0 or 1 in the
- tc-<CPU>.h file. See the "Porting GAS" section of the internals manual. */
+/* TARGET_BYTES_BIG_ENDIAN is required to be defined to either 0 or 1
+ in the tc-<CPU>.h file. See the "Porting GAS" section of the
+ internals manual. */
int target_big_endian = TARGET_BYTES_BIG_ENDIAN;
-static char *old_buffer; /* JF a hack */
+static char *old_buffer; /* JF a hack. */
static char *old_input;
static char *old_limit;
-/* Variables for handling include file directory table. */
+/* Variables for handling include file directory table. */
+
+/* Table of pointers to directories to search for .include's. */
+char **include_dirs;
-char **include_dirs; /* Table of pointers to directories to
- search for .include's */
-int include_dir_count; /* How many are in the table */
-int include_dir_maxlen = 1;/* Length of longest in table */
+/* How many are in the table. */
+int include_dir_count;
+
+/* Length of longest in table. */
+int include_dir_maxlen = 1;
#ifndef WORKING_DOT_WORD
struct broken_word *broken_words;
@@ -247,7 +240,6 @@ static void pobegin PARAMS ((void));
static int get_line_sb PARAMS ((sb *));
static void generate_file_debug PARAMS ((void));
-
void
read_begin ()
{
@@ -261,21 +253,20 @@ read_begin ()
obstack_begin (&notes, chunksize);
obstack_begin (&cond_obstack, chunksize);
- /* Use machine dependent syntax */
+ /* Use machine dependent syntax. */
for (p = line_separator_chars; *p; p++)
is_end_of_line[(unsigned char) *p] = 1;
- /* Use more. FIXME-SOMEDAY. */
+ /* Use more. FIXME-SOMEDAY. */
if (flag_mri)
lex_type['?'] = 3;
}
-/* set up pseudo-op tables */
+/* Set up pseudo-op tables. */
static struct hash_control *po_hash;
-static const pseudo_typeS potable[] =
-{
+static const pseudo_typeS potable[] = {
{"abort", s_abort, 0},
{"align", s_align_ptwo, 0},
{"ascii", stringer, 0},
@@ -283,7 +274,7 @@ static const pseudo_typeS potable[] =
{"balign", s_align_bytes, 0},
{"balignw", s_align_bytes, -2},
{"balignl", s_align_bytes, -4},
-/* block */
+/* block */
{"byte", cons, 1},
{"comm", s_comm, 0},
{"common", s_mri_common, 0},
@@ -315,10 +306,10 @@ static const pseudo_typeS potable[] =
#ifdef S_SET_DESC
{"desc", s_desc, 0},
#endif
-/* dim */
+/* dim */
{"double", float_cons, 'd'},
-/* dsect */
- {"eject", listing_eject, 0}, /* Formfeed listing */
+/* dsect */
+ {"eject", listing_eject, 0}, /* Formfeed listing. */
{"else", s_else, 0},
{"elsec", s_else, 0},
{"elseif", s_elseif, (int) O_ne},
@@ -326,13 +317,13 @@ static const pseudo_typeS potable[] =
{"endc", s_endif, 0},
{"endfunc", s_func, 1},
{"endif", s_endif, 0},
-/* endef */
+/* endef */
{"equ", s_set, 0},
{"equiv", s_set, 1},
{"err", s_err, 0},
{"exitm", s_mexit, 0},
-/* extend */
- {"extern", s_ignore, 0}, /* We treat all undef as ext */
+/* extend */
+ {"extern", s_ignore, 0}, /* We treat all undef as ext. */
{"appfile", s_app_file, 1},
{"appline", s_app_line, 0},
{"fail", s_fail, 0},
@@ -365,9 +356,9 @@ static const pseudo_typeS potable[] =
{"irpc", s_irp, 1},
{"irepc", s_irp, 1},
{"lcomm", s_lcomm, 0},
- {"lflags", listing_flags, 0}, /* Listing flags */
+ {"lflags", listing_flags, 0}, /* Listing flags. */
{"linkonce", s_linkonce, 0},
- {"list", listing_list, 1}, /* Turn listing on */
+ {"list", listing_list, 1}, /* Turn listing on. */
{"llen", listing_psize, 1},
{"long", cons, 4},
{"lsym", s_lsym, 0},
@@ -377,7 +368,7 @@ static const pseudo_typeS potable[] =
{".mri", s_mri, 0}, /* Special case so .mri works in MRI mode. */
{"name", s_ignore, 0},
{"noformat", s_ignore, 0},
- {"nolist", listing_list, 0}, /* Turn listing off */
+ {"nolist", listing_list, 0}, /* Turn listing off. */
{"nopage", listing_nopage, 0},
{"octa", cons, 16},
{"offset", s_struct, 0},
@@ -388,19 +379,19 @@ static const pseudo_typeS potable[] =
{"page", listing_eject, 0},
{"plen", listing_psize, 0},
{"print", s_print, 0},
- {"psize", listing_psize, 0}, /* set paper size */
+ {"psize", listing_psize, 0}, /* Set paper size. */
{"purgem", s_purgem, 0},
{"quad", cons, 8},
{"rep", s_rept, 0},
{"rept", s_rept, 0},
{"rva", s_rva, 4},
- {"sbttl", listing_title, 1}, /* Subtitle of listing */
-/* scl */
-/* sect */
+ {"sbttl", listing_title, 1}, /* Subtitle of listing. */
+/* scl */
+/* sect */
{"set", s_set, 0},
{"short", cons, 2},
{"single", float_cons, 'f'},
-/* size */
+/* size */
{"space", s_space, 0},
{"skip", s_space, 0},
{"sleb128", s_leb128, 1},
@@ -410,7 +401,7 @@ static const pseudo_typeS potable[] =
{"stabs", s_stab, 's'},
{"string", stringer, 1},
{"struct", s_struct, 0},
-/* tag */
+/* tag */
{"text", s_text, 0},
/* This is for gcc to use. It's only just been added (2/94), so gcc
@@ -423,19 +414,19 @@ static const pseudo_typeS potable[] =
this one. Match it either way... */
{"this_gcc_requires_the_gnu_assembler", s_ignore, 0},
- {"title", listing_title, 0}, /* Listing title */
+ {"title", listing_title, 0}, /* Listing title. */
{"ttl", listing_title, 0},
-/* type */
+/* type */
{"uleb128", s_leb128, 0},
-/* use */
-/* val */
+/* use */
+/* val */
{"xcom", s_comm, 0},
{"xdef", s_globl, 0},
{"xref", s_ignore, 0},
{"xstabs", s_xstab, 's'},
{"word", cons, 2},
{"zero", s_space, 0},
- {NULL, NULL, 0} /* end sentinel */
+ {NULL, NULL, 0} /* End sentinel. */
};
static int pop_override_ok = 0;
@@ -464,21 +455,21 @@ pop_insert (table)
#define obj_pop_insert() pop_insert(obj_pseudo_table)
#endif
-static void
+static void
pobegin ()
{
po_hash = hash_new ();
- /* Do the target-specific pseudo ops. */
+ /* Do the target-specific pseudo ops. */
pop_table_name = "md";
md_pop_insert ();
- /* Now object specific. Skip any that were in the target table. */
+ /* Now object specific. Skip any that were in the target table. */
pop_table_name = "obj";
pop_override_ok = 1;
obj_pop_insert ();
- /* Now portable ones. Skip any that we've seen already. */
+ /* Now portable ones. Skip any that we've seen already. */
pop_table_name = "standard";
pop_insert (potable);
}
@@ -486,13 +477,12 @@ pobegin ()
#define HANDLE_CONDITIONAL_ASSEMBLY() \
if (ignore_input ()) \
{ \
- while (! is_end_of_line[(unsigned char) *input_line_pointer++]) \
+ while (!is_end_of_line[(unsigned char) *input_line_pointer++]) \
if (input_line_pointer == buffer_limit) \
break; \
continue; \
}
-
/* This function is used when scrubbing the characters between #APP
and #NO_APP. */
@@ -514,20 +504,21 @@ scrub_from_string (buf, buflen)
return copy;
}
-/* read_a_source_file()
- *
- * We read the file, putting things into a web that
- * represents what we have been reading.
- */
-void
+/* We read the file, putting things into a web that represents what we
+ have been reading. */
+void
read_a_source_file (name)
char *name;
{
register char c;
- register char *s; /* string of symbol, '\0' appended */
+ register char *s; /* String of symbol, '\0' appended. */
register int temp;
pseudo_typeS *pop;
+#ifdef WARN_COMMENTS
+ found_comment = 0;
+#endif
+
buffer = input_scrub_new_file (name);
listing_file (name);
@@ -540,26 +531,23 @@ read_a_source_file (name)
generate_file_debug ();
while ((buffer_limit = input_scrub_next_buffer (&input_line_pointer)) != 0)
- { /* We have another line to parse. */
- know (buffer_limit[-1] == '\n'); /* Must have a sentinel. */
+ { /* We have another line to parse. */
+ know (buffer_limit[-1] == '\n'); /* Must have a sentinel. */
contin: /* JF this goto is my fault I admit it.
Someone brave please re-write the whole
input section here? Pleeze??? */
while (input_line_pointer < buffer_limit)
{
- /* We have more of this buffer to parse. */
+ /* We have more of this buffer to parse. */
- /*
- * We now have input_line_pointer->1st char of next line.
- * If input_line_pointer [-1] == '\n' then we just
- * scanned another line: so bump line counters.
- */
+ /* We now have input_line_pointer->1st char of next line.
+ If input_line_pointer [-1] == '\n' then we just
+ scanned another line: so bump line counters. */
if (is_end_of_line[(unsigned char) input_line_pointer[-1]])
{
#ifdef md_start_line_hook
md_start_line_hook ();
#endif
-
if (input_line_pointer[-1] == '\n')
bump_line_counters ();
@@ -610,12 +598,12 @@ read_a_source_file (name)
/* In MRI mode, we need to handle the MACRO
pseudo-op specially: we don't want to put the
symbol in the symbol table. */
- if (! mri_line_macro
+ if (!mri_line_macro
#ifdef TC_START_LABEL_WITHOUT_COLON
- && TC_START_LABEL_WITHOUT_COLON(c,
- input_line_pointer)
+ && TC_START_LABEL_WITHOUT_COLON(c,
+ input_line_pointer)
#endif
- )
+ )
line_label = colon (line_start);
else
line_label = symbol_create (line_start,
@@ -630,28 +618,25 @@ read_a_source_file (name)
}
}
- /*
- * We are at the begining of a line, or similar place.
- * We expect a well-formed assembler statement.
- * A "symbol-name:" is a statement.
- *
- * Depending on what compiler is used, the order of these tests
- * may vary to catch most common case 1st.
- * Each test is independent of all other tests at the (top) level.
- * PLEASE make a compiler that doesn't use this assembler.
- * It is crufty to waste a compiler's time encoding things for this
- * assembler, which then wastes more time decoding it.
- * (And communicating via (linear) files is silly!
- * If you must pass stuff, please pass a tree!)
- */
+ /* We are at the begining of a line, or similar place.
+ We expect a well-formed assembler statement.
+ A "symbol-name:" is a statement.
+
+ Depending on what compiler is used, the order of these tests
+ may vary to catch most common case 1st.
+ Each test is independent of all other tests at the (top) level.
+ PLEASE make a compiler that doesn't use this assembler.
+ It is crufty to waste a compiler's time encoding things for this
+ assembler, which then wastes more time decoding it.
+ (And communicating via (linear) files is silly!
+ If you must pass stuff, please pass a tree!) */
if ((c = *input_line_pointer++) == '\t'
|| c == ' '
|| c == '\f'
|| c == 0)
- {
- c = *input_line_pointer++;
- }
- know (c != ' '); /* No further leading whitespace. */
+ c = *input_line_pointer++;
+
+ know (c != ' '); /* No further leading whitespace. */
#ifndef NO_LISTING
/* If listing is on, and we are expanding a macro, then give
@@ -664,18 +649,18 @@ read_a_source_file (name)
int len;
/* Find the end of the current expanded macro line. */
- for (s = input_line_pointer-1; *s ; ++s)
+ for (s = input_line_pointer - 1; *s; ++s)
if (is_end_of_line[(unsigned char) *s])
break;
/* Copy it for safe keeping. Also give an indication of
how much macro nesting is involved at this point. */
- len = s - (input_line_pointer-1);
+ len = s - (input_line_pointer - 1);
copy = (char *) xmalloc (len + macro_nest + 2);
memset (copy, '>', macro_nest);
copy[macro_nest] = ' ';
- memcpy (copy + macro_nest + 1, input_line_pointer-1, len);
- copy[macro_nest+1+len] = '\0';
+ memcpy (copy + macro_nest + 1, input_line_pointer - 1, len);
+ copy[macro_nest + 1 + len] = '\0';
/* Install the line with the listing facility. */
listing_newline (copy);
@@ -684,37 +669,34 @@ read_a_source_file (name)
listing_newline (NULL);
}
#endif
-
- /*
- * C is the 1st significant character.
- * Input_line_pointer points after that character.
- */
+ /* C is the 1st significant character.
+ Input_line_pointer points after that character. */
if (is_name_beginner (c))
{
- /* want user-defined label or pseudo/opcode */
+ /* Want user-defined label or pseudo/opcode. */
HANDLE_CONDITIONAL_ASSEMBLY ();
s = --input_line_pointer;
- c = get_symbol_end (); /* name's delimiter */
- /*
- * C is character after symbol.
- * That character's place in the input line is now '\0'.
- * S points to the beginning of the symbol.
- * [In case of pseudo-op, s->'.'.]
- * Input_line_pointer->'\0' where c was.
- */
- if (TC_START_LABEL(c, input_line_pointer))
+ c = get_symbol_end (); /* name's delimiter. */
+
+ /* C is character after symbol.
+ That character's place in the input line is now '\0'.
+ S points to the beginning of the symbol.
+ [In case of pseudo-op, s->'.'.]
+ Input_line_pointer->'\0' where c was. */
+ if (TC_START_LABEL (c, input_line_pointer))
{
if (flag_m68k_mri)
{
char *rest = input_line_pointer + 1;
/* In MRI mode, \tsym: set 0 is permitted. */
-
if (*rest == ':')
++rest;
+
if (*rest == ' ' || *rest == '\t')
++rest;
+
if ((strncasecmp (rest, "EQU", 3) == 0
|| strncasecmp (rest, "SET", 3) == 0)
&& (rest[3] == ' ' || rest[3] == '\t'))
@@ -725,18 +707,17 @@ read_a_source_file (name)
}
}
- line_label = colon (s); /* user-defined label */
- *input_line_pointer++ = ':'; /* Put ':' back for error messages' sake. */
- /* Input_line_pointer->after ':'. */
+ line_label = colon (s); /* User-defined label. */
+ /* Put ':' back for error messages' sake. */
+ *input_line_pointer++ = ':';
+ /* Input_line_pointer->after ':'. */
SKIP_WHITESPACE ();
-
-
}
else if (c == '='
|| ((c == ' ' || c == '\t')
&& input_line_pointer[1] == '='
#ifdef TC_EQUAL_IN_INSN
- && ! TC_EQUAL_IN_INSN (c, input_line_pointer)
+ && !TC_EQUAL_IN_INSN (c, input_line_pointer)
#endif
))
{
@@ -744,13 +725,17 @@ read_a_source_file (name)
demand_empty_rest_of_line ();
}
else
- { /* expect pseudo-op or machine instruction */
+ {
+ /* Expect pseudo-op or machine instruction. */
pop = NULL;
-#define IGNORE_OPCODE_CASE
#ifdef IGNORE_OPCODE_CASE
{
char *s2 = s;
+
+ strncpy (original_case_string, s2, sizeof (original_case_string));
+ original_case_string[sizeof (original_case_string) - 1] = 0;
+
while (*s2)
{
if (isupper ((unsigned char) *s2))
@@ -759,7 +744,6 @@ read_a_source_file (name)
}
}
#endif
-
if (NO_PSEUDO_DOT || flag_m68k_mri)
{
/* The MRI assembler and the m88k use pseudo-ops
@@ -770,15 +754,13 @@ read_a_source_file (name)
}
if (pop != NULL
- || (! flag_m68k_mri && *s == '.'))
+ || (!flag_m68k_mri && *s == '.'))
{
- /*
- * PSEUDO - OP.
- *
- * WARNING: c has next char, which may be end-of-line.
- * We lookup the pseudo-op table with s+1 because we
- * already know that the pseudo-op begins with a '.'.
- */
+ /* PSEUDO - OP.
+
+ WARNING: c has next char, which may be end-of-line.
+ We lookup the pseudo-op table with s+1 because we
+ already know that the pseudo-op begins with a '.'. */
if (pop == NULL)
pop = (pseudo_typeS *) hash_find (po_hash, s + 1);
@@ -788,24 +770,25 @@ read_a_source_file (name)
this is. */
if (mri_pending_align
&& (pop == NULL
- || ! ((pop->poc_handler == cons
- && pop->poc_val == 1)
- || (pop->poc_handler == s_space
- && pop->poc_val == 1)
+ || !((pop->poc_handler == cons
+ && pop->poc_val == 1)
+ || (pop->poc_handler == s_space
+ && pop->poc_val == 1)
#ifdef tc_conditional_pseudoop
- || tc_conditional_pseudoop (pop)
+ || tc_conditional_pseudoop (pop)
#endif
- || pop->poc_handler == s_if
- || pop->poc_handler == s_ifdef
- || pop->poc_handler == s_ifc
- || pop->poc_handler == s_ifeqs
- || pop->poc_handler == s_else
- || pop->poc_handler == s_endif
- || pop->poc_handler == s_globl
- || pop->poc_handler == s_ignore)))
+ || pop->poc_handler == s_if
+ || pop->poc_handler == s_ifdef
+ || pop->poc_handler == s_ifc
+ || pop->poc_handler == s_ifeqs
+ || pop->poc_handler == s_else
+ || pop->poc_handler == s_endif
+ || pop->poc_handler == s_globl
+ || pop->poc_handler == s_ignore)))
{
do_align (1, (char *) NULL, 0, 0);
mri_pending_align = 0;
+
if (line_label != NULL)
{
symbol_set_frag (line_label, frag_now);
@@ -813,7 +796,7 @@ read_a_source_file (name)
}
}
- /* Print the error msg now, while we still can */
+ /* Print the error msg now, while we still can. */
if (pop == NULL)
{
as_bad (_("Unknown pseudo-op: `%s'"), s);
@@ -822,18 +805,17 @@ read_a_source_file (name)
continue;
}
- /* Put it back for error messages etc. */
+ /* Put it back for error messages etc. */
*input_line_pointer = c;
/* The following skip of whitespace is compulsory.
A well shaped space is sometimes all that separates
- keyword from operands. */
+ keyword from operands. */
if (c == ' ' || c == '\t')
input_line_pointer++;
- /*
- * Input_line is restored.
- * Input_line_pointer->1st non-blank char
- * after pseudo-operation.
- */
+
+ /* Input_line is restored.
+ Input_line_pointer->1st non-blank char
+ after pseudo-operation. */
(*pop->poc_handler) (pop->poc_val);
/* If that was .end, just get out now. */
@@ -847,8 +829,8 @@ read_a_source_file (name)
int inescape = 0;
#endif
- /* WARNING: c has char, which may be end-of-line. */
- /* Also: input_line_pointer->`\0` where c was. */
+ /* WARNING: c has char, which may be end-of-line. */
+ /* Also: input_line_pointer->`\0` where c was. */
*input_line_pointer = c;
while (!is_end_of_line[(unsigned char) *input_line_pointer]
|| inquote
@@ -858,12 +840,12 @@ read_a_source_file (name)
)
{
if (flag_m68k_mri && *input_line_pointer == '\'')
- inquote = ! inquote;
+ inquote = !inquote;
#ifdef QUOTES_IN_INSN
if (inescape)
inescape = 0;
else if (*input_line_pointer == '"')
- inquote = ! inquote;
+ inquote = !inquote;
else if (*input_line_pointer == '\\')
inescape = 1;
#endif
@@ -879,7 +861,7 @@ read_a_source_file (name)
{
sb out;
const char *err;
- macro_entry *macro;
+ macro_entry *macro;
if (check_macro (s, &out, '\0', &err, &macro))
{
@@ -892,7 +874,7 @@ read_a_source_file (name)
buffer_limit =
input_scrub_next_buffer (&input_line_pointer);
#ifdef md_macro_info
- md_macro_info (macro);
+ md_macro_info (macro);
#endif
continue;
}
@@ -909,17 +891,16 @@ read_a_source_file (name)
}
}
- md_assemble (s); /* Assemble 1 instruction. */
+ md_assemble (s); /* Assemble 1 instruction. */
*input_line_pointer++ = c;
/* We resume loop AFTER the end-of-line from
- this instruction. */
- } /* if (*s=='.') */
- } /* if c==':' */
+ this instruction. */
+ }
+ }
continue;
- } /* if (is_name_beginner(c) */
-
+ }
/* Empty statement? */
if (is_end_of_line[(unsigned char) c])
@@ -928,18 +909,19 @@ read_a_source_file (name)
if ((LOCAL_LABELS_DOLLAR || LOCAL_LABELS_FB)
&& isdigit ((unsigned char) c))
{
- /* local label ("4:") */
+ /* local label ("4:") */
char *backup = input_line_pointer;
HANDLE_CONDITIONAL_ASSEMBLY ();
temp = c - '0';
+ /* Read the whole number. */
while (isdigit ((unsigned char) *input_line_pointer))
{
temp = (temp * 10) + *input_line_pointer - '0';
++input_line_pointer;
- } /* read the whole number */
+ }
if (LOCAL_LABELS_DOLLAR
&& *input_line_pointer == '$'
@@ -969,7 +951,7 @@ read_a_source_file (name)
} /* local label ("4:") */
if (c && strchr (line_comment_chars, c))
- { /* Its a comment. Better say APP or NO_APP */
+ { /* Its a comment. Better say APP or NO_APP. */
char *ends;
char *new_buf;
char *new_tmp;
@@ -992,7 +974,7 @@ read_a_source_file (name)
/* The end of the #APP wasn't in this buffer. We
keep reading in buffers until we find the #NO_APP
that goes with this #APP There is one. The specs
- guarentee it. . . */
+ guarentee it... */
tmp_len = buffer_limit - s;
tmp_buf = xmalloc (tmp_len + 1);
memcpy (tmp_buf, s, tmp_len);
@@ -1060,6 +1042,7 @@ read_a_source_file (name)
buffer = new_buf;
input_line_pointer = new_buf;
buffer_limit = new_tmp;
+
continue;
}
@@ -1069,11 +1052,10 @@ read_a_source_file (name)
if (tc_unrecognized_line (c))
continue;
#endif
-
- /* as_warn("Junk character %d.",c); Now done by ignore_rest */
- input_line_pointer--; /* Report unknown char as ignored. */
+ /* as_warn (_("Junk character %d."),c); Now done by ignore_rest. */
+ input_line_pointer--; /* Report unknown char as ignored. */
ignore_rest_of_line ();
- } /* while (input_line_pointer<buffer_limit) */
+ }
#ifdef md_after_pass_hook
md_after_pass_hook ();
@@ -1092,14 +1074,22 @@ read_a_source_file (name)
goto contin;
}
}
- } /* while (more buffers to scan) */
+ }
quit:
#ifdef md_cleanup
- md_cleanup();
+ md_cleanup ();
+#endif
+ /* Close the input file. */
+ input_scrub_close ();
+#ifdef WARN_COMMENTS
+ {
+ if (warn_comment && found_comment)
+ as_warn_where (found_comment_file, found_comment,
+ "first comment found here");
+ }
#endif
- input_scrub_close (); /* Close the input file */
}
/* For most MRI pseudo-ops, the line actually ends at the first
@@ -1114,37 +1104,30 @@ char *
mri_comment_field (stopcp)
char *stopcp;
{
-#ifdef TC_M68K
-
char *s;
+#ifdef TC_M68K
int inquote = 0;
know (flag_m68k_mri);
for (s = input_line_pointer;
- ((! is_end_of_line[(unsigned char) *s] && *s != ' ' && *s != '\t')
+ ((!is_end_of_line[(unsigned char) *s] && *s != ' ' && *s != '\t')
|| inquote);
s++)
{
if (*s == '\'')
- inquote = ! inquote;
+ inquote = !inquote;
}
- *stopcp = *s;
- *s = '\0';
- return s;
-
#else
-
- char *s;
-
- for (s = input_line_pointer; ! is_end_of_line[(unsigned char) *s]; s++)
+ for (s = input_line_pointer;
+ !is_end_of_line[(unsigned char) *s];
+ s++)
;
+#endif
*stopcp = *s;
*s = '\0';
- return s;
-
-#endif
+ return s;
}
/* Skip to the end of an MRI comment field. */
@@ -1158,11 +1141,11 @@ mri_comment_end (stop, stopc)
input_line_pointer = stop;
*stop = stopc;
- while (! is_end_of_line[(unsigned char) *input_line_pointer])
+ while (!is_end_of_line[(unsigned char) *input_line_pointer])
++input_line_pointer;
}
-void
+void
s_abort (ignore)
int ignore ATTRIBUTE_UNUSED;
{
@@ -1175,33 +1158,28 @@ s_abort (ignore)
the maximum number of characters to skip when doing the alignment,
or 0 if there is no maximum. */
-static void
+static void
do_align (n, fill, len, max)
int n;
char *fill;
int len;
int max;
{
- char default_fill;
-
#ifdef md_do_align
md_do_align (n, fill, len, max, just_record_alignment);
#endif
- if (fill == NULL)
- {
- if (subseg_text_p (now_seg))
- default_fill = NOP_OPCODE;
- else
- default_fill = 0;
- fill = &default_fill;
- len = 1;
- }
-
- /* Only make a frag if we HAVE to. . . */
+ /* Only make a frag if we HAVE to... */
if (n != 0 && !need_pass_2)
{
- if (len <= 1)
+ if (fill == NULL)
+ {
+ if (subseg_text_p (now_seg))
+ frag_align_code (n, max);
+ else
+ frag_align (n, 0, max);
+ }
+ else if (len <= 1)
frag_align (n, *fill, max);
else
frag_align_pattern (n, fill, len, max);
@@ -1239,7 +1217,7 @@ s_align (arg, bytes_p)
if (arg < 0)
align = 0;
else
- align = arg; /* Default value from pseudo-op table */
+ align = arg; /* Default value from pseudo-op table. */
}
else
{
@@ -1258,6 +1236,7 @@ s_align (arg, bytes_p)
;
if (align != 1)
as_bad (_("Alignment not a power of 2"));
+
align = i;
}
}
@@ -1294,7 +1273,7 @@ s_align (arg, bytes_p)
}
}
- if (! fill_p)
+ if (!fill_p)
{
if (arg < 0)
as_warn (_("expected fill pattern missing"));
@@ -1307,7 +1286,7 @@ s_align (arg, bytes_p)
if (arg >= 0)
fill_len = 1;
else
- fill_len = - arg;
+ fill_len = -arg;
if (fill_len <= 1)
{
char fill_char;
@@ -1335,7 +1314,7 @@ s_align (arg, bytes_p)
/* Handle the .align pseudo-op on machines where ".align 4" means
align to a 4 byte boundary. */
-void
+void
s_align_bytes (arg)
int arg;
{
@@ -1345,14 +1324,14 @@ s_align_bytes (arg)
/* Handle the .align pseudo-op on machines where ".align 4" means align
to a 2**4 boundary. */
-void
+void
s_align_ptwo (arg)
int arg;
{
s_align (arg, 0);
}
-void
+void
s_comm (ignore)
int ignore ATTRIBUTE_UNUSED;
{
@@ -1369,10 +1348,11 @@ s_comm (ignore)
name = input_line_pointer;
c = get_symbol_end ();
- /* just after name is now '\0' */
+ /* 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: rest of line ignored."));
@@ -1381,7 +1361,9 @@ s_comm (ignore)
mri_comment_end (stop, stopc);
return;
}
+
input_line_pointer++; /* skip ',' */
+
if ((temp = get_absolute_expression ()) < 0)
{
as_warn (_(".COMMon length (%ld.) <0! Ignored."), (long) temp);
@@ -1390,10 +1372,12 @@ s_comm (ignore)
mri_comment_end (stop, stopc);
return;
}
+
*p = 0;
symbolP = symbol_find_or_make (name);
*p = c;
- if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP))
+
+ if (S_IS_DEFINED (symbolP) && !S_IS_COMMON (symbolP))
{
as_bad (_("Ignoring attempt to re-define symbol `%s'."),
S_GET_NAME (symbolP));
@@ -1402,6 +1386,7 @@ s_comm (ignore)
mri_comment_end (stop, stopc);
return;
}
+
if (S_GET_VALUE (symbolP))
{
if (S_GET_VALUE (symbolP) != (valueT) temp)
@@ -1418,7 +1403,7 @@ s_comm (ignore)
#ifdef OBJ_VMS
{
extern int flag_one;
- if ( (!temp) || !flag_one)
+ if (!temp || !flag_one)
S_GET_OTHER(symbolP) = const_flag;
}
#endif /* not OBJ_VMS */
@@ -1446,7 +1431,7 @@ s_mri_common (small)
char *stop = NULL;
char stopc;
- if (! flag_mri)
+ if (!flag_mri)
{
s_comm (0);
return;
@@ -1457,7 +1442,7 @@ s_mri_common (small)
SKIP_WHITESPACE ();
name = input_line_pointer;
- if (! isdigit ((unsigned char) *name))
+ if (!isdigit ((unsigned char) *name))
c = get_symbol_end ();
else
{
@@ -1466,6 +1451,7 @@ s_mri_common (small)
++input_line_pointer;
}
while (isdigit ((unsigned char) *input_line_pointer));
+
c = *input_line_pointer;
*input_line_pointer = '\0';
@@ -1492,7 +1478,7 @@ s_mri_common (small)
align = get_absolute_expression ();
}
- if (S_IS_DEFINED (sym) && ! S_IS_COMMON (sym))
+ if (S_IS_DEFINED (sym) && !S_IS_COMMON (sym))
{
as_bad (_("attempt to re-define symbol `%s'"), S_GET_NAME (sym));
ignore_rest_of_line ();
@@ -1564,21 +1550,21 @@ s_data (ignore)
definition for .file; the APPFILE argument is 1 for .appfile, 0 for
.file. */
-void
+void
s_app_file (appfile)
int appfile;
{
register char *s;
int length;
- /* Some assemblers tolerate immediately following '"' */
+ /* Some assemblers tolerate immediately following '"'. */
if ((s = demand_copy_string (&length)) != 0)
{
/* If this is a fake .appfile, a fake newline was inserted into
the buffer. Passing -2 to new_logical_line tells it to
account for it. */
int may_omit
- = (! new_logical_line (s, appfile ? -2 : -1) && appfile);
+ = (!new_logical_line (s, appfile ? -2 : -1) && appfile);
/* In MRI mode, the preprocessor may have inserted an extraneous
backquote. */
@@ -1588,7 +1574,7 @@ s_app_file (appfile)
++input_line_pointer;
demand_empty_rest_of_line ();
- if (! may_omit)
+ if (!may_omit)
{
#ifdef LISTING
if (listing)
@@ -1618,7 +1604,8 @@ s_app_line (ignore)
if (l < 0)
/* Some of the back ends can't deal with non-positive line numbers.
Besides, it's silly. */
- as_warn (_("Line numbers must be positive; line number %d rejected."), l+1);
+ as_warn (_("Line numbers must be positive; line number %d rejected."),
+ l + 1);
else
{
new_logical_line ((char *) NULL, l);
@@ -1642,7 +1629,7 @@ s_end (ignore)
/* The MRI assembler permits the start symbol to follow .end,
but we don't support that. */
SKIP_WHITESPACE ();
- if (! is_end_of_line[(unsigned char) *input_line_pointer]
+ if (!is_end_of_line[(unsigned char) *input_line_pointer]
&& *input_line_pointer != '*'
&& *input_line_pointer != '!')
as_warn (_("start address not supported"));
@@ -1684,7 +1671,7 @@ s_fail (ignore)
mri_comment_end (stop, stopc);
}
-void
+void
s_fill (ignore)
int ignore ATTRIBUTE_UNUSED;
{
@@ -1762,26 +1749,28 @@ s_fill (ignore)
p = frag_var (rs_space, (int) size, (int) size,
(relax_substateT) 0, rep_sym, (offsetT) 0, (char *) 0);
}
+
memset (p, 0, (unsigned int) size);
+
/* The magic number BSD_FILL_SIZE_CROCK_4 is from BSD 4.2 VAX
- * flavoured AS. The following bizzare behaviour is to be
- * compatible with above. I guess they tried to take up to 8
- * bytes from a 4-byte expression and they forgot to sign
- * extend. Un*x Sux. */
+ flavoured AS. The following bizzare behaviour is to be
+ compatible with above. I guess they tried to take up to 8
+ bytes from a 4-byte expression and they forgot to sign
+ extend. Un*x Sux. */
#define BSD_FILL_SIZE_CROCK_4 (4)
md_number_to_chars (p, (valueT) fill,
(size > BSD_FILL_SIZE_CROCK_4
? BSD_FILL_SIZE_CROCK_4
: (int) size));
/* Note: .fill (),0 emits no frag (since we are asked to .fill 0 bytes)
- * but emits no error message because it seems a legal thing to do.
- * It is a degenerate case of .fill but could be emitted by a compiler.
- */
+ but emits no error message because it seems a legal thing to do.
+ It is a degenerate case of .fill but could be emitted by a
+ compiler. */
}
demand_empty_rest_of_line ();
}
-void
+void
s_globl (ignore)
int ignore ATTRIBUTE_UNUSED;
{
@@ -1835,7 +1824,7 @@ s_irp (irpc)
as_where (&file, &line);
sb_new (&s);
- while (! is_end_of_line[(unsigned char) *input_line_pointer])
+ while (!is_end_of_line[(unsigned char) *input_line_pointer])
sb_add_char (&s, *input_line_pointer++);
sb_new (&out);
@@ -1866,7 +1855,7 @@ s_linkonce (ignore)
type = LINKONCE_DISCARD;
- if (! is_end_of_line[(unsigned char) *input_line_pointer])
+ if (!is_end_of_line[(unsigned char) *input_line_pointer])
{
char *s;
char c;
@@ -1916,7 +1905,7 @@ s_linkonce (ignore)
flags |= SEC_LINK_DUPLICATES_SAME_CONTENTS;
break;
}
- if (! bfd_set_section_flags (stdoutput, now_seg, flags))
+ if (!bfd_set_section_flags (stdoutput, now_seg, flags))
as_bad (_("bfd_set_section_flags: %s"),
bfd_errmsg (bfd_get_error ()));
}
@@ -1928,13 +1917,13 @@ s_linkonce (ignore)
demand_empty_rest_of_line ();
}
-static void
+static void
s_lcomm_internal (needs_align, bytes_p)
/* 1 if this was a ".bss" directive, which may require a 3rd argument
- (alignment); 0 if it was an ".lcomm" (2 args only) */
+ (alignment); 0 if it was an ".lcomm" (2 args only). */
int needs_align;
/* 1 if the alignment value should be interpreted as the byte boundary,
- rather than the power of 2. */
+ rather than the power of 2. */
int bytes_p;
{
register char *name;
@@ -1985,7 +1974,7 @@ s_lcomm_internal (needs_align, bytes_p)
bss_seg = subseg_new (".sbss", 1);
seg_info (bss_seg)->bss = 1;
#ifdef BFD_ASSEMBLER
- if (! bfd_set_section_flags (stdoutput, bss_seg, SEC_ALLOC))
+ if (!bfd_set_section_flags (stdoutput, bss_seg, SEC_ALLOC))
as_warn (_("error setting flags for \".sbss\": %s"),
bfd_errmsg (bfd_get_error ()));
#endif
@@ -1993,33 +1982,38 @@ s_lcomm_internal (needs_align, bytes_p)
}
#endif
- if (!needs_align)
- {
- TC_IMPLICIT_LCOMM_ALIGNMENT (temp, align);
+ if (!needs_align)
+ {
+ TC_IMPLICIT_LCOMM_ALIGNMENT (temp, align);
- /* Still zero unless TC_IMPLICIT_LCOMM_ALIGNMENT set it. */
- if (align)
- record_alignment(bss_seg, align);
- }
+ /* Still zero unless TC_IMPLICIT_LCOMM_ALIGNMENT set it. */
+ if (align)
+ record_alignment (bss_seg, align);
+ }
if (needs_align)
{
align = 0;
SKIP_WHITESPACE ();
+
if (*input_line_pointer != ',')
{
as_bad (_("Expected comma after size"));
ignore_rest_of_line ();
return;
}
+
input_line_pointer++;
SKIP_WHITESPACE ();
+
if (*input_line_pointer == '\n')
{
as_bad (_("Missing alignment"));
return;
}
+
align = get_absolute_expression ();
+
if (bytes_p)
{
/* Convert to a power of 2. */
@@ -2034,6 +2028,7 @@ s_lcomm_internal (needs_align, bytes_p)
align = i;
}
}
+
if (align > max_alignment)
{
align = max_alignment;
@@ -2044,8 +2039,9 @@ s_lcomm_internal (needs_align, bytes_p)
align = 0;
as_warn (_("Alignment negative. 0 assumed."));
}
+
record_alignment (bss_seg, align);
- } /* if needs align */
+ }
else
{
/* Assume some objects may require alignment on some systems. */
@@ -2082,12 +2078,13 @@ s_lcomm_internal (needs_align, bytes_p)
if (align)
frag_align (align, 0, 0);
- /* detach from old frag */
+
+ /* Detach from old frag. */
if (S_GET_SEGMENT (symbolP) == bss_seg)
symbol_get_frag (symbolP)->fr_symbol = NULL;
symbol_set_frag (symbolP, frag_now);
- pfrag = frag_var (rs_org, 1, 1, (relax_substateT)0, symbolP,
+ pfrag = frag_var (rs_org, 1, 1, (relax_substateT) 0, symbolP,
(offsetT) temp, (char *) 0);
*pfrag = 0;
@@ -2096,7 +2093,7 @@ s_lcomm_internal (needs_align, bytes_p)
#ifdef OBJ_COFF
/* The symbol may already have been created with a preceding
".globl" directive -- be careful not to step on storage class
- in that case. Otherwise, set it to static. */
+ in that case. Otherwise, set it to static. */
if (S_GET_STORAGE_CLASS (symbolP) != C_EXT)
{
S_SET_STORAGE_CLASS (symbolP, C_STAT);
@@ -2114,7 +2111,7 @@ s_lcomm_internal (needs_align, bytes_p)
subseg_set (current_seg, current_subseg);
demand_empty_rest_of_line ();
-} /* s_lcomm_internal() */
+}
void
s_lcomm (needs_align)
@@ -2123,13 +2120,14 @@ s_lcomm (needs_align)
s_lcomm_internal (needs_align, 0);
}
-void s_lcomm_bytes (needs_align)
+void
+s_lcomm_bytes (needs_align)
int needs_align;
{
s_lcomm_internal (needs_align, 1);
}
-void
+void
s_lsym (ignore)
int ignore ATTRIBUTE_UNUSED;
{
@@ -2139,12 +2137,13 @@ s_lsym (ignore)
expressionS exp;
register symbolS *symbolP;
- /* we permit ANY defined expression: BSD4.2 demands constants */
+ /* We permit ANY defined expression: BSD4.2 demands constants. */
name = input_line_pointer;
c = get_symbol_end ();
p = input_line_pointer;
*p = c;
SKIP_WHITESPACE ();
+
if (*input_line_pointer != ',')
{
*p = 0;
@@ -2153,8 +2152,10 @@ s_lsym (ignore)
ignore_rest_of_line ();
return;
}
+
input_line_pointer++;
expression (&exp);
+
if (exp.X_op != O_constant
&& exp.X_op != O_register)
{
@@ -2162,6 +2163,7 @@ s_lsym (ignore)
ignore_rest_of_line ();
return;
}
+
*p = 0;
symbolP = symbol_find_or_make (name);
@@ -2170,13 +2172,13 @@ s_lsym (ignore)
those fields, and I can't see when they'd ever be tripped. I
don't think I understand why they were here so I may have
introduced a bug. As recently as 1.37 didn't have this test
- anyway. xoxorich. */
+ anyway. xoxorich. */
if (S_GET_SEGMENT (symbolP) == undefined_section
&& S_GET_VALUE (symbolP) == 0)
{
/* The name might be an undefined .global symbol; be sure to
- keep the "external" bit. */
+ keep the "external" bit. */
S_SET_SEGMENT (symbolP,
(exp.X_op == O_constant
? absolute_section
@@ -2187,9 +2189,10 @@ s_lsym (ignore)
{
as_bad (_("Symbol %s already defined"), name);
}
+
*p = c;
demand_empty_rest_of_line ();
-} /* s_lsym() */
+}
/* Read a line into an sb. */
@@ -2211,7 +2214,7 @@ get_line_sb (line)
/* If app.c sets any other characters to LEX_IS_STRINGQUOTE, this
code needs to be changed. */
- if (! flag_m68k_mri)
+ if (!flag_m68k_mri)
quote1 = '"';
else
quote1 = '\0';
@@ -2224,7 +2227,8 @@ get_line_sb (line)
#endif
inquote = '\0';
- while (! is_end_of_line[(unsigned char) *input_line_pointer]
+
+ while (!is_end_of_line[(unsigned char) *input_line_pointer]
|| (inquote != '\0' && *input_line_pointer != '\n'))
{
if (inquote == *input_line_pointer)
@@ -2236,8 +2240,10 @@ get_line_sb (line)
else if (*input_line_pointer == quote2)
inquote = quote2;
}
+
sb_add_char (line, *input_line_pointer++);
}
+
while (input_line_pointer < buffer_limit
&& is_end_of_line[(unsigned char) *input_line_pointer])
{
@@ -2245,6 +2251,7 @@ get_line_sb (line)
bump_line_counters ();
++input_line_pointer;
}
+
return 1;
}
@@ -2265,7 +2272,7 @@ s_macro (ignore)
as_where (&file, &line);
sb_new (&s);
- while (! is_end_of_line[(unsigned char) *input_line_pointer])
+ while (!is_end_of_line[(unsigned char) *input_line_pointer])
sb_add_char (&s, *input_line_pointer++);
sb_new (&label);
@@ -2286,7 +2293,7 @@ s_macro (ignore)
if (((NO_PSEUDO_DOT || flag_m68k_mri)
&& hash_find (po_hash, name) != NULL)
- || (! flag_m68k_mri
+ || (!flag_m68k_mri
&& *name == '.'
&& hash_find (po_hash, name + 1) != NULL))
as_warn (_("attempt to redefine pseudo-op `%s' ignored"),
@@ -2379,7 +2386,7 @@ do_org (segment, exp, fill)
}
}
-void
+void
s_org (ignore)
int ignore ATTRIBUTE_UNUSED;
{
@@ -2426,7 +2433,7 @@ s_org (ignore)
do_org (segment, &exp, temp_fill);
demand_empty_rest_of_line ();
-} /* s_org() */
+}
/* Handle parsing for the MRI SECT/SECTION pseudo-op. This should be
called by the obj-format routine which handles section changing
@@ -2446,9 +2453,9 @@ s_mri_sect (type)
segT seg;
SKIP_WHITESPACE ();
-
+
name = input_line_pointer;
- if (! isdigit ((unsigned char) *name))
+ if (!isdigit ((unsigned char) *name))
c = get_symbol_end ();
else
{
@@ -2457,6 +2464,7 @@ s_mri_sect (type)
++input_line_pointer;
}
while (isdigit ((unsigned char) *input_line_pointer));
+
c = *input_line_pointer;
*input_line_pointer = '\0';
}
@@ -2500,7 +2508,7 @@ s_mri_sect (type)
flags = SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_READONLY | SEC_ROM;
if (flags != SEC_NO_FLAGS)
{
- if (! bfd_set_section_flags (stdoutput, seg, flags))
+ if (!bfd_set_section_flags (stdoutput, seg, flags))
as_warn (_("error setting flags for \"%s\": %s"),
bfd_section_name (stdoutput, seg),
bfd_errmsg (bfd_get_error ()));
@@ -2586,7 +2594,7 @@ s_mri_sect (type)
}
}
- demand_empty_rest_of_line ();
+ demand_empty_rest_of_line ();
#else /* ! TC_I960 */
/* The MRI assembler seems to use different forms of .sect for
@@ -2651,23 +2659,23 @@ s_rept (ignore)
count = get_absolute_expression ();
- do_repeat(count, "REPT", "ENDR");
+ do_repeat (count, "REPT", "ENDR");
}
/* This function provides a generic repeat block implementation. It allows
- different directives to be used as the start/end keys. */
+ different directives to be used as the start/end keys. */
void
do_repeat (count, start, end)
- int count;
- const char *start;
- const char *end;
+ int count;
+ const char *start;
+ const char *end;
{
sb one;
sb many;
sb_new (&one);
- if (! buffer_and_nest (start, end, &one, get_line_sb))
+ if (!buffer_and_nest (start, end, &one, get_line_sb))
{
as_bad (_("%s without %s"), start, end);
return;
@@ -2686,15 +2694,15 @@ do_repeat (count, start, end)
/* Skip to end of current repeat loop; EXTRA indicates how many additional
input buffers to skip. Assumes that conditionals preceding the loop end
- are properly nested.
+ are properly nested.
This function makes it easier to implement a premature "break" out of the
loop. The EXTRA arg accounts for other buffers we might have inserted,
- such as line substitutions. */
+ such as line substitutions. */
void
end_repeat (extra)
- int extra;
+ int extra;
{
cond_exit_macro (macro_nest);
while (extra-- >= 0)
@@ -2705,7 +2713,7 @@ end_repeat (extra)
this is .equiv, and it is an error if the symbol is already
defined. */
-void
+void
s_set (equiv)
int equiv;
{
@@ -2714,11 +2722,9 @@ s_set (equiv)
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.
- */
+ /* 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;
@@ -2739,7 +2745,7 @@ s_set (equiv)
if (name[0] == '.' && name[1] == '\0')
{
- /* Turn '. = mumble' into a .org mumble */
+ /* Turn '. = mumble' into a .org mumble. */
register segT segment;
expressionS exp;
@@ -2762,8 +2768,8 @@ s_set (equiv)
if (listing & LISTING_SYMBOLS)
{
extern struct list_info_struct *listing_tail;
- fragS *dummy_frag = (fragS *) xmalloc (sizeof(fragS));
- memset (dummy_frag, 0, sizeof(fragS));
+ 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);
@@ -2771,14 +2777,13 @@ s_set (equiv)
}
else
#endif
- symbolP = symbol_new (name, undefined_section, 0, &zero_address_frag);
-
+ symbolP = symbol_new (name, undefined_section, 0, &zero_address_frag);
+
#ifdef OBJ_COFF
- /* "set" symbols are local unless otherwise specified. */
+ /* "set" symbols are local unless otherwise specified. */
SF_SET_LOCAL (symbolP);
#endif /* OBJ_COFF */
-
- } /* make a new symbol */
+ }
symbol_table_insert (symbolP);
@@ -2791,9 +2796,9 @@ s_set (equiv)
pseudo_set (symbolP);
demand_empty_rest_of_line ();
-} /* s_set() */
+}
-void
+void
s_space (mult)
int mult;
{
@@ -2897,7 +2902,7 @@ s_space (mult)
bytes = repeat;
if (repeat <= 0)
{
- if (! flag_mri)
+ if (!flag_mri)
as_warn (_(".space repeat count is zero, ignored"));
else if (repeat < 0)
as_warn (_(".space repeat count is negative, ignored"));
@@ -2932,11 +2937,13 @@ s_space (mult)
as_bad (_("space allocation too complex in absolute section"));
subseg_set (text_section, 0);
}
+
if (mri_common_symbol != NULL)
{
as_bad (_("space allocation too complex in common section"));
mri_common_symbol = NULL;
}
+
if (!need_pass_2)
p = frag_var (rs_space, 1, 1, (relax_substateT) 0,
make_expr_symbol (&exp), (offsetT) 0, (char *) 0);
@@ -3073,27 +3080,24 @@ s_text (ignore)
#ifdef OBJ_VMS
const_flag &= ~IN_DEFAULT_SECTION;
#endif
-} /* s_text() */
+}
-
-void
+void
demand_empty_rest_of_line ()
{
SKIP_WHITESPACE ();
if (is_end_of_line[(unsigned char) *input_line_pointer])
- {
- input_line_pointer++;
- }
+ input_line_pointer++;
else
- {
- ignore_rest_of_line ();
- }
- /* Return having already swallowed end-of-line. */
-} /* Return pointing just after end-of-line. */
+ ignore_rest_of_line ();
+
+ /* Return having already swallowed end-of-line. */
+}
void
-ignore_rest_of_line () /* For suspect lines: gives warning. */
+ignore_rest_of_line ()
{
+ /* For suspect lines: gives warning. */
if (!is_end_of_line[(unsigned char) *input_line_pointer])
{
if (isprint ((unsigned char) *input_line_pointer))
@@ -3102,13 +3106,15 @@ ignore_rest_of_line () /* For suspect lines: gives warning. */
else
as_bad (_("Rest of line ignored. First ignored character valued 0x%x."),
*input_line_pointer);
+
while (input_line_pointer < buffer_limit
&& !is_end_of_line[(unsigned char) *input_line_pointer])
- {
- input_line_pointer++;
- }
+ input_line_pointer++;
}
- input_line_pointer++; /* Return pointing just after end-of-line. */
+
+ input_line_pointer++;
+
+ /* Return pointing just after end-of-line. */
know (is_end_of_line[(unsigned char) input_line_pointer[-1]]);
}
@@ -3116,24 +3122,22 @@ void
discard_rest_of_line ()
{
while (input_line_pointer < buffer_limit
- && !is_end_of_line[(unsigned char) *input_line_pointer])
- {
- input_line_pointer++;
- }
- input_line_pointer++; /* Return pointing just after end-of-line. */
+ && !is_end_of_line[(unsigned char) *input_line_pointer])
+ input_line_pointer++;
+
+ input_line_pointer++;
+
+ /* Return pointing just after end-of-line. */
know (is_end_of_line[(unsigned char) input_line_pointer[-1]]);
}
-/*
- * pseudo_set()
- *
- * In: Pointer to a symbol.
- * Input_line_pointer->expression.
- *
- * Out: Input_line_pointer->just after any whitespace after expression.
- * Tried to set symbol to value of expression.
- * Will change symbols type, value, and frag;
- */
+/* In: Pointer to a symbol.
+ Input_line_pointer->expression.
+
+ Out: Input_line_pointer->just after any whitespace after expression.
+ Tried to set symbol to value of expression.
+ Will change symbols type, value, and frag; */
+
void
pseudo_set (symbolP)
symbolS *symbolP;
@@ -3143,7 +3147,7 @@ pseudo_set (symbolP)
int ext;
#endif /* OBJ_AOUT or OBJ_BOUT */
- know (symbolP); /* NULL pointer is logic error. */
+ know (symbolP); /* NULL pointer is logic error. */
#if (defined (OBJ_AOUT) || defined (OBJ_BOUT)) && ! defined (BFD_ASSEMBLER)
ext = S_IS_EXTERNAL (symbolP);
#endif /* OBJ_AOUT or OBJ_BOUT */
@@ -3190,7 +3194,7 @@ pseudo_set (symbolP)
#endif /* OBJ_AOUT or OBJ_BOUT */
S_SET_VALUE (symbolP, (valueT) exp.X_add_number);
if (exp.X_op != O_constant)
- symbol_set_frag (symbolP, &zero_address_frag);
+ symbol_set_frag (symbolP, &zero_address_frag);
break;
case O_register:
@@ -3231,20 +3235,18 @@ pseudo_set (symbolP)
}
}
-/*
- * cons()
- *
- * CONStruct more frag of .bytes, or .words etc.
- * Should need_pass_2 be 1 then emit no frag(s).
- * This understands EXPRESSIONS.
- *
- * Bug (?)
- *
- * This has a split personality. We use expression() to read the
- * value. We can detect if the value won't fit in a byte or word.
- * But we can't detect if expression() discarded significant digits
- * in the case of a long. Not worth the crocks required to fix it.
- */
+/* cons()
+
+ CONStruct more frag of .bytes, or .words etc.
+ Should need_pass_2 be 1 then emit no frag(s).
+ This understands EXPRESSIONS.
+
+ Bug (?)
+
+ This has a split personality. We use expression() to read the
+ value. We can detect if the value won't fit in a byte or word.
+ But we can't detect if expression() discarded significant digits
+ in the case of a long. Not worth the crocks required to fix it. */
/* Select a parser for cons expressions. */
@@ -3264,7 +3266,7 @@ parse_mri_cons PARAMS ((expressionS *exp, unsigned int nbytes));
#ifndef TC_PARSE_CONS_EXPRESSION
#ifdef BITFIELD_CONS_EXPRESSIONS
#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) parse_bitfield_cons (EXP, NBYTES)
-static void
+static void
parse_bitfield_cons PARAMS ((expressionS *exp, unsigned int nbytes));
#endif
#ifdef REPEAT_CONS_EXPRESSIONS
@@ -3279,12 +3281,12 @@ parse_repeat_cons PARAMS ((expressionS *exp, unsigned int nbytes));
#endif
#endif
-/* worker to do .byte etc statements */
-/* clobbers input_line_pointer, checks */
-/* end-of-line. */
-static void
+/* Worker to do .byte etc statements.
+ Clobbers input_line_pointer and checks end-of-line. */
+
+static void
cons_worker (nbytes, rva)
- register int nbytes; /* 1=.byte, 2=.word, 4=.long */
+ register int nbytes; /* 1=.byte, 2=.word, 4=.long. */
int rva;
{
int c;
@@ -3339,7 +3341,7 @@ cons_worker (nbytes, rva)
if (flag_mri && nbytes == 1 && (c & 1) != 0)
mri_pending_align = 1;
- input_line_pointer--; /* Put terminator back into stream. */
+ input_line_pointer--; /* Put terminator back into stream. */
demand_empty_rest_of_line ();
@@ -3347,7 +3349,6 @@ cons_worker (nbytes, rva)
mri_comment_end (stop, stopc);
}
-
void
cons (size)
int size;
@@ -3355,7 +3356,7 @@ cons (size)
cons_worker (size, 0);
}
-void
+void
s_rva (size)
int size;
{
@@ -3473,7 +3474,7 @@ emit_expr (exp, nbytes)
{
unsigned long next;
- next = (((~ (generic_bignum[i] & LITTLENUM_MASK))
+ next = (((~(generic_bignum[i] & LITTLENUM_MASK))
& LITTLENUM_MASK)
+ carry);
generic_bignum[i] = next & LITTLENUM_MASK;
@@ -3538,7 +3539,7 @@ emit_expr (exp, nbytes)
valueT val;
int gencnt;
- if (! exp->X_unsigned && exp->X_add_number < 0)
+ if (!exp->X_unsigned && exp->X_add_number < 0)
extra_digit = (valueT) -1;
val = (valueT) exp->X_add_number;
gencnt = 0;
@@ -3562,7 +3563,7 @@ emit_expr (exp, nbytes)
register valueT unmask;
/* JF << of >= number of bits in the object is undefined. In
- particular SPARC (Sun 4) has problems */
+ particular SPARC (Sun 4) has problems. */
if (nbytes >= sizeof (valueT))
{
mask = 0;
@@ -3573,16 +3574,16 @@ emit_expr (exp, nbytes)
}
else
{
- /* Don't store these bits. */
+ /* Don't store these bits. */
mask = ~(valueT) 0 << (BITS_PER_CHAR * nbytes);
hibit = (valueT) 1 << (nbytes * BITS_PER_CHAR - 1);
}
- unmask = ~mask; /* Do store these bits. */
+ unmask = ~mask; /* Do store these bits. */
#ifdef NEVER
"Do this mod if you want every overflow check to assume SIGNED 2's complement data.";
- mask = ~(unmask >> 1); /* Includes sign bit now. */
+ mask = ~(unmask >> 1); /* Includes sign bit now. */
#endif
get = exp->X_add_number;
@@ -3590,11 +3591,11 @@ emit_expr (exp, nbytes)
if ((get & mask) != 0
&& ((get & mask) != mask
|| (get & hibit) == 0))
- { /* Leading bits contain both 0s & 1s. */
+ { /* Leading bits contain both 0s & 1s. */
as_warn (_("Value 0x%lx truncated to 0x%lx."),
(unsigned long) get, (unsigned long) use);
}
- /* put bytes in right order. */
+ /* Put bytes in right order. */
md_number_to_chars (p, use, (int) nbytes);
}
else if (op == O_big)
@@ -3729,7 +3730,7 @@ emit_expr (exp, nbytes)
To use this function the tc-XXX.h file should define
BITFIELD_CONS_EXPRESSIONS. */
-static void
+static void
parse_bitfield_cons (exp, nbytes)
expressionS *exp;
unsigned int nbytes;
@@ -3740,7 +3741,8 @@ parse_bitfield_cons (exp, nbytes)
(void) expression (exp);
if (*input_line_pointer == ':')
- { /* bitfields */
+ {
+ /* Bitfields. */
long value = 0;
for (;;)
@@ -3751,7 +3753,7 @@ parse_bitfield_cons (exp, nbytes)
{
input_line_pointer = hold;
break;
- } /* next piece is not a bitfield */
+ } /* Next piece is not a bitfield. */
/* In the general case, we can't allow
full expressions with symbol
@@ -3769,14 +3771,14 @@ parse_bitfield_cons (exp, nbytes)
backends. I'm lazy. I'll take any
SEG_ABSOLUTE. I think that means that
you can use a previous .set or
- .equ type symbol. xoxorich. */
+ .equ type symbol. xoxorich. */
if (exp->X_op == O_absent)
{
as_warn (_("using a bit field width of zero"));
exp->X_add_number = 0;
exp->X_op = O_constant;
- } /* implied zero width bitfield */
+ } /* Implied zero width bitfield. */
if (exp->X_op != O_constant)
{
@@ -3785,14 +3787,14 @@ parse_bitfield_cons (exp, nbytes)
*input_line_pointer = ':';
demand_empty_rest_of_line ();
return;
- } /* too complex */
+ } /* Too complex. */
if ((width = exp->X_add_number) > (BITS_PER_CHAR * nbytes))
{
as_warn (_("field width %lu too big to fit in %d bytes: truncated to %d bits"),
width, nbytes, (BITS_PER_CHAR * nbytes));
width = BITS_PER_CHAR * nbytes;
- } /* too big */
+ } /* Too big. */
if (width > bits_available)
{
@@ -3800,9 +3802,10 @@ parse_bitfield_cons (exp, nbytes)
input_line_pointer = hold;
exp->X_add_number = value;
break;
- } /* won't fit */
+ } /* Won't fit. */
- hold = ++input_line_pointer; /* skip ':' */
+ /* Skip ':'. */
+ hold = ++input_line_pointer;
(void) expression (exp);
if (exp->X_op != O_constant)
@@ -3814,7 +3817,7 @@ parse_bitfield_cons (exp, nbytes)
*input_line_pointer = cache;
demand_empty_rest_of_line ();
return;
- } /* too complex */
+ } /* Too complex. */
value |= ((~(-1 << width) & exp->X_add_number)
<< ((BITS_PER_CHAR * nbytes) - bits_available));
@@ -3824,17 +3827,17 @@ parse_bitfield_cons (exp, nbytes)
|| *input_line_pointer != ',')
{
break;
- } /* all the bitfields we're gonna get */
+ } /* All the bitfields we're gonna get. */
hold = ++input_line_pointer;
(void) expression (exp);
- } /* forever loop */
+ }
exp->X_add_number = value;
exp->X_op = O_constant;
exp->X_unsigned = 1;
- } /* if looks like a bitfield */
-} /* parse_bitfield_cons() */
+ }
+}
#endif /* BITFIELD_CONS_EXPRESSIONS */
@@ -3882,16 +3885,18 @@ parse_mri_cons (exp, nbytes)
result = (result << 8) | (*input_line_pointer++);
}
- /* Left justify */
+ /* Left justify. */
while (scan < nbytes)
{
result <<= 8;
scan++;
}
- /* Create correct expression */
+
+ /* Create correct expression. */
exp->X_op = O_constant;
exp->X_add_number = result;
- /* Fake it so that we can read the next char too */
+
+ /* Fake it so that we can read the next char too. */
if (input_line_pointer[0] != '\'' ||
(input_line_pointer[0] == '\'' && input_line_pointer[1] == '\''))
{
@@ -3998,7 +4003,7 @@ hex_float (float_type, bytes)
int d;
/* The MRI assembler accepts arbitrary underscores strewn about
- through the hex constant, so we ignore them as well. */
+ through the hex constant, so we ignore them as well. */
if (*input_line_pointer == '_')
{
++input_line_pointer;
@@ -4037,34 +4042,31 @@ hex_float (float_type, bytes)
return length;
}
-/*
- * float_cons()
- *
- * CONStruct some more frag chars of .floats .ffloats etc.
- * Makes 0 or more new frags.
- * If need_pass_2 == 1, no frags are emitted.
- * This understands only floating literals, not expressions. Sorry.
- *
- * A floating constant is defined by atof_generic(), except it is preceded
- * by 0d 0f 0g or 0h. After observing the STRANGE way my BSD AS does its
- * reading, I decided to be incompatible. This always tries to give you
- * rounded bits to the precision of the pseudo-op. Former AS did premature
- * truncatation, restored noisy bits instead of trailing 0s AND gave you
- * a choice of 2 flavours of noise according to which of 2 floating-point
- * scanners you directed AS to use.
- *
- * In: input_line_pointer->whitespace before, or '0' of flonum.
- *
- */
+/* float_cons()
+
+ CONStruct some more frag chars of .floats .ffloats etc.
+ Makes 0 or more new frags.
+ If need_pass_2 == 1, no frags are emitted.
+ This understands only floating literals, not expressions. Sorry.
+
+ A floating constant is defined by atof_generic(), except it is preceded
+ by 0d 0f 0g or 0h. After observing the STRANGE way my BSD AS does its
+ reading, I decided to be incompatible. This always tries to give you
+ rounded bits to the precision of the pseudo-op. Former AS did premature
+ truncatation, restored noisy bits instead of trailing 0s AND gave you
+ a choice of 2 flavours of noise according to which of 2 floating-point
+ scanners you directed AS to use.
+
+ In: input_line_pointer->whitespace before, or '0' of flonum. */
void
float_cons (float_type)
- /* Clobbers input_line-pointer, checks end-of-line. */
- register int float_type; /* 'f':.ffloat ... 'F':.float ... */
+ /* Clobbers input_line-pointer, checks end-of-line. */
+ register int float_type; /* 'f':.ffloat ... 'F':.float ... */
{
register char *p;
- int length; /* Number of chars in an object. */
- register char *err; /* Error from scanning floating literal. */
+ int length; /* Number of chars in an object. */
+ register char *err; /* Error from scanning floating literal. */
char temp[MAXIMUM_NUMBER_OF_CHARS_FOR_FLOAT];
if (is_it_end_of_statement ())
@@ -4079,14 +4081,13 @@ float_cons (float_type)
do
{
- /* input_line_pointer->1st char of a flonum (we hope!). */
+ /* input_line_pointer->1st char of a flonum (we hope!). */
SKIP_WHITESPACE ();
/* Skip any 0{letter} that may be present. Don't even check if the
- * letter is legal. Someone may invent a "z" format and this routine
- * has no use for such information. Lusers beware: you get
- * diagnostics if your input is ill-conditioned.
- */
+ letter is legal. Someone may invent a "z" format and this routine
+ has no use for such information. Lusers beware: you get
+ diagnostics if your input is ill-conditioned. */
if (input_line_pointer[0] == '0'
&& isalpha ((unsigned char) input_line_pointer[1]))
input_line_pointer += 2;
@@ -4129,11 +4130,10 @@ float_cons (float_type)
++input_line_pointer;
expression (&count_exp);
+
if (count_exp.X_op != O_constant
|| count_exp.X_add_number <= 0)
- {
- as_warn (_("unresolvable or nonpositive repeat count; using 1"));
- }
+ as_warn (_("unresolvable or nonpositive repeat count; using 1"));
else
count = count_exp.X_add_number;
}
@@ -4149,11 +4149,12 @@ float_cons (float_type)
}
while (*input_line_pointer++ == ',');
- --input_line_pointer; /* Put terminator back into stream. */
+ /* Put terminator back into stream. */
+ --input_line_pointer;
demand_empty_rest_of_line ();
-} /* float_cons() */
+}
-/* Return the size of a LEB128 value */
+/* Return the size of a LEB128 value. */
static inline int
sizeof_sleb128 (value)
@@ -4287,7 +4288,7 @@ output_big_sleb128 (p, bignum, size)
unsigned byte;
/* Strip leading sign extensions off the bignum. */
- while (size > 0 && bignum[size-1] == (LITTLENUM_TYPE)-1)
+ while (size > 0 && bignum[size - 1] == (LITTLENUM_TYPE) -1)
size--;
do
@@ -4307,7 +4308,7 @@ output_big_sleb128 (p, bignum, size)
if (size == 0)
{
if ((val == 0 && (byte & 0x40) == 0)
- || (~(val | ~(((valueT)1 << loaded) - 1)) == 0
+ || (~(val | ~(((valueT) 1 << loaded) - 1)) == 0
&& (byte & 0x40) != 0))
byte |= 0x80;
}
@@ -4334,7 +4335,7 @@ output_big_uleb128 (p, bignum, size)
/* Strip leading zeros off the bignum. */
/* XXX: Is this needed? */
- while (size > 0 && bignum[size-1] == 0)
+ while (size > 0 && bignum[size - 1] == 0)
size--;
do
@@ -4379,7 +4380,7 @@ output_big_leb128 (p, bignum, size, sign)
leb128 value. */
void
-emit_leb128_expr(exp, sign)
+emit_leb128_expr (exp, sign)
expressionS *exp;
int sign;
{
@@ -4428,10 +4429,10 @@ emit_leb128_expr(exp, sign)
}
else
{
- /* Otherwise, we have to create a variable sized fragment and
+ /* Otherwise, we have to create a variable sized fragment and
resolve things later. */
- frag_var (rs_leb128, sizeof_uleb128 (~(valueT)0), 0, sign,
+ frag_var (rs_leb128, sizeof_uleb128 (~(valueT) 0), 0, sign,
make_expr_symbol (exp), 0, (char *) NULL);
}
}
@@ -4444,28 +4445,25 @@ s_leb128 (sign)
{
expressionS exp;
- do {
- expression (&exp);
- emit_leb128_expr (&exp, sign);
- } while (*input_line_pointer++ == ',');
+ do
+ {
+ expression (&exp);
+ emit_leb128_expr (&exp, sign);
+ }
+ while (*input_line_pointer++ == ',');
input_line_pointer--;
demand_empty_rest_of_line ();
}
-/*
- * stringer()
- *
- * We read 0 or more ',' separated, double-quoted strings.
- *
- * Caller should have checked need_pass_2 is FALSE because we don't check it.
- */
-
-
-void
-stringer (append_zero) /* Worker to do .ascii etc statements. */
- /* Checks end-of-line. */
- register int append_zero; /* 0: don't append '\0', else 1 */
+/* We read 0 or more ',' separated, double-quoted strings.
+ Caller should have checked need_pass_2 is FALSE because we don't
+ check it. */
+
+void
+stringer (append_zero) /* Worker to do .ascii etc statements. */
+ /* Checks end-of-line. */
+ register int append_zero; /* 0: don't append '\0', else 1. */
{
register unsigned int c;
char *start;
@@ -4474,22 +4472,19 @@ stringer (append_zero) /* Worker to do .ascii etc statements. */
md_flush_pending_output ();
#endif
- /*
- * The following awkward logic is to parse ZERO or more strings,
- * comma separated. Recall a string expression includes spaces
- * before the opening '\"' and spaces after the closing '\"'.
- * We fake a leading ',' if there is (supposed to be)
- * a 1st, expression. We keep demanding expressions for each
- * ','.
- */
+ /* The following awkward logic is to parse ZERO or more strings,
+ comma separated. Recall a string expression includes spaces
+ before the opening '\"' and spaces after the closing '\"'.
+ We fake a leading ',' if there is (supposed to be)
+ a 1st, expression. We keep demanding expressions for each ','. */
if (is_it_end_of_statement ())
{
- c = 0; /* Skip loop. */
- ++input_line_pointer; /* Compensate for end of loop. */
+ c = 0; /* Skip loop. */
+ ++input_line_pointer; /* Compensate for end of loop. */
}
else
{
- c = ','; /* Do loop. */
+ c = ','; /* Do loop. */
}
while (c == ',' || c == '<' || c == '"')
{
@@ -4497,7 +4492,7 @@ stringer (append_zero) /* Worker to do .ascii etc statements. */
switch (*input_line_pointer)
{
case '\"':
- ++input_line_pointer; /*->1st char of string. */
+ ++input_line_pointer; /*->1st char of string. */
start = input_line_pointer;
while (is_a_char (c = next_char_of_string ()))
{
@@ -4554,9 +4549,9 @@ stringer (append_zero) /* Worker to do .ascii etc statements. */
/* FIXME-SOMEDAY: I had trouble here on characters with the
high bits set. We'll probably also have trouble with
multibyte chars, wide chars, etc. Also be careful about
- returning values bigger than 1 byte. xoxorich. */
+ returning values bigger than 1 byte. xoxorich. */
-unsigned int
+unsigned int
next_char_of_string ()
{
register unsigned int c;
@@ -4603,7 +4598,7 @@ next_char_of_string ()
case '\\':
case '"':
- break; /* As itself. */
+ break; /* As itself. */
case '0':
case '1':
@@ -4619,10 +4614,13 @@ next_char_of_string ()
long number;
int i;
- for (i = 0, number = 0; isdigit (c) && i < 3; c = *input_line_pointer++, i++)
+ for (i = 0, number = 0;
+ isdigit (c) && i < 3;
+ c = *input_line_pointer++, i++)
{
number = number * 8 + c - '0';
}
+
c = number & 0xff;
}
--input_line_pointer;
@@ -4651,7 +4649,7 @@ next_char_of_string ()
break;
case '\n':
- /* To be compatible with BSD 4.2 as: give the luser a linefeed!! */
+ /* To be compatible with BSD 4.2 as: give the luser a linefeed!! */
as_warn (_("Unterminated string: Newline inserted."));
c = '\n';
bump_line_counters ();
@@ -4665,15 +4663,15 @@ next_char_of_string ()
#endif /* ONLY_STANDARD_ESCAPES */
break;
- } /* switch on escaped char */
+ }
break;
#endif /* ! defined (NO_STRING_ESCAPES) */
default:
break;
- } /* switch on char */
+ }
return (c);
-} /* next_char_of_string() */
+}
static segT
get_segmented_expression (expP)
@@ -4694,7 +4692,7 @@ get_segmented_expression (expP)
return retval;
}
-static segT
+static segT
get_known_segmented_expression (expP)
register expressionS *expP;
{
@@ -4716,7 +4714,7 @@ get_known_segmented_expression (expP)
}
know (retval == absolute_section || SEG_NORMAL (retval));
return (retval);
-} /* get_known_segmented_expression() */
+}
offsetT
get_absolute_expression ()
@@ -4733,21 +4731,18 @@ get_absolute_expression ()
return exp.X_add_number;
}
-char /* return terminator */
+char /* Return terminator. */
get_absolute_expression_and_terminator (val_pointer)
- long *val_pointer; /* return value of expression */
+ long *val_pointer; /* Return value of expression. */
{
/* FIXME: val_pointer should probably be offsetT *. */
*val_pointer = (long) get_absolute_expression ();
return (*input_line_pointer++);
}
-/*
- * demand_copy_C_string()
- *
- * Like demand_copy_string, but return NULL if the string contains any '\0's.
- * Give a warning if that happens.
- */
+/* Like demand_copy_string, but return NULL if the string contains any '\0's.
+ Give a warning if that happens. */
+
char *
demand_copy_C_string (len_pointer)
int *len_pointer;
@@ -4769,15 +4764,13 @@ demand_copy_C_string (len_pointer)
}
}
}
+
return s;
}
-/*
- * demand_copy_string()
- *
- * Demand string, but return a safe (=private) copy of the string.
- * Return NULL if we can't read a string here.
- */
+/* Demand string, but return a safe (=private) copy of the string.
+ Return NULL if we can't read a string here. */
+
char *
demand_copy_string (lenP)
int *lenP;
@@ -4790,7 +4783,7 @@ demand_copy_string (lenP)
SKIP_WHITESPACE ();
if (*input_line_pointer == '\"')
{
- input_line_pointer++; /* Skip opening quote. */
+ input_line_pointer++; /* Skip opening quote. */
while (is_a_char (c = next_char_of_string ()))
{
@@ -4798,7 +4791,7 @@ demand_copy_string (lenP)
len++;
}
/* JF this next line is so demand_copy_C_string will return a
- null terminated string. */
+ null terminated string. */
obstack_1grow (&notes, '\0');
retval = obstack_finish (&notes);
}
@@ -4810,30 +4803,27 @@ demand_copy_string (lenP)
}
*lenP = len;
return (retval);
-} /* demand_copy_string() */
+}
-/*
- * is_it_end_of_statement()
- *
- * In: Input_line_pointer->next character.
- *
- * Do: Skip input_line_pointer over all whitespace.
- *
- * Out: 1 if input_line_pointer->end-of-line.
-*/
-int
+/* In: Input_line_pointer->next character.
+
+ Do: Skip input_line_pointer over all whitespace.
+
+ Out: 1 if input_line_pointer->end-of-line. */
+
+int
is_it_end_of_statement ()
{
SKIP_WHITESPACE ();
return (is_end_of_line[(unsigned char) *input_line_pointer]);
-} /* is_it_end_of_statement() */
+}
-void
+void
equals (sym_name, reassign)
char *sym_name;
int reassign;
{
- register symbolS *symbolP; /* symbol we are working with */
+ register symbolS *symbolP; /* Symbol we are working with. */
char *stop = NULL;
char stopc;
@@ -4849,7 +4839,7 @@ equals (sym_name, reassign)
if (sym_name[0] == '.' && sym_name[1] == '\0')
{
- /* Turn '. = mumble' into a .org mumble */
+ /* Turn '. = mumble' into a .org mumble. */
register segT segment;
expressionS exp;
@@ -4861,7 +4851,7 @@ equals (sym_name, reassign)
{
symbolP = symbol_find_or_make (sym_name);
/* Permit register names to be redefined. */
- if (! reassign
+ if (!reassign
&& S_IS_DEFINED (symbolP)
&& S_GET_SEGMENT (symbolP) != reg_section)
as_bad (_("symbol `%s' already defined"), S_GET_NAME (symbolP));
@@ -4869,16 +4859,16 @@ equals (sym_name, reassign)
}
if (flag_mri)
- {
- ignore_rest_of_line (); /* check garbage after the expression */
- mri_comment_end (stop, stopc);
- }
-} /* equals() */
+ {
+ /* Check garbage after the expression. */
+ ignore_rest_of_line ();
+ mri_comment_end (stop, stopc);
+ }
+}
-/* .include -- include a file at this point. */
+/* .include -- include a file at this point. */
-/* ARGSUSED */
-void
+void
s_include (arg)
int arg ATTRIBUTE_UNUSED;
{
@@ -4887,7 +4877,7 @@ s_include (arg)
FILE *try;
char *path;
- if (! flag_m68k_mri)
+ if (!flag_m68k_mri)
{
filename = demand_copy_string (&i);
if (filename == NULL)
@@ -4901,7 +4891,7 @@ s_include (arg)
{
SKIP_WHITESPACE ();
i = 0;
- while (! is_end_of_line[(unsigned char) *input_line_pointer]
+ while (!is_end_of_line[(unsigned char) *input_line_pointer]
&& *input_line_pointer != ' '
&& *input_line_pointer != '\t')
{
@@ -4909,13 +4899,16 @@ s_include (arg)
++input_line_pointer;
++i;
}
+
obstack_1grow (&notes, '\0');
filename = obstack_finish (&notes);
- while (! is_end_of_line[(unsigned char) *input_line_pointer])
+ while (!is_end_of_line[(unsigned char) *input_line_pointer])
++input_line_pointer;
}
+
demand_empty_rest_of_line ();
path = xmalloc ((unsigned long) i + include_dir_maxlen + 5 /* slop */ );
+
for (i = 0; i < include_dir_count; i++)
{
strcpy (path, include_dirs[i]);
@@ -4927,15 +4920,16 @@ s_include (arg)
goto gotit;
}
}
+
free (path);
path = filename;
gotit:
- /* malloc Storage leak when file is found on path. FIXME-SOMEDAY. */
+ /* malloc Storage leak when file is found on path. FIXME-SOMEDAY. */
register_dependency (path);
input_scrub_insert_file (path);
-} /* s_include() */
+}
-void
+void
add_include_dir (path)
char *path;
{
@@ -4944,22 +4938,23 @@ add_include_dir (path)
if (include_dir_count == 0)
{
include_dirs = (char **) xmalloc (2 * sizeof (*include_dirs));
- include_dirs[0] = "."; /* Current dir */
+ include_dirs[0] = "."; /* Current dir. */
include_dir_count = 2;
}
else
{
include_dir_count++;
- include_dirs = (char **) realloc (include_dirs,
- include_dir_count * sizeof (*include_dirs));
+ include_dirs =
+ (char **) realloc (include_dirs,
+ include_dir_count * sizeof (*include_dirs));
}
- include_dirs[include_dir_count - 1] = path; /* New one */
+ include_dirs[include_dir_count - 1] = path; /* New one. */
i = strlen (path);
if (i > include_dir_maxlen)
include_dir_maxlen = i;
-} /* add_include_dir() */
+}
/* Output debugging information to denote the source file. */
@@ -4975,22 +4970,11 @@ generate_file_debug ()
void
generate_lineno_debug ()
{
-#ifdef ECOFF_DEBUGGING
- /* ECOFF assemblers automatically generate debugging information.
- FIXME: This should probably be handled elsewhere. */
- if (debug_type == DEBUG_UNSPECIFIED)
- {
- if (ECOFF_DEBUGGING && ecoff_no_current_file ())
- debug_type = DEBUG_ECOFF;
- else
- debug_type = DEBUG_NONE;
- }
-#endif
-
switch (debug_type)
{
case DEBUG_UNSPECIFIED:
case DEBUG_NONE:
+ case DEBUG_DWARF:
break;
case DEBUG_STABS:
stabs_generate_asm_lineno ();
@@ -4998,9 +4982,11 @@ generate_lineno_debug ()
case DEBUG_ECOFF:
ecoff_generate_asm_lineno ();
break;
- case DEBUG_DWARF:
case DEBUG_DWARF2:
- /* FIXME. */
+ /* ??? We could here indicate to dwarf2dbg.c that something
+ has changed. However, since there is additional backend
+ support that is required (calling dwarf2_emit_insn), we
+ let dwarf2dbg.c call as_where on its own. */
break;
}
}
@@ -5045,8 +5031,8 @@ do_s_func (end_p, default_prefix)
}
else /* ! end_p */
{
- char *name,*label;
- char delim1,delim2;
+ char *name, *label;
+ char delim1, delim2;
if (current_name != NULL)
{
@@ -5098,7 +5084,7 @@ do_s_func (end_p, default_prefix)
demand_empty_rest_of_line ();
}
-void
+void
s_ignore (arg)
int arg ATTRIBUTE_UNUSED;
{
@@ -5109,7 +5095,6 @@ s_ignore (arg)
++input_line_pointer;
}
-
void
read_print_statistics (file)
FILE *file;
@@ -5117,8 +5102,8 @@ read_print_statistics (file)
hash_print_statistics (file, "pseudo-op table", po_hash);
}
-/* Inserts the given line into the input stream.
-
+/* Inserts the given line into the input stream.
+
This call avoids macro/conditionals nesting checking, since the contents of
the line are assumed to replace the contents of a line already scanned.
@@ -5128,7 +5113,7 @@ read_print_statistics (file)
void
input_scrub_insert_line (line)
- const char *line;
+ const char *line;
{
sb newline;
sb_new (&newline);
@@ -5139,14 +5124,12 @@ input_scrub_insert_line (line)
}
/* Insert a file into the input stream; the path must resolve to an actual
- file; no include path searching or dependency registering is performed. */
+ file; no include path searching or dependency registering is performed. */
void
input_scrub_insert_file (path)
- char *path;
+ char *path;
{
input_scrub_include_file (path, input_line_pointer);
buffer_limit = input_scrub_next_buffer (&input_line_pointer);
}
-
-/* end of read.c */
diff --git a/contrib/binutils/gas/read.h b/contrib/binutils/gas/read.h
index 571b59b5..b6929c8 100644
--- a/contrib/binutils/gas/read.h
+++ b/contrib/binutils/gas/read.h
@@ -1,5 +1,5 @@
/* read.h - of read.c
- Copyright (C) 1986, 90, 92, 93, 94, 95, 96, 1997
+ Copyright (C) 1986, 90, 92, 93, 94, 95, 96, 97, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -15,24 +15,28 @@
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. */
+ 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. */
-extern char *input_line_pointer;/* -> char we are parsing now. */
+extern char *input_line_pointer; /* -> char we are parsing now. */
-#define PERMIT_WHITESPACE /* Define to make whitespace be allowed in */
-/* many syntactically unnecessary places. */
-/* Normally undefined. For compatibility */
-/* with ancient GNU cc. */
+/* Define to make whitespace be allowed in many syntactically
+ unnecessary places. Normally undefined. For compatibility with
+ ancient GNU cc. */
/* #undef PERMIT_WHITESPACE */
+#define PERMIT_WHITESPACE
#ifdef PERMIT_WHITESPACE
-#define SKIP_WHITESPACE() {if (* input_line_pointer == ' ') ++ input_line_pointer;}
+#define SKIP_WHITESPACE() \
+ { \
+ if (* input_line_pointer == ' ') \
+ ++ input_line_pointer; \
+ }
#else
#define SKIP_WHITESPACE() know(*input_line_pointer != ' ' )
#endif
-
#define LEX_NAME (1) /* may continue a name */
#define LEX_BEGIN_NAME (2) /* may begin a name */
#define LEX_END_NAME (4) /* ends a name */
@@ -47,7 +51,7 @@ extern char *input_line_pointer;/* -> char we are parsing now. */
#ifndef is_a_char
#define CHAR_MASK (0xff)
#define NOT_A_CHAR (CHAR_MASK+1)
-#define is_a_char(c) (((unsigned)(c)) <= CHAR_MASK)
+#define is_a_char(c) (((unsigned) (c)) <= CHAR_MASK)
#endif /* is_a_char() */
extern char lex_type[];
@@ -76,9 +80,11 @@ extern symbolS *line_label;
/* This is used to support MRI common sections. */
extern symbolS *mri_common_symbol;
+/* True if a stabs line debug statement is currently being emitted. */
+extern int outputting_stabs_line_debug;
+
/* Possible arguments to .linkonce. */
-enum linkonce_type
-{
+enum linkonce_type {
LINKONCE_UNSET = 0,
LINKONCE_DISCARD,
LINKONCE_ONE_ONLY,
@@ -86,9 +92,15 @@ enum linkonce_type
LINKONCE_SAME_CONTENTS
};
+#define IGNORE_OPCODE_CASE
+#ifdef IGNORE_OPCODE_CASE
+extern char original_case_string[];
+#endif
+
extern void pop_insert PARAMS ((const pseudo_typeS *));
extern unsigned int get_stab_string_offset
PARAMS ((const char *string, const char *stabstr_secname));
+extern void aout_process_stab PARAMS ((int, const char *, int, int, int));
extern char *demand_copy_C_string PARAMS ((int *len_pointer));
extern char get_absolute_expression_and_terminator
PARAMS ((long *val_pointer));
@@ -121,7 +133,7 @@ extern void end_repeat PARAMS((int));
extern void generate_lineno_debug PARAMS ((void));
-extern void s_abort PARAMS ((int));
+extern void s_abort PARAMS ((int)) ATTRIBUTE_NORETURN;
extern void s_align_bytes PARAMS ((int arg));
extern void s_align_ptwo PARAMS ((int));
extern void s_app_file PARAMS ((int));
@@ -168,5 +180,3 @@ extern void s_text PARAMS ((int));
extern void stringer PARAMS ((int append_zero));
extern void s_xstab PARAMS ((int what));
extern void s_rva PARAMS ((int));
-
-/* end of read.h */
diff --git a/contrib/binutils/gas/sb.c b/contrib/binutils/gas/sb.c
index 6ec23fc..6328716 100644
--- a/contrib/binutils/gas/sb.c
+++ b/contrib/binutils/gas/sb.c
@@ -1,5 +1,5 @@
/* sb.c - string buffer manipulation routines
- Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+ Copyright (C) 1994, 1995, 2000 Free Software Foundation, Inc.
Written by Steve and Judy Chamberlain of Cygnus Support,
sac@cygnus.com
@@ -19,10 +19,13 @@
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. */
+ 02111-1307, USA. */
#include "config.h"
#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
#ifdef HAVE_STRING_H
#include <string.h>
#else
@@ -59,7 +62,7 @@ int string_count[sb_max_power_two];
static sb_list_vector free_list;
-/* initializes an sb. */
+/* initializes an sb. */
void
sb_build (ptr, size)
@@ -94,7 +97,6 @@ sb_build (ptr, size)
ptr->item = e;
}
-
void
sb_new (ptr)
sb *ptr;
@@ -126,7 +128,7 @@ sb_add_sb (ptr, s)
}
/* make sure that the sb at ptr has room for another len characters,
- and grow it if it doesn't. */
+ and grow it if it doesn't. */
static void
sb_check (ptr, len)
@@ -155,7 +157,7 @@ sb_reset (ptr)
ptr->len = 0;
}
-/* add character c to the end of the sb at ptr. */
+/* add character c to the end of the sb at ptr. */
void
sb_add_char (ptr, c)
@@ -166,7 +168,7 @@ sb_add_char (ptr, c)
ptr->ptr[ptr->len++] = c;
}
-/* add null terminated string s to the end of sb at ptr. */
+/* add null terminated string s to the end of sb at ptr. */
void
sb_add_string (ptr, s)
@@ -213,7 +215,7 @@ sb_print (outfile, ptr)
}
}
-void
+void
sb_print_at (outfile, idx, ptr)
FILE *outfile;
int idx;
@@ -225,7 +227,7 @@ sb_print_at (outfile, idx, ptr)
}
/* put a null at the end of the sb at in and return the start of the
- string, so that it can be used as an arg to printf %s. */
+ string, so that it can be used as an arg to printf %s. */
char *
sb_name (in)
@@ -264,7 +266,7 @@ sb_skip_white (idx, ptr)
/* start at the index idx into the sb at ptr. skips whitespace,
a comma and any following whitespace. returnes the index of the
- next character. */
+ next character. */
int
sb_skip_comma (idx, ptr)
diff --git a/contrib/binutils/gas/sb.h b/contrib/binutils/gas/sb.h
index 7eaed25..e73e0de 100644
--- a/contrib/binutils/gas/sb.h
+++ b/contrib/binutils/gas/sb.h
@@ -1,5 +1,5 @@
/* sb.h - header file for string buffer manipulation routines
- Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+ Copyright (C) 1994, 1995, 2000 Free Software Foundation, Inc.
Written by Steve and Judy Chamberlain of Cygnus Support,
sac@cygnus.com
@@ -19,7 +19,7 @@
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. */
+ 02111-1307, USA. */
#ifndef SB_H
@@ -54,8 +54,8 @@
/* structure of an sb */
typedef struct sb
{
- char *ptr; /* points to the current block. */
- int len; /* how much is used. */
+ char *ptr; /* points to the current block. */
+ int len; /* how much is used. */
int pot; /* the maximum length is 1<<pot */
struct le *item;
}
diff --git a/contrib/binutils/gas/stabs.c b/contrib/binutils/gas/stabs.c
index 7c13c2f..faf3a9c 100644
--- a/contrib/binutils/gas/stabs.c
+++ b/contrib/binutils/gas/stabs.c
@@ -1,5 +1,5 @@
/* Generic stabs parsing for gas.
- Copyright (C) 1989, 90, 91, 93, 94, 95, 96, 97, 98, 1999
+ Copyright (C) 1989, 90, 91, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -17,7 +17,7 @@ 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. */
+02111-1307, USA. */
#include "as.h"
#include "obstack.h"
@@ -25,10 +25,15 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "ecoff.h"
/* We need this, despite the apparent object format dependency, since
- it defines stab types, which all object formats can use now. */
+ it defines stab types, which all object formats can use now. */
#include "aout/stab_gnu.h"
+/* Holds whether the assembler is generating stabs line debugging
+ information or not. Potentially used by md_cleanup function. */
+
+int outputting_stabs_line_debug = 0;
+
static void s_stab_generic PARAMS ((int, char *, char *));
static void generate_asm_file PARAMS ((int, char *));
@@ -112,7 +117,7 @@ get_stab_string_offset (string, stabstr_secname)
}
if (length > 0)
- { /* Ordinary case. */
+ { /* Ordinary case. */
p = frag_more (length + 1);
strcpy (p, string);
@@ -131,9 +136,8 @@ get_stab_string_offset (string, stabstr_secname)
#define OBJ_PROCESS_STAB(SEG,W,S,T,O,D) aout_process_stab(W,S,T,O,D)
#endif
-static void aout_process_stab PARAMS ((int, const char *, int, int, int));
-
-static void
+/* Here instead of obj-aout.c because other formats use it too. */
+void
aout_process_stab (what, string, type, other, desc)
int what;
const char *string;
@@ -172,9 +176,9 @@ aout_process_stab (what, string, type, other, desc)
#endif
/* This can handle different kinds of stabs (s,n,d) and different
- kinds of stab sections. */
+ kinds of stab sections. */
-static void
+static void
s_stab_generic (what, stab_secname, stabstr_secname)
int what;
char *stab_secname;
@@ -384,7 +388,7 @@ s_stab_generic (what, stab_secname, stabstr_secname)
demand_empty_rest_of_line ();
}
-/* Regular stab directive. */
+/* Regular stab directive. */
void
s_stab (what)
@@ -393,7 +397,7 @@ s_stab (what)
s_stab_generic (what, STAB_SECTION_NAME, STAB_STRING_SECTION_NAME);
}
-/* "Extended stabs", used in Solaris only now. */
+/* "Extended stabs", used in Solaris only now. */
void
s_xstab (what)
@@ -439,9 +443,9 @@ s_xstab (what)
/* Frob invented at RMS' request. Set the n_desc of a symbol. */
-void
+void
s_desc (ignore)
- int ignore;
+ int ignore ATTRIBUTE_UNUSED;
{
char *name;
char c;
@@ -498,52 +502,62 @@ generate_asm_file (type, file)
static char *last_file;
static int label_count;
char *hold;
- char *buf = xmalloc (2 * strlen (file) + 10);
char sym[30];
+ char *buf;
+ char *tmp = file;
+ char *endp = file + strlen (file);
+ char *bufp = buf;
+
+ if (last_file != NULL
+ && strcmp (last_file, file) == 0)
+ return;
/* Rather than try to do this in some efficient fashion, we just
generate a string and then parse it again. That lets us use the
existing stabs hook, which expect to see a string, rather than
inventing new ones. */
-
hold = input_line_pointer;
- if (last_file == NULL
- || strcmp (last_file, file) != 0)
+ sprintf (sym, "%sF%d", FAKE_LABEL_NAME, label_count);
+ ++label_count;
+
+ /* Allocate enough space for the file name (possibly extended with
+ doubled up backslashes), the symbol name, and the other characters
+ that make up a stabs file directive. */
+ bufp = buf = xmalloc (2 * strlen (file) + strlen (sym) + 12);
+
+ *bufp++ = '"';
+
+ while (tmp < endp)
{
- char *tmp = file;
- char *endp = file + strlen(file);
- char *bufp = buf;
-
- sprintf (sym, "%sF%d", FAKE_LABEL_NAME, label_count);
- ++label_count;
-
- *bufp++ = '"';
- while (tmp < endp)
- {
- char *bslash = strchr (tmp, '\\');
- int len = (bslash ? (bslash - tmp + 1) : strlen (tmp));
- /* double all backslashes, since demand_copy_C_string (used by
- s_stab to extract the part in quotes) will try to replace them as
- escape sequences. backslash may appear in a filespec. */
- strncpy (bufp, tmp, len);
- tmp += len;
- bufp += len;
- if (bslash != NULL)
- *bufp++ = '\\';
- }
- sprintf (bufp, "\",%d,0,0,%s\n", type, sym);
- input_line_pointer = buf;
- s_stab ('s');
- colon (sym);
+ char *bslash = strchr (tmp, '\\');
+ int len = (bslash ? (bslash - tmp + 1) : strlen (tmp));
+
+ /* Double all backslashes, since demand_copy_C_string (used by
+ s_stab to extract the part in quotes) will try to replace them as
+ escape sequences. backslash may appear in a filespec. */
+ strncpy (bufp, tmp, len);
- if (last_file != NULL)
- free (last_file);
- last_file = xstrdup (file);
+ tmp += len;
+ bufp += len;
+
+ if (bslash != NULL)
+ *bufp++ = '\\';
}
- input_line_pointer = hold;
+ sprintf (bufp, "\",%d,0,0,%s\n", type, sym);
+
+ input_line_pointer = buf;
+ s_stab ('s');
+ colon (sym);
+
+ if (last_file != NULL)
+ free (last_file);
+ last_file = xstrdup (file);
+
free (buf);
+
+ input_line_pointer = hold;
}
/* Generate stabs debugging information for the current line. This is
@@ -559,6 +573,10 @@ stabs_generate_asm_lineno ()
char *buf;
char sym[30];
+ /* Let the world know that we are in the middle of generating a
+ piece of stabs line debugging information. */
+ outputting_stabs_line_debug = 1;
+
/* Rather than try to do this in some efficient fashion, we just
generate a string and then parse it again. That lets us use the
existing stabs hook, which expect to see a string, rather than
@@ -589,6 +607,7 @@ stabs_generate_asm_lineno ()
colon (sym);
input_line_pointer = hold;
+ outputting_stabs_line_debug = 0;
}
/* Emit a function stab.
diff --git a/contrib/binutils/gas/struc-symbol.h b/contrib/binutils/gas/struc-symbol.h
index 7573566..485ba5a 100644
--- a/contrib/binutils/gas/struc-symbol.h
+++ b/contrib/binutils/gas/struc-symbol.h
@@ -1,5 +1,6 @@
/* struct_symbol.h - Internal symbol structure
- Copyright (C) 1987, 92, 93, 94, 95, 98, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1987, 92, 93, 94, 95, 98, 99, 2000
+ Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -21,6 +22,12 @@
#ifndef __struc_symbol_h__
#define __struc_symbol_h__
+#ifdef BFD_ASSEMBLER
+/* The BFD code wants to walk the list in both directions. */
+#undef SYMBOLS_NEED_BACKPOINTERS
+#define SYMBOLS_NEED_BACKPOINTERS
+#endif
+
/* The information we keep for a symbol. Note that the symbol table
holds pointers both to this and to local_symbol structures. See
below. */
@@ -34,13 +41,13 @@ struct symbol
/* The (4-origin) position of sy_name in the symbol table of the object
file. This will be 0 for (nameless) .stabd symbols.
- Not used until write_object_file() time. */
+ Not used until write_object_file() time. */
unsigned long sy_name_offset;
/* What we write in .o file (if permitted). */
obj_symbol_type sy_symbol;
- /* The 24 bit symbol number. Symbol numbers start at 0 and are unsigned. */
+ /* The 24 bit symbol number. Symbol numbers start at 0 and are unsigned. */
long sy_number;
#endif
@@ -69,7 +76,7 @@ struct symbol
are local and would otherwise not be. */
unsigned int sy_used_in_reloc : 1;
- /* Whether the symbol is used as an operand or in an expression.
+ /* Whether the symbol is used as an operand or in an expression.
NOTE: Not all the backends keep this information accurate;
backends which use this bit are responsible for setting it when
a symbol is used in backend routines. */
@@ -88,6 +95,10 @@ struct symbol
#ifdef TC_SYMFIELD_TYPE
TC_SYMFIELD_TYPE sy_tc;
#endif
+
+#ifdef TARGET_SYMBOL_FIELDS
+ TARGET_SYMBOL_FIELDS
+#endif
};
#ifdef BFD_ASSEMBLER
@@ -142,5 +153,3 @@ struct local_symbol
#endif /* BFD_ASSEMBLER */
#endif /* __struc_symbol_h__ */
-
-/* end of struc-symbol.h */
diff --git a/contrib/binutils/gas/subsegs.c b/contrib/binutils/gas/subsegs.c
index b2bf70d..1d29bba 100644
--- a/contrib/binutils/gas/subsegs.c
+++ b/contrib/binutils/gas/subsegs.c
@@ -1,5 +1,5 @@
/* subsegs.c - subsegments -
- Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -19,9 +19,7 @@
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-/*
- * Segments & sub-segments.
- */
+/* Segments & sub-segments. */
#include "as.h"
@@ -37,12 +35,11 @@ static struct obstack frchains;
segment_info_type segment_info[SEG_MAXIMUM_ORDINAL];
#else
-/* Commented in "subsegs.h". */
+/* Commented in "subsegs.h". */
frchainS *data0_frchainP, *bss0_frchainP;
#endif /* MANY_SEGMENTS */
-char const *const seg_name[] =
-{
+char const *const seg_name[] = {
"absolute",
#ifdef MANY_SEGMENTS
"e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9",
@@ -62,7 +59,7 @@ char const *const seg_name[] =
"transfert vector postload",
"register",
"",
-}; /* Used by error reporters, dumpers etc. */
+}; /* Used by error reporters, dumpers etc. */
#else /* BFD_ASSEMBLER */
/* Gas segment information for bfd_abs_section_ptr and
@@ -103,12 +100,12 @@ subsegs_begin ()
#endif
frchain_root = NULL;
- frchain_now = NULL; /* Warn new_subseg() that we are booting. */
+ frchain_now = NULL; /* Warn new_subseg() that we are booting. */
frag_now = &dummy_frag;
#ifndef BFD_ASSEMBLER
- now_subseg = 42; /* Lie for 1st call to subseg_new. */
+ now_subseg = 42; /* Lie for 1st call to subseg_new. */
#ifdef MANY_SEGMENTS
{
int i;
@@ -275,7 +272,7 @@ subseg_set_rest (seg, subseg)
*/
if (!frcP
|| (frcP->frch_seg > seg
- || frcP->frch_subseg > subseg)) /* Kinky logic only works with 2 segments. */
+ || frcP->frch_subseg > subseg)) /* Kinky logic only works with 2 segments. */
{
/*
* This should be the only code that creates a frchainS.
@@ -307,7 +304,7 @@ subseg_set_rest (seg, subseg)
seginfo->frchainP = newP;
}
#endif
-
+
frcP = newP;
}
/*
@@ -567,8 +564,7 @@ section_symbol (sec)
/* Return whether the specified segment is thought to hold text. */
#ifndef BFD_ASSEMBLER
-const char * const nontext_section_names[] =
-{
+const char * const nontext_section_names[] = {
".eh_frame",
".gcc_except_table",
#ifdef OBJ_COFF
diff --git a/contrib/binutils/gas/subsegs.h b/contrib/binutils/gas/subsegs.h
index 4840d5b..504b6df 100644
--- a/contrib/binutils/gas/subsegs.h
+++ b/contrib/binutils/gas/subsegs.h
@@ -1,5 +1,6 @@
/* subsegs.h -> subsegs.c
- Copyright (C) 1987, 92, 93, 94, 95, 96, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1987, 92, 93, 94, 95, 96, 98, 2000
+ Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -44,7 +45,7 @@ struct frchain /* control building of a frag chain */
struct frag *frch_root; /* 1st struct frag in chain, or NULL */
struct frag *frch_last; /* last struct frag in chain, or NULL */
struct frchain *frch_next; /* next in chain of struct frchain-s */
- segT frch_seg; /* SEG_TEXT or SEG_DATA. */
+ segT frch_seg; /* SEG_TEXT or SEG_DATA. */
subsegT frch_subseg; /* subsegment number of this chain */
#ifdef BFD_ASSEMBLER
fixS *fix_root; /* Root of fixups for this subsegment. */
@@ -60,12 +61,10 @@ typedef struct frchain frchainS;
extern frchainS *frchain_root;
/* Frchain we are assembling into now. That is, the current segment's
- frag chain, even if it contains no (complete) frags. */
+ frag chain, even if it contains no (complete) frags. */
extern frchainS *frchain_now;
-
-typedef struct segment_info_struct
-{
+typedef struct segment_info_struct {
frchainS *frchainP;
unsigned int hadone : 1;
@@ -103,13 +102,12 @@ typedef struct segment_info_struct
symbolS *sym;
#endif
- union
- {
- /* Current size of section holding stabs strings. */
- unsigned long stab_string_size;
- /* Initial frag for ELF. */
- char *p;
- }
+ union {
+ /* Current size of section holding stabs strings. */
+ unsigned long stab_string_size;
+ /* Initial frag for ELF. */
+ char *p;
+ }
stabu;
#ifdef NEED_LITERAL_POOL
@@ -155,5 +153,3 @@ struct seg_info_trash {
#endif /* ! BFD_ASSEMBLER */
extern void subsegs_print_statistics PARAMS ((FILE *));
-
-/* end of subsegs.h */
diff --git a/contrib/binutils/gas/symbols.c b/contrib/binutils/gas/symbols.c
index b54a2fd..fba40cf 100644
--- a/contrib/binutils/gas/symbols.c
+++ b/contrib/binutils/gas/symbols.c
@@ -19,7 +19,7 @@
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-/* #define DEBUG_SYMS / * to debug symbol list maintenance */
+/* #define DEBUG_SYMS / * to debug symbol list maintenance. */
#include <ctype.h>
@@ -44,7 +44,7 @@ static struct hash_control *sy_hash;
/* Table of local symbols. */
static struct hash_control *local_hash;
-/* Below are commented in "symbols.h". */
+/* Below are commented in "symbols.h". */
symbolS *symbol_rootP;
symbolS *symbol_lastP;
symbolS abs_symbol;
@@ -55,6 +55,9 @@ symbolS abs_symbol;
#define debug_verify_symchain(root, last) ((void) 0)
#endif
+#define DOLLAR_LABEL_CHAR '\001'
+#define LOCAL_LABEL_CHAR '\002'
+
struct obstack notes;
static void fb_label_init PARAMS ((void));
@@ -63,12 +66,10 @@ static long fb_label_instance PARAMS ((long));
static void print_binary PARAMS ((FILE *, const char *, expressionS *));
-/* symbol_new()
-
- Return a pointer to a new symbol. Die if we can't make a new
+/* Return a pointer to a new symbol. Die if we can't make a new
symbol. Fill in the symbol's values. Add symbol to end of symbol
chain.
-
+
This function should be called in the general case of creating a
symbol. However, if the output file symbol table has already been
set, and you are certain that this symbol won't be wanted in the
@@ -83,9 +84,7 @@ symbol_new (name, segment, valu, frag)
{
symbolS *symbolP = symbol_create (name, segment, valu, frag);
- /*
- * Link to end of symbol chain.
- */
+ /* Link to end of symbol chain. */
#ifdef BFD_ASSEMBLER
{
extern int symbol_table_frozen;
@@ -108,7 +107,7 @@ save_symbol_name (name)
unsigned int name_length;
char *ret;
- name_length = strlen (name) + 1; /* +1 for \0 */
+ name_length = strlen (name) + 1; /* +1 for \0. */
obstack_grow (&notes, name, name_length);
ret = obstack_finish (&notes);
@@ -135,10 +134,10 @@ save_symbol_name (name)
symbolS *
symbol_create (name, segment, valu, frag)
- const char *name; /* It is copied, the caller can destroy/modify */
- segT segment; /* Segment identifier (SEG_<something>) */
- valueT valu; /* Symbol value */
- fragS *frag; /* Associated fragment */
+ const char *name; /* It is copied, the caller can destroy/modify. */
+ segT segment; /* Segment identifier (SEG_<something>). */
+ valueT valu; /* Symbol value. */
+ fragS *frag; /* Associated fragment. */
{
char *preserved_copy_of_name;
symbolS *symbolP;
@@ -147,7 +146,7 @@ symbol_create (name, segment, valu, frag)
symbolP = (symbolS *) obstack_alloc (&notes, sizeof (symbolS));
- /* symbol must be born in some fixed state. This seems as good as any. */
+ /* symbol must be born in some fixed state. This seems as good as any. */
memset (symbolP, 0, sizeof (symbolS));
#ifdef BFD_ASSEMBLER
@@ -272,22 +271,17 @@ local_symbol_convert (locsym)
#endif /* ! BFD_ASSEMBLER */
+/* We have just seen "<name>:".
+ Creates a struct symbol unless it already exists.
+
+ Gripes if we are redefining a symbol incompatibly (and ignores it). */
-/*
- * colon()
- *
- * We have just seen "<name>:".
- * Creates a struct symbol unless it already exists.
- *
- * Gripes if we are redefining a symbol incompatibly (and ignores it).
- *
- */
symbolS *
-colon (sym_name) /* just seen "x:" - rattle symbols & frags */
- const char *sym_name; /* symbol name, as a cannonical string */
- /* We copy this string: OK to alter later. */
+colon (sym_name) /* Just seen "x:" - rattle symbols & frags. */
+ const char *sym_name; /* Symbol name, as a cannonical string. */
+ /* We copy this string: OK to alter later. */
{
- register symbolS *symbolP; /* symbol we are working with */
+ register symbolS *symbolP; /* Symbol we are working with. */
/* Sun local labels go out of scope whenever a non-local symbol is
defined. */
@@ -327,9 +321,9 @@ colon (sym_name) /* just seen "x:" - rattle symbols & frags */
(offsetT) 0,
NULL);
- /* We want to store the pointer to where to insert the jump table in the
- fr_opcode of the rs_broken_word frag. This requires a little
- hackery. */
+ /* We want to store the pointer to where to insert the jump
+ table in the fr_opcode of the rs_broken_word frag. This
+ requires a little hackery. */
while (frag_tmp
&& (frag_tmp->fr_type != rs_broken_word
|| frag_tmp->fr_opcode))
@@ -349,9 +343,7 @@ colon (sym_name) /* just seen "x:" - rattle symbols & frags */
if (RESOLVE_SYMBOL_REDEFINITION (symbolP))
return symbolP;
#endif
- /*
- * Now check for undefined symbols
- */
+ /* Now check for undefined symbols. */
if (LOCAL_SYMBOL_CHECK (symbolP))
{
#ifdef BFD_ASSEMBLER
@@ -377,27 +369,27 @@ colon (sym_name) /* just seen "x:" - rattle symbols & frags */
{
symbolP->sy_frag = frag_now;
#ifdef OBJ_VMS
- S_SET_OTHER(symbolP, const_flag);
+ S_SET_OTHER (symbolP, const_flag);
#endif
S_SET_VALUE (symbolP, (valueT) frag_now_fix ());
S_SET_SEGMENT (symbolP, now_seg);
#ifdef N_UNDF
know (N_UNDF == 0);
-#endif /* if we have one, it better be zero. */
+#endif /* if we have one, it better be zero. */
}
else
{
- /*
- * There are still several cases to check:
- * A .comm/.lcomm symbol being redefined as
- * initialized data is OK
- * A .comm/.lcomm symbol being redefined with
- * a larger size is also OK
- *
- * This only used to be allowed on VMS gas, but Sun cc
- * on the sparc also depends on it.
- */
+ /* There are still several cases to check:
+
+ A .comm/.lcomm symbol being redefined as initialized
+ data is OK
+
+ A .comm/.lcomm symbol being redefined with a larger
+ size is also OK
+
+ This only used to be allowed on VMS gas, but Sun cc
+ on the sparc also depends on it. */
if (((!S_IS_DEBUG (symbolP)
&& (!S_IS_DEFINED (symbolP) || S_IS_COMMON (symbolP))
@@ -406,17 +398,14 @@ colon (sym_name) /* just seen "x:" - rattle symbols & frags */
&& (now_seg == data_section
|| now_seg == S_GET_SEGMENT (symbolP)))
{
- /*
- * Select which of the 2 cases this is
- */
+ /* Select which of the 2 cases this is. */
if (now_seg != data_section)
{
- /*
- * New .comm for prev .comm symbol.
- * If the new size is larger we just
- * change its value. If the new size
- * is smaller, we ignore this symbol
- */
+ /* New .comm for prev .comm symbol.
+
+ If the new size is larger we just change its
+ value. If the new size is smaller, we ignore
+ this symbol. */
if (S_GET_VALUE (symbolP)
< ((unsigned) frag_now_fix ()))
{
@@ -429,10 +418,10 @@ colon (sym_name) /* just seen "x:" - rattle symbols & frags */
data. */
symbolP->sy_frag = frag_now;
#ifdef OBJ_VMS
- S_SET_OTHER(symbolP, const_flag);
+ S_SET_OTHER (symbolP, const_flag);
#endif
S_SET_VALUE (symbolP, (valueT) frag_now_fix ());
- S_SET_SEGMENT (symbolP, now_seg); /* keep N_EXT bit */
+ S_SET_SEGMENT (symbolP, now_seg); /* Keep N_EXT bit. */
}
}
else
@@ -450,22 +439,22 @@ colon (sym_name) /* just seen "x:" - rattle symbols & frags */
S_GET_OTHER (symbolP),
S_GET_DESC (symbolP));
#endif
- as_fatal (_("Symbol \"%s\" is already defined as \"%s\"/%s%ld."),
+ as_bad (_("Symbol \"%s\" is already defined as \"%s\"/%s%ld."),
sym_name,
segment_name (S_GET_SEGMENT (symbolP)),
od_buf,
(long) S_GET_VALUE (symbolP));
}
- } /* if the undefined symbol has no value */
+ } /* if the undefined symbol has no value */
}
else
{
- /* Don't blow up if the definition is the same */
+ /* Don't blow up if the definition is the same. */
if (!(frag_now == symbolP->sy_frag
&& S_GET_VALUE (symbolP) == frag_now_fix ()
&& S_GET_SEGMENT (symbolP) == now_seg))
- as_fatal (_("Symbol %s already defined."), sym_name);
- } /* if this symbol is not yet defined */
+ as_bad (_("Symbol %s already defined."), sym_name);
+ }
}
#ifdef BFD_ASSEMBLER
@@ -485,7 +474,7 @@ colon (sym_name) /* just seen "x:" - rattle symbols & frags */
#endif /* OBJ_VMS */
symbol_table_insert (symbolP);
- } /* if we have seen this symbol before */
+ }
if (mri_common_symbol != NULL)
{
@@ -511,15 +500,9 @@ colon (sym_name) /* just seen "x:" - rattle symbols & frags */
return symbolP;
}
+/* Die if we can't insert the symbol. */
-/*
- * symbol_table_insert()
- *
- * Die if we can't insert the symbol.
- *
- */
-
-void
+void
symbol_table_insert (symbolP)
symbolS *symbolP;
{
@@ -542,15 +525,12 @@ symbol_table_insert (symbolP)
{
as_fatal (_("Inserting \"%s\" into symbol table failed: %s"),
S_GET_NAME (symbolP), error_string);
- } /* on error */
-} /* symbol_table_insert() */
+ } /* on error */
+}
-/*
- * symbol_find_or_make()
- *
- * If a symbol name does not exist, create it as undefined, and insert
- * it into the symbol table. Return a pointer to it.
- */
+/* If a symbol name does not exist, create it as undefined, and insert
+ it into the symbol table. Return a pointer to it. */
+
symbolS *
symbol_find_or_make (name)
const char *name;
@@ -581,7 +561,7 @@ symbol_find_or_make (name)
} /* if symbol wasn't found */
return (symbolP);
-} /* symbol_find_or_make() */
+}
symbolS *
symbol_make (name)
@@ -589,23 +569,19 @@ symbol_make (name)
{
symbolS *symbolP;
- /* Let the machine description default it, e.g. for register names. */
+ /* Let the machine description default it, e.g. for register names. */
symbolP = md_undefined_symbol ((char *) name);
if (!symbolP)
symbolP = symbol_new (name, undefined_section, (valueT) 0, &zero_address_frag);
return (symbolP);
-} /* symbol_make() */
+}
-/*
- * symbol_find()
- *
- * Implement symbol table lookup.
- * In: A symbol's name as a string: '\0' can't be part of a symbol name.
- * Out: NULL if the name was not in the symbol table, else the address
- * of a struct symbol associated with that name.
- */
+/* Implement symbol table lookup.
+ In: A symbol's name as a string: '\0' can't be part of a symbol name.
+ Out: NULL if the name was not in the symbol table, else the address
+ of a struct symbol associated with that name. */
symbolS *
symbol_find (name)
@@ -616,7 +592,7 @@ symbol_find (name)
#else /* STRIP_UNDERSCORE */
return (symbol_find_base (name, 0));
#endif /* STRIP_UNDERSCORE */
-} /* symbol_find() */
+}
symbolS *
symbol_find_base (name, strip_underscore)
@@ -668,16 +644,15 @@ symbol_find_base (name, strip_underscore)
return ((symbolS *) hash_find (sy_hash, name));
}
-/*
- * Once upon a time, symbols were kept in a singly linked list. At
- * least coff needs to be able to rearrange them from time to time, for
- * which a doubly linked list is much more convenient. Loic did these
- * as macros which seemed dangerous to me so they're now functions.
- * xoxorich.
- */
+/* Once upon a time, symbols were kept in a singly linked list. At
+ least coff needs to be able to rearrange them from time to time, for
+ which a doubly linked list is much more convenient. Loic did these
+ as macros which seemed dangerous to me so they're now functions.
+ xoxorich. */
-/* Link symbol ADDME after symbol TARGET in the chain. */
-void
+/* Link symbol ADDME after symbol TARGET in the chain. */
+
+void
symbol_append (addme, target, rootPP, lastPP)
symbolS *addme;
symbolS *target;
@@ -700,7 +675,7 @@ symbol_append (addme, target, rootPP, lastPP)
*rootPP = addme;
*lastPP = addme;
return;
- } /* if the list is empty */
+ } /* if the list is empty */
if (target->sy_next != NULL)
{
@@ -712,7 +687,7 @@ symbol_append (addme, target, rootPP, lastPP)
{
know (*lastPP == target);
*lastPP = addme;
- } /* if we have a next */
+ } /* if we have a next */
addme->sy_next = target->sy_next;
target->sy_next = addme;
@@ -724,8 +699,9 @@ symbol_append (addme, target, rootPP, lastPP)
debug_verify_symchain (symbol_rootP, symbol_lastP);
}
-/* Set the chain pointers of SYMBOL to null. */
-void
+/* Set the chain pointers of SYMBOL to null. */
+
+void
symbol_clear_list_pointers (symbolP)
symbolS *symbolP;
{
@@ -738,8 +714,9 @@ symbol_clear_list_pointers (symbolP)
}
#ifdef SYMBOLS_NEED_BACKPOINTERS
-/* Remove SYMBOLP from the list. */
-void
+/* Remove SYMBOLP from the list. */
+
+void
symbol_remove (symbolP, rootPP, lastPP)
symbolS *symbolP;
symbolS **rootPP;
@@ -751,28 +728,29 @@ symbol_remove (symbolP, rootPP, lastPP)
if (symbolP == *rootPP)
{
*rootPP = symbolP->sy_next;
- } /* if it was the root */
+ } /* if it was the root */
if (symbolP == *lastPP)
{
*lastPP = symbolP->sy_previous;
- } /* if it was the tail */
+ } /* if it was the tail */
if (symbolP->sy_next != NULL)
{
symbolP->sy_next->sy_previous = symbolP->sy_previous;
- } /* if not last */
+ } /* if not last */
if (symbolP->sy_previous != NULL)
{
symbolP->sy_previous->sy_next = symbolP->sy_next;
- } /* if not first */
+ } /* if not first */
debug_verify_symchain (*rootPP, *lastPP);
}
-/* Link symbol ADDME before symbol TARGET in the chain. */
-void
+/* Link symbol ADDME before symbol TARGET in the chain. */
+
+void
symbol_insert (addme, target, rootPP, lastPP)
symbolS *addme;
symbolS *target;
@@ -792,7 +770,7 @@ symbol_insert (addme, target, rootPP, lastPP)
{
know (*rootPP == target);
*rootPP = addme;
- } /* if not first */
+ } /* if not first */
addme->sy_previous = target->sy_previous;
target->sy_previous = addme;
@@ -803,7 +781,7 @@ symbol_insert (addme, target, rootPP, lastPP)
#endif /* SYMBOLS_NEED_BACKPOINTERS */
-void
+void
verify_symbol_chain (rootP, lastP)
symbolS *rootP;
symbolS *lastP;
@@ -862,10 +840,10 @@ resolve_symbol_value (symp, finalize)
struct local_symbol *locsym = (struct local_symbol *) symp;
if (local_symbol_resolved_p (locsym))
- return locsym->lsy_offset / OCTETS_PER_BYTE;
+ return locsym->lsy_offset / bfd_octets_per_byte (stdoutput);
final_val = (local_symbol_get_frag (locsym)->fr_address
- + locsym->lsy_offset) / OCTETS_PER_BYTE;
+ + locsym->lsy_offset) / bfd_octets_per_byte (stdoutput);
if (finalize)
{
@@ -891,7 +869,8 @@ resolve_symbol_value (symp, finalize)
if (symp->sy_resolving)
{
if (finalize)
- as_bad (_("Symbol definition loop encountered at %s"), S_GET_NAME (symp));
+ as_bad (_("Symbol definition loop encountered at %s"),
+ S_GET_NAME (symp));
final_val = 0;
resolved = 1;
}
@@ -1076,7 +1055,8 @@ resolve_symbol_value (symp, finalize)
S_GET_NAME (symp->sy_value.X_op_symbol));
if (seg_left != undefined_section
&& seg_right != undefined_section)
- as_bad_where (file, line, _("invalid section for operation"));
+ as_bad_where (file, line,
+ _("invalid section for operation"));
}
else
{
@@ -1144,7 +1124,7 @@ resolve_symbol_value (symp, finalize)
final_seg = absolute_section;
resolved = (symbol_resolved_p (add_symbol)
&& symbol_resolved_p (op_symbol));
- break;
+ break;
case O_register:
case O_big:
@@ -1180,7 +1160,8 @@ exit_dont_set_value:
symp->sy_resolved = 1;
else if (S_GET_SEGMENT (symp) != expr_section)
{
- as_bad (_("can't resolve value for symbol \"%s\""), S_GET_NAME (symp));
+ as_bad (_("can't resolve value for symbol \"%s\""),
+ S_GET_NAME (symp));
symp->sy_resolved = 1;
}
}
@@ -1228,7 +1209,7 @@ static char *dollar_label_defines;
static unsigned long dollar_label_count;
static unsigned long dollar_label_max;
-int
+int
dollar_label_defined (label)
long label;
{
@@ -1240,9 +1221,9 @@ dollar_label_defined (label)
if (*i == label)
return dollar_label_defines[i - dollar_labels];
- /* if we get here, label isn't defined */
+ /* If we get here, label isn't defined. */
return 0;
-} /* dollar_label_defined() */
+}
static long
dollar_label_instance (label)
@@ -1256,12 +1237,12 @@ dollar_label_instance (label)
if (*i == label)
return (dollar_label_instances[i - dollar_labels]);
- /* If we get here, we haven't seen the label before, therefore its instance
- count is zero. */
+ /* If we get here, we haven't seen the label before.
+ Therefore its instance count is zero. */
return 0;
}
-void
+void
dollar_label_clear ()
{
memset (dollar_label_defines, '\0', (unsigned int) dollar_label_count);
@@ -1269,7 +1250,7 @@ dollar_label_clear ()
#define DOLLAR_LABEL_BUMP_BY 10
-void
+void
define_dollar_label (label)
long label;
{
@@ -1283,7 +1264,7 @@ define_dollar_label (label)
return;
}
- /* if we get to here, we don't have label listed yet. */
+ /* If we get to here, we don't have label listed yet. */
if (dollar_labels == NULL)
{
@@ -1301,7 +1282,7 @@ define_dollar_label (label)
dollar_label_instances = (long *) xrealloc ((char *) dollar_label_instances,
dollar_label_max * sizeof (long));
dollar_label_defines = xrealloc (dollar_label_defines, dollar_label_max);
- } /* if we needed to grow */
+ } /* if we needed to grow */
dollar_labels[dollar_label_count] = label;
dollar_label_instances[dollar_label_count] = 1;
@@ -1309,31 +1290,28 @@ define_dollar_label (label)
++dollar_label_count;
}
-/*
- * dollar_label_name()
- *
- * Caller must copy returned name: we re-use the area for the next name.
- *
- * The mth occurence of label n: is turned into the symbol "Ln^Am"
- * where n is the label number and m is the instance number. "L" makes
- * it a label discarded unless debugging and "^A"('\1') ensures no
- * ordinary symbol SHOULD get the same name as a local label
- * symbol. The first "4:" is "L4^A1" - the m numbers begin at 1.
- *
- * fb labels get the same treatment, except that ^B is used in place of ^A.
- */
-
-char * /* Return local label name. */
+/* Caller must copy returned name: we re-use the area for the next name.
+
+ The mth occurence of label n: is turned into the symbol "Ln^Am"
+ where n is the label number and m is the instance number. "L" makes
+ it a label discarded unless debugging and "^A"('\1') ensures no
+ ordinary symbol SHOULD get the same name as a local label
+ symbol. The first "4:" is "L4^A1" - the m numbers begin at 1.
+
+ fb labels get the same treatment, except that ^B is used in place
+ of ^A. */
+
+char * /* Return local label name. */
dollar_label_name (n, augend)
- register long n; /* we just saw "n$:" : n a number */
- register int augend; /* 0 for current instance, 1 for new instance */
+ register long n; /* we just saw "n$:" : n a number. */
+ register int augend; /* 0 for current instance, 1 for new instance. */
{
long i;
- /* Returned to caller, then copied. used for created names ("4f") */
+ /* Returned to caller, then copied. Used for created names ("4f"). */
static char symbol_name_build[24];
register char *p;
register char *q;
- char symbol_name_temporary[20]; /* build up a number, BACKWARDS */
+ char symbol_name_temporary[20]; /* Build up a number, BACKWARDS. */
know (n >= 0);
know (augend == 0 || augend == 1);
@@ -1343,8 +1321,8 @@ dollar_label_name (n, augend)
#endif
*p++ = 'L';
- /* Next code just does sprintf( {}, "%d", n); */
- /* label number */
+ /* Next code just does sprintf( {}, "%d", n); */
+ /* Label number. */
q = symbol_name_temporary;
for (*q++ = 0, i = n; i; ++q)
{
@@ -1354,9 +1332,9 @@ dollar_label_name (n, augend)
while ((*p = *--q) != '\0')
++p;
- *p++ = 1; /* ^A */
+ *p++ = DOLLAR_LABEL_CHAR; /* ^A */
- /* instance number */
+ /* Instance number. */
q = symbol_name_temporary;
for (*q++ = 0, i = dollar_label_instance (n) + augend; i; ++q)
{
@@ -1365,27 +1343,26 @@ dollar_label_name (n, augend)
}
while ((*p++ = *--q) != '\0');;
- /* The label, as a '\0' ended string, starts at symbol_name_build. */
+ /* The label, as a '\0' ended string, starts at symbol_name_build. */
return symbol_name_build;
}
-/*
- * Sombody else's idea of local labels. They are made by "n:" where n
- * is any decimal digit. Refer to them with
- * "nb" for previous (backward) n:
- * or "nf" for next (forward) n:.
- *
- * We do a little better and let n be any number, not just a single digit, but
- * since the other guy's assembler only does ten, we treat the first ten
- * specially.
- *
- * Like someone else's assembler, we have one set of local label counters for
- * entire assembly, not one set per (sub)segment like in most assemblers. This
- * implies that one can refer to a label in another segment, and indeed some
- * crufty compilers have done just that.
- *
- * Since there could be a LOT of these things, treat them as a sparse array.
- */
+/* Sombody else's idea of local labels. They are made by "n:" where n
+ is any decimal digit. Refer to them with
+ "nb" for previous (backward) n:
+ or "nf" for next (forward) n:.
+
+ We do a little better and let n be any number, not just a single digit, but
+ since the other guy's assembler only does ten, we treat the first ten
+ specially.
+
+ Like someone else's assembler, we have one set of local label counters for
+ entire assembly, not one set per (sub)segment like in most assemblers. This
+ implies that one can refer to a label in another segment, and indeed some
+ crufty compilers have done just that.
+
+ Since there could be a LOT of these things, treat them as a sparse
+ array. */
#define FB_LABEL_SPECIAL (10)
@@ -1395,17 +1372,18 @@ static long *fb_label_instances;
static long fb_label_count;
static long fb_label_max;
-/* this must be more than FB_LABEL_SPECIAL */
+/* This must be more than FB_LABEL_SPECIAL. */
#define FB_LABEL_BUMP_BY (FB_LABEL_SPECIAL + 6)
-static void
+static void
fb_label_init ()
{
memset ((void *) fb_low_counter, '\0', sizeof (fb_low_counter));
-} /* fb_label_init() */
+}
-/* add one to the instance number of this fb label */
-void
+/* Add one to the instance number of this fb label. */
+
+void
fb_label_instance_inc (label)
long label;
{
@@ -1426,11 +1404,11 @@ fb_label_instance_inc (label)
{
++fb_label_instances[i - fb_labels];
return;
- } /* if we find it */
- } /* for each existing label */
+ } /* if we find it */
+ } /* for each existing label */
}
- /* if we get to here, we don't have label listed yet. */
+ /* If we get to here, we don't have label listed yet. */
if (fb_labels == NULL)
{
@@ -1447,14 +1425,14 @@ fb_label_instance_inc (label)
fb_label_max * sizeof (long));
fb_label_instances = (long *) xrealloc ((char *) fb_label_instances,
fb_label_max * sizeof (long));
- } /* if we needed to grow */
+ } /* if we needed to grow */
fb_labels[fb_label_count] = label;
fb_label_instances[fb_label_count] = 1;
++fb_label_count;
}
-static long
+static long
fb_label_instance (label)
long label;
{
@@ -1473,8 +1451,8 @@ fb_label_instance (label)
if (*i == label)
{
return (fb_label_instances[i - fb_labels]);
- } /* if we find it */
- } /* for each existing label */
+ } /* if we find it */
+ } /* for each existing label */
}
/* We didn't find the label, so this must be a reference to the
@@ -1482,38 +1460,39 @@ fb_label_instance (label)
return 0;
}
-/*
- * fb_label_name()
- *
- * Caller must copy returned name: we re-use the area for the next name.
- *
- * The mth occurence of label n: is turned into the symbol "Ln^Bm"
- * where n is the label number and m is the instance number. "L" makes
- * it a label discarded unless debugging and "^B"('\2') ensures no
- * ordinary symbol SHOULD get the same name as a local label
- * symbol. The first "4:" is "L4^B1" - the m numbers begin at 1.
- *
- * dollar labels get the same treatment, except that ^A is used in place of ^B. */
-
-char * /* Return local label name. */
+/* Caller must copy returned name: we re-use the area for the next name.
+
+ The mth occurence of label n: is turned into the symbol "Ln^Bm"
+ where n is the label number and m is the instance number. "L" makes
+ it a label discarded unless debugging and "^B"('\2') ensures no
+ ordinary symbol SHOULD get the same name as a local label
+ symbol. The first "4:" is "L4^B1" - the m numbers begin at 1.
+
+ dollar labels get the same treatment, except that ^A is used in
+ place of ^B. */
+
+char * /* Return local label name. */
fb_label_name (n, augend)
- long n; /* we just saw "n:", "nf" or "nb" : n a number */
- long augend; /* 0 for nb, 1 for n:, nf */
+ long n; /* We just saw "n:", "nf" or "nb" : n a number. */
+ long augend; /* 0 for nb, 1 for n:, nf. */
{
long i;
- /* Returned to caller, then copied. used for created names ("4f") */
+ /* Returned to caller, then copied. Used for created names ("4f"). */
static char symbol_name_build[24];
register char *p;
register char *q;
- char symbol_name_temporary[20]; /* build up a number, BACKWARDS */
+ char symbol_name_temporary[20]; /* Build up a number, BACKWARDS. */
know (n >= 0);
know (augend == 0 || augend == 1);
p = symbol_name_build;
+#ifdef LOCAL_LABEL_PREFIX
+ *p++ = LOCAL_LABEL_PREFIX;
+#endif
*p++ = 'L';
- /* Next code just does sprintf( {}, "%d", n); */
- /* label number */
+ /* Next code just does sprintf( {}, "%d", n); */
+ /* Label number. */
q = symbol_name_temporary;
for (*q++ = 0, i = n; i; ++q)
{
@@ -1523,9 +1502,9 @@ fb_label_name (n, augend)
while ((*p = *--q) != '\0')
++p;
- *p++ = 2; /* ^B */
+ *p++ = LOCAL_LABEL_CHAR; /* ^B */
- /* instance number */
+ /* Instance number. */
q = symbol_name_temporary;
for (*q++ = 0, i = fb_label_instance (n) + augend; i; ++q)
{
@@ -1534,15 +1513,13 @@ fb_label_name (n, augend)
}
while ((*p++ = *--q) != '\0');;
- /* The label, as a '\0' ended string, starts at symbol_name_build. */
+ /* The label, as a '\0' ended string, starts at symbol_name_build. */
return (symbol_name_build);
-} /* fb_label_name() */
+}
-/*
- * decode name that may have been generated by foo_label_name() above. If
- * the name wasn't generated by foo_label_name(), then return it unaltered.
- * This is used for error messages.
- */
+/* Decode name that may have been generated by foo_label_name() above.
+ If the name wasn't generated by foo_label_name(), then return it
+ unaltered. This is used for error messages. */
char *
decode_local_label_name (s)
@@ -1554,16 +1531,22 @@ decode_local_label_name (s)
int instance_number;
char *type;
const char *message_format = _("\"%d\" (instance number %d of a %s label)");
+ int index = 0;
- if (s[0] != 'L')
+#ifdef LOCAL_LABEL_PREFIX
+ if (s[index] == LOCAL_LABEL_PREFIX)
+ ++index;
+#endif
+
+ if (s[index] != 'L')
return s;
- for (label_number = 0, p = s + 1; isdigit ((unsigned char) *p); ++p)
+ for (label_number = 0, p = s + index + 1; isdigit ((unsigned char) *p); ++p)
label_number = (10 * label_number) + *p - '0';
- if (*p == 1)
+ if (*p == DOLLAR_LABEL_CHAR)
type = "dollar";
- else if (*p == 2)
+ else if (*p == LOCAL_LABEL_CHAR)
type = "fb";
else
return s;
@@ -1678,7 +1661,7 @@ S_IS_EXTERNAL (s)
flags = s->bsym->flags;
- /* sanity check */
+ /* Sanity check. */
if ((flags & BSF_LOCAL) && (flags & BSF_GLOBAL))
abort ();
@@ -1735,7 +1718,7 @@ S_IS_LOCAL (s)
flags = s->bsym->flags;
- /* sanity check */
+ /* Sanity check. */
if ((flags & BSF_LOCAL) && (flags & BSF_GLOBAL))
abort ();
@@ -1750,8 +1733,8 @@ S_IS_LOCAL (s)
name = S_GET_NAME (s);
return (name != NULL
&& ! S_IS_DEBUG (s)
- && (strchr (name, '\001')
- || strchr (name, '\002')
+ && (strchr (name, DOLLAR_LABEL_CHAR)
+ || strchr (name, LOCAL_LABEL_CHAR)
|| (! flag_keep_locals
&& (bfd_is_local_label (stdoutput, s->bsym)
|| (flag_mri
@@ -1814,7 +1797,7 @@ S_SET_SEGMENT (s, seg)
if (s->bsym->flags & BSF_SECTION_SYM)
{
if (s->bsym->section != seg)
- abort();
+ abort ();
}
else
s->bsym->section = seg;
@@ -1832,7 +1815,7 @@ S_SET_EXTERNAL (s)
return;
}
s->bsym->flags |= BSF_GLOBAL;
- s->bsym->flags &= ~(BSF_LOCAL|BSF_WEAK);
+ s->bsym->flags &= ~(BSF_LOCAL | BSF_WEAK);
}
void
@@ -1847,7 +1830,7 @@ S_CLEAR_EXTERNAL (s)
return;
}
s->bsym->flags |= BSF_LOCAL;
- s->bsym->flags &= ~(BSF_GLOBAL|BSF_WEAK);
+ s->bsym->flags &= ~(BSF_GLOBAL | BSF_WEAK);
}
void
@@ -1857,7 +1840,7 @@ S_SET_WEAK (s)
if (LOCAL_SYMBOL_CHECK (s))
s = local_symbol_convert ((struct local_symbol *) s);
s->bsym->flags |= BSF_WEAK;
- s->bsym->flags &= ~(BSF_GLOBAL|BSF_LOCAL);
+ s->bsym->flags &= ~(BSF_GLOBAL | BSF_LOCAL);
}
void
@@ -2125,7 +2108,7 @@ symbol_section_p (s)
#ifdef BFD_ASSEMBLER
return (s->bsym->flags & BSF_SECTION_SYM) != 0;
#else
- /* FIXME */
+ /* FIXME. */
return 0;
#endif
}
@@ -2237,7 +2220,7 @@ void
symbol_begin ()
{
symbol_lastP = NULL;
- symbol_rootP = NULL; /* In case we have 0 symbols (!!) */
+ symbol_rootP = NULL; /* In case we have 0 symbols (!!) */
sy_hash = hash_new ();
#ifdef BFD_ASSEMBLER
local_hash = hash_new ();
@@ -2249,7 +2232,7 @@ symbol_begin ()
abs_symbol.bsym = bfd_abs_section.symbol;
#endif
#else
- /* Can't initialise a union. Sigh. */
+ /* Can't initialise a union. Sigh. */
S_SET_SEGMENT (&abs_symbol, absolute_section);
#endif
abs_symbol.sy_value.X_op = O_constant;
@@ -2258,8 +2241,6 @@ symbol_begin ()
if (LOCAL_LABELS_FB)
fb_label_init ();
}
-
-
int indent_level;
@@ -2361,7 +2342,7 @@ print_symbol_value (sym)
static void
print_binary (file, name, exp)
FILE *file;
- const char * name;
+ const char *name;
expressionS *exp;
{
indent_level++;
@@ -2506,5 +2487,3 @@ symbol_print_statistics (file)
local_symbol_count, local_symbol_conversion_count);
#endif
}
-
-/* end of symbols.c */
diff --git a/contrib/binutils/gas/symbols.h b/contrib/binutils/gas/symbols.h
index f3b73af..87c473c 100644
--- a/contrib/binutils/gas/symbols.h
+++ b/contrib/binutils/gas/symbols.h
@@ -1,5 +1,5 @@
/* symbols.h -
- Copyright (C) 1987, 90, 92, 93, 94, 95, 97, 1999
+ Copyright (C) 1987, 90, 92, 93, 94, 95, 97, 99, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -31,7 +31,7 @@
#include "struc-symbol.h"
#endif
-extern struct obstack notes; /* eg FixS live here. */
+extern struct obstack notes; /* eg FixS live here. */
extern struct obstack cond_obstack; /* this is where we track .ifdef/.endif
(if we do that at all). */
@@ -201,5 +201,3 @@ void symbol_set_obj PARAMS ((symbolS *, OBJ_SYMFIELD_TYPE *));
TC_SYMFIELD_TYPE *symbol_get_tc PARAMS ((symbolS *));
void symbol_set_tc PARAMS ((symbolS *, TC_SYMFIELD_TYPE *));
#endif
-
-/* end of symbols.h */
diff --git a/contrib/binutils/gas/tc.h b/contrib/binutils/gas/tc.h
index 4e4046c..07817be 100644
--- a/contrib/binutils/gas/tc.h
+++ b/contrib/binutils/gas/tc.h
@@ -24,19 +24,19 @@
extern const pseudo_typeS md_pseudo_table[];
/* JF moved this here from as.h under the theory that nobody except MACHINE.c
- and write.c care about it anyway. */
+ and write.c care about it anyway. */
struct relax_type
{
- /* Forward reach. Signed number. > 0. */
+ /* Forward reach. Signed number. > 0. */
long rlx_forward;
- /* Backward reach. Signed number. < 0. */
+ /* Backward reach. Signed number. < 0. */
long rlx_backward;
- /* Bytes length of this address. */
+ /* Bytes length of this address. */
unsigned char rlx_length;
- /* Next longer relax-state. 0 means there is no 'next' relax-state. */
+ /* Next longer relax-state. 0 means there is no 'next' relax-state. */
relax_substateT rlx_more;
};
diff --git a/contrib/binutils/gas/write.c b/contrib/binutils/gas/write.c
index e386ece..9ef356f 100644
--- a/contrib/binutils/gas/write.c
+++ b/contrib/binutils/gas/write.c
@@ -1,5 +1,5 @@
/* write.c - emit .o file
- Copyright (C) 1986, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright (C) 1986, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -19,23 +19,18 @@
Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
-/* This thing should be set up to do byteordering correctly. But... */
+/* This thing should be set up to do byteordering correctly. But... */
#include "as.h"
#include "subsegs.h"
#include "obstack.h"
#include "output-file.h"
+#include "dwarf2dbg.h"
/* This looks like a good idea. Let's try turning it on always, for now. */
#undef BFD_FAST_SECTION_FILL
#define BFD_FAST_SECTION_FILL
-/* The NOP_OPCODE is for the alignment fill value. Fill it with a nop
- instruction so that the disassembler does not choke on it. */
-#ifndef NOP_OPCODE
-#define NOP_OPCODE 0x00
-#endif
-
#ifndef TC_ADJUST_RELOC_COUNT
#define TC_ADJUST_RELOC_COUNT(FIXP,COUNT)
#endif
@@ -48,6 +43,14 @@
#define TC_FORCE_RELOCATION_SECTION(FIXP,SEG) TC_FORCE_RELOCATION(FIXP)
#endif
+#ifndef TC_LINKRELAX_FIXUP
+#define TC_LINKRELAX_FIXUP(SEG) 1
+#endif
+
+#ifndef TC_FIX_ADJUSTABLE
+#define TC_FIX_ADJUSTABLE(fix) 1
+#endif
+
#ifndef MD_PCREL_FROM_SECTION
#define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from(FIXP)
#endif
@@ -77,9 +80,9 @@ struct frag *text_frag_root;
struct frag *data_frag_root;
struct frag *bss_frag_root;
-struct frag *text_last_frag; /* Last frag in segment. */
-struct frag *data_last_frag; /* Last frag in segment. */
-static struct frag *bss_last_frag; /* Last frag in segment. */
+struct frag *text_last_frag; /* Last frag in segment. */
+struct frag *data_last_frag; /* Last frag in segment. */
+static struct frag *bss_last_frag; /* Last frag in segment. */
#endif
#ifndef BFD
@@ -87,13 +90,13 @@ static object_headers headers;
#endif
long string_byte_count;
-char *next_object_file_charP; /* Tracks object file bytes. */
+char *next_object_file_charP; /* Tracks object file bytes. */
#ifndef OBJ_VMS
int magic_number_for_object_file = DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE;
#endif
-#endif /* BFD_ASSEMBLER */
+#endif /* BFD_ASSEMBLER */
static int n_fixups;
@@ -118,7 +121,8 @@ static fragS *chain_frchains_together_1 PARAMS ((segT, struct frchain *));
#ifdef BFD_ASSEMBLER
static void chain_frchains_together PARAMS ((bfd *, segT, PTR));
static void cvt_frag_to_fill PARAMS ((segT, fragS *));
-static void relax_and_size_seg PARAMS ((bfd *, asection *, PTR));
+static void relax_seg PARAMS ((bfd *, asection *, PTR));
+static void size_seg PARAMS ((bfd *, asection *, PTR));
static void adjust_reloc_syms PARAMS ((bfd *, asection *, PTR));
static void write_relocs PARAMS ((bfd *, asection *, PTR));
static void write_contents PARAMS ((bfd *, asection *, PTR));
@@ -132,26 +136,26 @@ static void cvt_frag_to_fill PARAMS ((object_headers *, segT, fragS *));
static void remove_subsegs PARAMS ((frchainS *, int, fragS **, fragS **));
static void relax_and_size_all_segments PARAMS ((void));
#endif
+#if defined (BFD_ASSEMBLER) && defined (OBJ_COFF) && defined (TE_GO32)
+static void set_segment_vma PARAMS ((bfd *, asection *, PTR));
+#endif
+
+/* Create a fixS in obstack 'notes'. */
-/*
- * fix_new()
- *
- * Create a fixS in obstack 'notes'.
- */
static fixS *
fix_new_internal (frag, where, size, add_symbol, sub_symbol, offset, pcrel,
r_type)
- fragS *frag; /* Which frag? */
- int where; /* Where in that frag? */
- int size; /* 1, 2, or 4 usually. */
- symbolS *add_symbol; /* X_add_symbol. */
- symbolS *sub_symbol; /* X_op_symbol. */
- offsetT offset; /* X_add_number. */
- int pcrel; /* TRUE if PC-relative relocation. */
+ fragS *frag; /* Which frag? */
+ int where; /* Where in that frag? */
+ int size; /* 1, 2, or 4 usually. */
+ symbolS *add_symbol; /* X_add_symbol. */
+ symbolS *sub_symbol; /* X_op_symbol. */
+ offsetT offset; /* X_add_number. */
+ int pcrel; /* TRUE if PC-relative relocation. */
#ifdef BFD_ASSEMBLER
- bfd_reloc_code_real_type r_type; /* Relocation type */
+ bfd_reloc_code_real_type r_type; /* Relocation type. */
#else
- int r_type; /* Relocation type */
+ int r_type; /* Relocation type. */
#endif
{
fixS *fixP;
@@ -192,7 +196,7 @@ fix_new_internal (frag, where, size, add_symbol, sub_symbol, offset, pcrel,
#endif
#ifdef TC_FIX_TYPE
- TC_INIT_FIX_DATA(fixP);
+ TC_INIT_FIX_DATA (fixP);
#endif
as_where (&fixP->fx_file, &fixP->fx_line);
@@ -200,8 +204,7 @@ fix_new_internal (frag, where, size, add_symbol, sub_symbol, offset, pcrel,
/* Usually, we want relocs sorted numerically, but while
comparing to older versions of gas that have relocs
reverse sorted, it is convenient to have this compile
- time option. xoxorich. */
-
+ time option. xoxorich. */
{
#ifdef BFD_ASSEMBLER
@@ -218,7 +221,7 @@ fix_new_internal (frag, where, size, add_symbol, sub_symbol, offset, pcrel,
fixP->fx_next = *seg_fix_rootP;
*seg_fix_rootP = fixP;
-#else /* REVERSE_SORT_RELOCS */
+#else /* REVERSE_SORT_RELOCS */
fixP->fx_next = NULL;
@@ -228,8 +231,7 @@ fix_new_internal (frag, where, size, add_symbol, sub_symbol, offset, pcrel,
*seg_fix_rootP = fixP;
*seg_fix_tailP = fixP;
-#endif /* REVERSE_SORT_RELOCS */
-
+#endif /* REVERSE_SORT_RELOCS */
}
return fixP;
@@ -239,16 +241,16 @@ fix_new_internal (frag, where, size, add_symbol, sub_symbol, offset, pcrel,
fixS *
fix_new (frag, where, size, add_symbol, offset, pcrel, r_type)
- fragS *frag; /* Which frag? */
- int where; /* Where in that frag? */
- int size; /* 1, 2, or 4 usually. */
- symbolS *add_symbol; /* X_add_symbol. */
- offsetT offset; /* X_add_number. */
- int pcrel; /* TRUE if PC-relative relocation. */
+ fragS *frag; /* Which frag? */
+ int where; /* Where in that frag? */
+ int size; /* 1, 2, or 4 usually. */
+ symbolS *add_symbol; /* X_add_symbol. */
+ offsetT offset; /* X_add_number. */
+ int pcrel; /* TRUE if PC-relative relocation. */
#ifdef BFD_ASSEMBLER
- bfd_reloc_code_real_type r_type; /* Relocation type */
+ bfd_reloc_code_real_type r_type; /* Relocation type. */
#else
- int r_type; /* Relocation type */
+ int r_type; /* Relocation type. */
#endif
{
return fix_new_internal (frag, where, size, add_symbol,
@@ -261,15 +263,15 @@ fix_new (frag, where, size, add_symbol, offset, pcrel, r_type)
fixS *
fix_new_exp (frag, where, size, exp, pcrel, r_type)
- fragS *frag; /* Which frag? */
- int where; /* Where in that frag? */
- int size; /* 1, 2, or 4 usually. */
+ fragS *frag; /* Which frag? */
+ int where; /* Where in that frag? */
+ int size; /* 1, 2, or 4 usually. */
expressionS *exp; /* Expression. */
- int pcrel; /* TRUE if PC-relative relocation. */
+ int pcrel; /* TRUE if PC-relative relocation. */
#ifdef BFD_ASSEMBLER
- bfd_reloc_code_real_type r_type; /* Relocation type */
+ bfd_reloc_code_real_type r_type; /* Relocation type. */
#else
- int r_type; /* Relocation type */
+ int r_type; /* Relocation type. */
#endif
{
symbolS *add = NULL;
@@ -286,10 +288,12 @@ fix_new_exp (frag, where, size, exp, pcrel, r_type)
the difference expression cannot immediately be reduced. */
{
symbolS *stmp = make_expr_symbol (exp);
+
exp->X_op = O_symbol;
exp->X_op_symbol = 0;
exp->X_add_symbol = stmp;
exp->X_add_number = 0;
+
return fix_new_exp (frag, where, size, exp, pcrel, r_type);
}
@@ -303,7 +307,7 @@ fix_new_exp (frag, where, size, exp, pcrel, r_type)
#if defined(TC_RVA_RELOC)
r_type = TC_RVA_RELOC;
#else
- as_fatal(_("rva not supported"));
+ as_fatal (_("rva not supported"));
#endif
#endif
break;
@@ -318,7 +322,7 @@ fix_new_exp (frag, where, size, exp, pcrel, r_type)
/* Fall through. */
case O_symbol:
add = exp->X_add_symbol;
- /* Fall through. */
+ /* Fall through. */
case O_constant:
off = exp->X_add_number;
break;
@@ -328,8 +332,7 @@ fix_new_exp (frag, where, size, exp, pcrel, r_type)
break;
}
- return fix_new_internal (frag, where, size, add, sub, off,
- pcrel, r_type);
+ return fix_new_internal (frag, where, size, add, sub, off, pcrel, r_type);
}
/* Append a string onto another string, bumping the pointer along. */
@@ -339,7 +342,7 @@ append (charPP, fromP, length)
char *fromP;
unsigned long length;
{
- /* Don't trust memcpy() of 0 chars. */
+ /* Don't trust memcpy() of 0 chars. */
if (length == 0)
return;
@@ -351,15 +354,14 @@ append (charPP, fromP, length)
int section_alignment[SEG_MAXIMUM_ORDINAL];
#endif
-/*
- * This routine records the largest alignment seen for each segment.
- * If the beginning of the segment is aligned on the worst-case
- * boundary, all of the other alignments within it will work. At
- * least one object format really uses this info.
- */
+/* This routine records the largest alignment seen for each segment.
+ If the beginning of the segment is aligned on the worst-case
+ boundary, all of the other alignments within it will work. At
+ least one object format really uses this info. */
+
void
record_alignment (seg, align)
- /* Segment to which alignment pertains */
+ /* Segment to which alignment pertains. */
segT seg;
/* Alignment, as a power of 2 (e.g., 1 => 2-byte boundary, 2 => 4-byte
boundary, etc.) */
@@ -376,6 +378,19 @@ record_alignment (seg, align)
#endif
}
+int
+get_recorded_alignment (seg)
+ segT seg;
+{
+ if (seg == absolute_section)
+ return 0;
+#ifdef BFD_ASSEMBLER
+ return bfd_get_section_alignment (stdoutput, seg);
+#else
+ return section_alignment[(int) seg];
+#endif
+}
+
#ifdef BFD_ASSEMBLER
/* Reset the section indices after removing the gas created sections. */
@@ -392,7 +407,7 @@ renumber_sections (abfd, sec, countparg)
++*countp;
}
-#endif /* defined (BFD_ASSEMBLER) */
+#endif /* defined (BFD_ASSEMBLER) */
#if defined (BFD_ASSEMBLER) || ! defined (BFD)
@@ -443,8 +458,8 @@ chain_frchains_together (abfd, section, xxx)
subseg_new, so it is possible that seg_info is NULL. */
info = seg_info (section);
if (info != (segment_info_type *) NULL)
- info->frchainP->frch_last
- = chain_frchains_together_1 (section, info->frchainP);
+ info->frchainP->frch_last
+ = chain_frchains_together_1 (section, info->frchainP);
/* Now that we've chained the frags together, we must add new fixups
to the segment, not to the frag chain. */
@@ -466,14 +481,14 @@ remove_subsegs (head, seg, root, last)
*last = chain_frchains_together_1 (seg, head);
}
-#endif /* BFD */
+#endif /* BFD */
#if defined (BFD_ASSEMBLER) || !defined (BFD)
#ifdef BFD_ASSEMBLER
static void
cvt_frag_to_fill (sec, fragP)
- segT sec;
+ segT sec ATTRIBUTE_UNUSED;
fragS *fragP;
#else
static void
@@ -487,6 +502,7 @@ cvt_frag_to_fill (headersP, sec, fragP)
{
case rs_align:
case rs_align_code:
+ case rs_align_test:
case rs_org:
case rs_space:
#ifdef HANDLE_ALIGN
@@ -528,6 +544,10 @@ cvt_frag_to_fill (headersP, sec, fragP)
eh_frame_convert_frag (fragP);
break;
+ case rs_dwarf2dbg:
+ dwarf2dbg_convert_frag (fragP);
+ break;
+
case rs_machine_dependent:
#ifdef BFD_ASSEMBLER
md_convert_frag (stdoutput, sec, fragP);
@@ -539,11 +559,9 @@ cvt_frag_to_fill (headersP, sec, fragP)
|| ((offsetT) (fragP->fr_next->fr_address - fragP->fr_address)
== fragP->fr_fix));
- /*
- * After md_convert_frag, we make the frag into a ".space 0".
- * Md_convert_frag() should set up any fixSs and constants
- * required.
- */
+ /* After md_convert_frag, we make the frag into a ".space 0".
+ md_convert_frag() should set up any fixSs and constants
+ required. */
frag_wane (fragP);
break;
@@ -572,11 +590,25 @@ cvt_frag_to_fill (headersP, sec, fragP)
}
}
-#endif /* defined (BFD_ASSEMBLER) || !defined (BFD) */
+#endif /* defined (BFD_ASSEMBLER) || !defined (BFD) */
#ifdef BFD_ASSEMBLER
static void
-relax_and_size_seg (abfd, sec, xxx)
+relax_seg (abfd, sec, do_code)
+ bfd *abfd;
+ asection *sec;
+ PTR do_code;
+{
+ flagword flags = bfd_get_section_flags (abfd, sec);
+ segment_info_type *seginfo = seg_info (sec);
+
+ if (!(flags & SEC_CODE) == !do_code
+ && seginfo && seginfo->frchainP)
+ relax_segment (seginfo->frchainP->frch_root, sec);
+}
+
+static void
+size_seg (abfd, sec, xxx)
bfd *abfd;
asection *sec;
PTR xxx ATTRIBUTE_UNUSED;
@@ -589,23 +621,23 @@ relax_and_size_seg (abfd, sec, xxx)
subseg_change (sec, 0);
- flags = bfd_get_section_flags (abfd, sec);
-
seginfo = seg_info (sec);
if (seginfo && seginfo->frchainP)
{
- relax_segment (seginfo->frchainP->frch_root, sec);
for (fragp = seginfo->frchainP->frch_root; fragp; fragp = fragp->fr_next)
cvt_frag_to_fill (sec, fragp);
for (fragp = seginfo->frchainP->frch_root;
fragp->fr_next;
fragp = fragp->fr_next)
- /* walk to last elt */;
+ /* Walk to last elt. */
+ ;
size = fragp->fr_address + fragp->fr_fix;
}
else
size = 0;
+ flags = bfd_get_section_flags (abfd, sec);
+
if (size > 0 && ! seginfo->bss)
flags |= SEC_HAS_CONTENTS;
@@ -697,7 +729,8 @@ adjust_reloc_syms (abfd, sec, xxx)
for (fixp = seginfo->fix_root; fixp; fixp = fixp->fx_next)
if (fixp->fx_done)
- /* ignore it */;
+ /* Ignore it. */
+ ;
else if (fixp->fx_addsy)
{
symbolS *sym;
@@ -716,7 +749,7 @@ adjust_reloc_syms (abfd, sec, xxx)
table. */
if (sym != NULL)
resolve_symbol_value (sym, 1);
-
+
if (fixp->fx_subsy != NULL)
resolve_symbol_value (fixp->fx_subsy, 1);
@@ -740,7 +773,7 @@ adjust_reloc_syms (abfd, sec, xxx)
if (symsec == NULL)
abort ();
-
+
if (bfd_is_abs_section (symsec))
{
/* The fixup_segment routine will not use this symbol in a
@@ -856,7 +889,7 @@ adjust_reloc_syms (abfd, sec, xxx)
We refetch the segment when calling section_symbol, rather
than using symsec, because S_GET_VALUE may wind up changing
- the section when it calls resolve_symbol_value. */
+ the section when it calls resolve_symbol_value. */
fixp->fx_offset += S_GET_VALUE (sym);
fixp->fx_addsy = section_symbol (S_GET_SEGMENT (sym));
symbol_mark_used_in_reloc (fixp->fx_addsy);
@@ -868,7 +901,7 @@ adjust_reloc_syms (abfd, sec, xxx)
done:
;
}
-#if 1/*def RELOC_REQUIRES_SYMBOL*/
+#if 1 /* def RELOC_REQUIRES_SYMBOL */
else
{
/* There was no symbol required by this relocation. However,
@@ -877,7 +910,9 @@ adjust_reloc_syms (abfd, sec, xxx)
a local symbol in the absolute section. */
fixp->fx_addsy = section_symbol (absolute_section);
-/* fixp->fx_addsy->sy_used_in_reloc = 1; */
+#if 0
+ fixp->fx_addsy->sy_used_in_reloc = 1;
+#endif
}
#endif
@@ -891,7 +926,7 @@ write_relocs (abfd, sec, xxx)
PTR xxx ATTRIBUTE_UNUSED;
{
segment_info_type *seginfo = seg_info (sec);
- int i;
+ unsigned int i;
unsigned int n;
arelent **relocs;
fixS *fixp;
@@ -911,7 +946,7 @@ write_relocs (abfd, sec, xxx)
#ifndef RELOC_EXPANSION_POSSIBLE
/* Set up reloc information as well. */
relocs = (arelent **) xmalloc (n * sizeof (arelent *));
- memset ((char*)relocs, 0, n * sizeof (arelent*));
+ memset ((char *) relocs, 0, n * sizeof (arelent *));
i = 0;
for (fixp = seginfo->fix_root; fixp != (fixS *) NULL; fixp = fixp->fx_next)
@@ -1000,7 +1035,7 @@ write_relocs (abfd, sec, xxx)
}
/* If this is an undefined symbol which was equated to another
- symbol, then use generate the reloc against the latter symbol
+ symbol, then generate the reloc against the latter symbol
rather than the former. */
sym = fixp->fx_addsy;
while (symbol_equated_p (sym)
@@ -1012,8 +1047,8 @@ write_relocs (abfd, sec, xxx)
for (j = 0; reloc[j]; j++)
{
- relocs[i++] = reloc[j];
- assert(i <= n);
+ relocs[i++] = reloc[j];
+ assert (i <= n);
}
data = fixp->fx_frag->fr_literal + fixp->fx_where;
if (fixp->fx_where + fixp->fx_size
@@ -1021,12 +1056,12 @@ write_relocs (abfd, sec, xxx)
as_bad_where (fixp->fx_file, fixp->fx_line,
_("internal error: fixup not contained within frag"));
for (j = 0; reloc[j]; j++)
- {
+ {
s = bfd_install_relocation (stdoutput, reloc[j],
fixp->fx_frag->fr_literal,
fixp->fx_frag->fr_address,
sec, &err);
- switch (s)
+ switch (s)
{
case bfd_reloc_ok:
break;
@@ -1038,7 +1073,7 @@ write_relocs (abfd, sec, xxx)
as_fatal (_("%s:%u: bad return from bfd_install_relocation"),
fixp->fx_file, fixp->fx_line);
}
- }
+ }
}
n = i;
#endif
@@ -1101,7 +1136,7 @@ write_contents (abfd, sec, xxx)
/* Write out the frags. */
if (seginfo == NULL
- || ! (bfd_get_section_flags (abfd, sec) & SEC_HAS_CONTENTS))
+ || !(bfd_get_section_flags (abfd, sec) & SEC_HAS_CONTENTS))
return;
for (f = seginfo->frchainP->frch_root;
@@ -1134,9 +1169,9 @@ write_contents (abfd, sec, xxx)
if (fill_size && count)
{
char buf[256];
- if (fill_size > sizeof(buf))
+ if (fill_size > sizeof (buf))
{
- /* Do it the old way. Can this ever happen? */
+ /* Do it the old way. Can this ever happen? */
while (count--)
{
x = bfd_set_section_contents (stdoutput, sec,
@@ -1146,7 +1181,8 @@ write_contents (abfd, sec, xxx)
if (x == false)
{
bfd_perror (stdoutput->filename);
- as_perror (_("FATAL: Can't write %s"), stdoutput->filename);
+ as_perror (_("FATAL: Can't write %s"),
+ stdoutput->filename);
exit (EXIT_FAILURE);
}
offset += fill_size;
@@ -1166,16 +1202,16 @@ write_contents (abfd, sec, xxx)
else
{
char *bufp;
- n_per_buf = sizeof(buf)/fill_size;
+ n_per_buf = sizeof (buf) / fill_size;
for (i = n_per_buf, bufp = buf; i; i--, bufp += fill_size)
- memcpy(bufp, fill_literal, fill_size);
+ memcpy (bufp, fill_literal, fill_size);
}
for (; count > 0; count -= n_per_buf)
{
n_per_buf = n_per_buf > count ? count : n_per_buf;
- x = bfd_set_section_contents (stdoutput, sec,
- buf, (file_ptr) offset,
- (bfd_size_type) n_per_buf * fill_size);
+ x = bfd_set_section_contents
+ (stdoutput, sec, buf, (file_ptr) offset,
+ (bfd_size_type) n_per_buf * fill_size);
if (x != true)
as_fatal (_("Cannot write to output file."));
offset += n_per_buf * fill_size;
@@ -1214,7 +1250,7 @@ merge_data_into_text ()
data_fix_root = NULL;
#endif
}
-#endif /* BFD_ASSEMBLER || (! BFD && ! OBJ_AOUT) */
+#endif /* BFD_ASSEMBLER || (! BFD && ! OBJ_AOUT) */
#if !defined (BFD_ASSEMBLER) && !defined (BFD)
static void
@@ -1225,30 +1261,27 @@ relax_and_size_all_segments ()
relax_segment (text_frag_root, SEG_TEXT);
relax_segment (data_frag_root, SEG_DATA);
relax_segment (bss_frag_root, SEG_BSS);
- /*
- * Now the addresses of frags are correct within the segment.
- */
+ /* Now the addresses of frags are correct within the segment. */
know (text_last_frag->fr_type == rs_fill && text_last_frag->fr_offset == 0);
H_SET_TEXT_SIZE (&headers, text_last_frag->fr_address);
text_last_frag->fr_address = H_GET_TEXT_SIZE (&headers);
- /*
- * Join the 2 segments into 1 huge segment.
- * To do this, re-compute every rn_address in the SEG_DATA frags.
- * Then join the data frags after the text frags.
- *
- * Determine a_data [length of data segment].
- */
+ /* Join the 2 segments into 1 huge segment.
+ To do this, re-compute every rn_address in the SEG_DATA frags.
+ Then join the data frags after the text frags.
+
+ Determine a_data [length of data segment]. */
if (data_frag_root)
{
register relax_addressT slide;
- know ((text_last_frag->fr_type == rs_fill) && (text_last_frag->fr_offset == 0));
+ know ((text_last_frag->fr_type == rs_fill)
+ && (text_last_frag->fr_offset == 0));
H_SET_DATA_SIZE (&headers, data_last_frag->fr_address);
data_last_frag->fr_address = H_GET_DATA_SIZE (&headers);
- slide = H_GET_TEXT_SIZE (&headers); /* & in file of the data segment. */
+ slide = H_GET_TEXT_SIZE (&headers); /* & in file of the data segment. */
#ifdef OBJ_BOUT
#define RoundUp(N,S) (((N)+(S)-1)&-(S))
/* For b.out: If the data section has a strict alignment
@@ -1260,9 +1293,7 @@ relax_and_size_all_segments ()
#endif
for (fragP = data_frag_root; fragP; fragP = fragP->fr_next)
- {
- fragP->fr_address += slide;
- } /* for each data frag */
+ fragP->fr_address += slide;
know (text_last_frag != 0);
text_last_frag->fr_next = data_frag_root;
@@ -1283,21 +1314,19 @@ relax_and_size_all_segments ()
bss_vma = RoundUp (bss_vma, 1 << section_alignment[SEG_BSS]);
bss_address_frag.fr_address = bss_vma;
}
-#else /* ! OBJ_BOUT */
+#else /* ! OBJ_BOUT */
bss_address_frag.fr_address = (H_GET_TEXT_SIZE (&headers) +
H_GET_DATA_SIZE (&headers));
-#endif /* ! OBJ_BOUT */
+#endif /* ! OBJ_BOUT */
- /* Slide all the frags */
+ /* Slide all the frags. */
if (bss_frag_root)
{
relax_addressT slide = bss_address_frag.fr_address;
for (fragP = bss_frag_root; fragP; fragP = fragP->fr_next)
- {
- fragP->fr_address += slide;
- } /* for each bss frag */
+ fragP->fr_address += slide;
}
if (bss_last_frag)
@@ -1306,7 +1335,7 @@ relax_and_size_all_segments ()
else
H_SET_BSS_SIZE (&headers, 0);
}
-#endif /* ! BFD_ASSEMBLER && ! BFD */
+#endif /* ! BFD_ASSEMBLER && ! BFD */
#if defined (BFD_ASSEMBLER) || !defined (BFD)
@@ -1348,6 +1377,20 @@ set_symtab ()
}
#endif
+#if defined (BFD_ASSEMBLER) && defined (OBJ_COFF) && defined (TE_GO32)
+static void
+set_segment_vma (abfd, sec, xxx)
+ bfd *abfd;
+ asection *sec;
+ PTR xxx ATTRIBUTE_UNUSED;
+{
+ static bfd_vma addr = 0;
+
+ bfd_set_section_vma (abfd, sec, addr);
+ addr += bfd_section_size (abfd, sec);
+}
+#endif /* BFD_ASSEMBLER && OBJ_COFF && !TE_PE */
+
/* Finish the subsegments. After every sub-segment, we fake an
".align ...". This conforms to BSD4.2 brane-damage. We then fake
".fill 0" because that is the kind of frag that requires least
@@ -1369,21 +1412,31 @@ subsegs_finish ()
for (frchainP = frchain_root; frchainP; frchainP = frchainP->frch_next)
{
+ int alignment;
+
subseg_set (frchainP->frch_seg, frchainP->frch_subseg);
/* This now gets called even if we had errors. In that case,
any alignment is meaningless, and, moreover, will look weird
if we are generating a listing. */
- frag_align (had_errors () ? 0 : SUB_SEGMENT_ALIGN (now_seg),
- subseg_text_p (now_seg) ? NOP_OPCODE : 0,
- 0);
+ alignment = had_errors () ? 0 : SUB_SEGMENT_ALIGN (now_seg);
+
+ /* The last subsegment gets an aligment corresponding to the
+ alignment of the section. This allows proper nop-filling
+ at the end of code-bearing sections. */
+ if (!frchainP->frch_next || frchainP->frch_next->frch_seg != now_seg)
+ alignment = get_recorded_alignment (now_seg);
+
+ if (subseg_text_p (now_seg))
+ frag_align_code (alignment, 0);
+ else
+ frag_align (alignment, 0, 0);
/* frag_align will have left a new frag.
Use this last frag for an empty ".fill".
For this segment ...
Create a last frag. Do not leave a "being filled in frag". */
-
frag_wane (frag_now);
frag_now->fr_fix = 0;
know (frag_now->fr_next == NULL);
@@ -1396,7 +1449,7 @@ void
write_object_file ()
{
#if ! defined (BFD_ASSEMBLER) || ! defined (WORKING_DOT_WORD)
- fragS *fragP; /* Track along all frags. */
+ fragS *fragP; /* Track along all frags. */
#endif
/* Do we really want to write it? */
@@ -1425,9 +1478,9 @@ write_object_file ()
#ifdef OBJ_VMS
/* Under VMS we try to be compatible with VAX-11 "C". Thus, we call
a routine to check for the definition of the procedure "_main",
- and if so -- fix it up so that it can be program entry point. */
+ and if so -- fix it up so that it can be program entry point. */
vms_check_for_main ();
-#endif /* OBJ_VMS */
+#endif /* OBJ_VMS */
/* From now on, we don't care about sub-segments. Build one frag chain
for each segment. Linked thru fr_next. */
@@ -1475,33 +1528,39 @@ write_object_file ()
#endif
#ifdef BFD_ASSEMBLER
- bfd_map_over_sections (stdoutput, relax_and_size_seg, (char *) 0);
+ bfd_map_over_sections (stdoutput, relax_seg, (char *) 1);
+ bfd_map_over_sections (stdoutput, relax_seg, (char *) 0);
+ bfd_map_over_sections (stdoutput, size_seg, (char *) 0);
#else
relax_and_size_all_segments ();
-#endif /* BFD_ASSEMBLER */
+#endif /* BFD_ASSEMBLER */
+
+#if defined (BFD_ASSEMBLER) && defined (OBJ_COFF) && defined (TE_GO32)
+ /* Now that the segments have their final sizes, run through the
+ sections and set their vma and lma. !BFD gas sets them, and BFD gas
+ should too. Currently, only DJGPP uses this code, but other
+ COFF targets may need to execute this too. */
+ bfd_map_over_sections (stdoutput, set_segment_vma, (char *) 0);
+#endif
#ifndef BFD_ASSEMBLER
- /*
- *
- * Crawl the symbol chain.
- *
- * For each symbol whose value depends on a frag, take the address of
- * that frag and subsume it into the value of the symbol.
- * After this, there is just one way to lookup a symbol value.
- * Values are left in their final state for object file emission.
- * We adjust the values of 'L' local symbols, even if we do
- * not intend to emit them to the object file, because their values
- * are needed for fix-ups.
- *
- * Unless we saw a -L flag, remove all symbols that begin with 'L'
- * from the symbol chain. (They are still pointed to by the fixes.)
- *
- * Count the remaining symbols.
- * Assign a symbol number to each symbol.
- * Count the number of string-table chars we will emit.
- * Put this info into the headers as appropriate.
- *
- */
+ /* Crawl the symbol chain.
+
+ For each symbol whose value depends on a frag, take the address of
+ that frag and subsume it into the value of the symbol.
+ After this, there is just one way to lookup a symbol value.
+ Values are left in their final state for object file emission.
+ We adjust the values of 'L' local symbols, even if we do
+ not intend to emit them to the object file, because their values
+ are needed for fix-ups.
+
+ Unless we saw a -L flag, remove all symbols that begin with 'L'
+ from the symbol chain. (They are still pointed to by the fixes.)
+
+ Count the remaining symbols.
+ Assign a symbol number to each symbol.
+ Count the number of string-table chars we will emit.
+ Put this info into the headers as appropriate. */
know (zero_address_frag.fr_address == 0);
string_byte_count = sizeof (string_byte_count);
@@ -1512,12 +1571,10 @@ write_object_file ()
H_SET_STRING_SIZE (&headers, string_byte_count);
- /*
- * Addresses of frags now reflect addresses we use in the object file.
- * Symbol values are correct.
- * Scan the frags, converting any ".org"s and ".align"s to ".fill"s.
- * Also converting any machine-dependent frags using md_convert_frag();
- */
+ /* Addresses of frags now reflect addresses we use in the object file.
+ Symbol values are correct.
+ Scan the frags, converting any ".org"s and ".align"s to ".fill"s.
+ Also converting any machine-dependent frags using md_convert_frag(); */
subseg_change (SEG_TEXT, 0);
for (fragP = text_frag_root; fragP; fragP = fragP->fr_next)
@@ -1542,7 +1599,7 @@ write_object_file ()
abort ();
#endif
}
-#endif /* ! BFD_ASSEMBLER */
+#endif /* ! BFD_ASSEMBLER */
#ifndef WORKING_DOT_WORD
{
@@ -1563,8 +1620,8 @@ write_object_file ()
#ifdef BFD_ASSEMBLER
#ifdef TC_CONS_FIX_NEW
TC_CONS_FIX_NEW (lie->frag,
- lie->word_goes_here - lie->frag->fr_literal,
- 2, &exp);
+ lie->word_goes_here - lie->frag->fr_literal,
+ 2, &exp);
#else
fix_new_exp (lie->frag,
lie->word_goes_here - lie->frag->fr_literal,
@@ -1584,9 +1641,9 @@ write_object_file ()
fix_new_exp (lie->frag,
lie->word_goes_here - lie->frag->fr_literal,
2, &exp, 0, 0);
-#endif /* TC_NS32K */
-#endif /* TC_SPARC|TC_A29K|NEED_FX_R_TYPE */
-#endif /* BFD_ASSEMBLER */
+#endif /* TC_NS32K */
+#endif /* TC_SPARC|TC_A29K|NEED_FX_R_TYPE */
+#endif /* BFD_ASSEMBLER */
*prevP = lie->next_broken_word;
}
else
@@ -1605,61 +1662,71 @@ write_object_file ()
/* Find out how many broken_words go here. */
n = 0;
- for (untruth = lie; untruth && untruth->dispfrag == fragP; untruth = untruth->next_broken_word)
+ for (untruth = lie;
+ untruth && untruth->dispfrag == fragP;
+ untruth = untruth->next_broken_word)
if (untruth->added == 1)
n++;
table_ptr = lie->dispfrag->fr_opcode;
- table_addr = lie->dispfrag->fr_address + (table_ptr - lie->dispfrag->fr_literal);
+ table_addr = (lie->dispfrag->fr_address
+ + (table_ptr - lie->dispfrag->fr_literal));
/* Create the jump around the long jumps. This is a short
jump from table_ptr+0 to table_ptr+n*long_jump_size. */
from_addr = table_addr;
to_addr = table_addr + md_short_jump_size + n * md_long_jump_size;
- md_create_short_jump (table_ptr, from_addr, to_addr, lie->dispfrag, lie->add);
+ md_create_short_jump (table_ptr, from_addr, to_addr, lie->dispfrag,
+ lie->add);
table_ptr += md_short_jump_size;
table_addr += md_short_jump_size;
- for (m = 0; lie && lie->dispfrag == fragP; m++, lie = lie->next_broken_word)
+ for (m = 0;
+ lie && lie->dispfrag == fragP;
+ m++, lie = lie->next_broken_word)
{
if (lie->added == 2)
continue;
- /* Patch the jump table */
- /* This is the offset from ??? to table_ptr+0 */
+ /* Patch the jump table. */
+ /* This is the offset from ??? to table_ptr+0. */
to_addr = table_addr - S_GET_VALUE (lie->sub);
#ifdef BFD_ASSEMBLER
to_addr -= symbol_get_frag (lie->sub)->fr_address;
#endif
+#ifdef TC_CHECK_ADJUSTED_BROKEN_DOT_WORD
+ TC_CHECK_ADJUSTED_BROKEN_DOT_WORD (to_addr, lie);
+#endif
md_number_to_chars (lie->word_goes_here, to_addr, 2);
- for (untruth = lie->next_broken_word; untruth && untruth->dispfrag == fragP; untruth = untruth->next_broken_word)
+ for (untruth = lie->next_broken_word;
+ untruth && untruth->dispfrag == fragP;
+ untruth = untruth->next_broken_word)
{
if (untruth->use_jump == lie)
md_number_to_chars (untruth->word_goes_here, to_addr, 2);
}
- /* Install the long jump */
- /* this is a long jump from table_ptr+0 to the final target */
+ /* Install the long jump. */
+ /* This is a long jump from table_ptr+0 to the final target. */
from_addr = table_addr;
to_addr = S_GET_VALUE (lie->add) + lie->addnum;
#ifdef BFD_ASSEMBLER
to_addr += symbol_get_frag (lie->add)->fr_address;
#endif
- md_create_long_jump (table_ptr, from_addr, to_addr, lie->dispfrag, lie->add);
+ md_create_long_jump (table_ptr, from_addr, to_addr, lie->dispfrag,
+ lie->add);
table_ptr += md_long_jump_size;
table_addr += md_long_jump_size;
}
}
}
-#endif /* not WORKING_DOT_WORD */
+#endif /* not WORKING_DOT_WORD */
#ifndef BFD_ASSEMBLER
#ifndef OBJ_VMS
- { /* not vms */
+ { /* not vms */
char *the_object_file;
long object_file_size;
- /*
- * Scan every FixS performing fixups. We had to wait until now to do
- * this because md_convert_frag() may have made some fixSs.
- */
+ /* Scan every FixS performing fixups. We had to wait until now to
+ do this because md_convert_frag() may have made some fixSs. */
int trsize, drsize;
subseg_change (SEG_TEXT, 0);
@@ -1668,11 +1735,11 @@ write_object_file ()
drsize = md_reloc_size * fixup_segment (data_fix_root, SEG_DATA);
H_SET_RELOCATION_SIZE (&headers, trsize, drsize);
- /* FIXME move this stuff into the pre-write-hook */
+ /* FIXME: Move this stuff into the pre-write-hook. */
H_SET_MAGIC_NUMBER (&headers, magic_number_for_object_file);
H_SET_ENTRY_POINT (&headers, 0);
- obj_pre_write_hook (&headers); /* extra coff stuff */
+ obj_pre_write_hook (&headers); /* Extra coff stuff. */
object_file_size = H_GET_FILE_SIZE (&headers);
next_object_file_charP = the_object_file = xmalloc (object_file_size);
@@ -1681,11 +1748,10 @@ write_object_file ()
obj_header_append (&next_object_file_charP, &headers);
- know ((next_object_file_charP - the_object_file) == H_GET_HEADER_SIZE (&headers));
+ know ((next_object_file_charP - the_object_file)
+ == H_GET_HEADER_SIZE (&headers));
- /*
- * Emit code.
- */
+ /* Emit code. */
for (fragP = text_frag_root; fragP; fragP = fragP->fr_next)
{
register long count;
@@ -1694,78 +1760,91 @@ write_object_file ()
PROGRESS (1);
know (fragP->fr_type == rs_fill);
- append (&next_object_file_charP, fragP->fr_literal, (unsigned long) fragP->fr_fix);
+ append (&next_object_file_charP, fragP->fr_literal,
+ (unsigned long) fragP->fr_fix);
fill_literal = fragP->fr_literal + fragP->fr_fix;
fill_size = fragP->fr_var;
know (fragP->fr_offset >= 0);
for (count = fragP->fr_offset; count; count--)
- {
- append (&next_object_file_charP, fill_literal, (unsigned long) fill_size);
- } /* for each */
-
- } /* for each code frag. */
-
- know ((next_object_file_charP - the_object_file) == (H_GET_HEADER_SIZE (&headers) + H_GET_TEXT_SIZE (&headers) + H_GET_DATA_SIZE (&headers)));
+ append (&next_object_file_charP, fill_literal,
+ (unsigned long) fill_size);
+ }
- /*
- * Emit relocations.
- */
- obj_emit_relocations (&next_object_file_charP, text_fix_root, (relax_addressT) 0);
- know ((next_object_file_charP - the_object_file) == (H_GET_HEADER_SIZE (&headers) + H_GET_TEXT_SIZE (&headers) + H_GET_DATA_SIZE (&headers) + H_GET_TEXT_RELOCATION_SIZE (&headers)));
+ know ((next_object_file_charP - the_object_file)
+ == (H_GET_HEADER_SIZE (&headers)
+ + H_GET_TEXT_SIZE (&headers)
+ + H_GET_DATA_SIZE (&headers)));
+
+ /* Emit relocations. */
+ obj_emit_relocations (&next_object_file_charP, text_fix_root,
+ (relax_addressT) 0);
+ know ((next_object_file_charP - the_object_file)
+ == (H_GET_HEADER_SIZE (&headers)
+ + H_GET_TEXT_SIZE (&headers)
+ + H_GET_DATA_SIZE (&headers)
+ + H_GET_TEXT_RELOCATION_SIZE (&headers)));
#ifdef TC_I960
/* Make addresses in data relocation directives relative to beginning of
- * first data fragment, not end of last text fragment: alignment of the
- * start of the data segment may place a gap between the segments.
- */
- obj_emit_relocations (&next_object_file_charP, data_fix_root, data0_frchainP->frch_root->fr_address);
-#else /* TC_I960 */
- obj_emit_relocations (&next_object_file_charP, data_fix_root, text_last_frag->fr_address);
-#endif /* TC_I960 */
-
- know ((next_object_file_charP - the_object_file) == (H_GET_HEADER_SIZE (&headers) + H_GET_TEXT_SIZE (&headers) + H_GET_DATA_SIZE (&headers) + H_GET_TEXT_RELOCATION_SIZE (&headers) + H_GET_DATA_RELOCATION_SIZE (&headers)));
-
- /*
- * Emit line number entries.
- */
+ first data fragment, not end of last text fragment: alignment of the
+ start of the data segment may place a gap between the segments. */
+ obj_emit_relocations (&next_object_file_charP, data_fix_root,
+ data0_frchainP->frch_root->fr_address);
+#else /* TC_I960 */
+ obj_emit_relocations (&next_object_file_charP, data_fix_root,
+ text_last_frag->fr_address);
+#endif /* TC_I960 */
+
+ know ((next_object_file_charP - the_object_file)
+ == (H_GET_HEADER_SIZE (&headers)
+ + H_GET_TEXT_SIZE (&headers)
+ + H_GET_DATA_SIZE (&headers)
+ + H_GET_TEXT_RELOCATION_SIZE (&headers)
+ + H_GET_DATA_RELOCATION_SIZE (&headers)));
+
+ /* Emit line number entries. */
OBJ_EMIT_LINENO (&next_object_file_charP, lineno_rootP, the_object_file);
- know ((next_object_file_charP - the_object_file) == (H_GET_HEADER_SIZE (&headers) + H_GET_TEXT_SIZE (&headers) + H_GET_DATA_SIZE (&headers) + H_GET_TEXT_RELOCATION_SIZE (&headers) + H_GET_DATA_RELOCATION_SIZE (&headers) + H_GET_LINENO_SIZE (&headers)));
-
- /*
- * Emit symbols.
- */
+ know ((next_object_file_charP - the_object_file)
+ == (H_GET_HEADER_SIZE (&headers)
+ + H_GET_TEXT_SIZE (&headers)
+ + H_GET_DATA_SIZE (&headers)
+ + H_GET_TEXT_RELOCATION_SIZE (&headers)
+ + H_GET_DATA_RELOCATION_SIZE (&headers)
+ + H_GET_LINENO_SIZE (&headers)));
+
+ /* Emit symbols. */
obj_emit_symbols (&next_object_file_charP, symbol_rootP);
- know ((next_object_file_charP - the_object_file) == (H_GET_HEADER_SIZE (&headers) + H_GET_TEXT_SIZE (&headers) + H_GET_DATA_SIZE (&headers) + H_GET_TEXT_RELOCATION_SIZE (&headers) + H_GET_DATA_RELOCATION_SIZE (&headers) + H_GET_LINENO_SIZE (&headers) + H_GET_SYMBOL_TABLE_SIZE (&headers)));
-
- /*
- * Emit strings.
- */
-
+ know ((next_object_file_charP - the_object_file)
+ == (H_GET_HEADER_SIZE (&headers)
+ + H_GET_TEXT_SIZE (&headers)
+ + H_GET_DATA_SIZE (&headers)
+ + H_GET_TEXT_RELOCATION_SIZE (&headers)
+ + H_GET_DATA_RELOCATION_SIZE (&headers)
+ + H_GET_LINENO_SIZE (&headers)
+ + H_GET_SYMBOL_TABLE_SIZE (&headers)));
+
+ /* Emit strings. */
if (string_byte_count > 0)
- {
- obj_emit_strings (&next_object_file_charP);
- } /* only if we have a string table */
+ obj_emit_strings (&next_object_file_charP);
#ifdef BFD_HEADERS
bfd_seek (stdoutput, 0, 0);
bfd_write (the_object_file, 1, object_file_size, stdoutput);
#else
- /* Write the data to the file */
+ /* Write the data to the file. */
output_file_append (the_object_file, object_file_size, out_file_name);
free (the_object_file);
#endif
- } /* non vms output */
-#else /* OBJ_VMS */
- /*
- * Now do the VMS-dependent part of writing the object file
- */
+ }
+#else /* OBJ_VMS */
+ /* Now do the VMS-dependent part of writing the object file. */
vms_write_object_file (H_GET_TEXT_SIZE (&headers),
H_GET_DATA_SIZE (&headers),
H_GET_BSS_SIZE (&headers),
text_frag_root, data_frag_root);
-#endif /* OBJ_VMS */
-#else /* BFD_ASSEMBLER */
+#endif /* OBJ_VMS */
+#else /* BFD_ASSEMBLER */
/* Resolve symbol values. This needs to be done before processing
the relocations. */
@@ -1787,7 +1866,7 @@ write_object_file ()
obj_frob_file_before_adjust ();
#endif
- bfd_map_over_sections (stdoutput, adjust_reloc_syms, (char *)0);
+ bfd_map_over_sections (stdoutput, adjust_reloc_syms, (char *) 0);
/* Set up symbol table, and write it out. */
if (symbol_rootP)
@@ -1811,7 +1890,8 @@ write_object_file ()
name = S_GET_NAME (symp);
if (name)
{
- const char *name2 = decode_local_label_name ((char *)S_GET_NAME (symp));
+ const char *name2 =
+ decode_local_label_name ((char *) S_GET_NAME (symp));
/* They only differ if `name' is a fb or dollar local
label name. */
if (name2 != name && ! S_IS_DEFINED (symp))
@@ -1868,10 +1948,10 @@ write_object_file ()
&& ! symbol_used_in_reloc_p (symp)))
{
symbol_remove (symp, &symbol_rootP, &symbol_lastP);
+
/* After symbol_remove, symbol_next(symp) still returns
the one that came after it in the chain. So we don't
need to do any extra cleanup work here. */
-
continue;
}
@@ -1925,22 +2005,9 @@ write_object_file ()
#endif
bfd_map_over_sections (stdoutput, write_contents, (char *) 0);
-#endif /* BFD_ASSEMBLER */
+#endif /* BFD_ASSEMBLER */
}
-#endif /* ! BFD */
-
-/*
- * relax_segment()
- *
- * Now we have a segment, not a crowd of sub-segments, we can make fr_address
- * values.
- *
- * Relax the frags.
- *
- * After this, all frags in this segment have addresses that are correct
- * within the segment. Since segments live in different file addresses,
- * these frag addresses may not be the same as final object-file addresses.
- */
+#endif /* ! BFD */
#ifdef TC_GENERIC_RELAX_TABLE
@@ -1994,7 +2061,7 @@ relax_frag (fragP, stretch)
#endif
know (!(S_GET_SEGMENT (symbolP) == absolute_section)
|| symbolP->sy_frag == &zero_address_frag);
- target += S_GET_VALUE (symbolP) + symbol_get_frag (symbolP)->fr_address;
+ target += S_GET_VALUE (symbolP) + symbol_get_frag (symbolP)->fr_address;
/* If frag has yet to be reached on this pass,
assume it will move by STRETCH just as we did.
@@ -2014,26 +2081,28 @@ relax_frag (fragP, stretch)
aim = target - address - fragP->fr_fix;
#ifdef TC_PCREL_ADJUST
- /* Currently only the ns32k family needs this */
- aim += TC_PCREL_ADJUST(fragP);
-/*#else*/
+ /* Currently only the ns32k family needs this. */
+ aim += TC_PCREL_ADJUST (fragP);
+/* #else */
/* This machine doesn't want to use pcrel_adjust.
In that case, pcrel_adjust should be zero. */
-/* assert (fragP->fr_targ.ns32k.pcrel_adjust == 0);*/
+#if 0
+ assert (fragP->fr_targ.ns32k.pcrel_adjust == 0);
+#endif
#endif
-#ifdef md_prepare_relax_scan /* formerly called M68K_AIM_KLUDGE */
+#ifdef md_prepare_relax_scan /* formerly called M68K_AIM_KLUDGE */
md_prepare_relax_scan (fragP, address, aim, this_state, this_type);
#endif
if (aim < 0)
{
- /* Look backwards. */
+ /* 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. */
+ /* Grow to next state. */
this_state = next_state;
this_type = table + this_state;
next_state = this_type->rlx_more;
@@ -2041,13 +2110,13 @@ relax_frag (fragP, stretch)
}
else
{
- /* Look forwards. */
+ /* 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. */
+ /* Grow to next state. */
this_state = next_state;
this_type = table + this_state;
next_state = this_type->rlx_more;
@@ -2060,14 +2129,14 @@ relax_frag (fragP, stretch)
return growth;
}
-#endif /* defined (TC_GENERIC_RELAX_TABLE) */
+#endif /* defined (TC_GENERIC_RELAX_TABLE) */
/* Relax_align. Advance location counter to next address that has 'alignment'
lowest order bits all 0s, return size of adjustment made. */
static relax_addressT
relax_align (address, alignment)
- register relax_addressT address; /* Address now. */
- register int alignment; /* Alignment (binary). */
+ register relax_addressT address; /* Address now. */
+ register int alignment; /* Alignment (binary). */
{
relax_addressT mask;
relax_addressT new_address;
@@ -2083,6 +2152,16 @@ relax_align (address, alignment)
return (new_address - address);
}
+/* Now we have a segment, not a crowd of sub-segments, we can make
+ fr_address values.
+
+ Relax the frags.
+
+ After this, all frags in this segment have addresses that are correct
+ within the segment. Since segments live in different file addresses,
+ these frag addresses may not be the same as final object-file
+ addresses. */
+
void
relax_segment (segment_frag_root, segment)
struct frag *segment_frag_root;
@@ -2093,7 +2172,7 @@ relax_segment (segment_frag_root, segment)
#if !defined (MANY_SEGMENTS) && !defined (BFD_ASSEMBLER)
know (segment == SEG_DATA || segment == SEG_TEXT || segment == SEG_BSS);
#endif
- /* In case md_estimate_size_before_relax() wants to make fixSs. */
+ /* In case md_estimate_size_before_relax() wants to make fixSs. */
subseg_change (segment, 0);
/* For each frag in segment: count and store (a 1st guess of)
@@ -2112,6 +2191,7 @@ relax_segment (segment_frag_root, segment)
case rs_align:
case rs_align_code:
+ case rs_align_test:
{
addressT offset = relax_align (address, (int) fragP->fr_offset);
@@ -2139,13 +2219,13 @@ relax_segment (segment_frag_root, segment)
break;
#ifndef WORKING_DOT_WORD
- /* Broken words don't concern us yet */
+ /* Broken words don't concern us yet. */
case rs_broken_word:
break;
#endif
case rs_leb128:
- /* Initial guess is always 1; doing otherwise can result in
+ /* Initial guess is always 1; doing otherwise can result in
stable solutions that are larger than the minimum. */
address += fragP->fr_offset = 1;
break;
@@ -2154,19 +2234,22 @@ relax_segment (segment_frag_root, segment)
address += eh_frame_estimate_size_before_relax (fragP);
break;
+ case rs_dwarf2dbg:
+ address += dwarf2dbg_estimate_size_before_relax (fragP);
+ break;
+
default:
BAD_CASE (fragP->fr_type);
break;
- } /* switch(fr_type) */
- } /* for each frag in the segment */
+ }
+ }
/* Do relax(). */
{
- long stretch; /* May be any size, 0 or negative. */
- /* Cumulative number of addresses we have */
- /* relaxed this pass. */
- /* We may have relaxed more than one address. */
- long stretched; /* Have we stretched on this pass? */
+ long stretch; /* May be any size, 0 or negative. */
+ /* Cumulative number of addresses we have relaxed this pass.
+ We may have relaxed more than one address. */
+ long stretched; /* Have we stretched on this pass? */
/* This is 'cuz stretch may be zero, when, in fact some piece of code
grew, and another shrank. If a branch instruction doesn't fit anymore,
we could be scrod. */
@@ -2174,6 +2257,7 @@ relax_segment (segment_frag_root, segment)
do
{
stretch = stretched = 0;
+
for (fragP = segment_frag_root; fragP; fragP = fragP->fr_next)
{
long growth = 0;
@@ -2188,7 +2272,7 @@ relax_segment (segment_frag_root, segment)
switch (fragP->fr_type)
{
- case rs_fill: /* .fill never relaxes. */
+ case rs_fill: /* .fill never relaxes. */
growth = 0;
break;
@@ -2253,10 +2337,11 @@ relax_segment (segment_frag_root, segment)
}
break;
- } /* case rs_broken_word */
+ } /* case rs_broken_word */
#endif
case rs_align:
case rs_align_code:
+ case rs_align_test:
{
addressT oldoff, newoff;
@@ -2295,7 +2380,7 @@ relax_segment (segment_frag_root, segment)
#endif
target += (S_GET_VALUE (symbolP)
+ symbol_get_frag (symbolP)->fr_address);
- } /* if we have a symbol */
+ } /* if we have a symbol */
know (fragP->fr_next);
after = fragP->fr_next->fr_address;
@@ -2304,7 +2389,7 @@ relax_segment (segment_frag_root, segment)
{
/* Growth may be negative, but variable part of frag
cannot have fewer than 0 chars. That is, we can't
- .org backwards. */
+ .org backwards. */
as_bad_where (fragP->fr_file, fragP->fr_line,
_("attempt to .org backwards ignored"));
@@ -2317,7 +2402,8 @@ relax_segment (segment_frag_root, segment)
growth = stretch;
}
- growth -= stretch; /* This is an absolute growth factor */
+ /* This is an absolute growth factor */
+ growth -= stretch;
break;
}
@@ -2349,7 +2435,7 @@ relax_segment (segment_frag_root, segment)
/* The default way to relax a frag is to look through
TC_GENERIC_RELAX_TABLE. */
growth = relax_frag (fragP, stretch);
-#endif /* TC_GENERIC_RELAX_TABLE */
+#endif /* TC_GENERIC_RELAX_TABLE */
#endif
break;
@@ -2369,6 +2455,10 @@ relax_segment (segment_frag_root, segment)
growth = eh_frame_relax_frag (fragP);
break;
+ case rs_dwarf2dbg:
+ growth = dwarf2dbg_relax_frag (fragP);
+ break;
+
default:
BAD_CASE (fragP->fr_type);
break;
@@ -2378,20 +2468,16 @@ relax_segment (segment_frag_root, segment)
stretch += growth;
stretched++;
}
- } /* For each frag in the segment. */
+ } /* For each frag in the segment. */
}
- while (stretched); /* Until nothing further to relax. */
- } /* do_relax */
+ while (stretched); /* Until nothing further to relax. */
+ } /* do_relax */
- /*
- * We now have valid fr_address'es for each frag.
- */
+ /* We now have valid fr_address'es for each frag. */
- /*
- * All fr_address's are correct, relative to their own segment.
- * We have made all the fixS we will ever make.
- */
-} /* relax_segment() */
+ /* All fr_address's are correct, relative to their own segment.
+ We have made all the fixS we will ever make. */
+}
#if defined (BFD_ASSEMBLER) || (!defined (BFD) && !defined (OBJ_VMS))
@@ -2413,7 +2499,7 @@ relax_segment (segment_frag_root, segment)
static long
fixup_segment (fixP, this_segment_type)
register fixS *fixP;
- segT this_segment_type; /* N_TYPE bits for segment. */
+ segT this_segment_type; /* N_TYPE bits for segment. */
{
long seg_reloc_count = 0;
symbolS *add_symbolP;
@@ -2433,7 +2519,7 @@ fixup_segment (fixP, this_segment_type)
i960 (the only machine for which we've got a relaxing linker right now),
we might be able to turn callx/callj into bal anyways in cases where we
know the maximum displacement. */
- if (linkrelax)
+ if (linkrelax && TC_LINKRELAX_FIXUP (this_segment_type))
{
for (; fixP; fixP = fixP->fx_next)
seg_reloc_count++;
@@ -2443,13 +2529,11 @@ fixup_segment (fixP, this_segment_type)
for (; fixP; fixP = fixP->fx_next)
{
-
#ifdef DEBUG5
fprintf (stderr, "\nprocessing fixup:\n");
print_fixup (fixP);
#endif
-
fragP = fixP->fx_frag;
know (fragP);
where = fixP->fx_where;
@@ -2489,7 +2573,7 @@ fixup_segment (fixP, this_segment_type)
fixP->fx_addsy = NULL;
}
- /* It's just -sym */
+ /* It's just -sym. */
if (S_GET_SEGMENT (sub_symbolP) == absolute_section)
{
add_number -= S_GET_VALUE (sub_symbolP);
@@ -2512,19 +2596,19 @@ fixup_segment (fixP, this_segment_type)
{
/* Difference of 2 symbols from same segment.
Can't make difference of 2 undefineds: 'value' means
- something different for N_UNDF. */
+ 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 */
+#endif /* TC_I960 */
add_number += S_GET_VALUE (add_symbolP) -
S_GET_VALUE (sub_symbolP);
add_symbolP = NULL;
- pcrel = 0; /* No further pcrel processing. */
+ pcrel = 0; /* No further pcrel processing. */
/* Let the target machine make the final determination
as to whether or not a relocation will be needed to
@@ -2538,7 +2622,7 @@ fixup_segment (fixP, this_segment_type)
}
else
{
- /* Different segments in subtraction. */
+ /* Different segments in subtraction. */
know (!(S_IS_EXTERNAL (sub_symbolP)
&& (S_GET_SEGMENT (sub_symbolP) == absolute_section)));
@@ -2547,9 +2631,11 @@ fixup_segment (fixP, this_segment_type)
#ifdef DIFF_EXPR_OK
else if (S_GET_SEGMENT (sub_symbolP) == this_segment_type
-#if 0 /* Do this even if it's already described as pc-relative. For example,
- on the m68k, an operand of "pc@(foo-.-2)" should address "foo" in a
- pc-relative mode. */
+#if 0
+ /* Do this even if it's already described as
+ pc-relative. For example, on the m68k, an
+ operand of "pc@(foo-.-2)" should address
+ "foo" in a pc-relative mode. */
&& pcrel
#endif
)
@@ -2599,23 +2685,22 @@ fixup_segment (fixP, this_segment_type)
if (add_symbol_segment == this_segment_type && pcrel && !plt
&& TC_RELOC_RTSYM_LOC_FIXUP (fixP))
{
- /*
- * 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.
- */
+ /* 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. */
+ below a no-op. */
reloc_callj (fixP);
-#endif /* TC_I960 */
+#endif /* TC_I960 */
add_number += S_GET_VALUE (add_symbolP);
add_number -= MD_PCREL_FROM_SECTION (fixP, this_segment_type);
- pcrel = 0; /* Lie. Don't want further pcrel processing. */
+ /* Lie. Don't want further pcrel processing. */
+ pcrel = 0;
/* Let the target machine make the final determination
as to whether or not a relocation will be needed to
@@ -2634,7 +2719,7 @@ fixup_segment (fixP, this_segment_type)
#ifdef TC_I960
/* See comment about reloc_callj() above. */
reloc_callj (fixP);
-#endif /* TC_I960 */
+#endif /* TC_I960 */
add_number += S_GET_VALUE (add_symbolP);
/* Let the target machine make the final determination
@@ -2657,40 +2742,30 @@ fixup_segment (fixP, this_segment_type)
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.
- */
+ 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;
- } /* COBR */
-#endif /* TC_I960 */
+ } /* COBR. */
+#endif /* TC_I960 */
#ifdef OBJ_COFF
#ifdef TE_I386AIX
if (S_IS_COMMON (add_symbolP))
add_number += S_GET_VALUE (add_symbolP);
-#endif /* TE_I386AIX */
-#endif /* OBJ_COFF */
+#endif /* TE_I386AIX */
+#endif /* OBJ_COFF */
++seg_reloc_count;
}
else
{
seg_reloc_count++;
-#if !(defined (TC_V850) && defined (OBJ_ELF))
-#if !(defined (TC_M68K) && defined (OBJ_ELF))
-#if !(defined (TC_ARM) && defined (OBJ_ELF))
-#if !(defined (TC_I960) && defined (OBJ_ELF))
-#if !defined (TC_I386) || !(defined (OBJ_ELF) || defined (OBJ_COFF)) || defined (TE_PE)
- add_number += S_GET_VALUE (add_symbolP);
-#endif
-#endif
-#endif
-#endif
-#endif
+ if (TC_FIX_ADJUSTABLE (fixP))
+ add_number += S_GET_VALUE (add_symbolP);
}
}
}
@@ -2738,7 +2813,7 @@ fixup_segment (fixP, this_segment_type)
valueT mask;
mask = 0;
- mask--; /* set all bits to one */
+ mask--; /* Set all bits to one. */
mask <<= size * 8 - (fixP->fx_signed ? 1 : 0);
if ((add_number & mask) != 0 && (add_number & mask) != mask)
{
@@ -2751,7 +2826,7 @@ fixup_segment (fixP, this_segment_type)
as_bad_where (fixP->fx_file, fixP->fx_line,
_("Value of %s too large for field of %d bytes at %s"),
buf2, size, buf);
- } /* generic error checking */
+ } /* Generic error checking. */
}
#ifdef WARN_SIGNED_OVERFLOW_WORD
/* Warn if a .word value is too large when treated as a signed
@@ -2765,7 +2840,7 @@ fixup_segment (fixP, this_segment_type)
(long) add_number,
(unsigned long) (fragP->fr_address + where));
#endif
- } /* not a bit fix */
+ } /* Not a bit fix. */
#ifdef TC_VALIDATE_FIX
skip: ATTRIBUTE_UNUSED_LABEL
@@ -2775,7 +2850,7 @@ fixup_segment (fixP, this_segment_type)
fprintf (stderr, "result:\n");
print_fixup (fixP);
#endif
- } /* For each fixS in this segment. */
+ } /* For each fixS in this segment. */
TC_ADJUST_RELOC_COUNT (fixP, seg_reloc_count);
return seg_reloc_count;
@@ -2820,7 +2895,7 @@ write_print_statistics (file)
fprintf (file, "fixups: %d\n", n_fixups);
}
-/* for debugging */
+/* For debugging. */
extern int indent_level;
void
@@ -2873,5 +2948,3 @@ print_fixup (fixp)
TC_FIX_DATA_PRINT (stderr, fixp);
#endif
}
-
-/* end of write.c */
diff --git a/contrib/binutils/gas/write.h b/contrib/binutils/gas/write.h
index 186d2ad..9872e9d 100644
--- a/contrib/binutils/gas/write.h
+++ b/contrib/binutils/gas/write.h
@@ -1,5 +1,6 @@
/* write.h
- Copyright (C) 1987, 92, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1987, 92, 93, 94, 95, 96, 97, 2000
+ Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler.
@@ -95,13 +96,13 @@ struct fix
/* Where is the first byte to fix up? */
long fx_where;
- /* NULL or Symbol whose value we add in. */
+ /* NULL or Symbol whose value we add in. */
symbolS *fx_addsy;
- /* NULL or Symbol whose value we subtract. */
+ /* NULL or Symbol whose value we subtract. */
symbolS *fx_subsy;
- /* Absolute number we add in. */
+ /* Absolute number we add in. */
valueT fx_offset;
/* Next fixS in linked list, or NULL. */
@@ -160,13 +161,13 @@ typedef struct fix fixS;
extern char *next_object_file_charP;
#ifndef MANY_SEGMENTS
-COMMON fixS *text_fix_root, *text_fix_tail; /* Chains fixSs. */
-COMMON fixS *data_fix_root, *data_fix_tail; /* Chains fixSs. */
-COMMON fixS *bss_fix_root, *bss_fix_tail; /* Chains fixSs. */
-extern struct frag *text_last_frag; /* Last frag in segment. */
-extern struct frag *data_last_frag; /* Last frag in segment. */
+COMMON fixS *text_fix_root, *text_fix_tail; /* Chains fixSs. */
+COMMON fixS *data_fix_root, *data_fix_tail; /* Chains fixSs. */
+COMMON fixS *bss_fix_root, *bss_fix_tail; /* Chains fixSs. */
+extern struct frag *text_last_frag; /* Last frag in segment. */
+extern struct frag *data_last_frag; /* Last frag in segment. */
#endif
-COMMON fixS **seg_fix_rootP, **seg_fix_tailP; /* -> one of above. */
+COMMON fixS **seg_fix_rootP, **seg_fix_tailP; /* -> one of above. */
#endif
extern long string_byte_count;
@@ -177,6 +178,7 @@ extern bit_fixS *bit_fix_new
long max, long add));
extern void append PARAMS ((char **charPP, char *fromP, unsigned long length));
extern void record_alignment PARAMS ((segT seg, int align));
+extern int get_recorded_alignment PARAMS ((segT seg));
extern void subsegs_finish PARAMS ((void));
extern void write_object_file PARAMS ((void));
extern long relax_frag PARAMS ((fragS *, long));
@@ -205,4 +207,3 @@ extern fixS *fix_new_exp
extern void write_print_statistics PARAMS ((FILE *));
#endif /* __write_h__ */
-/* end of write.h */
diff --git a/contrib/binutils/include/ChangeLog b/contrib/binutils/include/ChangeLog
index a41d5b1..39085a1 100644
--- a/contrib/binutils/include/ChangeLog
+++ b/contrib/binutils/include/ChangeLog
@@ -1,6 +1,198 @@
-2000-10-23 Philip Blundell <pb@futuretv.com>
+2001-01-11 Peter Targett <peter.targett@arccores.com>
- * demangle.h, dyn-string.h: Update from trunk version.
+ * dis-asm.h (arc_get_disassembler): Correct declaration.
+
+2001-01-09 Philip Blundell <philb@gnu.org>
+
+ * bin-bugs.h (REPORT_BUGS_TO): Set to `bug-binutils@gnu.org'.
+
+2000-12-18 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * COPYING: Update to current
+ ftp://ftp.gnu.org/pub/gnu/Licenses/COPYING-2.0 (fixes references
+ to 19yy as example year in copyright notice).
+
+2000-12-19 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * dis-asm.h (struct disassemble_info): New member "section".
+ (INIT_DISASSEMBLE_INFO_NO_ARCH): Initialize private_data member.
+ Initialize section member.
+
+2000-12-16 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
+
+ * safe-ctype.h: Make code work on all targets and not just on
+ targets where a char is 8 bits.
+
+2000-12-10 Fred Fish <fnf@be.com>
+
+ * bfdlink.h (struct bfd_link_info): Add new allow_shlib_undefined
+ member to struct for systems where it is normal to have undefined
+ symbols in shared libraries at runtime and the runtime linker
+ takes care of redirecting them.
+
+2000-12-07 Zack Weinberg <zack@wolery.stanford.edu>
+
+ * safe-ctype.h: New file.
+
+2000-12-06 Rodney Brown <RodneyBrown@mynd.com>
+
+ * getopt.h obstack.h: Standarize copyright statement.
+
+2000-12-05 Richard Henderson <rth@redhat.com>
+
+ * demangle.h: Change "new_abi" to "v3" everywhere.
+
+2000-11-29 Zack Weinberg <zack@wolery.stanford.edu>
+
+ * libiberty.h: Move #includes to top. Prototype xmalloc_failed.
+
+2000-11-15 Kenneth Block <kenneth.block@compaq.com>
+
+ * demangle.h: Add gnat and java demangle styles.
+
+2000-11-04 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * hashtab.h (struct htab): Add member return_allocation_failure.
+ (htab_try_create): New prototype. Mention which functions may
+ return NULL when this is used.
+
+2000-11-03 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * hashtab.h: Change void * to PTR where necessary.
+
+2000-10-11 Mark Mitchell <mark@codesourcery.com>
+
+ * splay-tree.h (splay_tree_predecessor): Declare.
+
+2000-09-29 Hans-Peter Nilsson <hp@axis.com>
+
+ * dis-asm.h: Declare cris_get_disassembler, not print_insn_cris.
+ Fix typo in comment.
+
+2000-09-28 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * alloca-conf.h: New file (copied from libiberty).
+
+2000-09-05 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * md5.h (md5_uint32): Choose via INT_MAX instead of UINT_MAX.
+
+2000-09-04 Alex Samuel <samuel@codesourcery.com>
+
+ * dyn-string.h: Adjust formatting.
+ (dyn_string_insert_char): New macro. New declaration.
+
+2000-08-28 Jason Merrill <jason@redhat.com>
+
+ * md5.h: New file.
+
+2000-08-24 Greg McGary <greg@mcgary.org>
+
+ * libiberty.h (ARRAY_SIZE): New macro.
+
+2000-08-08 Jason Eckhardt <jle@cygnus.com>
+
+ * opcode/i860.h: Small formatting adjustments.
+
+2000-07-29 Nick Clifton <nickc@cygnus.com>
+
+ * os9k.h: Add copyright notice.
+ Fix formatting.
+
+2000-07-22 Jason Eckhardt <jle@cygnus.com>
+
+ * opcode/i860.h (btne, bte, bla): Changed these opcodes
+ to use sbroff ('r') instead of split16 ('s').
+ (J, K, L, M): New operand types for 16-bit aligned fields.
+ (ld.x, {p}fld.x, fst.x, pst.d): Changed these opcodes to
+ use I, J, K, L, M instead of just I.
+ (T, U): New operand types for split 16-bit aligned fields.
+ (st.x): Changed these opcodes to use S, T, U instead of just S.
+ (andh, andnoth, orh, xorh): Deleted 3-register forms as they do not
+ exist on the i860.
+ (pfgt.sd, pfle.sd): Deleted these as they do not exist on the i860.
+ (pfeq.ss, pfeq.dd): New opcodes.
+ (st.s): Fixed incorrect mask bits.
+ (fmlow): Fixed incorrect mask bits.
+ (fzchkl, pfzchkl): Fixed incorrect mask bits.
+ (faddz, pfaddz): Fixed incorrect mask bits.
+ (form, pform): Fixed incorrect mask bits.
+ (pfld.l): Fixed incorrect mask bits.
+ (fst.q): Fixed incorrect mask bits.
+ (all floating point opcodes): Fixed incorrect mask bits for
+ handling of dual bit.
+
+ * elf/i860.h: New file.
+ (elf_i860_reloc_type): Defined ELF32 i860 relocations.
+
+ * dis-asm.h (print_insn_i860): Add prototype.
+
+2000-07-20 H.J. Lu <hjl@gnu.org>
+
+ * bfdlink.h (bfd_link_info): Add new_dtags.
+
+2000-07-20 Hans-Peter Nilsson <hp@axis.com>
+
+ * dis-asm.h (print_insn_cris): Declare.
+
+2000-07-19 H.J. Lu (hjl@gnu.org)
+
+ * bfdlink.h (bfd_link_info): Add flags and flags_1.
+
+2000-06-05 DJ Delorie <dj@redhat.com>
+
+ * MAINTAINERS: new
+
+2000-06-30 DJ Delorie <dj@cygnus.com>
+
+ * coff/pe.h: clarify a comment
+
+2000-06-21 Alex Samuel <samuel@codesourcery.com>
+
+ * dyn-string.h (dyn_string_init, dyn_string_new,
+ dyn_string_delete, dyn_string_release, dyn_string_resize,
+ dyn_string_clear, dyn_string_copy, dyn_string_copy_cstr,
+ dyn_string_prepend, dyn_string_prepend_cstr, dyn_string_insert,
+ dyn_string_insert_cstr, dyn_string_append, dyn_string_append_cstr,
+ dyn_string_append_char, dyn_string_substring_dyn_string_eq):
+ Define as same name with __cxa_ prepended, if IN_LIBGCC2.
+ (dyn_string_init, dyn_string_copy, dyn_string_copy_cstr,
+ dyn_string_prepend, dyn_string_prepend_cstr, dyn_string_insert,
+ dyn_string_insert_cstr, dyn_string_append, dyn_string_append_cstr,
+ dyn_string_append_char, dyn_string_substring): Change return type
+ to int.
+
+2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
+
+ * dis-asm.h (print_insn_m68hc12): Define.
+ (print_insn_m68hc11): Likewise.
+
+2000-06-18 Nick Clifton <nickc@redhat.com>
+
+ * os9k.h: Change values of MODSYNC and CRCCON due to bug report
+ from Russ Magee <rmagee@home.com>.
+
+2000-06-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * demangle.h (demangling_styles): Remove trailing comma in enum.
+
+ * dyn-string.h (dyn_string_append_char): Change parameter from
+ char to int.
+
+2000-06-04 Alex Samuel <samuel@codesourcery.com>
+
+ * dyn-string.h: Move here from gcc/dyn-string.h. Add new functions.
+
+ * demangle.h (DMGL_GNU_NEW_ABI): New macro.
+ (DMGL_STYLE_MASK): Or in DMGL_GNU_NEW_ABI.
+ (current_demangling_style): Add gnu_new_abi_demangling.
+ (GNU_NEW_ABI_DEMANGLING_STYLE_STRING): New macro.
+ (GNU_NEW_ABI_DEMANGLING): Likewise.
+ (cplus_demangle_new_abi): New declaration.
+
+Tue May 30 16:53:34 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * floatformat.h (struct floatformat): Add field name.
2000-05-26 Eli Zaretskii <eliz@is.elta.co.il>
@@ -8,6 +200,82 @@
(HAVE_DOS_BASED_FILE_SYSTEM, IS_DIR_SEPARATOR)
(IS_ABSOLUTE_PATH, FILENAME_CMP): New macros.
+2000-05-23 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * getopt.h (getopt): Also check HAVE_DECL_* when prototyping.
+
+ * libiberty.h (basename): Likewise.
+
+2000-05-17 S. Bharadwaj Yadavalli <sby@scrugs.lkg.dec.com>
+ Rick Gorton <gorton@scrugs.lkg.dec.com>
+
+ * bfdlink.h (struct bfd_link_info): Add emitrelocations flag.
+
+2000-05-08 Alan Modra <alan@linuxcare.com.au>
+
+ * dis-asm.h (print_insn_tic54x): Declare.
+
+2000-05-06 Zack Weinberg <zack@wolery.cumb.org>
+
+ * ansidecl.h: #define __extension__ to nothing if
+ GCC_VERSION < 2008.
+
+Fri May 5 16:51:03 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * coff/rs6k64.h (U802TOC64MAGIC): Change to U803XTOCMAGIC.
+
+2000-05-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * demangle.h (demangler_engine): Constify.
+
+Thu May 4 17:15:26 2000 Philippe De Muyter <phdm@macqel.be>
+
+ * sort.h (sys/types.h): File included unconditionnaly.
+ (stddef.h): File include only #ifdef __STDC__.
+
+2000-05-03 Zack Weinberg <zack@wolery.cumb.org>
+
+ * symcat.h: Remove #endif label.
+
+2000-04-28 Kenneth Block <block@zk3.dec.com>
+ Jason Merrill <jason@casey.cygnus.com>
+
+ * demangle.h (libiberty_demanglers): new table for different styles.
+ (cplus_demangle_set_style): New function for setting style.
+ (cplus_demangle_name_to_style): New function to translate name.
+
+Mon Apr 24 15:20:51 2000 Clinton Popetz <cpopetz@cygnus.com>
+
+ * include/coff/rs6k64.h: New file.
+
+2000-04-24 Mark Mitchell <mark@codesourcery.com>
+
+ * hashtab.h (hash_pointer): Declare.
+ (eq_pointer): Likewise.
+
+2000-04-23 Mark Mitchell <mark@codesourcery.com>
+
+ * sort.h: New file.
+
+Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com>
+ David Mosberger <davidm@hpl.hp.com>
+
+ * dis-asm.h (print_insn_ia64): Declare.
+
+Tue Apr 18 16:22:30 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * hashtab.h (enum insert_option): New type.
+ (htab_find_slot, htab_find_slot_with_hash): Use it.
+
+2000-04-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * symcat.h: Honor autoconf macro HAVE_STRINGIZE. Add
+ comments/caveats with regard to traditional C behavior.
+
+2000-04-05 Richard Henderson <rth@cygnus.com>
+
+ * splay-tree.h (splay_tree_remove): Declare.
+
2000-04-04 Alan Modra <alan@linuxcare.com.au>
* bin-bugs.h (REPORT_BUGS_TO): Remove translated part.
@@ -16,6 +284,12 @@
* bin-bugs.h: New file.
+2000-03-30 Mark Mitchell <mark@codesourcery.com>
+
+ * hashtab.h (hashval_t): New type.
+ (htab_find_with_hash): Use it as an argument.
+ (htab_find_slot_with_hash): Likewise.
+
2000-03-27 Denis Chertykov <denisc@overta.ru>
* dis-asm.h (print_insn_avr): Declare.
@@ -258,7 +532,7 @@ Mon Feb 1 21:05:46 1999 Catherine Moore <clm@cygnus.com>
* dis-asm.h (print_insn_i386_att): Declare.
(print_insn_i386_intel): Declare.
-998-12-30 Michael Meissner <meissner@cygnus.com>
+1998-12-30 Michael Meissner <meissner@cygnus.com>
* dis-asm.h (INIT_DISASSEMBLE_INFO_NO_ARCH): Cast STREAM and
FPRINTF_FUNC to avoid compiler warnings.
@@ -288,8 +562,7 @@ Tue Dec 8 00:30:31 1998 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
(demangling_styles): add new edg_demangling style
(EDG_DEMANGLING_STYLE_STRING): new macro
(EDG_DEMANGLING): new macro
-
- * demangle.h (DMGL_HP): new macro, for HP/aCC compiler.
+ (DMGL_HP): new macro, for HP/aCC compiler.
(DMGL_STYLE_MASK): modify to include new HP's style.
(demangling_styles): add new hp_demangling value.
(HP_DEMANGLING_STYLE_STRING): new macro.
diff --git a/contrib/binutils/include/MAINTAINERS b/contrib/binutils/include/MAINTAINERS
new file mode 100644
index 0000000..d59a3bd
--- /dev/null
+++ b/contrib/binutils/include/MAINTAINERS
@@ -0,0 +1 @@
+See ../binutils/MAINTAINERS
diff --git a/contrib/binutils/include/alloca-conf.h b/contrib/binutils/include/alloca-conf.h
new file mode 100644
index 0000000..9c3eea3
--- /dev/null
+++ b/contrib/binutils/include/alloca-conf.h
@@ -0,0 +1,24 @@
+#include "config.h"
+
+#if defined(__GNUC__) && !defined(C_ALLOCA)
+# ifndef alloca
+# define alloca __builtin_alloca
+# endif
+#else /* ! defined (__GNUC__) */
+# ifdef _AIX
+ #pragma alloca
+# else
+# if defined(HAVE_ALLOCA_H) && !defined(C_ALLOCA)
+# include <alloca.h>
+# else /* ! defined (HAVE_ALLOCA_H) */
+# ifdef __STDC__
+extern PTR alloca (size_t);
+# else /* ! defined (__STDC__) */
+extern PTR alloca ();
+# endif /* ! defined (__STDC__) */
+# endif /* ! defined (HAVE_ALLOCA_H) */
+# ifdef _WIN32
+# include <malloc.h>
+# endif
+# endif /* ! defined (_AIX) */
+#endif /* ! defined (__GNUC__) */
diff --git a/contrib/binutils/include/ansidecl.h b/contrib/binutils/include/ansidecl.h
index 1030867..e7852c6 100644
--- a/contrib/binutils/include/ansidecl.h
+++ b/contrib/binutils/include/ansidecl.h
@@ -160,6 +160,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#endif /* ANSI C. */
+
/* Using MACRO(x,y) in cpp #if conditionals does not work with some
older preprocessors. Thus we can't define something like this:
@@ -221,4 +222,11 @@ So instead we use the macro below and test it against specific values. */
#define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6)
#endif /* ATTRIBUTE_PRINTF */
+/* We use __extension__ in some places to suppress -pedantic warnings
+ about GCC extensions. This feature didn't work properly before
+ gcc 2.8. */
+#if GCC_VERSION < 2008
+#define __extension__
+#endif
+
#endif /* ansidecl.h */
diff --git a/contrib/binutils/include/aout/ChangeLog b/contrib/binutils/include/aout/ChangeLog
index 63f17ec..1645a5a 100644
--- a/contrib/binutils/include/aout/ChangeLog
+++ b/contrib/binutils/include/aout/ChangeLog
@@ -1,3 +1,12 @@
+Mon Apr 3 13:29:08 2000 Hans-Peter Nilsson <hp@axis.com>
+
+ * aout64.h (RELOC_EXT_BITS_EXTERN_BIG): Wrap definition in #ifndef.
+ (RELOC_EXT_BITS_EXTERN_LITTLE): Ditto.
+ (RELOC_EXT_BITS_TYPE_BIG): Ditto.
+ (RELOC_EXT_BITS_TYPE_SH_BIG): Ditto.
+ (RELOC_EXT_BITS_TYPE_LITTLE): Ditto.
+ (RELOC_EXT_BITS_TYPE_SH_LITTLE): Ditto.
+
1999-07-12 Ian Lance Taylor <ian@zembu.com>
* aout64.h (N_SHARED_LIB): Define as 0 if TEXT_START_ADDR is
diff --git a/contrib/binutils/include/aout/aout64.h b/contrib/binutils/include/aout/aout64.h
index bf743c4..bec8440 100644
--- a/contrib/binutils/include/aout/aout64.h
+++ b/contrib/binutils/include/aout/aout64.h
@@ -388,13 +388,29 @@ struct reloc_ext_external {
bfd_byte r_addend[BYTES_IN_WORD]; /* datum addend */
};
+#ifndef RELOC_EXT_BITS_EXTERN_BIG
#define RELOC_EXT_BITS_EXTERN_BIG ((unsigned int) 0x80)
+#endif
+
+#ifndef RELOC_EXT_BITS_EXTERN_LITTLE
#define RELOC_EXT_BITS_EXTERN_LITTLE ((unsigned int) 0x01)
+#endif
+#ifndef RELOC_EXT_BITS_TYPE_BIG
#define RELOC_EXT_BITS_TYPE_BIG ((unsigned int) 0x1F)
+#endif
+
+#ifndef RELOC_EXT_BITS_TYPE_SH_BIG
#define RELOC_EXT_BITS_TYPE_SH_BIG 0
+#endif
+
+#ifndef RELOC_EXT_BITS_TYPE_LITTLE
#define RELOC_EXT_BITS_TYPE_LITTLE ((unsigned int) 0xF8)
+#endif
+
+#ifndef RELOC_EXT_BITS_TYPE_SH_LITTLE
#define RELOC_EXT_BITS_TYPE_SH_LITTLE 3
+#endif
/* Bytes per relocation entry */
#define RELOC_EXT_SIZE (BYTES_IN_WORD + 3 + 1 + BYTES_IN_WORD)
diff --git a/contrib/binutils/include/bfdlink.h b/contrib/binutils/include/bfdlink.h
index bb827a3..ae96323 100644
--- a/contrib/binutils/include/bfdlink.h
+++ b/contrib/binutils/include/bfdlink.h
@@ -179,6 +179,8 @@ struct bfd_link_info
const struct bfd_link_callbacks *callbacks;
/* true if BFD should generate a relocateable object file. */
boolean relocateable;
+ /* true if BFD should generate relocation information in the final executable. */
+ boolean emitrelocations;
/* true if BFD should generate a "task linked" object file,
similar to relocatable but also with globals converted to statics. */
boolean task_link;
@@ -199,6 +201,19 @@ struct bfd_link_info
/* true if BFD should generate errors for undefined symbols
even if generating a shared object. */
boolean no_undefined;
+ /* true if BFD should allow undefined symbols in shared objects even
+ when no_undefined is set to disallow undefined symbols. The net
+ result will be that undefined symbols in regular objects will
+ still trigger an error, but undefined symbols in shared objects
+ will be ignored. The implementation of no_undefined makes the
+ assumption that the runtime linker will choke on undefined
+ symbols. However there is at least one system (BeOS) where
+ undefined symbols in shared libraries is normal since the kernel
+ patches them at load time to select which function is most
+ appropriate for the current architecture. I.E. dynamically
+ select an appropriate memset function. Apparently it is also
+ normal for HPPA shared libraries to have undefined symbols. */
+ boolean allow_shlib_undefined;
/* Which symbols to strip. */
enum bfd_link_strip strip;
/* Which local symbols to discard. */
@@ -244,6 +259,15 @@ struct bfd_link_info
/* The function to call when the executable or shared object is
unloaded. */
const char *fini_function;
+
+ /* true if the new ELF dynamic tags are enabled. */
+ boolean new_dtags;
+
+ /* May be used to set DT_FLAGS for ELF. */
+ bfd_vma flags;
+
+ /* May be used to set DT_FLAGS_1 for ELF. */
+ bfd_vma flags_1;
};
/* This structures holds a set of callback functions. These are
diff --git a/contrib/binutils/include/bin-bugs.h b/contrib/binutils/include/bin-bugs.h
index cb14a66..3c97715 100644
--- a/contrib/binutils/include/bin-bugs.h
+++ b/contrib/binutils/include/bin-bugs.h
@@ -1,3 +1,3 @@
#ifndef REPORT_BUGS_TO
-#define REPORT_BUGS_TO "bug-gnu-utils@gnu.org"
+#define REPORT_BUGS_TO "bug-binutils@gnu.org"
#endif
diff --git a/contrib/binutils/include/coff/ChangeLog b/contrib/binutils/include/coff/ChangeLog
index 76b52c0..eb97871 100644
--- a/contrib/binutils/include/coff/ChangeLog
+++ b/contrib/binutils/include/coff/ChangeLog
@@ -1,3 +1,64 @@
+2001-02-17 Philip Blundell <philb@gnu.org>
+
+ From 2001-01-23 H.J. Lu <hjl@gnu.org>
+ * pe.h (struct external_PEI_DOS_hdr): New.
+ (struct external_PEI_IMAGE_hdr): New.
+
+2000-12-11 Alan Modra <alan@linuxcare.com.au>
+
+ * ti.h (OCTETS_PER_BYTE_POWER): Change #warning to #error.
+
+2000-12-08 Alan Modra <alan@linuxcare.com.au>
+
+ * ti.h (OCTETS_PER_BYTE_POWER): Change #warn to #warning.
+
+2000-06-30 DJ Delorie <dj@cygnus.com>
+
+ * pe.h: Clarify a comment.
+
+2000-04-17 Timothy Wall <twall@cygnus.com>
+
+ * ti.h: Load page cleanup.
+ * intental.h: Add load page field.
+
+Mon Apr 17 16:44:01 2000 David Mosberger <davidm@hpl.hp.com>
+
+ * pe.h (PEP64AOUTHDR): New header for PE+.
+ (PEP64AOUTSZ): New macro.
+ (IMAGE_SUBSYSTEM_UNKNOWN): New macro.
+ (IMAGE_SUBSYSTEM_NATIVE): Ditto.
+ (IMAGE_SUBSYSTEM_WINDOWS_GUI): Ditto.
+ (IMAGE_SUBSYSTEM_WINDOWS_CUI): Ditto.
+ (IMAGE_SUBSYSTEM_POSIX_CUI): Ditto.
+ (IMAGE_SUBSYSTEM_WINDOWS_CE_GUI): Ditto.
+ (IMAGE_SUBSYSTEM_EFI_APPLICATION): Ditto.
+ (IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER): Ditto.
+ (IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER): Ditto.
+ * internal.h (PE_DEF_FILE_ALIGNMENT): Define only if not defined
+ already.
+ * ia64.h: New file.
+
+2000-04-13 Alan Modra <alan@linuxcare.com.au>
+
+ * ti.h (ADDR_MASK): Don't use ul suffix on constants.
+ (PG_MASK): Ditto.
+
+2000-04-11 Timothy Wall <twall@cygnus.com>
+
+ * ti.h: Remove load page references until load pages are
+ reimplemented.
+ * tic54x.h: Ditto.
+
+2000-04-07 Timothy Wall <twall@cygnus.com>
+
+ * internal.h: Fix some comments related to TI COFF (instead of tic80).
+ * ti.h: New.
+ * tic54x.h: New.
+
+Wed Apr 5 22:08:41 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * sh.h (R_SH_LOOP_START, R_SH_LOOP_END): Define.
+
2000-03-15 Kazu Hirata <kazu@hxi.com>
* internal.h: Fix a typo in the comment for R_MOVL2.
diff --git a/contrib/binutils/include/coff/internal.h b/contrib/binutils/include/coff/internal.h
index e89b528..c6f2760 100644
--- a/contrib/binutils/include/coff/internal.h
+++ b/contrib/binutils/include/coff/internal.h
@@ -53,7 +53,7 @@ struct internal_filehdr
long f_nsyms; /* number of symtab entries */
unsigned short f_opthdr; /* sizeof(optional hdr) */
unsigned short f_flags; /* flags */
- unsigned short f_target_id; /* (TIc80 specific) */
+ unsigned short f_target_id; /* (TI COFF specific) */
};
@@ -100,7 +100,9 @@ typedef struct _IMAGE_DATA_DIRECTORY
/* Extra stuff in a PE aouthdr */
#define PE_DEF_SECTION_ALIGNMENT 0x1000
-#define PE_DEF_FILE_ALIGNMENT 0x200
+#ifndef PE_DEF_FILE_ALIGNMENT
+# define PE_DEF_FILE_ALIGNMENT 0x200
+#endif
struct internal_extra_pe_aouthdr
{
@@ -222,7 +224,7 @@ struct internal_aouthdr
#define C_WEAKEXT 127 /* weak symbol -- GNU extension */
-/* New storage classes for TIc80 */
+/* New storage classes for TI COFF */
#define C_UEXT 19 /* Tentative external definition */
#define C_STATLAB 20 /* Static load time label */
#define C_EXTLAB 21 /* External load time label */
@@ -301,6 +303,7 @@ struct internal_scnhdr
unsigned long s_nlnno; /* number of line number entries*/
long s_flags; /* flags */
long s_align; /* used on I960 */
+ unsigned char s_page; /* TI COFF load page */
};
/*
diff --git a/contrib/binutils/include/coff/pe.h b/contrib/binutils/include/coff/pe.h
index 6932ee8..0cf46d0 100644
--- a/contrib/binutils/include/coff/pe.h
+++ b/contrib/binutils/include/coff/pe.h
@@ -1,5 +1,22 @@
-/* PE COFF header information */
+/* pe.h - PE COFF header information
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+ This file is part of BFD, the Binary File Descriptor library.
+
+ 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 _PE_H
#define _PE_H
@@ -89,50 +106,101 @@
#define IMAGE_FILE_MACHINE_SH4 0x1a6
#define IMAGE_FILE_MACHINE_THUMB 0x1c2
-/* Magic values that are true for all dos/nt implementations */
+#define IMAGE_SUBSYSTEM_UNKNOWN 0
+#define IMAGE_SUBSYSTEM_NATIVE 1
+#define IMAGE_SUBSYSTEM_WINDOWS_GUI 2
+#define IMAGE_SUBSYSTEM_WINDOWS_CUI 3
+#define IMAGE_SUBSYSTEM_POSIX_CUI 7
+#define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9
+#define IMAGE_SUBSYSTEM_EFI_APPLICATION 10
+#define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11
+#define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12
+
+/* Magic values that are true for all dos/nt implementations. */
#define DOSMAGIC 0x5a4d
#define NT_SIGNATURE 0x00004550
- /* NT allows long filenames, we want to accommodate this. This may break
- some of the bfd functions */
+/* NT allows long filenames, we want to accommodate this.
+ This may break some of the bfd functions. */
#undef FILNMLEN
-#define FILNMLEN 18 /* # characters in a file name */
+#define FILNMLEN 18 /* # characters in a file name. */
-struct external_PEI_filehdr
+struct external_PEI_DOS_hdr
{
- /* DOS header fields */
- char e_magic[2]; /* Magic number, 0x5a4d */
- char e_cblp[2]; /* Bytes on last page of file, 0x90 */
- char e_cp[2]; /* Pages in file, 0x3 */
- char e_crlc[2]; /* Relocations, 0x0 */
- char e_cparhdr[2]; /* Size of header in paragraphs, 0x4 */
- char e_minalloc[2]; /* Minimum extra paragraphs needed, 0x0 */
- char e_maxalloc[2]; /* Maximum extra paragraphs needed, 0xFFFF */
- char e_ss[2]; /* Initial (relative) SS value, 0x0 */
- char e_sp[2]; /* Initial SP value, 0xb8 */
- char e_csum[2]; /* Checksum, 0x0 */
- char e_ip[2]; /* Initial IP value, 0x0 */
- char e_cs[2]; /* Initial (relative) CS value, 0x0 */
- char e_lfarlc[2]; /* File address of relocation table, 0x40 */
- char e_ovno[2]; /* Overlay number, 0x0 */
- char e_res[4][2]; /* Reserved words, all 0x0 */
- char e_oemid[2]; /* OEM identifier (for e_oeminfo), 0x0 */
- char e_oeminfo[2]; /* OEM information; e_oemid specific, 0x0 */
- char e_res2[10][2]; /* Reserved words, all 0x0 */
- char e_lfanew[4]; /* File address of new exe header, 0x80 */
- char dos_message[16][4]; /* other stuff, always follow DOS header */
- char nt_signature[4]; /* required NT signature, 0x4550 */
-
- /* From standard header */
-
- char f_magic[2]; /* magic number */
- char f_nscns[2]; /* number of sections */
- char f_timdat[4]; /* time & date stamp */
- char f_symptr[4]; /* file pointer to symtab */
- char f_nsyms[4]; /* number of symtab entries */
- char f_opthdr[2]; /* sizeof(optional hdr) */
- char f_flags[2]; /* flags */
+ /* DOS header fields - always at offset zero in the EXE file. */
+ char e_magic[2]; /* Magic number, 0x5a4d. */
+ char e_cblp[2]; /* Bytes on last page of file, 0x90. */
+ char e_cp[2]; /* Pages in file, 0x3. */
+ char e_crlc[2]; /* Relocations, 0x0. */
+ char e_cparhdr[2]; /* Size of header in paragraphs, 0x4. */
+ char e_minalloc[2]; /* Minimum extra paragraphs needed, 0x0. */
+ char e_maxalloc[2]; /* Maximum extra paragraphs needed, 0xFFFF. */
+ char e_ss[2]; /* Initial (relative) SS value, 0x0. */
+ char e_sp[2]; /* Initial SP value, 0xb8. */
+ char e_csum[2]; /* Checksum, 0x0. */
+ char e_ip[2]; /* Initial IP value, 0x0. */
+ char e_cs[2]; /* Initial (relative) CS value, 0x0. */
+ char e_lfarlc[2]; /* File address of relocation table, 0x40. */
+ char e_ovno[2]; /* Overlay number, 0x0. */
+ char e_res[4][2]; /* Reserved words, all 0x0. */
+ char e_oemid[2]; /* OEM identifier (for e_oeminfo), 0x0. */
+ char e_oeminfo[2]; /* OEM information; e_oemid specific, 0x0. */
+ char e_res2[10][2]; /* Reserved words, all 0x0. */
+ char e_lfanew[4]; /* File address of new exe header, usually 0x80. */
+ char dos_message[16][4]; /* Other stuff, always follow DOS header. */
+};
+
+struct external_PEI_IMAGE_hdr
+{
+ char nt_signature[4]; /* required NT signature, 0x4550. */
+
+ /* From standard header. */
+ char f_magic[2]; /* Magic number. */
+ char f_nscns[2]; /* Number of sections. */
+ char f_timdat[4]; /* Time & date stamp. */
+ char f_symptr[4]; /* File pointer to symtab. */
+ char f_nsyms[4]; /* Number of symtab entries. */
+ char f_opthdr[2]; /* Sizeof(optional hdr). */
+ char f_flags[2]; /* Flags. */
+};
+struct external_PEI_filehdr
+{
+ /* DOS header fields - always at offset zero in the EXE file. */
+ char e_magic[2]; /* Magic number, 0x5a4d. */
+ char e_cblp[2]; /* Bytes on last page of file, 0x90. */
+ char e_cp[2]; /* Pages in file, 0x3. */
+ char e_crlc[2]; /* Relocations, 0x0. */
+ char e_cparhdr[2]; /* Size of header in paragraphs, 0x4. */
+ char e_minalloc[2]; /* Minimum extra paragraphs needed, 0x0. */
+ char e_maxalloc[2]; /* Maximum extra paragraphs needed, 0xFFFF. */
+ char e_ss[2]; /* Initial (relative) SS value, 0x0. */
+ char e_sp[2]; /* Initial SP value, 0xb8. */
+ char e_csum[2]; /* Checksum, 0x0. */
+ char e_ip[2]; /* Initial IP value, 0x0. */
+ char e_cs[2]; /* Initial (relative) CS value, 0x0. */
+ char e_lfarlc[2]; /* File address of relocation table, 0x40. */
+ char e_ovno[2]; /* Overlay number, 0x0. */
+ char e_res[4][2]; /* Reserved words, all 0x0. */
+ char e_oemid[2]; /* OEM identifier (for e_oeminfo), 0x0. */
+ char e_oeminfo[2]; /* OEM information; e_oemid specific, 0x0. */
+ char e_res2[10][2]; /* Reserved words, all 0x0. */
+ char e_lfanew[4]; /* File address of new exe header, usually 0x80. */
+ char dos_message[16][4]; /* Other stuff, always follow DOS header. */
+
+ /* Note: additional bytes may be inserted before the signature. Use
+ the e_lfanew field to find the actual location of the NT signature. */
+
+ char nt_signature[4]; /* required NT signature, 0x4550. */
+
+ /* From standard header. */
+ char f_magic[2]; /* Magic number. */
+ char f_nscns[2]; /* Number of sections. */
+ char f_timdat[4]; /* Time & date stamp. */
+ char f_symptr[4]; /* File pointer to symtab. */
+ char f_nsyms[4]; /* Number of symtab entries. */
+ char f_opthdr[2]; /* Sizeof(optional hdr). */
+ char f_flags[2]; /* Flags. */
};
#ifdef COFF_IMAGE_WITH_PE
@@ -146,11 +214,13 @@ struct external_PEI_filehdr
#endif /* COFF_IMAGE_WITH_PE */
+/* 32-bit PE a.out header: */
+
typedef struct
{
AOUTHDR standard;
- /* NT extra fields; see internal.h for descriptions */
+ /* NT extra fields; see internal.h for descriptions. */
char ImageBase[4];
char SectionAlignment[4];
char FileAlignment[4];
@@ -172,17 +242,48 @@ typedef struct
char SizeOfHeapCommit[4];
char LoaderFlags[4];
char NumberOfRvaAndSizes[4];
- /* IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; */
- char DataDirectory[16][2][4]; /* 16 entries, 2 elements/entry, 4 chars */
-
+ /* IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; */
+ char DataDirectory[16][2][4]; /* 16 entries, 2 elements/entry, 4 chars. */
} PEAOUTHDR;
-
-
#undef AOUTSZ
#define AOUTSZ (AOUTHDRSZ + 196)
+/* Like PEAOUTHDR, except that the "standard" member has no BaseOfData
+ (aka data_start) member and that some of the members are 8 instead
+ of just 4 bytes long. */
+typedef struct
+{
+ AOUTHDR standard;
+
+ /* NT extra fields; see internal.h for descriptions. */
+ char ImageBase[8];
+ char SectionAlignment[4];
+ char FileAlignment[4];
+ char MajorOperatingSystemVersion[2];
+ char MinorOperatingSystemVersion[2];
+ char MajorImageVersion[2];
+ char MinorImageVersion[2];
+ char MajorSubsystemVersion[2];
+ char MinorSubsystemVersion[2];
+ char Reserved1[4];
+ char SizeOfImage[4];
+ char SizeOfHeaders[4];
+ char CheckSum[4];
+ char Subsystem[2];
+ char DllCharacteristics[2];
+ char SizeOfStackReserve[8];
+ char SizeOfStackCommit[8];
+ char SizeOfHeapReserve[8];
+ char SizeOfHeapCommit[8];
+ char LoaderFlags[4];
+ char NumberOfRvaAndSizes[4];
+ /* IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; */
+ char DataDirectory[16][2][4]; /* 16 entries, 2 elements/entry, 4 chars. */
+} PEP64AOUTHDR;
+#define PEP64AOUTSZ 240
+
#undef E_FILNMLEN
-#define E_FILNMLEN 18 /* # characters in a file name */
+#define E_FILNMLEN 18 /* # characters in a file name. */
/* Import Tyoes fot ILF format object files.. */
#define IMPORT_CODE 0
diff --git a/contrib/binutils/include/coff/ti.h b/contrib/binutils/include/coff/ti.h
new file mode 100644
index 0000000..445707c
--- /dev/null
+++ b/contrib/binutils/include/coff/ti.h
@@ -0,0 +1,434 @@
+/* COFF information for TI COFF support. Definitions in this file should be
+ customized in a target-specific file, and then this file included (see
+ tic54x.h for an example). */
+#ifndef COFF_TI_H
+#define COFF_TI_H
+
+/********************** FILE HEADER **********************/
+
+struct external_filehdr {
+ char f_magic[2]; /* magic number */
+ char f_nscns[2]; /* number of sections */
+ char f_timdat[4]; /* time & date stamp */
+ char f_symptr[4]; /* file pointer to symtab */
+ char f_nsyms[4]; /* number of symtab entries */
+ char f_opthdr[2]; /* sizeof(optional hdr) */
+ char f_flags[2]; /* flags */
+ char f_target_id[2]; /* magic no. (TI COFF-specific) */
+};
+
+/* COFF0 has magic number in f_magic, and omits f_target_id from the file
+ header; for later versions, f_magic is 0xC1 for COFF1 and 0xC2 for COFF2
+ and the target-specific magic number is found in f_target_id */
+
+#define TICOFF0MAGIC TI_TARGET_ID
+#define TICOFF1MAGIC 0x00C1
+#define TICOFF2MAGIC 0x00C2
+#define TICOFF_AOUT_MAGIC 0x0108 /* magic number in optional header */
+#define TICOFF 1 /* customize coffcode.h */
+
+/* The target_id field changes depending on the particular CPU target */
+/* for COFF0, the target id appeared in f_magic, where COFFX magic is now */
+#ifndef TI_TARGET_ID
+#error "TI_TARGET_ID needs to be defined for your CPU"
+#endif
+
+/* Which bfd_arch to use... */
+#ifndef TICOFF_TARGET_ARCH
+#error "TICOFF_TARGET_ARCH needs to be defined for your CPU"
+#endif
+
+/* Default to COFF2 for file output */
+#ifndef TICOFF_DEFAULT_MAGIC
+#define TICOFF_DEFAULT_MAGIC TICOFF2MAGIC
+#endif
+
+/* This value is made available in the rare case where a bfd is unavailable */
+#ifndef OCTETS_PER_BYTE_POWER
+#error "OCTETS_PER_BYTE_POWER not defined for this CPU"
+#else
+#define OCTETS_PER_BYTE (1<<OCTETS_PER_BYTE_POWER)
+#endif
+
+/* default alignment is on a byte (not octet!) boundary */
+#ifndef COFF_DEFAULT_SECTION_ALIGNMENT_POWER
+#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER 0
+#endif
+
+/* TI COFF encodes the section alignment in the section header flags */
+#define COFF_ALIGN_IN_SECTION_HEADER 1
+#define COFF_ALIGN_IN_S_FLAGS 1
+/* requires a power-of-two argument */
+#define COFF_ENCODE_ALIGNMENT(S,X) ((S).s_flags |= (((unsigned)(X)&0xF)<<8))
+/* result is a power of two */
+#define COFF_DECODE_ALIGNMENT(X) (((X)>>8)&0xF)
+
+#define COFF0_P(ABFD) (bfd_coff_filhsz(ABFD) == FILHSZ_V0)
+#define COFF2_P(ABFD) (bfd_coff_scnhsz(ABFD) != SCNHSZ_V01)
+
+#define COFF0_BADMAG(x) ((x).f_magic != TICOFF0MAGIC)
+#define COFF1_BADMAG(x) ((x).f_magic != TICOFF1MAGIC || (x).f_target_id != TI_TARGET_ID)
+#define COFF2_BADMAG(x) ((x).f_magic != TICOFF2MAGIC || (x).f_target_id != TI_TARGET_ID)
+
+/* we need to read/write an extra field in the coff file header */
+#ifndef COFF_ADJUST_FILEHDR_IN_POST
+#define COFF_ADJUST_FILEHDR_IN_POST(abfd,src,dst) \
+do { ((struct internal_filehdr *)(dst))->f_target_id = \
+bfd_h_get_16(abfd, (bfd_byte *)(((FILHDR *)(src))->f_target_id)); \
+} while(0)
+#endif
+
+#ifndef COFF_ADJUST_FILEHDR_OUT_POST
+#define COFF_ADJUST_FILEHDR_OUT_POST(abfd,src,dst) \
+do { bfd_h_put_16(abfd, ((struct internal_filehdr *)(src))->f_target_id, \
+ (bfd_byte *)(((FILHDR *)(dst))->f_target_id)); \
+} while(0)
+#endif
+
+#define FILHDR struct external_filehdr
+#define FILHSZ 22
+#define FILHSZ_V0 20 /* COFF0 omits target_id field */
+
+/* File header flags */
+#define F_RELFLG (0x0001)
+#define F_EXEC (0x0002)
+#define F_LNNO (0x0004)
+/* F_LSYMS needs to be redefined in your source file */
+#define F_LSYMS_TICOFF (0x0010) /* normal COFF is 0x8 */
+
+#define F_10 0x00 /* file built for TMS320C1x devices */
+#define F_20 0x10 /* file built for TMS320C2x devices */
+#define F_25 0x20 /* file built for TMS320C2x/C5x devices */
+#define F_LENDIAN 0x0100 /* 16 bits/word, LSB first */
+#define F_SYMMERGE 0x1000 /* duplicate symbols were removed */
+
+/********************** OPTIONAL HEADER **********************/
+
+
+typedef struct
+{
+ char magic[2]; /* type of file (0x108) */
+ char vstamp[2]; /* version stamp */
+ char tsize[4]; /* text size in bytes, padded to FW bdry*/
+ char dsize[4]; /* initialized data " " */
+ char bsize[4]; /* uninitialized data " " */
+ char entry[4]; /* entry pt. */
+ char text_start[4]; /* base of text used for this file */
+ char data_start[4]; /* base of data used for this file */
+}
+AOUTHDR;
+
+
+#define AOUTHDRSZ 28
+#define AOUTSZ 28
+
+
+/********************** SECTION HEADER **********************/
+/* COFF0, COFF1 */
+struct external_scnhdr_v01 {
+ char s_name[8]; /* section name */
+ char s_paddr[4]; /* physical address, aliased s_nlib */
+ char s_vaddr[4]; /* virtual address */
+ char s_size[4]; /* section size (in WORDS) */
+ char s_scnptr[4]; /* file ptr to raw data for section */
+ char s_relptr[4]; /* file ptr to relocation */
+ char s_lnnoptr[4]; /* file ptr to line numbers */
+ char s_nreloc[2]; /* number of relocation entries */
+ char s_nlnno[2]; /* number of line number entries*/
+ char s_flags[2]; /* flags */
+ char s_reserved[1]; /* reserved */
+ char s_page[1]; /* section page number (LOAD) */
+};
+
+/* COFF2 */
+struct external_scnhdr {
+ char s_name[8]; /* section name */
+ char s_paddr[4]; /* physical address, aliased s_nlib */
+ char s_vaddr[4]; /* virtual address */
+ char s_size[4]; /* section size (in WORDS) */
+ char s_scnptr[4]; /* file ptr to raw data for section */
+ char s_relptr[4]; /* file ptr to relocation */
+ char s_lnnoptr[4]; /* file ptr to line numbers */
+ char s_nreloc[4]; /* number of relocation entries */
+ char s_nlnno[4]; /* number of line number entries*/
+ char s_flags[4]; /* flags */
+ char s_reserved[2]; /* reserved */
+ char s_page[2]; /* section page number (LOAD) */
+};
+
+/*
+ * Special section flags
+ */
+
+/* TI COFF defines these flags;
+ STYP_CLINK: the section should be excluded from the final
+ linker output if there are no references found to any symbol in the section
+ STYP_BLOCK: the section should be blocked, i.e. if the section would cross
+ a page boundary, it is started at a page boundary instead.
+ TI COFF puts the section alignment power of two in the section flags
+ e.g. 2**N is alignment, flags |= (N & 0xF) << 8
+*/
+#define STYP_CLINK (0x4000)
+#define STYP_BLOCK (0x1000)
+#define STYP_ALIGN (0x0F00) /* TI COFF stores section alignment here */
+
+#define SCNHDR_V01 struct external_scnhdr_v01
+#define SCNHDR struct external_scnhdr
+#define SCNHSZ_V01 40 /* for v0 and v1 */
+#define SCNHSZ 48
+
+/* COFF2 changes the offsets and sizes of these fields
+ Assume we're dealing with the COFF2 scnhdr structure, and adjust
+ accordingly
+ */
+#define GET_SCNHDR_NRELOC(ABFD,PTR) \
+(COFF2_P(ABFD) ? bfd_h_get_32 (ABFD,PTR) : bfd_h_get_16 (ABFD, PTR))
+#define PUT_SCNHDR_NRELOC(ABFD,VAL,PTR) \
+(COFF2_P(ABFD) ? bfd_h_put_32 (ABFD,VAL,PTR) : bfd_h_put_16 (ABFD,VAL,PTR))
+#define GET_SCNHDR_NLNNO(ABFD,PTR) \
+(COFF2_P(ABFD) ? bfd_h_get_32 (ABFD,PTR) : bfd_h_get_16 (ABFD, (PTR)-2))
+#define PUT_SCNHDR_NLNNO(ABFD,VAL,PTR) \
+(COFF2_P(ABFD) ? bfd_h_put_32 (ABFD,VAL,PTR) : bfd_h_put_16 (ABFD,VAL,(PTR)-2))
+#define GET_SCNHDR_FLAGS(ABFD,PTR) \
+(COFF2_P(ABFD) ? bfd_h_get_32 (ABFD,PTR) : bfd_h_get_16 (ABFD, (PTR)-4))
+#define PUT_SCNHDR_FLAGS(ABFD,VAL,PTR) \
+(COFF2_P(ABFD) ? bfd_h_put_32 (ABFD,VAL,PTR) : bfd_h_put_16 (ABFD,VAL,(PTR)-4))
+#define GET_SCNHDR_PAGE(ABFD,PTR) \
+(COFF2_P(ABFD) ? bfd_h_get_16 (ABFD,PTR) : bfd_h_get_8 (ABFD, (PTR)-7))
+/* on output, make sure that the "reserved" field is zero */
+#define PUT_SCNHDR_PAGE(ABFD,VAL,PTR) \
+(COFF2_P(ABFD) ? bfd_h_put_16 (ABFD,VAL,PTR) : \
+bfd_h_put_8 (ABFD,VAL,(PTR)-7), bfd_h_put_8 (ABFD, 0, (PTR)-8))
+
+/* TI COFF stores section size as number of bytes (address units, not octets),
+ so adjust to be number of octets, which is what BFD expects */
+#define GET_SCNHDR_SIZE(ABFD,SZP) \
+(bfd_h_get_32(ABFD,SZP)*bfd_octets_per_byte(ABFD))
+#define PUT_SCNHDR_SIZE(ABFD,SZ,SZP) \
+bfd_h_put_32(ABFD,(SZ)/bfd_octets_per_byte(ABFD),SZP)
+
+#define COFF_ADJUST_SCNHDR_IN_POST(ABFD,EXT,INT) \
+do { ((struct internal_scnhdr *)(INT))->s_page = \
+GET_SCNHDR_PAGE(ABFD,(bfd_byte *)((SCNHDR *)(EXT))->s_page); \
+} while(0)
+
+/* The line number and reloc overflow checking in coff_swap_scnhdr_out in
+ coffswap.h doesn't use PUT_X for s_nlnno and s_nreloc.
+ Due to different sized v0/v1/v2 section headers, we have to re-write these
+ fields.
+ */
+#define COFF_ADJUST_SCNHDR_OUT_POST(ABFD,INT,EXT) \
+do { \
+PUT_SCNHDR_NLNNO(ABFD,((struct internal_scnhdr *)(INT))->s_nlnno,\
+ (bfd_byte *)((SCNHDR *)(EXT))->s_nlnno); \
+PUT_SCNHDR_NRELOC(ABFD,((struct internal_scnhdr *)(INT))->s_nreloc,\
+ (bfd_byte *)((SCNHDR *)(EXT))->s_nreloc); \
+PUT_SCNHDR_FLAGS(ABFD,((struct internal_scnhdr *)(INT))->s_flags, \
+ (bfd_byte *)((SCNHDR *)(EXT))->s_flags); \
+PUT_SCNHDR_PAGE(ABFD,((struct internal_scnhdr *)(INT))->s_page, \
+ (bfd_byte *)((SCNHDR *)(EXT))->s_page); \
+} while(0)
+
+/* Page macros
+
+ The first GDB port requires flags in its remote memory access commands to
+ distinguish between data/prog space. Hopefully we can make this go away
+ eventually. Stuff the page in the upper bits of a 32-bit address, since
+ the c5x family only uses 16 or 23 bits.
+
+ c2x, c5x and most c54x devices have 16-bit addresses, but the c548 has
+ 23-bit program addresses. Make sure the page flags don't interfere.
+ These flags are used by GDB to identify the destination page for
+ addresses.
+*/
+
+/* recognized load pages */
+#define PG_PROG 0x0 /* PROG page */
+#define PG_DATA 0x1 /* DATA page */
+
+#define ADDR_MASK 0x00FFFFFF
+#define PG_TO_FLAG(p) (((unsigned long)(p) & 0xFF) << 24)
+#define FLAG_TO_PG(f) (((f) >> 24) & 0xFF)
+
+/*
+ * names of "special" sections
+ */
+#define _TEXT ".text"
+#define _DATA ".data"
+#define _BSS ".bss"
+#define _CINIT ".cinit" /* initialized C data */
+#define _SCONST ".const" /* constants */
+#define _SWITCH ".switch" /* switch tables */
+#define _STACK ".stack" /* C stack */
+#define _SYSMEM ".sysmem" /* used for malloc et al. syscalls */
+
+/********************** LINE NUMBERS **********************/
+
+/* 1 line number entry for every "breakpointable" source line in a section.
+ * Line numbers are grouped on a per function basis; first entry in a function
+ * grouping will have l_lnno = 0 and in place of physical address will be the
+ * symbol table index of the function name.
+ */
+struct external_lineno {
+ union {
+ char l_symndx[4]; /* function name symbol index, iff l_lnno == 0*/
+ char l_paddr[4]; /* (physical) address of line number */
+ } l_addr;
+ char l_lnno[2]; /* line number */
+};
+
+#define LINENO struct external_lineno
+#define LINESZ 6
+
+
+/********************** SYMBOLS **********************/
+
+/* NOTE: this is what a local label looks like in assembly source; what it
+ looks like in COFF output is undefined */
+#define TICOFF_LOCAL_LABEL_P(NAME) \
+((NAME[0] == '$' && NAME[1] >= '0' && NAME[1] <= '9' && NAME[2] == '\0') \
+ || NAME[strlen(NAME)-1] == '?')
+
+#define E_SYMNMLEN 8 /* # characters in a symbol name */
+#define E_FILNMLEN 14 /* # characters in a file name */
+#define E_DIMNUM 4 /* # array dimensions in auxiliary entry */
+
+struct external_syment
+{
+ union {
+ char e_name[E_SYMNMLEN];
+ struct {
+ char e_zeroes[4];
+ char e_offset[4];
+ } e;
+ } e;
+ char e_value[4];
+ char e_scnum[2];
+ char e_type[2];
+ char e_sclass[1];
+ char e_numaux[1];
+};
+
+
+#define N_BTMASK (017)
+#define N_TMASK (060)
+#define N_BTSHFT (4)
+#define N_TSHIFT (2)
+
+
+union external_auxent {
+ struct {
+ char x_tagndx[4]; /* str, un, or enum tag indx */
+ union {
+ struct {
+ char x_lnno[2]; /* declaration line number */
+ char x_size[2]; /* str/union/array size */
+ } x_lnsz;
+ char x_fsize[4]; /* size of function */
+ } x_misc;
+ union {
+ struct { /* if ISFCN, tag, or .bb */
+ char x_lnnoptr[4]; /* ptr to fcn line # */
+ char x_endndx[4]; /* entry ndx past block end */
+ } x_fcn;
+ struct { /* if ISARY, up to 4 dimen. */
+ char x_dimen[E_DIMNUM][2];
+ } x_ary;
+ } x_fcnary;
+ char x_tvndx[2]; /* tv index */
+ } x_sym;
+
+ union {
+ char x_fname[E_FILNMLEN];
+ struct {
+ char x_zeroes[4];
+ char x_offset[4];
+ } x_n;
+ } x_file;
+
+ struct {
+ char x_scnlen[4]; /* section length */
+ char x_nreloc[2]; /* # relocation entries */
+ char x_nlinno[2]; /* # line numbers */
+ } x_scn;
+
+ struct {
+ char x_tvfill[4]; /* tv fill value */
+ char x_tvlen[2]; /* length of .tv */
+ char x_tvran[2][2]; /* tv range */
+ } x_tv; /* info about .tv section (in auxent of symbol .tv)) */
+
+
+};
+
+#define SYMENT struct external_syment
+#define SYMESZ 18
+#define AUXENT union external_auxent
+#define AUXESZ 18
+
+/* section lengths are in target bytes (not host bytes) */
+#define GET_SCN_SCNLEN(ABFD,EXT) \
+(bfd_h_get_32(ABFD,(bfd_byte *)(EXT)->x_scn.x_scnlen)*bfd_octets_per_byte(ABFD))
+#define PUT_SCN_SCNLEN(ABFD,INT,EXT) \
+bfd_h_put_32(ABFD,(INT)/bfd_octets_per_byte(ABFD),\
+ (bfd_byte *)(EXT)->x_scn.x_scnlen)
+
+/* lnsz size is in bits in COFF file, in bytes in BFD */
+#define GET_LNSZ_SIZE(abfd, ext) \
+(bfd_h_get_16(abfd, (bfd_byte *)ext->x_sym.x_misc.x_lnsz.x_size) / \
+ (class != C_FIELD ? 8 : 1))
+
+#define PUT_LNSZ_SIZE(abfd, in, ext) \
+ bfd_h_put_16(abfd, ((class != C_FIELD) ? (in)*8 : (in)), \
+ (bfd_byte*) ext->x_sym.x_misc.x_lnsz.x_size)
+
+/* TI COFF stores offsets for MOS and MOU in bits; BFD expects bytes */
+#define COFF_ADJUST_SYM_IN_POST(ABFD,EXT,INT) \
+do { struct internal_syment *dst = (struct internal_syment *)(INT); \
+if (dst->n_sclass == C_MOS || dst->n_sclass == C_MOU) dst->n_value /= 8; \
+} while (0)
+
+#define COFF_ADJUST_SYM_OUT_POST(ABFD,INT,EXT) \
+do { struct internal_syment *src = (struct internal_syment *)(INT); \
+SYMENT *dst = (SYMENT *)(EXT); \
+if(src->n_sclass == C_MOU || src->n_sclass == C_MOS) \
+bfd_h_put_32(abfd,src->n_value * 8,(bfd_byte *)dst->e_value); \
+} while (0)
+
+/* Detect section-relative absolute symbols so they get flagged with a sym
+ index of -1.
+*/
+#define SECTION_RELATIVE_ABSOLUTE_SYMBOL_P(RELOC,SECT) \
+((*(RELOC)->sym_ptr_ptr)->section->output_section == (SECT) \
+ && (RELOC)->howto->name[0] == 'A')
+
+/********************** RELOCATION DIRECTIVES **********************/
+
+struct external_reloc_v0 {
+ char r_vaddr[4];
+ char r_symndx[2];
+ char r_reserved[2];
+ char r_type[2];
+};
+
+struct external_reloc {
+ char r_vaddr[4];
+ char r_symndx[4];
+ char r_reserved[2]; /* extended pmad byte for COFF2 */
+ char r_type[2];
+};
+
+#define RELOC struct external_reloc
+#define RELSZ_V0 10 /* FIXME -- coffcode.h needs fixing */
+#define RELSZ 12 /* for COFF1/2 */
+
+/* various relocation types. */
+#define R_ABS 0x0000 /* no relocation */
+#define R_REL13 0x002A /* 13-bit direct reference (???) */
+#define R_PARTLS7 0x0028 /* 7 LSBs of an address */
+#define R_PARTMS9 0x0029 /* 9MSBs of an address */
+#define R_EXTWORD 0x002B /* 23-bit direct reference */
+#define R_EXTWORD16 0x002C /* 16-bit direct reference to 23-bit addr*/
+#define R_EXTWORDMS7 0x002D /* upper 7 bits of 23-bit address */
+
+#endif /* COFF_TI_H */
diff --git a/contrib/binutils/include/demangle.h b/contrib/binutils/include/demangle.h
index 61dd230..7fb6259 100644
--- a/contrib/binutils/include/demangle.h
+++ b/contrib/binutils/include/demangle.h
@@ -37,10 +37,11 @@
same as ARM except for
template arguments, etc. */
#define DMGL_EDG (1 << 13)
-#define DMGL_GNU_NEW_ABI (1 << 14)
+#define DMGL_GNU_V3 (1 << 14)
+#define DMGL_GNAT (1 << 15)
/* If none of these are set, use 'current_demangling_style' as the default. */
-#define DMGL_STYLE_MASK (DMGL_AUTO|DMGL_GNU|DMGL_LUCID|DMGL_ARM|DMGL_HP|DMGL_EDG|DMGL_GNU_NEW_ABI)
+#define DMGL_STYLE_MASK (DMGL_AUTO|DMGL_GNU|DMGL_LUCID|DMGL_ARM|DMGL_HP|DMGL_EDG|DMGL_GNU_V3|DMGL_JAVA|DMGL_GNAT)
/* Enumeration of possible demangling styles.
@@ -59,7 +60,9 @@ extern enum demangling_styles
arm_demangling = DMGL_ARM,
hp_demangling = DMGL_HP,
edg_demangling = DMGL_EDG,
- gnu_new_abi_demangling = DMGL_GNU_NEW_ABI
+ gnu_v3_demangling = DMGL_GNU_V3,
+ java_demangling = DMGL_JAVA,
+ gnat_demangling = DMGL_GNAT
} current_demangling_style;
/* Define string names for the various demangling styles. */
@@ -70,7 +73,9 @@ extern enum demangling_styles
#define ARM_DEMANGLING_STYLE_STRING "arm"
#define HP_DEMANGLING_STYLE_STRING "hp"
#define EDG_DEMANGLING_STYLE_STRING "edg"
-#define GNU_NEW_ABI_DEMANGLING_STYLE_STRING "gnu-new-abi"
+#define GNU_V3_DEMANGLING_STYLE_STRING "gnu-v3"
+#define JAVA_DEMANGLING_STYLE_STRING "java"
+#define GNAT_DEMANGLING_STYLE_STRING "gnat"
/* Some macros to test what demangling style is active. */
@@ -81,7 +86,9 @@ extern enum demangling_styles
#define ARM_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_ARM)
#define HP_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_HP)
#define EDG_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_EDG)
-#define GNU_NEW_ABI_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_GNU_NEW_ABI)
+#define GNU_V3_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_GNU_V3)
+#define JAVA_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_JAVA)
+#define GNAT_DEMANGLING (((int) CURRENT_DEMANGLING_STYLE) & DMGL_GNAT)
/* Provide information about the available demangle styles. This code is
pulled from gdb into libiberty because it is useful to binutils also. */
@@ -113,8 +120,8 @@ cplus_demangle_set_style PARAMS ((enum demangling_styles style));
extern enum demangling_styles
cplus_demangle_name_to_style PARAMS ((const char *name));
-/* New-ABI demangling entry point, defined in cp-demangle.c. */
+/* V3 ABI demangling entry point, defined in cp-demangle.c. */
extern char*
-cplus_demangle_new_abi PARAMS ((const char* mangled));
+cplus_demangle_v3 PARAMS ((const char* mangled));
#endif /* DEMANGLE_H */
diff --git a/contrib/binutils/include/dis-asm.h b/contrib/binutils/include/dis-asm.h
index 6e6c04b..5c9d8d8 100644
--- a/contrib/binutils/include/dis-asm.h
+++ b/contrib/binutils/include/dis-asm.h
@@ -56,6 +56,11 @@ typedef struct disassemble_info {
/* Endianness (for bi-endian cpus). Mono-endian cpus can ignore this. */
enum bfd_endian endian;
+ /* Some targets need information about the current section to accurately
+ display insns. If this is NULL, the target disassembler function
+ will have to make its best guess. */
+ asection *section;
+
/* An array of pointers to symbols either at the location being disassembled
or at the start of the function being disassembled. The array is sorted
so that the first symbol is intended to be the one used. The others are
@@ -157,7 +162,10 @@ extern int print_insn_big_mips PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_little_mips PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_i386_att PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_i386_intel PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_ia64 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_i370 PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_m68hc11 PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_m68hc12 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_m68k PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_z8001 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_z8002 PARAMS ((bfd_vma, disassemble_info*));
@@ -166,12 +174,13 @@ extern int print_insn_h8300h PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_h8300s PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_h8500 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_alpha PARAMS ((bfd_vma, disassemble_info*));
-extern disassembler_ftype arc_get_disassembler PARAMS ((int, int));
+extern disassembler_ftype arc_get_disassembler PARAMS ((void *));
extern int print_insn_big_arm PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_little_arm PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_sparc PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_big_a29k PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_little_a29k PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_i860 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_i960 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_sh PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_shl PARAMS ((bfd_vma, disassemble_info*));
@@ -187,11 +196,13 @@ extern int print_insn_big_powerpc PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_little_powerpc PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_rs6000 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_w65 PARAMS ((bfd_vma, disassemble_info*));
+extern disassembler_ftype cris_get_disassembler PARAMS ((bfd *));
extern int print_insn_d10v PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_d30v PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_v850 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_tic30 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_vax PARAMS ((bfd_vma, disassemble_info*));
+extern int print_insn_tic54x PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_tic80 PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_pj PARAMS ((bfd_vma, disassemble_info*));
extern int print_insn_avr PARAMS ((bfd_vma, disassemble_info*));
@@ -245,13 +256,15 @@ extern int generic_symbol_at_address
/* Call this macro to initialize only the internal variables for the
disassembler. Architecture dependent things such as byte order, or machine
variant are not touched by this macro. This makes things much easier for
- GDB which must initialize these things seperatly. */
+ GDB which must initialize these things separately. */
#define INIT_DISASSEMBLE_INFO_NO_ARCH(INFO, STREAM, FPRINTF_FUNC) \
(INFO).fprintf_func = (fprintf_ftype)(FPRINTF_FUNC), \
(INFO).stream = (PTR)(STREAM), \
+ (INFO).section = NULL, \
(INFO).symbols = NULL, \
(INFO).num_symbols = 0, \
+ (INFO).private_data = NULL, \
(INFO).buffer = NULL, \
(INFO).buffer_vma = 0, \
(INFO).buffer_length = 0, \
diff --git a/contrib/binutils/include/elf/ChangeLog b/contrib/binutils/include/elf/ChangeLog
index ba8bf9f..05e73b8 100644
--- a/contrib/binutils/include/elf/ChangeLog
+++ b/contrib/binutils/include/elf/ChangeLog
@@ -1,15 +1,130 @@
-2000-10-14 Philip Blundell <philb@gnu.org>
+2001-01-11 Peter Targett <peter.targett@arccores.com>
- From 2000-07-19 H.J. Lu <hjl@gnu.org>
+ * arc.h (E_ARC_MACH_ARC5, E_ARC_MACH_ARC6, E_ARC_MACH_ARC7,
+ E_ARC_MACH_ARC8): New definitions for cpu types.
+
+ * common.h (EM_ARC): Change comment.
+
+2000-12-12 Nick Clifton <nickc@redhat.com>
+
+ * mips.h: Fix formatting.
+
+2000-12-11 Jeffrey A Law (law@cygnus.com)
+
+ * hppa.h (DT_HP_*): Define relative to OLD_DT_LOOS for hpux
+ compatibility.
+
+2000-10-16 Chris Demetriou <cgd@sibyte.com>
+
+ * mips.h (E_MIPS_ARCH_32): New constant.
+ (E_MIPS_MACH_MIPS32, E_MIPS_MACH_MIPS32_4K): Replace the
+ former with the latter.
+
+ * mips.h (E_MIPS_ARCH_5, E_MIPS_ARCH_64): New definitions.
+
+ * mips.h (E_MIPS_MACH_SB1): New constant.
+
+2000-11-30 Jan Hubicka <jh@suse.cz>
+
+ * common.h (EM_X86_64): New macro.
+ * x86-64.h: New file.
+
+2000-11-27 Hans-Peter Nilsson <hp@axis.com>
+
+ * common.h (e_machine numbers): Clarify comments to describe how
+ EM_* constants are assigned. Move EM_PJ from official section to
+ ad-hoc section.
+ (EM_CRIS): Correct comment to match official description.
+ (EM_MMIX): Ditto.
+
+2000-11-22 Nick Clifton <nickc@redhat.com>
+
+ * common.h (EM_JAVELIN): New machine number.
+ (EM_FIREPATH): New machine number.
+ (EM_ZSP): New machine number.
+ (EM_MMIX): New machine number.
+ (EM_HUANY): New machine number.
+ (EM_PRISM): New machine number.
+ (SHT_GROUP): New section type.
+ (SHT_SYMTAB_SHNDX): New section type.
+ (SHF_GROUP): New section flag.
+ (SHN_XINDEX): New section index.
+ (GRP_COMDAT): New section group flag.
+
+2000-11-20 H.J. Lu <hjl@gnu.org>
+
+ * common.h (ELFOSABI_MONTEREY): Renamed to ...
+ (ELFOSABI_AIX): This.
+
+2000-11-16 Richard Henderson <rth@redhat.com>
+
+ Update relocations per August psABI docs.
+ * ia64.h (R_IA64_SEGBASE): Remove.
+ (R_IA64_LTV*): Renumber to 0x74 to 0x77.
+ (R_IA64_EPLTMSB, R_IA64_EPLTLSB): Remove.
+ (R_IA64_TPREL14, R_IA64_TPREL64I): New.
+ (R_IA64_DTPMOD*): New.
+ (R_IA64_DTPREL*): New.
+
+2000-09-29 Hans-Peter Nilsson <hp@axis.com>
+
+ * cris.h (EF_CRIS_UNDERSCORE): New.
+
+2000-09-27 Alan Modra <alan@linuxcare.com.au>
+
+ * hppa.h (R_PARISC_DIR14F): Add.
+
+2000-09-14 Alexandre Oliva <aoliva@redhat.com>
+
+ * sh.h (R_SH_GOT32, R_SH_PLT32, R_SH_COPY, R_SH_GLOB_DAT,
+ R_SH_JMP_SLOT, R_SH_RELATIVE, R_SH_GOTOFF, R_SH_GOTPC): Change
+ numbers to the range from 160 to 167.
+ (R_SH_FIRST_INVALID_RELOC): Adjust.
+ (R_SH_FIRST_INVALID_RELOC_2, R_SH_LAST_INVALID_RELOC_2):
+ New relocs to fill in the gap.
+
+2000-09-13 Anders Norlander <anorland@acc.umu.se>
+
+ * mips.h (E_MIPS_MACH_4K): New define.
+
+2000-09-05 Alan Modra <alan@linuxcare.com.au>
+
+ * hppa.h: Fix a comment.
+ (R_PARISC_PCREL12F): Define.
+ (R_PARISC_GNU_VTENTRY): Define.
+ (R_PARISC_GNU_VTINHERIT): Define.
+
+2000-09-01 Alexandre Oliva <aoliva@redhat.com>
+
+ * sh.h (R_SH_GOT32, R_SH_PLT32, R_SH_COPY, R_SH_GLOB_DAT,
+ R_SH_JMP_SLOT, R_SH_RELATIVE, R_SH_GOTOFF, R_SH_GOTPC): New relocs.
+ (R_SH_FIRST_INVALID_RELOC): Adjust.
+
+2000-08-14 Jim Wilson <wilson@cygnus.com>
+
+ * elf/ia64.h (EF_IA_64_REDUCEDFP, EF_IA_64_CONS_GP,
+ EF_IA_64_NOFUNCDESC_CONS_GP, EF_IA_64_ABSOLUTE): Define.
+
+2000-08-07 Nick Clifton <nickc@cygnus.com>
+
+ * ppc.h: Remove spurious CYGNUS LOCAL comments.
+ * v850.h: Likewise.
+
+2000-07-20 Hans-Peter Nilsson <hp@axis.com>
+
+ common.h (EM_CRIS): New machine number.
+ cris.h: New file.
+
+2000-07-19 H.J. Lu <hjl@gnu.org>
* common.h (DF_1_NODEFLIB): Renamed from DF_1_NODEPLIB.
- From 2000-07-19 H.J. Lu <hjl@gnu.org>
+2000-07-19 H.J. Lu <hjl@gnu.org>
* common.h (DT_CHECKSUM): Set to 0x6ffffdf8.
(DTF_1_CONFEXP): It is 0x00000002 as suspected.
- From 2000-07-19 H.J. Lu <hjl@gnu.org>
+2000-07-19 H.J. Lu <hjl@gnu.org>
* common.h (DT_FEATURE): Renamed from DT_FEATURE_1.
(DT_CONFIG): New. From Solaris 8.
@@ -23,16 +138,83 @@
(DT_CHECKSUM): Likewise. FIXME. Check the value on Solaris 8.
(DTF_1_CONFEXP): Likewise.
- From 2000-07-18 H.J. Lu <hjl@gnu.org>
+2000-07-18 H.J. Lu <hjl@gnu.org>
* common.h (DT_FLAGS_1): Renamed from DT_1_FLAGS.
+2000-07-12 Alan Modra <alan@linuxcare.com.au>
+
+ * internal.h (struct elf_internal_sym): Update comment for st_other.
+
+2000-07-10 Alan Modra <alan@linuxcare.com.au>
+
+ * hppa.h: Add comments to all the relocs.
+
+2000-06-26 Marek Michalkiewicz <marekm@linux.org.pl>
+
+ * avr.h (E_AVR_MACH_AVR5): Define.
+
+2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
+
+ * m68hc11.h: New file, definitions for the Motorola 68hc11.
+
+2000-06-06 Alan Modra <alan@linuxcare.com.au>
+
+ * reloc-macros.h (START_RELOC_NUMBERS): Don't define initial dummy
+ -1 valued enum.
+ (RELOC_NUMBER, FAKE_RELOC, EMPTY_RELOC): Append rather than
+ prepend comma.
+ (END_RELOC_NUMBERS): Give macro an arg to define as last enum.
+
+ * alpha.h (R_ALPHA_max): Define via END_RELOC_NUMBERS rather than
+ with EMPTY_RELOC.
+ * arc.h (R_ARC_max): Likewise.
+ * avr.h (R_AVR_max): Likewise.
+ * fr30.h (R_FR30_max): Likewise.
+ * hppa.h (R_PARISC_UNIMPLEMENTED): Likewise.
+ * i960.h (R_960_max): Likewise.
+ * m32r.h (R_M32R_max): Likewise.
+ * m68k.h (R_68K_max): Likewise.
+ * mcore.h (R_MCORE_max): Likewise.
+ * mn10300.h (R_MN10300_MAX): Likewise.
+ * pj.h (R_PJ_max): Likewise.
+ * ppc.h (R_PPC_max): Likewise.
+ * sh.h (R_SH_max): Likewise.
+ * sparc.h (R_SPARC_max): Likewise.
+ * v850.h (R_V850_max): Likewise.
+
+ * arm.h (R_ARM_max): Define via END_RELOC_NUMBERS.
+ * d10v.h (R_D10V_max): Likewise.
+ * d30v.h (R_D30V_max): Likewise.
+ * ia64.h (R_IA64_max): Likewise.
+ * mips.h (R_MIPS_maxext): Likewise.
+ * mn10200.h (R_MN10200_max): Likewise.
+
+ * i386.h (R_386_max): Remove old RELOC_NUMBER definition, and
+ define via END_RELOC_NUMBERS.
+
+2000-06-03 Alan Modra <alan@linuxcare.com.au>
+
+ * reloc-macros.h (START_RELOC_NUMBERS): Fix name clash for
+ !__STDC__ case.
+ (RELOC_NUMBER): Use ansi stringify if ALMOST_STDC defined.
+
+2000-05-22 Richard Henderson <rth@cygnus.com>
+
+ * ia64.h (R_IA64_PCREL60B, R_IA64_PCREL21BI): New.
+ (R_IA64_PCREL22, R_IA64_PCREL64I): New.
+
2000-05-02 H.J. Lu <hjl@gnu.org>
* common.h (ELFOSABI_NONE): Renamed from ELFOSABI_SYSV.
(ELFOSABI_MODESTO): Defined.
(ELFOSABI_OPENBSD): Likewise.
+Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com>
+ David Mosberger <davidm@hpl.hp.com>
+
+ * ia64.h: New file.
+
2000-04-14 H.J. Lu <hjl@gnu.org>
* common.h (ELFOSABI_TRUE64): Renamed to ELFOSABI_TRU64.
@@ -47,6 +229,26 @@
(ELFOSABI_FREEBSD): Likewise.
(ELFOSABI_TRUE64): Likewise.
+2000-04-07 Nick Clifton <nickc@cygnus.com>
+
+ * arm-oabi.h: Delete.
+ * arm.h: Merge in definitions of old reloc numbers from
+ arm-oabi.h.
+
+2000-04-06 Nick Clifton <nickc@cygnus.com>
+
+ * arm.h (EF_ARM_SYMSARESORTED): Define.
+ (EF_ARM_EABIMASK): Define.
+ (EF_ARM_EABI_VERSION): Define.
+ (EF_ARM_EABI_UNKNOWN): Define.
+ (EF_ARM_EABI_VER1): Define.
+ (PF_ARM_PI): Define.
+ (PF_ARM_ABS): Define.
+
+Wed Apr 5 22:08:59 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * sh.h (R_SH_LOOP_START, R_SH_LOOP_END): New RELOC_NUMBERs.
+
2000-03-27 Denis Chertykov <denisc@overta.ru>
* avr.h: New file. AVR ELF support for BFD.
@@ -55,8 +257,8 @@
2000-03-10 Geoffrey Keating <geoffk@cygnus.com>
* mips.h: Add R_MIPS_GNU_REL_HI16, R_MIPS_GNU_REL_LO16,
- R_MIPS_GNU_REL16_S2, R_MIPS_PC64 and R_MIPS_PC32 relocation
- numbers.
+ R_MIPS_GNU_REL16_S2, R_MIPS_PC64 and R_MIPS_PC32 relocation
+ numbers.
2000-02-23 Linas Vepstas <linas@linas.org>
@@ -85,7 +287,7 @@ Thu Feb 17 00:18:33 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
2000-01-27 Thomas de Lellis <tdel@windriver.com>
- * arm.h (STT_ARM_TFUNC): Define in terms of STT_LOPROC.
+ * arm.h (STT_ARM_TFUNC): Define in terms of STT_LOPROC.
(STT_ARM_16BIT): New flag. Denotes a label that was defined in
Thumb block but was does not identify a function.
@@ -112,12 +314,12 @@ Thu Feb 17 00:18:33 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
2000-01-10 Egor Duda <deo@logos-m.ru>
- * common.h (NT_WIN32PSTATUS): Define. (cygwin elf core dumps).
+ * common.h (NT_WIN32PSTATUS): Define. (cygwin elf core dumps).
1999-12-28 Nick Clifton <nickc@cygnus.com>
* mips.h (STO_*): Redefine in terms of STV_* values now in
- common.h.
+ common.h.
1999-12-27 Nick Clifton <nickc@cygnus.com>
@@ -175,7 +377,7 @@ Thu Feb 17 00:18:33 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
* i960.h (reloc-macros.h): Include using relative dir elf/.
* i386.h (reloc-macros.h): Include using relative dir elf/.
* hppa.h (reloc-macros.h): Include using relative dir elf/.
-
+
1999-12-07 Jim Blandy <jimb@cygnus.com>
* common.h (NT_PRXFPREG): New definition.
@@ -284,9 +486,9 @@ Wed Jun 9 15:16:34 1999 Jeffrey A Law (law@cygnus.com)
* mcore.h (R_MCORE_RELATIVE): Define.
-999-05-05 Catherine Moore <clm@cygnus.com>
+1999-05-05 Catherine Moore <clm@cygnus.com>
- * m68k.h (EF_CPU32): Define.
+ * m68k.h (EF_CPU32): Define.
1999-04-21 Nick Clifton <nickc@cygnus.com>
@@ -344,10 +546,10 @@ Thu Feb 18 18:58:26 1999 Ian Lance Taylor <ian@cygnus.com>
Mon Feb 1 11:33:56 1999 Catherine Moore <clm@cygnus.com>
- * arm.h: Renumber relocs to conform to standard.
- (EF_NEW_ABI): Define.
- (EF_OLD_ABI): Define.
- * arm-oabi.h: New file.
+ * arm.h: Renumber relocs to conform to standard.
+ (EF_NEW_ABI): Define.
+ (EF_OLD_ABI): Define.
+ * arm-oabi.h: New file.
1999-01-28 Nick Clifton <nickc@cygnus.com>
@@ -384,7 +586,7 @@ Tue Nov 10 15:12:28 1998 Nick Clifton <nickc@cygnus.com>
Tue Nov 10 15:17:28 1998 Catherine Moore <clm@cygnus.com>
- * d10v.h: Add vtable relocs.
+ * d10v.h: Add vtable relocs.
Wed Nov 4 15:56:50 1998 Nick Clifton <nickc@cygnus.com>
@@ -394,9 +596,9 @@ Wed Nov 4 15:56:50 1998 Nick Clifton <nickc@cygnus.com>
Fri Oct 30 11:54:15 1998 Catherine Moore <clm@cygnus.com>
- From Philip Blundell <pb@nexus.co.uk>:
- * arm.h (R_ARM_COPY, et al.): New relocs, used by Linux for PIC.
- (EF_ALIGN8): New flag.
+ From Philip Blundell <pb@nexus.co.uk>:
+ * arm.h (R_ARM_COPY, et al.): New relocs, used by Linux for PIC.
+ (EF_ALIGN8): New flag.
Tue Oct 20 11:19:50 1998 Ian Lance Taylor <ian@cygnus.com>
@@ -404,25 +606,25 @@ Tue Oct 20 11:19:50 1998 Ian Lance Taylor <ian@cygnus.com>
Mon Oct 19 20:24:11 1998 Catherine Moore <clm@cygnus.com>
- * sh.h: Add vtable relocs.
+ * sh.h: Add vtable relocs.
Mon Oct 19 01:44:42 1998 Felix Lee <flee@cygnus.com>
* common.h (NT_PSTATUS, NT_FPREGS, NT_PSINFO,
- NT_LWPSTATUS,NT_LWPSINFO): added.
+ NT_LWPSTATUS,NT_LWPSINFO): added.
* internal.h (Elf_Internal_Note): new structure members.
Fri Oct 16 14:11:25 1998 Catherine Moore <clm@cygnus.com>
- * m32r.h: Add vtable relocs.
+ * m32r.h: Add vtable relocs.
Tue Oct 6 09:22:22 1998 Catherine Moore <clm@cygnus.com>
- * sparc.h: Add vtable relocs.
+ * sparc.h: Add vtable relocs.
Mon Oct 5 09:39:22 1998 Catherine Moore <clm@cygnus.com>
- * v850.h: Add vtable relocs.
+ * v850.h: Add vtable relocs.
Sun Oct 4 21:17:51 1998 Ian Lance Taylor <ian@cygnus.com>
@@ -430,7 +632,7 @@ Sun Oct 4 21:17:51 1998 Ian Lance Taylor <ian@cygnus.com>
Mon Sep 21 12:24:44 1998 Catherine Moore <clm@cygnus.com>
- * i386.h: Change vtable reloc numbers.
+ * i386.h: Change vtable reloc numbers.
Sun Sep 20 00:54:22 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
@@ -438,12 +640,12 @@ Sun Sep 20 00:54:22 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.
Tue Sep 15 09:56:49 CDT 1998 Catherine Moore <clm@cygnus.com>
- * arm.h: Add vtable relocs.
+ * arm.h: Add vtable relocs.
Mon Aug 31 11:25:27 1998 Catherine Moore <clm@cygnus.com>
- * arm.h: Define STT_ARM_TFUNC. Remove ST_THUMB_xxxx
- definitions.
+ * arm.h: Define STT_ARM_TFUNC. Remove ST_THUMB_xxxx
+ definitions.
Sat Aug 29 22:25:51 1998 Richard Henderson <rth@cygnus.com>
@@ -460,7 +662,7 @@ Sat Aug 29 22:25:51 1998 Richard Henderson <rth@cygnus.com>
Sun Aug 9 20:26:49 CDT 1998 Catherine Moore <clm@cygnus.com>
- * arm.h: Add ST_THUMB definitions.
+ * arm.h: Add ST_THUMB definitions.
Wed Aug 5 15:52:35 1998 Nick Clifton <nickc@cygnus.com>
@@ -476,7 +678,7 @@ Wed Aug 5 15:52:35 1998 Nick Clifton <nickc@cygnus.com>
Fri Jul 31 10:01:40 1998 Catherine Moore <clm@cygnus.com>
- * arm.h: Add R_ARM_THM_PC9 relocation.
+ * arm.h: Add R_ARM_THM_PC9 relocation.
1998-07-30 16:25 Ulrich Drepper <drepper@cygnus.com>
@@ -496,7 +698,7 @@ Fri Jul 24 11:22:06 1998 Jeffrey A Law (law@cygnus.com)
Wed Jul 22 19:29:00 Catherine Moore <clm@cygnus.com>
- * arm.h: Rename relocations.
+ * arm.h: Rename relocations.
1998-07-22 Ulrich Drepper <drepper@cygnus.com>
diff --git a/contrib/binutils/include/elf/alpha.h b/contrib/binutils/include/elf/alpha.h
index 1ae9d5e..d353434 100644
--- a/contrib/binutils/include/elf/alpha.h
+++ b/contrib/binutils/include/elf/alpha.h
@@ -1,5 +1,5 @@
/* ALPHA ELF support for BFD.
- Copyright (C) 1996, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1996, 98, 2000 Free Software Foundation, Inc.
By Eric Youngdale, <eric@aib.com>. No processor supplement available
for this platform.
@@ -102,7 +102,6 @@ START_RELOC_NUMBERS (elf_alpha_reloc_type)
RELOC_NUMBER (R_ALPHA_JMP_SLOT, 26) /* Create PLT entry */
RELOC_NUMBER (R_ALPHA_RELATIVE, 27) /* Adjust by program base */
- EMPTY_RELOC (R_ALPHA_max)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_ALPHA_max)
#endif /* _ELF_ALPHA_H */
diff --git a/contrib/binutils/include/elf/arc.h b/contrib/binutils/include/elf/arc.h
index 334b55f..a8d0a74 100644
--- a/contrib/binutils/include/elf/arc.h
+++ b/contrib/binutils/include/elf/arc.h
@@ -1,5 +1,5 @@
/* ARC ELF support for BFD.
- Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+ Copyright (C) 1995, 97, 98, 2000 Free Software Foundation, Inc.
Contributed by Doug Evans, (dje@cygnus.com)
This file is part of BFD, the Binary File Descriptor library.
@@ -26,29 +26,31 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "elf/reloc-macros.h"
/* Relocations. */
+
START_RELOC_NUMBERS (elf_arc_reloc_type)
RELOC_NUMBER (R_ARC_NONE, 0)
RELOC_NUMBER (R_ARC_32, 1)
RELOC_NUMBER (R_ARC_B26, 2)
RELOC_NUMBER (R_ARC_B22_PCREL, 3)
- EMPTY_RELOC (R_ARC_max)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_ARC_max)
/* Processor specific flags for the ELF header e_flags field. */
/* Four bit ARC machine type field. */
-#define EF_ARC_MACH 0x0000000f
+
+#define EF_ARC_MACH 0x0000000f
/* Various CPU types. */
-#define E_ARC_MACH_BASE 0x00000000
-#define E_ARC_MACH_UNUSED1 0x00000001
-#define E_ARC_MACH_UNUSED2 0x00000002
-#define E_ARC_MACH_UNUSED4 0x00000003
-/* Leave bits 0xf0 alone in case we ever have more than 16 cpu types.
- Highly unlikely, but what the heck. */
+#define E_ARC_MACH_ARC5 0
+#define E_ARC_MACH_ARC6 1
+#define E_ARC_MACH_ARC7 2
+#define E_ARC_MACH_ARC8 3
+
+/* Leave bits 0xf0 alone in case we ever have more than 16 cpu types. */
/* File contains position independent code. */
-#define EF_ARC_PIC 0x00000100
+
+#define EF_ARC_PIC 0x00000100
#endif /* _ELF_ARC_H */
diff --git a/contrib/binutils/include/elf/arm.h b/contrib/binutils/include/elf/arm.h
index 4d3405d..0499251 100644
--- a/contrib/binutils/include/elf/arm.h
+++ b/contrib/binutils/include/elf/arm.h
@@ -34,6 +34,14 @@
#define EF_OLD_ABI 0x100
#define EF_SOFT_FLOAT 0x200
+/* Other constants defined in the ARM ELF spec. version A-08. */
+#define EF_ARM_SYMSARESORTED 0x04 /* NB conflicts with EF_INTERWORK */
+#define EF_ARM_EABIMASK 0xFF000000
+
+#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
+#define EF_ARM_EABI_UNKNOWN 0x00000000
+#define EF_ARM_EABI_VER1 0x01000000
+
/* Local aliases for some flags to match names used by COFF port. */
#define F_INTERWORK EF_INTERWORK
#define F_APCS26 EF_APCS_26
@@ -51,49 +59,71 @@
/* ARM-specific program header flags. */
#define PF_ARM_SB 0x10000000 /* Segment contains the location addressed by the static base. */
+#define PF_ARM_PI 0x20000000 /* Segment is position-independent. */
+#define PF_ARM_ABS 0x40000000 /* Segment must be loaded at its base address. */
/* Relocation types. */
+
START_RELOC_NUMBERS (elf_arm_reloc_type)
- RELOC_NUMBER (R_ARM_NONE, 0)
- RELOC_NUMBER (R_ARM_PC24, 1)
- RELOC_NUMBER (R_ARM_ABS32, 2)
- RELOC_NUMBER (R_ARM_REL32, 3)
- RELOC_NUMBER (R_ARM_PC13, 4)
- RELOC_NUMBER (R_ARM_ABS16, 5)
- RELOC_NUMBER (R_ARM_ABS12, 6)
- RELOC_NUMBER (R_ARM_THM_ABS5, 7)
- RELOC_NUMBER (R_ARM_ABS8, 8)
- RELOC_NUMBER (R_ARM_SBREL32, 9)
- RELOC_NUMBER (R_ARM_THM_PC22, 10)
- RELOC_NUMBER (R_ARM_THM_PC8, 11)
- RELOC_NUMBER (R_ARM_AMP_VCALL9, 12)
- RELOC_NUMBER (R_ARM_SWI24, 13)
- RELOC_NUMBER (R_ARM_THM_SWI8, 14)
- RELOC_NUMBER (R_ARM_XPC25, 15)
- RELOC_NUMBER (R_ARM_THM_XPC22, 16)
- RELOC_NUMBER (R_ARM_COPY, 20) /* copy symbol at runtime */
- RELOC_NUMBER (R_ARM_GLOB_DAT, 21) /* create GOT entry */
- RELOC_NUMBER (R_ARM_JUMP_SLOT, 22) /* create PLT entry */
- RELOC_NUMBER (R_ARM_RELATIVE, 23) /* adjust by program base */
- RELOC_NUMBER (R_ARM_GOTOFF, 24) /* 32 bit offset to GOT */
- RELOC_NUMBER (R_ARM_GOTPC, 25) /* 32 bit PC relative offset to GOT */
- RELOC_NUMBER (R_ARM_GOT32, 26) /* 32 bit GOT entry */
- RELOC_NUMBER (R_ARM_PLT32, 27) /* 32 bit PLT address */
- FAKE_RELOC (FIRST_INVALID_RELOC1, 28)
- FAKE_RELOC (LAST_INVALID_RELOC1, 99)
- RELOC_NUMBER (R_ARM_GNU_VTENTRY, 100)
- RELOC_NUMBER (R_ARM_GNU_VTINHERIT, 101)
- RELOC_NUMBER (R_ARM_THM_PC11, 102) /* Cygnus extension to abi: Thumb unconditional branch */
- RELOC_NUMBER (R_ARM_THM_PC9, 103) /* Cygnus extension to abi: Thumb conditional branch */
+ RELOC_NUMBER (R_ARM_NONE, 0)
+ RELOC_NUMBER (R_ARM_PC24, 1)
+ RELOC_NUMBER (R_ARM_ABS32, 2)
+ RELOC_NUMBER (R_ARM_REL32, 3)
+#ifdef OLD_ARM_ABI
+ RELOC_NUMBER (R_ARM_ABS8, 4)
+ RELOC_NUMBER (R_ARM_ABS16, 5)
+ RELOC_NUMBER (R_ARM_ABS12, 6)
+ RELOC_NUMBER (R_ARM_THM_ABS5, 7)
+ RELOC_NUMBER (R_ARM_THM_PC22, 8)
+ RELOC_NUMBER (R_ARM_SBREL32, 9)
+ RELOC_NUMBER (R_ARM_AMP_VCALL9, 10)
+ RELOC_NUMBER (R_ARM_THM_PC11, 11) /* Cygnus extension to abi: Thumb unconditional branch. */
+ RELOC_NUMBER (R_ARM_THM_PC9, 12) /* Cygnus extension to abi: Thumb conditional branch. */
+ RELOC_NUMBER (R_ARM_GNU_VTINHERIT, 13)
+ RELOC_NUMBER (R_ARM_GNU_VTENTRY, 14)
+#else /* not OLD_ARM_ABI */
+ RELOC_NUMBER (R_ARM_PC13, 4)
+ RELOC_NUMBER (R_ARM_ABS16, 5)
+ RELOC_NUMBER (R_ARM_ABS12, 6)
+ RELOC_NUMBER (R_ARM_THM_ABS5, 7)
+ RELOC_NUMBER (R_ARM_ABS8, 8)
+ RELOC_NUMBER (R_ARM_SBREL32, 9)
+ RELOC_NUMBER (R_ARM_THM_PC22, 10)
+ RELOC_NUMBER (R_ARM_THM_PC8, 11)
+ RELOC_NUMBER (R_ARM_AMP_VCALL9, 12)
+ RELOC_NUMBER (R_ARM_SWI24, 13)
+ RELOC_NUMBER (R_ARM_THM_SWI8, 14)
+ RELOC_NUMBER (R_ARM_XPC25, 15)
+ RELOC_NUMBER (R_ARM_THM_XPC22, 16)
+#endif /* not OLD_ARM_ABI */
+ RELOC_NUMBER (R_ARM_COPY, 20) /* Copy symbol at runtime. */
+ RELOC_NUMBER (R_ARM_GLOB_DAT, 21) /* Create GOT entry. */
+ RELOC_NUMBER (R_ARM_JUMP_SLOT, 22) /* Create PLT entry. */
+ RELOC_NUMBER (R_ARM_RELATIVE, 23) /* Adjust by program base. */
+ RELOC_NUMBER (R_ARM_GOTOFF, 24) /* 32 bit offset to GOT. */
+ RELOC_NUMBER (R_ARM_GOTPC, 25) /* 32 bit PC relative offset to GOT. */
+ RELOC_NUMBER (R_ARM_GOT32, 26) /* 32 bit GOT entry. */
+ RELOC_NUMBER (R_ARM_PLT32, 27) /* 32 bit PLT address. */
+#ifdef OLD_ARM_ABI
+ FAKE_RELOC (FIRST_INVALID_RELOC, 28)
+ FAKE_RELOC (LAST_INVALID_RELOC, 249)
+#else /* not OLD_ARM_ABI */
+ FAKE_RELOC (FIRST_INVALID_RELOC1, 28)
+ FAKE_RELOC (LAST_INVALID_RELOC1, 99)
+ RELOC_NUMBER (R_ARM_GNU_VTENTRY, 100)
+ RELOC_NUMBER (R_ARM_GNU_VTINHERIT, 101)
+ RELOC_NUMBER (R_ARM_THM_PC11, 102) /* Cygnus extension to abi: Thumb unconditional branch. */
+ RELOC_NUMBER (R_ARM_THM_PC9, 103) /* Cygnus extension to abi: Thumb conditional branch. */
FAKE_RELOC (FIRST_INVALID_RELOC2, 104)
FAKE_RELOC (LAST_INVALID_RELOC2, 248)
- RELOC_NUMBER (R_ARM_RXPC25, 249)
- RELOC_NUMBER (R_ARM_RSBREL32, 250)
- RELOC_NUMBER (R_ARM_THM_RPC22, 251)
- RELOC_NUMBER (R_ARM_RREL32, 252)
- RELOC_NUMBER (R_ARM_RABS32, 253)
- RELOC_NUMBER (R_ARM_RPC24, 254)
- RELOC_NUMBER (R_ARM_RBASE, 255)
-END_RELOC_NUMBERS
-
-#endif
+ RELOC_NUMBER (R_ARM_RXPC25, 249)
+#endif /* not OLD_ARM_ABI */
+ RELOC_NUMBER (R_ARM_RSBREL32, 250)
+ RELOC_NUMBER (R_ARM_THM_RPC22, 251)
+ RELOC_NUMBER (R_ARM_RREL32, 252)
+ RELOC_NUMBER (R_ARM_RABS32, 253)
+ RELOC_NUMBER (R_ARM_RPC24, 254)
+ RELOC_NUMBER (R_ARM_RBASE, 255)
+END_RELOC_NUMBERS (R_ARM_max)
+
+#endif /* _ELF_ARM_H */
diff --git a/contrib/binutils/include/elf/avr.h b/contrib/binutils/include/elf/avr.h
index 1527455..09cdf7b 100644
--- a/contrib/binutils/include/elf/avr.h
+++ b/contrib/binutils/include/elf/avr.h
@@ -30,6 +30,7 @@ along with this program; if not, write to the Free Software Foundation, Inc.,
#define E_AVR_MACH_AVR2 2
#define E_AVR_MACH_AVR3 3
#define E_AVR_MACH_AVR4 4
+#define E_AVR_MACH_AVR5 5
/* Relocations. */
START_RELOC_NUMBERS (elf_avr_reloc_type)
@@ -52,7 +53,6 @@ START_RELOC_NUMBERS (elf_avr_reloc_type)
RELOC_NUMBER (R_AVR_HI8_LDI_PM_NEG, 16)
RELOC_NUMBER (R_AVR_HH8_LDI_PM_NEG, 17)
RELOC_NUMBER (R_AVR_CALL, 18)
- EMPTY_RELOC (R_AVR_max)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_AVR_max)
#endif /* _ELF_AVR_H */
diff --git a/contrib/binutils/include/elf/common.h b/contrib/binutils/include/elf/common.h
index b290853..d127b9c 100644
--- a/contrib/binutils/include/elf/common.h
+++ b/contrib/binutils/include/elf/common.h
@@ -64,21 +64,21 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ELFOSABI_LINUX 3 /* GNU/Linux */
#define ELFOSABI_HURD 4 /* GNU/Hurd */
#define ELFOSABI_SOLARIS 6 /* Solaris */
-#define ELFOSABI_MONTEREY 7 /* Monterey */
+#define ELFOSABI_AIX 7 /* AIX */
#define ELFOSABI_IRIX 8 /* IRIX */
#define ELFOSABI_FREEBSD 9 /* FreeBSD */
#define ELFOSABI_TRU64 10 /* TRU64 UNIX */
#define ELFOSABI_MODESTO 11 /* Novell Modesto */
#define ELFOSABI_OPENBSD 12 /* OpenBSD */
#define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */
-#define ELFOSABI_ARM 97 /* ARM */
+#define ELFOSABI_ARM 97 /* ARM */
#define EI_ABIVERSION 8 /* ABI version */
#define EI_PAD 9 /* Start of padding bytes */
-/* Values for e_type, which identifies the object file type */
+/* Values for e_type, which identifies the object file type. */
#define ET_NONE 0 /* No file type */
#define ET_REL 1 /* Relocatable file */
@@ -90,7 +90,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ET_LOPROC 0xFF00 /* Processor-specific */
#define ET_HIPROC 0xFFFF /* Processor-specific */
-/* Values for e_machine, which identifies the architecture */
+/* Values for e_machine, which identifies the architecture. These numbers
+ are officially assigned by registry@sco.com. See below for a list of
+ ad-hoc numbers used during initial development. */
#define EM_NONE 0 /* No machine */
#define EM_M32 1 /* AT&T WE 32100 */
@@ -98,7 +100,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define EM_386 3 /* Intel 80386 */
#define EM_68K 4 /* Motorola m68k family */
#define EM_88K 5 /* Motorola m88k family */
-#define EM_486 6 /* Intel 80486 */
+#define EM_486 6 /* Intel 80486 *//* Reserved for future use */
#define EM_860 7 /* Intel 80860 */
#define EM_MIPS 8 /* MIPS R3000 (officially, big-endian only) */
#define EM_S370 9 /* IBM System/370 */
@@ -123,7 +125,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define EM_SH 42 /* Hitachi SH */
#define EM_SPARCV9 43 /* SPARC v9 64-bit */
#define EM_TRICORE 44 /* Siemens Tricore embedded processor */
-#define EM_ARC 45 /* Argonaut RISC Core, Argonaut Technologies Inc. */
+#define EM_ARC 45 /* ARC Cores */
#define EM_H8_300 46 /* Hitachi H8/300 */
#define EM_H8_300H 47 /* Hitachi H8/300H */
#define EM_H8S 48 /* Hitachi H8S */
@@ -140,6 +142,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define EM_ME16 59 /* Toyota ME16 processor */
#define EM_ST100 60 /* STMicroelectronics ST100 processor */
#define EM_TINYJ 61 /* Advanced Logic Corp. TinyJ embedded processor */
+#define EM_X86_64 62 /* Advanced Micro Devices X86-64 processor */
#define EM_FX66 66 /* Siemens FX66 microcontroller */
#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 bit microcontroller */
@@ -149,10 +152,15 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define EM_68HC08 71 /* Motorola MC68HC08 Microcontroller */
#define EM_68HC05 72 /* Motorola MC68HC05 Microcontroller */
#define EM_SVX 73 /* Silicon Graphics SVx */
-#define EM_ST19 74 /* STMicroelectronics ST19 8-bit microcontroller */
+#define EM_ST19 74 /* STMicroelectronics ST19 8-bit cpu */
#define EM_VAX 75 /* Digital VAX */
-
-#define EM_PJ 99 /* picoJava */
+#define EM_CRIS 76 /* Axis Communications 32-bit embedded processor */
+#define EM_JAVELIN 77 /* Infineon Technologies 32-bit embedded cpu */
+#define EM_FIREPATH 78 /* Element 14 64-bit DSP processor */
+#define EM_ZSP 79 /* LSI Logic's 16-bit DSP processor */
+#define EM_MMIX 80 /* Donald Knuth's educational 64-bit processor */
+#define EM_HUANY 81 /* Harvard's machine-independent format */
+#define EM_PRISM 82 /* SiTera Prism */
/* If it is necessary to assign new unofficial EM_* values, please pick large
random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision
@@ -160,7 +168,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
NOTE: Do not just increment the most recent number by one.
Somebody else somewhere will do exactly the same thing, and you
- will have a collision. Instead, pick a random number. */
+ will have a collision. Instead, pick a random number.
+
+ Normally, each entity or maintainer responsible for a machine with an
+ unofficial e_machine number should eventually ask registry@sco.com for
+ an officially blessed number to be added to the list above. */
+
+#define EM_PJ 99 /* picoJava */
/* Cygnus PowerPC ELF backend. Written in the absence of an ABI. */
#define EM_CYGNUS_POWERPC 0x9025
@@ -204,12 +218,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* See the above comment before you add a new EM_* value here. */
-/* Values for e_version */
+/* Values for e_version. */
#define EV_NONE 0 /* Invalid ELF version */
#define EV_CURRENT 1 /* Current version */
-/* Values for program header, p_type field */
+/* Values for program header, p_type field. */
#define PT_NULL 0 /* Program header table entry unused */
#define PT_LOAD 1 /* Loadable program segment */
@@ -223,7 +237,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define PT_LOPROC 0x70000000 /* Processor-specific */
#define PT_HIPROC 0x7FFFFFFF /* Processor-specific */
-/* Program segment permissions, in program header p_flags field */
+/* Program segment permissions, in program header p_flags field. */
#define PF_X (1 << 0) /* Segment is executable */
#define PF_W (1 << 1) /* Segment is writable */
@@ -232,7 +246,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define PF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */
#define PF_MASKPROC 0xF0000000 /* Processor-specific reserved bits */
-/* Values for section header, sh_type field */
+/* Values for section header, sh_type field. */
#define SHT_NULL 0 /* Section header table entry unused */
#define SHT_PROGBITS 1 /* Program specific (private) data */
@@ -247,12 +261,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define SHT_SHLIB 10 /* Reserved, unspecified semantics */
#define SHT_DYNSYM 11 /* Dynamic linking symbol table */
-#define SHT_INIT_ARRAY 14 /* Array of pointers to init functions */
-#define SHT_FINI_ARRAY 15 /* Array of pointers to finish functions */
-#define SHT_PREINIT_ARRAY 16 /* Array of pointers to pre-init functions */
+#define SHT_INIT_ARRAY 14 /* Array of ptrs to init functions */
+#define SHT_FINI_ARRAY 15 /* Array of ptrs to finish functions */
+#define SHT_PREINIT_ARRAY 16 /* Array of ptrs to pre-init funcs */
+#define SHT_GROUP 17 /* Section contains a section group */
+#define SHT_SYMTAB_SHNDX 18 /* Indicies for SHN_XINDEX entries */
-#define SHT_LOOS 0x60000000 /* Operating system specific semantics, lo */
-#define SHT_HIOS 0x6fffffff /* Operating system specific semantics, hi */
+#define SHT_LOOS 0x60000000 /* First of OS specific semantics */
+#define SHT_HIOS 0x6fffffff /* Last of OS specific semantics */
/* The next three section types are defined by Solaris, and are named
SHT_SUNW*. We use them in GNU code, so we also define SHT_GNU*
@@ -271,7 +287,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* #define SHT_HIUSER 0x8FFFFFFF *//* Application-specific semantics */
#define SHT_HIUSER 0xFFFFFFFF /* New value, defined in Oct 4, 1999 Draft */
-/* Values for section header, sh_flags field */
+/* Values for section header, sh_flags field. */
#define SHF_WRITE (1 << 0) /* Writable data during execution */
#define SHF_ALLOC (1 << 1) /* Occupies memory during execution */
@@ -280,13 +296,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define SHF_STRINGS (1 << 5) /* Contains null terminated character strings */
#define SHF_INFO_LINK (1 << 6) /* sh_info holds section header table index */
#define SHF_LINK_ORDER (1 << 7) /* Preserve section ordering when linking */
-#define SHF_OS_NONCONFORMING (1 << 8) /* OS specifci processing required */
+#define SHF_OS_NONCONFORMING (1 << 8) /* OS specific processing required */
+#define SHF_GROUP (1 << 9) /* Member of a section group */
/* #define SHF_MASKOS 0x0F000000 *//* OS-specific semantics */
#define SHF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */
#define SHF_MASKPROC 0xF0000000 /* Processor-specific semantics */
-/* Values of note segment descriptor types for core files. */
+/* Values of note segment descriptor types for core files. */
#define NT_PRSTATUS 1 /* Contains copy of prstatus struct */
#define NT_FPREGSET 2 /* Contains copy of fpregset struct */
@@ -295,7 +312,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define NT_PRXFPREG 0x46e62b7f /* Contains a user_xfpregs_struct; */
/* note name must be "LINUX". */
-/* Note segments for core files on dir-style procfs systems. */
+/* Note segments for core files on dir-style procfs systems. */
#define NT_PSTATUS 10 /* Has a struct pstatus */
#define NT_FPREGS 12 /* Has a struct fpregset */
@@ -311,7 +328,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* These three macros disassemble and assemble a symbol table st_info field,
which contains the symbol binding and symbol type. The STB_ and STT_
- defines identify the binding and type. */
+ defines identify the binding and type. */
#define ELF_ST_BIND(val) (((unsigned int)(val)) >> 4)
#define ELF_ST_TYPE(val) ((val) & 0xF)
@@ -337,7 +354,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ELF64_ST_VISIBILITY ELF_ST_VISIBILITY
-#define STN_UNDEF 0 /* undefined symbol index */
+#define STN_UNDEF 0 /* Undefined symbol index */
#define STB_LOCAL 0 /* Symbol not visible outside obj */
#define STB_GLOBAL 1 /* Symbol visible outside obj */
@@ -359,7 +376,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define STT_HIPROC 15 /* Application-specific semantics */
/* Special section indices, which may show up in st_shndx fields, among
- other places. */
+ other places. */
#define SHN_UNDEF 0 /* Undefined section reference */
#define SHN_LORESERVE 0xFF00 /* Begin range of reserved indices */
@@ -367,9 +384,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define SHN_HIPROC 0xFF1F /* End range of appl-specific */
#define SHN_LOOS 0xFF20 /* OS specific semantics, lo */
#define SHN_HIOS 0xFF3F /* OS specific semantics, hi */
-#define SHN_ABS 0xFFF1 /* Associated symbol is absolute */
-#define SHN_COMMON 0xFFF2 /* Associated symbol is in common */
-#define SHN_HIRESERVE 0xFFFF /* End range of reserved indices */
+#define SHN_ABS 0xFFF1 /* Associated symbol is absolute */
+#define SHN_COMMON 0xFFF2 /* Associated symbol is in common */
+#define SHN_XINDEX 0xFFFF /* Section index it held elsewhere */
+#define SHN_HIRESERVE 0xFFFF /* End range of reserved indices */
/* The following constants control how a symbol may be accessed once it has
become part of an executable or shared library. */
@@ -378,9 +396,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define STV_INTERNAL 1 /* OS specific version of STV_HIDDEN */
#define STV_HIDDEN 2 /* Can only be seen inside currect component */
#define STV_PROTECTED 3 /* Treat as STB_LOCAL inside current component */
-
-/* relocation info handling macros */
+/* Relocation info handling macros. */
#define ELF32_R_SYM(i) ((i) >> 8)
#define ELF32_R_TYPE(i) ((i) & 0xff)
@@ -390,7 +407,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ELF64_R_TYPE(i) ((i) & 0xffffffff)
#define ELF64_R_INFO(s,t) (((bfd_vma) (s) << 32) + (bfd_vma) (t))
-/* Dynamic section tags */
+/* Dynamic section tags. */
#define DT_NULL 0
#define DT_NEEDED 1
@@ -492,7 +509,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
http://docs.sun.com:80/ab2/coll.45.13/LLM/@Ab2PageView/21165?Ab2Lang=C&Ab2Enc=iso-8859-1
DTF_1_CONFEXP is the same as DTF_1_PARINIT. It is a typo. The value
- defined here is the same as the one in <sys/link.h> on Solaris 8. */
+ defined here is the same as the one in <sys/link.h> on Solaris 8. */
#define DTF_1_CONFEXP 0x00000002
/* Flag values used in the DT_POSFLAG_1 .dynamic entry. */
@@ -563,19 +580,26 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ELF_VER_CHR '@'
/* Possible values for si_boundto. */
+
#define SYMINFO_BT_SELF 0xffff /* Symbol bound to self */
#define SYMINFO_BT_PARENT 0xfffe /* Symbol bound to parent */
#define SYMINFO_BT_LOWRESERVE 0xff00 /* Beginning of reserved entries */
/* Possible bitmasks for si_flags. */
+
#define SYMINFO_FLG_DIRECT 0x0001 /* Direct bound symbol */
#define SYMINFO_FLG_PASSTHRU 0x0002 /* Pass-thru symbol for translator */
#define SYMINFO_FLG_COPY 0x0004 /* Symbol is a copy-reloc */
-#define SYMINFO_FLG_LAZYLOAD 0x0008 /* Symbol bound to object to be lazy
- loaded */
+#define SYMINFO_FLG_LAZYLOAD 0x0008 /* Symbol bound to object to be lazy loaded */
+
/* Syminfo version values. */
+
#define SYMINFO_NONE 0
#define SYMINFO_CURRENT 1
#define SYMINFO_NUM 2
+/* Section Group Flags. */
+
+#define GRP_COMDAT 0x1 /* A COMDAT group */
+
#endif /* _ELF_COMMON_H */
diff --git a/contrib/binutils/include/elf/cris.h b/contrib/binutils/include/elf/cris.h
new file mode 100644
index 0000000..957f194
--- /dev/null
+++ b/contrib/binutils/include/elf/cris.h
@@ -0,0 +1,47 @@
+/* CRIS ELF support for BFD.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ Contributed by Axis Communications AB, Lund, Sweden.
+ Written by Hans-Peter Nilsson.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+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 _ELF_CRIS_H
+#define _ELF_CRIS_H
+
+#include "elf/reloc-macros.h"
+
+/* Relocations. */
+START_RELOC_NUMBERS (elf_cris_reloc_type)
+ RELOC_NUMBER (R_CRIS_NONE, 0)
+ RELOC_NUMBER (R_CRIS_8, 1)
+ RELOC_NUMBER (R_CRIS_16, 2)
+ RELOC_NUMBER (R_CRIS_32, 3)
+ RELOC_NUMBER (R_CRIS_8_PCREL, 4)
+ RELOC_NUMBER (R_CRIS_16_PCREL, 5)
+ RELOC_NUMBER (R_CRIS_32_PCREL, 6)
+
+ RELOC_NUMBER (R_CRIS_GNU_VTINHERIT, 7)
+ RELOC_NUMBER (R_CRIS_GNU_VTENTRY, 8)
+
+ /* No other relocs must be visible outside the assembler. */
+
+END_RELOC_NUMBERS (R_CRIS_max)
+
+/* User symbols in this file have a leading underscore. */
+#define EF_CRIS_UNDERSCORE 0x00000001
+
+#endif /* _ELF_CRIS_H */
diff --git a/contrib/binutils/include/elf/d10v.h b/contrib/binutils/include/elf/d10v.h
index 63b79c8..96bfaf2 100644
--- a/contrib/binutils/include/elf/d10v.h
+++ b/contrib/binutils/include/elf/d10v.h
@@ -1,5 +1,5 @@
/* d10v ELF support for BFD.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -33,6 +33,6 @@ START_RELOC_NUMBERS (elf_d10v_reloc_type)
RELOC_NUMBER (R_D10V_32, 6)
RELOC_NUMBER (R_D10V_GNU_VTINHERIT, 7)
RELOC_NUMBER (R_D10V_GNU_VTENTRY, 8)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_D10V_max)
#endif
diff --git a/contrib/binutils/include/elf/d30v.h b/contrib/binutils/include/elf/d30v.h
index adbad19..369aa4b 100644
--- a/contrib/binutils/include/elf/d30v.h
+++ b/contrib/binutils/include/elf/d30v.h
@@ -1,5 +1,5 @@
/* d30v ELF support for BFD.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -37,6 +37,6 @@ START_RELOC_NUMBERS (elf_d30v_reloc_type)
RELOC_NUMBER (R_D30V_32, 10)
RELOC_NUMBER (R_D30V_32_PCREL, 11)
RELOC_NUMBER (R_D30V_32_NORMAL, 12)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_D30V_max)
#endif
diff --git a/contrib/binutils/include/elf/fr30.h b/contrib/binutils/include/elf/fr30.h
index 223b052..54c1ae6 100644
--- a/contrib/binutils/include/elf/fr30.h
+++ b/contrib/binutils/include/elf/fr30.h
@@ -1,5 +1,5 @@
/* FR30 ELF support for BFD.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 99, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -37,7 +37,6 @@ START_RELOC_NUMBERS (elf_fr30_reloc_type)
RELOC_NUMBER (R_FR30_12_PCREL, 10)
RELOC_NUMBER (R_FR30_GNU_VTINHERIT, 11)
RELOC_NUMBER (R_FR30_GNU_VTENTRY, 12)
- EMPTY_RELOC (R_FR30_max)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_FR30_max)
#endif /* _ELF_FR30_H */
diff --git a/contrib/binutils/include/elf/hppa.h b/contrib/binutils/include/elf/hppa.h
index 0e45d74..e9ec03a 100644
--- a/contrib/binutils/include/elf/hppa.h
+++ b/contrib/binutils/include/elf/hppa.h
@@ -1,5 +1,5 @@
/* HPPA ELF support for BFD.
- Copyright (C) 1993, 1994, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1993, 94, 95, 99, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -102,173 +102,385 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "elf/reloc-macros.h"
START_RELOC_NUMBERS (elf_hppa_reloc_type)
- RELOC_NUMBER (R_PARISC_NONE, 0) /* No reloc */
-
- /* These relocation types do simple base + offset relocations. */
-
- RELOC_NUMBER (R_PARISC_DIR32, 1)
- RELOC_NUMBER (R_PARISC_DIR21L, 2)
- RELOC_NUMBER (R_PARISC_DIR17R, 3)
- RELOC_NUMBER (R_PARISC_DIR17F, 4)
- RELOC_NUMBER (R_PARISC_DIR14R, 6)
-
- /* PC-relative relocation types
- Typically used for calls.
- Note PCREL17C and PCREL17F differ only in overflow handling.
- PCREL17C never reports a relocation error.
-
- When supporting argument relocations, function calls must be
- accompanied by parameter relocation information. This information is
- carried in the ten high-order bits of the addend field. The remaining
- 22 bits of of the addend field are sign-extended to form the Addend.
-
- Note the code to build argument relocations depends on the
- addend being zero. A consequence of this limitation is GAS
- can not perform relocation reductions for function symbols. */
-
- RELOC_NUMBER (R_PARISC_PCREL32, 9)
- RELOC_NUMBER (R_PARISC_PCREL21L, 10)
- RELOC_NUMBER (R_PARISC_PCREL17R, 11)
- RELOC_NUMBER (R_PARISC_PCREL17F, 12)
- RELOC_NUMBER (R_PARISC_PCREL17C, 13)
- RELOC_NUMBER (R_PARISC_PCREL14R, 14)
- RELOC_NUMBER (R_PARISC_PCREL14F, 15)
-
- /* DP-relative relocation types. */
- RELOC_NUMBER (R_PARISC_DPREL21L, 18)
- RELOC_NUMBER (R_PARISC_DPREL14WR, 19)
- RELOC_NUMBER (R_PARISC_DPREL14DR, 20)
- RELOC_NUMBER (R_PARISC_DPREL14R, 22)
- RELOC_NUMBER (R_PARISC_DPREL14F, 23)
-
- /* Data linkage table (DLT) relocation types
-
- SOM DLT_REL fixup requests are used to for static data references
- from position-independent code within shared libraries. They are
- similar to the GOT relocation types in some SVR4 implementations. */
-
- RELOC_NUMBER (R_PARISC_DLTREL21L, 26)
- RELOC_NUMBER (R_PARISC_DLTREL14R, 30)
- RELOC_NUMBER (R_PARISC_DLTREL14F, 31)
-
- /* DLT indirect relocation types */
- RELOC_NUMBER (R_PARISC_DLTIND21L, 34)
- RELOC_NUMBER (R_PARISC_DLTIND14R, 38)
- RELOC_NUMBER (R_PARISC_DLTIND14F, 39)
-
- /* Base relative relocation types. Ugh. These imply lots of state */
- RELOC_NUMBER (R_PARISC_SETBASE, 40)
- RELOC_NUMBER (R_PARISC_SECREL32, 41)
- RELOC_NUMBER (R_PARISC_BASEREL21L, 42)
- RELOC_NUMBER (R_PARISC_BASEREL17R, 43)
- RELOC_NUMBER (R_PARISC_BASEREL17F, 44)
- RELOC_NUMBER (R_PARISC_BASEREL14R, 46)
- RELOC_NUMBER (R_PARISC_BASEREL14F, 47)
-
- /* Segment relative relocation types. */
- RELOC_NUMBER (R_PARISC_SEGBASE, 48)
- RELOC_NUMBER (R_PARISC_SEGREL32, 49)
-
- /* Offsets from the PLT. */
- RELOC_NUMBER (R_PARISC_PLTOFF21L, 50)
- RELOC_NUMBER (R_PARISC_PLTOFF14R, 54)
- RELOC_NUMBER (R_PARISC_PLTOFF14F, 55)
-
- RELOC_NUMBER (R_PARISC_LTOFF_FPTR32, 57)
- RELOC_NUMBER (R_PARISC_LTOFF_FPTR21L, 58)
- RELOC_NUMBER (R_PARISC_LTOFF_FPTR14R, 62)
-
- RELOC_NUMBER (R_PARISC_FPTR64, 64)
-
- /* Plabel relocation types. */
- RELOC_NUMBER (R_PARISC_PLABEL32, 65)
- RELOC_NUMBER (R_PARISC_PLABEL21L, 66)
- RELOC_NUMBER (R_PARISC_PLABEL14R, 70)
-
- /* PCREL relocations. */
- RELOC_NUMBER (R_PARISC_PCREL64, 72)
- RELOC_NUMBER (R_PARISC_PCREL22C, 73)
- RELOC_NUMBER (R_PARISC_PCREL22F, 74)
- RELOC_NUMBER (R_PARISC_PCREL14WR, 75)
- RELOC_NUMBER (R_PARISC_PCREL14DR, 76)
- RELOC_NUMBER (R_PARISC_PCREL16F, 77)
- RELOC_NUMBER (R_PARISC_PCREL16WF, 78)
- RELOC_NUMBER (R_PARISC_PCREL16DF, 79)
-
-
- RELOC_NUMBER (R_PARISC_DIR64, 80)
- RELOC_NUMBER (R_PARISC_DIR64WR, 81)
- RELOC_NUMBER (R_PARISC_DIR64DR, 82)
- RELOC_NUMBER (R_PARISC_DIR14WR, 83)
- RELOC_NUMBER (R_PARISC_DIR14DR, 84)
- RELOC_NUMBER (R_PARISC_DIR16F, 85)
- RELOC_NUMBER (R_PARISC_DIR16WF, 86)
- RELOC_NUMBER (R_PARISC_DIR16DF, 87)
-
- RELOC_NUMBER (R_PARISC_GPREL64, 88)
-
- RELOC_NUMBER (R_PARISC_DLTREL14WR, 91)
- RELOC_NUMBER (R_PARISC_DLTREL14DR, 92)
- RELOC_NUMBER (R_PARISC_GPREL16F, 93)
- RELOC_NUMBER (R_PARISC_GPREL16WF, 94)
- RELOC_NUMBER (R_PARISC_GPREL16DF, 95)
-
-
- RELOC_NUMBER (R_PARISC_LTOFF64, 96)
- RELOC_NUMBER (R_PARISC_DLTIND14WR, 99)
- RELOC_NUMBER (R_PARISC_DLTIND14DR, 100)
- RELOC_NUMBER (R_PARISC_LTOFF16F, 101)
- RELOC_NUMBER (R_PARISC_LTOFF16WF, 102)
- RELOC_NUMBER (R_PARISC_LTOFF16DF, 103)
-
- RELOC_NUMBER (R_PARISC_SECREL64, 104)
-
- RELOC_NUMBER (R_PARISC_BASEREL14WR, 107)
- RELOC_NUMBER (R_PARISC_BASEREL14DR, 108)
-
- RELOC_NUMBER (R_PARISC_SEGREL64, 112)
-
- RELOC_NUMBER (R_PARISC_PLTOFF14WR, 115)
- RELOC_NUMBER (R_PARISC_PLTOFF14DR, 116)
- RELOC_NUMBER (R_PARISC_PLTOFF16F, 117)
- RELOC_NUMBER (R_PARISC_PLTOFF16WF, 118)
- RELOC_NUMBER (R_PARISC_PLTOFF16DF, 119)
-
- RELOC_NUMBER (R_PARISC_LTOFF_FPTR64, 120)
- RELOC_NUMBER (R_PARISC_LTOFF_FPTR14WR, 123)
- RELOC_NUMBER (R_PARISC_LTOFF_FPTR14DR, 124)
- RELOC_NUMBER (R_PARISC_LTOFF_FPTR16F, 125)
- RELOC_NUMBER (R_PARISC_LTOFF_FPTR16WF, 126)
- RELOC_NUMBER (R_PARISC_LTOFF_FPTR16DF, 127)
-
-
- RELOC_NUMBER (R_PARISC_COPY, 128)
- RELOC_NUMBER (R_PARISC_IPLT, 129)
- RELOC_NUMBER (R_PARISC_EPLT, 130)
-
- RELOC_NUMBER (R_PARISC_TPREL32, 153)
- RELOC_NUMBER (R_PARISC_TPREL21L, 154)
- RELOC_NUMBER (R_PARISC_TPREL14R, 158)
-
- RELOC_NUMBER (R_PARISC_LTOFF_TP21L, 162)
- RELOC_NUMBER (R_PARISC_LTOFF_TP14R, 166)
- RELOC_NUMBER (R_PARISC_LTOFF_TP14F, 167)
-
- RELOC_NUMBER (R_PARISC_TPREL64, 216)
- RELOC_NUMBER (R_PARISC_TPREL14WR, 219)
- RELOC_NUMBER (R_PARISC_TPREL14DR, 220)
- RELOC_NUMBER (R_PARISC_TPREL16F, 221)
- RELOC_NUMBER (R_PARISC_TPREL16WF, 222)
- RELOC_NUMBER (R_PARISC_TPREL16DF, 223)
-
- RELOC_NUMBER (R_PARISC_LTOFF_TP64, 224)
- RELOC_NUMBER (R_PARISC_LTOFF_TP14WR, 227)
- RELOC_NUMBER (R_PARISC_LTOFF_TP14DR, 228)
- RELOC_NUMBER (R_PARISC_LTOFF_TP16F, 229)
- RELOC_NUMBER (R_PARISC_LTOFF_TP16WF, 230)
- RELOC_NUMBER (R_PARISC_LTOFF_TP16DF, 231)
- EMPTY_RELOC (R_PARISC_UNIMPLEMENTED)
-END_RELOC_NUMBERS
+RELOC_NUMBER (R_PARISC_NONE, 0) /* No reloc */
+
+/* Data / Inst. Format Relocation Expression */
+
+RELOC_NUMBER (R_PARISC_DIR32, 1)
+/* 32-bit word symbol + addend */
+
+RELOC_NUMBER (R_PARISC_DIR21L, 2)
+/* long immediate (7) LR(symbol, addend) */
+
+RELOC_NUMBER (R_PARISC_DIR17R, 3)
+/* branch external (19) RR(symbol, addend) */
+
+RELOC_NUMBER (R_PARISC_DIR17F, 4)
+/* branch external (19) symbol + addend */
+
+RELOC_NUMBER (R_PARISC_DIR14R, 6)
+/* load/store (1) RR(symbol, addend) */
+
+RELOC_NUMBER (R_PARISC_DIR14F, 7)
+/* load/store (1) symbol, addend */
+
+/* PC-relative relocation types
+ Typically used for calls.
+ Note PCREL17C and PCREL17F differ only in overflow handling.
+ PCREL17C never reports a relocation error.
+
+ When supporting argument relocations, function calls must be
+ accompanied by parameter relocation information. This information is
+ carried in the ten high-order bits of the addend field. The remaining
+ 22 bits of of the addend field are sign-extended to form the Addend.
+
+ Note the code to build argument relocations depends on the
+ addend being zero. A consequence of this limitation is GAS
+ can not perform relocation reductions for function symbols. */
+
+RELOC_NUMBER (R_PARISC_PCREL12F, 8)
+/* op & branch (17) symbol - PC - 8 + addend */
+
+RELOC_NUMBER (R_PARISC_PCREL32, 9)
+/* 32-bit word symbol - PC - 8 + addend */
+
+RELOC_NUMBER (R_PARISC_PCREL21L, 10)
+/* long immediate (7) L(symbol - PC - 8 + addend) */
+
+RELOC_NUMBER (R_PARISC_PCREL17R, 11)
+/* branch external (19) R(symbol - PC - 8 + addend) */
+
+RELOC_NUMBER (R_PARISC_PCREL17F, 12)
+/* branch (20) symbol - PC - 8 + addend */
+
+RELOC_NUMBER (R_PARISC_PCREL17C, 13)
+/* branch (20) symbol - PC - 8 + addend */
+
+RELOC_NUMBER (R_PARISC_PCREL14R, 14)
+/* load/store (1) R(symbol - PC - 8 + addend) */
+
+RELOC_NUMBER (R_PARISC_PCREL14F, 15)
+/* load/store (1) symbol - PC - 8 + addend */
+
+
+/* DP-relative relocation types. */
+RELOC_NUMBER (R_PARISC_DPREL21L, 18)
+/* long immediate (7) LR(symbol - GP, addend) */
+
+RELOC_NUMBER (R_PARISC_DPREL14WR, 19)
+/* load/store mod. comp. (2) RR(symbol - GP, addend) */
+
+RELOC_NUMBER (R_PARISC_DPREL14DR, 20)
+/* load/store doubleword (3) RR(symbol - GP, addend) */
+
+RELOC_NUMBER (R_PARISC_DPREL14R, 22)
+/* load/store (1) RR(symbol - GP, addend) */
+
+RELOC_NUMBER (R_PARISC_DPREL14F, 23)
+/* load/store (1) symbol - GP + addend */
+
+
+/* Data linkage table (DLT) relocation types
+
+ SOM DLT_REL fixup requests are used to for static data references
+ from position-independent code within shared libraries. They are
+ similar to the GOT relocation types in some SVR4 implementations. */
+
+RELOC_NUMBER (R_PARISC_DLTREL21L, 26)
+/* long immediate (7) LR(symbol - GP, addend) */
+
+RELOC_NUMBER (R_PARISC_DLTREL14R, 30)
+/* load/store (1) RR(symbol - GP, addend) */
+
+RELOC_NUMBER (R_PARISC_DLTREL14F, 31)
+/* load/store (1) symbol - GP + addend */
+
+
+/* DLT indirect relocation types */
+RELOC_NUMBER (R_PARISC_DLTIND21L, 34)
+/* long immediate (7) L(ltoff(symbol + addend)) */
+
+RELOC_NUMBER (R_PARISC_DLTIND14R, 38)
+/* load/store (1) R(ltoff(symbol + addend)) */
+
+RELOC_NUMBER (R_PARISC_DLTIND14F, 39)
+/* load/store (1) ltoff(symbol + addend) */
+
+
+/* Base relative relocation types. Ugh. These imply lots of state */
+RELOC_NUMBER (R_PARISC_SETBASE, 40)
+/* none no reloc; base := sym */
+
+RELOC_NUMBER (R_PARISC_SECREL32, 41)
+/* 32-bit word symbol - SECT + addend */
+
+RELOC_NUMBER (R_PARISC_BASEREL21L, 42)
+/* long immediate (7) LR(symbol - base, addend) */
+
+RELOC_NUMBER (R_PARISC_BASEREL17R, 43)
+/* branch external (19) RR(symbol - base, addend) */
+
+RELOC_NUMBER (R_PARISC_BASEREL17F, 44)
+/* branch external (19) symbol - base + addend */
+
+RELOC_NUMBER (R_PARISC_BASEREL14R, 46)
+/* load/store (1) RR(symbol - base, addend) */
+
+RELOC_NUMBER (R_PARISC_BASEREL14F, 47)
+/* load/store (1) symbol - base, addend */
+
+
+/* Segment relative relocation types. */
+RELOC_NUMBER (R_PARISC_SEGBASE, 48)
+/* none no relocation; SB := sym */
+
+RELOC_NUMBER (R_PARISC_SEGREL32, 49)
+/* 32-bit word symbol - SB + addend */
+
+
+/* Offsets from the PLT. */
+RELOC_NUMBER (R_PARISC_PLTOFF21L, 50)
+/* long immediate (7) LR(pltoff(symbol), addend) */
+
+RELOC_NUMBER (R_PARISC_PLTOFF14R, 54)
+/* load/store (1) RR(pltoff(symbol), addend) */
+
+RELOC_NUMBER (R_PARISC_PLTOFF14F, 55)
+/* load/store (1) pltoff(symbol) + addend */
+
+
+RELOC_NUMBER (R_PARISC_LTOFF_FPTR32, 57)
+/* 32-bit word ltoff(fptr(symbol+addend)) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_FPTR21L, 58)
+/* long immediate (7) L(ltoff(fptr(symbol+addend))) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_FPTR14R, 62)
+/* load/store (1) R(ltoff(fptr(symbol+addend))) */
+
+
+RELOC_NUMBER (R_PARISC_FPTR64, 64)
+/* 64-bit doubleword fptr(symbol+addend) */
+
+
+/* Plabel relocation types. */
+RELOC_NUMBER (R_PARISC_PLABEL32, 65)
+/* 32-bit word fptr(symbol) */
+
+RELOC_NUMBER (R_PARISC_PLABEL21L, 66)
+/* long immediate (7) L(fptr(symbol)) */
+
+RELOC_NUMBER (R_PARISC_PLABEL14R, 70)
+/* load/store (1) R(fptr(symbol)) */
+
+
+/* PCREL relocations. */
+RELOC_NUMBER (R_PARISC_PCREL64, 72)
+/* 64-bit doubleword symbol - PC - 8 + addend */
+
+RELOC_NUMBER (R_PARISC_PCREL22C, 73)
+/* branch & link (21) symbol - PC - 8 + addend */
+
+RELOC_NUMBER (R_PARISC_PCREL22F, 74)
+/* branch & link (21) symbol - PC - 8 + addend */
+
+RELOC_NUMBER (R_PARISC_PCREL14WR, 75)
+/* load/store mod. comp. (2) R(symbol - PC - 8 + addend) */
+
+RELOC_NUMBER (R_PARISC_PCREL14DR, 76)
+/* load/store doubleword (3) R(symbol - PC - 8 + addend) */
+
+RELOC_NUMBER (R_PARISC_PCREL16F, 77)
+/* load/store (1) symbol - PC - 8 + addend */
+
+RELOC_NUMBER (R_PARISC_PCREL16WF, 78)
+/* load/store mod. comp. (2) symbol - PC - 8 + addend */
+
+RELOC_NUMBER (R_PARISC_PCREL16DF, 79)
+/* load/store doubleword (3) symbol - PC - 8 + addend */
+
+
+RELOC_NUMBER (R_PARISC_DIR64, 80)
+/* 64-bit doubleword symbol + addend */
+
+RELOC_NUMBER (R_PARISC_DIR64WR, 81)
+/* 64-bit doubleword RR(symbol, addend) */
+
+RELOC_NUMBER (R_PARISC_DIR64DR, 82)
+/* 64-bit doubleword RR(symbol, addend) */
+
+RELOC_NUMBER (R_PARISC_DIR14WR, 83)
+/* load/store mod. comp. (2) RR(symbol, addend) */
+
+RELOC_NUMBER (R_PARISC_DIR14DR, 84)
+/* load/store doubleword (3) RR(symbol, addend) */
+
+RELOC_NUMBER (R_PARISC_DIR16F, 85)
+/* load/store (1) symbol + addend */
+
+RELOC_NUMBER (R_PARISC_DIR16WF, 86)
+/* load/store mod. comp. (2) symbol + addend */
+
+RELOC_NUMBER (R_PARISC_DIR16DF, 87)
+/* load/store doubleword (3) symbol + addend */
+
+RELOC_NUMBER (R_PARISC_GPREL64, 88)
+/* 64-bit doubleword symbol - GP + addend */
+
+RELOC_NUMBER (R_PARISC_DLTREL14WR, 91)
+/* load/store mod. comp. (2) RR(symbol - GP, addend) */
+
+RELOC_NUMBER (R_PARISC_DLTREL14DR, 92)
+/* load/store doubleword (3) RR(symbol - GP, addend) */
+
+RELOC_NUMBER (R_PARISC_GPREL16F, 93)
+/* load/store (1) symbol - GP + addend */
+
+RELOC_NUMBER (R_PARISC_GPREL16WF, 94)
+/* load/store mod. comp. (2) symbol - GP + addend */
+
+RELOC_NUMBER (R_PARISC_GPREL16DF, 95)
+/* load/store doubleword (3) symbol - GP + addend */
+
+
+RELOC_NUMBER (R_PARISC_LTOFF64, 96)
+/* 64-bit doubleword ltoff(symbol + addend) */
+
+RELOC_NUMBER (R_PARISC_DLTIND14WR, 99)
+/* load/store mod. comp. (2) R(ltoff(symbol + addend)) */
+
+RELOC_NUMBER (R_PARISC_DLTIND14DR, 100)
+/* load/store doubleword (3) R(ltoff(symbol + addend)) */
+
+RELOC_NUMBER (R_PARISC_LTOFF16F, 101)
+/* load/store (1) ltoff(symbol + addend) */
+
+RELOC_NUMBER (R_PARISC_LTOFF16WF, 102)
+/* load/store mod. comp. (2) ltoff(symbol + addend) */
+
+RELOC_NUMBER (R_PARISC_LTOFF16DF, 103)
+/* load/store doubleword (3) ltoff(symbol + addend) */
+
+
+RELOC_NUMBER (R_PARISC_SECREL64, 104)
+/* 64-bit doubleword symbol - SECT + addend */
+
+RELOC_NUMBER (R_PARISC_BASEREL14WR, 107)
+/* load/store mod. comp. (2) RR(symbol - base, addend) */
+
+RELOC_NUMBER (R_PARISC_BASEREL14DR, 108)
+/* load/store doubleword (3) RR(symbol - base, addend) */
+
+
+RELOC_NUMBER (R_PARISC_SEGREL64, 112)
+/* 64-bit doubleword symbol - SB + addend */
+
+RELOC_NUMBER (R_PARISC_PLTOFF14WR, 115)
+/* load/store mod. comp. (2) RR(pltoff(symbol), addend) */
+
+RELOC_NUMBER (R_PARISC_PLTOFF14DR, 116)
+/* load/store doubleword (3) RR(pltoff(symbol), addend) */
+
+RELOC_NUMBER (R_PARISC_PLTOFF16F, 117)
+/* load/store (1) pltoff(symbol) + addend */
+
+RELOC_NUMBER (R_PARISC_PLTOFF16WF, 118)
+/* load/store mod. comp. (2) pltoff(symbol) + addend */
+
+RELOC_NUMBER (R_PARISC_PLTOFF16DF, 119)
+/* load/store doubleword (3) pltoff(symbol) + addend */
+
+
+RELOC_NUMBER (R_PARISC_LTOFF_FPTR64, 120)
+/* 64-bit doubleword ltoff(fptr(symbol+addend)) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_FPTR14WR, 123)
+/* load/store mod. comp. (2) R(ltoff(fptr(symbol+addend))) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_FPTR14DR, 124)
+/* load/store doubleword (3) R(ltoff(fptr(symbol+addend))) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_FPTR16F, 125)
+/* load/store (1) ltoff(fptr(symbol+addend)) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_FPTR16WF, 126)
+/* load/store mod. comp. (2) ltoff(fptr(symbol+addend)) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_FPTR16DF, 127)
+/* load/store doubleword (3) ltoff(fptr(symbol+addend)) */
+
+
+RELOC_NUMBER (R_PARISC_COPY, 128)
+/* data Dynamic relocations only */
+
+RELOC_NUMBER (R_PARISC_IPLT, 129)
+/* plt */
+
+RELOC_NUMBER (R_PARISC_EPLT, 130)
+/* plt */
+
+
+RELOC_NUMBER (R_PARISC_TPREL32, 153)
+/* 32-bit word symbol - TP + addend */
+
+RELOC_NUMBER (R_PARISC_TPREL21L, 154)
+/* long immediate (7) LR(symbol - TP, addend) */
+
+RELOC_NUMBER (R_PARISC_TPREL14R, 158)
+/* load/store (1) RR(symbol - TP, addend) */
+
+
+RELOC_NUMBER (R_PARISC_LTOFF_TP21L, 162)
+/* long immediate (7) L(ltoff(symbol - TP + addend)) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_TP14R, 166)
+/* load/store (1) R(ltoff(symbol - TP + addend)) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_TP14F, 167)
+/* load/store (1) ltoff(symbol - TP + addend) */
+
+
+RELOC_NUMBER (R_PARISC_TPREL64, 216)
+/* 64-bit word symbol - TP + addend */
+
+RELOC_NUMBER (R_PARISC_TPREL14WR, 219)
+/* load/store mod. comp. (2) RR(symbol - TP, addend) */
+
+RELOC_NUMBER (R_PARISC_TPREL14DR, 220)
+/* load/store doubleword (3) RR(symbol - TP, addend) */
+
+RELOC_NUMBER (R_PARISC_TPREL16F, 221)
+/* load/store (1) symbol - TP + addend */
+
+RELOC_NUMBER (R_PARISC_TPREL16WF, 222)
+/* load/store mod. comp. (2) symbol - TP + addend */
+
+RELOC_NUMBER (R_PARISC_TPREL16DF, 223)
+/* load/store doubleword (3) symbol - TP + addend */
+
+
+RELOC_NUMBER (R_PARISC_LTOFF_TP64, 224)
+/* 64-bit doubleword ltoff(symbol - TP + addend) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_TP14WR, 227)
+/* load/store mod. comp. (2) R(ltoff(symbol - TP + addend)) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_TP14DR, 228)
+/* load/store doubleword (3) R(ltoff(symbol - TP + addend)) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_TP16F, 229)
+/* load/store (1) ltoff(symbol - TP + addend) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_TP16WF, 230)
+/* load/store mod. comp. (2) ltoff(symbol - TP + addend) */
+
+RELOC_NUMBER (R_PARISC_LTOFF_TP16DF, 231)
+/* load/store doubleword (3) ltoff(symbol - TP + addend) */
+
+RELOC_NUMBER (R_PARISC_GNU_VTENTRY, 232)
+RELOC_NUMBER (R_PARISC_GNU_VTINHERIT, 233)
+
+END_RELOC_NUMBERS (R_PARISC_UNIMPLEMENTED)
#ifndef RELOC_MACROS_GEN_FUNC
typedef enum elf_hppa_reloc_type elf_hppa_reloc_type;
@@ -288,19 +500,22 @@ typedef enum elf_hppa_reloc_type elf_hppa_reloc_type;
/* Processor specific dynamic array tags. */
-#define DT_HP_LOAD_MAP (DT_LOOS + 0x0)
-#define DT_HP_DLD_FLAGS (DT_LOOS + 0x1)
-#define DT_HP_DLD_HOOK (DT_LOOS + 0x2)
-#define DT_HP_UX10_INIT (DT_LOOS + 0x3)
-#define DT_HP_UX10_INITSZ (DT_LOOS + 0x4)
-#define DT_HP_PREINIT (DT_LOOS + 0x5)
-#define DT_HP_PREINITSZ (DT_LOOS + 0x6)
-#define DT_HP_NEEDED (DT_LOOS + 0x7)
-#define DT_HP_TIME_STAMP (DT_LOOS + 0x8)
-#define DT_HP_CHECKSUM (DT_LOOS + 0x9)
-#define DT_HP_GST_SIZE (DT_LOOS + 0xa)
-#define DT_HP_GST_VERSION (DT_LOOS + 0xb)
-#define DT_HP_GST_HASHVAL (DT_LOOS + 0xc)
+/* Arggh. HP's tools define these symbols based on the
+ old value of DT_LOOS. So we must do the same to be
+ compatible. */
+#define DT_HP_LOAD_MAP (OLD_DT_LOOS + 0x0)
+#define DT_HP_DLD_FLAGS (OLD_DT_LOOS + 0x1)
+#define DT_HP_DLD_HOOK (OLD_DT_LOOS + 0x2)
+#define DT_HP_UX10_INIT (OLD_DT_LOOS + 0x3)
+#define DT_HP_UX10_INITSZ (OLD_DT_LOOS + 0x4)
+#define DT_HP_PREINIT (OLD_DT_LOOS + 0x5)
+#define DT_HP_PREINITSZ (OLD_DT_LOOS + 0x6)
+#define DT_HP_NEEDED (OLD_DT_LOOS + 0x7)
+#define DT_HP_TIME_STAMP (OLD_DT_LOOS + 0x8)
+#define DT_HP_CHECKSUM (OLD_DT_LOOS + 0x9)
+#define DT_HP_GST_SIZE (OLD_DT_LOOS + 0xa)
+#define DT_HP_GST_VERSION (OLD_DT_LOOS + 0xb)
+#define DT_HP_GST_HASHVAL (OLD_DT_LOOS + 0xc)
/* Values for DT_HP_DLD_FLAGS. */
#define DT_HP_DEBUG_PRIVATE 0x0001 /* Map text private */
diff --git a/contrib/binutils/include/elf/i370.h b/contrib/binutils/include/elf/i370.h
index 9c021f0..b4e21aa 100644
--- a/contrib/binutils/include/elf/i370.h
+++ b/contrib/binutils/include/elf/i370.h
@@ -1,5 +1,5 @@
/* i370 ELF support for BFD.
- Copyright (C) 1995, 2000 Free Software Foundation, Inc.
+ Copyright (C) 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
diff --git a/contrib/binutils/include/elf/i386.h b/contrib/binutils/include/elf/i386.h
index 0586661..c91f4be 100644
--- a/contrib/binutils/include/elf/i386.h
+++ b/contrib/binutils/include/elf/i386.h
@@ -1,5 +1,5 @@
/* ix86 ELF support for BFD.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 99, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -40,10 +40,9 @@ START_RELOC_NUMBERS (elf_i386_reloc_type)
RELOC_NUMBER (R_386_PC16, 21)
RELOC_NUMBER (R_386_8, 22)
RELOC_NUMBER (R_386_PC8, 23)
- RELOC_NUMBER (R_386_max, 24)
/* These are GNU extensions to enable C++ vtable garbage collection. */
RELOC_NUMBER (R_386_GNU_VTINHERIT, 250)
RELOC_NUMBER (R_386_GNU_VTENTRY, 251)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_386_max)
#endif
diff --git a/contrib/binutils/include/elf/i860.h b/contrib/binutils/include/elf/i860.h
new file mode 100644
index 0000000..08b2ff5
--- /dev/null
+++ b/contrib/binutils/include/elf/i860.h
@@ -0,0 +1,66 @@
+/* i860 ELF support for BFD.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+
+ Contributed by Jason Eckhardt <jle@cygnus.com>.
+
+ This file is part of BFD, the Binary File Descriptor library.
+
+ 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 _ELF_I860_H
+#define _ELF_I860_H
+
+/* Note: i860 ELF is defined to use only RELA relocations. */
+
+#include "elf/reloc-macros.h"
+
+START_RELOC_NUMBERS (elf_i860_reloc_type)
+ RELOC_NUMBER (R_860_NONE, 0x00) /* No reloc */
+ RELOC_NUMBER (R_860_32, 0x01) /* S+A */
+ RELOC_NUMBER (R_860_COPY, 0x02) /* No calculation */
+ RELOC_NUMBER (R_860_GLOB_DAT, 0x03) /* S, Create GOT entry */
+ RELOC_NUMBER (R_860_JUMP_SLOT, 0x04) /* S+A, Create PLT entry */
+ RELOC_NUMBER (R_860_RELATIVE, 0x05) /* B+A, Adj by program base */
+ RELOC_NUMBER (R_860_PC26, 0x30) /* (S+A-P) >> 2 */
+ RELOC_NUMBER (R_860_PLT26, 0x31) /* (L+A-P) >> 2 */
+ RELOC_NUMBER (R_860_PC16, 0x32) /* (S+A-P) >> 2 */
+ RELOC_NUMBER (R_860_LOW0, 0x40) /* S+A */
+ RELOC_NUMBER (R_860_SPLIT0, 0x42) /* S+A */
+ RELOC_NUMBER (R_860_LOW1, 0x44) /* S+A */
+ RELOC_NUMBER (R_860_SPLIT1, 0x46) /* S+A */
+ RELOC_NUMBER (R_860_LOW2, 0x48) /* S+A */
+ RELOC_NUMBER (R_860_SPLIT2, 0x4A) /* S+A */
+ RELOC_NUMBER (R_860_LOW3, 0x4C) /* S+A */
+ RELOC_NUMBER (R_860_LOGOT0, 0x50) /* G */
+ RELOC_NUMBER (R_860_SPGOT0, 0x52) /* G */
+ RELOC_NUMBER (R_860_LOGOT1, 0x54) /* G */
+ RELOC_NUMBER (R_860_SPGOT1, 0x56) /* G */
+ RELOC_NUMBER (R_860_LOGOTOFF0, 0x60) /* O */
+ RELOC_NUMBER (R_860_SPGOTOFF0, 0x62) /* O */
+ RELOC_NUMBER (R_860_LOGOTOFF1, 0x64) /* O */
+ RELOC_NUMBER (R_860_SPGOTOFF1, 0x66) /* O */
+ RELOC_NUMBER (R_860_LOGOTOFF2, 0x68) /* O */
+ RELOC_NUMBER (R_860_LOGOTOFF3, 0x6C) /* O */
+ RELOC_NUMBER (R_860_LOPC, 0x70) /* (S+A-P) >> 2 */
+ RELOC_NUMBER (R_860_HIGHADJ, 0x80) /* hiadj(S+A) */
+ RELOC_NUMBER (R_860_HAGOT, 0x90) /* hiadj(G) */
+ RELOC_NUMBER (R_860_HAGOTOFF, 0xA0) /* hiadj(O) */
+ RELOC_NUMBER (R_860_HAPC, 0xB0) /* hiadj((S+A-P) >> 2) */
+ RELOC_NUMBER (R_860_HIGH, 0xC0) /* (S+A) >> 16 */
+ RELOC_NUMBER (R_860_HIGOT, 0xD0) /* G >> 16 */
+ RELOC_NUMBER (R_860_HIGOTOFF, 0xE0) /* O */
+END_RELOC_NUMBERS (R_860_max)
+
+#endif
diff --git a/contrib/binutils/include/elf/i960.h b/contrib/binutils/include/elf/i960.h
index 3e60289..cbf67d7 100644
--- a/contrib/binutils/include/elf/i960.h
+++ b/contrib/binutils/include/elf/i960.h
@@ -1,5 +1,5 @@
/* Intel 960 ELF support for BFD.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -32,7 +32,6 @@ START_RELOC_NUMBERS (elf_i960_reloc_type)
RELOC_NUMBER (R_960_OPTCALL, 5)
RELOC_NUMBER (R_960_OPTCALLX, 6)
RELOC_NUMBER (R_960_OPTCALLXA, 7)
- EMPTY_RELOC (R_960_max)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_960_max)
#endif /* _ELF_I960_H */
diff --git a/contrib/binutils/include/elf/ia64.h b/contrib/binutils/include/elf/ia64.h
new file mode 100644
index 0000000..3b18288
--- /dev/null
+++ b/contrib/binutils/include/elf/ia64.h
@@ -0,0 +1,190 @@
+/* IA-64 ELF support for BFD.
+ Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
+
+This file is part of BFD, the Binary File Descriptor library.
+
+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 _ELF_IA64_H
+#define _ELF_IA64_H
+
+/* Bits in the e_flags field of the Elf64_Ehdr: */
+
+#define EF_IA_64_MASKOS 0x0000000f /* os-specific flags */
+#define EF_IA_64_ARCH 0xff000000 /* arch. version mask */
+
+/* ??? These four definitions are not part of the SVR4 ABI.
+ They were present in David's initial code drop, so it is probable
+ that they are used by HP/UX. */
+#define EF_IA_64_TRAPNIL (1 << 0) /* trap NIL pointer dereferences */
+#define EF_IA_64_EXT (1 << 2) /* program uses arch. extensions */
+#define EF_IA_64_BE (1 << 3) /* PSR BE bit set (big-endian) */
+#define EFA_IA_64_EAS2_3 0x23000000 /* ia64 EAS 2.3 */
+
+#define EF_IA_64_ABI64 (1 << 4) /* 64-bit ABI */
+/* Not used yet. */
+#define EF_IA_64_REDUCEDFP (1 << 5) /* Only FP6-FP11 used. */
+#define EF_IA_64_CONS_GP (1 << 6) /* gp as program wide constant. */
+#define EF_IA_64_NOFUNCDESC_CONS_GP (1 << 7) /* And no function descriptors. */
+/* Not used yet. */
+#define EF_IA_64_ABSOLUTE (1 << 8) /* Load at absolute addresses. */
+
+#define ELF_STRING_ia64_archext ".IA_64.archext"
+#define ELF_STRING_ia64_pltoff ".IA_64.pltoff"
+#define ELF_STRING_ia64_unwind ".IA_64.unwind"
+#define ELF_STRING_ia64_unwind_info ".IA_64.unwind_info"
+
+/* Bits in the sh_flags field of Elf64_Shdr: */
+
+#define SHF_IA_64_SHORT 0x10000000 /* section near gp */
+#define SHF_IA_64_NORECOV 0x20000000 /* spec insns w/o recovery */
+
+/* Possible values for sh_type in Elf64_Shdr: */
+
+#define SHT_IA_64_EXT (SHT_LOPROC + 0) /* extension bits */
+#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) /* unwind bits */
+
+/* Bits in the p_flags field of Elf64_Phdr: */
+
+#define PF_IA_64_NORECOV 0x80000000
+
+/* Possible values for p_type in Elf64_Phdr: */
+
+#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) /* arch extension bits */
+#define PT_IA_64_UNWIND (PT_LOPROC + 1) /* ia64 unwind bits */
+
+/* Possible values for d_tag in Elf64_Dyn: */
+
+#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0)
+
+/* ia64-specific relocation types: */
+
+/* Relocs apply to specific instructions within a bundle. The least
+ significant 2 bits of the address indicate which instruction in the
+ bundle the reloc refers to (0=first slot, 1=second slow, 2=third
+ slot, 3=undefined) and the remaining bits give the address of the
+ bundle (16 byte aligned).
+
+ The top 5 bits of the reloc code specifies the expression type, the
+ low 3 bits the format of the data word being relocated. */
+
+#include "elf/reloc-macros.h"
+
+START_RELOC_NUMBERS (elf_ia64_reloc_type)
+ RELOC_NUMBER (R_IA64_NONE, 0x00) /* none */
+
+ RELOC_NUMBER (R_IA64_IMM14, 0x21) /* symbol + addend, add imm14 */
+ RELOC_NUMBER (R_IA64_IMM22, 0x22) /* symbol + addend, add imm22 */
+ RELOC_NUMBER (R_IA64_IMM64, 0x23) /* symbol + addend, mov imm64 */
+ RELOC_NUMBER (R_IA64_DIR32MSB, 0x24) /* symbol + addend, data4 MSB */
+ RELOC_NUMBER (R_IA64_DIR32LSB, 0x25) /* symbol + addend, data4 LSB */
+ RELOC_NUMBER (R_IA64_DIR64MSB, 0x26) /* symbol + addend, data8 MSB */
+ RELOC_NUMBER (R_IA64_DIR64LSB, 0x27) /* symbol + addend, data8 LSB */
+
+ RELOC_NUMBER (R_IA64_GPREL22, 0x2a) /* @gprel(sym+add), add imm22 */
+ RELOC_NUMBER (R_IA64_GPREL64I, 0x2b) /* @gprel(sym+add), mov imm64 */
+ RELOC_NUMBER (R_IA64_GPREL32MSB, 0x2c) /* @gprel(sym+add), data4 MSB */
+ RELOC_NUMBER (R_IA64_GPREL32LSB, 0x2d) /* @gprel(sym+add), data4 LSB */
+ RELOC_NUMBER (R_IA64_GPREL64MSB, 0x2e) /* @gprel(sym+add), data8 MSB */
+ RELOC_NUMBER (R_IA64_GPREL64LSB, 0x2f) /* @gprel(sym+add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_LTOFF22, 0x32) /* @ltoff(sym+add), add imm22 */
+ RELOC_NUMBER (R_IA64_LTOFF64I, 0x33) /* @ltoff(sym+add), mov imm64 */
+
+ RELOC_NUMBER (R_IA64_PLTOFF22, 0x3a) /* @pltoff(sym+add), add imm22 */
+ RELOC_NUMBER (R_IA64_PLTOFF64I, 0x3b) /* @pltoff(sym+add), mov imm64 */
+ RELOC_NUMBER (R_IA64_PLTOFF64MSB, 0x3e) /* @pltoff(sym+add), data8 MSB */
+ RELOC_NUMBER (R_IA64_PLTOFF64LSB, 0x3f) /* @pltoff(sym+add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_FPTR64I, 0x43) /* @fptr(sym+add), mov imm64 */
+ RELOC_NUMBER (R_IA64_FPTR32MSB, 0x44) /* @fptr(sym+add), data4 MSB */
+ RELOC_NUMBER (R_IA64_FPTR32LSB, 0x45) /* @fptr(sym+add), data4 LSB */
+ RELOC_NUMBER (R_IA64_FPTR64MSB, 0x46) /* @fptr(sym+add), data8 MSB */
+ RELOC_NUMBER (R_IA64_FPTR64LSB, 0x47) /* @fptr(sym+add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_PCREL60B, 0x48) /* @pcrel(sym+add), brl */
+ RELOC_NUMBER (R_IA64_PCREL21B, 0x49) /* @pcrel(sym+add), ptb, call */
+ RELOC_NUMBER (R_IA64_PCREL21M, 0x4a) /* @pcrel(sym+add), chk.s */
+ RELOC_NUMBER (R_IA64_PCREL21F, 0x4b) /* @pcrel(sym+add), fchkf */
+ RELOC_NUMBER (R_IA64_PCREL32MSB, 0x4c) /* @pcrel(sym+add), data4 MSB */
+ RELOC_NUMBER (R_IA64_PCREL32LSB, 0x4d) /* @pcrel(sym+add), data4 LSB */
+ RELOC_NUMBER (R_IA64_PCREL64MSB, 0x4e) /* @pcrel(sym+add), data8 MSB */
+ RELOC_NUMBER (R_IA64_PCREL64LSB, 0x4f) /* @pcrel(sym+add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_LTOFF_FPTR22, 0x52) /* @ltoff(@fptr(s+a)), imm22 */
+ RELOC_NUMBER (R_IA64_LTOFF_FPTR64I, 0x53) /* @ltoff(@fptr(s+a)), imm64 */
+ RELOC_NUMBER (R_IA64_LTOFF_FPTR32MSB, 0x54) /* @ltoff(@fptr(s+a)), 4 MSB */
+ RELOC_NUMBER (R_IA64_LTOFF_FPTR32LSB, 0x55) /* @ltoff(@fptr(s+a)), 4 LSB */
+ RELOC_NUMBER (R_IA64_LTOFF_FPTR64MSB, 0x56) /* @ltoff(@fptr(s+a)), 8 MSB */
+ RELOC_NUMBER (R_IA64_LTOFF_FPTR64LSB, 0x57) /* @ltoff(@fptr(s+a)), 8 LSB */
+
+ RELOC_NUMBER (R_IA64_SEGREL32MSB, 0x5c) /* @segrel(sym+add), data4 MSB */
+ RELOC_NUMBER (R_IA64_SEGREL32LSB, 0x5d) /* @segrel(sym+add), data4 LSB */
+ RELOC_NUMBER (R_IA64_SEGREL64MSB, 0x5e) /* @segrel(sym+add), data8 MSB */
+ RELOC_NUMBER (R_IA64_SEGREL64LSB, 0x5f) /* @segrel(sym+add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_SECREL32MSB, 0x64) /* @secrel(sym+add), data4 MSB */
+ RELOC_NUMBER (R_IA64_SECREL32LSB, 0x65) /* @secrel(sym+add), data4 LSB */
+ RELOC_NUMBER (R_IA64_SECREL64MSB, 0x66) /* @secrel(sym+add), data8 MSB */
+ RELOC_NUMBER (R_IA64_SECREL64LSB, 0x67) /* @secrel(sym+add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_REL32MSB, 0x6c) /* data 4 + REL */
+ RELOC_NUMBER (R_IA64_REL32LSB, 0x6d) /* data 4 + REL */
+ RELOC_NUMBER (R_IA64_REL64MSB, 0x6e) /* data 8 + REL */
+ RELOC_NUMBER (R_IA64_REL64LSB, 0x6f) /* data 8 + REL */
+
+ RELOC_NUMBER (R_IA64_LTV32MSB, 0x74) /* symbol + addend, data4 MSB */
+ RELOC_NUMBER (R_IA64_LTV32LSB, 0x75) /* symbol + addend, data4 LSB */
+ RELOC_NUMBER (R_IA64_LTV64MSB, 0x76) /* symbol + addend, data8 MSB */
+ RELOC_NUMBER (R_IA64_LTV64LSB, 0x77) /* symbol + addend, data8 LSB */
+
+ RELOC_NUMBER (R_IA64_PCREL21BI, 0x79) /* @pcrel(sym+add), ptb, call */
+ RELOC_NUMBER (R_IA64_PCREL22, 0x7a) /* @pcrel(sym+add), imm22 */
+ RELOC_NUMBER (R_IA64_PCREL64I, 0x7b) /* @pcrel(sym+add), imm64 */
+
+ RELOC_NUMBER (R_IA64_IPLTMSB, 0x80) /* dynamic reloc, imported PLT, MSB */
+ RELOC_NUMBER (R_IA64_IPLTLSB, 0x81) /* dynamic reloc, imported PLT, LSB */
+ RELOC_NUMBER (R_IA64_COPY, 0x84) /* dynamic reloc, data copy */
+ RELOC_NUMBER (R_IA64_LTOFF22X, 0x86) /* LTOFF22, relaxable. */
+ RELOC_NUMBER (R_IA64_LDXMOV, 0x87) /* Use of LTOFF22X. */
+
+ RELOC_NUMBER (R_IA64_TPREL14, 0x91) /* @tprel(sym+add), add imm14 */
+ RELOC_NUMBER (R_IA64_TPREL22, 0x92) /* @tprel(sym+add), add imm22 */
+ RELOC_NUMBER (R_IA64_TPREL64I, 0x93) /* @tprel(sym+add), add imm64 */
+ RELOC_NUMBER (R_IA64_TPREL64MSB, 0x96) /* @tprel(sym+add), data8 MSB */
+ RELOC_NUMBER (R_IA64_TPREL64LSB, 0x97) /* @tprel(sym+add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_LTOFF_TP22, 0x9a) /* @ltoff(@tprel(s+a)), add imm22 */
+
+ RELOC_NUMBER (R_IA64_DTPMOD64MSB, 0xa6) /* @dtpmod(sym+add), data8 MSB */
+ RELOC_NUMBER (R_IA64_DTPMOD64LSB, 0xa7) /* @dtpmod(sym+add), data8 LSB */
+ RELOC_NUMBER (R_IA64_LTOFF_DTPMOD22, 0xaa) /* @ltoff(@dtpmod(s+a)), imm22 */
+
+ RELOC_NUMBER (R_IA64_DTPREL14, 0xb1) /* @dtprel(sym+add), imm14 */
+ RELOC_NUMBER (R_IA64_DTPREL22, 0xb2) /* @dtprel(sym+add), imm22 */
+ RELOC_NUMBER (R_IA64_DTPREL64I, 0xb3) /* @dtprel(sym+add), imm64 */
+ RELOC_NUMBER (R_IA64_DTPREL32MSB, 0xb4) /* @dtprel(sym+add), data4 MSB */
+ RELOC_NUMBER (R_IA64_DTPREL32LSB, 0xb5) /* @dtprel(sym+add), data4 LSB */
+ RELOC_NUMBER (R_IA64_DTPREL64MSB, 0xb6) /* @dtprel(sym+add), data8 MSB */
+ RELOC_NUMBER (R_IA64_DTPREL64LSB, 0xb7) /* @dtprel(sym+add), data8 LSB */
+
+ RELOC_NUMBER (R_IA64_LTOFF_DTPREL22, 0xba) /* @ltoff(@dtprel(s+a)), imm22 */
+
+ FAKE_RELOC (R_IA64_MAX_RELOC_CODE, 0xba)
+END_RELOC_NUMBERS (R_IA64_max)
+
+#endif /* _ELF_IA64_H */
diff --git a/contrib/binutils/include/elf/internal.h b/contrib/binutils/include/elf/internal.h
index a9b81a07..6ca316b 100644
--- a/contrib/binutils/include/elf/internal.h
+++ b/contrib/binutils/include/elf/internal.h
@@ -1,5 +1,6 @@
/* ELF support for BFD.
- Copyright (C) 1991, 92, 93, 94, 95, 97, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1991, 92, 93, 94, 95, 97, 98, 2000
+ Free Software Foundation, Inc.
Written by Fred Fish @ Cygnus Support, from information published
in "UNIX System V Release 4, Programmers Guide: ANSI C and
@@ -112,7 +113,7 @@ struct elf_internal_sym {
bfd_vma st_size; /* Associated symbol size */
unsigned long st_name; /* Symbol name, index in string tbl */
unsigned char st_info; /* Type and binding attributes */
- unsigned char st_other; /* No defined meaning, 0 */
+ unsigned char st_other; /* Visibilty, and target specific */
unsigned short st_shndx; /* Associated section index */
};
diff --git a/contrib/binutils/include/elf/m32r.h b/contrib/binutils/include/elf/m32r.h
index a12ae16..9b6c4e9 100644
--- a/contrib/binutils/include/elf/m32r.h
+++ b/contrib/binutils/include/elf/m32r.h
@@ -1,5 +1,5 @@
/* M32R ELF support for BFD.
- Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1996, 97, 98, 99, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -37,8 +37,7 @@ START_RELOC_NUMBERS (elf_m32r_reloc_type)
RELOC_NUMBER (R_M32R_SDA16, 10)
RELOC_NUMBER (R_M32R_GNU_VTINHERIT, 11)
RELOC_NUMBER (R_M32R_GNU_VTENTRY, 12)
- EMPTY_RELOC (R_M32R_max)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_M32R_max)
/* Processor specific section indices. These sections do not actually
exist. Symbols with a st_shndx field corresponding to one of these
diff --git a/contrib/binutils/include/elf/m68hc11.h b/contrib/binutils/include/elf/m68hc11.h
new file mode 100644
index 0000000..30e0556
--- /dev/null
+++ b/contrib/binutils/include/elf/m68hc11.h
@@ -0,0 +1,42 @@
+/* m68hc11 & m68hc12 ELF support for BFD.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+
+ This file is part of BFD, the Binary File Descriptor library.
+
+ 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 _ELF_M68HC11_H
+#define _ELF_M68HC11_H
+
+#include "elf/reloc-macros.h"
+
+/* Relocation types. */
+START_RELOC_NUMBERS (elf_m68hc11_reloc_type)
+ RELOC_NUMBER (R_M68HC11_NONE, 0)
+ RELOC_NUMBER (R_M68HC11_8, 1)
+ RELOC_NUMBER (R_M68HC11_HI8, 2)
+ RELOC_NUMBER (R_M68HC11_LO8, 3)
+ RELOC_NUMBER (R_M68HC11_PCREL_8, 4)
+ RELOC_NUMBER (R_M68HC11_16, 5)
+ RELOC_NUMBER (R_M68HC11_32, 6)
+ RELOC_NUMBER (R_M68HC11_3B, 7)
+ RELOC_NUMBER (R_M68HC11_PCREL_16, 8)
+
+ /* These are GNU extensions to enable C++ vtable garbage collection. */
+ RELOC_NUMBER (R_M68HC11_GNU_VTINHERIT, 9)
+ RELOC_NUMBER (R_M68HC11_GNU_VTENTRY, 10)
+END_RELOC_NUMBERS (R_M68HC11_max)
+
+#endif
diff --git a/contrib/binutils/include/elf/m68k.h b/contrib/binutils/include/elf/m68k.h
index e2d51ef..a6aab10 100644
--- a/contrib/binutils/include/elf/m68k.h
+++ b/contrib/binutils/include/elf/m68k.h
@@ -1,5 +1,5 @@
/* MC68k ELF support for BFD.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 99, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -50,8 +50,7 @@ START_RELOC_NUMBERS (elf_m68k_reloc_type)
/* These are GNU extensions to enable C++ vtable garbage collection. */
RELOC_NUMBER (R_68K_GNU_VTINHERIT, 23)
RELOC_NUMBER (R_68K_GNU_VTENTRY, 24)
- EMPTY_RELOC (R_68K_max)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_68K_max)
#define EF_CPU32 0x00810000
diff --git a/contrib/binutils/include/elf/mcore.h b/contrib/binutils/include/elf/mcore.h
index 62a88c9..f97a682 100644
--- a/contrib/binutils/include/elf/mcore.h
+++ b/contrib/binutils/include/elf/mcore.h
@@ -1,5 +1,5 @@
/* Motorola MCore support for BFD.
- Copyright (C) 1995, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1995, 99, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -38,8 +38,7 @@ START_RELOC_NUMBERS (elf_mcore_reloc_type)
RELOC_NUMBER (R_MCORE_COPY, 10)
RELOC_NUMBER (R_MCORE_GLOB_DAT, 11)
RELOC_NUMBER (R_MCORE_JUMP_SLOT, 12)
- EMPTY_RELOC (R_MCORE_max)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_MCORE_max)
/* Section Attributes. */
#define SHF_MCORE_NOREAD 0x80000000
diff --git a/contrib/binutils/include/elf/mips.h b/contrib/binutils/include/elf/mips.h
index 1e2a9f9..4446512 100644
--- a/contrib/binutils/include/elf/mips.h
+++ b/contrib/binutils/include/elf/mips.h
@@ -1,5 +1,6 @@
/* MIPS ELF support for BFD.
- Copyright (C) 1993, 1994, 1995, 1996, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1993, 94, 95, 96, 97, 98, 99, 2000
+ Free Software Foundation, Inc.
By Ian Lance Taylor, Cygnus Support, <ian@cygnus.com>, from
information in the System V Application Binary Interface, MIPS
@@ -84,7 +85,7 @@ START_RELOC_NUMBERS (elf_mips_reloc_type)
/* These are GNU extensions to enable C++ vtable garbage collection. */
RELOC_NUMBER (R_MIPS_GNU_VTINHERIT, 253)
RELOC_NUMBER (R_MIPS_GNU_VTENTRY, 254)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_MIPS_maxext)
/* Processor specific flags for the ELF header e_flags field. */
@@ -120,6 +121,15 @@ END_RELOC_NUMBERS
/* -mips4 code. */
#define E_MIPS_ARCH_4 0x30000000
+/* -mips5 code. */
+#define E_MIPS_ARCH_5 0x40000000
+
+/* -mips32 code. */
+#define E_MIPS_ARCH_32 0x50000000
+
+/* -mips64 code. */
+#define E_MIPS_ARCH_64 0x60000000
+
/* The ABI of the file. Also see EF_MIPS_ABI2 above. */
#define EF_MIPS_ABI 0x0000F000
@@ -152,7 +162,8 @@ END_RELOC_NUMBERS
#define E_MIPS_MACH_4100 0x00830000
#define E_MIPS_MACH_4650 0x00850000
#define E_MIPS_MACH_4111 0x00880000
-
+#define E_MIPS_MACH_MIPS32_4K 0x00890000
+#define E_MIPS_MACH_SB1 0x008a0000
/* Processor specific section indices. These sections do not actually
exist. Symbols with a st_shndx field corresponding to one of these
diff --git a/contrib/binutils/include/elf/mn10200.h b/contrib/binutils/include/elf/mn10200.h
index 5e29e0a..1a14ee7 100644
--- a/contrib/binutils/include/elf/mn10200.h
+++ b/contrib/binutils/include/elf/mn10200.h
@@ -1,5 +1,5 @@
/* MN10200 ELF support for BFD.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -34,6 +34,6 @@ START_RELOC_NUMBERS (elf_mn10200_reloc_type)
RELOC_NUMBER (R_MN10200_PCREL8, 5)
RELOC_NUMBER (R_MN10200_PCREL16, 6)
RELOC_NUMBER (R_MN10200_PCREL24, 7)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_MN10200_max)
#endif /* _ELF_MN10200_H */
diff --git a/contrib/binutils/include/elf/mn10300.h b/contrib/binutils/include/elf/mn10300.h
index 1b90a13..74f2da8 100644
--- a/contrib/binutils/include/elf/mn10300.h
+++ b/contrib/binutils/include/elf/mn10300.h
@@ -1,5 +1,5 @@
/* MN10300 ELF support for BFD.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 99, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -36,8 +36,7 @@ START_RELOC_NUMBERS (elf_mn10300_reloc_type)
RELOC_NUMBER (R_MN10300_GNU_VTINHERIT, 7)
RELOC_NUMBER (R_MN10300_GNU_VTENTRY, 8)
RELOC_NUMBER (R_MN10300_24, 9)
- EMPTY_RELOC (R_MN10300_MAX)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_MN10300_MAX)
/* Machine variant if we know it. This field was invented at Cygnus,
but it is hoped that other vendors will adopt it. If some standard
diff --git a/contrib/binutils/include/elf/pj.h b/contrib/binutils/include/elf/pj.h
index 6bb8306..7690ea6 100644
--- a/contrib/binutils/include/elf/pj.h
+++ b/contrib/binutils/include/elf/pj.h
@@ -1,5 +1,5 @@
/* picoJava ELF support for BFD.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -35,8 +35,7 @@ START_RELOC_NUMBERS (elf_pj_reloc_type)
RELOC_NUMBER (R_PJ_CODE_HI16, 14)
RELOC_NUMBER (R_PJ_GNU_VTINHERIT, 15)
RELOC_NUMBER (R_PJ_GNU_VTENTRY, 16)
- EMPTY_RELOC (R_PJ_max)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_PJ_max)
#define EF_PICOJAVA_ARCH 0x0000000f
#define EF_PICOJAVA_NEWCALLS 0x00000010
diff --git a/contrib/binutils/include/elf/ppc.h b/contrib/binutils/include/elf/ppc.h
index b3116d8..f53bacd 100644
--- a/contrib/binutils/include/elf/ppc.h
+++ b/contrib/binutils/include/elf/ppc.h
@@ -1,5 +1,5 @@
/* PPC ELF support for BFD.
- Copyright (C) 1995, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1995, 96, 98, 2000 Free Software Foundation, Inc.
By Michael Meissner, Cygnus Support, <meissner@cygnus.com>, from information
in the System V Application Binary Interface, PowerPC Processor Supplement
@@ -96,19 +96,17 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type)
that may still be in object files. */
RELOC_NUMBER (R_PPC_TOC16, 255)
- EMPTY_RELOC (R_PPC_max)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_PPC_max)
/* Processor specific flags for the ELF header e_flags field. */
-#define EF_PPC_EMB 0x80000000 /* PowerPC embedded flag */
+#define EF_PPC_EMB 0x80000000 /* PowerPC embedded flag. */
- /* CYGNUS local bits below */
-#define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag */
-#define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC -mrelocatable-lib flag */
+#define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag. */
+#define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC -mrelocatable-lib flag. */
-/* Processor specific section headers, sh_type field */
+/* Processor specific section headers, sh_type field. */
#define SHT_ORDERED SHT_HIPROC /* Link editor is to sort the \
entries in this section \
@@ -116,7 +114,7 @@ END_RELOC_NUMBERS
specified in the associated \
symbol table entry. */
-/* Processor specific section flags, sh_flags field */
+/* Processor specific section flags, sh_flags field. */
#define SHF_EXCLUDE 0x80000000 /* Link editor is to exclude \
this section from executable \
diff --git a/contrib/binutils/include/elf/reloc-macros.h b/contrib/binutils/include/elf/reloc-macros.h
index 42174ca..df5e0e3 100644
--- a/contrib/binutils/include/elf/reloc-macros.h
+++ b/contrib/binutils/include/elf/reloc-macros.h
@@ -1,5 +1,5 @@
/* Generic relocation support for BFD.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 99, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -27,20 +27,20 @@
START_RELOC_NUMBERS (foo)
RELOC_NUMBER (R_foo_NONE, 0)
RELOC_NUMBER (R_foo_32, 1)
- FAKE_RELOC (R_foo_illegal, 2)
- EMPTY_RELOC (R_foo_max)
- END_RELOC_NUMBERS
+ EMPTY_RELOC (R_foo_good)
+ FAKE_RELOC (R_foo_illegal, 9)
+ END_RELOC_NUMBERS (R_foo_count)
Then the following will be produced by default (ie if
RELOC_MACROS_GEN_FUNC is *not* defined).
enum foo
{
- foo = -1,
R_foo_NONE = 0,
R_foo_32 = 1,
- R_foo_illegal = 2,
- R_foo_max
+ R_foo_good,
+ R_foo_illegal = 9,
+ R_foo_count
};
If RELOC_MACROS_GEN_FUNC *is* defined, then instead the
@@ -59,7 +59,7 @@
}
}
*/
-
+
#ifndef _RELOC_MACROS_H
#define _RELOC_MACROS_H
@@ -78,16 +78,16 @@ name (rtype) \
switch (rtype) \
{
-#ifdef __STDC__
+#if defined (__STDC__) || defined (ALMOST_STDC)
#define RELOC_NUMBER(name, number) case number : return #name ;
#else
#define RELOC_NUMBER(name, number) case number : return "name" ;
#endif
-#define FAKE_RELOC(name, number)
+#define FAKE_RELOC(name, number)
#define EMPTY_RELOC(name)
-
-#define END_RELOC_NUMBERS \
+
+#define END_RELOC_NUMBERS(name) \
default: return NULL; \
} \
}
@@ -95,21 +95,11 @@ name (rtype) \
#else /* Default to generating enum. */
-/* Some compilers cannot cope with an enum that ends with a trailing
- comma, so START_RELOC_NUMBERS creates a fake reloc entry, (initialised
- to -1 so that the first real entry will still default to 0). Further
- entries then prepend a comma to their definitions, creating a list
- of enumerator entries that will satisfy these compilers. */
-#ifdef __STDC__
-#define START_RELOC_NUMBERS(name) enum name { _##name = -1
-#else
-#define START_RELOC_NUMBERS(name) enum name { name = -1
-#endif
-
-#define RELOC_NUMBER(name, number) , name = number
-#define FAKE_RELOC(name, number) , name = number
-#define EMPTY_RELOC(name) , name
-#define END_RELOC_NUMBERS };
+#define START_RELOC_NUMBERS(name) enum name {
+#define RELOC_NUMBER(name, number) name = number,
+#define FAKE_RELOC(name, number) name = number,
+#define EMPTY_RELOC(name) name,
+#define END_RELOC_NUMBERS(name) name };
#endif
diff --git a/contrib/binutils/include/elf/sh.h b/contrib/binutils/include/elf/sh.h
index faee509..6a1e561 100644
--- a/contrib/binutils/include/elf/sh.h
+++ b/contrib/binutils/include/elf/sh.h
@@ -1,5 +1,5 @@
/* SH ELF support for BFD.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2000 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -76,7 +76,18 @@ START_RELOC_NUMBERS (elf_sh_reloc_type)
RELOC_NUMBER (R_SH_SWITCH8, 33)
RELOC_NUMBER (R_SH_GNU_VTINHERIT, 34)
RELOC_NUMBER (R_SH_GNU_VTENTRY, 35)
- EMPTY_RELOC (R_SH_max)
-END_RELOC_NUMBERS
+ RELOC_NUMBER (R_SH_LOOP_START, 36)
+ RELOC_NUMBER (R_SH_LOOP_END, 37)
+ FAKE_RELOC (R_SH_FIRST_INVALID_RELOC_2, 38)
+ FAKE_RELOC (R_SH_LAST_INVALID_RELOC_2, 159)
+ RELOC_NUMBER (R_SH_GOT32, 160)
+ RELOC_NUMBER (R_SH_PLT32, 161)
+ RELOC_NUMBER (R_SH_COPY, 162)
+ RELOC_NUMBER (R_SH_GLOB_DAT, 163)
+ RELOC_NUMBER (R_SH_JMP_SLOT, 164)
+ RELOC_NUMBER (R_SH_RELATIVE, 165)
+ RELOC_NUMBER (R_SH_GOTOFF, 166)
+ RELOC_NUMBER (R_SH_GOTPC, 167)
+END_RELOC_NUMBERS (R_SH_max)
#endif
diff --git a/contrib/binutils/include/elf/sparc.h b/contrib/binutils/include/elf/sparc.h
index 390e4a8..f4a199e 100644
--- a/contrib/binutils/include/elf/sparc.h
+++ b/contrib/binutils/include/elf/sparc.h
@@ -1,5 +1,5 @@
/* SPARC ELF support for BFD.
- Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1996, 97, 98, 99, 2000 Free Software Foundation, Inc.
By Doug Evans, Cygnus Support, <dje@cygnus.com>.
This file is part of BFD, the Binary File Descriptor library.
@@ -134,8 +134,7 @@ START_RELOC_NUMBERS (elf_sparc_reloc_type)
RELOC_NUMBER (R_SPARC_GNU_VTINHERIT, 250)
RELOC_NUMBER (R_SPARC_GNU_VTENTRY, 251)
- EMPTY_RELOC (R_SPARC_max)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_SPARC_max)
/* Relocation macros. */
diff --git a/contrib/binutils/include/elf/v850.h b/contrib/binutils/include/elf/v850.h
index d443b7f..7b22340 100644
--- a/contrib/binutils/include/elf/v850.h
+++ b/contrib/binutils/include/elf/v850.h
@@ -1,5 +1,5 @@
/* V850 ELF support for BFD.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 98, 2000 Free Software Foundation, Inc.
Created by Michael Meissner, Cygnus Support <meissner@cygnus.com>
This file is part of BFD, the Binary File Descriptor library.
@@ -67,19 +67,15 @@ START_RELOC_NUMBERS (v850_reloc_type)
RELOC_NUMBER( R_V850_TDA_7_8_OFFSET, 14) /* For sst.h, sld.h */
RELOC_NUMBER( R_V850_TDA_7_7_OFFSET, 15) /* For sst.b, sld.b */
RELOC_NUMBER( R_V850_TDA_16_16_OFFSET, 16) /* For set1, clr1, not1, tst1, movea, movhi */
-/* CYGNUS LOCAL v850e */
RELOC_NUMBER( R_V850_TDA_4_5_OFFSET, 17) /* For sld.hu */
RELOC_NUMBER( R_V850_TDA_4_4_OFFSET, 18) /* For sld.bu */
RELOC_NUMBER( R_V850_SDA_16_16_SPLIT_OFFSET, 19) /* For ld.bu */
RELOC_NUMBER( R_V850_ZDA_16_16_SPLIT_OFFSET, 20) /* For ld.bu */
RELOC_NUMBER( R_V850_CALLT_6_7_OFFSET, 21) /* For callt */
RELOC_NUMBER( R_V850_CALLT_16_16_OFFSET, 22) /* For callt */
-/* END CYGNUS LOCAL */
RELOC_NUMBER (R_V850_GNU_VTINHERIT, 23)
RELOC_NUMBER (R_V850_GNU_VTENTRY, 24)
-
- EMPTY_RELOC (R_V850_max)
-END_RELOC_NUMBERS
+END_RELOC_NUMBERS (R_V850_max)
/* Processor specific section indices. These sections do not actually
diff --git a/contrib/binutils/include/elf/x86-64.h b/contrib/binutils/include/elf/x86-64.h
new file mode 100644
index 0000000..a4da0a3
--- /dev/null
+++ b/contrib/binutils/include/elf/x86-64.h
@@ -0,0 +1,46 @@
+/* x86_64 ELF support for BFD.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ Contributed by Jan Hubicka <jh@suse.cz>
+
+ This file is part of BFD, the Binary File Descriptor library.
+
+ 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 _ELF_X86_64_H
+#define _ELF_X86_64_H
+
+#include "elf/reloc-macros.h"
+
+START_RELOC_NUMBERS (elf_x86_64_reloc_type)
+ RELOC_NUMBER (R_X86_64_NONE, 0) /* No reloc */
+ RELOC_NUMBER (R_X86_64_64, 1) /* Direct 64 bit */
+ RELOC_NUMBER (R_X86_64_PC32, 2) /* PC relative 32 bit signed */
+ RELOC_NUMBER (R_X86_64_GOT32, 3) /* 32 bit GOT entry */
+ RELOC_NUMBER (R_X86_64_PLT32, 4) /* 32 bit PLT address */
+ RELOC_NUMBER (R_X86_64_COPY, 5) /* Copy symbol at runtime */
+ RELOC_NUMBER (R_X86_64_GLOB_DAT, 6) /* Create GOT entry */
+ RELOC_NUMBER (R_X86_64_JUMP_SLOT, 7) /* Create PLT entry */
+ RELOC_NUMBER (R_X86_64_RELATIVE, 8) /* Adjust by program base */
+ RELOC_NUMBER (R_X86_64_GOTPCREL, 9) /* 32 bit signed pc relative
+ offset to GOT */
+ RELOC_NUMBER (R_X86_64_32, 10) /* Direct 32 bit zero extended */
+ RELOC_NUMBER (R_X86_64_32S, 11) /* Direct 32 bit sign extended */
+ RELOC_NUMBER (R_X86_64_16, 12) /* Direct 16 bit zero extended */
+ RELOC_NUMBER (R_X86_64_PC16, 13) /* 16 bit sign extended pc relative*/
+ RELOC_NUMBER (R_X86_64_8, 14) /* Direct 8 bit sign extended */
+ RELOC_NUMBER (R_X86_64_PC8, 15) /* 8 bit sign extended pc relative*/
+END_RELOC_NUMBERS (R_X86_64_max)
+
+#endif
diff --git a/contrib/binutils/include/floatformat.h b/contrib/binutils/include/floatformat.h
index 90daca2..e4d1d15 100644
--- a/contrib/binutils/include/floatformat.h
+++ b/contrib/binutils/include/floatformat.h
@@ -1,5 +1,5 @@
/* IEEE floating point support declarations, for GDB, the GNU Debugger.
- Copyright (C) 1991 Free Software Foundation, Inc.
+ Copyright (C) 1991, 2000 Free Software Foundation, Inc.
This file is part of GDB.
@@ -73,6 +73,9 @@ struct floatformat
/* Is the integer bit explicit or implicit? */
enum floatformat_intbit intbit;
+
+ /* Internal name for debugging. */
+ const char *name;
};
/* floatformats for IEEE single and double, big and little endian. */
diff --git a/contrib/binutils/include/getopt.h b/contrib/binutils/include/getopt.h
index fb30719..bf65c6e 100644
--- a/contrib/binutils/include/getopt.h
+++ b/contrib/binutils/include/getopt.h
@@ -1,5 +1,6 @@
/* Declarations for getopt.
- Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc.
+ Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997
+ Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@gnu.org.
@@ -99,13 +100,20 @@ struct option
#define optional_argument 2
#if defined (__STDC__) && __STDC__
-#ifdef __GNU_LIBRARY__
+/* HAVE_DECL_* is a three-state macro: undefined, 0 or 1. If it is
+ undefined, we haven't run the autoconf check so provide the
+ declaration without arguments. If it is 0, we checked and failed
+ to find the declaration so provide a fully prototyped one. If it
+ is 1, we found it so don't provide any declaration at all. */
+#if defined (__GNU_LIBRARY__) || (defined (HAVE_DECL_GETOPT) && !HAVE_DECL_GETOPT)
/* Many other libraries have conflicting prototypes for getopt, with
differences in the consts, in stdlib.h. To avoid compilation
errors, only prototype getopt for the GNU C library. */
extern int getopt (int argc, char *const *argv, const char *shortopts);
#else /* not __GNU_LIBRARY__ */
+# if !defined (HAVE_DECL_GETOPT)
extern int getopt ();
+# endif
#endif /* __GNU_LIBRARY__ */
extern int getopt_long (int argc, char *const *argv, const char *shortopts,
const struct option *longopts, int *longind);
diff --git a/contrib/binutils/include/hashtab.h b/contrib/binutils/include/hashtab.h
index 5fe2393..a577c5e 100644
--- a/contrib/binutils/include/hashtab.h
+++ b/contrib/binutils/include/hashtab.h
@@ -1,5 +1,5 @@
/* An expandable hash tables datatype.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
Contributed by Vladimir Makarov (vmakarov@cygnus.com).
This program is free software; you can redistribute it and/or modify
@@ -38,10 +38,13 @@ extern "C" {
#include <ansidecl.h>
+/* The type for a hash code. */
+typedef unsigned int hashval_t;
+
/* Callback function pointer types. */
/* Calculate hash of a table entry. */
-typedef unsigned int (*htab_hash) PARAMS ((const void *));
+typedef hashval_t (*htab_hash) PARAMS ((const void *));
/* Compare a table entry with a possible entry. The entry already in
the table always comes first, so the second element can be of a
@@ -77,7 +80,7 @@ struct htab
htab_del del_f;
/* Table itself. */
- void **entries;
+ PTR *entries;
/* Current size (in entries) of the hash table */
size_t size;
@@ -95,23 +98,38 @@ struct htab
/* The following member is used for debugging. Its value is number
of collisions fixed for time of work with the hash table. */
unsigned int collisions;
+
+ /* This is non-zero if we are allowed to return NULL for function calls
+ that allocate memory. */
+ int return_allocation_failure;
};
typedef struct htab *htab_t;
+/* An enum saying whether we insert into the hash table or not. */
+enum insert_option {NO_INSERT, INSERT};
+
/* The prototypes of the package functions. */
extern htab_t htab_create PARAMS ((size_t, htab_hash,
htab_eq, htab_del));
+
+/* This function is like htab_create, but may return NULL if memory
+ allocation fails, and also signals that htab_find_slot_with_hash and
+ htab_find_slot are allowed to return NULL when inserting. */
+extern htab_t htab_try_create PARAMS ((size_t, htab_hash,
+ htab_eq, htab_del));
extern void htab_delete PARAMS ((htab_t));
extern void htab_empty PARAMS ((htab_t));
-extern void *htab_find PARAMS ((htab_t, const void *));
-extern void **htab_find_slot PARAMS ((htab_t, const void *, int));
-extern void *htab_find_with_hash PARAMS ((htab_t, const void *,
- unsigned int));
-extern void **htab_find_slot_with_hash PARAMS ((htab_t, const void *,
- unsigned int, int));
+extern PTR htab_find PARAMS ((htab_t, const void *));
+extern PTR *htab_find_slot PARAMS ((htab_t, const void *,
+ enum insert_option));
+extern PTR htab_find_with_hash PARAMS ((htab_t, const void *,
+ hashval_t));
+extern PTR *htab_find_slot_with_hash PARAMS ((htab_t, const void *,
+ hashval_t,
+ enum insert_option));
extern void htab_clear_slot PARAMS ((htab_t, void **));
extern void htab_remove_elt PARAMS ((htab_t, void *));
@@ -121,6 +139,12 @@ extern size_t htab_size PARAMS ((htab_t));
extern size_t htab_elements PARAMS ((htab_t));
extern double htab_collisions PARAMS ((htab_t));
+/* A hash function for pointers. */
+extern htab_hash htab_hash_pointer;
+
+/* An equality function for pointers. */
+extern htab_eq htab_eq_pointer;
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/contrib/binutils/include/libiberty.h b/contrib/binutils/include/libiberty.h
index 9a536a4..64d072b 100644
--- a/contrib/binutils/include/libiberty.h
+++ b/contrib/binutils/include/libiberty.h
@@ -16,6 +16,13 @@ extern "C" {
#include "ansidecl.h"
+#ifdef ANSI_PROTOTYPES
+/* Get a definition for size_t. */
+#include <stddef.h>
+/* Get a definition for va_list. */
+#include <stdarg.h>
+#endif
+
/* Build an argument vector from a string. Allocates memory using
malloc. Use freeargv to free the vector. */
@@ -36,10 +43,17 @@ extern char **dupargv PARAMS ((char **)) ATTRIBUTE_MALLOC;
across different systems, sometimes as "char *" and sometimes as
"const char *" */
-#if defined (__GNU_LIBRARY__ ) || defined (__linux__) || defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__CYGWIN__) || defined (__CYGWIN32__)
+/* HAVE_DECL_* is a three-state macro: undefined, 0 or 1. If it is
+ undefined, we haven't run the autoconf check so provide the
+ declaration without arguments. If it is 0, we checked and failed
+ to find the declaration so provide a fully prototyped one. If it
+ is 1, we found it so don't provide any declaration at all. */
+#if defined (__GNU_LIBRARY__ ) || defined (__linux__) || defined (__FreeBSD__) || defined (__OpenBSD__) || defined (__CYGWIN__) || defined (__CYGWIN32__) || (defined (HAVE_DECL_BASENAME) && !HAVE_DECL_BASENAME)
extern char *basename PARAMS ((const char *));
#else
+# if !defined (HAVE_DECL_BASENAME)
extern char *basename ();
+# endif
#endif
/* Concatenate an arbitrary number of strings, up to (char *) NULL.
@@ -123,16 +137,13 @@ extern void xexit PARAMS ((int status)) ATTRIBUTE_NORETURN;
extern void xmalloc_set_program_name PARAMS ((const char *));
+/* Report an allocation failure. */
+extern void xmalloc_failed PARAMS ((size_t)) ATTRIBUTE_NORETURN;
+
/* Allocate memory without fail. If malloc fails, this will print a
message to stderr (using the name set by xmalloc_set_program_name,
if any) and then call xexit. */
-#ifdef ANSI_PROTOTYPES
-/* Get a definition for size_t. */
-#include <stddef.h>
-/* Get a definition for va_list. */
-#include <stdarg.h>
-#endif
extern PTR xmalloc PARAMS ((size_t)) ATTRIBUTE_MALLOC;
/* Reallocate memory without fail. This works like xmalloc. Note,
@@ -193,6 +204,8 @@ extern int asprintf PARAMS ((char **, const char *, ...)) ATTRIBUTE_PRINTF_2;
extern int vasprintf PARAMS ((char **, const char *, va_list))
ATTRIBUTE_PRINTF(2,0);
+#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
+
#ifdef __cplusplus
}
#endif
diff --git a/contrib/binutils/include/md5.h b/contrib/binutils/include/md5.h
new file mode 100644
index 0000000..0840b31
--- /dev/null
+++ b/contrib/binutils/include/md5.h
@@ -0,0 +1,142 @@
+/* md5.h - Declaration of functions and data types used for MD5 sum
+ computing library functions.
+ Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+ NOTE: The canonical source of this file is maintained with the GNU C
+ Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+ 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. */
+
+#ifndef _MD5_H
+#define _MD5_H 1
+
+#include <stdio.h>
+
+#if defined HAVE_LIMITS_H || _LIBC
+# include <limits.h>
+#endif
+
+/* The following contortions are an attempt to use the C preprocessor
+ to determine an unsigned integral type that is 32 bits wide. An
+ alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
+ doing that would require that the configure script compile and *run*
+ the resulting executable. Locally running cross-compiled executables
+ is usually not possible. */
+
+#ifdef _LIBC
+# include <sys/types.h>
+typedef u_int32_t md5_uint32;
+#else
+# define INT_MAX_32_BITS 2147483647
+
+/* If UINT_MAX isn't defined, assume it's a 32-bit type.
+ This should be valid for all systems GNU cares about because
+ that doesn't include 16-bit systems, and only modern systems
+ (that certainly have <limits.h>) have 64+-bit integral types. */
+
+# ifndef INT_MAX
+# define INT_MAX INT_MAX_32_BITS
+# endif
+
+# if INT_MAX == INT_MAX_32_BITS
+ typedef unsigned int md5_uint32;
+# else
+# if SHRT_MAX == INT_MAX_32_BITS
+ typedef unsigned short md5_uint32;
+# else
+# if LONG_MAX == INT_MAX_32_BITS
+ typedef unsigned long md5_uint32;
+# else
+ /* The following line is intended to evoke an error.
+ Using #error is not portable enough. */
+ "Cannot determine unsigned 32-bit data type."
+# endif
+# endif
+# endif
+#endif
+
+#undef __P
+#if defined (__STDC__) && __STDC__
+#define __P(x) x
+#else
+#define __P(x) ()
+#endif
+
+/* Structure to save state of computation between the single steps. */
+struct md5_ctx
+{
+ md5_uint32 A;
+ md5_uint32 B;
+ md5_uint32 C;
+ md5_uint32 D;
+
+ md5_uint32 total[2];
+ md5_uint32 buflen;
+ char buffer[128];
+};
+
+/*
+ * The following three functions are build up the low level used in
+ * the functions `md5_stream' and `md5_buffer'.
+ */
+
+/* Initialize structure containing state of computation.
+ (RFC 1321, 3.3: Step 3) */
+extern void md5_init_ctx __P ((struct md5_ctx *ctx));
+
+/* Starting with the result of former calls of this function (or the
+ initialization function update the context for the next LEN bytes
+ starting at BUFFER.
+ It is necessary that LEN is a multiple of 64!!! */
+extern void md5_process_block __P ((const void *buffer, size_t len,
+ struct md5_ctx *ctx));
+
+/* Starting with the result of former calls of this function (or the
+ initialization function update the context for the next LEN bytes
+ starting at BUFFER.
+ It is NOT required that LEN is a multiple of 64. */
+extern void md5_process_bytes __P ((const void *buffer, size_t len,
+ struct md5_ctx *ctx));
+
+/* Process the remaining bytes in the buffer and put result from CTX
+ in first 16 bytes following RESBUF. The result is always in little
+ endian byte order, so that a byte-wise output yields to the wanted
+ ASCII representation of the message digest.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 32 bits value. */
+extern void *md5_finish_ctx __P ((struct md5_ctx *ctx, void *resbuf));
+
+
+/* Put result from CTX in first 16 bytes following RESBUF. The result is
+ always in little endian byte order, so that a byte-wise output yields
+ to the wanted ASCII representation of the message digest.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 32 bits value. */
+extern void *md5_read_ctx __P ((const struct md5_ctx *ctx, void *resbuf));
+
+
+/* Compute MD5 message digest for bytes read from STREAM. The
+ resulting message digest number will be written into the 16 bytes
+ beginning at RESBLOCK. */
+extern int md5_stream __P ((FILE *stream, void *resblock));
+
+/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
+ result is always in little endian byte order, so that a byte-wise
+ output yields to the wanted ASCII representation of the message
+ digest. */
+extern void *md5_buffer __P ((const char *buffer, size_t len, void *resblock));
+
+#endif
diff --git a/contrib/binutils/include/obstack.h b/contrib/binutils/include/obstack.h
index a20ab55..314a27a 100644
--- a/contrib/binutils/include/obstack.h
+++ b/contrib/binutils/include/obstack.h
@@ -1,5 +1,6 @@
/* obstack.h - object stack macros
- Copyright (C) 1988,89,90,91,92,93,94,96,97,98 Free Software Foundation, Inc.
+ Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996, 1997, 1998
+ Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library.
diff --git a/contrib/binutils/include/opcode/ChangeLog b/contrib/binutils/include/opcode/ChangeLog
index 4e8dbf1..6a5da3e 100644
--- a/contrib/binutils/include/opcode/ChangeLog
+++ b/contrib/binutils/include/opcode/ChangeLog
@@ -1,17 +1,258 @@
+2001-03-24 Alan Modra <alan@linuxcare.com.au>
+
+ * i386.h (i386_optab): Correct entry for "movntdq". Add "punpcklqdq".
+ Add InvMem to first operand of "maskmovdqu".
+
+2001-03-22 Alan Modra <alan@linuxcare.com.au>
+
+ * i386.h (i386_optab): Add paddq, psubq.
+
+2001-03-19 Alan Modra <alan@linuxcare.com.au>
+
+ * i386.h (REGNAM_AL, REGNAM_AX, REGNAM_EAX): Define.
+
+Mon Feb 12 17:39:31 CET 2001 Jan Hubicka <jh@suse.cz>
+
+ * i386.h (i386_optab): SSE integer converison instructions have
+ 64bit versions on x86-64.
+
+2001-01-24 Karsten Keil <kkeil@suse.de>
+
+ * i386.h (i386_optab): Fix swapgs
+
+2001-01-14 Alan Modra <alan@linuxcare.com.au>
+
+ * hppa.h: Describe new '<' and '>' operand types, and tidy
+ existing comments.
+ (pa_opcodes): Add entries for missing wide mode ldi,ldo,ldw,stw.
+ Remove duplicate "ldw j(s,b),x". Sort some entries.
+
+Sat Jan 13 09:56:32 MET 2001 Jan Hubicka <jh@suse.cz>
+
+ * i386.h (i386_optab): Fix pusha and ret templates.
+
+2001-01-11 Peter Targett <peter.targett@arccores.com>
+
+ * arc.h (ARC_MACH_5, ARC_MACH_6, ARC_MACH_7, ARC_MACH_8): New
+ definitions for masking cpu type.
+ (arc_ext_operand_value) New structure for storing extended
+ operands.
+ (ARC_OPERAND_*) Flags for operand values.
+
+2001-01-10 Jan Hubicka <jh@suse.cz>
+
+ * i386.h (pinsrw): Add.
+ (pshufw): Remove.
+ (cvttpd2dq): Fix operands.
+ (cvttps2dq): Likewise.
+ (movq2q): Rename to movdq2q.
+
+2001-01-10 Richard Schaal <richard.schaal@intel.com>
+
+ * i386.h: Correct movnti instruction.
+
+2001-01-09 Jeff Johnston <jjohnstn@redhat.com>
+
+ * cgen.h (CGEN_SYNTAX_CHAR_TYPE): New typedef based on max number
+ of operands (unsigned char or unsigned short).
+ (CGEN_SYNTAX): Changed to make array CGEN_SYNTAX_CHAR_TYPE.
+ (CGEN_SYNTAX_CHAR): Changed to cast to unsigned char.
+
+2001-01-05 Jan Hubicka <jh@suse.cz>
+
+ * i386.h (i386_optab): Make [sml]fence template to use immext field.
+
+2001-01-03 Jan Hubicka <jh@suse.cz>
+
+ * i386.h (i386_optab): Fix 64bit pushf template; Add instructions
+ introduced by Pentium4
+
+2000-12-30 Jan Hubicka <jh@suse.cz>
+
+ * i386.h (i386_optab): Add "rex*" instructions;
+ add swapgs; disable jmp/call far direct instructions for
+ 64bit mode; add syscall and sysret; disable registers for 0xc6
+ template. Add 'q' suffixes to extendable instructions, disable
+ obsolete instructions, add new sign/zero extension ones.
+ (i386_regtab): Add extended registers.
+ (*Suf): Add No_qSuf.
+ (q_Suf, wlq_Suf, bwlq_Suf): New.
+
+2000-12-20 Jan Hubicka <jh@suse.cz>
+
+ * i386.h (i386_optab): Replace "Imm" with "EncImm".
+ (i386_regtab): Add flags field.
+
+2000-12-12 Nick Clifton <nickc@redhat.com>
+
+ * mips.h: Fix formatting.
+
+2000-12-01 Chris Demetriou <cgd@sibyte.com>
+
+ mips.h (OP_MASK_SYSCALL, OP_SH_SYSCALL): Delete.
+ (OP_MASK_CODE20, OP_SH_CODE20): Define, with values of old
+ OP_*_SYSCALL definitions.
+ (OP_SH_CODE19, OP_MASK_CODE19): Define, for use as
+ 19 bit wait codes.
+ (MIPS operand specifier comments): Remove 'm', add 'U' and
+ 'J', and update the meaning of 'B' so that it's more general.
+
+ * mips.h (INSN_ISA1, INSN_ISA2, INSN_ISA3, INSN_ISA4,
+ INSN_ISA5): Renumber, redefine to mean the ISA at which the
+ instruction was added.
+ (INSN_ISA32): New constant.
+ (INSN_4650, INSN_4010, INSN_4100, INSN_3900, INSN_GP32):
+ Renumber to avoid new and/or renumbered INSN_* constants.
+ (INSN_MIPS32): Delete.
+ (ISA_UNKNOWN): New constant to indicate unknown ISA.
+ (ISA_MIPS1, ISA_MIPS2, ISA_MIPS3, ISA_MIPS4, ISA_MIPS5,
+ ISA_MIPS32): New constants, defined to be the mask of INSN_*
+ constants available at that ISA level.
+ (CPU_UNKNOWN): New constant to indicate unknown CPU.
+ (CPU_4K, CPU_MIPS32_4K): Rename the former to the latter,
+ define it with a unique value.
+ (OPCODE_IS_MEMBER): Update for new ISA membership-related
+ constant meanings.
+
+ * mips.h (INSN_ISA64, ISA_MIPS5, ISA_MIPS64): New
+ definitions.
+
+ * mips.h (CPU_SB1): New constant.
+
+2000-10-20 Jakub Jelinek <jakub@redhat.com>
+
+ * sparc.h (enum sparc_opcode_arch_val): Add SPARC_OPCODE_ARCH_V9B.
+ Note that '3' is used for siam operand.
+
+2000-09-22 Jim Wilson <wilson@cygnus.com>
+
+ * ia64.h (enum ia64_dependency_semantics): Add IA64_DVS_STOP.
+
+2000-09-13 Anders Norlander <anorland@acc.umu.se>
+
+ * mips.h: Use defines instead of hard-coded processor numbers.
+ (CPU_R2000, CPU_R3000, CPU_R3900, CPU_R4000, CPU_R4010,
+ CPU_VR4100, CPU_R4111, CPU_R4300, CPU_R4400, CPU_R4600, CPU_R4650,
+ CPU_R5000, CPU_R6000, CPU_R8000, CPU_R10000, CPU_MIPS32, CPU_4K,
+ CPU_4KC, CPU_4KM, CPU_4KP): Define..
+ (OPCODE_IS_MEMBER): Use new defines.
+ (OP_MASK_SEL, OP_SH_SEL): Define.
+ (OP_MASK_CODE20, OP_SH_CODE20): Define.
+ Add 'P' to used characters.
+ Use 'H' for coprocessor select field.
+ Use 'm' for 20 bit breakpoint code.
+ Document new arg characters and add to used characters.
+ (INSN_MIPS32): New define for MIPS32 extensions.
+ (OPCODE_IS_MEMBER): Recognize MIPS32 instructions.
+
+2000-09-05 Alan Modra <alan@linuxcare.com.au>
+
+ * hppa.h: Mention cz completer.
+
+2000-08-16 Jim Wilson <wilson@cygnus.com>
+
+ * ia64.h (IA64_OPCODE_POSTINC): New.
+
+2000-08-15 H.J. Lu <hjl@gnu.org>
+
+ * i386.h: Swap the Intel syntax "movsx"/"movzx" due to the
+ IgnoreSize change.
+
+2000-07-29 Marek Michalkiewicz <marekm@linux.org.pl>
+
+ * avr.h (AVR_UNDEF_P, AVR_SKIP_P, AVR_DISP0_P): New macros.
+ Move related opcodes closer to each other.
+ Minor changes in comments, list undefined opcodes.
+
+2000-07-26 Dave Brolley <brolley@redhat.com>
+
+ * cgen.h (cgen_hw_lookup_by_num): Second parameter is unsigned.
+
+2000-07-20 Hans-Peter Nilsson <hp@axis.com>
+
+ cris.h: New file.
+
+2000-06-26 Marek Michalkiewicz <marekm@linux.org.pl>
+
+ * avr.h (AVR_ISA_WRAP): Remove, now assumed if not AVR_ISA_MEGA.
+ (AVR_ISA_ESPM): Remove, because ESPM removed in databook update.
+ (AVR_ISA_85xx): Remove, all uses changed back to AVR_ISA_2xxx.
+ (AVR_ISA_M83): Define for ATmega83, ATmega85.
+ (espm): Remove, because ESPM removed in databook update.
+ (eicall, eijmp): Move to the end of opcode table.
+
+2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
+
+ * m68hc11.h: New file for support of Motorola 68hc11.
+
+Fri Jun 9 21:51:50 2000 Denis Chertykov <denisc@overta.ru>
+
+ * avr.h: clr,lsl,rol, ... moved after add,adc, ...
+
+Wed Jun 7 21:39:54 2000 Denis Chertykov <denisc@overta.ru>
+
+ * avr.h: New file with AVR opcodes.
+
+Wed Apr 12 17:11:20 2000 Donald Lindsay <dlindsay@hound.cygnus.com>
+
+ * d10v.h: added ALONE attribute for d10v_opcode.exec_type.
+
2000-05-23 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
* i386.h: Allow d suffix on iret, and add DefaultSize modifier.
-2000-05-23 Alan Modra <alan@linuxcare.com.au>
+2000-05-17 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * i386.h: Use sl_FP, not sl_Suf for fild.
+
+2000-05-16 Frank Ch. Eigler <fche@redhat.com>
+
+ * cgen.h (CGEN_MAX_SYNTAX_BYTES): Increase to 32. Check that
+ it exceeds CGEN_ACTUAL_MAX_SYNTAX_BYTES, if set.
+ (CGEN_MAX_IFMT_OPERANDS): Increase to 16. Check that it exceeds
+ CGEN_ACTUAL_MAX_IFMT_OPERANDS, if set.
+
+2000-05-13 Alan Modra <alan@linuxcare.com.au>,
+
+ * i386.h (i386_optab): Cpu686 for sysenter,sysexit,fxsave,fxrestore.
+
+2000-05-13 Alan Modra <alan@linuxcare.com.au>,
+ Alexander Sokolov <robocop@netlink.ru>
+
+ * i386.h (i386_optab): Add cpu_flags for all instructions.
- * i386.h: Delete redundant fp instruction comments.
+2000-05-13 Alan Modra <alan@linuxcare.com.au>
From Gavin Romig-Koch <gavin@cygnus.com>
* i386.h (wld_Suf): Define. Use on pushf, popf, pusha, popa.
-2000-05-17 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+2000-05-04 Timothy Wall <twall@cygnus.com>
- * i386.h: Use sl_FP, not sl_Suf for fild.
+ * tic54x.h: New.
+
+2000-05-03 J.T. Conklin <jtc@redback.com>
+
+ * ppc.h (PPC_OPCODE_ALTIVEC): New opcode flag for vector unit.
+ (PPC_OPERAND_VR): New operand flag for vector registers.
+
+2000-05-01 Kazu Hirata <kazu@hxi.com>
+
+ * h8300.h (EOP): Add missing initializer.
+
+Fri Apr 21 15:03:37 2000 Jason Eckhardt <jle@cygnus.com>
+
+ * hppa.h (pa_opcodes): New opcodes for PA2.0 wide mode
+ forms of ld/st{b,h,w,d} and fld/fst{w,d} (16-bit displacements).
+ New operand types l,y,&,fe,fE,fx added to support above forms.
+ (pa_opcodes): Replaced usage of 'x' as source/target for
+ floating point double-word loads/stores with 'fx'.
+
+Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com>
+ David Mosberger <davidm@hpl.hp.com>
+ Timothy Wall <twall@cygnus.com>
+ Jim Wilson <wilson@cygnus.com>
+
+ * ia64.h: New file.
2000-03-27 Nick Clifton <nickc@cygnus.com>
diff --git a/contrib/binutils/include/opcode/i386.h b/contrib/binutils/include/opcode/i386.h
index d00d331..9deffcc 100644
--- a/contrib/binutils/include/opcode/i386.h
+++ b/contrib/binutils/include/opcode/i386.h
@@ -1,6 +1,7 @@
/* opcode/i386.h -- Intel 80386 opcode table
- Copyright 1989, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
- Free Software Foundation.
+ Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ 2000, 2001
+ Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler, and GDB, the GNU Debugger.
@@ -50,28 +51,25 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
static const template i386_optab[] = {
#define X None
-#define NoSuf (No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_dSuf|No_xSuf)
-#define b_Suf (No_wSuf|No_lSuf|No_sSuf|No_dSuf|No_xSuf)
-#define w_Suf (No_bSuf|No_lSuf|No_sSuf|No_dSuf|No_xSuf)
-#define l_Suf (No_bSuf|No_wSuf|No_sSuf|No_dSuf|No_xSuf)
-#define d_Suf (No_bSuf|No_wSuf|No_sSuf|No_lSuf|No_xSuf)
-#define x_Suf (No_bSuf|No_wSuf|No_sSuf|No_lSuf|No_dSuf)
-#define bw_Suf (No_lSuf|No_sSuf|No_dSuf|No_xSuf)
-#define bl_Suf (No_wSuf|No_sSuf|No_dSuf|No_xSuf)
-#define wl_Suf (No_bSuf|No_sSuf|No_dSuf|No_xSuf)
-#define wld_Suf (No_bSuf|No_sSuf|No_xSuf)
-#define sl_Suf (No_bSuf|No_wSuf|No_dSuf|No_xSuf)
-#define sld_Suf (No_bSuf|No_wSuf|No_xSuf)
-#define sldx_Suf (No_bSuf|No_wSuf)
-#define bwl_Suf (No_sSuf|No_dSuf|No_xSuf)
-#define bwld_Suf (No_sSuf|No_xSuf)
+#define NoSuf (No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_xSuf|No_qSuf)
+#define b_Suf (No_wSuf|No_lSuf|No_sSuf|No_xSuf|No_qSuf)
+#define w_Suf (No_bSuf|No_lSuf|No_sSuf|No_xSuf|No_qSuf)
+#define l_Suf (No_bSuf|No_wSuf|No_sSuf|No_xSuf|No_qSuf)
+#define q_Suf (No_bSuf|No_wSuf|No_sSuf|No_lSuf|No_xSuf)
+#define x_Suf (No_bSuf|No_wSuf|No_sSuf|No_lSuf|No_qSuf)
+#define bw_Suf (No_lSuf|No_sSuf|No_xSuf|No_qSuf)
+#define bl_Suf (No_wSuf|No_sSuf|No_xSuf|No_qSuf)
+#define wl_Suf (No_bSuf|No_sSuf|No_xSuf|No_qSuf)
+#define wlq_Suf (No_bSuf|No_sSuf|No_xSuf)
+#define lq_Suf (No_bSuf|No_wSuf|No_sSuf|No_xSuf)
+#define sl_Suf (No_bSuf|No_wSuf|No_xSuf|No_qSuf)
+#define sldx_Suf (No_bSuf|No_wSuf|No_qSuf)
+#define bwl_Suf (No_sSuf|No_xSuf|No_qSuf)
+#define bwlq_Suf (No_sSuf|No_xSuf)
#define FP (NoSuf|IgnoreSize)
#define l_FP (l_Suf|IgnoreSize)
-#define d_FP (d_Suf|IgnoreSize)
#define x_FP (x_Suf|IgnoreSize)
#define sl_FP (sl_Suf|IgnoreSize)
-#define sld_FP (sld_Suf|IgnoreSize)
-#define sldx_FP (sldx_Suf|IgnoreSize)
#if SYSV386_COMPAT
/* Someone forgot that the FloatR bit reverses the operation when not
equal to the FloatD bit. ie. Changing only FloatD results in the
@@ -83,1013 +81,1260 @@ static const template i386_optab[] = {
/* Move instructions. */
#define MOV_AX_DISP32 0xa0
-{ "mov", 2, 0xa0, X, bwl_Suf|D|W, { Disp16|Disp32, Acc, 0 } },
-{ "mov", 2, 0x88, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0 } },
-{ "mov", 2, 0xb0, X, bwl_Suf|W|ShortForm, { Imm, Reg, 0 } },
-{ "mov", 2, 0xc6, X, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0 } },
-/* The next two instructions accept WordReg so that a segment register
+/* In the 64bit mode the short form mov immediate is redefined to have
+ 64bit displacement value. */
+{ "mov", 2, 0xa0, X, CpuNo64,bwlq_Suf|D|W, { Disp16|Disp32, Acc, 0 } },
+{ "mov", 2, 0x88, X, 0, bwlq_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+/* In the 64bit mode the short form mov immediate is redefined to have
+ 64bit displacement value. */
+{ "mov", 2, 0xb0, X, 0, bwl_Suf|W|ShortForm, { EncImm, Reg8|Reg16|Reg32, 0 } },
+{ "mov", 2, 0xc6, 0, 0, bwlq_Suf|W|Modrm, { EncImm, Reg|AnyMem, 0 } },
+{ "mov", 2, 0xb0, X, Cpu64, q_Suf|W|ShortForm, { Imm64, Reg64, 0 } },
+/* The segment register moves accept WordReg so that a segment register
can be copied to a 32 bit register, and vice versa, without using a
size prefix. When moving to a 32 bit register, the upper 16 bits
are set to an implementation defined value (on the Pentium Pro,
the implementation defined value is zero). */
-{ "mov", 2, 0x8c, X, wl_Suf|Modrm, { SReg3|SReg2, WordReg|WordMem, 0 } },
-{ "mov", 2, 0x8e, X, wl_Suf|Modrm|IgnoreSize, { WordReg|WordMem, SReg3|SReg2, 0 } },
-/* Move to/from control debug registers. */
-{ "mov", 2, 0x0f20, X, l_Suf|D|Modrm|IgnoreSize, { Control, Reg32|InvMem, 0} },
-{ "mov", 2, 0x0f21, X, l_Suf|D|Modrm|IgnoreSize, { Debug, Reg32|InvMem, 0} },
-{ "mov", 2, 0x0f24, X, l_Suf|D|Modrm|IgnoreSize, { Test, Reg32|InvMem, 0} },
+{ "mov", 2, 0x8c, X, 0, wl_Suf|Modrm, { SReg2, WordReg|WordMem, 0 } },
+{ "mov", 2, 0x8c, X, Cpu386, wl_Suf|Modrm, { SReg3, WordReg|WordMem, 0 } },
+{ "mov", 2, 0x8e, X, 0, wl_Suf|Modrm|IgnoreSize, { WordReg|WordMem, SReg2, 0 } },
+{ "mov", 2, 0x8e, X, Cpu386, wl_Suf|Modrm|IgnoreSize, { WordReg|WordMem, SReg3, 0 } },
+/* Move to/from control debug registers. In the 16 or 32bit modes they are 32bit. In the 64bit
+ mode they are 64bit.*/
+{ "mov", 2, 0x0f20, X, Cpu386|CpuNo64, l_Suf|D|Modrm|IgnoreSize,{ Control, Reg32|InvMem, 0} },
+{ "mov", 2, 0x0f20, X, Cpu64, q_Suf|D|Modrm|IgnoreSize|NoRex64,{ Control, Reg64|InvMem, 0} },
+{ "mov", 2, 0x0f21, X, Cpu386|CpuNo64, l_Suf|D|Modrm|IgnoreSize,{ Debug, Reg32|InvMem, 0} },
+{ "mov", 2, 0x0f21, X, Cpu64, q_Suf|D|Modrm|IgnoreSize|NoRex64,{ Debug, Reg64|InvMem, 0} },
+{ "mov", 2, 0x0f24, X, Cpu386, l_Suf|D|Modrm|IgnoreSize, { Test, Reg32|InvMem, 0} },
+{ "movabs",2, 0xa0, X, Cpu64, bwlq_Suf|D|W, { Disp64, Acc, 0 } },
+{ "movabs",2, 0xb0, X, Cpu64, q_Suf|W|ShortForm, { Imm64, Reg64, 0 } },
/* Move with sign extend. */
/* "movsbl" & "movsbw" must not be unified into "movsb" to avoid
conflict with the "movs" string move instruction. */
-{"movsbl", 2, 0x0fbe, X, NoSuf|Modrm, { Reg8|ByteMem, Reg32, 0} },
-{"movsbw", 2, 0x0fbe, X, NoSuf|Modrm, { Reg8|ByteMem, Reg16, 0} },
-{"movswl", 2, 0x0fbf, X, NoSuf|Modrm, { Reg16|ShortMem, Reg32, 0} },
-/* Intel Syntax next 2 insns */
-{"movsx", 2, 0x0fbf, X, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
-{"movsx", 2, 0x0fbe, X, b_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
+{"movsbl", 2, 0x0fbe, X, Cpu386, NoSuf|Modrm, { Reg8|ByteMem, Reg32, 0} },
+{"movsbw", 2, 0x0fbe, X, Cpu386, NoSuf|Modrm, { Reg8|ByteMem, Reg16, 0} },
+{"movswl", 2, 0x0fbf, X, Cpu386, NoSuf|Modrm, { Reg16|ShortMem,Reg32, 0} },
+{"movsbq", 2, 0x0fbe, X, Cpu64, NoSuf|Modrm|Rex64, { Reg8|ByteMem, Reg64, 0} },
+{"movswq", 2, 0x0fbf, X, Cpu64, NoSuf|Modrm|Rex64, { Reg16|ShortMem,Reg64, 0} },
+{"movslq", 2, 0x63, X, Cpu64, NoSuf|Modrm|Rex64, { Reg32|WordMem, Reg64, 0} },
+/* Intel Syntax next 5 insns */
+{"movsx", 2, 0x0fbe, X, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
+{"movsx", 2, 0x0fbf, X, Cpu386, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
+{"movsx", 2, 0x0fbe, X, Cpu64, b_Suf|Modrm|Rex64, { Reg8|ByteMem, Reg64, 0} },
+{"movsx", 2, 0x0fbf, X, Cpu64, w_Suf|Modrm|IgnoreSize|Rex64, { Reg16|ShortMem, Reg64, 0} },
+{"movsx", 2, 0x63, X, Cpu64, l_Suf|Modrm|Rex64, { Reg32|WordMem, Reg64, 0} },
/* Move with zero extend. */
-{"movzb", 2, 0x0fb6, X, wl_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
-{"movzwl", 2, 0x0fb7, X, NoSuf|Modrm, { Reg16|ShortMem, Reg32, 0} },
-/* Intel Syntax next 2 insns */
-{"movzx", 2, 0x0fb7, X, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
-{"movzx", 2, 0x0fb6, X, b_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
+{"movzb", 2, 0x0fb6, X, Cpu386, wl_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
+{"movzwl", 2, 0x0fb7, X, Cpu386, NoSuf|Modrm, { Reg16|ShortMem, Reg32, 0} },
+/* These instructions are not particulary usefull, since the zero extend
+ 32->64 is implicit, but we can encode them. */
+{"movzbq", 2, 0x0fb6, X, Cpu64, NoSuf|Modrm|Rex64, { Reg8|ByteMem, Reg64, 0} },
+{"movzwq", 2, 0x0fb7, X, Cpu64, NoSuf|Modrm|Rex64, { Reg16|ShortMem, Reg64, 0} },
+/* Intel Syntax next 4 insns */
+{"movzx", 2, 0x0fb6, X, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, WordReg, 0} },
+{"movzx", 2, 0x0fb7, X, Cpu386, w_Suf|Modrm|IgnoreSize, { Reg16|ShortMem, Reg32, 0} },
+/* These instructions are not particulary usefull, since the zero extend
+ 32->64 is implicit, but we can encode them. */
+{"movzx", 2, 0x0fb6, X, Cpu386, b_Suf|Modrm|Rex64, { Reg8|ByteMem, Reg64, 0} },
+{"movzx", 2, 0x0fb7, X, Cpu386, w_Suf|Modrm|IgnoreSize|Rex64, { Reg16|ShortMem, Reg64, 0} },
/* Push instructions. */
-{"push", 1, 0x50, X, wl_Suf|ShortForm|DefaultSize, { WordReg, 0, 0 } },
-{"push", 1, 0xff, 6, wl_Suf|Modrm|DefaultSize, { WordReg|WordMem, 0, 0 } },
-{"push", 1, 0x6a, X, wl_Suf|DefaultSize, { Imm8S, 0, 0} },
-{"push", 1, 0x68, X, wl_Suf|DefaultSize, { Imm16|Imm32, 0, 0} },
-{"push", 1, 0x06, X, wl_Suf|Seg2ShortForm|DefaultSize, { SReg2, 0, 0 } },
-{"push", 1, 0x0fa0, X, wl_Suf|Seg3ShortForm|DefaultSize, { SReg3, 0, 0 } },
-{"pusha", 0, 0x60, X, wld_Suf|DefaultSize, { 0, 0, 0 } },
+{"push", 1, 0x50, X, CpuNo64, wl_Suf|ShortForm|DefaultSize, { WordReg, 0, 0 } },
+{"push", 1, 0xff, 6, CpuNo64, wl_Suf|Modrm|DefaultSize, { WordReg|WordMem, 0, 0 } },
+{"push", 1, 0x6a, X, Cpu186|CpuNo64, wl_Suf|DefaultSize, { Imm8S, 0, 0} },
+{"push", 1, 0x68, X, Cpu186|CpuNo64, wl_Suf|DefaultSize, { Imm16|Imm32, 0, 0} },
+{"push", 1, 0x06, X, 0|CpuNo64, wl_Suf|Seg2ShortForm|DefaultSize, { SReg2, 0, 0 } },
+{"push", 1, 0x0fa0, X, Cpu386|CpuNo64, wl_Suf|Seg3ShortForm|DefaultSize, { SReg3, 0, 0 } },
+/* In 64bit mode, the operand size is implicitly 64bit. */
+{"push", 1, 0x50, X, Cpu64, q_Suf|ShortForm|DefaultSize|NoRex64, { Reg64, 0, 0 } },
+{"push", 1, 0xff, 6, Cpu64, q_Suf|Modrm|DefaultSize|NoRex64, { Reg64|WordMem, 0, 0 } },
+{"push", 1, 0x6a, X, Cpu186|Cpu64, q_Suf|DefaultSize|NoRex64, { Imm8S, 0, 0} },
+{"push", 1, 0x68, X, Cpu186|Cpu64, q_Suf|DefaultSize|NoRex64, { Imm32S, 0, 0} },
+{"push", 1, 0x06, X, Cpu64, q_Suf|Seg2ShortForm|DefaultSize|NoRex64, { SReg2, 0, 0 } },
+{"push", 1, 0x0fa0, X, Cpu386|Cpu64, q_Suf|Seg3ShortForm|DefaultSize|NoRex64, { SReg3, 0, 0 } },
+
+{"pusha", 0, 0x60, X, Cpu186|CpuNo64, wl_Suf|DefaultSize, { 0, 0, 0 } },
/* Pop instructions. */
-{"pop", 1, 0x58, X, wl_Suf|ShortForm|DefaultSize, { WordReg, 0, 0 } },
-{"pop", 1, 0x8f, 0, wl_Suf|Modrm|DefaultSize, { WordReg|WordMem, 0, 0 } },
+{"pop", 1, 0x58, X, CpuNo64, wl_Suf|ShortForm|DefaultSize, { WordReg, 0, 0 } },
+{"pop", 1, 0x8f, 0, CpuNo64, wl_Suf|Modrm|DefaultSize, { WordReg|WordMem, 0, 0 } },
#define POP_SEG_SHORT 0x07
-{"pop", 1, 0x07, X, wl_Suf|Seg2ShortForm|DefaultSize, { SReg2, 0, 0 } },
-{"pop", 1, 0x0fa1, X, wl_Suf|Seg3ShortForm|DefaultSize, { SReg3, 0, 0 } },
-{"popa", 0, 0x61, X, wld_Suf|DefaultSize, { 0, 0, 0 } },
+{"pop", 1, 0x07, X, CpuNo64, wl_Suf|Seg2ShortForm|DefaultSize, { SReg2, 0, 0 } },
+{"pop", 1, 0x0fa1, X, Cpu386|CpuNo64, wl_Suf|Seg3ShortForm|DefaultSize, { SReg3, 0, 0 } },
+/* In 64bit mode, the operand size is implicitly 64bit. */
+{"pop", 1, 0x58, X, Cpu64, q_Suf|ShortForm|DefaultSize|NoRex64, { Reg64, 0, 0 } },
+{"pop", 1, 0x8f, 0, Cpu64, q_Suf|Modrm|DefaultSize|NoRex64, { Reg64|WordMem, 0, 0 } },
+{"pop", 1, 0x07, X, Cpu64, q_Suf|Seg2ShortForm|DefaultSize|NoRex64, { SReg2, 0, 0 } },
+{"pop", 1, 0x0fa1, X, Cpu64, q_Suf|Seg3ShortForm|DefaultSize|NoRex64, { SReg3, 0, 0 } },
+
+{"popa", 0, 0x61, X, Cpu186|CpuNo64, wl_Suf|DefaultSize, { 0, 0, 0 } },
/* Exchange instructions.
- xchg commutes: we allow both operand orders. */
-{"xchg", 2, 0x90, X, wl_Suf|ShortForm, { WordReg, Acc, 0 } },
-{"xchg", 2, 0x90, X, wl_Suf|ShortForm, { Acc, WordReg, 0 } },
-{"xchg", 2, 0x86, X, bwl_Suf|W|Modrm, { Reg, Reg|AnyMem, 0 } },
-{"xchg", 2, 0x86, X, bwl_Suf|W|Modrm, { Reg|AnyMem, Reg, 0 } },
+ xchg commutes: we allow both operand orders.
+
+ In the 64bit code, xchg eax, eax is reused for new nop instruction.
+ */
+{"xchg", 2, 0x90, X, CpuNo64, wl_Suf|ShortForm, { WordReg, Acc, 0 } },
+{"xchg", 2, 0x90, X, CpuNo64, wl_Suf|ShortForm, { Acc, WordReg, 0 } },
+{"xchg", 2, 0x86, X, 0, bwlq_Suf|W|Modrm, { Reg, Reg|AnyMem, 0 } },
+{"xchg", 2, 0x86, X, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, Reg, 0 } },
/* In/out from ports. */
-{"in", 2, 0xe4, X, bwl_Suf|W, { Imm8, Acc, 0 } },
-{"in", 2, 0xec, X, bwl_Suf|W, { InOutPortReg, Acc, 0 } },
-{"in", 1, 0xe4, X, bwl_Suf|W, { Imm8, 0, 0 } },
-{"in", 1, 0xec, X, bwl_Suf|W, { InOutPortReg, 0, 0 } },
-{"out", 2, 0xe6, X, bwl_Suf|W, { Acc, Imm8, 0 } },
-{"out", 2, 0xee, X, bwl_Suf|W, { Acc, InOutPortReg, 0 } },
-{"out", 1, 0xe6, X, bwl_Suf|W, { Imm8, 0, 0 } },
-{"out", 1, 0xee, X, bwl_Suf|W, { InOutPortReg, 0, 0 } },
+{"in", 2, 0xe4, X, 0, bwlq_Suf|W, { Imm8, Acc, 0 } },
+{"in", 2, 0xec, X, 0, bwlq_Suf|W, { InOutPortReg, Acc, 0 } },
+{"in", 1, 0xe4, X, 0, bwlq_Suf|W, { Imm8, 0, 0 } },
+{"in", 1, 0xec, X, 0, bwlq_Suf|W, { InOutPortReg, 0, 0 } },
+{"out", 2, 0xe6, X, 0, bwlq_Suf|W, { Acc, Imm8, 0 } },
+{"out", 2, 0xee, X, 0, bwlq_Suf|W, { Acc, InOutPortReg, 0 } },
+{"out", 1, 0xe6, X, 0, bwlq_Suf|W, { Imm8, 0, 0 } },
+{"out", 1, 0xee, X, 0, bwlq_Suf|W, { InOutPortReg, 0, 0 } },
/* Load effective address. */
-{"lea", 2, 0x8d, X, wl_Suf|Modrm, { WordMem, WordReg, 0 } },
+{"lea", 2, 0x8d, X, 0, wlq_Suf|Modrm, { WordMem, WordReg, 0 } },
/* Load segment registers from memory. */
-{"lds", 2, 0xc5, X, wl_Suf|Modrm, { WordMem, WordReg, 0} },
-{"les", 2, 0xc4, X, wl_Suf|Modrm, { WordMem, WordReg, 0} },
-{"lfs", 2, 0x0fb4, X, wl_Suf|Modrm, { WordMem, WordReg, 0} },
-{"lgs", 2, 0x0fb5, X, wl_Suf|Modrm, { WordMem, WordReg, 0} },
-{"lss", 2, 0x0fb2, X, wl_Suf|Modrm, { WordMem, WordReg, 0} },
+{"lds", 2, 0xc5, X, CpuNo64, wlq_Suf|Modrm, { WordMem, WordReg, 0} },
+{"les", 2, 0xc4, X, CpuNo64, wlq_Suf|Modrm, { WordMem, WordReg, 0} },
+{"lfs", 2, 0x0fb4, X, Cpu386, wlq_Suf|Modrm, { WordMem, WordReg, 0} },
+{"lgs", 2, 0x0fb5, X, Cpu386, wlq_Suf|Modrm, { WordMem, WordReg, 0} },
+{"lss", 2, 0x0fb2, X, Cpu386, wlq_Suf|Modrm, { WordMem, WordReg, 0} },
/* Flags register instructions. */
-{"clc", 0, 0xf8, X, NoSuf, { 0, 0, 0} },
-{"cld", 0, 0xfc, X, NoSuf, { 0, 0, 0} },
-{"cli", 0, 0xfa, X, NoSuf, { 0, 0, 0} },
-{"clts", 0, 0x0f06, X, NoSuf, { 0, 0, 0} },
-{"cmc", 0, 0xf5, X, NoSuf, { 0, 0, 0} },
-{"lahf", 0, 0x9f, X, NoSuf, { 0, 0, 0} },
-{"sahf", 0, 0x9e, X, NoSuf, { 0, 0, 0} },
-{"pushf", 0, 0x9c, X, wld_Suf|DefaultSize, { 0, 0, 0} },
-{"popf", 0, 0x9d, X, wld_Suf|DefaultSize, { 0, 0, 0} },
-{"stc", 0, 0xf9, X, NoSuf, { 0, 0, 0} },
-{"std", 0, 0xfd, X, NoSuf, { 0, 0, 0} },
-{"sti", 0, 0xfb, X, NoSuf, { 0, 0, 0} },
+{"clc", 0, 0xf8, X, 0, NoSuf, { 0, 0, 0} },
+{"cld", 0, 0xfc, X, 0, NoSuf, { 0, 0, 0} },
+{"cli", 0, 0xfa, X, 0, NoSuf, { 0, 0, 0} },
+{"clts", 0, 0x0f06, X, Cpu286, NoSuf, { 0, 0, 0} },
+{"cmc", 0, 0xf5, X, 0, NoSuf, { 0, 0, 0} },
+{"lahf", 0, 0x9f, X, CpuNo64,NoSuf, { 0, 0, 0} },
+{"sahf", 0, 0x9e, X, CpuNo64,NoSuf, { 0, 0, 0} },
+{"pushf", 0, 0x9c, X, CpuNo64,wlq_Suf|DefaultSize, { 0, 0, 0} },
+{"pushf", 0, 0x9c, X, Cpu64, q_Suf|DefaultSize|NoRex64,{ 0, 0, 0} },
+{"popf", 0, 0x9d, X, CpuNo64,wlq_Suf|DefaultSize, { 0, 0, 0} },
+{"popf", 0, 0x9d, X, Cpu64, q_Suf|DefaultSize|NoRex64,{ 0, 0, 0} },
+{"stc", 0, 0xf9, X, 0, NoSuf, { 0, 0, 0} },
+{"std", 0, 0xfd, X, 0, NoSuf, { 0, 0, 0} },
+{"sti", 0, 0xfb, X, 0, NoSuf, { 0, 0, 0} },
/* Arithmetic. */
-{"add", 2, 0x00, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"add", 2, 0x83, 0, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"add", 2, 0x04, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"add", 2, 0x80, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"inc", 1, 0x40, X, wl_Suf|ShortForm, { WordReg, 0, 0} },
-{"inc", 1, 0xfe, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"sub", 2, 0x28, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"sub", 2, 0x83, 5, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"sub", 2, 0x2c, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"sub", 2, 0x80, 5, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"dec", 1, 0x48, X, wl_Suf|ShortForm, { WordReg, 0, 0} },
-{"dec", 1, 0xfe, 1, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"sbb", 2, 0x18, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"sbb", 2, 0x83, 3, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"sbb", 2, 0x1c, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"sbb", 2, 0x80, 3, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"cmp", 2, 0x38, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"cmp", 2, 0x83, 7, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"cmp", 2, 0x3c, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"cmp", 2, 0x80, 7, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"test", 2, 0x84, X, bwl_Suf|W|Modrm, { Reg|AnyMem, Reg, 0} },
-{"test", 2, 0x84, X, bwl_Suf|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"test", 2, 0xa8, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"test", 2, 0xf6, 0, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"and", 2, 0x20, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"and", 2, 0x83, 4, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"and", 2, 0x24, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"and", 2, 0x80, 4, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"or", 2, 0x08, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"or", 2, 0x83, 1, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"or", 2, 0x0c, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"or", 2, 0x80, 1, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
-
-{"xor", 2, 0x30, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"xor", 2, 0x83, 6, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"xor", 2, 0x34, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"xor", 2, 0x80, 6, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
+{"add", 2, 0x00, X, 0, bwlq_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"add", 2, 0x83, 0, 0, wlq_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"add", 2, 0x04, X, 0, bwlq_Suf|W, { EncImm, Acc, 0} },
+{"add", 2, 0x80, 0, 0, bwlq_Suf|W|Modrm, { EncImm, Reg|AnyMem, 0} },
+
+{"inc", 1, 0x40, X, CpuNo64,wl_Suf|ShortForm, { WordReg, 0, 0} },
+{"inc", 1, 0xfe, 0, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"sub", 2, 0x28, X, 0, bwlq_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"sub", 2, 0x83, 5, 0, wlq_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"sub", 2, 0x2c, X, 0, bwlq_Suf|W, { EncImm, Acc, 0} },
+{"sub", 2, 0x80, 5, 0, bwlq_Suf|W|Modrm, { EncImm, Reg|AnyMem, 0} },
+
+{"dec", 1, 0x48, X, CpuNo64, wl_Suf|ShortForm, { WordReg, 0, 0} },
+{"dec", 1, 0xfe, 1, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"sbb", 2, 0x18, X, 0, bwlq_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"sbb", 2, 0x83, 3, 0, wlq_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"sbb", 2, 0x1c, X, 0, bwlq_Suf|W, { EncImm, Acc, 0} },
+{"sbb", 2, 0x80, 3, 0, bwlq_Suf|W|Modrm, { EncImm, Reg|AnyMem, 0} },
+
+{"cmp", 2, 0x38, X, 0, bwlq_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"cmp", 2, 0x83, 7, 0, wlq_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"cmp", 2, 0x3c, X, 0, bwlq_Suf|W, { EncImm, Acc, 0} },
+{"cmp", 2, 0x80, 7, 0, bwlq_Suf|W|Modrm, { EncImm, Reg|AnyMem, 0} },
+
+{"test", 2, 0x84, X, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, Reg, 0} },
+{"test", 2, 0x84, X, 0, bwlq_Suf|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"test", 2, 0xa8, X, 0, bwlq_Suf|W, { EncImm, Acc, 0} },
+{"test", 2, 0xf6, 0, 0, bwlq_Suf|W|Modrm, { EncImm, Reg|AnyMem, 0} },
+
+{"and", 2, 0x20, X, 0, bwlq_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"and", 2, 0x83, 4, 0, wlq_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"and", 2, 0x24, X, 0, bwlq_Suf|W, { EncImm, Acc, 0} },
+{"and", 2, 0x80, 4, 0, bwlq_Suf|W|Modrm, { EncImm, Reg|AnyMem, 0} },
+
+{"or", 2, 0x08, X, 0, bwlq_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"or", 2, 0x83, 1, 0, wlq_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"or", 2, 0x0c, X, 0, bwlq_Suf|W, { EncImm, Acc, 0} },
+{"or", 2, 0x80, 1, 0, bwlq_Suf|W|Modrm, { EncImm, Reg|AnyMem, 0} },
+
+{"xor", 2, 0x30, X, 0, bwlq_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"xor", 2, 0x83, 6, 0, wlq_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"xor", 2, 0x34, X, 0, bwlq_Suf|W, { EncImm, Acc, 0} },
+{"xor", 2, 0x80, 6, 0, bwlq_Suf|W|Modrm, { EncImm, Reg|AnyMem, 0} },
/* clr with 1 operand is really xor with 2 operands. */
-{"clr", 1, 0x30, X, bwl_Suf|W|Modrm|regKludge, { Reg, 0, 0 } },
+{"clr", 1, 0x30, X, 0, bwlq_Suf|W|Modrm|regKludge, { Reg, 0, 0 } },
-{"adc", 2, 0x10, X, bwl_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
-{"adc", 2, 0x83, 2, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
-{"adc", 2, 0x14, X, bwl_Suf|W, { Imm, Acc, 0} },
-{"adc", 2, 0x80, 2, bwl_Suf|W|Modrm, { Imm, Reg|AnyMem, 0} },
+{"adc", 2, 0x10, X, 0, bwlq_Suf|D|W|Modrm, { Reg, Reg|AnyMem, 0} },
+{"adc", 2, 0x83, 2, 0, wlq_Suf|Modrm, { Imm8S, WordReg|WordMem, 0} },
+{"adc", 2, 0x14, X, 0, bwlq_Suf|W, { EncImm, Acc, 0} },
+{"adc", 2, 0x80, 2, 0, bwlq_Suf|W|Modrm, { EncImm, Reg|AnyMem, 0} },
-{"neg", 1, 0xf6, 3, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-{"not", 1, 0xf6, 2, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+{"neg", 1, 0xf6, 3, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+{"not", 1, 0xf6, 2, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-{"aaa", 0, 0x37, X, NoSuf, { 0, 0, 0} },
-{"aas", 0, 0x3f, X, NoSuf, { 0, 0, 0} },
-{"daa", 0, 0x27, X, NoSuf, { 0, 0, 0} },
-{"das", 0, 0x2f, X, NoSuf, { 0, 0, 0} },
-{"aad", 0, 0xd50a, X, NoSuf, { 0, 0, 0} },
-{"aad", 1, 0xd5, X, NoSuf, { Imm8S, 0, 0} },
-{"aam", 0, 0xd40a, X, NoSuf, { 0, 0, 0} },
-{"aam", 1, 0xd4, X, NoSuf, { Imm8S, 0, 0} },
+{"aaa", 0, 0x37, X, 0, NoSuf, { 0, 0, 0} },
+{"aas", 0, 0x3f, X, 0, NoSuf, { 0, 0, 0} },
+{"daa", 0, 0x27, X, 0, NoSuf, { 0, 0, 0} },
+{"das", 0, 0x2f, X, 0, NoSuf, { 0, 0, 0} },
+{"aad", 0, 0xd50a, X, 0, NoSuf, { 0, 0, 0} },
+{"aad", 1, 0xd5, X, 0, NoSuf, { Imm8S, 0, 0} },
+{"aam", 0, 0xd40a, X, 0, NoSuf, { 0, 0, 0} },
+{"aam", 1, 0xd4, X, 0, NoSuf, { Imm8S, 0, 0} },
/* Conversion insns. */
/* Intel naming */
-{"cbw", 0, 0x98, X, NoSuf|Size16, { 0, 0, 0} },
-{"cwde", 0, 0x98, X, NoSuf|Size32, { 0, 0, 0} },
-{"cwd", 0, 0x99, X, NoSuf|Size16, { 0, 0, 0} },
-{"cdq", 0, 0x99, X, NoSuf|Size32, { 0, 0, 0} },
+{"cbw", 0, 0x98, X, 0, NoSuf|Size16, { 0, 0, 0} },
+{"cdqe", 0, 0x98, X, Cpu64, NoSuf|Size64, { 0, 0, 0} },
+{"cwde", 0, 0x98, X, 0, NoSuf|Size32, { 0, 0, 0} },
+{"cwd", 0, 0x99, X, 0, NoSuf|Size16, { 0, 0, 0} },
+{"cdq", 0, 0x99, X, 0, NoSuf|Size32, { 0, 0, 0} },
+{"cqo", 0, 0x99, X, Cpu64, NoSuf|Size64, { 0, 0, 0} },
/* AT&T naming */
-{"cbtw", 0, 0x98, X, NoSuf|Size16, { 0, 0, 0} },
-{"cwtl", 0, 0x98, X, NoSuf|Size32, { 0, 0, 0} },
-{"cwtd", 0, 0x99, X, NoSuf|Size16, { 0, 0, 0} },
-{"cltd", 0, 0x99, X, NoSuf|Size32, { 0, 0, 0} },
+{"cbtw", 0, 0x98, X, 0, NoSuf|Size16, { 0, 0, 0} },
+{"cltq", 0, 0x98, X, Cpu64, NoSuf|Size64, { 0, 0, 0} },
+{"cwtl", 0, 0x98, X, 0, NoSuf|Size32, { 0, 0, 0} },
+{"cwtd", 0, 0x99, X, 0, NoSuf|Size16, { 0, 0, 0} },
+{"cltd", 0, 0x99, X, 0, NoSuf|Size32, { 0, 0, 0} },
+{"cqto", 0, 0x99, X, Cpu64, NoSuf|Size64, { 0, 0, 0} },
/* Warning! the mul/imul (opcode 0xf6) must only have 1 operand! They are
expanding 64-bit multiplies, and *cannot* be selected to accomplish
'imul %ebx, %eax' (opcode 0x0faf must be used in this case)
These multiplies can only be selected with single operand forms. */
-{"mul", 1, 0xf6, 4, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-{"imul", 1, 0xf6, 5, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-{"imul", 2, 0x0faf, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"imul", 3, 0x6b, X, wl_Suf|Modrm, { Imm8S, WordReg|WordMem, WordReg} },
-{"imul", 3, 0x69, X, wl_Suf|Modrm, { Imm16|Imm32, WordReg|WordMem, WordReg} },
+{"mul", 1, 0xf6, 4, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+{"imul", 1, 0xf6, 5, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+{"imul", 2, 0x0faf, X, Cpu386, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"imul", 3, 0x6b, X, Cpu186, wlq_Suf|Modrm, { Imm8S, WordReg|WordMem, WordReg} },
+{"imul", 3, 0x69, X, Cpu186, wlq_Suf|Modrm, { Imm16|Imm32S|Imm32, WordReg|WordMem, WordReg} },
/* imul with 2 operands mimics imul with 3 by putting the register in
both i.rm.reg & i.rm.regmem fields. regKludge enables this
transformation. */
-{"imul", 2, 0x6b, X, wl_Suf|Modrm|regKludge,{ Imm8S, WordReg, 0} },
-{"imul", 2, 0x69, X, wl_Suf|Modrm|regKludge,{ Imm16|Imm32, WordReg, 0} },
-
-{"div", 1, 0xf6, 6, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-{"div", 2, 0xf6, 6, bwl_Suf|W|Modrm, { Reg|AnyMem, Acc, 0} },
-{"idiv", 1, 0xf6, 7, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-{"idiv", 2, 0xf6, 7, bwl_Suf|W|Modrm, { Reg|AnyMem, Acc, 0} },
-
-{"rol", 2, 0xd0, 0, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"rol", 2, 0xc0, 0, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"rol", 2, 0xd2, 0, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"rol", 1, 0xd0, 0, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"ror", 2, 0xd0, 1, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"ror", 2, 0xc0, 1, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"ror", 2, 0xd2, 1, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"ror", 1, 0xd0, 1, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"rcl", 2, 0xd0, 2, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"rcl", 2, 0xc0, 2, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"rcl", 2, 0xd2, 2, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"rcl", 1, 0xd0, 2, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"rcr", 2, 0xd0, 3, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"rcr", 2, 0xc0, 3, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"rcr", 2, 0xd2, 3, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"rcr", 1, 0xd0, 3, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"sal", 2, 0xd0, 4, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"sal", 2, 0xc0, 4, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"sal", 2, 0xd2, 4, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"sal", 1, 0xd0, 4, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-{"shl", 2, 0xd0, 4, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"shl", 2, 0xc0, 4, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"shl", 2, 0xd2, 4, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"shl", 1, 0xd0, 4, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"shr", 2, 0xd0, 5, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"shr", 2, 0xc0, 5, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"shr", 2, 0xd2, 5, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"shr", 1, 0xd0, 5, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"sar", 2, 0xd0, 7, bwl_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
-{"sar", 2, 0xc0, 7, bwl_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
-{"sar", 2, 0xd2, 7, bwl_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
-{"sar", 1, 0xd0, 7, bwl_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
-
-{"shld", 3, 0x0fa4, X, wl_Suf|Modrm, { Imm8, WordReg, WordReg|WordMem} },
-{"shld", 3, 0x0fa5, X, wl_Suf|Modrm, { ShiftCount, WordReg, WordReg|WordMem} },
-{"shld", 2, 0x0fa5, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
-
-{"shrd", 3, 0x0fac, X, wl_Suf|Modrm, { Imm8, WordReg, WordReg|WordMem} },
-{"shrd", 3, 0x0fad, X, wl_Suf|Modrm, { ShiftCount, WordReg, WordReg|WordMem} },
-{"shrd", 2, 0x0fad, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
+{"imul", 2, 0x6b, X, Cpu186, wlq_Suf|Modrm|regKludge,{ Imm8S, WordReg, 0} },
+{"imul", 2, 0x69, X, Cpu186, wlq_Suf|Modrm|regKludge,{ Imm16|Imm32S|Imm32, WordReg, 0} },
+
+{"div", 1, 0xf6, 6, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+{"div", 2, 0xf6, 6, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, Acc, 0} },
+{"idiv", 1, 0xf6, 7, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+{"idiv", 2, 0xf6, 7, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, Acc, 0} },
+
+{"rol", 2, 0xd0, 0, 0, bwlq_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"rol", 2, 0xc0, 0, Cpu186, bwlq_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"rol", 2, 0xd2, 0, 0, bwlq_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"rol", 1, 0xd0, 0, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"ror", 2, 0xd0, 1, 0, bwlq_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"ror", 2, 0xc0, 1, Cpu186, bwlq_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"ror", 2, 0xd2, 1, 0, bwlq_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"ror", 1, 0xd0, 1, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"rcl", 2, 0xd0, 2, 0, bwlq_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"rcl", 2, 0xc0, 2, Cpu186, bwlq_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"rcl", 2, 0xd2, 2, 0, bwlq_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"rcl", 1, 0xd0, 2, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"rcr", 2, 0xd0, 3, 0, bwlq_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"rcr", 2, 0xc0, 3, Cpu186, bwlq_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"rcr", 2, 0xd2, 3, 0, bwlq_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"rcr", 1, 0xd0, 3, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"sal", 2, 0xd0, 4, 0, bwlq_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"sal", 2, 0xc0, 4, Cpu186, bwlq_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"sal", 2, 0xd2, 4, 0, bwlq_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"sal", 1, 0xd0, 4, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"shl", 2, 0xd0, 4, 0, bwlq_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"shl", 2, 0xc0, 4, Cpu186, bwlq_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"shl", 2, 0xd2, 4, 0, bwlq_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"shl", 1, 0xd0, 4, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"shr", 2, 0xd0, 5, 0, bwlq_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"shr", 2, 0xc0, 5, Cpu186, bwlq_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"shr", 2, 0xd2, 5, 0, bwlq_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"shr", 1, 0xd0, 5, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"sar", 2, 0xd0, 7, 0, bwlq_Suf|W|Modrm, { Imm1, Reg|AnyMem, 0} },
+{"sar", 2, 0xc0, 7, Cpu186, bwlq_Suf|W|Modrm, { Imm8, Reg|AnyMem, 0} },
+{"sar", 2, 0xd2, 7, 0, bwlq_Suf|W|Modrm, { ShiftCount, Reg|AnyMem, 0} },
+{"sar", 1, 0xd0, 7, 0, bwlq_Suf|W|Modrm, { Reg|AnyMem, 0, 0} },
+
+{"shld", 3, 0x0fa4, X, Cpu386, wlq_Suf|Modrm, { Imm8, WordReg, WordReg|WordMem} },
+{"shld", 3, 0x0fa5, X, Cpu386, wlq_Suf|Modrm, { ShiftCount, WordReg, WordReg|WordMem} },
+{"shld", 2, 0x0fa5, X, Cpu386, wlq_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
+
+{"shrd", 3, 0x0fac, X, Cpu386, wlq_Suf|Modrm, { Imm8, WordReg, WordReg|WordMem} },
+{"shrd", 3, 0x0fad, X, Cpu386, wlq_Suf|Modrm, { ShiftCount, WordReg, WordReg|WordMem} },
+{"shrd", 2, 0x0fad, X, Cpu386, wlq_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
/* Control transfer instructions. */
-{"call", 1, 0xe8, X, wl_Suf|JumpDword|DefaultSize, { Disp16|Disp32, 0, 0} },
-{"call", 1, 0xff, 2, wl_Suf|Modrm|DefaultSize, { WordReg|WordMem|JumpAbsolute, 0, 0} },
+{"call", 1, 0xe8, X, 0, wlq_Suf|JumpDword|DefaultSize, { Disp16|Disp32, 0, 0} },
+{"call", 1, 0xff, 2, 0, wlq_Suf|Modrm|DefaultSize, { WordReg|WordMem|JumpAbsolute, 0, 0} },
/* Intel Syntax */
-{"call", 2, 0x9a, X, wl_Suf|JumpInterSegment|DefaultSize, { Imm16, Imm16|Imm32, 0} },
+{"call", 2, 0x9a, X, CpuNo64,wlq_Suf|JumpInterSegment|DefaultSize, { Imm16, Imm16|Imm32, 0} },
/* Intel Syntax */
-{"call", 1, 0xff, 3, x_Suf|Modrm|DefaultSize, { WordMem, 0, 0} },
-{"lcall", 2, 0x9a, X, wl_Suf|JumpInterSegment|DefaultSize, { Imm16, Imm16|Imm32, 0} },
-{"lcall", 1, 0xff, 3, wl_Suf|Modrm|DefaultSize, { WordMem|JumpAbsolute, 0, 0} },
+{"call", 1, 0xff, 3, 0, x_Suf|Modrm|DefaultSize, { WordMem, 0, 0} },
+{"lcall", 2, 0x9a, X, CpuNo64, wl_Suf|JumpInterSegment|DefaultSize, { Imm16, Imm16|Imm32, 0} },
+{"lcall", 1, 0xff, 3, CpuNo64, wl_Suf|Modrm|DefaultSize, { WordMem|JumpAbsolute, 0, 0} },
+{"lcall", 1, 0xff, 3, Cpu64, q_Suf|Modrm|DefaultSize|NoRex64,{ WordMem|JumpAbsolute, 0, 0} },
#define JUMP_PC_RELATIVE 0xeb
-{"jmp", 1, 0xeb, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jmp", 1, 0xff, 4, wl_Suf|Modrm, { WordReg|WordMem|JumpAbsolute, 0, 0} },
+{"jmp", 1, 0xeb, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jmp", 1, 0xff, 4, 0, wlq_Suf|Modrm, { WordReg|WordMem|JumpAbsolute, 0, 0} },
/* Intel Syntax */
-{"jmp", 2, 0xea, X, wl_Suf|JumpInterSegment, { Imm16, Imm16|Imm32, 0} },
+{"jmp", 2, 0xea, X, CpuNo64,wl_Suf|JumpInterSegment, { Imm16, Imm16|Imm32, 0} },
/* Intel Syntax */
-{"jmp", 1, 0xff, 5, x_Suf|Modrm, { WordMem, 0, 0} },
-{"ljmp", 2, 0xea, X, wl_Suf|JumpInterSegment, { Imm16, Imm16|Imm32, 0} },
-{"ljmp", 1, 0xff, 5, wl_Suf|Modrm, { WordMem|JumpAbsolute, 0, 0} },
-
-{"ret", 0, 0xc3, X, wl_Suf|DefaultSize, { 0, 0, 0} },
-{"ret", 1, 0xc2, X, wl_Suf|DefaultSize, { Imm16, 0, 0} },
-{"lret", 0, 0xcb, X, wl_Suf|DefaultSize, { 0, 0, 0} },
-{"lret", 1, 0xca, X, wl_Suf|DefaultSize, { Imm16, 0, 0} },
-{"enter", 2, 0xc8, X, wl_Suf|DefaultSize, { Imm16, Imm8, 0} },
-{"leave", 0, 0xc9, X, wl_Suf|DefaultSize, { 0, 0, 0} },
+{"jmp", 1, 0xff, 5, 0, x_Suf|Modrm, { WordMem, 0, 0} },
+{"ljmp", 2, 0xea, X, CpuNo64, wl_Suf|JumpInterSegment, { Imm16, Imm16|Imm32, 0} },
+{"ljmp", 1, 0xff, 5, CpuNo64, wl_Suf|Modrm, { WordMem|JumpAbsolute, 0, 0} },
+{"ljmp", 1, 0xff, 5, Cpu64, q_Suf|Modrm|NoRex64, { WordMem|JumpAbsolute, 0, 0} },
+
+{"ret", 0, 0xc3, X, CpuNo64,wlq_Suf|DefaultSize, { 0, 0, 0} },
+{"ret", 1, 0xc2, X, CpuNo64,wlq_Suf|DefaultSize, { Imm16, 0, 0} },
+{"ret", 0, 0xc3, X, Cpu64, q_Suf|DefaultSize|NoRex64,{ 0, 0, 0} },
+{"ret", 1, 0xc2, X, Cpu64, q_Suf|DefaultSize|NoRex64,{ Imm16, 0, 0} },
+{"lret", 0, 0xcb, X, 0, wlq_Suf|DefaultSize, { 0, 0, 0} },
+{"lret", 1, 0xca, X, 0, wlq_Suf|DefaultSize, { Imm16, 0, 0} },
+{"enter", 2, 0xc8, X, Cpu186, wlq_Suf|DefaultSize, { Imm16, Imm8, 0} },
+{"leave", 0, 0xc9, X, Cpu186, wlq_Suf|DefaultSize, { 0, 0, 0} },
/* Conditional jumps. */
-{"jo", 1, 0x70, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jno", 1, 0x71, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jb", 1, 0x72, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jc", 1, 0x72, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnae", 1, 0x72, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnb", 1, 0x73, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnc", 1, 0x73, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jae", 1, 0x73, X, NoSuf|Jump, { Disp, 0, 0} },
-{"je", 1, 0x74, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jz", 1, 0x74, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jne", 1, 0x75, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnz", 1, 0x75, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jbe", 1, 0x76, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jna", 1, 0x76, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnbe", 1, 0x77, X, NoSuf|Jump, { Disp, 0, 0} },
-{"ja", 1, 0x77, X, NoSuf|Jump, { Disp, 0, 0} },
-{"js", 1, 0x78, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jns", 1, 0x79, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jp", 1, 0x7a, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jpe", 1, 0x7a, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnp", 1, 0x7b, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jpo", 1, 0x7b, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jl", 1, 0x7c, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnge", 1, 0x7c, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnl", 1, 0x7d, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jge", 1, 0x7d, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jle", 1, 0x7e, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jng", 1, 0x7e, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jnle", 1, 0x7f, X, NoSuf|Jump, { Disp, 0, 0} },
-{"jg", 1, 0x7f, X, NoSuf|Jump, { Disp, 0, 0} },
+{"jo", 1, 0x70, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jno", 1, 0x71, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jb", 1, 0x72, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jc", 1, 0x72, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnae", 1, 0x72, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnb", 1, 0x73, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnc", 1, 0x73, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jae", 1, 0x73, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"je", 1, 0x74, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jz", 1, 0x74, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jne", 1, 0x75, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnz", 1, 0x75, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jbe", 1, 0x76, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jna", 1, 0x76, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnbe", 1, 0x77, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"ja", 1, 0x77, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"js", 1, 0x78, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jns", 1, 0x79, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jp", 1, 0x7a, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jpe", 1, 0x7a, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnp", 1, 0x7b, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jpo", 1, 0x7b, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jl", 1, 0x7c, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnge", 1, 0x7c, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnl", 1, 0x7d, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jge", 1, 0x7d, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jle", 1, 0x7e, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jng", 1, 0x7e, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jnle", 1, 0x7f, X, 0, NoSuf|Jump, { Disp, 0, 0} },
+{"jg", 1, 0x7f, X, 0, NoSuf|Jump, { Disp, 0, 0} },
/* jcxz vs. jecxz is chosen on the basis of the address size prefix. */
-{"jcxz", 1, 0xe3, X, NoSuf|JumpByte|Size16, { Disp, 0, 0} },
-{"jecxz", 1, 0xe3, X, NoSuf|JumpByte|Size32, { Disp, 0, 0} },
+{"jcxz", 1, 0xe3, X, 0, NoSuf|JumpByte|Size16, { Disp, 0, 0} },
+{"jecxz", 1, 0xe3, X, 0, NoSuf|JumpByte|Size32, { Disp, 0, 0} },
/* The loop instructions also use the address size prefix to select
%cx rather than %ecx for the loop count, so the `w' form of these
instructions emit an address size prefix rather than a data size
prefix. */
-{"loop", 1, 0xe2, X, wl_Suf|JumpByte, { Disp, 0, 0} },
-{"loopz", 1, 0xe1, X, wl_Suf|JumpByte, { Disp, 0, 0} },
-{"loope", 1, 0xe1, X, wl_Suf|JumpByte, { Disp, 0, 0} },
-{"loopnz", 1, 0xe0, X, wl_Suf|JumpByte, { Disp, 0, 0} },
-{"loopne", 1, 0xe0, X, wl_Suf|JumpByte, { Disp, 0, 0} },
+{"loop", 1, 0xe2, X, 0, wlq_Suf|JumpByte, { Disp, 0, 0} },
+{"loopz", 1, 0xe1, X, 0, wlq_Suf|JumpByte, { Disp, 0, 0} },
+{"loope", 1, 0xe1, X, 0, wlq_Suf|JumpByte, { Disp, 0, 0} },
+{"loopnz", 1, 0xe0, X, 0, wlq_Suf|JumpByte, { Disp, 0, 0} },
+{"loopne", 1, 0xe0, X, 0, wlq_Suf|JumpByte, { Disp, 0, 0} },
/* Set byte on flag instructions. */
-{"seto", 1, 0x0f90, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setno", 1, 0x0f91, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setb", 1, 0x0f92, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setc", 1, 0x0f92, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnae", 1, 0x0f92, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnb", 1, 0x0f93, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnc", 1, 0x0f93, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setae", 1, 0x0f93, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"sete", 1, 0x0f94, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setz", 1, 0x0f94, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setne", 1, 0x0f95, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnz", 1, 0x0f95, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setbe", 1, 0x0f96, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setna", 1, 0x0f96, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnbe", 1, 0x0f97, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"seta", 1, 0x0f97, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"sets", 1, 0x0f98, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setns", 1, 0x0f99, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setp", 1, 0x0f9a, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setpe", 1, 0x0f9a, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnp", 1, 0x0f9b, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setpo", 1, 0x0f9b, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setl", 1, 0x0f9c, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnge", 1, 0x0f9c, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnl", 1, 0x0f9d, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setge", 1, 0x0f9d, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setle", 1, 0x0f9e, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setng", 1, 0x0f9e, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setnle", 1, 0x0f9f, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
-{"setg", 1, 0x0f9f, 0, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"seto", 1, 0x0f90, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setno", 1, 0x0f91, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setb", 1, 0x0f92, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setc", 1, 0x0f92, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnae", 1, 0x0f92, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnb", 1, 0x0f93, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnc", 1, 0x0f93, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setae", 1, 0x0f93, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"sete", 1, 0x0f94, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setz", 1, 0x0f94, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setne", 1, 0x0f95, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnz", 1, 0x0f95, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setbe", 1, 0x0f96, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setna", 1, 0x0f96, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnbe", 1, 0x0f97, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"seta", 1, 0x0f97, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"sets", 1, 0x0f98, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setns", 1, 0x0f99, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setp", 1, 0x0f9a, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setpe", 1, 0x0f9a, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnp", 1, 0x0f9b, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setpo", 1, 0x0f9b, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setl", 1, 0x0f9c, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnge", 1, 0x0f9c, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnl", 1, 0x0f9d, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setge", 1, 0x0f9d, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setle", 1, 0x0f9e, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setng", 1, 0x0f9e, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setnle", 1, 0x0f9f, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
+{"setg", 1, 0x0f9f, 0, Cpu386, b_Suf|Modrm, { Reg8|ByteMem, 0, 0} },
/* String manipulation. */
-{"cmps", 0, 0xa6, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"cmps", 2, 0xa6, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, AnyMem, 0} },
-{"scmp", 0, 0xa6, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"scmp", 2, 0xa6, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, AnyMem, 0} },
-{"ins", 0, 0x6c, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"ins", 2, 0x6c, X, bwld_Suf|W|IsString, { InOutPortReg, AnyMem|EsSeg, 0} },
-{"outs", 0, 0x6e, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"outs", 2, 0x6e, X, bwld_Suf|W|IsString, { AnyMem, InOutPortReg, 0} },
-{"lods", 0, 0xac, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"lods", 1, 0xac, X, bwld_Suf|W|IsString, { AnyMem, 0, 0} },
-{"lods", 2, 0xac, X, bwld_Suf|W|IsString, { AnyMem, Acc, 0} },
-{"slod", 0, 0xac, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"slod", 1, 0xac, X, bwld_Suf|W|IsString, { AnyMem, 0, 0} },
-{"slod", 2, 0xac, X, bwld_Suf|W|IsString, { AnyMem, Acc, 0} },
-{"movs", 0, 0xa4, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"movs", 2, 0xa4, X, bwld_Suf|W|IsString, { AnyMem, AnyMem|EsSeg, 0} },
-{"smov", 0, 0xa4, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"smov", 2, 0xa4, X, bwld_Suf|W|IsString, { AnyMem, AnyMem|EsSeg, 0} },
-{"scas", 0, 0xae, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"scas", 1, 0xae, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
-{"scas", 2, 0xae, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, Acc, 0} },
-{"ssca", 0, 0xae, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"ssca", 1, 0xae, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
-{"ssca", 2, 0xae, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, Acc, 0} },
-{"stos", 0, 0xaa, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"stos", 1, 0xaa, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
-{"stos", 2, 0xaa, X, bwld_Suf|W|IsString, { Acc, AnyMem|EsSeg, 0} },
-{"ssto", 0, 0xaa, X, bwld_Suf|W|IsString, { 0, 0, 0} },
-{"ssto", 1, 0xaa, X, bwld_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
-{"ssto", 2, 0xaa, X, bwld_Suf|W|IsString, { Acc, AnyMem|EsSeg, 0} },
-{"xlat", 0, 0xd7, X, b_Suf|IsString, { 0, 0, 0} },
-{"xlat", 1, 0xd7, X, b_Suf|IsString, { AnyMem, 0, 0} },
+{"cmps", 0, 0xa6, X, 0, bwlq_Suf|W|IsString, { 0, 0, 0} },
+{"cmps", 2, 0xa6, X, 0, bwlq_Suf|W|IsString, { AnyMem|EsSeg, AnyMem, 0} },
+{"scmp", 0, 0xa6, X, 0, bwlq_Suf|W|IsString, { 0, 0, 0} },
+{"scmp", 2, 0xa6, X, 0, bwlq_Suf|W|IsString, { AnyMem|EsSeg, AnyMem, 0} },
+{"ins", 0, 0x6c, X, Cpu186, bwlq_Suf|W|IsString, { 0, 0, 0} },
+{"ins", 2, 0x6c, X, Cpu186, bwlq_Suf|W|IsString, { InOutPortReg, AnyMem|EsSeg, 0} },
+{"outs", 0, 0x6e, X, Cpu186, bwlq_Suf|W|IsString, { 0, 0, 0} },
+{"outs", 2, 0x6e, X, Cpu186, bwlq_Suf|W|IsString, { AnyMem, InOutPortReg, 0} },
+{"lods", 0, 0xac, X, 0, bwlq_Suf|W|IsString, { 0, 0, 0} },
+{"lods", 1, 0xac, X, 0, bwlq_Suf|W|IsString, { AnyMem, 0, 0} },
+{"lods", 2, 0xac, X, 0, bwlq_Suf|W|IsString, { AnyMem, Acc, 0} },
+{"slod", 0, 0xac, X, 0, bwlq_Suf|W|IsString, { 0, 0, 0} },
+{"slod", 1, 0xac, X, 0, bwlq_Suf|W|IsString, { AnyMem, 0, 0} },
+{"slod", 2, 0xac, X, 0, bwlq_Suf|W|IsString, { AnyMem, Acc, 0} },
+{"movs", 0, 0xa4, X, 0, bwlq_Suf|W|IsString, { 0, 0, 0} },
+{"movs", 2, 0xa4, X, 0, bwlq_Suf|W|IsString, { AnyMem, AnyMem|EsSeg, 0} },
+{"smov", 0, 0xa4, X, 0, bwlq_Suf|W|IsString, { 0, 0, 0} },
+{"smov", 2, 0xa4, X, 0, bwlq_Suf|W|IsString, { AnyMem, AnyMem|EsSeg, 0} },
+{"scas", 0, 0xae, X, 0, bwlq_Suf|W|IsString, { 0, 0, 0} },
+{"scas", 1, 0xae, X, 0, bwlq_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
+{"scas", 2, 0xae, X, 0, bwlq_Suf|W|IsString, { AnyMem|EsSeg, Acc, 0} },
+{"ssca", 0, 0xae, X, 0, bwlq_Suf|W|IsString, { 0, 0, 0} },
+{"ssca", 1, 0xae, X, 0, bwlq_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
+{"ssca", 2, 0xae, X, 0, bwlq_Suf|W|IsString, { AnyMem|EsSeg, Acc, 0} },
+{"stos", 0, 0xaa, X, 0, bwlq_Suf|W|IsString, { 0, 0, 0} },
+{"stos", 1, 0xaa, X, 0, bwlq_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
+{"stos", 2, 0xaa, X, 0, bwlq_Suf|W|IsString, { Acc, AnyMem|EsSeg, 0} },
+{"ssto", 0, 0xaa, X, 0, bwlq_Suf|W|IsString, { 0, 0, 0} },
+{"ssto", 1, 0xaa, X, 0, bwlq_Suf|W|IsString, { AnyMem|EsSeg, 0, 0} },
+{"ssto", 2, 0xaa, X, 0, bwlq_Suf|W|IsString, { Acc, AnyMem|EsSeg, 0} },
+{"xlat", 0, 0xd7, X, 0, b_Suf|IsString, { 0, 0, 0} },
+{"xlat", 1, 0xd7, X, 0, b_Suf|IsString, { AnyMem, 0, 0} },
/* Bit manipulation. */
-{"bsf", 2, 0x0fbc, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"bsr", 2, 0x0fbd, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"bt", 2, 0x0fa3, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
-{"bt", 2, 0x0fba, 4, wl_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
-{"btc", 2, 0x0fbb, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
-{"btc", 2, 0x0fba, 7, wl_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
-{"btr", 2, 0x0fb3, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
-{"btr", 2, 0x0fba, 6, wl_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
-{"bts", 2, 0x0fab, X, wl_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
-{"bts", 2, 0x0fba, 5, wl_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
+{"bsf", 2, 0x0fbc, X, Cpu386, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"bsr", 2, 0x0fbd, X, Cpu386, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"bt", 2, 0x0fa3, X, Cpu386, wlq_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
+{"bt", 2, 0x0fba, 4, Cpu386, wlq_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
+{"btc", 2, 0x0fbb, X, Cpu386, wlq_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
+{"btc", 2, 0x0fba, 7, Cpu386, wlq_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
+{"btr", 2, 0x0fb3, X, Cpu386, wlq_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
+{"btr", 2, 0x0fba, 6, Cpu386, wlq_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
+{"bts", 2, 0x0fab, X, Cpu386, wlq_Suf|Modrm, { WordReg, WordReg|WordMem, 0} },
+{"bts", 2, 0x0fba, 5, Cpu386, wlq_Suf|Modrm, { Imm8, WordReg|WordMem, 0} },
/* Interrupts & op. sys insns. */
/* See gas/config/tc-i386.c for conversion of 'int $3' into the special
int 3 insn. */
#define INT_OPCODE 0xcd
#define INT3_OPCODE 0xcc
-{"int", 1, 0xcd, X, NoSuf, { Imm8, 0, 0} },
-{"int3", 0, 0xcc, X, NoSuf, { 0, 0, 0} },
-{"into", 0, 0xce, X, NoSuf, { 0, 0, 0} },
-{"iret", 0, 0xcf, X, wld_Suf|DefaultSize, { 0, 0, 0} },
+{"int", 1, 0xcd, X, 0, NoSuf, { Imm8, 0, 0} },
+{"int3", 0, 0xcc, X, 0, NoSuf, { 0, 0, 0} },
+{"into", 0, 0xce, X, 0, NoSuf, { 0, 0, 0} },
+{"iret", 0, 0xcf, X, 0, wlq_Suf|DefaultSize, { 0, 0, 0} },
/* i386sl, i486sl, later 486, and Pentium. */
-{"rsm", 0, 0x0faa, X, NoSuf, { 0, 0, 0} },
+{"rsm", 0, 0x0faa, X, Cpu386, NoSuf, { 0, 0, 0} },
-{"bound", 2, 0x62, X, wl_Suf|Modrm, { WordReg, WordMem, 0} },
+{"bound", 2, 0x62, X, Cpu186, wlq_Suf|Modrm, { WordReg, WordMem, 0} },
-{"hlt", 0, 0xf4, X, NoSuf, { 0, 0, 0} },
+{"hlt", 0, 0xf4, X, 0, NoSuf, { 0, 0, 0} },
/* nop is actually 'xchgl %eax, %eax'. */
-{"nop", 0, 0x90, X, NoSuf, { 0, 0, 0} },
+{"nop", 0, 0x90, X, 0, NoSuf, { 0, 0, 0} },
/* Protection control. */
-{"arpl", 2, 0x63, X, w_Suf|Modrm|IgnoreSize,{ Reg16, Reg16|ShortMem, 0} },
-{"lar", 2, 0x0f02, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"lgdt", 1, 0x0f01, 2, wl_Suf|Modrm, { WordMem, 0, 0} },
-{"lidt", 1, 0x0f01, 3, wl_Suf|Modrm, { WordMem, 0, 0} },
-{"lldt", 1, 0x0f00, 2, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
-{"lmsw", 1, 0x0f01, 6, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
-{"lsl", 2, 0x0f03, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"ltr", 1, 0x0f00, 3, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
-
-{"sgdt", 1, 0x0f01, 0, wl_Suf|Modrm, { WordMem, 0, 0} },
-{"sidt", 1, 0x0f01, 1, wl_Suf|Modrm, { WordMem, 0, 0} },
-{"sldt", 1, 0x0f00, 0, wl_Suf|Modrm, { WordReg|WordMem, 0, 0} },
-{"smsw", 1, 0x0f01, 4, wl_Suf|Modrm, { WordReg|WordMem, 0, 0} },
-{"str", 1, 0x0f00, 1, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
-
-{"verr", 1, 0x0f00, 4, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
-{"verw", 1, 0x0f00, 5, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
+{"arpl", 2, 0x63, X, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16, Reg16|ShortMem, 0} },
+{"lar", 2, 0x0f02, X, Cpu286, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"lgdt", 1, 0x0f01, 2, Cpu286, wlq_Suf|Modrm, { WordMem, 0, 0} },
+{"lidt", 1, 0x0f01, 3, Cpu286, wlq_Suf|Modrm, { WordMem, 0, 0} },
+{"lldt", 1, 0x0f00, 2, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
+{"lmsw", 1, 0x0f01, 6, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
+{"lsl", 2, 0x0f03, X, Cpu286, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"ltr", 1, 0x0f00, 3, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
+
+{"sgdt", 1, 0x0f01, 0, Cpu286, wlq_Suf|Modrm, { WordMem, 0, 0} },
+{"sidt", 1, 0x0f01, 1, Cpu286, wlq_Suf|Modrm, { WordMem, 0, 0} },
+{"sldt", 1, 0x0f00, 0, Cpu286, wlq_Suf|Modrm, { WordReg|WordMem, 0, 0} },
+{"smsw", 1, 0x0f01, 4, Cpu286, wlq_Suf|Modrm, { WordReg|WordMem, 0, 0} },
+{"str", 1, 0x0f00, 1, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
+
+{"verr", 1, 0x0f00, 4, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
+{"verw", 1, 0x0f00, 5, Cpu286, w_Suf|Modrm|IgnoreSize,{ Reg16|ShortMem, 0, 0} },
/* Floating point instructions. */
/* load */
-{"fld", 1, 0xd9c0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fld", 1, 0xd9, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fld", 1, 0xd9c0, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
+{"fld", 1, 0xd9c0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fld", 1, 0xd9, 0, 0, sl_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fld", 1, 0xd9c0, X, 0, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
/* Intel Syntax */
-{"fld", 1, 0xdb, 5, x_FP|Modrm, { LLongMem, 0, 0} },
-{"fild", 1, 0xdf, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fld", 1, 0xdb, 5, 0, x_FP|Modrm, { LLongMem, 0, 0} },
+{"fild", 1, 0xdf, 0, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
/* Intel Syntax */
-{"fildd", 1, 0xdf, 5, FP|Modrm, { LLongMem, 0, 0} },
-{"fildq", 1, 0xdf, 5, FP|Modrm, { LLongMem, 0, 0} },
-{"fildll", 1, 0xdf, 5, FP|Modrm, { LLongMem, 0, 0} },
-{"fldt", 1, 0xdb, 5, FP|Modrm, { LLongMem, 0, 0} },
-{"fbld", 1, 0xdf, 4, FP|Modrm, { LLongMem, 0, 0} },
+{"fildd", 1, 0xdf, 5, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fildq", 1, 0xdf, 5, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fildll", 1, 0xdf, 5, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fldt", 1, 0xdb, 5, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fbld", 1, 0xdf, 4, 0, FP|Modrm, { LLongMem, 0, 0} },
/* store (no pop) */
-{"fst", 1, 0xddd0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fst", 1, 0xd9, 2, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fst", 1, 0xddd0, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
-{"fist", 1, 0xdf, 2, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fst", 1, 0xddd0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fst", 1, 0xd9, 2, 0, sl_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fst", 1, 0xddd0, X, 0, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
+{"fist", 1, 0xdf, 2, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
/* store (with pop) */
-{"fstp", 1, 0xddd8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fstp", 1, 0xd9, 3, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fstp", 1, 0xddd8, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
+{"fstp", 1, 0xddd8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fstp", 1, 0xd9, 3, 0, sl_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fstp", 1, 0xddd8, X, 0, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
/* Intel Syntax */
-{"fstp", 1, 0xdb, 7, x_FP|Modrm, { LLongMem, 0, 0} },
-{"fistp", 1, 0xdf, 3, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fstp", 1, 0xdb, 7, 0, x_FP|Modrm, { LLongMem, 0, 0} },
+{"fistp", 1, 0xdf, 3, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
/* Intel Syntax */
-{"fistpd", 1, 0xdf, 7, FP|Modrm, { LLongMem, 0, 0} },
-{"fistpq", 1, 0xdf, 7, FP|Modrm, { LLongMem, 0, 0} },
-{"fistpll",1, 0xdf, 7, FP|Modrm, { LLongMem, 0, 0} },
-{"fstpt", 1, 0xdb, 7, FP|Modrm, { LLongMem, 0, 0} },
-{"fbstp", 1, 0xdf, 6, FP|Modrm, { LLongMem, 0, 0} },
+{"fistpd", 1, 0xdf, 7, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fistpq", 1, 0xdf, 7, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fistpll",1, 0xdf, 7, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fstpt", 1, 0xdb, 7, 0, FP|Modrm, { LLongMem, 0, 0} },
+{"fbstp", 1, 0xdf, 6, 0, FP|Modrm, { LLongMem, 0, 0} },
/* exchange %st<n> with %st0 */
-{"fxch", 1, 0xd9c8, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fxch", 1, 0xd9c8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
/* alias for fxch %st(1) */
-{"fxch", 0, 0xd9c9, X, FP, { 0, 0, 0} },
+{"fxch", 0, 0xd9c9, X, 0, FP, { 0, 0, 0} },
/* comparison (without pop) */
-{"fcom", 1, 0xd8d0, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fcom", 1, 0xd8d0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
/* alias for fcom %st(1) */
-{"fcom", 0, 0xd8d1, X, FP, { 0, 0, 0} },
-{"fcom", 1, 0xd8, 2, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fcom", 1, 0xd8d0, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
-{"ficom", 1, 0xde, 2, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fcom", 0, 0xd8d1, X, 0, FP, { 0, 0, 0} },
+{"fcom", 1, 0xd8, 2, 0, sl_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fcom", 1, 0xd8d0, X, 0, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
+{"ficom", 1, 0xde, 2, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
/* comparison (with pop) */
-{"fcomp", 1, 0xd8d8, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fcomp", 1, 0xd8d8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
/* alias for fcomp %st(1) */
-{"fcomp", 0, 0xd8d9, X, FP, { 0, 0, 0} },
-{"fcomp", 1, 0xd8, 3, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fcomp", 1, 0xd8d8, X, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
-{"ficomp", 1, 0xde, 3, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
-{"fcompp", 0, 0xded9, X, FP, { 0, 0, 0} },
+{"fcomp", 0, 0xd8d9, X, 0, FP, { 0, 0, 0} },
+{"fcomp", 1, 0xd8, 3, 0, sl_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fcomp", 1, 0xd8d8, X, 0, l_FP|ShortForm|Ugh, { FloatReg, 0, 0} },
+{"ficomp", 1, 0xde, 3, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fcompp", 0, 0xded9, X, 0, FP, { 0, 0, 0} },
/* unordered comparison (with pop) */
-{"fucom", 1, 0xdde0, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fucom", 1, 0xdde0, X, Cpu286, FP|ShortForm, { FloatReg, 0, 0} },
/* alias for fucom %st(1) */
-{"fucom", 0, 0xdde1, X, FP, { 0, 0, 0} },
-{"fucomp", 1, 0xdde8, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fucom", 0, 0xdde1, X, Cpu286, FP, { 0, 0, 0} },
+{"fucomp", 1, 0xdde8, X, Cpu286, FP|ShortForm, { FloatReg, 0, 0} },
/* alias for fucomp %st(1) */
-{"fucomp", 0, 0xdde9, X, FP, { 0, 0, 0} },
-{"fucompp",0, 0xdae9, X, FP, { 0, 0, 0} },
+{"fucomp", 0, 0xdde9, X, Cpu286, FP, { 0, 0, 0} },
+{"fucompp",0, 0xdae9, X, Cpu286, FP, { 0, 0, 0} },
-{"ftst", 0, 0xd9e4, X, FP, { 0, 0, 0} },
-{"fxam", 0, 0xd9e5, X, FP, { 0, 0, 0} },
+{"ftst", 0, 0xd9e4, X, 0, FP, { 0, 0, 0} },
+{"fxam", 0, 0xd9e5, X, 0, FP, { 0, 0, 0} },
/* load constants into %st0 */
-{"fld1", 0, 0xd9e8, X, FP, { 0, 0, 0} },
-{"fldl2t", 0, 0xd9e9, X, FP, { 0, 0, 0} },
-{"fldl2e", 0, 0xd9ea, X, FP, { 0, 0, 0} },
-{"fldpi", 0, 0xd9eb, X, FP, { 0, 0, 0} },
-{"fldlg2", 0, 0xd9ec, X, FP, { 0, 0, 0} },
-{"fldln2", 0, 0xd9ed, X, FP, { 0, 0, 0} },
-{"fldz", 0, 0xd9ee, X, FP, { 0, 0, 0} },
+{"fld1", 0, 0xd9e8, X, 0, FP, { 0, 0, 0} },
+{"fldl2t", 0, 0xd9e9, X, 0, FP, { 0, 0, 0} },
+{"fldl2e", 0, 0xd9ea, X, 0, FP, { 0, 0, 0} },
+{"fldpi", 0, 0xd9eb, X, 0, FP, { 0, 0, 0} },
+{"fldlg2", 0, 0xd9ec, X, 0, FP, { 0, 0, 0} },
+{"fldln2", 0, 0xd9ed, X, 0, FP, { 0, 0, 0} },
+{"fldz", 0, 0xd9ee, X, 0, FP, { 0, 0, 0} },
/* arithmetic */
/* add */
-{"fadd", 2, 0xd8c0, X, FP|ShortForm|FloatD, { FloatReg, FloatAcc, 0} },
+{"fadd", 2, 0xd8c0, X, 0, FP|ShortForm|FloatD, { FloatReg, FloatAcc, 0} },
/* alias for fadd %st(i), %st */
-{"fadd", 1, 0xd8c0, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fadd", 1, 0xd8c0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
/* alias for faddp */
-{"fadd", 0, 0xdec1, X, FP|Ugh, { 0, 0, 0} },
+{"fadd", 0, 0xdec1, X, 0, FP|Ugh, { 0, 0, 0} },
#endif
-{"fadd", 1, 0xd8, 0, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fiadd", 1, 0xde, 0, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fadd", 1, 0xd8, 0, 0, sl_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fiadd", 1, 0xde, 0, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
-{"faddp", 2, 0xdec0, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"faddp", 1, 0xdec0, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"faddp", 2, 0xdec0, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"faddp", 1, 0xdec0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
/* alias for faddp %st, %st(1) */
-{"faddp", 0, 0xdec1, X, FP, { 0, 0, 0} },
-{"faddp", 2, 0xdec0, X, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
+{"faddp", 0, 0xdec1, X, 0, FP, { 0, 0, 0} },
+{"faddp", 2, 0xdec0, X, 0, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
/* subtract */
-{"fsub", 2, 0xd8e0, X, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
-{"fsub", 1, 0xd8e0, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fsub", 2, 0xd8e0, X, 0, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
+{"fsub", 1, 0xd8e0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
/* alias for fsubp */
-{"fsub", 0, 0xdee1, X, FP|Ugh, { 0, 0, 0} },
+{"fsub", 0, 0xdee1, X, 0, FP|Ugh, { 0, 0, 0} },
#endif
-{"fsub", 1, 0xd8, 4, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fisub", 1, 0xde, 4, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fsub", 1, 0xd8, 4, 0, sl_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fisub", 1, 0xde, 4, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
#if SYSV386_COMPAT
-{"fsubp", 2, 0xdee0, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fsubp", 1, 0xdee0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fsubp", 0, 0xdee1, X, FP, { 0, 0, 0} },
+{"fsubp", 2, 0xdee0, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fsubp", 1, 0xdee0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fsubp", 0, 0xdee1, X, 0, FP, { 0, 0, 0} },
#if OLDGCC_COMPAT
-{"fsubp", 2, 0xdee0, X, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
+{"fsubp", 2, 0xdee0, X, 0, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
#endif
#else
-{"fsubp", 2, 0xdee8, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fsubp", 1, 0xdee8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fsubp", 0, 0xdee9, X, FP, { 0, 0, 0} },
+{"fsubp", 2, 0xdee8, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fsubp", 1, 0xdee8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fsubp", 0, 0xdee9, X, 0, FP, { 0, 0, 0} },
#endif
/* subtract reverse */
-{"fsubr", 2, 0xd8e8, X, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
-{"fsubr", 1, 0xd8e8, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fsubr", 2, 0xd8e8, X, 0, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
+{"fsubr", 1, 0xd8e8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
/* alias for fsubrp */
-{"fsubr", 0, 0xdee9, X, FP|Ugh, { 0, 0, 0} },
+{"fsubr", 0, 0xdee9, X, 0, FP|Ugh, { 0, 0, 0} },
#endif
-{"fsubr", 1, 0xd8, 5, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fisubr", 1, 0xde, 5, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fsubr", 1, 0xd8, 5, 0, sl_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fisubr", 1, 0xde, 5, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
#if SYSV386_COMPAT
-{"fsubrp", 2, 0xdee8, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fsubrp", 1, 0xdee8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fsubrp", 0, 0xdee9, X, FP, { 0, 0, 0} },
+{"fsubrp", 2, 0xdee8, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fsubrp", 1, 0xdee8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fsubrp", 0, 0xdee9, X, 0, FP, { 0, 0, 0} },
#if OLDGCC_COMPAT
-{"fsubrp", 2, 0xdee8, X, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
+{"fsubrp", 2, 0xdee8, X, 0, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
#endif
#else
-{"fsubrp", 2, 0xdee0, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fsubrp", 1, 0xdee0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fsubrp", 0, 0xdee1, X, FP, { 0, 0, 0} },
+{"fsubrp", 2, 0xdee0, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fsubrp", 1, 0xdee0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fsubrp", 0, 0xdee1, X, 0, FP, { 0, 0, 0} },
#endif
/* multiply */
-{"fmul", 2, 0xd8c8, X, FP|ShortForm|FloatD, { FloatReg, FloatAcc, 0} },
-{"fmul", 1, 0xd8c8, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fmul", 2, 0xd8c8, X, 0, FP|ShortForm|FloatD, { FloatReg, FloatAcc, 0} },
+{"fmul", 1, 0xd8c8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
/* alias for fmulp */
-{"fmul", 0, 0xdec9, X, FP|Ugh, { 0, 0, 0} },
+{"fmul", 0, 0xdec9, X, 0, FP|Ugh, { 0, 0, 0} },
#endif
-{"fmul", 1, 0xd8, 1, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fimul", 1, 0xde, 1, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fmul", 1, 0xd8, 1, 0, sl_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fimul", 1, 0xde, 1, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
-{"fmulp", 2, 0xdec8, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fmulp", 1, 0xdec8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fmulp", 0, 0xdec9, X, FP, { 0, 0, 0} },
-{"fmulp", 2, 0xdec8, X, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
+{"fmulp", 2, 0xdec8, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fmulp", 1, 0xdec8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fmulp", 0, 0xdec9, X, 0, FP, { 0, 0, 0} },
+{"fmulp", 2, 0xdec8, X, 0, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
/* divide */
-{"fdiv", 2, 0xd8f0, X, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
-{"fdiv", 1, 0xd8f0, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fdiv", 2, 0xd8f0, X, 0, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
+{"fdiv", 1, 0xd8f0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
/* alias for fdivp */
-{"fdiv", 0, 0xdef1, X, FP|Ugh, { 0, 0, 0} },
+{"fdiv", 0, 0xdef1, X, 0, FP|Ugh, { 0, 0, 0} },
#endif
-{"fdiv", 1, 0xd8, 6, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fidiv", 1, 0xde, 6, sld_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fdiv", 1, 0xd8, 6, 0, sl_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fidiv", 1, 0xde, 6, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
#if SYSV386_COMPAT
-{"fdivp", 2, 0xdef0, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fdivp", 1, 0xdef0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fdivp", 0, 0xdef1, X, FP, { 0, 0, 0} },
+{"fdivp", 2, 0xdef0, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fdivp", 1, 0xdef0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fdivp", 0, 0xdef1, X, 0, FP, { 0, 0, 0} },
#if OLDGCC_COMPAT
-{"fdivp", 2, 0xdef0, X, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
+{"fdivp", 2, 0xdef0, X, 0, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
#endif
#else
-{"fdivp", 2, 0xdef8, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fdivp", 1, 0xdef8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fdivp", 0, 0xdef9, X, FP, { 0, 0, 0} },
+{"fdivp", 2, 0xdef8, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fdivp", 1, 0xdef8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fdivp", 0, 0xdef9, X, 0, FP, { 0, 0, 0} },
#endif
/* divide reverse */
-{"fdivr", 2, 0xd8f8, X, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
-{"fdivr", 1, 0xd8f8, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fdivr", 2, 0xd8f8, X, 0, FP|ShortForm|FloatDR, { FloatReg, FloatAcc, 0} },
+{"fdivr", 1, 0xd8f8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
#if SYSV386_COMPAT
/* alias for fdivrp */
-{"fdivr", 0, 0xdef9, X, FP|Ugh, { 0, 0, 0} },
+{"fdivr", 0, 0xdef9, X, 0, FP|Ugh, { 0, 0, 0} },
#endif
-{"fdivr", 1, 0xd8, 7, sld_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
-{"fidivr", 1, 0xde, 7, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
+{"fdivr", 1, 0xd8, 7, 0, sl_FP|FloatMF|Modrm, { LongMem|LLongMem, 0, 0} },
+{"fidivr", 1, 0xde, 7, 0, sl_FP|FloatMF|Modrm, { ShortMem|LongMem, 0, 0} },
#if SYSV386_COMPAT
-{"fdivrp", 2, 0xdef8, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fdivrp", 1, 0xdef8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fdivrp", 0, 0xdef9, X, FP, { 0, 0, 0} },
+{"fdivrp", 2, 0xdef8, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fdivrp", 1, 0xdef8, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fdivrp", 0, 0xdef9, X, 0, FP, { 0, 0, 0} },
#if OLDGCC_COMPAT
-{"fdivrp", 2, 0xdef8, X, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
+{"fdivrp", 2, 0xdef8, X, 0, FP|ShortForm|Ugh, { FloatReg, FloatAcc, 0} },
#endif
#else
-{"fdivrp", 2, 0xdef0, X, FP|ShortForm, { FloatAcc, FloatReg, 0} },
-{"fdivrp", 1, 0xdef0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fdivrp", 0, 0xdef1, X, FP, { 0, 0, 0} },
+{"fdivrp", 2, 0xdef0, X, 0, FP|ShortForm, { FloatAcc, FloatReg, 0} },
+{"fdivrp", 1, 0xdef0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
+{"fdivrp", 0, 0xdef1, X, 0, FP, { 0, 0, 0} },
#endif
-{"f2xm1", 0, 0xd9f0, X, FP, { 0, 0, 0} },
-{"fyl2x", 0, 0xd9f1, X, FP, { 0, 0, 0} },
-{"fptan", 0, 0xd9f2, X, FP, { 0, 0, 0} },
-{"fpatan", 0, 0xd9f3, X, FP, { 0, 0, 0} },
-{"fxtract",0, 0xd9f4, X, FP, { 0, 0, 0} },
-{"fprem1", 0, 0xd9f5, X, FP, { 0, 0, 0} },
-{"fdecstp",0, 0xd9f6, X, FP, { 0, 0, 0} },
-{"fincstp",0, 0xd9f7, X, FP, { 0, 0, 0} },
-{"fprem", 0, 0xd9f8, X, FP, { 0, 0, 0} },
-{"fyl2xp1",0, 0xd9f9, X, FP, { 0, 0, 0} },
-{"fsqrt", 0, 0xd9fa, X, FP, { 0, 0, 0} },
-{"fsincos",0, 0xd9fb, X, FP, { 0, 0, 0} },
-{"frndint",0, 0xd9fc, X, FP, { 0, 0, 0} },
-{"fscale", 0, 0xd9fd, X, FP, { 0, 0, 0} },
-{"fsin", 0, 0xd9fe, X, FP, { 0, 0, 0} },
-{"fcos", 0, 0xd9ff, X, FP, { 0, 0, 0} },
-{"fchs", 0, 0xd9e0, X, FP, { 0, 0, 0} },
-{"fabs", 0, 0xd9e1, X, FP, { 0, 0, 0} },
+{"f2xm1", 0, 0xd9f0, X, 0, FP, { 0, 0, 0} },
+{"fyl2x", 0, 0xd9f1, X, 0, FP, { 0, 0, 0} },
+{"fptan", 0, 0xd9f2, X, 0, FP, { 0, 0, 0} },
+{"fpatan", 0, 0xd9f3, X, 0, FP, { 0, 0, 0} },
+{"fxtract",0, 0xd9f4, X, 0, FP, { 0, 0, 0} },
+{"fprem1", 0, 0xd9f5, X, Cpu286, FP, { 0, 0, 0} },
+{"fdecstp",0, 0xd9f6, X, 0, FP, { 0, 0, 0} },
+{"fincstp",0, 0xd9f7, X, 0, FP, { 0, 0, 0} },
+{"fprem", 0, 0xd9f8, X, 0, FP, { 0, 0, 0} },
+{"fyl2xp1",0, 0xd9f9, X, 0, FP, { 0, 0, 0} },
+{"fsqrt", 0, 0xd9fa, X, 0, FP, { 0, 0, 0} },
+{"fsincos",0, 0xd9fb, X, Cpu286, FP, { 0, 0, 0} },
+{"frndint",0, 0xd9fc, X, 0, FP, { 0, 0, 0} },
+{"fscale", 0, 0xd9fd, X, 0, FP, { 0, 0, 0} },
+{"fsin", 0, 0xd9fe, X, Cpu286, FP, { 0, 0, 0} },
+{"fcos", 0, 0xd9ff, X, Cpu286, FP, { 0, 0, 0} },
+{"fchs", 0, 0xd9e0, X, 0, FP, { 0, 0, 0} },
+{"fabs", 0, 0xd9e1, X, 0, FP, { 0, 0, 0} },
/* processor control */
-{"fninit", 0, 0xdbe3, X, FP, { 0, 0, 0} },
-{"finit", 0, 0xdbe3, X, FP|FWait, { 0, 0, 0} },
-{"fldcw", 1, 0xd9, 5, FP|Modrm, { ShortMem, 0, 0} },
-{"fnstcw", 1, 0xd9, 7, FP|Modrm, { ShortMem, 0, 0} },
-{"fstcw", 1, 0xd9, 7, FP|FWait|Modrm, { ShortMem, 0, 0} },
-{"fnstsw", 1, 0xdfe0, X, FP, { Acc, 0, 0} },
-{"fnstsw", 1, 0xdd, 7, FP|Modrm, { ShortMem, 0, 0} },
-{"fnstsw", 0, 0xdfe0, X, FP, { 0, 0, 0} },
-{"fstsw", 1, 0xdfe0, X, FP|FWait, { Acc, 0, 0} },
-{"fstsw", 1, 0xdd, 7, FP|FWait|Modrm, { ShortMem, 0, 0} },
-{"fstsw", 0, 0xdfe0, X, FP|FWait, { 0, 0, 0} },
-{"fnclex", 0, 0xdbe2, X, FP, { 0, 0, 0} },
-{"fclex", 0, 0xdbe2, X, FP|FWait, { 0, 0, 0} },
+{"fninit", 0, 0xdbe3, X, 0, FP, { 0, 0, 0} },
+{"finit", 0, 0xdbe3, X, 0, FP|FWait, { 0, 0, 0} },
+{"fldcw", 1, 0xd9, 5, 0, FP|Modrm, { ShortMem, 0, 0} },
+{"fnstcw", 1, 0xd9, 7, 0, FP|Modrm, { ShortMem, 0, 0} },
+{"fstcw", 1, 0xd9, 7, 0, FP|FWait|Modrm, { ShortMem, 0, 0} },
+{"fnstsw", 1, 0xdfe0, X, 0, FP, { Acc, 0, 0} },
+{"fnstsw", 1, 0xdd, 7, 0, FP|Modrm, { ShortMem, 0, 0} },
+{"fnstsw", 0, 0xdfe0, X, 0, FP, { 0, 0, 0} },
+{"fstsw", 1, 0xdfe0, X, 0, FP|FWait, { Acc, 0, 0} },
+{"fstsw", 1, 0xdd, 7, 0, FP|FWait|Modrm, { ShortMem, 0, 0} },
+{"fstsw", 0, 0xdfe0, X, 0, FP|FWait, { 0, 0, 0} },
+{"fnclex", 0, 0xdbe2, X, 0, FP, { 0, 0, 0} },
+{"fclex", 0, 0xdbe2, X, 0, FP|FWait, { 0, 0, 0} },
/* Short forms of fldenv, fstenv use data size prefix. */
-{"fnstenv",1, 0xd9, 6, sl_Suf|Modrm, { LLongMem, 0, 0} },
-{"fstenv", 1, 0xd9, 6, sl_Suf|FWait|Modrm, { LLongMem, 0, 0} },
-{"fldenv", 1, 0xd9, 4, sl_Suf|Modrm, { LLongMem, 0, 0} },
-{"fnsave", 1, 0xdd, 6, sl_Suf|Modrm, { LLongMem, 0, 0} },
-{"fsave", 1, 0xdd, 6, sl_Suf|FWait|Modrm, { LLongMem, 0, 0} },
-{"frstor", 1, 0xdd, 4, sl_Suf|Modrm, { LLongMem, 0, 0} },
-
-{"ffree", 1, 0xddc0, X, FP|ShortForm, { FloatReg, 0, 0} },
+{"fnstenv",1, 0xd9, 6, 0, sl_Suf|Modrm, { LLongMem, 0, 0} },
+{"fstenv", 1, 0xd9, 6, 0, sl_Suf|FWait|Modrm, { LLongMem, 0, 0} },
+{"fldenv", 1, 0xd9, 4, 0, sl_Suf|Modrm, { LLongMem, 0, 0} },
+{"fnsave", 1, 0xdd, 6, 0, sl_Suf|Modrm, { LLongMem, 0, 0} },
+{"fsave", 1, 0xdd, 6, 0, sl_Suf|FWait|Modrm, { LLongMem, 0, 0} },
+{"frstor", 1, 0xdd, 4, 0, sl_Suf|Modrm, { LLongMem, 0, 0} },
+
+{"ffree", 1, 0xddc0, X, 0, FP|ShortForm, { FloatReg, 0, 0} },
/* P6:free st(i), pop st */
-{"ffreep", 1, 0xdfc0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fnop", 0, 0xd9d0, X, FP, { 0, 0, 0} },
+{"ffreep", 1, 0xdfc0, X, Cpu686, FP|ShortForm, { FloatReg, 0, 0} },
+{"fnop", 0, 0xd9d0, X, 0, FP, { 0, 0, 0} },
#define FWAIT_OPCODE 0x9b
-{"fwait", 0, 0x9b, X, FP, { 0, 0, 0} },
+{"fwait", 0, 0x9b, X, 0, FP, { 0, 0, 0} },
/* Opcode prefixes; we allow them as separate insns too. */
#define ADDR_PREFIX_OPCODE 0x67
-{"addr16", 0, 0x67, X, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
-{"addr32", 0, 0x67, X, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
-{"aword", 0, 0x67, X, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
-{"adword", 0, 0x67, X, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
+{"addr16", 0, 0x67, X, Cpu386, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
+{"addr32", 0, 0x67, X, Cpu386, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
+{"aword", 0, 0x67, X, Cpu386, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
+{"adword", 0, 0x67, X, Cpu386, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
#define DATA_PREFIX_OPCODE 0x66
-{"data16", 0, 0x66, X, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
-{"data32", 0, 0x66, X, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
-{"word", 0, 0x66, X, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
-{"dword", 0, 0x66, X, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
+{"data16", 0, 0x66, X, Cpu386, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
+{"data32", 0, 0x66, X, Cpu386, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
+{"word", 0, 0x66, X, Cpu386, NoSuf|IsPrefix|Size16|IgnoreSize, { 0, 0, 0} },
+{"dword", 0, 0x66, X, Cpu386, NoSuf|IsPrefix|Size32|IgnoreSize, { 0, 0, 0} },
#define LOCK_PREFIX_OPCODE 0xf0
-{"lock", 0, 0xf0, X, NoSuf|IsPrefix, { 0, 0, 0} },
-{"wait", 0, 0x9b, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"lock", 0, 0xf0, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
+{"wait", 0, 0x9b, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
#define CS_PREFIX_OPCODE 0x2e
-{"cs", 0, 0x2e, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"cs", 0, 0x2e, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
#define DS_PREFIX_OPCODE 0x3e
-{"ds", 0, 0x3e, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"ds", 0, 0x3e, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
#define ES_PREFIX_OPCODE 0x26
-{"es", 0, 0x26, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"es", 0, 0x26, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
#define FS_PREFIX_OPCODE 0x64
-{"fs", 0, 0x64, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"fs", 0, 0x64, X, Cpu386, NoSuf|IsPrefix, { 0, 0, 0} },
#define GS_PREFIX_OPCODE 0x65
-{"gs", 0, 0x65, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"gs", 0, 0x65, X, Cpu386, NoSuf|IsPrefix, { 0, 0, 0} },
#define SS_PREFIX_OPCODE 0x36
-{"ss", 0, 0x36, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"ss", 0, 0x36, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
#define REPNE_PREFIX_OPCODE 0xf2
#define REPE_PREFIX_OPCODE 0xf3
-{"rep", 0, 0xf3, X, NoSuf|IsPrefix, { 0, 0, 0} },
-{"repe", 0, 0xf3, X, NoSuf|IsPrefix, { 0, 0, 0} },
-{"repz", 0, 0xf3, X, NoSuf|IsPrefix, { 0, 0, 0} },
-{"repne", 0, 0xf2, X, NoSuf|IsPrefix, { 0, 0, 0} },
-{"repnz", 0, 0xf2, X, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rep", 0, 0xf3, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
+{"repe", 0, 0xf3, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
+{"repz", 0, 0xf3, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
+{"repne", 0, 0xf2, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
+{"repnz", 0, 0xf2, X, 0, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rex", 0, 0x40, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rexz", 0, 0x41, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rexy", 0, 0x42, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rexyz", 0, 0x43, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rexx", 0, 0x44, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rexxz", 0, 0x45, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rexxy", 0, 0x46, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rexxyz", 0, 0x47, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rex64", 0, 0x48, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rex64z", 0, 0x49, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rex64y", 0, 0x4a, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rex64yz",0, 0x4b, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rex64x", 0, 0x4c, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rex64xz",0, 0x4d, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rex64xy",0, 0x4e, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
+{"rex64xyz",0, 0x4f, X, Cpu64, NoSuf|IsPrefix, { 0, 0, 0} },
/* 486 extensions. */
-{"bswap", 1, 0x0fc8, X, l_Suf|ShortForm, { Reg32, 0, 0 } },
-{"xadd", 2, 0x0fc0, X, bwl_Suf|W|Modrm, { Reg, Reg|AnyMem, 0 } },
-{"cmpxchg", 2, 0x0fb0, X, bwl_Suf|W|Modrm, { Reg, Reg|AnyMem, 0 } },
-{"invd", 0, 0x0f08, X, NoSuf, { 0, 0, 0} },
-{"wbinvd", 0, 0x0f09, X, NoSuf, { 0, 0, 0} },
-{"invlpg", 1, 0x0f01, 7, NoSuf|Modrm, { AnyMem, 0, 0} },
+{"bswap", 1, 0x0fc8, X, Cpu486, lq_Suf|ShortForm, { Reg32|Reg64, 0, 0 } },
+{"xadd", 2, 0x0fc0, X, Cpu486, bwlq_Suf|W|Modrm, { Reg, Reg|AnyMem, 0 } },
+{"cmpxchg", 2, 0x0fb0, X, Cpu486, bwlq_Suf|W|Modrm, { Reg, Reg|AnyMem, 0 } },
+{"invd", 0, 0x0f08, X, Cpu486, NoSuf, { 0, 0, 0} },
+{"wbinvd", 0, 0x0f09, X, Cpu486, NoSuf, { 0, 0, 0} },
+{"invlpg", 1, 0x0f01, 7, Cpu486, NoSuf|Modrm, { AnyMem, 0, 0} },
/* 586 and late 486 extensions. */
-{"cpuid", 0, 0x0fa2, X, NoSuf, { 0, 0, 0} },
+{"cpuid", 0, 0x0fa2, X, Cpu486, NoSuf, { 0, 0, 0} },
/* Pentium extensions. */
-{"wrmsr", 0, 0x0f30, X, NoSuf, { 0, 0, 0} },
-{"rdtsc", 0, 0x0f31, X, NoSuf, { 0, 0, 0} },
-{"rdmsr", 0, 0x0f32, X, NoSuf, { 0, 0, 0} },
-{"cmpxchg8b",1,0x0fc7, 1, NoSuf|Modrm, { LLongMem, 0, 0} },
+{"wrmsr", 0, 0x0f30, X, Cpu586, NoSuf, { 0, 0, 0} },
+{"rdtsc", 0, 0x0f31, X, Cpu586, NoSuf, { 0, 0, 0} },
+{"rdmsr", 0, 0x0f32, X, Cpu586, NoSuf, { 0, 0, 0} },
+{"cmpxchg8b",1,0x0fc7, 1, Cpu586, NoSuf|Modrm, { LLongMem, 0, 0} },
/* Pentium II/Pentium Pro extensions. */
-{"sysenter",0, 0x0f34, X, NoSuf, { 0, 0, 0} },
-{"sysexit", 0, 0x0f35, X, NoSuf, { 0, 0, 0} },
-{"fxsave", 1, 0x0fae, 0, FP|Modrm, { LLongMem, 0, 0} },
-{"fxrstor", 1, 0x0fae, 1, FP|Modrm, { LLongMem, 0, 0} },
-{"rdpmc", 0, 0x0f33, X, NoSuf, { 0, 0, 0} },
+{"sysenter",0, 0x0f34, X, Cpu686|CpuNo64, NoSuf, { 0, 0, 0} },
+{"sysexit", 0, 0x0f35, X, Cpu686|CpuNo64, NoSuf, { 0, 0, 0} },
+{"fxsave", 1, 0x0fae, 0, Cpu686, FP|Modrm, { LLongMem, 0, 0} },
+{"fxrstor", 1, 0x0fae, 1, Cpu686, FP|Modrm, { LLongMem, 0, 0} },
+{"rdpmc", 0, 0x0f33, X, Cpu686, NoSuf, { 0, 0, 0} },
/* official undefined instr. */
-{"ud2", 0, 0x0f0b, X, NoSuf, { 0, 0, 0} },
+{"ud2", 0, 0x0f0b, X, Cpu686, NoSuf, { 0, 0, 0} },
/* alias for ud2 */
-{"ud2a", 0, 0x0f0b, X, NoSuf, { 0, 0, 0} },
+{"ud2a", 0, 0x0f0b, X, Cpu686, NoSuf, { 0, 0, 0} },
/* 2nd. official undefined instr. */
-{"ud2b", 0, 0x0fb9, X, NoSuf, { 0, 0, 0} },
-
-{"cmovo", 2, 0x0f40, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovno", 2, 0x0f41, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovb", 2, 0x0f42, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovc", 2, 0x0f42, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnae", 2, 0x0f42, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovae", 2, 0x0f43, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnc", 2, 0x0f43, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnb", 2, 0x0f43, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmove", 2, 0x0f44, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovz", 2, 0x0f44, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovne", 2, 0x0f45, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnz", 2, 0x0f45, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovbe", 2, 0x0f46, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovna", 2, 0x0f46, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmova", 2, 0x0f47, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnbe", 2, 0x0f47, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovs", 2, 0x0f48, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovns", 2, 0x0f49, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovp", 2, 0x0f4a, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnp", 2, 0x0f4b, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovl", 2, 0x0f4c, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnge", 2, 0x0f4c, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovge", 2, 0x0f4d, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnl", 2, 0x0f4d, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovle", 2, 0x0f4e, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovng", 2, 0x0f4e, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovg", 2, 0x0f4f, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-{"cmovnle", 2, 0x0f4f, X, wl_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
-
-{"fcmovb", 2, 0xdac0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovnae",2, 0xdac0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmove", 2, 0xdac8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovbe", 2, 0xdad0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovna", 2, 0xdad0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovu", 2, 0xdad8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovae", 2, 0xdbc0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovnb", 2, 0xdbc0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovne", 2, 0xdbc8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmova", 2, 0xdbd0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovnbe",2, 0xdbd0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcmovnu", 2, 0xdbd8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-
-{"fcomi", 2, 0xdbf0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcomi", 0, 0xdbf1, X, FP|ShortForm, { 0, 0, 0} },
-{"fcomi", 1, 0xdbf0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fucomi", 2, 0xdbe8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fucomi", 0, 0xdbe9, X, FP|ShortForm, { 0, 0, 0} },
-{"fucomi", 1, 0xdbe8, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fcomip", 2, 0xdff0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcompi", 2, 0xdff0, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fcompi", 0, 0xdff1, X, FP|ShortForm, { 0, 0, 0} },
-{"fcompi", 1, 0xdff0, X, FP|ShortForm, { FloatReg, 0, 0} },
-{"fucomip", 2, 0xdfe8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fucompi", 2, 0xdfe8, X, FP|ShortForm, { FloatReg, FloatAcc, 0} },
-{"fucompi", 0, 0xdfe9, X, FP|ShortForm, { 0, 0, 0} },
-{"fucompi", 1, 0xdfe8, X, FP|ShortForm, { FloatReg, 0, 0} },
-
-/* MMX instructions. */
-
-{"emms", 0, 0x0f77, X, FP, { 0, 0, 0 } },
-{"movd", 2, 0x0f6e, X, FP|Modrm, { Reg32|LongMem, RegMMX, 0 } },
-{"movd", 2, 0x0f7e, X, FP|Modrm, { RegMMX, Reg32|LongMem, 0 } },
-{"movq", 2, 0x0f6f, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"movq", 2, 0x0f7f, X, FP|Modrm, { RegMMX, RegMMX|LongMem, 0 } },
-{"packssdw", 2, 0x0f6b, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"packsswb", 2, 0x0f63, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"packuswb", 2, 0x0f67, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddb", 2, 0x0ffc, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddw", 2, 0x0ffd, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddd", 2, 0x0ffe, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddsb", 2, 0x0fec, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddsw", 2, 0x0fed, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddusb", 2, 0x0fdc, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"paddusw", 2, 0x0fdd, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pand", 2, 0x0fdb, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pandn", 2, 0x0fdf, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pcmpeqb", 2, 0x0f74, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pcmpeqw", 2, 0x0f75, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pcmpeqd", 2, 0x0f76, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pcmpgtb", 2, 0x0f64, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pcmpgtw", 2, 0x0f65, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pcmpgtd", 2, 0x0f66, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pmaddwd", 2, 0x0ff5, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pmulhw", 2, 0x0fe5, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pmullw", 2, 0x0fd5, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"por", 2, 0x0feb, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psllw", 2, 0x0ff1, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psllw", 2, 0x0f71, 6, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"pslld", 2, 0x0ff2, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pslld", 2, 0x0f72, 6, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psllq", 2, 0x0ff3, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psllq", 2, 0x0f73, 6, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psraw", 2, 0x0fe1, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psraw", 2, 0x0f71, 4, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psrad", 2, 0x0fe2, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psrad", 2, 0x0f72, 4, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psrlw", 2, 0x0fd1, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psrlw", 2, 0x0f71, 2, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psrld", 2, 0x0fd2, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psrld", 2, 0x0f72, 2, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psrlq", 2, 0x0fd3, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psrlq", 2, 0x0f73, 2, FP|Modrm, { Imm8, RegMMX, 0 } },
-{"psubb", 2, 0x0ff8, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psubw", 2, 0x0ff9, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psubd", 2, 0x0ffa, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psubsb", 2, 0x0fe8, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psubsw", 2, 0x0fe9, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psubusb", 2, 0x0fd8, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"psubusw", 2, 0x0fd9, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"punpckhbw",2, 0x0f68, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"punpckhwd",2, 0x0f69, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"punpckhdq",2, 0x0f6a, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"punpcklbw",2, 0x0f60, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"punpcklwd",2, 0x0f61, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"punpckldq",2, 0x0f62, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-{"pxor", 2, 0x0fef, X, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
-
+{"ud2b", 0, 0x0fb9, X, Cpu686, NoSuf, { 0, 0, 0} },
+
+{"cmovo", 2, 0x0f40, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovno", 2, 0x0f41, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovb", 2, 0x0f42, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovc", 2, 0x0f42, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnae", 2, 0x0f42, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovae", 2, 0x0f43, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnc", 2, 0x0f43, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnb", 2, 0x0f43, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmove", 2, 0x0f44, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovz", 2, 0x0f44, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovne", 2, 0x0f45, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnz", 2, 0x0f45, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovbe", 2, 0x0f46, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovna", 2, 0x0f46, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmova", 2, 0x0f47, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnbe", 2, 0x0f47, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovs", 2, 0x0f48, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovns", 2, 0x0f49, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovp", 2, 0x0f4a, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnp", 2, 0x0f4b, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovl", 2, 0x0f4c, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnge", 2, 0x0f4c, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovge", 2, 0x0f4d, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnl", 2, 0x0f4d, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovle", 2, 0x0f4e, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovng", 2, 0x0f4e, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovg", 2, 0x0f4f, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+{"cmovnle", 2, 0x0f4f, X, Cpu686, wlq_Suf|Modrm, { WordReg|WordMem, WordReg, 0} },
+
+{"fcmovb", 2, 0xdac0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovnae",2, 0xdac0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmove", 2, 0xdac8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovbe", 2, 0xdad0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovna", 2, 0xdad0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovu", 2, 0xdad8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovae", 2, 0xdbc0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovnb", 2, 0xdbc0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovne", 2, 0xdbc8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmova", 2, 0xdbd0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovnbe",2, 0xdbd0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcmovnu", 2, 0xdbd8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+
+{"fcomi", 2, 0xdbf0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcomi", 0, 0xdbf1, X, Cpu686, FP|ShortForm, { 0, 0, 0} },
+{"fcomi", 1, 0xdbf0, X, Cpu686, FP|ShortForm, { FloatReg, 0, 0} },
+{"fucomi", 2, 0xdbe8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fucomi", 0, 0xdbe9, X, Cpu686, FP|ShortForm, { 0, 0, 0} },
+{"fucomi", 1, 0xdbe8, X, Cpu686, FP|ShortForm, { FloatReg, 0, 0} },
+{"fcomip", 2, 0xdff0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcompi", 2, 0xdff0, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fcompi", 0, 0xdff1, X, Cpu686, FP|ShortForm, { 0, 0, 0} },
+{"fcompi", 1, 0xdff0, X, Cpu686, FP|ShortForm, { FloatReg, 0, 0} },
+{"fucomip", 2, 0xdfe8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fucompi", 2, 0xdfe8, X, Cpu686, FP|ShortForm, { FloatReg, FloatAcc, 0} },
+{"fucompi", 0, 0xdfe9, X, Cpu686, FP|ShortForm, { 0, 0, 0} },
+{"fucompi", 1, 0xdfe8, X, Cpu686, FP|ShortForm, { FloatReg, 0, 0} },
+
+/* Pentium4 extensions. */
+
+{"movnti", 2, 0x0fc3, X, CpuP4, FP|Modrm, { WordReg, WordMem, 0 } },
+{"clflush", 1, 0x0fae, 7, CpuP4, FP|Modrm, { ByteMem, 0, 0 } },
+{"lfence", 0, 0x0fae, 0xe8, CpuP4, FP|ImmExt, { 0, 0, 0 } },
+{"mfence", 0, 0x0fae, 0xf0, CpuP4, FP|ImmExt, { 0, 0, 0 } },
+{"pause", 0, 0xf390, X, CpuP4, FP, { 0, 0, 0 } },
+
+/* MMX/SSE2 instructions. */
+
+{"emms", 0, 0x0f77, X, CpuMMX, FP, { 0, 0, 0 } },
+{"movd", 2, 0x0f6e, X, CpuMMX, FP|Modrm, { Reg32|LongMem, RegMMX, 0 } },
+{"movd", 2, 0x0f7e, X, CpuMMX, FP|Modrm, { RegMMX, Reg32|LongMem, 0 } },
+{"movd", 2, 0x660f6e,X,CpuSSE2,FP|Modrm, { Reg32|LLongMem, RegXMM, 0 } },
+{"movd", 2, 0x660f7e,X,CpuSSE2,FP|Modrm, { RegXMM, Reg32|LLongMem, 0 } },
+/* Real MMX instructions. */
+{"movq", 2, 0x0f6f, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"movq", 2, 0x0f7f, X, CpuMMX, FP|Modrm, { RegMMX, RegMMX|LongMem, 0 } },
+{"movq", 2, 0xf30f7e,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"movq", 2, 0x660fd6,X,CpuSSE2,FP|Modrm, { RegXMM, RegXMM|LLongMem, 0 } },
+/* In the 64bit mode the short form mov immediate is redefined to have
+ 64bit displacement value. */
+{"movq", 2, 0x88, X, Cpu64, NoSuf|D|W|Modrm|Size64,{ Reg64, Reg64|AnyMem, 0 } },
+{"movq", 2, 0xc6, 0, Cpu64, NoSuf|W|Modrm|Size64, { Imm32S, Reg64|WordMem, 0 } },
+{"movq", 2, 0xb0, X, Cpu64, NoSuf|W|ShortForm|Size64,{ Imm64, Reg64, 0 } },
+/* Move to/from control debug registers. In the 16 or 32bit modes they are 32bit. In the 64bit
+ mode they are 64bit.*/
+{"movq", 2, 0x0f20, X, Cpu64, NoSuf|D|Modrm|IgnoreSize|NoRex64|Size64,{ Control, Reg64|InvMem, 0} },
+{"movq", 2, 0x0f21, X, Cpu64, NoSuf|D|Modrm|IgnoreSize|NoRex64|Size64,{ Debug, Reg64|InvMem, 0} },
+{"packssdw", 2, 0x0f6b, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"packssdw", 2, 0x660f6b,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"packsswb", 2, 0x0f63, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"packsswb", 2, 0x660f63,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"packuswb", 2, 0x0f67, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"packuswb", 2, 0x660f67,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"paddb", 2, 0x0ffc, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddb", 2, 0x660ffc,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"paddw", 2, 0x0ffd, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddw", 2, 0x660ffd,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"paddd", 2, 0x0ffe, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddd", 2, 0x660ffe,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"paddq", 2, 0x0fd4, X, CpuMMX, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"paddq", 2, 0x660fd4,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"paddsb", 2, 0x0fec, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddsb", 2, 0x660fec,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"paddsw", 2, 0x0fed, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddsw", 2, 0x660fed,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"paddusb", 2, 0x0fdc, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddusb", 2, 0x660fdc,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"paddusw", 2, 0x0fdd, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"paddusw", 2, 0x660fdd,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pand", 2, 0x0fdb, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pand", 2, 0x660fdb,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pandn", 2, 0x0fdf, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pandn", 2, 0x660fdf,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pcmpeqb", 2, 0x0f74, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pcmpeqb", 2, 0x660f74,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pcmpeqw", 2, 0x0f75, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pcmpeqw", 2, 0x660f75,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pcmpeqd", 2, 0x0f76, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pcmpeqd", 2, 0x660f76,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pcmpgtb", 2, 0x0f64, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pcmpgtb", 2, 0x660f64,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pcmpgtw", 2, 0x0f65, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pcmpgtw", 2, 0x660f65,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pcmpgtd", 2, 0x0f66, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pcmpgtd", 2, 0x660f66,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pmaddwd", 2, 0x0ff5, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmaddwd", 2, 0x660ff5,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pmulhw", 2, 0x0fe5, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmulhw", 2, 0x660fe5,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pmullw", 2, 0x0fd5, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmullw", 2, 0x660fd5,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"por", 2, 0x0feb, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"por", 2, 0x660feb,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psllw", 2, 0x0ff1, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psllw", 2, 0x660ff1,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psllw", 2, 0x0f71, 6, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psllw", 2, 0x660f71,6,CpuSSE2,FP|Modrm, { Imm8, RegXMM, 0 } },
+{"pslld", 2, 0x0ff2, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pslld", 2, 0x660ff2,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pslld", 2, 0x0f72, 6, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"pslld", 2, 0x660f72,6,CpuSSE2,FP|Modrm, { Imm8, RegXMM, 0 } },
+{"psllq", 2, 0x0ff3, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psllq", 2, 0x660ff3,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psllq", 2, 0x0f73, 6, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psllq", 2, 0x660f73,6,CpuSSE2,FP|Modrm, { Imm8, RegXMM, 0 } },
+{"psraw", 2, 0x0fe1, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psraw", 2, 0x660fe1,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psraw", 2, 0x0f71, 4, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psraw", 2, 0x660f71,4,CpuSSE2,FP|Modrm, { Imm8, RegXMM, 0 } },
+{"psrad", 2, 0x0fe2, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psrad", 2, 0x660fe2,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psrad", 2, 0x0f72, 4, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psrad", 2, 0x660f72,4,CpuSSE2,FP|Modrm, { Imm8, RegXMM, 0 } },
+{"psrlw", 2, 0x0fd1, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psrlw", 2, 0x660fd1,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psrlw", 2, 0x0f71, 2, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psrlw", 2, 0x660f71,2,CpuSSE2,FP|Modrm, { Imm8, RegXMM, 0 } },
+{"psrld", 2, 0x0fd2, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psrld", 2, 0x660fd2,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psrld", 2, 0x0f72, 2, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psrld", 2, 0x660f72,2,CpuSSE2,FP|Modrm, { Imm8, RegXMM, 0 } },
+{"psrlq", 2, 0x0fd3, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psrlq", 2, 0x660fd3,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psrlq", 2, 0x0f73, 2, CpuMMX, FP|Modrm, { Imm8, RegMMX, 0 } },
+{"psrlq", 2, 0x660f73,2,CpuSSE2,FP|Modrm, { Imm8, RegXMM, 0 } },
+{"psubb", 2, 0x0ff8, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubb", 2, 0x660ff8,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psubw", 2, 0x0ff9, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubw", 2, 0x660ff9,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psubd", 2, 0x0ffa, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubd", 2, 0x660ffa,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psubq", 2, 0x0ffb, X, CpuMMX, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"psubq", 2, 0x660ffb,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psubsb", 2, 0x0fe8, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubsb", 2, 0x660fe8,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psubsw", 2, 0x0fe9, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubsw", 2, 0x660fe9,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psubusb", 2, 0x0fd8, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubusb", 2, 0x660fd8,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"psubusw", 2, 0x0fd9, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"psubusw", 2, 0x660fd9,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"punpckhbw",2, 0x0f68, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"punpckhbw",2, 0x660f68,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"punpckhwd",2, 0x0f69, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"punpckhwd",2, 0x660f69,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"punpckhdq",2, 0x0f6a, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"punpckhdq",2, 0x660f6a,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"punpcklbw",2, 0x0f60, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"punpcklbw",2, 0x660f60,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"punpcklwd",2, 0x0f61, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"punpcklwd",2, 0x660f61,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"punpckldq",2, 0x0f62, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"punpckldq",2, 0x660f62,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pxor", 2, 0x0fef, X, CpuMMX, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pxor", 2, 0x660fef,X,CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
/* PIII Katmai New Instructions / SIMD instructions. */
-{"addps", 2, 0x0f58, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"addss", 2, 0xf30f58, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"andnps", 2, 0x0f55, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"andps", 2, 0x0f54, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpeqps", 2, 0x0fc2, 0, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpeqss", 2, 0xf30fc2, 0, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpleps", 2, 0x0fc2, 2, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpless", 2, 0xf30fc2, 2, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpltps", 2, 0x0fc2, 1, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpltss", 2, 0xf30fc2, 1, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpneqps", 2, 0x0fc2, 4, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpneqss", 2, 0xf30fc2, 4, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpnleps", 2, 0x0fc2, 6, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpnless", 2, 0xf30fc2, 6, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpnltps", 2, 0x0fc2, 5, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpnltss", 2, 0xf30fc2, 5, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpordps", 2, 0x0fc2, 7, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpordss", 2, 0xf30fc2, 7, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpunordps",2, 0x0fc2, 3, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
-{"cmpunordss",2, 0xf30fc2, 3, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
-{"cmpps", 3, 0x0fc2, X, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
-{"cmpss", 3, 0xf30fc2, X, FP|Modrm, { Imm8, RegXMM|WordMem, RegXMM } },
-{"comiss", 2, 0x0f2f, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"cvtpi2ps", 2, 0x0f2a, X, FP|Modrm, { RegMMX|LLongMem, RegXMM, 0 } },
-{"cvtps2pi", 2, 0x0f2d, X, FP|Modrm, { RegXMM|LLongMem, RegMMX, 0 } },
-{"cvtsi2ss", 2, 0xf30f2a, X, FP|Modrm, { Reg32|WordMem, RegXMM, 0 } },
-{"cvtss2si", 2, 0xf30f2d, X, FP|Modrm, { RegXMM|WordMem, Reg32, 0 } },
-{"cvttps2pi", 2, 0x0f2c, X, FP|Modrm, { RegXMM|LLongMem, RegMMX, 0 } },
-{"cvttss2si", 2, 0xf30f2c, X, FP|Modrm, { RegXMM|WordMem, Reg32, 0 } },
-{"divps", 2, 0x0f5e, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"divss", 2, 0xf30f5e, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"ldmxcsr", 1, 0x0fae, 2, FP|Modrm, { WordMem, 0, 0 } },
-{"maskmovq", 2, 0x0ff7, X, FP|Modrm, { RegMMX|InvMem, RegMMX, 0 } },
-{"maxps", 2, 0x0f5f, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"maxss", 2, 0xf30f5f, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"minps", 2, 0x0f5d, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"minss", 2, 0xf30f5d, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"movaps", 2, 0x0f28, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"movaps", 2, 0x0f29, X, FP|Modrm, { RegXMM, RegXMM|LLongMem, 0 } },
-{"movhlps", 2, 0x0f12, X, FP|Modrm, { RegXMM|InvMem, RegXMM, 0 } },
-{"movhps", 2, 0x0f16, X, FP|Modrm, { LLongMem, RegXMM, 0 } },
-{"movhps", 2, 0x0f17, X, FP|Modrm, { RegXMM, LLongMem, 0 } },
-{"movlhps", 2, 0x0f16, X, FP|Modrm, { RegXMM|InvMem, RegXMM, 0 } },
-{"movlps", 2, 0x0f12, X, FP|Modrm, { LLongMem, RegXMM, 0 } },
-{"movlps", 2, 0x0f13, X, FP|Modrm, { RegXMM, LLongMem, 0 } },
-{"movmskps", 2, 0x0f50, X, FP|Modrm, { RegXMM|InvMem, Reg32, 0 } },
-{"movntps", 2, 0x0f2b, X, FP|Modrm, { RegXMM, LLongMem, 0 } },
-{"movntq", 2, 0x0fe7, X, FP|Modrm, { RegMMX, LLongMem, 0 } },
-{"movss", 2, 0xf30f10, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"movss", 2, 0xf30f11, X, FP|Modrm, { RegXMM, RegXMM|WordMem, 0 } },
-{"movups", 2, 0x0f10, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"movups", 2, 0x0f11, X, FP|Modrm, { RegXMM, RegXMM|LLongMem, 0 } },
-{"mulps", 2, 0x0f59, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"mulss", 2, 0xf30f59, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"orps", 2, 0x0f56, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"pavgb", 2, 0x0fe0, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pavgw", 2, 0x0fe3, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pextrw", 3, 0x0fc5, X, FP|Modrm, { Imm8, RegMMX, Reg32|InvMem } },
-{"pinsrw", 3, 0x0fc4, X, FP|Modrm, { Imm8, Reg32|ShortMem, RegMMX } },
-{"pmaxsw", 2, 0x0fee, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pmaxub", 2, 0x0fde, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pminsw", 2, 0x0fea, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pminub", 2, 0x0fda, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pmovmskb", 2, 0x0fd7, X, FP|Modrm, { RegMMX, Reg32|InvMem, 0 } },
-{"pmulhuw", 2, 0x0fe4, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"prefetchnta", 1, 0x0f18, 0, FP|Modrm, { LLongMem, 0, 0 } },
-{"prefetcht0", 1, 0x0f18, 1, FP|Modrm, { LLongMem, 0, 0 } },
-{"prefetcht1", 1, 0x0f18, 2, FP|Modrm, { LLongMem, 0, 0 } },
-{"prefetcht2", 1, 0x0f18, 3, FP|Modrm, { LLongMem, 0, 0 } },
-{"psadbw", 2, 0x0ff6, X, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
-{"pshufw", 3, 0x0f70, X, FP|Modrm, { Imm8, RegMMX|LLongMem, RegMMX } },
-{"rcpps", 2, 0x0f53, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"rcpss", 2, 0xf30f53, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"rsqrtps", 2, 0x0f52, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"rsqrtss", 2, 0xf30f52, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"sfence", 0, 0x0faef8, X, FP, { 0, 0, 0 } },
-{"shufps", 3, 0x0fc6, X, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
-{"sqrtps", 2, 0x0f51, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"sqrtss", 2, 0xf30f51, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"stmxcsr", 1, 0x0fae, 3, FP|Modrm, { WordMem, 0, 0 } },
-{"subps", 2, 0x0f5c, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"subss", 2, 0xf30f5c, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"ucomiss", 2, 0x0f2e, X, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
-{"unpckhps", 2, 0x0f15, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"unpcklps", 2, 0x0f14, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
-{"xorps", 2, 0x0f57, X, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"addps", 2, 0x0f58, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"addss", 2, 0xf30f58, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"andnps", 2, 0x0f55, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"andps", 2, 0x0f54, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpeqps", 2, 0x0fc2, 0, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpeqss", 2, 0xf30fc2, 0, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpleps", 2, 0x0fc2, 2, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpless", 2, 0xf30fc2, 2, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpltps", 2, 0x0fc2, 1, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpltss", 2, 0xf30fc2, 1, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpneqps", 2, 0x0fc2, 4, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpneqss", 2, 0xf30fc2, 4, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpnleps", 2, 0x0fc2, 6, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpnless", 2, 0xf30fc2, 6, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpnltps", 2, 0x0fc2, 5, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpnltss", 2, 0xf30fc2, 5, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpordps", 2, 0x0fc2, 7, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpordss", 2, 0xf30fc2, 7, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpunordps",2, 0x0fc2, 3, CpuSSE, FP|Modrm|ImmExt, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpunordss",2, 0xf30fc2, 3, CpuSSE, FP|Modrm|ImmExt, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpps", 3, 0x0fc2, X, CpuSSE, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
+{"cmpss", 3, 0xf30fc2, X, CpuSSE, FP|Modrm, { Imm8, RegXMM|WordMem, RegXMM } },
+{"comiss", 2, 0x0f2f, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"cvtpi2ps", 2, 0x0f2a, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegXMM, 0 } },
+{"cvtps2pi", 2, 0x0f2d, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegMMX, 0 } },
+{"cvtsi2ss", 2, 0xf30f2a, X, CpuSSE, lq_Suf|IgnoreSize|Modrm,{ Reg32|Reg64|WordMem|LLongMem, RegXMM, 0 } },
+{"cvtss2si", 2, 0xf30f2d, X, CpuSSE, lq_Suf|IgnoreSize|Modrm,{ RegXMM|WordMem, Reg32|Reg64, 0 } },
+{"cvttps2pi", 2, 0x0f2c, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegMMX, 0 } },
+{"cvttss2si", 2, 0xf30f2c, X, CpuSSE, lq_Suf|IgnoreSize|Modrm, { RegXMM|WordMem, Reg32|Reg64, 0 } },
+{"divps", 2, 0x0f5e, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"divss", 2, 0xf30f5e, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"ldmxcsr", 1, 0x0fae, 2, CpuSSE, FP|Modrm, { WordMem, 0, 0 } },
+{"maskmovq", 2, 0x0ff7, X, CpuSSE, FP|Modrm, { RegMMX|InvMem, RegMMX, 0 } },
+{"maxps", 2, 0x0f5f, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"maxss", 2, 0xf30f5f, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"minps", 2, 0x0f5d, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"minss", 2, 0xf30f5d, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"movaps", 2, 0x0f28, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"movaps", 2, 0x0f29, X, CpuSSE, FP|Modrm, { RegXMM, RegXMM|LLongMem, 0 } },
+{"movhlps", 2, 0x0f12, X, CpuSSE, FP|Modrm, { RegXMM|InvMem, RegXMM, 0 } },
+{"movhps", 2, 0x0f16, X, CpuSSE, FP|Modrm, { LLongMem, RegXMM, 0 } },
+{"movhps", 2, 0x0f17, X, CpuSSE, FP|Modrm, { RegXMM, LLongMem, 0 } },
+{"movlhps", 2, 0x0f16, X, CpuSSE, FP|Modrm, { RegXMM|InvMem, RegXMM, 0 } },
+{"movlps", 2, 0x0f12, X, CpuSSE, FP|Modrm, { LLongMem, RegXMM, 0 } },
+{"movlps", 2, 0x0f13, X, CpuSSE, FP|Modrm, { RegXMM, LLongMem, 0 } },
+{"movmskps", 2, 0x0f50, X, CpuSSE, FP|Modrm, { RegXMM|InvMem, Reg32, 0 } },
+{"movntps", 2, 0x0f2b, X, CpuSSE, FP|Modrm, { RegXMM, LLongMem, 0 } },
+{"movntq", 2, 0x0fe7, X, CpuSSE, FP|Modrm, { RegMMX, LLongMem, 0 } },
+{"movntdq", 2, 0x660fe7, X, CpuSSE2,FP|Modrm, { RegXMM, LLongMem, 0 } },
+{"movss", 2, 0xf30f10, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"movss", 2, 0xf30f11, X, CpuSSE, FP|Modrm, { RegXMM, RegXMM|WordMem, 0 } },
+{"movups", 2, 0x0f10, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"movups", 2, 0x0f11, X, CpuSSE, FP|Modrm, { RegXMM, RegXMM|LLongMem, 0 } },
+{"mulps", 2, 0x0f59, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"mulss", 2, 0xf30f59, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"orps", 2, 0x0f56, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pavgb", 2, 0x0fe0, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pavgb", 2, 0x660fe0, X, CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pavgw", 2, 0x0fe3, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pavgw", 2, 0x660fe3, X, CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pextrw", 3, 0x0fc5, X, CpuSSE, FP|Modrm, { Imm8, RegMMX, Reg32|InvMem } },
+{"pextrw", 3, 0x660fc5, X, CpuSSE2,FP|Modrm, { Imm8, RegXMM, Reg32|InvMem } },
+{"pinsrw", 3, 0x0fc4, X, CpuSSE, FP|Modrm, { Imm8, Reg32|ShortMem, RegMMX } },
+{"pinsrw", 3, 0x660fc4, X, CpuSSE2, FP|Modrm, { Imm8, Reg32|ShortMem, RegXMM } },
+{"pmaxsw", 2, 0x0fee, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pmaxsw", 2, 0x660fee, X, CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pmaxub", 2, 0x0fde, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pmaxub", 2, 0x660fde, X, CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pminsw", 2, 0x0fea, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pminsw", 2, 0x660fea, X, CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pminub", 2, 0x0fda, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pminub", 2, 0x660fda, X, CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pmovmskb", 2, 0x0fd7, X, CpuSSE, FP|Modrm, { RegMMX, Reg32|InvMem, 0 } },
+{"pmovmskb", 2, 0x660fd7, X, CpuSSE2,FP|Modrm, { RegXMM, Reg32|InvMem, 0 } },
+{"pmulhuw", 2, 0x0fe4, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"pmulhuw", 2, 0x660fe4, X, CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"prefetchnta", 1, 0x0f18, 0, CpuSSE, FP|Modrm, { LLongMem, 0, 0 } },
+{"prefetcht0", 1, 0x0f18, 1, CpuSSE, FP|Modrm, { LLongMem, 0, 0 } },
+{"prefetcht1", 1, 0x0f18, 2, CpuSSE, FP|Modrm, { LLongMem, 0, 0 } },
+{"prefetcht2", 1, 0x0f18, 3, CpuSSE, FP|Modrm, { LLongMem, 0, 0 } },
+{"psadbw", 2, 0x0ff6, X, CpuSSE, FP|Modrm, { RegMMX|LLongMem, RegMMX, 0 } },
+{"psadbw", 2, 0x660ff6, X, CpuSSE2,FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"pshufw", 3, 0x0f70, X, CpuSSE, FP|Modrm, { Imm8, RegMMX|LLongMem, RegMMX } },
+{"rcpps", 2, 0x0f53, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"rcpss", 2, 0xf30f53, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"rsqrtps", 2, 0x0f52, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"rsqrtss", 2, 0xf30f52, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"sfence", 0, 0x0fae, 0xf8, CpuSSE, FP|ImmExt, { 0, 0, 0 } },
+{"shufps", 3, 0x0fc6, X, CpuSSE, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
+{"sqrtps", 2, 0x0f51, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"sqrtss", 2, 0xf30f51, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"stmxcsr", 1, 0x0fae, 3, CpuSSE, FP|Modrm, { WordMem, 0, 0 } },
+{"subps", 2, 0x0f5c, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"subss", 2, 0xf30f5c, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"ucomiss", 2, 0x0f2e, X, CpuSSE, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"unpckhps", 2, 0x0f15, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"unpcklps", 2, 0x0f14, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"xorps", 2, 0x0f57, X, CpuSSE, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+
+/* SSE-2 instructions. */
+
+{"addpd", 2, 0x660f58, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"addsd", 2, 0xf20f58, X, CpuSSE2, FP|Modrm, { RegXMM|LongMem, RegXMM, 0 } },
+{"andnpd", 2, 0x660f55, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"andpd", 2, 0x660f54, X, CpuSSE2, FP|Modrm, { RegXMM|WordMem, RegXMM, 0 } },
+{"cmpeqpd", 2, 0x660fc2, 0, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpeqsd", 2, 0xf20fc2, 0, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LongMem, RegXMM, 0 } },
+{"cmplepd", 2, 0x660fc2, 2, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LLongMem, RegXMM, 0 } },
+{"cmplesd", 2, 0xf20fc2, 2, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LongMem, RegXMM, 0 } },
+{"cmpltpd", 2, 0x660fc2, 1, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpltsd", 2, 0xf20fc2, 1, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LongMem, RegXMM, 0 } },
+{"cmpneqpd", 2, 0x660fc2, 4, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpneqsd", 2, 0xf20fc2, 4, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LongMem, RegXMM, 0 } },
+{"cmpnlepd", 2, 0x660fc2, 6, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpnlesd", 2, 0xf20fc2, 6, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LongMem, RegXMM, 0 } },
+{"cmpnltpd", 2, 0x660fc2, 5, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpnltsd", 2, 0xf20fc2, 5, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LongMem, RegXMM, 0 } },
+{"cmpordpd", 2, 0x660fc2, 7, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpordsd", 2, 0xf20fc2, 7, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LongMem, RegXMM, 0 } },
+{"cmpunordpd",2, 0x660fc2, 3, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LLongMem, RegXMM, 0 } },
+{"cmpunordsd",2, 0xf20fc2, 3, CpuSSE2, FP|Modrm|ImmExt,{ RegXMM|LongMem, RegXMM, 0 } },
+{"cmppd", 3, 0x660fc2, X, CpuSSE2, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
+{"cmpsd", 3, 0xf20fc2, X, CpuSSE2, FP|Modrm, { Imm8, RegXMM|LongMem, RegXMM } },
+{"comisd", 2, 0x660f2f, X, CpuSSE2, FP|Modrm, { RegXMM|LongMem, RegXMM, 0 } },
+{"cvtpi2pd", 2, 0x660f2a, X, CpuSSE2, FP|Modrm, { RegMMX|LLongMem, RegXMM, 0 } },
+{"cvtsi2sd", 2, 0xf20f2a, X, CpuSSE2, lq_Suf|IgnoreSize|Modrm,{ Reg32|Reg64|WordMem|LLongMem, RegXMM, 0 } },
+{"divpd", 2, 0x660f5e, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"divsd", 2, 0xf20f5e, X, CpuSSE2, FP|Modrm, { RegXMM|LongMem, RegXMM, 0 } },
+{"maxpd", 2, 0x660f5f, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"maxsd", 2, 0xf20f5f, X, CpuSSE2, FP|Modrm, { RegXMM|LongMem, RegXMM, 0 } },
+{"minpd", 2, 0x660f5d, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"minsd", 2, 0xf20f5d, X, CpuSSE2, FP|Modrm, { RegXMM|LongMem, RegXMM, 0 } },
+{"movapd", 2, 0x660f28, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"movapd", 2, 0x660f29, X, CpuSSE2, FP|Modrm, { RegXMM, RegXMM|LLongMem, 0 } },
+{"movhpd", 2, 0x660f16, X, CpuSSE2, FP|Modrm, { LLongMem, RegXMM, 0 } },
+{"movhpd", 2, 0x660f17, X, CpuSSE2, FP|Modrm, { RegXMM, LLongMem, 0 } },
+{"movlpd", 2, 0x660f12, X, CpuSSE2, FP|Modrm, { LLongMem, RegXMM, 0 } },
+{"movlpd", 2, 0x660f13, X, CpuSSE2, FP|Modrm, { RegXMM, LLongMem, 0 } },
+{"movmskpd", 2, 0x660f50, X, CpuSSE2, FP|Modrm, { RegXMM|InvMem, Reg32, 0 } },
+{"movntpd", 2, 0x660f2b, X, CpuSSE2, FP|Modrm, { RegXMM, LLongMem, 0 } },
+{"movsd", 2, 0xf20f10, X, CpuSSE2, FP|Modrm, { RegXMM|LongMem, RegXMM, 0 } },
+{"movsd", 2, 0xf20f11, X, CpuSSE2, FP|Modrm, { RegXMM, RegXMM|LongMem, 0 } },
+{"movupd", 2, 0x660f10, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"movupd", 2, 0x660f11, X, CpuSSE2, FP|Modrm, { RegXMM, RegXMM|LLongMem, 0 } },
+{"mulpd", 2, 0x660f59, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"mulsd", 2, 0xf20f59, X, CpuSSE2, FP|Modrm, { RegXMM|LongMem, RegXMM, 0 } },
+{"orpd", 2, 0x660f56, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"shufpd", 3, 0x660fc6, X, CpuSSE2, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
+{"sqrtpd", 2, 0x660f51, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"sqrtsd", 2, 0xf20f51, X, CpuSSE2, FP|Modrm, { RegXMM|LongMem, RegXMM, 0 } },
+{"subpd", 2, 0x660f5c, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"subsd", 2, 0xf20f5c, X, CpuSSE2, FP|Modrm, { RegXMM|LongMem, RegXMM, 0 } },
+{"ucomisd", 2, 0x660f2e, X, CpuSSE2, FP|Modrm, { RegXMM|LongMem, RegXMM, 0 } },
+{"unpckhpd", 2, 0x660f15, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"unpcklpd", 2, 0x660f14, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"xorpd", 2, 0x660f57, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cvtdq2pd", 2, 0xf30fe6, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cvtpd2dq", 2, 0xf20fe6, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cvtdq2ps", 2, 0x0f5b, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cvtpd2pi", 2, 0x660f2d, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegMMX, 0 } },
+{"cvtpd2ps", 2, 0x660f5a, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cvtps2pd", 2, 0x0f5a, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cvtps2dq", 2, 0x660f5b, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegMMX, 0 } },
+{"cvtsd2si", 2, 0xf20f2d, X, CpuSSE2, lq_Suf|IgnoreSize|Modrm,{ RegXMM|LLongMem, Reg32|Reg64, 0 } },
+{"cvtsd2ss", 2, 0xf20f5a, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cvtss2sd", 2, 0xf30f5a, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cvttpd2pi", 2, 0x660f2c, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegMMX, 0 } },
+{"cvttsd2si", 2, 0xf20f2c, X, CpuSSE2, lq_Suf|IgnoreSize|Modrm,{ RegXMM|WordMem, Reg32|Reg64, 0 } },
+{"cvttpd2dq", 2, 0x660fe6, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"cvttps2dq", 2, 0xf30f5b, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"maskmovdqu",2, 0x660ff7, X, CpuSSE2, FP|Modrm, { RegXMM|InvMem, RegXMM, 0 } },
+{"movdqa", 2, 0x660f6f, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"movdqa", 2, 0x660f7f, X, CpuSSE2, FP|Modrm, { RegXMM, RegXMM|LLongMem, 0 } },
+{"movdqu", 2, 0xf30f6f, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"movdqu", 2, 0xf30f7f, X, CpuSSE2, FP|Modrm, { RegXMM, RegXMM|LLongMem, 0 } },
+{"movdq2q", 2, 0xf20fd6, X, CpuSSE2, FP|Modrm, { RegMMX|LLongMem, RegXMM, 0 } },
+{"movq2dq", 2, 0xf30fd6, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegMMX, 0 } },
+{"pmuludq", 2, 0x0ff4, X, CpuSSE2, FP|Modrm, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmuludq", 2, 0x660ff4, X, CpuSSE2, FP|Modrm, { RegXMM|LongMem, RegXMM, 0 } },
+{"pshufd", 3, 0x660f70, X, CpuSSE2, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
+{"pshufhw", 3, 0xf30f70, X, CpuSSE2, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
+{"pshuflw", 3, 0xf20f70, X, CpuSSE2, FP|Modrm, { Imm8, RegXMM|LLongMem, RegXMM } },
+{"pslldq", 2, 0x660f73, 7, CpuSSE2, FP|Modrm, { Imm8, RegXMM, 0 } },
+{"psrldq", 2, 0x660f73, 3, CpuSSE2, FP|Modrm, { Imm8, RegXMM, 0 } },
+{"punpckhqdq",2, 0x660f6d, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
+{"punpcklqdq",2, 0x660f6c, X, CpuSSE2, FP|Modrm, { RegXMM|LLongMem, RegXMM, 0 } },
/* AMD 3DNow! instructions. */
-{"prefetch", 1, 0x0f0d, 0, FP|Modrm, { ByteMem, 0, 0 } },
-{"prefetchw",1, 0x0f0d, 1, FP|Modrm, { ByteMem, 0, 0 } },
-{"femms", 0, 0x0f0e, X, FP, { 0, 0, 0 } },
-{"pavgusb", 2, 0x0f0f, 0xbf, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pf2id", 2, 0x0f0f, 0x1d, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pf2iw", 2, 0x0f0f, 0x1c, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
-{"pfacc", 2, 0x0f0f, 0xae, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfadd", 2, 0x0f0f, 0x9e, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfcmpeq", 2, 0x0f0f, 0xb0, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfcmpge", 2, 0x0f0f, 0x90, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfcmpgt", 2, 0x0f0f, 0xa0, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfmax", 2, 0x0f0f, 0xa4, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfmin", 2, 0x0f0f, 0x94, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfmul", 2, 0x0f0f, 0xb4, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfnacc", 2, 0x0f0f, 0x8a, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
-{"pfpnacc", 2, 0x0f0f, 0x8e, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
-{"pfrcp", 2, 0x0f0f, 0x96, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfrcpit1", 2, 0x0f0f, 0xa6, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfrcpit2", 2, 0x0f0f, 0xb6, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfrsqit1", 2, 0x0f0f, 0xa7, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfrsqrt", 2, 0x0f0f, 0x97, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfsub", 2, 0x0f0f, 0x9a, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pfsubr", 2, 0x0f0f, 0xaa, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pi2fd", 2, 0x0f0f, 0x0d, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pi2fw", 2, 0x0f0f, 0x0c, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
-{"pmulhrw", 2, 0x0f0f, 0xb7, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
-{"pswapd", 2, 0x0f0f, 0xbb, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } }, /* Athlon */
+{"prefetch", 1, 0x0f0d, 0, Cpu3dnow, FP|Modrm, { ByteMem, 0, 0 } },
+{"prefetchw",1, 0x0f0d, 1, Cpu3dnow, FP|Modrm, { ByteMem, 0, 0 } },
+{"femms", 0, 0x0f0e, X, Cpu3dnow, FP, { 0, 0, 0 } },
+{"pavgusb", 2, 0x0f0f, 0xbf, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pf2id", 2, 0x0f0f, 0x1d, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pf2iw", 2, 0x0f0f, 0x1c, Cpu3dnow|Cpu686, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfacc", 2, 0x0f0f, 0xae, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfadd", 2, 0x0f0f, 0x9e, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfcmpeq", 2, 0x0f0f, 0xb0, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfcmpge", 2, 0x0f0f, 0x90, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfcmpgt", 2, 0x0f0f, 0xa0, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfmax", 2, 0x0f0f, 0xa4, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfmin", 2, 0x0f0f, 0x94, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfmul", 2, 0x0f0f, 0xb4, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfnacc", 2, 0x0f0f, 0x8a, Cpu3dnow|Cpu686, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfpnacc", 2, 0x0f0f, 0x8e, Cpu3dnow|Cpu686, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfrcp", 2, 0x0f0f, 0x96, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfrcpit1", 2, 0x0f0f, 0xa6, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfrcpit2", 2, 0x0f0f, 0xb6, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfrsqit1", 2, 0x0f0f, 0xa7, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfrsqrt", 2, 0x0f0f, 0x97, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfsub", 2, 0x0f0f, 0x9a, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pfsubr", 2, 0x0f0f, 0xaa, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pi2fd", 2, 0x0f0f, 0x0d, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pi2fw", 2, 0x0f0f, 0x0c, Cpu3dnow|Cpu686, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pmulhrw", 2, 0x0f0f, 0xb7, Cpu3dnow, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+{"pswapd", 2, 0x0f0f, 0xbb, Cpu3dnow|Cpu686, FP|Modrm|ImmExt, { RegMMX|LongMem, RegMMX, 0 } },
+
+/* AMD extensions. */
+{"syscall", 0, 0x0f05, X, CpuK6, NoSuf, { 0, 0, 0} },
+{"sysret", 0, 0x0f07, X, CpuK6, lq_Suf|DefaultSize, { 0, 0, 0} },
+{"swapgs", 0, 0x0f01, 0xf8, Cpu64, NoSuf|ImmExt, { 0, 0, 0} },
/* sentinel */
-{NULL, 0, 0, 0, 0, { 0, 0, 0} }
+{NULL, 0, 0, 0, 0, 0, { 0, 0, 0} }
};
#undef X
#undef NoSuf
#undef b_Suf
#undef w_Suf
#undef l_Suf
-#undef d_Suf
+#undef q_Suf
#undef x_Suf
#undef bw_Suf
#undef bl_Suf
#undef wl_Suf
-#undef wld_Suf
+#undef wlq_Suf
#undef sl_Suf
-#undef sld_Suf
-#undef sldx_Suf
#undef bwl_Suf
-#undef bwld_Suf
+#undef bwlq_Suf
#undef FP
#undef l_FP
-#undef d_FP
#undef x_FP
#undef sl_FP
-#undef sld_FP
-#undef sldx_FP
#define MAX_MNEM_SIZE 16 /* for parsing insn mnemonics from input */
@@ -1098,104 +1343,190 @@ static const template i386_optab[] = {
static const reg_entry i386_regtab[] = {
/* make %st first as we test for it */
- {"st", FloatReg|FloatAcc, 0},
+ {"st", FloatReg|FloatAcc, 0, 0},
/* 8 bit regs */
- {"al", Reg8|Acc, 0},
- {"cl", Reg8|ShiftCount, 1},
- {"dl", Reg8, 2},
- {"bl", Reg8, 3},
- {"ah", Reg8, 4},
- {"ch", Reg8, 5},
- {"dh", Reg8, 6},
- {"bh", Reg8, 7},
+#define REGNAM_AL 1 /* Entry in i386_regtab. */
+ {"al", Reg8|Acc, 0, 0},
+ {"cl", Reg8|ShiftCount, 0, 1},
+ {"dl", Reg8, 0, 2},
+ {"bl", Reg8, 0, 3},
+ {"ah", Reg8, 0, 4},
+ {"ch", Reg8, 0, 5},
+ {"dh", Reg8, 0, 6},
+ {"bh", Reg8, 0, 7},
+ {"axl", Reg8|Acc, RegRex64, 0}, /* Must be in the "al + 8" slot. */
+ {"cxl", Reg8, RegRex64, 1},
+ {"dxl", Reg8, RegRex64, 2},
+ {"bxl", Reg8, RegRex64, 3},
+ {"spl", Reg8, RegRex64, 4},
+ {"bpl", Reg8, RegRex64, 5},
+ {"sil", Reg8, RegRex64, 6},
+ {"dil", Reg8, RegRex64, 7},
+ {"r8b", Reg8, RegRex64|RegRex, 0},
+ {"r9b", Reg8, RegRex64|RegRex, 1},
+ {"r10b", Reg8, RegRex64|RegRex, 2},
+ {"r11b", Reg8, RegRex64|RegRex, 3},
+ {"r12b", Reg8, RegRex64|RegRex, 4},
+ {"r13b", Reg8, RegRex64|RegRex, 5},
+ {"r14b", Reg8, RegRex64|RegRex, 6},
+ {"r15b", Reg8, RegRex64|RegRex, 7},
/* 16 bit regs */
- {"ax", Reg16|Acc, 0},
- {"cx", Reg16, 1},
- {"dx", Reg16|InOutPortReg, 2},
- {"bx", Reg16|BaseIndex, 3},
- {"sp", Reg16, 4},
- {"bp", Reg16|BaseIndex, 5},
- {"si", Reg16|BaseIndex, 6},
- {"di", Reg16|BaseIndex, 7},
+#define REGNAM_AX 25
+ {"ax", Reg16|Acc, 0, 0},
+ {"cx", Reg16, 0, 1},
+ {"dx", Reg16|InOutPortReg, 0, 2},
+ {"bx", Reg16|BaseIndex, 0, 3},
+ {"sp", Reg16, 0, 4},
+ {"bp", Reg16|BaseIndex, 0, 5},
+ {"si", Reg16|BaseIndex, 0, 6},
+ {"di", Reg16|BaseIndex, 0, 7},
+ {"r8w", Reg16, RegRex, 0},
+ {"r9w", Reg16, RegRex, 1},
+ {"r10w", Reg16, RegRex, 2},
+ {"r11w", Reg16, RegRex, 3},
+ {"r12w", Reg16, RegRex, 4},
+ {"r13w", Reg16, RegRex, 5},
+ {"r14w", Reg16, RegRex, 6},
+ {"r15w", Reg16, RegRex, 7},
/* 32 bit regs */
- {"eax", Reg32|BaseIndex|Acc, 0},
- {"ecx", Reg32|BaseIndex, 1},
- {"edx", Reg32|BaseIndex, 2},
- {"ebx", Reg32|BaseIndex, 3},
- {"esp", Reg32, 4},
- {"ebp", Reg32|BaseIndex, 5},
- {"esi", Reg32|BaseIndex, 6},
- {"edi", Reg32|BaseIndex, 7},
+#define REGNAM_EAX 41
+ {"eax", Reg32|BaseIndex|Acc, 0, 0}, /* Must be in ax + 16 slot */
+ {"ecx", Reg32|BaseIndex, 0, 1},
+ {"edx", Reg32|BaseIndex, 0, 2},
+ {"ebx", Reg32|BaseIndex, 0, 3},
+ {"esp", Reg32, 0, 4},
+ {"ebp", Reg32|BaseIndex, 0, 5},
+ {"esi", Reg32|BaseIndex, 0, 6},
+ {"edi", Reg32|BaseIndex, 0, 7},
+ {"r8d", Reg32|BaseIndex, RegRex, 0},
+ {"r9d", Reg32|BaseIndex, RegRex, 1},
+ {"r10d", Reg32|BaseIndex, RegRex, 2},
+ {"r11d", Reg32|BaseIndex, RegRex, 3},
+ {"r12d", Reg32|BaseIndex, RegRex, 4},
+ {"r13d", Reg32|BaseIndex, RegRex, 5},
+ {"r14d", Reg32|BaseIndex, RegRex, 6},
+ {"r15d", Reg32|BaseIndex, RegRex, 7},
+ {"rax", Reg64|BaseIndex|Acc, 0, 0},
+ {"rcx", Reg64|BaseIndex, 0, 1},
+ {"rdx", Reg64|BaseIndex, 0, 2},
+ {"rbx", Reg64|BaseIndex, 0, 3},
+ {"rsp", Reg64, 0, 4},
+ {"rbp", Reg64|BaseIndex, 0, 5},
+ {"rsi", Reg64|BaseIndex, 0, 6},
+ {"rdi", Reg64|BaseIndex, 0, 7},
+ {"r8", Reg64|BaseIndex, RegRex, 0},
+ {"r9", Reg64|BaseIndex, RegRex, 1},
+ {"r10", Reg64|BaseIndex, RegRex, 2},
+ {"r11", Reg64|BaseIndex, RegRex, 3},
+ {"r12", Reg64|BaseIndex, RegRex, 4},
+ {"r13", Reg64|BaseIndex, RegRex, 5},
+ {"r14", Reg64|BaseIndex, RegRex, 6},
+ {"r15", Reg64|BaseIndex, RegRex, 7},
/* segment registers */
- {"es", SReg2, 0},
- {"cs", SReg2, 1},
- {"ss", SReg2, 2},
- {"ds", SReg2, 3},
- {"fs", SReg3, 4},
- {"gs", SReg3, 5},
+ {"es", SReg2, 0, 0},
+ {"cs", SReg2, 0, 1},
+ {"ss", SReg2, 0, 2},
+ {"ds", SReg2, 0, 3},
+ {"fs", SReg3, 0, 4},
+ {"gs", SReg3, 0, 5},
/* control registers */
- {"cr0", Control, 0},
- {"cr1", Control, 1},
- {"cr2", Control, 2},
- {"cr3", Control, 3},
- {"cr4", Control, 4},
- {"cr5", Control, 5},
- {"cr6", Control, 6},
- {"cr7", Control, 7},
+ {"cr0", Control, 0, 0},
+ {"cr1", Control, 0, 1},
+ {"cr2", Control, 0, 2},
+ {"cr3", Control, 0, 3},
+ {"cr4", Control, 0, 4},
+ {"cr5", Control, 0, 5},
+ {"cr6", Control, 0, 6},
+ {"cr7", Control, 0, 7},
+ {"cr8", Control, RegRex, 0},
+ {"cr9", Control, RegRex, 1},
+ {"cr10", Control, RegRex, 2},
+ {"cr11", Control, RegRex, 3},
+ {"cr12", Control, RegRex, 4},
+ {"cr13", Control, RegRex, 5},
+ {"cr14", Control, RegRex, 6},
+ {"cr15", Control, RegRex, 7},
/* debug registers */
- {"db0", Debug, 0},
- {"db1", Debug, 1},
- {"db2", Debug, 2},
- {"db3", Debug, 3},
- {"db4", Debug, 4},
- {"db5", Debug, 5},
- {"db6", Debug, 6},
- {"db7", Debug, 7},
- {"dr0", Debug, 0},
- {"dr1", Debug, 1},
- {"dr2", Debug, 2},
- {"dr3", Debug, 3},
- {"dr4", Debug, 4},
- {"dr5", Debug, 5},
- {"dr6", Debug, 6},
- {"dr7", Debug, 7},
+ {"db0", Debug, 0, 0},
+ {"db1", Debug, 0, 1},
+ {"db2", Debug, 0, 2},
+ {"db3", Debug, 0, 3},
+ {"db4", Debug, 0, 4},
+ {"db5", Debug, 0, 5},
+ {"db6", Debug, 0, 6},
+ {"db7", Debug, 0, 7},
+ {"db8", Debug, RegRex, 0},
+ {"db9", Debug, RegRex, 1},
+ {"db10", Debug, RegRex, 2},
+ {"db11", Debug, RegRex, 3},
+ {"db12", Debug, RegRex, 4},
+ {"db13", Debug, RegRex, 5},
+ {"db14", Debug, RegRex, 6},
+ {"db15", Debug, RegRex, 7},
+ {"dr0", Debug, 0, 0},
+ {"dr1", Debug, 0, 1},
+ {"dr2", Debug, 0, 2},
+ {"dr3", Debug, 0, 3},
+ {"dr4", Debug, 0, 4},
+ {"dr5", Debug, 0, 5},
+ {"dr6", Debug, 0, 6},
+ {"dr7", Debug, 0, 7},
+ {"dr8", Debug, RegRex, 0},
+ {"dr9", Debug, RegRex, 1},
+ {"dr10", Debug, RegRex, 2},
+ {"dr11", Debug, RegRex, 3},
+ {"dr12", Debug, RegRex, 4},
+ {"dr13", Debug, RegRex, 5},
+ {"dr14", Debug, RegRex, 6},
+ {"dr15", Debug, RegRex, 7},
/* test registers */
- {"tr0", Test, 0},
- {"tr1", Test, 1},
- {"tr2", Test, 2},
- {"tr3", Test, 3},
- {"tr4", Test, 4},
- {"tr5", Test, 5},
- {"tr6", Test, 6},
- {"tr7", Test, 7},
+ {"tr0", Test, 0, 0},
+ {"tr1", Test, 0, 1},
+ {"tr2", Test, 0, 2},
+ {"tr3", Test, 0, 3},
+ {"tr4", Test, 0, 4},
+ {"tr5", Test, 0, 5},
+ {"tr6", Test, 0, 6},
+ {"tr7", Test, 0, 7},
/* mmx and simd registers */
- {"mm0", RegMMX, 0},
- {"mm1", RegMMX, 1},
- {"mm2", RegMMX, 2},
- {"mm3", RegMMX, 3},
- {"mm4", RegMMX, 4},
- {"mm5", RegMMX, 5},
- {"mm6", RegMMX, 6},
- {"mm7", RegMMX, 7},
- {"xmm0", RegXMM, 0},
- {"xmm1", RegXMM, 1},
- {"xmm2", RegXMM, 2},
- {"xmm3", RegXMM, 3},
- {"xmm4", RegXMM, 4},
- {"xmm5", RegXMM, 5},
- {"xmm6", RegXMM, 6},
- {"xmm7", RegXMM, 7}
+ {"mm0", RegMMX, 0, 0},
+ {"mm1", RegMMX, 0, 1},
+ {"mm2", RegMMX, 0, 2},
+ {"mm3", RegMMX, 0, 3},
+ {"mm4", RegMMX, 0, 4},
+ {"mm5", RegMMX, 0, 5},
+ {"mm6", RegMMX, 0, 6},
+ {"mm7", RegMMX, 0, 7},
+ {"xmm0", RegXMM, 0, 0},
+ {"xmm1", RegXMM, 0, 1},
+ {"xmm2", RegXMM, 0, 2},
+ {"xmm3", RegXMM, 0, 3},
+ {"xmm4", RegXMM, 0, 4},
+ {"xmm5", RegXMM, 0, 5},
+ {"xmm6", RegXMM, 0, 6},
+ {"xmm7", RegXMM, 0, 7},
+ {"xmm8", RegXMM, RegRex, 0},
+ {"xmm9", RegXMM, RegRex, 1},
+ {"xmm10", RegXMM, RegRex, 2},
+ {"xmm11", RegXMM, RegRex, 3},
+ {"xmm12", RegXMM, RegRex, 4},
+ {"xmm13", RegXMM, RegRex, 5},
+ {"xmm14", RegXMM, RegRex, 6},
+ {"xmm15", RegXMM, RegRex, 7},
+ /* no type will make this register rejected for all purposes except
+ for addressing. This saves creating one extra type for RIP. */
+ {"rip", BaseIndex, 0, 0}
};
static const reg_entry i386_float_regtab[] = {
- {"st(0)", FloatReg|FloatAcc, 0},
- {"st(1)", FloatReg, 1},
- {"st(2)", FloatReg, 2},
- {"st(3)", FloatReg, 3},
- {"st(4)", FloatReg, 4},
- {"st(5)", FloatReg, 5},
- {"st(6)", FloatReg, 6},
- {"st(7)", FloatReg, 7}
+ {"st(0)", FloatReg|FloatAcc, 0, 0},
+ {"st(1)", FloatReg, 0, 1},
+ {"st(2)", FloatReg, 0, 2},
+ {"st(3)", FloatReg, 0, 3},
+ {"st(4)", FloatReg, 0, 4},
+ {"st(5)", FloatReg, 0, 5},
+ {"st(6)", FloatReg, 0, 6},
+ {"st(7)", FloatReg, 0, 7}
};
#define MAX_REG_NAME_SIZE 8 /* for parsing register names from input */
diff --git a/contrib/binutils/include/opcode/ppc.h b/contrib/binutils/include/opcode/ppc.h
index 974f0dfa..246e3c7 100644
--- a/contrib/binutils/include/opcode/ppc.h
+++ b/contrib/binutils/include/opcode/ppc.h
@@ -88,6 +88,9 @@ extern const int powerpc_num_opcodes;
/* Opcode is supported as part of the 64-bit bridge. */
#define PPC_OPCODE_64_BRIDGE (0400)
+/* Opcode is supported by Altivec Vector Unit */
+#define PPC_OPCODE_ALTIVEC (01000)
+
/* A macro to extract the major opcode from an instruction. */
#define PPC_OP(i) (((i) >> 26) & 0x3f)
@@ -221,6 +224,11 @@ extern const struct powerpc_operand powerpc_operands[];
number is allowed). This flag will only be set for a signed
operand. */
#define PPC_OPERAND_NEGATIVE (04000)
+
+/* This operand names a vector unit register. The disassembler
+ prints these with a leading 'v'. */
+#define PPC_OPERAND_VR (010000)
+
/* The POWER and PowerPC assemblers use a few macros. We keep them
with the operands table for simplicity. The macro table is an
diff --git a/contrib/binutils/include/opcode/sparc.h b/contrib/binutils/include/opcode/sparc.h
index 4f159bd..423cea7 100644
--- a/contrib/binutils/include/opcode/sparc.h
+++ b/contrib/binutils/include/opcode/sparc.h
@@ -1,5 +1,5 @@
/* Definitions for opcode table for the sparc.
- Copyright (C) 1989, 91, 92, 93, 94, 95, 96, 1997
+ Copyright (C) 1989, 91, 92, 93, 94, 95, 96, 97, 2000
Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler, GDB, the GNU debugger, and
@@ -46,6 +46,7 @@ enum sparc_opcode_arch_val {
/* v9 variants must appear last */
SPARC_OPCODE_ARCH_V9,
SPARC_OPCODE_ARCH_V9A, /* v9 with ultrasparc additions */
+ SPARC_OPCODE_ARCH_V9B, /* v9 with ultrasparc and cheetah additions */
SPARC_OPCODE_ARCH_BAD /* error return from sparc_opcode_lookup_arch */
};
@@ -141,6 +142,7 @@ Kinds of operands:
h 22 high bits.
X 5 bit unsigned immediate
Y 6 bit unsigned immediate
+ 3 SIAM mode (3 bits). (v9b)
K MEMBAR mask (7 bits). (v9)
j 10 bit Immediate. (v9)
I 11 bit Immediate. (v9)
@@ -187,7 +189,7 @@ Kinds of operands:
/ Ancillary state register in rs1 (v9a)
The following chars are unused: (note: ,[] are used as punctuation)
-[345]
+[45]
*/
diff --git a/contrib/binutils/include/safe-ctype.h b/contrib/binutils/include/safe-ctype.h
new file mode 100644
index 0000000..d5fc649
--- /dev/null
+++ b/contrib/binutils/include/safe-ctype.h
@@ -0,0 +1,100 @@
+/* <ctype.h> replacement macros.
+
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ Contributed by Zack Weinberg <zackw@stanford.edu>.
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* This is a compatible replacement of the standard C library's <ctype.h>
+ with the following properties:
+
+ - Implements all isxxx() macros required by C99.
+ - Also implements some character classes useful when
+ parsing C-like languages.
+ - Does not change behavior depending on the current locale.
+ - Behaves properly for all values in the range of a signed or
+ unsigned char.
+
+ To avoid conflicts, this header defines the isxxx functions in upper
+ case, e.g. ISALPHA not isalpha. */
+
+#ifndef SAFE_CTYPE_H
+#define SAFE_CTYPE_H
+
+#ifdef isalpha
+ #error "safe-ctype.h and ctype.h may not be used simultaneously"
+#else
+
+/* Categories. */
+
+enum {
+ /* In C99 */
+ _sch_isblank = 0x0001, /* space \t */
+ _sch_iscntrl = 0x0002, /* nonprinting characters */
+ _sch_isdigit = 0x0004, /* 0-9 */
+ _sch_islower = 0x0008, /* a-z */
+ _sch_isprint = 0x0010, /* any printing character including ' ' */
+ _sch_ispunct = 0x0020, /* all punctuation */
+ _sch_isspace = 0x0040, /* space \t \n \r \f \v */
+ _sch_isupper = 0x0080, /* A-Z */
+ _sch_isxdigit = 0x0100, /* 0-9A-Fa-f */
+
+ /* Extra categories useful to cpplib. */
+ _sch_isidst = 0x0200, /* A-Za-z_ */
+ _sch_isvsp = 0x0400, /* \n \r */
+ _sch_isnvsp = 0x0800, /* space \t \f \v \0 */
+
+ /* Combinations of the above. */
+ _sch_isalpha = _sch_isupper|_sch_islower, /* A-Za-z */
+ _sch_isalnum = _sch_isalpha|_sch_isdigit, /* A-Za-z0-9 */
+ _sch_isidnum = _sch_isidst|_sch_isdigit, /* A-Za-z0-9_ */
+ _sch_isgraph = _sch_isalnum|_sch_ispunct, /* isprint and not space */
+ _sch_iscppsp = _sch_isvsp|_sch_isnvsp /* isspace + \0 */
+};
+
+/* Character classification. */
+extern const unsigned short _sch_istable[256];
+
+#define _sch_test(c, bit) (_sch_istable[(c) & 0xff] & (bit))
+
+#define ISALPHA(c) _sch_test(c, _sch_isalpha)
+#define ISALNUM(c) _sch_test(c, _sch_isalnum)
+#define ISBLANK(c) _sch_test(c, _sch_isblank)
+#define ISCNTRL(c) _sch_test(c, _sch_iscntrl)
+#define ISDIGIT(c) _sch_test(c, _sch_isdigit)
+#define ISGRAPH(c) _sch_test(c, _sch_isgraph)
+#define ISLOWER(c) _sch_test(c, _sch_islower)
+#define ISPRINT(c) _sch_test(c, _sch_isprint)
+#define ISPUNCT(c) _sch_test(c, _sch_ispunct)
+#define ISSPACE(c) _sch_test(c, _sch_isspace)
+#define ISUPPER(c) _sch_test(c, _sch_isupper)
+#define ISXDIGIT(c) _sch_test(c, _sch_isxdigit)
+
+#define ISIDNUM(c) _sch_test(c, _sch_isidnum)
+#define ISIDST(c) _sch_test(c, _sch_isidst)
+#define IS_VSPACE(c) _sch_test(c, _sch_isvsp)
+#define IS_NVSPACE(c) _sch_test(c, _sch_isnvsp)
+#define IS_SPACE_OR_NUL(c) _sch_test(c, _sch_iscppsp)
+
+/* Character transformation. */
+extern const unsigned char _sch_toupper[256];
+extern const unsigned char _sch_tolower[256];
+#define TOUPPER(c) _sch_toupper[(c) & 0xff]
+#define TOLOWER(c) _sch_tolower[(c) & 0xff]
+
+#endif /* no ctype.h */
+#endif /* SAFE_CTYPE_H */
diff --git a/contrib/binutils/include/sort.h b/contrib/binutils/include/sort.h
new file mode 100644
index 0000000..c8e1d55
--- /dev/null
+++ b/contrib/binutils/include/sort.h
@@ -0,0 +1,48 @@
+/* Sorting algorithms.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ Contributed by Mark Mitchell <mark@codesourcery.com>.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#ifndef SORT_H
+#define SORT_H
+
+#include <sys/types.h> /* For size_t */
+#ifdef __STDC__
+#include <stddef.h>
+#endif /* __STDC__ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#include <ansidecl.h>
+
+/* Sort an array of pointers. */
+
+extern void sort_pointers PARAMS ((size_t, void **, void **));
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* SORT_H */
+
+
+
+
diff --git a/contrib/binutils/include/splay-tree.h b/contrib/binutils/include/splay-tree.h
index 6d70c8d..f53f855 100644
--- a/contrib/binutils/include/splay-tree.h
+++ b/contrib/binutils/include/splay-tree.h
@@ -1,5 +1,5 @@
/* A splay-tree datatype.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2000 Free Software Foundation, Inc.
Contributed by Mark Mitchell (mark@markmitchell.com).
This file is part of GNU CC.
@@ -99,9 +99,17 @@ extern splay_tree_node splay_tree_insert
PARAMS((splay_tree,
splay_tree_key,
splay_tree_value));
+extern void splay_tree_remove PARAMS((splay_tree,
+ splay_tree_key));
extern splay_tree_node splay_tree_lookup
PARAMS((splay_tree,
splay_tree_key));
+extern splay_tree_node splay_tree_predecessor
+ PARAMS((splay_tree,
+ splay_tree_key));
+extern splay_tree_node splay_tree_successor
+ PARAMS((splay_tree,
+ splay_tree_key));
extern int splay_tree_foreach PARAMS((splay_tree,
splay_tree_foreach_fn,
void*));
diff --git a/contrib/binutils/include/symcat.h b/contrib/binutils/include/symcat.h
index 3e27162..61ce1e9 100644
--- a/contrib/binutils/include/symcat.h
+++ b/contrib/binutils/include/symcat.h
@@ -19,12 +19,16 @@
#ifndef SYM_CAT_H
#define SYM_CAT_H
-#if defined (__STDC__) || defined (ALMOST_STDC)
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
#define CONCAT2(a,b) a##b
#define CONCAT3(a,b,c) a##b##c
#define CONCAT4(a,b,c,d) a##b##c##d
#define STRINGX(s) #s
#else
+/* Note one should never pass extra whitespace to the CONCATn macros,
+ e.g. CONCAT2(foo, bar) because traditonal C will keep the space between
+ the two labels instead of concatenating them. Instead, make sure to
+ write CONCAT2(foo,bar). */
#define CONCAT2(a,b) a/**/b
#define CONCAT3(a,b,c) a/**/b/**/c
#define CONCAT4(a,b,c,d) a/**/b/**/c/**/d
@@ -35,6 +39,11 @@
#define XCONCAT3(a,b,c) CONCAT3(a,b,c)
#define XCONCAT4(a,b,c,d) CONCAT4(a,b,c,d)
+/* Note the layer of indirection here is typically used to allow
+ stringification of the expansion of macros. I.e. "#define foo
+ bar", "XSTRING(foo)", to yield "bar". Be aware that this only
+ works for __STDC__, not for traditional C which will still resolve
+ to "foo". */
#define XSTRING(s) STRINGX(s)
-#endif SYM_CAT_H
+#endif /* SYM_CAT_H */
diff --git a/contrib/binutils/ld/ChangeLog b/contrib/binutils/ld/ChangeLog
index 39a6b79..a964658 100644
--- a/contrib/binutils/ld/ChangeLog
+++ b/contrib/binutils/ld/ChangeLog
@@ -1,10116 +1,1720 @@
-2000-11-06 Alan Modra <alan@linuxcare.com.au>
+2001-04-02 Alan Modra <alan@linuxcare.com.au>
- Merge most place_orphan changes from mainline.
- 2000-09-07 Alan Modra <alan@linuxcare.com.au>
- * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Fix
- broken list handling. Create __start_SECNAME and __stop_SECNAME
- when no place-holder. Add some comments. Test both SEC_CODE and
- SEC_READONLY for hold_text to prevent .rodata orphan poisoning.
- Handle case where no output section statement created.
-
- 2000-09-06 Alan Modra <alan@linuxcare.com.au>
- * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Don't
- try shuffling sections when the orphan happens to be the place
- holder. Keep count of unique section names generated so we speed
- the search for a new name.
-
- 2000-04-25 Alan Modra <alan@linuxcare.com.au>
- * emultempl/elf32.em (gld${EMULATION_NAME}_place_section): Delete.
- (output_rel_find): New function.
- (hold_section, hold_use): Delete.
- (hold_text, hold_rodata, hold_data, hold_bss, hold_rel,
- hold_interp): Make local to place_orphan.
- (gld${EMULATION_NAME}_place_orphan): Use lang_output_section_find
- rather than place_section to find possible previous use of orphan.
- Similarly find the place-holder output sections. Use returned
- value from lang_enter_output_section_statement rather than calling
- lang_output_section_statement_lookup.
- * ldlang.c (lang_enter_output_section_statement): Return output
- section statement.
- * ldlang.h (lang_enter_output_section_statement): Change
- declaration too.
- * ldlang.h (lang_output_section_statement): Export it.
- * ldlang.c (lang_output_section_statement): Ditto.
+ * emulparams/hppalinux.sh (MAXPAGESIZE): Set to 64k.
+ (TEXT_START_ADDR, TARGET_PAGE_SIZE): Likewise.
- 2000-04-18 H.J. Lu <hjl@gnu.org>
- * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Call
- lang_leave_output_section_statement () after calling
- lang_enter_output_section_statement ().
-
- 2000-04-18 Alan Modra <alan@linuxcare.com.au>
- * emultempl/elf32.em (struct orphan_save): Add section field.
- (gld${EMULATION_NAME}_place_orphan): Use above to keep sections in
- better order, and place first orphan section as we did before the
- 2000-04-12 patch. Ignore ~SEC_ALLOC sections when choosing place.
- Don't call make_bfd_section here, let wild_doit do the job for us.
- Don't build a statement list when we'll only throw it away.
+2001-03-27 Hans-Peter Nilsson <hp@axis.com>
- 2000-04-14 Alan Modra <alan@linuxcare.com.au>
- * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Process
- ~SEC_ALLOC sections too. Init start address of debug sections.
+ * configure.tgt (cris-*-*): Change default emulation to criself.
+ (cris-*-*aout*): New rule.
- 2000-04-12 Alan Modra <alan@linuxcare.com.au>
- * emultempl/elf32.em (struct orphan_save): New.
- (hold_text, hold_rodata, hold_data, hold_bss, hold_rel,
- hold_interp): Make them struct orphan_save.
- (gld${EMULATION_NAME}_place_section): Modify for new hold_*.
- (gld${EMULATION_NAME}_place_orphan): Add new orphan sections to
- the end of the relevant section list. Also add associated section
- statements to the end of any previous orphan statements.
+2001-03-27 Matthew Wilcox <willy@ldl.fc.hp.com>
-2000-11-05 Alan Modra <alan@linuxcare.com.au>
+ * emulparams/hppalinux.sh (MAXPAGESIZE): Set to 0x4000.
+ (TEXT_START_ADDR, TARGET_PAGE_SIZE): Ditto.
- * ldlex.l (yy_create_string_buffer): Init yy_is_our_buffer,
- yy_is_interactive, yy_at_bol, and yy_fill_buffer.
- * ldlex.c: Regenerate.
+2001-03-17 Ulrich Drepper <drepper@redhat.com>
- * Makefile.am (DISTCLEANFILES): Add stringify.sed.
- * Makefile.in: Regenerate.
+ * emultmpl/elf32.em (gld${EMULATION_NAME}_search_needed): If NAME
+ is an absolute path look only for this file and not along the path.
-2000-10-16 Philip Blundell <pb@futuretv.com>
+2001-03-16 Philip Blundell <philb@gnu.org>
- * configure.in: Set version number to 2.10.1.
* configure: Regenerate.
-2000-10-12 Peter Jeremy <peter.jeremy@alcatel.com.au>
-
- From 2000-08-08 Peter Jeremy <peter.jeremy@alcatel.com.au>
- * emultempl/elf32.em (_after_close): Refer to -rpath not --rpath
- in error message.
-
-2000-04-14 Matthew Green <mrg@cygnus.com>
-
- * configure.tgt: Add NetBSD/sparc ELF, and NetBSD/sparc64 support.
-
-2000-06-07 Michael Sokolov <msokolov@ivan.Harhan.ORG>
-
- * emultempl/mipsecoff.em (gld{EMULATION_NAME}_after_open): Require all
- input objects to be ECOFF.
- (check_sections): einfo takes %B, not %P, to print a BFD name.
-
-2000-07-31 Rodney Brown <RodneyBrown@pmsc.com>
-
- * configure.tgt: Select targ_emul=elf_i386 for Unixware 7
- (i586-sco-sysv5uw7.1.0).
-
-2000-06-18 Alan Modra <alan@linuxcare.com.au>
-
- * NEWS: Update list of targets supporting --gc-sections.
+2001-03-11 Philip Blundell <philb@gnu.org>
- * scripttempl/elf.sc: KEEP .eh_frame contents.
- * scripttempl/elfd30v.sc: Same here.
+ * configure.in: Set version to 2.11.
-2000-05-22 David O'Brien <obrien@FreeBSD.org>
+2001-03-05 Alan Modra <alan@linuxcare.com.au>
- * configure.tgt: Recognize alpha-*-freebsd*.
-
-2000-05-26 Eli Zaretskii <eliz@is.elta.co.il>
-
- * ldmain.c: Include filenames.h.
- (set_scripts_dir): Support backslashes in program name.
+ * emultempl/m68kelf.em (m68k_elf_after_allocation): Call
+ after_allocation_default, not gld..._before_allocation.
-2000-05-23 Philip Blundell <pb@futuretv.com>
+001-02-18 David O'Brien <obrien@FreeBSD.org>
- * configure.in: Set version to 2.10.
- * configure: Regenerate.
+ * configure.tgt: Add FreeBSD/Alpha, FreeBSD/x86-64, FreeBSD/ia64,
+ FreeBSD/PowerPC, FreeBSD/arm, and FreeBSD/sparc64 entries.
-2000-05-15 David O'Brien <obrien@FreeBSD.org>
+2001-02-17 David O'Brien <obrien@FreeBSD.org>
- * lexsup.c (parse_args): Update the year in the copyright notice.
+ * configure.host: Add a generic FreeBSD configuration entry such that
+ all [modern] FreeBSD systems on all platforms will look the same.
-2000-05-13 Philip Blundell <pb@futuretv.com>
+2001-02-13 Richard Henderson <rth@redhat.com>
- From Joel Sherrill <joel@OARcorp.com>:
- * configure.tgt (sparc-*-rtemsaout*, sparc-*-rtemself*): New.
- (sparc-*-rtems*): Use ELF.
- (i960-*-rtemself*, i960-*-rtemscoff*): New.
- (i[3456]86-*-rtemscoff*): New.
- (i[3456]86-*-rtems*): Use ELF.
- (sh-*-rtemscoff*): New.
- (m68*-*-rtemscoff*, m68*-*-rtemself): New.
- (m68*-*-rtems*): Use ELF.
+ * emulparams/elf64_ia64.sh (OTHER_GOT_SYMBOLS): Remove.
-2000-05-03 Alan Modra <alan@linuxcare.com.au>
+2001-02-11 Philip Blundell <philb@gnu.org>
- From Ulf Carlsson <ulfc@engr.sgi.com> and Andreas Jaeger <aj@suse.de>
- * lexsup.c (set_section_start): Use bfd_scan_vma rather than
- strtoul.
+ * Makefile.am: Remove mention of earmelf_linux26.o.
+ * Makefile.in: Regenerate.
+ * emulparams/armelf_linux.sh (TEXT_START_ADDR): Set to 0x8000.
+ * emulparams/armelf_linux26.sh: Delete.
+ * configure.tgt: Remove mention of armelf_linux26 emulation.
-2000-04-29 Andreas Jaeger <aj@suse.de>
+2001-02-09 David Mosberger <davidm@hpl.hp.com>
- * ld.h: Correctly check GCC version.
+ * emulparams/elf64_ia64.sh (OTHER_READONLY_SECTIONS): Add
+ .IA_64.unwind.* pattern to unwind table section and
+ .IA_64.unwind_info* pattern to unwind info section.
-2000-04-21 Richard Henderson <rth@cygnus.com>
+2001-01-25 Jim Driftmyer <jdrift@stny.rr.com>
- * scripttempl/elfd30v.sc: Place .gcc_except_table.
+ * ldlang.c (lang_leave_overlay): Don't set lma_region when
+ load_base is specified.
-2000-04-19 Alan Modra <alan@linuxcare.com.au>
+2001-01-24 Hans-Peter Nilsson <hp@axis.com>
- * ld.texinfo (Simple Example): Remove extraneous paragraph.
+ * emultempl/elf32.em: Correct spelling in comments and listed
+ options.
-2000-04-04 Alan Modra <alan@linuxcare.com.au>
+2001-01-23 Alan Modra <alan@linuxcare.com.au>
- * po/ld.pot: Regenerate.
+ * ldlang.c (lang_leave_overlay): Only set lma_region from the
+ default for the first section of a group of overlay sections.
- * lexsup.c (help): Restore translated part of bug string.
+2001-01-22 Alan Modra <alan@linuxcare.com.au>
- * 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.am (GENSCRIPTS): Pass exec_prefix.
* Makefile.in: Regenerate.
+ * genscripts.sh: Use exec_prefix parameter to specify tool lib.
+ Check for null tool_dir.
-2000-04-03 Alan Modra <alan@linuxcare.com.au>
+2001-01-16 Jim Wilson <wilson@redhat.com>
- * ld.h: #include "bin-bugs.h"
- * lexsup.c (help): Use REPORT_BUGS_TO.
+ * emulparams/elf64_ia64.sh (OTHER_READONLY_SECTIONS): Add IA_64.unwind
+ and IA_64.unwind.info.
-2000-03-27 Denis Chertykov <denisc@overta.ru>
+2001-01-16 H.J. Lu <hjl@gnu.org>
- * configure.tgt (avr-*-*): New target support.
- * Makefile.am: Likewise.
- * scripttempl/elf32avr.sc: New script file.
- * emulparams/avr1200.sh: New file.
- * emulparams/avr23xx.sh: New file.
- * emulparams/avr4433.sh New file.
- * emulparams/avr44x4.sh New file.
- * emulparams/avr85xx.sh New file.
- * emulparams/avrmega103.sh New file.
- * emulparams/avrmega161.sh New file.
- * emulparams/avrmega603.sh New file.
- * Makefile.in: Regenerate.
+ * ldlang.c (lang_check): Merge the private data only if the
+ input file has contents.
-2000-03-09 Andreas Jaeger <aj@suse.de>
+2001-01-14 Alan Modra <alan@linuxcare.com.au>
- * Makefile.am (check-DEJAGNU): Also unset LANG.
- * Makefile.in: Rebuild.
+ * emulparams/hppalinux.sh (OUTPUT_FORMAT): Set to elf32-hppa-linux.
-2000-03-06 Ian Lance Taylor <ian@zembu.com>
+ * emultempl/hppaelf.em (hppaelf_after_parse): New function,
+ enabling search for libmilli. On a relocatable link, make .text
+ sections unique.
+ (LDEMUL_AFTER_PARSE): Define.
+ (hppaelf_finish): Correct spelling of relocatable in comments.
- * ldfile.c (ldfile_try_open_bfd): Don't crash if we see an empty
- archive.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Don't
+ rummage through the script for sections on the unique list.
+ Correct length of strncmp for ".note".
+ (gld${EMULATION_NAME}_check_needed): Rearrange function.
-2000-03-02 H.J. Lu <hjl@gnu.org>
+ * ldlang.c (unique_section_list): New var.
+ (unique_section_p): New function.
+ (walk_wild_section): Don't match sections on unique_section_list.
+ (lang_add_unique): New function.
+ Correct spelling of relocatable in comments.
- * emulparams/elf32mcore.sh: Include "getopt.h".
+ * ldlang.h (struct unique_sections): Declare.
+ (unique_section_list): Declare.
+ (unique_section_p): Declare.
+ (lang_add_unique): Declare.
-2000-03-01 Ian Lance Taylor <ian@zembu.com>
+ * lexsup.c (ld_options): Allow --unique to take an optional arg.
+ (parse_args [OPTION_UNIQUE]): Call lang_add_unique.
- * configure.tgt: Remove *-*-aout, *-*-coff, and *-*-netware.
+ * ld.texinfo (--unique): Update.
-2000-03-01 H.J. Lu <hjl@gnu.org>
+2001-01-13 Nick Clifton <nickc@redhat.com>
- * emulparams/mipspe.sh: Add SUBSYSTEM and INITIAL_SYMBOL_CHAR.
- * emulparams/shpe.sh: Likewise.
+ * lexsup.c (parse_args): Remove spurious white space.
-2000-03-01 Nick Clifton <nickc@cygnus.com>
+2001-01-12 Nick Clifton <nickc@redhat.com>
- * pe-dll.c: Remove unused variables and add ATTRIBUTE_UNUSED
- to unused parameters.
+ * lexsup.c (parse_args): Update copyright date.
- * emultempl/pe.em: Add "#ifdef DLL_SUPPORT" around static
- functions only used by DLL code.
- (_place_orphan): Initialise 'dollar'.
+2001-01-12 Philip Blundell <pb@futuretv.com>
-2000-03-01 H.J. Lu <hjl@gnu.org>
+ * configure.host: Set HOSTING_LIBS appropriately for ix86-cygwin.
- * ldmain.c (undefined_symbol): Take one more arg, fatal, to
- indicate if the undefined symbol is a fatal error or not.
- Don't delete the output file if "fatal" is false.
+2001-01-10 Kazu Hirata <kazu@hxi.com>
-2000-02-29 H.J. Lu <hjl@gnu.org>
+ * scripttempl/h8300.sc: Fix formatting. Fix a comment typo.
+ * scripttempl/h8300h.sc: Fix formatting.
+ * scripttempl/h8300s.sc: Likewise.
+ * scripttempl/h8500.sc: Likewise.
+ * scripttempl/h8500b.sc: Likewise.
+ * scripttempl/h8500c.sc: Likewise.
+ * scripttempl/h8500m.sc: Likewise.
+ * scripttempl/h8500s.sc: Likewise.
- * Makefile.am (check-DEJAGNU): Also pass LIBS="$(LIBS)".
- Set LC_COLLATE and LC_ALL to null and export them. It is for
- sort which expects the C locale.
- Add $(LIBS) to all $(HOSTING_LIBS).
- * Makefile.in: Rebuild.
+2000-01-07 David O'Brien <obrien@BSDi.com>
-2000-02-29 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * emultempl/elf32.em: Only perform Linux ld hints processing when
+ targeting Linux.
- * emultempl/{aix.em, armcoff.em, armelf.em, armelf_oabi.em,
- beos.em, elf32.em, generic.em, gld960.em, gld960c.em, hppaelf.em,
- linux.em, lnk960.em, mipsecoff.em, sunos.em, vanilla.em}
- (ld_emulation_xfer_struct): Add missing NULL initialiser for
- find_potential_libraries.
+2001-01-07 Philip Blundell <philb@gnu.org>
-2000-02-28 Jim Blandy <jimb@redhat.com>
+ * ld.texinfo (Bug Reporting): Update email address for reports.
- * ldgram.y (exclude_name_list): Don't require a comma to separate
- list entries; the lexer considers commas to be valid part of a
- filename, so in something like `foo, bar' the comma is considered
- part of the first filename, `foo,'.
- * ld.texinfo: Update section on EXCLUDE_FILE lists.
+2000-12-31 Nick Clifton <nickc@redhat.com>
-2000-02-27 Loren J. Rittle <ljrittle@acm.org>
+ * lexsup.c (parse_args): Set opterr to 0 and detect unparsed long
+ options by checking for a return value of '?' not -1.
- * configure.host: Added HOSTING_CRT0, HOSTING_LIBS for
- host "i[3456]86-*-freebsdelf*".
+2000-12-28 Nick Clifton <nickc@redhat.com>
-2000-02-27 Mark Elbrecht <snowball3@bigfoot.com>
+ * lexsup.c (struct ld_option): Add new enum value:
+ EXACTLY_TWO_DASHES.
+ (ld_options[]): Change -omagic, -output and -oformat options
+ to be EXACTLY_TWO_DASHES.
+ (OUTPUT_COUNT): Use ARRAY_SIZE.
+ (parse_args): Change parameter 'argc' to unsigned.
+ Place EXACTLY_TWO_DASHES options into new really_longopts
+ array.
+ If getopt_long_only fails, try calling getopt_long using the
+ really_longopts array.
+ (help): Print a double dash for both EXACTLY_TWO_DASHES and
+ TWO_DASHES options.
- * scripttempl/i386go32.sc: Move misplaced semicolons.
+ * ldlex.h: Fix prototype of parse_args.
-2000-02-25 Ian Lance Taylor <ian@zembu.com>
+ * ld.texinfo: Document that long options starting with 'o'
+ must be preceeded by two dashes. Change example of a single
+ dashed long option from -oformat to -trace-symbol.
- * Makefile.am (ALL_EMULATIONS): Remove ehppaelf.o.
- (ALL_64_EMULATIONS): Remove eelf64hppa.o.
- (eelf64hppa.c, ehppaelf.c): Remove targets.
- * Makefile.in: Rebuild.
+2000-12-26 Danny Smith <danny_r_smith_2001@yahoo.co.nz>
-2000-02-25 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
+ * emultempl/pe.em (OPTION_NO_DEFAULT_EXCLUDES): Define.
+ (longopts[]): New --no-default-excludes option.
+ (gld_${EMULATION_NAME}_list_options): Document.
+ (gld_${EMULATION_NAME}_parse_args): Handle.
- * configure.tgt (targ_extra_ofiles): Enable elf64_sparc on
- GNU/Linux/sparc, but keep the default as 32.
+2000-12-13 Michael Sokolov <msokolov@ivan.Harhan.ORG>
- * configure.tgt: Enable elf64_sparc on Solaris7+/sparc. And make
- it default if sparcv9 or sparc64.
+ * ldlang.c (new_stat): Revert the last beautification with "innocent"
+ whitespace, it breaks the K&R C preprocessor.
-2000-02-24 Nick Clifton <nickc@cygnus.com>
+2000-12-11 DJ Delorie <dj@redhat.com>
- * Makefile.am: Add rules to build emipspe.o and earmpe.o.
- * Makefile.in: Regenerate.
- * configure.tgt: Add targets for arm-wince, sh-pe and mips-pe.
+ * ld.texinfo: Add notes about --whole-archive and gcc.
- * ldemul.h (ld_emulation_xfer_struct): Add new field:
- find_potential_libraries.
- * ldemul.c (ldemul_find_potential_libraries): New function.
+2000-11-18 Fred Fish <fnf@be.com>
- * ldfile.c (ldfile_open_file_search): Allow function to be
- exported.
- (ldfile_open_file): Call ldemul_find_potential_libraries.
- * ldfile.h: Add prototype for ldfile_open_file_search.
+ * lexsup.c (OPTION_ALLOW_SHLIB_UNDEFINED): Define.
+ (ld_options): Entry for --allow-shlib-undefined.
+ (parse_args): Handle OPTION_ALLOW_SHLIB_UNDEFINED.
+ * ldmain.c (main): Initialize link_info.allow_shlib_undefined
+ to false.
+ * ld.texinfo: Document new command line switch.
- * pe-dll.c: Add support for ARM, MIPS and SH targets.
+2000-12-12 Geoffrey Keating <geoffk@redhat.com>
- * emulparams/mipspe.sh: New file. Parameters for mips-pe target.
- * emulparams/shpe.sh: New file. Parameters for sh-pe target.
+ * emulparams/elf32ppc.sh (OTHER_READWRITE_SECTIONS):
+ .fixup is actually read/write.
+ * emulparams/elf32lppc.sh (OTHER_READWRITE_SECTIONS): Likewise.
+ * emulparams/elf32ppcsim.sh (OTHER_READWRITE_SECTIONS): Likewise.
+ * emulparams/elf32lppcsim.sh (OTHER_READWRITE_SECTIONS): Likewise.
- * emultempl/pe.em: Add support for ARM, MIPS and SH DLLs.
- (gld_X_find_potential_libraries): New function. Search for
- libraries called "*.lib".
+Mon Dec 11 14:50:33 MET 2000 Jan Hubicka <jh@suse.cz>
- * scriptempl/pe.sc: Add .pdata section.
+ * NEWS: Add note about x86_64 architecture.
-2000-02-23 Richard Henderson <rth@cygnus.com>
+2000-12-06 Mark Elbrecht <snowball3@bigfoot.com>
- * scripttempl/elfd10v.sc: Remove dynamic linking hooks.
- Add and use memory regions.
+ * scripttempl/i386go32.sc: Use PROVIDE with _etext, _edata, _end.
+ Set DWARF2 sections to a VMA of zero.
-2000-02-23 Linas Vepstas (linas@linas.org)
+2000-12-01 Joel Sherrill <joel@OARcorp.com>
- * emulparams/elf32i370.sh, scripttempl/elfi370.sc: New.
+ * configure.tgt (arm-*-rtems*, a29k-*rtems*, h8300-*-rtems*):
+ New targets.
+ (sparc*-*-rtemself*, sparc*-*-rtemsaout*): New targets.
+ (sparc*-*-rtems*): Switched from a.out to ELF.
- * Makefile.am: Add support for Linux/IBM 370.
- * configure.tgt: Likewise.
+2000-11-30 Jan Hubicka <jh@suse.cz>
+ * Makefile.am (ALL_EMULATIONS): Add eelf_x86_64.o
+ (eelf_x86_64.c): New.
* Makefile.in: Regenerate.
+ * configure.tgt: Add support for x86_64-*-linux-gnu*.
+ * emulparams/elf_x86_64.sh: New.
-2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-11-30 Hans-Peter Nilsson <hp@axis.com>
- * ldlang.c (print_input_section, print_data_statement,
- print_reloc_statement, print_padding_statement, insert_pad,
- size_input_section, lang_check_section_addresses,
- lang_size_sections, lang_do_assignments, lang_set_startof,
- lang_one_common): Change `opb' to unsigned.
- (lang_do_assignments): Also change `size' to unsigned.
+ * emulparams/crislinux.sh (ENTRY): Change back to _start.
+ (TEXT_START_SYMBOLS): Remove conditional setting of __start.
-2000-02-16 Richard Henderson <rth@cygnus.com>
+ * scripttempl/crisaout.sc: Change all RELOCATING not related to
+ merging non-a.out sections into CONSTRUCTING.
- * scripttempl/elf.sc: Place OTHER_PLT_RELOC_SECTION.
+2000-11-28 Nick Clifton <nickc@redhat.com>
-2000-02-16 Timothy Wall <twall@cygnus.com>
+ * ld.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.
- * mri.c (mri_draw_tree): Add default LMA region argument to call
- to lang_leave_output_section_statement.
- * ldlang.h: Update prototypes with LMA region arguments.
- * ldlang.c (lang_size_sections): Encapsulate region bounds
- checking in os_check_region call.
- (os_check_region): New function.
- (lang_output_section_statement_lookup): Initialize lma_region.
- (lang_leave_output_section_statement): Add LMA region argument.
- (lang_leave_overlay): Ditto.
- * ldgram.y: Handle LMA region syntax.
- * ld.texinfo (Output Section Description): Describe LMA region usage.
- * emultempl/armelf.em (gld$place_orphan): Add default value for
- lma region in call to lang_leave_output_statement.
- * emultempl/elf32.em (gld$place_orphan): Add default value for
- lma region in call to lang_leave_output_statement.
- * emultempl/pe.em (gld$place_orphan): Add default value for
- lma region in call to lang_leave_output_statement.
-
-
-2000-02-04 Timothy Wall <twall@redhat.com>
+2000-11-28 David O'Brien <obrien@dragon.nuxi.com>
- * ldlang.c (lang_check_section_addresses): Use bytes instead of
- octets when calculating section end addresses.
+ * emulparams/elf64alpha.sh (ENTRY): Remove leading underscore as ELF
+ does not use them.
-2000-02-04 Timothy Wall <twall@redhat.com>
+2000-11-25 David O'Brien <obrien@FreeBSD.org>
- * ldlang.c (lang_size_sections): Fix typo in ALIGN_N invocation.
+ * ld.1: Remove old date so it does not give the impression the manpage
+ is way out of date.
-2000-02-03 Timothy Wall <twall@redhat.com>
+2000-11-24 Nick Clifton <nickc@redhat.com>
- * ld/ldexp.c (fold_name): Make SIZEOF operator return byte count, not
- octet count.
- * ld/ldlang.c (print_input_section, print_data_statement,
- print_reloc_statement, print_padding_statement): Print target
- address values and section sizes as bytes, not octets.
- (insert_pad) Calculate padding size in octets, and adjust "dot"
- by bytes.
- (size_input_section) Always adjust "dot" by bytes, not octets.
- (lang_check_section_addresses, lang_do_assignments) Adjust
- "dot" by bytes, not octets. Use the larger of the directive size
- or octets_per_byte for the number of octets actually allocated in
- the output section.
- (lang_set_startof) Make sure STARTOF returns a target address.
- (lang_one_common) Record size changes in octets.
- (lang_abs_symbol_at_end_of) Section end symbol's value is
- recorded in target bytes.
- * ld.texinfo: Updated description of BYTE, SHORT, LONG, etc.
- to be clear about behavior when an octet is smaller than one byte.
-
-2000-01-27 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * configure.tgt (xscale-coff): Add target.
+ (xscale-elf): Add target.
- * ldcref.c (output_cref): Don't pass message strings to printf
- as format arg.
- Update copyright.
+2000-11-24 Fred Fish <fnf@be.com>
- * ldmisc.c (vfinfo): Same here.
- Update copyright.
+ * ldmain.c (main): Remove redundant init of config.make_executable
+ to true.
-2000-01-23 Alan Modra <alan@spri.levels.unisa.edu.au>
+2000-11-15 Richard Henderson <rth@redhat.com>
- * emultempl/{armcoff.em,armelf.em,armelf_oabi.em,beos.em,
- generic.em,gld960.em,gld960c.em,hppaelf.em,linux.em,lnk960.em,
- mipsecoff.em,sunos.em,vanilla.em} (ld_emulation_xfer_struct):
- Add missing NULL initialisers, and comments.
+ * emulparams/elf64alpha.sh (MAXPAGESIZE): Typo -- 64k, not 1M.
- * testsuite/ld-srec/sr3.cc (__rethrow): New.
+2000-11-14 Kazu Hirata <kazu@hxi.com>
-2000-01-21 Nick Clifton <nickc@cygnus.com>
+ * scripttempl/h8300.sc: Fix formatting.
+ * scripttempl/h8300h.sc: Likewise.
+ * scripttempl/h8300s.sc: Likewise.
- * ldlang.c (lang_size_sections): Fix typo in comment.
+Tue Nov 14 00:59:19 2000 Denis Chertykov <denisc@overta.ru>
-2000-01-18 H.J. Lu <hjl@gnu.org>
+ * scripttempl/elf32avr.sc: Fix bug in .eeprom segment.
- * ldlang.c (lang_size_sections): Also update the current
- address of a region if the SEC_NEVER_LOAD bit is not set.
+2000-11-09 Philip Blundell <pb@futuretv.com>
-2000-01-10 Philip Blundell <pb@futuretv.com>
+ * emultempl/pe.em: Define ___start_SECNAME and ___stop_SECNAME
+ around orphan sections whose names can be represented in C.
- * configure.tgt (arm*-*-conix*): New target.
+2000-11-07 Jim Wilson <wilson@redhat.com>
-2000-01-07 Nick Clifton <nickc@cygnus.com>
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): New local
+ hold_sdata. If SEC_SMALL_DATA set, set place to hold_sdata.
- * ld.texinfo (Options): Remind users to preceed linker command
- line switches with -Wl, (or whatever is appropriate) if it is
- being invoked by a comnpiler driver program.
- Fix description of the behaviour of the -n command line switch.
-
-Wed Jan 5 08:02:12 2000 Catherine Moore <clm@cygnus.com>
-
- * ld.h (wildcard_spec): Change exclude_name to exclude_name_list.
- (name_list): New.
- * ld.texinfo (EXCLUDE_FILE): Update documentation.
- * ldgram.y (wildcard_spec): Support a list of excluded_files.
- (exclude_name_list): New.
- ldlang.c (walk_wild_section): Support list of excluded files.
- (print_wild_statement): Likewise.
- (lang_add_wild): Likewise.
- * ldlang.h (lang_wild_statement_type): Likewise.
- * scripttempl/elf.sc (OTHER_EXCLUDE_FILES): Support.
-
-2000-01-04 Mumit Khan <khan@xraylith.wisc.edu>
+2000-11-06 Nick Clifton <nickc@redhat.com>
- * pe-dll.c (pe_dll_warn_dup_exports): New variable.
- (process_def_file): Use.
- (pe_dll_compat_implib): New variable.
- (make_one): Use.
-
- * pe-dll.h: Add exports of pe_dll_warn_dup_exports and
- pe_dll_compat_implib.
-
- * emultempl/pe.em (longopts): Add warn-duplicate-exports and
- compat-implib options.
- (gld_${EMULATION_NAME}_list_options): List new options.
- (gld_${EMULATION_NAME}_parse_args): Handle.
+ * ld.texinfo: Add GNU Free Documentation License.
+ * ldint.texinfo: Add GNU Free Documentation License.
+ * ld.1: Add GNU Free Documentation License.
- * pe-dll.c (pe_dll_generate_implib): Use the correct name for output
- dll.
-
- * deffilep.y (opt_name): Allow "." in name.
+2000-11-05 Alan Modra <alan@linuxcare.com.au>
-1999-12-02 Nick Clifton <nickc@cygnus.com>
+ * ldlex.l (yy_create_string_buffer): Init yy_is_our_buffer,
+ yy_is_interactive, yy_at_bol, and yy_fill_buffer.
- * Makefile.am: Fix arm-epoc-pe dependencies.
+ * Makefile.am (DISTCLEANFILES): Add stringify.sed.
+ Move 2000-11-02 Makefile.in changes to this file.
* Makefile.in: Regenerate.
-
- * emulparams/arm_epoc_pe.sh (SCRIPT_NAME): Set to epocpe.
-
- * scripttempl/epocpe.sc: New file: copy of pe.sc, customised for
- EPOC by placing .rdata into .text.
-
-1999-11-26 Andreas Schwab <schwab@suse.de>
-
- * configure.in: Put AC_MSG_CHECKING/AC_MSG_RESULT around check for
- STRINGIFY. Use yes/no instead of true/false as value for cache
- variable.
- * configure: Regenerate.
-
-1999-11-24 Nick Clifton <nickc@cygnus.com>
-
- * ldlang.c (IGNORE_SECTION): Section must have both ALLOC and LOAD
- attributes in order to be checked.
-
-1999-11-22 Nick Clifton <nickc@cygnus.com>
-
- * ldlang.c (lang_check_section_addresses): Fix test to determine
- if a section should be tested.
- (IGNORE_SECTION): New macro.
-
-Wed Nov 3 23:31:19 1999 Jeffrey A Law (law@cygnus.com)
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
- Clean up code to use EXTRA_SHLIB_EXTENSION.
-1999-11-03 Nick Clifton <nickc@cygnus.com>
+2000-11-03 Nick Clifton <nickc@redhat.com>
- * emulparams/elf32mcore.sh (OUTPUT_FORMAT): Change to little endian.
- * emulparams/mcorepe.sh (OUTPUT_FORMAT): Change to little endian.
+ * scripttempl/h8300.sc: Use ${CONSTRUCTING...} to enclose
+ constructors and destructors.
+ * scripttempl/h8300h.sc: Ditto.
+ * scripttempl/h8300s.sc: Ditto.
+ * scripttempl/h8500.sc: Ditto.
+ * scripttempl/h8500b.sc: Ditto.
+ * scripttempl/h8500c.sc: Ditto.
+ * scripttempl/h8500m.sc: Ditto.
+ * scripttempl/h8500s.sc: Ditto.
+ * scripttempl/v850.sc: Ditto.
+ * scripttempl/w65.sc: Ditto.
+ * scripttempl/z8000.sc: Ditto.
-1999-11-01 Steve Chamberlain <sac@pobox.com>
+2000-11-02 Per Lundberg <plundis@chaosdev.org>
- * ldlang.c (section_already_linked): Rework to use hash table.
- (already_linked_newfunc): New function.
- (already_linked_table_init): New function.
- (already_linked_table_free): New function.
- (lang_process): Initialize and free the already_linked hash table.
+ * Makefile.in (e_i386_chaos.c): New rule.
+ (ALL_EMULATIONS): Added e_i386_chaos.o.
+ * emulparams/elf_i386_chaos.sh: New file.
+ * configure.tgt: Recognise i[3456]86-chaosdev-storm-chaos.
-1999-10-27 Andreas Jaeger <aj@suse.de>
+2000-10-20 Jakub Jelinek <jakub@redhat.com>
- * ld/configure.host: Added HOSTING_CRT0, HOSTING_LIBS for
- target "mips*-*-linux-gnu*".
+ * emulparams/elf64_sparc.sh (TEXT_START_ADDR,
+ NONPAGED_TEXT_START_ADDR): Set to 4GB for Solaris targets.
+ Fix sed invocation, so that it coped with '/' in Solaris 64bit
+ library path suffix.
+ Based on patch by Andrew Macleod <amacleod@cygnus.com>.
-1999-10-27 Scott Bambrough <scottb@netwinder.org>
+2000-10-18 Hans-Peter Nilsson <hp@axis.com>
- * emultempl/armelf.em: Include ctype.h to prevent compile time
- warnings.
+ * scripttempl/crisaout.sc (.text, .data): Pad, with ALIGN (32),
+ for consecutive sections.
-1999-10-26 Nick Clifton <nickc@cygnus.com>
+2000-10-17 Chandrakala Chavva <cchavva@redhat.com>
- * emultempl/armcoff.em (gld{}_finish): Remove extraneous
- underscore from prototype.
- * emultempl/armelf.em (gld{}_finish): Remove extraneous
- underscore from prototype.
-
-1999-10-07 Geoffrey Keating <geoffk@cygnus.com>
-
- * scripttempl/elf.sc (.rel.sdata): Combine all the sdata relocs
- being .rel.sdata, .rel.sdata.*, .rel.gnu.linkonce.s*.
- (.rela.sdata): Likewise for .rela.sdata.* and .rela.gnu.linkonce.s*.
- (.rel.sbss): Make like .rel.bss.
- (.rela.sbss): Make like .rel.bss.
- (.sdata): Don't include .gnu.linkonce.s.* or .sdata.* when
- ld -r.
- (.sbss): Do the same things as for .bss: include SDATA_START_SYMBOLS,
- .dynsbss.
-
-1999-09-29 Andrew Haley <aph@cygnus.com>
-
- * emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Defer
- merging sections when not relocating.
-
-1999-09-28 Mumit Khan <khan@xraylith.wisc.edu>
-
- * pe-dll.c (process_def_file): Move the offset lookup from here to
- (fill_exported_offsets): here. New static function.
- (fill_edata): Use.
-
-1999-09-28 Mumit Khan <khan@xraylith.wisc.edu>
-
- * deffilep.y (tokens): Add upper and lower case versions of DATA,
- CONSTANT, NONAME and PRIVATE tokens.
- (command): Use DATAU.
- (expline): Allow for drectve syntax as well.
- (exp_opt_list): Likewise.
- (exp_opt): Likewise.
- * pe-dll.c (make_one): Only generate the idata entries for data
- symbols.
-
-1999-09-28 Geoffrey Keating <geoffk@cygnus.com>
-
- * scripttempl/elf.sc (.sdata): Include .gnu.linkonce.s.* sections
- in .sdata too.
-
-1999-09-26 Nick Clifton <nickc@cygnus.com>
-
- * scripttempl/elf.sc (.bss): Accept sections named .bss.*
- (.sbss): Accept sections names .sbss.*
-
-1999-09-22 Nick Clifton <nickc@cygnus.com>
-
- * Makefile.am: Add earm_epoc_pe.c build target.
+ * lexsup.c: New option OPTION_TARGET_HELP. Prints all target specific
+ options.
+ * ld.texinfo: Added notes about this new option.
-Sat Sep 18 07:57:10 1999 Jeffrey A Law (law@cygnus.com)
+2000-10-16 Nick Clifton <nickc@redhat.com>
- * emulparms/elf64hppa.sh (OTHER_READONLY_SYMBOLS): Remove ".stubs",
- they've been renamed to ".stub", which is handled automatically
- by elf.sc.
+ * emultempl/pe.em (_after_open): Add tests of return values from
+ bfd functions. Emit appropriate error messages if necessary.
-Fri Sep 17 11:00:33 1999 Jeffrey A Law (law@cygnus.com)
+2000-10-13 Nick Clifton <nickc@redhat.com>
- * emulparms/elf64hppa.sh (TEXT_START_SYMBOLS): Kill completely.
- (DATA_START_SYMBOLS): Kill __hp_load_map definition
+ * emultempl/pe.em (_after_open): Delete 'is2' and 'nsyms'
+ local variables - they are not used, but leave in the call to
+ bfd_canonicalize_symtab.
+ (_open_dynamic_archive): Add #ifdef DLL_SUPPORT around use of
+ pe_dll_search_prefix.
-Thu Sep 16 10:59:56 1999 Jeffrey A Law (law@cygnus.com)
+2000-10-12 Charles Wilson <cwilson@ece.gatech.edu>
- * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
- Use the same filename extension for the bfd_elf_dt_needed_name call
- as we did for finding the library.
+ * emultempl/pe.em (pe_dll_search_prefix): New variable,
+ (longopts): New --dll-search-prefix option.
+ (gld_${EMULATION_NAME}_list_options): Document.
+ (gld_${EMULATION_NAME}_parse_args): Handle.
+ (gld_${EMULATION_NAME}_open_dynamic_archive): When linking
+ dynamically, search for a dll named '<prefix><basename>.dll'
+ in preference to 'lib<basename>.dll' if --dll-search-prefix
+ is specified.
- * emulparms/elf64hppa.sh (DATA_START_SYMBOLS): Define.
- (OTHER_READWRITE_SECTIONS): No longer define __hp_load_map.
+2000-10-12 Alan Modra <alan@linuxcare.com.au>
- * emulparms/elf64hppa.sh (TEXT_START_SYMBOLS): Define.
+ * ldlang.c (section_already_linked): Set kept_section instead of
+ sec->comdat->sec.
-Wed Sep 15 02:47:43 1999 Jeffrey A Law (law@cygnus.com)
+2000-10-10 Kazu Hirata <kazu@hxi.com>
- * emulparms/elf64hppa.sh (SHLIB_TEXT_START_ADDR): Define.
- (SHLIB_DATA_ADDR): Likewise.
+ * deffile.h: Fix formatting.
+ * lexsup.c: Likewise.
+ * mri.c: Likewise.
- * emulparms/elf64hppa.sh (TEXT_DYNAMIC): Define.
+2000-10-09 Paul Sokolovsky <Paul.Sokolovsky@technologist.com>
- * emulparms/elf64hppa.h (OTHER_READWRITE_SECTIONS): No longer combine
- the .plt, .dlt, .opd into a single output section. Provide values
- for __gp and __hp_load_map.
+ * pe-dll.c (make_one): Do not generate code thunk for DATA
+ exports.
+ (process_def_file): deduce DATA flag for auto-export sumbols.
-1999-09-14 Michael Meissner <meissner@cygnus.com>
+2000-10-09 Kazu Hirata <kazu@hxi.com>
- * configure.in (Canonicalization of target names): Remove adding
- ${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
- generates $ac_config_sub with a ${CONFIG_SHELL} already.
- * configure: Regenerate.
+ * ld.h: Fix formatting.
+ * ldcref.c: Likewise.
+ * ldctor.h: Likewise.
+ * ldemul.c: Likewise.
+ * ldemul.h: Likewise.
+ * ldexp.c: Likewise.
+ * ldexp.h: Likewise.
+ * ldfile.c: Likewise.
+ * ldfile.h: Likewise.
+ * ldlang.c: Likewise.
+ * ldlang.h: Likewise.
+ * ldmain.c: Likewise.
+ * pe-dll.c: Likewise.
-1999-09-14 Donn Terry <donn@interix.com>
+ * pe-dll.c: Revert some formatting fixes.
- * emultempl/pe.em (gld_${EMULATION_NAME}_after_open): allow for
- terminating null.
+2000-10-08 Kazu Hirata <kazu@hxi.com>
-1999-09-14 Ulrich Drepper <drepper@cygnus.com>
+ * pe-dll.c: Fix formatting.
- * configure.in: Define EXTRA_SHLIB_EXTENSION to ".sl" for HP target.
- * config.in: Add EXTRA_SHLIB_EXTENSION.
+2000-10-05 Kazu Hirata <kazu@hxi.com>
- * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
- Search for second shared lib extension only if EXTRA_SHLIB_EXTENSION
- is defined.
+ * ldlang.c: Fix formatting.
-1999-09-14 Nick Clifton <nickc@cygnus.com>
+2000-10-03 DJ Delorie <dj@redhat.com>
- * Makefile.in: Add earm_epoc_pe.c build target.
+ * pe-dll.c (fill_edata): initialize entire block
+ (make_one): fill in correct section.
-Tue Sep 14 05:26:34 1999 Jeffrey A Law (law@cygnus.com)
+2000-10-03 Kazu Hirata <kazu@hxi.com>
- * emulparms/elf64hppa.sh (OTHER_GOT_RELOC_SECTIONS): Add .rela.dlt.
+ * ldexp.c: Fix formatting.
-1999-09-13 Donn Terry <donn@interix.com>
+2000-10-02 DJ Delorie <dj@redhat.com>
- * emultempl/pe.em: Remove the output file at the start, in case it
- is not writable.
+ * emultempl/pe.em (gld_*_after_open): detect case where there two
+ import libraries for same dll; rename one to ensure proper link
+ order.
-Mon Sep 13 00:17:18 1999 Jeffrey A Law (law@cygnus.com)
+ * pe-dll.c (process_def_file): compare ordinals to -1, not 0; fix
+ typo
+ (generate_edata): fix typo
- * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
- Search for file with .sl extension if no file with a .so extension
- is found.
+2000-09-29 Hans-Peter Nilsson <hp@axis.com>
- * emulparms/elf64hppa.sh (OTHER_READWRITE_SECTIONS): Put .plt
- at the start of the .dlt output section.
+ * scripttempl/crisaout.sc (ENTRY): Now __start.
+ (.text): Add default setting for __start.
+ Remove CONSTRUCTORS handling.
+ (/DISCARD/): Add .gnu.warning.*.
+ * emulparams/crislinux.sh (ENTRY): Now __start.
+ (TEXT_START_SYMBOLS): New; provide __Stext and __start default.
+ * emulparams/criself.sh (OUTPUT_FORMAT): Now elf32-us-cris.
+ (ENTRY): Now __start.
+ (INITIAL_READONLY_SECTIONS): Add KEEP for .startup.
+ (EXECUTABLE_SYMBOLS): Add default setting for __start.
-1999-09-12 Ian Lance Taylor <ian@zembu.com>
+2000-09-29 Kazu Hirata <kazu@hxi.com>
- * pe.em: Don't include "../bfd/libbfd.h".
- (gld_${EMULATION_NAME}_after_open): Use xmalloc rather than
- bfd_alloc.
+ * deffile.h: Fix formatting.
+ * ld.h: Likewise.
+ * ldcref.c: Likewise.
+ * ldctor.c: Likewise.
+ * ldctor.h: Likewise.
+ * ldemul.c: Likewise.
+ * ldemul.h: Likewise.
+ * ldexp.c: Likewise.
+ * ldexp.h: Likewise.
+ * ldfile.c: Likewise.
+ * ldfile.h: Likewise.
+ * ldlang.c: Likewise.
+ * ldlang.h: Likewise.
+ * lexsup.c: Likewise.
+ * mri.c: Likewise.
+ * pe-dll.c: Likewise.
- * pe-dll.h: New file.
- * pe-dll.c: Include "pe-dll.h". Mark unused arguments as needed
- to avoid warnings.
- (edata_sz, reloc_sz): Change from int to size_t.
- (pe_details_type): Change type of imagebase_reloc from int to
- unsigned int.
- (pe_detail_list): Fully initialize last entry.
- (pe_dll_id_target): Change parameter to const.
- (pe_dll_generate_def_file): Likewise.
- (pe_dll_generate_implib): Likewise.
- (pe_implied_import_dll): Likewise. Change dll_name to const.
- * emultempl/pe.em: Include "pe-dll.h". Remove declarations now in
- pe-dll.h.
- (init): Fully initialize __dll__ entry.
- (gld_${EMULATION_NAME}_after_open): Remove unused variables
- sequence, elt, and i.
- * deffile.h: Add preprocessor guard.
- * deffilep.y (def_debug): Remove.
- * Makefile.am: Rebuild dependencies.
- (HFILES): Add pe-dll.h.
+2000-09-28 Paul Sokolovsky <Paul.Sokolovsky@technologist.com>
-1999-09-12 Donn Terry <donn@interix.com>
+ * pe-dll.c (process_def_file): Uninitialized data wasn't
+ exported with --export-all-symbols switch.
- * ld.h (ld_abort): Declare.
- (abort): Define.
- * ldmisc.c (ld_abort): Define.
+2000-09-28 DJ Delorie <dj@redhat.com>
- * scripttempl/pe.sc: Use ${ENTRY} rather than _mainCRTStartup.
- Move .bss section after .rdata. Move .reloc section after .rsrc.
+ * pe-dll.c (fill_edata): rearrange the data so that ordinals and
+ noname work properly.
- * lexsup.c (parse_args): Use strtoul for --split-by-reloc
- argument.
+2000-09-28 Alan Modra <alan@linuxcare.com.au>
- * lexsup.c (parse_args): If we get an unrecognized argument,
- mention --help.
+ * ld.texinfo (HPPA ELF32): New section.
- * ldlang.c (section_already_linked): Use comdat information if it
- is available.
+ * emultempl/hppaelf.em (group_size): New.
+ (hppaelf_finish): Pass group_size to elf32_hppa_size_stubs.
+ (PARSE_AND_LIST_PROLOGUE): Add OPTION_STUBGROUP_SIZE.
+ (PARSE_AND_LIST_LONGOPTS): Add --stub-group-size. Duplicate
+ options to prevent abbreviations matching.
+ (PARSE_AND_LIST_OPTIONS): Describe the above. Reformat.
+ (PARSE_AND_LIST_ARGS_CASES): Handle it.
- * emultempl/pe.em (PE_DEF_SECTION_ALIGNMENT): If
- OVERRIDE_SECTION_ALIGNMENT is defined, change to that.
- (gld_${EMULATION_NAME}_before_parse): Use EXECUTABLE_NAME if it is
- defined, rather than a.exe.
- (init): Define __subsystem__ as ${SUBSYSTEM}.
- (set_pe_subsystem): Add ${INITIAL_SYMBOL_CHAR} before entry symbol
- name.
+2000-09-21 Michael Sokolov <msokolov@ivan.Harhan.ORG>
-1999-09-12 Ian Lance Taylor <ian@zembu.com>
+ * emultempl/m68kelf.em: Conditionalise the embedded relocs feature
+ on the m68*-*-elf target. Make it support COFF input objects.
- * ldlang.c (open_output): Change local variable desired_endian
- from int to enum bfd_endian.
+2000-09-21 Kazu Hirata <kazu@hxi.com>
- * emulparams/arm_epoc_pe.sh: Define ENTRY, SUBSYSTEM and
- INITIAL_SYMBOL_CHAR.
- * emulparams/armpe.sh: Likewise.
- * emulparams/morepe.sh: Likewise.
- * emulparams/ppcpe.sh: Likewise.
- * emulparams/i386pe.sh (ENTRY): Define as _mainCRTStartup.
- (SUBSYSTEM): Define as PE_DEF_SUBSYSTEM.
+ * ldmain.c: Fix formatting.
+ * ldmisc.c: Likewise.
+ * ldver.c: Likewise.
+ * ldwrite.c: Likewise.
-Fri Sep 10 00:22:50 1999 Jeffrey A Law (law@cygnus.com)
+2000-09-21 Alan Modra <alan@linuxcare.com.au>
- * emulparms/elf64hppa.sh (LIB_PATH): Define.
+ * ldwrite.c (clone_section): Silence gcc warnings.
- * emulparms/elf64hppa.sh (OTHER_READONLY_SECTIONS): Put stubs before
- unwinders so that they are closer to the text section.
- (OTHER_BSS_SECTIONS): Define.
- (EXECUTABLE_SYMBOLS): Provide __SYSTEM_ID and _FPU_STATUS.
- (INIT_START, INIT_END): Define.
- (FINI_START, FINI_END): Define.
- * scripttempl/elf.sc: Add support for INIT_START, INIT_END,
- FINI_START, FINI_END and OTHER_BSS_SECTIONS.
+2000-09-20 Alan Modra <alan@linuxcare.com.au>
-Thu Sep 9 21:43:58 1999 Jeffrey A Law (law@cygnus.com)
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Handle
+ out of memory failure.
- * emulparms/elf64hppa.sh (TEXT_START_ADDR): Move up one page.
- (DATA_ADDR): Define.
+ * ldwrite.c (ldwrite): Remove unnecessary einfo arg.
+ (clone_section): Handle out of memory failures. Rename var to
+ avoid c++ reserved word.
-1999-09-09 Stan Shebs <shebs@andros.cygnus.com>
+2000-09-18 Alan Modra <alan@linuxcare.com.au>
- * emulparams/d10velf.sh (READONLY_START_ADDR): Set to 0x2000004.
+ * emultempl/hppaelf.em (hppaelf_add_stub_section): Rename
+ stub_name param to stub_sec_name.
+ (hppaelf_finish): Modify call to elf32_hppa_size_stubs.
-1999-09-09 Andreas Schwab <schwab@suse.de>
+2000-09-10 Michael Sokolov <msokolov@ivan.Harhan.ORG>
- * ld.texinfo: Fix arguments of @var to not contain punctuation.
+ * emultempl/m68kelf.em: New file.
+ * emulparams/m68kelf.sh (EXTRA_EM_FILE): Use it.
+ * Makefile.am (em68kelf.c): Add dependency on m68kelf.em.
+ * Makefile.in: Regenerate.
-Thu Sep 9 05:52:34 1999 Jeffrey A Law (law@cygnus.com)
+2000-09-15 Alan Modra <alan@linuxcare.com.au>
- * emulparms/elf64hppa.sh (OTHER_READWRITE_SECTIONS): Define.
+ * emulparams/hppalinux.sh (DATA_START_SYMBOLS): Provide $global$
+ only as needed.
-1999-09-08 Ulrich Drepper <drepper@cygnus.com>
+2000-09-13 Nick Clifton <nickc@redhat.com>
- * emulparams/elf64hppa.sh (ELFSIZE): New. Set to 64.
+ * ldmain.c (multiple_definition): Disable relaxation if
+ multiple symbol definitions are encountered - otherwise the
+ linker could abort with an assertion failure.
-Wed Sep 8 00:07:39 1999 Jeffrey A Law (law@cygnus.com)
+2000-09-10 Nick Clifton <nickc@redhat.com>
- * emulparms/elf64hppa.sh (ENTRY): Define to main.
+ * mri.c: Fix formatting.
-1999-09-03 Scott Bambrough <scottb@netwinder.org>
+2000-09-07 H.J. Lu <hjl@gnu.org>
- * ld/configure.host: Added HOSTING_CRT0, HOSTING_LIBS for
- target "arm*-*-linux-gnu*"
+ * configure.in (AC_ISC_POSIX): Put after AC_CANONICAL_SYSTEM.
+ * configure: Rebuild.
-1999-09-04 Steve Chamberlain <sac@pobox.com>
+2000-09-07 H.J. Lu <hjl@gnu.org>
- * configure.tgt (pjl-*-*, pj-*-*): New targets.
- * emulparams/pjelf.sh: New file.
- * emulparams/pjlelf.sh: New file.
- * scripttempl/pj.sc: New file.
- * Makefile.am (ALL_EMULATIONS): Add epjelf.o and epjlelf.o.
- (epjelf.o, epjlelf.o): New targets.
+ * Makefile.am (lexsup.o): Also depend on $(INCDIR)/demangle.h.
* Makefile.in: Rebuild.
-Fri Sep 3 20:17:08 1999 Jeffrey A Law (law@cygnus.com)
+2000-09-07 Alan Modra <alan@linuxcare.com.au>
- * emulparams/elf64hppa.sh (MAXPAGESIZE): Define.
- (OTHER_READONLY_SECTIONS, DATA_PLT): Likewise.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Fix
+ broken list handling. Create __start_SECNAME and __stop_SECNAME
+ when no place-holder. Add some comments. Test both SEC_CODE and
+ SEC_READONLY for hold_text to prevent .rodata orphan poisoning.
+ Handle case where no output section statement created.
-Thu Sep 2 14:32:03 1999 Jeffrey A Law (law@cygnus.com)
+2000-09-07 Niibe Yutaka <gniibe@m17n.org>, Kaz Kojima <kkojima@rr.iij4u.or.jp>, Alexandre Oliva <aoliva@redhat.com>
- * emulparams/elf64hppa.sh: New file.
- * configure.tgt (hppa*w-*-*): Use elf64hppa emulation.
- * Makefile.am (ALL_64_EMULATIONS): Add eelf64hppa.o
- (eelf64hppa.c): Add dependencies.
+ * configure.tgt (sh-*-linux*): Added.
+ * Makefile.am: Added eshelf_linux and eshlelf_linux.
* Makefile.in: Rebuilt.
+ * emulparams/shelf_linux.sh: New file.
+ * emulparams/shlelf_linux.sh: New file.
-1999-08-25 Philip Blundell <pb@nexus.co.uk>
-
- * emulparams/armelf.sh (OTHER_BSS_SYMBOLS): Add __end__.
- * emulparams/armelf_linux.sh: Likewise.
- * emulparams/armelf_linux26.sh: Likewise.
-
-1999-08-24 Nick Clifton <nickc@cygnus.com>
-
- From a patch submitted by Roland McGrath <roland@baalperazim.frob.com>
-
- * configure.tgt (arm-*-netbsd*): New target.
- * Makefile.am (ALL_EMULATIONS): Add earmnbsd.o.
- (earmnbsd.c): New rule with deps.
- * Makefile.on: Regenerate.
- * emulparams/armnbsd.sh: New file.
-
-1999-08-23 Nick Clifton <nickc@cygnus.com>
-
- * emulparams/elf32mcore.sh (PARSE_AND_LIST_ARGS): Define.
- Implement --base-file command line switch.
-
- * emultempl/elf32.em: Add ability for individual targets to have
- their own command line switches by defining PARSE_AND_LIST_ARGS.
-
-1999-08-19 Andreas Schwab <schwab@suse.de>
-
- * configure.host: Use ${CC} instead of gcc for finding compiler
- related files.
-
-1999-08-11 Nick Clifton <nickc@cygnus.com>
-
- * scripttempl/mcorepe.sc (OUTPUT_FORMAT): Fix typo.
-
-1999-08-09 Mark Elbrecht <snowball3@bigfoot.com>
-
- * scripttempl/i386go32.sc: Handle g++ exception sections.
-
-1999-08-09 Ian Lance Taylor <ian@zembu.com>
-
- From Wally Iimura <iimura@microunity.com>:
- * ldlang.c (lang_size_sections): When checking whether an address
- is within a region, don't get confused by wrapping around at the
- end of the address space.
-
-1999-08-08 Ian Lance Taylor <ian@zembu.com>
-
- * ldlang.c (wild_doit): Update for renaming of SEC_SHORT to
- SEC_SMALL_DATA.
+2000-09-06 Alan Modra <alan@linuxcare.com.au>
- * Makefile.am: Rename .dep* files to DEP*. Change DEP variable to
- MKDEP. Rebuild dependencies.
- * Makefile.in: Rebuild.
-
-1999-08-08 Jakub Jelinek <jj@ultra.linux.cz>
-
- * configure.host (sparc-*-linux-gnu*): New host.
- (sparc64-*-linux-gnu*): New host.
-
-1999-08-06 Ian Lance Taylor <ian@zembu.com>
-
- * lexsup.c (is_num): Reindent.
- (parse_args): Mention program name in error message.
-
- * emultempl/ostring.sed: Rename from stringify.sed.
- * emultempl/astring.sed: New file.
- * Makefile.am (stringify.sed): New target.
- (GEN_DEPENDS): Change $(srcdir)/emultempl/stringify.sed to
- stringify.sed.
- * configure.in: Define and substitute STRINGIFY.
- * emultempl/*.em: Use stringify.sed from build directory rather
- than source directory.
- * emultempl/elf32.em: Use stringify.sed rather than inline sed
- script.
- * emultempl/gld960.em, emultempl/gld960c.em: Likewise.
- * emultempl/hppaelf.em, emultempl/linux.em: Likewise.
- * emultempl/lnk960.em, emultempl/sunos.em: Likewise.
- * configure, Makefile.in: Rebuild.
-
-1999-08-05 Donn Terry <donn@interix.com>
-
- * emulparams/i386pe.sh: Define ENTRY, SUBSYSTEM, and
- INITIAL_SYMBOL_CHAR.
- * emulparams/i386pe_posix.sh: New file.
- * 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.
- (ALL_EMULATIONS): Add ei386pe_posix.o.
- (ei386pe_posix.c): New target.
- * configure.tgt (i[3456]86-*-interix*): New target.
- * configure.host (i[3456]86-pc-interix*): New host.
- * Makefile.in: Rebuild.
-
-1999-08-03 Ian Lance Taylor <ian@zembu.com>
-
- * emulparams/elf32ppc.sh (MAXPAGESIZE): Change to 0x10000.
- * emulparams/elf32ppclinux.sh (MAXPAGESIZE): Likewise.
-
-1999-08-03 H.J. Lu <hjl@gnu.org>
-
- * Makefile.am (ALL_EMULATIONS): Remove ego32.o.
- (ego32.c): Remove.
- * Makefile.in: Rebuild.
-
-1999-07-22 Philip Blundell <pb@nexus.co.uk>
-
- * emulparams/armelf_linux26.sh (DATA_START_SYMBOLS): Define.
- (OTHER_BSS_SYMBOLS, OTHER_BSS_END_SYMBOLS): Likewise.
- * emulparams/armelf_linux.sh (DATA_START_SYMBOLS): Define.
-
- * configure.tgt (arm*-*-uclinux*, thumb-*-uclinux*,
- thumb-*-linux-gnu*): New targets.
-
-1999-07-21 Mark Elbrecht <snowball3@bigfoot.com>
-
- * scripttempl/i386go32.sc: Add handling of linkonce sections.
-
- * configure.bat: Remove; obsolete.
- * emulparams/go32.sh: Remove; obsolete.
- * scripttempl/go32coff.sc: Remove; obsolete.
-
-1999-07-21 H.J. Lu <hjl@gnu.org>
-
- * configure.tgt (mips*el-*-vxworks*): New target.
-
-1999-07-21 Brad M. Garcia <bgarcia@fore.com>
-
- * configure.tgt (i[3456]86-*-vxworks*): New target.
-
-Tue Jul 20 15:18:46 1999 Bob Manson <manson@charmed.cygnus.com>
-
- * ldlang.c (lang_gc_sections): Only handle the start symbol
- specially if there is one.
-
-Mon Jul 19 14:19:14 1999 Mark P. Mitchell <mark@codesourcery.com>
-
- * emulparams/elf32bmipn32.sh (OTHER_RELOCATING_SECTIONS): Add
- .MIPS.events and .MIPS.content handling.
- * emulparams/elf64bmip.sh (OTHER_RELOCATING_SECTIONS): Likewise.
-
-1999-07-17 Nick Clifton <nickc@cygnus.com>
-
- * ldlang.c (get_target): New function: Return true iff the
- given target is the target being sought.
- (stricpy): New function: Like strcpy but convert to lower
- case as well.
- (strcut): New function: Like strstr but remove the located
- substring as well.
- (name_compare): New function: Compute a compatability rating
- for two target names.
- (winner): New variable: Best target found by
- closest_target_match() so far.
- (closest_target_match): New function: Find the target which is
- the closest match to the original target.
- (get_first_input_target): New function: Find the target format
- of the first of the linker's input file.
- (open_output): Be more clever about deciding the output target
- format.
-
-1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
-
- * emulparams/elf64_sparc.sh: Add 64-bit directories to native LIB_PATH.
-
-Thu Jul 15 15:55:15 1999 Mark P. Mitchell <mark@codesourcery.com>
-
- * configure.host: Set up HOSTING_CRT0 and HOSTING_LIBS for IRIX6.
-
-1999-07-15 Ian Lance Taylor <ian@zembu.com>
-
- * configure.in: Bump version number to 2.9.5.
- * configure: Rebuild.
-
-1999-07-14 Richard Henderson <rth@cygnus.com>
-
- * ldlang.c (wild_doit): Copy SEC_SHORT to output section.
-
- * scripttempl/elf.sc: Re-order .rel[a].foo outputs to the
- same order seen for the main sections. Add
- OTHER_READONLY_RELOC_SECTIONS and OTHER_GOT_RELOC_SECTIONS.
-
-1999-07-12 Andreas Schwab <schwab@suse.de>
-
- * emultempl/linux.em (ld_${EMULATION_NAME}_emulation): Fill in
- structure initializations.
-
- * emultempl/elf32.em (ld_${EMULATION_NAME}_emulation): Add missing
- comma in initializer.
-
-1999-07-11 Ian Lance Taylor <ian@zembu.com>
-
- * Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
- as appropriate. Fill in structure initializations.
-
-1999-07-10 Ian Lance Taylor <ian@zembu.com>
-
- * ldfile.c: Revert patch of 1999-07-08.
- (ldfile_try_open_bfd): If we are searching for the file, skip
- files with an incompatible architecture.
-
-1999-07-09 Nick Clifton <nickc@cygnus.com>
-
- * scripttempl/armcoff.sc (OUTPUT_FORMAT): Include big endian and
- little endian formats.
-
-1999-07-08 Felix Lee <flee@cygnus.com>
-
- * scripttempl/mcorepe.sc: fix quoting problem, for bash 2.x
-
-1999-07-08 Jakub Jelinek <jj@ultra.linux.cz>
-
- * ldfile.c (ldfile_open_file_search): Skip libraries made for
- incompatible architectures in the search path. Let the user know
- about any such skips.
-
-Thu Jul 8 12:32:23 1999 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * configure.tgt (hppa*-linux-gnu*): New target.
-
-1999-07-07 Mark Mitchell <mark@codesourcery.com>
-
- * Makefile.am (ALL_64_EMULATIONS): Add eelf64bmip.
- (eelf64bmip): New target.
- * Makefile.in: Regenerated.
- * configure.tgt (mips-sgi-irix6*): Add 64-bit emulation.
- * emulparams/elf64bmip.sh: New file.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Don't
+ try shuffling sections when the orphan happens to be the place
+ holder. Keep count of unique section names generated so we speed
+ the search for a new name.
-1999-07-05 Nick Clifton <nickc@cygnus.com>
+2000-09-06 Alexandre Oliva <aoliva@redhat.com>
- * emultempl/pe.em (after_open): Abort if input format is ARM and
- output format is not.
- * emultempl/armcoff.em (after_open): Abort if input format is ARM
- and output format is not.
- * emultempl/armelf.em (after_open): Abort if input format is ARM
- and output format is not.
+ * configure: Rebuilt with new libtool.m4.
-1999-07-02 Ian Lance Taylor <ian@zembu.com>
+2000-09-05 Nick Clifton <nickc@redhat.com>
- * ldlang.c: Revert change of 1999-06-23.
+ * Makefile.in: Regenerate.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+ * po/ld.pot: Regenerate.
-1999-06-30 Mark Mitchell <mark@codesourcery.com>
+ * ldint.texinfo: Remove CVS revision marker - it foils local
+ comparisons.
+
+ * emultempl/ticoff.em: Remove extraneous comma.
+
+2000-09-05 Alan Modra <alan@linuxcare.com.au>
+
+ * emultempl/hppaelf.em (hppaelf_add_stub_section): Add SEC_RELOC
+ to stub section flags.
+ (hppa_for_each_input_file_wrapper): New.
+ (hppa_lang_for_each_input_file): New.
+ (lang_for_each_input_file): Define to call above.
+ (multi_subspace): New.
+ (hppaelf_finish): Pass multi_subspace to elf32_hppa_size_stubs.
+ (PARSE_AND_LIST_PROLOGUE): Define.
+ (PARSE_AND_LIST_LONGOPTS): Define.
+ (PARSE_AND_LIST_OPTIONS): Define.
+ (PARSE_AND_LIST_ARGS_CASES): Define.
+ (hppaelf_finish): Call elf32_hppa_set_gp.
+ (hppaelf_set_output_arch): Remove.
+ (LDEMUL_SET_OUTPUT_ARCH): Remove.
+
+ * emulparams/hppalinux.sh (ELFSIZE): Define.
+ (MACHINE): Define.
+ (OTHER_READONLY_SECTIONS): Define.
+ (DATA_PLT): Define.
+ (GENERATE_SHLIB_SCRIPT): Define.
- * Makefile.am (ALL_EMULATIONS): Add eelf32bmipn32.o.
- (eelf32bmipn32.c): New target.
- * Makefile.in: Regenerated.
- * configure.tgt (mips-sgi-irix6*): Make n32 the default
- emulation.
- * emulparams/elf32bmipn32.sh: New file.
-
-1999-06-28 Jim Pick <jim@jimpick.com>
+ * ldlang.c: Add missing prototypes, and tidy others. Change CONST
+ to const throughout. Change `void *' to `PTR' throughout.
+ (lang_memory_default): Function is local to file, add `static'.
- * emultempl/armelf.em: Added code so that .xs linker scripts are
- called so that ARM shared libraries are built correctly.
+ * Makefile.am (ehppaelf.c): Depend on emultempl/elf32.em.
+ (ehppalinux.c): Likewise.
+ (earmelf.c): Likewise.
+ (earmelf_linux.c): Likewise.
+ (earmelf_linux26.c): Likewise.
+ * Makefile.in: Regenerate.
-1999-06-22 Mark Mitchell <mark@codesourcery.com>
+ * ld.h (ld_config_type): Add unique_orphan_sections.
+ * lexsup.c (OPTION_UNIQUE): Define.
+ (ld_options): Add "--unique".
+ (parse_args): Handle it.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Don't
+ search for an existing output section if unique_orphan_sections is
+ set. Make use of bfd_get_unique_section_name rather than
+ duplicating code here.
+ * ld.texinfo: Describe --unique.
- * ldmain.c (main): Initialize link_info.init_function and
- link_info.fini_function.
- * lexsup.c (OPTION_INIT): New macro.
- (OPTION_FINI): Likewise.
- (ld_options): Add descriptions for them.
+ * lexsup.c (ld_options): Make split-by-reloc arg optional. Add
+ optional arg to split-by-file.
(parse_args): Handle them.
+ * ld.texinfo: Update description of these options.
+ * ldwrite.c (clone_section): Pass in the section name. Replace
+ local code with bfd_get_unique_section_name.
+ (split_sections): Tidy code and comments. Use a list traversal
+ more appropriate to the list construction. Handle cooked section
+ sizes. Split when split_by_reloc reached rather than exceeded.
+ Track section size and split when split_by_file reached. Fix
+ link_order_tail (even though it's not used).
+ (ldwrite): Modify condition for calling split_sections to suit
+ changed split_by_reloc and split_by_file.
+ * ldmain.c (main): Init config.split_by_reloc and
+ config.split_by_file to -1.
+ * ld.h (ld_config_type): Change split_by_reloc to unsigned.
+ Change split_by_file to bfd_size_type.
+
+2000-09-02 Nick Clifton <nickc@redhat.com>
+
+ * configure.in: Increase version number to 2.10.91.
+ * NEWS: Mention new ability to support removal of duplicate DWARF2
+ debug information.
+ * configure: Regenerate.
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
-1999-06-23 Ian Lance Taylor <ian@zembu.com>
-
- * ldlang.c (section_already_linked): Only discard link once
- sections if we are building constructors.
-
-1999-06-22 Nick Clifton <nickc@cygnus.com>
-
- * ld.texinfo (Location Counter): Describe behaviour of
- location counter inside section statements.
-
-1999-06-20 Mark Mitchell <mark@codesourcery.com>
-
- * scripttempl/elf.sc (WRITABLE_RODATA): New variable for
- controlling whether or not .rodata is in the data segment or the
- text segment.
-
-1999-06-18 Nick Clifton <nickc@cygnus.com>
-
- * emultempl/pe.em: Add new command line switch --thumb-entry.
- * emultempl/armelf.em: Add new command line switch --thumb-entry.
- * emultempl/armcoff.em: Add new command line switch --thumb-entry.
- * ld.texinfo: Document new ARM command line switch: --thumb-entry.
-1999-06-20 H.J. Lu <hjl@gnu.org>
-
- * configure.in (all_libpath): Accumulate across all enabled targets.
-
-Sun Jun 20 14:10:33 1999 Richard Henderson <rth@cygnus.com>
-
- * emultempl/armelf.em: Watch EMULATION_LIBPATH instead of
- DEFAULT_EMULATION.
- * emultempl/elf32.em: Likewise.
- * emultempl/sunos.em: Likewise.
-
-Fri Jun 18 15:24:48 1999 Richard Henderson <rth@cygnus.com>
-
- * Makefile.am (GENSCRIPTS): Pass EMULATION_LIBPATH, not EMUL.
- * configure.in (all_emuls): Add targ_extra_libpath.
- (all_libpath, EMULATION_LIBPATH): Define.
- * configure.tgt (powerpc-*-linux-gnu*): Define targ_extra_libpath.
- * genscripts.sh (LIB_PATH): Define if emulation in EMULATION_LIBPATH.
-
-Mon Jun 14 10:38:36 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * ld.texinfo: Fix use of @item vs. @itemx.
-
-1999-06-13 Ian Lance Taylor <ian@zembu.com>
-
- From Thomas Zenker <thz@lennartz-electronic.de>:
- * ldgram.y (attributes_opt): Use attributes_list instead of NAME.
- (attributes_list, attributes_string): New nonterminals.
- * ldlang.c (lang_set_flags): Add invert parameter. Don't handle
- '!'.
- * ldlang.c (lang_set_flags): Update declaration.
-
-1999-06-12 Ian Lance Taylor <ian@zembu.com>
-
- * emultempl/pe.em (gld_${EMULATION_NAME}_after_parse): Don't add
- entry_symbol as an undefined symbol when doing a relocateable
- link. From <jeffdb@goodnet.com>.
-
-1999-06-12 David O'Brien <obrien@freebsd.org>
-
- * configure.tgt: (i[3456]86-*-freebsd*): Now defaults to ELF.
-
-1999-06-09 Nick Clifton <nickc@cygnus.com>
-
- * lexsup.c (help): Restore previous format of output.
-
-1999-06-04 Nick Clifton <nickc@cygnus.com>
-
- * emultempl/pe.em: If compiling for arm_epoc_pe rename
- interworking functions to avoid a name space clash.
-
-1999-06-02 Jason Merrill <jason@yorick.cygnus.com>
-
- * scripttempl/v850.sc: Add initp support.
-
-1999-06-02 Nick Clifton <nickc@cygnus.com>
-
- * emultempl/pe.em: Rename global arm interworking functions to
- avoid name collision when all targets BFD is built.
-
-1999-05-30 Cort Dougan <cort@attis.cs.nmt.edu>
-
- * Makefile.am (ALL_EMULATIONS): Add eelf32ppclinux.o.
- * configure.tgt (powerpc-*-linux-gnu): Use it.
- * emulparams/elf32ppclinux.sh: New file.
-
-1999-05-29 Ian Lance Taylor <ian@zembu.com>
-
- * ld.texinfo (Options): Clarify that options which refer to files
- must be properly ordered.
-
-1999-05-29 Nick Clifton <nickc@cygnus.com>
-
- * emultempl/armelf.em (..._parse_args): New function: Parse
- command line option. Accept arm-elf specific command line option
- '-p' or '--no-pipeline-knowledge'.
- (..._list_options): New function: Describe the new command line
- option.
- (..._before_allocation): Pass the value of the new variable
- no_pipeline_knowledge to bfd_elf32_arm_process_before_allocation.
-
- * emultemp/armelf_oabi.em (..._before_allocation): Pass zero as
- the third parameter to bfd_elf32_arm_process_before_allocation.
-
-1999-05-28 Nick Clifton <nickc@cygnus.com>
-
- * lexsup.c (help): Minor formatting changes.
-
-1999-05-28 Martin Dorey <mdorey@madge.com>
-
- * configure.tgt (i960-*-elf*): New target.
- * emulparams/elf32_i960.sh: New file.
- * Makefile.am (ALL_EMULATIONS): Add eelf32_i960.o.
- (eelf32_i960.c): New target.
- * Makefile.in: Rebuild.
-
-1999-05-26 Nick Clifton <nickc@cygnus.com>
-
- * emulparams/armelf_oabi.sh (TEMPLATE_NAME): Set to armelf_oabi.
+2000-09-02 Daniel Berlin <dberlin@redhat.com>
-1999-05-24 Philip Blundell <philb@gnu.org>
+ * scripttempl/elf.sc: Add .gnu.linkonce.wi.* to .debug_info
+ sections.
+ * scripttempl/elf32var.sc: Ditto.
+ * scripttempl/elfd10v.sc: Ditto.
+ * scripttempl/elfd30v.sc: Ditto.
+ * scripttempl/elfi370.sc: Ditto.
+ * scripttempl/elfm68hc11.sc: Ditto.
+ * scripttempl/elfm68hc12.sc: Ditto.
+ * scripttempl/elfi386beos.sc: Ditto.
+ * scripttempl/v850.sc: Ditto.
- * emultempl/armelf.em (before_parse): Set config.dynamic_link and
- config.has_shared.
- * emulparams/armelf.sh (GENERATE_SHLIB_SCRIPT): Define.
- * emulparams/armelf_linux.sh (GENERATE_SHLIB_SCRIPT): Likewise.
+2000-08-31 Alexandre Oliva <aoliva@redhat.com>
-1999-04-13 Philip Blundell <philb@gnu.org>
+ * acinclude.m4: Include libtool and gettext macros from the
+ top level.
+ * aclocal.m4, configure: Rebuilt.
- * emultempl/armelf.em: Add definitions related to shared objects
- (copied from elf32.em).
+2000-08-25 Nick Clifton <nickc@redhat.com>
-Wed May 19 12:44:26 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+ * ldlang.c (open_output): When choosing the target for a
+ particular endianness, do nothing if the target is not
+ supported.
- * Makefile.am (ALL_EMULATIONS): Remove earmlinux.o and
- earm26linux.o, add earmelf_linux.o and earmelf_linux26.o.
- * Makefile.in: Regenerated.
+2000-08-25 H.J. Lu <hjl@gnu.org>
-1999-05-16 Nick Clifton <nickc@cygnus.com>
+ * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Don't
+ check -rpath nor LD_RUN_PATH for cross link.
+ * ld.texinfo: Document the change.
- * emulparams/elf32mcore.sh (GENERATE_SHLIB_SCRIPT): Define.
- (TEMPLATE_NAME): Define.
+2000-08-24 Hans-Peter Nilsson <hp@axis.com>
-Thu May 13 09:48:09 1999 Joel Sherrill (joel@OARcorp.com)
+ * NEWS: Mention support for CRIS.
- * configure.tgt (i386-*-rtemself*, sh-*-rtemself*): New targets.
- (mips*el-*-rtems*, powerpcle-*-rtems*): New targets.
+2000-08-23 H.J. Lu <hjl@gnu.org>
-1999-05-10 DJ Delorie <dj@cygnus.com>
+ * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Get
+ the current runpath list from bfd_elf_get_runpath_list ()
+ before search.
- * scripttempl/pe.sc: Specify the output arch, which Ian says is
- the Right Thing to do.
+2000-08-22 H.J. Lu <hjl@gnu.org>
- * emultempl/pe.em: various changes to parameterize the
- target-specific information.
- (gld_i386pe_after_open): Detect and fix MS import libraries
- by renaming the member objects (which are all named the same).
+ * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Search
+ the DT_RPATH/DT_RUNPATH entries for DT_NEEDED after
+ LD_LIBRARY_PATH for native linker. Display the needed DSO if
+ trace_file_tries is non-zero.
+ (gld${EMULATION_NAME}_try_needed): Report the needed DSO found
+ if trace_file_tries is non-zero.
- * pe-dll.c: various changes to parameterize the target-specific
- information.
- (generate_reloc): support relocs more generically to allow for
- expansion.
- (pe_exe_build_sections): new; used to add .relocs to .exes
- (pe_exe_fill_sections): ditto
+ * ld.texinfo: Document the usage of DT_RPATH/DT_RUNPATH.
+ * NEWS: Mention it.
-1999-05-10 Catherine Moore <clm@cygnus.com>
+2000-08-14 Jason Eckhardt <jle@cygnus.com>
- * emultempl/pe.em (gld_${EMULATION_NAME}_after_open):
- Check for TARGET_IS_arm_epoc_pe.
- (gld_${EMULATION_NAME}_before_allocation): Likewise.
+ * NEWS: Mention i860 support.
-1999-05-12 Anthony Green <green@cygnus.com>
+2000-08-14 Andreas Schwab <schwab@suse.de>
- * ldlang.c (walk_wild, walk_wild_file, walk_wild_section,
- output_section_callback, gc_section_callback): New functions for
- generic section walks.
- (wild, lang_gc_wild): Use walk_wild.
- (wild_file, lang_gc_wild_file): Deleted. Common logic moved to
- walk_wild_file.
- (wild_section, lang_gc_wild_section): Deleted. Common logic moved
- to walk_fild_section. Unique logic moved into callbacks
- output_section_callback and gc_section_callback.
+ * scripttempl/elf.sc: Fix last change to use correct comment
+ syntax.
-1999-04-26 Tom Tromey <tromey@cygnus.com>
+2000-08-10 Geoff Keating <geoffk@cygnus.com>
- * aclocal.m4, configure: Updated for new version of libtool.
+ * scripttempl/elf.sc: Add a comment giving the correspondence
+ between sections, per-datum sections, and linkonce sections. Make
+ the comment true even for .bss, .sdata, .sdata2, .sbss, and
+ .sbss2.
-1999-04-12 Philip Blundell <pb@nexus.co.uk>
+2000-08-10 Jason Eckhardt <jle@cygnus.com>
- * emulparams/armelf_linux.sh: New file. Support for ARM
- GNU/Linux ELF ABI.
- * emulparams/armelf_linux26.sh: New file. APCS-26 version of above.
- * configure.tgt: For arm*-*-linux-gnu*, set default emulation to
- `armelf_linux', and also include `armelf_linux26' and `armelf'.
- * Makefile.am: Add rules to make earmlinux.c and earmlinux26.c.
- (ALL_EMULATIONS): Add earmlinux.o and earmlinux26.o.
+ * emulparams/elf32_i860.sh: New file.
+ * configure.tgt: Recognize new target i860-stardent-{sysv4*|elf*}.
+ * Makefile.am (ALL_EMULATIONS): Add eelf32_i860.o.
+ (eelf32_i860.c): New rule.
* Makefile.in: Regenerate.
-1999-04-11 Richard Henderson <rth@cygnus.com>
-
- * Makefile.am (ALL_EMULATIONS): Add elf_i386_be.o.
- * configure.tgt (i[3456]86-*-beos*): Use it.
- * emulparams/elf_i386_be.sh: New file.
- * Makefile.in: Rebuild.
-
- * configure.in (environ): Detect declaration.
- * ldmain.c (main): Don't declare environ.
- * sysdep.h (environ): Declare if needed.
- * configure, config.in: Rebuild.
-
-1999-04-11 Richard Henderson <rth@cygnus.com>
-
- * ldgram.y (ldgram_vers_current_lang): New.
- (vers_defns): Accept `extern "lang" { }' syntax.
- * ldlex.l (vers_node_nesting): New.
- (V_IDENTIFIER): Accept . and $ in symbols.
- (VERS_NODE): Accept `extern "lang" { }' tokens. Nest VERS_NODE states.
- * ldlang.c (lang_new_vers_regex): New `lang' argument. Update callers.
- (lang_vers_match_lang_c): New function.
- (lang_vers_match_lang_cplusplus): New function.
- (lang_vers_match_lang_java): New function.
- (lang_do_version_exports_section): Fix iteration. Don't free
- section contents, as it is still in use by the patterns.
-
-1999-04-10 Richard Henderson <rth@cygnus.com>
-
- * ldmain.c (main): Init link_info.no_undefined.
- * lexsup.c: Add command-line option --no-undefined.
-
-1999-04-06 Ian Lance Taylor <ian@zembu.com>
-
- * ld.h (LC_MESSAGES): Never define.
- * ldmain.c (main): Don't pass LC_MESSAGES to setlocale if the
- system does not define it.
-
-1999-04-06 H.J. Lu <hjl@gnu.org>
-
- * ldmain.h (demangling): Declare.
- * ldmain.c (demangling): New global variable.
- (main): Initialize demangling.
- * ldmisc.c (vfinfo): Don't demangle symbol if ! demangling.
- * lexsup.c (ld_options, parse_args): Handle --demangle and
- --no-demangle.
- * ld.texinfo, ld.1: Document --demangle/--no-demangle.
-
- * ldlex.l (V_IDENTIFIER): Allow '.' in symbol.
-
-1999-04-05 Chris Torek <torek@BSDI.COM>
-
- * emultempl/sunos.em (gld${EMULATION_NAME}_search_dir): Check that
- a shared library really exists, avoiding broken symlinks.
-
- * ldfile.c (ldfile_open_file): Generate a better error message if
- we can't find a -l file.
-
-1999-04-05 DJ Delorie <dj@cygnus.com>
-
- * configure.tgt (i386-*-pe): add targ_extra_ofiles for other PE
- targets (i386-pe and i386-winnt)
-
-1999-04-04 Ian Lance Taylor <ian@zembu.com>
-
- * deffilep.y: Include "sysdep.h" and "ldmisc.h".
- (def_file_add_directive): Change return type to void. Remove
- unused locals sh_reserve, sh_commit, and j.
- (def_ungetc): Always return a value.
- (def_lex): Correct parenthesization of || within &&.
- * deffile.h (def_file_add_directive): Update declaration.
- * pe-dll.c: Include <time.h>, <ctype.h>, and "ldemul.h".
- (generate_edata): Remove unused local i.
- (quoteput): Add cast to avoid warning.
- (pe_dll_generate_def_file): Fix type in format string.
- (quick_symbol): Remove unused local blhe.
- (pe_dll_generate_implib): Add cast to avoid warning.
- (pe_process_import_defs): Remove unused locals ar_head, ar_tail,
- and n.
- (pe_as16): Comment out.
-
-1999-04-04 Don Bowman <don@pixsci.com>
-
- * configure.tgt: Add mips*-*-vxworks* target.
-
-1999-03-31 Nick Clifton <nickc@cygnus.com>
-
- * Makefile.in (ALL_EMULATIONS): Add earm_epoc_pe.o
- Add build rule and dependencies for earm_epoc_pe.c.
-
- * emulparams/arm_epoc_pe.sh: New file.
-
- * configure.tgt: Add 'targ_extra_ofiles' for ARM based PE
- targets.
-
-1999-03-31 Philip Blundell <pb@nexus.co.uk>
-
- * configure.tgt: Match `arm*-*-linux-gnu*' not
- `armv*-*-linux-gnu'.
+2000-08-10 Nick Clifton <nickc@cygnus.com>
-1999-03-26 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+ * emulparams/mipspe.sh (ENTRY): Add definition.
- * scripttempl/elf.sc: Put the .eh_frame and .gcc_except_table
- sections in the data segment.
+2000-08-08 Peter Jeremy <peter.jeremy@alcatel.com.au>
-Fri Mar 26 12:05:51 1999 Catherine Moore <clm@cygnus.com>
-
- * ld.h (wildcard_spec): Add exclude_name.
- * ldgram.y (EXCLUDE_FILE): New token.
- (wildcard_spec): Set exclude_name.
- (file_NAME_list): Recognize EXCLUDE_FILE.
- * ldlang.c (wild_section): Check for excluded files.
- (print_wild_statement): Print excluded files.
- (lang_add_wild): New argument exclude_filename.
- Set exclude_filename.
- * ldlang.h (lang_wild_statement_type): Add exclude_filename.
- * ldlex.l: New token EXCLUDE_FILE.
- * mri.c (mri_draw_tree): Add argument to lang_add_wild.
- * scripttempl/elf.sc (CTOR, DTOR): Exclude crtend.o from ctor wildcard.
- Reorder sorted and unsorted ctors.
- * scripttempl/elfd10v.sc (CTOR, DTOR): Likewise.
- * scripttempl/elfd30v.sc (CTOR, DTOR): Likewise.
- * scripttempl/elfppc.sc (CTOR, DTOR): Likewise.
-
-1999-03-26 Nick Clifton <nickc@cygnus.com>
-
- * ldlang.c (lang_gc_sections): If entry_symbol is not defined,
- default to "start".
-
-1999-03-03 Nick Clifton <nickc@cygnus.com>
-
- * scripttempl/elf.sc: Add explicit placements for the .eh_frame
- and .gcc_except_table sections.
-
-Wed Mar 3 09:13:34 1999 Catherine Moore <clm@cygnus.clm>
-
- * scripttempl/elf.sc: Remove .end.ctors and .end.dtors
- sections. Reorder .ctors section entries.
- * scripttempl/elfd10v.sc: Likewise.
- * scripttempl/elfd30v.sc: Likewise.
- * scripttempl/elfppc.sc: Likewise.
-
-1999-02-26 Jim Lemke <jlemke@cygnus.com>
-
- * ldmain.c (main): Wrong error msg for -r and --mpc860c0.
-
-1999-02-25 Nick Clifton <nickc@cygnus.com>
-
- * ldlang.c (lang_check_section_addresses): Remove extraneous
- backslash.
-
-Thu Feb 25 15:07:24 1999 Catherine Moore <clm@cygnus.com>
-
- * scripttempl/elf.sc: Don't gather .ctor and .dtor sections
- for relocateable links.
- * scripttempl/elfd10v.sc: Likewise.
- * scripttempl/elfd30v.sc: Likewise.
- * scripttempl/elfppc.sc: Likewise.
-
-1999-02-22 Jim Lemke <jlemke@cygnus.com>
-
- * ldint.texinfo: remove extraneous right brace.
- * ldmain.c (main): initialize and check option "mpc860c0".
- * lexsup.c (ld_options, parse_args): add option "mpc860c0".
-
-Wed Feb 17 12:10:06 1999 Stan Cox <scox@cygnus.com>
-
- * mpw-elfmips.c (gldelf32ebmip_before_allocation): Remove special
- .reginfo section handling.
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Likewise.
- * emulparams/elf32elmip.sh (INITIAL_READONLY_SECTIONS): Removed
- * emulparams/elf32ebmip.sh (INITIAL_READONLY_SECTIONS): Removed
-
-1999-02-17 Nick Clifton <nickc@cygnus.com>
-
- Patch from: Scott Bambrough <scottb@corelcomputer.com>
-
- * configure.tgt: Added armv*-*-linux-gnu to $targ_emul
- recognition.
-
-Wed Feb 17 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * emultempl/armelf_oabi.em
- (bfd_elf32_arm_allocate_interworking_sections,
- bfd_elf32_arm_get_bfd_for_interworking,
- bfd_elf32_arm_process_before_allocation): Define them to use the
- old ABI versions of the functions.
-
-Tue Feb 16 16:48:19 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Change AC_PREREQ to 2.13. Change AM_PROG_INSTALL
- to AC_PROG_INSTALL. Change AM_EXEEXT to AC_EXEEXT.
- * Makefile.am (earmelf_oabi.c): Changes spaces to tab.
- * acconfig.h: Remove.
- * aclocal.m4: Rebuild.
- * configure: Rebuild.
- * Makefile.in: Rebuild.
-
-Mon Feb 15 18:21:48 1999 Vladimir N. Makarov <vmakarov@cygnus.com>
-
- * ldexp.h (struct etree_value_type): Change valid onto valid_p.
-
- * ldexp.c (new_abs): Ditto.
- (new_rel, new_rel_from_section, fold_binary, invalid, fold_name,
- exp_fold_tree, exp_binop, exp_trinop, stat_alloc,
- exp_get_abs_int): Ditto
-
- * ldlang.c (print_assignment, lang_size_sections,
- lang_do_assignments): Ditto.
-
-1999-02-11 Nick Clifton <nickc@cygnus.com>
-
- * ldlang.c (lang_check_section_addresses): New function: Check
- addresses assigned to section for overlaps.
- (lang_process): Call lang_check_section_addresses if suitable.
-
- * ld.h: Add new boolean field to args_type structure:
- 'check_section_addresses'.
-
- * ldmain.c: Initialise check_section_addresses field to true.
-
- * lexsup.c: Add new command line options '--no-check-sections' and
- '--check-sections'.
-
- * ld.texinfo: Document new command line options '--check-sections'
- and '--no-check-sections'.
-
-1999-02-08 Nick Clifton <nickc@cygnus.com>
-
- * configure.tgt: Add support for StrongARM target.
-
-Wed Feb 3 19:41:01 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * ldctor.c (ldctor_build_sets): Just set SEC_KEEP once. Check for
- an owner of a section before using it to look up a reloc type.
- Don't set SEC_KEEP for the absolute section.
-
-Mon Feb 1 11:39:46 1999 Catherine Moore <clm@cygnus.com>
-
- * Makefile.am (earmelf_oabi.o): New.
- * Makefile.in: Regenerate.
- * configure.tgt (arm-*-oabi): New.
- (thumb-*-oabi): New.
- * emulparams/armelf_oabi.sh: New.
- * emultempl/armelf_oabi.em: New.
-
-1999-01-31 17:57:31 1998 Michael Meissner <meissner@cygnus.com>
+ * emultempl/elf32.em (_after_close): Refer to -rpath not --rpath
+ in error message.
- * scripttempl/elfppc.sc: Add support for -fleading-underscores
- switch in all linker generated symbols.
+2000-08-08 Stephane Carrez <Stephane.Carrez@worldnet.fr>
- * configure.tgt (powerpc{,le}*-*-vxworks): Add as aliases for
- powerpc{,le}-*-eabi.
+ * scripttempl/elfm68hc11.sc: Define __bss_size symbol to indicate
+ the final size of .bss section.
+ * scripttempl/elfm68hc12.sc: Likewise.
-Wed Jan 20 17:01:48 1999 Ian Lance Taylor <ian@cygnus.com>
+2000-08-04 Alan Modra <alan@linuxcare.com.au>
- * configure.tgt (i[3456]86-*-solaris2*): New target. From Pavel
- Roskin <pavel_roskin@geocities.com>.
+ * emultempl/elf32.em (gld_${EMULATION_NAME}_parse_args): Rename to
+ gld${EMULATION_NAME}_parse_args for consistency. Combine
+ lastoptind and prevoptind vars, and keep track of last optind.
+ (gld_${EMULATION_NAME}_list_options): Rename to
+ gld${EMULATION_NAME}_list_options.
-1999-01-19 Nick Clifton <nickc@cygnus.com>
+2000-08-03 Rodney Brown <RodneyBrown@pmsc.com>
- * ldlang.c (lang_size_sections): Count loadable sections as
- contributing to the size of the current segment.
+ * configure.tgt: Select targ_emul=elf_i386 for Unixware 7
+ (i586-sco-sysv5uw7.1.0).
-1999-01-15 Nick Clifton <nickc@cygnus.com>
+2000-07-27 H.J. Lu <hjl@gnu.org>
- * ldlang.c (lang_size_sections): Only update the current
- address of a region if the section just placed into it is an
- allocated section.
+ * emulparams/elf64alpha.sh (PARSE_AND_LIST_ARGS): Removed.
+ (PARSE_AND_LIST_PROLOGUE): New.
+ (PARSE_AND_LIST_LONGOPTS): Likewise.
+ (PARSE_AND_LIST_OPTIONS): Likewise.
+ (PARSE_AND_LIST_ARGS_CASES): Likewise.
+ (PARSE_AND_LIST_EPILOGUE): Likewise.
-1999-01-12 Nick Clifton <nickc@cygnus.com>
+2000-07-28 Alan Modra <alan@linuxcare.com.au>
- * Makefile.am: Replace efr30.o with eelf32fr30.o.
+ * emultempl/armelf.em: Elide functions common to elf32.em,
+ ie. most of the file.
+ (arm_elf_after_open): New. Do arm specific things then call
+ gld${EMULATION_NAME}_after_open.
+ (arm_elf_before_allocation): New. Call
+ gld${EMULATION_NAME}_before_allocation then do arm specifics.
+ (PARSE_AND_LIST_PROLOGUE): Define.
+ (PARSE_AND_LIST_SHORTOPTS): Define.
+ (PARSE_AND_LIST_LONGOPTS): Define.
+ (PARSE_AND_LIST_OPTIONS): Define.
+ (PARSE_AND_LIST_ARGS_CASES): Define.
+ (LDEMUL_AFTER_OPEN): Define.
+ (LDEMUL_BEFORE_ALLOCATION): Define.
+ (LDEMUL_BEFORE_PARSE): Define.
+ (LDEMUL_FINISH): Define.
+
+ * emultempl/hppaelf.em: Similarly zap most of this file.
+ (hppaelf_add_stub_section): Prototype.
+ (hppaelf_layaout_sections_again): Prototype.
+ (hook_in_stub): Prototype.
+ (LDEMUL_SET_OUTPUT_ARCH): Define.
+ (LDEMUL_FINISH): Define.
+ (LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS): Define.
+
+ * emulparams/armelf.sh (TEMPLATE_NAME): Use elf32.
+ (EXTRA_EM_FILE): New.
+ * emulparams/armelf_linux.sh: Likewise.
+ * emulparams/armelf_linux26.sh: Likewise.
+ * emulparams/hppalinux.sh: Likewise.
+ * emulparams/hppaelf.sh: Likewise.
+ (NOP): Define.
+
+ * emultempl/elf32.em: Fix formatting.
+ (EXTRA_EM_FILE): Source it.
+ (LDEMUL_BEFORE_PARSE, LDEMUL_SYSLIB, LDEMUL_HLL,
+ LDEMUL_AFTER_PARSE, LDEMUL_AFTER_OPEN, LDEMUL_AFTER_ALLOCATION,
+ LDEMUL_SET_OUTPUT_ARCH, LDEMUL_CHOOSE_TARGET,
+ LDEMUL_BEFORE_ALLOCATION, LDEMUL_GET_SCRIPT, LDEMUL_FINISH,
+ LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS,
+ LDEMUL_OPEN_DYNAMIC_ARCHIVE, LDEMUL_PLACE_ORPHAN,
+ LDEMUL_SET_SYMBOLS, LDEMUL_PARSE_ARGS, LDEMUL_UNRECOGNIZED_FILE,
+ LDEMUL_LIST_OPTIONS, LDEMUL_RECOGNIZED_FILE,
+ LDEMUL_FIND_POTENTIAL_LIBRARIES): New shell vars. Add code to
+ allow functions in this file to be overridden.
+ (PARSE_AND_LIST_SHORTOPTS): Handle it.
+
+ * emultempl/m68kcoff.em: Include ldfile.h before ldemul.h.
+
+ * emultempl/elf32.em: Reorganize file.
+
+2000-07-27 Ivan Kokshaysky <ink@jurassic.park.msu.ru>
+
+ * emulparams/elf64alpha.sh: Implement "-taso" emulation
+ specific option to fit 64-bit executable in the lower
+ 31-bit address range. This is done by changing start
+ address of .interp (the very first section of executable)
+ and then setting EF_ALPHA_32BIT elf header flag.
+
+2000-07-21 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * emultempl/m68kcoff.em: New file.
+ * emulparams/m68kcoff.sh (TEMPLATE_NAME): Use m68kcoff template.
+ * Makefile.am (em68kcoff.c): Depend on m68kcoff.em rather than
+ generic.em.
* Makefile.in: Regenerate.
- * configure.tgt: Replace fr30 with elf32fr30.
-
- * emulparams/elf32fr30.sh: New file: Replaces fr30.sh, and uses
- generic elf.sc script. Also replaces the .stack section with a
- user definable symbol __stack.
-
-1999-01-11 Nick Clifton <nickc@cygnus.com>
+2000-07-20 H.J. Lu <hjl@gnu.org>
- * scripttempl/fr30.sc: Fill .init and .fini sections with NOP
- pattern.
+ * emultempl/elf32.em (longopts): Duplicate "disable-new-dtags"
+ and "disable-new-dtags" to stop getopt from treating -d/-e as
+ abbreviations for these options.
-1999-01-03 Ken Raeburn <raeburn@cygnus.com>
+2000-07-20 H.J. Lu <hjl@gnu.org>
- * Makefile.am (check-DEJAGNU): No longer provide HOSTING_EMU,
- HOSTING_CRT0, HOSTING_LIBS; the test suite can extract them from
- configure.host and configure.tgt now.
- * Makefile.in: Rebuild.
-
-1998-12-27 Ulrich Drepper <drepper@cygnus.com>
-
- * lexsup.c (parse_args, case OPTION_RPATH): Avoid adding duplicate
- elements to rpath.
-
-Thu Dec 10 11:12:28 1998 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * Makefile.am (ALL_EMULATIONS): Remove pe-dll.o and deffilep.o.
- (ALL_EMUL_EXTRA_OFILES): New variable. Put them here instead.
- * configure.in: Set EMUL_EXTRA_OFILES to $(ALL_EMUL_EXTRA_OFILES)
- if configuring with all targets.
- * configure, Makefile.in, aclocal.m4: Rebuild.
-
- * emultempl/pe.em (pe_enable_stdcall_fixup): Make static.
- (pe_dll_do_default_excludes): Removed, unused.
- (pe_def_file, pe_dll_export_everything, pe_dll_kill_ats,
- pe_dll_stdcall_aliases): Don't initialize them, this file may be
- compiled more than once.
- * pe-dll.c (pe_def_file, pe_dll_export_everything,
- pe_dll_do_default_excludes, pe_dll_kill_ats,
- pe_dll_stdcall_aliases): Define and initialize them here instead.
- (generate_reloc): Fix allocation of reloc_addresses array to use
- bfd_vma instead of unsigned long. Fix element size in qsort call.
- (reloc_sort): Compare pointers to bfd_vma instead of unsigned
- long.
-
-Mon Dec 7 21:10:09 1998 J.J. van der Heijden <j.j.vanderheijden@student.utwente.nl>
-
- * configure.tgt (i[3456]86-*-mingw32*): Add cygwin target specific
- files.
-
-Sun Dec 6 16:33:33 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.tgt (m68*-*-gnu*): New target. From Aymeric Vincent
- <aymeric.vincent@emi.u-bordeaux.fr>.
-
-1998-12-04 Nick Clifton <nickc@cygnus.com>
-
- * emulparams/fr30.sh (TEXT_START_ADDR): Change TEXT_START_ADDR
- from 0x100000 to 0x10000 so that it fits in 20 bits.
-
-Sat Nov 28 22:32:20 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * ldemul.h (ldemul_recognized_file): Declare.
-
-Sat Nov 28 22:30:55 1998 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * ldlang.c (lang_add_wild): Don't pretend that there is an input
- file if the filename is a wildcard pattern.
-
-1998-11-25 DJ Delorie <dj@cygnus.com>
-
- * ldemul.h (ld_emulation_xfer_struct): new hook "recognized_file"
- * ldemul.c (ldemul_recognized_file): new function, new hook
- * ldint.texinfo: document new hook.
- * ldlang.c (load_symbols): call recognized_hook for all objects we
- do recognize, in case the emulation needs to handle them
- specially. PE DLLs use this.
- * pe-dll.c (pe_dll_generate_def_file): take out hack and debug
- printfs
- * emultempl/pe.em (gld_i386_recognized_file): new function
- (gld_i486_unrecognized_file): take out hack
-
-1998-11-23 DJ Delorie <dj@cygnus.com>
-
- * pe-dll.c (fill_edata): fill in timestamp
- (make_head): name object files sequentially to ensure
- they link in the right order.
- (make_tail): same here
- (pe_process_import_defs): use sequential names for bfds to ensure
- proper link order.
- (pe_implied_import_dll): new function; handles linking directly
- against DLLs by simulating IMPORTS directives. * emultempl/pe.em
- (gld_i386pe_before_parse): hack bfd to not recognize .dll files
- via bfd_pe_dll_not_recognized_hack
-
-1998-11-23 DJ Delorie <dj@cygnus.com>
-
- * emultempl/pe.em (gld_i386pe_parse_args): Conditionalize call to
- pe_dll_add_excludes
+ * ld.texinfo: Add documentation for --disable-new-dtags and
+ --enable-new-dtags.
-Mon Nov 23 14:36:18 1998 Nick Clifton <nickc@cygnus.com>
+ * ldmain.c (main): Initialize link_info.new_dtags to false.
- * emultempl/pe.em (after_parse): Only create an undefined entry
- symbol if one has been specified.
+ * emultempl/elf32.em (gld_${EMULATION_NAME}_parse_args): Add
+ --disable-new-dtags and --enable-new-dtags.
+ (gld_${EMULATION_NAME}_list_options): Likewise.
-1998-11-23 DJ Delorie <dj@cygnus.com>
+2000-07-05 Kenneth Block <krblock@computer.org>
- * emultempl/pe.em (gld_i386pe_after_open): call
- pe_process_import_defs
- * pe-dll.c (pe_dll_generate_def_file): calculate BASE from
- pe_data, only print if actually set. Print version only if
- set.
- (save_relocs): save relocs for both input and output.
- (make_one): support internal/external different names.
- (pe_dll_generate_implib): support new make_one
- (pe_process_import_defs): new function; handles IMPORT
- directives in .def files.
+ * ld/lexsup.c: Add optional style to demangle switch
+ * ld/ld.texinfo: Document optional style to demangle switch.
-Fri Nov 20 13:06:49 1998 Nick Clifton <nickc@cygnus.com>
+2000-07-20 Hans-Peter Nilsson <hp@axis.com>
- * ldmisc.c (vfinfo): Cope with empty symbol names.
-
-Thu Nov 19 13:31:15 1998 Nick Clifton <nickc@cygnus.com>
+ * Makefile.am (ALL_EMULATIONS): Add ecrisaout.o, ecriself.o,
+ ecrislinux.o.
+ (ecrisaout.c, ecriself.c, ecrislinux.c): New rules.
+ Regenerate dependencies.
+ * Makefile.in: Rebuild.
+ * configure.tgt (cris-*-*): New target.
+ * emulparams/crisaout.sh, emulparams/criself.sh,
+ emulparams/crislinux.sh, scripttempl/crisaout.sc: New files.
+ * po/POTFILES.in, po/ld.pot: Regenerate.
- * scripttempl/pe.sc: Add provision of '_end' symbol.
+2000-07-20 H.J. Lu <hjl@gnu.org>
-Wed Nov 18 18:18:43 1998 Geoffrey Noer <noer@cygnus.com>
+ * emultempl/elf32.em (gld_${EMULATION_NAME}_list_options):
+ Print out ignored -z options.
- * configure.tgt: change refs from cygwin32* to cygwin*.
- * aclocal.m4: regenerate
- * configure.in: don't need to call AM_CYGWIN32.
- * configure: regenerate
+2000-07-19 H.J. Lu <hjl@gnu.org>
-Mon Nov 16 22:14:07 1998 DJ Delorie <dj@cygnus.com>
+ * emulparams/elf32mcore.sh (PARSE_AND_LIST_ARGS): Removed.
+ (PARSE_AND_LIST_PROLOGUE): New.
+ (PARSE_AND_LIST_LONGOPTS): Likewise.
+ (PARSE_AND_LIST_OPTIONS): Likewise.
+ (PARSE_AND_LIST_ARGS_CASES): Likewise.
- * emultempl/pe.em (gld_i386_finish): generate import library
- * deffile.h: add hint member.
- * pe-dll.c (pe_dll_generate_implib): New function with helpers;
- generates the import library directly from the export table.
- (fill_edata): remember the actual hint for the import library.
+ * ldmain.c (main): Clear link_info.flags and link_info.flags_1.
-Sat Nov 14 14:36:24 1998 Ian Lance Taylor <ian@cygnus.com>
+ * lexsup.c (ld_options): Comment out 'z'.
+ (parse_args): Likewise.
- * ld.1: Some cleanups from NOKUBI Hirotaka <hnokubi@yyy.or.jp>.
+ * emultempl/elf32.em: Include "elf/common.h".
+ (gld_${EMULATION_NAME}_parse_args): Defined. Handle some -z
+ options.
+ (gld_${EMULATION_NAME}_list_options): Likewise.
-Thu Nov 12 19:21:57 1998 Dave Brolley <brolley@cygnus.com>
+ * ld.texinfo: Add documentation for the recognized -z options.
- * po/ld.pot: Regenerated.
- * po/POTFILES.in: Regenerated.
- * configure: Regenerated.
- * aclocal.m4: Regenerated.
- * Makefile.in: Regenerated.
+2000-07-19 H.J. Lu <hjl@gnu.org>
-Wed Nov 11 18:10:15 1998 DJ Delorie <dj@cygnus.com>
+ * emultempl/elf32.em (gld${EMULATION_NAME}_try_needed): Call
+ bfd_elf_set_dt_needed_soname ().
- * pe-dll.c (generate_reloc): don't output PE relocs for sections
- that won't be loaded.
+2000-07-18 DJ Delorie <dj@cygnus.com>
-Wed Nov 11 13:44:54 1998 DJ Delorie <dj@cygnus.com>
+ * pe-dll.c (pe_dll_id_target): check object target name also
- * pe-dll.c (fill_edata): don't strip underscores
+2000-07-18 Hans-Peter Nilsson <hp@axis.com>
-Tue Nov 10 21:28:19 1998 DJ Delorie <dj@cygnus.com>
+ * scripttempl/elf.sc (.init): Only do ${INIT_START} and
+ ${INIT_END} if relocating.
+ (.fini): Likewise ${FINI_START} and ${FINI_END}.
- * ld.texinfo: added i386pe option summary
+2000-07-16 Charles Wilson <cwilson@ece.gatech.edu>
-Tue Nov 10 17:53:17 1998 DJ Delorie <dj@cygnus.com>
+ * src/ld/emultempl/pe.em (gld_*_open_dynamic_archive): New search
+ order for dynamic library '-lfoo' on pei386: libfoo.dll.a,
+ foo.dll.a, libfoo.a, libfoo.dll, foo.dll. This fixes compatibility
+ errors introduced by the old dynamic lib search order.
- * pe-dll.c (process_def_file): properly note undefined exported
- symbols, clean up old code.
- (pe_dll_generate_def_file): don't crash if pe_def_file is NULL
- * emultempl/pe.em (gld_i386_parse_args): add
- (en/dis)able-stdcall-fixups
- (pe_fixup_stdcalls): warn about stdcall fixups
- (gld_i386_unrecognized_file): make exported symbols undefs so that
- archive members get pulled in
+2000-07-17 DJ Delorie <dj@cygnus.com>
-Tue Nov 10 14:50:51 1998 Catherine Moore <clm@cygnus.com>
+ * pe-dll.c (process_def_file): auto-export data items also
+ (pe_process_import_defs): also see if _imp_ form needed
- * scripttempl/elfd10v.sc: Add KEEP attribute to .init,
- .fini, .dtors and .ctors. Add .data and .text
- wildcards to support section garbage collection.
+2000-07-12 Charles Wilson <cwilson@ece.gatech.edu>
-Mon Nov 9 22:52:50 1998 DJ Delorie <dj@indy.delorie.com>
+ * pe-dll.c (make_one): fix a typo in the __imp_ name decoration
+ for dll import libraries
- * deffilep.y: properly handle relocs with multiple def_files,
- cache import module names
+2000-07-12 Mark Elbrecht <snowball3@bigfoot.com>
-Mon Nov 9 22:44:58 1998 DJ Delorie <dj@cygnus.com>
+ * scripttempl/i386go32.sc: Support the g++ attribute init_priority in
+ gcc 2.95.2 and later.
- * pe-dll.c (process_def_file): don't assume exports won't move
- during a realloc
+2000-07-11 Kazu Hirata <kazu@hxi.com>
-Mon Nov 9 16:41:30 1998 DJ Delorie <dj@cygnus.com>
+ * ldfile.c (ldfile_try_open_bfd): Output '\n' after an error
+ message.
- * pe-dll.c: New file; direct support for PE DLLs
- * deffile.h: New file; direct support for PE DLLs
- * deffilep.y: New file; direct support for PE DLLs
- * emultempl/pe.em: add direct support for PE DLLs
- * configure.tgt: allow target-specific extra files
- * configure.in: allow target-specific extra files
- * ldlang.c (lang_add_assignment): return the assignment so that
- one can change the value later based on the object files (pe-dll
- DEF files do this)
- * ldint.texinfo: add section for emulation walkthrough
- * Makefile.am: add new files and target-specific extra files
- * emultempl/pe.em (gld_i386_list_options): list dll-specific
- options.
- * pe-dll.c (process_def_file): auto-export everything if
- nothing is otherwise exported.
-
-Wed Nov 4 16:39:18 1998 Nick Clifton <nickc@cygnus.com>
+2000-07-10 Alan Modra <alan@linuxcare.com.au>
- * Makefile.am: Add support for FR30 target.
- * configure.tgt: Add support for FR30 target.
+ * ldemul.h (struct lang_input_statement_struct): Remove forward
+ declaration.
+ (struct search_dirs): Likewise.
+ * ldfile.h (struct lang_input_statement_struct): Likewise.
+ Protect file from multiple inclusion.
+ * ldlang.h (LANG_FOR_EACH_INPUT_STATEMENT): Move file_chain
+ declaration from macro to file scope.
+
+ * ldemul.c: ldexp.h,ldlang.h,ldfile.h,ldemul.h go in this order.
+ * ldgram.y: Likewise here.
+ * ldlang.c: And here.
+ * ldmain.c: And here.
+ * mpw-elfmips.c: And here.
+ * mpw-eppcmac.c: And here.
+ * emultempl/aix.em: And here.
+ * emultempl/armcoff.em: And here.
+ * emultempl/armelf.em: And here.
+ * emultempl/armelf_oabi.em: And here.
+ * emultempl/beos.em: And here.
+ * emultempl/elf32.em: And here.
+ * emultempl/hppaelf.em: And here.
+ * emultempl/linux.em: And here.
+ * emultempl/lnk960.em: And here.
+ * emultempl/pe.em: And here.
+ * emultempl/sunos.em: And here.
+ * mpw-esh.c: And here. Include ldexp.h and ldlang.h too.
+ * mpw-idtmips.c: Ditto.
+ * emultempl/generic.em: Ditto.
+ * emultempl/gld960.em: Ditto.
+ * emultempl/gld960c.em: Ditto.
+ * emultempl/mipsecoff.em: Ditto.
+ * emultempl/ticoff.em: Ditto.
+ * emultempl/vanilla.em: Ditto.
+
+ * pe-dll.c: Include ldfile.h
+ * ldver.c: Include ldexp.h, ldlang.h, ldfile.h
+
+ * mpw-elfmips.c: (gldelf32ebmip_before_allocation): Add missing
+ arguments to bfd_elf32_size_dynamic_sections call.
+ (gldelf32ebmip_place_orphan): Add missing arguments to
+ lang_leave_output_section_statement call.
+
+2000-07-10 H.J. Lu <hjl@gnu.org>
+
+ * emultempl/pe.em (pe_enable_stdcall_fixup): Protect with
+ DLL_SUPPORT.
+ (strhash): Likewise.
+ (compute_dll_image_base): Likewise.
+ (pe_undef_found_sym): Likewise.
+ (pe_undef_cdecl_match): Likewise.
+ (gld_${EMULATION_NAME}_open_dynamic_archive): Mark the
+ argument "arch" with ATTRIBUTE_UNUSED.
+
+2000-07-10 Alan Modra <alan@linuxcare.com.au>
+
+ * configure.tgt: Remove extraneous hppa*-*-linux-gnu*.
+
+ From Ryan Bradetich <rbradetich@uswest.net>
+ * ldwrite.c (SSIZE): Remove to cure macro redefinition warning.
+
+2000-07-09 Alan Modra <alan@linuxcare.com.au>
+
+ Changes to create multiple linker stubs, positioned immediately
+ before the section where they are required.
+ * emultempl/hppaelf.em: Include elf32-hppa.h.
+ (stub_sec, file_chain): Delete.
+ (hppaelf_create_output_section_statements): Don't make a stub
+ section here.
+ (hook_stub_info): New struct.
+ (hook_in_stub): New function.
+ (hppaelf_add_stub_section): New function.
+ (hppaelf_finish): Do nothing for relocateable links. Modify the
+ call to elf32_hppa_size_stubs. Move code for updating section
+ layout from here...
+ (hppaelf_layaout_sections_again): ..to here, a new function.
+
+ * emultempl/hppaelf.em (hppaelf_delete_padding_statements): Fix
+ broken list handling. Pass in a pointer to the list.
+ (hppaelf_finish): Update call to hppaelf_delete_padding_statements
+ for above changes.
+ (hppaelf_before_parse): Prototype.
+ (hppaelf_set_output_arch): Prototype.
+ (hppaelf_create_output_section_statements): Prototype.
+ (hppaelf_delete_padding_statements): Prototype.
+ (hppaelf_finish): Prototype.
+
+ Merge from elf32.em
+ * emultempl/hppaelf.em: Include ctype.h.
+ (struct orphan_save): New.
+ (gld${EMULATION_NAME}_place_orphan): New.
+ (output_rel_find): New.
+ (hppaelf_get_script): Update from elf32.em.
+ (ld_hppaelf_emulation): Rename to ld_${EMULATION_NAME}_emulation.
+ Change emulation_name field to "${EMULATION_NAME}". Add
+ gld${EMULATION_NAME}_place_orphan.
+
+ * Makefile.am (ALL_EMULATIONS): Reinstate ehppaelf.o, add
+ ehppalinux.o, sort it. Regenerate dependencies.
+ (ehppalinux.c): Depend on hppaelf.em
* Makefile.in: Regenerate.
- * emulparams/fr30.sh: New file.
- * scripttemp/fr30.sc: New file.
-
-Mon Nov 2 14:47:15 1998 Catherine Moore <clm@cygnus.com>
-
- * ldmain.c (main): Don't report error for dynamic links and
- --gc-sections.
-
-1998-10-26 16:05 Ulrich Drepper <drepper@cygnus.com>
-
- * lexsup.c (ld_options): Change text of -O to Optimize output file".
- (parse_args): Set link_info.optimize based on -O argument.
- * ldmain.c (main): Initialize link_info.optimze to false.
- * ld.texinfo: Describe -O option.
- * ld.1: Likewise.
-
-Mon Oct 12 14:29:56 1998 Nick Clifton <nickc@cygnus.com>
-
- * scripttempl/v850.sc: Move .sbss and .scommon sections into their
- own segment, so that they can be next to the .bss section and so
- initialised by the same piece of code.
-
-Fri Oct 9 15:59:52 1998 Catherine Moore <clm@cygnus.com>
-
- * scripttempl/elf.sc: Merge .sdata.* etc sections.
- * ldctor.c (ldctor_build_sets): Set SEC_KEEP for
- ctor sections.
-
-Mon Oct 5 09:40:43 1998 Catherine Moore <clm@cygnus.com>
-
- * ldmain.c (main): Error if --gc-sections and
- dyanmic linking.
- * scripttempl/v850.sc: Add KEEP attribute to .init,
- .fini, .dtors and .ctors. Add .data and .text
- wildcards to support section garbage collection.
-
-Wed Sep 30 11:19:15 1998 Nick Clifton <nickc@cygnus.com>
-
- * scripttempl/v850.sc: Rename .call_table section to
- .call_table_data and create a new section called
- .call_table_text.
-
-Sun Sep 20 00:43:26 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/elf.sc: Add alignment at the end of the .bss
- section, so that it is included in the memsize of the segment.
-
-Fri Sep 18 13:42:42 1998 Catherine Moore <clm@cygnus.com>
- * emultempl/elf32.em (gld_place_orphan): Don't process for
- sections with SEC_EXCLUDE flag.
+ * configure.tgt: targ_emul=hppalinux for hppa*linux
-Fri Sep 4 09:24:02 1998 Nick Clifton <nickc@cygnus.com>
+ * emulparams/hppalinux.sh: New.
+ * emulparams/hppaelf.sh (TARGET_PAGE_SIZE): Write in hex.
- * emulparams/d30velf.sh (TEXT_SIZE): Increased to 2000K.
- (DATA_SIZE): Increased to 2000K.
+2000-07-08 Alan Modra <alan@linuxcare.com.au>
-Thu Sep 3 17:30:58 1998 Richard Henderson <rth@cygnus.com>
+ * lexsup.c (parse_args): Copy section name.
- * emulparams/d10velf.sh (TEMPLATE_NAME): Use elf32.
+2000-07-07 Charles Wilson <cwilson@ece.gatech.edu>
-Mon Aug 31 01:06:00 1998 Catherine Moore <clm@cygnus.com>
+ * emultempl/pe.em: institute the following search order for
+ dynamic libraries on pei386: libfoo.dll.a, foo.dll.a (import
+ libs), libfoo.dll, foo.dll (link direct to dll). Fall back to
+ static lib (libfoo.a) if none of the above are found.
- * Makefile.am: Change armelf.sc to elf.sc
- * Makefile.in: Regenerate.
+2000-07-07 Mumit Khan <khan@xraylith.wisc.edu>
-Mon Aug 31 11:12:04 1998 Catherine Moore <clm@cygnus.com>
+ * emultempl/pe.em (pe_enable_auto_image_base): New variable.
+ (longopts): New --{enable,disable}-auto-image-base options.
+ (gld_${EMULATION_NAME}_list_options): Document.
+ (gld_${EMULATION_NAME}_parse): Handle.
+ (strhash): New static function.
+ (compute_dll_image_base): New static function.
+ (gld_${EMULATION_NAME}_set_symbols): Use.
- * emulparams/armelf.sh: Change SCRIPT_NAME to
- elf. Change TEXT_START_ADDR to 0x8000. Define
- OTHER_TEXT_SECTIONS, OTHER_BSS_SYMBOLS and
- OTHER_BSS_END_SYMBOLS.
- * scripttempl/elf.sc: Modify to use
- OTHER_BSS_END_SYMBOLS.
- * scripttempl/elfarm.sc: Remove file.
+2000-07-05 DJ Delorie <dj@redhat.com>
-Tue Aug 18 12:05:34 1998 Catherine Moore <clm@cygnus.com>
+ * MAINTAINERS: new
- * emultempl/armelf.em (gld_armelf_before_allocation):
- Add bfd_ prefix to elf32_arm_process_before_allocation
- and elf32_arm_allocate_interworking_sections.
- (gld_armelf_after_open): Add bfd_ prefix to
- elf32_arm_get_bfd_for_interworking.
+2000-07-01 Koundinya K <kk@ddeorg.soft.net>
-Fri Aug 14 15:34:29 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am: Rebuild dependencies.
- * Makefile.in: Rebuild.
-
- * ldgram.y: Include "ldctor.h".
- (statement): Accept SORT around CONSTRUCTORS.
- * ldctor.c: Include <ctype.h>.
- (constructors_sorted): New global variable.
- (ctor_prio, ctor_cmp): New static functions.
- (ldctor_build_sets): Sort constructors if requested.
- * ldctor.h (constructors_sorted): Declare.
- * ldlang.c (print_statement): Print sorted CONSTRUCTORS
- correctly.
- * scripttempl/elf.sc: Add sort around CONSTRUCTORS.
- * ld.texinfo (Output Section Keywords): Document SORT
- (CONSTRUCTORS).
-
-Thu Aug 13 12:20:39 1998 Catherine Moore <clm@cygnus.com>
-
- * emulparams/armelf.sh: Define TEMPLATE_NAME to armelf.
- * scripttempl/elfarm.sc: Include .glue_7t and .glue7
- sections.
- * emultempl/armelf.em: New file.
-
-Thu Aug 13 12:52:45 1998 H.J. Lu <hjl@gnu.org>
-
- * Makefile.am (ld.dvi): Use " instead of ' for MAKEINFO.
+ * configure.tgt: Add traditional mips (mips*-*-sysv4*) target.
+ * emulparams/elf32btsmip.sh: New file.
+ * Makefile.am: Add traditional mips target.
* Makefile.in: Rebuild.
-Tue Aug 11 16:17:01 1998 Catherine Moore <clm@cygnus.com>
-
- * scripttempl/elfarm.sc: Change text start address
- back to zero.
-
-Tue Aug 11 10:01:12 1998 Jeffrey A Law (law@cygnus.com)
-
- * emulparms/mn10200.sh (MAX_PAGESIZE): Define to 1.
- * emulparms/mn10300.sh (MAX_PAGESIZE): Define to 1.
-
-Sun Aug 9 20:31:27 1998 Catherine Moore <clm@cygnus.com>
-
- * scripttempl/elfarm.sc: Set text start address to
- 0x8000. Add __bss_end definition.
-
-Sat Aug 1 11:47:37 1998 Catherine Moore <clm@cygnus.com>
-
- * scripttempl/elfarm.sc: New file.
- * emulparams/armelf.sh: Set SCRIPT_NAME to elfarm.
-
-Fri Jul 31 15:56:16 1998 Catherine Moore <clm@cygnus.com>
+2000-07-01 H.J. Lu <hjl@gnu.org>
- * emulparams/armelf.sh: New file.
- * configure.tgt: Recognize thumb-elf and arm-elf.
- * Makefile.am (earmelf.o): New.
- * Makefile.in: Rebuild.
-
-Fri Jul 24 12:00:57 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (install-exec-local): Don't remove the file before
- checking whether $(bindir) == $(tooldir)/bin. From Maciej
- W. Rozycki <macro@ds2.pg.gda.pl>.
+ * Makefile.am (EXTRA_ld_new_SOURCES): Set to deffilep.y for
+ automake to use YLWRAP.
* Makefile.in: Rebuild.
- * configure.tgt: Recognize h8[35]00*-coff* as well as -hms*.
-
-Thu Jul 23 11:15:12 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/aout.sc: If ALIGNMENT is defined, use it to set
- alignment of end symbol.
- * scripttempl/elf.sc: Likewise.
- * emulparams/sun4.sh (ALIGNMENT): Define.
- * emulparams/elf32_sparc.sh (ALIGNMENT): Define.
- * ldint.texinfo (emulation parameters): Document ALIGNMENT.
-
- * lexsup.c (parse_args): Add missing break statement.
-
- * ldlang.c (lang_gc_sections_1): Add default case to switch to
- avoid warnings.
+2000-07-01 Alan Modra <alan@linuxcare.com.au>
-Tue Jul 14 15:42:17 1998 Richard Henderson <rth@cygnus.com>
-
- * configure.tgt (i?86-*-beos{pe,elf,}*): Recognize.
- * Makefile.am (ei386beos.o): New.
- * emulparams/i386beos.sh: New file.
- * emultempl/beos.em, scripttempl/i386beos.sc: New file.
-
-Tue Jul 14 15:35:42 1998 Richard Henderson <rth@cygnus.com>
-
- * lexsup.c: New option --version-exports-section.
- * ld.h (struct args_type): Add version_exports_section.
- * ldlang.c (lang_do_version_exports_section): New function.
- (lang_process): Call it.
+ * Makefile.am (DEP): Fix 2000-06-22. grep after running dep.sed
+ (CLEANFILES): Add DEPA.
+ * Makefile.in: Regenerate.
-Mon Jul 13 13:20:23 1998 Steve Chamberlain <sac@transmeta.com>
+2000-06-30 Timothy Wall <twall@ppc>
- * ldlex.l: Accept ASSERT.
- * ldgram.y (exp): Add ASSERT_K case.
- * ldexp.h (node_type): Add etree_assert to node_class enum.
- (etree_type): Add assert_s field.
- (exp_assert): Declare.
- * ldexp.c (exp_fold_tree): Handle etree_assert.
- (exp_assert): New function.
- (exp_print_tree): Handle etree_assert.
- * ld.texinfo (Miscellaneous Commands): Document ASSERT.
+ * scripttempl/tic54xcoff.sc: PAGE N is not implemented, so encode
+ the page in the upper octet of the address.
-Wed Jul 8 14:03:12 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-06-26 Marek Michalkiewicz <marekm@linux.org.pl>
- * ldgram.y: Change MAX to MAX_K and MIN to MIN_K, to avoid
- conflicts with system header files. Change all uses.
+ * emulparams/avrmega161.sh (ARCH): Change to avr:5.
- * Makefile.am (MAINTAINERCLEANFILES): Define.
- * Makefile.in: Rebuild.
+2000-06-24 Alan Modra <alan@linuxcare.com.au>
-Tue Jul 7 18:03:22 1998 Ian Lance Taylor <ian@cygnus.com>
+ * NEWS: arm-elf does --gc-sections too.
- * Makefile.am (ldver.texi): New target.
- (ld.info, ld.dvi): Depend upon ldver.texi.
- * ld.texinfo: Include ldver.texi. Mention version number on title
- page and in top node.
- * Makefile.in: Rebuild.
+2000-06-22 Alan Modra <alan@linuxcare.com.au>
-Mon Jul 6 14:55:13 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.tgt (i[3456]86-*-solaris*): New target.
-
-Fri Jul 3 14:19:06 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (wild_section): Don't get an assertion failure if the
- section is discarded.
-
- * scripttempl/pe.sc: Use SORT to sort sections appropriately.
- * emultempl/pe.em (sort_by_file_name): Remove.
- (sort_by_section_name): Remove.
- (sort_sections_1, sort_sections): Remove.
- (gld_${EMULATION_NAME}_before_allocation): Don't call
- sort_sections.
- (hold_section, hold_section_name): New static variables.
- (hold_use, hold_text, hold_rdata, hold_data, hold_bss): Likewise.
- (gld_${EMULATION_NAME}_place_orphan): Rewrite. Look for a good
- place to put the section. Align the section. Sort the input
- sections by name.
- (gld_${EMULATION_NAME}_place_section): New static function.
-
- * ldlang.c (wild_sort): When sorting by file name, sort by archive
- name first.
-
- * emultempl/pe.em (set_pe_subsystem): Don't call
- ldlang_add_undef.
- (gld_${EMULATION_NAME}_after_parse): New static function.
- (ld_${EMULATION_NAME}_emulation): Use new after_parse function
- rather than after_parse_default.
-
- * ldgram.y (extern_name_list): Do not require symbols to be
- separated by commas.
- (ifile_p1): Add EXTERN.
- * ldlex.l: Accept EXTERN in BOTH and SCRIPT mode as well as MRI
- mode.
- * ld.texinfo (Options): Mention that EXTERN is equivalent to -u.
- (Miscellaneous Commands): Document EXTERN.
-
-Wed Jul 1 19:40:34 1998 Richard Henderson <rth@cygnus.com>
-
- * ld.h (args_type): Add gc_sections.
- * ldgram.y (ldgram_had_keep, KEEP): New.
- (input_section_spec_no_keep): Rename from old input_section_spec.
- (input_section_spec): New. Recognize KEEP.
- * ldlang.c (wild_section): Handle keep sections.
- (lang_gc_wild_section, lang_gc_wild_file, lang_gc_wild): New.
- (lang_gc_sections_1, lang_gc_sections): New.
- (lang_process): Invoke lang_gc_sections.
- (lang_add_wild): Add keep argument. Update all callers.
- * ldlang.h (lang_wild_statement_struct): Add keep_sections.
- * ldlex.l (KEEP): Match it.
- * ldmain.c (main): Error on -r and --gc-sections.
- * lexsup.c: Add --gc-sections.
-
- * scripttempl/elf.sc: Merge .text.* etc sections appropriately.
- Mark startup sections with KEEP.
- * scripttempl/elfppc.sc: Likewise.
-
- * ld.texinfo: Update for --gc-sections and KEEP.
-
-Wed Jul 1 15:21:20 1998 Ian Lance Taylor <ian@cygnus.com>
-
- From Peter Jordan <pjordan@chla.usc.edu>:
- * scripttempl/i386go32.sc: Correct constructor handling for -u.
-
-Tue Jun 23 15:17:27 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (install-data-local): Make ldscripts subdirectory.
- * Makefile.in: Rebuild.
+ * Makefile.am (DEP): grep for leading `/' in DEP1, and fail if we
+ find one.
+ * Makefile.in: Regenerate.
-Tue Jun 23 15:17:04 1998 Mike Stump <mrs@wrs.com>
+2000-06-21 H.J. Lu <hjl@gnu.org>
- * Makefile.am (install-exec-local): Don't let EXEEXT interfere
- with the program transform name.
+ * Makefile.am: Rebuild dependency.
* Makefile.in: Rebuild.
-Sun Jun 21 23:55:16 1998 Jeffrey A Law (law@cygnus.com)
+2000-06-20 H.J. Lu <hjl@gnu.org>
- * ld.texinfo: Note that -relax may make symbolic debugging
- impossible on some platforms.
-
-Tue Jun 16 12:51:13 1998 Geoff Keating <geoffk@ozemail.com.au>
-
- * Makefile.am (Makefile): Remove target.
- (config.status): New target.
+ * Makefile.am: Rebuild dependency.
* Makefile.in: Rebuild.
- * configure.host (powerpc*-*-linux-gnu*): New host.
-
-Fri Jun 12 17:38:07 1998 Doug Evans <devans@seba.cygnus.com>
-
- * scripttempl/elf.sc (INPUT_FILES): Optional INPUT spec.
-
- * emulparams/m32relf.sh (OTHER_RELOCATING_SECTIONS): Change top of
- stack to 8MB.
-
-Fri Jun 12 19:33:17 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (HFILES): Remove config.h.
- (EMULATION_OFILES, POTFILES): Move patch of May 14 from
- Makefile.in to Makefile.am.
- (earmcoff.c): Depend upon armcoff.em, not generic.em.
- * po/Make-in (all-yes): Correct misspelling in $(PACKAGE).
- ($(srcdir)/$(PACKAGE).pot): Pass -C to $(XGETTEXT).
- * Makefile.in, po/POTFILES.in, po/ld.pot: Rebuild.
-
-Fri Jun 12 13:43:17 1998 Tom Tromey <tromey@cygnus.com>
-
- * po/Make-in (all-yes): If maintainer mode, depend on .pot file.
- ($(PACKAGE).pot): Unconditionally depend on POTFILES.
-
-Tue Jun 9 09:36:48 1998 Nick Clifton <nickc@cygnus.com>
-
- * ldlang.c (lang_finish): Add CONST type modifier to declaration
- of 'send'.
-
-Fri Jun 5 18:19:59 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/aix.em (gld${EMULATION_NAME}_before_parse): Set
- config.has_shared to true.
- * emultempl/linux.em (gld${EMULATION_NAME}_before_parse):
- Likewise.
- * emultempl/sunos.em (gld${EMULATION_NAME}_before_parse):
- Likewise.
-
-Tue Jun 2 12:55:03 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (lang_finish): If the entry symbol is not found, try
- parsing it as a number.
- * ld.texinfo (Options): Document this.
-
-Mon Jun 1 14:01:20 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo (Input Section Wildcards): Document SORT keyword.
-
-Mon May 18 12:42:53 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * ld.h (ld_config_type): New member has_shared.
- * ldmain.c (main): Initialize it.
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Set it.
- * lexsup.c (parse_args): Treat -shared as error if not supported.
+2000-06-20 Timothy Wall <twall@cygnus.com>
-Mon May 18 13:14:43 1998 Ian Lance Taylor <ian@cygnus.com>
+ * scripttempl/tic54xcoff.sc: New.
+ * ldlang.c (wild_doit): Propagate SEC_BLOCK flag.
+ * gen-doc.texi: Add flag for TI COFF.
+ * ld.texinfo: Add documentation for TI COFF handling switches.
+ * emultempl/ticoff.em: New. TI COFF handling.
+ * configure.tgt: Add tic54x target.
+ * Makefile.am: Add tic54x target.
+ * Makefile.in: Ditto.
- From Jason Merrill <jason@cygnus.com>:
- * ldlang.c (wild_sort): Correct order of sort.
- * scripttempl/elf.sc: Put *crtbegin.o before other .ctors and
- .dtors.
- * scripttempl/elfd10v.sc: Likewise.
- * scripttempl/elfd30v.sc: Likewise.
- * scripttempl/elfppc.sc: Likewise.
+2000-06-20 Alan Modra <alan@linuxcare.com.au>
-Fri May 15 00:22:35 1998 Ian Lance Taylor <ian@cygnus.com>
+ * ldmain.c (set_scripts_dir): Correct pointer comparison when
+ checking for backslashes.
- * ldlex.l: Recognize keyword SORT.
- * ldgram.y (current_file): Change to struct wildcard_spec.
- (%union): Add new fields cname and wildcard.
- (wildcard_name, wildcard_spec): New nonterminals.
- (file_NAME_list): Use wildcard_spec.
- (input_section_spec): Change current_file usage.
- * ld.h (struct wildcard_spec): Define.
- * ldlang.h (lang_wild_statement_struct): Add new fields
- sections_sorted and filenames_sorted.
- (lang_add_wild): Update declaration.
- * ldlang.c (wild_sort): New static function.
- (wild_section): Use wild_sort.
- (print_wild_statement): Print sorting information.
- (lang_add_wild): Add new parameters sections_sorted and
- filenames_sorted. Change all callers.
- * mri.c (mri_draw_tree): Update calls to lang_add_wild.
- * scripttempl/elf.sc: Sort .ctors.* and .dtors.* by section name.
- * scripttempl/elfd10v.sc: Likewise.
- * scripttempl/elfd30v.sc: Likewise.
- * scripttempl/elfppc.sc: Likewise.
+2000-06-19 Alan Modra <alan@linuxcare.com.au>
-Thu May 14 18:39:16 1998 Richard Henderson <rth@cygnus.com>
+ * NEWS: Move entries not in 2.10 above "Changes in version 2.10".
- * emulparams/m32relf.sh (TEMPLATE_NAME): Define.
-
-Thu May 14 14:51:24 1998 Nick Clifton <nickc@cygnus.com>
-
- * ldemul.h: Add new prototype: ldemul_list_emulation_options.
- (ld_emulation_xfer_struct): Add new field: list_options.
- * ldemul.c (ldemul_list_options): New function. Call the
- list_options field of the ld_emulation_xfer_struct for each
- supported emulation, if such a function is present.
- * lexsup.c (help): Call ldemul_list_emulation_options.
- * emultempl/pe.em (gld_<>_list_options): New function. Describe
- the pe emulation specific command line options.
- * emultempl/armcoff.em (gld<>_list_options): New function.
- Describe the armcoff emulation specific command line options.
-
- * emultempl/pe.em: Add a new command line option:
- --support-old-code.
- * emultempl/armcoff.em: Ditto.
- * ld.texinfo: Document the --support-old-code option.
-
- * Makefile.in: Add emulation files for POTFILES.in target.
- * emultempl/pe.em: Internationalise suitable strings.
- * emultempl/armcoff.em: Internationalise suitable strings.
- * po/POTFILES.in: Rebuilt.
-
-Sun May 10 22:36:30 1998 Jeffrey A Law (law@cygnus.com)
-
- * po/Make-in (install-info): New target.
-
-Tue Apr 28 19:18:30 1998 Tom Tromey <tromey@cygnus.com>
-
- * ldmain.c (main): Conditionally call setlocale.
- * ld.h: Include <locale.h> if HAVE_LOCALE_H.
- (LC_MESSAGES): Now can be defined even when ENABLE_NLS.
-
-Mon Apr 27 11:56:21 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Change version number to 2.9.4
- * configure: Rebuild.
-
- * ld.texinfo (Options) [-rpath-link]: Mention ld.so.conf.
-
- Based on patch from H.J. Lu <hjl@gnu.org>:
- * emultempl/elf32.em (global_vercheck_needed): New file static
- variable.
- (global_vercheck_failed): New file static variable.
- (gld${EMULATION_NAME}_after_open): Check for shared libraries
- twice, once with force set to 0 and once with it set to 1.
- (gld${EMULATION_NAME}_check_ld_so_conf): Add force parameter.
- Change all callers.
- (gld${EMULATION_NAME}_search_needed): Likewise.
- (gld${EMULATION_NAME}_try_needed): Likewise. If not force, check
- whether the libraries needs any incompatible versions.
- (gld${EMULATION_NAME}_vercheck): New static function.
+2000-06-18 Alan Modra <alan@linuxcare.com.au>
-Wed Apr 22 16:01:35 1998 Tom Tromey <tromey@cygnus.com>
+ * NEWS: Update list of targets supporting --gc-sections.
- * po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).
+ * scripttempl/elf.sc: KEEP .eh_frame contents.
+ * scripttempl/elfd30v.sc: Same here.
-Wed Apr 22 12:40:56 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
- * Makefile.am (check-DEJAGNU): Add $(INTLLIBS) to LIBIBERTY when
- invoking runtest.
+ * Makefile.am (ALL_EMULATIONS): Added new emulation for m68hc12
+ and m68hc11 (elf).
* Makefile.in: Rebuild.
+ * configure.tgt: Recognize m68hc12 and m68hc11.
+ * scripttempl/elfm68hc12.sc: New file.
+ * emulparams/m68hc12elfb: New emulation.
+ * emulparams/m68hc12elf: New emulation.
+ * emulparams/m68hc11elfb.sh: New file. User configurable emulation
+ (includes a memory.x script to define the ROM and RAM banks).
+ * scripttempl/elfm68hc11.sc, emulparams/m68hc11elf.sh:
+ New configuration files for support of Motorola 68hc11
- * lexsup.c (parse_args): Change -l options into --library options
- to avoid confusion between -li and -library.
-
- * ld.texinfo (MEMORY): Clarify use of >REGION.
-
-Tue Apr 21 23:12:40 1998 Tom Tromey <tromey@scribbles.cygnus.com>
-
- * Many files: Added gettext invocations around user-visible
- strings.
- * ld.h: Added gettext-related includes and defines.
- * ldmain.c: Call setlocale, bindtextdomain, textdomain.
- * 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.
- (TDIRS): AC_SUBST early on, to avoid having value split when it
- happens to cross line 90 of the generated sed script.
- * Makefile.am (SUBDIRS): New macro.
- (POTFILES): Likewise.
- (po/POTFILES.in): New target.
- (ld_new_LDADD): Added INTLLIBS.
- (ld_new_DEPENDENCIES): Added INTLDEPS.
- * po/Make-in, po/POTFILES.in, po/gas.pot: New files.
-
-Tue Apr 21 23:07:07 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo (Simple Example): Rewrite a few things as suggested
- by Nick Clifton <nickc@cygnus.com>.
- (PROVIDE): Likewise.
-
-Tue Apr 21 09:55:06 1998 Nick Clifton <nickc@cygnus.com>
-
- * emultempl/pe.em: Rename external arm interworking functions
- to conform to BFD naming conventions. Add code to _after_open()
- function to obtain a bfd for use by the interworking code.
+2000-06-15 Alan Modra <alan@linuxcare.com.au>
- * emultempl/armcoff.em: Rename external arm interworking functions
- to conform to BFD naming conventions. Add new _after_open()
- function to obtain a bfd for use by the interworking code.
+ * ldmain.c (main): Only change SEC_READONLY for final link.
-Sun Apr 19 19:23:09 1998 Richard Henderson <rth@cygnus.com>
+2000-06-13 H.J. Lu <hjl@gnu.org>
- * ldlang.c (lang_size_sections) [case lang_assignment_statement_enum]:
- Update dot and the default memory section even when relaxing.
-
-Sat Apr 18 18:41:12 1998 Richard Henderson <rth@cygnus.com>
-
- * ldlang.c (lang_one_common): Manipulate the section's cooked size
- rather than its raw size.
-
-Tue Apr 7 13:35:29 1998 H.J. Lu <hjl@gnu.org>
-
- * configure.in (TESTBFDLIB): New. Defined and substituted.
- * Makefile.am (TESTBFDLIB): Changed to @TESTBFDLIB@.
- * configure, Makefile.in: Rebuild.
-
-Mon Apr 6 15:33:39 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (ld.info): Invoke makeinfo with -I options directly
- rather than relying on default rule. Don't depend upon
- bfdsumm.texi.
- (ld.dvi): Likewise.
- (bfdsumm.texi): Remove target.
- (CLEANFILES): Take bfdsumm.texi out of value.
- * Makefile.in: Rebuild.
+ * configure: Regenerate.
-Sun Apr 5 13:07:57 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-06-08 David O'Brien <obrien@FreeBSD.org>
- * scripttempl/pe.sc: Use shell variables to avoid depending upon
- how $ is handled when expanding a shell substitution.
+ * configure.in (VERSION): Update to show this is the CVS mainline.
-Fri Apr 3 00:56:50 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-06-07 Michael Sokolov <msokolov@ivan.Harhan.ORG>
- * Makefile.am (MOSTLYCLEANFILES): Add ld.log and ld.sum.
- (DISTCLEANFILES): Add site.exp and site.bak.
- * Makefile.in: Rebuild.
+ * emultempl/mipsecoff.em (gld{EMULATION_NAME}_after_open): Require all
+ input objects to be ECOFF.
+ (check_sections): einfo takes %B, not %P, to print a BFD name.
- * configure.in: Put the tdirs in a file and use AC_SUBST_FILE,
- rather than in a shell variable and using AC_SUBST.
- * Makefile.am (DISTCLEANFILES): Remove ldscripts. Add tdirs.
- (distclean-local): New target.
- * configure, Makefile.in: Rebuild.
+2000-06-05 Michael Matz <matz@ifh.de>
- * ld.texinfo: Completely rewrite linker script documentation.
+ * ldgram.y (vers_defns): Handle 'extern "C++" { ... }' in
+ version scripts.
-Mon Mar 30 12:47:33 1998 Ian Lance Taylor <ian@cygnus.com>
+ * ldlex.l (V_IDENTIFIER): Accept `::' in symbols.
- * configure.in: Set version to 2.9.1.
- * configure: Rebuild.
+2000-05-23 Marek Michalkiewicz <marekm@linux.org.pl>
- * Branched binutils 2.9.
+ * emulparams/avr1200.sh (STACK): Define as 0.
+ * emulparams/avr23xx.sh (STACK): Define as last internal SRAM address.
+ * emulparams/avr4433.sh (STACK): Likewise.
+ * emulparams/avr44x4.sh (STACK): Likewise.
+ * emulparams/avr85xx.sh (STACK): Likewise.
+ * emulparams/avrmega103.sh (STACK): Likewise.
+ * emulparams/avrmega161.sh (STACK): Likewise.
+ * emulparams/avrmega603.sh (STACK): Likewise.
+ * scripttempl/elf32avr.sc (__data_start): Define for gcrt1.
+ (__stack): Define from ${STACK} for main().
-Sat Mar 28 16:48:19 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-05-26 Alan Modra <alan@linuxcare.com.au>
- * Makefile.am (MOSTLYCLEANFILES): Remove tmpdir.
- (mostlyclean-local): New target to remove tmpdir.
- * Makefile.in: Rebuild.
+ * Makefile.am: Update dependencies with "make dep-am"
+ * Makefile.in: Regenerate.
- Fix some gcc -Wall warnings:
- * ldcref.c (output_cref): Add casts to avoid warnings.
- * ldfile.c (ldfile_add_arch): Likewise.
- * ldlang.c (lang_leave_overlay_section): Likewise.
- * lexsup.c (OPTION_COUNT): Likewise.
- (parse_args): Likewise.
- * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan):
- Likewise.
- * emultempl/sunos.em (gld${EMULATION_NAME}_search_dir): Likewise.
- * ldlang.c (lang_check): Initialize variables to avoid warnings.
- * ldwrite.c (build_link_order): Likewise.
- * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Likewise.
- * emultempl/armcoff.em (gld${EMULATION_NAME}_before_allocation):
- Remove unused variables.
-
- * Makefile.am (MOSTLYCLEANFILES): Correct name (was
- MOSTCLEANFILES).
- * Makefile.in: Rebuild.
+2000-05-26 Eli Zaretskii <eliz@is.elta.co.il>
-Fri Mar 27 16:39:25 1998 Ian Lance Taylor <ian@cygnus.com>
+ * ldmain.c: Include filenames.h.
+ (set_scripts_dir): Support backslashes in program name.
- * emultempl/pe.em (gld_${EMULATION_NAME}_before_allocation): Put
- ARM code inside ifdef TARGET_IS_armpe.
+2000-05-22 Igor Shevlyakov <igor@windriver.com>
-Wed Mar 25 11:34:13 1998 Ian Lance Taylor <ian@cygnus.com>
+ * ldmain.c (main): When deciding if ".text" section should be
+ read-only, don't forget to reset SEC_READONLY because it
+ could be already set.
- Based on patch from H.J. Lu <hjl@gnu.org>:
- * Makefile.am (LDDISTSTUFF): New variable.
- (diststuff): New target.
- * Makefile.in: Rebuild.
+2000-05-22 Thomas de Lellis <tdel@windriver.com>
- * scripttempl/pe.sc: Only include .idata\$[0-7] in .idata when
- relocating.
+ * ld.1: Add documentation for new command line option:
+ --section-start <sectionname>=<sectionorg>
+ This is a generic version of -Ttext etc. which accepts
+ any section name as a parameter instead of just text/data/
+ bss.
+ * ld.texinfo: More docs.
+ * NEWS: More docs.
+ * lexsup.c: (parse_args): Recognize new command line option.
+ (ld_options): Add new option.
-Tue Mar 24 15:59:29 1998 Nick Clifton <nickc@cygnus.com>
+2000-05-18 H.J. Lu <hjl@gnu.org>
- * scripttempl/pe.sc (.text): Add .glue_7 and .glue_7t sections to
- hold Arm/Thumb stubs.
+ * lexsup.c (parse_args): `i' == `r', not `q'.
- * emultempl/pe.em (gld_pe_before_allocation): Call
- arm_process_before_allocation (for ARM/Thumb targets) in order to
- gather interworking stb information.
+Thu May 18 10:47:57 2000 Jeffrey A Law (law@cygnus.com)
-Mon Mar 23 18:54:15 1998 Joel Sherrill <joel@OARcorp.com>
+ * configure.tgt (hppa*64*-*-*): Enable PA64 target.
- * configure.tgt: (sh*-*-rtems*): Switched from ELF to COFF.
+2000-05-17 S. Bharadwaj Yadavalli <sby@scrugs.lkg.dec.com>
+ Rick Gorton <gorton@scrugs.lkg.dec.com>
-Fri Mar 20 19:17:13 1998 Ian Lance Taylor <ian@cygnus.com>
+ Add support for '-q' == '--emit-relocs' switch.
+ * ldmain.c (main): Default to false.
+ * lexsup.c (parse_args): Turn on emitrelocations flag if set.
+ * NEWS: Describe the emitrelocations switch.
+ * ld.texinfo: Describe the emitrelocations switch.
- * aclocal.m4, configure: Rebuild with libtool 1.2.
+2000-05-16 Charles Wilson <cwilson@ece.gatech.edu>
-Thu Mar 19 14:54:45 1998 Geoffrey Noer <noer@cygnus.com>
+ * ld/emultempl/pe.em (_open_dynamic_archive): New function: Search
+ the library path for "foo.dll" and "libfoo.dll" dynamic libraries
+ before searching for 'libfoo.a' in response to a '-Bdynamic -lfoo'
+ link options.
- * scripttempl/pe.sc: The Cygwin32 library uses a .data$nocopy
- section to avoid copying certain data on fork. The linker used to
- include this between __data_start__ and __data_end__, but that
- breaks building the cygwin32 dll. The fix is to rename the
- section ".data_cygwin_nocopy" and explictly include it after
- __data_end__.
+2000-05-15 David O'Brien <obrien@FreeBSD.org>
-Wed Mar 18 09:42:24 1998 Nick Clifton <nickc@cygnus.com>
+ * lexsup.c (parse_args): Update the year in the copyright notice.
- * configure.tgt (targ_extra_emuls): Add thumb-pe target.
+2000-05-13 Alan Modra <alan@linuxcare.com.au>
-Sun Mar 8 23:34:14 1998 Stan Cox <scox@equinox.cygnus.com>
+ * ld.h (gettext, dgettext, dcgettext, textdomain, bindtextdomain):
+ Replace defines with those from intl/libgettext.h to quieten gcc
+ warnings.
- * configure.tgt (sparclite*-*-elf): Added.
+2000-05-10 H.J. Lu <hjl@gnu.org>
-Mon Mar 2 19:24:08 1998 Michael Meissner <meissner@cygnus.com>
+ * ldlang.c (open_input_bfds): Don't load the same file within
+ a group again if the whole archive has been loaded already.
- * ldlang.c (lang_size_sections): If the default memory region is
- *default*, see if there is a memory region that could be used.
+2000-05-03 Alan Modra <alan@linuxcare.com.au>
-Thu Feb 26 17:09:53 1998 Michael Meissner <meissner@cygnus.com>
+ From Ulf Carlsson <ulfc@engr.sgi.com> and Andreas Jaeger <aj@suse.de>
+ * lexsup.c (set_section_start): Use bfd_scan_vma rather than
+ strtoul.
- * scripttempl/elfd30v.sc: Add support for .eit_v section and put
- it at 0xfffff020.
- * emulparams/d30v{elf,_o,_e}.sh: Ditto.
+Mon May 1 17:34:34 2000 Jim Wilson <wilson@cygnus.com>
-Mon Feb 23 17:46:51 1998 Ian Lance Taylor <ian@cygnus.com>
+ * configure.host (ia64-*-linux-gnu*): Change gcc to ${CC}.
- * emultempl/pe.em (sort_sections): Permit the wildcard to include
- a trailing '*' when sorting grouped sections.
- * scripttempl/pe.sc: Include grouped sections using NAME\$*. Only
- include them when relocating.
+ * configure.host: Added HOSTING_CRT0, HOSTING_LIBS for
+ host "ia64-*-linux-gnu*".
-Wed Feb 18 23:39:46 1998 Richard Henderson <rth@cygnus.com>
+2000-04-29 Andreas Jaeger <aj@suse.de>
- * Makefile.am (install-exec-local): Install properly when ln
- fails or tooldir == prefix.
+ * ld.h: Correctly check GCC version.
-Fri Feb 13 15:24:06 1998 Ian Lance Taylor <ian@cygnus.com>
+Tue Apr 25 11:20:43 2000 Jeffrey A Law (law@cygnus.com)
- * Makefile.am (AUTOMAKE_OPTIONS): Define.
- * configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.
+ * Makefile.am: Add PA64 support. Add missing dependencies for
+ PA32 elf support.
+ * Makefile.in: Rebuilt.
+ * configure.tgt: Add PA64 support (currently disabled).
-Thu Feb 12 14:10:44 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-04-25 Alan Modra <alan@linuxcare.com.au>
- * scripttempl/elf.sc: Align the _end symbol according to the ELF
- format size. From Gordon W. Ross <gwr@mc.com>.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_section): Delete.
+ (output_rel_find): New function.
+ (hold_section, hold_use): Delete.
+ (hold_text, hold_rodata, hold_data, hold_bss, hold_rel,
+ hold_interp): Make local to place_orphan.
+ (gld${EMULATION_NAME}_place_orphan): Use lang_output_section_find
+ rather than place_section to find possible previous use of orphan.
+ Similarly find the place-holder output sections. Use returned
+ value from lang_enter_output_section_statement rather than calling
+ lang_output_section_statement_lookup.
+ * emultempl/armelf.em: Same here.
+ * emultempl/pe.em: Similar to above, but no need for output_rel_find.
- NetBSD patches from Gordon W. Ross <gwr@mc.com>:
- * configure.host (alpha*-*-netbsd*): New host.
- * configure.tgt (alpha*-*-netbsd*, powerpc-*-netbsd*): New
- targets.
+ * ldlang.c (lang_enter_output_section_statement): Return output
+ section statement.
+ * ldlang.h (lang_enter_output_section_statement): Change
+ declaration too.
- * lexsup.c (help): Update bug-gnu-utils address.
- * ld.texinfo (Bug Reporting): Likewise.
+ * ldlang.h (lang_output_section_statement): Export it.
+ * ldlang.c (lang_output_section_statement): Ditto.
-Tue Feb 10 18:05:56 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-04-24 Nick Clifton <nickc@cygnus.com>
- * ldlang.c (lang_size_sections): Warn if some memory regions were
- defined, but a loadable section is going into the default memory
- region.
+ * ld.texinfo (Output Section Data): Add note that section data
+ commands cannot appear outside of section directives.
-Tue Feb 10 16:17:20 1998 H.J. Lu <hjl@gnu.org>
+2000-04-2 Matthew Green <mrg@cygnus.com>
- * ldlex.l (V_IDENTIFIER): Allow '.' as symbol prefix.
+ * configure.tgt: Add NetBSD/sparc ELF, and NetBSD/sparc64 support.
-Tue Feb 10 15:09:45 1998 Ian Lance Taylor <ian@cygnus.com>
+Fri Apr 21 13:20:53 2000 Richard Henderson <rth@cygnus.com>
+ David Mosberger <davidm@hpl.hp.com>
- * Makefile.am (Makefile): Add target, for dependencies on
- configure.host and configure.tgt.
- * configure.host, configure.tgt: Change -linux* to -linux-gnu*.
+ * Makefile.am (ALL_64_EMULATIONS): Add eelf64_ia64.o.
+ (eelf64_ia64.c): New rule.
* Makefile.in: Rebuild.
+ * configure.tgt (ia64-*-elf*, ia64-*-linux*): New targets.
+ * emulparams/elf64_ia64.sh: New file.
-Mon Feb 9 13:44:40 1998 Andrew Cagney <cagney@b1.cygnus.com>
-
- * scripttempl/elfd10v.sc (.stack): Move stack to 0x00..7FFE.
-
- * emulparams/d10velf.sh (READONLY_START_ADDR): Read only section
- moved to 0x00.....4.
-
-Sat Feb 7 15:41:26 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure, aclocal.m4: Rebuild with new libtool.
-
-Thu Feb 5 12:16:11 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/pe.sc: Remove ${RELOCATING-0} from all sections.
- From Thomas de Lellis <tdel@wrs.com>.
-
- * configure, Makefile.in, aclocal.m4: Rebuild with new libtool.
+2000-04-21 Richard Henderson <rth@cygnus.com>
-Wed Feb 4 13:02:32 1998 Ian Lance Taylor <ian@cygnus.com>
+ * scripttempl/elfd30v.sc: Place .gcc_except_table.
- * Makefile.am (ld_new_LDADD): Remove @LEXLIB@.
- * Makefile.in: Rebuild.
+2000-04-19 Alan Modra <alan@linuxcare.com.au>
-Mon Feb 2 19:34:54 1998 Steve Haworth <steve@pm.cse.rmit.EDU.AU>
-
- Add tms320c30 support:
- * configure.tgt (tic30-*-*aout*, tic30-*-*coff*): New targets.
- * emulparams/tic30aout.sh: New file.
- * emulparams/tic30coff.sh: New file.
- * scripttempl/tic30aout.sc: New file.
- * scripttempl/tic30coff.sc: New file.
- * Makefile.am (ALL_EMULATIONS): Add etic30aout.o and
- etic30coff.o.
- (etic30aout.c, etic30coff.c): New targets.
- * Makefile.in: Rebuild.
+ * dep-in.sed: Match space at start of file name, not at end.
-Mon Feb 2 14:10:59 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-04-18 H.J. Lu <hjl@gnu.org>
- * configure.host: Correct HOSTING_CRT0 in alpha*-*-linux* case to
- accept either ld.so or ld-linux.so.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Call
+ lang_leave_output_section_statement () after calling
+ lang_enter_output_section_statement ().
+ * emultempl/armelf.em: Likewise.
-Fri Jan 30 19:16:28 1998 Doug Evans <devans@canuck.cygnus.com>
+2000-04-18 Alan Modra <alan@linuxcare.com.au>
- * Makefile.am ({CC,CXX}_FOR_TARGET): Change program_transform_name
- to transform.
+ * emultempl/elf32.em (struct orphan_save): Add section field.
+ (gld${EMULATION_NAME}_place_orphan): Use above to keep sections in
+ better order, and place first orphan section as we did before the
+ 2000-04-12 patch. Ignore ~SEC_ALLOC sections when choosing place.
+ Don't call make_bfd_section here, let wild_doit do the job for us.
+ Don't build a statement list when we'll only throw it away.
+ * emultempl/armelf.em: Ditto.
+ * emultempl/pe.em: Similarly.
+
+2000-04-14 Geoff Keating <geoffk@cygnus.com>
+
+ * scripttempl/elfppc.sc: Remove.
+ * emulparams/elf32ppc.sh: Use elf.sc.
+ * emulparams/elf32lppc.sh: Use elf.sc.
+ * emulparams/elf32ppclinux.sh: Use elf.sc.
+ * emulparams/elf32ppcsim.sh: New file.
+ * emulparams/elf32lppcsim.sh: New file.
+ * Makefile.am: Update dependencies. Add elf32ppcsim ad elf32lppcsim.
+ (ALL_EMULATIONS): Add elf32ppcsim ad elf32lppcsim.
* Makefile.in: Regenerate.
+ * configure.tgt (powerpc-*): Add elf32ppcsim and elf32lppcsim.
-Fri Jan 30 19:15:17 1998 Geoff Keating <geoffk@ozemail.com.au>
-
- * scripttempl/elfppc.sc: Put .dynsbss in .sbss.
-
-Fri Jan 30 11:43:49 1998 H.J. Lu <hjl@gnu.ai.mit.edu>
-
- * Makefile.am (eelf32bsmip.c, eelf32lsmip.c): New targets.
- * Makefile.in: Rebuild.
-
-Thu Jan 29 16:04:21 1998 Mumit Khan <khan@xraylith.wisc.edu>
-
- * ldfile.c (slash): Set to backslash if _WIN32 but not
- __CYGWIN32__.
- (ldfile_open_file_search): If __MSDOS__ or _WIN32, accept a
- leading backslash or a leading x: as an absolute path.
- (ldfile_find_command_file): Use slash rather than / when
- generating name to try.
- * lexsup.c (PATH_SEPARATOR): Define.
- (set_default_dirlist): Use PATH_SEPARATOR rather than ':'.
-
-Wed Jan 28 14:06:30 1998 Richard Henderson <rth@cygnus.com>
-
- * emulparams/elf64_sparc.sh (ELFSIZE): 64
- (TEXT_START_ADDR): Round off, since SIZEOF_HEADERS is added later.
- (DATA_PLT): Needed by v9 abi.
-
-Wed Jan 28 16:37:27 1998 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>
-
- * configure.tgt (i[3456]86-*-mingw32*): New entry.
-
-Wed Jan 28 15:51:58 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/elf.sc: Only include linkonce sections in final
- sections when relocating.
-
-Wed Jan 28 14:10:01 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo (Options): Add a brief description of the types of
- information included in a link map.
-
- * ld.texinfo (Options): Mention LDEMULATION in description of -m.
- (Environment): Mention LDEMULATION.
-
- * ld.texinfo (Options): Clarify --export-dynamic a bit.
-
-Thu Jan 22 16:07:23 1998 Richard Henderson <rth@cygnus.com>
-
- * ldlex.l (<SCRIPT>{WILDCHAR}*): Take care for the comments this
- pattern could match.
-
-Wed Jan 21 22:26:46 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/pe.em (gld_${EMULATION_NAME}_set_symbols): When doing
- a relocateable link, set the image base to 0, and don't define the
- various symbols.
- * emulparams/i386pe.sh (RELOCATEABLE_OUTPUT_FORMAT): Define.
- * scripttempl/pe.sc: Swap the .data and .bss sections so that
- .data comes first. If doing a relocateable link, use
- RELOCATEABLE_OUTPUT_FORMAT if it is defined, and start the
- sections at 0, and don't define any symbols.
-
- * ldlang.c (lang_memory_default): Correct parenthisization of
- expression.
-
-Wed Jan 21 21:20:32 1998 Manfred Hollstein <manfred@s-direktnet.de>
-
- * emultempl/sunos.em: Don't include sys/types.h and sys/stat.h
- here; they are included already via sysdep.h.
-
-Tue Jan 6 13:40:02 1998 Richard Henderson <rth@cygnus.com>
-
- * scripttempl/i960.sc: Don't explicitly set .data and .bss start.
-
-Fri Jan 2 20:15:37 1998 Michael Meissner <meissner@cygnus.com>
-
- * ldgram.y (attributes_opt): Pass region pointer to
- lang_set_flags, not &region->flags.
-
- * ldlang.c (lang_memory_default): New function to figure out a
- default memory region for a section if it was not specified.
- (lang_memory_region_lookup): Zero flags, not_flags field.
- (lang_map{,_flags}): Print attribute flags in memory map.
- (lang_size_sections): Call lang_memory_default to get default
- memory region.
- (lang_set_flags): Implement attribute flags for real. Take new
- argument to give the flags we are to skip for this region.
-
- * ldlang.h (memory_region_struct): Add not_flags field, make both
- flags fields flagword type.
- (lang_output_section_state): Make flags field flagword type.
- (lang_set_flags): Update prototype to match new calling sequence.
- (lang_memory_region_default): Add prototype.
-
- * emulparams/d30v{_e,_o,elf}.sh ({TEXT,DATA,EMEM}_DEF_SECTION):
- Define whether or not the region gets default sections, and if so,
- what sections.
-
- * scripttempl/elfd30v.sc (MEMORY): Set up which of the regions get
- default sections.
-
-Thu Jan 1 22:58:04 1998 Michael Meissner <meissner@cygnus.com>
-
- * scripttempl/elfd30v.sc (.eh_frame): Link into the data section.
-
-Thu Jan 1 18:04:51 1998 Jeffrey A Law (law@cygnus.com)
-
- * scripttempl/h8300h.sc: Fix typo.
- * scripttempl/h8300s.sc: Likewise.
-
-Sun Dec 21 12:51:49 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ldexp.c (fold_name): Don't crash if the symbol is defined in a
- section with no output section, such as a shared library section.
-
-Wed Dec 17 12:14:11 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * lexsup.c (parse_args): Keep track of where we are in the option
- parsing before calling ldemul_parse_args, so that we don't call it
- multiple times on the same argument and confuse the getopt
- internals.
-
-Thu Dec 11 09:00:15 1997 Michael Meissner <meissner@cygnus.com>
-
- * configure.tgt (d30v-elf-*): Rename d30velf_e to d30v_e and
- d30velf_o to d30v_o to work in DOS environments.
- * Makefile.{am,in}: Ditto.
-
- * emulparams/d30v_{o,e}: Rename from d30velf_{o,e}.
- * emulparams/d30velf_{o,e}: Deleted.
-
-Wed Dec 10 17:40:08 1997 Nick Clifton <nickc@cygnus.com>
-
- * scripttempl/armcoff.sc: Add glue sections (code taken from Arm
- branch).
-
- * emulparams/armcoff.sh (TEMPLATE_NAME): Set to armcoff.
-
- * emultempl/armcoff.em: New file, imported from Arm branch.
-
-Wed Dec 10 14:10:44 1997 Michael Meissner <meissner@cygnus.com>
-
- * scripttempl/elfd30v.sc: Add .rel and .rela sections for all
- defined sections. Set up __{D,C}TOR_{LIST,END}__. Add onchip and
- external memory sections for rodata. Delete .string, .rodata1,
- and .data1 sections.
-
-Tue Dec 9 15:28:17 1997 Michael Meissner <meissner@cygnus.com>
-
- * Makefile.am: Add Oct 23 changes to Makefile.in here.
-
- * Makefile.{am,in}: (ALL_EMULATIONS): Add ed10velf.o.
-
- * Makefile.{am,in}: (ALL_EMULATIONS): Add etic80coff.o.
-
- * Makefile.{am,in}: (ALL_EMULATIONS): Add ed30velf{,_e,_o}.o.
- (ed30velf_e.c): Like d30velf, except .text/.data/etc always go in
- external memory.
- (ed30velf_o.c): Like d30velf, except .text/.data/etc always go in
- onchip memory.
-
- * emulparams/d30velf.sh (STACK_START_ADDR): Top of default
- stack.
- ({TEXT,DATA,EMEM}_SIZE): Sizes of the 3 memory areas.
- ({TEXT,DATA,BSS}_MEMORY): Which memory region .text, .data, and
- .bss should go in.
-
- * emulparams/d30velf_{e,o}.sh: New files to be explicit whether
- .text, .data, etc go in external memory or onchip memory.
-
- * configure.tgt (d30v-*-*ext*): New configuration to default
- .text, .data, etc. in external memory.
- (d30v-*-*onchip*): New configuration to default .text, .data,
- etc. in onchip memory.
- (d30v-*-*): Add d30velf_{e,o} emulations.
-
- * scripttempl/elfd30v.sc: Allow .text, .data, .bss to be put in
- either the onchip text/data areas or the external memory area.
- (MEMORY): Get sizes from d30velf.sh.
- (.e{data,text,bss}): Put sections in the external memory region.
- (.stext): Put section in the onchip text region.
- (.s{data,bss}): Put sections in the onchip data region.
- (__stack): Assign from ${STACK_START_ADDR}.
- (.text): Put in ${TEXT_MEMORY} memory region.
- (.data{,1}/.strings/.rodata{,1}): Put in ${DATA_MEMORY} memory
- region.
- (.bss): Put in ${BSS_MEMORY} memory region.
-
-Tue Dec 2 10:14:47 1997 Nick Clifton <nickc@cygnus.com>
-
- * configure.tgt (targ_extra_emuls): Add support for Thumb target.
-
-Sat Nov 22 15:23:19 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlex.l: Don't define hex_mode. Correct number regexp to not
- accept hex digits without a leading $ or 0x. Handle leading $
- correctly. Pass 0 rather than hex_mode to bfd_scan_vma.
- * ldlex.h (hex_mode): Don't declare.
-
-Sun Nov 16 20:16:45 1997 Michael Meissner <meissner@cygnus.com>
-
- * emulparams/d30velf.sh ({DATA,EMEM}_START_ADDR): Define as start
- of internal data area and external memory on chip.
-
- * scripttempl/elfd30v.sc: Define a MEMORY region that describes
- the 3 regions of memory on the chip. Put .text/.init/.fini into
- the text memory region, put other segments into the data memory
- region. Add more of the standard elf sections. Default __stack
- to be 0x20008000, which is 1 byte beyond end of the internal data
- region.
-
-Thu Nov 13 13:45:00 1997 Andrew Cagney <cagney@b1.cygnus.com>
-
- * configure.tgt (targ_extra_emuls): Make FreeBSD a i386bsd
- variant.
-
-Sun Nov 2 14:51:36 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
-
- * configure.host (alpha*-*-linux*): Correct HOSTING_CRT0. Set
- HOSTING_LIBS.
-
-Thu Oct 30 12:25:55 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.h (args_type): Add warn_mismatch field.
- * ldmain.c (main): Initialize warn_mismatch field.
- * lexsup.c (parse_args): Handle --no-warn-mismatch option.
- * ldlang.c (ignore_bfd_error): New static function.
- (lang_check): If warn_mismatch is false, don't warn about
- mismatched input files.
- * ld.texinfo, ld.1: Document new option.
-
-Thu Oct 23 14:38:18 1997 Nick Clifton <nickc@cygnus.com>
-
- * scripttempl/v850.sc: Rename linker symbol '_stack' to '__stack'
- to avoid conflicts with C code which is defining a variable called
- 'stack'.
-
-Thu Oct 23 00:57:45 1997 Richard Henderson <rth@dot.cygnus.com>
-
- * Makefile.in (ALL_EMULATIONS): Move eelf64_sparc.o ...
- (ALL_64_EMULATIONS): ... here.
- (eelf64_sparc.c): Template should be elf32 not generic.
- * emulparams/elf64_sparc.sh (TEMPLATE_NAME): New definition.
-
-Thu Oct 23 00:44:20 1997 Richard Henderson <rth@dot.cygnus.com>
-
- * configure.tgt: Add sparc64-*-linux*.
- * emulparams/elf64_sparc.sh (GENERATE_SHLIB_SCRIPT, NOP): New.
-
-Wed Oct 22 11:29:25 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/pe.sc: Put .eh_frame in .rdata.
-
-Fri Oct 17 00:00:13 1997 Richard Henderson <rth@cygnus.com>
-
- * ldlang.c (lang_register_vers_node): Only check globals<=>locals,
- since we need to be able to export different versions of the same
- symbol.
-
-Wed Oct 15 14:52:36 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/pe.sc: Put .stab and .stabstr sections at end.
+2000-04-14 Alan Modra <alan@linuxcare.com.au>
-Wed Oct 8 12:37:05 1997 Richard Henderson <rth@cygnus.com>
-
- * configure.tgt, configure.host: Change alpha-*-* to alpha*-*-*;
- config.guess now recognizes alphaev5 etc.
-
-Fri Oct 3 14:23:02 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Don't treat
- -s and -u as -static and -unix.
-
-Thu Oct 2 18:40:28 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (wild_doit): Rewrite flag handling for clarity. If we
- are not adding the first input section, and SEC_READONLY is clear
- on the output section, then don't copy it from the input section.
- If SEC_READONLY is not set on the input section, then clear it on
- the output section.
-
- * configure.tgt (mips*-sgi-irix[56]*): Use elf32bsmip rather than
- elf32bmip.
- (mips*el-*-linux*): Change elf32lmip to elf32lsmip and elf32bmip
- to elf32bsmip.
- (mips*-*-linux*): Likewise.
- * emulparams/elf32bsmip.sh: New file; just like elf32bmip.sh, but
- setting ENTRY to __start.
- * emulparams/elf32lsmip.sh: New file; just like elf32lmip.sh, but
- setting ENTRY to __start.
- * scripttempl/elf.sc: Always set ENTRY to _start if it was not
- already set.
-
-Wed Oct 1 16:41:00 1997 Nick Clifton <nickc@cygnus.com>
-
- * emulparams/v850.sh (ROZDATA_START_ADDR, ROSDATA_START_ADDR): New
- Variables.
-
- * scripttempl/v850.sc: Move read only areas out of zero and small
- data sections and into their own sections.
-
-Wed Sep 24 16:59:15 1997 Joel Sherrill <joel@oarcorp.com>
-
- * configure.tgt (sh*-*-rtems*): New target, like sh-*-elf*.
-
-Wed Sep 24 11:33:14 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo (Section Options): Improve documentation of NOLOAD
- directive.
-
- * aclocal.m4: Rebuild with new libtool.
- * configure: Rebuild.
-
-Mon Sep 22 17:24:06 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (wild_doit): Revert patch of September 3.
-
-Wed Sep 17 16:45:34 1997 Nick Clifton <nickc@cygnus.com>
-
- * Makefile.am, Makefile.in: Add rule for ev850.c
- * configure.tgt (targ_extra_emuls): Add v850 target.
-
-Wed Sep 17 16:43:39 1997 Nick Clifton <nickc@cygnus.com>
-
- * emulparams/v850.sh (CALL_TABLE_START_ADDR): New entry.
- * scripttempl/v850.sc: Add call table data area
-
-Mon Sep 15 11:29:13 1997 Ken Raeburn <raeburn@cygnus.com>
-
- Merge change from Martin Hunt:
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Process
+ ~SEC_ALLOC sections too. Init start address of debug sections.
+ * emultempl/armelf.em (gld${EMULATION_NAME}_place_orphan): Ditto.
+ * emultempl/pe.em (gld${EMULATION_NAME}_place_orphan): Ditto.
+ Also set all relocateable section start addresses.
- * scripttempl/elfd30v.sc: Put .rodata in the .text section.
+2000-04-13 Geoff Keating <geoffk@cygnus.com>
-Tue Sep 9 07:49:56 1997 Fred Fish <fnf@ninemoons.com>
+ * scripttempl/elf.sc: Add support for .sbss2 and .sdata2 sections.
+ Add new BSS_PLT variable for when .plt need not be contained in
+ the file. Move _etext so that it is also after .fini, and provide
+ both etext and _etext with a leading underscore. Mark the start
+ and end of .sbss.
- * ldlang.c (lang_memory_region_lookup): Remove extraneous
- initialization of p.
+2000-04-12 Alan Modra <alan@linuxcare.com.au>
-Thu Sep 4 09:03:33 1997 Ian Lance Taylor <ian@cygnus.com>
+ * emultempl/elf32.em (struct orphan_save): New.
+ (hold_text, hold_rodata, hold_data, hold_bss, hold_rel,
+ hold_interp): Make them struct orphan_save.
+ (gld${EMULATION_NAME}_place_section): Modify for new hold_*.
+ (gld${EMULATION_NAME}_place_orphan): Add new orphan sections to
+ the end of the relevant section list. Also add associated section
+ statements to the end of any previous orphan statements.
+ * emultempl/armelf.em: Similarly.
+ * emultempl/pe.em: Similarly.
- * emultempl/aix.em (gld${EMULATION_NAME}_parse_args): In
- expression produced for -bpT and -bpD options, align to a 32 byte
- boundary rather than an 8 byte boundary.
- * scripttempl/aix.sc: Put .tocbss at start of .bss section.
+2000-04-11 Alan Modra <alan@linuxcare.com.au>
- * ldmisc.h, ldmisc.c, ldcref.c: Rename finfo to lfinfo, to avoid
- function name conflict with AIX 4.2 unistd.h header file.
+ * ld.texinfo (Simple Example): Remove extraneous paragraph.
-Wed Sep 3 15:12:32 1997 Ian Lance Taylor <ian@cygnus.com>
+Fri Apr 7 15:56:57 2000 Andrew Cagney <cagney@b1.cygnus.com>
- * ldlang.c (wild_doit): Clear SEC_HAS_CONTENTS from a
- noload_section.
+ * 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.
-Fri Aug 29 00:32:31 1997 Ian Lance Taylor <ian@cygnus.com>
+2000-04-04 Alan Modra <alan@linuxcare.com.au>
- * Makefile.am (ld_new_DEPENDENCIES): Remove @LEXLIB@.
- * Makefile.in: Rebuild.
+ * po/ld.pot: Regenerate.
-Thu Aug 28 10:12:10 1997 Doug Evans <dje@canuck.cygnus.com>
+ * lexsup.c (help): Restore translated part of bug string.
- * configure.tgt (arc-*-elf*): Recognize.
- * Makefile.am (ALL_EMULATIONS): Add earcelf.o.
+ * 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.
- * emulparams/arcelf.sh: New file.
-
-Wed Aug 20 11:14:13 1997 Ian Lance Taylor <ian@cygnus.com>
- * ldlang.c (wildcardp): Don't let a backslash by itself cause a
- pattern to be treated as a wildcard pattern.
-
- * ldgram.y (atype): Accept parentheses with no type.
-
- * ld.texinfo (Section Definition): Clarify use of whitespace.
- (Section Placement): Likewise.
-
-Mon Aug 18 11:12:03 1997 Nick Clifton <nickc@cygnus.com>
+2000-04-03 Alan Modra <alan@linuxcare.com.au>
- * configure.tgt (targ_extra_emuls): Add support for v850e target.
+ * ld.h: #include "bin-bugs.h"
+ * lexsup.c (help): Use REPORT_BUGS_TO.
-Mon Aug 18 11:12:03 1997 Nick Clifton <nickc@cygnus.com>
+2000-03-27 Denis Chertykov <denisc@overta.ru>
- * configure.tgt (targ_extra_emuls): Add support for v850e target.
+ * configure.tgt (avr-*-*): New target support.
+ * Makefile.am: Likewise.
+ * scripttempl/elf32avr.sc: New script file.
+ * emulparams/avr1200.sh: New file.
+ * emulparams/avr23xx.sh: New file.
+ * emulparams/avr4433.sh New file.
+ * emulparams/avr44x4.sh New file.
+ * emulparams/avr85xx.sh New file.
+ * emulparams/avrmega103.sh New file.
+ * emulparams/avrmega161.sh New file.
+ * emulparams/avrmega603.sh New file.
+ * Makefile.in: Regenerate.
-Sat Aug 9 00:42:27 1997 Ian Lance Taylor <ian@cygnus.com>
+2000-03-09 Andreas Jaeger <aj@suse.de>
- * Makefile.am (ld.info): Change dependency from
- $(BFDDIR)/doc/bfdsumm.texi to bfdsumm.texi.
- (ld.dvi): Likewise.
- (bfdsumm.texi): New target.
- (CLEANFILES): Add bfdsumm.texi.
+ * Makefile.am (check-DEJAGNU): Also unset LANG.
* Makefile.in: Rebuild.
- * 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.
- * configure.host: Don't set HLDFLAGS, HLDENV, or RPATH_ENVVAR.
- * acconfig.h: Mention PACKAGE and VERSION.
- * stamp-h.in: New file.
- * ldver.c (ld_program_version): Set ld_program_version from
- VERSION.
- * ldgram.y, ldlex.l: Replace VERSION with VERSIONK.
- * Makefile.in: Now built with automake.
- * aclocal.m4: Now built with aclocal.
- * configure, config.in: Rebuild.
-
-Mon Jul 28 19:04:50 1997 Rob Savoye <rob@chinadoll.cygnus.com>
-
- * configure.in: Use CYGWIN and EXEEXT autoconf macro to look for
- win32 dependencies.
- * configure: Regenerated with autoconf 2.12.
- * Makefile.in: Add $(EXEEXT) to executable.
-
-Tue Jul 22 18:50:38 1997 Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>
-
- * emulparams/i386go32.sh (OUTPUT_FORMAT): Set to "coff-go32".
- (SEGMENT_SIZE): Set to 0x200.
- * scripttempl/i386go32.sc: Rewrite.
- * configure.tgt (i[3456]86-*-msdosdjgpp*): New target.
-
-Mon Jul 7 12:39:42 1997 Ian Lance Taylor <ian@cygnus.com>
-
- From Manfred Hollstein <manfred@s-direktnet.de>:
- * configure.host (i[3456]86-*-linux*libc1*): Renamed from
- i[3456]86-*-linux*.
- (i[3456]86-*-linux*): New host.
-
-Thu Jun 26 13:54:03 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/pe.sc: Put .rsrc after .reloc. Put input .rsrc
- sections in the output .rsrc section.
-
-Wed Jun 25 12:48:41 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * configure.host (m68*-*-linux*libc1*): Renamed from
- `m68*-*-linux*'.
- (m68*-*-linux*): New configuration for use with GNU libc 2.
-
-Mon Jun 16 19:18:21 1997 Geoff Keating <geoffk@ozemail.com.au>
-
- * scripttempl/elfppc.sc: Correct .rela.sdata entries.
-
- * scripttempl/elfppc.sc: Put the PLT between the small and large
- BSS segments.
- * emulparams/elf32ppc.sh (TEXT_START_ADDR): The ABI says `A
- program base of 0x02000000 is recommended...' because otherwise
- shared libraries are less efficient. We use 0x01800000 because
- otherwise it's impossible to branch to location 0, for instance if
- you have an undefined weak symbol.
-
-Mon Jun 16 12:49:36 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
-
- * ldlang.c (lang_place_undefineds): Add \n in einfo call.
- (lang_size_sections): Likewise.
- * ldlex.l: Likewise.
- * emultempl/aix.em (gld${EMULATION_NAME}_read_file): Likewise.
- * emultempl/mipsecoff.em (gld${EMULATION_NAME}_after_open):
- Likewise.
- (check_sections): Likewise.
- (gld${EMULATION_NAME}_after_allocation): Likewise.
- * emultempl/pe.em (gld_$${EMULATION_NAME}_before_allocation):
- Likewise.
- * mpw-eppcmac.c (gldppcmacos_read_file): Likewise.
- * mpw-idtmips.c (gldmipsidt_after_open): Likewise.
- (check_sections): Likewise.
- (gldmipsidt_after_allocation): Likewise.
-
- * ldemul.c (ldemul_choose_mode): Remove unused einfo argument.
-
-Fri Jun 6 23:47:42 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/pe.sc: Add zeroes after .idata$3 to mark the end of
- the import list.
-
-Thu May 29 13:13:22 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_place_section): Don't
- crash if an output section has no BFD section.
-
-Fri May 23 15:23:25 1997 Fred Fish <fnf@cygnus.com>
-
- * lexsup.c (ld_options): Add entry for the new "task-link" option.
- (parse_args): Handle the "task-link" option.
- (OPTION_TASK_LINK): Add define.
-
-Wed May 21 17:44:15 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (main): Correct check of fclose return value when
- handling --force-exe-suffix.
-
-Thu May 15 11:35:29 1997 Nick Clifton <nickc@cygnus.com>
-
- * ldlang.c (lang_check): Add test of the return value from the
- call to bfd_merge_private_bfd_data().
-
-Mon May 12 23:22:58 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/elfmips.sc: Remove.
- * scripttempl/elf.sc: Set ENTRY based on target. Permit
- TEXT_DYNAMIC to control .dynamic segment. Permit
- SHLIB_TEXT_START_ADDR to set start of shared object. Support
- INITIAL_READONLY_SECTIONS. Put .stub in .text. Only put
- .gnu.linkonce.t* in .text when relocating. Support
- OTHER_TEXT_SECTIONS. Support SHLIB_DATA_ADDR as well as
- DATA_ADDR. Support OTHER_GOT_SYMBOLS and OTHER_GOT_SECTIONS.
- * emulparams/elf32b4300.sh (SCRIPT_NAME): Set to elf.
- (DATA_ADDR): Don't set.
- (INITIAL_READONLY_SECTIONS): Rename from OTHER_READONLY_SECTIONS.
- (OTHER_TEXT_SECTIONS): Set.
- (OTHER_GOT_SECTIONS): Rename from OTHER_READWRITE_SECTIONS.
- (MACHINE): Set to empty string.
- * emulparams/elf32l4300.sh: Likewise.
- * emulparams/elf32ebmip.sh: Likewise.
- * emulparams/elf32elmip.sh: Likewise.
- * emulparams/elf32bmip.sh: Likewise. Also:
- (TEXT_DYNAMIC): Set.
- * emulparams/elf32lmips.sh: Likewise.
- * Makefile.in (eelf32bmips.c): Depend upon elf.sc rather than
- elfmips.sc.
- (eelf32ebmips.c, eelf32elmips.c, eelf32lmip.c): Likewise.
-
-Mon May 12 11:11:06 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * scripttempl/elf.sc: Don't align the data segment on the next 8
- byte boundary, instead let the linker use whatever the individual
- sections require.
-
-Fri May 9 17:45:46 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.tgt (i[3456]86-*-gnu*): Don't include Mach support.
+2000-03-06 Ian Lance Taylor <ian@zembu.com>
-Tue May 6 13:21:19 1997 Ian Lance Taylor <ian@cygnus.com>
-
- From Sean McNeil <sean@mcneil.com>:
- * emultempl/pe.em (sort_by_file_name): Sort by archive name
- first.
- (sort_sections): Sort all sections, not just sections in the same
+ * ldfile.c (ldfile_try_open_bfd): Don't crash if we see an empty
archive.
-Mon May 5 18:19:55 1997 Philip Blundell <pjb27@cam.ac.uk>
-
- * configure.tgt, configure.host: cope with '*-*-linux-gnuaout'
- targets.
-
-Fri May 2 15:54:28 1997 Mike Meissner <meissner@cygnus.com>
-
- * scripttempl/tic80coff.sc (.text): Add a leading underscore to
- __{D,C}TOR_{LIST,END}__ definations. Rearrange the order of items
- in the .text section. Move .const, .ctors, .dtors into separate
- sections.
-
-Wed Apr 30 12:23:21 1997 Manfred Hollstein <manfred@s-direktnet.de>
-
- * scripttempl/m88kbcs.sc (__.initp.end, _etext): Added whitespace
- around assignment of current location pointer.
-
-Thu Apr 17 13:07:18 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ldctor.c (ldctor_build_sets): Make sure the set is aligned
- appropriately.
-
-Tue Apr 15 13:19:26 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (INSTALL): Set to @INSTALL@.
- (INSTALL_XFORM, INSTALL_XFORM1): Remove.
- (install): Depend upon ld.new and installdirs. Use
- $(program_transform_name) directly, rather than using
- $(INSTALL_XFORM) and $(INSTALL_XFORM1).
- (installdirs): New target.
- (install-info): Run mkinstalldirs.
-
-Mon Apr 14 12:06:15 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (INSTALL): Change install.sh to install-sh.
-
- From Thomas Graichen <graichen@rzpd.de>:
- * configure.in: Use ${CONFIG_SHELL} when running $ac_config_sub.
- * configure: Rebuild.
-
-Fri Apr 4 11:42:41 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/pe.em: Include "libiberty.h".
- (sort_sections_1): Use xmalloc rather than alloca.
-
- * ldlex.l: Recognize SQUAD.
- * ldgram.y (length): Add SQUAD.
- * ldctor.c (ldctor_build_sets): Use SQUAD for a signed 8 byte
- reloc.
- * ldlang.c (print_data_statement): Handle SQUAD.
- (lang_size_sections, lang_do_assignments): Likewise.
- * ldexp.c (exp_print_token): Add SQUAD to table.
- * ldwrite.c (build_link_order): Handle SQUAD.
- * ld.texinfo (Section Data Expressions): Document SQUAD.
-
-Thu Apr 3 13:19:40 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ldver.c (ld_program_version): Set to 2.8.1.
-
- * Branched binutils 2.8.
-
-Wed Apr 2 11:55:27 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * mpw-idtmips.c: Rename from mpw-emipsidt.c.
- * mpw-elfmips.c: Rename from mpw-emipself.c.
- * mpw-config.in: Update accordingly.
-
- * ldlang.c (lang_process): Call lang_check immediately after
- opening the input files, rather than at the end of the link.
-
-Mon Mar 31 23:44:00 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/pe.em (init): Fully bracket initializer.
- (set_pe_stack_heap): Remove locals begin_commit and end.
- (gld_${EMULATION_NAME}_after_open): Remove unused local i.
- (gld${EMULATION_NAME}_place_orphan): Remove unused local ptr.
-
-Mon Mar 31 16:35:51 1997 Joel Sherrill <joel@oarcorp.com>
-
- * configure.tgt (hppa*-*-rtems*): New target, like hppa-*-*elf*.
-
-Fri Mar 28 15:29:23 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
-
- Contributed by David S. Miller <davem@caip.rutgers.edu>:
- * configure.tgt (sparc*-*-linuxaout*): New target.
- (sparc*-*-linux*): New target.
- * emulparams/sparclinux.sh: New file.
- * Makefile.in (ALL_EMULATIONS): Add esparclinux.o.
- (esparclinux.c): New target.
-
-Fri Mar 28 14:30:12 1997 Ian Lance Taylor <ian@cygnus.com>
-
- From Ralf Baechle <ralf@gnu.ai.mit.edu>:
- * configure.tgt: Set targ_extra_emuls for mips*el-*-linux* and
- mips*-*-linux*. Use elf32bmip and elf32lmip, not elf32ebmip and
- elf32elmip.
-
-Thu Mar 27 17:14:32 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * lexsup.c (parse_args): Update copyright date in version
- message.
-
-Fri Mar 21 12:28:41 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
-
- * emulparams/delta68.sh (OUTPUT_FORMAT): Set to "coff-m68k-sysv".
-
-Tue Mar 18 11:16:23 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in: Rebuild dependencies.
-
- * emultempl/aix.em: Include "obstack.h".
-
-Mon Mar 17 19:26:06 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c: Include "obstack.h".
-
-Sat Mar 15 23:23:46 1997 Fred Fish <fnf@cygnus.com>
-
- * configure.tgt (powerpc-*-beos*): Use aixppc for targ_emul.
-
-Sat Mar 15 18:10:38 1997 H.J. Lu <hjl@lucon.org>
-
- * ldemul.h (ldemul_list_emulations): Use full prototype.
- * ldlang.c (print_one_symbol): Add declaration.
- * ldlang.h (dprint_statements): Declare.
- * ldmain.c (remove_output): Declare.
- * ldmisc.c (vfinfo): Declare.
- * ldwrite.c (clone_section): Declare.
- (split_sections): Make static. Declare.
- * mri.c: Include libiberty.h.
- (strdup): Don't declare.
- (mri_alias): Use xstrdup rather than strdup.
-
-Fri Mar 14 21:30:06 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/elfmips.sc: Change handling of data area when
- generating a shared library to not skip a large block of memory.
- From Per Fogelstrom <pefo@cvs.openbsd.org>.
-
-Wed Mar 12 21:33:09 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (multiple_definition): Only skip the warning if the
- output section is absolute when the input section is not
- absolute.
-
- * ldlex.l: Accept whitespace in VERS_START state. Warn about
- invalid characters in VERS_* states.
-
-Tue Mar 11 13:51:31 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/aix.em (gld${EMULATION_NAME}_read_file): Don't let a
- trailing space lead us to think that there is a zero address.
-
-Sun Mar 9 23:06:35 1997 Eric Youngdale <eric@andante.jic.com>
-
- * ldgram.y (vers_node): Correct typo of '(' for '{'.
-
-Fri Mar 7 18:40:12 1997 Fred Fish <fnf@cygnus.com>
-
- * scripttempl/tic80coff.sc (ENTRY): Entry symbol is __start
- rather than _start.
- (__edata): Define this rather than "edata".
- (__end): Define this rather than "end".
-
-Tue Mar 4 17:18:35 1997 Michael Meissner <meissner@cygnus.com>
-
- * configure.tgt (tic80-*-*): Allow dropping of -coff.
-
-Sun Mar 2 22:59:49 1997 Fred Fish <fnf@cygnus.com>
-
- * Makefile.in (ld.dvi): Set MAKEINFO environment variable as well
- as TEXINPUTS. Needed for building in separate build dir.
- * ldint.texinfo (SCRIPT_NAME): Fix typo.
- * emulparams/tic80coff.sh: Rewrite to include internal documentation
- about each shell variable that is set (or not set).
- * scripttempl/tic80coff.sc: Complete rewrite.
-
-Fri Feb 28 17:42:27 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (main): Call bfd_set_default_target.
- * Makefile.in (ldmain.o): Define TARGET when compiling.
-
-Thu Feb 27 11:41:03 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (main): Don't initialize link_info.lprefix or
- link_info.lprefix_len.
- * emultempl/hppaelf.em (hppaelf_before_parse): Likewise.
-
- * emultempl/m88kbcs.em: Remove.
- * emulparams/m88kbcs.sh (TEMPLATE_NAME): Don't set.
- * Makefile.in (em88kbcs.c): Depend upon generic.em rather than
- m88kbcs.em.
-
- * mri.c (mri_draw_tree): Pass noload_section, not SEC_NEVER_LOAD,
- to lang_enter_output_section_statement. From Mark Rasin
- <mark.rasin@telrad.co.il>.
-
-Wed Feb 26 11:51:44 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (lang_one_common): Clear SEC_IS_COMMON from common
- section.
-
-Tue Feb 25 20:38:11 1997 Stan Shebs <shebs@andros.cygnus.com>
-
- * configure.tgt (mips*-*-lnews*): New target.
- * Makefile.in (emipslnews.c): New target.
- * emulparams/mipslnews.sh: New file.
-
-Tue Feb 25 16:04:09 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/elf32.em (hold_interp): New static variable.
- (gld${EMULATION_NAME}_place_orphan): Put loadable .note sections
- after hold_interp. Choose a unique output section name.
- (gld${EMULATION_NAME}_place_section): Don't set hold_use if the
- SEC_LOAD or SEC_ALLOC flags differ. Set hold_interp.
-
-Mon Feb 24 18:16:09 1997 Ian Lance Taylor <ian@cygnus.com>
-
- From Eric Youngdale <eric@andante.jic.com>:
- * ldlex.l (V_TAG, V_IDENTIFIER): New macros.
- (VERS_START, VERS_SCRIPT, VERS_NODE): New states to parse version
- information.
- (ldlex_version_script, ldlex_version_file): New functions.
- * ldlex.h (enum input_enum): Add input_version_script.
- (ldlex_version_script): Declare.
- (ldlex_version_file): Declare.
- * ldgram.y (%union): Add deflist, versyms, and versnode.
- (VERS_TAG, VERS_IDENTIFIER): New terminals.
- (GLOBAL, LOCAL, VERSION, INPUT_VERSION_SCRIPT): New terminals.
- (file): Accept INPUT_VERSION_SCRIPT.
- (ifile_p1): Accept version.
- (version_script_file): New nonterminal.
- (version, vers_nodes, vers_node): Likewise.
- (verdep, vers_tag, ver_defns): Likewise.
- * ldlang.c (lang_elf_version_info): New global variable.
- (lang_new_vers_regex): New function.
- (lang_new_vers_node): New function.
- (version_index): New static variable.
- (lang_register_vers_node): New function.
- (lang_add_vers_depend): New function.
- * ldlang.h (lang_elf_version_info): Declare.
- (lang_new_vers_regex, lang_new_vers_node): Declare.
- (lang_add_vers_depend, lang_register_vers_node): Declare.
- * lexsup.c (OPTION_VERSION_SCRIPT): Define.
- (ld_options): Add "version-script".
- (parse_args): Handle OPTION_VERSION_SCRIPT.
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
- Pass lang_elf_version_info to size_dynamic_sections.
- * scripttempl/elf.sc: Add .gnu.version sections.
- * ld.texinfo: Document symbol versioning.
-
-Fri Feb 21 17:37:51 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * Makefile.in (ed30velf.c): New target.
- * configure.tgt (d30v-*-*): New target.
- * emulparams/d30velf.sh: New file.
- * scripttempl/elfd30v.sc: New file.
-
-Fri Feb 14 18:28:31 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo (Option Commands): Document the INCLUDE command.
-
-Thu Feb 13 20:31:37 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
-
- * configure.in: Call BFD_NEED_DECLARATION on getenv.
- * acconfig.h (NEED_DECLARATION_GETENV): New macro.
- * sysdep.h (getenv): Declare if NEED_DECLARATION_GETENV.
- * ldemul.c (ld_emul_default_target): Do not cast getenv return
- value.
- * ldmain.c (get_emulation): Likewise.
- * configure, config.in: Rebuild.
-
-Tue Feb 11 15:34:26 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/elfmips.sc: When relocating, put .mips16.fn.* and
- .mips16.call.* in .text.
-
-Sun Feb 9 18:09:13 1997 Fred Fish <fnf@cygnus.com>
-
- * emulparams/tic80coff.sh: New (dummy) file for TIc80.
- * scripttempl/tic80coff.sc: New (dummy) file for TIc80.
- * Makefile.in (etic80coff.c): Add target and rule to build it.
- * configure.tgt (tic80-*-coff): Set targ_emul to tic80coff.
-
-Fri Jan 31 13:16:53 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Search for
- ".so" in the name, not ".so.".
- (gld${EMULATION_NAME}_search_dir): Accept a plain .so file.
-
- * Makefile.in (ld.info): Add -I$(srcdir). From Alan Modra
- <alan@spri.levels.unisa.edu.au>.
-
-Thu Jan 30 11:31:52 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/sunos.em: Include <ctype.h>.
- (gld${EMULATION_NAME}_find_so): Skip the directory name when
- searching for ".so.".
- (gld${EMULATION_NAME}_search_dir): Make sure that the library name
- has a version number, and that only version numbers follow .so.
-
-Wed Jan 29 18:15:00 1997 Geoffrey Noer <noer@cygnus.com>
-
- * scripttempl/pe.sc:
- * scripttempl/ppcpe.sc: add *(.gcc_except_table) to the text
- section so Win32 executables are valid.
-
-Mon Jan 27 12:28:43 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/elf.sc: Put linkonce reloc section in other
- appropriate reloc sections.
- * scripttempl/elfmips.sc: Add linkonce support.
- * scripttempl/elfppc.sc: Likewise.
-
-Fri Jan 24 10:44:09 1997 Jeffrey A Law (law@cygnus.com)
-
- * emulparms/mn10200.sh (OTHER_RELOCATING_SECTIONS): Move the
- stack up to 0x80000.
- * emulparms/mn10300.sh (OTHER_RELOCATING_SECTIONS): Likewise.
-
-Tue Jan 21 12:11:10 1997 Doug Evans <dje@seba.cygnus.com>
-
- * emulparams/m32relf.sh (OTHER_RELOCATING_SECTIONS): Use PROVIDE
- to define `_stack'.
-
-Thu Jan 16 17:07:52 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.h (args_type): Rename auxiliary_filter_shlib to
- auxiliary_filters, and make it char **.
- * lexsup.c (parse_args): Handle -f by setting up an array.
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Use
- new name of auxiliary_filters.
-
- * ld.texinfo (Options): Improve documentation of --filter and
- --auxiliary.
-
-Tue Jan 14 15:44:28 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo (Options): Clarify that the normal usage is -T.
- (Commands): Likewise.
-
-Thu Jan 9 11:26:27 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/armcoff.sc: Correct mask used for .data address.
-
-Wed Jan 8 15:14:59 1997 Geoffrey Noer <noer@cygnus.com>
-
- * emultempl/pe.em: make default executable a.exe instead of
- a.out
-
-Fri Jan 3 17:33:34 1997 Richard Henderson <rth@tamu.edu>
-
- * scripttempl/elf.sc: Move .got closer to .sdata and .sbss by
- shifting .plt back. Rumour has it that the NetBSD ld.so depends
- on .dynamic being after .got, so we leave that.
-
-Fri Jan 3 14:04:40 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (clean): Don't remove configdoc.texi.
- (maintainer-clean): Do remove configdoc.texi.
-
- * ld.texinfo (Operators): Remove '@' from @smallexmple in comment
- to avoid confusing texi2roff.
-
-Fri Jan 3 11:27:02 1997 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * scripttempl/v850.sc (.zdata): Add .zcommon section.
- (.tdata): Add .tcommon and .tcommon_byte sections.
-
-Thu Jan 2 18:14:32 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.tgt (mips*el-*-linux*, mips*-*-linux*): New targets.
- * scripttempl/elfmips.sc: Use __start as the entry address for
- mips*-*-linux*.
-
-Tue Dec 31 14:48:30 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (ALL_CFLAGS): Add -D_GNU_SOURCE.
-
- * ld.h (args_type): Add filter_shlib and auxiliary_filter_shlib
- fields.
- * lexsup.c (parse_args): Recognize --auxiliary/-f and
- --filter/-F.
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
- Pass filter_shlib and auxiliary_filter_shlib to
- size_dynamic_sections.
- * ld.texinfo, ld.1: Document --filter/-F and --auxiliary/-f.
-
-Mon Dec 30 13:55:57 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * scripttempl/v850.sc (.tdata) Add .tbss and .tbyte sections.
-
-Wed Dec 18 22:57:35 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-make.sed: Use NewFolderRecursive for installation.
-
-Fri Dec 13 14:08:50 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * scripttempl/v850.sc: Make sure __{e,g}p start relative to the
- {s,t}data sections. Do not emit any linker generated symbols if
- -r. Use {TEXT,{Z,S,T}DATA}_START_ADDR variables to initialize
- where the different sections go. Change some whitespace.
-
- * emulparams/v850.sh ({TEXT,{Z,S,T}DATA}_START_ADDR): Define
- appropriately. Remove crud not used anymore.
-
-Fri Dec 13 10:19:57 1996 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in (emn10200.c): Add dependencies.
- * configure.tgt: Handle mn10200.
- * emulparms/mn10200.sh: New file.
-
-Thu Dec 12 17:04:55 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/gld960c.em: Include <ctype.h>.
- (gld960_set_output_arch): Get the machine type from the -A option
- if there is one, rather than always using core.
-
-Sat Dec 7 10:07:51 1996 Jeffrey A Law (law@cygnus.com)
-
- * emulparms/mn10300.sh: Handle leading underscores.
-
-Thu Dec 5 13:45:58 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_place_section): Only
- set hold_rel if SEC_ALLOC is set.
-
-Tue Dec 3 11:29:20 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (section_already_linked): Set the output_offset as well
- as the output_section when only reading symbols from a file.
-
-Mon Dec 2 11:43:50 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emulparams/*.sh: Make sure that each set of parameters which
- uses the elf.sc script sets MACHINE.
-
-Wed Nov 27 03:22:05 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * scripttempl/elf{,mips,ppc}.sc: Add the remaining DWARF sections.
- * scripttempl/elfd10v.sc: Likewise.
- * scripttempl/v850.sc: Likewise.
-
-Tue Nov 26 16:58:33 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure: Rebuild with autoconf 2.12.
-
-Mon Nov 25 12:17:55 1996 Jim Wilson <wilson@cygnus.com>
-
- * emultempl/pe.em (gld_${EMULATION_NAME}_set_symbols): Add case
- for bfd_vma to init loop.
-
-Mon Nov 25 09:55:07 1996 Jeffrey A Law (law@cygnus.com)
-
- * emulparms/mn10300.sh: Remove bogus '_' prefix for
- entry symbol and ctor/dtor stuff.
-
-Fri Nov 15 13:00:18 1996 Jeffrey A Law (law@cygnus.com)
-
- * Makefile.in (emn10300.c): Add dependencies.
- * configure.tgt: Handle mn10300.
- * emulparms/mn10300.sh: New file.
-
-Tue Nov 5 10:57:50 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * emulparams/d10velf.sh (READONLY_START_ADDR): Changed to 0x2000004.
- (EMBEDDED): Define.
-
-Fri Nov 1 10:01:27 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo: Add section on reporting bugs.
-
- * scripttempl/m68kcoff.sc: Make sure the etext and __CTOR_LIST__
- symbols are correctly aligned.
-
-Thu Oct 31 09:28:59 1996 Jeffrey A Law (law@cygnus.com)
-
- * scriptempl/v850.sc (zdata): Handle reszdata, romzdata and
- romzbss too.
-
-Tue Oct 29 12:33:05 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * emulparams/d10velf.sh: Changes needed for D10V-EVA board.
- Set TEXT_START_ADDR to 0x1000000. Set READONLY_START_ADDR to
- 0x2000000.
-
- * scripttempl/elfd10v.sc: Fix calculation of .text. Change
- .stack to start at 0x2007ffe.
-
-Mon Oct 28 15:37:00 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * configure.tgt (sparclet*-*-aout*): Delete, use sparc*-*-aout*.
-
-Wed Oct 23 16:17:22 1996 Jeffrey A Law (law@cygnus.com)
-
- * scriptempl/v850.sc (zdata): Fix typo "zrodata" -> "rozdata".
-
- * scriptempl/v850.sc (zdata): Make sure this stays
- in lo-memory.
-
-Tue Oct 22 11:36:47 1996 Jeffrey A Law (law@cygnus.com)
-
- * scripttempl/v850.sc (__ep): Put it at the start
- of the tda section.
-
- * scriptempl/v850.sc: Move all "normal" sections into
- the external memory region (0x100000 - 0x200000).
-
-Mon Oct 21 17:16:59 1996 Michael Meissner <meissner@wogglebug.tiac.net>
-
- * scripttempl/elfd10v.sc: Clone from elf.sc, move .text to
- 0x10000, so that is more room for data.
-
- * emulparams/d10velf.sh (TEXT_START_ADDR): Now 0x100000.
- (READONLY_START_ADDR): Now 0x0.
- (SCRIPT_NAME): Now elfd10v.
-
- * Makefile.in (ed10velf.c): Depend on elfd10v.sc, not elf.sc.
-
-Fri Oct 18 22:12:49 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * emulparams/m32relf.sh (TEXT_START_ADDR): Change from 0 to 0x100.
-
-Fri Oct 18 15:43:38 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (ALL_EMULATIONS): Remove eelf64alpha.o.
- (ALL_64_EMULATIONS): New variable.
- * configure.in: Accept --enable-64-bit-bfd option. If it is set
- with --enable-targets=all, include ALL_64_EMULATIONS in
- EMULATION_OFILES.
- * configure: Rebuild.
-
-Fri Oct 18 12:58:35 1996 Jeffrey A Law (law@cygnus.com)
-
- * scripttempl/v850.sc (__gp, __ep): Define.
-
-Thu Oct 17 18:14:07 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo: Try to consistently use a single or a double dash
- for each option.
-
-Thu Oct 17 10:17:20 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * emulparams/m32relf.sh (EMBEDDED): Define.
-
-Thu Oct 17 10:56:49 1996 Jeffrey A Law (law@cygnus.com)
-
- * scripttempl/v850.sc (.zdata): Add this before .text.
- (.sdata): Also include .rosdata as part of the .sdata.
- (.tdata): Include this just before .sdata.
-
- * emulparms/v850.sh (SCRIPT_NAME): Use "v850" not "elf".
- * scripttempl/v850.sc: Wrap script with a "cat << EOF".
-
-Wed Oct 16 23:10:01 1996 Jeffrey A Law (law@cygnus.com)
-
- * scripttempl/v850.sc: New linker script for the V850.
- * Makefile.in: Use it.
-
-Thu Oct 10 17:57:00 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emulparams/elf32b4300.sh: Define _gp in OTHER_GOT_SYMBOLS, not
- OTHER_READWRITE_SECTIONS.
- * emulparams/elf32l4300.sh: Likewise.
-
-Wed Oct 9 14:36:18 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.h (ld_config_type): Add warn_section_align field.
- * lexsup.c (OPTION_WARN_SECTION_ALIGN): Define.
- (ld_options): Add --warn-section-align.
- (parse_args): Handle --warn-section-align.
- * ldlang.c (lang_size_sections): If warn_section_align, warn if
- the start of a section changes due to alignment.
- * ld.texinfo, ld.1: Document --warn-section-align.
- * ld.texinfo: Change some single dashes to double dashes.
-
- * emultempl/pe.em (set_pe_subsystem): Record entry symbol for each
- subsystem type. Ifdef out os2 type. Recognize a version number.
-
-Tue Oct 8 12:07:13 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/pe.em (set_pe_subsystem): When setting the subsystem
- to windows, set the entry point.
-
- * Makefile.in (ldlex.c): Don't pass any options to $(LEX).
-
-Mon Oct 7 17:29:05 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo (Options): Mention .so extensions for shared
- libraries.
-
-Sun Oct 6 22:35:36 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * scripttempl/elf{,mips,ppc}.sc: Add DWARF 2 sections.
-
-Fri Oct 4 18:49:31 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/m68kcoff.sc: Only set the address of .text if
- RELOCATING.
-
-Fri Oct 4 10:59:52 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * emulparams/sparcaout.sh ({BIG,LITTLE}_OUTPUT_FORMAT): Define.
- * scripttempl/aout.sc ({BIG,LITTLE}_OUTPUT_FORMAT): Provide default.
- (OUTPUT_FORMAT): Support bi-endian targets.
-
-Thu Oct 3 13:52:03 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * fnmatch.h, fnmatch.c: Remove (now in libiberty).
- * Makefile.in: Rebuild dependencies.
- (CFILES): Remove fnmatch.c.
- (HFILES): Remove fnmatch.h.
- (OFILES): Remove fnmatch.o.
-
-Thu Oct 3 15:41:24 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
-
- * Makefile.in (mostlyclean): Move config.log to distclean.
-
-Wed Oct 2 23:45:25 1996 Geoffrey Noer <noer@cygnus.com>
-
- * emultmpl/pe.em: increase size of stack reserve to 0x2000000
- (necessary in order to compile parse.c in gcc sources under NT)
-
-Wed Oct 2 14:49:10 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * lexsup.c (ld_options): Fix typo in --rpath-link description.
- * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Suggest
- --rpath if a needed library is not found.
-
-Tue Oct 1 16:17:33 1996 Joel Sherrill <joel@oarcorp.com>
-
- * configure.tgt (mips*-*-rtems*): New target, like mips*-*-elf*.
-
-Tue Oct 1 15:50:34 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo (Options): Give more detail on -l option.
-
- * scripttempl/elfmips.sc: Handle CREATE_SHLIB the same way that
- elf.sc does, so that glibc works better.
-
- * ldver.c (ld_program_version): New variable.
- (ldversion): Use it.
- * ldver.h (ld_program_version): Declare.
- * lexsup.c (ld_options): Handle --dll-verbose like --verbose, not
- --version. Change --version handling to match current GNU
- standards.
- (help): Print bug report address.
-
-Mon Sep 30 12:14:43 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * Makefile.in (em32relf.c): Add rule for.
- * configure.tgt (m32r-*-*): Recognize.
- * emulparams/m32relf.sh: New file.
-
-Thu Sep 26 13:58:47 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-make.sed: Add symbolic doublequoting to ldmain compile edit.
- * mpw-config.in: Add mips-*-* case as mips-elf, and use more
- wildcards in matching.
- * mpw-emipself.c: New file, pregenerated mips elf emulation.
-
-Tue Sep 17 12:18:21 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldint.texinfo: Rewrote.
-
- * configure.tgt: Add cases for MIPS 5000 like MIPS 4300.
-
-Mon Sep 16 17:55:21 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/armcoff.sc: Only define symbols if RELOCATING. Fix
- syntax error on __end__ line.
-
- * scripttempl/armcoff.sc: For -N or -n, don't align .data. From
- Chris Hadley <Christopher.Hadley@cl.cam.ac.uk>
-
-Sun Sep 15 22:09:56 1996 Jeffrey A Law (law@cygnus.com)
-
- * emulparms/v850.sh: Fix OTHER_RELOCATING_SECTIONS.
-
-Sun Sep 15 10:38:16 1996 Mark Alexander <marka@cygnus.com>
-
- * emulparms/d10v.sh: Set OTHER_RELOCATING_SECTIONS to put
- stack at top of simulator memory.
-
-Fri Sep 13 15:49:45 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlex.l (SYMBOLCHARN): Add $, _, and ~.
-
-Wed Sep 11 23:30:42 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (get_emulation): Check for -mips4 like -mips1, et. al.
-
-Thu Sep 5 15:24:12 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (section_already_linked): Accept a lang_input_statement
- as the PTR argument. If the file is symbols only, discard all
- input sections.
- (ldlang_add_file): Pass entry to bfd_map_over_sections.
-
-Wed Sep 4 15:53:43 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.tgt (alpha-*-gnu*): New target. From Fila Kolodny
- <fila@ibi.com>.
-
-Tue Sep 3 00:52:54 1996 Jeffrey A Law (law@cygnus.com)
-
- * emulparms/v850.sh: Set OTHER_RELOCATING_SECTIONS
-
-Sun Sep 1 21:48:58 1996 Jeffrey A Law (law@cygnus.com)
-
- * emulparms/v850.sh: Set EMBEDDED.
-
-Fri Aug 30 22:30:30 1996 Jeffrey A Law (law@cygnus.com)
+2000-03-02 H.J. Lu <hjl@gnu.org>
- * emulparms/v850.sh: Entry symbol is "_start", tweak
- ctor/dtor support.
+ * emulparams/elf32mcore.sh: Include "getopt.h".
-Fri Aug 30 18:32:31 1996 Ian Lance Taylor <ian@cygnus.com>
+2000-03-01 Ian Lance Taylor <ian@zembu.com>
- * configure.tgt (sh-*-elf*): New target.
- * emulparams/shelf.sh: New file.
- * emulparams/shlelf.sh: New file.
- * Makefile.in (ALL_EMULATIONS): Add eshelf.o and eshlelf.o.
- (eshelf.c, eshlelf.c): New targets.
- * scripttempl/elf.sc: If EMBEDDED is defined, then don't add
- SIZEOF_HEADERS to TEXT_START_ADDR. Expand CTOR_START and CTOR_END
- around .ctors, and DTOR_START and DTOR_END around .dtors. Expand
- OTHER_RELOCATING_SECTIONS if RELOCATING.
+ * configure.tgt: Remove *-*-aout, *-*-coff, and *-*-netware.
-Thu Aug 29 16:57:46 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+2000-03-01 H.J. Lu <hjl@gnu.org>
- * configure.{host,tgt} (i[345]86-*-*): Recognize i686 for pentium
- pro.
+ * emulparams/mipspe.sh: Add SUBSYSTEM and INITIAL_SYMBOL_CHAR.
+ * emulparams/shpe.sh: Likewise.
-Mon Aug 26 12:58:11 1996 Ian Lance Taylor <ian@cygnus.com>
+2000-03-01 Nick Clifton <nickc@cygnus.com>
- * ldgram.y (section): Add opt_nocrossrefs; pass value to
- lang_enter_overlay.
- (opt_nocrossrefs): New nonterminal.
- * ldlex.l: Recognize NOCROSSREFS keyword in EXPRESSION mode.
- * ldlang.c (overlay_nocrossrefs): New static variable.
- (lang_enter_overlay): Add nocrossrefs parameter.
- (lang_leave_overlay): Only add nocrossrefs if overlay_nocrossrefs
- is set. Initialize overlay_nocrossrefs.
- * ldlang.h (lang_enter_overlay): Update declaration.
- * ld.texinfo (Overlays): Update documentation.
+ * pe-dll.c: Remove unused variables and add ATTRIBUTE_UNUSED
+ to unused parameters.
- * ldver.c (ldversion): Print GNU ld in the version message.
+ * emultempl/pe.em: Add "#ifdef DLL_SUPPORT" around static
+ functions only used by DLL code.
+ (_place_orphan): Initialise 'dollar'.
-Thu Aug 22 17:10:40 1996 Ian Lance Taylor <ian@cygnus.com>
+2000-03-01 H.J. Lu <hjl@gnu.org>
- * configure.host: Set HLDENV.
- * configure.in: Substitute HLDENV.
- * configure: Rebuild.
- * Makefile.in (HLDENV): New variable.
- ($(LD_PROG)): Use $(HLDENV).
+ * ldmain.c (undefined_symbol): Take one more arg, fatal, to
+ indicate if the undefined symbol is a fatal error or not.
+ Don't delete the output file if "fatal" is false.
-Thu Aug 22 16:29:28 1996 Jeffrey A Law (law@cygnus.com)
+2000-02-29 H.J. Lu <hjl@gnu.org>
- * Makefile.in (ev850.c): New target.
- * configure.tgt (v850-*-*): New target.
- * emulparams/v850.sh: New file.
+ * Makefile.am (check-DEJAGNU): Also pass LIBS="$(LIBS)".
+ Set LC_COLLATE and LC_ALL to null and export them. It is for
+ sort which expects the C locale.
+ Add $(LIBS) to all $(HOSTING_LIBS).
+ * Makefile.in: Rebuild.
-Thu Aug 22 11:16:02 1996 Stan Shebs <shebs@andros.cygnus.com>
+2000-02-29 Alan Modra <alan@spri.levels.unisa.edu.au>
- * mpw-make.sed: Add @DASH_C_FLAG@ to compiler edit.
+ * emultempl/{aix.em, armcoff.em, armelf.em, armelf_oabi.em,
+ beos.em, elf32.em, generic.em, gld960.em, gld960c.em, hppaelf.em,
+ linux.em, lnk960.em, mipsecoff.em, sunos.em, vanilla.em}
+ (ld_emulation_xfer_struct): Add missing NULL initialiser for
+ find_potential_libraries.
-Wed Aug 21 11:26:37 1996 Ian Lance Taylor <ian@cygnus.com>
+2000-02-28 Jim Blandy <jimb@redhat.com>
- * scripttempl/elf.sc: Put .gnu.linkonce* sections in appropriate
- containing sections.
+ * ldgram.y (exclude_name_list): Don't require a comma to separate
+ list entries; the lexer considers commas to be valid part of a
+ filename, so in something like `foo, bar' the comma is considered
+ part of the first filename, `foo,'.
+ * ld.texinfo: Update section on EXCLUDE_FILE lists.
-Mon Aug 19 13:01:42 1996 Ian Lance Taylor <ian@cygnus.com>
+2000-02-27 Loren J. Rittle <ljrittle@acm.org>
- * fnmatch.c: Include sysdep.h.
+ * configure.host: Added HOSTING_CRT0, HOSTING_LIBS for
+ host "i[3456]86-*-freebsdelf*".
-Mon Aug 19 11:28:29 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+2000-02-27 Mark Elbrecht <snowball3@bigfoot.com>
- * genscripts.sh: Undo 8/16 change.
+ * scripttempl/i386go32.sc: Move misplaced semicolons.
- * emulparams/d10velf.sh (MACHINE): Explicitly set to nothing.
+2000-02-25 Ian Lance Taylor <ian@zembu.com>
-Fri Aug 16 19:18:08 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+ * Makefile.am (ALL_EMULATIONS): Remove ehppaelf.o.
+ (ALL_64_EMULATIONS): Remove eelf64hppa.o.
+ (eelf64hppa.c, ehppaelf.c): Remove targets.
+ * Makefile.in: Rebuild.
- * genscripts.sh: Explicitly reset any shell variables set or used
- by the various .sc scripts to allow inadvertant use of these
- names as normal environment variables by the person running
- configure.
+2000-02-25 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
- * Makefile.in (ed10velf.c): Use tdir_d10v, not tdir_arcelf.
+ * configure.tgt (targ_extra_ofiles): Enable elf64_sparc on
+ GNU/Linux/sparc, but keep the default as 32.
-Fri Aug 16 14:15:41 1996 James G. Smith <jsmith@cygnus.co.uk>
+ * configure.tgt: Enable elf64_sparc on Solaris7+/sparc. And make
+ it default if sparcv9 or sparc64.
- * scripttempl/armcoff.sc (__bss_start__, __bss_end__,
- __data_start__, __data_end__): Added to keep in sync. with the
- default ARM crt0.s. Added __CTOR_LIST__ and __DTOR_LIST__ support.
+2000-02-24 Nick Clifton <nickc@cygnus.com>
-Thu Aug 8 14:24:56 1996 Ian Lance Taylor <ian@cygnus.com>
+ * Makefile.am: Add rules to build emipspe.o and earmpe.o.
+ * Makefile.in: Regenerate.
+ * configure.tgt: Add targets for arm-wince, sh-pe and mips-pe.
- * ldcref.c (check_reloc_refs): If info->same, look for any symbol
- defined in info->defsec, not just the section symbol.
+ * ldemul.h (ld_emulation_xfer_struct): Add new field:
+ find_potential_libraries.
+ * ldemul.c (ldemul_find_potential_libraries): New function.
-Wed Aug 7 14:40:48 1996 Philippe De Muyter <phdm@info.ucl.ac.be>
+ * ldfile.c (ldfile_open_file_search): Allow function to be
+ exported.
+ (ldfile_open_file): Call ldemul_find_potential_libraries.
+ * ldfile.h: Add prototype for ldfile_open_file_search.
- * 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.
- * sysdep.h (strstr): Declare if NEED_DECLARATION_STRSTR.
- * ldmain.c (sbrk): Declare if HAVE_SBRK and
- NEED_DECLARATION_SBRK.
+ * pe-dll.c: Add support for ARM, MIPS and SH targets.
- * ldlang.c (lang_record_phdrs): Cast xmalloc and xrealloc return.
+ * emulparams/mipspe.sh: New file. Parameters for mips-pe target.
+ * emulparams/shpe.sh: New file. Parameters for sh-pe target.
-Mon Aug 5 16:26:14 1996 Ian Lance Taylor <ian@cygnus.com>
+ * emultempl/pe.em: Add support for ARM, MIPS and SH DLLs.
+ (gld_X_find_potential_libraries): New function. Search for
+ libraries called "*.lib".
- * ldlex.l: Recognize OVERLAY.
- * ldgram.y: Add section_phdr field to %union.
- (section): Handle phdr_opt result. Add OVERLAY case.
- (opt_exp_without_type): New nonterminal.
- (phdr_opt): Return list of phdrs.
- (overlay_section): New nonterminal.
- * ldlang.c: Include <ctype.h>.
- (lang_leave_output_section_statement): Add phdrs parameter.
- Change all callers.
- (lang_section_in_phdr): Remove.
- (overlay_vma, overlay_lmn, overlay_max): New static variables.
- (struct overlay_list): Define.
- (overlay_list): New static variable.
- (lang_enter_overlay, lang_enter_overlay_section): New functions.
- (lang_leave_overlay_section, lang_leave_overlay): New functions.
- * ldlang.h (lang_leave_output_section_statement): Update
- declaration for new parameter.
- (lang_section_in_phdr): Don't declare.
- (lang_enter_overlay, lang_enter_overlay_section): Declare.
- (lang_leave_overlay_section, lang_leave_overlay): Declare.
- * ld.texinfo (Overlays): New node under SECTIONS, documenting
- overlays.
+ * scriptempl/pe.sc: Add .pdata section.
- * ldlex.l: Recognize MAX and MIN.
- * ldgram.y (MAX, MIN): New terminals.
- (exp): Recognize MAX and MIN.
- * ldexp.c (fold_binary): Handle MAX and MIN.
- * ld.texinfo (Arithmetic Functions): Document MAX and MIN.
+2000-02-23 Richard Henderson <rth@cygnus.com>
- * ld.texinfo (PHDRS): Use @cindex, not @kindex, for program header
- index entries.
+ * scripttempl/elfd10v.sc: Remove dynamic linking hooks.
+ Add and use memory regions.
- * ldgram.y (SIZEOF, ADDR): Do not specify type.
+2000-02-23 Linas Vepstas (linas@linas.org)
- * ldcref.c (check_nocrossref): Skip symbols with no output
- sections.
+ * emulparams/elf32i370.sh, scripttempl/elfi370.sc: New.
-Fri Aug 2 14:57:49 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldgram.y (LOADADDR): New terminal.
- (exp): Handle LOADADDR.
- * ldlex.l: Recognize LOADADDR.
- * ldexp.c (exp_print_token): Add LOADADDR.
- (fold_name): Implement LOADADDR.
- * ldlang.c (exp_init_os): Treat LOADADDR like ADDR.
- * ld.texinfo (Arithmetic Functions): Document LOADADDR.
-
-Thu Aug 1 12:52:19 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.h (check_nocrossrefs): Declare.
- * ldlang.h (struct lang_nocrossref): Define.
- (struct lang_nocrossrefs): Define.
- (nocrossref_list): Declare.
- (lang_add_nocrossref): Declare.
- * ldlex.l: Recognize NOCROSSREFS keyword.
- * ldgram.y (%union): Add nocrossref field.
- (NOCROSSREFS): New terminal.
- (ifile_p1): Recognize NOCROSSREFS.
- (nocrossref_list): New nonterminal.
- * ldlang.c (nocrossref_list): Define.
- (lang_add_nocrossref): New function.
- * ldmain.c (main): If nocrossref_list is not NULL, call
- check_nocrossrefs.
- (warning_callback): Free symbols if there is no place to store
- them.
- (notice): Call add_cref if nocrossref_list is not NULL.
- * ldcref.c: Include "ldexp.h" and "ldlang.h".
- (check_nocrossrefs): New function.
- (check_nocrossref): New static function.
- (struct check_refs_info): Define.
- (check_refs, check_reloc_refs): New static functions.
- * Makefile.in: Rebuild dependencies.
- * ld.texinfo (Option Commands): Document NOCROSSREFS.
-
- * ld.texinfo (Section Placement): Improve the wording of the
- wildcard documentation. Mention that wildcards are only searched
- for on the command line, not in the file system.
-
- * emultempl/sunos.em (gld${EMULATION_NAME}_after_open): Move
- definition of lib_path inside condition where it is used.
-
-Wed Jul 31 13:17:10 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * emulparams/d10velf.sh: Now works with elf.sc.
-
-Wed Jul 31 11:52:03 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * emulparams/d10velf.sh (SCRIPT_NAME): Change to vanilla.
-
-Tue Jul 30 14:46:42 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (lang_size_sections): Add the section VMA to the result
- value when computing the address of a section.
-
- * ld.h (args_type): Add cref field.
- * lexsup.c (parse_args): Set command_line.cref.
- * ldmain.c (main): Check command_line.cref rather than
- link_info.notice_all.
- (notice): Likewise.
-
- * ldcref.c (output_one_cref): Don't crash if a symbol is defined
- in a section without an owner.
-
-Mon Jul 29 17:23:33 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * fnmatch.h, fnmatch.c: New files.
- * ldlex.l: Remove unused definition of FILENAME. Add definition
- of WILDCHAR. In SCRIPT mode, accept any sequence of WILDCHAR as a
- NAME.
- * ldgram.y (file_NAME_list): Accept '*' and '?' specially.
- (input_section_spec): Accept '?' specially.
- (statement): Change exp to mustbe_exp in length and FILL cases.
- (section): Call ldlex_script before section statements, and call
- ldlex_popstate after them.
- * ldlang.c: Include "fnmatch.h".
- (wildcardp): New static function.
- (wild_section): Permit the section name to be a wildcard.
- (wild_file): New static function, broken out of wild.
- (wild): Call wild_file. Permit the file name to be a wildcard.
- (open_input_bfds): Don't call lookup_name for a wildcard pattern.
- * Makefile.in: Rebuild dependencies.
- (CFILES): Add fnmatch.c.
- (HFILES): Add fnmatch.h.
- (OFILES): Add fnmatch.o.
- * ld.texinfo: Document that file and section names can now be
- wildcard patterns.
-
- * ldlang.c (lang_place_orphans): Correct condition: place a common
- section if not relocateable or if common definitions are forced.
-
-Wed Jul 24 12:16:38 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * emulparams/d10velf.sh (SCRIPT_NAME): Change to elf.
-
-Wed Jul 24 13:38:22 1996 Michael Meissner <meissner@wogglebug.tiac.net>
-
- * configure.tgt (d10v-*-*): Don't require the -elf, allow plain d10v.
-
-Tue Jul 23 10:36:19 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * Makefile.in (ed10velf.c): New target.
- * configure.tgt (d10v-*-elf*): New target.
- * emulparams/d10velf.sh: New file.
-
-Thu Jul 18 16:25:39 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.tgt (sparc*-*-sysv4*): New target. From Andrew Gierth
- <ANDREWG@microlise.co.uk>.
-
- * configure.host: Change irix5 to irix[56]*.
+ * Makefile.am: Add support for Linux/IBM 370.
* configure.tgt: Likewise.
-Wed Jul 17 10:52:46 1996 Kim Knuttila <krk@cygnus.com>
-
- * emultempl/pe.em (sort_sections): Pay attention to return code.
-
- * ldmisc.c (demangle): Remove all prefix '.'s from a name.
-
-Mon Jul 15 11:49:49 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Round
- the value of __start_SECNAME to the alignment required by the
- section to be placed.
-
-Tue Jul 9 12:09:02 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.tgt (mips*el-*-elf*): Use elf32elmip.
- (mips*-*-elf*): Use elf32ebmip.
- * emulparams/elf32bmip.sh (EMBEDDED): Don't define.
- * emulparams/elf32lmip.sh (EMBEDDED): Don't define.
- * emulparams/elf32elmip.sh: New file; copy of elf32lmip.sh with
- EMBEDDED defined.
- * emulparams/elf32ebmip.sh: New file; copy of elf32bmip.sh with
- EMBEDDED defined.
- * emulparams/elf32b4300.sh (EMBEDDED): Define.
- * emulparams/elf32l4300.sh (EMBEDDED): Define.
- * Makefile.in (ALL_EMULATIONS): Add eelf32ebmip.o eelf32elmip.o.
- (eelf32ebmip.c, eelf32elmip.c): New targets.
-
-Thu Jul 4 12:01:03 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldver.c (ldversion): Set version to cygnus-2.7.1.
-
- * Released binutils 2.7.
-
- * emulparams/pc532macha.sh: Rename from pc532machaout.sh to avoid
- System V file name limitations.
- * configure.tgt (nc32k-pc532-mach*, ns32k-pc532-ux*): Use
- pc532macha rather than pc532machaout.
- * Makefile.in (ALL_EMULATIONS): Change epc532machaout.o to
- epc532macha.o.
- (epc532macha.c): Rename target from epc532machaout.c.
-
-Wed Jul 3 11:40:10 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (print_padding_statement): Use %u, not %x, to print
- fill value.
-
-Sun Jun 30 11:16:43 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-eppcmac.c: Update to reflect May 23 change to aix.em.
-
-Thu Jun 27 14:03:42 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Put the .sa
- file just before the .so file, rather than just after.
-
- * configure.host: Use -print-file-name=FILE rather than piping
- -print-libgcc-file-name through sed.
- (i[345]86*-*-sco*, i[345]86-*-isc*): Create crtbegin.o and
- crtend.o files, in case gcc doesn't use them.
- * Makefile.in (mostlyclean): Remove crtbegin.o and crtend.o.
-
-Wed Jun 26 15:57:21 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.tgt (mips*-dec-osf*): New target.
-
-Tue Jun 25 22:15:29 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.
- (AC_PROG_INSTALL): Added.
- * configure: Rebuilt.
-
-Mon Jun 24 18:48:16 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * scripttempl/elfppc.sc (_GLOBAL_OFFSET_TABLE_): Don't do a
- PROVIDE of _GLOBAL_OFFSET_TABLE_, since it needs to be at a
- non-fixed location.
-
-Mon Jun 24 17:55:31 1996 Jouke Numan <jnuman@bazis.nl>
-
- * ldlang.h (enum section_type): Define.
- (lang_output_section_statement_type): Remove loadable field. Add
- sectype field.
- (lang_enter_output_section_statement): Change flags parameter in
- prototype to sectype.
- * ldgram.y (typebits): Remove.
- (sectype): New static variable.
- (opt_at): Use sectype rather than typebits.
- (type): Set sectype rather than typebits.
- (atype): Likewise.
- * ldlex.l: Recognize DSECT, COPY, INFO, and OVERLAY in
- EXPRESSION mode.
- * ldlang.c (lang_output_section_statement_lookup): Set sectype
- field rather than loadable field.
- (wild_doit): Check sectype rather than loadable.
- (lang_record_phdrs): Likewise.
- (lang_enter_output_section_statement): Rename flags parameter to
- sectype. Set sectype field rather than loadable field. Set flags
- field based on sectype.
-
-Mon Jun 24 12:00:32 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/elf.sc: Force .stab* and .comment sections to start
- at 0.
-
- * configure.in: On alpha*-*-osf*, link against libbfd.a if not
- using shared libraries.
- * configure: Rebuild with autoconf 2.10.
-
-Fri Jun 21 17:40:56 1996 Joel Sherrill <joel@merlin.gcs.redstone.army.mil>
-
- * configure.tgt: Add support for *-*-rtems* configurations.
-
-Fri Jun 21 13:05:51 1996 Richard Henderson <rth@tamu.edu>
-
- * configure.tgt (alpha-*-linuxecoff*): New target.
- (alpha-*-linux*): Use elf64alpha.
- * emulparams/elf64alpha.sh: New file.
- * emultempl/elf32.em: If ELFSIZE is not set, set it to 32. Use
- ${ELFSIZE} rather than 32 when calling BFD routines.
- (hold_rodata): New static variable.
- (gld${EMULATION_NAME}_place_orphan): Use hold_rodata for a
- readonly section that is not code.
- (gld${EMULATION_NAME}_place_section): Set hold_rodata. Don't use
- a .rel section unless its bfd_section field is not NULL.
- * Makefile.in (ALL_EMULATIONS): Add eelf64alpha.o.
- (eelf64alpha.c): New target.
-
-Fri Jun 21 12:45:46 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmisc.c (vfinfo): Correct handling of 0 in %W case.
-
-Thu Jun 20 13:55:28 1996 Ian Lance Taylor <ian@cygnus.com>
-
- Add enough support to understand the gcc svr3.ifile script:
- * ldlex.l: Recognize BLOCK and GROUP in EXPRESSION context. Add
- BIND keyword.
- * ldgram.y: Add BIND token.
- (section): Recognize GROUP.
- (opt_ext_with_type): Recognize a couple of cases of BIND.
- * ldlang.c (init_os): Don't do anything if section is already
- initialized. Call exp_init_os on addr_tree field.
- (exp_init_os): New static function.
- (map_input_to_output_sections): Call exp_init_os on assignment
- expression.
- (lang_place_orphans): Check for common sections by name COMMON
- rather than by common_section field. Don't warn about absence of
- [COMMON] command.
-
- * ldlang.h (lang_input_statement_type): Remove useless fields
- common_section, common_output_section, and complained, as well as
- all references to them.
-
- * ldexp.c: Reindent a lot of code.
- (exp_fold_tree): Call FAIL rather than einfo in default case.
-
-Wed Jun 19 11:40:14 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.host (m88*-*-dgux*): Quote HOSTING_CRT0. From
- <randall.hron@medaphis.com>.
-
-Tue Jun 18 15:53:09 1996 Jeffrey A. Law <law@rtl.cygnus.com>
-
- * scripttempl/h8300s.sc: New file for H8/S.
- * emulpararms/h8300s.sh: New file for H8/S.
- * Makefile.in (ALL_EMULATIONS): Add H8/S.
- (e_h8300s.c): Add dependencies.
- * configure.tgt: Add H8/S to targ_extra_emuls.
-
-Tue Jun 18 17:55:39 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.tgt (i[345]86*-*-isc*): New target. From
- <uddeborg@carmen.se>.
-
-Wed Jun 12 12:46:21 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * lexsup.c: Include "libiberty.h".
- (parse_args): Copy the -Y argument into memory.
- (set_default_dirlist): Don't put the ':' back into the directory
- list.
-
-Fri Jun 7 11:27:42 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/sunos.em: Include libiberty.h.
- (gld${EMULATION_NAME}_set_symbols): New static function to add
- LD_LIBRARY_PATH to the list of search directories.
- (ld_${EMULATION_NAME}_emulation): Add new set_symbols routine.
-
-Thu Jun 6 11:50:31 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emulparams/elf32bmip.sh (OTHER_GOT_SYMBOLS): Use ALIGN(16)
- rather than . when computing _gp value. From Per Fogelstrom.
- * emulparams/elf32lmip.sh (OTHER_GOT_SYMBOLS): Likewise.
-
- * ldmain.c (main): Don't close and unlink the file on error, since
- remove_output will do it anyhow.
- * ldlang.c (open_output): Set boolean variable to true, not 1.
-
-Wed Jun 5 18:34:14 1996 James G. Smith <jsmith@cygnus.co.uk>
-
- * emulparams/{elf32b4300.sh,elf32l4300.sh} (SCRIPT_NAME): Use
- elfmips instead of elf.
-
-Tue Jun 4 18:43:07 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldcref.c: New file.
- * ld.h (add_cref, output_cref): Declare.
- * ldmain.c (main): Initialize notice_all field. If it is set at
- end of link, call output_cref.
- (notice): Rename from notice_ysym. Check notice_all.
- * ldmisc.c (finfo): Make globally visible.
- * ldmisc.h (finfo): Declare.
- * lexsup.c (OPTION_CREF): Define.
- (ld_options): Add "cref".
- (parse_args): Handle OPTION_CREF.
- * Makefile.in: Rebuild dependencies.
- (CFILES): Add ldcref.c.
- (OFILES): Add ldcref.o.
- * ld.texinfo, ld.1: Document --cref.
-
-Tue Jun 4 12:12:25 1996 Tom Tromey <tromey@csk3.cygnus.com>
-
- * Makefile.in (install): Make $(tooldir) and $(tooldir)/bin.
-
-Fri May 31 12:40:55 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/pe.em (sort_sections): Don't assume that a
- wild_statement has a section name.
-
-Wed May 29 13:13:35 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/elfmips.sc: Quote test -z argument.
-
- * ld.texinfo: Clarify the CONSTRUCTORS command.
-
-Thu May 23 16:07:44 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/aix.em (gld${EMULATION_NAME}_read_file): Initialize
- file, not impfile.
-
-Wed May 22 11:31:30 1996 Doug Evans <dje@seba.cygnus.com>
-
- * ldlang.c (wild_doit): Don't copy over SEC_LINK_{ONCE,DUPLICATES}
- if final link.
- * emultempl/pe.em (sfunc): Renamed to sort_by_file_name.
- (sort_by_section_name, sort_sections_1): New functions.
- (sort_sections): Only sort by file name sections in .idata.
- Add "Grouped Sections" support.
- (gld${EMULATION_NAME}_place_orphan): Rewrite to support Grouped
- Sections.
- (gld${EMULATION_NAME}_place_section): Delete.
- * scripttempl/pe.sc (.text,.data,.rdata): Add *(.foo\$).
- (.CRT,.rsrc): Rewrite to use Grouped Section support.
-
-Tue May 21 14:31:48 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-eppcmac.c: Update to reflect changes to aix.em.
-
-Sun May 19 16:59:44 1996 Doug Evans <dje@seba.cygnus.com>
-
- * ldlang.c (dprint_statement): Stop printing at end of list.
-
-Sat May 18 13:12:05 1996 Steve Chamberlain <sac@slash.cygnus.com>
-
- Support for --force-exe-suffix
- * ld.h (args_type): Add force_exe_suffix.
- * ld.texinfo: Add documentation.
- * ldmain.c (main): Add support for option.
- * lexsup.c (OPTION_FORCE_EXE_SUFFIX): New.
- (ld_options, parse_args): Add support for option.
-
-Wed May 15 12:50:25 1996 Jim Wilson <wilson@chestnut.cygnus.com>
-
- * emultempl/pe.em (set_pe_value): Pass 0 not 16 to strtoul call.
-
-Fri May 10 16:28:44 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * scripttempl/elfppc.sc (__stack): Make __stack 0 if it was
- referenced but not defined.
-
-Thu May 9 08:52:23 1996 Rob Savoye <rob@chinadoll.cygnus.com>
-
- * emulparams/{elf32bmip.sh,elf32lmip.sh,mipsidt.sh,mipsidtl.sh}:
- Set a new variable to signify if the final target is an embedded
- system.
- * scripttempl/{mips.sc,elfmips.sc}: Don't add SIZEOF_HEADERS to
- .text for an embedded system.
-
-Tue May 7 10:56:11 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * scripttempl/pe.em (gld${EMULATION_NAME}_place_orphan): New function.
- (gld${EMULATION_NAME}_place_section): New function.
- (hold_{section,use,text,rdata,data}): New static locals.
- (ld_${EMULATION_NAME}_emulation): Update orphan field.
- * scripttempl/pe.sc: Whitespace cleanup. Semicolon usage cleanup.
- (INIT,FINI): Delete, unused.
- (.text): Document orphan .text.foo sections.
- (.rdata): Document orphan .rdata.foo sections.
- (.data): Document orphan .data.foo sections.
-
-Tue May 7 11:35:46 1996 Jeffrey A Law (law@cygnus.com)
-
- * scripttempl/h8300.sc: Place ".tiny" sections right
- after ".data" sections.
- * scripttempl/h8300h.sc: Place ".tiny" sections into
- the "tiny" memory region, 0xff8000 through 0xffff00.
-
- * scripttempl/h8300.sc: Set the entry point to the value of
- "_start" rather than the start of the text segment.
- * scripttempl/h8300h.sc: Likewise.
-
- * scripttempl/h8300.sc: Place .rodata sections before .text
- sections in main ram.
- * scripttempl/h8300h.sc: Likewise.
-
-Mon May 6 23:32:30 1996 Jeffrey A Law (law@cygnus.com)
-
- * scripttempl/h8300h.sc: Use "eight", not "eightbit" for the
- 8-bit region and 8-bit sections.
-
-Wed May 1 17:50:06 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * ldlang.c (section_already_linked): Fix typos.
-
-Mon Apr 29 20:31:06 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * scripttempl/pe.sc (.endjunk): Define __end__.
-
-Mon Apr 29 17:05:13 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (longest_section_name): Remove.
- (SECTION_NAME_MAP_LENGTH): Define.
- (print_size, print_alignment, print_fill, print_section): Remove.
- (print_flags): Remove.
- (lang_map): Rewrite.
- (print_output_section_statement): Rewrite.
- (print_assignment): Rewrite.
- (print_one_symbol): Rewrite.
- (print_input_section): Rewrite.
- (print_fill_statement): Rewrite.
- (print_data_statement): Rewrite.
- (print_address_statement): New static function.
- (print_reloc_statement): Rewrite.
- (print_padding_statement): Rewrite.
- (print_wild_statement): Rewrite.
- (print_statement_list): Clean up.
- (print_statement): Clean up. Some minor output changes.
- (print_statements): Clean up.
- (load_symbols): Put another - before -whole-archive.
- * ldexp.c (exp_print_tree): Change etree_value and etree_rel to
- print 0x and to omit leading zeroes. For etree_rel, use %B to
- print the BFD. For etree_assign, remove the space after the
- destination name.
- * ldwrite.c: Include "libiberty.h".
- (clone_section): Call xstrdup, not strdup.
- (ldwrite): Don't print any map information.
- (print_symbol_table, print_file_stuff, print_symbol): Remove.
- * ldmain.c (main): Call lang_map when appropriate.
- * ldmisc.c (vfinfo): Add support for %W.
- (print_address): Remove.
- * ldmisc.h (print_address): Don't declare.
- * Makefile.in: Rebuild dependencies.
-
-Mon Apr 29 10:29:07 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * configure.host (m68*-*-linux*): Add -dynamic-linker to
- HOSTING_CRT0. Search -lgcc both before and after -lc in
- HOSTING_LIBS. Look for crt{begin,end}.o in the compiler directory
- at first.
- (i[345]86-*-linux*): Look for crt{begin,end}.o in the compiler
- directory at first.
-
-Fri Apr 26 14:42:27 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmisc.h (demangle): Declare.
- * ldmisc.c: Include "libiberty.h". Include demangle.h with "",
- not <>.
- (demangle): Make non-static. Remove remove_underscore paramter.
- Always return an allocated string.
- (vfinfo): Free result of demangle. Add case 'G'. Use %T to print
- functionname, rather than calling demangle. Print a colon between
- the BFD(section+offset) and the line number.
- * ldmain.c (add_archive_element): Improve format of archive
- information in map file.
- (constructor_callback): Don't print anything to the map file.
- * ldlang.c (lang_one_common): Improve format of common symbol
- information in map file.
- * ldctor.c (ldctor_build_sets): If producing a map file, print set
- information.
- * ldwrite.c (print_symbol_table): Print a newline before the
- header in the map file.
- * Makefile.in: Rebuild dependencies.
-
- * ldmisc.c (vfinfo): Reindent.
-
-Mon Apr 22 12:07:32 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (lang_size_sections): If _cooked_size is not 0, then
- don't clobber it when not relaxing.
-
- * ld.h (ld_config_type): Remove traditional_format field.
- * ldmain.c (main): Use link_info.traditional_format rather than
- config.traditional_format.
- * ldlang.c (ldlang_open_output): Likewise.
- * lexsup.c (parse_args): Likewise.
- * emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Likewise.
- * mpw-eppcmac.c (gldppcmacos_parse_args): Likewise.
-
- * ldlang.c (wild_doit): Discard debugging sections if we are
- stripping debugging information.
-
- * emulparams/z8002.sh (ARCH): Set to z8002, not z8k.
-
-Tue Apr 16 16:38:32 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldexp.c (fold_binary): Correct handling of subtraction with
- absolute values.
- (fold_name): Permit symbols in lang_allocating_phase_enum.
-
- * scripttempl/aout.sc: Only PROVIDE __stack when RELOCATING. Undo
- accidental changes in last patch.
-
-Tue Apr 16 10:25:42 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * configure.tgt (powerpc*-*-{sysv,linux}): Add aliases.
- (powerpcle*-*-{sysv,solaris}): Ditto.
-
-Mon Apr 15 14:50:56 1996 Rob Savoye <rob@chinadoll.cygnus.com>
-
- * scripttempl/aout.sc: Add PROVIDE (__stack = 0) so I can use it
- in m68k/crt0.S without things blowing up.
-
-Fri Apr 12 16:40:56 1996 Rob Savoye <rob@chinadoll.cygnus.com>
-
- * scripttempl/m68kcoff.sc: Remove default address for .data so
- .text, .data, and .bss are all sequential.
-
-Thu Apr 11 12:05:35 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/m68kcoff.sc: Remove regions and simplify.
-
-Wed Apr 10 14:41:53 1996 Jeffrey A Law (law@cygnus.com)
-
- * scripttempl/h8300.sc: Add the "8-bit area" in the upper 256
- bytes of the address space. Put data from the ".eight" sections
- into the 8-bit area.
- * scripttempl/h8300h.sc: Likewise.
-
-Tue Apr 9 14:10:42 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * emultempl/generic.em (gld${EMULATION_NAME}_before_parse):
- Pass $ARCH to ldfile_set_output_arch instead of setting
- ldfile_output_architecture directly.
-
-Tue Apr 9 14:22:15 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * scripttempl/elfppc.sc (.init,.fini): Put .init, .fini section
- next to .text. Put _etext after .text, .init, .fini, and
- .rodata{,2} sections.
-
-Tue Apr 9 12:18:57 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo: Rearrange option documentation.
-
- * lexsup.c (ld_options): New static array.
- (parse_args): Build shortopts and longopts from ld_options array.
- (help): New static function.
- * ldver.h (help): Don't declare.
- * ldver.c (ldversion): Reindent.
- (help): Remove.
-
- * ld.texinfo, ld.1: Mention -E as a synonym for -export-dynamic.
-
-Mon Apr 8 11:56:23 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/elf32.em: When checking for a native emulation, check
- that the current emulation is the default emulation.
- * emultempl/sunos.em: Likewise.
-
- * configure.in: Permit --enable-shared to specify a list of
- directories.
- * configure: Rebuild.
-
- * lexsup.c (parse_args): Add -E as a synonym for -export-dynamic,
- for HP/UX compatibility.
-
-Fri Apr 5 14:30:14 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_check_ld_so_conf): New
- static function, if ${host} = ${target}.
- (gld${EMULATION_NAME}_after_open): Call check_ld_so_conf to find a
- needed shared library if ${host} = $[target}.
-
- * configure.host (i[345]86-*-linux*): Add -dynamic-linker to
- HOSTING_CRT0. Search -lgcc both before and after -lc in
- HOSTING_LIBS.
-
- * configure.tgt: Add i[345]86-*-freebsdelf* target; from John
- Polstra <jdp@polstra.com>.
-
-Fri Apr 5 18:11:25 1996 James G. Smith <jsmith@cygnus.co.uk>
-
- * emulparams/elf32{b,l}4300.sh (MACHINE): Add explicit
- architecture number.
- * scripttempl/elf.sc: Use $MACHINE definition if present.
- * configure.tgt (targ_extra_emuls): Force 4100 build to use same
- template as 4300.
-
-Mon Apr 1 17:35:40 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (lang_size_sections): Change region check to handle
- regions which end at the highest possible address correctly.
- From Roland Weber <roweber@ira.uka.de>.
-
- * ldlang.c (section_already_linked): New static function.
- (wild_doit): Discard sections with SEC_EXCLUDE set if not doing a
- relocateable link. Don't worry about section being NULL, since it
- never should be. Don't call init_os unless the section is going
- to be added.
- (ldlang_add_file): Call section_already_linked for each section.
- * ldmain.c (multiple_definition): Don't warn about multiple
- definitions in sections which are being discarded.
-
-Sun Mar 31 00:30:47 1996 steve chamberlain <sac@slash.cygnus.com>
-
- * scripttempl/{ppcpe.sc, pe.sc} (.junk): Remove and use /DISCARD/.
- * emultempl/pe.em (init): Remove special case PPC code.
-
-Fri Mar 29 00:01:29 1996 Jeffrey A Law (law@cygnus.com)
-
- * scripttempl/h8300.sc: Make vectors section 0xc4 bytes long
- so as not to overwrite the magic syscall entry at 0xc4.
- * scripttempl/h8300h.sc: Likewise.
-
-Thu Mar 28 11:05:47 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * configure.tgt (sparc64-*-solaris2*): Delete.
- Stick with sparc-*-solaris2*.
-
-Wed Mar 27 12:33:24 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.h (DISCARD_SECTION_NAME): Define to "/DISCARD/".
- * ldlang.c (init_os): Fail on an attempt to initialize any section
- named DISCARD_SECTION_NAME.
- (wild_doit): Discard input sections assigned to an output section
- named DISCARD_SECTION_NAME.
- * ld.texinfo: Document use of /DISCARD/.
-
- * ldlang.c: Fix some indentation and comments.
-
-Tue Mar 26 18:14:49 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (main): Call bfd_set_error_program_name.
-
-Thu Mar 21 13:17:34 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo: Fix a couple of indexing entries. Mention that
- --verbose displays builtin linker scripts.
-
- * ldmisc.c (vfinfo): case 'I': If the file is not in an archive,
- and the local symbol name does not match the filename, print the
- filename as well.
-
- Patches from John Polstra <jdp@polstra.com> for FreeBSD ELF:
- * lexsup.c (parse_args): -Bshareable is a synonym for -shared.
- * emulparams/elf_i386.sh (NONPAGED_TEXT_START_ADDR): Make the same
- as TEXT_START_ADDR.
-
-Wed Mar 20 18:18:25 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * ld.texinfo: Fix typos. Use @pxref only inside parentheses.
-
-Wed Mar 20 16:56:15 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (add_wrap): New function.
- * ldmain.h (add_wrap): Declare.
- * lexsup.c (parse_args): Call add_wrap.
-
-Tue Mar 19 16:44:20 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * configure.host (sparc*-*-solaris2* host): Accept any sparc variant.
-
-Wed Mar 13 17:47:31 1996 Jeffrey A Law (law@cygnus.com)
-
- * scripttempl/h8300.sc: Change name of page zero memory
- from "null" to "vectors". Create an output section for
- vectors. Add comments on how to explicitly place items
- in the vector table.
- * scripttempl/h8300h.sc: Likewise.
-
-Wed Mar 13 12:40:18 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/lnk960.em (machine_table): Add jx and hx.
-
- * genscripts.sh: Don't use ${9:-xx}, since Ultrix /bin/sh doesn't
- support it.
-
-Tue Mar 12 12:43:59 1996 David Mosberger-Tang <davidm@koala.azstarnet.com>
-
- * ld.h (ld_config_type): Add warn_multiple_gp field.
- * lexsup.c (parse_args): Handle --warn-multiple-gp.
- * ldmain.c (warning_callback): Suppress multiple gp values warning
- if --warn_multiple_gp was not used.
- * ld.texinfo, ld.1: Document --warn-multiple-gp.
-
-Tue Mar 12 12:02:21 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * lexsup.c (parse_args): Handle --wrap.
- * ldmain.c (main): Initialize link_info.wrap_hash.
- * ldexp.c (fold_name): Use bfd_wrapped_link_hash_lookup in DEFINED
- and NAME cases.
- * ld.texinfo, ld.1: Document --wrap.
-
- * configure: Rebuild with autoconf 2.8.
-
- Don't do SunOS style dynamic linking for sparc-aout:
- * configure.tgt (sparc64-*-aout*): Use sparcaout, not sun4.
- (sparclite*-fujitsu-*, sparc*-*-aout): Likewise.
- (sparc*-wrs-vxworks*): Likewise.
- * emulparams/sparcaout.sh: New file.
- * Makefile.in (ALL_EMULATIONS): Add esparcaout.o.
- (esparcaout.c): New target.
-
-Wed Mar 6 16:06:52 1996 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * scripttempl/elfppc.sc (.sdata2, .sbss2): Implement Feb 2 change
- in a different manner to work around differences in shell variable
- expansion.
-
-Wed Mar 6 18:08:18 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldemul.h (ldemul_unrecognized_file): Declare.
- (ldemulation_xfer_type): Add unrecognized_file field.
- * ldemul.c (ldemul_unrecognized_file): New function.
- * ldlang.c (load_symbols): If a file can not be recognized, call
- ldemul_unrecognized_file before trying it as a linker script.
- * aix.em (gld${EMULATION_NAME}_unrecognized_file): New static
- function.
- (gld${EMULATION_NAME}_read_file): Use FOPEN_RT, not "r".
- (ld_${EMULATION_NAME}_emulation): Initialize unrecognized_file.
-
-Mon Mar 4 14:11:17 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (wild): Handle foo.a(.text) by mapping each included
- member of foo.a separately. From Jouke Numan <jnuman@bazis.nl>.
-
-Fri Mar 1 10:24:59 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_find_exp_assignment):
- Search trinary.cond rather than searching trinary.lhs twice.
-
-Tue Feb 27 15:08:43 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-make.sed: Edit out shared library support.
- (@TDIRS@): Edit out, can't use genscripts.
-
-Tue Feb 27 15:09:21 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * configure.tgt (m68k-*-linuxaout*, m68k-*-linux*): New targets.
- * emulparams/m68klinux.sh: New file.
- * emultempl/linux.em (gld${EMULATION_NAME}_before_allocation):
- Call bfd_${EMULATION_NAME}_size_dynamic_sections instead of
- bfd_linux_size_dynamic_sections.
- * Makefile.in (ALL_EMULATIONS): Add em68klinux.o.
- (em68klinux.c): New target.
- * configure.host (m68*-*-linuxaout*, m68*-*-linux*): New hosts.
-
-Tue Feb 27 12:55:46 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (ALL_EMULATIONS): Sort into alphabetical order.
- Fill in missing entries.
-
- * lexsup.c (parse_args): Recognize --no-whole-archive.
- * ldlang.h (lang_input_statement_type): Add whole_archive field.
- * ldlang.c (new_afile): Set whole_archive field.
- (load_symbols): Check input file specific whole_archive field
- rather than global variable.
- * ld.texinfo, ld.1: Document --no-whole-archive.
-
-Tue Feb 20 16:07:00 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.tgt: Correct gldi960 to gld960.
-
-Mon Feb 19 11:16:44 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_check_needed): Check
- the SONAME if it is available.
- (gld${EMULATION_NAME}_stat_needed): Use the SONAME, not the
- filename, when checking for conflicting library versions. Don't
- assume that the suffix is only numbers and dots.
-
- * ld.texinfo: Mention that -R can be used for -rpath.
-
-Sun Feb 18 15:05:17 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.host: Check for 'do not mix' from native linker before
- trying to use -rpath.
-
-Thu Feb 15 13:58:06 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Remove explicit substitution of CFLAGS; autoconf
- does it anyhow.
- * configure: Rebuild.
- * Makefile.in (LDFLAGS): Set to @LDFLAGS@.
-
- * configure.in: Call AC_PROG_CC before configure.host.
- * configure: Rebuild.
- * configure.host: Remove go32 host, since it should no longer be
- necessary. Don't set CC for romp host.
-
- * scripttempl/elf.sc: Don't skip a page in virtual memory space if
- the text segment ends exactly on a page boundary.
-
- * configure.in: Substitute RPATH_ENVVAR.
- * configure: Rebuild.
- * configure.host: Set RPATH_ENVVAR.
- * Makefile.in (RPATH_ENVVAR): New variable.
- (check): Use $(RPATH_ENVVAR) rather than LD_LIBRARY_PATH.
-
-Wed Feb 14 18:49:01 1996 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * configure.in: Redo emulation handling so that each emulation
- searches the correct tool directory, based on the target alias.
- For example, "configure --enable-targets=m68k-coff i386-linux"
- will search /usr/local/i386-linux/lib for linux and
- /usr/local/m68k-coff/lib for m68k-coff.
- * configure: Rebuild.
- * configure.tgt: Add special tdir settings for Linux.
- * Makefile.in: Add @TDIRS@. Pass "$(tdir_EMUL)" to ${GENSCRIPTS}
- for each eEMUL.c target.
- * genscripts.sh: Accept specific alias as 9th argument, and use it
- in LIB_PATH.
-
-Wed Feb 14 16:38:36 1996 Martin Anantharaman <martin@mail.imech.uni-duisburg.de>
-
- * ldlang.c (lang_set_startof): Don't do anything for a
- relocateable link.
-
- * ldgram.y (mri_script_file): Call mri_draw_tree.
- * mri.c (mri_draw_tree): Make globally visible. Don't bother to
- create memory regions.
- (mri_load): Don't call mri_draw_tree.
- * mri.h (mri_draw_tree): Declare.
-
- * configure.tgt (m68*-*-psos): New target.
- * emulparams/m68kpsos.sh: New file.
- * scripttempl/psos.sc: New file.
- * Makefile.in (ALL_EMULATIONS): Add em68kpsos.o.
- (em68kpsos.c): New target.
-
-Wed Feb 14 11:09:25 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.tgt (*-*-ieee*): New target; use vanilla.
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Strip
- `:foo' from ${ARCH}.
-
-Tue Feb 13 15:58:58 1996 Bryan Ford <baford@snake.cs.utah.edu>
-
- * scripttempl/i386msdos.sc: Don't pad the .text section. Put
- .rodata in .data.
-
-Tue Feb 13 14:04:19 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.host: Set HDLFLAGS for *-*-hpux with --enable-shared.
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_stat_needed): Warn if
- it looks like we might be linking in two different versions of the
- same shared library. Based on a patch from H J Lu <hjl@zoom.com>.
-
-Thu Feb 8 19:25:54 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (lang_size_sections): Increment the section size when a
- padding statement is encountered.
-
-Wed Feb 7 14:01:33 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Look for --enable-shared. Change the value of
- BFDLIB when linking against a shared library on SunOS.
- * configure: Rebuild.
- * configure.host: If using a shared BFD library, try to pass a
- reasonable -rpath option when linking.
- * Makefile.in (BFDLIB): Set to @BFDLIB@.
-
-Tue Feb 6 12:29:14 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * emulparams/elf64_sparc.sh (ARCH): Change to `sparc:v9'.
- * emultempl/generic.em: Strip `:foo' from ${ARCH}.
-
-Mon Feb 5 16:25:30 1996 Ian Lance Taylor <ian@cygnus.com>
-
- Support for building bfd and opcodes as shared libraries, based on
- patches from Alan Modra <alan@spri.levels.unisa.edu.au>:
- * configure.in (HLDFLAGS): New substitution.
- * configure: Rebuild.
- * configure.host: Set HLDFLAGS on SunOS.
- * Makefile.in (HLDFLAGS): New variable.
- (BFDDEP): New variable.
- (BFDLIB): Change to -L../bfd -lbfd.
- ($(LD_PROG)): Depend upon $(BFDDEP) rathern than $(BFDLIB). Use
- $(HLDFLAGS) in link.
- (check): Set LD_LIBRARY_PATH in the environment.
-
-Fri Feb 2 19:26:25 1996 Michael Meissner <meissner@wogglebug.tiac.net>
-
- * scripttempl/elfppc.sc (.sdata2, .sbss2): Put .sdata2 and .sbss
- in the read-only section, not read/write unless we are making a
- shared library.
- (.debug*): Add dwarf debug sections.
- (.rela.{sdata*,sbss*}): Add sections.
-
-Fri Feb 2 16:50:21 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure: Regenerate.
-
-Thu Feb 1 10:50:46 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emulparams/elf_i386.sh (TEXT_START_ADDR): Change to 0x8048000,
- for SVR4 compatibility.
-
- * ldexp.c (exp_fold_tree): Correct handling of ABSOLUTE.
-
-Wed Jan 31 17:30:19 1996 Steve Chamberlain <sac@slash.cygnus.com>
-
- * configure.tgt (i[345]86-*-cygwin32, powerpcle-*-cygwin32): New.
- * emultempl/pe.em (definfo init): Make the default stack reserve
- of a PPC larger.
-
-Wed Jan 31 14:34:23 1996 Richard Henderson <rth@tamu.edu>
-
- * configure.tgt (m68*-apple-aux*): New target.
- * emulparams/m68kaux.sh: New file.
- * scripttempl/m68kaux.sc: New file.
- * Makefile.in (ALL_EMULATIONS): Add em68kaux.o.
- (em68kaux.c): New target.
-
-Tue Jan 30 13:18:56 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Ignore
- -bnoentry, since the right thing tends to happen anyhow.
-
-Mon Jan 29 12:29:26 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo, ld.1: Document -export-dynamic.
-
-Fri Jan 26 11:11:55 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * emultempl/sunos.em: Check for native compile by comparing
- ${target} and ${host}.
-
-Thu Jan 25 16:46:58 1996 James G. Smith <jsmith@cygnus.co.uk>
-
- * emulparams/{elf32b4300.sh, elf32l4300.sh}: Changed
- TEXT_START_ADDR to allow use on IDT and PMON systems.
-
-Wed Jan 24 20:59:40 1996 Steve Chamberlain <sac@slash.cygnus.com>
-
- * emultempl/pe.em (gld_${EMULATION_NAME}_parse_args):
- correct spelling.
-
-Wed Jan 24 16:59:19 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * configure.tgt (sparc64-*-solaris2*): New configuration.
- (sparc64-*-aout*): Renamed from sparc64*.
-
-Mon Jan 22 13:01:35 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * Makefile.in (GENSCRIPTS): Pass @host@ @target@ @target_alias@.
- * genscripts.sh: Set host, target and target_alias variables.
- Check for native compile by comparing ${target} and ${host}.
- * emultempl/elf32.em: Likewise.
- * scripttempl/elfmips.sc: Test ${target}, not ${target_alias}.
-
-Mon Jan 22 11:03:23 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * scripttempl/elfppc.sc: Refine eabi support to better support
- .sdata, .sdata2, .sbss, etc. sections.
-
-Tue Jan 16 15:16:58 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ldgram.y (%union): Add phdr field.
- (phdr): Use phdr_qualifiers rather than opt_hdrs and opt_at.
- (phdr_qualifiers): New nonterminal. Add support for FLAGS.
- (opt_hdrs, hdr): Remove.
- (phdr_val): New nonterminal.
- * ldlang.c (lang_new_phdr): Replace hdrs parameter with filehdr
- and phdrs parameters. Add flags parameter.
- (lang_record_phdrs): Update for changes to lang_phdr. Pass flags
- to bfd_record_phdr.
- * ldlang.h (struct lang_phdr): Replace hdrs field with filehdr and
- phdrs fields. Add flags field.
- (LANG_PHDR_FILEHDR, LANG_PHDR_PHDRS): Remove.
- (lang_new_phdr): Update declaration.
- * ld.texinfo: Document FLAGS.
-
-Mon Jan 15 15:07:19 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation):
- Don't make a shared library because of an undefined reference to
- __GLOBAL_OFFSET_TABLE_.
-
- Add some Irix 5 support, mostly from Kazumoto Kojima
- <kkojima@info.kanagawa-u.ac.jp>:
- * emulparams/elf32bmip.sh (SCRIPT_NAME): Change to elfmips.
- (SHLIB_TEXT_START_ADDR): Define.
- (OTHER_GOT_SYMBOLS): Define.
- (OTHER_READWRITE_SECTIONS): Remove initialization of _gp.
- (EXECUTABLE_SYMBOLS): Don't define.
- (DYNAMIC_LINK): Don't define.
- * emulparams/elf32lmip.sh: Same changes as elf32bmip.sh.
- * scripttempl/elfmips.sc: New file.
- * configure.host (mips*-dec-bsd*): Change mips to mips*.
- (mips*-sgi-irix4*): Likewise.
- (mips*-sgi-irix5*): New entry.
- * Makefile.in (eelf32bmip.c): Depend upon elfmips.sc rather than
- elf.sc.
- (eelf32lmip.c): Likewise.
-
-Sat Jan 13 09:41:43 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * scripttempl/elfppc.sc: Remove support for .rel.* sections. Add
- .rela.got.neg section.
-
-Fri Jan 12 14:56:19 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/sh.sc: Only build constructors when CONSTRUCTING.
-
- * ldmisc.c: Include <stdarg.h> rather than <varargs.h> if
- ANSI_PROTOTYPES is defined. Remove special handling of
- WINDOWS_NT. Various indendation fixes.
- (vfinfo): Change fmt parameter to const char *.
- (info_msg): Write <stdarg.h> version.
- (einfo, minfo, finfo): Likewise.
- (info_assert): Change file parameter to const char *.
- * ldmisc.h (einfo, minfo, info_msg): If ANSI_PROTOTYPES is
- defined, use a real prototype.
- (info_assert): Change first parameter to be const char *.
-
-Fri Jan 12 13:29:55 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * scripttempl/elfppc.sc: Add support for .sdata2/.sbss2, etc. Add
- in old support that 2.7.2 needs, but the current compiler does
- not.
-
- * Makefile.in (eelf32{,l}ppc.c): Fix up dependencies to use the
- correct Linker script template.
-
- * emulparams/elf32{,l}ppc.sh (TEXT_START_ADDR): Set to 0x40000,
- not 0x400000.
- (DATA_ADDR,NONPAGED_TEXT_START_ADDR): Delete.
-
-Tue Jan 9 15:53:02 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/alpha.sc: Put .rconst right after .rdata.
-
-Fri Jan 5 14:07:45 1996 Steve Chamberlain <sac@slash.cygnus.com>
-
- * emultempl/pe.em (gld_${EMULATION_NAME}_before_allocation):
- sort using right pointer.
-
-Fri Jan 5 12:25:47 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * scripttempl/elfppc.sc: Remove support for creating special
- labels for eabi section begin/end here. The compiler now uses
- crt{i,n}.o to create these symbols.
-
-Thu Jan 4 17:08:58 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.host: Change existing Linux HOSTING_CRT0 to be used
- for a.out only, and put in appropriate HOSTING_CRT0 and
- HOSTING_LIBS values for Linux ELF.
-
-Thu Jan 4 12:02:05 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * scripttempl/h8300.sc: Use all 64K for ram.
- * scripttempl/h8300h.sc: Define 256K ram size.
-
-Thu Dec 21 15:57:18 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/aix.em (gld${EMULATION_NAME}_before_allocation): Pass
- export_defines as true to bfd_xcoff_size_dynamic_sections if -unix
- was used, regardless of whether -bE was used.
-
-Tue Dec 19 17:35:38 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/aix.em (gld${EMULATION_NAME}_after_open): Only set
- relocateable before calling ldctor_build_sets if the output file
- is in an XCOFF format.
-
-Fri Dec 15 16:34:36 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldwrite.c (build_link_order): When handling a data statement, if
- the endianness of the output file is unknown, use the endianness
- of the input file.
-
-Tue Dec 12 13:55:41 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-config.in: Recognize mips-*-* as equivalent to
- mips-idt-ecoff.
- * mpw-eppcmacos.c: Rename to shorter mpw-eppcmac.c.
- * mpw-ld.r: Add version resources.
- (cfrg): Use symbolic instead of literal name for executable.
-
-Mon Dec 11 15:13:41 1995 Kim Knuttila <krk@cygnus.com>
-
- * scripttempl/ppcpe.sc (FINI): Moved the .reloc section.
-
-Wed Dec 6 14:33:50 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * ldlang.c (print_statement{,s}): Delete duplicate prototype.
- (print_statement_list): Renamed from print_statement. All callers
- updated.
- (print_statement): New function to print just one statement.
- (print_{data,reloc,padding}_statement): Don't crash if
- output_section == NULL.
- (dprint_statement): New function.
-
- * emultempl/pe.em (gld_${EMULATION_NAME}_before_allocation): Fix
- call to sort_sections.
-
-Wed Dec 6 14:59:06 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/aix.em (unix_ld): New static variable.
- (gld${EMULATION_NAME}_parse_args): Handle -unix.
- (gld${EMULATION_NAME}_before_allocation): If unix_ld, pass
- gc as false and export_defineds as true to size_dynamic_sections.
-
- * ldexp.c (exp_fold_tree): Permit assignments to dot in the final
- phase if the current section is abs_output_section.
-
-
-Tue Dec 5 09:49:39 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * emultempl/pe.em (gld_${EMULATION_NAME}_before_allocation): Fix call
- to sort_sections.
-
-Fri Dec 1 16:48:36 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldgram.y (PHDRS): New token.
- (ifile_p1): Accept phdrs.
- (section): Accept phdr_opt at the end of the section definition.
- (phdr_op): New nonterminal.
- (phdrs, phdr_list, phdr, phdr_type, opt_hdrs, hdr): Likewise.
- * ldlex.l: Accept PHDRS.
- * ldlang.h (struct lang_output_section_phdr_list): Define.
- (lang_output_section_statement_type): Add phdrs field.
- (struct lang_phdr): Define.
- (LANG_PHDR_FILEHDR, LANG_PHDR_PHDRS): Define.
- (lang_new_phdr): Declare.
- * ldlang.c (lang_phdr_list): New static variable.
- (lang_output_section_statement_lookup): Initialize phdrs field.
- (lang_process): Call lang_record_phdrs.
- (lang_new_phdr): New function.
- (lang_section_in_phdr): New function.
- (lang_record_phdrs): New static function.
- * ld.texinfo: Document PHDRS.
-
-Thu Nov 30 13:14:30 1995 Kim Knuttila <krk@cygnus.com>
-
- * scripttempl/ppcpe.sc: Moved .edata into its own section to
- expose it.
-
-Thu Nov 30 11:32:34 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
-
- * configure.host (m68*-motorola-sysv): Define HOSTING_CRT0 and
- HOSTING_LIBS for testing.
- (m88*-motorola-sysv3): Define HOSTING_CRT0 and HOSTING_LIBS for
- testing.
-
-Tue Nov 28 12:14:53 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * lexsup.c (parse_args): Set config.dynamic_link to false for -N
- and -n.
-
-Mon Nov 27 13:12:09 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure: Rebuild with autoconf 2.7.
-
-Fri Nov 24 18:35:35 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * scripttempl/pe.sc: Two .junk's is too much junk.
-
-Tue Nov 21 16:14:32 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Use BFD_NEED_DECLARATION.
- * acconfig.h: Put NEED_DECLARATION_FREE in @TOP@ section.
- * configure, config.in: Rebuild with autoconf 2.6.
-
- * ldmain.c (constructor_callback): Don't warn about BFD_RELOC_CTOR
- being unsupported if this is not a relocateable link and the input
- BFD supports it, since ldctor_build_sets can cope with that case.
-
-Fri Nov 17 16:23:15 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * configure.tgt (powerpc-*-macos*): New target.
- * emulparams/ppcmacos.sh: New file, PowerMac emulation.
- * Makefile.in (ALL_EMULATIONS): Add eppcmacos.o.
- (eppcmacos.c): New target.
- * mpw-eppcmacos.c: Update.
- * mpw-make.sed: Edit out attempts to use {GENSCRIPTS}.
-
-Fri Nov 17 10:37:27 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (CC_FOR_TARGET): Use @host@ and @target@, not
- $(host_canonical) and $(target_canonical).
- (CXX_FOR_TARGET): Likewise.
-
-Thu Nov 16 11:23:42 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * scripttempl/pe.sc (.endjunk): Move definition of `end' to here
- so the malloc heap begins at a sane place.
-
-Thu Nov 16 03:09:32 1995 Ken Raeburn <raeburn@cygnus.com>
-
- Version 2.6 released.
- * ldver.c (ldversion): Update to 2.6.
-
- * Makefile.in (mostlyclean): Delete ldemul-list.h here, but not
- $(GENERATED_*FILES), since they need to be retained by distclean.
- (maintainer-clean, realclean): Delete them here.
-
-Tue Nov 14 17:08:06 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/pe.em (gld_${EMULATION_NAME}_parse_args): Open the
- base file with FOPEN_WB, not "w".
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Use the
- environment variable LD_RUN_PATH if neither -rpath nor -rpath-link
- were used.
- (gld${EMULATION_NAME}_before_allocation): Use the environment
- variable LD_RUN_PATH if -rpath was not used.
- * ld.texinfo, ld.1: Document LD_RUN_PATH.
-
-Thu Nov 9 13:09:29 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Recognize
- -bl and -bloadmap options.
-
- * ldfile.c (ldfile_try_open_bfd): If bfd_error_invalid_target,
- report a better error.
-
- * emultempl/aix.em (gld${EMULATION_NAME}_before_allocation): Add
- new local variable special_sections, and pass it to
- size_dynamic_sections. Look through the results, and move the
- sections around in the mapping so that they are defined correctly.
-
-Wed Nov 8 11:40:59 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldemul.c (ldemul_default_target): Cast getenv return value.
-
-Tue Nov 7 11:15:36 1995 Kim Knuttila <krk@cygnus.com>
-
- * emulparams/ppcpe.sh (ARCH): New file for PowerPC Portable
- Executable support.
- * scripttempl/ppcpe.sc: New file for PowerPC Portable Executable
- support.
-
- * configure.tgt (targ_extra_emuls): Added powerpcle-pe target.
- * Makefile.in (ALL_EMULATIONS): Added eppcpe.o target.
-
- * emultempl/pe.em (TARGET_IS_ppcpe): file tailoring macro
- (gld_$_before_allocation): added hooks for toc construction based
- on the above macro.
-
-Tue Nov 7 11:47:23 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.texinfo: The linker does not use _main as an entry point.
-
-Tue Nov 7 11:46:11 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
-
- * scripttempl/m88kbcs.sc (.data): Calculate next boundary modulo
- 0x2000 not 0x200.
-
-Mon Nov 6 10:59:21 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Add test for whether free must be declared.
- * sysdep.h: Declare free if necessary. Include "ansidecl.h".
- * acconfig.h: Explain NEED_DECLARATION_FREE.
- * configure, config.in: Rebuild.
-
- * lexsup.c (parse_args): Take B:: out of shortopts.
-
-Sun Nov 5 03:08:28 1995 Ken Raeburn <raeburn@cygnus.com>
-
- * emulparams/i386nbsd.sh (EXECUTABLE_SYMBOLS): Set __DYNAMIC to 0
- for now, as with m68k4kbsd, until shared library support gets
- done.
-
- * configure.host: For i386 BSD variants, crt0.o lives in
- /usr/lib. (True for NetBSD at least, unconfirmed for others.)
-
-Wed Nov 1 15:42:45 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
-
- * Makefile.in (ALL_EMULATIONS): Add edelta68.o.
- (edelta68.c): New target.
- * configure.tgt (m68*-motorola-sysv*): New target.
- * emulparams/delta68.sh: New file.
- * scripttempl/delta68.sc: New file.
-
- * scripttempl/m88kbcs.sc: Handle .init and .fini. Change section
- addresses.
-
-Wed Nov 1 11:41:56 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldgram.y (mri_script_command): Accept ',' as well as '=' in
- ALIGN and ALIGNMOD statements.
-
- * emultempl/aix.em: Include ldgram.h.
- (gld${EMULATION_NAME}_parse_args): Handle -pD and -pT, as used on
- AIX 4.1.
- * Makefile.in ($(EMULATION_OFILES)): Depend upon ldgram.h.
-
-Tue Oct 31 18:22:24 1995 David Mosberger-Tang <davidm@azstarnet.com>
-
- * configure.host (alpha-*-linux*): New host.
- * configure.tgt (alpha-*-linux*): New target.
-
-Tue Oct 31 12:36:52 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/aix.em (export_files): Remove.
- (import_files): Make static.
- (struct export_symbol_list): Define.
- (export_symbols): New static variable.
- (gld${EMULATION_NAME}_parse_args): Handle an initial -b option
- correctly. Call read_file for an export file.
- (gld${EMULATION_NAME}_before_allocation): Call
- bfd_xcoff_export_symbol for each export symbol, rather than
- calling read_file for each export file.
- (gld${EMULATION_NAME}_read_file): For an export file, make the
- exported symbols undefined, and store them on the export_symbols
- list.
-
-Sat Oct 28 00:10:03 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * emultempl/pe.em (gld_${EMULATION_NAME}_parse_args):
- Don't hang if last option is unrecognised.
- (gld_${EMULATION_NAME}_set_symbols): Insert created
- symbols into ABS output section.
-
-Fri Oct 27 18:03:17 1995 Niklas Hallqvist <niklas@appli.se>
-
- * Makefile.in (ALL_EMULATIONS): Added support for the NetBSD
- m68k4k arch.
- (em68k4knbsd.c): New rule.
-
- * configure.tgt: Added support for the NetBSD m68k4k arch.
-
- * genscripts.sh, ldint.texinfo,
- emulparams/{a29k,armaoutb,armaoutl,coff_sparc,ebmon29k,gld960,
- gld960coff,go32,h8300,h8300h,h8500,h8500b,h8500c,h8500m,h8500s,
- hp300bsd,hp3hpux,hppaelf.sh,i386aout,i386bsd,i386coff,i386go32,
- i386linux,i386lynx,i386nbsd,lnk960,m68kaout,m68kcoff,m68klynx,
- m88kbcs,mipsbig,mipsbsd,mipsidt,mipsidtl,mipslit,news,ns32knbsd,
- pc532machaout,riscix,sa29200,sh,shl,sparclynx,sparcnbsd,
- st2000,sun3,sun4,vanilla,vax,vsta,w65,z8001,z8002}.sh: Changed
- PAGE_SIZE to TARGET_PAGE_SIZE.
-
- * emulparams/m68knbsd.h: Ditto.
- (TEXT_START_ADDR, NONPAGED_TEXT_START_ADDR): We have 8K pagesize.
- (EXECUTABLE_SYMBOLS): Hardcode __DYNAMIC to zero for the time
- being.
-
- * emulparams/m68k4knbsd.sh: New file.
-
- * scripttempl/aout.sc: Expand EXECUTABLE_SYMBOLS if relocating.
-
-Fri Oct 27 17:59:09 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/aix.em: Include ldctor.h.
- (gld${EMULATION_NAME}_after_open): New static function.
- (gld${EMULATION_NAME}_before_allocation): Call find_relocs.
- (gld${EMULATION_NAME}_find_relocs): New static function.
- (gld${EMULATION_NAME}_find_exp_assignment): New static function.
- (ld_${EMULATION_NAME}_emulation): Use new after_open function.
- * scripttempl/aix.sc: Use CONSTRUCTORS in .data.
- * ldctor.c (struct set_info): Move definition into ldctor.h.
- (struct set_element): Likewise.
- (sets): Make non-static.
- (ldctor_add_set_entry): Add name parameter. Save it in the new
- set element.
- (ldctor_build_sets): Avoid being called twice. Pass set element
- name to lang_add_reloc.
- * ldctor.h (struct set_info): Move definition here from ldctor.c.
- (struct set_element): Likewise. Add new field name.
- (sets): Declare.
- (ldctor_add_set_entry): Declare new name parameter.
- * ldwrite.c (build_link_order): Don't insist that either name or
- section be NULL in a lang_reloc_statement.
- * ldmain.c (add_to_set): Pass NULL to ldctor_add_new_set_entry for
- new name parameter.
- (constructor_callback): Pass name to ldctor_add_new_set_entry for
- new name parameter.
-
- * ldmisc.c (demangle): Fix indentation. Remove a leading period.
-
-Thu Oct 26 22:22:49 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-config.in: Add PowerMac target support, generate config.h.
- * mac-ld.r: New file, Mac resources.
- * mpw-make.sed: New file, edits Makefile.in into MPW syntax.
- * mpw-make.in: Remove.
- * mpw-eppcmacos.c: Prebuilt version of PowerMac linking script.
-
-Thu Oct 26 14:11:26 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Treat
- -static as a synonym for -bnso.
-
- * scripttempl/aix.sc: Move special symbols inside sections.
- Always start .data at 0.
-
-Wed Oct 25 11:52:12 1995 Per Bothner <bothner@kalessin.cygnus.com>
-
- * Makefile.in (diststuff): Also make info.
- (maintainer-clean realclean): Also delete *.info*.
-
-Wed Oct 25 11:27:25 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/aix.em: Add support for various AIX linker options,
- for AIX import and export files, and for AIX shared objects.
- * scripttempl/aix.sc: Add .pad. Put .ds just before the TOC.
-
- * ldmain.c (main): Initialize new field link_info.static_link.
-
- * ldmain.c (add_keepsyms_file): Add \n at end of einfo calls.
- (constructor_callback): Likewise.
- * ldmisc.c (vfinfo): Likewise.
- * ldwrite.c (build_link_order): Likewise.
-
- * ld.texinfo: The MRI ALIGN directive is supported.
-
-Mon Oct 23 11:46:43 1995 James G. Smith <jsmith@pasanda.cygnus.co.uk>
-
- * emulparams/elf32vr4300.sh: Deleted.
- * emulparams/elf32vr4300el.sh: Deleted.
- * emulparams/elf32b4300.sh: Added.
- * emulparams/elf32l4300.sh: Added.
- * configure.tgt, Makefile.in: Updated the build to use the
- new 8.3 unique names.
-
-Thu Oct 19 17:41:46 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (entry_symbol): Make non-static.
- * ldlang.h (entry_symbol): Declare.
-
- * ldlex.l: Treat PROVIDE as a keyword in expression state.
-
-Wed Oct 18 17:34:06 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * scripttempl/pe.sc (.bss): Move to be after .text
-
-Tue Oct 17 12:22:05 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/sunos.em (gld${EMULATION_NAME}_find_exp_assignment):
- Search trinary.cond rather than searching trinary.lhs twice. From
- linli@ihp.PHys.ethz.CH.
-
- * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Move
- directory searching code into gld${EMULATION_NAME}_search_dir.
- (gld${EMULATION_NAME}_search_dir): New static function, extracted
- from gld${EMULATION_NAME}_find_so.
- (global_needed, global_found): New static variables.
- (gld${EMULATION_NAME}_after_open): New static function.
- (gld${EMULATION_NAME}_search_needed): New static function.
- (gld${EMULATION_NAME}_try_needed): New static function.
- (gld${EMULATION_NAME}_check_needed): New static function.
- (ld_${EMULATION_NAME}_emulation): Use new after_open function.
- * ld.texinfo, ld.1: Mention -rpath-link on SunOS.
-
- * Makefile.in (eelf32ppc.c): Depend upon elf32.em, not generic.em.
- (eelf32lppc.c): Likewise.
- * emulparams/elf32lppc.sh (TEMPLATE_NAME): Define as elf32.
- (GENERATE_SHLIB_SCRIPT): Define as yes.
-
-Mon Oct 16 19:11:13 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/elf32.em: Struct bfd_elf_link_needed_list is now named
- bfd_link_needed-list; make appropriate changes.
-
- * configure.tgt (powerpc-*-aix*): New target; use aixppc.
- (rs6000-*-aix*): New target; use aixrs6.
- * emulparams/aixppc.sh, emulparams/aixrs6.sh: New files.
- * emultempl/aix.em: New file.
- * scripttempl/aix.sc: New file.
- * Makefile.in (ALL_EMULATIONS): Add eaixppc.o and eaixrs6.o.
- (eaixppc.c, eaixrs6.c): New targets.
-
-Fri Oct 13 14:00:37 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * scripttemp/pe.sc (.reloc): Move to the end.
-
-Tue Oct 10 17:53:22 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (lang_finish): Don't try to use an entry_symbol from a
- section which was not linked into the final output.
-
-Tue Oct 10 10:17:22 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * emultempl/pe.em (gld_${EMULATION_NAME}_parse_args): Fix
- fatal typos.
-
-Tue Oct 10 01:01:51 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.h (args_type): Add rpath_link field.
- * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Search for
- required dependencies in rpath_link path. Only search
- LD_LIBRARY_PATH when configured native.
- * lexsup.c (parse_args): Recognize -rpath-link.
- * ld.1, ld.texinfo: Document -rpath-link.
-
-Sat Oct 7 17:07:17 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Don't
- bother searching for needed libraries unless doing a final link.
-
-Fri Oct 6 16:26:16 1995 Ken Raeburn <raeburn@cygnus.com>
-
- Mon Sep 25 22:49:32 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * ld/ld.1: Fix formatting bugs.
-
-Wed Oct 4 17:37:46 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldexp.c (exp_get_abs_int): Return bfd_vma, not int.
- * ldexp.h (exp_get_abs_int): Update declaration.
- * ldlang.c (print_output_section_statement): Use fprintf_vma to
- print return value of exp_get_abs_int.
-
-Mon Oct 2 13:56:09 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/elf32.em (global_stat): New file static variable.
- (gld${EMULATION_NAME}_try_needed): Call stat_needed to make sure
- that the file has not already been included under another name.
- (gld${EMULATION_NAME}_stat_needed): New static function.
-
-Fri Sep 29 12:00:18 1995 Doug Evans <dje@deneb.cygnus.com>
-
- * scripttempl/armcoff.sc: Start .text at 0x8000.
- Start .data at 0x40000.
-
-Fri Sep 29 11:09:46 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation): If
- command_line.rpath is set, use it, rather than the -L options, to
- build the rules section.
- * ld.texinfo: Document this use of -rpath.
-
- * lexsup.c (parse_args): Don't set link_info.shared for -assert
- pure-text. Pass true, not 1, to lang_add_entry.
- * emultempl/sunos.em (find_assign): New static variable.
- (found_assign): New static variable.
- (gld${EMULATION_NAME}_before_allocation): Rename local h to hdyn.
- If not a relocateable link, and no start symbol was specified on
- the command line, and there are any undefined symbols, set
- link_info.shared. If link_info.shared is set, set the address of
- the .text section to 0x20.
- (gld${EMULATION_NAME}_find_assignment): Rename from
- gld${EMULATION_NAME}_find_statement_assignment. If find_assign is
- set, then just set found_assign based on whether an assignment is
- found to find_assign.
- (gld${EMULATION_NAME}_get_script): Don't use a special script when
- producing a shared library.
- * emulparams/sun4.sh (GENERATE_SHLIB_SCRIPT): Remove.
- * scripttempl/aout.sc: Remove CREATE_SHLIB tests.
- * ldlang.c (entry_from_cmdline): New global variable.
- (lang_add_entry): Change cmdline parameter from int to boolean.
- Use global entry_from_cmdline rather than function static
- from_cmdline.
- * ldlang.h (entry_from_cmdline): Declare.
- (lang_add_entry): Change declaration of second parameter from int
- to boolean.
- * ldgram.y: Pass false, not 0, to lang_add_entry.
-
-Thu Sep 28 12:34:13 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.h (parsing_defsym): Declare.
- * ldlex.h (lex_string): Declare.
- * ldlex.l (lex_string): Define.
- * lexsup.c (parsing_defsym): Define.
- (parse_args): In OPTION_DEFSYM case, set lex_string before calling
- lex_redirect, and clear it after calling yyparse. Set
- parsing_defsym around call to yyparse.
- * ldmain.c (main): Set lex_string before calling lex_redirect, and
- clear it after calling yyparse.
- * ldmisc.c (vfinfo): For %S, handle --defsym arguments and built
- in linker scripts correctly.
-
- * scripttempl/sparccoff.sc: Add .ctors/.dtors handling like other
- COFF targets, allowing for the leading underscore used on SPARC
- COFF.
-
- * lexsup.c (parse_args): Handle -assert.
- * emulparams/sun4.sh (GENERATE_SHLIB_SCRIPT): Define.
- * emultempl/sunos.em (gld${EMULATION_NAME}_get_script): Use the
- shared library script when appropriate.
- * scripttempl/aout.sc: If CREATE_SHLIB is set, start the .text
- section at SIZEOF_HEADERS.
-
-Thu Sep 28 01:40:37 1995 Doug Evans <dje@deneb.cygnus.com>
-
- * Makefile.in (earmcoff.c): Build.
- * configure.tgt (arm-*-coff): New target
- * emulparms/armcoff.sh: New file.
- * scripttempl/armcoff.sc: New file.
-
-Tue Sep 26 10:59:32 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/i386coff.sc: Remove .data2; no longer needed.
-
-Fri Sep 22 18:09:02 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldfile.c (ldfile_set_output_arch): Make arch const.
-
-Thu Sep 21 17:55:24 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * scripttempl/elfppc.sc: Correctly locate __bss_start at the
- beginning of the .bss area, not at the end of data. Add
- __sbss_{start,end} symbols.
-
-Wed Sep 20 12:29:36 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (CC_FOR_TARGET): Quote $(program_transform_name).
- (CXX_FOR_TARGET, install): Likewise.
-
-Mon Sep 18 14:53:22 1995 Ian Lance Taylor <ian@cygnus.com>
-
- Based on patches by Alan Modra <alan@spri.levels.unisa.edu.au>:
- * Makefile.in (CC_FOR_TARGET): Remove brokensed stuff.
- (CXX_FOR_TARGET): Likewise.
- (install): Likewise.
- (GENERATED_HFILES): Remove config.h.
- (.dep): Depend upon config.h.
-
-Mon Sep 18 14:39:38 1995 Arne H. Juul <arnej@pvv.unit.no>
-
- * configure.tgt (mips*-dec-netbsd*): New target.
-
-Fri Sep 15 20:01:52 1995 Ken Raeburn <raeburn@cygnus.com>
-
- * configure.host (m88*-*-dgux*): Fix another shell syntax error.
-
-Fri Sep 15 23:28:05 1995 Andrew Cagney <cagney@highland.com.au>
-
- * configure.host (i[345]86-*-bsd*): Fix shell syntax error.
-
-Thu Sep 12 12:50:49 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * scripttemp/pe.sc: Allow both spellings of .ctors/.dtors.
- Start .text section on the right boundary. Always align
- stabs.
-
-Tue Sep 12 12:24:17 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (maintainer-clean): New target.
-
- * ldmain.c (struct warning_callback_info): Define.
- (warning_callback): Add new parameter symbol. Call
- warning_find_reloc to try to find the section and VMA.
- (warning_find_reloc): New static function.
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
- Pass NULL as symbol parameter to warning callback.
-
- * ld.texinfo: Clarify -L option.
-
- * ldlang.c (lang_one_common): Add cast to avoid warning.
- (topower): Likewise. Also, reindent.
- * ldwrite.c (clone_section): Change i to unsigned int.
- * emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation): Add
- cast to avoid warning.
-
-Fri Sep 8 16:32:43 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (config.status): Depend upon configure.tgt.
-
- * ldemul.h (ldemul_set_symbols): Declare.
- (ldemul_parse_args): Declare.
- * ldemul.c (ldemul_parse_args): Fix indentation.
-
- * configure.in: Call AC_HEADER_DIRENT.
- * configure, config.in: Rebuild.
- * emultempl/sunos.em: Use autoconf recommend mechanism to define
- DIR and struct dirent.
-
- * configure.tgt (mips*-*-bsd*): New case.
-
- * configure.host (i[345]86-sequent-ptx* | i[345]86-sequent-sysv*)
- New case.
- * configure.tgt (i[345]86-*-ptx*): New case.
-
-Thu Sep 7 10:48:26 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * config.in: Rename from config.h.in.
- * configure.in: Call AC_CONFIG_HEADER with config.h:config.in.
- Check for config.h:config.in when creating stamp-h.
- * configure: Rebuild.
- * Makefile.in (stamp-h): Depend upon config.in rather than
- config.h.in. Set CONFIG_HEADERS to config.h:config.in when
- calling config.status.
-
- * Makefile.in (distclean): Remove config.h and stamp-h.
-
- * configure.host (sparc-*-sunos64*): Remove.
- * ldlang.c (lang_map): Check BFD64, not HOST_64_BIT.
-
- * ldexp.c (exp_fold_tree): Don't warn about moving the location
- counter backward in the absolute section.
-
-Wed Sep 6 14:42:11 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Rewrite to use autoconf.
- * configure.host: New file.
- * configure.tgt: New file.
- * aclocal.m4: New file.
- * configure: New file, built by autoconf.
- * acconfig.h: New file.
- * config.h.in: New file, built by autoheader.
- * sysdep.h: New file.
- * ld.h: Incorporate old contents of config.h.
- * config.h: Remove.
- * Makefile.in: Various changes for new configure script. Also:
- (CC_FOR_BUILD): Remove.
- (ldmain.o): Don't bother to ensure that EMUL is non-empty.
- (dep.sed): Use @SRCDIR@, not @srcdir@.
- * dep-in.sed: Use @SRCDIR@, not @srcdir@.
- * genscripts.sh: Create ldscripts if it does not exist.
- * ldemul.c, lexsup.c, mpw-emipsidt.c: Don't include "config.h".
- * mpw-esh.c, emultemp/*.em: Likewise.
- * ldmain.c: Likewise. Include <ctype.h>. Don't try to set
- HAVE_SBRK here.
- * config/*.mt, config/*.mh: Remove.
-
-Tue Sep 5 14:55:24 1995 Ken Raeburn <raeburn@cygnus.com>
-
- * configure.in: Treat ns32k-pc532-ux* like ns32k-pc532-mach*, and
- ns32k-pc532-lites* like ns32k-pc532-netbsd*. From Ian Dall.
-
-Fri Sep 1 22:29:52 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * scripttempl/pe.sc: Fix typo in spelling of .ctors/.dtors.
-
-Fri Sep 1 13:13:29 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (warning_callback): Add abfd, section, and address
- parameters.
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
- Change call to warning accordingly.
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): If not
- relocateable and not shared, put .gnu.warning.SYMBOL sections into
- the .text section.
-
-Fri Sep 1 08:35:16 1995 James G. Smith <jsmith@beauty.cygnus.com>
-
- * configure.in: Added mips*vr4300-idt-elf* and
- mips*vr4300el-idt-elf* targets.
- * Makefile.in: Added eelf32vr4300* targets.
- * emulparams/{elf32vr4300.sh, elf32vr4300el.sh}: Added.
- * config/{mips-vr4300.mt, mips-vr4300el.mt}: Added.
-
-Fri Sep 1 10:51:45 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/a29k.sc: Fix to be reasonable. From Brendan Kehoe
- <brendan@cygnus.com>.
-
-Thu Aug 31 16:37:07 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * ldemul.c (ldemul_parse_args): New.
- * ldemul.h (ld_emulation_xfer_struct): Add parse_args.
- * lexsup.c (all pe stuff): Moved into pe.em
- (parse_args): Call emulation arg parser.
- * emultempl/pe.em (parse_args): handle PE specfic args.
-
-Thu Aug 31 17:01:37 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (lang_memory_region_lookup): Don't use the first region
- as the default region. Create a new region instead.
-
-Tue Aug 29 14:21:41 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * ldemul.c (ldemul_set_symbols): New function.
- * ldemul.h (ld_emulation_xfer_struct): Add set_symbols.
- * ldmain.c (main): Add call to ldemul_set_symbols.
- * lexsup.c (set_pe_value): New args.
- (set_pe_name): New.
- (parse_args): Cope with new set_pe_value args.
- * emultempl/pe.em (set_symbols): New function.
- (ld_emulation_xfer_struct): Add set_symbols.
- * scripttempl/pe.sc: Use new symbols.
-
-Thu Aug 24 18:12:18 1995 Ian Lance Taylor (ian@cygnus.com)
-
- * lexsup.c (parse_args): Don't call set_default_dirlist for -O.
- For -Y, ignore a leading `P,', and only call set_default_dirlist
- after processing all the other arguments.
-
-Tue Aug 22 07:36:58 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * scripttempl/pe.sc: Keep .edata, don't base stabs at 0.
- * emulparams/armpe.sh: Run PE script.
-
-Mon Aug 21 18:30:42 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * ldmain.c (main): Remove PE stuff.
- * lexsup.c (options): Load more PE options.
- (set_pe_value): New function.
-
-Thu Aug 17 13:35:49 1995 steve chamberlain <sac@slash.cygnus.com>
-
-
- * emultempl/{armpe.sc, i386pe.sc}: Deleted.
- * emultempl/pe.sc: New file performs generic PE support and sorts
- archive members.
- * emulparams/{armpe.sh,i386pe.sh}: Use new file.
- * scripttempl/{armpe.sc, i386pe.sc}: Deleted
- * scripttempl/pe.sc: New.
- * Makefile.in: Use new files.
-
-Thu Aug 17 14:46:34 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * scripttempl/h8500s.sc (.rdata): All data must go in data segment.
- (.strings,.ctors,.dtors): Likewise.
-
-Wed Aug 16 11:38:59 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * scripttempl/armpe.sc: Always start code at 0x401000, even
- if -r.
- * ldwrite.c (strdup): New extern declaration.
- * ldgram.y (atype): New rule to clarify type parsing.
- * ldlang.c (init_os): Remove commented out code.
- (lang_size_sections): Set SEC_ALLOC and SEC_LOAD bits
- unless told not to by the link script.
-
-Wed Aug 16 11:45:11 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (lang_set_startof): New static function.
- (lang_process): Call it.
-
- * ldgram.y: Tweak casesymlist to avoid bison errors.
-
- * lexsup.c (parse_args): Accept -h as a synonym for --soname, for
- Solaris compatibility.
-
-Tue Aug 15 17:31:16 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldgram.y (YYDEBUG): If not defined, define as 1.
- (CASE, EXTERN, START): New tokens.
- (mri_script_command): Handle CASE, EXTERN, INCLUDE, START.
- (casesymlist): New nonterminal.
- (extern_name_list): New nonterminal.
- * ldlex.l: Accept lower case trailing base specifiers. Don't
- ignore the first digit when the base is a suffix. Accept many
- EXPRESSION state tokens in MRI state. Support MRI continuation
- lines and MRI semicolon comments. Accept all MRI keywords in
- lower case. Add CASE, EXTERN, and START MRI keywords.
-
-Tue Aug 8 19:14:58 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
-
- * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Use xmalloc
- instead of alloca.
-
-Tue Aug 8 15:24:05 1995 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * Makefile.in (CC_FOR_TARGET, CXX_FOR_TARGET): Don't use
- $r/../gcc/xgcc unless it is present.
-
-Thu Aug 3 11:56:22 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * scripttempl/m68kcoff.sc: Only put .ctors and .dtors in .text
- when CONSTRUCTING.
- * scripttempl/m68klynx.sc: Likewise.
- * scripttempl/nw.sc: Likewise.
- * scripttempl/sa29200.sc: Likewise.
- * scripttempl/sparclynx.sc: Likewise.
-
-Fri Jul 28 12:02:23 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * emulparams/{z8001.sh, z8002.sh}: Fix typo.
-
-Thu Jul 27 21:06:21 1995 Ken Raeburn <raeburn@cygnus.com>
-
- * configure.in (i[345]86-*-linuxoldld): Treat like linuxaout*.
-
-Thu Jul 27 15:26:28 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * scripttempl/i386pe.sc: Cope with constructors.
- * scripttempl/z8ksim.sc: Deleted.
- * scripttempl/z8000.sc: Resurrected as this, but
- can handle z8001 and z8002 formats.
- * emulparams/z8ksim.sh: Deleted.
- * emulparams/{z8001.sh, z8002.sh}: New files.
- * config/z8ksim.mt: Deleted
- * config/z8k-coff.mt: New, generates both emulations.
-
-Tue Jul 25 14:53:02 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmisc.c (vfinfo): In %C and %D case, always print the BFD using
- %B, in case it is in an archive.
-
-Mon Jul 24 15:23:39 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (lang_process): Call reset_memory_regions for each
- relaxation pass.
-
-Fri Jul 21 22:49:44 1995 Michael Meissner <meissner@cygnus.com>
-
- * scripttempl/elfppc.sc: Add support for .sdata, .sbss, and
- _SDA_BASE.
-
-Thu Jul 20 16:26:55 1995 Ken Raeburn <raeburn@cygnus.com>
-
- * ldmain.c (constructor_callback): Allocate set_name in stack
- frame, rather than always calling alloca with a fixed size.
-
-Wed Jul 19 16:21:43 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * emulparams/armpe.sh (OUTPUT_FORMAT): Change to pei-arm-little.
- (LITTLE_OUTPUT_FORMAT, BIG_OUTPUT_FORMAT): Define.
-
-Mon Jul 17 13:57:00 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldwrite.c (clone_section): Set the alignment of the clone
- section to that of the section being cloned.
-
- * ldwrite.c (split_sections): Don't split the first input section
- into a new output section.
-
-Sat Jul 15 00:26:35 1995 Michael Meissner <meissner@cygnus.com>
-
- * emulparams/elf32ppc.sh (TEMPLATE_NAME): Define as elf32.
- (GENERATE_SHLIB_SCRIPT): Define as yes.
-
-Fri Jul 14 12:11:46 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/mipsecoff.em (check_sections): Use %P, not %F.
-
- * ldver.c (help): Update list of options to match currently
- supported list.
-
-Thu Jul 13 13:52:10 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/lnk960.em (ld_lnk960_emulation): Initialize
- after_open field.
-
- * ldexp.c (exp_intop): Don't cast stat_alloc arg to bfd_size_type;
- it takes a size_t anyhow.
- (exp_binop): Likewise.
- (exp_trinop): Likewise.
- (exp_unop): Likewise.
- (exp_nameop): Likewise.
- (exp_assop): Likewise.
- * ldlang.c (lang_memory_region_lookup): Likewise.
- (init_os): Likewise.
- (ldlang_add_undef): Likewise.
- (insert_pad): Likewise.
- * ldfile.c (ldfile_add_arch): Don't cast xmalloc arg to
- bfd_size_type.
-
- * Makefile.in (ALL_EMULATIONS): It's earmaoutb.o, not earmoutb.o.
-
-Wed Jul 12 11:32:22 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldemul.h (ldemul_open_dynamic_archive): Add search parameter to
- declaration.
- (ld_emulation_xfer_type): Add search parameter to
- open_dynamic_archive entry point.
- * ldemul.c (ldemul_open_dynamic_archive): Add search parameter.
- * ldfile.c (ldfile_try_open_bfd): Rename from try_open_bfd, and
- make non-static. Change all callers to use new name.
- (ldfile_open_file_search): Make static. If entry is dynamic, call
- ldemul_open_dynamic_archive.
- (ldfile_open_file): Don't call ldemul_open_dynamic_archive.
- * ldfile.h (ldfile_open_file_search): Don't declare.
- (ldfile_try_open_bfd): Declare.
- * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
- Accept search parameter. Don't search for a library, just look in
- a single place.
- * emultempl/linux.em (gld${EMULATION_NAME}_open_dynamic_archive):
- Likewise.
-
-Tue Jul 11 16:44:21 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (set_scripts_dir): Don't base script directory on
- current directory.
-
-Tue Jul 11 12:29:02 1995 Rick Sladkey <jrs@world.std.com>
-
- * ldmisc.c (vfinfo): Don't print the line number if it isn't
- meaningful.
-
-Mon Jul 10 13:38:28 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ld.h (ld_config_type): Add field warn_constructors.
- * ldmain.c (add_to_set): Warn if config.warn_constructors.
- (constructor_callback): Likewise.
- * lexsup.c (parse_args): Handle -warn-constructors.
- * ld.texinfo, ld.1: Document -warn-constructors.
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_check_needed): Don't
- get confused by directory names if we searched for the file.
-
- Based on patches from H.J. Lu <hjl@nynexst.com>:
- * ldlang.h (lang_input_statement_type): Add new field dynamic.
- * ldlang.c (new_afile): Set dynamic from config.dynamic_link.
- * ldfile.c: Include bfdlink.h.
- (ldfile_open_file): Check dynamic field of entry, not global
- dynamic_link field. Don't do a dynamic search when doing a
- relocateable link.
- * ldmain.c (main): Don't warn about dynamic_link for a
- relocateable link.
- * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Skip file if
- dynamic is false.
- (gld${EMULATION_NAME}_create_output_section_statements): Always
- loop over input files.
- * Makefile.in: Rebuild dependencies.
-
- * ld.texinfo, ld.1: Document -Bstatic, -Bdynamic, -Bshared, and
- -shared.
-
-Mon Jul 10 13:29:43 1995 Eric Youngdale <eric@aib.com>
-
- * ldmain.c (main): Set link_info.symbolic to false.
- * lexsup.c (parse_args): Handle -Bsymbolic.
-
-Wed Jul 5 00:12:11 1995 Fred Fish (fnf@cygnus.com)
-
- * ldmain.c (HAVE_SBRK): Define for everything except
- specific systems that are known to not support sbrk.
- (main): Use HAVE_SBRK to decide whether or not to use sbrk.
-
-Tue Jul 4 12:55:48 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_find_exp_assignment):
- Handle etree_provide.
-
- * emultempl/elf32.em (global_needed): New static variable.
- (global_found): Likewise.
- (gld${EMULATION_NAME}_after_open): New static function.
- (gld${EMULATION_NAME}_search_needed): Likewise.
- (gld${EMULATION_NAME}_try_needed): Likewise.
- (gld${EMULATION_NAME}_check_needed): Likewise.
- (ld_${EMULATION_NAME}_emulation): Replace after_open_default with
- gld${EMULATION_NAME}_after_open.
-
-Mon Jul 3 14:26:37 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- * configure.in (i386-*-win32): New target.
-
-Mon Jul 3 14:39:22 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * lexsup.c (parse_args): Let -G either set the small data size or
- be equivalent to --shared, depending on the next argument. Accept
- and ignore -z for Solaris compatibility.
-
-Sun Jul 2 17:52:34 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * lexsup.c (parse_args): Cast fopen result to PTR before storing
- it in link_info.base_file. Fix indentation.
-
-Wed Jun 28 17:11:25 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- * ldmain.c (main): Always initialize PE info in link_info.
- * lexsup.c (OPTION_BASE_FILE): New option.
- (parse_args): Handle new option.
- * emulparams/armpe.sh: Output pei.
- * emultempl/i386pe.em: Add newline to end.
- * scripttempl/armpe.sc: Change output and quote the $s.
- * scripttempl/i386pe.sc: Change output and quote the $s.
-
-Thu Jun 22 19:55:41 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- Sun May 7 11:53:41 MDT 1995 Bryan Ford <baford@cs.utah.edu>
-
- * configure.in (i386-*-msdos*, i386-*-moss*): New targets.
- * Makefile.in (ALL_EMULATIONS): Added i386msdos.o.
- (i386msdos.o): New target.
- * config/i386-msdos.mt: Created.
- * emulparams/i386msdos.sh: Created.
- * scripttempl/i386msdos.sc: Created.
-
-Thu Jun 22 15:06:35 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * scripttempl/elfppc.sc (.fixup): Add support for a .fixup section
- that contains pointers to be relocated.
-
-Tue Jun 20 17:47:20 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-esh.c: New file, modified for MPW from esh.c.
- * scripttempl/sh.sc: Reformatted to simplify MPWification,
- use *() to concat stab sections instead of [].
-
-Thu Jun 15 08:48:16 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- * scripttempl/armpe.sc: Add constructor support.
-
-Tue Jun 13 09:11:20 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- * ldlang.c (lang_size_sections): Any section with a DATA
- statement has contents.
-
-Sun Jun 11 15:20:46 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * emulparams/m68kelf.sh (NOP): Define.
- (DYNAMIC_LINK): Don't define.
- (TEXT_START_ADDR): Set to 0x80000000; the extra 0x100 for headers
- will come from the linker script.
-
-Thu Jun 8 14:17:33 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- * emulparams/armpe.sh, scriptempl/armpe.sc: Add end and stack.
-
-Mon Jun 5 02:16:24 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
-
- * configure.in (i[345]86-*-gnu*): Use GNU elf config.
-
-Thu May 25 11:49:28 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- From Andrew Cagney <cagney@highland.com.au>
- * Makefile.in: Fixup more gotchas from renaming elf32ppcle to
- elf32lppc.
-
-Wed May 24 11:23:21 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- Add support for ARM-PE.
- * Makefile.in (ALL_EMULATIONS): Add armpe.o
- * configure.in: Recognize armpe.
- * config/arm-pe.mt: New file.
- * emulparams/armpe.sh: New file.
- * scripttempl/armpe.sc: New file.
-
-
-Mon May 22 15:19:26 1995 Doug Evans <dje@chestnut.cygnus.com>
-
- * configure.in (h8300h-*-hms): Deleted
- * config/cf-h8300h.mt: Deleted.
-
-Thu May 18 04:26:10 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
-
- Wed May 10 14:28:16 1995 Richard Earnshaw (rearnsha@armltd.co.uk)
-
- From David Taylor (dtaylor@armltd.co.uk)
- * Makefile.in (ALL_EMULATIONS): Add earmout[lb].o
- * configure.in: Recognize arm{,e[lb]-*-aout.
- * config/arm[lb]-aout.mt: New files.
- * emulparams/armaout[lb].sh: New files.
- * scripttempl/armaout.sc: New file.
-
-Tue May 16 18:27:11 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * config/ppcle-elf32.mt (EMUL): Use elf32lppc, not elf32ppcle, to
- be unique in 8 characters for DOS.
-
- * emulparams/elf32lppc.sh: New file, renamed from elf32ppcle.sh.
- * emulparams/elf32ppcle.sh: Deleted.
-
-Fri May 12 11:03:55 1995 Steve Chamberlain <sac@slash.cygnus.com>
- Tom Griest <griest@cs.yale.edu>
-
- Initial support for PE executables (eg NT, win32)
-
- * Makefile.in (configure.in, ei386pe): Add support.
- * ldmain.c (main): Initialize PE argument info.
- * ldwrite.c (print_file_stuff): Don't print out .drectve
- and .debug section info.
- * lexsup.c (set_subsystem, set_stack_heap, OPTION_HEAP,
- OPTION_SUBSYSTEM, parse_argsm set_subsystem, set_stack_heap):
- Handle new arguments.
- * config/i386-pe.mt, emultempl/i386pe.em, scripttempl/i386pe.sc:
- New files
-
-Wed May 10 18:37:59 1995 Stu Grossman (grossman@andros.cygnus.com)
-
- * scripttempl/hppaelf.sc: Remove .PARISC.unwind section from text
- segment. This allows ld -r to preserve unwind sections.
-
-Tue May 9 17:19:57 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * configure.in: Add little endian PowerPC support.
-
- * Makefile.in (ALL_EMULATIONS): Add eelf32ppcle.o.
- (eelf32ppcle.c): Support for little endian PowerPC.
-
- * config/ppcle-elf32.mt: New file for little endian PowerPC.
- * emulparams/elf32ppcle.sh: Ditto.
-
-Wed May 3 12:56:32 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * ldlang.c (print_output_section_statement): Check
- subsection_alignment, instead of checking section_alignment twice.
- Noticed by Alan Modra <alan@spri.levels.unisa.edu.au>.
-
-Tue May 2 16:36:07 1995 Jeff Law (law@snake.cs.utah.edu)
-
- * configure.in (hppa*-*-lites*): Handle like hppa*-*-*elf*.
-
-Mon Apr 24 19:21:02 1995 Michael Meissner <meissner@cygnus.com>
-
- * ldwrite.c (ldwrite): Before doing anything, reset the error
- code. If bfd_final_link returns an error, but the error code is
- unset, don't issue an extra message. Assume a correct error
- message was already set.
-
-Fri Apr 14 16:31:24 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * Makefile.in (ALL_EMULATIONS): Added em68kelf.o.
- (em68kelf.o): New target.
- * config/m68k-elf.mt, emulparams/m68kelf.sh: New files.
- * configure.in: Use them for m68*-*-elf.
-
-Tue Apr 11 12:02:03 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- Merge in support for Mac MPW as a host.
- (Old change descriptions retained for informational value.)
-
- * mpw-config.in (i386-unknown-aout): Change to i386-unknown-go32.
- (i386-unknown-coff): Remove.
- (sh-hitachi-hms): New target.
- (emulation_ofiles): Set correctly for each target.
- (version, TDEFINES): Add to makefile fragment.
- * mpw-make.in (BISON): Use byacc instead of bison.
- (em_*.c): Replace with e*.c everywhere.
- (ldgram.h): Separate action from ldgram.c generation.
- (LD_PROG): Depend on Version.r.
- (Version.r): generate from version info.
- * mpw-emipsidt.c: New file, modified for MPW from emipsidt.c.
-
- * mpw-config.in (m68k-apple-macos, ppc-apple-macos,
- i386-unknown-aout, i386-unknown-coff): New targets.
- (m68k-aout, m68k-coff): Remove targets.
- (mk.tmp): Add definition of EMUL.
-
- * mpw-config.in (emulname): Set based on target.
- (ldemul-list.h): Construct.
- * mpw-make.in (install-only): New target.
- (install): Depend on install-only.
-
- * mpw-make.in (bindir): Fix pathname.
- (install): Move here from mpw-build.in.
-
- * mpw-config.in: New file, MPW configuration fragment.
- * mpw-make.in: New file, MPW makefile fragment.
- (This file is semi-automatically generated from Makefile.in.)
- * ldfile.c (slash): If MPW, set to `:'.
- * ldlex.l (TRUE_FALSE_ALREADY_DEFINED): If MPW, set this to
- prevent redefinition errors.
-
-Tue Apr 4 17:55:18 1995 Steve Chamberlain <sac@bang.hack.com>
-
- * ldwrite.c (clone_section): Align clone sections on even
- boundaries.
-
-Thu Mar 30 14:32:26 1995 H.J. Lu (hjl@nynexst.com)
-
- * configure.in: Change linux to default to elf. Using
- i[345]86-*-linuxaout will build a linker which defaults to a.out.
- * config/i386-laout.mt: Rename from old config/i386-linux.mt.
- * config/i386-linux.mt: Rename from old config/i386-lelf.mt.
- * config/i386-lelf.mt: Remove.
-
-Thu Mar 30 13:09:46 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (main): If opening the map file fails, call
- bfd_set_error before calling einfo.
-
- * ld.texinfo, ld.1: Document the -no-keep-memory option.
-
-Mon Mar 27 11:10:08 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (main): Revert patch of March 10, since the SVR4 linker
- does mark shared libraries as executable.
-
-Tue Mar 21 15:15:38 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (lang_common): Change power to int. Pass larger values
- before smaller values.
- (lang_one_common): Treat info as int *. Don't bother to check for
- last value, since it is now zero.
-
-Sat Mar 18 01:49:14 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (load_symbols): An empty archive is OK.
-
-Fri Mar 17 16:15:31 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * ldmain.c (progress.h): Include.
- (main): Call START_PROGRESS and END_PROGRESS.
-
-Thu Mar 16 17:17:33 1995 Michael Meissner <meissner@cygnus.com>
-
- * scripttempl/elfppc.sc: Move _GOT2_END_ after the .ctors and
- .dtors sections, so that these pointers get relocated also.
- Define the symbols __{C,D}TOR_{LIST,END}__ to mark the beginning
- and end of the constructors/destructors.
-
-Thu Mar 16 13:59:14 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
-
- * ldlang.c (load_symbols): If whole_archive is true and ENTRY
- describes an archive, call bfd_link_add_symbols on each member.
- * ldmain.c (whole_archive): New variable.
- (main): Initialize it to false.
- * ldmain.h: Declare whole_archive.
- * lexsup.c (parse_args): Grok --whole-archive switch.
- * ld.texinfo, ld.1: Document --whole-archive.
-
-Thu Mar 16 11:38:48 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * genscripts.sh (EMULATION_NAME): Set LIB_PATH to empty when not
- using the default emulation.
-
- * config/dgux.mh (HOSTING_EMU): Use -m rather than trying to set
- LDEMULATION.
- * config/hppaelf.mh (HOSTING_EMU): Likewise.
-
-Tue Mar 14 12:28:03 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Set force_maj
- for -lc.N. From H.J. Lu <hjl@nynexst.com>.
-
-Fri Mar 10 14:43:48 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (main): Don't set EXEC_P if link_info.shared is set.
-
- * ldlex.l: Return -lFILENAME as the token LNAME.
- * ldgram.y: Add token LNAME.
- (input_list): Treat LNAME like NAME, but pass it to
- lang_add_input_file as lang_input_file_is_l_enum.
- * ld.texinfo: Document using -lFILENAME in INPUT.
-
-Thu Mar 9 12:21:51 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * ldlang.c (lang_check): If the architectures are compatible call
- bfd_merge_private_bfd_data to let the backend do additional
- checks.
-
-Tue Mar 7 00:53:08 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldemul.c (ldemul_choose_mode): If emulation not recognized, list
- all supported emulations.
-
-Mon Mar 6 14:03:50 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldemul.c (ldemul_list_emulations): New function.
- * ldemul.h (ldemul_list_emulations): Declare.
- * ldver.c (help): List supported targets and emulations.
-
-Fri Mar 3 15:40:36 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * scripttempl/elf.sc (.debug): Relocate to address 0.
- (.debug_srcinfo, .debug_aranges, .debug_pubnames,
- .debug_sfnames, .line): Likewise.
-
-Fri Mar 3 17:07:14 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/elf32.em (hold_rel): New static variable.
- (gld${EMULATION_NAME}_place_orphan): Place readonly sections with
- contents whose names begin with ".rel" after hold_rel. Remove the
- assertion which checked for unplaced .rel sections. Don't try to
- sort the section into place if place->bfd_section is NULL.
- (gld${EMULATION_NAME}_place_section): Set hold_rel to the first
- section beginning with ".rel".
-
-Thu Mar 2 14:34:43 1995 Ian Lance Taylor <ian@cygnus.com>
-
- Doc note from pierre@phi.la.tce.com (Pierre Willard):
- * ld.texinfo: -X and -x work even if -s or -S are not specified.
- * ld.1: Similar change.
-
-Wed Mar 1 13:51:16 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emulparams/gld960coff.sh (COFF_CTORS): Define.
- * scripttempl/i960.sc: Use COFF_CTORS if CONSTRUCTING.
-
-Tue Feb 28 12:42:56 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in (i[345]86-*-linuxelf*): New target. Use i386-lelf.
- (i[345]86-*-gnuelf*): New target. Use i386-gelf.
- * config/i386-lelf.mt: New file.
- * config/i386-gelf.mt: New file.
-
-Tue Feb 28 10:27:54 1995 Rob Savoye <rob@darkstar.cygnus.com>
-
- * configure.in: Match on mips-ecoff, and default to the IDT
- configuration.
-
-Fri Feb 17 13:06:47 1995 Michael Meissner <meissner@cygnus.com>
-
- * scripttempl/elfppc.sc: Add support for .got1 and .got2 sections.
- Offset _GLOBAL_OFFSET_TABLE_ 32768 from the start of the GOT area
- to double the size of the table.
-
-Thu Feb 9 18:29:43 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * Makefile.in (distclean): Do recursive deletion, since ldscripts
- is a directory.
-
-Thu Feb 9 11:38:22 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (main): If trace_file_tries is true, and we are using
- an internal linker script, print out the script.
- * ldfile.c (try_open): Reindent function. Make the messages about
- opening script files more informative.
-
- * lexsup.c (parse_args): For -V, call ldversion with 1, not 0.
- * ld.texinfo, ld.1: Update accordingly.
-
-Wed Feb 8 17:34:45 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldlang.c (lang_one_common): Adjust references to common symbol
- information for new structure.
-
-Mon Feb 6 12:17:24 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldmain.c (undefined_symbol): Handle section being NULL.
-
- * ldctor.c (ldctor_build_sets): Handle bfd_link_hash_defweak.
- * ldexp.c (fold_name): Likewise.
- * ldlang.c (print_one_symbol): Likewise.
- (lang_finish): Likewise.
- * ldmain.c (multiple_common): Likewise.
- * ldwrite.c (print_symbol): Likewise. Also, bfd_link_hash_weak
- renamed to bfd_link_hash_undefweak.
-
- * scripttempl/alpha.sc: Set address of .data section correctly
- when -n or -N is used. Patch from Chris G Demetriou
- <Chris_G_Demetriou@LAGAVULIN.PDL.CS.CMU.EDU>.
- * scripttempl/mips.sc: Similar change.
-
-Tue Jan 31 16:20:52 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * ldlang.c (lang_size_sections): Clarify error message when user
- specified start addr conflicts with region. Fix resetting of
- region pointer.
-
-Tue Jan 31 12:37:09 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ldexp.c (fold_name): In case NAME, permit an absolute symbol
- in lang_allocating_phase_enum.
-
-Mon Jan 30 11:33:25 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (distclean): Depend upon clean. Don't bother to
- remove files which will be removed by clean. From patch by
- alan@SPRI.Levels.UniSA.Edu.Au (Alan Modra).
-
-Fri Jan 27 16:27:34 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): For
- a MIPS target, clobber the size of all but the first input
- .reginfo section to be 0, so that lang_size_sections sets the
- correct size for the output .reginfo section.
-
-Thu Jan 26 19:53:37 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
- Remove unused variable is.
-
-Thu Jan 26 12:33:05 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * configure.in: Add support for powerpc-*-eabi.
-
- * scripttempl/elfppc.sc: New file for PowerPC embedded ABI
- support.
-
- * emulparams/elf32ppc.sh (SCRIPT_NAME): Use elfppc.sc instead of
- elf.sc, which defines some new symbols PowerPC elf needs.
-
-Tue Jan 24 10:32:15 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * ldctor.c (ldctor_add_set_entry): Don't dump core if a
- constructor entry is in the absolute section.
-
-Mon Jan 23 13:58:13 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * configure.in (i[345]86-*-gnu*): Set ld_target to i386-gnu.
- * config/i386-gnu.mt: New file. Include ELF support.
-
-Thu Jan 19 16:22:11 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): If
- there are any input sections named .gnu.warning, treat them as
- containing a warning message to be printed by the linker, and
- clobber the size so that the message is not copied into the output
- file.
- * scripttempl/elf.sc: Put .gnu.warning sections into the .text
- section.
-
-Sun Jan 15 16:45:00 1995 Steve Chamberlain <sac@splat>
-
- * configure.in (w65-*-*): New target.
- * Makefile.in: Update.
- * scripttempl/w65.sc: New.
- * config/coff-w65.mt: New.
-
-Thu Jan 12 01:32:25 1995 Ian Lance Taylor <ian@tweedledumb.cygnus.com>
-
- * ldlang.c (lang_place_orphans): Don't ignore files with
- just_syms_flag set. Instead, put all their sections in
- bfd_abs_section_ptr, using the section VMA as the output_offset.
-
-Wed Jan 11 22:59:09 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * ldctor.c (ldctor_build_sets): Don't use `const' with typedef
- name `reloc_howto_type', since it's now defined to be const.
- * ldlang.c (lang_add_reloc): Ditto.
- * ldlang.h (lang_reloc_statement_type, lang_add_reloc): Ditto.
-
-Wed Jan 11 11:24:45 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * ldexp.c (fold_binary): Adding or subtracting an absolute value
- to a relative value does not require forcing the relative value to
- be absolute. Also, reindent function.
-
-Wed Dec 28 22:05:52 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * ldwrite.c (clone_section): Create a symbol with the
- same name as the section.
-
-Mon Dec 19 14:02:13 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * ld.h (split_by_reloc, split_by_file): New flags.
- * ldwrite.c (clone_section, split_sections): New functions.
- * lexsup.c (parse_args): Understand new split options.
-
-Fri Dec 9 17:22:55 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * scripttempl/elf.sc: Move .ctors and .dtors from .text segment to
- .data segment. They must be writable when creating a shared
- library. From H.J. Lu <hjl@nynexst.com>.
-
-Fri Dec 2 14:09:00 1994 Ian Lance Taylor <ian@rtl.cygnus.com>
-
- * emultempl/miposecoff.em: New file.
- * emulparams/mipsidt.sh (TEMPLATE_NAME): Set to mipsecoff.
- * emulparams/mipsidtl.sh (TEMPLATE_NAME): Likewise.
- * scripttempl/mips.sc: Put .rel.sdata sections in .text, and
- provide __runtime_reloc_start and __runtime_reloc_stop if they are
- used. Align _fdata to a 16 byte boundary.
- * Makefile.in (emipsidt.c): Depend upon mipsecoff.em rather than
- generic.em.
- (emipsidtl.c): Likewise.
- (check): Pass CC_FOR_HOST and CFLAGS_FOR_HOST to runtest.
-
- * ld.h (args_type): Add new field embedded_relocs.
- * ldemul.h (ldemul_after_open, after_open_default): Declare.
- (ld_emulation_xfer_struct): Add new field after_open.
- * ldemul.c (ldemul_after_open): New function.
- (after_open_default): New function.
- * ldlang.c (lang_process): Call ldemul_after_open.
- * lexsup.c (parse_args): Handle --embedded-relocs.
- * emultempl/elf32.em (ld_${EMULATION_NAME}_emulation): Initialize
- new after_open field to after_open_default.
- * emultempl/generic.em, emultempl/gld960.em: Likewise.
- * emultempl/gld960c.em, emultempl/hppaelf.em: Likewise.
- * emultempl/linux.em, emultempl/m88kbcs.em: Likewise.
- * emultempl/sunos.em, emultempl/vanilla.em: Likewise.
- * ld.texinfo, ld.1: Mention -embedded-relocs.
-
-Wed Nov 23 22:04:47 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * Makefile.in: Add eshl.o.
- * config/coff-sh.mt: Add shl emulation.
-
-Tue Nov 22 11:55:37 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * scripttempl/elf.sc: Fill .text section with NOPS. From Eric
- Youngdale <eric@aib.com>.
-
-Thu Nov 17 14:39:48 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- Patches from pirker@eiunix.tuwien.ac.at (Martin Pirker).
- * config/i386linux.mh: New file; set HOSTING_CRT0.
- * genscripts.sh: Don't put ${libdir} in LIB_PATH if it is
- /usr/lib, since that is already in LIB_PATH.
-
-Wed Nov 16 10:03:03 1994 Jeff Law (law@snake.cs.utah.edu)
-
- * scripttempl/hppaelf.sc (.text): Handle a use rdefined text start
- address.
- (.data, .bss): If "-N", then place the data/bss just after the end
- of the .text section rather than at the default 0x40000000.
-
- * scripttempl/hppaelf.sc (.text): Place unwind descriptors in the
- text segment.
-
-Sat Nov 12 15:55:56 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- Patches from Eric Youngdale <eric@aib.com>:
- * ldlang.c (lang_finish): Don't warn if entry symbol not found
- when generating a shared library.
- * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Warn if
- attempting to place an orphaned relocation section when generating
- a dynamically linked object.
-
- * scripttempl/elf.sc: Add ENTRY(${ENTRY}), and default ${ENTRY} to
- _start.
-
-Fri Nov 11 14:27:23 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * ld.h (args_type): Add field export_dynamic.
- * lexsup.c (parse_args): Recognize --export-dynamic.
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
- Pass export_dynamic argument to bfd_elf32_size_dynamic_sections.
-
-Wed Nov 9 12:47:11 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * ldlang.c (lang_one_common): Set SEC_ALLOC in any section where
- we allocate common symbols.
-
-Tue Nov 8 17:50:43 1994 Eric Youngdale (eric@aib.com)
-
- * scripttempl/elf.sc: Add .rel.init, .rela.init, .rel.fini, and
- .rela.fini to the list of .rel* sections.
-
-Tue Nov 8 17:47:45 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * ldlang.c (load_symbols): Add new argument place. Only accept
- linker scripts if place is not NULL. Put commands found in an
- assumed linker script into place.
- (lookup_name): Pass NULL as place argument to load_symbols.
- (open_input_bfds): In lang_input_statement_enum case, pass a place
- argument to load_symbols, and store any new statements after the
- current one.
-
-Mon Nov 7 15:53:02 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * ldver.c (ldversion): Bump to 2.5.3.
-
-Fri Nov 4 15:11:26 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * Makefile.in (e*nbsd.c): Fix typo in dependencies.
-
-Thu Nov 3 19:35:44 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * Makefile.in (check): Add missing "else true" clause.
-
- * emulparams/vax.sh (OUTPUT_FORMAT): Use "a.out".
-
- * scripttempl/go32coff.sc: Changes from DJ Delorie: Change default
- entry point to "start". Align at end of each section to 0x200.
- Start .text section 0x1000 later. Add _etext, _edata, _end
- symbols.
-
-Wed Nov 2 12:17:49 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * ldctor.c (ldctor_add_set_entry): Don't permit a set to be
- composed of different object file formats.
- (ldctor_build_sets): If the output format does not support the
- reloc, and we are not generating a relocateable link, try getting
- the reloc from the input format.
-
-Tue Nov 1 10:30:19 1994 J.T. Conklin (jtc@rtl.cygnus.com)
-
- * Makefile.in (ALL_EMULATIONS): Added em68knbsd.o.
- (em68knbsd.c): New target.
-
- * config/m68k-nbsd.mt: New file.
- * emulparams/m68knbsd.sh: New file.
- * configure.in (m68*-*-netbsd*): Use above configs.
-
-Mon Oct 31 19:35:17 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): If we find an
- appropriately named static library, stop the search at that
- directory.
-
-Wed Oct 26 13:59:12 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
-
- * Makefile.in (ALL_EMULATIONS): Added ei386nbsd.o, ens32knbsd.o
- and esparcnbsd.o; sorted entries.
- (ei386nbsd.c,ens32knbsd.c,esparcnbsd.c): New targets.
-
- * config/netbsd532.mt: Removed.
- * emulparams/netbsd532.sh: Removed.
-
- * config/{i386-nbsd.mt,ns32k-nbsd.mt,sparc-nbsd.mt}: New files.
- * emulparams/{i386nbsd.sh,ns32knbsd.sh,sparcnbsd.sh}: New files.
- * configure.in (i[345]86-*-netbsd*, ns32k-pc532-netbsd*,
- sparc*-*-netbsd*): Use above configs.
-
-Tue Oct 25 11:47:10 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * ldmain.c (multiple_common): One of the types may now be
- bfd_link_hash_indirect. The old BFD argument may be NULL.
-
-Thu Oct 20 22:01:39 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * configure.in: Add * at the end of m68k-hp-hpux.
-
-Tue Oct 18 15:58:39 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * ldlex.l: Cast assignment to yy_ch_buf field to char *, not to
- YY_CHAR *.
-
-Mon Oct 17 14:53:16 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
-
- * scripttempl/nw.sc: Gather constructors and destructors and
- define __CTOR__LIST__ and __DTOR_LIST__ appropriately.
-
-Fri Oct 14 14:35:38 1994 J.T. Conklin (jtc@rtl.cygnus.com)
-
- * Makefile.in (ALL_EMULATIONS): Add ei386nw.o and eppcnw.o.
- (ei386nw.c, eppcnw.c): New targets.
-
- * config/{i386,ppc}-nw.mt, emulparams/{i386,ppc}nw.sh,
- scripttempl/nw.sc: New files, for i386 and powerpc netware.
-
- * configure.in: Changed netware ld_target name to be {i386,ppc}-nw
- instead of {i386,ppc}-elf.
-
- * configure.in (sparc*-*-netware): Removed. There is no such
- thing anymore.
-
- * ldint.texinfo: Move misplaced `@end iftex'.
-
-Fri Oct 14 12:02:18 1994 Eric Youngdale (eric@aib.com)
-
- * scripttempl/elf.sc: Add .rel.ctors, .rela.ctors, .rel.dtors, and
- .rela.dtors to the list of .rel* sections.
-
-Thu Oct 13 14:16:27 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * ldver.c (ldversion): Update to version 2.5.
- * Version 2.5 released.
-
- * configure.in (all_targets): Handle i386-linux*.
-
-Thu Oct 13 11:24:33 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * scripttempl/aout.sc: Set _etext and __etext to ., not
- ${DATA_ALIGNMENT}. This is compatible with SunOS, and, with luck,
- will not break any other system. From Eric Valette
- <ev@chorus.fr>.
-
-Wed Oct 12 16:22:58 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * lexsup.c (parse_args): Change -V to be a synonym for -v. Add
- --verbose to get the old -V behaviour.
- * ld.1, ld.texinfo: Document this change.
-
-Tue Sep 27 14:56:20 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Remove
- assertion, since it could fail with a user defined linker script.
-
- * ldexp.c (fold_name): For DEFINED case, don't try to look up the
- name in the hash table during the first phase--the hash table does
- not even exist at that point, much less have the right value.
-
- * Makefile.in (CC): Define.
- (CXX): Move definition, change from g++ to gcc.
- (EXPECT, RUNTEST): Copy definitions from top level Makefile.in.
- (RUNTEST_CC, RUNTEST_CFLAGS): Remove.
- (RUNTEST_CXX, RUNTEST_CXXFLAGS): Remove.
- (CC_FOR_TARGET, CXX_FOR_TARGET): Copy from top level Makefile.in.
- (.cc.o): Comment out.
- (testdir): Remove.
- (site.exp): Don't create testdir or set tmpdir.
- (check): Run checks even if not running native. Use CC_FOR_TARGET
- instead of RUNTEST_CC, and likewise for CXX.
- (cdtest targets): Comment out.
- * config/solaris2.mh (HOSTING_LIBS): Only mention crtend.o once.
- * cdtest-bar.cc, cdtest-foo.cc, cdtest-foo.h: Remove.
- * cdtest-main.cc, cdtest.exp: Remove.
-
-Mon Sep 26 11:40:30 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * emulparams/elf32bmip.sh: Rename from elf32mipb.sh to avoid DOS
- file naming problems.
- * emulparams/elf32lmip.sh: Rename from elf32mipl.sh.
- * Makefile.in (ALL_EMULATIONS): Rename eelf32mipb.o to
- eelf32bmip.o and eelf32mipl.o to eelf32lmip.o.
- (eelf32bmip.c): Rename from eelf32mipb.c. Use elf32bmip.sh.
- (eelf32lmip.c): Rename from eelf32mipl.c. Use elf32lmip.sh.
- * config/mipsb-elf32.mt (EMUL): Use elf32bmip, not elf32mipb.
- * config/mipsl-elf32.mt (EMUL): Use elf32lmip, not elf32mipl.
-
- * genscripts.sh: Always search /usr/local/TARGET/lib.
-
- * scripttempl/elf.sc: If -N is set, force DATA_ADDR to be ".".
-
-Fri Sep 23 15:05:49 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * configure.in: Handle i386-bsdi* targets like i386-bsd.
-
-Fri Sep 23 00:06:59 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * lexsup.c (parse_args): Add support for -a for HP/UX
- compatibility.
-
- * lexsup.c (parse_args): -c takes an argument.
-
-Tue Sep 20 14:35:27 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * ld.h (args_type): Add new field endian.
- * lexsup.c (parse_args): Handle -EB and -EL by setting
- command_line.endian.
- * ldgram.y (ifile_p1): Accept OUTPUT_FORMAT with three arguments.
- * ldlang.c (lang_add_output_format): Add arguments big and little.
- If command_line.endian is set, use it to select big or little
- rather than the default. Changed all callers.
- * ldlang.h (lang_add_output_format): Update declaration.
- * emulparams/elf32mipb.sh: Define BIG_OUTPUT_FORMAT and
- LITTLE_OUTPUT_FORMAT.
- * emulparams/elf32mipl.sh: Likewise.
- * emulparams/mipsbig.sh: Likewise.
- * emulparams/mipsbsd.sh: Likewise.
- * emulparams/mipsidt.sh: Likewise.
- * emulparams/mipsidtl.sh: Likewise.
- * emulparams/mipslit.sh: Likewise.
- * scripttempl/elf.sc: Define BIG_OUTPUT_FORMAT and
- LITTLE_OUTPUT_FORMAT if not already defined. Pass them to
- OUTPUT_FORMAT.
- * scripttempl/mips.sc: Pass BIG_OUTPUT_FORMAT and
- LITTLE_OUTPUT_FORMAT to OUTPUT_FORMAT.
- * scripttempl/mipsbsd.sc: Likewise.
-
- * Makefile.in (ldgram.h): Make separate target from ldgram.c,
- depending upon ldgram.c, so that a parallel make does not try to
- build both at once.
-
- * configure.in (mips*el-elf*): New target.
- * Makefile.in (ALL_EMULATIONS): Add eelf32mipb.o and eelf32mipl.o.
- (eelf32mipl.c): New target.
-
- * config/mipsl-elf32.mt: New file.
- * emulparams/elf32mipl.sh: New file.
-
-Fri Sep 16 12:16:20 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * ldmain.c (main): Rather than prohibiting ld -r -s, treat it as
- ld -r -S -x.
-
-Thu Sep 15 13:05:44 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * ldmisc.c (vfinfo): Print BFD file name as well as file name
- returned by find_nearest_line, in case the file name is something
- unhelpful such as a .h file. Handle %u.
-
-Wed Sep 14 12:49:12 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * ldlang.c (lang_do_assignments): Make sure output statement
- has an attached bfd_section before trying to dereference it.
-
-Wed Sep 14 12:48:09 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * ld.h (ld_config_type): Add new field warn_once.
- * ldmain.c (undefined_symbol): Handle -warn-once.
- * lexsup.c (parse_args): Recognize -warn-once.
- * ld.texinfo (Options): Document -warn-once.
- * ld.1: Likewise.
-
- * ldmisc.c (vfinfo): Handle %D as %C, but never print the function
- name. For %C, print the function name on a separate line, to keep
- the length of error messages under control.
- * ldmain.c (multiple_definition): Use %D for ``first defined
- here.''
- (undefined_symbol): Use %D for ``more undefined references
- follow''.
-
- * ldmisc.c (multiple_warn): Remove; no longer used.
- * ldmisc.h (multiple_warn): Don't declare.
-
-Tue Sep 13 20:47:58 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * ldlang.c (print_output_section_statement): Print all lines
- to the map file.
-
-Tue Sep 13 16:30:11 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * ldlang.c (load_symbols): Check for archive before object. Use
- bfd_check_format_matches, and, if ambiguous, print a list of
- matching formats. If file format is not recognized, treat file as
- a linker script.
- * ldgram.y (yyerror): If assuming an object file is a script,
- mention that. Tweak the format of the error messages.
- * ldlex.l (lex_warn_invalid): If assuming an object is a script,
- guess that this is not actually a script, and just report that the
- file format was not recognized.
- * ld.texinfo (Options): Admit that -( may be used more than once.
- Add note that unrecognized object files are now treated as linker
- scripts.
-
- * ldfile.c (ldfile_input_filename): Make const.
- (ldfile_assumed_script): New variable.
- (try_open): Change arguments types to const.
- (ldfile_find_command_file): Likewise.
- (ldfile_open_command_file): Likewise. Also, set lineno to 1.
- * ldfile.h: Update declarations for ldfile.c changes.
- * ldlex.l: Include <ctype.h>.
- (file_name_stack): Change to be const char *.
- (lineno_stack): New static variable.
- (<<EOF>>): Set lineno as well as ldfile_input_filename.
- (lex_push_file): Make name argument const. Initialize
- lineno_stack entry.
- (lex_redirect): Initialize lineno_stack entry.
- (lex_warn_invalid): Handle non printable characters nicely.
- * ldlex.h (lex_push_file): Declare second argument as const.
-
- * ldgram.y (ifile_p1): Recognize GROUP.
- * ldlex.l: Recognize GROUP.
- * ld.texinfo (Option Commands): Document GROUP.
-
-Mon Sep 12 17:04:27 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * config/m68klynx.mh: New file.
-
-Mon Sep 12 01:50:03 1994 Jeff Law (law@snake.cs.utah.edu)
-
- * emultempl/hppaelf.em: Add newlines to the error messages.
-
-Sat Sep 10 16:05:38 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * config/i386lynx.mh: New file.
- * scripttempl/i386lynx.sc: Don't put .ctors and .dtors in .text
- unless CONSTRUCTING.
-
-Thu Sep 8 13:25:24 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * emulparams/elf32mipb.sh (TEMPLATE_NAME): Define as elf32.
- (GENERATE_SHLIB_SCRIPT): Define as yes.
- (DYNAMIC_LINK): Define as false.
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_parse):
- Initialize config.dynamic_link to DYNAMIC_LINK if it is defined.
- (gld${EMULATION_NAME}_place_orphan): Reset stat_ptr at end.
- * Makefile.in (eelf32mipb.c): Depend upon elf32.em rather than
- generic.em.
-
-Thu Sep 8 16:30:37 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * scripttempl/h8500b.sc: Put rdata stuff into own segment.
-
-Thu Sep 8 13:25:24 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * emulparams/elf32ppc.sh (OTHER_READWRITE_SECTIONS): Don't define;
- .got section is now explicitly handled in elf.sc.
-
-Wed Sep 7 13:08:34 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * scripttempl/alpha.sc: Redo script to set . outside of sections
- and not bother to explicitly specify section addresses.
- Explicitly place .sdata section.
-
-Tue Sep 6 23:51:45 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * scripttempl/m68kcoff.sc: Put .bss in data segment.
-
- * scripttempl/h8300.sc: Change .stab and .stabstr to use a VMA of
- 0, and to only be marked as NOLOAD if relocating.
- * scripttempl/h8500.sc, scripttempl/h8500b.sc: Likewise.
- * scripttempl/h8500c.sc, scripttempl/h8500m.sc: Likewise.
- * scripttempl/h8500s.sc, scripttempl/i386coff.sc: Likewise.
- * scripttempl/i386go32.sc, scripttempl/i386lynx.sc: Likewise.
- * scripttempl/m68kcoff.sc, scripttempl/m68klynx.sc: Likewise.
- * scripttempl/sh.sc, scripttempl/sparccoff.sc: Likewise.
- * scripttempl/sparclynx.sc: Likewise.
-
-Sun Sep 04 17:58:10 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
-
- * Makefile.in, configure.in: Add support (disabled) the ARM/RISCiX.
- * config/riscix.mt, emulparams/riscix.sh, scripttempl/riscix.sc:
- New files.
-
-Tue Aug 30 11:48:08 1994 Eric Youngdale (ericy@cais.cais.com)
-
- * ld.h (args_type): Add field soname.
- * lexsup.c (parse_args): Handle -soname argument.
- * emultempl/elf32.em: In call to bfd_elf32_size_dynamic_sections,
- pass soname.
- * ld.texinfo: Document -soname.
-
-Mon Aug 29 15:21:50 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * ldlang.c (lang_check): Don't try to set the architecture if the
- input and output files are incompatible. Just warn.
-
-Wed Aug 24 12:52:30 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * configure.in: Change i[34]86 to i[345]86.
-
-Sun Aug 21 16:17:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * emulparams/hp3hpux.sh: Define __DYNAMIC to be 0.
-
-Thu Aug 18 15:37:45 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- Make the ELF linker handle orphaned sections reasonably. Also,
- define __start_SECNAME and __stop_SECNAME around sections whose
- names can be represented in C, for the benefit of symbol sets in
- glibc.
- * ldemul.h (ldemul_place_orphan): Declare.
- (ld_emulation_xfer_type): Add place_orphan field.
- * ldemul.c (ldemul_place_orphan): New function.
- * ldlang.h (wild_doit): Declare.
- * ldlang.c (wild_doit): Make nonstatic.
- (lang_place_orphans): Call ldemul_place_orphan.
- * emultempl/elf32.em: Include <ctype.h> and "ldgram.h".
- (hold_section, hold_use, hold_text, hold_data, hold_bss): New
- static variables.
- (gld${EMULATION_NAME}_place_orphan): New static function.
- (gld${EMULATION_NAME}_place_section): New static function.
- (ld_${EMULATION_NAME}_emulation): Initialize place_orphan field.
-
-Tue Aug 16 00:17:20 1994 Eric Youngdale (ericy@cais.cais.com)
-
- * scripttempl/aout.sc: Add .linux-dynamic after .data.
-
-Tue Aug 16 00:08:22 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * lexsup.c (parse_args) Treat --dll-verbose as --version, for
- Linux compatibility. From hjl@nynexst.com (H.J. Lu).
-
-Mon Aug 15 17:17:33 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * ldexp.h (exp_get_abs_int): Declare.
-
-Sat Aug 6 01:45:39 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * ldlang.c (lang_do_assignments): Handle complex AT's better.
- * ldexp.c (exp_get_abs_int): New function.
-
-Fri Aug 5 20:55:55 1994 Jason Molenda (crash@phydeaux.cygnus.com)
-
- * configure.in: add i960-nindy-coff support.
-
-Thu Aug 4 14:45:50 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * ldlex.l (yy_create_string_buffer): Handle change to internal
- interface in flex 2.4.7.
-
-Tue Aug 2 11:52:06 1994 Eric Youngdale (ericy@cais.cais.com)
-
- * emultempl/linux.em (gld${EMULATION_NAME}_find_address_statement):
- New function; add 0x20 to any use of -Ttext.
- (gld${EMULATION_NAME}_create_output_section_statements): New
- function.
- (ld_${EMULATION_NAME}_emulation): Use the new function
- gld${EMULATION_NAME}_create_output_section_statements.
-
-Mon Aug 1 15:50:44 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * scripttempl/mips.sc: Redo script to set . outside of sections
- and not bother to explicitly specify section addresses.
-
-Tue Jul 26 11:02:35 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * scripttempl/elf.sc: Copy several more relocation sections into
- the output. Put .got.plt sections into .got.
-
-Fri Jul 22 12:15:36 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * scripttempl/elf.sc: Use PROVIDE to define etext, edata, and end.
-
- Add a new script operator, PROVIDE, to define a symbol only if it
- is needed.
- * ldgram.y (PROVIDE): New token.
- (assignment): Accept PROVIDE.
- * ldlex.l (PROVIDE): New token.
- * ldexp.h (node_type): Add etree_provide to node_class enum.
- (exp_provide): Declare.
- * ldexp.c (exp_fold_tree): Handle etree_provide.
- (exp_provide): New function.
- (exp_print_tree): Handle etree_provide.
- * ld.texinfo: Document PROVIDE.
-
- * ldlang.c (lang_common): Pass desired alignment to
- lang_one_common as power of two.
- (lang_one_common): Get common symbol alignment from linker hash
- table entry. Treat desired alignment as a power of two.
-
- * ldlang.c (wild_section): Attach all section with the given name,
- not just the first one. If there is no name, attach all sections
- even if the SEC_IS_COMMON flag is set.
-
-Wed Jul 20 15:49:27 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * ld.h (args_type): Add field rpath.
- * lexsup.c (S_ISDIR): Define if not already defined.
- (parse_args): Add support for -rpath. If -R is used to name a
- directory, treat it as -rpath for Solaris compatibility.
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
- Pass command_line.rpath to bfd_elf32_size_dynamic_sections.
- * ldmain.c (main): Initialize command_line.rpath to NULL.
- * ld.texinfo: Document -rpath option.
-
-Sun Jul 10 00:33:24 1994 Ian Dall (dall@hfrd.dsto.gov.au)
-
- * emulparams/pc532machaout.sh: New file. Pc532 mach script
- parameters.
-
- * emulparams/netbsd532.sh: New file. Netbsd 532 script parameters.
-
- * config/pc532mach.mt: New file. Pc532 mach target support.
-
- * config/pc532mach.mh: New file. Pc532 mach host support.
-
- * config/netbsd532.mt: New file. Netbsd 532 target support.
-
- * configure.in: Add ns32k-pc532-mach and ns32k-pc532-netbsd support.
-
- * Makefile.in: Add epcmachaout.c dependency and enetbsd532.c
- dependency.
-
-Fri Jul 8 10:57:02 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation): Use
- bfd_abs_section_ptr, not &bfd_abs_section.
-
- * lexsup.c (parse_args): Changed "retain-symbols-file" from
- no_argument to required_argument. From djm.
-
-Thu Jul 7 12:29:53 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * scripttempl/elf.sc: Explicitly mention .stab and .stabstr
- sections to force a VMA of 0; needed for ELF backends which have
- not been converted to the new linker style.
-
-Mon Jul 4 19:35:45 1994 Jeff Law (law@snake.cs.utah.edu)
-
- * scripttempl/hppaelf.sc (__stack_zero): Don't define this name,
- it was for the HPUX dynamic loader's use and it creates problems
- with ELF GDB.
-
-Fri Jul 1 12:53:47 1994 Jeff Law (law@snake.cs.utah.edu)
-
- * ldlang.c (lang_do_assignments): No longer static. Delete decl.
- * ldlang.h (lang_do_assignments): Put external decl here.
- * emultempl/hppaelf.em: Minor cleanups throughout file.
- (hppa_elf_create_output_section_statements): Rewrite.
- (hppaelf_finish): Rewrite.
-
-Wed Jun 29 16:50:00 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * config/solaris2.mh (NATIVE_LIB_DIRS): Define as /usr/ccs/lib.
-
- * lexsup.c (parse_args): Accept -Bstatic and -Bdynamic. Do not
- accept plain -B.
- * ld.texinfo: -Bstatic is not ignored.
-
-Tue Jun 28 12:13:34 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * ldlex.l: Recognize \r the same as \n.
-
-Thu Jun 23 17:53:04 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- Preliminary support for generating shared libraries, from Eric
- Youngdale <ericy@cais.cais.com>.
- * genscripts.sh: If the emulation parameter file sets
- GENERATE_SHLIB_SCRIPT, generate a .xs script file with
- CREATE_SHLIB defined.
- * emultempl/elf32.em (gld${EMULATION_NAME}_get_script): If
- link_info.shared is set, use the .xs script file.
- * scripttempl/elf.sc: If CREATE_SHLIB is set, don't create a
- .interp section, and don't include TEXT_START_ADDR in the starting
- address of the first section.
- * emulparams/elf_i386.sh (GENERATE_SHLIB_SCRIPT): Likewise.
- * emulparams/elf32_sparc.sh (GENERATE_SHLIB_SCRIPT): Define.
-
-Thu Jun 23 12:52:22 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * configure.in: Change --with-targets to --enable-targets.
-
-Wed Jun 22 13:42:14 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * lexsup.c (parse_args): Add support for new options -( -) with
- synonyms --start-group --end-group.
- * ldlang.h (enum statement_enum): Add lang_group_statement_enum.
- (lang_group_statement_type): Define new struct.
- (lang_statement_union_type): Add group_statement field.
- (lang_enter_group, lang_leave_group): Declare.
- * ldlang.c (lang_for_each_statement_worker): Handle
- lang_group_statement_enum.
- (map_input_to_output_sections, print_statement): Likewise.
- (lang_size_sections, lang_do_assignments): Likewise.
- (open_input_bfds): Completely rewrite. Now does its own looping,
- rather than using lang_for_each_statement. Handle groups.
- (lang_process): Update call to open_input_bfds.
- (print_group): New static function.
- (lang_enter_group, lang_leave_group): New static functions.
- * ldfile.c (ldfile_open_file): If the file has already been
- opened, just return rather than taking an assertion failure.
- * ldver.c (help): Mention new options.
- * ld.texinfo: Document new options.
-
- * ldlang.c (end_of_data_section_statement_list): Don't define.
- (lang_leave_output_section_statement): Don't set obsolete variable
- end_of_data_section_statement_list.
-
- * scripttempl/go32coff.sc: Don't put ${DATA_ALIGNMENT} inside an
- ALIGN.
-
- * ldlang.c (lang_size_sections): Adjust current region address
- even for sections with an explicit address. From
- ralphc@pyramid.com (Ralph Campbell).
-
- * emulparams/i386linux.sh (NONPAGED_TEXT_START_ADDR): Set to 0.
- From jrs@world.std.com (Rick Sladkey).
-
- * scripttempl/mipsbsd.sc: Let sections align to their natural
- boundaries.
-
-Tue Jun 21 11:27:04 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * ldlang.c (lang_init): Use new bfd_abs_section_ptr, not
- &bfd_abs_section.
- (lang_abs_symbol_at_beginning_of): Likewise.
- (lang_abs_symbol_at_end_of): Likewise.
- (lang_size_sections): Use bfd_is_abs_section to check for the
- absolute section. Don't try to set the VMA or output_offset or
- size of the absolute section.
- * ldmain.c (notice_ysym): Use bfd_is_und_section to check for the
- undefined section.
-
-Thu Jun 16 22:48:41 1994 Jeff Law (law@snake.cs.utah.edu)
-
- * scripttempl/hppaelf.sc: Place .data and .bss at 0x40000000
- when generating relocatable objects.
-
-Thu Jun 16 14:25:22 1994 Eric Youngdale (ericy@cais.cais.com)
-
- * emultempl/linux.em: New file providing support for linking
- against Linux shared libraries.
- * config/i386-linux.mt (ei386linux.c): Depend upon linux.em.
- * emulparams/i386linux.sh (TEMPLATE_NAME): Define as linux.
-
-Thu Jun 16 12:22:01 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * lexsup.c (parse_args): Add -shared to longopts, and handle it.
- * ldmain.c (main): Initialize link_info.shared to false. Give
- error if link_info.relocateable and link_info.shared are both set.
-
- * configure.in: If EMUL_EXTRA* is defined in a config file, treat
- it as naming an emulation to be added to EMULATION_OFILES.
- * config/i386-linux.mt (EMUL_EXTRA1): Define as elf_i386.
-
- * Makefile.in: Rebuilt dependencies.
- (ALL_EMULATIONS): Add ei386linux.o, eelf32_sparc.o,
- eelf64_sparc.o. Remove $(OTHER_EMULATIONS).
- (ei386linux.c, eelf32_sparc.c, eelf64_sparc.c): New targets.
- * config/i386-linux.mt (OTHER_EMULATIONS): Don't define.
- (ei386linux.c): Remove; now in Makefile.in.
- * config/i386-lynx.mt (OTHER_EMULATIONS): Don't define.
- * config/m68k-lynx.mt (OTHER_EMULATIONS): Don't define.
- * config/sparc-lynx.mt (OTHER_EMULATIONS): Don't define.
- * config/sparc64-elf.mt (OTHER_EMULATIONS): Don't define.
- (eelf64_sparc.c): Remove; now in Makefile.in.
- * config/sun4sol2.mt (OTHER_EMULATIONS): Don't define.
- (eelf32_sparc.c): Remove; now in Makefile.in.
-
- * ldexp.c (exp_print_tree): Don't crash if etree_rel section has
- no owner--it might be bfd_abs_section. From Eric Youngdale
- <ericy@cais.cais.com>.
-
- * scripttempl/aout.sc: Let sections align to their natural
- boundaries.
-
-Wed Jun 15 01:54:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldemul.h (ldemul_open_dynamic_archive): Declare.
- (ld_emulation_xfer_type): Add new field open_dynamic_archive.
- * ldemul.c: Include ldexp.h and ldlang.h.
- (ldemul_open_dynamic_archive): New function.
- * ldfile.h (ldfile_open_file_search): Declare.
- * ldfile.c: Include ldemul.h.
- (try_open_bfd): Rename from cache_bfd_openr. Return boolean
- argument, not bfd *. Change all callers.
- (ldfile_open_file_search): Rename from open_a. Return boolean
- argument, not bfd *. Clean up. Change all callers.
- (ldfile_open_file): If doing a dynamic link, call
- ldemul_open_dynamic_archive rather than assuming the extension of
- a dynamic object is ".so".
- * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
- New function.
- (ld_${EMULATION_NAME}_emulation): Initialize open_dynamic_archive
- field.
- * emultempl/sunos.em (ld_${EMULATION_NAME}_emulation): Likewise.
-
- * ldmain.c (get_emulation): Ignore -m486 for Linux compatibility.
- * lexsup.c (parse_args): Ignore -qmagic for Linux compatibility.
- Accept -static as a synonym for -non_shared.
-
- Let the user change the dynamic linker used by ELF code.
- * ld.h (args_type): Add new field interpreter.
- * lexsup.c (parse_args): Add dynamic-linker to longopts, and
- handle it.
- * ldmain.c (main): Initialize command_line.interpreter to NULL.
- * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Get
- the ELF backend to return the .interp section. If
- command_line.interpreter is not NULL, set the contents of .interp
- to it.
- * ld.texinfo: Mention -dynamic-linker.
-
- * config/sun4sol2.mt (eelf32_sparc.c): Depend upon elf32.em, not
- generic.em.
-
- * lexsup.c (parse_args): Sort out the option macros and change the
- definitions to make it easier to add a new option.
-
- * scripttempl/aout.sc: Define __etext and __edata to go along with
- _etext and _edata.
-
- * ld.h (ld_config_type): Add new field traditional_format.
- * lexsup.c (parse_args): Add traditional-format to longopts, and
- handle it.
- * ldmain.c (main): Initialize config.traditional_format to false.
- * ldlang.c (ldlang_open_output): Set BFD_TRADITIONAL_FORMAT in BFD
- flags of output_bfd according to config.traditional_format.
- * ldver.c (help): Mention -traditional-format.
- * ld.texinfo: Document -traditional-format.
-
-Tue Jun 14 23:10:07 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldctor.c (ldctor_add_entry): Add entries to a set in the order
- they are encountered.
-
-Tue Jun 14 18:05:09 1994 Eric Youngdale (ericy@cais.cais.com)
-
- * emulparams/i386linux.sh (TEXT_START_ADDR): Define as 0x1000.
- (NONPAGED_TEXT_START_ADDR): Define as 0x20.
-
-Mon Jun 13 15:46:09 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * scripttempl/alpha.sc: Define _ftext, _etext and _fdata insted of
- _FTEXT, _ETEXT and _FDATA. Dont define _END.
-
- * ldfile.c (open_a): If this is not an archive, try to open it in
- the current directory before searching for it.
-
- * lexsup.c (parse_args): Treat -i as a synonym for -r.
-
- * ldgram.y (exp): Treat BLOCK as a synonym for ALIGN, so that
- BLOCK works in a section address as documented.
-
- * ldgram.y (YYDEBUG): Don't define.
-
-Fri Jun 10 16:45:39 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * emultempl/gld960.em: Pass false for new argument to
- ldfile_add_library_path.
- * emultempl/gld960c.em, emultempl/lnk960.em: Likewise.
-
- * emultempl/sunos.em: Only look for .so files if doing a dynamic
- link.
-
-Thu Jun 9 08:35:17 1994 Ian Lance Taylor (ian@cygnus.com)
-
- * scripttempl/i960.sc: Add CONSTRUCTORS to .data.
-
-Thu Jun 9 06:52:29 1994 Bill Cox (bill@rtl.cygnus.com)
-
- * Makefile.in (check): Delete ld.new dependency so that a regression
- test doesn't trigger a rebuild of the linker.
-
-Thu Jun 9 00:17:20 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c (map_input_to_output_sections): For lang_address, call
- init_os if it hasn't already been called.
-
-Thu Jun 2 17:24:08 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- Add support for SunOS shared libraries.
- * aout.sc: Don't define __DYNAMIC here. Add new sections used by
- shared library support code.
- * emultempl/sunos.em: New file.
- * emulparams/sun4.sh (TEMPLATE_NAME): Define as sunos.
- * emulparams/sun3.sh (TEMPLATE_NAME): Likewise.
- * Makefile.in (esun4.c): Depend upon sunos.em, not generic.em.
- (esun3.c): Likewise.
-
- * ldlang.c: Minor formatting cleanups.
- (lang_for_each_input_file): New function.
- * ldlang.h (lang_for_each_input_file): Declare.
-
- * ldfile.h (search_dirs_type): Move from ldfile.c, and add cmdline
- field.
- (search_head): Declare.
- (ldfile_add_library_path): Add new cmdline argument in prototype.
- * ldfile.c (search_head): Make non-static.
- (search_dirs_type): Move to ldfile.h.
- (ldfile_add_library_path): Accept cmdline argument, and save it.
- * lexsup.c (parse_args): Pass true for new cmdline argument of
- ldfile_add_library_path.
- (set_default_dirlist): Likewise.
- * ldmain.c (check_for_scripts_dir): Pass false for new cmdline
- argument of ldfile_add_library_path.
- * ldgram.y (ifile_p1): Likewise.
-
-Wed Jun 1 14:24:08 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.h (lang_input_statement_type): Remove fields subfiles,
- total_size, superfile and chain.
- * ldfile.c (open_a): Don't clear search_dirs_flag.
- (ldfile_open_file): Don't try to open superfile. Assert that file
- has not already been opened.
- * ldlang.c (new_afile): Don't initialize superfile.
- * ldmain.c (add_archive_element): Don't initialize subfiles or
- chain or superfile. Initialize search_dirs_flag to false.
-
-Fri May 27 12:25:33 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * ldver.c (ldversion): Changed version to "cygnus-2.4.1".
-
- Changes from binutils-2.4 release:
-
- * genscripts.sh (RELOCATING, CONSTRUCTING): When setting
- variables, use whitespace, so scripts don't break.
-
- * config/alphaosf.mh (HDEFINES, CFLAGS): Deleted.
-
- * emultempl/generic.em: Find emultempl/stringify.sed in ${srcdir}.
-
- * cdtest-bar.cc: Renamed from cdtest-func.cc.
- * Makefile.in: Noted change.
-
- * scripttempl/a29k.sc: Don't include /lab3/u3/..../segments.o; I
- don't know where that's supposed to come from, or why it's
- necessary.
-
- Wed May 11 22:32:00 1994 DJ Delorie (dj@ctron.com)
-
- * configure.bat: update to latest makefile.in
- * emulpara/go32.sh: set to coff-go32 not aout
- * emultemp/generic.em: strength-reduce the structure of
- this shell script, since the only available shell for
- DOS can't handle complex syntax.
- * emultemp/stringify.sed: for "sed -f" instead of inline.
- * makefile.in: depend on stringify.sed as well as genscripts.sh
- * scripttemp/go32coff.sc: correct for djgpp 1.11's COFF format
- * genscripts.sh: empty variables aren't always considered "set",
- so set them to "y" instead.
-
-Fri May 27 01:08:14 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c (entry_symbol): Make static.
- (lang_add_entry): Add cmdline argument.
- * ldlang.h (lang_add_entry): Change prototype.
- * ldgram.y (statement_anywhere): Change lang_add_entry call.
- * lexsup.c (parse_args): Likewise.
-
-Tue May 24 16:13:43 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * emulparams/elf32mipb.sh (OTHER_READONLY_SECTIONS): Don't give
- .reginfo an address.
- (OTHER_READWRITE_SECTIONS): Don't give .lit4 or .lit8 an address.
- (OTHER_SECTIONS): Define for .gptab.sdata and .gptab.sbss.
- * scripttempl/elf.sc: Use OTHER_SECTIONS at end of script.
-
-Thu May 19 13:31:33 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- Add support for ELF shared libraries.
- * ld.h (ld_config_type): Add field dynamic_link.
- * ldmain.c (main): Initialize config.dynamic_link to false. Warn
- on attempts to use -r with -relax, -call_shared or -s.
- * lexsup.c (longopts): Separate OPTION_CALL_SHARED from
- OPTION_NON_SHARED. Add OPTION_IGNORE. Adjust macro values
- accordingly. Add "dy" and "non_shared" options. Change "Qy" to
- OPTION_IGNORE for now. Handle OPTION_CALL_SHARED and
- OPTION_NON_SHARED by setting dynamic_link field accordingly.
- Handle OPTION_IGNORE by ignoring it. Clear dynamic_link field for
- -r and -Ur.
- * ldfile.c (ldfile_open_file): If config.dynamic_link is true, try
- opening a file with a .so extension first.
- * emultempl/elf32.em: New file.
- * emulparams/elf32_sparc.sh (TEXT_START_ADDR): Change to 0x10000.
- (NONPAGED_TEXT_START_ADDR): Likewise.
- (TEMPLATE_NAME): Define as elf32.
- (DATA_PLT): Define.
- * emulparams/elf_i386.sh (TEMPLATE_NAME): Define as elf32.
- * scripttempl/elf.sc: Add placement for new dynamic sections.
- Don't use CREATE_OBJECT_SYMBOLS. Define _etext, _edata and _end
- outside of any section. Don't use ALIGN(8); just let one section
- VMA follow another. Put .dynbss in .bss. Don't mention debugging
- sections; they'll be handled correctly anyhow.
- * Makefile.in (eelf_i386.c): Depend upon elf32.em, not generic.em.
-
-Wed May 18 10:15:39 1994 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in (install): Redirect output of ln to /dev/null.
-
-Mon May 16 13:35:08 1994 Jeff Law (law@snake.cs.utah.edu)
-
- * emultempl/hppaelf.em: Change all references of
- .hppa_linker_stubs to .PARISC.stubs.
- * scripttempl/hppaelf.sc: Likewise.
-
-Fri May 13 13:00:38 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c (print_output_section_statement): Change ``no attached
- output section'' message slightly.
- (lang_do_assignments): Don't recurse down if there is no real
- section.
-
- * config/i386-linux.mt (OTHER_EMULATIONS): Change em_ to e to
- match corresponding change in emulation templates.
- * config/i386-lynx.mt, config/m68k-lynx.mt: Likewise.
- * config/sparc-lynx.mt, config/sun4sol2.mt: Likewise.
-
-Wed May 11 18:16:46 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * ldver.c (ldversion): Updated version number.
-
- * cdtest-foo.cc: Use explicit "#pragma implementation".
- * cdtest-bar.cc: Renamed from cdtest-func.cc.
- * Makefile.in: References to cdtest-func.o changed to
- cdtest-bar.o.
-
-Wed May 11 16:24:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- Don't create unnecessary output sections.
- * ldlang.c (out_bfd_get_section_by_name): Remove.
- (wild_section): Call bfd_get_section_by_name rather than
- our_bfd_get_section_by_name. Don't call wild_doit if there is no
- section.
- (lang_create_output_section_statements): Remove.
- (map_input_to_output_sections): For several cases, call init_os if
- it has not already been called.
- (lang_size_sections): If output section was not created, skip it.
- (lang_process): Don't call lan_create_output_section_statements.
- (lang_place_orphans): Skip files with just_syms_flags set to true.
- * ld.texinfo: Document change.
-
-Tue May 10 14:31:16 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c (wild_doit): Don't bother initializing the vma and
- section size. Don't special case SEC_SHARED_LIBRARY.
- (lang_size_sections): Handle SEC_COFF_SHARED_LIBRARY sections
- specially.
-
-Fri May 6 12:24:27 1994 Steve Chamberlain (sac@cygnus.com)
-
- * config/go32.mh : New file for Xgo32X.
-
-Fri May 6 15:15:35 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldfile.c (ldfile_open_command_file): Set bfd_error_system_call
- before calling einfo, since we are reporting an fopen failure.
- From jrs@world.std.com (Rick Sladkey).
-
- * configure.in: Use "e" rather than "em_" as prefix for
- emulations.
-
-Fri May 6 01:08:14 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com)
-
- * emultempl/generic.em: Use "e" rather than "em_" as prefix for
- filename.
- * emultempl/gld960.em, emultempl/gld960c.em, emultempl/lnk960.em,
- emultempl/hppaelf.em, emultempl/m88kbcs.em, emultempl/vanilla.em:
- Ditto.
- * Makefile.in: Changed all generated file names.
- (ldemul-list.h): Depend on Makefile, not config.status. Changed
- sed patterns to handle new filenames.
-
- * config/mipsl-idt.mt: Renamed from mips-idtl.mt.
- * configure.in: Adjusted.
-
-Thu May 5 15:07:32 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * Makefile.in (install-info): Don't use "$<*", it doesn't always
- work. Instead, check build dir and $srcdir explicitly, and use
- `echo' to get all the filenames.
-
- * configure.in (h8300h-*-hms): Changed ld_target name to
- cf-h8300h.
- * config/cf-h8300h.mt: Renamed from coff-h8300h.mt, to make it
- unique in 8.3.
-
- * config/i960coff.mt: New file.
- * emulparams/gld960coff.sh: New file.
- * emultempl/gld960c.em: New file.
- * configure.in (i960-*-vxworks5* except -vxworks5.0*): Use
- i960coff configuration.
- * Makefile.in (em_gld960coff.c): Added dependencies, build rule.
-
- * Makefile.in (ALL_EMULATIONS): Remove em_delta68.o, since the
- code isn't included in FSF releases, and it can still be
- explicitly selected.
- (distclean): Remove site.bak and tmpdir.
- (STAGESTUFF): Removed $(GENERATED_CFILES) $(GENERATED_HFILES).
- (mostlyclean): Delete them explicitly here. Also remove tmpdir.
-
- Patches from Ralph Campbell:
- * config/mipsbsd.mh: New file.
- * Makefile.in (em_mipsbsd.c): Use mipsbsd.sc, not aout.sc.
- * scripttempl/mipsbsd.sc: Don't define __DYNAMIC.
- * emulparams/mipsbsd.sh (OUTPUT_FORMAT): Fix name to have `a.out'
- instead of `aout'.
-
- * configure.in (i386-*-gnu*): Treat like i386-*-mach*.
-
-Wed May 4 11:59:40 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * config/m68k.mt (EMUL): Set to m68kaout.
- * emulparams/m68kaout.sh: New file.
- * Makefile.in (ALL_EMULATIONS): Add em_m68kaout.o.
- (em_m68kaout.c): New target.
-
- * ldlang.c (lang_size_sections): If dot moves because of an
- assignment, don't try to insert a pad into the absolute output
- section, just change the address of the default memory region
- instead.
-
- * Makefile.in (mostlyclean): Remove cdtest.tmp, cdtest-ur,
- cdtest-ur.out, and cdtest-ur.tmp.
-
-Wed Apr 27 16:03:37 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * scripttempl/sa29200.sc: Align all sections to four byte
- boundaries.
-
-Wed Apr 27 10:48:03 1994 Steve Chamberlain (sac@cygnus.com)
-
- * Makefile.in, configure.in: Support for go32 coff.
- * config/i386-go32.mt: New file
- * emulparams/i386go32.sh: New file
- * scripttempl/i386go32.sc: New file
-
-Tue Apr 26 17:20:03 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * Makefile.in (em_m68klynx.c, em_i386lynx.c, em_sparclynx.c): Use
- Lynx-specific script templates.
- * configure.in (sparclite*-*-coff): Use coff-sparc.
- * emulparams/i386lynx.sh (SCRIPT_NAME): Set to i386lynx.
- * emulparams/sparclynx.sh (SCRIPT_NAME): Set to sparclynx.
- (ENTRY): Set to __main.
- * scripttempl/i386lynx.sc: New file, script for I386 Lynx.
- * scripttempl/m68klynx.sc: Add insertion of ctor/dtor sections.
- * scripttempl/sparclynx.sc: New file, script for uSparc Lynx.
-
-Tue Apr 26 12:41:03 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * scripttempl/mips.sc: Force _gp and .lit8 to be aligned to a 16
- byte boundary, in case the global constructors do not take up an
- even 16 bytes.
-
- * config/i386v4.mh (HOSTING_CRT0): If ../gcc/crtbegin.o does not
- exist, get crtbegin based on gcc -print-libgcc-file-name.
- (HOSTING_LIBS): Similar change for ../gcc/crtend.o.
-
-Mon Apr 25 15:27:52 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c (lang_size_sections): When no address is given for a
- section, align it according to its requirements.
-
-Thu Apr 21 17:24:24 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * Makefile.in (clean, distclean): Remove configdoc.texi.
-
-Tue Apr 19 12:12:15 1994 Bill Cox (bill@rtl.cygnus.com)
-
- * configure.in: Add i[34]86-*-bsd386 to the patterns recognized.
-
-Fri Apr 15 14:35:42 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c (lang_size_sections): When relaxing, adjust the
- position of a padding statement, and adjust dot accordingly.
-
-Mon Apr 11 17:37:09 1994 Bill Cox (bill@rtl.cygnus.com)
-
- * Makefile.in (EXPECT, RUNTEST): Set these for the check goal.
-
-Mon Apr 11 12:32:57 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * scripttempl/i386coff.sc: If relocating, don't put .init and
- .fini sections into .text; keep them separate.
- * config/i386sco.mh (HOSTING_CRT0): If ../gcc/crtbegin.o does not
- exist, get crtbegin based on gcc -print-libgcc-file-name.
- (HOSTING_LIBS): Similar change for ../gcc/crtend.o.
-
-Mon Apr 11 10:31:00 1994 Bill Cox (bill@rtl.cygnus.com)
-
- * Makefile.in (check): Set TCL_LIBRARY for runtest.
-
-Wed Apr 6 00:09:37 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * configure.in (hppa*-*-*elf*): Don't require "-hp-" for the
- manufacturer.
-
- * emultempl/hppaelf.em (hppaelf_finish): Only resize sections
- if building a final executable.
-
-Tue Apr 5 12:17:30 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldmain.c (main): Check the return value of bfd_close.
-
-Thu Mar 31 18:07:06 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * scripttempl/alpha.sc: Clean up section alignment to ensure that
- sections never overlap when using -r.
-
-Wed Mar 30 15:51:15 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldmisc.c (vfinfo): Change symbol reading slightly for recent BFD
- changes: get_symtab_upper_bound renamed and returns long,
- bfd_canonicalize_symtab returns long, check for error indications.
-
-Fri Mar 25 17:20:01 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c (print_input_section): For section size, use
- _cooked_size if it is non-zero, size otherwise.
- (size_input_section): Likewise.
- (lang_do_assignments): Likewise (case lang_input_section_enum).
-
-Thu Mar 24 15:20:47 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c (new_afile): Add new argument add_to_list. Don't set
- real to true for lang_input_file_is_marker_enum. Clear the_bfd.
- (lang_add_input_file): Pass true to new_afile for add_to_list.
- (lookup_name): Remove force_load argument. Changed all callers.
- Pass false to new_afile for add_to_list. Split loading of symbols
- out into separate function.
- (load_symbols): New function split out of lookup_name. Don't load
- the symbols if they are already loaded.
- (open_input_bfds): For lang_input_statement_enum call load_symbols
- rather than lookup_name.
- (lang_process): Pass abs_output_section rather than NULL to
- lang_size_sections.
- (lang_startup): Set real field of first_file to true.
-
-Wed Mar 23 14:15:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c (had_relax): Removed.
- (relax_again): New static variable.
- (lang_size_sections): Change call to bfd_relax_section to
- correspond to BFD changes. Set relax_again appropriately.
- (lang_process): Remove #if 0 code. When relaxing, keep calling
- lang_do_assignments and lang_size_sections until relax_again
- becomes false.
-
- * emultemp/gld960.em: Include libiberty.h
- (gld960_before_parse): Pass NULL as final argument to concat.
-
-Tue Mar 22 13:08:28 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * scripttempl/aout.sc: Force _end and __end to be aligned to a
- four byte boundary.
-
- * ldwrite.c (build_link_order): Handle lang_data_statement_enum by
- building a bfd_data_link_order, rather than by setting the section
- contents immediately.
-
-Mon Mar 21 18:28:37 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- Changes to make -Ur work again.
- * ldmain.c (add_to_set): Now takes reloc argument rather than
- bitsize. Check config.build_constructors here. If an new hash
- table entry is created, mark it as undefined.
- (constructor_callback): No longer takes bitsize argument. Pass
- BFD_RELOC_CTOR to ldctor_add_set_entry, but first make sure the
- BFD backend supports it.
- (reloc_overflow): Handle a NULL abfd argument.
- (reloc_dangerous, unattached_reloc): Likewise.
- * ldctor.c: Include ldmain.h.
- (struct set_info): Change bitsize field to reloc.
- (ldctor_add_set_entry): Now takes reloc argument rather than
- bitsize. Don't bother to check config.build_constructors here.
- (ldctor_build_sets): Get the size from the reloc howto. If
- generating relocateable output, call lang_add_reloc rather than
- lang_add_data.
- * ldctor.h (ldctor_add_set_entry): Change declaration to use reloc
- instead of bitsize.
- * ldlang.h (statement_enum): Add lang_reloc_statement_enum.
- (lang_reloc_statement_type): New structure.
- (lang_statement_union_type): Add reloc_statement field.
- (lang_add_reloc): Declare new function.
- * ldlang.c (lang_for_each_statement_worker): Handle
- lang_reloc_statement_enum.
- (map_input_to_output_sections, print_statement): Likewise.
- (lang_size_sections, lang_do_assignments): Likewise.
- (print_reloc_statement): New function.
- (lang_add_reloc): New function.
- * ldwrite.c (build_link_order): Handle lang_reloc_statement_enum.
-
- * Makefile.in (cdtest.out, cdtest-ur.o): New targets.
- (cdtest-ur, cdtest-ur.out): New targets.
- (check-cdtest): Now also check that -Ur works correctly.
-
- * scripttemp/alpha.sc: Align all sections to 16 byte boundaries.
-
-Thu Mar 17 12:45:41 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c (lang_process): Move lang_common call before
- map_input_to_output_sections, to ensure that any alignment
- constraints set by common symbols are copied over to the output
- sections.
-
-Fri Mar 11 22:17:34 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * emulparams/elf32ppc.sh (TEMPLATE_NAME): Don't define.
- (OTHER_READWRITE_SECTIONS): Rename .toc to .got.
- * Makefile.in (em_elf32ppc.c): Depend upon generic.em, not ppc.em.
- * emultempl/ppc.em: Remove ugly stub code; turns out not to be
- needed for ELF.
-
-Tue Mar 8 04:22:27 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * config/i386bsd.mh: New file.
-
-Mon Mar 7 15:23:24 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * elf.sc: Permit TEXT_START_SYMBOLS and DATA_START_SYMBOLS to be
- defined.
- * emulparams/elf32mipb.s (TEXT_START_SYMBOLS): Define _ftext.
- (DATA_START_SYMBOLS): Define _fdata.
-
-Mon Feb 28 10:59:14 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * ldlang.c (cat): Define using ANSI style if ALMOST_STDC defined.
-
-Sun Feb 27 16:29:38 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * emultempl/hppaelf.em (hppaelf_finish): Update comments. This
- works again. Attach some output symbols to the stub file bfd.
-
- * emultempl/hppaelf.em: Include elf32-hppa.h.
- (file_chain): Add decl.
- (hppa_look_for_stubs_in_section): Delete decl.
- (hppaelf_finish): Reenable code. Do not pass symbols
- down to hppa_look_for_stubs_in_section.
-
-Sat Feb 26 10:58:25 1994 Ian Lance Taylor (ian@cygnus.com)
-
- * ldmain.c (write_map): Don't define. Removed all references.
- Just use map_file or map_filename instead.
- (add_archive_element): Use minfo to write map information, not
- info_msg.
- (constructor_callback): Use fprintf to write map information, not
- info_msg.
- * ldmain.h (write_map): Don't declare.
- * ldgram.y (mri_script_command): Removed reference to write_map.
- * ldlang.c (lang_one_common): Likewise.
- * lexsup.c (parse_args): Likewise.
-
-Fri Feb 25 19:12:03 1994 Ian Lance Taylor (ian@cygnus.com)
-
- * scripttempl/elf.sc: Force all sections to be aligned.
-
- * ldgram.y (section): Reverse the order of memspec_opt and
- fill_opt to avoid an ambiguity when both are used.
- * ld.texinfo: Changed accordingly.
-
- * ldgram.y: Move include of ldlex.h back with other includes.
- * ldlex.h (input_type): Don't initialize enum constants to
- particular values.
- * ldlex.l: Use a switch to return the right token based on
- input_type, rather than knowing that input_type has a value based
- on a token type.
-
- * ldgram.y (dirlist_ptr): Removed; not used.
- * lexsup.c: Include ldver.h.
- * Makefile.in: Rebuilt dependencies.
-
-Fri Feb 25 18:55:54 1994 Ted Lemon (mellon@pepper.ncd.com)
-
- * ldlang.c (lookup_name): don't call bfd_set_gp_size.
- (ldlang_add_file): call it here instead.
-
-Fri Feb 25 18:13:46 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * ldgram.y: Include ldlex.h after %token decls, for byacc.
-
-Fri Feb 25 10:47:25 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * emultempl/hppaelf.em: First attempt to clean this file up.
- Add comments in several functions as to their purpose and
- how they function (or my current best guess). Clean up horrible
- spacing and indention that never should have been accepted in the
- first place. Add FIXMEs for issues which need to be resolved.
- Disable linker-stub generation until it gets fixed. This allows
- the linker to at least work on simple code for testing purposes.
-
- * ldlang.c (lang_size_sections): No longer static (PA ELF calls
- it via hppaelf_finish). Prototype moved into ldlang.h.
- (lang_process): Move problematic extra call to lang_size_sections
- into the PA ELF specific code.
- * emultempl/hppaelf.em (hppaelf_finish): Extra call to
- lang_size_sections moved here.
-
-Thu Feb 24 16:47:33 1994 Ian Lance Taylor (ian@cygnus.com)
-
- * configure.in (powerpc-*-elf*): New target; use ppc-elf32.
- * config/ppc-elf32.mt: New file.
- * emulparams/elf32ppc.sh: New file.
- * emultempl/ppc.em: New file.
- * Makefile.in (ALL_EMULATIONS): Added em_elf32ppc.o.
- (em_elf32ppc.c): New target; uses elf32ppc.sh, ppc.em and elf.sc.
- (EMULATION_OFILES): Added dependencies on ldexp.h and ldlang.h.
-
-Thu Feb 24 12:27:07 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * lexsup.c (parse_args): Use symbolic numbers for long options.
- Fix misunderstanding in -Y and -call_shared et al.
-
- Use getopt instead of lex and yacc to parse the command line.
-
- * ld.texinfo (Options): Document changes to option syntax.
- * Makefile.in: Update dependencies.
- * ldver.c (help): Tweak dashes in usage message.
- * ldgram.y (%union): Remove unused members.
- Remove %tokens for command line options; add ones for input types.
- (command_line): Rules removed.
- (file): Instead of command line, recognize an
- input type indicator, then use the nonterminal for that type.
- (defsym_expr): New nonterminal from code formerly in command_line.
- * ldlex.h: Declare parser input type enum and variable.
- Don't declare parse_line.
- * ldlex.l: Remove unused variables. Make some used ones static
- and comment them.
- (COMMAND): Start state and its rules removed.
- At start of yylex, return input state token if at start of input.
- (lex_redirect): Don't need to set yyout.
- (ldlex_command): Function removed.
- * ldmain.c (main): Instead of calling parse_line, set up the
- redirections and call yyparse directly.
- * ldmisc.c (vfinfo): If there's no input filename, print nothing, not
- "command line".
- * lexsup.c: Remove #if 0'd code.
- (parse_line): Function removed.
- (parse_args): Rewrite to use getopt_long_only.
- (set_default_dirlist): New function from code formerly in
- ldgram.y:command_line.
- (set_section_start): New function.
- * emultempl/generic.em, emultempl/gld960.em, emultempl/hppaelf.em,
- emultempl/lnk960.em, emultempl/m88kbcs.em: Don't enclose
- compiled-in link scripts in "{" and "}", as the grammar no longer
- wants them to be.
-
-Thu Feb 24 08:43:26 1994 Ken Raeburn (raeburn@rtl.cygnus.com)
-
- * Makefile.in (ld.dvi): Depend on configdoc.texi, but don't
- require that it be in $(srcdir).
-
-Tue Feb 22 09:21:18 1994 Ian Lance Taylor (ian@cygnus.com)
-
- * ldlang.c (lang_size_sections): Only align section to alignment
- required by linker script, not to maximum alignment of input
- sections.
-
- * ldlang.h (largest_section): Don't declare.
- * ldlang.c (largest_section): Don't define.
- (size_input_section): Don't set largest_section; not used.
-
-Mon Feb 21 15:15:29 1994 Ian Lance Taylor (ian@cygnus.com)
-
- * ldlang.c (new_afile): Pass NULL as last argument to concat.
-
-Thu Feb 17 15:51:23 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c, ldmain.c: Include libiberty.h.
-
- * ldmisc.h (concat): Don't declare.
- * ldmisc.c (concat): Don't define; just use the one in libiberty.
-
- * ld.h (as_output_section_statement): Removed; not used.
-
-Thu Feb 17 09:32:14 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldlang.c, ldmain.c, ldmisc.c: Use bfd_get_error and
- bfd_set_error and new error names.
-
-Tue Feb 15 20:14:53 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * ldwrite.c (build_link_order): If the cooked size of the section
- has been set, use it, for determining link_order size.
- (ldwrite): In the error message displayed if bfd_final_link fails,
- indicate that it was in fact the final link step that failed.
-
- * ldlang.c (lang_size_sections): Clear bfd_error before calling
- bfd_relax_section, in case it returns false but doesn't flag an
- error. If an error is returned, indicate which one it is in the
- error message.
-
- * Makefile.in (install-info): Depend on ld.info, and use "$<*" so
- it'll get picked up from $(srcdir) if appropriate.
-
-Tue Feb 15 16:32:04 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * scripttempl/aout.sc: Only pad .text if PAD_TEXT is set.
- * emulparams/i386mach.sh (PAD_TEXT): Set PAD_TEXT.
-
-Fri Feb 11 17:02:49 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldlex.l (comment): Increment line number when newline is read.
-
-Fri Feb 11 17:36:20 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c (lookup_name): Take new argument, force_load. If true,
- reload the file even if it is already loaded.
- (wild): Call lookup_name with force_load argument of 0.
- (open_input_bfds): Call lookup_name with force_load argument of 1.
- (print_symbol): Remove declaration of non-existent function.
- (print_one_symbol): Return true rather than falling off end.
-
-Thu Feb 10 11:52:38 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldmain.c (main): Use %ld when printing long values.
-
- * scripttempl/elf.sc: Move _edata after the .sdata section.
- Permit OTHER_BSS_SYMBOLS to be defined.
- * emulparams/elf32mipb.s (OTHER_BSS_SYMBOLS): Define _fbss.
-
-Mon Feb 7 16:31:15 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * Rename all "hppaosf" files to "hppaelf".
- * Change all "osf" references to "elf" in hppaelf files.
- * Makefile.in: Likewise.
- * configure.in: Likewise.
-
-Sun Feb 6 20:31:56 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldmain.c (main): Call xatexit, not atexit.
- Call xmalloc_set_program_name.
-
- * ldlang.c (lang_size_sections): Check if bfd_relax_section set
- bfd_errno.
-
-Sat Feb 5 03:54:34 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * emultempl/lnk960.em (append), emultempl/hppaosf.em
- (hppaosf_finish): Call xmalloc, not ldmalloc.
- * ldmain.c (preserve_output): Function removed.
- (main): Do it here instead.
-
-Fri Feb 4 23:02:19 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * ldlang.h (LANG_FOR_EACH_{INPUT,OUTPUT}_SECTION): Delete (unused)
- GNU C specific macros.
-
- * emultempl/hppaosf.em (hppaosf_finish): Expand the only remaining
- call to LANG_FOR_EACH_INPUT_SECTION.
-
-Fri Feb 4 16:26:08 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldmisc.c (ldmalloc, xmalloc, ldrealloc, xrealloc): Functions
- deleted; will use libiberty versions instead.
- * ldctor.c ldfile.c ldlang.c ldmain.c ldmisc.c ldmisc.h lexsup.c
- mri.c Makefile.in: Change callers.
-
- * ldmisc.c (vfinfo): Remove cleanup code.
- * ldmain.c (remove_output): Put it here (new function).
- (preserve_output): New function.
- (main): Register remove_output and preserve_output with atexit.
- * ldmain.c ldgram.y: Call xexit instead of exit.
- * ldmisc.h: Declare xexit.
-
-Fri Feb 4 15:19:01 1994 Steve Chamberlain (sac@cygnus.com)
-
- * Makefile.in: Lots of new H8/500 memory models.
-
-Sun Jan 30 14:33:40 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * ldlex.l: Removed duplicate rules.
- (yywrap): Provide default definition, needed with some versions of
- flex.
-
-Fri Jan 28 09:12:56 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldmisc.c (vfinfo): For `%I', if the file is in an archive, print
- the archive filename too.
-
- * ldlex.l: Add rule to catch invalid input characters instead of
- printing them. Include "ldmain.h" for program_name decl.
- (lex_warn_invalid): New function.
- * Makefile.in: Add dependency.
-
-Fri Jan 28 12:58:45 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * Makefile.in (check): Don't bother running any tests of
- cross-linker until the test suite no longer assumes native mode.
-
-Thu Jan 27 17:19:54 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * ldlang.c (print_one_symbol, print_input_section): Print
- global symbols in symbol table again.
-
-Thu Jan 27 12:35:01 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldmain.c ldmain.h ldgram.y: If -v -V or --version was given,
- exit successfully instead of complaining if no input files are
- given.
-
-Tue Jan 25 13:19:41 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * Makefile.in: Format variable definitions consistently.
- (LD_PROG): Remove unnecessary variables from link command,
- change variable LOADLIBES to EXTRALIBS.
-
- * ldmain.c (main): Compute and display total execution time.
- * ld.texinfo (-stats): Document the option.
-
-Mon Jan 24 12:56:37 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldmain.c (reloc_overflow): Added name, reloc_name and addend
- arguments.
-
- * ldlang.c (lookup_name): Set BFD GP size to -G argument value
- after opening BFD.
-
- * ldlang.c (relaxing): Removed global variable.
- (lang_size_sections): If the canonical symbols have not already
- been read in, read them in before relaxing.
- * ldlang.h (relaxing): Removed declaration.
-
-Fri Jan 21 00:44:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c (new_afile): Initialize loaded field to false.
- (lookup_name): If file was already loaded, don't call the
- add_symbols entry point again.
-
-Wed Jan 19 13:57:00 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ld.texinfo: Clarify what -T option does.
-
-Tue Jan 18 16:18:15 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * scripttempl/m88kbcs.sc: Don't use CREATE_OBJECT_SYMBOLS, that's
- for a.out.
-
-Tue Jan 11 13:22:04 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldmain.c (add_archive_element): If trace_files or
- trace_file_tries, print file name.
- * ldlang.c (lookup_name): Likewise.
- (ldlang_add_file): Don't put files on input_bfds list in reverse
- order.
-
- * scripttempl/elf.sc: Correct typo.
-
-Mon Jan 10 19:49:05 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldgram.y, ldlex.l: Make the space between -e, -u, and -y and
- their arguments optional, for compatibility with the old GNU ld.
-
-Fri Jan 7 20:00:24 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * scripttempl/elf.c: Define __bss_start before the .sbss section.
-
-Thu Jan 6 00:13:10 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldmain.c (add_to_set): Add bitsize argument.
- (constructor_callback): New function.
- (link_callbacks): Add constructor_callback.
- * ldctor.c (struct set_info): Add bitsize field.
- (ldctor_add_set_entry): Add bitsize argument.
- (ldctor_build_sets): Base the size of the elements of the set on
- the bitsize, rather than always using LONG.
- * ldctor.h (ldctor_add_set_entry): Add bitsize to declaration.
-
- * ld.h (QUAD_SIZE): Define.
- * ldgram.y (QUAD): New token.
- (length): Handle it.
- * ldlex.l: Return QUAD.
- * lexsup.c (keywords): Add QUAD.
- * ldwrite.c (build_link_order): Handle QUAD.
- * ldlang.c (print_data_statement): Handle QUAD.
- (lang_size_sections): Likewise.
- (lang_do_assignments): Likewise.
- * ldexp.c (exp_print_token): Add QUAD to table.
- * ld.texinfo: Describe QUAD.
-
- * scripttempl/alpha.sc: Don't create .lit4 or .sdata sections,
- since the Alpha doesn't use them.
-
-Wed Jan 5 17:42:16 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldemul.h (ld_emulation_xfer_struct): Comment the members.
-
-Sat Jan 1 13:39:31 1994 Rob Savoye (rob@darkstar.cygnus.com)
-
- * Makefile.in, configure.in: Add support for VSTa micro-kernel.
- * config/vsta.mt, emulparams/vsta.sh: New files for VSTa.
-
-Sat Jan 1 10:53:35 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * scripttempl/aout.sc: Pad .text to DATA_ALIGNMENT if relocating;
- needed for i386mach. (Should be a no-op on other systems.)
-
- * emulparams/i386mach.sh (SEGMENT_SIZE): Fix again.
- (PAGE_SIZE): Don't define; not used.
-
-Fri Dec 31 16:12:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldgram.y (yyerror): Make argument const char *, and actually
- print it out rather than assuming it is a syntax error.
- * ldmisc.h: Change declaration of yyerror.
- * ldemul.c, ldwrite.c: Add /*ARGSUSED*/ as appropriate.
-
-Fri Dec 31 11:37:28 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * emulparams/i386mach.sh (NONPAGED_TEXT_START_ADDR): Don't include
- exec header offset, since the exec header isn't loaded.
- (PAGE_SIZE, SEGMENT_SIZE): Agree with bfd/i386mach3.c.
-
-Thu Dec 30 13:01:43 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- A major rewrite to move the bulk of the linker into BFD so that
- more efficient backend code can be written for specific object
- files.
- * lderror.c, lderror.h, ldindr.c, ldindr.h, ldsym.c, ldsym.h,
- ldwarn.c, ldwarn.h, relax.c, relax.h: Removed.
- * ldctor.c, ldctor.h: Complete rewrite.
- * ldwrite.c, ldwrite.h: Complete rewrite.
- * ld.h (strip_symbols_type, strip_symbols): Removed. Use
- link_info.strip instead. Changed all uses.
- (discard_locals_type, discard_locals): Removed. Use
- link_info.discard instead. Changed all uses.
- (ld_config_type): Removed relocateable_output field; use
- link_info.relocateable instead; changed all uses. Added stats
- field.
- (set_asymbol_chain, get_asymbol_chain, get_loader_symbol,
- set_loader_symbol): Removed.
- * ldexp.h (node_class): Added etree_rel.
- (etree_type): Added rel field.
- * ldexp.c (exp_print_token): Bracketed table initialization.
- (exp_relop): New function.
- (fold_name): Use linker hash table rather than ldsym functions.
- (exp_fold_tree): Likewise. Also, handle etree_rel case.
- (exp_print_tree): Handle etree_rel.
- * ldgram.y (strip_symbols, discard_locals): Removed.
- (OPTION_stats, OPTION_no_keep_memory): New tokens. Handle them.
- (REL): New token. Does not appear in grammar, but needed for
- expression code.
- (file): Don't call lang_final; it's called by main anyhow.
- * ldlex.l: Accept -stats and -no-keep-memory options.
- * ldlang.h (fill_type): Make unsigned int, not unsigned short.
- * ldlang.c: Consistently use fill_type for fill argument.
- (lang_init_script_file, script_file): Removed.
- (create_object_symbols): Removed. Use
- link_info.create_object_symbols_section instead. Changed all
- uses.
- (lang_add_keepsyms_file): Removed.
- (lookup_name): Call bfd_link_add_symbols instead of
- ldmain_open_file_read_symbol.
- (wild): Don't iterate over script_file.
- (open_output): Create link hash table.
- (lang_place_undefineds): Rewrote.
- (lang_size_sections): Handle relaxing (doesn't work yet).
- (lang_relocate_globals): Removed.
- (lang_finish): Use link hash table rather than ldsym functions.
- (lang_common): Rewrote.
- (lang_one_common): New function.
- (ldlang_add_file): Add file to link_info.input_bfds list. Set
- usrdata.
- (create_symbol): Removed.
- (lang_process): Don't call lang_init_script_file. Call
- ldctor_build_sets rather than find_constructors. Don't call
- lang_relocate_globals.
- (lang_abs_symbol_at_beginning_of): Rewrote.
- (lang_abs_symbol_at_end_of): Rewrote.
- * ldmain.c (had_y): Removed.
- (lprefix, lprefix_len): Removed; use link_info fields instead.
- Changed all uses.
- (multiple_def_count, commons_pending, undefined_global_sym_count,
- total_symbols_seen, total_files_seen): Removed.
- (link_callbacks, link_info): New variables.
- (main): Initialize link_info. Don't call init_bfd_error_vector or
- ldsym_init. Don't set now unused variables. Handle -stats.
- (get_emulation): Removed obsolete and nonfunctional GNU960 code.
- (add_ysym): Rewrote.
- (read_entry_symbols, refize, enter_global_ref, enter_file_symbols,
- search_library, gnu960_check_format, decode_library_subfile,
- linear_library, symdef_library, clear_syms, subfile_wanted_p):
- Removed.
- (add_keepsyms_file, add_archive_element, multiple_definition,
- multiple_common, add_to_set, warning_callback, undefined_symbol,
- reloc_overflow, reloc_dangerous, unattached_reloc, notice_ysym):
- New functions.
- * ldmisc.c (vfinfo): Accept a string for %T, not a symbol. Don't
- require symbols for %C; look them up instead.
- * emultempl/hppaosf.em: Pass link_info to
- hppa_look_for_stubs_in_section.
- * Makefile.in: Rebuilt dependencies.
- (CFILES): Removed lderror.c, ldindr.c, ldsym.c, ldwarn.c, and
- relax.c.
- (HFILES): Removed lderror.h, ldindr.h, ldsym.h, ldwarn.h, and
- relax.h.
- (EMULATION_OFILES): Depend on bfdlink.h, ldmain.h, ldexp.h,
- ldlang.h and ldctor.h.
-
- * Makefile.in (ldlex.c): Don't depend on ldgram.h. Remove
- declarations of free and malloc from flex output. Change malloc
- to ldmalloc in flex output.
-
-Thu Dec 16 21:19:57 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * ldmain.c (lprefix): Change default from a char to a string
- with only one character.
- (lprefix_len): Set default to one.
-
- * ldmain.h (lprefix_len): Declare.
-
- * ldsym.c (write_file_locals): Use strncmp rather than a character
- comparison for lprefix.
-
- * emultmpl/m88kbcs.em (before_parse): Set lprefix and lprefix_len
- correctly.
-
- * emultmpl/hppaosf.em: Include ldexp.h.
- (before_parse): Set lprefix and lprefix_len correctly.
-
-Tue Dec 14 17:19:03 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlex.h: Don't declare yywrap if it is a macro.
- * ldlex.l: Include sysdep.h.
- * ldlang.c (lang_for_each_statement_worker,
- lang_for_each_statement): Forgot to use PARAMS.
-
-Mon Dec 13 14:30:03 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * Makefile.in: Added .PHONY targets where appropriate. Added some
- comments. Also:
- (gcclibdir, version): Removed unused variables.
- (DEP): New variable, set to mkdep.
- (ALL_CFLAGS): New variable. Used in .c.o target.
- (CFILES, HFILES, GENERATED_CFILES, GENERATED_HFILES): New
- variables.
- (HEADERS, MANSOURCES, LDCSOURCES, GENERATED_SOURCES,
- GENERATED_HEADERS, LDSOURCES, BFD_SOURCES, SOURCES): Removed
- mostly obsolete variables. Adjusted remaining uses.
- (DEF_EMUL): Removed variable.
- (ldmain.o): Handle undefined EMUL error correctly.
- (ldemul-list.h): Depend on config.status rather than Makefile.
- Create via temporary file.
- (ver960.c, roll, make): Removed obsolete targets.
- (.dep, .dep1, dep.sed, dep, dep-in): New targets. Used to rebuild
- dependencies.
- * dep-in.sed: New file, used when rebuilding dependencies.
-
-Sat Dec 11 14:43:44 1993 Ian Lance Taylor (ian@deneb.cygnus.com)
-
- Made many changes to eliminate gcc warnings. Made various
- cosmetic changes, declared various things in header files, removed
- various extern declarations from .c files. No substantive
- changes.
-
- * ldlang.c (lang_process): Ifdef out final call to
- lang_size_sections again (reverting change of Nove 2), since it
- breaks the Sun4 linker.
-
-Thu Dec 2 16:31:47 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * configure.in (alpha-*-netware*): New target; use alpha.
-
-Wed Dec 1 14:04:20 1993 Ken Raeburn (raeburn@cygnus.com)
-
- * configure.in: Group targets by CPU. Merge some m68k target
- entries with different CPU specs that use the same ld_target
- values.
-
- * configure.in: Add sparc*-*-coff.
- * config/coff-sparc.mt, emulparams/coff_sparc.sh: New files.
- * Makefile.in (ALL_EMULATIONS): Add em_coff_sparc.o.
- (em_coff_sparc.c): Add dependencies and build rules.
-
- * ldmisc.c (errno, sys_nerr, sys_errlist): Don't declare.
-
-Wed Dec 1 12:19:55 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldgram.y (OPTION_call_shared, OPTION_non_shared, OPTION_Oval):
- New tokens.
- (command_line_option): Accept and ignore them (for now).
- * ldlex.l (<COMMAND>): Handle -non_shared, -call_shared, and -On
- where n is a number.
-
-Mon Nov 22 14:14:29 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldmain.c (subfile_wanted_p): If merging a common symbol which is
- not in bfd_com_section, create the section in the BFD so that it
- can be placed in the right output section.
-
-Fri Nov 19 14:12:39 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * configure.in (mips*-sgi-irix5*): New target. Use mipsb-elf32.
- * emulparams/elf32mipsb.sh (DATA_ADDR): Define.
- (OTHER_READONLY_SECTIONS): Define for .reginfo.
- (EXECUTABLE_SYMBOLS): Define for _DYNAMIC_LINK.
- * scripttempl/elf.sc: Use EXECUTABLE_SYMBOLS when not relocating.
- Move OTHER_READONLY_SECTIONS after all the other readonly
- sections. Don't use DATA_ADDR twice.
-
- * ldmain.c (enter_file_symbols): Removed duplicate tests of p. If
- p is in a common section, make sure the BFD has a section of that
- name.
-
- * ldlang.c (lang_common): Add newline to error message.
-
-Thu Nov 11 15:54:41 1993 Stan Shebs (shebs@rtl.cygnus.com)
-
- * emulparams/m68klynx.sh (SCRIPT_NAME): Define to use a
- Lynx-specific script instead of m68kcoff.
- (OUTPUT_FORMAT): Define as "coff-m68k-lynx".
- (ENTRY): Define as __main.
- (TEXT_START_ADDR): Define as 0.
- (PAGE_SIZE): Define as 0x1000.
- * emulparams/i386lynx.sh, emulparams/sparclynx.sh: Fix comment.
- * scripttempl/m68klynx.sc: New file.
-
-Mon Nov 8 12:00:16 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldmain.c (get_emulation): Ignore -mips1, -mips2 and -mips3
- arguments rather than treating them as emulation names.
-
-Fri Nov 5 09:02:52 1993 D. V. Henkel-Wallace (gumby@blues.cygnus.com)
-
- * configure.in: Support x86 unixware and netware plus generic netware.
-
-Fri Nov 5 21:47:55 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * emulparams/i386mach.sh (TEXT_START_ADDR, NONPAGED_TEXT_START_ADDR):
- Correct values (?).
-
-Wed Nov 3 15:10:15 1993 Ken Raeburn (raeburn@rover.cygnus.com)
-
- * Makefile.in (distclean): Don't delete dvi or info files.
- (ld.info): Update dependency list.
- (ld.dvi): Ditto. Extend TEXINPUTS to get bfdsumm.texi.
-
-Wed Nov 3 12:07:39 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldlang.c (lang_add_output): Take new arg, FROM_SCRIPT.
- Set output_filename instead of creating a new node.
- (open_output): Don't set output_filename.
- (lang_final): Create the new node here.
- * ldlang.c, ldlang.h, ldgram.y, mri.c: pass FROM_SCRIPT.
-
-Tue Nov 2 15:45:51 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- From Pete Hoogenboom (hoogen@cs.utah.edu):
-
- * scripttempl/hppaosf.sc: (___stack_zero, etext, _etext,
- edata, _edata, end): Add definitions of these symbols.
- (__end): Remove definition of this symbol.
- (__data_start): Move definition of this symbol.
-
- * emultempl/hppaosf.em: Various fixes and support for linker stub
- generation.
- (hppaosf_finish, hppaosf_search_for_padding_statements,
- hppaosf_create_output_section_statements): New functions in
- support of linker stub generation.
- (ld_hppaosf_emulation): Redefine to include new
- emulation-specific routines.
-
- * ldlang.c (lang_process): Re-enable last call lang_size_sections.
- Pass abs_output_section rather than NULL to avoid invalidating
- absolute symbols.
-
-Thu Oct 28 21:16:42 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * Makefile.in (ALL_EMULATIONS): Add em_i386mach.o.
- (em_i386mach.c): New rule.
- * configure.in (i[34]86-*-mach*): New case.
- * config/i386-mach.mt: New file.
- * emulparams/i386mach.sh: New file.
-
-Fri Oct 29 14:55:05 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ld.h (flag_is_*): Removed macros.
- * ldmain.c (enter_global_ref), ldsym.c (write_file_locals):
- Consistently check the BFD symbol flags directly, rather than
- using file_is_* macros.
-
-Thu Oct 28 19:08:42 1993 Stan Shebs (shebs@rtl.cygnus.com)
-
- * configure.in (sparc*-*-lynxos*): New target.
- * Makefile.in: Add rule for em_sparclynx.c.
- (ALL_EMULATIONS): Add Lynx emulations.
- * config/sparc-lynx.mt: New file.
- * emulparams/sparclynx.sh: New file.
- * scripttempl/sparccoff.sc: New file.
-
-Thu Oct 28 13:50:25 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * Makefile.in: Add dependency for $(EMULATION_OFILES).
-
-Mon Oct 25 16:09:24 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * relax.c (write_relax): Check return value of bfd_seclet_link.
-
-Mon Oct 25 09:31:21 1993 Ken Raeburn (raeburn@cygnus.com)
-
- * ldlang.c (delete_output_file_on_failure): New variable.
- (open_output): Set it after bfd open succeeds.
- * ldmisc.c (vfinfo): Test it.
-
- Changes from Peter Hoogenboom, hoogen@cs.utah.edu:
-
- * ldsym.c (write_file_locals): Set the BSF_FILE flag for object
- symbols.
-
- * ldemul.c: Support was added to allow emulation-specific
- processing to occur. This support was added primarily for linker
- stub generation in the elf32-hppa gld.
- (ldemul_finish, ldemul_create_output_section_statements): New
- functions.
- * ldemul.h: Support was added to allow emulation-specific
- processing to occur. (As described above.) Added finish and
- create_output_section_statements fields to
- ld_emulation_xfer_struct structure.
- * ldlang.c: Add calls to emulation-specific routines.
- (lang_process): Add call to
- ldemul_create_output_section_statements function.
- (lang_process): Add call to a emulation-specific routine (and
- some processing after the call).
-
-Fri Oct 22 20:54:13 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
-
- * configure.in: mips*- instead of mips-, mips*el changes
-
-Tue Oct 19 15:46:28 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * configure.in (alpha-*-osf*): New target; use alpha.mt.
- * Makefile.in (ALL_EMULATIONS): Added em_alpha.o.
- (em_alpha.c): New target; use alpha.sh and alpha.sc.
- * config/alphaosf.mh (NATIVE_LIB_DIRS, HOSTING_CRT0): Define.
- * config/alpha.mt: New file.
- * emulparams/alpha.sh: New file.
- * scripttempl/alpha.sc: New file.
-
-Fri Oct 15 02:20:04 1993 Doug Evans (dje@canuck.cygnus.com)
-
- * ldlang.c (lang_size_sections, lang_common): ALIGN_N can't handle
- types of different sizes (eg: 64 and 32 bits), so coerce.
- * ld.h (ALIGN_N): Add warning about usage.
-
-Wed Oct 13 16:02:39 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldmain.c (enter_global_ref): Just ignore any weak symbol for
- which we already have a definition, rather than checking in
- several different places whether the symbol is weak.
-
-Tue Oct 12 17:30:51 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * configure.in (mips-*-elf*): New target; use mipsb-elf32.
- * scripttempl/elf.sc: Only use OTHER_READONLY_SECTIONS and
- OTHER_READWRITE_SECTIONS if relocating. Shell variables are not
- expanded within them.
- * config/mipsb-elf32.mt: New file.
- * emulparams/elf32mipb.sh: New file.
- * Makefile.in (em_elf32mipb.c): New target.
-
-Thu Sep 30 17:00:36 1993 Rob Savoye (rob@darkstar.cygnus.com)
-
- * ldgram.y: In input_list, change lang_input_file_is_file_enum to
- lang_input_file_is_search_file_enum so objects brought in using
- INPUT() do a path lookup.
-
-Tue Sep 28 13:31:23 1993 Stan Shebs (shebs@rtl.cygnus.com)
-
- * configure.in: Change Lynx ld_target to be {i386,m68k}-lynx
- instead of {i386,m68k}-coff.
- * Makefile.in (em_i386lynx.c, em_m68klynx.c): New targets.
- * config/i386-lynx.mt: New file.
- * config/m68k-lynx.mt: New file.
- * emulparams/i386lynx.sh: New file.
- * emulparams/m68klynx.sh: New file.
-
- * scripttempl/i386coff.sc: Make ENTRY get its value from ${ENTRY},
- but defaulting to _start.
-
- * ldemul.c, ldfile.c, ldlang.c, ldmain.c, ldmisc.c, ldmisc.h,
- ldsym.c, ldwarn.c: Rename info to info_msg, to avoid conflict with
- LynxOS libc.
-
-Thu Sep 23 14:51:03 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * config/solaris2.mh: New file. Define HOSTING_CRT0 and
- HOSTING_LIBS for testing.
-
-Fri Sep 17 17:52:24 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- Finish up support for i386-sysv4 (without shared libraries):
- * ld.h (flag_is_weak): Define.
- * ldlang.c (print_symbol): Mention whether symbol is weak.
- (print_input_section): Print weak symbols as globals.
- * ldmain.c (refize): Do not zero out BSF_WEAK flag.
- (enter_global_ref): Do not warn if a weak symbol redefines a
- global symbol. Do not let a weak symbol redefine a common symbol.
- (enter_file_symbols): Treat weak symbols as global symbols.
- (subfile_wanted_p): Do not pull in an object file from a archive
- just to resolve an undefined weak symbol.
- * ldmisc.c (vfinfo): Don't needlessly malloc space after a fatal
- error; the error might be that malloc has run out of space.
- * ldsym.c (write_file_locals): Treat weak symbols as global.
- * configure.in (i[34]86-*-sysv4*, i[34]86-*-elf*): New targets;
- use i386-elf.
- * config/i386v4.mh: New file; set NATIVE_LIB_DIRS to /usr/ccs/lib.
- * config/i386-elf.mt: New file; set EMUL to elf_i386.
- * emulparams/elf_i386.sh: New file.
- * scripttempl/elf.sc: Use ${NOP} as filler (defaults to 0).
- * Makefile.in (NATIVE_LIB_DIRS): Define to be empty.
- (ALL_EMULATIONS): Add em_elf_i386.o.
- (GENSCRIPTS): Pass NATIVE_LIB_DIRS as sixth argument.
- (em_elf_i386.c): New target, like other em_*.c targets.
- ($(LD_PROG)): Pass $(CFLAGS) to $(CC).
- * genscripts.sh: Accept NATIVE_LIB_DIRS as sixth argument. If
- nonempty, and configured for native, add it to LIB_PATH.
-
-Fri Sep 17 13:07:39 1993 Stan Shebs (shebs@rtl.cygnus.com)
-
- * scripttempl/{h8300.sc,h8500.sc,i386coff.sc,m68kcoff.sc,sh.sc}:
- Added statements to pass stab and stabstr sections through and
- mark them as NOLOAD, which makes GDB happier.
-
-Wed Sep 15 16:02:29 1993 Stan Shebs (shebs@rtl.cygnus.com)
-
- * configure.in: Accept m68k-lynx-lynxos config.
-
- * Makefile.in: Use $(SHELL) to run genscripts.sh.
-
-Sun Sep 12 16:04:40 1993 Doug Evans (dje@cygnus.com)
-
- * config/coff-h8300.mt: Add EMUL=h8300h.
-
- * ldmain.c (main): Call set_scripts_dir after argv has been processed.
-
-Fri Sep 10 09:36:29 1993 Jeffrey Wheat (cassidy@cygnus.com)
-
- * Makefile.in: Changed CXX back to g++.
-
-Fri Sep 10 09:34:29 1993 Jeffrey Wheat (cassidy@cygnus.com)
-
- * Makefile.in: Fixed RUNTEST* CXX CXXFLAGS macros and check rule.
-
-Fri Sep 10 07:26:57 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * Makefile.in (TAGS): Use shell wildcards.
-
-Tue Sep 7 18:04:54 1993 Jeffrey Osier (jeffrey@cygnus.com)
-
- * Makefile.in: add TEXINPUTS variable and use it in ld.dvi target
-
-Fri Sep 3 16:46:41 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
-
- * ld.texinfo: re-enable included config file; conditionalize doc
- for -oformat to interact properly with SingleFormat doc config
- var; rename @up/@down to @raisesections/@lowersections.
-
-Wed Aug 25 16:29:56 1993 K. Richard Pixley (rich@sendai.cygnus.com)
-
- * configure.in: recognize m88110.
-
-Tue Aug 24 18:49:40 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- From Peter Hoogenboom <hoogen@shafer.cs.utah.edu>:
- * emultempl/hppaosf.em (ld_hppaosf_emulation): Correct name for PA
- ELF emulation is "elf32-hppa" not "elf-big".
- (hppaosf_before_parse): Remove unneeded processing of environment
- variables.
- * scripttempl/hppaosf.sc: Include .hppa_linker_stubs sections in
- .text segment of output file.
- * emulparams/hppaosf.sh (OUTPUT_FORMAT): Use elf32-hppa.
-
-Tue Aug 24 16:17:00 1993 K. Richard Pixley (rich@sendai.cygnus.com)
-
- * ld.h: define BYTE_SIZE, SHORT_SIZE, and LONG_SIZE which are no
- longer in bfd.h.
-
- * ldlang.c, ld.h: updated copyright.
-
-Tue Aug 17 15:22:03 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldlang.c (open_output, lang_check): Check return value of
- bfd_set_arch_mach.
-
-Tue Aug 17 07:02:19 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
-
- * scripttempl/h8500.sc: Start all sections in a different segment.
- * scripttempl/z8ksim.sc: Handle constructors
-
-Thu Aug 12 16:05:37 1993 Jeffrey Wheat (cassidy@cygnus.com)
-
- * Makefile.in: revert earlier changes back to execute runtest
- with make check. cdtest and bootstrap now function as they
- did within the Makefile.
-
-Thu Aug 12 10:20:05 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * Makefile.in: Update dependencies.
-
- * configure.in: Set EMULATION_OFILES in Makefile based on
- --with-targets option.
-
-Thu Aug 12 08:52:29 1993 Jeffrey Wheat (cassidy@cygnus.com)
-
- * Makefile.in: check targets reimplemented to old way.
-
-Wed Aug 11 08:26:11 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * config/i386v.mh, config/irix4.mh: Use gcc
- -print-libgcc-file-name rather than $(libdir)/libgcc.a.
- * config/i386sco.mh: New file; copy of i386v.mh to correspond to
- bfd/configure.host change.
-
-Mon Aug 9 14:25:35 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * scripttempl/elf.sc: Handle .line and .debug* sections.
-
- * ldlex.l: Use bfd_scan_vma, not strtoul.
-
-Fri Aug 6 08:57:39 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldexp.c, ldfile.c, ldlang.c, lexsup.c, ldmain.c, ldemul.c:
- Remove inital caps in some error messages, change "can't" to
- "cannot", add missing colons.
- * ldmisc.c (vfinfo): Print "%%" as a single %.
- For '%' followed by unrecognized character, print them both
- verbatim instead of expecting a char * arg.
- For '%C', don't put the function name in parens.
-
- * ldexp.c (invalid): Pass "%%", not "% ".
-
-Fri Aug 6 14:31:22 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * scripttempl/mips.sc: Always define _ftext, _fdata, _fbss.
- (BSS_VAR): Removed; now always define _fbss.
- * emulparams/mipsidt.sh, emulparams/mipsidtl.sh (BSS_VAR):
- Removed.
-
-Thu Aug 5 15:55:19 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
-
- * configure.in: z8k-coff is the same as z8k-sim
-
-Wed Aug 4 21:00:18 1993 Jeffrey Wheat (cassidy@cygnus.com)
-
- * testsuite/lib/ld.exp: new file
- * testsuite/config/unix-ld.exp: new file
- * testsuite/ld.bootstrap/bootstrap.exp: new file
- * Makefile.in: add dejagnu support for make check
-
-Wed Aug 4 17:52:32 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldlex.l (comment): Add missing newline in message.
- * ldindr.c (add_indirect): Ditto.
- * ldexp.c (exp_fold_tree): Ditto.
-
-Tue Aug 3 10:57:41 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldgram.y, ldlex.l, mri.c, ldwrite.c: Change multiple commons
- into externs.
-
- * ldmisc.c (multiple_warn): New function.
- * ldmisc.h: Declare it.
- * ldmain.c (enter_global_ref): Call it.
- * ld.h (ld_config_type): Add warn_common.
- * ldlex.l, ldgram.y: Set it with -warn-common option.
- * ldver.c (help): Document it.
-
-Mon Aug 2 12:04:36 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * scripttempl/elf.sc: Add hooks for .sdata, .sbss, and
- target-specific sections, and for changing data section vma.
-
-Mon Jul 26 14:00:02 1993 Ken Raeburn (raeburn@deneb.cygnus.com)
-
- * ldgram.y (OPTION_Qy, OPTION_Y, OPTION_dn, OPTION_YP): New
- terminals, for Solaris.
- (dirlist_ptr): New static variable.
- (command_line_option): Accept new options.
-
- * ldlex.l: Accept command-line options "-Qy", "-dn", "-Y", and
- "-YP,...".
-
- * config/sun4sol2.mt: Pass emulation name without ".sh".
-
- * emulparams/elf32_sparc.c: Renamed from elf32-sparc.c.
- * config/sun4sol2.mt (em_elf32_sparc.c): Adjusted accordingly.
-
-Fri Jul 23 13:51:09 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * scripttempl/elf.sc: Add support for .init, .fini, .ctors,
- .dtors, .data1, .rodata1 sections, instead of combining them into
- other sections. For `-r', set all section start addresses to
- zero.
-
- * emulparams/elf32-sparc.sh (TEXT_START_ADDR,
- NONPAGED_TEXT_START_ADDR): Value should be 0x10100.
- (MAXPAGESIZE): Renamed from PAGE_SIZE.
-
-Wed Jul 21 14:28:42 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * genscripts.sh: If this is the default emulation, set
- COMPILE_IN.
- * emultempl/*.em: Use it to determine whether to compile in the
- scripts.
-
- * Makefile.in (GENSCRIPTS): Pass the default emulation name to
- genscripts.sh. Pass the current emulation name without ".sh" on
- the end.
- * genscripts.sh: Take an default emulation arg.
- Use the current emulation name as EMULATION_NAME.
- Make default lib path for cross-compiling ':', not null.
- * emulparams/*.sh: Don't set EMULATION_NAME.
- * ldemul.c (ldemul_get_script): Take isfile arg.
- Pass it to emulation's get_script function.
- * ldemul.h: Adjust get_script prototypes.
- * ldfile.c (ldfile_find_command_file): Renamed from find_a_name.
- No longer static.
- * ldfile.h: Declare it.
- * ldgram.y: Accept a script on the command line again,
- for parsing compiled-in scripts.
- * ldmain.c (main): If ld script is a file, parse it as a -T
- option, otherwise parse it directly.
- * emultempl/*.em (*get_script): Return the scripts themselves if
- this is the default emulation; otherwise return their file names.
- * emultempl/m88kbcs.em: New file, to take m88kbcs #ifdef out of
- generic.em.
- * emulparams/m88kbcs.sh: Use it.
-
- * ld.h (ld_config_type::unix_relocate): Remove unused element.
-
-Tue Jul 20 12:01:49 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * Makefile.in (ALL_EMULATIONS): Delete em_i386linux.o (for which
- there's no change log entry yet, tsk tsk) from the list of
- emulations compiled in until Mark gets around to checking in
- emulparams/i386linux.sh.
- (ldemul-list.h): Depend on Makefile, so if EMULATION_OFILES is
- changed, this file gets updated.
-
-Fri Jul 16 14:14:32 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * ldgram.y (OPTION_Lfile): New token.
- (command_line_option): Accept OPTION_L NAME (whitespace after -L).
- * ldlex.l (<COMMAND>): Accept -L without FILENAME.
-
-Fri Jul 16 13:44:26 1993 Doug Evans (dje@canuck.cygnus.com)
-
- * configure.in: h8/300h support needs own .mt file.
- config/coff-h8300h.mt: New file.
-
-Thu Jul 15 12:44:35 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldmain.c: Don't include sys/stat.h; it already got included
- somewhere along the way.
-
-Thu Jul 15 14:43:34 1993 Doug Evans (dje@canuck.cygnus.com)
-
- * Makefile.in: Add h8300h support.
- emulparams/h8300h.sh: New file.
- scripttempl/h8300h.sc: New file.
-
-Thu Jul 15 12:44:35 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldfile.c (ldfile_open_file): In error message, use the name the
- user gave (e.g., "-lc"), rather than the base file name.
-
- * ldexp.c (exp_fold_tree): Don't assign an int to an enum.
-
- * ldmain.[ch]: Remove initial Q_ from function names.
- * ldexp.c, ldindr.c, ldlang.c: Change callers.
-
- * ldfile.c, ldmain.c, ldgram.y: Rename option_v to trace_file_tries.
-
- * ldlang.c (lang_process): Move loading of default script from
- here to main. Add a "/" to start of script name to prevent
- finding it in "." first.
-
- * ldmain.c (set_scripts_dir): Don't look in "." first.
-
- * ldgram.y, ldlang.c, ldsym.c: Remove traces of unused var
- option_longmap.
-
-Thu Jul 15 10:55:59 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in (em_m88kbcs.c): Correct dependency.
- * scripttempl/m88kbcs.sc: It's ARCH, not arch. Removed TARGET
- statement. Changed OUTPUT_FORMAT to use ${OUTPUT_FORMAT}.
- * emulparams/m88kbcs.sh: It's coff-m88kbcs, not m88kbcs.
-
-Wed Jul 14 21:42:53 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldfile.c (ldlang_open_file, ldfile_open_command_file),
- main.c (main): Print the errno string in the error message.
-
-Tue Jul 13 20:00:30 1993 Doug Evans (dje@canuck.cygnus.com)
-
- * configure.in: Accept h8300h for target cpu.
-
- * ldmisc.c (vfinfo): Have demangle remove leading underscore if
- present (demangle is smart enough to know whether to do it or not).
-
-Mon Jul 12 11:45:48 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldmain.c (set_scripts_dir): Check . and <ld bin dir>/../lib for
- ldscripts, as well as <ld bin dir> and SCRIPTDIR.
-
- * ldlang.c (lang_process): Use sizeof instead of magic constant.
-
- * ldmain.c (get_emulation, check_for_scripts_dir,
- set_scripts_dir): New functions.
- (main): Call them.
-
-Mon Jul 12 10:57:03 1993 Ken Raeburn (raeburn@deneb.cygnus.com)
-
- * scripttempl/elf.sc: Include .init, .fini, .rodata sections.
- Create symbol "end" instead of "__end". Comment out some parts
- that may not be needed (yet) for elf.
-
- * configure.in: Accept sparc-elf and sparc-solaris2 configs.
-
-Thu Jul 8 15:33:32 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * Makefile.in (ALL_EMULATIONS): Include $(OTHER_EMULATIONS).
-
- * ldmisc.h (einfo, minfo, info): Don't bother with PARAMS macro
- when no prototype is being supplied.
- (ldmalloc, ldrealloc): Size argument is now size_t.
-
- * ldmisc.c (finfo): New function, accepts FILE* argument.
- (vfinfo, case 'v'): New format character; displays bfd_vma in hex
- without leading zeros.
- (vfinfo, cases 'R' and 'C'): Use finfo(%v) when displaying a
- bfd_vma value, instead of fprintf(%x) which won't hold a long long
- value.
- (concat, buystring): String lengths are size_t.
- (ldmalloc, ldrealloc, xrealloc): Size argument is now size_t.
-
- * ldlang.c (new_statement): Size argument is now size_t. Added
- forward declaration with prototype.
-
-Thu Jul 8 10:53:47 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldgram.y (OPTION_v): Don't turn on verbose output.
-
-Wed Jul 7 17:10:45 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * ldlex.l: Get rid of local typedef for bfd_vma! Get it from
- bfd.h instead.
-
-Wed Jul 7 11:33:12 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in (install): Don't install as $(tooldir)/bin/gld;
- collect2 doesn't look for gld any more anyhow.
-
-Mon Jul 5 14:29:48 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * ldlang.c (lang_relocate_globals): Skip indirect symbols, which
- now have a non NULL srefs_chain.
-
- * config/hp300hpux.mt: Use emulation hp3hpux rather than
- hp300hpux, since the latter does not exist.
-
-Fri Jul 2 18:06:05 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * genscripts.sh: Put the scripts in the ldscripts directory, not
- emulations.
- * configure.in (ldscripts): Make, instead of emulations.
- * Makefile.in (scriptdir): Take off the "ld" part.
- (install, clean, distclean): Use ldscripts, not emulations.
- In tests, don't pass -Lemulations.
- Don't pass tooldir/lib to genscripts.sh.
- * genscripts.sh: Don't take tooldir/lib arg.
- * ldlang.c (lang_process): Add "ldscripts/" to the name of the
- default script file.
-
-Fri Jul 2 17:13:35 1993 Doug Evans (dje@canuck.cygnus.com)
-
- * scripttempl/h8300.sc: Add .tors section for constructor/destructors.
-
-Thu Jul 1 16:38:45 1993 Doug Evans (dje@canuck.cygnus.com)
-
- * config/coff-h8300.mt: EMUL=h8300hms -> h8300.
-
-Wed Jun 30 15:45:55 1993 K. Richard Pixley (rich@sendai.cygnus.com)
-
- * Makefile.in (.y.c): skip default .y.c rules. gnu make can now
- run in parallel without colliding on yacc's static file names.
- Without the stub rule, make will try to start two yacc's
- concurrently which fails because of yacc's static file names.
-
-Tue Jun 29 12:20:36 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * ldmain.c (subfile_wanted_p): Don't dump core if there are no
- symbols.
-
-Mon Jun 28 12:22:11 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * genscripts.sh (LIB_PATH): Only add /usr/local/lib if it's
- different from libdir.
-
- * Makefile.in (scriptdir): Base on tooldir, not datadir.
-
-Sat Jun 26 12:03:57 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldver.c (help): New function.
- * ldver.h: Declare it.
- * ldlex.l, ldgram.y: Recognize new options --help and --version.
-
-Mon Jun 21 20:39:48 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
-
- * Makefile.in (INCLUDES): Don't need ../include any more.
-
-Mon Jun 21 16:38:35 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldlex.l, ldgram.y: Support new -oformat option.
- Remove attempt at supporting script fragments on the command line.
- * ldlang.c (lang_add_output_format): Take new arg, FROM_SCRIPT.
- * mri.c (mri_format), ldgram.y: Change callers.
- * ldlang.h: Change prototype.
-
-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)
-
-Thu Jun 17 14:33:09 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldgram.y: Tweak grammar to make reporting of invalid options work.
-
- * Makefile.in (.cc.o): Restore .SUFFIXES entry for .cc
- and .cc.o rule.
-
-Wed Jun 16 11:45:32 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldfile.c (ldfile_open_command): Don't try .ld extension.
- It wasn't documented (or likely used) and wastes time.
- (try_open): If EXTEN is empty, don't try it.
-
- * ldctor.c, lderror.c, ldexp.c, ldfile.c, ldindr.c, ldlang.c,
- ldlex.l, ldmain.c, ldmisc.c, ldsym.c, ldver.c, ldwarn.c,
- ldwrite.c, lexsup.c, mri.c, relax.c: Replace DEFUN macro calls
- with normal function declarations.
-
- * Move *.em to emultempl/*.em. Move *.sh to emulparams/*.sh.
- Move *.sc-sh to scripttempl/*.sc.
- * {emultempl,emulparams,scripttempl}/README: New files.
- * sh.em, st2000.em, z8ksim.em, h8300hms.em, h8500hms.em: Files
- removed, replaced with generic.em.
- * h8300.sh, h8500.sh, h8300.sc, h8500.sc: Renamed from
- h8[35]00hms.s[ch]. Change their contents to omit the "hms".
-
- * *.em (*_get_script): Return script name instead of script contents.
- * ldlang.c (lang_process): Change caller.
-
- * ldlex.l, ldgram.y: Recognize -m option.
- Check for input files after *all* options in grammar.
- * ldmain.c (main): Check for -m options. Add default directory
- for -m.
-
- * mkscript.c: File removed.
- * genscripts.sh: Take two more parameters, tooldirlib and libdir,
- to add to the default LIB_PATH.
- Look for input files in the new subdirectories.
- Create the scripts in emulations subdirectory and don't filter
- them through mkscript.
- * configure.in: Make the emulations subdirectory.
-
- * Makefile.in: Account for all of the above changes.
- Remove unused .SUFFIXES. Get libgcc.a path with gcc
- -print-libgcc-file-name instead of $(libdir)/libgcc.a.
- Put CFLAGS last in the compilation rules.
- Add -I../bfd to INCLUDES so sysdep.h is found.
-
-Tue Jun 15 23:04:46 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * Makefile.in (INCLUDES): Look in ../include, not ../bfd.
-
- * aout.sc-sh: Add SHLIB_PATH like STACKZERO. Make STACKZERO
- dependent on RELOCATING, not RELOCATION.
- * hp3hpux.sh (SHLIB_PATH): Define it.
-
-Mon Jun 14 19:06:15 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * ldfile.c (try_open): If opening without the extension fails,
- try with the extension even if -v or -V was given.
- had_script is imported (from ldgram.y), not exported.
-
-Mon Jun 14 16:26:10 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com)
-
- * Makefile.in: remove parentdir support, use INSTALL_XFORM
-
-Thu Jun 10 14:00:06 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * ldexp.c (exp_fold_tree): Don't lose the old flag bits.
- * ldgram.y (statement_list_opt): New nonterminal, either empty or
- statement_list.
- (section): Use statement_list_opt, not statement_list.
- * m68kcoff.sc-sh: Gather constructors and destructors and define
- __CTOR_LIST__ and __DTOR_LIST__ appropriately.
- * sa29200.sc-sh: Gather constructors and destructors and define
- ___CTOR_LIST__ and ___DTOR_LIST__ appropriately.
-
-Mon Jun 7 12:53:28 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.
-
-Fri Jun 4 16:18:24 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Makefile.in: remove install:all and install-info:info
- dependencies (these cause some spurious rebuilds at 'make install'
- time)
-
-Fri Jun 4 08:50:14 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * configure.in (mips-idt-ecoffl*): New target; use mips-idtl.
- (mips-idt-ecoff*): Added trailing '*'.
- * config/mips-idtl.mt: New file; use EMUL of mipsidtl.
- * mipsidtl.sh: New file; like mipsidt.sh, but little endian.
- * Makefile.in (ALL_EMULATIONS): Added em_mipsidtl.o.
-
- * config/sun3.mh (HOSTING_LIBS, HOSTING_EMU): Removed obsolete and
- incorrect definitions.
-
-Tue Jun 1 14:56:10 1993 Per Bothner (bothner@rtl.cygnus.com)
-
- * ldsym.c (write_file_locals): Write BSF_CONSTRUCTOR
- symbols, unless stripping.
-
-Tue May 25 15:34:25 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in: configure looks for ####, so remove lines with many
- '#' characters.
- * config/irix4.mh, config/i386v.mh: New files; set HOSTING_CRT0
- and HOSTING_LIBS correctly so that ``make check'' will work.
-
-Thu May 20 13:56:16 1993 Per Bothner (bothner@deneb.cygnus.com)
-
- * mips.sc-sh: Define _etext, _edata, and _end, in addition
- to etext, edata, and end. Needed for IRIX 4.0.5F.
- Patch from mwp@iconix.oz.au (Michael Paddon).
-
- * Version 2.2.1 released.
-
-Thu May 20 11:42:06 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * mipsbsd.sc-sh: Renamed from aout-mipsbsd.sc-sh.
- * mipsbsd.sh (EMULATION_NAME): Use new file name.
-
-Tue May 18 17:10:24 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * Makefile.in (LDDISTSTUFF): Remove ld.mm since we can't build it
- properly right now.
-
- * Version 2.2 released.
-
-Mon May 17 15:37:28 1993 Ken Raeburn (raeburn@deneb.cygnus.com)
-
- * ldver.c (ldversion): Bump version number to 2.2.
-
-Mon May 17 12:44:31 1993 Per Bothner (bothner@cygnus.com)
-
- * NEWS: New file.
-
-Fri May 14 11:26:24 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips.sc-sh: Don't define BSS_VAR unless relocating.
-
-Wed May 12 13:33:29 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in (mkscript.o, mkscript): Build mkscript via
- mkscript.o, rather than directly from mkscript.c.
-
-Tue May 4 21:58:56 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * configure.in: Look for ${target_makefile_frag} relative to
- ${srcdir}, not relative to build directory.
-
- * hppaosf.em, hppaosf.sc-sh, hppaosf.sh: New files.
- * configure.in: Recognize hppa*-hp-osf.
- * Makefile.in (ALL_EMULATIONS): Include hppaosf emulation.
- (em_hppaosf.c): Build it.
- * config/hppaosf.mh, hppaosf.mt: New files.
-
- * ld.h (ALIGN_N): Renamed from ALIGN, because that conflicted with
- some system header files. All uses changed.
-
- * configure.in: Recognize i386-aix configurations as i386-coff
- targets.
-
- * configure.in: Recognize m68*-*-hpux.
- * aout.sc-sh: If STACKZERO and RELOCATING are both defined, output
- the value of STACKZERO.
- * Makefile.in (ALL_EMULATIONS): Include hp300-hpux emulation.
- (em_hp3hpux.c): Build it.
- * hp3hpux.sh, config/hp300hpux.mt: New files.
-
-Tue May 4 12:37:35 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips.sc-sh: Put constructors in the .data section.
- * Makefile.in (cdtest): Added dependency on ld.new.
-
-Mon May 3 19:43:39 1993 Per Bothner (bothner@cygnus.com)
-
- * Makefile.in: Change definition of $(tooldir) to match FSF.
- * vax.sh, config/vax.mt, configure.in, Makefile.in:
- Support VAX Ultrix and BSD.
-
-Mon Apr 26 18:35:47 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * sh.em, sh.sh, sh.sc-sh: New files supporting Hitachi SH.
-
-Wed Apr 14 21:01:51 1993 John Gilmore (gnu@cygnus.com)
-
- * ldlang.h (struct memory_region): Change `length' and
- `old_length' fields to bfd_size_type. Eliminate use of bfd_offset.
- * ldlang.c, mri.c: Corresponding changes, plus lint.
-
-Thu Apr 8 22:08:18 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * configure.in: For all i386 targets, accept i486 as well.
-
-Mon Apr 5 17:33:39 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * ldlang.c (wild_doit): Preserve all flags for a
- SEC_SHARED_LIBRARY section.
- (size_input_section): Consider any SEC_HAS_CONTENTS section when
- computing largest_section.
-
-Fri Apr 2 14:33:52 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * ldlang.c (lang_output_section_statement_lookup): Initialize all
- fields of newly created structure.
-
-Wed Mar 31 18:19:15 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * ldmain.c (g_switch_value): New variable.
- * ldgram.y (OPTION_G, OPTION_Gval): New tokens.
- (command_line_option): Accept -G and set g_switch_value.
- * ldlex.l (COMMAND): Accept -G.
- * ldlang.c (open_output): Call bfd_set_gp_size on new BFD.
-
-Tue Mar 30 09:40:25 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- Support for linking and loading at different places:
-
- * ldlex.l: Add "AT" keyword.
- * ldgram.y: Cleanup, and parse AT.
- * ldlang.c (print_output_section_statement): Print output address
- of section in map. (lang_size_sections): Fill sections' lma with
- load address.
- * ldlang.h (lang_output_section_statement_type): Add load_base
- information.
-
- * ldindr.c (add_indirect): Keep more information in the alias
- symbol chain.
- * ldlang.c (wild_doit): Don't inherit NEVER_LOAD section
- attribute from an input section.
- * ldmain.c (Q_enter_file_symbols): Common section is NEVER_LOAD by
- default. (Q_enter_file_symbos): Indirect symbols now are known by
- their section, not a special symbol flag.
- * ldsym.c (write_file_locals): Indirect symbols aren't local.
- (write_file_globals): Write the mapping for an indirect symbol.
- * relax.c (build_it): When forced to write a NEVER_LOAD section,
- fill it with zeros.
-
-Tue Mar 23 13:24:10 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com)
-
- * ld.texinfo: changes for q1
-
-Tue Mar 23 00:13:29 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Makefile.in: add dvi target, define & use TEXI2DVI, add installcheck
-
-Mon Mar 8 20:30:35 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Makefile.in: rename HOST_CC to CC_FOR_BUILD
-
-Thu Mar 4 12:44:33 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips.sc-sh: Added variables which may be overridden by a
- specific emulation.
- * mipsidt.sh: New file; emulation for IDT MIPS board.
- * Makefile.in (ALL_EMULATIONS): Added em_mipsidt.o.
- (em_mipsidt.c): New target. Uses mipsidt.sh and mips.sc-sh.
- * config/mips-idt.mt: New file; sets EMUL to mipsidt.
- * configure.in (mips-idt-ecoff): New target; uses mips-idt.
-
-Sat Feb 27 00:00:14 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * aout-mipsbsd.sc-sh, mipsbsd.sh: New files from Ralph Campbell,
- ralphc@pyramid.com.
- * i386bsd.sh, config/i386bsd.mt: New files.
- * configure.in, Makefile.in: Added support for mipsbsd and 386bsd.
-
-Thu Feb 25 15:33:10 1993 Per Bothner (bothner@rtl.cygnus.com)
-
- * mri.c: Add extern declaration of strdup.
- * ldsym.c (KEEP macro): Add spaces around '=' for the
- sake of old (e.g. PCC) compilers.
-
-Wed Feb 24 19:49:31 1993 Per Bothner (bothner@rtl.cygnus.com)
-
- * ldver.c: Bump to version 2.1.
-
-Fri Feb 12 08:09:11 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldgram.y: allow section types without address expressions.
- * ldlang.c (lang_relocate_globals): avoid possible hang with
- undefined but unreferenced symbols.
- * relax.c (relax_section): don't complain if the script file isn't
- relaxable but -relax is set
-
-Thu Feb 18 17:58:45 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * configure.in: go32 is the 3rd part of the triple, not the 2nd
-
-Wed Feb 3 09:05:56 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mipsbig.sh: New file. Big endian MIPS emulation.
- * config/mips-big.mt: New file. Use mipsbig emulation.
- * configure.in (mips-sgi-irix*): Use target mips-big.
- * Makefile.in (ALL_EMULATIONS): Added em_mipsbig.o.
- (em_mipsbig.c): New target. Uses mipsbig.sh.
-
-Tue Feb 2 11:32:27 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips.sc-sh: Put .scommon sections into .sbss section.
-
- * ldmain.c (subfile_wanted_p): Preserve section of common symbols,
- rather than always putting them in bfd_com_section.
- * ldlang.c (lang_common): If a common symbol is not in
- bfd_com_section, put in a section of the same name, rather than
- always putting it in section COMMON.
-
-Fri Jan 29 09:57:58 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * ldmain.c (subfile_wanted_p): If we already have a common
- definition of a symbol, don't necessarily pull in an object file
- that provides a non-common definition.
-
- * ldlex.l (COMMAND): Accept -EB and -EL command line arguments,
- returning OPTION_EB and OPTION_EL. gcc passes these to a MIPS
- linker.
- * ldgram.y (OPTION_EB, OPTION_EL): New tokens.
- (command_line_option): Accept and ignore OPTION_EB and OPTION_EL.
-
-Thu Jan 28 15:12:04 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in (install): Remove $(tooldir)/bin/gld before creating
- the link to it.
-
-Tue Jan 26 11:49:50 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * ldmain.c, ldsym.c: Use new bfd_is_com_section macro rather than
- checking for equality to bfd_com_section.
-
-Fri Jan 22 14:22:44 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips.sc-sh: New file. Ultrix, and hopefully other MIPS ECOFF
- targets, linker script.
- * mipslit.sh: New file. Little endian MIPS emulation.
- * config/mips-lit.mt: New file. Use mipslit emulation.
- * configure.in (mips-dec-ultrix*): Use target mips-lit.
- * Makefile.in (ALL_EMULATIONS): Added em_mipslit.o.
- (em_mipslit.c): New target. Uses mipslit.sh.
-
-Thu Jan 14 15:30:27 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in (install): Install ld as both $(tooldir)/bin/ld and
- $(tooldir)/bin/gld, so that gcc can find it with or without
- collect2.
-
-Mon Jan 11 18:50:07 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ldwrite.c: Removed perform_relocation, copy_and_relocate, and
- write_norel. All linking is now done via write_relax. Call
- ldsym_write before calling write_relax.
- * relax.c: Added copyright.
- (write_relax): Renamed from write_relaxnorel. Added relocateable
- argument. seclet_dump renamed to bfd_seclet_link.
- * relax.h: Added copyright.
-
-Mon Jan 11 15:41:56 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldmain.c (decode_library_subfile): Patch from
- hoogen@shafer.cs.utah.edu, don't reread library symbol tables.
-
-Fri Jan 8 18:04:33 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * config/vxworks960.mt renamed to config/i960.mt
-
- * configure.in: sparc-aout emulates a sun4, as does
- sparc*-vxworks, i960-nindy uses gld960 emulation
-
-Fri Jan 8 14:39:07 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- Fix support for NOLOAD, add INCLUDE
- * ldfile.c (ldfile_open_command_file): pass file name to
- lex_push_file.
- * ldlex.l, ldgram.y: tidy up, parse INCLUDE and NOLOAD
- * ldlang.c (wild_doit): make output sections inherit NEVER_LOAD
- attribute.
-
-Thu Jan 7 10:22:19 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Makefile.in, config.h: no more default emulation. Make the lack
- of emulation a compile time error
-
-Wed Jan 6 01:08:37 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * configure.in: recognise all sparclite variants, not just 'sparclite'
-
-Mon Dec 28 11:15:35 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * m68kcoff.sc-sh: define _end as well as end, for consistency with
- aout.sc-sh.
-
- * configure.in: accept *-ericsson-ose for any m68k CPU.
-
- * ldwrite.c (write_rel): don't always set SEC_HAS_CONTENTS flag
- for each output section.
-
-Mon Dec 21 16:06:59 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * ldexp.c, ldlang.c, ldmain.c, ldsym.c, ldwarn.c: Use new
- macro bfd_asymbol_bfd as appropriate.
- * Makefile.in: Un-duplicate ldlex.c dependency.
- * condigure.in: Replace my_host case table by sourcing
- ../bfd/configure.host. Allow std-host as the default.
- * ldmisc.c: Change logic for C++ name demangling: There is
- no initial '_' to remove from stab-derived function names.
-
-Sun Dec 13 16:31:26 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldlang.c (lang_init_script_file): don't attach the output file
- sections to the script file.
-
-Wed Dec 9 08:38:05 1992 Steve Chamberlain (sac@thepub.cygnus.com)
- * ldlang.c (wild): run expansion loop over command line bfd too.
- (lang_ini_script_file): initialize more parts of the command line
- bfd.
- * ldlex.l: fix DEFINED start states.
-
-Mon Dec 7 08:43:41 1992 Steve Chamberlain (sac@thepub.cygnus.com)
- -y support
- * ld.texinfo: new doc.
- * ldgram.y, ldlex.l: understand -y<symbol>
- * ldmain.c (Q_enter_file_symbols): if had -y, lookup symbol and
- print info. (add_ysym): new function.
- * ldsym.h: (ldsym_type): new define SYM_Y.
-
-Sat Nov 21 03:15:27 1992 John Gilmore (gnu@cygnus.com)
-
- * ldctor.h, lderror.h, ldexp.h, ldfile.h, ldindr.h, ldlang.c,
- ldlang.h, ldlex.h, ldmain.h, ldmisc.h, ldsym.h, ldver.h, ldwarn.h,
- ldwrite.h, relax.h: Replace all uses of EXFUN and PROTO ansi-glue
- macros with PARAMS. Recreational cleanup. Update copyrights.
-
-Tue Nov 10 00:23:37 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Makefile.in: pass down the bfd source directory for includes
-
-Thu Nov 5 15:41:55 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * ldlang.c (lang_size_sections): don't change size and address for
- SEC_SHARED_LIBRARY sections rather than for SEC_NEVER_LOAD
- sections.
-
-Thu Nov 5 11:33:57 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * relax.c (build_it): re-enable the processing of data_statements
- in scripts, makes counted contructor lists work again.
-
-Thu Nov 5 05:43:01 1992 John Gilmore (gnu@cygnus.com)
-
- * ldemul.h: Remove uses of SDEF and PROTO macros (use PARAMS).
-
-Tue Oct 20 10:56:06 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * m68kcoff.sc-sh: don't use initial underscores for etext, edata
- and end.
-
-Mon Oct 19 09:45:38 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * Support for i386-sysv.
- configure.in: check for i386-*-sysv* and i386-*-sco*.
- i386coff.sc-sh: rewrote to support SVR3 by default.
- ldctor.c (find_constructors): preserve stat_ptr.
- ldlang.c (wild_doit): initialize vma and size of new output
- section to corresponding input section. This is required for
- shared library support.
- (lang_size_sections): don't modify vma and size of sections which
- are never loaded (for shared libraries).
- ldwrite.c (copy_and_relocate): copy the contents of any section
- which has contents, not just sections which are loaded (for shared
- libraries).
-
-Thu Oct 15 15:20:26 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldlang.c (size_input_section): count the sizes of all sections
- we allocate.
-
-Thu Oct 8 09:05:25 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldmisc.c (demangle,vfinfo): use the new underscore in bfd to
- to demangle symbols better
-
-Tue Oct 6 13:08:54 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * ldlang.c (lang_finish): don't warn if -e start symbol does not
- exist when linking with -r.
-
-Mon Oct 5 14:07:37 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * aout.sc-sh, m68kcoff.sc-sh: set __bss_start to the start of the
- .bss segment.
-
-Mon Oct 5 08:55:14 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldmain.c (linear_library): don't even think about processing
- an object file if it's already been done
-
-Thu Oct 1 23:14:59 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * configure.in: the hp9000/300 config file is now hp300
-
-Wed Sep 30 07:34:09 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * config/z8ksim.mt: new file
-
-Fri Sep 25 13:49:52 1992 Ken Raeburn (raeburn@kyriath.cygnus.com)
-
- * Makefile.in (ldexp.o, ldctor.o, ldlang.o, ldmain.o, ldwrite.o,
- lexsup.o, mri.o, relax.o): Indicate dependence on ldgram.h.
-
- * ld.h (strip_symbols_type): Add value STRIP_SOME.
- * ldgram.y (OPTION_RETAIN_SYMBOLS_FILE): New terminal token.
- * ldlang.c (lang_add_keepsyms_file): New function.
- * ldlex.l: Handle "-retain-symbols-file".
- * ldsym.c (keepsyms_file, kept_syms): New vars.
- (process_keepsyms): New functihon; reads file, marks symbols for
- saving.
- (write_file_locals): File symbols should always be kept.
- (ldsym_write): Warn about "-retain-symbols-file" overriding "-S"
- and "-s". Process retain-symbols file before setting symtab.
- * ldsym.h (SYM_KEEP): New flag for ldsym_type flags.
- (keepsyms_file, kept_syms): Declare them.
-
- * ldmain.c (main): Non-fatal errors should still cause non-zero
- exit status even with -r.
-
-Fri Sep 25 11:08:01 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- Added initial support for the z8k
- * z8ksim.em, z8ksim.sc-sh, z8ksim.sh: new files
- * configure.in, Makefile.in: modified to reflect above
-
- * ldlang.c (lang_check): when linking conflicting architectures,
- make the output file reflect at least one of the bad inputs.
-
-Tue Sep 15 15:35:38 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in (install): if $(tooldir) exists, install ld in
- $(tooldir)/bin.
-
-Fri Sep 11 10:24:22 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * Makefile.in, configure.in: modified to support i386-coff
- * i386coff.sh: new file
-
-Wed Sep 9 11:52:58 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in, m68kcoff.sh, m68kcoff.sc-sh, config/m68k-coff.mt:
- added m68k-coff emulation mode, stolen from a29k emulation.
- Almost certainly wrong, but perhaps better than sun3.
-
-Thu Sep 3 14:19:30 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * Makefile.in, Makefile.dos, generic.em, genscripts.sh,
- gld960.em, h8300hms.em, h8300xray.em, lnk960.em, st2000.em,
- vanilla.em: Rename all (generated) ld__*.c files to em_.c.
- This is one character shorter, and lets people build on
- SVR3 system. (ld__h8300xray.[co] was the killer there;
- h8300xray.sc-sh is also overlong, but seems harmless.)
- Based on a patch from Jonathan Ryshpan <hitachi!amito!jon>.
- * Makefile.in (clean): Fix typo mostclean -> mostlyclean.
- * configure.in: Add host isc.
-
- * ldver.c: Call it version 2.0.
-
-Wed Sep 2 00:21:33 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * ldver.c: Bump to version 0.98.
- * TODO: New file.
-
- * Makefile.in: Added mostlyclean, distclean, realclean rules.
-
-Tue Sep 1 23:42:16 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * ldmisc.c (xrealloc): New (needed by ../libiberty/cplus.dem.c).
- * ldlex.l: Moved comment() to end, since some compilers
- otherwise have problems with input() used before it is defined.
-
-Tue Sep 1 17:45:51 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * configure.in: added Solaris 2 and Irix 4 host support.
-
-Mon Aug 31 19:27:11 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Makefile.in: remove -S flag from the FLEX definition
-
- * configure.in: rewrote, using new style case statement. use
- m68k.mt for m68k-aout systems
-
-Sun Aug 30 21:38:53 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in: map "ld" through program_transform_name when
- installing.
-
-Sun Aug 30 18:12:13 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * cplus-dem.c: Removed. Use the version in libiberty now.
- * ldmisc.c: Use new libiberty version of cplus_demangle().
-
-Thu Aug 27 16:38:42 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * gld960.em (gld960_choose_target): default to little endian, not
- big endian.
-
-Wed Aug 26 17:28:51 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldlang.c (lang_process): don't pass null pointers when
- abs_output_section is what is required.
- * ldwrite.c (ldwrite): use malloc to allocate the largest space
- used, and pass that down.
- * relax.c,relax.h (write_relaxnorel): use the passed malloc area rather
- than alloca.
-
-Mon Aug 24 14:42:06 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * configure.in, config/ose68.mt: renamed OSE to ose.
-
-Thu Aug 20 19:55:22 1992 Ken Raeburn (raeburn@cygnus.com)
-
- * ldsym.c (write_file_locals): Reorder check for common or
- undefined symbols so that it works.
-
-Tue Aug 18 13:41:36 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * configure.in: accept all m68K family members.
-
- * Makefile.in: always create installation directories.
-
-Thu Aug 13 11:49:34 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldlex.l: now parses comment correctly, added ~ to acceptable
- chars in filenames
-
- * ldexp.c (exp_unop): pass down abs_output_section - now can have
- unary -ve constants.
-
- * ldlang.c (lang_finish): warn when an entry symbol supplied on
- the command line can't be found.
-
-Fri Aug 7 12:31:10 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldlang.h: add new field "loadable" to output_section_statement.
- * ldlang.c (lang_output_section_statement_lookup): initilize new
- field. (wild_doit): if new field is not set, then stop output
- section from being loadable.
- (lang_enter_output_section_statement): set the field from the
- NOLOAD keyword
- * ldgram.y: new synax for NOLOAD. Removes a shift/reduce too.
- * h8300hms.sc-sh, h8300hms.em: get -r right.
-
-Thu Aug 6 18:35:21 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * ldint.texinfo: New internals manual (beginnings thereof).
- * PORTING: Removed, merged into ldint.texinfo.
-
-Tue Aug 4 21:12:29 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * cdtest-main.cc, cdtest-func.cc, cdtest-foo.h, cdtest-foo.cc,
- cdtest.exp: A test program (copied from libg++/test-install)
- that tests that constructor and destructors are handled
- corrrectly.
-
-Mon Aug 3 14:58:19 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Makefile.in (install): install from ld.new, renaming during the
- copy, or else the next 'make install' needs to re-link ld.
-
-Mon Jul 20 03:37:06 1992 D. V. Henkel-Wallace (gumby@cygnus.com)
-
- * configure.in: generalise hp recognition (from sef).
-
-Sat Jul 18 14:46:04 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * configure.in: recognize bsd and hpux hppa configurations.
- error messages echo to stderr, not stdout
-
-Fri Jul 17 22:06:11 1992 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * Makefile.dos, gld.1, ld.texinfo, ldemul.c, ldfile.c, ldlang.c,
- ldmisc.c: removed rcsid's.
-
-Tue Jul 14 08:34:34 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldlang.c (lang_map): print changes in sizes due to relaxing
- (size_input_section): maintain the delta information.
- * ldlang.h: add new field to struct to contain delta info.
- * relax.c (relax_section): complain if input not relaxable.
- * ldlex.l : add '_', ',' and '$' to chars which can appear at the
- start of a filename
-
-Mon Jul 13 17:33:00 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldmain.c(main): prevent -r and -relax from being on at the same
- time.
-
-Wed Jul 1 17:51:19 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldmain.c (Q_enter_global_ref), ldindr.c (add_indirect): fix for
- aliasing problems
-
-
-Thu Jun 18 09:38:56 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * h8300hms.em, h8300hms.sc-sh: do the right thing for -r
- * ldexp.c: lint
- * ldlang.c(open_output): set the target arch and machine as soon
- as we can. (lang_size_sections): use new macros for setting vma
- * ldwrite.c: lint
-
-Mon Jun 15 08:47:43 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
-
- * configure.in (my_target): Accept m680?0 for wrs as vxworks68.
- Also deleted an unreachable path to wrs.
-
-Wed May 27 23:24:19 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
-
- * Makefile.in (install): use -d test for $tooldir before
- installing ld there so that $tooldir can be inherited from
- top-level Makefile.
-
-Wed May 27 16:56:48 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * ldlang.c: Two non-substantial changes for the sake of
- the old Portable C Compiler.
-
-Wed May 27 15:15:58 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldgram.y, ldlex.l: parse ABSOLUTE
- * ldexp.c: add support for ABSOLUTE
-
-Wed May 27 13:07:20 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * Makefile.in: Added default definitions for HOSTING_CRT0,
- HOSTING_LIBS, and HOSTING_EMU, based on those in config/*.mh.
- * config/*.mh: Miscellaneous clean-up: Removed definitions
- of YACC (since it is not longer used in the Makefile).
- Remove HOSTING_* definitions that are subsumed by the
- ones added to Makefile.in. Removed most definitions of CC.
- * config/{sparc,news,hp300bsd,decstation}.mh: Removed;
- These are no longer needed.
-
-Fri May 22 13:47:19 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 (ldlex.c): Don't re-direct output, since that
- leaves a bogus output files if it fails.
-
- * config/sparc.mh: Fix HOSTING_LIBS so it has a chance of working.
- * ldlex.c: Fix some unnecessary flex-specific-isms.
-
-Fri May 8 11:49:43 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldgram.y: move spurious semicolon
- * ldexp.h: fix prototype
-
-Thu May 7 17:01:12 1992 Roland H. Pesch (pesch@fowanton.cygnus.com)
-
- * ld.texinfo: references to linker now say "ld" not "gld".
-
-Wed May 6 13:26:19 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- changed calling convention for Q_enter_global_ref
- * ldexp.c, ldlang.c, ldmain.c: reflect this
- * ldver.c: bump version to 1.97.1
- * ldindr.c (add_indirect): when an edict declaring an indirect
- symbol is found, make sure that any ideas about the symbol being
- common are changed if it now known to be defined.
- * ldmain.c (linear_library): complain once if archive isn't
- ranlibbed.
- * ldlang.h, ldlang.c: make room for and initialize the complain
- once field.
-
-Wed May 6 11:07:35 1992 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * Makefile.in: use flex & bison from ../ if they exist.
-
-Tue May 5 17:47:33 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * relax.c (build_it): don't allocate space in the output file for
- stuff if -R flag applys to it.
- * ldfile.c: merge in VMS filename support
- * ldmain.c (main): take out ./ from library path, and close file
- before unlinking. Make multiple defs of a symbol create an
- unexecable file.
- * ldmisc.c: fatal errosrs delete output file
-
-Tue May 5 14:05:05 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * ldver.c: Increase version number to 1.97, for consistency
- with ../binutils.
-
-Tue May 5 12:12:24 1992 K. Richard Pixley (rich@cygnus.com)
-
- * Makefile.in: FLEX -> LEX.
-
- * ld.texinfo: {} -> @{@}.
-
-Mon May 4 17:52:41 1992 Roland H. Pesch (pesch@fowanton.cygnus.com)
-
- * ld.texinfo: describe alternate, MRI-compatible linker scripts
- (and associated change in -c option, now used for these scripts)
-
-Mon May 4 16:10:10 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldver.c: Bumped version to 1.96 - new release, resync with the
- bfd too #.
- * ldexp.c, ldlang.c: now build memory shape tree in obstacks
- rather than with raw malloc, makes it easier to track where memory
- is going.
- * ldsym.h, ldsym.c: create obstack for all global symbols too.
- * ldwrite.c (ldwrite): moved malloc so only used when needed.
- * sa29200-sc.sh: added support for .lit, data1 and data2 sections.
-
-
-Fri May 1 18:17:52 1992 K. Richard Pixley (rich@cygnus.com)
-
- * config/sparc.mh: use ../gcc/libgcc.a on check if it exists.
-
- * Makefile.in: use bootstrap for check.
-
-Fri May 1 13:03:41 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldgram.y, ldlex.c, mri.c: added more compatible words; BASE, ALIAS and
- PUBLIC.
- * Makefile.in: now use flex, not lex
- * ldlex.l, ldlang.c, ldctor.c: lint
-
-Wed Apr 22 12:48:42 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldlex.l: added CMDFILENAMECHAR state so that you can lex
- different sorts of filenames on the command line than in a script.
-
-Mon Apr 20 22:37:04 1992 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * Makefile.in: rework CFLAGS so that they can be passed on the
- make command line. Remove MINUS_G. Default CFLAGS to -g.
-
-Fri Apr 17 08:57:17 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * relax.c: added handling for new "padding" seclet type, used to
- fill out gaps between section.
- * ldgram.y, ldlex.l: now -defsym on the command line is done
- properly.
-
-Wed Apr 15 21:20:07 1992 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * Makefile.in: the tooldir copy of ld goes directly in tooldir.
-
-Wed Apr 15 16:09:33 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * mri.c, ldgram.y, ldlex.l: added support for minimal strange link
- scripts.
-
-Thu Apr 9 05:52:02 1992 Ken Raeburn (Raeburn@Cygnus.COM)
-
- * Makefile.in (install): Install second copy in $(tooldir)/bin
- without $(program_prefix), since that's what gcc expects.
-
-Sat Apr 4 17:44:06 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldlex.l, ldgram.y, ldlex.h: Rewrote lexer. Now it's much nicer.
- * h8300*: fix bit rot and add support for h8300xray target
- * go32.sh: target emulation for go32.
-
-Mon Mar 16 14:53:29 1992 Steve Chamberlain (sac@rtl.cygnus.com)
-
- * gld960.em, i960.sc-sh. Fix i960 bit rot
-
-Fri Mar 13 19:47:22 1992 K. Richard Pixley (rich@cygnus.com)
-
- * Makefile.in: install man page.
-
-Fri Mar 13 08:23:59 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * config/mt-<foo> renamed to <foo>.mt
- * config/mh-<foo> renamed to <foo>.mt
- * configure.in changed to reflect this
- * genscripts.sh now make .xbn files rather than .xN files
-
-Sat Mar 7 03:40:40 1992 K. Richard Pixley (rich@cygnus.com)
-
- * ldver.h: fix decl of ldversion.
-
-Fri Mar 6 22:00:35 1992 K. Richard Pixley (rich@cygnus.com)
-
- * Makefile.in: added check target.
-
-Fri Mar 6 06:59:04 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldmain.c (Q_enter_file_symbols): now aliases work again
-
-Thu Mar 5 21:39:29 1992 K. Richard Pixley (rich@cygnus.com)
-
- * Makefile.in: added clean-info target.
-
-Thu Mar 5 16:55:56 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * ldexp.c (exp_print_tree): don't try and follow null pointers
- around.
- * ldgram.y: remove 11 shift reduce errors
-
-Tue Mar 3 15:46:39 1992 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * Makefile.in: added tooldir and program_prefix.
-
-Fri Feb 28 08:17:45 1992 Steve Chamberlain (sac at thepub.cygnus.com)
-
- * ldlang.c (size_input_section): don't move absolute sections
- around!
-
-
-Thu Feb 27 09:20:41 1992 Steve Chamberlain (sac at thepub.cygnus.com)
-
- * cplus-dem.c: yet another copy of this - maybe it should go into
- libiberty ?
- * ldgram.y: now -V and -v have different actions
- * ldver.c: if -V, prints list of emulations compiled in
- * ldmisc.c: support for cplus demangling
-
-
-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.
-
-Thu Feb 20 17:43:46 1992 Per Bothner (bothner at cygnus.com)
-
- * Makefile.in: Change mkscript rule into one for ./mkscript
- (for the sake of makes that don't realize they're the same).
- * PORTING: Add more details.
- * genscripts.sh: Add more tailorability of DATA_ALIGNMENT.
-
-Mon Feb 17 12:04:36 1992 Per Bothner (bothner at cygnus.com)
-
- * Makefile.in, and new files hp300bsd.sh, config/mh-hp300bsd,
- config/mt-hp300bsd: New port to hp300 running BSD.
-
-Sat Feb 15 13:59:54 1992 Per Bothner (bothner at cygnus.com)
-
- Major rewrite of how ld is configured. The major idea
- is to use shell scripts to generate everything.
- * generic.em replaces ldtemplate.
- * Other *.em files replace various *.c files.
- A *.em file is a shell script that generates the corresponding
- ld__*.c file that implements an emulation. This is usually
- a straight 'cat' of a here-document, possibly with substitutions.
- * Script files (*.sc) are places by *.sc-sh scripts.
- Again, these are simple shell scripts that 'cat'
- here-documents, usually with some substitutions.
- The output a *.sc-sh is a script file.
- * Each emulation is defined by a short shell script with
- extension *.sh that specifies the emulation-specific
- parameters (such as the name of the *.sh-sc and *.em
- files to use).
- * genscript.sh is the master shell script used to generate
- an emulation. It is passed various argument, including
- the name a the emulation-speciic *.sh file that it
- "sources" to set variables to emulation-specifc parameters.
- * config/mt-foo: Changed EMUL=GLDFOO_EMULATION_NAME
- to EMUL=foo. (The GLDFOO_EMULATION_NAMEs have bee removed.)
- * config/mh-foo: Rename LDEMULATION names as appropriate
- (usually 'gldfoo' -> plain 'foo').
- * ldwrite.c: Fixed a typo in a comment.
- * Makefile.in: Major changes. Removed some the sed
- magic to converts scripts, since that is now handled
- by genscripts.sh and the *.sc-sh scipt generators.
- * config.h: Remove a bunch of macros defining emulations
- and targets. This becomes one less file to edit when
- adding emulations or targets.
- * ldemul.h (struct ld_emulation_xfer_struct): Add
- emulation_name and target_name fields.
- * ldemul.c, ldemul.h: Define some default functions used
- by most emulations (and remove from the *.em scripts).
- * ldemul.c (ldemul_choose_target): Search the new
- ld_emulations array using a loop (instead of a hardwired
- nested if statement).
- Define the ld_emulation from the automatically-geenrated
- ldemul-list.h. This means you no longer have to edit ldemul.c
- to add a new emulation.
- * ldmain.c: Replace {GLD,LNK}960_EMULATION_NAME by
- their expansions, since the former no longer exist.
- * PORTING: A very rough first draft of a porting guide.
-
- * ldgram.y, ldlex.l, lexsup.c: Changes to allow an assignment
- to be terminated by a new-line (instead of requiring a semicolon).
-
-Mon Feb 10 16:21:02 1992 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * ldexp.c, ldlang.c: added new idea "abs_output_section", removes
- tests for NULL pointers all over the place.
- * ldlang.c (lang_process): remember to relocate global symbols
- *after* relaxing has done it stuff.
-
-Thu Feb 6 11:40:15 1992 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * config/mt-coff-h8300: use EMUL like everything else
- * ldlang.c: (print_padding_statement): print the right address.
- * Makefile.in, config.h, ldemul.c: renamed h8300hds to h8300hms
-
-
-Tue Feb 4 15:28:01 1992 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * ldlex.l: Put pack -noinhibit-exec and -sort-common
- * ldlang.c (print_data_statement): print the right address.
-
-Thu Jan 30 17:51:53 1992 Per Bothner (bothner at cygnus.com)
-
- * Makefile.in: The rule for testing ld by re-linking itself
- via an intermediate -r link was moved to the ld1 rule
- instead of the ld2 rule. This allows ld2 and ld3 to be identical,
- which allows the bootstrap rule to work.
- * ldctor.c (find_constructors): Don't create a constructor
- list if it is already defined (as would happen if ld is
- invoked by collect).
-
-Wed Jan 29 08:35:39 1992 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * config/mh-sparc.h: now uses libgcc.a
- * ldmain.c: quit using exit
- * *sc: use *(COMMON) rather than [COMMON]
- * ldlex.l, lexsup.c: much thinking moved from .l and put into .c,
- to allow preprocessing of .l file.
- * Makefile.in: New ldlex.l mangling
- * ldexp.c (fold_binary): perform expressions with % and / in
- integer.
- * ldfile.c (open_a): open archives on VMS in a special way
-
-
-Tue Jan 28 10:18:16 1992 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * ldgram.y: map -M behave in the same way as -Map (sets file name
- to be "-".
- * ldsym.c, ldlang.c: remember that size of a section is dependent on
- whether or not relaxing has been done.
- * ldmain.c: don't open a map file if it doesn't have a name
- * relax.c: all the brains have moved into bfd.
- * ldwrite.c: ammend comment
-
-Fri Jan 24 14:23:46 1992 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * Makefile.in: added relax, also made three stage go through a
- partial link stage.
- * relax.c : added
- * config.h: if GNU960 defined, then default emulation mode is
- GLD960
- * ldexp.h, ldexp.c: map to file hooks
- * ldlang.c: map to file hooks
- * ldgram.y: added -Map -relax
- * ldlex.l: added -relax, -Map
- * ldmain.c: open map file
- * ldmisc.c: support for map file
- * ldwrite.c: new relax magic
-
-Thu Dec 19 18:49:51 1991 John Gilmore (gnu at cygnus.com)
-
- * Makefile.in, config/tm-*.h: Clean up make output, only
- pass DEFAULT_EMULATION to ldmain.c.
-
-Wed Dec 18 15:02:47 1991 Per Bothner (bothner at cygnus.com)
-
- * ldver.c: Bump to version 1.94.
-
-Tue Dec 10 04:07:23 1991 K. Richard Pixley (rich at rtl.cygnus.com)
-
- * Makefile.in: infodir belongs in datadir.
-
-Mon Dec 9 16:26:43 1991 Per Bothner (bothner at cygnus.com)
-
- * Makefile.in: Pass -y to bison. (Again;
- accidentally deleted by Rich.)
- * news.sc, ldgld68k.sc: Define __end as well as _end.
-
-Sat Dec 7 17:19:26 1991 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * ldindr.h: added to contain prototypes of ldindr.c
- * ldfile.c: include ctype.h
- * ldmain.c: include the requried prototype headers
- * ldwrite.c: get_reloc_upper_bound has been renamed
- bfd_get_reloc_upper_bound
-
-Fri Dec 6 23:29:26 1991 K. Richard Pixley (rich at rtl.cygnus.com)
-
- * Makefile.in: punt "fundamental" mode because it breaks my emacs
- macros. install using INSTALL_PROGRAM and INSTALL_DATA. remove
- spaces following hyphens, bsd make can't cope. added
- standards.text support and made it look like all the other
- makefiles.
-
- * configure.in: configure now runs entirely in objdir so make file
- existence checks against ${srcdir}. Mark this directory as
- target dependent.
-
-Thu Dec 5 22:46:16 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 23:36:55 1991 Per Bothner (bothner at cygnus.com)
-
- * ldver.c: Bumped version to 1.93.
- * Makefile.in: Pass -y to bison.
-
-Mon Nov 25 18:28:40 1991 Steve Chamberlain (sac at cygnus.com)
-
- * config.h: h8 is now coff, not ieee
- * h8300hds.sc: reflect the same
-
-Thu Nov 14 19:55:09 1991 Per Bothner (bothner at cygnus.com)
-
- * ldver.c (ldversion()): Update to 1.92.
- * ldctor.c: There are two places constructor sets
- can be defined. One of them checked for an existing
- duplicate, the other didn't. Unfortunately, the latter
- was called after the former ...
- So, factor out code for inserting a new element into
- constructor_name_list (after checking for a duplicate)
- into a new function add_constructor_name, and call
- it from both aforementioned places (ldlang_add_constructor
- and ldlang_check_for_constructors).
-
-Wed Nov 13 15:17:43 1991 Per Bothner (bothner at cygnus.com)
-
- * Makefile.in: Rename .c files generated from ldtemplate
- to have names starting with ld__. This helps 'make clean'.
-
-Tue Nov 12 18:36:50 1991 Steve Chamberlain (sac at cygnus.com)
-
- * Makefile.in: Take out the version number for install
- * m88kbcs.sc: put in contructor blocks.
-
-Mon Nov 11 18:47:33 1991 Per Bothner (bothner at cygnus.com)
+ * Makefile.in: Regenerate.
- * ldmisc.c, ldmisc.h: Re-write info() to take a filename
- parameter, a format, and an arg pointer, and rename it to
- vfinfo(). Write info() in terms of new vfinfo().
- New einfo() is the same as info(), except it writes to stderr.
- * ldemul.c, ldexp.c, ldlang.c, ldlnk960.c, ldmain.c, ldwrite.c,
- ldmisc.c: Replace "error" calls to info() by new einfo().
+2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
-Mon Nov 11 09:57:32 1991 Steve Chamberlain (steve at cygnus.com)
+ * ldlang.c (print_input_section, print_data_statement,
+ print_reloc_statement, print_padding_statement, insert_pad,
+ size_input_section, lang_check_section_addresses,
+ lang_size_sections, lang_do_assignments, lang_set_startof,
+ lang_one_common): Change `opb' to unsigned.
+ (lang_do_assignments): Also change `size' to unsigned.
- * ldlex.l ldgram.y: made -V option do same as -v
- * Makefile.in: Added $(MINUS_G) flag so debugging can be
- turned off
+2000-02-16 Richard Henderson <rth@cygnus.com>
-Sun Nov 3 16:37:37 1991 Steve Chamberlain (steve at cygnus.com)
- i386 aout changes from Bob Kukura
- * Makefile.in, config.h: added i386aout support
- * configure.in: fixed /h-{myhost} typo
- * ldgram.y: -MM now gives more boring map.
- * ldlang.c: now does D_PAGED flag the right way.
- * ldsym.c: -MM flags does the right thing.
+ * scripttempl/elf.sc: Place OTHER_PLT_RELOC_SECTION.
-Sun Nov 3 15:00:03 1991 Per Bothner (bothner at cygnus.com)
+2000-02-16 Timothy Wall <twall@cygnus.com>
- * configure.in: Fixed typo. Also, a fix for hp300bsd.
- * ldlang.c (init_os): Compensate for BFD change,
- where bfd_make_section now returns NULL for a duplicate
- section request, instead of the old section.
+ * mri.c (mri_draw_tree): Add default LMA region argument to call
+ to lang_leave_output_section_statement.
+ * ldlang.h: Update prototypes with LMA region arguments.
+ * ldlang.c (lang_size_sections): Encapsulate region bounds
+ checking in os_check_region call.
+ (os_check_region): New function.
+ (lang_output_section_statement_lookup): Initialize lma_region.
+ (lang_leave_output_section_statement): Add LMA region argument.
+ (lang_leave_overlay): Ditto.
+ * ldgram.y: Handle LMA region syntax.
+ * ld.texinfo (Output Section Description): Describe LMA region usage.
+ * emultempl/armelf.em (gld$place_orphan): Add default value for
+ lma region in call to lang_leave_output_section_statement.
+ * emultempl/elf32.em (gld$place_orphan): Add default value for
+ lma region in call to lang_leave_output_section_statement.
+ * emultempl/pe.em (gld$place_orphan): Add default value for
+ lma region in call to lang_leave_output_section_statement.
-Thu Oct 17 15:27:13 1991 Per Bothner (bothner at cygnus.com)
- * ldver.c: Bump to version 1.91 (consistent with binutils).
+2000-02-04 Timothy Wall <twall@redhat.com>
-Wed Oct 16 12:27:08 1991 Per Bothner (bothner at cygnus.com)
+ * ldlang.c (lang_check_section_addresses): Use bytes instead of
+ octets when calculating section end addresses.
- * Makefile.in, config.h, ld.h, ldemul.c, ldexp.c, ldexp.h,
- ldgram.y, ldlex.l, ldlnk960.c, ldmain.c, ldmisc.c, ldmisc.h,
- ldsym.c, ldsym.h, ldtemplate, ldvanilla.c, ldver.c, ldver.h,
- ldwarn.c, ldwarn.h, ldwrite.c, ldwrite.h, mkscript.c:
- Add or update copyright notices.
+2000-02-04 Timothy Wall <twall@redhat.com>
-Mon Oct 14 23:55:27 1991 Per Bothner (bothner at cygnus.com)
+ * ldlang.c (lang_size_sections): Fix typo in ALIGN_N invocation.
- * README: New file.
- * Makefile.in: Changed installation directory name scheme
- to be consistent with gcc. Also changed 'install'.
+2000-02-03 Timothy Wall <twall@redhat.com>
-Mon Oct 14 17:30:02 1991 Roland H. Pesch (pesch at cygnus.com)
+ * ld/ldexp.c (fold_name): Make SIZEOF operator return byte count, not
+ octet count.
+ * ld/ldlang.c (print_input_section, print_data_statement,
+ print_reloc_statement, print_padding_statement): Print target
+ address values and section sizes as bytes, not octets.
+ (insert_pad) Calculate padding size in octets, and adjust "dot"
+ by bytes.
+ (size_input_section) Always adjust "dot" by bytes, not octets.
+ (lang_check_section_addresses, lang_do_assignments) Adjust
+ "dot" by bytes, not octets. Use the larger of the directive size
+ or octets_per_byte for the number of octets actually allocated in
+ the output section.
+ (lang_set_startof) Make sure STARTOF returns a target address.
+ (lang_one_common) Record size changes in octets.
+ (lang_abs_symbol_at_end_of) Section end symbol's value is
+ recorded in target bytes.
+ * ld.texinfo: Updated description of BYTE, SHORT, LONG, etc.
+ to be clear about behavior when an octet is smaller than one byte.
- * Makefile.in: new targets ld.mm, ld.me
+2000-01-27 Alan Modra <alan@spri.levels.unisa.edu.au>
-Mon Oct 14 17:27:24 1991 Per Bothner (bothner at cygnus.com)
+ * ldcref.c (output_cref): Don't pass message strings to printf
+ as format arg.
+ Update copyright.
- * Makefile.in, ldtemplate: Need to use separate scripts
- for -n and -N options. Yet more complication.
+ * ldmisc.c (vfinfo): Same here.
+ Update copyright.
-Fri Oct 11 22:40:46 1991 John Gilmore (gnu at cygnus.com)
+2000-01-23 Alan Modra <alan@spri.levels.unisa.edu.au>
- * Makefile.in: Avoid using $< in explicit Make rules (it doesn't
- work). Add some lines to avoid Sun Make VPATH bugs.
+ * emultempl/{armcoff.em,armelf.em,armelf_oabi.em,beos.em,
+ generic.em,gld960.em,gld960c.em,hppaelf.em,linux.em,lnk960.em,
+ mipsecoff.em,sunos.em,vanilla.em} (ld_emulation_xfer_struct):
+ Add missing NULL initialisers, and comments.
-Fri Oct 11 16:42:22 1991 Per Bothner (bothner at cygnus.com)
+ * testsuite/ld-srec/sr3.cc (__rethrow): New.
- * news.sc: Add alignment for data segment.
- * ldtemplate: Add (yet another) script to get for -n or -N
- options. (These need different alignment than ZMAGIC files.)
- * Makefile.in: Add stuff for new foo.xn scripts.
- These are generated by replacing "ALIGN(0x...00)" by ".".
+2000-01-21 Nick Clifton <nickc@cygnus.com>
-Fri Oct 11 15:43:04 1991 Roland H. Pesch (pesch at cygnus.com)
+ * ldlang.c (lang_size_sections): Fix typo in comment.
- * Makefile.in: new targets ld.ms, ld-index.ms
- ld.texinfo: remove tabs, other cleanups for texi2roff
+2000-01-18 H.J. Lu <hjl@gnu.org>
-Fri Oct 11 13:51:54 1991 Per Bothner (bothner at cygnus.com)
+ * ldlang.c (lang_size_sections): Also update the current
+ address of a region if the SEC_NEVER_LOAD bit is not set.
- * ldmain.c (main): Make config.magic_demand_paged be true
- by default. Don't the WP_TEXT and D_PAGED flags of
- output_bfd here; it's too late, so set it when output_bfd
- is created (in ldlang.c). Also fix setting of EXEC_P flag
- * ldlang.c (ldlang_open_output): Set output_bfd->flags here.
- * ldlang.c: Remove some duplicate extern declarations.
- * ldgram.y: Fixes to -N and -n options.
- * Makefile.in: Recognize upper case letters in sed script
- to remove assignments from script files.
- * ldtemplate: Don't assukme that -N or -n options
- imply use of -r script.
- * mkscript.c: Tweaking to correctly handle \n and \\ in input.
+2000-01-10 Philip Blundell <pb@futuretv.com>
-Fri Oct 11 10:29:27 1991 Steve Chamberlain (steve at cygnus.com)
+ * configure.tgt (arm*-*-conix*): New target.
- * ldtemplate: include bfd.h before sysdep.h.
+2000-01-07 Nick Clifton <nickc@cygnus.com>
-Fri Oct 11 04:24:45 1991 John Gilmore (gnu at cygnus.com)
+ * ld.texinfo (Options): Remind users to preceed linker command
+ line switches with -Wl, (or whatever is appropriate) if it is
+ being invoked by a comnpiler driver program.
+ Fix description of the behaviour of the -n command line switch.
- Restructure configuration scheme for bfd, binutils, ld.
+Wed Jan 5 08:02:12 2000 Catherine Moore <clm@cygnus.com>
- * include/sys/h-*.h: Move to bfd/hosts/h-*.h.
- * 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.
- * config/: Rename some config files to match up h-*.h names.
- Remove all the HOST_SYS definitions from the config files.
+ * ld.h (wildcard_spec): Change exclude_name to exclude_name_list.
+ (name_list): New.
+ * ld.texinfo (EXCLUDE_FILE): Update documentation.
+ * ldgram.y (wildcard_spec): Support a list of excluded_files.
+ (exclude_name_list): New.
+ ldlang.c (walk_wild_section): Support list of excluded files.
+ (print_wild_statement): Likewise.
+ (lang_add_wild): Likewise.
+ * ldlang.h (lang_wild_statement_type): Likewise.
+ * scripttempl/elf.sc (OTHER_EXCLUDE_FILES): Support.
-Tue Oct 8 16:00:57 1991 Per Bothner (bothner at cygnus.com)
+2000-01-04 Mumit Khan <khan@xraylith.wisc.edu>
- * ldexp.h, ldlang.h: Change enum boolean -> enum bfd_boolean.
- * ldtemplate: Remove ldfile_add_library_path calls;
- just use the SEARCH_DIR commands in the script files.
- * Makefile.in: Add LIB_PATH macro, which if set is used to replace
- the SEARCH_DIR commands in the scripts (using ugly sed magic).
- This is primarily intended for cross-linking, where you would
- place libaries in a different place than native libraries.
- Also, emulations made from ldtemplate now use $(srcdir).
- * ldglda29k.sc: Change SEARCH_DIR commands to a conventional
- form; people can use the Makefile's LIB_PATH to override.
+ * pe-dll.c (pe_dll_warn_dup_exports): New variable.
+ (process_def_file): Use.
+ (pe_dll_compat_implib): New variable.
+ (make_one): Use.
-Tue Oct 8 14:51:21 1991 Roland H. Pesch (pesch at cygnus.com)
+ * pe-dll.h: Add exports of pe_dll_warn_dup_exports and
+ pe_dll_compat_implib.
- * Makefile.in: fix target ld.dvi, add target ld.info
- ld.texinfo: make info filename ld.info
+ * emultempl/pe.em (longopts): Add warn-duplicate-exports and
+ compat-implib options.
+ (gld_${EMULATION_NAME}_list_options): List new options.
+ (gld_${EMULATION_NAME}_parse_args): Handle.
-Fri Oct 4 21:51:58 1991 John Gilmore (gnu at cygnus.com)
+ * pe-dll.c (pe_dll_generate_implib): Use the correct name for output
+ dll.
- * Makefile.in: Avoid using $< in non-suffix rules (breaks on Sun
- Make).
- * ldfile.c, ldlang.c, ldmain.c, ldwrite.c: Cope with renames of a
- few BFD types & enums.
+ * deffilep.y (opt_name): Allow "." in name.
+For older changes see ChangeLog-9899
Local Variables:
mode: change-log
diff --git a/contrib/binutils/ld/ChangeLog-9197 b/contrib/binutils/ld/ChangeLog-9197
new file mode 100644
index 0000000..a89a4ca
--- /dev/null
+++ b/contrib/binutils/ld/ChangeLog-9197
@@ -0,0 +1,7576 @@
+Sun Dec 21 12:51:49 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldexp.c (fold_name): Don't crash if the symbol is defined in a
+ section with no output section, such as a shared library section.
+
+Wed Dec 17 12:14:11 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * lexsup.c (parse_args): Keep track of where we are in the option
+ parsing before calling ldemul_parse_args, so that we don't call it
+ multiple times on the same argument and confuse the getopt
+ internals.
+
+Thu Dec 11 09:00:15 1997 Michael Meissner <meissner@cygnus.com>
+
+ * configure.tgt (d30v-elf-*): Rename d30velf_e to d30v_e and
+ d30velf_o to d30v_o to work in DOS environments.
+ * Makefile.{am,in}: Ditto.
+
+ * emulparams/d30v_{o,e}: Rename from d30velf_{o,e}.
+ * emulparams/d30velf_{o,e}: Deleted.
+
+Wed Dec 10 17:40:08 1997 Nick Clifton <nickc@cygnus.com>
+
+ * scripttempl/armcoff.sc: Add glue sections (code taken from Arm
+ branch).
+
+ * emulparams/armcoff.sh (TEMPLATE_NAME): Set to armcoff.
+
+ * emultempl/armcoff.em: New file, imported from Arm branch.
+
+Wed Dec 10 14:10:44 1997 Michael Meissner <meissner@cygnus.com>
+
+ * scripttempl/elfd30v.sc: Add .rel and .rela sections for all
+ defined sections. Set up __{D,C}TOR_{LIST,END}__. Add onchip and
+ external memory sections for rodata. Delete .string, .rodata1,
+ and .data1 sections.
+
+Tue Dec 9 15:28:17 1997 Michael Meissner <meissner@cygnus.com>
+
+ * Makefile.am: Add Oct 23 changes to Makefile.in here.
+
+ * Makefile.{am,in}: (ALL_EMULATIONS): Add ed10velf.o.
+
+ * Makefile.{am,in}: (ALL_EMULATIONS): Add etic80coff.o.
+
+ * Makefile.{am,in}: (ALL_EMULATIONS): Add ed30velf{,_e,_o}.o.
+ (ed30velf_e.c): Like d30velf, except .text/.data/etc always go in
+ external memory.
+ (ed30velf_o.c): Like d30velf, except .text/.data/etc always go in
+ onchip memory.
+
+ * emulparams/d30velf.sh (STACK_START_ADDR): Top of default
+ stack.
+ ({TEXT,DATA,EMEM}_SIZE): Sizes of the 3 memory areas.
+ ({TEXT,DATA,BSS}_MEMORY): Which memory region .text, .data, and
+ .bss should go in.
+
+ * emulparams/d30velf_{e,o}.sh: New files to be explicit whether
+ .text, .data, etc go in external memory or onchip memory.
+
+ * configure.tgt (d30v-*-*ext*): New configuration to default
+ .text, .data, etc. in external memory.
+ (d30v-*-*onchip*): New configuration to default .text, .data,
+ etc. in onchip memory.
+ (d30v-*-*): Add d30velf_{e,o} emulations.
+
+ * scripttempl/elfd30v.sc: Allow .text, .data, .bss to be put in
+ either the onchip text/data areas or the external memory area.
+ (MEMORY): Get sizes from d30velf.sh.
+ (.e{data,text,bss}): Put sections in the external memory region.
+ (.stext): Put section in the onchip text region.
+ (.s{data,bss}): Put sections in the onchip data region.
+ (__stack): Assign from ${STACK_START_ADDR}.
+ (.text): Put in ${TEXT_MEMORY} memory region.
+ (.data{,1}/.strings/.rodata{,1}): Put in ${DATA_MEMORY} memory
+ region.
+ (.bss): Put in ${BSS_MEMORY} memory region.
+
+Tue Dec 2 10:14:47 1997 Nick Clifton <nickc@cygnus.com>
+
+ * configure.tgt (targ_extra_emuls): Add support for Thumb target.
+
+Sat Nov 22 15:23:19 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlex.l: Don't define hex_mode. Correct number regexp to not
+ accept hex digits without a leading $ or 0x. Handle leading $
+ correctly. Pass 0 rather than hex_mode to bfd_scan_vma.
+ * ldlex.h (hex_mode): Don't declare.
+
+Sun Nov 16 20:16:45 1997 Michael Meissner <meissner@cygnus.com>
+
+ * emulparams/d30velf.sh ({DATA,EMEM}_START_ADDR): Define as start
+ of internal data area and external memory on chip.
+
+ * scripttempl/elfd30v.sc: Define a MEMORY region that describes
+ the 3 regions of memory on the chip. Put .text/.init/.fini into
+ the text memory region, put other segments into the data memory
+ region. Add more of the standard elf sections. Default __stack
+ to be 0x20008000, which is 1 byte beyond end of the internal data
+ region.
+
+Thu Nov 13 13:45:00 1997 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * configure.tgt (targ_extra_emuls): Make FreeBSD a i386bsd
+ variant.
+
+Sun Nov 2 14:51:36 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
+
+ * configure.host (alpha*-*-linux*): Correct HOSTING_CRT0. Set
+ HOSTING_LIBS.
+
+Thu Oct 30 12:25:55 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.h (args_type): Add warn_mismatch field.
+ * ldmain.c (main): Initialize warn_mismatch field.
+ * lexsup.c (parse_args): Handle --no-warn-mismatch option.
+ * ldlang.c (ignore_bfd_error): New static function.
+ (lang_check): If warn_mismatch is false, don't warn about
+ mismatched input files.
+ * ld.texinfo, ld.1: Document new option.
+
+Thu Oct 23 14:38:18 1997 Nick Clifton <nickc@cygnus.com>
+
+ * scripttempl/v850.sc: Rename linker symbol '_stack' to '__stack'
+ to avoid conflicts with C code which is defining a variable called
+ 'stack'.
+
+Thu Oct 23 00:57:45 1997 Richard Henderson <rth@dot.cygnus.com>
+
+ * Makefile.in (ALL_EMULATIONS): Move eelf64_sparc.o ...
+ (ALL_64_EMULATIONS): ... here.
+ (eelf64_sparc.c): Template should be elf32 not generic.
+ * emulparams/elf64_sparc.sh (TEMPLATE_NAME): New definition.
+
+Thu Oct 23 00:44:20 1997 Richard Henderson <rth@dot.cygnus.com>
+
+ * configure.tgt: Add sparc64-*-linux*.
+ * emulparams/elf64_sparc.sh (GENERATE_SHLIB_SCRIPT, NOP): New.
+
+Wed Oct 22 11:29:25 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/pe.sc: Put .eh_frame in .rdata.
+
+Fri Oct 17 00:00:13 1997 Richard Henderson <rth@cygnus.com>
+
+ * ldlang.c (lang_register_vers_node): Only check globals<=>locals,
+ since we need to be able to export different versions of the same
+ symbol.
+
+Wed Oct 15 14:52:36 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/pe.sc: Put .stab and .stabstr sections at end.
+
+Wed Oct 8 12:37:05 1997 Richard Henderson <rth@cygnus.com>
+
+ * configure.tgt, configure.host: Change alpha-*-* to alpha*-*-*;
+ config.guess now recognizes alphaev5 etc.
+
+Fri Oct 3 14:23:02 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Don't treat
+ -s and -u as -static and -unix.
+
+Thu Oct 2 18:40:28 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (wild_doit): Rewrite flag handling for clarity. If we
+ are not adding the first input section, and SEC_READONLY is clear
+ on the output section, then don't copy it from the input section.
+ If SEC_READONLY is not set on the input section, then clear it on
+ the output section.
+
+ * configure.tgt (mips*-sgi-irix[56]*): Use elf32bsmip rather than
+ elf32bmip.
+ (mips*el-*-linux*): Change elf32lmip to elf32lsmip and elf32bmip
+ to elf32bsmip.
+ (mips*-*-linux*): Likewise.
+ * emulparams/elf32bsmip.sh: New file; just like elf32bmip.sh, but
+ setting ENTRY to __start.
+ * emulparams/elf32lsmip.sh: New file; just like elf32lmip.sh, but
+ setting ENTRY to __start.
+ * scripttempl/elf.sc: Always set ENTRY to _start if it was not
+ already set.
+
+Wed Oct 1 16:41:00 1997 Nick Clifton <nickc@cygnus.com>
+
+ * emulparams/v850.sh (ROZDATA_START_ADDR, ROSDATA_START_ADDR): New
+ Variables.
+
+ * scripttempl/v850.sc: Move read only areas out of zero and small
+ data sections and into their own sections.
+
+Wed Sep 24 16:59:15 1997 Joel Sherrill <joel@oarcorp.com>
+
+ * configure.tgt (sh*-*-rtems*): New target, like sh-*-elf*.
+
+Wed Sep 24 11:33:14 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo (Section Options): Improve documentation of NOLOAD
+ directive.
+
+ * aclocal.m4: Rebuild with new libtool.
+ * configure: Rebuild.
+
+Mon Sep 22 17:24:06 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (wild_doit): Revert patch of September 3.
+
+Wed Sep 17 16:45:34 1997 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.am, Makefile.in: Add rule for ev850.c
+ * configure.tgt (targ_extra_emuls): Add v850 target.
+
+Wed Sep 17 16:43:39 1997 Nick Clifton <nickc@cygnus.com>
+
+ * emulparams/v850.sh (CALL_TABLE_START_ADDR): New entry.
+ * scripttempl/v850.sc: Add call table data area
+
+Mon Sep 15 11:29:13 1997 Ken Raeburn <raeburn@cygnus.com>
+
+ Merge change from Martin Hunt:
+
+ * scripttempl/elfd30v.sc: Put .rodata in the .text section.
+
+Tue Sep 9 07:49:56 1997 Fred Fish <fnf@ninemoons.com>
+
+ * ldlang.c (lang_memory_region_lookup): Remove extraneous
+ initialization of p.
+
+Thu Sep 4 09:03:33 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em (gld${EMULATION_NAME}_parse_args): In
+ expression produced for -bpT and -bpD options, align to a 32 byte
+ boundary rather than an 8 byte boundary.
+ * scripttempl/aix.sc: Put .tocbss at start of .bss section.
+
+ * ldmisc.h, ldmisc.c, ldcref.c: Rename finfo to lfinfo, to avoid
+ function name conflict with AIX 4.2 unistd.h header file.
+
+Wed Sep 3 15:12:32 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (wild_doit): Clear SEC_HAS_CONTENTS from a
+ noload_section.
+
+Fri Aug 29 00:32:31 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (ld_new_DEPENDENCIES): Remove @LEXLIB@.
+ * Makefile.in: Rebuild.
+
+Thu Aug 28 10:12:10 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * configure.tgt (arc-*-elf*): Recognize.
+ * Makefile.am (ALL_EMULATIONS): Add earcelf.o.
+ * Makefile.in: Regenerate.
+ * emulparams/arcelf.sh: New file.
+
+Wed Aug 20 11:14:13 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (wildcardp): Don't let a backslash by itself cause a
+ pattern to be treated as a wildcard pattern.
+
+ * ldgram.y (atype): Accept parentheses with no type.
+
+ * ld.texinfo (Section Definition): Clarify use of whitespace.
+ (Section Placement): Likewise.
+
+Mon Aug 18 11:12:03 1997 Nick Clifton <nickc@cygnus.com>
+
+ * configure.tgt (targ_extra_emuls): Add support for v850e target.
+
+Mon Aug 18 11:12:03 1997 Nick Clifton <nickc@cygnus.com>
+
+ * configure.tgt (targ_extra_emuls): Add support for v850e target.
+
+Sat Aug 9 00:42:27 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (ld.info): Change dependency from
+ $(BFDDIR)/doc/bfdsumm.texi to bfdsumm.texi.
+ (ld.dvi): Likewise.
+ (bfdsumm.texi): New target.
+ (CLEANFILES): Add bfdsumm.texi.
+ * Makefile.in: Rebuild.
+
+ * 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.
+ * configure.host: Don't set HLDFLAGS, HLDENV, or RPATH_ENVVAR.
+ * acconfig.h: Mention PACKAGE and VERSION.
+ * stamp-h.in: New file.
+ * ldver.c (ld_program_version): Set ld_program_version from
+ VERSION.
+ * ldgram.y, ldlex.l: Replace VERSION with VERSIONK.
+ * Makefile.in: Now built with automake.
+ * aclocal.m4: Now built with aclocal.
+ * configure, config.in: Rebuild.
+
+Mon Jul 28 19:04:50 1997 Rob Savoye <rob@chinadoll.cygnus.com>
+
+ * configure.in: Use CYGWIN and EXEEXT autoconf macro to look for
+ win32 dependencies.
+ * configure: Regenerated with autoconf 2.12.
+ * Makefile.in: Add $(EXEEXT) to executable.
+
+Tue Jul 22 18:50:38 1997 Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>
+
+ * emulparams/i386go32.sh (OUTPUT_FORMAT): Set to "coff-go32".
+ (SEGMENT_SIZE): Set to 0x200.
+ * scripttempl/i386go32.sc: Rewrite.
+ * configure.tgt (i[3456]86-*-msdosdjgpp*): New target.
+
+Mon Jul 7 12:39:42 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ From Manfred Hollstein <manfred@s-direktnet.de>:
+ * configure.host (i[3456]86-*-linux*libc1*): Renamed from
+ i[3456]86-*-linux*.
+ (i[3456]86-*-linux*): New host.
+
+Thu Jun 26 13:54:03 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/pe.sc: Put .rsrc after .reloc. Put input .rsrc
+ sections in the output .rsrc section.
+
+Wed Jun 25 12:48:41 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * configure.host (m68*-*-linux*libc1*): Renamed from
+ `m68*-*-linux*'.
+ (m68*-*-linux*): New configuration for use with GNU libc 2.
+
+Mon Jun 16 19:18:21 1997 Geoff Keating <geoffk@ozemail.com.au>
+
+ * scripttempl/elfppc.sc: Correct .rela.sdata entries.
+
+ * scripttempl/elfppc.sc: Put the PLT between the small and large
+ BSS segments.
+ * emulparams/elf32ppc.sh (TEXT_START_ADDR): The ABI says `A
+ program base of 0x02000000 is recommended...' because otherwise
+ shared libraries are less efficient. We use 0x01800000 because
+ otherwise it's impossible to branch to location 0, for instance if
+ you have an undefined weak symbol.
+
+Mon Jun 16 12:49:36 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
+
+ * ldlang.c (lang_place_undefineds): Add \n in einfo call.
+ (lang_size_sections): Likewise.
+ * ldlex.l: Likewise.
+ * emultempl/aix.em (gld${EMULATION_NAME}_read_file): Likewise.
+ * emultempl/mipsecoff.em (gld${EMULATION_NAME}_after_open):
+ Likewise.
+ (check_sections): Likewise.
+ (gld${EMULATION_NAME}_after_allocation): Likewise.
+ * emultempl/pe.em (gld_$${EMULATION_NAME}_before_allocation):
+ Likewise.
+ * mpw-eppcmac.c (gldppcmacos_read_file): Likewise.
+ * mpw-idtmips.c (gldmipsidt_after_open): Likewise.
+ (check_sections): Likewise.
+ (gldmipsidt_after_allocation): Likewise.
+
+ * ldemul.c (ldemul_choose_mode): Remove unused einfo argument.
+
+Fri Jun 6 23:47:42 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/pe.sc: Add zeroes after .idata$3 to mark the end of
+ the import list.
+
+Thu May 29 13:13:22 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_section): Don't
+ crash if an output section has no BFD section.
+
+Fri May 23 15:23:25 1997 Fred Fish <fnf@cygnus.com>
+
+ * lexsup.c (ld_options): Add entry for the new "task-link" option.
+ (parse_args): Handle the "task-link" option.
+ (OPTION_TASK_LINK): Add define.
+
+Wed May 21 17:44:15 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (main): Correct check of fclose return value when
+ handling --force-exe-suffix.
+
+Thu May 15 11:35:29 1997 Nick Clifton <nickc@cygnus.com>
+
+ * ldlang.c (lang_check): Add test of the return value from the
+ call to bfd_merge_private_bfd_data().
+
+Mon May 12 23:22:58 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/elfmips.sc: Remove.
+ * scripttempl/elf.sc: Set ENTRY based on target. Permit
+ TEXT_DYNAMIC to control .dynamic segment. Permit
+ SHLIB_TEXT_START_ADDR to set start of shared object. Support
+ INITIAL_READONLY_SECTIONS. Put .stub in .text. Only put
+ .gnu.linkonce.t* in .text when relocating. Support
+ OTHER_TEXT_SECTIONS. Support SHLIB_DATA_ADDR as well as
+ DATA_ADDR. Support OTHER_GOT_SYMBOLS and OTHER_GOT_SECTIONS.
+ * emulparams/elf32b4300.sh (SCRIPT_NAME): Set to elf.
+ (DATA_ADDR): Don't set.
+ (INITIAL_READONLY_SECTIONS): Rename from OTHER_READONLY_SECTIONS.
+ (OTHER_TEXT_SECTIONS): Set.
+ (OTHER_GOT_SECTIONS): Rename from OTHER_READWRITE_SECTIONS.
+ (MACHINE): Set to empty string.
+ * emulparams/elf32l4300.sh: Likewise.
+ * emulparams/elf32ebmip.sh: Likewise.
+ * emulparams/elf32elmip.sh: Likewise.
+ * emulparams/elf32bmip.sh: Likewise. Also:
+ (TEXT_DYNAMIC): Set.
+ * emulparams/elf32lmips.sh: Likewise.
+ * Makefile.in (eelf32bmips.c): Depend upon elf.sc rather than
+ elfmips.sc.
+ (eelf32ebmips.c, eelf32elmips.c, eelf32lmip.c): Likewise.
+
+Mon May 12 11:11:06 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * scripttempl/elf.sc: Don't align the data segment on the next 8
+ byte boundary, instead let the linker use whatever the individual
+ sections require.
+
+Fri May 9 17:45:46 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.tgt (i[3456]86-*-gnu*): Don't include Mach support.
+
+Tue May 6 13:21:19 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ From Sean McNeil <sean@mcneil.com>:
+ * emultempl/pe.em (sort_by_file_name): Sort by archive name
+ first.
+ (sort_sections): Sort all sections, not just sections in the same
+ archive.
+
+Mon May 5 18:19:55 1997 Philip Blundell <pjb27@cam.ac.uk>
+
+ * configure.tgt, configure.host: cope with '*-*-linux-gnuaout'
+ targets.
+
+Fri May 2 15:54:28 1997 Mike Meissner <meissner@cygnus.com>
+
+ * scripttempl/tic80coff.sc (.text): Add a leading underscore to
+ __{D,C}TOR_{LIST,END}__ definations. Rearrange the order of items
+ in the .text section. Move .const, .ctors, .dtors into separate
+ sections.
+
+Wed Apr 30 12:23:21 1997 Manfred Hollstein <manfred@s-direktnet.de>
+
+ * scripttempl/m88kbcs.sc (__.initp.end, _etext): Added whitespace
+ around assignment of current location pointer.
+
+Thu Apr 17 13:07:18 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldctor.c (ldctor_build_sets): Make sure the set is aligned
+ appropriately.
+
+Tue Apr 15 13:19:26 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (INSTALL): Set to @INSTALL@.
+ (INSTALL_XFORM, INSTALL_XFORM1): Remove.
+ (install): Depend upon ld.new and installdirs. Use
+ $(program_transform_name) directly, rather than using
+ $(INSTALL_XFORM) and $(INSTALL_XFORM1).
+ (installdirs): New target.
+ (install-info): Run mkinstalldirs.
+
+Mon Apr 14 12:06:15 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (INSTALL): Change install.sh to install-sh.
+
+ From Thomas Graichen <graichen@rzpd.de>:
+ * configure.in: Use ${CONFIG_SHELL} when running $ac_config_sub.
+ * configure: Rebuild.
+
+Fri Apr 4 11:42:41 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/pe.em: Include "libiberty.h".
+ (sort_sections_1): Use xmalloc rather than alloca.
+
+ * ldlex.l: Recognize SQUAD.
+ * ldgram.y (length): Add SQUAD.
+ * ldctor.c (ldctor_build_sets): Use SQUAD for a signed 8 byte
+ reloc.
+ * ldlang.c (print_data_statement): Handle SQUAD.
+ (lang_size_sections, lang_do_assignments): Likewise.
+ * ldexp.c (exp_print_token): Add SQUAD to table.
+ * ldwrite.c (build_link_order): Handle SQUAD.
+ * ld.texinfo (Section Data Expressions): Document SQUAD.
+
+Thu Apr 3 13:19:40 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldver.c (ld_program_version): Set to 2.8.1.
+
+ * Branched binutils 2.8.
+
+Wed Apr 2 11:55:27 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * mpw-idtmips.c: Rename from mpw-emipsidt.c.
+ * mpw-elfmips.c: Rename from mpw-emipself.c.
+ * mpw-config.in: Update accordingly.
+
+ * ldlang.c (lang_process): Call lang_check immediately after
+ opening the input files, rather than at the end of the link.
+
+Mon Mar 31 23:44:00 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/pe.em (init): Fully bracket initializer.
+ (set_pe_stack_heap): Remove locals begin_commit and end.
+ (gld_${EMULATION_NAME}_after_open): Remove unused local i.
+ (gld${EMULATION_NAME}_place_orphan): Remove unused local ptr.
+
+Mon Mar 31 16:35:51 1997 Joel Sherrill <joel@oarcorp.com>
+
+ * configure.tgt (hppa*-*-rtems*): New target, like hppa-*-*elf*.
+
+Fri Mar 28 15:29:23 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
+
+ Contributed by David S. Miller <davem@caip.rutgers.edu>:
+ * configure.tgt (sparc*-*-linuxaout*): New target.
+ (sparc*-*-linux*): New target.
+ * emulparams/sparclinux.sh: New file.
+ * Makefile.in (ALL_EMULATIONS): Add esparclinux.o.
+ (esparclinux.c): New target.
+
+Fri Mar 28 14:30:12 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ From Ralf Baechle <ralf@gnu.ai.mit.edu>:
+ * configure.tgt: Set targ_extra_emuls for mips*el-*-linux* and
+ mips*-*-linux*. Use elf32bmip and elf32lmip, not elf32ebmip and
+ elf32elmip.
+
+Thu Mar 27 17:14:32 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * lexsup.c (parse_args): Update copyright date in version
+ message.
+
+Fri Mar 21 12:28:41 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
+
+ * emulparams/delta68.sh (OUTPUT_FORMAT): Set to "coff-m68k-sysv".
+
+Tue Mar 18 11:16:23 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in: Rebuild dependencies.
+
+ * emultempl/aix.em: Include "obstack.h".
+
+Mon Mar 17 19:26:06 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c: Include "obstack.h".
+
+Sat Mar 15 23:23:46 1997 Fred Fish <fnf@cygnus.com>
+
+ * configure.tgt (powerpc-*-beos*): Use aixppc for targ_emul.
+
+Sat Mar 15 18:10:38 1997 H.J. Lu <hjl@lucon.org>
+
+ * ldemul.h (ldemul_list_emulations): Use full prototype.
+ * ldlang.c (print_one_symbol): Add declaration.
+ * ldlang.h (dprint_statements): Declare.
+ * ldmain.c (remove_output): Declare.
+ * ldmisc.c (vfinfo): Declare.
+ * ldwrite.c (clone_section): Declare.
+ (split_sections): Make static. Declare.
+ * mri.c: Include libiberty.h.
+ (strdup): Don't declare.
+ (mri_alias): Use xstrdup rather than strdup.
+
+Fri Mar 14 21:30:06 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/elfmips.sc: Change handling of data area when
+ generating a shared library to not skip a large block of memory.
+ From Per Fogelstrom <pefo@cvs.openbsd.org>.
+
+Wed Mar 12 21:33:09 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (multiple_definition): Only skip the warning if the
+ output section is absolute when the input section is not
+ absolute.
+
+ * ldlex.l: Accept whitespace in VERS_START state. Warn about
+ invalid characters in VERS_* states.
+
+Tue Mar 11 13:51:31 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em (gld${EMULATION_NAME}_read_file): Don't let a
+ trailing space lead us to think that there is a zero address.
+
+Sun Mar 9 23:06:35 1997 Eric Youngdale <eric@andante.jic.com>
+
+ * ldgram.y (vers_node): Correct typo of '(' for '{'.
+
+Fri Mar 7 18:40:12 1997 Fred Fish <fnf@cygnus.com>
+
+ * scripttempl/tic80coff.sc (ENTRY): Entry symbol is __start
+ rather than _start.
+ (__edata): Define this rather than "edata".
+ (__end): Define this rather than "end".
+
+Tue Mar 4 17:18:35 1997 Michael Meissner <meissner@cygnus.com>
+
+ * configure.tgt (tic80-*-*): Allow dropping of -coff.
+
+Sun Mar 2 22:59:49 1997 Fred Fish <fnf@cygnus.com>
+
+ * Makefile.in (ld.dvi): Set MAKEINFO environment variable as well
+ as TEXINPUTS. Needed for building in separate build dir.
+ * ldint.texinfo (SCRIPT_NAME): Fix typo.
+ * emulparams/tic80coff.sh: Rewrite to include internal documentation
+ about each shell variable that is set (or not set).
+ * scripttempl/tic80coff.sc: Complete rewrite.
+
+Fri Feb 28 17:42:27 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (main): Call bfd_set_default_target.
+ * Makefile.in (ldmain.o): Define TARGET when compiling.
+
+Thu Feb 27 11:41:03 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (main): Don't initialize link_info.lprefix or
+ link_info.lprefix_len.
+ * emultempl/hppaelf.em (hppaelf_before_parse): Likewise.
+
+ * emultempl/m88kbcs.em: Remove.
+ * emulparams/m88kbcs.sh (TEMPLATE_NAME): Don't set.
+ * Makefile.in (em88kbcs.c): Depend upon generic.em rather than
+ m88kbcs.em.
+
+ * mri.c (mri_draw_tree): Pass noload_section, not SEC_NEVER_LOAD,
+ to lang_enter_output_section_statement. From Mark Rasin
+ <mark.rasin@telrad.co.il>.
+
+Wed Feb 26 11:51:44 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (lang_one_common): Clear SEC_IS_COMMON from common
+ section.
+
+Tue Feb 25 20:38:11 1997 Stan Shebs <shebs@andros.cygnus.com>
+
+ * configure.tgt (mips*-*-lnews*): New target.
+ * Makefile.in (emipslnews.c): New target.
+ * emulparams/mipslnews.sh: New file.
+
+Tue Feb 25 16:04:09 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/elf32.em (hold_interp): New static variable.
+ (gld${EMULATION_NAME}_place_orphan): Put loadable .note sections
+ after hold_interp. Choose a unique output section name.
+ (gld${EMULATION_NAME}_place_section): Don't set hold_use if the
+ SEC_LOAD or SEC_ALLOC flags differ. Set hold_interp.
+
+Mon Feb 24 18:16:09 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ From Eric Youngdale <eric@andante.jic.com>:
+ * ldlex.l (V_TAG, V_IDENTIFIER): New macros.
+ (VERS_START, VERS_SCRIPT, VERS_NODE): New states to parse version
+ information.
+ (ldlex_version_script, ldlex_version_file): New functions.
+ * ldlex.h (enum input_enum): Add input_version_script.
+ (ldlex_version_script): Declare.
+ (ldlex_version_file): Declare.
+ * ldgram.y (%union): Add deflist, versyms, and versnode.
+ (VERS_TAG, VERS_IDENTIFIER): New terminals.
+ (GLOBAL, LOCAL, VERSION, INPUT_VERSION_SCRIPT): New terminals.
+ (file): Accept INPUT_VERSION_SCRIPT.
+ (ifile_p1): Accept version.
+ (version_script_file): New nonterminal.
+ (version, vers_nodes, vers_node): Likewise.
+ (verdep, vers_tag, ver_defns): Likewise.
+ * ldlang.c (lang_elf_version_info): New global variable.
+ (lang_new_vers_regex): New function.
+ (lang_new_vers_node): New function.
+ (version_index): New static variable.
+ (lang_register_vers_node): New function.
+ (lang_add_vers_depend): New function.
+ * ldlang.h (lang_elf_version_info): Declare.
+ (lang_new_vers_regex, lang_new_vers_node): Declare.
+ (lang_add_vers_depend, lang_register_vers_node): Declare.
+ * lexsup.c (OPTION_VERSION_SCRIPT): Define.
+ (ld_options): Add "version-script".
+ (parse_args): Handle OPTION_VERSION_SCRIPT.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
+ Pass lang_elf_version_info to size_dynamic_sections.
+ * scripttempl/elf.sc: Add .gnu.version sections.
+ * ld.texinfo: Document symbol versioning.
+
+Fri Feb 21 17:37:51 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * Makefile.in (ed30velf.c): New target.
+ * configure.tgt (d30v-*-*): New target.
+ * emulparams/d30velf.sh: New file.
+ * scripttempl/elfd30v.sc: New file.
+
+Fri Feb 14 18:28:31 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo (Option Commands): Document the INCLUDE command.
+
+Thu Feb 13 20:31:37 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
+
+ * configure.in: Call BFD_NEED_DECLARATION on getenv.
+ * acconfig.h (NEED_DECLARATION_GETENV): New macro.
+ * sysdep.h (getenv): Declare if NEED_DECLARATION_GETENV.
+ * ldemul.c (ld_emul_default_target): Do not cast getenv return
+ value.
+ * ldmain.c (get_emulation): Likewise.
+ * configure, config.in: Rebuild.
+
+Tue Feb 11 15:34:26 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/elfmips.sc: When relocating, put .mips16.fn.* and
+ .mips16.call.* in .text.
+
+Sun Feb 9 18:09:13 1997 Fred Fish <fnf@cygnus.com>
+
+ * emulparams/tic80coff.sh: New (dummy) file for TIc80.
+ * scripttempl/tic80coff.sc: New (dummy) file for TIc80.
+ * Makefile.in (etic80coff.c): Add target and rule to build it.
+ * configure.tgt (tic80-*-coff): Set targ_emul to tic80coff.
+
+Fri Jan 31 13:16:53 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Search for
+ ".so" in the name, not ".so.".
+ (gld${EMULATION_NAME}_search_dir): Accept a plain .so file.
+
+ * Makefile.in (ld.info): Add -I$(srcdir). From Alan Modra
+ <alan@spri.levels.unisa.edu.au>.
+
+Thu Jan 30 11:31:52 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/sunos.em: Include <ctype.h>.
+ (gld${EMULATION_NAME}_find_so): Skip the directory name when
+ searching for ".so.".
+ (gld${EMULATION_NAME}_search_dir): Make sure that the library name
+ has a version number, and that only version numbers follow .so.
+
+Wed Jan 29 18:15:00 1997 Geoffrey Noer <noer@cygnus.com>
+
+ * scripttempl/pe.sc:
+ * scripttempl/ppcpe.sc: add *(.gcc_except_table) to the text
+ section so Win32 executables are valid.
+
+Mon Jan 27 12:28:43 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/elf.sc: Put linkonce reloc section in other
+ appropriate reloc sections.
+ * scripttempl/elfmips.sc: Add linkonce support.
+ * scripttempl/elfppc.sc: Likewise.
+
+Fri Jan 24 10:44:09 1997 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/mn10200.sh (OTHER_RELOCATING_SECTIONS): Move the
+ stack up to 0x80000.
+ * emulparms/mn10300.sh (OTHER_RELOCATING_SECTIONS): Likewise.
+
+Tue Jan 21 12:11:10 1997 Doug Evans <dje@seba.cygnus.com>
+
+ * emulparams/m32relf.sh (OTHER_RELOCATING_SECTIONS): Use PROVIDE
+ to define `_stack'.
+
+Thu Jan 16 17:07:52 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.h (args_type): Rename auxiliary_filter_shlib to
+ auxiliary_filters, and make it char **.
+ * lexsup.c (parse_args): Handle -f by setting up an array.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Use
+ new name of auxiliary_filters.
+
+ * ld.texinfo (Options): Improve documentation of --filter and
+ --auxiliary.
+
+Tue Jan 14 15:44:28 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo (Options): Clarify that the normal usage is -T.
+ (Commands): Likewise.
+
+Thu Jan 9 11:26:27 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/armcoff.sc: Correct mask used for .data address.
+
+Wed Jan 8 15:14:59 1997 Geoffrey Noer <noer@cygnus.com>
+
+ * emultempl/pe.em: make default executable a.exe instead of
+ a.out
+
+Fri Jan 3 17:33:34 1997 Richard Henderson <rth@tamu.edu>
+
+ * scripttempl/elf.sc: Move .got closer to .sdata and .sbss by
+ shifting .plt back. Rumour has it that the NetBSD ld.so depends
+ on .dynamic being after .got, so we leave that.
+
+Fri Jan 3 14:04:40 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (clean): Don't remove configdoc.texi.
+ (maintainer-clean): Do remove configdoc.texi.
+
+ * ld.texinfo (Operators): Remove '@' from @smallexmple in comment
+ to avoid confusing texi2roff.
+
+Fri Jan 3 11:27:02 1997 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * scripttempl/v850.sc (.zdata): Add .zcommon section.
+ (.tdata): Add .tcommon and .tcommon_byte sections.
+
+Thu Jan 2 18:14:32 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.tgt (mips*el-*-linux*, mips*-*-linux*): New targets.
+ * scripttempl/elfmips.sc: Use __start as the entry address for
+ mips*-*-linux*.
+
+Tue Dec 31 14:48:30 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (ALL_CFLAGS): Add -D_GNU_SOURCE.
+
+ * ld.h (args_type): Add filter_shlib and auxiliary_filter_shlib
+ fields.
+ * lexsup.c (parse_args): Recognize --auxiliary/-f and
+ --filter/-F.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
+ Pass filter_shlib and auxiliary_filter_shlib to
+ size_dynamic_sections.
+ * ld.texinfo, ld.1: Document --filter/-F and --auxiliary/-f.
+
+Mon Dec 30 13:55:57 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * scripttempl/v850.sc (.tdata) Add .tbss and .tbyte sections.
+
+Wed Dec 18 22:57:35 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Use NewFolderRecursive for installation.
+
+Fri Dec 13 14:08:50 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * scripttempl/v850.sc: Make sure __{e,g}p start relative to the
+ {s,t}data sections. Do not emit any linker generated symbols if
+ -r. Use {TEXT,{Z,S,T}DATA}_START_ADDR variables to initialize
+ where the different sections go. Change some whitespace.
+
+ * emulparams/v850.sh ({TEXT,{Z,S,T}DATA}_START_ADDR): Define
+ appropriately. Remove crud not used anymore.
+
+Fri Dec 13 10:19:57 1996 Jeffrey A Law (law@cygnus.com)
+
+ * Makefile.in (emn10200.c): Add dependencies.
+ * configure.tgt: Handle mn10200.
+ * emulparms/mn10200.sh: New file.
+
+Thu Dec 12 17:04:55 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/gld960c.em: Include <ctype.h>.
+ (gld960_set_output_arch): Get the machine type from the -A option
+ if there is one, rather than always using core.
+
+Sat Dec 7 10:07:51 1996 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/mn10300.sh: Handle leading underscores.
+
+Thu Dec 5 13:45:58 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_section): Only
+ set hold_rel if SEC_ALLOC is set.
+
+Tue Dec 3 11:29:20 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (section_already_linked): Set the output_offset as well
+ as the output_section when only reading symbols from a file.
+
+Mon Dec 2 11:43:50 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emulparams/*.sh: Make sure that each set of parameters which
+ uses the elf.sc script sets MACHINE.
+
+Wed Nov 27 03:22:05 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * scripttempl/elf{,mips,ppc}.sc: Add the remaining DWARF sections.
+ * scripttempl/elfd10v.sc: Likewise.
+ * scripttempl/v850.sc: Likewise.
+
+Tue Nov 26 16:58:33 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure: Rebuild with autoconf 2.12.
+
+Mon Nov 25 12:17:55 1996 Jim Wilson <wilson@cygnus.com>
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_set_symbols): Add case
+ for bfd_vma to init loop.
+
+Mon Nov 25 09:55:07 1996 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/mn10300.sh: Remove bogus '_' prefix for
+ entry symbol and ctor/dtor stuff.
+
+Fri Nov 15 13:00:18 1996 Jeffrey A Law (law@cygnus.com)
+
+ * Makefile.in (emn10300.c): Add dependencies.
+ * configure.tgt: Handle mn10300.
+ * emulparms/mn10300.sh: New file.
+
+Tue Nov 5 10:57:50 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * emulparams/d10velf.sh (READONLY_START_ADDR): Changed to 0x2000004.
+ (EMBEDDED): Define.
+
+Fri Nov 1 10:01:27 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo: Add section on reporting bugs.
+
+ * scripttempl/m68kcoff.sc: Make sure the etext and __CTOR_LIST__
+ symbols are correctly aligned.
+
+Thu Oct 31 09:28:59 1996 Jeffrey A Law (law@cygnus.com)
+
+ * scriptempl/v850.sc (zdata): Handle reszdata, romzdata and
+ romzbss too.
+
+Tue Oct 29 12:33:05 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * emulparams/d10velf.sh: Changes needed for D10V-EVA board.
+ Set TEXT_START_ADDR to 0x1000000. Set READONLY_START_ADDR to
+ 0x2000000.
+
+ * scripttempl/elfd10v.sc: Fix calculation of .text. Change
+ .stack to start at 0x2007ffe.
+
+Mon Oct 28 15:37:00 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * configure.tgt (sparclet*-*-aout*): Delete, use sparc*-*-aout*.
+
+Wed Oct 23 16:17:22 1996 Jeffrey A Law (law@cygnus.com)
+
+ * scriptempl/v850.sc (zdata): Fix typo "zrodata" -> "rozdata".
+
+ * scriptempl/v850.sc (zdata): Make sure this stays
+ in lo-memory.
+
+Tue Oct 22 11:36:47 1996 Jeffrey A Law (law@cygnus.com)
+
+ * scripttempl/v850.sc (__ep): Put it at the start
+ of the tda section.
+
+ * scriptempl/v850.sc: Move all "normal" sections into
+ the external memory region (0x100000 - 0x200000).
+
+Mon Oct 21 17:16:59 1996 Michael Meissner <meissner@wogglebug.tiac.net>
+
+ * scripttempl/elfd10v.sc: Clone from elf.sc, move .text to
+ 0x10000, so that is more room for data.
+
+ * emulparams/d10velf.sh (TEXT_START_ADDR): Now 0x100000.
+ (READONLY_START_ADDR): Now 0x0.
+ (SCRIPT_NAME): Now elfd10v.
+
+ * Makefile.in (ed10velf.c): Depend on elfd10v.sc, not elf.sc.
+
+Fri Oct 18 22:12:49 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * emulparams/m32relf.sh (TEXT_START_ADDR): Change from 0 to 0x100.
+
+Fri Oct 18 15:43:38 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (ALL_EMULATIONS): Remove eelf64alpha.o.
+ (ALL_64_EMULATIONS): New variable.
+ * configure.in: Accept --enable-64-bit-bfd option. If it is set
+ with --enable-targets=all, include ALL_64_EMULATIONS in
+ EMULATION_OFILES.
+ * configure: Rebuild.
+
+Fri Oct 18 12:58:35 1996 Jeffrey A Law (law@cygnus.com)
+
+ * scripttempl/v850.sc (__gp, __ep): Define.
+
+Thu Oct 17 18:14:07 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo: Try to consistently use a single or a double dash
+ for each option.
+
+Thu Oct 17 10:17:20 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * emulparams/m32relf.sh (EMBEDDED): Define.
+
+Thu Oct 17 10:56:49 1996 Jeffrey A Law (law@cygnus.com)
+
+ * scripttempl/v850.sc (.zdata): Add this before .text.
+ (.sdata): Also include .rosdata as part of the .sdata.
+ (.tdata): Include this just before .sdata.
+
+ * emulparms/v850.sh (SCRIPT_NAME): Use "v850" not "elf".
+ * scripttempl/v850.sc: Wrap script with a "cat << EOF".
+
+Wed Oct 16 23:10:01 1996 Jeffrey A Law (law@cygnus.com)
+
+ * scripttempl/v850.sc: New linker script for the V850.
+ * Makefile.in: Use it.
+
+Thu Oct 10 17:57:00 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emulparams/elf32b4300.sh: Define _gp in OTHER_GOT_SYMBOLS, not
+ OTHER_READWRITE_SECTIONS.
+ * emulparams/elf32l4300.sh: Likewise.
+
+Wed Oct 9 14:36:18 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.h (ld_config_type): Add warn_section_align field.
+ * lexsup.c (OPTION_WARN_SECTION_ALIGN): Define.
+ (ld_options): Add --warn-section-align.
+ (parse_args): Handle --warn-section-align.
+ * ldlang.c (lang_size_sections): If warn_section_align, warn if
+ the start of a section changes due to alignment.
+ * ld.texinfo, ld.1: Document --warn-section-align.
+ * ld.texinfo: Change some single dashes to double dashes.
+
+ * emultempl/pe.em (set_pe_subsystem): Record entry symbol for each
+ subsystem type. Ifdef out os2 type. Recognize a version number.
+
+Tue Oct 8 12:07:13 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/pe.em (set_pe_subsystem): When setting the subsystem
+ to windows, set the entry point.
+
+ * Makefile.in (ldlex.c): Don't pass any options to $(LEX).
+
+Mon Oct 7 17:29:05 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo (Options): Mention .so extensions for shared
+ libraries.
+
+Sun Oct 6 22:35:36 1996 Jason Merrill <jason@yorick.cygnus.com>
+
+ * scripttempl/elf{,mips,ppc}.sc: Add DWARF 2 sections.
+
+Fri Oct 4 18:49:31 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/m68kcoff.sc: Only set the address of .text if
+ RELOCATING.
+
+Fri Oct 4 10:59:52 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * emulparams/sparcaout.sh ({BIG,LITTLE}_OUTPUT_FORMAT): Define.
+ * scripttempl/aout.sc ({BIG,LITTLE}_OUTPUT_FORMAT): Provide default.
+ (OUTPUT_FORMAT): Support bi-endian targets.
+
+Thu Oct 3 13:52:03 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * fnmatch.h, fnmatch.c: Remove (now in libiberty).
+ * Makefile.in: Rebuild dependencies.
+ (CFILES): Remove fnmatch.c.
+ (HFILES): Remove fnmatch.h.
+ (OFILES): Remove fnmatch.o.
+
+Thu Oct 3 15:41:24 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
+
+ * Makefile.in (mostlyclean): Move config.log to distclean.
+
+Wed Oct 2 23:45:25 1996 Geoffrey Noer <noer@cygnus.com>
+
+ * emultmpl/pe.em: increase size of stack reserve to 0x2000000
+ (necessary in order to compile parse.c in gcc sources under NT)
+
+Wed Oct 2 14:49:10 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * lexsup.c (ld_options): Fix typo in --rpath-link description.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Suggest
+ --rpath if a needed library is not found.
+
+Tue Oct 1 16:17:33 1996 Joel Sherrill <joel@oarcorp.com>
+
+ * configure.tgt (mips*-*-rtems*): New target, like mips*-*-elf*.
+
+Tue Oct 1 15:50:34 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo (Options): Give more detail on -l option.
+
+ * scripttempl/elfmips.sc: Handle CREATE_SHLIB the same way that
+ elf.sc does, so that glibc works better.
+
+ * ldver.c (ld_program_version): New variable.
+ (ldversion): Use it.
+ * ldver.h (ld_program_version): Declare.
+ * lexsup.c (ld_options): Handle --dll-verbose like --verbose, not
+ --version. Change --version handling to match current GNU
+ standards.
+ (help): Print bug report address.
+
+Mon Sep 30 12:14:43 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * Makefile.in (em32relf.c): Add rule for.
+ * configure.tgt (m32r-*-*): Recognize.
+ * emulparams/m32relf.sh: New file.
+
+Thu Sep 26 13:58:47 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Add symbolic doublequoting to ldmain compile edit.
+ * mpw-config.in: Add mips-*-* case as mips-elf, and use more
+ wildcards in matching.
+ * mpw-emipself.c: New file, pregenerated mips elf emulation.
+
+Tue Sep 17 12:18:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldint.texinfo: Rewrote.
+
+ * configure.tgt: Add cases for MIPS 5000 like MIPS 4300.
+
+Mon Sep 16 17:55:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/armcoff.sc: Only define symbols if RELOCATING. Fix
+ syntax error on __end__ line.
+
+ * scripttempl/armcoff.sc: For -N or -n, don't align .data. From
+ Chris Hadley <Christopher.Hadley@cl.cam.ac.uk>
+
+Sun Sep 15 22:09:56 1996 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/v850.sh: Fix OTHER_RELOCATING_SECTIONS.
+
+Sun Sep 15 10:38:16 1996 Mark Alexander <marka@cygnus.com>
+
+ * emulparms/d10v.sh: Set OTHER_RELOCATING_SECTIONS to put
+ stack at top of simulator memory.
+
+Fri Sep 13 15:49:45 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlex.l (SYMBOLCHARN): Add $, _, and ~.
+
+Wed Sep 11 23:30:42 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (get_emulation): Check for -mips4 like -mips1, et. al.
+
+Thu Sep 5 15:24:12 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (section_already_linked): Accept a lang_input_statement
+ as the PTR argument. If the file is symbols only, discard all
+ input sections.
+ (ldlang_add_file): Pass entry to bfd_map_over_sections.
+
+Wed Sep 4 15:53:43 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.tgt (alpha-*-gnu*): New target. From Fila Kolodny
+ <fila@ibi.com>.
+
+Tue Sep 3 00:52:54 1996 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/v850.sh: Set OTHER_RELOCATING_SECTIONS
+
+Sun Sep 1 21:48:58 1996 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/v850.sh: Set EMBEDDED.
+
+Fri Aug 30 22:30:30 1996 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/v850.sh: Entry symbol is "_start", tweak
+ ctor/dtor support.
+
+Fri Aug 30 18:32:31 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.tgt (sh-*-elf*): New target.
+ * emulparams/shelf.sh: New file.
+ * emulparams/shlelf.sh: New file.
+ * Makefile.in (ALL_EMULATIONS): Add eshelf.o and eshlelf.o.
+ (eshelf.c, eshlelf.c): New targets.
+ * scripttempl/elf.sc: If EMBEDDED is defined, then don't add
+ SIZEOF_HEADERS to TEXT_START_ADDR. Expand CTOR_START and CTOR_END
+ around .ctors, and DTOR_START and DTOR_END around .dtors. Expand
+ OTHER_RELOCATING_SECTIONS if RELOCATING.
+
+Thu Aug 29 16:57:46 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * configure.{host,tgt} (i[345]86-*-*): Recognize i686 for pentium
+ pro.
+
+Mon Aug 26 12:58:11 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldgram.y (section): Add opt_nocrossrefs; pass value to
+ lang_enter_overlay.
+ (opt_nocrossrefs): New nonterminal.
+ * ldlex.l: Recognize NOCROSSREFS keyword in EXPRESSION mode.
+ * ldlang.c (overlay_nocrossrefs): New static variable.
+ (lang_enter_overlay): Add nocrossrefs parameter.
+ (lang_leave_overlay): Only add nocrossrefs if overlay_nocrossrefs
+ is set. Initialize overlay_nocrossrefs.
+ * ldlang.h (lang_enter_overlay): Update declaration.
+ * ld.texinfo (Overlays): Update documentation.
+
+ * ldver.c (ldversion): Print GNU ld in the version message.
+
+Thu Aug 22 17:10:40 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.host: Set HLDENV.
+ * configure.in: Substitute HLDENV.
+ * configure: Rebuild.
+ * Makefile.in (HLDENV): New variable.
+ ($(LD_PROG)): Use $(HLDENV).
+
+Thu Aug 22 16:29:28 1996 Jeffrey A Law (law@cygnus.com)
+
+ * Makefile.in (ev850.c): New target.
+ * configure.tgt (v850-*-*): New target.
+ * emulparams/v850.sh: New file.
+
+Thu Aug 22 11:16:02 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Add @DASH_C_FLAG@ to compiler edit.
+
+Wed Aug 21 11:26:37 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/elf.sc: Put .gnu.linkonce* sections in appropriate
+ containing sections.
+
+Mon Aug 19 13:01:42 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * fnmatch.c: Include sysdep.h.
+
+Mon Aug 19 11:28:29 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * genscripts.sh: Undo 8/16 change.
+
+ * emulparams/d10velf.sh (MACHINE): Explicitly set to nothing.
+
+Fri Aug 16 19:18:08 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * genscripts.sh: Explicitly reset any shell variables set or used
+ by the various .sc scripts to allow inadvertant use of these
+ names as normal environment variables by the person running
+ configure.
+
+ * Makefile.in (ed10velf.c): Use tdir_d10v, not tdir_arcelf.
+
+Fri Aug 16 14:15:41 1996 James G. Smith <jsmith@cygnus.co.uk>
+
+ * scripttempl/armcoff.sc (__bss_start__, __bss_end__,
+ __data_start__, __data_end__): Added to keep in sync. with the
+ default ARM crt0.s. Added __CTOR_LIST__ and __DTOR_LIST__ support.
+
+Thu Aug 8 14:24:56 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldcref.c (check_reloc_refs): If info->same, look for any symbol
+ defined in info->defsec, not just the section symbol.
+
+Wed Aug 7 14:40:48 1996 Philippe De Muyter <phdm@info.ucl.ac.be>
+
+ * configure.in: Call BFD_NEED_DECLARATION on strstr and sbrk.
+ * acconfig.h (NEED_DECLARATION_STRSTR): New macro.
+ (NEED_DECLARATION_SBRK): New macro.
+ * configure, config.in: Rebuild.
+ * sysdep.h (strstr): Declare if NEED_DECLARATION_STRSTR.
+ * ldmain.c (sbrk): Declare if HAVE_SBRK and
+ NEED_DECLARATION_SBRK.
+
+ * ldlang.c (lang_record_phdrs): Cast xmalloc and xrealloc return.
+
+Mon Aug 5 16:26:14 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlex.l: Recognize OVERLAY.
+ * ldgram.y: Add section_phdr field to %union.
+ (section): Handle phdr_opt result. Add OVERLAY case.
+ (opt_exp_without_type): New nonterminal.
+ (phdr_opt): Return list of phdrs.
+ (overlay_section): New nonterminal.
+ * ldlang.c: Include <ctype.h>.
+ (lang_leave_output_section_statement): Add phdrs parameter.
+ Change all callers.
+ (lang_section_in_phdr): Remove.
+ (overlay_vma, overlay_lmn, overlay_max): New static variables.
+ (struct overlay_list): Define.
+ (overlay_list): New static variable.
+ (lang_enter_overlay, lang_enter_overlay_section): New functions.
+ (lang_leave_overlay_section, lang_leave_overlay): New functions.
+ * ldlang.h (lang_leave_output_section_statement): Update
+ declaration for new parameter.
+ (lang_section_in_phdr): Don't declare.
+ (lang_enter_overlay, lang_enter_overlay_section): Declare.
+ (lang_leave_overlay_section, lang_leave_overlay): Declare.
+ * ld.texinfo (Overlays): New node under SECTIONS, documenting
+ overlays.
+
+ * ldlex.l: Recognize MAX and MIN.
+ * ldgram.y (MAX, MIN): New terminals.
+ (exp): Recognize MAX and MIN.
+ * ldexp.c (fold_binary): Handle MAX and MIN.
+ * ld.texinfo (Arithmetic Functions): Document MAX and MIN.
+
+ * ld.texinfo (PHDRS): Use @cindex, not @kindex, for program header
+ index entries.
+
+ * ldgram.y (SIZEOF, ADDR): Do not specify type.
+
+ * ldcref.c (check_nocrossref): Skip symbols with no output
+ sections.
+
+Fri Aug 2 14:57:49 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldgram.y (LOADADDR): New terminal.
+ (exp): Handle LOADADDR.
+ * ldlex.l: Recognize LOADADDR.
+ * ldexp.c (exp_print_token): Add LOADADDR.
+ (fold_name): Implement LOADADDR.
+ * ldlang.c (exp_init_os): Treat LOADADDR like ADDR.
+ * ld.texinfo (Arithmetic Functions): Document LOADADDR.
+
+Thu Aug 1 12:52:19 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.h (check_nocrossrefs): Declare.
+ * ldlang.h (struct lang_nocrossref): Define.
+ (struct lang_nocrossrefs): Define.
+ (nocrossref_list): Declare.
+ (lang_add_nocrossref): Declare.
+ * ldlex.l: Recognize NOCROSSREFS keyword.
+ * ldgram.y (%union): Add nocrossref field.
+ (NOCROSSREFS): New terminal.
+ (ifile_p1): Recognize NOCROSSREFS.
+ (nocrossref_list): New nonterminal.
+ * ldlang.c (nocrossref_list): Define.
+ (lang_add_nocrossref): New function.
+ * ldmain.c (main): If nocrossref_list is not NULL, call
+ check_nocrossrefs.
+ (warning_callback): Free symbols if there is no place to store
+ them.
+ (notice): Call add_cref if nocrossref_list is not NULL.
+ * ldcref.c: Include "ldexp.h" and "ldlang.h".
+ (check_nocrossrefs): New function.
+ (check_nocrossref): New static function.
+ (struct check_refs_info): Define.
+ (check_refs, check_reloc_refs): New static functions.
+ * Makefile.in: Rebuild dependencies.
+ * ld.texinfo (Option Commands): Document NOCROSSREFS.
+
+ * ld.texinfo (Section Placement): Improve the wording of the
+ wildcard documentation. Mention that wildcards are only searched
+ for on the command line, not in the file system.
+
+ * emultempl/sunos.em (gld${EMULATION_NAME}_after_open): Move
+ definition of lib_path inside condition where it is used.
+
+Wed Jul 31 13:17:10 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * emulparams/d10velf.sh: Now works with elf.sc.
+
+Wed Jul 31 11:52:03 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * emulparams/d10velf.sh (SCRIPT_NAME): Change to vanilla.
+
+Tue Jul 30 14:46:42 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (lang_size_sections): Add the section VMA to the result
+ value when computing the address of a section.
+
+ * ld.h (args_type): Add cref field.
+ * lexsup.c (parse_args): Set command_line.cref.
+ * ldmain.c (main): Check command_line.cref rather than
+ link_info.notice_all.
+ (notice): Likewise.
+
+ * ldcref.c (output_one_cref): Don't crash if a symbol is defined
+ in a section without an owner.
+
+Mon Jul 29 17:23:33 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * fnmatch.h, fnmatch.c: New files.
+ * ldlex.l: Remove unused definition of FILENAME. Add definition
+ of WILDCHAR. In SCRIPT mode, accept any sequence of WILDCHAR as a
+ NAME.
+ * ldgram.y (file_NAME_list): Accept '*' and '?' specially.
+ (input_section_spec): Accept '?' specially.
+ (statement): Change exp to mustbe_exp in length and FILL cases.
+ (section): Call ldlex_script before section statements, and call
+ ldlex_popstate after them.
+ * ldlang.c: Include "fnmatch.h".
+ (wildcardp): New static function.
+ (wild_section): Permit the section name to be a wildcard.
+ (wild_file): New static function, broken out of wild.
+ (wild): Call wild_file. Permit the file name to be a wildcard.
+ (open_input_bfds): Don't call lookup_name for a wildcard pattern.
+ * Makefile.in: Rebuild dependencies.
+ (CFILES): Add fnmatch.c.
+ (HFILES): Add fnmatch.h.
+ (OFILES): Add fnmatch.o.
+ * ld.texinfo: Document that file and section names can now be
+ wildcard patterns.
+
+ * ldlang.c (lang_place_orphans): Correct condition: place a common
+ section if not relocateable or if common definitions are forced.
+
+Wed Jul 24 12:16:38 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * emulparams/d10velf.sh (SCRIPT_NAME): Change to elf.
+
+Wed Jul 24 13:38:22 1996 Michael Meissner <meissner@wogglebug.tiac.net>
+
+ * configure.tgt (d10v-*-*): Don't require the -elf, allow plain d10v.
+
+Tue Jul 23 10:36:19 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * Makefile.in (ed10velf.c): New target.
+ * configure.tgt (d10v-*-elf*): New target.
+ * emulparams/d10velf.sh: New file.
+
+Thu Jul 18 16:25:39 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.tgt (sparc*-*-sysv4*): New target. From Andrew Gierth
+ <ANDREWG@microlise.co.uk>.
+
+ * configure.host: Change irix5 to irix[56]*.
+ * configure.tgt: Likewise.
+
+Wed Jul 17 10:52:46 1996 Kim Knuttila <krk@cygnus.com>
+
+ * emultempl/pe.em (sort_sections): Pay attention to return code.
+
+ * ldmisc.c (demangle): Remove all prefix '.'s from a name.
+
+Mon Jul 15 11:49:49 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Round
+ the value of __start_SECNAME to the alignment required by the
+ section to be placed.
+
+Tue Jul 9 12:09:02 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.tgt (mips*el-*-elf*): Use elf32elmip.
+ (mips*-*-elf*): Use elf32ebmip.
+ * emulparams/elf32bmip.sh (EMBEDDED): Don't define.
+ * emulparams/elf32lmip.sh (EMBEDDED): Don't define.
+ * emulparams/elf32elmip.sh: New file; copy of elf32lmip.sh with
+ EMBEDDED defined.
+ * emulparams/elf32ebmip.sh: New file; copy of elf32bmip.sh with
+ EMBEDDED defined.
+ * emulparams/elf32b4300.sh (EMBEDDED): Define.
+ * emulparams/elf32l4300.sh (EMBEDDED): Define.
+ * Makefile.in (ALL_EMULATIONS): Add eelf32ebmip.o eelf32elmip.o.
+ (eelf32ebmip.c, eelf32elmip.c): New targets.
+
+Thu Jul 4 12:01:03 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldver.c (ldversion): Set version to cygnus-2.7.1.
+
+ * Released binutils 2.7.
+
+ * emulparams/pc532macha.sh: Rename from pc532machaout.sh to avoid
+ System V file name limitations.
+ * configure.tgt (nc32k-pc532-mach*, ns32k-pc532-ux*): Use
+ pc532macha rather than pc532machaout.
+ * Makefile.in (ALL_EMULATIONS): Change epc532machaout.o to
+ epc532macha.o.
+ (epc532macha.c): Rename target from epc532machaout.c.
+
+Wed Jul 3 11:40:10 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (print_padding_statement): Use %u, not %x, to print
+ fill value.
+
+Sun Jun 30 11:16:43 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-eppcmac.c: Update to reflect May 23 change to aix.em.
+
+Thu Jun 27 14:03:42 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Put the .sa
+ file just before the .so file, rather than just after.
+
+ * configure.host: Use -print-file-name=FILE rather than piping
+ -print-libgcc-file-name through sed.
+ (i[345]86*-*-sco*, i[345]86-*-isc*): Create crtbegin.o and
+ crtend.o files, in case gcc doesn't use them.
+ * Makefile.in (mostlyclean): Remove crtbegin.o and crtend.o.
+
+Wed Jun 26 15:57:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.tgt (mips*-dec-osf*): New target.
+
+Tue Jun 25 22:15:29 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.
+ (AC_PROG_INSTALL): Added.
+ * configure: Rebuilt.
+
+Mon Jun 24 18:48:16 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * scripttempl/elfppc.sc (_GLOBAL_OFFSET_TABLE_): Don't do a
+ PROVIDE of _GLOBAL_OFFSET_TABLE_, since it needs to be at a
+ non-fixed location.
+
+Mon Jun 24 17:55:31 1996 Jouke Numan <jnuman@bazis.nl>
+
+ * ldlang.h (enum section_type): Define.
+ (lang_output_section_statement_type): Remove loadable field. Add
+ sectype field.
+ (lang_enter_output_section_statement): Change flags parameter in
+ prototype to sectype.
+ * ldgram.y (typebits): Remove.
+ (sectype): New static variable.
+ (opt_at): Use sectype rather than typebits.
+ (type): Set sectype rather than typebits.
+ (atype): Likewise.
+ * ldlex.l: Recognize DSECT, COPY, INFO, and OVERLAY in
+ EXPRESSION mode.
+ * ldlang.c (lang_output_section_statement_lookup): Set sectype
+ field rather than loadable field.
+ (wild_doit): Check sectype rather than loadable.
+ (lang_record_phdrs): Likewise.
+ (lang_enter_output_section_statement): Rename flags parameter to
+ sectype. Set sectype field rather than loadable field. Set flags
+ field based on sectype.
+
+Mon Jun 24 12:00:32 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/elf.sc: Force .stab* and .comment sections to start
+ at 0.
+
+ * configure.in: On alpha*-*-osf*, link against libbfd.a if not
+ using shared libraries.
+ * configure: Rebuild with autoconf 2.10.
+
+Fri Jun 21 17:40:56 1996 Joel Sherrill <joel@merlin.gcs.redstone.army.mil>
+
+ * configure.tgt: Add support for *-*-rtems* configurations.
+
+Fri Jun 21 13:05:51 1996 Richard Henderson <rth@tamu.edu>
+
+ * configure.tgt (alpha-*-linuxecoff*): New target.
+ (alpha-*-linux*): Use elf64alpha.
+ * emulparams/elf64alpha.sh: New file.
+ * emultempl/elf32.em: If ELFSIZE is not set, set it to 32. Use
+ ${ELFSIZE} rather than 32 when calling BFD routines.
+ (hold_rodata): New static variable.
+ (gld${EMULATION_NAME}_place_orphan): Use hold_rodata for a
+ readonly section that is not code.
+ (gld${EMULATION_NAME}_place_section): Set hold_rodata. Don't use
+ a .rel section unless its bfd_section field is not NULL.
+ * Makefile.in (ALL_EMULATIONS): Add eelf64alpha.o.
+ (eelf64alpha.c): New target.
+
+Fri Jun 21 12:45:46 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmisc.c (vfinfo): Correct handling of 0 in %W case.
+
+Thu Jun 20 13:55:28 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ Add enough support to understand the gcc svr3.ifile script:
+ * ldlex.l: Recognize BLOCK and GROUP in EXPRESSION context. Add
+ BIND keyword.
+ * ldgram.y: Add BIND token.
+ (section): Recognize GROUP.
+ (opt_ext_with_type): Recognize a couple of cases of BIND.
+ * ldlang.c (init_os): Don't do anything if section is already
+ initialized. Call exp_init_os on addr_tree field.
+ (exp_init_os): New static function.
+ (map_input_to_output_sections): Call exp_init_os on assignment
+ expression.
+ (lang_place_orphans): Check for common sections by name COMMON
+ rather than by common_section field. Don't warn about absence of
+ [COMMON] command.
+
+ * ldlang.h (lang_input_statement_type): Remove useless fields
+ common_section, common_output_section, and complained, as well as
+ all references to them.
+
+ * ldexp.c: Reindent a lot of code.
+ (exp_fold_tree): Call FAIL rather than einfo in default case.
+
+Wed Jun 19 11:40:14 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.host (m88*-*-dgux*): Quote HOSTING_CRT0. From
+ <randall.hron@medaphis.com>.
+
+Tue Jun 18 15:53:09 1996 Jeffrey A. Law <law@rtl.cygnus.com>
+
+ * scripttempl/h8300s.sc: New file for H8/S.
+ * emulpararms/h8300s.sh: New file for H8/S.
+ * Makefile.in (ALL_EMULATIONS): Add H8/S.
+ (e_h8300s.c): Add dependencies.
+ * configure.tgt: Add H8/S to targ_extra_emuls.
+
+Tue Jun 18 17:55:39 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.tgt (i[345]86*-*-isc*): New target. From
+ <uddeborg@carmen.se>.
+
+Wed Jun 12 12:46:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * lexsup.c: Include "libiberty.h".
+ (parse_args): Copy the -Y argument into memory.
+ (set_default_dirlist): Don't put the ':' back into the directory
+ list.
+
+Fri Jun 7 11:27:42 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/sunos.em: Include libiberty.h.
+ (gld${EMULATION_NAME}_set_symbols): New static function to add
+ LD_LIBRARY_PATH to the list of search directories.
+ (ld_${EMULATION_NAME}_emulation): Add new set_symbols routine.
+
+Thu Jun 6 11:50:31 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emulparams/elf32bmip.sh (OTHER_GOT_SYMBOLS): Use ALIGN(16)
+ rather than . when computing _gp value. From Per Fogelstrom.
+ * emulparams/elf32lmip.sh (OTHER_GOT_SYMBOLS): Likewise.
+
+ * ldmain.c (main): Don't close and unlink the file on error, since
+ remove_output will do it anyhow.
+ * ldlang.c (open_output): Set boolean variable to true, not 1.
+
+Wed Jun 5 18:34:14 1996 James G. Smith <jsmith@cygnus.co.uk>
+
+ * emulparams/{elf32b4300.sh,elf32l4300.sh} (SCRIPT_NAME): Use
+ elfmips instead of elf.
+
+Tue Jun 4 18:43:07 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldcref.c: New file.
+ * ld.h (add_cref, output_cref): Declare.
+ * ldmain.c (main): Initialize notice_all field. If it is set at
+ end of link, call output_cref.
+ (notice): Rename from notice_ysym. Check notice_all.
+ * ldmisc.c (finfo): Make globally visible.
+ * ldmisc.h (finfo): Declare.
+ * lexsup.c (OPTION_CREF): Define.
+ (ld_options): Add "cref".
+ (parse_args): Handle OPTION_CREF.
+ * Makefile.in: Rebuild dependencies.
+ (CFILES): Add ldcref.c.
+ (OFILES): Add ldcref.o.
+ * ld.texinfo, ld.1: Document --cref.
+
+Tue Jun 4 12:12:25 1996 Tom Tromey <tromey@csk3.cygnus.com>
+
+ * Makefile.in (install): Make $(tooldir) and $(tooldir)/bin.
+
+Fri May 31 12:40:55 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/pe.em (sort_sections): Don't assume that a
+ wild_statement has a section name.
+
+Wed May 29 13:13:35 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/elfmips.sc: Quote test -z argument.
+
+ * ld.texinfo: Clarify the CONSTRUCTORS command.
+
+Thu May 23 16:07:44 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em (gld${EMULATION_NAME}_read_file): Initialize
+ file, not impfile.
+
+Wed May 22 11:31:30 1996 Doug Evans <dje@seba.cygnus.com>
+
+ * ldlang.c (wild_doit): Don't copy over SEC_LINK_{ONCE,DUPLICATES}
+ if final link.
+ * emultempl/pe.em (sfunc): Renamed to sort_by_file_name.
+ (sort_by_section_name, sort_sections_1): New functions.
+ (sort_sections): Only sort by file name sections in .idata.
+ Add "Grouped Sections" support.
+ (gld${EMULATION_NAME}_place_orphan): Rewrite to support Grouped
+ Sections.
+ (gld${EMULATION_NAME}_place_section): Delete.
+ * scripttempl/pe.sc (.text,.data,.rdata): Add *(.foo\$).
+ (.CRT,.rsrc): Rewrite to use Grouped Section support.
+
+Tue May 21 14:31:48 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-eppcmac.c: Update to reflect changes to aix.em.
+
+Sun May 19 16:59:44 1996 Doug Evans <dje@seba.cygnus.com>
+
+ * ldlang.c (dprint_statement): Stop printing at end of list.
+
+Sat May 18 13:12:05 1996 Steve Chamberlain <sac@slash.cygnus.com>
+
+ Support for --force-exe-suffix
+ * ld.h (args_type): Add force_exe_suffix.
+ * ld.texinfo: Add documentation.
+ * ldmain.c (main): Add support for option.
+ * lexsup.c (OPTION_FORCE_EXE_SUFFIX): New.
+ (ld_options, parse_args): Add support for option.
+
+Wed May 15 12:50:25 1996 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * emultempl/pe.em (set_pe_value): Pass 0 not 16 to strtoul call.
+
+Fri May 10 16:28:44 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * scripttempl/elfppc.sc (__stack): Make __stack 0 if it was
+ referenced but not defined.
+
+Thu May 9 08:52:23 1996 Rob Savoye <rob@chinadoll.cygnus.com>
+
+ * emulparams/{elf32bmip.sh,elf32lmip.sh,mipsidt.sh,mipsidtl.sh}:
+ Set a new variable to signify if the final target is an embedded
+ system.
+ * scripttempl/{mips.sc,elfmips.sc}: Don't add SIZEOF_HEADERS to
+ .text for an embedded system.
+
+Tue May 7 10:56:11 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * scripttempl/pe.em (gld${EMULATION_NAME}_place_orphan): New function.
+ (gld${EMULATION_NAME}_place_section): New function.
+ (hold_{section,use,text,rdata,data}): New static locals.
+ (ld_${EMULATION_NAME}_emulation): Update orphan field.
+ * scripttempl/pe.sc: Whitespace cleanup. Semicolon usage cleanup.
+ (INIT,FINI): Delete, unused.
+ (.text): Document orphan .text.foo sections.
+ (.rdata): Document orphan .rdata.foo sections.
+ (.data): Document orphan .data.foo sections.
+
+Tue May 7 11:35:46 1996 Jeffrey A Law (law@cygnus.com)
+
+ * scripttempl/h8300.sc: Place ".tiny" sections right
+ after ".data" sections.
+ * scripttempl/h8300h.sc: Place ".tiny" sections into
+ the "tiny" memory region, 0xff8000 through 0xffff00.
+
+ * scripttempl/h8300.sc: Set the entry point to the value of
+ "_start" rather than the start of the text segment.
+ * scripttempl/h8300h.sc: Likewise.
+
+ * scripttempl/h8300.sc: Place .rodata sections before .text
+ sections in main ram.
+ * scripttempl/h8300h.sc: Likewise.
+
+Mon May 6 23:32:30 1996 Jeffrey A Law (law@cygnus.com)
+
+ * scripttempl/h8300h.sc: Use "eight", not "eightbit" for the
+ 8-bit region and 8-bit sections.
+
+Wed May 1 17:50:06 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * ldlang.c (section_already_linked): Fix typos.
+
+Mon Apr 29 20:31:06 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * scripttempl/pe.sc (.endjunk): Define __end__.
+
+Mon Apr 29 17:05:13 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (longest_section_name): Remove.
+ (SECTION_NAME_MAP_LENGTH): Define.
+ (print_size, print_alignment, print_fill, print_section): Remove.
+ (print_flags): Remove.
+ (lang_map): Rewrite.
+ (print_output_section_statement): Rewrite.
+ (print_assignment): Rewrite.
+ (print_one_symbol): Rewrite.
+ (print_input_section): Rewrite.
+ (print_fill_statement): Rewrite.
+ (print_data_statement): Rewrite.
+ (print_address_statement): New static function.
+ (print_reloc_statement): Rewrite.
+ (print_padding_statement): Rewrite.
+ (print_wild_statement): Rewrite.
+ (print_statement_list): Clean up.
+ (print_statement): Clean up. Some minor output changes.
+ (print_statements): Clean up.
+ (load_symbols): Put another - before -whole-archive.
+ * ldexp.c (exp_print_tree): Change etree_value and etree_rel to
+ print 0x and to omit leading zeroes. For etree_rel, use %B to
+ print the BFD. For etree_assign, remove the space after the
+ destination name.
+ * ldwrite.c: Include "libiberty.h".
+ (clone_section): Call xstrdup, not strdup.
+ (ldwrite): Don't print any map information.
+ (print_symbol_table, print_file_stuff, print_symbol): Remove.
+ * ldmain.c (main): Call lang_map when appropriate.
+ * ldmisc.c (vfinfo): Add support for %W.
+ (print_address): Remove.
+ * ldmisc.h (print_address): Don't declare.
+ * Makefile.in: Rebuild dependencies.
+
+Mon Apr 29 10:29:07 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * configure.host (m68*-*-linux*): Add -dynamic-linker to
+ HOSTING_CRT0. Search -lgcc both before and after -lc in
+ HOSTING_LIBS. Look for crt{begin,end}.o in the compiler directory
+ at first.
+ (i[345]86-*-linux*): Look for crt{begin,end}.o in the compiler
+ directory at first.
+
+Fri Apr 26 14:42:27 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmisc.h (demangle): Declare.
+ * ldmisc.c: Include "libiberty.h". Include demangle.h with "",
+ not <>.
+ (demangle): Make non-static. Remove remove_underscore paramter.
+ Always return an allocated string.
+ (vfinfo): Free result of demangle. Add case 'G'. Use %T to print
+ functionname, rather than calling demangle. Print a colon between
+ the BFD(section+offset) and the line number.
+ * ldmain.c (add_archive_element): Improve format of archive
+ information in map file.
+ (constructor_callback): Don't print anything to the map file.
+ * ldlang.c (lang_one_common): Improve format of common symbol
+ information in map file.
+ * ldctor.c (ldctor_build_sets): If producing a map file, print set
+ information.
+ * ldwrite.c (print_symbol_table): Print a newline before the
+ header in the map file.
+ * Makefile.in: Rebuild dependencies.
+
+ * ldmisc.c (vfinfo): Reindent.
+
+Mon Apr 22 12:07:32 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (lang_size_sections): If _cooked_size is not 0, then
+ don't clobber it when not relaxing.
+
+ * ld.h (ld_config_type): Remove traditional_format field.
+ * ldmain.c (main): Use link_info.traditional_format rather than
+ config.traditional_format.
+ * ldlang.c (ldlang_open_output): Likewise.
+ * lexsup.c (parse_args): Likewise.
+ * emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Likewise.
+ * mpw-eppcmac.c (gldppcmacos_parse_args): Likewise.
+
+ * ldlang.c (wild_doit): Discard debugging sections if we are
+ stripping debugging information.
+
+ * emulparams/z8002.sh (ARCH): Set to z8002, not z8k.
+
+Tue Apr 16 16:38:32 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldexp.c (fold_binary): Correct handling of subtraction with
+ absolute values.
+ (fold_name): Permit symbols in lang_allocating_phase_enum.
+
+ * scripttempl/aout.sc: Only PROVIDE __stack when RELOCATING. Undo
+ accidental changes in last patch.
+
+Tue Apr 16 10:25:42 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * configure.tgt (powerpc*-*-{sysv,linux}): Add aliases.
+ (powerpcle*-*-{sysv,solaris}): Ditto.
+
+Mon Apr 15 14:50:56 1996 Rob Savoye <rob@chinadoll.cygnus.com>
+
+ * scripttempl/aout.sc: Add PROVIDE (__stack = 0) so I can use it
+ in m68k/crt0.S without things blowing up.
+
+Fri Apr 12 16:40:56 1996 Rob Savoye <rob@chinadoll.cygnus.com>
+
+ * scripttempl/m68kcoff.sc: Remove default address for .data so
+ .text, .data, and .bss are all sequential.
+
+Thu Apr 11 12:05:35 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/m68kcoff.sc: Remove regions and simplify.
+
+Wed Apr 10 14:41:53 1996 Jeffrey A Law (law@cygnus.com)
+
+ * scripttempl/h8300.sc: Add the "8-bit area" in the upper 256
+ bytes of the address space. Put data from the ".eight" sections
+ into the 8-bit area.
+ * scripttempl/h8300h.sc: Likewise.
+
+Tue Apr 9 14:10:42 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * emultempl/generic.em (gld${EMULATION_NAME}_before_parse):
+ Pass $ARCH to ldfile_set_output_arch instead of setting
+ ldfile_output_architecture directly.
+
+Tue Apr 9 14:22:15 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * scripttempl/elfppc.sc (.init,.fini): Put .init, .fini section
+ next to .text. Put _etext after .text, .init, .fini, and
+ .rodata{,2} sections.
+
+Tue Apr 9 12:18:57 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo: Rearrange option documentation.
+
+ * lexsup.c (ld_options): New static array.
+ (parse_args): Build shortopts and longopts from ld_options array.
+ (help): New static function.
+ * ldver.h (help): Don't declare.
+ * ldver.c (ldversion): Reindent.
+ (help): Remove.
+
+ * ld.texinfo, ld.1: Mention -E as a synonym for -export-dynamic.
+
+Mon Apr 8 11:56:23 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/elf32.em: When checking for a native emulation, check
+ that the current emulation is the default emulation.
+ * emultempl/sunos.em: Likewise.
+
+ * configure.in: Permit --enable-shared to specify a list of
+ directories.
+ * configure: Rebuild.
+
+ * lexsup.c (parse_args): Add -E as a synonym for -export-dynamic,
+ for HP/UX compatibility.
+
+Fri Apr 5 14:30:14 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_check_ld_so_conf): New
+ static function, if ${host} = ${target}.
+ (gld${EMULATION_NAME}_after_open): Call check_ld_so_conf to find a
+ needed shared library if ${host} = $[target}.
+
+ * configure.host (i[345]86-*-linux*): Add -dynamic-linker to
+ HOSTING_CRT0. Search -lgcc both before and after -lc in
+ HOSTING_LIBS.
+
+ * configure.tgt: Add i[345]86-*-freebsdelf* target; from John
+ Polstra <jdp@polstra.com>.
+
+Fri Apr 5 18:11:25 1996 James G. Smith <jsmith@cygnus.co.uk>
+
+ * emulparams/elf32{b,l}4300.sh (MACHINE): Add explicit
+ architecture number.
+ * scripttempl/elf.sc: Use $MACHINE definition if present.
+ * configure.tgt (targ_extra_emuls): Force 4100 build to use same
+ template as 4300.
+
+Mon Apr 1 17:35:40 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (lang_size_sections): Change region check to handle
+ regions which end at the highest possible address correctly.
+ From Roland Weber <roweber@ira.uka.de>.
+
+ * ldlang.c (section_already_linked): New static function.
+ (wild_doit): Discard sections with SEC_EXCLUDE set if not doing a
+ relocateable link. Don't worry about section being NULL, since it
+ never should be. Don't call init_os unless the section is going
+ to be added.
+ (ldlang_add_file): Call section_already_linked for each section.
+ * ldmain.c (multiple_definition): Don't warn about multiple
+ definitions in sections which are being discarded.
+
+Sun Mar 31 00:30:47 1996 steve chamberlain <sac@slash.cygnus.com>
+
+ * scripttempl/{ppcpe.sc, pe.sc} (.junk): Remove and use /DISCARD/.
+ * emultempl/pe.em (init): Remove special case PPC code.
+
+Fri Mar 29 00:01:29 1996 Jeffrey A Law (law@cygnus.com)
+
+ * scripttempl/h8300.sc: Make vectors section 0xc4 bytes long
+ so as not to overwrite the magic syscall entry at 0xc4.
+ * scripttempl/h8300h.sc: Likewise.
+
+Thu Mar 28 11:05:47 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * configure.tgt (sparc64-*-solaris2*): Delete.
+ Stick with sparc-*-solaris2*.
+
+Wed Mar 27 12:33:24 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.h (DISCARD_SECTION_NAME): Define to "/DISCARD/".
+ * ldlang.c (init_os): Fail on an attempt to initialize any section
+ named DISCARD_SECTION_NAME.
+ (wild_doit): Discard input sections assigned to an output section
+ named DISCARD_SECTION_NAME.
+ * ld.texinfo: Document use of /DISCARD/.
+
+ * ldlang.c: Fix some indentation and comments.
+
+Tue Mar 26 18:14:49 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (main): Call bfd_set_error_program_name.
+
+Thu Mar 21 13:17:34 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo: Fix a couple of indexing entries. Mention that
+ --verbose displays builtin linker scripts.
+
+ * ldmisc.c (vfinfo): case 'I': If the file is not in an archive,
+ and the local symbol name does not match the filename, print the
+ filename as well.
+
+ Patches from John Polstra <jdp@polstra.com> for FreeBSD ELF:
+ * lexsup.c (parse_args): -Bshareable is a synonym for -shared.
+ * emulparams/elf_i386.sh (NONPAGED_TEXT_START_ADDR): Make the same
+ as TEXT_START_ADDR.
+
+Wed Mar 20 18:18:25 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * ld.texinfo: Fix typos. Use @pxref only inside parentheses.
+
+Wed Mar 20 16:56:15 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (add_wrap): New function.
+ * ldmain.h (add_wrap): Declare.
+ * lexsup.c (parse_args): Call add_wrap.
+
+Tue Mar 19 16:44:20 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * configure.host (sparc*-*-solaris2* host): Accept any sparc variant.
+
+Wed Mar 13 17:47:31 1996 Jeffrey A Law (law@cygnus.com)
+
+ * scripttempl/h8300.sc: Change name of page zero memory
+ from "null" to "vectors". Create an output section for
+ vectors. Add comments on how to explicitly place items
+ in the vector table.
+ * scripttempl/h8300h.sc: Likewise.
+
+Wed Mar 13 12:40:18 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/lnk960.em (machine_table): Add jx and hx.
+
+ * genscripts.sh: Don't use ${9:-xx}, since Ultrix /bin/sh doesn't
+ support it.
+
+Tue Mar 12 12:43:59 1996 David Mosberger-Tang <davidm@koala.azstarnet.com>
+
+ * ld.h (ld_config_type): Add warn_multiple_gp field.
+ * lexsup.c (parse_args): Handle --warn-multiple-gp.
+ * ldmain.c (warning_callback): Suppress multiple gp values warning
+ if --warn_multiple_gp was not used.
+ * ld.texinfo, ld.1: Document --warn-multiple-gp.
+
+Tue Mar 12 12:02:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * lexsup.c (parse_args): Handle --wrap.
+ * ldmain.c (main): Initialize link_info.wrap_hash.
+ * ldexp.c (fold_name): Use bfd_wrapped_link_hash_lookup in DEFINED
+ and NAME cases.
+ * ld.texinfo, ld.1: Document --wrap.
+
+ * configure: Rebuild with autoconf 2.8.
+
+ Don't do SunOS style dynamic linking for sparc-aout:
+ * configure.tgt (sparc64-*-aout*): Use sparcaout, not sun4.
+ (sparclite*-fujitsu-*, sparc*-*-aout): Likewise.
+ (sparc*-wrs-vxworks*): Likewise.
+ * emulparams/sparcaout.sh: New file.
+ * Makefile.in (ALL_EMULATIONS): Add esparcaout.o.
+ (esparcaout.c): New target.
+
+Wed Mar 6 16:06:52 1996 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * scripttempl/elfppc.sc (.sdata2, .sbss2): Implement Feb 2 change
+ in a different manner to work around differences in shell variable
+ expansion.
+
+Wed Mar 6 18:08:18 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldemul.h (ldemul_unrecognized_file): Declare.
+ (ldemulation_xfer_type): Add unrecognized_file field.
+ * ldemul.c (ldemul_unrecognized_file): New function.
+ * ldlang.c (load_symbols): If a file can not be recognized, call
+ ldemul_unrecognized_file before trying it as a linker script.
+ * aix.em (gld${EMULATION_NAME}_unrecognized_file): New static
+ function.
+ (gld${EMULATION_NAME}_read_file): Use FOPEN_RT, not "r".
+ (ld_${EMULATION_NAME}_emulation): Initialize unrecognized_file.
+
+Mon Mar 4 14:11:17 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (wild): Handle foo.a(.text) by mapping each included
+ member of foo.a separately. From Jouke Numan <jnuman@bazis.nl>.
+
+Fri Mar 1 10:24:59 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_find_exp_assignment):
+ Search trinary.cond rather than searching trinary.lhs twice.
+
+Tue Feb 27 15:08:43 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Edit out shared library support.
+ (@TDIRS@): Edit out, can't use genscripts.
+
+Tue Feb 27 15:09:21 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * configure.tgt (m68k-*-linuxaout*, m68k-*-linux*): New targets.
+ * emulparams/m68klinux.sh: New file.
+ * emultempl/linux.em (gld${EMULATION_NAME}_before_allocation):
+ Call bfd_${EMULATION_NAME}_size_dynamic_sections instead of
+ bfd_linux_size_dynamic_sections.
+ * Makefile.in (ALL_EMULATIONS): Add em68klinux.o.
+ (em68klinux.c): New target.
+ * configure.host (m68*-*-linuxaout*, m68*-*-linux*): New hosts.
+
+Tue Feb 27 12:55:46 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (ALL_EMULATIONS): Sort into alphabetical order.
+ Fill in missing entries.
+
+ * lexsup.c (parse_args): Recognize --no-whole-archive.
+ * ldlang.h (lang_input_statement_type): Add whole_archive field.
+ * ldlang.c (new_afile): Set whole_archive field.
+ (load_symbols): Check input file specific whole_archive field
+ rather than global variable.
+ * ld.texinfo, ld.1: Document --no-whole-archive.
+
+Tue Feb 20 16:07:00 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.tgt: Correct gldi960 to gld960.
+
+Mon Feb 19 11:16:44 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_check_needed): Check
+ the SONAME if it is available.
+ (gld${EMULATION_NAME}_stat_needed): Use the SONAME, not the
+ filename, when checking for conflicting library versions. Don't
+ assume that the suffix is only numbers and dots.
+
+ * ld.texinfo: Mention that -R can be used for -rpath.
+
+Sun Feb 18 15:05:17 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.host: Check for 'do not mix' from native linker before
+ trying to use -rpath.
+
+Thu Feb 15 13:58:06 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Remove explicit substitution of CFLAGS; autoconf
+ does it anyhow.
+ * configure: Rebuild.
+ * Makefile.in (LDFLAGS): Set to @LDFLAGS@.
+
+ * configure.in: Call AC_PROG_CC before configure.host.
+ * configure: Rebuild.
+ * configure.host: Remove go32 host, since it should no longer be
+ necessary. Don't set CC for romp host.
+
+ * scripttempl/elf.sc: Don't skip a page in virtual memory space if
+ the text segment ends exactly on a page boundary.
+
+ * configure.in: Substitute RPATH_ENVVAR.
+ * configure: Rebuild.
+ * configure.host: Set RPATH_ENVVAR.
+ * Makefile.in (RPATH_ENVVAR): New variable.
+ (check): Use $(RPATH_ENVVAR) rather than LD_LIBRARY_PATH.
+
+Wed Feb 14 18:49:01 1996 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * configure.in: Redo emulation handling so that each emulation
+ searches the correct tool directory, based on the target alias.
+ For example, "configure --enable-targets=m68k-coff i386-linux"
+ will search /usr/local/i386-linux/lib for linux and
+ /usr/local/m68k-coff/lib for m68k-coff.
+ * configure: Rebuild.
+ * configure.tgt: Add special tdir settings for Linux.
+ * Makefile.in: Add @TDIRS@. Pass "$(tdir_EMUL)" to ${GENSCRIPTS}
+ for each eEMUL.c target.
+ * genscripts.sh: Accept specific alias as 9th argument, and use it
+ in LIB_PATH.
+
+Wed Feb 14 16:38:36 1996 Martin Anantharaman <martin@mail.imech.uni-duisburg.de>
+
+ * ldlang.c (lang_set_startof): Don't do anything for a
+ relocateable link.
+
+ * ldgram.y (mri_script_file): Call mri_draw_tree.
+ * mri.c (mri_draw_tree): Make globally visible. Don't bother to
+ create memory regions.
+ (mri_load): Don't call mri_draw_tree.
+ * mri.h (mri_draw_tree): Declare.
+
+ * configure.tgt (m68*-*-psos): New target.
+ * emulparams/m68kpsos.sh: New file.
+ * scripttempl/psos.sc: New file.
+ * Makefile.in (ALL_EMULATIONS): Add em68kpsos.o.
+ (em68kpsos.c): New target.
+
+Wed Feb 14 11:09:25 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.tgt (*-*-ieee*): New target; use vanilla.
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Strip
+ `:foo' from ${ARCH}.
+
+Tue Feb 13 15:58:58 1996 Bryan Ford <baford@snake.cs.utah.edu>
+
+ * scripttempl/i386msdos.sc: Don't pad the .text section. Put
+ .rodata in .data.
+
+Tue Feb 13 14:04:19 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.host: Set HDLFLAGS for *-*-hpux with --enable-shared.
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_stat_needed): Warn if
+ it looks like we might be linking in two different versions of the
+ same shared library. Based on a patch from H J Lu <hjl@zoom.com>.
+
+Thu Feb 8 19:25:54 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (lang_size_sections): Increment the section size when a
+ padding statement is encountered.
+
+Wed Feb 7 14:01:33 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Look for --enable-shared. Change the value of
+ BFDLIB when linking against a shared library on SunOS.
+ * configure: Rebuild.
+ * configure.host: If using a shared BFD library, try to pass a
+ reasonable -rpath option when linking.
+ * Makefile.in (BFDLIB): Set to @BFDLIB@.
+
+Tue Feb 6 12:29:14 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ * emulparams/elf64_sparc.sh (ARCH): Change to `sparc:v9'.
+ * emultempl/generic.em: Strip `:foo' from ${ARCH}.
+
+Mon Feb 5 16:25:30 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ Support for building bfd and opcodes as shared libraries, based on
+ patches from Alan Modra <alan@spri.levels.unisa.edu.au>:
+ * configure.in (HLDFLAGS): New substitution.
+ * configure: Rebuild.
+ * configure.host: Set HLDFLAGS on SunOS.
+ * Makefile.in (HLDFLAGS): New variable.
+ (BFDDEP): New variable.
+ (BFDLIB): Change to -L../bfd -lbfd.
+ ($(LD_PROG)): Depend upon $(BFDDEP) rathern than $(BFDLIB). Use
+ $(HLDFLAGS) in link.
+ (check): Set LD_LIBRARY_PATH in the environment.
+
+Fri Feb 2 19:26:25 1996 Michael Meissner <meissner@wogglebug.tiac.net>
+
+ * scripttempl/elfppc.sc (.sdata2, .sbss2): Put .sdata2 and .sbss
+ in the read-only section, not read/write unless we are making a
+ shared library.
+ (.debug*): Add dwarf debug sections.
+ (.rela.{sdata*,sbss*}): Add sections.
+
+Fri Feb 2 16:50:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure: Regenerate.
+
+Thu Feb 1 10:50:46 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emulparams/elf_i386.sh (TEXT_START_ADDR): Change to 0x8048000,
+ for SVR4 compatibility.
+
+ * ldexp.c (exp_fold_tree): Correct handling of ABSOLUTE.
+
+Wed Jan 31 17:30:19 1996 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * configure.tgt (i[345]86-*-cygwin32, powerpcle-*-cygwin32): New.
+ * emultempl/pe.em (definfo init): Make the default stack reserve
+ of a PPC larger.
+
+Wed Jan 31 14:34:23 1996 Richard Henderson <rth@tamu.edu>
+
+ * configure.tgt (m68*-apple-aux*): New target.
+ * emulparams/m68kaux.sh: New file.
+ * scripttempl/m68kaux.sc: New file.
+ * Makefile.in (ALL_EMULATIONS): Add em68kaux.o.
+ (em68kaux.c): New target.
+
+Tue Jan 30 13:18:56 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Ignore
+ -bnoentry, since the right thing tends to happen anyhow.
+
+Mon Jan 29 12:29:26 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo, ld.1: Document -export-dynamic.
+
+Fri Jan 26 11:11:55 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * emultempl/sunos.em: Check for native compile by comparing
+ ${target} and ${host}.
+
+Thu Jan 25 16:46:58 1996 James G. Smith <jsmith@cygnus.co.uk>
+
+ * emulparams/{elf32b4300.sh, elf32l4300.sh}: Changed
+ TEXT_START_ADDR to allow use on IDT and PMON systems.
+
+Wed Jan 24 20:59:40 1996 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_parse_args):
+ correct spelling.
+
+Wed Jan 24 16:59:19 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ * configure.tgt (sparc64-*-solaris2*): New configuration.
+ (sparc64-*-aout*): Renamed from sparc64*.
+
+Mon Jan 22 13:01:35 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * Makefile.in (GENSCRIPTS): Pass @host@ @target@ @target_alias@.
+ * genscripts.sh: Set host, target and target_alias variables.
+ Check for native compile by comparing ${target} and ${host}.
+ * emultempl/elf32.em: Likewise.
+ * scripttempl/elfmips.sc: Test ${target}, not ${target_alias}.
+
+Mon Jan 22 11:03:23 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * scripttempl/elfppc.sc: Refine eabi support to better support
+ .sdata, .sdata2, .sbss, etc. sections.
+
+Tue Jan 16 15:16:58 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldgram.y (%union): Add phdr field.
+ (phdr): Use phdr_qualifiers rather than opt_hdrs and opt_at.
+ (phdr_qualifiers): New nonterminal. Add support for FLAGS.
+ (opt_hdrs, hdr): Remove.
+ (phdr_val): New nonterminal.
+ * ldlang.c (lang_new_phdr): Replace hdrs parameter with filehdr
+ and phdrs parameters. Add flags parameter.
+ (lang_record_phdrs): Update for changes to lang_phdr. Pass flags
+ to bfd_record_phdr.
+ * ldlang.h (struct lang_phdr): Replace hdrs field with filehdr and
+ phdrs fields. Add flags field.
+ (LANG_PHDR_FILEHDR, LANG_PHDR_PHDRS): Remove.
+ (lang_new_phdr): Update declaration.
+ * ld.texinfo: Document FLAGS.
+
+Mon Jan 15 15:07:19 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation):
+ Don't make a shared library because of an undefined reference to
+ __GLOBAL_OFFSET_TABLE_.
+
+ Add some Irix 5 support, mostly from Kazumoto Kojima
+ <kkojima@info.kanagawa-u.ac.jp>:
+ * emulparams/elf32bmip.sh (SCRIPT_NAME): Change to elfmips.
+ (SHLIB_TEXT_START_ADDR): Define.
+ (OTHER_GOT_SYMBOLS): Define.
+ (OTHER_READWRITE_SECTIONS): Remove initialization of _gp.
+ (EXECUTABLE_SYMBOLS): Don't define.
+ (DYNAMIC_LINK): Don't define.
+ * emulparams/elf32lmip.sh: Same changes as elf32bmip.sh.
+ * scripttempl/elfmips.sc: New file.
+ * configure.host (mips*-dec-bsd*): Change mips to mips*.
+ (mips*-sgi-irix4*): Likewise.
+ (mips*-sgi-irix5*): New entry.
+ * Makefile.in (eelf32bmip.c): Depend upon elfmips.sc rather than
+ elf.sc.
+ (eelf32lmip.c): Likewise.
+
+Sat Jan 13 09:41:43 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * scripttempl/elfppc.sc: Remove support for .rel.* sections. Add
+ .rela.got.neg section.
+
+Fri Jan 12 14:56:19 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/sh.sc: Only build constructors when CONSTRUCTING.
+
+ * ldmisc.c: Include <stdarg.h> rather than <varargs.h> if
+ ANSI_PROTOTYPES is defined. Remove special handling of
+ WINDOWS_NT. Various indendation fixes.
+ (vfinfo): Change fmt parameter to const char *.
+ (info_msg): Write <stdarg.h> version.
+ (einfo, minfo, finfo): Likewise.
+ (info_assert): Change file parameter to const char *.
+ * ldmisc.h (einfo, minfo, info_msg): If ANSI_PROTOTYPES is
+ defined, use a real prototype.
+ (info_assert): Change first parameter to be const char *.
+
+Fri Jan 12 13:29:55 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * scripttempl/elfppc.sc: Add support for .sdata2/.sbss2, etc. Add
+ in old support that 2.7.2 needs, but the current compiler does
+ not.
+
+ * Makefile.in (eelf32{,l}ppc.c): Fix up dependencies to use the
+ correct Linker script template.
+
+ * emulparams/elf32{,l}ppc.sh (TEXT_START_ADDR): Set to 0x40000,
+ not 0x400000.
+ (DATA_ADDR,NONPAGED_TEXT_START_ADDR): Delete.
+
+Tue Jan 9 15:53:02 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/alpha.sc: Put .rconst right after .rdata.
+
+Fri Jan 5 14:07:45 1996 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_before_allocation):
+ sort using right pointer.
+
+Fri Jan 5 12:25:47 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * scripttempl/elfppc.sc: Remove support for creating special
+ labels for eabi section begin/end here. The compiler now uses
+ crt{i,n}.o to create these symbols.
+
+Thu Jan 4 17:08:58 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.host: Change existing Linux HOSTING_CRT0 to be used
+ for a.out only, and put in appropriate HOSTING_CRT0 and
+ HOSTING_LIBS values for Linux ELF.
+
+Thu Jan 4 12:02:05 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * scripttempl/h8300.sc: Use all 64K for ram.
+ * scripttempl/h8300h.sc: Define 256K ram size.
+
+Thu Dec 21 15:57:18 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em (gld${EMULATION_NAME}_before_allocation): Pass
+ export_defines as true to bfd_xcoff_size_dynamic_sections if -unix
+ was used, regardless of whether -bE was used.
+
+Tue Dec 19 17:35:38 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em (gld${EMULATION_NAME}_after_open): Only set
+ relocateable before calling ldctor_build_sets if the output file
+ is in an XCOFF format.
+
+Fri Dec 15 16:34:36 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldwrite.c (build_link_order): When handling a data statement, if
+ the endianness of the output file is unknown, use the endianness
+ of the input file.
+
+Tue Dec 12 13:55:41 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-config.in: Recognize mips-*-* as equivalent to
+ mips-idt-ecoff.
+ * mpw-eppcmacos.c: Rename to shorter mpw-eppcmac.c.
+ * mpw-ld.r: Add version resources.
+ (cfrg): Use symbolic instead of literal name for executable.
+
+Mon Dec 11 15:13:41 1995 Kim Knuttila <krk@cygnus.com>
+
+ * scripttempl/ppcpe.sc (FINI): Moved the .reloc section.
+
+Wed Dec 6 14:33:50 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * ldlang.c (print_statement{,s}): Delete duplicate prototype.
+ (print_statement_list): Renamed from print_statement. All callers
+ updated.
+ (print_statement): New function to print just one statement.
+ (print_{data,reloc,padding}_statement): Don't crash if
+ output_section == NULL.
+ (dprint_statement): New function.
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_before_allocation): Fix
+ call to sort_sections.
+
+Wed Dec 6 14:59:06 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em (unix_ld): New static variable.
+ (gld${EMULATION_NAME}_parse_args): Handle -unix.
+ (gld${EMULATION_NAME}_before_allocation): If unix_ld, pass
+ gc as false and export_defineds as true to size_dynamic_sections.
+
+ * ldexp.c (exp_fold_tree): Permit assignments to dot in the final
+ phase if the current section is abs_output_section.
+
+
+Tue Dec 5 09:49:39 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_before_allocation): Fix call
+ to sort_sections.
+
+Fri Dec 1 16:48:36 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldgram.y (PHDRS): New token.
+ (ifile_p1): Accept phdrs.
+ (section): Accept phdr_opt at the end of the section definition.
+ (phdr_op): New nonterminal.
+ (phdrs, phdr_list, phdr, phdr_type, opt_hdrs, hdr): Likewise.
+ * ldlex.l: Accept PHDRS.
+ * ldlang.h (struct lang_output_section_phdr_list): Define.
+ (lang_output_section_statement_type): Add phdrs field.
+ (struct lang_phdr): Define.
+ (LANG_PHDR_FILEHDR, LANG_PHDR_PHDRS): Define.
+ (lang_new_phdr): Declare.
+ * ldlang.c (lang_phdr_list): New static variable.
+ (lang_output_section_statement_lookup): Initialize phdrs field.
+ (lang_process): Call lang_record_phdrs.
+ (lang_new_phdr): New function.
+ (lang_section_in_phdr): New function.
+ (lang_record_phdrs): New static function.
+ * ld.texinfo: Document PHDRS.
+
+Thu Nov 30 13:14:30 1995 Kim Knuttila <krk@cygnus.com>
+
+ * scripttempl/ppcpe.sc: Moved .edata into its own section to
+ expose it.
+
+Thu Nov 30 11:32:34 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
+
+ * configure.host (m68*-motorola-sysv): Define HOSTING_CRT0 and
+ HOSTING_LIBS for testing.
+ (m88*-motorola-sysv3): Define HOSTING_CRT0 and HOSTING_LIBS for
+ testing.
+
+Tue Nov 28 12:14:53 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * lexsup.c (parse_args): Set config.dynamic_link to false for -N
+ and -n.
+
+Mon Nov 27 13:12:09 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure: Rebuild with autoconf 2.7.
+
+Fri Nov 24 18:35:35 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * scripttempl/pe.sc: Two .junk's is too much junk.
+
+Tue Nov 21 16:14:32 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Use BFD_NEED_DECLARATION.
+ * acconfig.h: Put NEED_DECLARATION_FREE in @TOP@ section.
+ * configure, config.in: Rebuild with autoconf 2.6.
+
+ * ldmain.c (constructor_callback): Don't warn about BFD_RELOC_CTOR
+ being unsupported if this is not a relocateable link and the input
+ BFD supports it, since ldctor_build_sets can cope with that case.
+
+Fri Nov 17 16:23:15 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * configure.tgt (powerpc-*-macos*): New target.
+ * emulparams/ppcmacos.sh: New file, PowerMac emulation.
+ * Makefile.in (ALL_EMULATIONS): Add eppcmacos.o.
+ (eppcmacos.c): New target.
+ * mpw-eppcmacos.c: Update.
+ * mpw-make.sed: Edit out attempts to use {GENSCRIPTS}.
+
+Fri Nov 17 10:37:27 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (CC_FOR_TARGET): Use @host@ and @target@, not
+ $(host_canonical) and $(target_canonical).
+ (CXX_FOR_TARGET): Likewise.
+
+Thu Nov 16 11:23:42 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * scripttempl/pe.sc (.endjunk): Move definition of `end' to here
+ so the malloc heap begins at a sane place.
+
+Thu Nov 16 03:09:32 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ Version 2.6 released.
+ * ldver.c (ldversion): Update to 2.6.
+
+ * Makefile.in (mostlyclean): Delete ldemul-list.h here, but not
+ $(GENERATED_*FILES), since they need to be retained by distclean.
+ (maintainer-clean, realclean): Delete them here.
+
+Tue Nov 14 17:08:06 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_parse_args): Open the
+ base file with FOPEN_WB, not "w".
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Use the
+ environment variable LD_RUN_PATH if neither -rpath nor -rpath-link
+ were used.
+ (gld${EMULATION_NAME}_before_allocation): Use the environment
+ variable LD_RUN_PATH if -rpath was not used.
+ * ld.texinfo, ld.1: Document LD_RUN_PATH.
+
+Thu Nov 9 13:09:29 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Recognize
+ -bl and -bloadmap options.
+
+ * ldfile.c (ldfile_try_open_bfd): If bfd_error_invalid_target,
+ report a better error.
+
+ * emultempl/aix.em (gld${EMULATION_NAME}_before_allocation): Add
+ new local variable special_sections, and pass it to
+ size_dynamic_sections. Look through the results, and move the
+ sections around in the mapping so that they are defined correctly.
+
+Wed Nov 8 11:40:59 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldemul.c (ldemul_default_target): Cast getenv return value.
+
+Tue Nov 7 11:15:36 1995 Kim Knuttila <krk@cygnus.com>
+
+ * emulparams/ppcpe.sh (ARCH): New file for PowerPC Portable
+ Executable support.
+ * scripttempl/ppcpe.sc: New file for PowerPC Portable Executable
+ support.
+
+ * configure.tgt (targ_extra_emuls): Added powerpcle-pe target.
+ * Makefile.in (ALL_EMULATIONS): Added eppcpe.o target.
+
+ * emultempl/pe.em (TARGET_IS_ppcpe): file tailoring macro
+ (gld_$_before_allocation): added hooks for toc construction based
+ on the above macro.
+
+Tue Nov 7 11:47:23 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo: The linker does not use _main as an entry point.
+
+Tue Nov 7 11:46:11 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
+
+ * scripttempl/m88kbcs.sc (.data): Calculate next boundary modulo
+ 0x2000 not 0x200.
+
+Mon Nov 6 10:59:21 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Add test for whether free must be declared.
+ * sysdep.h: Declare free if necessary. Include "ansidecl.h".
+ * acconfig.h: Explain NEED_DECLARATION_FREE.
+ * configure, config.in: Rebuild.
+
+ * lexsup.c (parse_args): Take B:: out of shortopts.
+
+Sun Nov 5 03:08:28 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * emulparams/i386nbsd.sh (EXECUTABLE_SYMBOLS): Set __DYNAMIC to 0
+ for now, as with m68k4kbsd, until shared library support gets
+ done.
+
+ * configure.host: For i386 BSD variants, crt0.o lives in
+ /usr/lib. (True for NetBSD at least, unconfirmed for others.)
+
+Wed Nov 1 15:42:45 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
+
+ * Makefile.in (ALL_EMULATIONS): Add edelta68.o.
+ (edelta68.c): New target.
+ * configure.tgt (m68*-motorola-sysv*): New target.
+ * emulparams/delta68.sh: New file.
+ * scripttempl/delta68.sc: New file.
+
+ * scripttempl/m88kbcs.sc: Handle .init and .fini. Change section
+ addresses.
+
+Wed Nov 1 11:41:56 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldgram.y (mri_script_command): Accept ',' as well as '=' in
+ ALIGN and ALIGNMOD statements.
+
+ * emultempl/aix.em: Include ldgram.h.
+ (gld${EMULATION_NAME}_parse_args): Handle -pD and -pT, as used on
+ AIX 4.1.
+ * Makefile.in ($(EMULATION_OFILES)): Depend upon ldgram.h.
+
+Tue Oct 31 18:22:24 1995 David Mosberger-Tang <davidm@azstarnet.com>
+
+ * configure.host (alpha-*-linux*): New host.
+ * configure.tgt (alpha-*-linux*): New target.
+
+Tue Oct 31 12:36:52 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em (export_files): Remove.
+ (import_files): Make static.
+ (struct export_symbol_list): Define.
+ (export_symbols): New static variable.
+ (gld${EMULATION_NAME}_parse_args): Handle an initial -b option
+ correctly. Call read_file for an export file.
+ (gld${EMULATION_NAME}_before_allocation): Call
+ bfd_xcoff_export_symbol for each export symbol, rather than
+ calling read_file for each export file.
+ (gld${EMULATION_NAME}_read_file): For an export file, make the
+ exported symbols undefined, and store them on the export_symbols
+ list.
+
+Sat Oct 28 00:10:03 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_parse_args):
+ Don't hang if last option is unrecognised.
+ (gld_${EMULATION_NAME}_set_symbols): Insert created
+ symbols into ABS output section.
+
+Fri Oct 27 18:03:17 1995 Niklas Hallqvist <niklas@appli.se>
+
+ * Makefile.in (ALL_EMULATIONS): Added support for the NetBSD
+ m68k4k arch.
+ (em68k4knbsd.c): New rule.
+
+ * configure.tgt: Added support for the NetBSD m68k4k arch.
+
+ * genscripts.sh, ldint.texinfo,
+ emulparams/{a29k,armaoutb,armaoutl,coff_sparc,ebmon29k,gld960,
+ gld960coff,go32,h8300,h8300h,h8500,h8500b,h8500c,h8500m,h8500s,
+ hp300bsd,hp3hpux,hppaelf.sh,i386aout,i386bsd,i386coff,i386go32,
+ i386linux,i386lynx,i386nbsd,lnk960,m68kaout,m68kcoff,m68klynx,
+ m88kbcs,mipsbig,mipsbsd,mipsidt,mipsidtl,mipslit,news,ns32knbsd,
+ pc532machaout,riscix,sa29200,sh,shl,sparclynx,sparcnbsd,
+ st2000,sun3,sun4,vanilla,vax,vsta,w65,z8001,z8002}.sh: Changed
+ PAGE_SIZE to TARGET_PAGE_SIZE.
+
+ * emulparams/m68knbsd.h: Ditto.
+ (TEXT_START_ADDR, NONPAGED_TEXT_START_ADDR): We have 8K pagesize.
+ (EXECUTABLE_SYMBOLS): Hardcode __DYNAMIC to zero for the time
+ being.
+
+ * emulparams/m68k4knbsd.sh: New file.
+
+ * scripttempl/aout.sc: Expand EXECUTABLE_SYMBOLS if relocating.
+
+Fri Oct 27 17:59:09 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em: Include ldctor.h.
+ (gld${EMULATION_NAME}_after_open): New static function.
+ (gld${EMULATION_NAME}_before_allocation): Call find_relocs.
+ (gld${EMULATION_NAME}_find_relocs): New static function.
+ (gld${EMULATION_NAME}_find_exp_assignment): New static function.
+ (ld_${EMULATION_NAME}_emulation): Use new after_open function.
+ * scripttempl/aix.sc: Use CONSTRUCTORS in .data.
+ * ldctor.c (struct set_info): Move definition into ldctor.h.
+ (struct set_element): Likewise.
+ (sets): Make non-static.
+ (ldctor_add_set_entry): Add name parameter. Save it in the new
+ set element.
+ (ldctor_build_sets): Avoid being called twice. Pass set element
+ name to lang_add_reloc.
+ * ldctor.h (struct set_info): Move definition here from ldctor.c.
+ (struct set_element): Likewise. Add new field name.
+ (sets): Declare.
+ (ldctor_add_set_entry): Declare new name parameter.
+ * ldwrite.c (build_link_order): Don't insist that either name or
+ section be NULL in a lang_reloc_statement.
+ * ldmain.c (add_to_set): Pass NULL to ldctor_add_new_set_entry for
+ new name parameter.
+ (constructor_callback): Pass name to ldctor_add_new_set_entry for
+ new name parameter.
+
+ * ldmisc.c (demangle): Fix indentation. Remove a leading period.
+
+Thu Oct 26 22:22:49 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-config.in: Add PowerMac target support, generate config.h.
+ * mac-ld.r: New file, Mac resources.
+ * mpw-make.sed: New file, edits Makefile.in into MPW syntax.
+ * mpw-make.in: Remove.
+ * mpw-eppcmacos.c: Prebuilt version of PowerMac linking script.
+
+Thu Oct 26 14:11:26 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em (gld${EMULATION_NAME}_parse_args): Treat
+ -static as a synonym for -bnso.
+
+ * scripttempl/aix.sc: Move special symbols inside sections.
+ Always start .data at 0.
+
+Wed Oct 25 11:52:12 1995 Per Bothner <bothner@kalessin.cygnus.com>
+
+ * Makefile.in (diststuff): Also make info.
+ (maintainer-clean realclean): Also delete *.info*.
+
+Wed Oct 25 11:27:25 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em: Add support for various AIX linker options,
+ for AIX import and export files, and for AIX shared objects.
+ * scripttempl/aix.sc: Add .pad. Put .ds just before the TOC.
+
+ * ldmain.c (main): Initialize new field link_info.static_link.
+
+ * ldmain.c (add_keepsyms_file): Add \n at end of einfo calls.
+ (constructor_callback): Likewise.
+ * ldmisc.c (vfinfo): Likewise.
+ * ldwrite.c (build_link_order): Likewise.
+
+ * ld.texinfo: The MRI ALIGN directive is supported.
+
+Mon Oct 23 11:46:43 1995 James G. Smith <jsmith@pasanda.cygnus.co.uk>
+
+ * emulparams/elf32vr4300.sh: Deleted.
+ * emulparams/elf32vr4300el.sh: Deleted.
+ * emulparams/elf32b4300.sh: Added.
+ * emulparams/elf32l4300.sh: Added.
+ * configure.tgt, Makefile.in: Updated the build to use the
+ new 8.3 unique names.
+
+Thu Oct 19 17:41:46 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (entry_symbol): Make non-static.
+ * ldlang.h (entry_symbol): Declare.
+
+ * ldlex.l: Treat PROVIDE as a keyword in expression state.
+
+Wed Oct 18 17:34:06 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * scripttempl/pe.sc (.bss): Move to be after .text
+
+Tue Oct 17 12:22:05 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/sunos.em (gld${EMULATION_NAME}_find_exp_assignment):
+ Search trinary.cond rather than searching trinary.lhs twice. From
+ linli@ihp.PHys.ethz.CH.
+
+ * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Move
+ directory searching code into gld${EMULATION_NAME}_search_dir.
+ (gld${EMULATION_NAME}_search_dir): New static function, extracted
+ from gld${EMULATION_NAME}_find_so.
+ (global_needed, global_found): New static variables.
+ (gld${EMULATION_NAME}_after_open): New static function.
+ (gld${EMULATION_NAME}_search_needed): New static function.
+ (gld${EMULATION_NAME}_try_needed): New static function.
+ (gld${EMULATION_NAME}_check_needed): New static function.
+ (ld_${EMULATION_NAME}_emulation): Use new after_open function.
+ * ld.texinfo, ld.1: Mention -rpath-link on SunOS.
+
+ * Makefile.in (eelf32ppc.c): Depend upon elf32.em, not generic.em.
+ (eelf32lppc.c): Likewise.
+ * emulparams/elf32lppc.sh (TEMPLATE_NAME): Define as elf32.
+ (GENERATE_SHLIB_SCRIPT): Define as yes.
+
+Mon Oct 16 19:11:13 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/elf32.em: Struct bfd_elf_link_needed_list is now named
+ bfd_link_needed-list; make appropriate changes.
+
+ * configure.tgt (powerpc-*-aix*): New target; use aixppc.
+ (rs6000-*-aix*): New target; use aixrs6.
+ * emulparams/aixppc.sh, emulparams/aixrs6.sh: New files.
+ * emultempl/aix.em: New file.
+ * scripttempl/aix.sc: New file.
+ * Makefile.in (ALL_EMULATIONS): Add eaixppc.o and eaixrs6.o.
+ (eaixppc.c, eaixrs6.c): New targets.
+
+Fri Oct 13 14:00:37 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * scripttemp/pe.sc (.reloc): Move to the end.
+
+Tue Oct 10 17:53:22 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (lang_finish): Don't try to use an entry_symbol from a
+ section which was not linked into the final output.
+
+Tue Oct 10 10:17:22 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_parse_args): Fix
+ fatal typos.
+
+Tue Oct 10 01:01:51 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.h (args_type): Add rpath_link field.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Search for
+ required dependencies in rpath_link path. Only search
+ LD_LIBRARY_PATH when configured native.
+ * lexsup.c (parse_args): Recognize -rpath-link.
+ * ld.1, ld.texinfo: Document -rpath-link.
+
+Sat Oct 7 17:07:17 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Don't
+ bother searching for needed libraries unless doing a final link.
+
+Fri Oct 6 16:26:16 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ Mon Sep 25 22:49:32 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * ld/ld.1: Fix formatting bugs.
+
+Wed Oct 4 17:37:46 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldexp.c (exp_get_abs_int): Return bfd_vma, not int.
+ * ldexp.h (exp_get_abs_int): Update declaration.
+ * ldlang.c (print_output_section_statement): Use fprintf_vma to
+ print return value of exp_get_abs_int.
+
+Mon Oct 2 13:56:09 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/elf32.em (global_stat): New file static variable.
+ (gld${EMULATION_NAME}_try_needed): Call stat_needed to make sure
+ that the file has not already been included under another name.
+ (gld${EMULATION_NAME}_stat_needed): New static function.
+
+Fri Sep 29 12:00:18 1995 Doug Evans <dje@deneb.cygnus.com>
+
+ * scripttempl/armcoff.sc: Start .text at 0x8000.
+ Start .data at 0x40000.
+
+Fri Sep 29 11:09:46 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation): If
+ command_line.rpath is set, use it, rather than the -L options, to
+ build the rules section.
+ * ld.texinfo: Document this use of -rpath.
+
+ * lexsup.c (parse_args): Don't set link_info.shared for -assert
+ pure-text. Pass true, not 1, to lang_add_entry.
+ * emultempl/sunos.em (find_assign): New static variable.
+ (found_assign): New static variable.
+ (gld${EMULATION_NAME}_before_allocation): Rename local h to hdyn.
+ If not a relocateable link, and no start symbol was specified on
+ the command line, and there are any undefined symbols, set
+ link_info.shared. If link_info.shared is set, set the address of
+ the .text section to 0x20.
+ (gld${EMULATION_NAME}_find_assignment): Rename from
+ gld${EMULATION_NAME}_find_statement_assignment. If find_assign is
+ set, then just set found_assign based on whether an assignment is
+ found to find_assign.
+ (gld${EMULATION_NAME}_get_script): Don't use a special script when
+ producing a shared library.
+ * emulparams/sun4.sh (GENERATE_SHLIB_SCRIPT): Remove.
+ * scripttempl/aout.sc: Remove CREATE_SHLIB tests.
+ * ldlang.c (entry_from_cmdline): New global variable.
+ (lang_add_entry): Change cmdline parameter from int to boolean.
+ Use global entry_from_cmdline rather than function static
+ from_cmdline.
+ * ldlang.h (entry_from_cmdline): Declare.
+ (lang_add_entry): Change declaration of second parameter from int
+ to boolean.
+ * ldgram.y: Pass false, not 0, to lang_add_entry.
+
+Thu Sep 28 12:34:13 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.h (parsing_defsym): Declare.
+ * ldlex.h (lex_string): Declare.
+ * ldlex.l (lex_string): Define.
+ * lexsup.c (parsing_defsym): Define.
+ (parse_args): In OPTION_DEFSYM case, set lex_string before calling
+ lex_redirect, and clear it after calling yyparse. Set
+ parsing_defsym around call to yyparse.
+ * ldmain.c (main): Set lex_string before calling lex_redirect, and
+ clear it after calling yyparse.
+ * ldmisc.c (vfinfo): For %S, handle --defsym arguments and built
+ in linker scripts correctly.
+
+ * scripttempl/sparccoff.sc: Add .ctors/.dtors handling like other
+ COFF targets, allowing for the leading underscore used on SPARC
+ COFF.
+
+ * lexsup.c (parse_args): Handle -assert.
+ * emulparams/sun4.sh (GENERATE_SHLIB_SCRIPT): Define.
+ * emultempl/sunos.em (gld${EMULATION_NAME}_get_script): Use the
+ shared library script when appropriate.
+ * scripttempl/aout.sc: If CREATE_SHLIB is set, start the .text
+ section at SIZEOF_HEADERS.
+
+Thu Sep 28 01:40:37 1995 Doug Evans <dje@deneb.cygnus.com>
+
+ * Makefile.in (earmcoff.c): Build.
+ * configure.tgt (arm-*-coff): New target
+ * emulparms/armcoff.sh: New file.
+ * scripttempl/armcoff.sc: New file.
+
+Tue Sep 26 10:59:32 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/i386coff.sc: Remove .data2; no longer needed.
+
+Fri Sep 22 18:09:02 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldfile.c (ldfile_set_output_arch): Make arch const.
+
+Thu Sep 21 17:55:24 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * scripttempl/elfppc.sc: Correctly locate __bss_start at the
+ beginning of the .bss area, not at the end of data. Add
+ __sbss_{start,end} symbols.
+
+Wed Sep 20 12:29:36 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (CC_FOR_TARGET): Quote $(program_transform_name).
+ (CXX_FOR_TARGET, install): Likewise.
+
+Mon Sep 18 14:53:22 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patches by Alan Modra <alan@spri.levels.unisa.edu.au>:
+ * Makefile.in (CC_FOR_TARGET): Remove brokensed stuff.
+ (CXX_FOR_TARGET): Likewise.
+ (install): Likewise.
+ (GENERATED_HFILES): Remove config.h.
+ (.dep): Depend upon config.h.
+
+Mon Sep 18 14:39:38 1995 Arne H. Juul <arnej@pvv.unit.no>
+
+ * configure.tgt (mips*-dec-netbsd*): New target.
+
+Fri Sep 15 20:01:52 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * configure.host (m88*-*-dgux*): Fix another shell syntax error.
+
+Fri Sep 15 23:28:05 1995 Andrew Cagney <cagney@highland.com.au>
+
+ * configure.host (i[345]86-*-bsd*): Fix shell syntax error.
+
+Thu Sep 12 12:50:49 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * scripttemp/pe.sc: Allow both spellings of .ctors/.dtors.
+ Start .text section on the right boundary. Always align
+ stabs.
+
+Tue Sep 12 12:24:17 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (maintainer-clean): New target.
+
+ * ldmain.c (struct warning_callback_info): Define.
+ (warning_callback): Add new parameter symbol. Call
+ warning_find_reloc to try to find the section and VMA.
+ (warning_find_reloc): New static function.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
+ Pass NULL as symbol parameter to warning callback.
+
+ * ld.texinfo: Clarify -L option.
+
+ * ldlang.c (lang_one_common): Add cast to avoid warning.
+ (topower): Likewise. Also, reindent.
+ * ldwrite.c (clone_section): Change i to unsigned int.
+ * emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation): Add
+ cast to avoid warning.
+
+Fri Sep 8 16:32:43 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (config.status): Depend upon configure.tgt.
+
+ * ldemul.h (ldemul_set_symbols): Declare.
+ (ldemul_parse_args): Declare.
+ * ldemul.c (ldemul_parse_args): Fix indentation.
+
+ * configure.in: Call AC_HEADER_DIRENT.
+ * configure, config.in: Rebuild.
+ * emultempl/sunos.em: Use autoconf recommend mechanism to define
+ DIR and struct dirent.
+
+ * configure.tgt (mips*-*-bsd*): New case.
+
+ * configure.host (i[345]86-sequent-ptx* | i[345]86-sequent-sysv*)
+ New case.
+ * configure.tgt (i[345]86-*-ptx*): New case.
+
+Thu Sep 7 10:48:26 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * config.in: Rename from config.h.in.
+ * configure.in: Call AC_CONFIG_HEADER with config.h:config.in.
+ Check for config.h:config.in when creating stamp-h.
+ * configure: Rebuild.
+ * Makefile.in (stamp-h): Depend upon config.in rather than
+ config.h.in. Set CONFIG_HEADERS to config.h:config.in when
+ calling config.status.
+
+ * Makefile.in (distclean): Remove config.h and stamp-h.
+
+ * configure.host (sparc-*-sunos64*): Remove.
+ * ldlang.c (lang_map): Check BFD64, not HOST_64_BIT.
+
+ * ldexp.c (exp_fold_tree): Don't warn about moving the location
+ counter backward in the absolute section.
+
+Wed Sep 6 14:42:11 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Rewrite to use autoconf.
+ * configure.host: New file.
+ * configure.tgt: New file.
+ * aclocal.m4: New file.
+ * configure: New file, built by autoconf.
+ * acconfig.h: New file.
+ * config.h.in: New file, built by autoheader.
+ * sysdep.h: New file.
+ * ld.h: Incorporate old contents of config.h.
+ * config.h: Remove.
+ * Makefile.in: Various changes for new configure script. Also:
+ (CC_FOR_BUILD): Remove.
+ (ldmain.o): Don't bother to ensure that EMUL is non-empty.
+ (dep.sed): Use @SRCDIR@, not @srcdir@.
+ * dep-in.sed: Use @SRCDIR@, not @srcdir@.
+ * genscripts.sh: Create ldscripts if it does not exist.
+ * ldemul.c, lexsup.c, mpw-emipsidt.c: Don't include "config.h".
+ * mpw-esh.c, emultemp/*.em: Likewise.
+ * ldmain.c: Likewise. Include <ctype.h>. Don't try to set
+ HAVE_SBRK here.
+ * config/*.mt, config/*.mh: Remove.
+
+Tue Sep 5 14:55:24 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * configure.in: Treat ns32k-pc532-ux* like ns32k-pc532-mach*, and
+ ns32k-pc532-lites* like ns32k-pc532-netbsd*. From Ian Dall.
+
+Fri Sep 1 22:29:52 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * scripttempl/pe.sc: Fix typo in spelling of .ctors/.dtors.
+
+Fri Sep 1 13:13:29 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (warning_callback): Add abfd, section, and address
+ parameters.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
+ Change call to warning accordingly.
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): If not
+ relocateable and not shared, put .gnu.warning.SYMBOL sections into
+ the .text section.
+
+Fri Sep 1 08:35:16 1995 James G. Smith <jsmith@beauty.cygnus.com>
+
+ * configure.in: Added mips*vr4300-idt-elf* and
+ mips*vr4300el-idt-elf* targets.
+ * Makefile.in: Added eelf32vr4300* targets.
+ * emulparams/{elf32vr4300.sh, elf32vr4300el.sh}: Added.
+ * config/{mips-vr4300.mt, mips-vr4300el.mt}: Added.
+
+Fri Sep 1 10:51:45 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/a29k.sc: Fix to be reasonable. From Brendan Kehoe
+ <brendan@cygnus.com>.
+
+Thu Aug 31 16:37:07 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * ldemul.c (ldemul_parse_args): New.
+ * ldemul.h (ld_emulation_xfer_struct): Add parse_args.
+ * lexsup.c (all pe stuff): Moved into pe.em
+ (parse_args): Call emulation arg parser.
+ * emultempl/pe.em (parse_args): handle PE specfic args.
+
+Thu Aug 31 17:01:37 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (lang_memory_region_lookup): Don't use the first region
+ as the default region. Create a new region instead.
+
+Tue Aug 29 14:21:41 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * ldemul.c (ldemul_set_symbols): New function.
+ * ldemul.h (ld_emulation_xfer_struct): Add set_symbols.
+ * ldmain.c (main): Add call to ldemul_set_symbols.
+ * lexsup.c (set_pe_value): New args.
+ (set_pe_name): New.
+ (parse_args): Cope with new set_pe_value args.
+ * emultempl/pe.em (set_symbols): New function.
+ (ld_emulation_xfer_struct): Add set_symbols.
+ * scripttempl/pe.sc: Use new symbols.
+
+Thu Aug 24 18:12:18 1995 Ian Lance Taylor (ian@cygnus.com)
+
+ * lexsup.c (parse_args): Don't call set_default_dirlist for -O.
+ For -Y, ignore a leading `P,', and only call set_default_dirlist
+ after processing all the other arguments.
+
+Tue Aug 22 07:36:58 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * scripttempl/pe.sc: Keep .edata, don't base stabs at 0.
+ * emulparams/armpe.sh: Run PE script.
+
+Mon Aug 21 18:30:42 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * ldmain.c (main): Remove PE stuff.
+ * lexsup.c (options): Load more PE options.
+ (set_pe_value): New function.
+
+Thu Aug 17 13:35:49 1995 steve chamberlain <sac@slash.cygnus.com>
+
+
+ * emultempl/{armpe.sc, i386pe.sc}: Deleted.
+ * emultempl/pe.sc: New file performs generic PE support and sorts
+ archive members.
+ * emulparams/{armpe.sh,i386pe.sh}: Use new file.
+ * scripttempl/{armpe.sc, i386pe.sc}: Deleted
+ * scripttempl/pe.sc: New.
+ * Makefile.in: Use new files.
+
+Thu Aug 17 14:46:34 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * scripttempl/h8500s.sc (.rdata): All data must go in data segment.
+ (.strings,.ctors,.dtors): Likewise.
+
+Wed Aug 16 11:38:59 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * scripttempl/armpe.sc: Always start code at 0x401000, even
+ if -r.
+ * ldwrite.c (strdup): New extern declaration.
+ * ldgram.y (atype): New rule to clarify type parsing.
+ * ldlang.c (init_os): Remove commented out code.
+ (lang_size_sections): Set SEC_ALLOC and SEC_LOAD bits
+ unless told not to by the link script.
+
+Wed Aug 16 11:45:11 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (lang_set_startof): New static function.
+ (lang_process): Call it.
+
+ * ldgram.y: Tweak casesymlist to avoid bison errors.
+
+ * lexsup.c (parse_args): Accept -h as a synonym for --soname, for
+ Solaris compatibility.
+
+Tue Aug 15 17:31:16 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldgram.y (YYDEBUG): If not defined, define as 1.
+ (CASE, EXTERN, START): New tokens.
+ (mri_script_command): Handle CASE, EXTERN, INCLUDE, START.
+ (casesymlist): New nonterminal.
+ (extern_name_list): New nonterminal.
+ * ldlex.l: Accept lower case trailing base specifiers. Don't
+ ignore the first digit when the base is a suffix. Accept many
+ EXPRESSION state tokens in MRI state. Support MRI continuation
+ lines and MRI semicolon comments. Accept all MRI keywords in
+ lower case. Add CASE, EXTERN, and START MRI keywords.
+
+Tue Aug 8 19:14:58 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
+
+ * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Use xmalloc
+ instead of alloca.
+
+Tue Aug 8 15:24:05 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * Makefile.in (CC_FOR_TARGET, CXX_FOR_TARGET): Don't use
+ $r/../gcc/xgcc unless it is present.
+
+Thu Aug 3 11:56:22 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/m68kcoff.sc: Only put .ctors and .dtors in .text
+ when CONSTRUCTING.
+ * scripttempl/m68klynx.sc: Likewise.
+ * scripttempl/nw.sc: Likewise.
+ * scripttempl/sa29200.sc: Likewise.
+ * scripttempl/sparclynx.sc: Likewise.
+
+Fri Jul 28 12:02:23 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * emulparams/{z8001.sh, z8002.sh}: Fix typo.
+
+Thu Jul 27 21:06:21 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * configure.in (i[345]86-*-linuxoldld): Treat like linuxaout*.
+
+Thu Jul 27 15:26:28 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ * scripttempl/i386pe.sc: Cope with constructors.
+ * scripttempl/z8ksim.sc: Deleted.
+ * scripttempl/z8000.sc: Resurrected as this, but
+ can handle z8001 and z8002 formats.
+ * emulparams/z8ksim.sh: Deleted.
+ * emulparams/{z8001.sh, z8002.sh}: New files.
+ * config/z8ksim.mt: Deleted
+ * config/z8k-coff.mt: New, generates both emulations.
+
+Tue Jul 25 14:53:02 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmisc.c (vfinfo): In %C and %D case, always print the BFD using
+ %B, in case it is in an archive.
+
+Mon Jul 24 15:23:39 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (lang_process): Call reset_memory_regions for each
+ relaxation pass.
+
+Fri Jul 21 22:49:44 1995 Michael Meissner <meissner@cygnus.com>
+
+ * scripttempl/elfppc.sc: Add support for .sdata, .sbss, and
+ _SDA_BASE.
+
+Thu Jul 20 16:26:55 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * ldmain.c (constructor_callback): Allocate set_name in stack
+ frame, rather than always calling alloca with a fixed size.
+
+Wed Jul 19 16:21:43 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * emulparams/armpe.sh (OUTPUT_FORMAT): Change to pei-arm-little.
+ (LITTLE_OUTPUT_FORMAT, BIG_OUTPUT_FORMAT): Define.
+
+Mon Jul 17 13:57:00 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldwrite.c (clone_section): Set the alignment of the clone
+ section to that of the section being cloned.
+
+ * ldwrite.c (split_sections): Don't split the first input section
+ into a new output section.
+
+Sat Jul 15 00:26:35 1995 Michael Meissner <meissner@cygnus.com>
+
+ * emulparams/elf32ppc.sh (TEMPLATE_NAME): Define as elf32.
+ (GENERATE_SHLIB_SCRIPT): Define as yes.
+
+Fri Jul 14 12:11:46 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/mipsecoff.em (check_sections): Use %P, not %F.
+
+ * ldver.c (help): Update list of options to match currently
+ supported list.
+
+Thu Jul 13 13:52:10 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/lnk960.em (ld_lnk960_emulation): Initialize
+ after_open field.
+
+ * ldexp.c (exp_intop): Don't cast stat_alloc arg to bfd_size_type;
+ it takes a size_t anyhow.
+ (exp_binop): Likewise.
+ (exp_trinop): Likewise.
+ (exp_unop): Likewise.
+ (exp_nameop): Likewise.
+ (exp_assop): Likewise.
+ * ldlang.c (lang_memory_region_lookup): Likewise.
+ (init_os): Likewise.
+ (ldlang_add_undef): Likewise.
+ (insert_pad): Likewise.
+ * ldfile.c (ldfile_add_arch): Don't cast xmalloc arg to
+ bfd_size_type.
+
+ * Makefile.in (ALL_EMULATIONS): It's earmaoutb.o, not earmoutb.o.
+
+Wed Jul 12 11:32:22 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldemul.h (ldemul_open_dynamic_archive): Add search parameter to
+ declaration.
+ (ld_emulation_xfer_type): Add search parameter to
+ open_dynamic_archive entry point.
+ * ldemul.c (ldemul_open_dynamic_archive): Add search parameter.
+ * ldfile.c (ldfile_try_open_bfd): Rename from try_open_bfd, and
+ make non-static. Change all callers to use new name.
+ (ldfile_open_file_search): Make static. If entry is dynamic, call
+ ldemul_open_dynamic_archive.
+ (ldfile_open_file): Don't call ldemul_open_dynamic_archive.
+ * ldfile.h (ldfile_open_file_search): Don't declare.
+ (ldfile_try_open_bfd): Declare.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
+ Accept search parameter. Don't search for a library, just look in
+ a single place.
+ * emultempl/linux.em (gld${EMULATION_NAME}_open_dynamic_archive):
+ Likewise.
+
+Tue Jul 11 16:44:21 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (set_scripts_dir): Don't base script directory on
+ current directory.
+
+Tue Jul 11 12:29:02 1995 Rick Sladkey <jrs@world.std.com>
+
+ * ldmisc.c (vfinfo): Don't print the line number if it isn't
+ meaningful.
+
+Mon Jul 10 13:38:28 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.h (ld_config_type): Add field warn_constructors.
+ * ldmain.c (add_to_set): Warn if config.warn_constructors.
+ (constructor_callback): Likewise.
+ * lexsup.c (parse_args): Handle -warn-constructors.
+ * ld.texinfo, ld.1: Document -warn-constructors.
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_check_needed): Don't
+ get confused by directory names if we searched for the file.
+
+ Based on patches from H.J. Lu <hjl@nynexst.com>:
+ * ldlang.h (lang_input_statement_type): Add new field dynamic.
+ * ldlang.c (new_afile): Set dynamic from config.dynamic_link.
+ * ldfile.c: Include bfdlink.h.
+ (ldfile_open_file): Check dynamic field of entry, not global
+ dynamic_link field. Don't do a dynamic search when doing a
+ relocateable link.
+ * ldmain.c (main): Don't warn about dynamic_link for a
+ relocateable link.
+ * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Skip file if
+ dynamic is false.
+ (gld${EMULATION_NAME}_create_output_section_statements): Always
+ loop over input files.
+ * Makefile.in: Rebuild dependencies.
+
+ * ld.texinfo, ld.1: Document -Bstatic, -Bdynamic, -Bshared, and
+ -shared.
+
+Mon Jul 10 13:29:43 1995 Eric Youngdale <eric@aib.com>
+
+ * ldmain.c (main): Set link_info.symbolic to false.
+ * lexsup.c (parse_args): Handle -Bsymbolic.
+
+Wed Jul 5 00:12:11 1995 Fred Fish (fnf@cygnus.com)
+
+ * ldmain.c (HAVE_SBRK): Define for everything except
+ specific systems that are known to not support sbrk.
+ (main): Use HAVE_SBRK to decide whether or not to use sbrk.
+
+Tue Jul 4 12:55:48 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_find_exp_assignment):
+ Handle etree_provide.
+
+ * emultempl/elf32.em (global_needed): New static variable.
+ (global_found): Likewise.
+ (gld${EMULATION_NAME}_after_open): New static function.
+ (gld${EMULATION_NAME}_search_needed): Likewise.
+ (gld${EMULATION_NAME}_try_needed): Likewise.
+ (gld${EMULATION_NAME}_check_needed): Likewise.
+ (ld_${EMULATION_NAME}_emulation): Replace after_open_default with
+ gld${EMULATION_NAME}_after_open.
+
+Mon Jul 3 14:26:37 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * configure.in (i386-*-win32): New target.
+
+Mon Jul 3 14:39:22 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * lexsup.c (parse_args): Let -G either set the small data size or
+ be equivalent to --shared, depending on the next argument. Accept
+ and ignore -z for Solaris compatibility.
+
+Sun Jul 2 17:52:34 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * lexsup.c (parse_args): Cast fopen result to PTR before storing
+ it in link_info.base_file. Fix indentation.
+
+Wed Jun 28 17:11:25 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * ldmain.c (main): Always initialize PE info in link_info.
+ * lexsup.c (OPTION_BASE_FILE): New option.
+ (parse_args): Handle new option.
+ * emulparams/armpe.sh: Output pei.
+ * emultempl/i386pe.em: Add newline to end.
+ * scripttempl/armpe.sc: Change output and quote the $s.
+ * scripttempl/i386pe.sc: Change output and quote the $s.
+
+Thu Jun 22 19:55:41 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ Sun May 7 11:53:41 MDT 1995 Bryan Ford <baford@cs.utah.edu>
+
+ * configure.in (i386-*-msdos*, i386-*-moss*): New targets.
+ * Makefile.in (ALL_EMULATIONS): Added i386msdos.o.
+ (i386msdos.o): New target.
+ * config/i386-msdos.mt: Created.
+ * emulparams/i386msdos.sh: Created.
+ * scripttempl/i386msdos.sc: Created.
+
+Thu Jun 22 15:06:35 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * scripttempl/elfppc.sc (.fixup): Add support for a .fixup section
+ that contains pointers to be relocated.
+
+Tue Jun 20 17:47:20 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-esh.c: New file, modified for MPW from esh.c.
+ * scripttempl/sh.sc: Reformatted to simplify MPWification,
+ use *() to concat stab sections instead of [].
+
+Thu Jun 15 08:48:16 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * scripttempl/armpe.sc: Add constructor support.
+
+Tue Jun 13 09:11:20 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * ldlang.c (lang_size_sections): Any section with a DATA
+ statement has contents.
+
+Sun Jun 11 15:20:46 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * emulparams/m68kelf.sh (NOP): Define.
+ (DYNAMIC_LINK): Don't define.
+ (TEXT_START_ADDR): Set to 0x80000000; the extra 0x100 for headers
+ will come from the linker script.
+
+Thu Jun 8 14:17:33 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * emulparams/armpe.sh, scriptempl/armpe.sc: Add end and stack.
+
+Mon Jun 5 02:16:24 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
+
+ * configure.in (i[345]86-*-gnu*): Use GNU elf config.
+
+Thu May 25 11:49:28 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ From Andrew Cagney <cagney@highland.com.au>
+ * Makefile.in: Fixup more gotchas from renaming elf32ppcle to
+ elf32lppc.
+
+Wed May 24 11:23:21 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ Add support for ARM-PE.
+ * Makefile.in (ALL_EMULATIONS): Add armpe.o
+ * configure.in: Recognize armpe.
+ * config/arm-pe.mt: New file.
+ * emulparams/armpe.sh: New file.
+ * scripttempl/armpe.sc: New file.
+
+
+Mon May 22 15:19:26 1995 Doug Evans <dje@chestnut.cygnus.com>
+
+ * configure.in (h8300h-*-hms): Deleted
+ * config/cf-h8300h.mt: Deleted.
+
+Thu May 18 04:26:10 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
+
+ Wed May 10 14:28:16 1995 Richard Earnshaw (rearnsha@armltd.co.uk)
+
+ From David Taylor (dtaylor@armltd.co.uk)
+ * Makefile.in (ALL_EMULATIONS): Add earmout[lb].o
+ * configure.in: Recognize arm{,e[lb]-*-aout.
+ * config/arm[lb]-aout.mt: New files.
+ * emulparams/armaout[lb].sh: New files.
+ * scripttempl/armaout.sc: New file.
+
+Tue May 16 18:27:11 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * config/ppcle-elf32.mt (EMUL): Use elf32lppc, not elf32ppcle, to
+ be unique in 8 characters for DOS.
+
+ * emulparams/elf32lppc.sh: New file, renamed from elf32ppcle.sh.
+ * emulparams/elf32ppcle.sh: Deleted.
+
+Fri May 12 11:03:55 1995 Steve Chamberlain <sac@slash.cygnus.com>
+ Tom Griest <griest@cs.yale.edu>
+
+ Initial support for PE executables (eg NT, win32)
+
+ * Makefile.in (configure.in, ei386pe): Add support.
+ * ldmain.c (main): Initialize PE argument info.
+ * ldwrite.c (print_file_stuff): Don't print out .drectve
+ and .debug section info.
+ * lexsup.c (set_subsystem, set_stack_heap, OPTION_HEAP,
+ OPTION_SUBSYSTEM, parse_argsm set_subsystem, set_stack_heap):
+ Handle new arguments.
+ * config/i386-pe.mt, emultempl/i386pe.em, scripttempl/i386pe.sc:
+ New files
+
+Wed May 10 18:37:59 1995 Stu Grossman (grossman@andros.cygnus.com)
+
+ * scripttempl/hppaelf.sc: Remove .PARISC.unwind section from text
+ segment. This allows ld -r to preserve unwind sections.
+
+Tue May 9 17:19:57 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * configure.in: Add little endian PowerPC support.
+
+ * Makefile.in (ALL_EMULATIONS): Add eelf32ppcle.o.
+ (eelf32ppcle.c): Support for little endian PowerPC.
+
+ * config/ppcle-elf32.mt: New file for little endian PowerPC.
+ * emulparams/elf32ppcle.sh: Ditto.
+
+Wed May 3 12:56:32 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * ldlang.c (print_output_section_statement): Check
+ subsection_alignment, instead of checking section_alignment twice.
+ Noticed by Alan Modra <alan@spri.levels.unisa.edu.au>.
+
+Tue May 2 16:36:07 1995 Jeff Law (law@snake.cs.utah.edu)
+
+ * configure.in (hppa*-*-lites*): Handle like hppa*-*-*elf*.
+
+Mon Apr 24 19:21:02 1995 Michael Meissner <meissner@cygnus.com>
+
+ * ldwrite.c (ldwrite): Before doing anything, reset the error
+ code. If bfd_final_link returns an error, but the error code is
+ unset, don't issue an extra message. Assume a correct error
+ message was already set.
+
+Fri Apr 14 16:31:24 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in (ALL_EMULATIONS): Added em68kelf.o.
+ (em68kelf.o): New target.
+ * config/m68k-elf.mt, emulparams/m68kelf.sh: New files.
+ * configure.in: Use them for m68*-*-elf.
+
+Tue Apr 11 12:02:03 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ Merge in support for Mac MPW as a host.
+ (Old change descriptions retained for informational value.)
+
+ * mpw-config.in (i386-unknown-aout): Change to i386-unknown-go32.
+ (i386-unknown-coff): Remove.
+ (sh-hitachi-hms): New target.
+ (emulation_ofiles): Set correctly for each target.
+ (version, TDEFINES): Add to makefile fragment.
+ * mpw-make.in (BISON): Use byacc instead of bison.
+ (em_*.c): Replace with e*.c everywhere.
+ (ldgram.h): Separate action from ldgram.c generation.
+ (LD_PROG): Depend on Version.r.
+ (Version.r): generate from version info.
+ * mpw-emipsidt.c: New file, modified for MPW from emipsidt.c.
+
+ * mpw-config.in (m68k-apple-macos, ppc-apple-macos,
+ i386-unknown-aout, i386-unknown-coff): New targets.
+ (m68k-aout, m68k-coff): Remove targets.
+ (mk.tmp): Add definition of EMUL.
+
+ * mpw-config.in (emulname): Set based on target.
+ (ldemul-list.h): Construct.
+ * mpw-make.in (install-only): New target.
+ (install): Depend on install-only.
+
+ * mpw-make.in (bindir): Fix pathname.
+ (install): Move here from mpw-build.in.
+
+ * mpw-config.in: New file, MPW configuration fragment.
+ * mpw-make.in: New file, MPW makefile fragment.
+ (This file is semi-automatically generated from Makefile.in.)
+ * ldfile.c (slash): If MPW, set to `:'.
+ * ldlex.l (TRUE_FALSE_ALREADY_DEFINED): If MPW, set this to
+ prevent redefinition errors.
+
+Tue Apr 4 17:55:18 1995 Steve Chamberlain <sac@bang.hack.com>
+
+ * ldwrite.c (clone_section): Align clone sections on even
+ boundaries.
+
+Thu Mar 30 14:32:26 1995 H.J. Lu (hjl@nynexst.com)
+
+ * configure.in: Change linux to default to elf. Using
+ i[345]86-*-linuxaout will build a linker which defaults to a.out.
+ * config/i386-laout.mt: Rename from old config/i386-linux.mt.
+ * config/i386-linux.mt: Rename from old config/i386-lelf.mt.
+ * config/i386-lelf.mt: Remove.
+
+Thu Mar 30 13:09:46 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (main): If opening the map file fails, call
+ bfd_set_error before calling einfo.
+
+ * ld.texinfo, ld.1: Document the -no-keep-memory option.
+
+Mon Mar 27 11:10:08 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (main): Revert patch of March 10, since the SVR4 linker
+ does mark shared libraries as executable.
+
+Tue Mar 21 15:15:38 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (lang_common): Change power to int. Pass larger values
+ before smaller values.
+ (lang_one_common): Treat info as int *. Don't bother to check for
+ last value, since it is now zero.
+
+Sat Mar 18 01:49:14 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (load_symbols): An empty archive is OK.
+
+Fri Mar 17 16:15:31 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * ldmain.c (progress.h): Include.
+ (main): Call START_PROGRESS and END_PROGRESS.
+
+Thu Mar 16 17:17:33 1995 Michael Meissner <meissner@cygnus.com>
+
+ * scripttempl/elfppc.sc: Move _GOT2_END_ after the .ctors and
+ .dtors sections, so that these pointers get relocated also.
+ Define the symbols __{C,D}TOR_{LIST,END}__ to mark the beginning
+ and end of the constructors/destructors.
+
+Thu Mar 16 13:59:14 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
+
+ * ldlang.c (load_symbols): If whole_archive is true and ENTRY
+ describes an archive, call bfd_link_add_symbols on each member.
+ * ldmain.c (whole_archive): New variable.
+ (main): Initialize it to false.
+ * ldmain.h: Declare whole_archive.
+ * lexsup.c (parse_args): Grok --whole-archive switch.
+ * ld.texinfo, ld.1: Document --whole-archive.
+
+Thu Mar 16 11:38:48 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * genscripts.sh (EMULATION_NAME): Set LIB_PATH to empty when not
+ using the default emulation.
+
+ * config/dgux.mh (HOSTING_EMU): Use -m rather than trying to set
+ LDEMULATION.
+ * config/hppaelf.mh (HOSTING_EMU): Likewise.
+
+Tue Mar 14 12:28:03 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Set force_maj
+ for -lc.N. From H.J. Lu <hjl@nynexst.com>.
+
+Fri Mar 10 14:43:48 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (main): Don't set EXEC_P if link_info.shared is set.
+
+ * ldlex.l: Return -lFILENAME as the token LNAME.
+ * ldgram.y: Add token LNAME.
+ (input_list): Treat LNAME like NAME, but pass it to
+ lang_add_input_file as lang_input_file_is_l_enum.
+ * ld.texinfo: Document using -lFILENAME in INPUT.
+
+Thu Mar 9 12:21:51 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * ldlang.c (lang_check): If the architectures are compatible call
+ bfd_merge_private_bfd_data to let the backend do additional
+ checks.
+
+Tue Mar 7 00:53:08 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldemul.c (ldemul_choose_mode): If emulation not recognized, list
+ all supported emulations.
+
+Mon Mar 6 14:03:50 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldemul.c (ldemul_list_emulations): New function.
+ * ldemul.h (ldemul_list_emulations): Declare.
+ * ldver.c (help): List supported targets and emulations.
+
+Fri Mar 3 15:40:36 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * scripttempl/elf.sc (.debug): Relocate to address 0.
+ (.debug_srcinfo, .debug_aranges, .debug_pubnames,
+ .debug_sfnames, .line): Likewise.
+
+Fri Mar 3 17:07:14 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/elf32.em (hold_rel): New static variable.
+ (gld${EMULATION_NAME}_place_orphan): Place readonly sections with
+ contents whose names begin with ".rel" after hold_rel. Remove the
+ assertion which checked for unplaced .rel sections. Don't try to
+ sort the section into place if place->bfd_section is NULL.
+ (gld${EMULATION_NAME}_place_section): Set hold_rel to the first
+ section beginning with ".rel".
+
+Thu Mar 2 14:34:43 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ Doc note from pierre@phi.la.tce.com (Pierre Willard):
+ * ld.texinfo: -X and -x work even if -s or -S are not specified.
+ * ld.1: Similar change.
+
+Wed Mar 1 13:51:16 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emulparams/gld960coff.sh (COFF_CTORS): Define.
+ * scripttempl/i960.sc: Use COFF_CTORS if CONSTRUCTING.
+
+Tue Feb 28 12:42:56 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in (i[345]86-*-linuxelf*): New target. Use i386-lelf.
+ (i[345]86-*-gnuelf*): New target. Use i386-gelf.
+ * config/i386-lelf.mt: New file.
+ * config/i386-gelf.mt: New file.
+
+Tue Feb 28 10:27:54 1995 Rob Savoye <rob@darkstar.cygnus.com>
+
+ * configure.in: Match on mips-ecoff, and default to the IDT
+ configuration.
+
+Fri Feb 17 13:06:47 1995 Michael Meissner <meissner@cygnus.com>
+
+ * scripttempl/elfppc.sc: Add support for .got1 and .got2 sections.
+ Offset _GLOBAL_OFFSET_TABLE_ 32768 from the start of the GOT area
+ to double the size of the table.
+
+Thu Feb 9 18:29:43 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in (distclean): Do recursive deletion, since ldscripts
+ is a directory.
+
+Thu Feb 9 11:38:22 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (main): If trace_file_tries is true, and we are using
+ an internal linker script, print out the script.
+ * ldfile.c (try_open): Reindent function. Make the messages about
+ opening script files more informative.
+
+ * lexsup.c (parse_args): For -V, call ldversion with 1, not 0.
+ * ld.texinfo, ld.1: Update accordingly.
+
+Wed Feb 8 17:34:45 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (lang_one_common): Adjust references to common symbol
+ information for new structure.
+
+Mon Feb 6 12:17:24 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldmain.c (undefined_symbol): Handle section being NULL.
+
+ * ldctor.c (ldctor_build_sets): Handle bfd_link_hash_defweak.
+ * ldexp.c (fold_name): Likewise.
+ * ldlang.c (print_one_symbol): Likewise.
+ (lang_finish): Likewise.
+ * ldmain.c (multiple_common): Likewise.
+ * ldwrite.c (print_symbol): Likewise. Also, bfd_link_hash_weak
+ renamed to bfd_link_hash_undefweak.
+
+ * scripttempl/alpha.sc: Set address of .data section correctly
+ when -n or -N is used. Patch from Chris G Demetriou
+ <Chris_G_Demetriou@LAGAVULIN.PDL.CS.CMU.EDU>.
+ * scripttempl/mips.sc: Similar change.
+
+Tue Jan 31 16:20:52 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * ldlang.c (lang_size_sections): Clarify error message when user
+ specified start addr conflicts with region. Fix resetting of
+ region pointer.
+
+Tue Jan 31 12:37:09 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldexp.c (fold_name): In case NAME, permit an absolute symbol
+ in lang_allocating_phase_enum.
+
+Mon Jan 30 11:33:25 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (distclean): Depend upon clean. Don't bother to
+ remove files which will be removed by clean. From patch by
+ alan@SPRI.Levels.UniSA.Edu.Au (Alan Modra).
+
+Fri Jan 27 16:27:34 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): For
+ a MIPS target, clobber the size of all but the first input
+ .reginfo section to be 0, so that lang_size_sections sets the
+ correct size for the output .reginfo section.
+
+Thu Jan 26 19:53:37 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
+ Remove unused variable is.
+
+Thu Jan 26 12:33:05 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * configure.in: Add support for powerpc-*-eabi.
+
+ * scripttempl/elfppc.sc: New file for PowerPC embedded ABI
+ support.
+
+ * emulparams/elf32ppc.sh (SCRIPT_NAME): Use elfppc.sc instead of
+ elf.sc, which defines some new symbols PowerPC elf needs.
+
+Tue Jan 24 10:32:15 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ldctor.c (ldctor_add_set_entry): Don't dump core if a
+ constructor entry is in the absolute section.
+
+Mon Jan 23 13:58:13 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * configure.in (i[345]86-*-gnu*): Set ld_target to i386-gnu.
+ * config/i386-gnu.mt: New file. Include ELF support.
+
+Thu Jan 19 16:22:11 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): If
+ there are any input sections named .gnu.warning, treat them as
+ containing a warning message to be printed by the linker, and
+ clobber the size so that the message is not copied into the output
+ file.
+ * scripttempl/elf.sc: Put .gnu.warning sections into the .text
+ section.
+
+Sun Jan 15 16:45:00 1995 Steve Chamberlain <sac@splat>
+
+ * configure.in (w65-*-*): New target.
+ * Makefile.in: Update.
+ * scripttempl/w65.sc: New.
+ * config/coff-w65.mt: New.
+
+Thu Jan 12 01:32:25 1995 Ian Lance Taylor <ian@tweedledumb.cygnus.com>
+
+ * ldlang.c (lang_place_orphans): Don't ignore files with
+ just_syms_flag set. Instead, put all their sections in
+ bfd_abs_section_ptr, using the section VMA as the output_offset.
+
+Wed Jan 11 22:59:09 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * ldctor.c (ldctor_build_sets): Don't use `const' with typedef
+ name `reloc_howto_type', since it's now defined to be const.
+ * ldlang.c (lang_add_reloc): Ditto.
+ * ldlang.h (lang_reloc_statement_type, lang_add_reloc): Ditto.
+
+Wed Jan 11 11:24:45 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ldexp.c (fold_binary): Adding or subtracting an absolute value
+ to a relative value does not require forcing the relative value to
+ be absolute. Also, reindent function.
+
+Wed Dec 28 22:05:52 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * ldwrite.c (clone_section): Create a symbol with the
+ same name as the section.
+
+Mon Dec 19 14:02:13 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * ld.h (split_by_reloc, split_by_file): New flags.
+ * ldwrite.c (clone_section, split_sections): New functions.
+ * lexsup.c (parse_args): Understand new split options.
+
+Fri Dec 9 17:22:55 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * scripttempl/elf.sc: Move .ctors and .dtors from .text segment to
+ .data segment. They must be writable when creating a shared
+ library. From H.J. Lu <hjl@nynexst.com>.
+
+Fri Dec 2 14:09:00 1994 Ian Lance Taylor <ian@rtl.cygnus.com>
+
+ * emultempl/miposecoff.em: New file.
+ * emulparams/mipsidt.sh (TEMPLATE_NAME): Set to mipsecoff.
+ * emulparams/mipsidtl.sh (TEMPLATE_NAME): Likewise.
+ * scripttempl/mips.sc: Put .rel.sdata sections in .text, and
+ provide __runtime_reloc_start and __runtime_reloc_stop if they are
+ used. Align _fdata to a 16 byte boundary.
+ * Makefile.in (emipsidt.c): Depend upon mipsecoff.em rather than
+ generic.em.
+ (emipsidtl.c): Likewise.
+ (check): Pass CC_FOR_HOST and CFLAGS_FOR_HOST to runtest.
+
+ * ld.h (args_type): Add new field embedded_relocs.
+ * ldemul.h (ldemul_after_open, after_open_default): Declare.
+ (ld_emulation_xfer_struct): Add new field after_open.
+ * ldemul.c (ldemul_after_open): New function.
+ (after_open_default): New function.
+ * ldlang.c (lang_process): Call ldemul_after_open.
+ * lexsup.c (parse_args): Handle --embedded-relocs.
+ * emultempl/elf32.em (ld_${EMULATION_NAME}_emulation): Initialize
+ new after_open field to after_open_default.
+ * emultempl/generic.em, emultempl/gld960.em: Likewise.
+ * emultempl/gld960c.em, emultempl/hppaelf.em: Likewise.
+ * emultempl/linux.em, emultempl/m88kbcs.em: Likewise.
+ * emultempl/sunos.em, emultempl/vanilla.em: Likewise.
+ * ld.texinfo, ld.1: Mention -embedded-relocs.
+
+Wed Nov 23 22:04:47 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * Makefile.in: Add eshl.o.
+ * config/coff-sh.mt: Add shl emulation.
+
+Tue Nov 22 11:55:37 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * scripttempl/elf.sc: Fill .text section with NOPS. From Eric
+ Youngdale <eric@aib.com>.
+
+Thu Nov 17 14:39:48 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ Patches from pirker@eiunix.tuwien.ac.at (Martin Pirker).
+ * config/i386linux.mh: New file; set HOSTING_CRT0.
+ * genscripts.sh: Don't put ${libdir} in LIB_PATH if it is
+ /usr/lib, since that is already in LIB_PATH.
+
+Wed Nov 16 10:03:03 1994 Jeff Law (law@snake.cs.utah.edu)
+
+ * scripttempl/hppaelf.sc (.text): Handle a use rdefined text start
+ address.
+ (.data, .bss): If "-N", then place the data/bss just after the end
+ of the .text section rather than at the default 0x40000000.
+
+ * scripttempl/hppaelf.sc (.text): Place unwind descriptors in the
+ text segment.
+
+Sat Nov 12 15:55:56 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ Patches from Eric Youngdale <eric@aib.com>:
+ * ldlang.c (lang_finish): Don't warn if entry symbol not found
+ when generating a shared library.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Warn if
+ attempting to place an orphaned relocation section when generating
+ a dynamically linked object.
+
+ * scripttempl/elf.sc: Add ENTRY(${ENTRY}), and default ${ENTRY} to
+ _start.
+
+Fri Nov 11 14:27:23 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ld.h (args_type): Add field export_dynamic.
+ * lexsup.c (parse_args): Recognize --export-dynamic.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
+ Pass export_dynamic argument to bfd_elf32_size_dynamic_sections.
+
+Wed Nov 9 12:47:11 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ldlang.c (lang_one_common): Set SEC_ALLOC in any section where
+ we allocate common symbols.
+
+Tue Nov 8 17:50:43 1994 Eric Youngdale (eric@aib.com)
+
+ * scripttempl/elf.sc: Add .rel.init, .rela.init, .rel.fini, and
+ .rela.fini to the list of .rel* sections.
+
+Tue Nov 8 17:47:45 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ldlang.c (load_symbols): Add new argument place. Only accept
+ linker scripts if place is not NULL. Put commands found in an
+ assumed linker script into place.
+ (lookup_name): Pass NULL as place argument to load_symbols.
+ (open_input_bfds): In lang_input_statement_enum case, pass a place
+ argument to load_symbols, and store any new statements after the
+ current one.
+
+Mon Nov 7 15:53:02 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * ldver.c (ldversion): Bump to 2.5.3.
+
+Fri Nov 4 15:11:26 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in (e*nbsd.c): Fix typo in dependencies.
+
+Thu Nov 3 19:35:44 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * Makefile.in (check): Add missing "else true" clause.
+
+ * emulparams/vax.sh (OUTPUT_FORMAT): Use "a.out".
+
+ * scripttempl/go32coff.sc: Changes from DJ Delorie: Change default
+ entry point to "start". Align at end of each section to 0x200.
+ Start .text section 0x1000 later. Add _etext, _edata, _end
+ symbols.
+
+Wed Nov 2 12:17:49 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ldctor.c (ldctor_add_set_entry): Don't permit a set to be
+ composed of different object file formats.
+ (ldctor_build_sets): If the output format does not support the
+ reloc, and we are not generating a relocateable link, try getting
+ the reloc from the input format.
+
+Tue Nov 1 10:30:19 1994 J.T. Conklin (jtc@rtl.cygnus.com)
+
+ * Makefile.in (ALL_EMULATIONS): Added em68knbsd.o.
+ (em68knbsd.c): New target.
+
+ * config/m68k-nbsd.mt: New file.
+ * emulparams/m68knbsd.sh: New file.
+ * configure.in (m68*-*-netbsd*): Use above configs.
+
+Mon Oct 31 19:35:17 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): If we find an
+ appropriately named static library, stop the search at that
+ directory.
+
+Wed Oct 26 13:59:12 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
+
+ * Makefile.in (ALL_EMULATIONS): Added ei386nbsd.o, ens32knbsd.o
+ and esparcnbsd.o; sorted entries.
+ (ei386nbsd.c,ens32knbsd.c,esparcnbsd.c): New targets.
+
+ * config/netbsd532.mt: Removed.
+ * emulparams/netbsd532.sh: Removed.
+
+ * config/{i386-nbsd.mt,ns32k-nbsd.mt,sparc-nbsd.mt}: New files.
+ * emulparams/{i386nbsd.sh,ns32knbsd.sh,sparcnbsd.sh}: New files.
+ * configure.in (i[345]86-*-netbsd*, ns32k-pc532-netbsd*,
+ sparc*-*-netbsd*): Use above configs.
+
+Tue Oct 25 11:47:10 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ldmain.c (multiple_common): One of the types may now be
+ bfd_link_hash_indirect. The old BFD argument may be NULL.
+
+Thu Oct 20 22:01:39 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * configure.in: Add * at the end of m68k-hp-hpux.
+
+Tue Oct 18 15:58:39 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * ldlex.l: Cast assignment to yy_ch_buf field to char *, not to
+ YY_CHAR *.
+
+Mon Oct 17 14:53:16 1994 J.T. Conklin (jtc@phishhead.cygnus.com)
+
+ * scripttempl/nw.sc: Gather constructors and destructors and
+ define __CTOR__LIST__ and __DTOR_LIST__ appropriately.
+
+Fri Oct 14 14:35:38 1994 J.T. Conklin (jtc@rtl.cygnus.com)
+
+ * Makefile.in (ALL_EMULATIONS): Add ei386nw.o and eppcnw.o.
+ (ei386nw.c, eppcnw.c): New targets.
+
+ * config/{i386,ppc}-nw.mt, emulparams/{i386,ppc}nw.sh,
+ scripttempl/nw.sc: New files, for i386 and powerpc netware.
+
+ * configure.in: Changed netware ld_target name to be {i386,ppc}-nw
+ instead of {i386,ppc}-elf.
+
+ * configure.in (sparc*-*-netware): Removed. There is no such
+ thing anymore.
+
+ * ldint.texinfo: Move misplaced `@end iftex'.
+
+Fri Oct 14 12:02:18 1994 Eric Youngdale (eric@aib.com)
+
+ * scripttempl/elf.sc: Add .rel.ctors, .rela.ctors, .rel.dtors, and
+ .rela.dtors to the list of .rel* sections.
+
+Thu Oct 13 14:16:27 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * ldver.c (ldversion): Update to version 2.5.
+ * Version 2.5 released.
+
+ * configure.in (all_targets): Handle i386-linux*.
+
+Thu Oct 13 11:24:33 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * scripttempl/aout.sc: Set _etext and __etext to ., not
+ ${DATA_ALIGNMENT}. This is compatible with SunOS, and, with luck,
+ will not break any other system. From Eric Valette
+ <ev@chorus.fr>.
+
+Wed Oct 12 16:22:58 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * lexsup.c (parse_args): Change -V to be a synonym for -v. Add
+ --verbose to get the old -V behaviour.
+ * ld.1, ld.texinfo: Document this change.
+
+Tue Sep 27 14:56:20 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Remove
+ assertion, since it could fail with a user defined linker script.
+
+ * ldexp.c (fold_name): For DEFINED case, don't try to look up the
+ name in the hash table during the first phase--the hash table does
+ not even exist at that point, much less have the right value.
+
+ * Makefile.in (CC): Define.
+ (CXX): Move definition, change from g++ to gcc.
+ (EXPECT, RUNTEST): Copy definitions from top level Makefile.in.
+ (RUNTEST_CC, RUNTEST_CFLAGS): Remove.
+ (RUNTEST_CXX, RUNTEST_CXXFLAGS): Remove.
+ (CC_FOR_TARGET, CXX_FOR_TARGET): Copy from top level Makefile.in.
+ (.cc.o): Comment out.
+ (testdir): Remove.
+ (site.exp): Don't create testdir or set tmpdir.
+ (check): Run checks even if not running native. Use CC_FOR_TARGET
+ instead of RUNTEST_CC, and likewise for CXX.
+ (cdtest targets): Comment out.
+ * config/solaris2.mh (HOSTING_LIBS): Only mention crtend.o once.
+ * cdtest-bar.cc, cdtest-foo.cc, cdtest-foo.h: Remove.
+ * cdtest-main.cc, cdtest.exp: Remove.
+
+Mon Sep 26 11:40:30 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * emulparams/elf32bmip.sh: Rename from elf32mipb.sh to avoid DOS
+ file naming problems.
+ * emulparams/elf32lmip.sh: Rename from elf32mipl.sh.
+ * Makefile.in (ALL_EMULATIONS): Rename eelf32mipb.o to
+ eelf32bmip.o and eelf32mipl.o to eelf32lmip.o.
+ (eelf32bmip.c): Rename from eelf32mipb.c. Use elf32bmip.sh.
+ (eelf32lmip.c): Rename from eelf32mipl.c. Use elf32lmip.sh.
+ * config/mipsb-elf32.mt (EMUL): Use elf32bmip, not elf32mipb.
+ * config/mipsl-elf32.mt (EMUL): Use elf32lmip, not elf32mipl.
+
+ * genscripts.sh: Always search /usr/local/TARGET/lib.
+
+ * scripttempl/elf.sc: If -N is set, force DATA_ADDR to be ".".
+
+Fri Sep 23 15:05:49 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * configure.in: Handle i386-bsdi* targets like i386-bsd.
+
+Fri Sep 23 00:06:59 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * lexsup.c (parse_args): Add support for -a for HP/UX
+ compatibility.
+
+ * lexsup.c (parse_args): -c takes an argument.
+
+Tue Sep 20 14:35:27 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ld.h (args_type): Add new field endian.
+ * lexsup.c (parse_args): Handle -EB and -EL by setting
+ command_line.endian.
+ * ldgram.y (ifile_p1): Accept OUTPUT_FORMAT with three arguments.
+ * ldlang.c (lang_add_output_format): Add arguments big and little.
+ If command_line.endian is set, use it to select big or little
+ rather than the default. Changed all callers.
+ * ldlang.h (lang_add_output_format): Update declaration.
+ * emulparams/elf32mipb.sh: Define BIG_OUTPUT_FORMAT and
+ LITTLE_OUTPUT_FORMAT.
+ * emulparams/elf32mipl.sh: Likewise.
+ * emulparams/mipsbig.sh: Likewise.
+ * emulparams/mipsbsd.sh: Likewise.
+ * emulparams/mipsidt.sh: Likewise.
+ * emulparams/mipsidtl.sh: Likewise.
+ * emulparams/mipslit.sh: Likewise.
+ * scripttempl/elf.sc: Define BIG_OUTPUT_FORMAT and
+ LITTLE_OUTPUT_FORMAT if not already defined. Pass them to
+ OUTPUT_FORMAT.
+ * scripttempl/mips.sc: Pass BIG_OUTPUT_FORMAT and
+ LITTLE_OUTPUT_FORMAT to OUTPUT_FORMAT.
+ * scripttempl/mipsbsd.sc: Likewise.
+
+ * Makefile.in (ldgram.h): Make separate target from ldgram.c,
+ depending upon ldgram.c, so that a parallel make does not try to
+ build both at once.
+
+ * configure.in (mips*el-elf*): New target.
+ * Makefile.in (ALL_EMULATIONS): Add eelf32mipb.o and eelf32mipl.o.
+ (eelf32mipl.c): New target.
+
+ * config/mipsl-elf32.mt: New file.
+ * emulparams/elf32mipl.sh: New file.
+
+Fri Sep 16 12:16:20 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ldmain.c (main): Rather than prohibiting ld -r -s, treat it as
+ ld -r -S -x.
+
+Thu Sep 15 13:05:44 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ldmisc.c (vfinfo): Print BFD file name as well as file name
+ returned by find_nearest_line, in case the file name is something
+ unhelpful such as a .h file. Handle %u.
+
+Wed Sep 14 12:49:12 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * ldlang.c (lang_do_assignments): Make sure output statement
+ has an attached bfd_section before trying to dereference it.
+
+Wed Sep 14 12:48:09 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ld.h (ld_config_type): Add new field warn_once.
+ * ldmain.c (undefined_symbol): Handle -warn-once.
+ * lexsup.c (parse_args): Recognize -warn-once.
+ * ld.texinfo (Options): Document -warn-once.
+ * ld.1: Likewise.
+
+ * ldmisc.c (vfinfo): Handle %D as %C, but never print the function
+ name. For %C, print the function name on a separate line, to keep
+ the length of error messages under control.
+ * ldmain.c (multiple_definition): Use %D for ``first defined
+ here.''
+ (undefined_symbol): Use %D for ``more undefined references
+ follow''.
+
+ * ldmisc.c (multiple_warn): Remove; no longer used.
+ * ldmisc.h (multiple_warn): Don't declare.
+
+Tue Sep 13 20:47:58 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * ldlang.c (print_output_section_statement): Print all lines
+ to the map file.
+
+Tue Sep 13 16:30:11 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ldlang.c (load_symbols): Check for archive before object. Use
+ bfd_check_format_matches, and, if ambiguous, print a list of
+ matching formats. If file format is not recognized, treat file as
+ a linker script.
+ * ldgram.y (yyerror): If assuming an object file is a script,
+ mention that. Tweak the format of the error messages.
+ * ldlex.l (lex_warn_invalid): If assuming an object is a script,
+ guess that this is not actually a script, and just report that the
+ file format was not recognized.
+ * ld.texinfo (Options): Admit that -( may be used more than once.
+ Add note that unrecognized object files are now treated as linker
+ scripts.
+
+ * ldfile.c (ldfile_input_filename): Make const.
+ (ldfile_assumed_script): New variable.
+ (try_open): Change arguments types to const.
+ (ldfile_find_command_file): Likewise.
+ (ldfile_open_command_file): Likewise. Also, set lineno to 1.
+ * ldfile.h: Update declarations for ldfile.c changes.
+ * ldlex.l: Include <ctype.h>.
+ (file_name_stack): Change to be const char *.
+ (lineno_stack): New static variable.
+ (<<EOF>>): Set lineno as well as ldfile_input_filename.
+ (lex_push_file): Make name argument const. Initialize
+ lineno_stack entry.
+ (lex_redirect): Initialize lineno_stack entry.
+ (lex_warn_invalid): Handle non printable characters nicely.
+ * ldlex.h (lex_push_file): Declare second argument as const.
+
+ * ldgram.y (ifile_p1): Recognize GROUP.
+ * ldlex.l: Recognize GROUP.
+ * ld.texinfo (Option Commands): Document GROUP.
+
+Mon Sep 12 17:04:27 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * config/m68klynx.mh: New file.
+
+Mon Sep 12 01:50:03 1994 Jeff Law (law@snake.cs.utah.edu)
+
+ * emultempl/hppaelf.em: Add newlines to the error messages.
+
+Sat Sep 10 16:05:38 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * config/i386lynx.mh: New file.
+ * scripttempl/i386lynx.sc: Don't put .ctors and .dtors in .text
+ unless CONSTRUCTING.
+
+Thu Sep 8 13:25:24 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * emulparams/elf32mipb.sh (TEMPLATE_NAME): Define as elf32.
+ (GENERATE_SHLIB_SCRIPT): Define as yes.
+ (DYNAMIC_LINK): Define as false.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_parse):
+ Initialize config.dynamic_link to DYNAMIC_LINK if it is defined.
+ (gld${EMULATION_NAME}_place_orphan): Reset stat_ptr at end.
+ * Makefile.in (eelf32mipb.c): Depend upon elf32.em rather than
+ generic.em.
+
+Thu Sep 8 16:30:37 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * scripttempl/h8500b.sc: Put rdata stuff into own segment.
+
+Thu Sep 8 13:25:24 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * emulparams/elf32ppc.sh (OTHER_READWRITE_SECTIONS): Don't define;
+ .got section is now explicitly handled in elf.sc.
+
+Wed Sep 7 13:08:34 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * scripttempl/alpha.sc: Redo script to set . outside of sections
+ and not bother to explicitly specify section addresses.
+ Explicitly place .sdata section.
+
+Tue Sep 6 23:51:45 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * scripttempl/m68kcoff.sc: Put .bss in data segment.
+
+ * scripttempl/h8300.sc: Change .stab and .stabstr to use a VMA of
+ 0, and to only be marked as NOLOAD if relocating.
+ * scripttempl/h8500.sc, scripttempl/h8500b.sc: Likewise.
+ * scripttempl/h8500c.sc, scripttempl/h8500m.sc: Likewise.
+ * scripttempl/h8500s.sc, scripttempl/i386coff.sc: Likewise.
+ * scripttempl/i386go32.sc, scripttempl/i386lynx.sc: Likewise.
+ * scripttempl/m68kcoff.sc, scripttempl/m68klynx.sc: Likewise.
+ * scripttempl/sh.sc, scripttempl/sparccoff.sc: Likewise.
+ * scripttempl/sparclynx.sc: Likewise.
+
+Sun Sep 04 17:58:10 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+
+ * Makefile.in, configure.in: Add support (disabled) the ARM/RISCiX.
+ * config/riscix.mt, emulparams/riscix.sh, scripttempl/riscix.sc:
+ New files.
+
+Tue Aug 30 11:48:08 1994 Eric Youngdale (ericy@cais.cais.com)
+
+ * ld.h (args_type): Add field soname.
+ * lexsup.c (parse_args): Handle -soname argument.
+ * emultempl/elf32.em: In call to bfd_elf32_size_dynamic_sections,
+ pass soname.
+ * ld.texinfo: Document -soname.
+
+Mon Aug 29 15:21:50 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ldlang.c (lang_check): Don't try to set the architecture if the
+ input and output files are incompatible. Just warn.
+
+Wed Aug 24 12:52:30 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * configure.in: Change i[34]86 to i[345]86.
+
+Sun Aug 21 16:17:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * emulparams/hp3hpux.sh: Define __DYNAMIC to be 0.
+
+Thu Aug 18 15:37:45 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ Make the ELF linker handle orphaned sections reasonably. Also,
+ define __start_SECNAME and __stop_SECNAME around sections whose
+ names can be represented in C, for the benefit of symbol sets in
+ glibc.
+ * ldemul.h (ldemul_place_orphan): Declare.
+ (ld_emulation_xfer_type): Add place_orphan field.
+ * ldemul.c (ldemul_place_orphan): New function.
+ * ldlang.h (wild_doit): Declare.
+ * ldlang.c (wild_doit): Make nonstatic.
+ (lang_place_orphans): Call ldemul_place_orphan.
+ * emultempl/elf32.em: Include <ctype.h> and "ldgram.h".
+ (hold_section, hold_use, hold_text, hold_data, hold_bss): New
+ static variables.
+ (gld${EMULATION_NAME}_place_orphan): New static function.
+ (gld${EMULATION_NAME}_place_section): New static function.
+ (ld_${EMULATION_NAME}_emulation): Initialize place_orphan field.
+
+Tue Aug 16 00:17:20 1994 Eric Youngdale (ericy@cais.cais.com)
+
+ * scripttempl/aout.sc: Add .linux-dynamic after .data.
+
+Tue Aug 16 00:08:22 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * lexsup.c (parse_args) Treat --dll-verbose as --version, for
+ Linux compatibility. From hjl@nynexst.com (H.J. Lu).
+
+Mon Aug 15 17:17:33 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ldexp.h (exp_get_abs_int): Declare.
+
+Sat Aug 6 01:45:39 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * ldlang.c (lang_do_assignments): Handle complex AT's better.
+ * ldexp.c (exp_get_abs_int): New function.
+
+Fri Aug 5 20:55:55 1994 Jason Molenda (crash@phydeaux.cygnus.com)
+
+ * configure.in: add i960-nindy-coff support.
+
+Thu Aug 4 14:45:50 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ldlex.l (yy_create_string_buffer): Handle change to internal
+ interface in flex 2.4.7.
+
+Tue Aug 2 11:52:06 1994 Eric Youngdale (ericy@cais.cais.com)
+
+ * emultempl/linux.em (gld${EMULATION_NAME}_find_address_statement):
+ New function; add 0x20 to any use of -Ttext.
+ (gld${EMULATION_NAME}_create_output_section_statements): New
+ function.
+ (ld_${EMULATION_NAME}_emulation): Use the new function
+ gld${EMULATION_NAME}_create_output_section_statements.
+
+Mon Aug 1 15:50:44 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * scripttempl/mips.sc: Redo script to set . outside of sections
+ and not bother to explicitly specify section addresses.
+
+Tue Jul 26 11:02:35 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * scripttempl/elf.sc: Copy several more relocation sections into
+ the output. Put .got.plt sections into .got.
+
+Fri Jul 22 12:15:36 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * scripttempl/elf.sc: Use PROVIDE to define etext, edata, and end.
+
+ Add a new script operator, PROVIDE, to define a symbol only if it
+ is needed.
+ * ldgram.y (PROVIDE): New token.
+ (assignment): Accept PROVIDE.
+ * ldlex.l (PROVIDE): New token.
+ * ldexp.h (node_type): Add etree_provide to node_class enum.
+ (exp_provide): Declare.
+ * ldexp.c (exp_fold_tree): Handle etree_provide.
+ (exp_provide): New function.
+ (exp_print_tree): Handle etree_provide.
+ * ld.texinfo: Document PROVIDE.
+
+ * ldlang.c (lang_common): Pass desired alignment to
+ lang_one_common as power of two.
+ (lang_one_common): Get common symbol alignment from linker hash
+ table entry. Treat desired alignment as a power of two.
+
+ * ldlang.c (wild_section): Attach all section with the given name,
+ not just the first one. If there is no name, attach all sections
+ even if the SEC_IS_COMMON flag is set.
+
+Wed Jul 20 15:49:27 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ld.h (args_type): Add field rpath.
+ * lexsup.c (S_ISDIR): Define if not already defined.
+ (parse_args): Add support for -rpath. If -R is used to name a
+ directory, treat it as -rpath for Solaris compatibility.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
+ Pass command_line.rpath to bfd_elf32_size_dynamic_sections.
+ * ldmain.c (main): Initialize command_line.rpath to NULL.
+ * ld.texinfo: Document -rpath option.
+
+Sun Jul 10 00:33:24 1994 Ian Dall (dall@hfrd.dsto.gov.au)
+
+ * emulparams/pc532machaout.sh: New file. Pc532 mach script
+ parameters.
+
+ * emulparams/netbsd532.sh: New file. Netbsd 532 script parameters.
+
+ * config/pc532mach.mt: New file. Pc532 mach target support.
+
+ * config/pc532mach.mh: New file. Pc532 mach host support.
+
+ * config/netbsd532.mt: New file. Netbsd 532 target support.
+
+ * configure.in: Add ns32k-pc532-mach and ns32k-pc532-netbsd support.
+
+ * Makefile.in: Add epcmachaout.c dependency and enetbsd532.c
+ dependency.
+
+Fri Jul 8 10:57:02 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation): Use
+ bfd_abs_section_ptr, not &bfd_abs_section.
+
+ * lexsup.c (parse_args): Changed "retain-symbols-file" from
+ no_argument to required_argument. From djm.
+
+Thu Jul 7 12:29:53 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * scripttempl/elf.sc: Explicitly mention .stab and .stabstr
+ sections to force a VMA of 0; needed for ELF backends which have
+ not been converted to the new linker style.
+
+Mon Jul 4 19:35:45 1994 Jeff Law (law@snake.cs.utah.edu)
+
+ * scripttempl/hppaelf.sc (__stack_zero): Don't define this name,
+ it was for the HPUX dynamic loader's use and it creates problems
+ with ELF GDB.
+
+Fri Jul 1 12:53:47 1994 Jeff Law (law@snake.cs.utah.edu)
+
+ * ldlang.c (lang_do_assignments): No longer static. Delete decl.
+ * ldlang.h (lang_do_assignments): Put external decl here.
+ * emultempl/hppaelf.em: Minor cleanups throughout file.
+ (hppa_elf_create_output_section_statements): Rewrite.
+ (hppaelf_finish): Rewrite.
+
+Wed Jun 29 16:50:00 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * config/solaris2.mh (NATIVE_LIB_DIRS): Define as /usr/ccs/lib.
+
+ * lexsup.c (parse_args): Accept -Bstatic and -Bdynamic. Do not
+ accept plain -B.
+ * ld.texinfo: -Bstatic is not ignored.
+
+Tue Jun 28 12:13:34 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * ldlex.l: Recognize \r the same as \n.
+
+Thu Jun 23 17:53:04 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ Preliminary support for generating shared libraries, from Eric
+ Youngdale <ericy@cais.cais.com>.
+ * genscripts.sh: If the emulation parameter file sets
+ GENERATE_SHLIB_SCRIPT, generate a .xs script file with
+ CREATE_SHLIB defined.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_get_script): If
+ link_info.shared is set, use the .xs script file.
+ * scripttempl/elf.sc: If CREATE_SHLIB is set, don't create a
+ .interp section, and don't include TEXT_START_ADDR in the starting
+ address of the first section.
+ * emulparams/elf_i386.sh (GENERATE_SHLIB_SCRIPT): Likewise.
+ * emulparams/elf32_sparc.sh (GENERATE_SHLIB_SCRIPT): Define.
+
+Thu Jun 23 12:52:22 1994 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * configure.in: Change --with-targets to --enable-targets.
+
+Wed Jun 22 13:42:14 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * lexsup.c (parse_args): Add support for new options -( -) with
+ synonyms --start-group --end-group.
+ * ldlang.h (enum statement_enum): Add lang_group_statement_enum.
+ (lang_group_statement_type): Define new struct.
+ (lang_statement_union_type): Add group_statement field.
+ (lang_enter_group, lang_leave_group): Declare.
+ * ldlang.c (lang_for_each_statement_worker): Handle
+ lang_group_statement_enum.
+ (map_input_to_output_sections, print_statement): Likewise.
+ (lang_size_sections, lang_do_assignments): Likewise.
+ (open_input_bfds): Completely rewrite. Now does its own looping,
+ rather than using lang_for_each_statement. Handle groups.
+ (lang_process): Update call to open_input_bfds.
+ (print_group): New static function.
+ (lang_enter_group, lang_leave_group): New static functions.
+ * ldfile.c (ldfile_open_file): If the file has already been
+ opened, just return rather than taking an assertion failure.
+ * ldver.c (help): Mention new options.
+ * ld.texinfo: Document new options.
+
+ * ldlang.c (end_of_data_section_statement_list): Don't define.
+ (lang_leave_output_section_statement): Don't set obsolete variable
+ end_of_data_section_statement_list.
+
+ * scripttempl/go32coff.sc: Don't put ${DATA_ALIGNMENT} inside an
+ ALIGN.
+
+ * ldlang.c (lang_size_sections): Adjust current region address
+ even for sections with an explicit address. From
+ ralphc@pyramid.com (Ralph Campbell).
+
+ * emulparams/i386linux.sh (NONPAGED_TEXT_START_ADDR): Set to 0.
+ From jrs@world.std.com (Rick Sladkey).
+
+ * scripttempl/mipsbsd.sc: Let sections align to their natural
+ boundaries.
+
+Tue Jun 21 11:27:04 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * ldlang.c (lang_init): Use new bfd_abs_section_ptr, not
+ &bfd_abs_section.
+ (lang_abs_symbol_at_beginning_of): Likewise.
+ (lang_abs_symbol_at_end_of): Likewise.
+ (lang_size_sections): Use bfd_is_abs_section to check for the
+ absolute section. Don't try to set the VMA or output_offset or
+ size of the absolute section.
+ * ldmain.c (notice_ysym): Use bfd_is_und_section to check for the
+ undefined section.
+
+Thu Jun 16 22:48:41 1994 Jeff Law (law@snake.cs.utah.edu)
+
+ * scripttempl/hppaelf.sc: Place .data and .bss at 0x40000000
+ when generating relocatable objects.
+
+Thu Jun 16 14:25:22 1994 Eric Youngdale (ericy@cais.cais.com)
+
+ * emultempl/linux.em: New file providing support for linking
+ against Linux shared libraries.
+ * config/i386-linux.mt (ei386linux.c): Depend upon linux.em.
+ * emulparams/i386linux.sh (TEMPLATE_NAME): Define as linux.
+
+Thu Jun 16 12:22:01 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * lexsup.c (parse_args): Add -shared to longopts, and handle it.
+ * ldmain.c (main): Initialize link_info.shared to false. Give
+ error if link_info.relocateable and link_info.shared are both set.
+
+ * configure.in: If EMUL_EXTRA* is defined in a config file, treat
+ it as naming an emulation to be added to EMULATION_OFILES.
+ * config/i386-linux.mt (EMUL_EXTRA1): Define as elf_i386.
+
+ * Makefile.in: Rebuilt dependencies.
+ (ALL_EMULATIONS): Add ei386linux.o, eelf32_sparc.o,
+ eelf64_sparc.o. Remove $(OTHER_EMULATIONS).
+ (ei386linux.c, eelf32_sparc.c, eelf64_sparc.c): New targets.
+ * config/i386-linux.mt (OTHER_EMULATIONS): Don't define.
+ (ei386linux.c): Remove; now in Makefile.in.
+ * config/i386-lynx.mt (OTHER_EMULATIONS): Don't define.
+ * config/m68k-lynx.mt (OTHER_EMULATIONS): Don't define.
+ * config/sparc-lynx.mt (OTHER_EMULATIONS): Don't define.
+ * config/sparc64-elf.mt (OTHER_EMULATIONS): Don't define.
+ (eelf64_sparc.c): Remove; now in Makefile.in.
+ * config/sun4sol2.mt (OTHER_EMULATIONS): Don't define.
+ (eelf32_sparc.c): Remove; now in Makefile.in.
+
+ * ldexp.c (exp_print_tree): Don't crash if etree_rel section has
+ no owner--it might be bfd_abs_section. From Eric Youngdale
+ <ericy@cais.cais.com>.
+
+ * scripttempl/aout.sc: Let sections align to their natural
+ boundaries.
+
+Wed Jun 15 01:54:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldemul.h (ldemul_open_dynamic_archive): Declare.
+ (ld_emulation_xfer_type): Add new field open_dynamic_archive.
+ * ldemul.c: Include ldexp.h and ldlang.h.
+ (ldemul_open_dynamic_archive): New function.
+ * ldfile.h (ldfile_open_file_search): Declare.
+ * ldfile.c: Include ldemul.h.
+ (try_open_bfd): Rename from cache_bfd_openr. Return boolean
+ argument, not bfd *. Change all callers.
+ (ldfile_open_file_search): Rename from open_a. Return boolean
+ argument, not bfd *. Clean up. Change all callers.
+ (ldfile_open_file): If doing a dynamic link, call
+ ldemul_open_dynamic_archive rather than assuming the extension of
+ a dynamic object is ".so".
+ * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
+ New function.
+ (ld_${EMULATION_NAME}_emulation): Initialize open_dynamic_archive
+ field.
+ * emultempl/sunos.em (ld_${EMULATION_NAME}_emulation): Likewise.
+
+ * ldmain.c (get_emulation): Ignore -m486 for Linux compatibility.
+ * lexsup.c (parse_args): Ignore -qmagic for Linux compatibility.
+ Accept -static as a synonym for -non_shared.
+
+ Let the user change the dynamic linker used by ELF code.
+ * ld.h (args_type): Add new field interpreter.
+ * lexsup.c (parse_args): Add dynamic-linker to longopts, and
+ handle it.
+ * ldmain.c (main): Initialize command_line.interpreter to NULL.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Get
+ the ELF backend to return the .interp section. If
+ command_line.interpreter is not NULL, set the contents of .interp
+ to it.
+ * ld.texinfo: Mention -dynamic-linker.
+
+ * config/sun4sol2.mt (eelf32_sparc.c): Depend upon elf32.em, not
+ generic.em.
+
+ * lexsup.c (parse_args): Sort out the option macros and change the
+ definitions to make it easier to add a new option.
+
+ * scripttempl/aout.sc: Define __etext and __edata to go along with
+ _etext and _edata.
+
+ * ld.h (ld_config_type): Add new field traditional_format.
+ * lexsup.c (parse_args): Add traditional-format to longopts, and
+ handle it.
+ * ldmain.c (main): Initialize config.traditional_format to false.
+ * ldlang.c (ldlang_open_output): Set BFD_TRADITIONAL_FORMAT in BFD
+ flags of output_bfd according to config.traditional_format.
+ * ldver.c (help): Mention -traditional-format.
+ * ld.texinfo: Document -traditional-format.
+
+Tue Jun 14 23:10:07 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldctor.c (ldctor_add_entry): Add entries to a set in the order
+ they are encountered.
+
+Tue Jun 14 18:05:09 1994 Eric Youngdale (ericy@cais.cais.com)
+
+ * emulparams/i386linux.sh (TEXT_START_ADDR): Define as 0x1000.
+ (NONPAGED_TEXT_START_ADDR): Define as 0x20.
+
+Mon Jun 13 15:46:09 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * scripttempl/alpha.sc: Define _ftext, _etext and _fdata insted of
+ _FTEXT, _ETEXT and _FDATA. Dont define _END.
+
+ * ldfile.c (open_a): If this is not an archive, try to open it in
+ the current directory before searching for it.
+
+ * lexsup.c (parse_args): Treat -i as a synonym for -r.
+
+ * ldgram.y (exp): Treat BLOCK as a synonym for ALIGN, so that
+ BLOCK works in a section address as documented.
+
+ * ldgram.y (YYDEBUG): Don't define.
+
+Fri Jun 10 16:45:39 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * emultempl/gld960.em: Pass false for new argument to
+ ldfile_add_library_path.
+ * emultempl/gld960c.em, emultempl/lnk960.em: Likewise.
+
+ * emultempl/sunos.em: Only look for .so files if doing a dynamic
+ link.
+
+Thu Jun 9 08:35:17 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * scripttempl/i960.sc: Add CONSTRUCTORS to .data.
+
+Thu Jun 9 06:52:29 1994 Bill Cox (bill@rtl.cygnus.com)
+
+ * Makefile.in (check): Delete ld.new dependency so that a regression
+ test doesn't trigger a rebuild of the linker.
+
+Thu Jun 9 00:17:20 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c (map_input_to_output_sections): For lang_address, call
+ init_os if it hasn't already been called.
+
+Thu Jun 2 17:24:08 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ Add support for SunOS shared libraries.
+ * aout.sc: Don't define __DYNAMIC here. Add new sections used by
+ shared library support code.
+ * emultempl/sunos.em: New file.
+ * emulparams/sun4.sh (TEMPLATE_NAME): Define as sunos.
+ * emulparams/sun3.sh (TEMPLATE_NAME): Likewise.
+ * Makefile.in (esun4.c): Depend upon sunos.em, not generic.em.
+ (esun3.c): Likewise.
+
+ * ldlang.c: Minor formatting cleanups.
+ (lang_for_each_input_file): New function.
+ * ldlang.h (lang_for_each_input_file): Declare.
+
+ * ldfile.h (search_dirs_type): Move from ldfile.c, and add cmdline
+ field.
+ (search_head): Declare.
+ (ldfile_add_library_path): Add new cmdline argument in prototype.
+ * ldfile.c (search_head): Make non-static.
+ (search_dirs_type): Move to ldfile.h.
+ (ldfile_add_library_path): Accept cmdline argument, and save it.
+ * lexsup.c (parse_args): Pass true for new cmdline argument of
+ ldfile_add_library_path.
+ (set_default_dirlist): Likewise.
+ * ldmain.c (check_for_scripts_dir): Pass false for new cmdline
+ argument of ldfile_add_library_path.
+ * ldgram.y (ifile_p1): Likewise.
+
+Wed Jun 1 14:24:08 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.h (lang_input_statement_type): Remove fields subfiles,
+ total_size, superfile and chain.
+ * ldfile.c (open_a): Don't clear search_dirs_flag.
+ (ldfile_open_file): Don't try to open superfile. Assert that file
+ has not already been opened.
+ * ldlang.c (new_afile): Don't initialize superfile.
+ * ldmain.c (add_archive_element): Don't initialize subfiles or
+ chain or superfile. Initialize search_dirs_flag to false.
+
+Fri May 27 12:25:33 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * ldver.c (ldversion): Changed version to "cygnus-2.4.1".
+
+ Changes from binutils-2.4 release:
+
+ * genscripts.sh (RELOCATING, CONSTRUCTING): When setting
+ variables, use whitespace, so scripts don't break.
+
+ * config/alphaosf.mh (HDEFINES, CFLAGS): Deleted.
+
+ * emultempl/generic.em: Find emultempl/stringify.sed in ${srcdir}.
+
+ * cdtest-bar.cc: Renamed from cdtest-func.cc.
+ * Makefile.in: Noted change.
+
+ * scripttempl/a29k.sc: Don't include /lab3/u3/..../segments.o; I
+ don't know where that's supposed to come from, or why it's
+ necessary.
+
+ Wed May 11 22:32:00 1994 DJ Delorie (dj@ctron.com)
+
+ * configure.bat: update to latest makefile.in
+ * emulpara/go32.sh: set to coff-go32 not aout
+ * emultemp/generic.em: strength-reduce the structure of
+ this shell script, since the only available shell for
+ DOS can't handle complex syntax.
+ * emultemp/stringify.sed: for "sed -f" instead of inline.
+ * makefile.in: depend on stringify.sed as well as genscripts.sh
+ * scripttemp/go32coff.sc: correct for djgpp 1.11's COFF format
+ * genscripts.sh: empty variables aren't always considered "set",
+ so set them to "y" instead.
+
+Fri May 27 01:08:14 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c (entry_symbol): Make static.
+ (lang_add_entry): Add cmdline argument.
+ * ldlang.h (lang_add_entry): Change prototype.
+ * ldgram.y (statement_anywhere): Change lang_add_entry call.
+ * lexsup.c (parse_args): Likewise.
+
+Tue May 24 16:13:43 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * emulparams/elf32mipb.sh (OTHER_READONLY_SECTIONS): Don't give
+ .reginfo an address.
+ (OTHER_READWRITE_SECTIONS): Don't give .lit4 or .lit8 an address.
+ (OTHER_SECTIONS): Define for .gptab.sdata and .gptab.sbss.
+ * scripttempl/elf.sc: Use OTHER_SECTIONS at end of script.
+
+Thu May 19 13:31:33 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ Add support for ELF shared libraries.
+ * ld.h (ld_config_type): Add field dynamic_link.
+ * ldmain.c (main): Initialize config.dynamic_link to false. Warn
+ on attempts to use -r with -relax, -call_shared or -s.
+ * lexsup.c (longopts): Separate OPTION_CALL_SHARED from
+ OPTION_NON_SHARED. Add OPTION_IGNORE. Adjust macro values
+ accordingly. Add "dy" and "non_shared" options. Change "Qy" to
+ OPTION_IGNORE for now. Handle OPTION_CALL_SHARED and
+ OPTION_NON_SHARED by setting dynamic_link field accordingly.
+ Handle OPTION_IGNORE by ignoring it. Clear dynamic_link field for
+ -r and -Ur.
+ * ldfile.c (ldfile_open_file): If config.dynamic_link is true, try
+ opening a file with a .so extension first.
+ * emultempl/elf32.em: New file.
+ * emulparams/elf32_sparc.sh (TEXT_START_ADDR): Change to 0x10000.
+ (NONPAGED_TEXT_START_ADDR): Likewise.
+ (TEMPLATE_NAME): Define as elf32.
+ (DATA_PLT): Define.
+ * emulparams/elf_i386.sh (TEMPLATE_NAME): Define as elf32.
+ * scripttempl/elf.sc: Add placement for new dynamic sections.
+ Don't use CREATE_OBJECT_SYMBOLS. Define _etext, _edata and _end
+ outside of any section. Don't use ALIGN(8); just let one section
+ VMA follow another. Put .dynbss in .bss. Don't mention debugging
+ sections; they'll be handled correctly anyhow.
+ * Makefile.in (eelf_i386.c): Depend upon elf32.em, not generic.em.
+
+Wed May 18 10:15:39 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (install): Redirect output of ln to /dev/null.
+
+Mon May 16 13:35:08 1994 Jeff Law (law@snake.cs.utah.edu)
+
+ * emultempl/hppaelf.em: Change all references of
+ .hppa_linker_stubs to .PARISC.stubs.
+ * scripttempl/hppaelf.sc: Likewise.
+
+Fri May 13 13:00:38 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c (print_output_section_statement): Change ``no attached
+ output section'' message slightly.
+ (lang_do_assignments): Don't recurse down if there is no real
+ section.
+
+ * config/i386-linux.mt (OTHER_EMULATIONS): Change em_ to e to
+ match corresponding change in emulation templates.
+ * config/i386-lynx.mt, config/m68k-lynx.mt: Likewise.
+ * config/sparc-lynx.mt, config/sun4sol2.mt: Likewise.
+
+Wed May 11 18:16:46 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * ldver.c (ldversion): Updated version number.
+
+ * cdtest-foo.cc: Use explicit "#pragma implementation".
+ * cdtest-bar.cc: Renamed from cdtest-func.cc.
+ * Makefile.in: References to cdtest-func.o changed to
+ cdtest-bar.o.
+
+Wed May 11 16:24:19 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ Don't create unnecessary output sections.
+ * ldlang.c (out_bfd_get_section_by_name): Remove.
+ (wild_section): Call bfd_get_section_by_name rather than
+ our_bfd_get_section_by_name. Don't call wild_doit if there is no
+ section.
+ (lang_create_output_section_statements): Remove.
+ (map_input_to_output_sections): For several cases, call init_os if
+ it has not already been called.
+ (lang_size_sections): If output section was not created, skip it.
+ (lang_process): Don't call lan_create_output_section_statements.
+ (lang_place_orphans): Skip files with just_syms_flags set to true.
+ * ld.texinfo: Document change.
+
+Tue May 10 14:31:16 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c (wild_doit): Don't bother initializing the vma and
+ section size. Don't special case SEC_SHARED_LIBRARY.
+ (lang_size_sections): Handle SEC_COFF_SHARED_LIBRARY sections
+ specially.
+
+Fri May 6 12:24:27 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * config/go32.mh : New file for Xgo32X.
+
+Fri May 6 15:15:35 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldfile.c (ldfile_open_command_file): Set bfd_error_system_call
+ before calling einfo, since we are reporting an fopen failure.
+ From jrs@world.std.com (Rick Sladkey).
+
+ * configure.in: Use "e" rather than "em_" as prefix for
+ emulations.
+
+Fri May 6 01:08:14 1994 Ken Raeburn (raeburn@kr-pc.cygnus.com)
+
+ * emultempl/generic.em: Use "e" rather than "em_" as prefix for
+ filename.
+ * emultempl/gld960.em, emultempl/gld960c.em, emultempl/lnk960.em,
+ emultempl/hppaelf.em, emultempl/m88kbcs.em, emultempl/vanilla.em:
+ Ditto.
+ * Makefile.in: Changed all generated file names.
+ (ldemul-list.h): Depend on Makefile, not config.status. Changed
+ sed patterns to handle new filenames.
+
+ * config/mipsl-idt.mt: Renamed from mips-idtl.mt.
+ * configure.in: Adjusted.
+
+Thu May 5 15:07:32 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * Makefile.in (install-info): Don't use "$<*", it doesn't always
+ work. Instead, check build dir and $srcdir explicitly, and use
+ `echo' to get all the filenames.
+
+ * configure.in (h8300h-*-hms): Changed ld_target name to
+ cf-h8300h.
+ * config/cf-h8300h.mt: Renamed from coff-h8300h.mt, to make it
+ unique in 8.3.
+
+ * config/i960coff.mt: New file.
+ * emulparams/gld960coff.sh: New file.
+ * emultempl/gld960c.em: New file.
+ * configure.in (i960-*-vxworks5* except -vxworks5.0*): Use
+ i960coff configuration.
+ * Makefile.in (em_gld960coff.c): Added dependencies, build rule.
+
+ * Makefile.in (ALL_EMULATIONS): Remove em_delta68.o, since the
+ code isn't included in FSF releases, and it can still be
+ explicitly selected.
+ (distclean): Remove site.bak and tmpdir.
+ (STAGESTUFF): Removed $(GENERATED_CFILES) $(GENERATED_HFILES).
+ (mostlyclean): Delete them explicitly here. Also remove tmpdir.
+
+ Patches from Ralph Campbell:
+ * config/mipsbsd.mh: New file.
+ * Makefile.in (em_mipsbsd.c): Use mipsbsd.sc, not aout.sc.
+ * scripttempl/mipsbsd.sc: Don't define __DYNAMIC.
+ * emulparams/mipsbsd.sh (OUTPUT_FORMAT): Fix name to have `a.out'
+ instead of `aout'.
+
+ * configure.in (i386-*-gnu*): Treat like i386-*-mach*.
+
+Wed May 4 11:59:40 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * config/m68k.mt (EMUL): Set to m68kaout.
+ * emulparams/m68kaout.sh: New file.
+ * Makefile.in (ALL_EMULATIONS): Add em_m68kaout.o.
+ (em_m68kaout.c): New target.
+
+ * ldlang.c (lang_size_sections): If dot moves because of an
+ assignment, don't try to insert a pad into the absolute output
+ section, just change the address of the default memory region
+ instead.
+
+ * Makefile.in (mostlyclean): Remove cdtest.tmp, cdtest-ur,
+ cdtest-ur.out, and cdtest-ur.tmp.
+
+Wed Apr 27 16:03:37 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * scripttempl/sa29200.sc: Align all sections to four byte
+ boundaries.
+
+Wed Apr 27 10:48:03 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * Makefile.in, configure.in: Support for go32 coff.
+ * config/i386-go32.mt: New file
+ * emulparams/i386go32.sh: New file
+ * scripttempl/i386go32.sc: New file
+
+Tue Apr 26 17:20:03 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * Makefile.in (em_m68klynx.c, em_i386lynx.c, em_sparclynx.c): Use
+ Lynx-specific script templates.
+ * configure.in (sparclite*-*-coff): Use coff-sparc.
+ * emulparams/i386lynx.sh (SCRIPT_NAME): Set to i386lynx.
+ * emulparams/sparclynx.sh (SCRIPT_NAME): Set to sparclynx.
+ (ENTRY): Set to __main.
+ * scripttempl/i386lynx.sc: New file, script for I386 Lynx.
+ * scripttempl/m68klynx.sc: Add insertion of ctor/dtor sections.
+ * scripttempl/sparclynx.sc: New file, script for uSparc Lynx.
+
+Tue Apr 26 12:41:03 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * scripttempl/mips.sc: Force _gp and .lit8 to be aligned to a 16
+ byte boundary, in case the global constructors do not take up an
+ even 16 bytes.
+
+ * config/i386v4.mh (HOSTING_CRT0): If ../gcc/crtbegin.o does not
+ exist, get crtbegin based on gcc -print-libgcc-file-name.
+ (HOSTING_LIBS): Similar change for ../gcc/crtend.o.
+
+Mon Apr 25 15:27:52 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c (lang_size_sections): When no address is given for a
+ section, align it according to its requirements.
+
+Thu Apr 21 17:24:24 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in (clean, distclean): Remove configdoc.texi.
+
+Tue Apr 19 12:12:15 1994 Bill Cox (bill@rtl.cygnus.com)
+
+ * configure.in: Add i[34]86-*-bsd386 to the patterns recognized.
+
+Fri Apr 15 14:35:42 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c (lang_size_sections): When relaxing, adjust the
+ position of a padding statement, and adjust dot accordingly.
+
+Mon Apr 11 17:37:09 1994 Bill Cox (bill@rtl.cygnus.com)
+
+ * Makefile.in (EXPECT, RUNTEST): Set these for the check goal.
+
+Mon Apr 11 12:32:57 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * scripttempl/i386coff.sc: If relocating, don't put .init and
+ .fini sections into .text; keep them separate.
+ * config/i386sco.mh (HOSTING_CRT0): If ../gcc/crtbegin.o does not
+ exist, get crtbegin based on gcc -print-libgcc-file-name.
+ (HOSTING_LIBS): Similar change for ../gcc/crtend.o.
+
+Mon Apr 11 10:31:00 1994 Bill Cox (bill@rtl.cygnus.com)
+
+ * Makefile.in (check): Set TCL_LIBRARY for runtest.
+
+Wed Apr 6 00:09:37 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * configure.in (hppa*-*-*elf*): Don't require "-hp-" for the
+ manufacturer.
+
+ * emultempl/hppaelf.em (hppaelf_finish): Only resize sections
+ if building a final executable.
+
+Tue Apr 5 12:17:30 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldmain.c (main): Check the return value of bfd_close.
+
+Thu Mar 31 18:07:06 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * scripttempl/alpha.sc: Clean up section alignment to ensure that
+ sections never overlap when using -r.
+
+Wed Mar 30 15:51:15 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldmisc.c (vfinfo): Change symbol reading slightly for recent BFD
+ changes: get_symtab_upper_bound renamed and returns long,
+ bfd_canonicalize_symtab returns long, check for error indications.
+
+Fri Mar 25 17:20:01 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c (print_input_section): For section size, use
+ _cooked_size if it is non-zero, size otherwise.
+ (size_input_section): Likewise.
+ (lang_do_assignments): Likewise (case lang_input_section_enum).
+
+Thu Mar 24 15:20:47 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c (new_afile): Add new argument add_to_list. Don't set
+ real to true for lang_input_file_is_marker_enum. Clear the_bfd.
+ (lang_add_input_file): Pass true to new_afile for add_to_list.
+ (lookup_name): Remove force_load argument. Changed all callers.
+ Pass false to new_afile for add_to_list. Split loading of symbols
+ out into separate function.
+ (load_symbols): New function split out of lookup_name. Don't load
+ the symbols if they are already loaded.
+ (open_input_bfds): For lang_input_statement_enum call load_symbols
+ rather than lookup_name.
+ (lang_process): Pass abs_output_section rather than NULL to
+ lang_size_sections.
+ (lang_startup): Set real field of first_file to true.
+
+Wed Mar 23 14:15:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c (had_relax): Removed.
+ (relax_again): New static variable.
+ (lang_size_sections): Change call to bfd_relax_section to
+ correspond to BFD changes. Set relax_again appropriately.
+ (lang_process): Remove #if 0 code. When relaxing, keep calling
+ lang_do_assignments and lang_size_sections until relax_again
+ becomes false.
+
+ * emultemp/gld960.em: Include libiberty.h
+ (gld960_before_parse): Pass NULL as final argument to concat.
+
+Tue Mar 22 13:08:28 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * scripttempl/aout.sc: Force _end and __end to be aligned to a
+ four byte boundary.
+
+ * ldwrite.c (build_link_order): Handle lang_data_statement_enum by
+ building a bfd_data_link_order, rather than by setting the section
+ contents immediately.
+
+Mon Mar 21 18:28:37 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ Changes to make -Ur work again.
+ * ldmain.c (add_to_set): Now takes reloc argument rather than
+ bitsize. Check config.build_constructors here. If an new hash
+ table entry is created, mark it as undefined.
+ (constructor_callback): No longer takes bitsize argument. Pass
+ BFD_RELOC_CTOR to ldctor_add_set_entry, but first make sure the
+ BFD backend supports it.
+ (reloc_overflow): Handle a NULL abfd argument.
+ (reloc_dangerous, unattached_reloc): Likewise.
+ * ldctor.c: Include ldmain.h.
+ (struct set_info): Change bitsize field to reloc.
+ (ldctor_add_set_entry): Now takes reloc argument rather than
+ bitsize. Don't bother to check config.build_constructors here.
+ (ldctor_build_sets): Get the size from the reloc howto. If
+ generating relocateable output, call lang_add_reloc rather than
+ lang_add_data.
+ * ldctor.h (ldctor_add_set_entry): Change declaration to use reloc
+ instead of bitsize.
+ * ldlang.h (statement_enum): Add lang_reloc_statement_enum.
+ (lang_reloc_statement_type): New structure.
+ (lang_statement_union_type): Add reloc_statement field.
+ (lang_add_reloc): Declare new function.
+ * ldlang.c (lang_for_each_statement_worker): Handle
+ lang_reloc_statement_enum.
+ (map_input_to_output_sections, print_statement): Likewise.
+ (lang_size_sections, lang_do_assignments): Likewise.
+ (print_reloc_statement): New function.
+ (lang_add_reloc): New function.
+ * ldwrite.c (build_link_order): Handle lang_reloc_statement_enum.
+
+ * Makefile.in (cdtest.out, cdtest-ur.o): New targets.
+ (cdtest-ur, cdtest-ur.out): New targets.
+ (check-cdtest): Now also check that -Ur works correctly.
+
+ * scripttemp/alpha.sc: Align all sections to 16 byte boundaries.
+
+Thu Mar 17 12:45:41 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c (lang_process): Move lang_common call before
+ map_input_to_output_sections, to ensure that any alignment
+ constraints set by common symbols are copied over to the output
+ sections.
+
+Fri Mar 11 22:17:34 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * emulparams/elf32ppc.sh (TEMPLATE_NAME): Don't define.
+ (OTHER_READWRITE_SECTIONS): Rename .toc to .got.
+ * Makefile.in (em_elf32ppc.c): Depend upon generic.em, not ppc.em.
+ * emultempl/ppc.em: Remove ugly stub code; turns out not to be
+ needed for ELF.
+
+Tue Mar 8 04:22:27 1994 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * config/i386bsd.mh: New file.
+
+Mon Mar 7 15:23:24 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * elf.sc: Permit TEXT_START_SYMBOLS and DATA_START_SYMBOLS to be
+ defined.
+ * emulparams/elf32mipb.s (TEXT_START_SYMBOLS): Define _ftext.
+ (DATA_START_SYMBOLS): Define _fdata.
+
+Mon Feb 28 10:59:14 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * ldlang.c (cat): Define using ANSI style if ALMOST_STDC defined.
+
+Sun Feb 27 16:29:38 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * emultempl/hppaelf.em (hppaelf_finish): Update comments. This
+ works again. Attach some output symbols to the stub file bfd.
+
+ * emultempl/hppaelf.em: Include elf32-hppa.h.
+ (file_chain): Add decl.
+ (hppa_look_for_stubs_in_section): Delete decl.
+ (hppaelf_finish): Reenable code. Do not pass symbols
+ down to hppa_look_for_stubs_in_section.
+
+Sat Feb 26 10:58:25 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldmain.c (write_map): Don't define. Removed all references.
+ Just use map_file or map_filename instead.
+ (add_archive_element): Use minfo to write map information, not
+ info_msg.
+ (constructor_callback): Use fprintf to write map information, not
+ info_msg.
+ * ldmain.h (write_map): Don't declare.
+ * ldgram.y (mri_script_command): Removed reference to write_map.
+ * ldlang.c (lang_one_common): Likewise.
+ * lexsup.c (parse_args): Likewise.
+
+Fri Feb 25 19:12:03 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * scripttempl/elf.sc: Force all sections to be aligned.
+
+ * ldgram.y (section): Reverse the order of memspec_opt and
+ fill_opt to avoid an ambiguity when both are used.
+ * ld.texinfo: Changed accordingly.
+
+ * ldgram.y: Move include of ldlex.h back with other includes.
+ * ldlex.h (input_type): Don't initialize enum constants to
+ particular values.
+ * ldlex.l: Use a switch to return the right token based on
+ input_type, rather than knowing that input_type has a value based
+ on a token type.
+
+ * ldgram.y (dirlist_ptr): Removed; not used.
+ * lexsup.c: Include ldver.h.
+ * Makefile.in: Rebuilt dependencies.
+
+Fri Feb 25 18:55:54 1994 Ted Lemon (mellon@pepper.ncd.com)
+
+ * ldlang.c (lookup_name): don't call bfd_set_gp_size.
+ (ldlang_add_file): call it here instead.
+
+Fri Feb 25 18:13:46 1994 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * ldgram.y: Include ldlex.h after %token decls, for byacc.
+
+Fri Feb 25 10:47:25 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * emultempl/hppaelf.em: First attempt to clean this file up.
+ Add comments in several functions as to their purpose and
+ how they function (or my current best guess). Clean up horrible
+ spacing and indention that never should have been accepted in the
+ first place. Add FIXMEs for issues which need to be resolved.
+ Disable linker-stub generation until it gets fixed. This allows
+ the linker to at least work on simple code for testing purposes.
+
+ * ldlang.c (lang_size_sections): No longer static (PA ELF calls
+ it via hppaelf_finish). Prototype moved into ldlang.h.
+ (lang_process): Move problematic extra call to lang_size_sections
+ into the PA ELF specific code.
+ * emultempl/hppaelf.em (hppaelf_finish): Extra call to
+ lang_size_sections moved here.
+
+Thu Feb 24 16:47:33 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * configure.in (powerpc-*-elf*): New target; use ppc-elf32.
+ * config/ppc-elf32.mt: New file.
+ * emulparams/elf32ppc.sh: New file.
+ * emultempl/ppc.em: New file.
+ * Makefile.in (ALL_EMULATIONS): Added em_elf32ppc.o.
+ (em_elf32ppc.c): New target; uses elf32ppc.sh, ppc.em and elf.sc.
+ (EMULATION_OFILES): Added dependencies on ldexp.h and ldlang.h.
+
+Thu Feb 24 12:27:07 1994 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * lexsup.c (parse_args): Use symbolic numbers for long options.
+ Fix misunderstanding in -Y and -call_shared et al.
+
+ Use getopt instead of lex and yacc to parse the command line.
+
+ * ld.texinfo (Options): Document changes to option syntax.
+ * Makefile.in: Update dependencies.
+ * ldver.c (help): Tweak dashes in usage message.
+ * ldgram.y (%union): Remove unused members.
+ Remove %tokens for command line options; add ones for input types.
+ (command_line): Rules removed.
+ (file): Instead of command line, recognize an
+ input type indicator, then use the nonterminal for that type.
+ (defsym_expr): New nonterminal from code formerly in command_line.
+ * ldlex.h: Declare parser input type enum and variable.
+ Don't declare parse_line.
+ * ldlex.l: Remove unused variables. Make some used ones static
+ and comment them.
+ (COMMAND): Start state and its rules removed.
+ At start of yylex, return input state token if at start of input.
+ (lex_redirect): Don't need to set yyout.
+ (ldlex_command): Function removed.
+ * ldmain.c (main): Instead of calling parse_line, set up the
+ redirections and call yyparse directly.
+ * ldmisc.c (vfinfo): If there's no input filename, print nothing, not
+ "command line".
+ * lexsup.c: Remove #if 0'd code.
+ (parse_line): Function removed.
+ (parse_args): Rewrite to use getopt_long_only.
+ (set_default_dirlist): New function from code formerly in
+ ldgram.y:command_line.
+ (set_section_start): New function.
+ * emultempl/generic.em, emultempl/gld960.em, emultempl/hppaelf.em,
+ emultempl/lnk960.em, emultempl/m88kbcs.em: Don't enclose
+ compiled-in link scripts in "{" and "}", as the grammar no longer
+ wants them to be.
+
+Thu Feb 24 08:43:26 1994 Ken Raeburn (raeburn@rtl.cygnus.com)
+
+ * Makefile.in (ld.dvi): Depend on configdoc.texi, but don't
+ require that it be in $(srcdir).
+
+Tue Feb 22 09:21:18 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldlang.c (lang_size_sections): Only align section to alignment
+ required by linker script, not to maximum alignment of input
+ sections.
+
+ * ldlang.h (largest_section): Don't declare.
+ * ldlang.c (largest_section): Don't define.
+ (size_input_section): Don't set largest_section; not used.
+
+Mon Feb 21 15:15:29 1994 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldlang.c (new_afile): Pass NULL as last argument to concat.
+
+Thu Feb 17 15:51:23 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c, ldmain.c: Include libiberty.h.
+
+ * ldmisc.h (concat): Don't declare.
+ * ldmisc.c (concat): Don't define; just use the one in libiberty.
+
+ * ld.h (as_output_section_statement): Removed; not used.
+
+Thu Feb 17 09:32:14 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldlang.c, ldmain.c, ldmisc.c: Use bfd_get_error and
+ bfd_set_error and new error names.
+
+Tue Feb 15 20:14:53 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * ldwrite.c (build_link_order): If the cooked size of the section
+ has been set, use it, for determining link_order size.
+ (ldwrite): In the error message displayed if bfd_final_link fails,
+ indicate that it was in fact the final link step that failed.
+
+ * ldlang.c (lang_size_sections): Clear bfd_error before calling
+ bfd_relax_section, in case it returns false but doesn't flag an
+ error. If an error is returned, indicate which one it is in the
+ error message.
+
+ * Makefile.in (install-info): Depend on ld.info, and use "$<*" so
+ it'll get picked up from $(srcdir) if appropriate.
+
+Tue Feb 15 16:32:04 1994 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * scripttempl/aout.sc: Only pad .text if PAD_TEXT is set.
+ * emulparams/i386mach.sh (PAD_TEXT): Set PAD_TEXT.
+
+Fri Feb 11 17:02:49 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldlex.l (comment): Increment line number when newline is read.
+
+Fri Feb 11 17:36:20 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c (lookup_name): Take new argument, force_load. If true,
+ reload the file even if it is already loaded.
+ (wild): Call lookup_name with force_load argument of 0.
+ (open_input_bfds): Call lookup_name with force_load argument of 1.
+ (print_symbol): Remove declaration of non-existent function.
+ (print_one_symbol): Return true rather than falling off end.
+
+Thu Feb 10 11:52:38 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldmain.c (main): Use %ld when printing long values.
+
+ * scripttempl/elf.sc: Move _edata after the .sdata section.
+ Permit OTHER_BSS_SYMBOLS to be defined.
+ * emulparams/elf32mipb.s (OTHER_BSS_SYMBOLS): Define _fbss.
+
+Mon Feb 7 16:31:15 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * Rename all "hppaosf" files to "hppaelf".
+ * Change all "osf" references to "elf" in hppaelf files.
+ * Makefile.in: Likewise.
+ * configure.in: Likewise.
+
+Sun Feb 6 20:31:56 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldmain.c (main): Call xatexit, not atexit.
+ Call xmalloc_set_program_name.
+
+ * ldlang.c (lang_size_sections): Check if bfd_relax_section set
+ bfd_errno.
+
+Sat Feb 5 03:54:34 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * emultempl/lnk960.em (append), emultempl/hppaosf.em
+ (hppaosf_finish): Call xmalloc, not ldmalloc.
+ * ldmain.c (preserve_output): Function removed.
+ (main): Do it here instead.
+
+Fri Feb 4 23:02:19 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * ldlang.h (LANG_FOR_EACH_{INPUT,OUTPUT}_SECTION): Delete (unused)
+ GNU C specific macros.
+
+ * emultempl/hppaosf.em (hppaosf_finish): Expand the only remaining
+ call to LANG_FOR_EACH_INPUT_SECTION.
+
+Fri Feb 4 16:26:08 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldmisc.c (ldmalloc, xmalloc, ldrealloc, xrealloc): Functions
+ deleted; will use libiberty versions instead.
+ * ldctor.c ldfile.c ldlang.c ldmain.c ldmisc.c ldmisc.h lexsup.c
+ mri.c Makefile.in: Change callers.
+
+ * ldmisc.c (vfinfo): Remove cleanup code.
+ * ldmain.c (remove_output): Put it here (new function).
+ (preserve_output): New function.
+ (main): Register remove_output and preserve_output with atexit.
+ * ldmain.c ldgram.y: Call xexit instead of exit.
+ * ldmisc.h: Declare xexit.
+
+Fri Feb 4 15:19:01 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * Makefile.in: Lots of new H8/500 memory models.
+
+Sun Jan 30 14:33:40 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * ldlex.l: Removed duplicate rules.
+ (yywrap): Provide default definition, needed with some versions of
+ flex.
+
+Fri Jan 28 09:12:56 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldmisc.c (vfinfo): For `%I', if the file is in an archive, print
+ the archive filename too.
+
+ * ldlex.l: Add rule to catch invalid input characters instead of
+ printing them. Include "ldmain.h" for program_name decl.
+ (lex_warn_invalid): New function.
+ * Makefile.in: Add dependency.
+
+Fri Jan 28 12:58:45 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * Makefile.in (check): Don't bother running any tests of
+ cross-linker until the test suite no longer assumes native mode.
+
+Thu Jan 27 17:19:54 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * ldlang.c (print_one_symbol, print_input_section): Print
+ global symbols in symbol table again.
+
+Thu Jan 27 12:35:01 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldmain.c ldmain.h ldgram.y: If -v -V or --version was given,
+ exit successfully instead of complaining if no input files are
+ given.
+
+Tue Jan 25 13:19:41 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * Makefile.in: Format variable definitions consistently.
+ (LD_PROG): Remove unnecessary variables from link command,
+ change variable LOADLIBES to EXTRALIBS.
+
+ * ldmain.c (main): Compute and display total execution time.
+ * ld.texinfo (-stats): Document the option.
+
+Mon Jan 24 12:56:37 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldmain.c (reloc_overflow): Added name, reloc_name and addend
+ arguments.
+
+ * ldlang.c (lookup_name): Set BFD GP size to -G argument value
+ after opening BFD.
+
+ * ldlang.c (relaxing): Removed global variable.
+ (lang_size_sections): If the canonical symbols have not already
+ been read in, read them in before relaxing.
+ * ldlang.h (relaxing): Removed declaration.
+
+Fri Jan 21 00:44:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c (new_afile): Initialize loaded field to false.
+ (lookup_name): If file was already loaded, don't call the
+ add_symbols entry point again.
+
+Wed Jan 19 13:57:00 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ld.texinfo: Clarify what -T option does.
+
+Tue Jan 18 16:18:15 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * scripttempl/m88kbcs.sc: Don't use CREATE_OBJECT_SYMBOLS, that's
+ for a.out.
+
+Tue Jan 11 13:22:04 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldmain.c (add_archive_element): If trace_files or
+ trace_file_tries, print file name.
+ * ldlang.c (lookup_name): Likewise.
+ (ldlang_add_file): Don't put files on input_bfds list in reverse
+ order.
+
+ * scripttempl/elf.sc: Correct typo.
+
+Mon Jan 10 19:49:05 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldgram.y, ldlex.l: Make the space between -e, -u, and -y and
+ their arguments optional, for compatibility with the old GNU ld.
+
+Fri Jan 7 20:00:24 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * scripttempl/elf.c: Define __bss_start before the .sbss section.
+
+Thu Jan 6 00:13:10 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldmain.c (add_to_set): Add bitsize argument.
+ (constructor_callback): New function.
+ (link_callbacks): Add constructor_callback.
+ * ldctor.c (struct set_info): Add bitsize field.
+ (ldctor_add_set_entry): Add bitsize argument.
+ (ldctor_build_sets): Base the size of the elements of the set on
+ the bitsize, rather than always using LONG.
+ * ldctor.h (ldctor_add_set_entry): Add bitsize to declaration.
+
+ * ld.h (QUAD_SIZE): Define.
+ * ldgram.y (QUAD): New token.
+ (length): Handle it.
+ * ldlex.l: Return QUAD.
+ * lexsup.c (keywords): Add QUAD.
+ * ldwrite.c (build_link_order): Handle QUAD.
+ * ldlang.c (print_data_statement): Handle QUAD.
+ (lang_size_sections): Likewise.
+ (lang_do_assignments): Likewise.
+ * ldexp.c (exp_print_token): Add QUAD to table.
+ * ld.texinfo: Describe QUAD.
+
+ * scripttempl/alpha.sc: Don't create .lit4 or .sdata sections,
+ since the Alpha doesn't use them.
+
+Wed Jan 5 17:42:16 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldemul.h (ld_emulation_xfer_struct): Comment the members.
+
+Sat Jan 1 13:39:31 1994 Rob Savoye (rob@darkstar.cygnus.com)
+
+ * Makefile.in, configure.in: Add support for VSTa micro-kernel.
+ * config/vsta.mt, emulparams/vsta.sh: New files for VSTa.
+
+Sat Jan 1 10:53:35 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * scripttempl/aout.sc: Pad .text to DATA_ALIGNMENT if relocating;
+ needed for i386mach. (Should be a no-op on other systems.)
+
+ * emulparams/i386mach.sh (SEGMENT_SIZE): Fix again.
+ (PAGE_SIZE): Don't define; not used.
+
+Fri Dec 31 16:12:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldgram.y (yyerror): Make argument const char *, and actually
+ print it out rather than assuming it is a syntax error.
+ * ldmisc.h: Change declaration of yyerror.
+ * ldemul.c, ldwrite.c: Add /*ARGSUSED*/ as appropriate.
+
+Fri Dec 31 11:37:28 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * emulparams/i386mach.sh (NONPAGED_TEXT_START_ADDR): Don't include
+ exec header offset, since the exec header isn't loaded.
+ (PAGE_SIZE, SEGMENT_SIZE): Agree with bfd/i386mach3.c.
+
+Thu Dec 30 13:01:43 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ A major rewrite to move the bulk of the linker into BFD so that
+ more efficient backend code can be written for specific object
+ files.
+ * lderror.c, lderror.h, ldindr.c, ldindr.h, ldsym.c, ldsym.h,
+ ldwarn.c, ldwarn.h, relax.c, relax.h: Removed.
+ * ldctor.c, ldctor.h: Complete rewrite.
+ * ldwrite.c, ldwrite.h: Complete rewrite.
+ * ld.h (strip_symbols_type, strip_symbols): Removed. Use
+ link_info.strip instead. Changed all uses.
+ (discard_locals_type, discard_locals): Removed. Use
+ link_info.discard instead. Changed all uses.
+ (ld_config_type): Removed relocateable_output field; use
+ link_info.relocateable instead; changed all uses. Added stats
+ field.
+ (set_asymbol_chain, get_asymbol_chain, get_loader_symbol,
+ set_loader_symbol): Removed.
+ * ldexp.h (node_class): Added etree_rel.
+ (etree_type): Added rel field.
+ * ldexp.c (exp_print_token): Bracketed table initialization.
+ (exp_relop): New function.
+ (fold_name): Use linker hash table rather than ldsym functions.
+ (exp_fold_tree): Likewise. Also, handle etree_rel case.
+ (exp_print_tree): Handle etree_rel.
+ * ldgram.y (strip_symbols, discard_locals): Removed.
+ (OPTION_stats, OPTION_no_keep_memory): New tokens. Handle them.
+ (REL): New token. Does not appear in grammar, but needed for
+ expression code.
+ (file): Don't call lang_final; it's called by main anyhow.
+ * ldlex.l: Accept -stats and -no-keep-memory options.
+ * ldlang.h (fill_type): Make unsigned int, not unsigned short.
+ * ldlang.c: Consistently use fill_type for fill argument.
+ (lang_init_script_file, script_file): Removed.
+ (create_object_symbols): Removed. Use
+ link_info.create_object_symbols_section instead. Changed all
+ uses.
+ (lang_add_keepsyms_file): Removed.
+ (lookup_name): Call bfd_link_add_symbols instead of
+ ldmain_open_file_read_symbol.
+ (wild): Don't iterate over script_file.
+ (open_output): Create link hash table.
+ (lang_place_undefineds): Rewrote.
+ (lang_size_sections): Handle relaxing (doesn't work yet).
+ (lang_relocate_globals): Removed.
+ (lang_finish): Use link hash table rather than ldsym functions.
+ (lang_common): Rewrote.
+ (lang_one_common): New function.
+ (ldlang_add_file): Add file to link_info.input_bfds list. Set
+ usrdata.
+ (create_symbol): Removed.
+ (lang_process): Don't call lang_init_script_file. Call
+ ldctor_build_sets rather than find_constructors. Don't call
+ lang_relocate_globals.
+ (lang_abs_symbol_at_beginning_of): Rewrote.
+ (lang_abs_symbol_at_end_of): Rewrote.
+ * ldmain.c (had_y): Removed.
+ (lprefix, lprefix_len): Removed; use link_info fields instead.
+ Changed all uses.
+ (multiple_def_count, commons_pending, undefined_global_sym_count,
+ total_symbols_seen, total_files_seen): Removed.
+ (link_callbacks, link_info): New variables.
+ (main): Initialize link_info. Don't call init_bfd_error_vector or
+ ldsym_init. Don't set now unused variables. Handle -stats.
+ (get_emulation): Removed obsolete and nonfunctional GNU960 code.
+ (add_ysym): Rewrote.
+ (read_entry_symbols, refize, enter_global_ref, enter_file_symbols,
+ search_library, gnu960_check_format, decode_library_subfile,
+ linear_library, symdef_library, clear_syms, subfile_wanted_p):
+ Removed.
+ (add_keepsyms_file, add_archive_element, multiple_definition,
+ multiple_common, add_to_set, warning_callback, undefined_symbol,
+ reloc_overflow, reloc_dangerous, unattached_reloc, notice_ysym):
+ New functions.
+ * ldmisc.c (vfinfo): Accept a string for %T, not a symbol. Don't
+ require symbols for %C; look them up instead.
+ * emultempl/hppaosf.em: Pass link_info to
+ hppa_look_for_stubs_in_section.
+ * Makefile.in: Rebuilt dependencies.
+ (CFILES): Removed lderror.c, ldindr.c, ldsym.c, ldwarn.c, and
+ relax.c.
+ (HFILES): Removed lderror.h, ldindr.h, ldsym.h, ldwarn.h, and
+ relax.h.
+ (EMULATION_OFILES): Depend on bfdlink.h, ldmain.h, ldexp.h,
+ ldlang.h and ldctor.h.
+
+ * Makefile.in (ldlex.c): Don't depend on ldgram.h. Remove
+ declarations of free and malloc from flex output. Change malloc
+ to ldmalloc in flex output.
+
+Thu Dec 16 21:19:57 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * ldmain.c (lprefix): Change default from a char to a string
+ with only one character.
+ (lprefix_len): Set default to one.
+
+ * ldmain.h (lprefix_len): Declare.
+
+ * ldsym.c (write_file_locals): Use strncmp rather than a character
+ comparison for lprefix.
+
+ * emultmpl/m88kbcs.em (before_parse): Set lprefix and lprefix_len
+ correctly.
+
+ * emultmpl/hppaosf.em: Include ldexp.h.
+ (before_parse): Set lprefix and lprefix_len correctly.
+
+Tue Dec 14 17:19:03 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlex.h: Don't declare yywrap if it is a macro.
+ * ldlex.l: Include sysdep.h.
+ * ldlang.c (lang_for_each_statement_worker,
+ lang_for_each_statement): Forgot to use PARAMS.
+
+Mon Dec 13 14:30:03 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in: Added .PHONY targets where appropriate. Added some
+ comments. Also:
+ (gcclibdir, version): Removed unused variables.
+ (DEP): New variable, set to mkdep.
+ (ALL_CFLAGS): New variable. Used in .c.o target.
+ (CFILES, HFILES, GENERATED_CFILES, GENERATED_HFILES): New
+ variables.
+ (HEADERS, MANSOURCES, LDCSOURCES, GENERATED_SOURCES,
+ GENERATED_HEADERS, LDSOURCES, BFD_SOURCES, SOURCES): Removed
+ mostly obsolete variables. Adjusted remaining uses.
+ (DEF_EMUL): Removed variable.
+ (ldmain.o): Handle undefined EMUL error correctly.
+ (ldemul-list.h): Depend on config.status rather than Makefile.
+ Create via temporary file.
+ (ver960.c, roll, make): Removed obsolete targets.
+ (.dep, .dep1, dep.sed, dep, dep-in): New targets. Used to rebuild
+ dependencies.
+ * dep-in.sed: New file, used when rebuilding dependencies.
+
+Sat Dec 11 14:43:44 1993 Ian Lance Taylor (ian@deneb.cygnus.com)
+
+ Made many changes to eliminate gcc warnings. Made various
+ cosmetic changes, declared various things in header files, removed
+ various extern declarations from .c files. No substantive
+ changes.
+
+ * ldlang.c (lang_process): Ifdef out final call to
+ lang_size_sections again (reverting change of Nove 2), since it
+ breaks the Sun4 linker.
+
+Thu Dec 2 16:31:47 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * configure.in (alpha-*-netware*): New target; use alpha.
+
+Wed Dec 1 14:04:20 1993 Ken Raeburn (raeburn@cygnus.com)
+
+ * configure.in: Group targets by CPU. Merge some m68k target
+ entries with different CPU specs that use the same ld_target
+ values.
+
+ * configure.in: Add sparc*-*-coff.
+ * config/coff-sparc.mt, emulparams/coff_sparc.sh: New files.
+ * Makefile.in (ALL_EMULATIONS): Add em_coff_sparc.o.
+ (em_coff_sparc.c): Add dependencies and build rules.
+
+ * ldmisc.c (errno, sys_nerr, sys_errlist): Don't declare.
+
+Wed Dec 1 12:19:55 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldgram.y (OPTION_call_shared, OPTION_non_shared, OPTION_Oval):
+ New tokens.
+ (command_line_option): Accept and ignore them (for now).
+ * ldlex.l (<COMMAND>): Handle -non_shared, -call_shared, and -On
+ where n is a number.
+
+Mon Nov 22 14:14:29 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldmain.c (subfile_wanted_p): If merging a common symbol which is
+ not in bfd_com_section, create the section in the BFD so that it
+ can be placed in the right output section.
+
+Fri Nov 19 14:12:39 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * configure.in (mips*-sgi-irix5*): New target. Use mipsb-elf32.
+ * emulparams/elf32mipsb.sh (DATA_ADDR): Define.
+ (OTHER_READONLY_SECTIONS): Define for .reginfo.
+ (EXECUTABLE_SYMBOLS): Define for _DYNAMIC_LINK.
+ * scripttempl/elf.sc: Use EXECUTABLE_SYMBOLS when not relocating.
+ Move OTHER_READONLY_SECTIONS after all the other readonly
+ sections. Don't use DATA_ADDR twice.
+
+ * ldmain.c (enter_file_symbols): Removed duplicate tests of p. If
+ p is in a common section, make sure the BFD has a section of that
+ name.
+
+ * ldlang.c (lang_common): Add newline to error message.
+
+Thu Nov 11 15:54:41 1993 Stan Shebs (shebs@rtl.cygnus.com)
+
+ * emulparams/m68klynx.sh (SCRIPT_NAME): Define to use a
+ Lynx-specific script instead of m68kcoff.
+ (OUTPUT_FORMAT): Define as "coff-m68k-lynx".
+ (ENTRY): Define as __main.
+ (TEXT_START_ADDR): Define as 0.
+ (PAGE_SIZE): Define as 0x1000.
+ * emulparams/i386lynx.sh, emulparams/sparclynx.sh: Fix comment.
+ * scripttempl/m68klynx.sc: New file.
+
+Mon Nov 8 12:00:16 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldmain.c (get_emulation): Ignore -mips1, -mips2 and -mips3
+ arguments rather than treating them as emulation names.
+
+Fri Nov 5 09:02:52 1993 D. V. Henkel-Wallace (gumby@blues.cygnus.com)
+
+ * configure.in: Support x86 unixware and netware plus generic netware.
+
+Fri Nov 5 21:47:55 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * emulparams/i386mach.sh (TEXT_START_ADDR, NONPAGED_TEXT_START_ADDR):
+ Correct values (?).
+
+Wed Nov 3 15:10:15 1993 Ken Raeburn (raeburn@rover.cygnus.com)
+
+ * Makefile.in (distclean): Don't delete dvi or info files.
+ (ld.info): Update dependency list.
+ (ld.dvi): Ditto. Extend TEXINPUTS to get bfdsumm.texi.
+
+Wed Nov 3 12:07:39 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldlang.c (lang_add_output): Take new arg, FROM_SCRIPT.
+ Set output_filename instead of creating a new node.
+ (open_output): Don't set output_filename.
+ (lang_final): Create the new node here.
+ * ldlang.c, ldlang.h, ldgram.y, mri.c: pass FROM_SCRIPT.
+
+Tue Nov 2 15:45:51 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ From Pete Hoogenboom (hoogen@cs.utah.edu):
+
+ * scripttempl/hppaosf.sc: (___stack_zero, etext, _etext,
+ edata, _edata, end): Add definitions of these symbols.
+ (__end): Remove definition of this symbol.
+ (__data_start): Move definition of this symbol.
+
+ * emultempl/hppaosf.em: Various fixes and support for linker stub
+ generation.
+ (hppaosf_finish, hppaosf_search_for_padding_statements,
+ hppaosf_create_output_section_statements): New functions in
+ support of linker stub generation.
+ (ld_hppaosf_emulation): Redefine to include new
+ emulation-specific routines.
+
+ * ldlang.c (lang_process): Re-enable last call lang_size_sections.
+ Pass abs_output_section rather than NULL to avoid invalidating
+ absolute symbols.
+
+Thu Oct 28 21:16:42 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * Makefile.in (ALL_EMULATIONS): Add em_i386mach.o.
+ (em_i386mach.c): New rule.
+ * configure.in (i[34]86-*-mach*): New case.
+ * config/i386-mach.mt: New file.
+ * emulparams/i386mach.sh: New file.
+
+Fri Oct 29 14:55:05 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ld.h (flag_is_*): Removed macros.
+ * ldmain.c (enter_global_ref), ldsym.c (write_file_locals):
+ Consistently check the BFD symbol flags directly, rather than
+ using file_is_* macros.
+
+Thu Oct 28 19:08:42 1993 Stan Shebs (shebs@rtl.cygnus.com)
+
+ * configure.in (sparc*-*-lynxos*): New target.
+ * Makefile.in: Add rule for em_sparclynx.c.
+ (ALL_EMULATIONS): Add Lynx emulations.
+ * config/sparc-lynx.mt: New file.
+ * emulparams/sparclynx.sh: New file.
+ * scripttempl/sparccoff.sc: New file.
+
+Thu Oct 28 13:50:25 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in: Add dependency for $(EMULATION_OFILES).
+
+Mon Oct 25 16:09:24 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * relax.c (write_relax): Check return value of bfd_seclet_link.
+
+Mon Oct 25 09:31:21 1993 Ken Raeburn (raeburn@cygnus.com)
+
+ * ldlang.c (delete_output_file_on_failure): New variable.
+ (open_output): Set it after bfd open succeeds.
+ * ldmisc.c (vfinfo): Test it.
+
+ Changes from Peter Hoogenboom, hoogen@cs.utah.edu:
+
+ * ldsym.c (write_file_locals): Set the BSF_FILE flag for object
+ symbols.
+
+ * ldemul.c: Support was added to allow emulation-specific
+ processing to occur. This support was added primarily for linker
+ stub generation in the elf32-hppa gld.
+ (ldemul_finish, ldemul_create_output_section_statements): New
+ functions.
+ * ldemul.h: Support was added to allow emulation-specific
+ processing to occur. (As described above.) Added finish and
+ create_output_section_statements fields to
+ ld_emulation_xfer_struct structure.
+ * ldlang.c: Add calls to emulation-specific routines.
+ (lang_process): Add call to
+ ldemul_create_output_section_statements function.
+ (lang_process): Add call to a emulation-specific routine (and
+ some processing after the call).
+
+Fri Oct 22 20:54:13 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
+
+ * configure.in: mips*- instead of mips-, mips*el changes
+
+Tue Oct 19 15:46:28 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * configure.in (alpha-*-osf*): New target; use alpha.mt.
+ * Makefile.in (ALL_EMULATIONS): Added em_alpha.o.
+ (em_alpha.c): New target; use alpha.sh and alpha.sc.
+ * config/alphaosf.mh (NATIVE_LIB_DIRS, HOSTING_CRT0): Define.
+ * config/alpha.mt: New file.
+ * emulparams/alpha.sh: New file.
+ * scripttempl/alpha.sc: New file.
+
+Fri Oct 15 02:20:04 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * ldlang.c (lang_size_sections, lang_common): ALIGN_N can't handle
+ types of different sizes (eg: 64 and 32 bits), so coerce.
+ * ld.h (ALIGN_N): Add warning about usage.
+
+Wed Oct 13 16:02:39 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldmain.c (enter_global_ref): Just ignore any weak symbol for
+ which we already have a definition, rather than checking in
+ several different places whether the symbol is weak.
+
+Tue Oct 12 17:30:51 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * configure.in (mips-*-elf*): New target; use mipsb-elf32.
+ * scripttempl/elf.sc: Only use OTHER_READONLY_SECTIONS and
+ OTHER_READWRITE_SECTIONS if relocating. Shell variables are not
+ expanded within them.
+ * config/mipsb-elf32.mt: New file.
+ * emulparams/elf32mipb.sh: New file.
+ * Makefile.in (em_elf32mipb.c): New target.
+
+Thu Sep 30 17:00:36 1993 Rob Savoye (rob@darkstar.cygnus.com)
+
+ * ldgram.y: In input_list, change lang_input_file_is_file_enum to
+ lang_input_file_is_search_file_enum so objects brought in using
+ INPUT() do a path lookup.
+
+Tue Sep 28 13:31:23 1993 Stan Shebs (shebs@rtl.cygnus.com)
+
+ * configure.in: Change Lynx ld_target to be {i386,m68k}-lynx
+ instead of {i386,m68k}-coff.
+ * Makefile.in (em_i386lynx.c, em_m68klynx.c): New targets.
+ * config/i386-lynx.mt: New file.
+ * config/m68k-lynx.mt: New file.
+ * emulparams/i386lynx.sh: New file.
+ * emulparams/m68klynx.sh: New file.
+
+ * scripttempl/i386coff.sc: Make ENTRY get its value from ${ENTRY},
+ but defaulting to _start.
+
+ * ldemul.c, ldfile.c, ldlang.c, ldmain.c, ldmisc.c, ldmisc.h,
+ ldsym.c, ldwarn.c: Rename info to info_msg, to avoid conflict with
+ LynxOS libc.
+
+Thu Sep 23 14:51:03 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * config/solaris2.mh: New file. Define HOSTING_CRT0 and
+ HOSTING_LIBS for testing.
+
+Fri Sep 17 17:52:24 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ Finish up support for i386-sysv4 (without shared libraries):
+ * ld.h (flag_is_weak): Define.
+ * ldlang.c (print_symbol): Mention whether symbol is weak.
+ (print_input_section): Print weak symbols as globals.
+ * ldmain.c (refize): Do not zero out BSF_WEAK flag.
+ (enter_global_ref): Do not warn if a weak symbol redefines a
+ global symbol. Do not let a weak symbol redefine a common symbol.
+ (enter_file_symbols): Treat weak symbols as global symbols.
+ (subfile_wanted_p): Do not pull in an object file from a archive
+ just to resolve an undefined weak symbol.
+ * ldmisc.c (vfinfo): Don't needlessly malloc space after a fatal
+ error; the error might be that malloc has run out of space.
+ * ldsym.c (write_file_locals): Treat weak symbols as global.
+ * configure.in (i[34]86-*-sysv4*, i[34]86-*-elf*): New targets;
+ use i386-elf.
+ * config/i386v4.mh: New file; set NATIVE_LIB_DIRS to /usr/ccs/lib.
+ * config/i386-elf.mt: New file; set EMUL to elf_i386.
+ * emulparams/elf_i386.sh: New file.
+ * scripttempl/elf.sc: Use ${NOP} as filler (defaults to 0).
+ * Makefile.in (NATIVE_LIB_DIRS): Define to be empty.
+ (ALL_EMULATIONS): Add em_elf_i386.o.
+ (GENSCRIPTS): Pass NATIVE_LIB_DIRS as sixth argument.
+ (em_elf_i386.c): New target, like other em_*.c targets.
+ ($(LD_PROG)): Pass $(CFLAGS) to $(CC).
+ * genscripts.sh: Accept NATIVE_LIB_DIRS as sixth argument. If
+ nonempty, and configured for native, add it to LIB_PATH.
+
+Fri Sep 17 13:07:39 1993 Stan Shebs (shebs@rtl.cygnus.com)
+
+ * scripttempl/{h8300.sc,h8500.sc,i386coff.sc,m68kcoff.sc,sh.sc}:
+ Added statements to pass stab and stabstr sections through and
+ mark them as NOLOAD, which makes GDB happier.
+
+Wed Sep 15 16:02:29 1993 Stan Shebs (shebs@rtl.cygnus.com)
+
+ * configure.in: Accept m68k-lynx-lynxos config.
+
+ * Makefile.in: Use $(SHELL) to run genscripts.sh.
+
+Sun Sep 12 16:04:40 1993 Doug Evans (dje@cygnus.com)
+
+ * config/coff-h8300.mt: Add EMUL=h8300h.
+
+ * ldmain.c (main): Call set_scripts_dir after argv has been processed.
+
+Fri Sep 10 09:36:29 1993 Jeffrey Wheat (cassidy@cygnus.com)
+
+ * Makefile.in: Changed CXX back to g++.
+
+Fri Sep 10 09:34:29 1993 Jeffrey Wheat (cassidy@cygnus.com)
+
+ * Makefile.in: Fixed RUNTEST* CXX CXXFLAGS macros and check rule.
+
+Fri Sep 10 07:26:57 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * Makefile.in (TAGS): Use shell wildcards.
+
+Tue Sep 7 18:04:54 1993 Jeffrey Osier (jeffrey@cygnus.com)
+
+ * Makefile.in: add TEXINPUTS variable and use it in ld.dvi target
+
+Fri Sep 3 16:46:41 1993 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * ld.texinfo: re-enable included config file; conditionalize doc
+ for -oformat to interact properly with SingleFormat doc config
+ var; rename @up/@down to @raisesections/@lowersections.
+
+Wed Aug 25 16:29:56 1993 K. Richard Pixley (rich@sendai.cygnus.com)
+
+ * configure.in: recognize m88110.
+
+Tue Aug 24 18:49:40 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ From Peter Hoogenboom <hoogen@shafer.cs.utah.edu>:
+ * emultempl/hppaosf.em (ld_hppaosf_emulation): Correct name for PA
+ ELF emulation is "elf32-hppa" not "elf-big".
+ (hppaosf_before_parse): Remove unneeded processing of environment
+ variables.
+ * scripttempl/hppaosf.sc: Include .hppa_linker_stubs sections in
+ .text segment of output file.
+ * emulparams/hppaosf.sh (OUTPUT_FORMAT): Use elf32-hppa.
+
+Tue Aug 24 16:17:00 1993 K. Richard Pixley (rich@sendai.cygnus.com)
+
+ * ld.h: define BYTE_SIZE, SHORT_SIZE, and LONG_SIZE which are no
+ longer in bfd.h.
+
+ * ldlang.c, ld.h: updated copyright.
+
+Tue Aug 17 15:22:03 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldlang.c (open_output, lang_check): Check return value of
+ bfd_set_arch_mach.
+
+Tue Aug 17 07:02:19 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
+
+ * scripttempl/h8500.sc: Start all sections in a different segment.
+ * scripttempl/z8ksim.sc: Handle constructors
+
+Thu Aug 12 16:05:37 1993 Jeffrey Wheat (cassidy@cygnus.com)
+
+ * Makefile.in: revert earlier changes back to execute runtest
+ with make check. cdtest and bootstrap now function as they
+ did within the Makefile.
+
+Thu Aug 12 10:20:05 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * Makefile.in: Update dependencies.
+
+ * configure.in: Set EMULATION_OFILES in Makefile based on
+ --with-targets option.
+
+Thu Aug 12 08:52:29 1993 Jeffrey Wheat (cassidy@cygnus.com)
+
+ * Makefile.in: check targets reimplemented to old way.
+
+Wed Aug 11 08:26:11 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * config/i386v.mh, config/irix4.mh: Use gcc
+ -print-libgcc-file-name rather than $(libdir)/libgcc.a.
+ * config/i386sco.mh: New file; copy of i386v.mh to correspond to
+ bfd/configure.host change.
+
+Mon Aug 9 14:25:35 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * scripttempl/elf.sc: Handle .line and .debug* sections.
+
+ * ldlex.l: Use bfd_scan_vma, not strtoul.
+
+Fri Aug 6 08:57:39 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldexp.c, ldfile.c, ldlang.c, lexsup.c, ldmain.c, ldemul.c:
+ Remove inital caps in some error messages, change "can't" to
+ "cannot", add missing colons.
+ * ldmisc.c (vfinfo): Print "%%" as a single %.
+ For '%' followed by unrecognized character, print them both
+ verbatim instead of expecting a char * arg.
+ For '%C', don't put the function name in parens.
+
+ * ldexp.c (invalid): Pass "%%", not "% ".
+
+Fri Aug 6 14:31:22 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * scripttempl/mips.sc: Always define _ftext, _fdata, _fbss.
+ (BSS_VAR): Removed; now always define _fbss.
+ * emulparams/mipsidt.sh, emulparams/mipsidtl.sh (BSS_VAR):
+ Removed.
+
+Thu Aug 5 15:55:19 1993 david d `zoo' zuhn (zoo@rtl.cygnus.com)
+
+ * configure.in: z8k-coff is the same as z8k-sim
+
+Wed Aug 4 21:00:18 1993 Jeffrey Wheat (cassidy@cygnus.com)
+
+ * testsuite/lib/ld.exp: new file
+ * testsuite/config/unix-ld.exp: new file
+ * testsuite/ld.bootstrap/bootstrap.exp: new file
+ * Makefile.in: add dejagnu support for make check
+
+Wed Aug 4 17:52:32 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldlex.l (comment): Add missing newline in message.
+ * ldindr.c (add_indirect): Ditto.
+ * ldexp.c (exp_fold_tree): Ditto.
+
+Tue Aug 3 10:57:41 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldgram.y, ldlex.l, mri.c, ldwrite.c: Change multiple commons
+ into externs.
+
+ * ldmisc.c (multiple_warn): New function.
+ * ldmisc.h: Declare it.
+ * ldmain.c (enter_global_ref): Call it.
+ * ld.h (ld_config_type): Add warn_common.
+ * ldlex.l, ldgram.y: Set it with -warn-common option.
+ * ldver.c (help): Document it.
+
+Mon Aug 2 12:04:36 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * scripttempl/elf.sc: Add hooks for .sdata, .sbss, and
+ target-specific sections, and for changing data section vma.
+
+Mon Jul 26 14:00:02 1993 Ken Raeburn (raeburn@deneb.cygnus.com)
+
+ * ldgram.y (OPTION_Qy, OPTION_Y, OPTION_dn, OPTION_YP): New
+ terminals, for Solaris.
+ (dirlist_ptr): New static variable.
+ (command_line_option): Accept new options.
+
+ * ldlex.l: Accept command-line options "-Qy", "-dn", "-Y", and
+ "-YP,...".
+
+ * config/sun4sol2.mt: Pass emulation name without ".sh".
+
+ * emulparams/elf32_sparc.c: Renamed from elf32-sparc.c.
+ * config/sun4sol2.mt (em_elf32_sparc.c): Adjusted accordingly.
+
+Fri Jul 23 13:51:09 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * scripttempl/elf.sc: Add support for .init, .fini, .ctors,
+ .dtors, .data1, .rodata1 sections, instead of combining them into
+ other sections. For `-r', set all section start addresses to
+ zero.
+
+ * emulparams/elf32-sparc.sh (TEXT_START_ADDR,
+ NONPAGED_TEXT_START_ADDR): Value should be 0x10100.
+ (MAXPAGESIZE): Renamed from PAGE_SIZE.
+
+Wed Jul 21 14:28:42 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * genscripts.sh: If this is the default emulation, set
+ COMPILE_IN.
+ * emultempl/*.em: Use it to determine whether to compile in the
+ scripts.
+
+ * Makefile.in (GENSCRIPTS): Pass the default emulation name to
+ genscripts.sh. Pass the current emulation name without ".sh" on
+ the end.
+ * genscripts.sh: Take an default emulation arg.
+ Use the current emulation name as EMULATION_NAME.
+ Make default lib path for cross-compiling ':', not null.
+ * emulparams/*.sh: Don't set EMULATION_NAME.
+ * ldemul.c (ldemul_get_script): Take isfile arg.
+ Pass it to emulation's get_script function.
+ * ldemul.h: Adjust get_script prototypes.
+ * ldfile.c (ldfile_find_command_file): Renamed from find_a_name.
+ No longer static.
+ * ldfile.h: Declare it.
+ * ldgram.y: Accept a script on the command line again,
+ for parsing compiled-in scripts.
+ * ldmain.c (main): If ld script is a file, parse it as a -T
+ option, otherwise parse it directly.
+ * emultempl/*.em (*get_script): Return the scripts themselves if
+ this is the default emulation; otherwise return their file names.
+ * emultempl/m88kbcs.em: New file, to take m88kbcs #ifdef out of
+ generic.em.
+ * emulparams/m88kbcs.sh: Use it.
+
+ * ld.h (ld_config_type::unix_relocate): Remove unused element.
+
+Tue Jul 20 12:01:49 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * Makefile.in (ALL_EMULATIONS): Delete em_i386linux.o (for which
+ there's no change log entry yet, tsk tsk) from the list of
+ emulations compiled in until Mark gets around to checking in
+ emulparams/i386linux.sh.
+ (ldemul-list.h): Depend on Makefile, so if EMULATION_OFILES is
+ changed, this file gets updated.
+
+Fri Jul 16 14:14:32 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldgram.y (OPTION_Lfile): New token.
+ (command_line_option): Accept OPTION_L NAME (whitespace after -L).
+ * ldlex.l (<COMMAND>): Accept -L without FILENAME.
+
+Fri Jul 16 13:44:26 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * configure.in: h8/300h support needs own .mt file.
+ config/coff-h8300h.mt: New file.
+
+Thu Jul 15 12:44:35 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldmain.c: Don't include sys/stat.h; it already got included
+ somewhere along the way.
+
+Thu Jul 15 14:43:34 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * Makefile.in: Add h8300h support.
+ emulparams/h8300h.sh: New file.
+ scripttempl/h8300h.sc: New file.
+
+Thu Jul 15 12:44:35 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldfile.c (ldfile_open_file): In error message, use the name the
+ user gave (e.g., "-lc"), rather than the base file name.
+
+ * ldexp.c (exp_fold_tree): Don't assign an int to an enum.
+
+ * ldmain.[ch]: Remove initial Q_ from function names.
+ * ldexp.c, ldindr.c, ldlang.c: Change callers.
+
+ * ldfile.c, ldmain.c, ldgram.y: Rename option_v to trace_file_tries.
+
+ * ldlang.c (lang_process): Move loading of default script from
+ here to main. Add a "/" to start of script name to prevent
+ finding it in "." first.
+
+ * ldmain.c (set_scripts_dir): Don't look in "." first.
+
+ * ldgram.y, ldlang.c, ldsym.c: Remove traces of unused var
+ option_longmap.
+
+Thu Jul 15 10:55:59 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (em_m88kbcs.c): Correct dependency.
+ * scripttempl/m88kbcs.sc: It's ARCH, not arch. Removed TARGET
+ statement. Changed OUTPUT_FORMAT to use ${OUTPUT_FORMAT}.
+ * emulparams/m88kbcs.sh: It's coff-m88kbcs, not m88kbcs.
+
+Wed Jul 14 21:42:53 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldfile.c (ldlang_open_file, ldfile_open_command_file),
+ main.c (main): Print the errno string in the error message.
+
+Tue Jul 13 20:00:30 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * configure.in: Accept h8300h for target cpu.
+
+ * ldmisc.c (vfinfo): Have demangle remove leading underscore if
+ present (demangle is smart enough to know whether to do it or not).
+
+Mon Jul 12 11:45:48 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldmain.c (set_scripts_dir): Check . and <ld bin dir>/../lib for
+ ldscripts, as well as <ld bin dir> and SCRIPTDIR.
+
+ * ldlang.c (lang_process): Use sizeof instead of magic constant.
+
+ * ldmain.c (get_emulation, check_for_scripts_dir,
+ set_scripts_dir): New functions.
+ (main): Call them.
+
+Mon Jul 12 10:57:03 1993 Ken Raeburn (raeburn@deneb.cygnus.com)
+
+ * scripttempl/elf.sc: Include .init, .fini, .rodata sections.
+ Create symbol "end" instead of "__end". Comment out some parts
+ that may not be needed (yet) for elf.
+
+ * configure.in: Accept sparc-elf and sparc-solaris2 configs.
+
+Thu Jul 8 15:33:32 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * Makefile.in (ALL_EMULATIONS): Include $(OTHER_EMULATIONS).
+
+ * ldmisc.h (einfo, minfo, info): Don't bother with PARAMS macro
+ when no prototype is being supplied.
+ (ldmalloc, ldrealloc): Size argument is now size_t.
+
+ * ldmisc.c (finfo): New function, accepts FILE* argument.
+ (vfinfo, case 'v'): New format character; displays bfd_vma in hex
+ without leading zeros.
+ (vfinfo, cases 'R' and 'C'): Use finfo(%v) when displaying a
+ bfd_vma value, instead of fprintf(%x) which won't hold a long long
+ value.
+ (concat, buystring): String lengths are size_t.
+ (ldmalloc, ldrealloc, xrealloc): Size argument is now size_t.
+
+ * ldlang.c (new_statement): Size argument is now size_t. Added
+ forward declaration with prototype.
+
+Thu Jul 8 10:53:47 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldgram.y (OPTION_v): Don't turn on verbose output.
+
+Wed Jul 7 17:10:45 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * ldlex.l: Get rid of local typedef for bfd_vma! Get it from
+ bfd.h instead.
+
+Wed Jul 7 11:33:12 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (install): Don't install as $(tooldir)/bin/gld;
+ collect2 doesn't look for gld any more anyhow.
+
+Mon Jul 5 14:29:48 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldlang.c (lang_relocate_globals): Skip indirect symbols, which
+ now have a non NULL srefs_chain.
+
+ * config/hp300hpux.mt: Use emulation hp3hpux rather than
+ hp300hpux, since the latter does not exist.
+
+Fri Jul 2 18:06:05 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * genscripts.sh: Put the scripts in the ldscripts directory, not
+ emulations.
+ * configure.in (ldscripts): Make, instead of emulations.
+ * Makefile.in (scriptdir): Take off the "ld" part.
+ (install, clean, distclean): Use ldscripts, not emulations.
+ In tests, don't pass -Lemulations.
+ Don't pass tooldir/lib to genscripts.sh.
+ * genscripts.sh: Don't take tooldir/lib arg.
+ * ldlang.c (lang_process): Add "ldscripts/" to the name of the
+ default script file.
+
+Fri Jul 2 17:13:35 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * scripttempl/h8300.sc: Add .tors section for constructor/destructors.
+
+Thu Jul 1 16:38:45 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * config/coff-h8300.mt: EMUL=h8300hms -> h8300.
+
+Wed Jun 30 15:45:55 1993 K. Richard Pixley (rich@sendai.cygnus.com)
+
+ * Makefile.in (.y.c): skip default .y.c rules. gnu make can now
+ run in parallel without colliding on yacc's static file names.
+ Without the stub rule, make will try to start two yacc's
+ concurrently which fails because of yacc's static file names.
+
+Tue Jun 29 12:20:36 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldmain.c (subfile_wanted_p): Don't dump core if there are no
+ symbols.
+
+Mon Jun 28 12:22:11 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * genscripts.sh (LIB_PATH): Only add /usr/local/lib if it's
+ different from libdir.
+
+ * Makefile.in (scriptdir): Base on tooldir, not datadir.
+
+Sat Jun 26 12:03:57 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldver.c (help): New function.
+ * ldver.h: Declare it.
+ * ldlex.l, ldgram.y: Recognize new options --help and --version.
+
+Mon Jun 21 20:39:48 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
+
+ * Makefile.in (INCLUDES): Don't need ../include any more.
+
+Mon Jun 21 16:38:35 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldlex.l, ldgram.y: Support new -oformat option.
+ Remove attempt at supporting script fragments on the command line.
+ * ldlang.c (lang_add_output_format): Take new arg, FROM_SCRIPT.
+ * mri.c (mri_format), ldgram.y: Change callers.
+ * ldlang.h: Change prototype.
+
+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)
+
+Thu Jun 17 14:33:09 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldgram.y: Tweak grammar to make reporting of invalid options work.
+
+ * Makefile.in (.cc.o): Restore .SUFFIXES entry for .cc
+ and .cc.o rule.
+
+Wed Jun 16 11:45:32 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldfile.c (ldfile_open_command): Don't try .ld extension.
+ It wasn't documented (or likely used) and wastes time.
+ (try_open): If EXTEN is empty, don't try it.
+
+ * ldctor.c, lderror.c, ldexp.c, ldfile.c, ldindr.c, ldlang.c,
+ ldlex.l, ldmain.c, ldmisc.c, ldsym.c, ldver.c, ldwarn.c,
+ ldwrite.c, lexsup.c, mri.c, relax.c: Replace DEFUN macro calls
+ with normal function declarations.
+
+ * Move *.em to emultempl/*.em. Move *.sh to emulparams/*.sh.
+ Move *.sc-sh to scripttempl/*.sc.
+ * {emultempl,emulparams,scripttempl}/README: New files.
+ * sh.em, st2000.em, z8ksim.em, h8300hms.em, h8500hms.em: Files
+ removed, replaced with generic.em.
+ * h8300.sh, h8500.sh, h8300.sc, h8500.sc: Renamed from
+ h8[35]00hms.s[ch]. Change their contents to omit the "hms".
+
+ * *.em (*_get_script): Return script name instead of script contents.
+ * ldlang.c (lang_process): Change caller.
+
+ * ldlex.l, ldgram.y: Recognize -m option.
+ Check for input files after *all* options in grammar.
+ * ldmain.c (main): Check for -m options. Add default directory
+ for -m.
+
+ * mkscript.c: File removed.
+ * genscripts.sh: Take two more parameters, tooldirlib and libdir,
+ to add to the default LIB_PATH.
+ Look for input files in the new subdirectories.
+ Create the scripts in emulations subdirectory and don't filter
+ them through mkscript.
+ * configure.in: Make the emulations subdirectory.
+
+ * Makefile.in: Account for all of the above changes.
+ Remove unused .SUFFIXES. Get libgcc.a path with gcc
+ -print-libgcc-file-name instead of $(libdir)/libgcc.a.
+ Put CFLAGS last in the compilation rules.
+ Add -I../bfd to INCLUDES so sysdep.h is found.
+
+Tue Jun 15 23:04:46 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * Makefile.in (INCLUDES): Look in ../include, not ../bfd.
+
+ * aout.sc-sh: Add SHLIB_PATH like STACKZERO. Make STACKZERO
+ dependent on RELOCATING, not RELOCATION.
+ * hp3hpux.sh (SHLIB_PATH): Define it.
+
+Mon Jun 14 19:06:15 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * ldfile.c (try_open): If opening without the extension fails,
+ try with the extension even if -v or -V was given.
+ had_script is imported (from ldgram.y), not exported.
+
+Mon Jun 14 16:26:10 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com)
+
+ * Makefile.in: remove parentdir support, use INSTALL_XFORM
+
+Thu Jun 10 14:00:06 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldexp.c (exp_fold_tree): Don't lose the old flag bits.
+ * ldgram.y (statement_list_opt): New nonterminal, either empty or
+ statement_list.
+ (section): Use statement_list_opt, not statement_list.
+ * m68kcoff.sc-sh: Gather constructors and destructors and define
+ __CTOR_LIST__ and __DTOR_LIST__ appropriately.
+ * sa29200.sc-sh: Gather constructors and destructors and define
+ ___CTOR_LIST__ and ___DTOR_LIST__ appropriately.
+
+Mon Jun 7 12:53:28 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.
+
+Fri Jun 4 16:18:24 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: remove install:all and install-info:info
+ dependencies (these cause some spurious rebuilds at 'make install'
+ time)
+
+Fri Jun 4 08:50:14 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * configure.in (mips-idt-ecoffl*): New target; use mips-idtl.
+ (mips-idt-ecoff*): Added trailing '*'.
+ * config/mips-idtl.mt: New file; use EMUL of mipsidtl.
+ * mipsidtl.sh: New file; like mipsidt.sh, but little endian.
+ * Makefile.in (ALL_EMULATIONS): Added em_mipsidtl.o.
+
+ * config/sun3.mh (HOSTING_LIBS, HOSTING_EMU): Removed obsolete and
+ incorrect definitions.
+
+Tue Jun 1 14:56:10 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * ldsym.c (write_file_locals): Write BSF_CONSTRUCTOR
+ symbols, unless stripping.
+
+Tue May 25 15:34:25 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in: configure looks for ####, so remove lines with many
+ '#' characters.
+ * config/irix4.mh, config/i386v.mh: New files; set HOSTING_CRT0
+ and HOSTING_LIBS correctly so that ``make check'' will work.
+
+Thu May 20 13:56:16 1993 Per Bothner (bothner@deneb.cygnus.com)
+
+ * mips.sc-sh: Define _etext, _edata, and _end, in addition
+ to etext, edata, and end. Needed for IRIX 4.0.5F.
+ Patch from mwp@iconix.oz.au (Michael Paddon).
+
+ * Version 2.2.1 released.
+
+Thu May 20 11:42:06 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * mipsbsd.sc-sh: Renamed from aout-mipsbsd.sc-sh.
+ * mipsbsd.sh (EMULATION_NAME): Use new file name.
+
+Tue May 18 17:10:24 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * Makefile.in (LDDISTSTUFF): Remove ld.mm since we can't build it
+ properly right now.
+
+ * Version 2.2 released.
+
+Mon May 17 15:37:28 1993 Ken Raeburn (raeburn@deneb.cygnus.com)
+
+ * ldver.c (ldversion): Bump version number to 2.2.
+
+Mon May 17 12:44:31 1993 Per Bothner (bothner@cygnus.com)
+
+ * NEWS: New file.
+
+Fri May 14 11:26:24 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * mips.sc-sh: Don't define BSS_VAR unless relocating.
+
+Wed May 12 13:33:29 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (mkscript.o, mkscript): Build mkscript via
+ mkscript.o, rather than directly from mkscript.c.
+
+Tue May 4 21:58:56 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * configure.in: Look for ${target_makefile_frag} relative to
+ ${srcdir}, not relative to build directory.
+
+ * hppaosf.em, hppaosf.sc-sh, hppaosf.sh: New files.
+ * configure.in: Recognize hppa*-hp-osf.
+ * Makefile.in (ALL_EMULATIONS): Include hppaosf emulation.
+ (em_hppaosf.c): Build it.
+ * config/hppaosf.mh, hppaosf.mt: New files.
+
+ * ld.h (ALIGN_N): Renamed from ALIGN, because that conflicted with
+ some system header files. All uses changed.
+
+ * configure.in: Recognize i386-aix configurations as i386-coff
+ targets.
+
+ * configure.in: Recognize m68*-*-hpux.
+ * aout.sc-sh: If STACKZERO and RELOCATING are both defined, output
+ the value of STACKZERO.
+ * Makefile.in (ALL_EMULATIONS): Include hp300-hpux emulation.
+ (em_hp3hpux.c): Build it.
+ * hp3hpux.sh, config/hp300hpux.mt: New files.
+
+Tue May 4 12:37:35 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * mips.sc-sh: Put constructors in the .data section.
+ * Makefile.in (cdtest): Added dependency on ld.new.
+
+Mon May 3 19:43:39 1993 Per Bothner (bothner@cygnus.com)
+
+ * Makefile.in: Change definition of $(tooldir) to match FSF.
+ * vax.sh, config/vax.mt, configure.in, Makefile.in:
+ Support VAX Ultrix and BSD.
+
+Mon Apr 26 18:35:47 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * sh.em, sh.sh, sh.sc-sh: New files supporting Hitachi SH.
+
+Wed Apr 14 21:01:51 1993 John Gilmore (gnu@cygnus.com)
+
+ * ldlang.h (struct memory_region): Change `length' and
+ `old_length' fields to bfd_size_type. Eliminate use of bfd_offset.
+ * ldlang.c, mri.c: Corresponding changes, plus lint.
+
+Thu Apr 8 22:08:18 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * configure.in: For all i386 targets, accept i486 as well.
+
+Mon Apr 5 17:33:39 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldlang.c (wild_doit): Preserve all flags for a
+ SEC_SHARED_LIBRARY section.
+ (size_input_section): Consider any SEC_HAS_CONTENTS section when
+ computing largest_section.
+
+Fri Apr 2 14:33:52 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldlang.c (lang_output_section_statement_lookup): Initialize all
+ fields of newly created structure.
+
+Wed Mar 31 18:19:15 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldmain.c (g_switch_value): New variable.
+ * ldgram.y (OPTION_G, OPTION_Gval): New tokens.
+ (command_line_option): Accept -G and set g_switch_value.
+ * ldlex.l (COMMAND): Accept -G.
+ * ldlang.c (open_output): Call bfd_set_gp_size on new BFD.
+
+Tue Mar 30 09:40:25 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ Support for linking and loading at different places:
+
+ * ldlex.l: Add "AT" keyword.
+ * ldgram.y: Cleanup, and parse AT.
+ * ldlang.c (print_output_section_statement): Print output address
+ of section in map. (lang_size_sections): Fill sections' lma with
+ load address.
+ * ldlang.h (lang_output_section_statement_type): Add load_base
+ information.
+
+ * ldindr.c (add_indirect): Keep more information in the alias
+ symbol chain.
+ * ldlang.c (wild_doit): Don't inherit NEVER_LOAD section
+ attribute from an input section.
+ * ldmain.c (Q_enter_file_symbols): Common section is NEVER_LOAD by
+ default. (Q_enter_file_symbos): Indirect symbols now are known by
+ their section, not a special symbol flag.
+ * ldsym.c (write_file_locals): Indirect symbols aren't local.
+ (write_file_globals): Write the mapping for an indirect symbol.
+ * relax.c (build_it): When forced to write a NEVER_LOAD section,
+ fill it with zeros.
+
+Tue Mar 23 13:24:10 1993 Jeffrey Osier (jeffrey@fowanton.cygnus.com)
+
+ * ld.texinfo: changes for q1
+
+Tue Mar 23 00:13:29 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: add dvi target, define & use TEXI2DVI, add installcheck
+
+Mon Mar 8 20:30:35 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: rename HOST_CC to CC_FOR_BUILD
+
+Thu Mar 4 12:44:33 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * mips.sc-sh: Added variables which may be overridden by a
+ specific emulation.
+ * mipsidt.sh: New file; emulation for IDT MIPS board.
+ * Makefile.in (ALL_EMULATIONS): Added em_mipsidt.o.
+ (em_mipsidt.c): New target. Uses mipsidt.sh and mips.sc-sh.
+ * config/mips-idt.mt: New file; sets EMUL to mipsidt.
+ * configure.in (mips-idt-ecoff): New target; uses mips-idt.
+
+Sat Feb 27 00:00:14 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * aout-mipsbsd.sc-sh, mipsbsd.sh: New files from Ralph Campbell,
+ ralphc@pyramid.com.
+ * i386bsd.sh, config/i386bsd.mt: New files.
+ * configure.in, Makefile.in: Added support for mipsbsd and 386bsd.
+
+Thu Feb 25 15:33:10 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * mri.c: Add extern declaration of strdup.
+ * ldsym.c (KEEP macro): Add spaces around '=' for the
+ sake of old (e.g. PCC) compilers.
+
+Wed Feb 24 19:49:31 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * ldver.c: Bump to version 2.1.
+
+Fri Feb 12 08:09:11 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldgram.y: allow section types without address expressions.
+ * ldlang.c (lang_relocate_globals): avoid possible hang with
+ undefined but unreferenced symbols.
+ * relax.c (relax_section): don't complain if the script file isn't
+ relaxable but -relax is set
+
+Thu Feb 18 17:58:45 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * configure.in: go32 is the 3rd part of the triple, not the 2nd
+
+Wed Feb 3 09:05:56 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * mipsbig.sh: New file. Big endian MIPS emulation.
+ * config/mips-big.mt: New file. Use mipsbig emulation.
+ * configure.in (mips-sgi-irix*): Use target mips-big.
+ * Makefile.in (ALL_EMULATIONS): Added em_mipsbig.o.
+ (em_mipsbig.c): New target. Uses mipsbig.sh.
+
+Tue Feb 2 11:32:27 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * mips.sc-sh: Put .scommon sections into .sbss section.
+
+ * ldmain.c (subfile_wanted_p): Preserve section of common symbols,
+ rather than always putting them in bfd_com_section.
+ * ldlang.c (lang_common): If a common symbol is not in
+ bfd_com_section, put in a section of the same name, rather than
+ always putting it in section COMMON.
+
+Fri Jan 29 09:57:58 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldmain.c (subfile_wanted_p): If we already have a common
+ definition of a symbol, don't necessarily pull in an object file
+ that provides a non-common definition.
+
+ * ldlex.l (COMMAND): Accept -EB and -EL command line arguments,
+ returning OPTION_EB and OPTION_EL. gcc passes these to a MIPS
+ linker.
+ * ldgram.y (OPTION_EB, OPTION_EL): New tokens.
+ (command_line_option): Accept and ignore OPTION_EB and OPTION_EL.
+
+Thu Jan 28 15:12:04 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (install): Remove $(tooldir)/bin/gld before creating
+ the link to it.
+
+Tue Jan 26 11:49:50 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldmain.c, ldsym.c: Use new bfd_is_com_section macro rather than
+ checking for equality to bfd_com_section.
+
+Fri Jan 22 14:22:44 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * mips.sc-sh: New file. Ultrix, and hopefully other MIPS ECOFF
+ targets, linker script.
+ * mipslit.sh: New file. Little endian MIPS emulation.
+ * config/mips-lit.mt: New file. Use mipslit emulation.
+ * configure.in (mips-dec-ultrix*): Use target mips-lit.
+ * Makefile.in (ALL_EMULATIONS): Added em_mipslit.o.
+ (em_mipslit.c): New target. Uses mipslit.sh.
+
+Thu Jan 14 15:30:27 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (install): Install ld as both $(tooldir)/bin/ld and
+ $(tooldir)/bin/gld, so that gcc can find it with or without
+ collect2.
+
+Mon Jan 11 18:50:07 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ldwrite.c: Removed perform_relocation, copy_and_relocate, and
+ write_norel. All linking is now done via write_relax. Call
+ ldsym_write before calling write_relax.
+ * relax.c: Added copyright.
+ (write_relax): Renamed from write_relaxnorel. Added relocateable
+ argument. seclet_dump renamed to bfd_seclet_link.
+ * relax.h: Added copyright.
+
+Mon Jan 11 15:41:56 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldmain.c (decode_library_subfile): Patch from
+ hoogen@shafer.cs.utah.edu, don't reread library symbol tables.
+
+Fri Jan 8 18:04:33 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * config/vxworks960.mt renamed to config/i960.mt
+
+ * configure.in: sparc-aout emulates a sun4, as does
+ sparc*-vxworks, i960-nindy uses gld960 emulation
+
+Fri Jan 8 14:39:07 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ Fix support for NOLOAD, add INCLUDE
+ * ldfile.c (ldfile_open_command_file): pass file name to
+ lex_push_file.
+ * ldlex.l, ldgram.y: tidy up, parse INCLUDE and NOLOAD
+ * ldlang.c (wild_doit): make output sections inherit NEVER_LOAD
+ attribute.
+
+Thu Jan 7 10:22:19 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in, config.h: no more default emulation. Make the lack
+ of emulation a compile time error
+
+Wed Jan 6 01:08:37 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * configure.in: recognise all sparclite variants, not just 'sparclite'
+
+Mon Dec 28 11:15:35 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * m68kcoff.sc-sh: define _end as well as end, for consistency with
+ aout.sc-sh.
+
+ * configure.in: accept *-ericsson-ose for any m68k CPU.
+
+ * ldwrite.c (write_rel): don't always set SEC_HAS_CONTENTS flag
+ for each output section.
+
+Mon Dec 21 16:06:59 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * ldexp.c, ldlang.c, ldmain.c, ldsym.c, ldwarn.c: Use new
+ macro bfd_asymbol_bfd as appropriate.
+ * Makefile.in: Un-duplicate ldlex.c dependency.
+ * condigure.in: Replace my_host case table by sourcing
+ ../bfd/configure.host. Allow std-host as the default.
+ * ldmisc.c: Change logic for C++ name demangling: There is
+ no initial '_' to remove from stab-derived function names.
+
+Sun Dec 13 16:31:26 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldlang.c (lang_init_script_file): don't attach the output file
+ sections to the script file.
+
+Wed Dec 9 08:38:05 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+ * ldlang.c (wild): run expansion loop over command line bfd too.
+ (lang_ini_script_file): initialize more parts of the command line
+ bfd.
+ * ldlex.l: fix DEFINED start states.
+
+Mon Dec 7 08:43:41 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+ -y support
+ * ld.texinfo: new doc.
+ * ldgram.y, ldlex.l: understand -y<symbol>
+ * ldmain.c (Q_enter_file_symbols): if had -y, lookup symbol and
+ print info. (add_ysym): new function.
+ * ldsym.h: (ldsym_type): new define SYM_Y.
+
+Sat Nov 21 03:15:27 1992 John Gilmore (gnu@cygnus.com)
+
+ * ldctor.h, lderror.h, ldexp.h, ldfile.h, ldindr.h, ldlang.c,
+ ldlang.h, ldlex.h, ldmain.h, ldmisc.h, ldsym.h, ldver.h, ldwarn.h,
+ ldwrite.h, relax.h: Replace all uses of EXFUN and PROTO ansi-glue
+ macros with PARAMS. Recreational cleanup. Update copyrights.
+
+Tue Nov 10 00:23:37 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: pass down the bfd source directory for includes
+
+Thu Nov 5 15:41:55 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldlang.c (lang_size_sections): don't change size and address for
+ SEC_SHARED_LIBRARY sections rather than for SEC_NEVER_LOAD
+ sections.
+
+Thu Nov 5 11:33:57 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * relax.c (build_it): re-enable the processing of data_statements
+ in scripts, makes counted contructor lists work again.
+
+Thu Nov 5 05:43:01 1992 John Gilmore (gnu@cygnus.com)
+
+ * ldemul.h: Remove uses of SDEF and PROTO macros (use PARAMS).
+
+Tue Oct 20 10:56:06 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * m68kcoff.sc-sh: don't use initial underscores for etext, edata
+ and end.
+
+Mon Oct 19 09:45:38 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * Support for i386-sysv.
+ configure.in: check for i386-*-sysv* and i386-*-sco*.
+ i386coff.sc-sh: rewrote to support SVR3 by default.
+ ldctor.c (find_constructors): preserve stat_ptr.
+ ldlang.c (wild_doit): initialize vma and size of new output
+ section to corresponding input section. This is required for
+ shared library support.
+ (lang_size_sections): don't modify vma and size of sections which
+ are never loaded (for shared libraries).
+ ldwrite.c (copy_and_relocate): copy the contents of any section
+ which has contents, not just sections which are loaded (for shared
+ libraries).
+
+Thu Oct 15 15:20:26 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldlang.c (size_input_section): count the sizes of all sections
+ we allocate.
+
+Thu Oct 8 09:05:25 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldmisc.c (demangle,vfinfo): use the new underscore in bfd to
+ to demangle symbols better
+
+Tue Oct 6 13:08:54 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * ldlang.c (lang_finish): don't warn if -e start symbol does not
+ exist when linking with -r.
+
+Mon Oct 5 14:07:37 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * aout.sc-sh, m68kcoff.sc-sh: set __bss_start to the start of the
+ .bss segment.
+
+Mon Oct 5 08:55:14 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldmain.c (linear_library): don't even think about processing
+ an object file if it's already been done
+
+Thu Oct 1 23:14:59 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * configure.in: the hp9000/300 config file is now hp300
+
+Wed Sep 30 07:34:09 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * config/z8ksim.mt: new file
+
+Fri Sep 25 13:49:52 1992 Ken Raeburn (raeburn@kyriath.cygnus.com)
+
+ * Makefile.in (ldexp.o, ldctor.o, ldlang.o, ldmain.o, ldwrite.o,
+ lexsup.o, mri.o, relax.o): Indicate dependence on ldgram.h.
+
+ * ld.h (strip_symbols_type): Add value STRIP_SOME.
+ * ldgram.y (OPTION_RETAIN_SYMBOLS_FILE): New terminal token.
+ * ldlang.c (lang_add_keepsyms_file): New function.
+ * ldlex.l: Handle "-retain-symbols-file".
+ * ldsym.c (keepsyms_file, kept_syms): New vars.
+ (process_keepsyms): New functihon; reads file, marks symbols for
+ saving.
+ (write_file_locals): File symbols should always be kept.
+ (ldsym_write): Warn about "-retain-symbols-file" overriding "-S"
+ and "-s". Process retain-symbols file before setting symtab.
+ * ldsym.h (SYM_KEEP): New flag for ldsym_type flags.
+ (keepsyms_file, kept_syms): Declare them.
+
+ * ldmain.c (main): Non-fatal errors should still cause non-zero
+ exit status even with -r.
+
+Fri Sep 25 11:08:01 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ Added initial support for the z8k
+ * z8ksim.em, z8ksim.sc-sh, z8ksim.sh: new files
+ * configure.in, Makefile.in: modified to reflect above
+
+ * ldlang.c (lang_check): when linking conflicting architectures,
+ make the output file reflect at least one of the bad inputs.
+
+Tue Sep 15 15:35:38 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in (install): if $(tooldir) exists, install ld in
+ $(tooldir)/bin.
+
+Fri Sep 11 10:24:22 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * Makefile.in, configure.in: modified to support i386-coff
+ * i386coff.sh: new file
+
+Wed Sep 9 11:52:58 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in, m68kcoff.sh, m68kcoff.sc-sh, config/m68k-coff.mt:
+ added m68k-coff emulation mode, stolen from a29k emulation.
+ Almost certainly wrong, but perhaps better than sun3.
+
+Thu Sep 3 14:19:30 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in, Makefile.dos, generic.em, genscripts.sh,
+ gld960.em, h8300hms.em, h8300xray.em, lnk960.em, st2000.em,
+ vanilla.em: Rename all (generated) ld__*.c files to em_.c.
+ This is one character shorter, and lets people build on
+ SVR3 system. (ld__h8300xray.[co] was the killer there;
+ h8300xray.sc-sh is also overlong, but seems harmless.)
+ Based on a patch from Jonathan Ryshpan <hitachi!amito!jon>.
+ * Makefile.in (clean): Fix typo mostclean -> mostlyclean.
+ * configure.in: Add host isc.
+
+ * ldver.c: Call it version 2.0.
+
+Wed Sep 2 00:21:33 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * ldver.c: Bump to version 0.98.
+ * TODO: New file.
+
+ * Makefile.in: Added mostlyclean, distclean, realclean rules.
+
+Tue Sep 1 23:42:16 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * ldmisc.c (xrealloc): New (needed by ../libiberty/cplus.dem.c).
+ * ldlex.l: Moved comment() to end, since some compilers
+ otherwise have problems with input() used before it is defined.
+
+Tue Sep 1 17:45:51 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * configure.in: added Solaris 2 and Irix 4 host support.
+
+Mon Aug 31 19:27:11 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: remove -S flag from the FLEX definition
+
+ * configure.in: rewrote, using new style case statement. use
+ m68k.mt for m68k-aout systems
+
+Sun Aug 30 21:38:53 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * Makefile.in: map "ld" through program_transform_name when
+ installing.
+
+Sun Aug 30 18:12:13 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * cplus-dem.c: Removed. Use the version in libiberty now.
+ * ldmisc.c: Use new libiberty version of cplus_demangle().
+
+Thu Aug 27 16:38:42 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * gld960.em (gld960_choose_target): default to little endian, not
+ big endian.
+
+Wed Aug 26 17:28:51 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldlang.c (lang_process): don't pass null pointers when
+ abs_output_section is what is required.
+ * ldwrite.c (ldwrite): use malloc to allocate the largest space
+ used, and pass that down.
+ * relax.c,relax.h (write_relaxnorel): use the passed malloc area rather
+ than alloca.
+
+Mon Aug 24 14:42:06 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * configure.in, config/ose68.mt: renamed OSE to ose.
+
+Thu Aug 20 19:55:22 1992 Ken Raeburn (raeburn@cygnus.com)
+
+ * ldsym.c (write_file_locals): Reorder check for common or
+ undefined symbols so that it works.
+
+Tue Aug 18 13:41:36 1992 Ian Lance Taylor (ian@cygnus.com)
+
+ * configure.in: accept all m68K family members.
+
+ * Makefile.in: always create installation directories.
+
+Thu Aug 13 11:49:34 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldlex.l: now parses comment correctly, added ~ to acceptable
+ chars in filenames
+
+ * ldexp.c (exp_unop): pass down abs_output_section - now can have
+ unary -ve constants.
+
+ * ldlang.c (lang_finish): warn when an entry symbol supplied on
+ the command line can't be found.
+
+Fri Aug 7 12:31:10 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldlang.h: add new field "loadable" to output_section_statement.
+ * ldlang.c (lang_output_section_statement_lookup): initilize new
+ field. (wild_doit): if new field is not set, then stop output
+ section from being loadable.
+ (lang_enter_output_section_statement): set the field from the
+ NOLOAD keyword
+ * ldgram.y: new synax for NOLOAD. Removes a shift/reduce too.
+ * h8300hms.sc-sh, h8300hms.em: get -r right.
+
+Thu Aug 6 18:35:21 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * ldint.texinfo: New internals manual (beginnings thereof).
+ * PORTING: Removed, merged into ldint.texinfo.
+
+Tue Aug 4 21:12:29 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * cdtest-main.cc, cdtest-func.cc, cdtest-foo.h, cdtest-foo.cc,
+ cdtest.exp: A test program (copied from libg++/test-install)
+ that tests that constructor and destructors are handled
+ corrrectly.
+
+Mon Aug 3 14:58:19 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in (install): install from ld.new, renaming during the
+ copy, or else the next 'make install' needs to re-link ld.
+
+Mon Jul 20 03:37:06 1992 D. V. Henkel-Wallace (gumby@cygnus.com)
+
+ * configure.in: generalise hp recognition (from sef).
+
+Sat Jul 18 14:46:04 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * configure.in: recognize bsd and hpux hppa configurations.
+ error messages echo to stderr, not stdout
+
+Fri Jul 17 22:06:11 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * Makefile.dos, gld.1, ld.texinfo, ldemul.c, ldfile.c, ldlang.c,
+ ldmisc.c: removed rcsid's.
+
+Tue Jul 14 08:34:34 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldlang.c (lang_map): print changes in sizes due to relaxing
+ (size_input_section): maintain the delta information.
+ * ldlang.h: add new field to struct to contain delta info.
+ * relax.c (relax_section): complain if input not relaxable.
+ * ldlex.l : add '_', ',' and '$' to chars which can appear at the
+ start of a filename
+
+Mon Jul 13 17:33:00 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldmain.c(main): prevent -r and -relax from being on at the same
+ time.
+
+Wed Jul 1 17:51:19 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldmain.c (Q_enter_global_ref), ldindr.c (add_indirect): fix for
+ aliasing problems
+
+
+Thu Jun 18 09:38:56 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * h8300hms.em, h8300hms.sc-sh: do the right thing for -r
+ * ldexp.c: lint
+ * ldlang.c(open_output): set the target arch and machine as soon
+ as we can. (lang_size_sections): use new macros for setting vma
+ * ldwrite.c: lint
+
+Mon Jun 15 08:47:43 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * configure.in (my_target): Accept m680?0 for wrs as vxworks68.
+ Also deleted an unreachable path to wrs.
+
+Wed May 27 23:24:19 1992 Michael Tiemann (tiemann@rtl.cygnus.com)
+
+ * Makefile.in (install): use -d test for $tooldir before
+ installing ld there so that $tooldir can be inherited from
+ top-level Makefile.
+
+Wed May 27 16:56:48 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * ldlang.c: Two non-substantial changes for the sake of
+ the old Portable C Compiler.
+
+Wed May 27 15:15:58 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldgram.y, ldlex.l: parse ABSOLUTE
+ * ldexp.c: add support for ABSOLUTE
+
+Wed May 27 13:07:20 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in: Added default definitions for HOSTING_CRT0,
+ HOSTING_LIBS, and HOSTING_EMU, based on those in config/*.mh.
+ * config/*.mh: Miscellaneous clean-up: Removed definitions
+ of YACC (since it is not longer used in the Makefile).
+ Remove HOSTING_* definitions that are subsumed by the
+ ones added to Makefile.in. Removed most definitions of CC.
+ * config/{sparc,news,hp300bsd,decstation}.mh: Removed;
+ These are no longer needed.
+
+Fri May 22 13:47:19 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 (ldlex.c): Don't re-direct output, since that
+ leaves a bogus output files if it fails.
+
+ * config/sparc.mh: Fix HOSTING_LIBS so it has a chance of working.
+ * ldlex.c: Fix some unnecessary flex-specific-isms.
+
+Fri May 8 11:49:43 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldgram.y: move spurious semicolon
+ * ldexp.h: fix prototype
+
+Thu May 7 17:01:12 1992 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * ld.texinfo: references to linker now say "ld" not "gld".
+
+Wed May 6 13:26:19 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ changed calling convention for Q_enter_global_ref
+ * ldexp.c, ldlang.c, ldmain.c: reflect this
+ * ldver.c: bump version to 1.97.1
+ * ldindr.c (add_indirect): when an edict declaring an indirect
+ symbol is found, make sure that any ideas about the symbol being
+ common are changed if it now known to be defined.
+ * ldmain.c (linear_library): complain once if archive isn't
+ ranlibbed.
+ * ldlang.h, ldlang.c: make room for and initialize the complain
+ once field.
+
+Wed May 6 11:07:35 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * Makefile.in: use flex & bison from ../ if they exist.
+
+Tue May 5 17:47:33 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * relax.c (build_it): don't allocate space in the output file for
+ stuff if -R flag applys to it.
+ * ldfile.c: merge in VMS filename support
+ * ldmain.c (main): take out ./ from library path, and close file
+ before unlinking. Make multiple defs of a symbol create an
+ unexecable file.
+ * ldmisc.c: fatal errosrs delete output file
+
+Tue May 5 14:05:05 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * ldver.c: Increase version number to 1.97, for consistency
+ with ../binutils.
+
+Tue May 5 12:12:24 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in: FLEX -> LEX.
+
+ * ld.texinfo: {} -> @{@}.
+
+Mon May 4 17:52:41 1992 Roland H. Pesch (pesch@fowanton.cygnus.com)
+
+ * ld.texinfo: describe alternate, MRI-compatible linker scripts
+ (and associated change in -c option, now used for these scripts)
+
+Mon May 4 16:10:10 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldver.c: Bumped version to 1.96 - new release, resync with the
+ bfd too #.
+ * ldexp.c, ldlang.c: now build memory shape tree in obstacks
+ rather than with raw malloc, makes it easier to track where memory
+ is going.
+ * ldsym.h, ldsym.c: create obstack for all global symbols too.
+ * ldwrite.c (ldwrite): moved malloc so only used when needed.
+ * sa29200-sc.sh: added support for .lit, data1 and data2 sections.
+
+
+Fri May 1 18:17:52 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * config/sparc.mh: use ../gcc/libgcc.a on check if it exists.
+
+ * Makefile.in: use bootstrap for check.
+
+Fri May 1 13:03:41 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldgram.y, ldlex.c, mri.c: added more compatible words; BASE, ALIAS and
+ PUBLIC.
+ * Makefile.in: now use flex, not lex
+ * ldlex.l, ldlang.c, ldctor.c: lint
+
+Wed Apr 22 12:48:42 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldlex.l: added CMDFILENAMECHAR state so that you can lex
+ different sorts of filenames on the command line than in a script.
+
+Mon Apr 20 22:37:04 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * Makefile.in: rework CFLAGS so that they can be passed on the
+ make command line. Remove MINUS_G. Default CFLAGS to -g.
+
+Fri Apr 17 08:57:17 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * relax.c: added handling for new "padding" seclet type, used to
+ fill out gaps between section.
+ * ldgram.y, ldlex.l: now -defsym on the command line is done
+ properly.
+
+Wed Apr 15 21:20:07 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * Makefile.in: the tooldir copy of ld goes directly in tooldir.
+
+Wed Apr 15 16:09:33 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * mri.c, ldgram.y, ldlex.l: added support for minimal strange link
+ scripts.
+
+Thu Apr 9 05:52:02 1992 Ken Raeburn (Raeburn@Cygnus.COM)
+
+ * Makefile.in (install): Install second copy in $(tooldir)/bin
+ without $(program_prefix), since that's what gcc expects.
+
+Sat Apr 4 17:44:06 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldlex.l, ldgram.y, ldlex.h: Rewrote lexer. Now it's much nicer.
+ * h8300*: fix bit rot and add support for h8300xray target
+ * go32.sh: target emulation for go32.
+
+Mon Mar 16 14:53:29 1992 Steve Chamberlain (sac@rtl.cygnus.com)
+
+ * gld960.em, i960.sc-sh. Fix i960 bit rot
+
+Fri Mar 13 19:47:22 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in: install man page.
+
+Fri Mar 13 08:23:59 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * config/mt-<foo> renamed to <foo>.mt
+ * config/mh-<foo> renamed to <foo>.mt
+ * configure.in changed to reflect this
+ * genscripts.sh now make .xbn files rather than .xN files
+
+Sat Mar 7 03:40:40 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * ldver.h: fix decl of ldversion.
+
+Fri Mar 6 22:00:35 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in: added check target.
+
+Fri Mar 6 06:59:04 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldmain.c (Q_enter_file_symbols): now aliases work again
+
+Thu Mar 5 21:39:29 1992 K. Richard Pixley (rich@cygnus.com)
+
+ * Makefile.in: added clean-info target.
+
+Thu Mar 5 16:55:56 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * ldexp.c (exp_print_tree): don't try and follow null pointers
+ around.
+ * ldgram.y: remove 11 shift reduce errors
+
+Tue Mar 3 15:46:39 1992 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * Makefile.in: added tooldir and program_prefix.
+
+Fri Feb 28 08:17:45 1992 Steve Chamberlain (sac at thepub.cygnus.com)
+
+ * ldlang.c (size_input_section): don't move absolute sections
+ around!
+
+
+Thu Feb 27 09:20:41 1992 Steve Chamberlain (sac at thepub.cygnus.com)
+
+ * cplus-dem.c: yet another copy of this - maybe it should go into
+ libiberty ?
+ * ldgram.y: now -V and -v have different actions
+ * ldver.c: if -V, prints list of emulations compiled in
+ * ldmisc.c: support for cplus demangling
+
+
+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.
+
+Thu Feb 20 17:43:46 1992 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in: Change mkscript rule into one for ./mkscript
+ (for the sake of makes that don't realize they're the same).
+ * PORTING: Add more details.
+ * genscripts.sh: Add more tailorability of DATA_ALIGNMENT.
+
+Mon Feb 17 12:04:36 1992 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in, and new files hp300bsd.sh, config/mh-hp300bsd,
+ config/mt-hp300bsd: New port to hp300 running BSD.
+
+Sat Feb 15 13:59:54 1992 Per Bothner (bothner at cygnus.com)
+
+ Major rewrite of how ld is configured. The major idea
+ is to use shell scripts to generate everything.
+ * generic.em replaces ldtemplate.
+ * Other *.em files replace various *.c files.
+ A *.em file is a shell script that generates the corresponding
+ ld__*.c file that implements an emulation. This is usually
+ a straight 'cat' of a here-document, possibly with substitutions.
+ * Script files (*.sc) are places by *.sc-sh scripts.
+ Again, these are simple shell scripts that 'cat'
+ here-documents, usually with some substitutions.
+ The output a *.sc-sh is a script file.
+ * Each emulation is defined by a short shell script with
+ extension *.sh that specifies the emulation-specific
+ parameters (such as the name of the *.sh-sc and *.em
+ files to use).
+ * genscript.sh is the master shell script used to generate
+ an emulation. It is passed various argument, including
+ the name a the emulation-speciic *.sh file that it
+ "sources" to set variables to emulation-specifc parameters.
+ * config/mt-foo: Changed EMUL=GLDFOO_EMULATION_NAME
+ to EMUL=foo. (The GLDFOO_EMULATION_NAMEs have bee removed.)
+ * config/mh-foo: Rename LDEMULATION names as appropriate
+ (usually 'gldfoo' -> plain 'foo').
+ * ldwrite.c: Fixed a typo in a comment.
+ * Makefile.in: Major changes. Removed some the sed
+ magic to converts scripts, since that is now handled
+ by genscripts.sh and the *.sc-sh scipt generators.
+ * config.h: Remove a bunch of macros defining emulations
+ and targets. This becomes one less file to edit when
+ adding emulations or targets.
+ * ldemul.h (struct ld_emulation_xfer_struct): Add
+ emulation_name and target_name fields.
+ * ldemul.c, ldemul.h: Define some default functions used
+ by most emulations (and remove from the *.em scripts).
+ * ldemul.c (ldemul_choose_target): Search the new
+ ld_emulations array using a loop (instead of a hardwired
+ nested if statement).
+ Define the ld_emulation from the automatically-geenrated
+ ldemul-list.h. This means you no longer have to edit ldemul.c
+ to add a new emulation.
+ * ldmain.c: Replace {GLD,LNK}960_EMULATION_NAME by
+ their expansions, since the former no longer exist.
+ * PORTING: A very rough first draft of a porting guide.
+
+ * ldgram.y, ldlex.l, lexsup.c: Changes to allow an assignment
+ to be terminated by a new-line (instead of requiring a semicolon).
+
+Mon Feb 10 16:21:02 1992 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * ldexp.c, ldlang.c: added new idea "abs_output_section", removes
+ tests for NULL pointers all over the place.
+ * ldlang.c (lang_process): remember to relocate global symbols
+ *after* relaxing has done it stuff.
+
+Thu Feb 6 11:40:15 1992 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * config/mt-coff-h8300: use EMUL like everything else
+ * ldlang.c: (print_padding_statement): print the right address.
+ * Makefile.in, config.h, ldemul.c: renamed h8300hds to h8300hms
+
+
+Tue Feb 4 15:28:01 1992 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * ldlex.l: Put pack -noinhibit-exec and -sort-common
+ * ldlang.c (print_data_statement): print the right address.
+
+Thu Jan 30 17:51:53 1992 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in: The rule for testing ld by re-linking itself
+ via an intermediate -r link was moved to the ld1 rule
+ instead of the ld2 rule. This allows ld2 and ld3 to be identical,
+ which allows the bootstrap rule to work.
+ * ldctor.c (find_constructors): Don't create a constructor
+ list if it is already defined (as would happen if ld is
+ invoked by collect).
+
+Wed Jan 29 08:35:39 1992 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * config/mh-sparc.h: now uses libgcc.a
+ * ldmain.c: quit using exit
+ * *sc: use *(COMMON) rather than [COMMON]
+ * ldlex.l, lexsup.c: much thinking moved from .l and put into .c,
+ to allow preprocessing of .l file.
+ * Makefile.in: New ldlex.l mangling
+ * ldexp.c (fold_binary): perform expressions with % and / in
+ integer.
+ * ldfile.c (open_a): open archives on VMS in a special way
+
+
+Tue Jan 28 10:18:16 1992 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * ldgram.y: map -M behave in the same way as -Map (sets file name
+ to be "-".
+ * ldsym.c, ldlang.c: remember that size of a section is dependent on
+ whether or not relaxing has been done.
+ * ldmain.c: don't open a map file if it doesn't have a name
+ * relax.c: all the brains have moved into bfd.
+ * ldwrite.c: ammend comment
+
+Fri Jan 24 14:23:46 1992 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * Makefile.in: added relax, also made three stage go through a
+ partial link stage.
+ * relax.c : added
+ * config.h: if GNU960 defined, then default emulation mode is
+ GLD960
+ * ldexp.h, ldexp.c: map to file hooks
+ * ldlang.c: map to file hooks
+ * ldgram.y: added -Map -relax
+ * ldlex.l: added -relax, -Map
+ * ldmain.c: open map file
+ * ldmisc.c: support for map file
+ * ldwrite.c: new relax magic
+
+Thu Dec 19 18:49:51 1991 John Gilmore (gnu at cygnus.com)
+
+ * Makefile.in, config/tm-*.h: Clean up make output, only
+ pass DEFAULT_EMULATION to ldmain.c.
+
+Wed Dec 18 15:02:47 1991 Per Bothner (bothner at cygnus.com)
+
+ * ldver.c: Bump to version 1.94.
+
+Tue Dec 10 04:07:23 1991 K. Richard Pixley (rich at rtl.cygnus.com)
+
+ * Makefile.in: infodir belongs in datadir.
+
+Mon Dec 9 16:26:43 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in: Pass -y to bison. (Again;
+ accidentally deleted by Rich.)
+ * news.sc, ldgld68k.sc: Define __end as well as _end.
+
+Sat Dec 7 17:19:26 1991 Steve Chamberlain (sac at rtl.cygnus.com)
+
+ * ldindr.h: added to contain prototypes of ldindr.c
+ * ldfile.c: include ctype.h
+ * ldmain.c: include the requried prototype headers
+ * ldwrite.c: get_reloc_upper_bound has been renamed
+ bfd_get_reloc_upper_bound
+
+Fri Dec 6 23:29:26 1991 K. Richard Pixley (rich at rtl.cygnus.com)
+
+ * Makefile.in: punt "fundamental" mode because it breaks my emacs
+ macros. install using INSTALL_PROGRAM and INSTALL_DATA. remove
+ spaces following hyphens, bsd make can't cope. added
+ standards.text support and made it look like all the other
+ makefiles.
+
+ * configure.in: configure now runs entirely in objdir so make file
+ existence checks against ${srcdir}. Mark this directory as
+ target dependent.
+
+Thu Dec 5 22:46:16 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 23:36:55 1991 Per Bothner (bothner at cygnus.com)
+
+ * ldver.c: Bumped version to 1.93.
+ * Makefile.in: Pass -y to bison.
+
+Mon Nov 25 18:28:40 1991 Steve Chamberlain (sac at cygnus.com)
+
+ * config.h: h8 is now coff, not ieee
+ * h8300hds.sc: reflect the same
+
+Thu Nov 14 19:55:09 1991 Per Bothner (bothner at cygnus.com)
+
+ * ldver.c (ldversion()): Update to 1.92.
+ * ldctor.c: There are two places constructor sets
+ can be defined. One of them checked for an existing
+ duplicate, the other didn't. Unfortunately, the latter
+ was called after the former ...
+ So, factor out code for inserting a new element into
+ constructor_name_list (after checking for a duplicate)
+ into a new function add_constructor_name, and call
+ it from both aforementioned places (ldlang_add_constructor
+ and ldlang_check_for_constructors).
+
+Wed Nov 13 15:17:43 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in: Rename .c files generated from ldtemplate
+ to have names starting with ld__. This helps 'make clean'.
+
+Tue Nov 12 18:36:50 1991 Steve Chamberlain (sac at cygnus.com)
+
+ * Makefile.in: Take out the version number for install
+ * m88kbcs.sc: put in contructor blocks.
+
+Mon Nov 11 18:47:33 1991 Per Bothner (bothner at cygnus.com)
+
+ * ldmisc.c, ldmisc.h: Re-write info() to take a filename
+ parameter, a format, and an arg pointer, and rename it to
+ vfinfo(). Write info() in terms of new vfinfo().
+ New einfo() is the same as info(), except it writes to stderr.
+ * ldemul.c, ldexp.c, ldlang.c, ldlnk960.c, ldmain.c, ldwrite.c,
+ ldmisc.c: Replace "error" calls to info() by new einfo().
+
+Mon Nov 11 09:57:32 1991 Steve Chamberlain (steve at cygnus.com)
+
+ * ldlex.l ldgram.y: made -V option do same as -v
+ * Makefile.in: Added $(MINUS_G) flag so debugging can be
+ turned off
+
+Sun Nov 3 16:37:37 1991 Steve Chamberlain (steve at cygnus.com)
+ i386 aout changes from Bob Kukura
+ * Makefile.in, config.h: added i386aout support
+ * configure.in: fixed /h-{myhost} typo
+ * ldgram.y: -MM now gives more boring map.
+ * ldlang.c: now does D_PAGED flag the right way.
+ * ldsym.c: -MM flags does the right thing.
+
+Sun Nov 3 15:00:03 1991 Per Bothner (bothner at cygnus.com)
+
+ * configure.in: Fixed typo. Also, a fix for hp300bsd.
+ * ldlang.c (init_os): Compensate for BFD change,
+ where bfd_make_section now returns NULL for a duplicate
+ section request, instead of the old section.
+
+Thu Oct 17 15:27:13 1991 Per Bothner (bothner at cygnus.com)
+
+ * ldver.c: Bump to version 1.91 (consistent with binutils).
+
+Wed Oct 16 12:27:08 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in, config.h, ld.h, ldemul.c, ldexp.c, ldexp.h,
+ ldgram.y, ldlex.l, ldlnk960.c, ldmain.c, ldmisc.c, ldmisc.h,
+ ldsym.c, ldsym.h, ldtemplate, ldvanilla.c, ldver.c, ldver.h,
+ ldwarn.c, ldwarn.h, ldwrite.c, ldwrite.h, mkscript.c:
+ Add or update copyright notices.
+
+Mon Oct 14 23:55:27 1991 Per Bothner (bothner at cygnus.com)
+
+ * README: New file.
+ * Makefile.in: Changed installation directory name scheme
+ to be consistent with gcc. Also changed 'install'.
+
+Mon Oct 14 17:30:02 1991 Roland H. Pesch (pesch at cygnus.com)
+
+ * Makefile.in: new targets ld.mm, ld.me
+
+Mon Oct 14 17:27:24 1991 Per Bothner (bothner at cygnus.com)
+
+ * Makefile.in, ldtemplate: Need to use separate scripts
+ for -n and -N options. Yet more complication.
+
+Fri Oct 11 22:40:46 1991 John Gilmore (gnu at cygnus.com)
+
+ * Makefile.in: Avoid using $< in explicit Make rules (it doesn't
+ work). Add some lines to avoid Sun Make VPATH bugs.
+
+Fri Oct 11 16:42:22 1991 Per Bothner (bothner at cygnus.com)
+
+ * news.sc: Add alignment for data segment.
+ * ldtemplate: Add (yet another) script to get for -n or -N
+ options. (These need different alignment than ZMAGIC files.)
+ * Makefile.in: Add stuff for new foo.xn scripts.
+ These are generated by replacing "ALIGN(0x...00)" by ".".
+
+Fri Oct 11 15:43:04 1991 Roland H. Pesch (pesch at cygnus.com)
+
+ * Makefile.in: new targets ld.ms, ld-index.ms
+ ld.texinfo: remove tabs, other cleanups for texi2roff
+
+Fri Oct 11 13:51:54 1991 Per Bothner (bothner at cygnus.com)
+
+ * ldmain.c (main): Make config.magic_demand_paged be true
+ by default. Don't set the WP_TEXT and D_PAGED flags of
+ output_bfd here; it's too late, so set it when output_bfd
+ is created (in ldlang.c). Also fix setting of EXEC_P flag
+ * ldlang.c (ldlang_open_output): Set output_bfd->flags here.
+ * ldlang.c: Remove some duplicate extern declarations.
+ * ldgram.y: Fixes to -N and -n options.
+ * Makefile.in: Recognize upper case letters in sed script
+ to remove assignments from script files.
+ * ldtemplate: Don't assukme that -N or -n options
+ imply use of -r script.
+ * mkscript.c: Tweaking to correctly handle \n and \\ in input.
+
+Fri Oct 11 10:29:27 1991 Steve Chamberlain (steve at cygnus.com)
+
+ * ldtemplate: include bfd.h before sysdep.h.
+
+Fri Oct 11 04:24:45 1991 John Gilmore (gnu at cygnus.com)
+
+ Restructure configuration scheme for bfd, binutils, ld.
+
+ * include/sys/h-*.h: Move to bfd/hosts/h-*.h.
+ * 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.
+ * config/: Rename some config files to match up h-*.h names.
+ Remove all the HOST_SYS definitions from the config files.
+
+Tue Oct 8 16:00:57 1991 Per Bothner (bothner at cygnus.com)
+
+ * ldexp.h, ldlang.h: Change enum boolean -> enum bfd_boolean.
+ * ldtemplate: Remove ldfile_add_library_path calls;
+ just use the SEARCH_DIR commands in the script files.
+ * Makefile.in: Add LIB_PATH macro, which if set is used to replace
+ the SEARCH_DIR commands in the scripts (using ugly sed magic).
+ This is primarily intended for cross-linking, where you would
+ place libaries in a different place than native libraries.
+ Also, emulations made from ldtemplate now use $(srcdir).
+ * ldglda29k.sc: Change SEARCH_DIR commands to a conventional
+ form; people can use the Makefile's LIB_PATH to override.
+
+Tue Oct 8 14:51:21 1991 Roland H. Pesch (pesch at cygnus.com)
+
+ * Makefile.in: fix target ld.dvi, add target ld.info
+ ld.texinfo: make info filename ld.info
+
+Fri Oct 4 21:51:58 1991 John Gilmore (gnu at cygnus.com)
+
+ * Makefile.in: Avoid using $< in non-suffix rules (breaks on Sun
+ Make).
+ * ldfile.c, ldlang.c, ldmain.c, ldwrite.c: Cope with renames of a
+ few BFD types & enums.
+
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/contrib/binutils/ld/ChangeLog-9899 b/contrib/binutils/ld/ChangeLog-9899
new file mode 100644
index 0000000..1f6533a
--- /dev/null
+++ b/contrib/binutils/ld/ChangeLog-9899
@@ -0,0 +1,2108 @@
+1999-12-02 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.am: Fix arm-epoc-pe dependencies.
+ * Makefile.in: Regenerate.
+
+ * emulparams/arm_epoc_pe.sh (SCRIPT_NAME): Set to epocpe.
+
+ * scripttempl/epocpe.sc: New file: copy of pe.sc, customised for
+ EPOC by placing .rdata into .text.
+
+1999-11-26 Andreas Schwab <schwab@suse.de>
+
+ * configure.in: Put AC_MSG_CHECKING/AC_MSG_RESULT around check for
+ STRINGIFY. Use yes/no instead of true/false as value for cache
+ variable.
+ * configure: Regenerate.
+
+1999-11-24 Nick Clifton <nickc@cygnus.com>
+
+ * ldlang.c (IGNORE_SECTION): Section must have both ALLOC and LOAD
+ attributes in order to be checked.
+
+1999-11-22 Nick Clifton <nickc@cygnus.com>
+
+ * ldlang.c (lang_check_section_addresses): Fix test to determine
+ if a section should be tested.
+ (IGNORE_SECTION): New macro.
+
+Wed Nov 3 23:31:19 1999 Jeffrey A Law (law@cygnus.com)
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
+ Clean up code to use EXTRA_SHLIB_EXTENSION.
+
+1999-11-03 Nick Clifton <nickc@cygnus.com>
+
+ * emulparams/elf32mcore.sh (OUTPUT_FORMAT): Change to little endian.
+ * emulparams/mcorepe.sh (OUTPUT_FORMAT): Change to little endian.
+
+1999-11-01 Steve Chamberlain <sac@pobox.com>
+
+ * ldlang.c (section_already_linked): Rework to use hash table.
+ (already_linked_newfunc): New function.
+ (already_linked_table_init): New function.
+ (already_linked_table_free): New function.
+ (lang_process): Initialize and free the already_linked hash table.
+
+1999-10-27 Andreas Jaeger <aj@suse.de>
+
+ * ld/configure.host: Added HOSTING_CRT0, HOSTING_LIBS for
+ target "mips*-*-linux-gnu*".
+
+1999-10-27 Scott Bambrough <scottb@netwinder.org>
+
+ * emultempl/armelf.em: Include ctype.h to prevent compile time
+ warnings.
+
+1999-10-26 Nick Clifton <nickc@cygnus.com>
+
+ * emultempl/armcoff.em (gld{}_finish): Remove extraneous
+ underscore from prototype.
+ * emultempl/armelf.em (gld{}_finish): Remove extraneous
+ underscore from prototype.
+
+1999-10-07 Geoffrey Keating <geoffk@cygnus.com>
+
+ * scripttempl/elf.sc (.rel.sdata): Combine all the sdata relocs
+ being .rel.sdata, .rel.sdata.*, .rel.gnu.linkonce.s*.
+ (.rela.sdata): Likewise for .rela.sdata.* and .rela.gnu.linkonce.s*.
+ (.rel.sbss): Make like .rel.bss.
+ (.rela.sbss): Make like .rel.bss.
+ (.sdata): Don't include .gnu.linkonce.s.* or .sdata.* when
+ ld -r.
+ (.sbss): Do the same things as for .bss: include SDATA_START_SYMBOLS,
+ .dynsbss.
+
+1999-09-29 Andrew Haley <aph@cygnus.com>
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Defer
+ merging sections when not relocating.
+
+1999-09-28 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * pe-dll.c (process_def_file): Move the offset lookup from here to
+ (fill_exported_offsets): here. New static function.
+ (fill_edata): Use.
+
+1999-09-28 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * deffilep.y (tokens): Add upper and lower case versions of DATA,
+ CONSTANT, NONAME and PRIVATE tokens.
+ (command): Use DATAU.
+ (expline): Allow for drectve syntax as well.
+ (exp_opt_list): Likewise.
+ (exp_opt): Likewise.
+ * pe-dll.c (make_one): Only generate the idata entries for data
+ symbols.
+
+1999-09-28 Geoffrey Keating <geoffk@cygnus.com>
+
+ * scripttempl/elf.sc (.sdata): Include .gnu.linkonce.s.* sections
+ in .sdata too.
+
+1999-09-26 Nick Clifton <nickc@cygnus.com>
+
+ * scripttempl/elf.sc (.bss): Accept sections named .bss.*
+ (.sbss): Accept sections names .sbss.*
+
+1999-09-22 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.am: Add earm_epoc_pe.c build target.
+
+Sat Sep 18 07:57:10 1999 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/elf64hppa.sh (OTHER_READONLY_SYMBOLS): Remove ".stubs",
+ they've been renamed to ".stub", which is handled automatically
+ by elf.sc.
+
+Fri Sep 17 11:00:33 1999 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/elf64hppa.sh (TEXT_START_SYMBOLS): Kill completely.
+ (DATA_START_SYMBOLS): Kill __hp_load_map definition
+
+Thu Sep 16 10:59:56 1999 Jeffrey A Law (law@cygnus.com)
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
+ Use the same filename extension for the bfd_elf_dt_needed_name call
+ as we did for finding the library.
+
+ * emulparms/elf64hppa.sh (DATA_START_SYMBOLS): Define.
+ (OTHER_READWRITE_SECTIONS): No longer define __hp_load_map.
+
+ * emulparms/elf64hppa.sh (TEXT_START_SYMBOLS): Define.
+
+Wed Sep 15 02:47:43 1999 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/elf64hppa.sh (SHLIB_TEXT_START_ADDR): Define.
+ (SHLIB_DATA_ADDR): Likewise.
+
+ * emulparms/elf64hppa.sh (TEXT_DYNAMIC): Define.
+
+ * emulparms/elf64hppa.sh (OTHER_READWRITE_SECTIONS): No longer combine
+ the .plt, .dlt, .opd into a single output section. Provide values
+ for __gp and __hp_load_map.
+
+1999-09-14 Michael Meissner <meissner@cygnus.com>
+
+ * configure.in (Canonicalization of target names): Remove adding
+ ${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
+ generates $ac_config_sub with a ${CONFIG_SHELL} already.
+ * configure: Regenerate.
+
+1999-09-14 Donn Terry <donn@interix.com>
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_after_open): allow for
+ terminating null.
+
+1999-09-14 Ulrich Drepper <drepper@cygnus.com>
+
+ * configure.in: Define EXTRA_SHLIB_EXTENSION to ".sl" for HP target.
+ * config.in: Add EXTRA_SHLIB_EXTENSION.
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
+ Search for second shared lib extension only if EXTRA_SHLIB_EXTENSION
+ is defined.
+
+1999-09-14 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.in: Add earm_epoc_pe.c build target.
+
+Tue Sep 14 05:26:34 1999 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/elf64hppa.sh (OTHER_GOT_RELOC_SECTIONS): Add .rela.dlt.
+
+1999-09-13 Donn Terry <donn@interix.com>
+
+ * emultempl/pe.em: Remove the output file at the start, in case it
+ is not writable.
+
+Mon Sep 13 00:17:18 1999 Jeffrey A Law (law@cygnus.com)
+
+ * emultempl/elf32.em (gld${EMULATION_NAME}_open_dynamic_archive):
+ Search for file with .sl extension if no file with a .so extension
+ is found.
+
+ * emulparms/elf64hppa.sh (OTHER_READWRITE_SECTIONS): Put .plt
+ at the start of the .dlt output section.
+
+1999-09-12 Ian Lance Taylor <ian@zembu.com>
+
+ * pe.em: Don't include "../bfd/libbfd.h".
+ (gld_${EMULATION_NAME}_after_open): Use xmalloc rather than
+ bfd_alloc.
+
+ * pe-dll.h: New file.
+ * pe-dll.c: Include "pe-dll.h". Mark unused arguments as needed
+ to avoid warnings.
+ (edata_sz, reloc_sz): Change from int to size_t.
+ (pe_details_type): Change type of imagebase_reloc from int to
+ unsigned int.
+ (pe_detail_list): Fully initialize last entry.
+ (pe_dll_id_target): Change parameter to const.
+ (pe_dll_generate_def_file): Likewise.
+ (pe_dll_generate_implib): Likewise.
+ (pe_implied_import_dll): Likewise. Change dll_name to const.
+ * emultempl/pe.em: Include "pe-dll.h". Remove declarations now in
+ pe-dll.h.
+ (init): Fully initialize __dll__ entry.
+ (gld_${EMULATION_NAME}_after_open): Remove unused variables
+ sequence, elt, and i.
+ * deffile.h: Add preprocessor guard.
+ * deffilep.y (def_debug): Remove.
+ * Makefile.am: Rebuild dependencies.
+ (HFILES): Add pe-dll.h.
+
+1999-09-12 Donn Terry <donn@interix.com>
+
+ * ld.h (ld_abort): Declare.
+ (abort): Define.
+ * ldmisc.c (ld_abort): Define.
+
+ * scripttempl/pe.sc: Use ${ENTRY} rather than _mainCRTStartup.
+ Move .bss section after .rdata. Move .reloc section after .rsrc.
+
+ * lexsup.c (parse_args): Use strtoul for --split-by-reloc
+ argument.
+
+ * lexsup.c (parse_args): If we get an unrecognized argument,
+ mention --help.
+
+ * ldlang.c (section_already_linked): Use comdat information if it
+ is available.
+
+ * emultempl/pe.em (PE_DEF_SECTION_ALIGNMENT): If
+ OVERRIDE_SECTION_ALIGNMENT is defined, change to that.
+ (gld_${EMULATION_NAME}_before_parse): Use EXECUTABLE_NAME if it is
+ defined, rather than a.exe.
+ (init): Define __subsystem__ as ${SUBSYSTEM}.
+ (set_pe_subsystem): Add ${INITIAL_SYMBOL_CHAR} before entry symbol
+ name.
+
+1999-09-12 Ian Lance Taylor <ian@zembu.com>
+
+ * ldlang.c (open_output): Change local variable desired_endian
+ from int to enum bfd_endian.
+
+ * emulparams/arm_epoc_pe.sh: Define ENTRY, SUBSYSTEM and
+ INITIAL_SYMBOL_CHAR.
+ * emulparams/armpe.sh: Likewise.
+ * emulparams/morepe.sh: Likewise.
+ * emulparams/ppcpe.sh: Likewise.
+ * emulparams/i386pe.sh (ENTRY): Define as _mainCRTStartup.
+ (SUBSYSTEM): Define as PE_DEF_SUBSYSTEM.
+
+Fri Sep 10 00:22:50 1999 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/elf64hppa.sh (LIB_PATH): Define.
+
+ * emulparms/elf64hppa.sh (OTHER_READONLY_SECTIONS): Put stubs before
+ unwinders so that they are closer to the text section.
+ (OTHER_BSS_SECTIONS): Define.
+ (EXECUTABLE_SYMBOLS): Provide __SYSTEM_ID and _FPU_STATUS.
+ (INIT_START, INIT_END): Define.
+ (FINI_START, FINI_END): Define.
+ * scripttempl/elf.sc: Add support for INIT_START, INIT_END,
+ FINI_START, FINI_END and OTHER_BSS_SECTIONS.
+
+Thu Sep 9 21:43:58 1999 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/elf64hppa.sh (TEXT_START_ADDR): Move up one page.
+ (DATA_ADDR): Define.
+
+1999-09-09 Stan Shebs <shebs@andros.cygnus.com>
+
+ * emulparams/d10velf.sh (READONLY_START_ADDR): Set to 0x2000004.
+
+1999-09-09 Andreas Schwab <schwab@suse.de>
+
+ * ld.texinfo: Fix arguments of @var to not contain punctuation.
+
+Thu Sep 9 05:52:34 1999 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/elf64hppa.sh (OTHER_READWRITE_SECTIONS): Define.
+
+1999-09-08 Ulrich Drepper <drepper@cygnus.com>
+
+ * emulparams/elf64hppa.sh (ELFSIZE): New. Set to 64.
+
+Wed Sep 8 00:07:39 1999 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/elf64hppa.sh (ENTRY): Define to main.
+
+1999-09-03 Scott Bambrough <scottb@netwinder.org>
+
+ * ld/configure.host: Added HOSTING_CRT0, HOSTING_LIBS for
+ target "arm*-*-linux-gnu*"
+
+1999-09-04 Steve Chamberlain <sac@pobox.com>
+
+ * configure.tgt (pjl-*-*, pj-*-*): New targets.
+ * emulparams/pjelf.sh: New file.
+ * emulparams/pjlelf.sh: New file.
+ * scripttempl/pj.sc: New file.
+ * Makefile.am (ALL_EMULATIONS): Add epjelf.o and epjlelf.o.
+ (epjelf.o, epjlelf.o): New targets.
+ * Makefile.in: Rebuild.
+
+Fri Sep 3 20:17:08 1999 Jeffrey A Law (law@cygnus.com)
+
+ * emulparams/elf64hppa.sh (MAXPAGESIZE): Define.
+ (OTHER_READONLY_SECTIONS, DATA_PLT): Likewise.
+
+Thu Sep 2 14:32:03 1999 Jeffrey A Law (law@cygnus.com)
+
+ * emulparams/elf64hppa.sh: New file.
+ * configure.tgt (hppa*w-*-*): Use elf64hppa emulation.
+ * Makefile.am (ALL_64_EMULATIONS): Add eelf64hppa.o
+ (eelf64hppa.c): Add dependencies.
+ * Makefile.in: Rebuilt.
+
+1999-08-25 Philip Blundell <pb@nexus.co.uk>
+
+ * emulparams/armelf.sh (OTHER_BSS_SYMBOLS): Add __end__.
+ * emulparams/armelf_linux.sh: Likewise.
+ * emulparams/armelf_linux26.sh: Likewise.
+
+1999-08-24 Nick Clifton <nickc@cygnus.com>
+
+ From a patch submitted by Roland McGrath <roland@baalperazim.frob.com>
+
+ * configure.tgt (arm-*-netbsd*): New target.
+ * Makefile.am (ALL_EMULATIONS): Add earmnbsd.o.
+ (earmnbsd.c): New rule with deps.
+ * Makefile.on: Regenerate.
+ * emulparams/armnbsd.sh: New file.
+
+1999-08-23 Nick Clifton <nickc@cygnus.com>
+
+ * emulparams/elf32mcore.sh (PARSE_AND_LIST_ARGS): Define.
+ Implement --base-file command line switch.
+
+ * emultempl/elf32.em: Add ability for individual targets to have
+ their own command line switches by defining PARSE_AND_LIST_ARGS.
+
+1999-08-19 Andreas Schwab <schwab@suse.de>
+
+ * configure.host: Use ${CC} instead of gcc for finding compiler
+ related files.
+
+1999-08-11 Nick Clifton <nickc@cygnus.com>
+
+ * scripttempl/mcorepe.sc (OUTPUT_FORMAT): Fix typo.
+
+1999-08-09 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * scripttempl/i386go32.sc: Handle g++ exception sections.
+
+1999-08-09 Ian Lance Taylor <ian@zembu.com>
+
+ From Wally Iimura <iimura@microunity.com>:
+ * ldlang.c (lang_size_sections): When checking whether an address
+ is within a region, don't get confused by wrapping around at the
+ end of the address space.
+
+1999-08-08 Ian Lance Taylor <ian@zembu.com>
+
+ * ldlang.c (wild_doit): Update for renaming of SEC_SHORT to
+ SEC_SMALL_DATA.
+
+ * Makefile.am: Rename .dep* files to DEP*. Change DEP variable to
+ MKDEP. Rebuild dependencies.
+ * Makefile.in: Rebuild.
+
+1999-08-08 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * configure.host (sparc-*-linux-gnu*): New host.
+ (sparc64-*-linux-gnu*): New host.
+
+1999-08-06 Ian Lance Taylor <ian@zembu.com>
+
+ * lexsup.c (is_num): Reindent.
+ (parse_args): Mention program name in error message.
+
+ * emultempl/ostring.sed: Rename from stringify.sed.
+ * emultempl/astring.sed: New file.
+ * Makefile.am (stringify.sed): New target.
+ (GEN_DEPENDS): Change $(srcdir)/emultempl/stringify.sed to
+ stringify.sed.
+ * configure.in: Define and substitute STRINGIFY.
+ * emultempl/*.em: Use stringify.sed from build directory rather
+ than source directory.
+ * emultempl/elf32.em: Use stringify.sed rather than inline sed
+ script.
+ * emultempl/gld960.em, emultempl/gld960c.em: Likewise.
+ * emultempl/hppaelf.em, emultempl/linux.em: Likewise.
+ * emultempl/lnk960.em, emultempl/sunos.em: Likewise.
+ * configure, Makefile.in: Rebuild.
+
+1999-08-05 Donn Terry <donn@interix.com>
+
+ * emulparams/i386pe.sh: Define ENTRY, SUBSYSTEM, and
+ INITIAL_SYMBOL_CHAR.
+ * emulparams/i386pe_posix.sh: New file.
+ * 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.
+ (ALL_EMULATIONS): Add ei386pe_posix.o.
+ (ei386pe_posix.c): New target.
+ * configure.tgt (i[3456]86-*-interix*): New target.
+ * configure.host (i[3456]86-pc-interix*): New host.
+ * Makefile.in: Rebuild.
+
+1999-08-03 Ian Lance Taylor <ian@zembu.com>
+
+ * emulparams/elf32ppc.sh (MAXPAGESIZE): Change to 0x10000.
+ * emulparams/elf32ppclinux.sh (MAXPAGESIZE): Likewise.
+
+1999-08-03 H.J. Lu <hjl@gnu.org>
+
+ * Makefile.am (ALL_EMULATIONS): Remove ego32.o.
+ (ego32.c): Remove.
+ * Makefile.in: Rebuild.
+
+1999-07-22 Philip Blundell <pb@nexus.co.uk>
+
+ * emulparams/armelf_linux26.sh (DATA_START_SYMBOLS): Define.
+ (OTHER_BSS_SYMBOLS, OTHER_BSS_END_SYMBOLS): Likewise.
+ * emulparams/armelf_linux.sh (DATA_START_SYMBOLS): Define.
+
+ * configure.tgt (arm*-*-uclinux*, thumb-*-uclinux*,
+ thumb-*-linux-gnu*): New targets.
+
+1999-07-21 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * scripttempl/i386go32.sc: Add handling of linkonce sections.
+
+ * configure.bat: Remove; obsolete.
+ * emulparams/go32.sh: Remove; obsolete.
+ * scripttempl/go32coff.sc: Remove; obsolete.
+
+1999-07-21 H.J. Lu <hjl@gnu.org>
+
+ * configure.tgt (mips*el-*-vxworks*): New target.
+
+1999-07-21 Brad M. Garcia <bgarcia@fore.com>
+
+ * configure.tgt (i[3456]86-*-vxworks*): New target.
+
+Tue Jul 20 15:18:46 1999 Bob Manson <manson@charmed.cygnus.com>
+
+ * ldlang.c (lang_gc_sections): Only handle the start symbol
+ specially if there is one.
+
+Mon Jul 19 14:19:14 1999 Mark P. Mitchell <mark@codesourcery.com>
+
+ * emulparams/elf32bmipn32.sh (OTHER_RELOCATING_SECTIONS): Add
+ .MIPS.events and .MIPS.content handling.
+ * emulparams/elf64bmip.sh (OTHER_RELOCATING_SECTIONS): Likewise.
+
+1999-07-17 Nick Clifton <nickc@cygnus.com>
+
+ * ldlang.c (get_target): New function: Return true iff the
+ given target is the target being sought.
+ (stricpy): New function: Like strcpy but convert to lower
+ case as well.
+ (strcut): New function: Like strstr but remove the located
+ substring as well.
+ (name_compare): New function: Compute a compatability rating
+ for two target names.
+ (winner): New variable: Best target found by
+ closest_target_match() so far.
+ (closest_target_match): New function: Find the target which is
+ the closest match to the original target.
+ (get_first_input_target): New function: Find the target format
+ of the first of the linker's input file.
+ (open_output): Be more clever about deciding the output target
+ format.
+
+1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * emulparams/elf64_sparc.sh: Add 64-bit directories to native LIB_PATH.
+
+Thu Jul 15 15:55:15 1999 Mark P. Mitchell <mark@codesourcery.com>
+
+ * configure.host: Set up HOSTING_CRT0 and HOSTING_LIBS for IRIX6.
+
+1999-07-15 Ian Lance Taylor <ian@zembu.com>
+
+ * configure.in: Bump version number to 2.9.5.
+ * configure: Rebuild.
+
+1999-07-14 Richard Henderson <rth@cygnus.com>
+
+ * ldlang.c (wild_doit): Copy SEC_SHORT to output section.
+
+ * scripttempl/elf.sc: Re-order .rel[a].foo outputs to the
+ same order seen for the main sections. Add
+ OTHER_READONLY_RELOC_SECTIONS and OTHER_GOT_RELOC_SECTIONS.
+
+1999-07-12 Andreas Schwab <schwab@suse.de>
+
+ * emultempl/linux.em (ld_${EMULATION_NAME}_emulation): Fill in
+ structure initializations.
+
+ * emultempl/elf32.em (ld_${EMULATION_NAME}_emulation): Add missing
+ comma in initializer.
+
+1999-07-11 Ian Lance Taylor <ian@zembu.com>
+
+ * Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
+ as appropriate. Fill in structure initializations.
+
+1999-07-10 Ian Lance Taylor <ian@zembu.com>
+
+ * ldfile.c: Revert patch of 1999-07-08.
+ (ldfile_try_open_bfd): If we are searching for the file, skip
+ files with an incompatible architecture.
+
+1999-07-09 Nick Clifton <nickc@cygnus.com>
+
+ * scripttempl/armcoff.sc (OUTPUT_FORMAT): Include big endian and
+ little endian formats.
+
+1999-07-08 Felix Lee <flee@cygnus.com>
+
+ * scripttempl/mcorepe.sc: fix quoting problem, for bash 2.x
+
+1999-07-08 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * ldfile.c (ldfile_open_file_search): Skip libraries made for
+ incompatible architectures in the search path. Let the user know
+ about any such skips.
+
+Thu Jul 8 12:32:23 1999 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * configure.tgt (hppa*-linux-gnu*): New target.
+
+1999-07-07 Mark Mitchell <mark@codesourcery.com>
+
+ * Makefile.am (ALL_64_EMULATIONS): Add eelf64bmip.
+ (eelf64bmip): New target.
+ * Makefile.in: Regenerated.
+ * configure.tgt (mips-sgi-irix6*): Add 64-bit emulation.
+ * emulparams/elf64bmip.sh: New file.
+
+1999-07-05 Nick Clifton <nickc@cygnus.com>
+
+ * emultempl/pe.em (after_open): Abort if input format is ARM and
+ output format is not.
+ * emultempl/armcoff.em (after_open): Abort if input format is ARM
+ and output format is not.
+ * emultempl/armelf.em (after_open): Abort if input format is ARM
+ and output format is not.
+
+1999-07-02 Ian Lance Taylor <ian@zembu.com>
+
+ * ldlang.c: Revert change of 1999-06-23.
+
+1999-06-30 Mark Mitchell <mark@codesourcery.com>
+
+ * Makefile.am (ALL_EMULATIONS): Add eelf32bmipn32.o.
+ (eelf32bmipn32.c): New target.
+ * Makefile.in: Regenerated.
+ * configure.tgt (mips-sgi-irix6*): Make n32 the default
+ emulation.
+ * emulparams/elf32bmipn32.sh: New file.
+
+1999-06-28 Jim Pick <jim@jimpick.com>
+
+ * emultempl/armelf.em: Added code so that .xs linker scripts are
+ called so that ARM shared libraries are built correctly.
+
+1999-06-22 Mark Mitchell <mark@codesourcery.com>
+
+ * ldmain.c (main): Initialize link_info.init_function and
+ link_info.fini_function.
+ * lexsup.c (OPTION_INIT): New macro.
+ (OPTION_FINI): Likewise.
+ (ld_options): Add descriptions for them.
+ (parse_args): Handle them.
+
+1999-06-23 Ian Lance Taylor <ian@zembu.com>
+
+ * ldlang.c (section_already_linked): Only discard link once
+ sections if we are building constructors.
+
+1999-06-22 Nick Clifton <nickc@cygnus.com>
+
+ * ld.texinfo (Location Counter): Describe behaviour of
+ location counter inside section statements.
+
+1999-06-20 Mark Mitchell <mark@codesourcery.com>
+
+ * scripttempl/elf.sc (WRITABLE_RODATA): New variable for
+ controlling whether or not .rodata is in the data segment or the
+ text segment.
+
+1999-06-18 Nick Clifton <nickc@cygnus.com>
+
+ * emultempl/pe.em: Add new command line switch --thumb-entry.
+ * emultempl/armelf.em: Add new command line switch --thumb-entry.
+ * emultempl/armcoff.em: Add new command line switch --thumb-entry.
+ * ld.texinfo: Document new ARM command line switch: --thumb-entry.
+
+1999-06-20 H.J. Lu <hjl@gnu.org>
+
+ * configure.in (all_libpath): Accumulate across all enabled targets.
+
+Sun Jun 20 14:10:33 1999 Richard Henderson <rth@cygnus.com>
+
+ * emultempl/armelf.em: Watch EMULATION_LIBPATH instead of
+ DEFAULT_EMULATION.
+ * emultempl/elf32.em: Likewise.
+ * emultempl/sunos.em: Likewise.
+
+Fri Jun 18 15:24:48 1999 Richard Henderson <rth@cygnus.com>
+
+ * Makefile.am (GENSCRIPTS): Pass EMULATION_LIBPATH, not EMUL.
+ * configure.in (all_emuls): Add targ_extra_libpath.
+ (all_libpath, EMULATION_LIBPATH): Define.
+ * configure.tgt (powerpc-*-linux-gnu*): Define targ_extra_libpath.
+ * genscripts.sh (LIB_PATH): Define if emulation in EMULATION_LIBPATH.
+
+Mon Jun 14 10:38:36 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * ld.texinfo: Fix use of @item vs. @itemx.
+
+1999-06-13 Ian Lance Taylor <ian@zembu.com>
+
+ From Thomas Zenker <thz@lennartz-electronic.de>:
+ * ldgram.y (attributes_opt): Use attributes_list instead of NAME.
+ (attributes_list, attributes_string): New nonterminals.
+ * ldlang.c (lang_set_flags): Add invert parameter. Don't handle
+ '!'.
+ * ldlang.c (lang_set_flags): Update declaration.
+
+1999-06-12 Ian Lance Taylor <ian@zembu.com>
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_after_parse): Don't add
+ entry_symbol as an undefined symbol when doing a relocateable
+ link. From <jeffdb@goodnet.com>.
+
+1999-06-12 David O'Brien <obrien@freebsd.org>
+
+ * configure.tgt: (i[3456]86-*-freebsd*): Now defaults to ELF.
+
+1999-06-09 Nick Clifton <nickc@cygnus.com>
+
+ * lexsup.c (help): Restore previous format of output.
+
+1999-06-04 Nick Clifton <nickc@cygnus.com>
+
+ * emultempl/pe.em: If compiling for arm_epoc_pe rename
+ interworking functions to avoid a name space clash.
+
+1999-06-02 Jason Merrill <jason@yorick.cygnus.com>
+
+ * scripttempl/v850.sc: Add initp support.
+
+1999-06-02 Nick Clifton <nickc@cygnus.com>
+
+ * emultempl/pe.em: Rename global arm interworking functions to
+ avoid name collision when all targets BFD is built.
+
+1999-05-30 Cort Dougan <cort@attis.cs.nmt.edu>
+
+ * Makefile.am (ALL_EMULATIONS): Add eelf32ppclinux.o.
+ * configure.tgt (powerpc-*-linux-gnu): Use it.
+ * emulparams/elf32ppclinux.sh: New file.
+
+1999-05-29 Ian Lance Taylor <ian@zembu.com>
+
+ * ld.texinfo (Options): Clarify that options which refer to files
+ must be properly ordered.
+
+1999-05-29 Nick Clifton <nickc@cygnus.com>
+
+ * emultempl/armelf.em (..._parse_args): New function: Parse
+ command line option. Accept arm-elf specific command line option
+ '-p' or '--no-pipeline-knowledge'.
+ (..._list_options): New function: Describe the new command line
+ option.
+ (..._before_allocation): Pass the value of the new variable
+ no_pipeline_knowledge to bfd_elf32_arm_process_before_allocation.
+
+ * emultemp/armelf_oabi.em (..._before_allocation): Pass zero as
+ the third parameter to bfd_elf32_arm_process_before_allocation.
+
+1999-05-28 Nick Clifton <nickc@cygnus.com>
+
+ * lexsup.c (help): Minor formatting changes.
+
+1999-05-28 Martin Dorey <mdorey@madge.com>
+
+ * configure.tgt (i960-*-elf*): New target.
+ * emulparams/elf32_i960.sh: New file.
+ * Makefile.am (ALL_EMULATIONS): Add eelf32_i960.o.
+ (eelf32_i960.c): New target.
+ * Makefile.in: Rebuild.
+
+1999-05-26 Nick Clifton <nickc@cygnus.com>
+
+ * emulparams/armelf_oabi.sh (TEMPLATE_NAME): Set to armelf_oabi.
+
+1999-05-24 Philip Blundell <philb@gnu.org>
+
+ * emultempl/armelf.em (before_parse): Set config.dynamic_link and
+ config.has_shared.
+ * emulparams/armelf.sh (GENERATE_SHLIB_SCRIPT): Define.
+ * emulparams/armelf_linux.sh (GENERATE_SHLIB_SCRIPT): Likewise.
+
+1999-04-13 Philip Blundell <philb@gnu.org>
+
+ * emultempl/armelf.em: Add definitions related to shared objects
+ (copied from elf32.em).
+
+Wed May 19 12:44:26 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * Makefile.am (ALL_EMULATIONS): Remove earmlinux.o and
+ earm26linux.o, add earmelf_linux.o and earmelf_linux26.o.
+ * Makefile.in: Regenerated.
+
+1999-05-16 Nick Clifton <nickc@cygnus.com>
+
+ * emulparams/elf32mcore.sh (GENERATE_SHLIB_SCRIPT): Define.
+ (TEMPLATE_NAME): Define.
+
+Thu May 13 09:48:09 1999 Joel Sherrill (joel@OARcorp.com)
+
+ * configure.tgt (i386-*-rtemself*, sh-*-rtemself*): New targets.
+ (mips*el-*-rtems*, powerpcle-*-rtems*): New targets.
+
+1999-05-10 DJ Delorie <dj@cygnus.com>
+
+ * scripttempl/pe.sc: Specify the output arch, which Ian says is
+ the Right Thing to do.
+
+ * emultempl/pe.em: various changes to parameterize the
+ target-specific information.
+ (gld_i386pe_after_open): Detect and fix MS import libraries
+ by renaming the member objects (which are all named the same).
+
+ * pe-dll.c: various changes to parameterize the target-specific
+ information.
+ (generate_reloc): support relocs more generically to allow for
+ expansion.
+ (pe_exe_build_sections): new; used to add .relocs to .exes
+ (pe_exe_fill_sections): ditto
+
+1999-05-10 Catherine Moore <clm@cygnus.com>
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_after_open):
+ Check for TARGET_IS_arm_epoc_pe.
+ (gld_${EMULATION_NAME}_before_allocation): Likewise.
+
+1999-05-12 Anthony Green <green@cygnus.com>
+
+ * ldlang.c (walk_wild, walk_wild_file, walk_wild_section,
+ output_section_callback, gc_section_callback): New functions for
+ generic section walks.
+ (wild, lang_gc_wild): Use walk_wild.
+ (wild_file, lang_gc_wild_file): Deleted. Common logic moved to
+ walk_wild_file.
+ (wild_section, lang_gc_wild_section): Deleted. Common logic moved
+ to walk_fild_section. Unique logic moved into callbacks
+ output_section_callback and gc_section_callback.
+
+1999-04-26 Tom Tromey <tromey@cygnus.com>
+
+ * aclocal.m4, configure: Updated for new version of libtool.
+
+1999-04-12 Philip Blundell <pb@nexus.co.uk>
+
+ * emulparams/armelf_linux.sh: New file. Support for ARM
+ GNU/Linux ELF ABI.
+ * emulparams/armelf_linux26.sh: New file. APCS-26 version of above.
+ * configure.tgt: For arm*-*-linux-gnu*, set default emulation to
+ `armelf_linux', and also include `armelf_linux26' and `armelf'.
+ * Makefile.am: Add rules to make earmlinux.c and earmlinux26.c.
+ (ALL_EMULATIONS): Add earmlinux.o and earmlinux26.o.
+ * Makefile.in: Regenerate.
+
+1999-04-11 Richard Henderson <rth@cygnus.com>
+
+ * Makefile.am (ALL_EMULATIONS): Add elf_i386_be.o.
+ * configure.tgt (i[3456]86-*-beos*): Use it.
+ * emulparams/elf_i386_be.sh: New file.
+ * Makefile.in: Rebuild.
+
+ * configure.in (environ): Detect declaration.
+ * ldmain.c (main): Don't declare environ.
+ * sysdep.h (environ): Declare if needed.
+ * configure, config.in: Rebuild.
+
+1999-04-11 Richard Henderson <rth@cygnus.com>
+
+ * ldgram.y (ldgram_vers_current_lang): New.
+ (vers_defns): Accept `extern "lang" { }' syntax.
+ * ldlex.l (vers_node_nesting): New.
+ (V_IDENTIFIER): Accept . and $ in symbols.
+ (VERS_NODE): Accept `extern "lang" { }' tokens. Nest VERS_NODE states.
+ * ldlang.c (lang_new_vers_regex): New `lang' argument. Update callers.
+ (lang_vers_match_lang_c): New function.
+ (lang_vers_match_lang_cplusplus): New function.
+ (lang_vers_match_lang_java): New function.
+ (lang_do_version_exports_section): Fix iteration. Don't free
+ section contents, as it is still in use by the patterns.
+
+1999-04-10 Richard Henderson <rth@cygnus.com>
+
+ * ldmain.c (main): Init link_info.no_undefined.
+ * lexsup.c: Add command-line option --no-undefined.
+
+1999-04-06 Ian Lance Taylor <ian@zembu.com>
+
+ * ld.h (LC_MESSAGES): Never define.
+ * ldmain.c (main): Don't pass LC_MESSAGES to setlocale if the
+ system does not define it.
+
+1999-04-06 H.J. Lu <hjl@gnu.org>
+
+ * ldmain.h (demangling): Declare.
+ * ldmain.c (demangling): New global variable.
+ (main): Initialize demangling.
+ * ldmisc.c (vfinfo): Don't demangle symbol if ! demangling.
+ * lexsup.c (ld_options, parse_args): Handle --demangle and
+ --no-demangle.
+ * ld.texinfo, ld.1: Document --demangle/--no-demangle.
+
+ * ldlex.l (V_IDENTIFIER): Allow '.' in symbol.
+
+1999-04-05 Chris Torek <torek@BSDI.COM>
+
+ * emultempl/sunos.em (gld${EMULATION_NAME}_search_dir): Check that
+ a shared library really exists, avoiding broken symlinks.
+
+ * ldfile.c (ldfile_open_file): Generate a better error message if
+ we can't find a -l file.
+
+1999-04-05 DJ Delorie <dj@cygnus.com>
+
+ * configure.tgt (i386-*-pe): add targ_extra_ofiles for other PE
+ targets (i386-pe and i386-winnt)
+
+1999-04-04 Ian Lance Taylor <ian@zembu.com>
+
+ * deffilep.y: Include "sysdep.h" and "ldmisc.h".
+ (def_file_add_directive): Change return type to void. Remove
+ unused locals sh_reserve, sh_commit, and j.
+ (def_ungetc): Always return a value.
+ (def_lex): Correct parenthesization of || within &&.
+ * deffile.h (def_file_add_directive): Update declaration.
+ * pe-dll.c: Include <time.h>, <ctype.h>, and "ldemul.h".
+ (generate_edata): Remove unused local i.
+ (quoteput): Add cast to avoid warning.
+ (pe_dll_generate_def_file): Fix type in format string.
+ (quick_symbol): Remove unused local blhe.
+ (pe_dll_generate_implib): Add cast to avoid warning.
+ (pe_process_import_defs): Remove unused locals ar_head, ar_tail,
+ and n.
+ (pe_as16): Comment out.
+
+1999-04-04 Don Bowman <don@pixsci.com>
+
+ * configure.tgt: Add mips*-*-vxworks* target.
+
+1999-03-31 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.in (ALL_EMULATIONS): Add earm_epoc_pe.o
+ Add build rule and dependencies for earm_epoc_pe.c.
+
+ * emulparams/arm_epoc_pe.sh: New file.
+
+ * configure.tgt: Add 'targ_extra_ofiles' for ARM based PE
+ targets.
+
+1999-03-31 Philip Blundell <pb@nexus.co.uk>
+
+ * configure.tgt: Match `arm*-*-linux-gnu*' not
+ `armv*-*-linux-gnu'.
+
+1999-03-26 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * scripttempl/elf.sc: Put the .eh_frame and .gcc_except_table
+ sections in the data segment.
+
+Fri Mar 26 12:05:51 1999 Catherine Moore <clm@cygnus.com>
+
+ * ld.h (wildcard_spec): Add exclude_name.
+ * ldgram.y (EXCLUDE_FILE): New token.
+ (wildcard_spec): Set exclude_name.
+ (file_NAME_list): Recognize EXCLUDE_FILE.
+ * ldlang.c (wild_section): Check for excluded files.
+ (print_wild_statement): Print excluded files.
+ (lang_add_wild): New argument exclude_filename.
+ Set exclude_filename.
+ * ldlang.h (lang_wild_statement_type): Add exclude_filename.
+ * ldlex.l: New token EXCLUDE_FILE.
+ * mri.c (mri_draw_tree): Add argument to lang_add_wild.
+ * scripttempl/elf.sc (CTOR, DTOR): Exclude crtend.o from ctor wildcard.
+ Reorder sorted and unsorted ctors.
+ * scripttempl/elfd10v.sc (CTOR, DTOR): Likewise.
+ * scripttempl/elfd30v.sc (CTOR, DTOR): Likewise.
+ * scripttempl/elfppc.sc (CTOR, DTOR): Likewise.
+
+1999-03-26 Nick Clifton <nickc@cygnus.com>
+
+ * ldlang.c (lang_gc_sections): If entry_symbol is not defined,
+ default to "start".
+
+1999-03-03 Nick Clifton <nickc@cygnus.com>
+
+ * scripttempl/elf.sc: Add explicit placements for the .eh_frame
+ and .gcc_except_table sections.
+
+Wed Mar 3 09:13:34 1999 Catherine Moore <clm@cygnus.clm>
+
+ * scripttempl/elf.sc: Remove .end.ctors and .end.dtors
+ sections. Reorder .ctors section entries.
+ * scripttempl/elfd10v.sc: Likewise.
+ * scripttempl/elfd30v.sc: Likewise.
+ * scripttempl/elfppc.sc: Likewise.
+
+1999-02-26 Jim Lemke <jlemke@cygnus.com>
+
+ * ldmain.c (main): Wrong error msg for -r and --mpc860c0.
+
+1999-02-25 Nick Clifton <nickc@cygnus.com>
+
+ * ldlang.c (lang_check_section_addresses): Remove extraneous
+ backslash.
+
+Thu Feb 25 15:07:24 1999 Catherine Moore <clm@cygnus.com>
+
+ * scripttempl/elf.sc: Don't gather .ctor and .dtor sections
+ for relocateable links.
+ * scripttempl/elfd10v.sc: Likewise.
+ * scripttempl/elfd30v.sc: Likewise.
+ * scripttempl/elfppc.sc: Likewise.
+
+1999-02-22 Jim Lemke <jlemke@cygnus.com>
+
+ * ldint.texinfo: remove extraneous right brace.
+ * ldmain.c (main): initialize and check option "mpc860c0".
+ * lexsup.c (ld_options, parse_args): add option "mpc860c0".
+
+Wed Feb 17 12:10:06 1999 Stan Cox <scox@cygnus.com>
+
+ * mpw-elfmips.c (gldelf32ebmip_before_allocation): Remove special
+ .reginfo section handling.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Likewise.
+ * emulparams/elf32elmip.sh (INITIAL_READONLY_SECTIONS): Removed
+ * emulparams/elf32ebmip.sh (INITIAL_READONLY_SECTIONS): Removed
+
+1999-02-17 Nick Clifton <nickc@cygnus.com>
+
+ Patch from: Scott Bambrough <scottb@corelcomputer.com>
+
+ * configure.tgt: Added armv*-*-linux-gnu to $targ_emul
+ recognition.
+
+Wed Feb 17 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * emultempl/armelf_oabi.em
+ (bfd_elf32_arm_allocate_interworking_sections,
+ bfd_elf32_arm_get_bfd_for_interworking,
+ bfd_elf32_arm_process_before_allocation): Define them to use the
+ old ABI versions of the functions.
+
+Tue Feb 16 16:48:19 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Change AC_PREREQ to 2.13. Change AM_PROG_INSTALL
+ to AC_PROG_INSTALL. Change AM_EXEEXT to AC_EXEEXT.
+ * Makefile.am (earmelf_oabi.c): Changes spaces to tab.
+ * acconfig.h: Remove.
+ * aclocal.m4: Rebuild.
+ * configure: Rebuild.
+ * Makefile.in: Rebuild.
+
+Mon Feb 15 18:21:48 1999 Vladimir N. Makarov <vmakarov@cygnus.com>
+
+ * ldexp.h (struct etree_value_type): Change valid onto valid_p.
+
+ * ldexp.c (new_abs): Ditto.
+ (new_rel, new_rel_from_section, fold_binary, invalid, fold_name,
+ exp_fold_tree, exp_binop, exp_trinop, stat_alloc,
+ exp_get_abs_int): Ditto
+
+ * ldlang.c (print_assignment, lang_size_sections,
+ lang_do_assignments): Ditto.
+
+1999-02-11 Nick Clifton <nickc@cygnus.com>
+
+ * ldlang.c (lang_check_section_addresses): New function: Check
+ addresses assigned to section for overlaps.
+ (lang_process): Call lang_check_section_addresses if suitable.
+
+ * ld.h: Add new boolean field to args_type structure:
+ 'check_section_addresses'.
+
+ * ldmain.c: Initialise check_section_addresses field to true.
+
+ * lexsup.c: Add new command line options '--no-check-sections' and
+ '--check-sections'.
+
+ * ld.texinfo: Document new command line options '--check-sections'
+ and '--no-check-sections'.
+
+1999-02-08 Nick Clifton <nickc@cygnus.com>
+
+ * configure.tgt: Add support for StrongARM target.
+
+Wed Feb 3 19:41:01 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldctor.c (ldctor_build_sets): Just set SEC_KEEP once. Check for
+ an owner of a section before using it to look up a reloc type.
+ Don't set SEC_KEEP for the absolute section.
+
+Mon Feb 1 11:39:46 1999 Catherine Moore <clm@cygnus.com>
+
+ * Makefile.am (earmelf_oabi.o): New.
+ * Makefile.in: Regenerate.
+ * configure.tgt (arm-*-oabi): New.
+ (thumb-*-oabi): New.
+ * emulparams/armelf_oabi.sh: New.
+ * emultempl/armelf_oabi.em: New.
+
+1999-01-31 17:57:31 1998 Michael Meissner <meissner@cygnus.com>
+
+ * scripttempl/elfppc.sc: Add support for -fleading-underscores
+ switch in all linker generated symbols.
+
+ * configure.tgt (powerpc{,le}*-*-vxworks): Add as aliases for
+ powerpc{,le}-*-eabi.
+
+Wed Jan 20 17:01:48 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.tgt (i[3456]86-*-solaris2*): New target. From Pavel
+ Roskin <pavel_roskin@geocities.com>.
+
+1999-01-19 Nick Clifton <nickc@cygnus.com>
+
+ * ldlang.c (lang_size_sections): Count loadable sections as
+ contributing to the size of the current segment.
+
+1999-01-15 Nick Clifton <nickc@cygnus.com>
+
+ * ldlang.c (lang_size_sections): Only update the current
+ address of a region if the section just placed into it is an
+ allocated section.
+
+1999-01-12 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.am: Replace efr30.o with eelf32fr30.o.
+ * Makefile.in: Regenerate.
+
+ * configure.tgt: Replace fr30 with elf32fr30.
+
+ * emulparams/elf32fr30.sh: New file: Replaces fr30.sh, and uses
+ generic elf.sc script. Also replaces the .stack section with a
+ user definable symbol __stack.
+
+1999-01-11 Nick Clifton <nickc@cygnus.com>
+
+ * scripttempl/fr30.sc: Fill .init and .fini sections with NOP
+ pattern.
+
+1999-01-03 Ken Raeburn <raeburn@cygnus.com>
+
+ * Makefile.am (check-DEJAGNU): No longer provide HOSTING_EMU,
+ HOSTING_CRT0, HOSTING_LIBS; the test suite can extract them from
+ configure.host and configure.tgt now.
+ * Makefile.in: Rebuild.
+
+1998-12-27 Ulrich Drepper <drepper@cygnus.com>
+
+ * lexsup.c (parse_args, case OPTION_RPATH): Avoid adding duplicate
+ elements to rpath.
+
+Thu Dec 10 11:12:28 1998 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * Makefile.am (ALL_EMULATIONS): Remove pe-dll.o and deffilep.o.
+ (ALL_EMUL_EXTRA_OFILES): New variable. Put them here instead.
+ * configure.in: Set EMUL_EXTRA_OFILES to $(ALL_EMUL_EXTRA_OFILES)
+ if configuring with all targets.
+ * configure, Makefile.in, aclocal.m4: Rebuild.
+
+ * emultempl/pe.em (pe_enable_stdcall_fixup): Make static.
+ (pe_dll_do_default_excludes): Removed, unused.
+ (pe_def_file, pe_dll_export_everything, pe_dll_kill_ats,
+ pe_dll_stdcall_aliases): Don't initialize them, this file may be
+ compiled more than once.
+ * pe-dll.c (pe_def_file, pe_dll_export_everything,
+ pe_dll_do_default_excludes, pe_dll_kill_ats,
+ pe_dll_stdcall_aliases): Define and initialize them here instead.
+ (generate_reloc): Fix allocation of reloc_addresses array to use
+ bfd_vma instead of unsigned long. Fix element size in qsort call.
+ (reloc_sort): Compare pointers to bfd_vma instead of unsigned
+ long.
+
+Mon Dec 7 21:10:09 1998 J.J. van der Heijden <j.j.vanderheijden@student.utwente.nl>
+
+ * configure.tgt (i[3456]86-*-mingw32*): Add cygwin target specific
+ files.
+
+Sun Dec 6 16:33:33 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.tgt (m68*-*-gnu*): New target. From Aymeric Vincent
+ <aymeric.vincent@emi.u-bordeaux.fr>.
+
+1998-12-04 Nick Clifton <nickc@cygnus.com>
+
+ * emulparams/fr30.sh (TEXT_START_ADDR): Change TEXT_START_ADDR
+ from 0x100000 to 0x10000 so that it fits in 20 bits.
+
+Sat Nov 28 22:32:20 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldemul.h (ldemul_recognized_file): Declare.
+
+Sat Nov 28 22:30:55 1998 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * ldlang.c (lang_add_wild): Don't pretend that there is an input
+ file if the filename is a wildcard pattern.
+
+1998-11-25 DJ Delorie <dj@cygnus.com>
+
+ * ldemul.h (ld_emulation_xfer_struct): new hook "recognized_file"
+ * ldemul.c (ldemul_recognized_file): new function, new hook
+ * ldint.texinfo: document new hook.
+ * ldlang.c (load_symbols): call recognized_hook for all objects we
+ do recognize, in case the emulation needs to handle them
+ specially. PE DLLs use this.
+ * pe-dll.c (pe_dll_generate_def_file): take out hack and debug
+ printfs
+ * emultempl/pe.em (gld_i386_recognized_file): new function
+ (gld_i486_unrecognized_file): take out hack
+
+1998-11-23 DJ Delorie <dj@cygnus.com>
+
+ * pe-dll.c (fill_edata): fill in timestamp
+ (make_head): name object files sequentially to ensure
+ they link in the right order.
+ (make_tail): same here
+ (pe_process_import_defs): use sequential names for bfds to ensure
+ proper link order.
+ (pe_implied_import_dll): new function; handles linking directly
+ against DLLs by simulating IMPORTS directives. * emultempl/pe.em
+ (gld_i386pe_before_parse): hack bfd to not recognize .dll files
+ via bfd_pe_dll_not_recognized_hack
+
+1998-11-23 DJ Delorie <dj@cygnus.com>
+
+ * emultempl/pe.em (gld_i386pe_parse_args): Conditionalize call to
+ pe_dll_add_excludes
+
+Mon Nov 23 14:36:18 1998 Nick Clifton <nickc@cygnus.com>
+
+ * emultempl/pe.em (after_parse): Only create an undefined entry
+ symbol if one has been specified.
+
+1998-11-23 DJ Delorie <dj@cygnus.com>
+
+ * emultempl/pe.em (gld_i386pe_after_open): call
+ pe_process_import_defs
+ * pe-dll.c (pe_dll_generate_def_file): calculate BASE from
+ pe_data, only print if actually set. Print version only if
+ set.
+ (save_relocs): save relocs for both input and output.
+ (make_one): support internal/external different names.
+ (pe_dll_generate_implib): support new make_one
+ (pe_process_import_defs): new function; handles IMPORT
+ directives in .def files.
+
+Fri Nov 20 13:06:49 1998 Nick Clifton <nickc@cygnus.com>
+
+ * ldmisc.c (vfinfo): Cope with empty symbol names.
+
+Thu Nov 19 13:31:15 1998 Nick Clifton <nickc@cygnus.com>
+
+ * scripttempl/pe.sc: Add provision of '_end' symbol.
+
+Wed Nov 18 18:18:43 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * configure.tgt: change refs from cygwin32* to cygwin*.
+ * aclocal.m4: regenerate
+ * configure.in: don't need to call AM_CYGWIN32.
+ * configure: regenerate
+
+Mon Nov 16 22:14:07 1998 DJ Delorie <dj@cygnus.com>
+
+ * emultempl/pe.em (gld_i386_finish): generate import library
+ * deffile.h: add hint member.
+ * pe-dll.c (pe_dll_generate_implib): New function with helpers;
+ generates the import library directly from the export table.
+ (fill_edata): remember the actual hint for the import library.
+
+Sat Nov 14 14:36:24 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.1: Some cleanups from NOKUBI Hirotaka <hnokubi@yyy.or.jp>.
+
+Thu Nov 12 19:21:57 1998 Dave Brolley <brolley@cygnus.com>
+
+ * po/ld.pot: Regenerated.
+ * po/POTFILES.in: Regenerated.
+ * configure: Regenerated.
+ * aclocal.m4: Regenerated.
+ * Makefile.in: Regenerated.
+
+Wed Nov 11 18:10:15 1998 DJ Delorie <dj@cygnus.com>
+
+ * pe-dll.c (generate_reloc): don't output PE relocs for sections
+ that won't be loaded.
+
+Wed Nov 11 13:44:54 1998 DJ Delorie <dj@cygnus.com>
+
+ * pe-dll.c (fill_edata): don't strip underscores
+
+Tue Nov 10 21:28:19 1998 DJ Delorie <dj@cygnus.com>
+
+ * ld.texinfo: added i386pe option summary
+
+Tue Nov 10 17:53:17 1998 DJ Delorie <dj@cygnus.com>
+
+ * pe-dll.c (process_def_file): properly note undefined exported
+ symbols, clean up old code.
+ (pe_dll_generate_def_file): don't crash if pe_def_file is NULL
+ * emultempl/pe.em (gld_i386_parse_args): add
+ (en/dis)able-stdcall-fixups
+ (pe_fixup_stdcalls): warn about stdcall fixups
+ (gld_i386_unrecognized_file): make exported symbols undefs so that
+ archive members get pulled in
+
+Tue Nov 10 14:50:51 1998 Catherine Moore <clm@cygnus.com>
+
+ * scripttempl/elfd10v.sc: Add KEEP attribute to .init,
+ .fini, .dtors and .ctors. Add .data and .text
+ wildcards to support section garbage collection.
+
+Mon Nov 9 22:52:50 1998 DJ Delorie <dj@indy.delorie.com>
+
+ * deffilep.y: properly handle relocs with multiple def_files,
+ cache import module names
+
+Mon Nov 9 22:44:58 1998 DJ Delorie <dj@cygnus.com>
+
+ * pe-dll.c (process_def_file): don't assume exports won't move
+ during a realloc
+
+Mon Nov 9 16:41:30 1998 DJ Delorie <dj@cygnus.com>
+
+ * pe-dll.c: New file; direct support for PE DLLs
+ * deffile.h: New file; direct support for PE DLLs
+ * deffilep.y: New file; direct support for PE DLLs
+ * emultempl/pe.em: add direct support for PE DLLs
+ * configure.tgt: allow target-specific extra files
+ * configure.in: allow target-specific extra files
+ * ldlang.c (lang_add_assignment): return the assignment so that
+ one can change the value later based on the object files (pe-dll
+ DEF files do this)
+ * ldint.texinfo: add section for emulation walkthrough
+ * Makefile.am: add new files and target-specific extra files
+ * emultempl/pe.em (gld_i386_list_options): list dll-specific
+ options.
+ * pe-dll.c (process_def_file): auto-export everything if
+ nothing is otherwise exported.
+
+Wed Nov 4 16:39:18 1998 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.am: Add support for FR30 target.
+ * configure.tgt: Add support for FR30 target.
+ * Makefile.in: Regenerate.
+ * emulparams/fr30.sh: New file.
+ * scripttemp/fr30.sc: New file.
+
+Mon Nov 2 14:47:15 1998 Catherine Moore <clm@cygnus.com>
+
+ * ldmain.c (main): Don't report error for dynamic links and
+ --gc-sections.
+
+1998-10-26 16:05 Ulrich Drepper <drepper@cygnus.com>
+
+ * lexsup.c (ld_options): Change text of -O to Optimize output file".
+ (parse_args): Set link_info.optimize based on -O argument.
+ * ldmain.c (main): Initialize link_info.optimze to false.
+ * ld.texinfo: Describe -O option.
+ * ld.1: Likewise.
+
+Mon Oct 12 14:29:56 1998 Nick Clifton <nickc@cygnus.com>
+
+ * scripttempl/v850.sc: Move .sbss and .scommon sections into their
+ own segment, so that they can be next to the .bss section and so
+ initialised by the same piece of code.
+
+Fri Oct 9 15:59:52 1998 Catherine Moore <clm@cygnus.com>
+
+ * scripttempl/elf.sc: Merge .sdata.* etc sections.
+ * ldctor.c (ldctor_build_sets): Set SEC_KEEP for
+ ctor sections.
+
+Mon Oct 5 09:40:43 1998 Catherine Moore <clm@cygnus.com>
+
+ * ldmain.c (main): Error if --gc-sections and
+ dyanmic linking.
+ * scripttempl/v850.sc: Add KEEP attribute to .init,
+ .fini, .dtors and .ctors. Add .data and .text
+ wildcards to support section garbage collection.
+
+Wed Sep 30 11:19:15 1998 Nick Clifton <nickc@cygnus.com>
+
+ * scripttempl/v850.sc: Rename .call_table section to
+ .call_table_data and create a new section called
+ .call_table_text.
+
+Sun Sep 20 00:43:26 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/elf.sc: Add alignment at the end of the .bss
+ section, so that it is included in the memsize of the segment.
+
+Fri Sep 18 13:42:42 1998 Catherine Moore <clm@cygnus.com>
+
+ * emultempl/elf32.em (gld_place_orphan): Don't process for
+ sections with SEC_EXCLUDE flag.
+
+Fri Sep 4 09:24:02 1998 Nick Clifton <nickc@cygnus.com>
+
+ * emulparams/d30velf.sh (TEXT_SIZE): Increased to 2000K.
+ (DATA_SIZE): Increased to 2000K.
+
+Thu Sep 3 17:30:58 1998 Richard Henderson <rth@cygnus.com>
+
+ * emulparams/d10velf.sh (TEMPLATE_NAME): Use elf32.
+
+Mon Aug 31 01:06:00 1998 Catherine Moore <clm@cygnus.com>
+
+ * Makefile.am: Change armelf.sc to elf.sc
+ * Makefile.in: Regenerate.
+
+Mon Aug 31 11:12:04 1998 Catherine Moore <clm@cygnus.com>
+
+ * emulparams/armelf.sh: Change SCRIPT_NAME to
+ elf. Change TEXT_START_ADDR to 0x8000. Define
+ OTHER_TEXT_SECTIONS, OTHER_BSS_SYMBOLS and
+ OTHER_BSS_END_SYMBOLS.
+ * scripttempl/elf.sc: Modify to use
+ OTHER_BSS_END_SYMBOLS.
+ * scripttempl/elfarm.sc: Remove file.
+
+Tue Aug 18 12:05:34 1998 Catherine Moore <clm@cygnus.com>
+
+ * emultempl/armelf.em (gld_armelf_before_allocation):
+ Add bfd_ prefix to elf32_arm_process_before_allocation
+ and elf32_arm_allocate_interworking_sections.
+ (gld_armelf_after_open): Add bfd_ prefix to
+ elf32_arm_get_bfd_for_interworking.
+
+Fri Aug 14 15:34:29 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am: Rebuild dependencies.
+ * Makefile.in: Rebuild.
+
+ * ldgram.y: Include "ldctor.h".
+ (statement): Accept SORT around CONSTRUCTORS.
+ * ldctor.c: Include <ctype.h>.
+ (constructors_sorted): New global variable.
+ (ctor_prio, ctor_cmp): New static functions.
+ (ldctor_build_sets): Sort constructors if requested.
+ * ldctor.h (constructors_sorted): Declare.
+ * ldlang.c (print_statement): Print sorted CONSTRUCTORS
+ correctly.
+ * scripttempl/elf.sc: Add sort around CONSTRUCTORS.
+ * ld.texinfo (Output Section Keywords): Document SORT
+ (CONSTRUCTORS).
+
+Thu Aug 13 12:20:39 1998 Catherine Moore <clm@cygnus.com>
+
+ * emulparams/armelf.sh: Define TEMPLATE_NAME to armelf.
+ * scripttempl/elfarm.sc: Include .glue_7t and .glue7
+ sections.
+ * emultempl/armelf.em: New file.
+
+Thu Aug 13 12:52:45 1998 H.J. Lu <hjl@gnu.org>
+
+ * Makefile.am (ld.dvi): Use " instead of ' for MAKEINFO.
+ * Makefile.in: Rebuild.
+
+Tue Aug 11 16:17:01 1998 Catherine Moore <clm@cygnus.com>
+
+ * scripttempl/elfarm.sc: Change text start address
+ back to zero.
+
+Tue Aug 11 10:01:12 1998 Jeffrey A Law (law@cygnus.com)
+
+ * emulparms/mn10200.sh (MAX_PAGESIZE): Define to 1.
+ * emulparms/mn10300.sh (MAX_PAGESIZE): Define to 1.
+
+Sun Aug 9 20:31:27 1998 Catherine Moore <clm@cygnus.com>
+
+ * scripttempl/elfarm.sc: Set text start address to
+ 0x8000. Add __bss_end definition.
+
+Sat Aug 1 11:47:37 1998 Catherine Moore <clm@cygnus.com>
+
+ * scripttempl/elfarm.sc: New file.
+ * emulparams/armelf.sh: Set SCRIPT_NAME to elfarm.
+
+Fri Jul 31 15:56:16 1998 Catherine Moore <clm@cygnus.com>
+
+ * emulparams/armelf.sh: New file.
+ * configure.tgt: Recognize thumb-elf and arm-elf.
+ * Makefile.am (earmelf.o): New.
+ * Makefile.in: Rebuild.
+
+Fri Jul 24 12:00:57 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (install-exec-local): Don't remove the file before
+ checking whether $(bindir) == $(tooldir)/bin. From Maciej
+ W. Rozycki <macro@ds2.pg.gda.pl>.
+ * Makefile.in: Rebuild.
+
+ * configure.tgt: Recognize h8[35]00*-coff* as well as -hms*.
+
+Thu Jul 23 11:15:12 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/aout.sc: If ALIGNMENT is defined, use it to set
+ alignment of end symbol.
+ * scripttempl/elf.sc: Likewise.
+ * emulparams/sun4.sh (ALIGNMENT): Define.
+ * emulparams/elf32_sparc.sh (ALIGNMENT): Define.
+ * ldint.texinfo (emulation parameters): Document ALIGNMENT.
+
+ * lexsup.c (parse_args): Add missing break statement.
+
+ * ldlang.c (lang_gc_sections_1): Add default case to switch to
+ avoid warnings.
+
+Tue Jul 14 15:42:17 1998 Richard Henderson <rth@cygnus.com>
+
+ * configure.tgt (i?86-*-beos{pe,elf,}*): Recognize.
+ * Makefile.am (ei386beos.o): New.
+ * emulparams/i386beos.sh: New file.
+ * emultempl/beos.em, scripttempl/i386beos.sc: New file.
+
+Tue Jul 14 15:35:42 1998 Richard Henderson <rth@cygnus.com>
+
+ * lexsup.c: New option --version-exports-section.
+ * ld.h (struct args_type): Add version_exports_section.
+ * ldlang.c (lang_do_version_exports_section): New function.
+ (lang_process): Call it.
+
+Mon Jul 13 13:20:23 1998 Steve Chamberlain <sac@transmeta.com>
+
+ * ldlex.l: Accept ASSERT.
+ * ldgram.y (exp): Add ASSERT_K case.
+ * ldexp.h (node_type): Add etree_assert to node_class enum.
+ (etree_type): Add assert_s field.
+ (exp_assert): Declare.
+ * ldexp.c (exp_fold_tree): Handle etree_assert.
+ (exp_assert): New function.
+ (exp_print_tree): Handle etree_assert.
+ * ld.texinfo (Miscellaneous Commands): Document ASSERT.
+
+Wed Jul 8 14:03:12 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldgram.y: Change MAX to MAX_K and MIN to MIN_K, to avoid
+ conflicts with system header files. Change all uses.
+
+ * Makefile.am (MAINTAINERCLEANFILES): Define.
+ * Makefile.in: Rebuild.
+
+Tue Jul 7 18:03:22 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (ldver.texi): New target.
+ (ld.info, ld.dvi): Depend upon ldver.texi.
+ * ld.texinfo: Include ldver.texi. Mention version number on title
+ page and in top node.
+ * Makefile.in: Rebuild.
+
+Mon Jul 6 14:55:13 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.tgt (i[3456]86-*-solaris*): New target.
+
+Fri Jul 3 14:19:06 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (wild_section): Don't get an assertion failure if the
+ section is discarded.
+
+ * scripttempl/pe.sc: Use SORT to sort sections appropriately.
+ * emultempl/pe.em (sort_by_file_name): Remove.
+ (sort_by_section_name): Remove.
+ (sort_sections_1, sort_sections): Remove.
+ (gld_${EMULATION_NAME}_before_allocation): Don't call
+ sort_sections.
+ (hold_section, hold_section_name): New static variables.
+ (hold_use, hold_text, hold_rdata, hold_data, hold_bss): Likewise.
+ (gld_${EMULATION_NAME}_place_orphan): Rewrite. Look for a good
+ place to put the section. Align the section. Sort the input
+ sections by name.
+ (gld_${EMULATION_NAME}_place_section): New static function.
+
+ * ldlang.c (wild_sort): When sorting by file name, sort by archive
+ name first.
+
+ * emultempl/pe.em (set_pe_subsystem): Don't call
+ ldlang_add_undef.
+ (gld_${EMULATION_NAME}_after_parse): New static function.
+ (ld_${EMULATION_NAME}_emulation): Use new after_parse function
+ rather than after_parse_default.
+
+ * ldgram.y (extern_name_list): Do not require symbols to be
+ separated by commas.
+ (ifile_p1): Add EXTERN.
+ * ldlex.l: Accept EXTERN in BOTH and SCRIPT mode as well as MRI
+ mode.
+ * ld.texinfo (Options): Mention that EXTERN is equivalent to -u.
+ (Miscellaneous Commands): Document EXTERN.
+
+Wed Jul 1 19:40:34 1998 Richard Henderson <rth@cygnus.com>
+
+ * ld.h (args_type): Add gc_sections.
+ * ldgram.y (ldgram_had_keep, KEEP): New.
+ (input_section_spec_no_keep): Rename from old input_section_spec.
+ (input_section_spec): New. Recognize KEEP.
+ * ldlang.c (wild_section): Handle keep sections.
+ (lang_gc_wild_section, lang_gc_wild_file, lang_gc_wild): New.
+ (lang_gc_sections_1, lang_gc_sections): New.
+ (lang_process): Invoke lang_gc_sections.
+ (lang_add_wild): Add keep argument. Update all callers.
+ * ldlang.h (lang_wild_statement_struct): Add keep_sections.
+ * ldlex.l (KEEP): Match it.
+ * ldmain.c (main): Error on -r and --gc-sections.
+ * lexsup.c: Add --gc-sections.
+
+ * scripttempl/elf.sc: Merge .text.* etc sections appropriately.
+ Mark startup sections with KEEP.
+ * scripttempl/elfppc.sc: Likewise.
+
+ * ld.texinfo: Update for --gc-sections and KEEP.
+
+Wed Jul 1 15:21:20 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ From Peter Jordan <pjordan@chla.usc.edu>:
+ * scripttempl/i386go32.sc: Correct constructor handling for -u.
+
+Tue Jun 23 15:17:27 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (install-data-local): Make ldscripts subdirectory.
+ * Makefile.in: Rebuild.
+
+Tue Jun 23 15:17:04 1998 Mike Stump <mrs@wrs.com>
+
+ * Makefile.am (install-exec-local): Don't let EXEEXT interfere
+ with the program transform name.
+ * Makefile.in: Rebuild.
+
+Sun Jun 21 23:55:16 1998 Jeffrey A Law (law@cygnus.com)
+
+ * ld.texinfo: Note that -relax may make symbolic debugging
+ impossible on some platforms.
+
+Tue Jun 16 12:51:13 1998 Geoff Keating <geoffk@ozemail.com.au>
+
+ * Makefile.am (Makefile): Remove target.
+ (config.status): New target.
+ * Makefile.in: Rebuild.
+
+ * configure.host (powerpc*-*-linux-gnu*): New host.
+
+Fri Jun 12 17:38:07 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * scripttempl/elf.sc (INPUT_FILES): Optional INPUT spec.
+
+ * emulparams/m32relf.sh (OTHER_RELOCATING_SECTIONS): Change top of
+ stack to 8MB.
+
+Fri Jun 12 19:33:17 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (HFILES): Remove config.h.
+ (EMULATION_OFILES, POTFILES): Move patch of May 14 from
+ Makefile.in to Makefile.am.
+ (earmcoff.c): Depend upon armcoff.em, not generic.em.
+ * po/Make-in (all-yes): Correct misspelling in $(PACKAGE).
+ ($(srcdir)/$(PACKAGE).pot): Pass -C to $(XGETTEXT).
+ * Makefile.in, po/POTFILES.in, po/ld.pot: Rebuild.
+
+Fri Jun 12 13:43:17 1998 Tom Tromey <tromey@cygnus.com>
+
+ * po/Make-in (all-yes): If maintainer mode, depend on .pot file.
+ ($(PACKAGE).pot): Unconditionally depend on POTFILES.
+
+Tue Jun 9 09:36:48 1998 Nick Clifton <nickc@cygnus.com>
+
+ * ldlang.c (lang_finish): Add CONST type modifier to declaration
+ of 'send'.
+
+Fri Jun 5 18:19:59 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/aix.em (gld${EMULATION_NAME}_before_parse): Set
+ config.has_shared to true.
+ * emultempl/linux.em (gld${EMULATION_NAME}_before_parse):
+ Likewise.
+ * emultempl/sunos.em (gld${EMULATION_NAME}_before_parse):
+ Likewise.
+
+Tue Jun 2 12:55:03 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (lang_finish): If the entry symbol is not found, try
+ parsing it as a number.
+ * ld.texinfo (Options): Document this.
+
+Mon Jun 1 14:01:20 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo (Input Section Wildcards): Document SORT keyword.
+
+Mon May 18 12:42:53 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * ld.h (ld_config_type): New member has_shared.
+ * ldmain.c (main): Initialize it.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Set it.
+ * lexsup.c (parse_args): Treat -shared as error if not supported.
+
+Mon May 18 13:14:43 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ From Jason Merrill <jason@cygnus.com>:
+ * ldlang.c (wild_sort): Correct order of sort.
+ * scripttempl/elf.sc: Put *crtbegin.o before other .ctors and
+ .dtors.
+ * scripttempl/elfd10v.sc: Likewise.
+ * scripttempl/elfd30v.sc: Likewise.
+ * scripttempl/elfppc.sc: Likewise.
+
+Fri May 15 00:22:35 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlex.l: Recognize keyword SORT.
+ * ldgram.y (current_file): Change to struct wildcard_spec.
+ (%union): Add new fields cname and wildcard.
+ (wildcard_name, wildcard_spec): New nonterminals.
+ (file_NAME_list): Use wildcard_spec.
+ (input_section_spec): Change current_file usage.
+ * ld.h (struct wildcard_spec): Define.
+ * ldlang.h (lang_wild_statement_struct): Add new fields
+ sections_sorted and filenames_sorted.
+ (lang_add_wild): Update declaration.
+ * ldlang.c (wild_sort): New static function.
+ (wild_section): Use wild_sort.
+ (print_wild_statement): Print sorting information.
+ (lang_add_wild): Add new parameters sections_sorted and
+ filenames_sorted. Change all callers.
+ * mri.c (mri_draw_tree): Update calls to lang_add_wild.
+ * scripttempl/elf.sc: Sort .ctors.* and .dtors.* by section name.
+ * scripttempl/elfd10v.sc: Likewise.
+ * scripttempl/elfd30v.sc: Likewise.
+ * scripttempl/elfppc.sc: Likewise.
+
+Thu May 14 18:39:16 1998 Richard Henderson <rth@cygnus.com>
+
+ * emulparams/m32relf.sh (TEMPLATE_NAME): Define.
+
+Thu May 14 14:51:24 1998 Nick Clifton <nickc@cygnus.com>
+
+ * ldemul.h: Add new prototype: ldemul_list_emulation_options.
+ (ld_emulation_xfer_struct): Add new field: list_options.
+ * ldemul.c (ldemul_list_options): New function. Call the
+ list_options field of the ld_emulation_xfer_struct for each
+ supported emulation, if such a function is present.
+ * lexsup.c (help): Call ldemul_list_emulation_options.
+ * emultempl/pe.em (gld_<>_list_options): New function. Describe
+ the pe emulation specific command line options.
+ * emultempl/armcoff.em (gld<>_list_options): New function.
+ Describe the armcoff emulation specific command line options.
+
+ * emultempl/pe.em: Add a new command line option:
+ --support-old-code.
+ * emultempl/armcoff.em: Ditto.
+ * ld.texinfo: Document the --support-old-code option.
+
+ * Makefile.in: Add emulation files for POTFILES.in target.
+ * emultempl/pe.em: Internationalise suitable strings.
+ * emultempl/armcoff.em: Internationalise suitable strings.
+ * po/POTFILES.in: Rebuilt.
+
+Sun May 10 22:36:30 1998 Jeffrey A Law (law@cygnus.com)
+
+ * po/Make-in (install-info): New target.
+
+Tue Apr 28 19:18:30 1998 Tom Tromey <tromey@cygnus.com>
+
+ * ldmain.c (main): Conditionally call setlocale.
+ * ld.h: Include <locale.h> if HAVE_LOCALE_H.
+ (LC_MESSAGES): Now can be defined even when ENABLE_NLS.
+
+Mon Apr 27 11:56:21 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Change version number to 2.9.4
+ * configure: Rebuild.
+
+ * ld.texinfo (Options) [-rpath-link]: Mention ld.so.conf.
+
+ Based on patch from H.J. Lu <hjl@gnu.org>:
+ * emultempl/elf32.em (global_vercheck_needed): New file static
+ variable.
+ (global_vercheck_failed): New file static variable.
+ (gld${EMULATION_NAME}_after_open): Check for shared libraries
+ twice, once with force set to 0 and once with it set to 1.
+ (gld${EMULATION_NAME}_check_ld_so_conf): Add force parameter.
+ Change all callers.
+ (gld${EMULATION_NAME}_search_needed): Likewise.
+ (gld${EMULATION_NAME}_try_needed): Likewise. If not force, check
+ whether the libraries needs any incompatible versions.
+ (gld${EMULATION_NAME}_vercheck): New static function.
+
+Wed Apr 22 16:01:35 1998 Tom Tromey <tromey@cygnus.com>
+
+ * po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).
+
+Wed Apr 22 12:40:56 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (check-DEJAGNU): Add $(INTLLIBS) to LIBIBERTY when
+ invoking runtest.
+ * Makefile.in: Rebuild.
+
+ * lexsup.c (parse_args): Change -l options into --library options
+ to avoid confusion between -li and -library.
+
+ * ld.texinfo (MEMORY): Clarify use of >REGION.
+
+Tue Apr 21 23:12:40 1998 Tom Tromey <tromey@scribbles.cygnus.com>
+
+ * Many files: Added gettext invocations around user-visible
+ strings.
+ * ld.h: Added gettext-related includes and defines.
+ * ldmain.c: Call setlocale, bindtextdomain, textdomain.
+ * 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.
+ (TDIRS): AC_SUBST early on, to avoid having value split when it
+ happens to cross line 90 of the generated sed script.
+ * Makefile.am (SUBDIRS): New macro.
+ (POTFILES): Likewise.
+ (po/POTFILES.in): New target.
+ (ld_new_LDADD): Added INTLLIBS.
+ (ld_new_DEPENDENCIES): Added INTLDEPS.
+ * po/Make-in, po/POTFILES.in, po/gas.pot: New files.
+
+Tue Apr 21 23:07:07 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo (Simple Example): Rewrite a few things as suggested
+ by Nick Clifton <nickc@cygnus.com>.
+ (PROVIDE): Likewise.
+
+Tue Apr 21 09:55:06 1998 Nick Clifton <nickc@cygnus.com>
+
+ * emultempl/pe.em: Rename external arm interworking functions
+ to conform to BFD naming conventions. Add code to _after_open()
+ function to obtain a bfd for use by the interworking code.
+
+ * emultempl/armcoff.em: Rename external arm interworking functions
+ to conform to BFD naming conventions. Add new _after_open()
+ function to obtain a bfd for use by the interworking code.
+
+Sun Apr 19 19:23:09 1998 Richard Henderson <rth@cygnus.com>
+
+ * ldlang.c (lang_size_sections) [case lang_assignment_statement_enum]:
+ Update dot and the default memory section even when relaxing.
+
+Sat Apr 18 18:41:12 1998 Richard Henderson <rth@cygnus.com>
+
+ * ldlang.c (lang_one_common): Manipulate the section's cooked size
+ rather than its raw size.
+
+Tue Apr 7 13:35:29 1998 H.J. Lu <hjl@gnu.org>
+
+ * configure.in (TESTBFDLIB): New. Defined and substituted.
+ * Makefile.am (TESTBFDLIB): Changed to @TESTBFDLIB@.
+ * configure, Makefile.in: Rebuild.
+
+Mon Apr 6 15:33:39 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (ld.info): Invoke makeinfo with -I options directly
+ rather than relying on default rule. Don't depend upon
+ bfdsumm.texi.
+ (ld.dvi): Likewise.
+ (bfdsumm.texi): Remove target.
+ (CLEANFILES): Take bfdsumm.texi out of value.
+ * Makefile.in: Rebuild.
+
+Sun Apr 5 13:07:57 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/pe.sc: Use shell variables to avoid depending upon
+ how $ is handled when expanding a shell substitution.
+
+Fri Apr 3 00:56:50 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (MOSTLYCLEANFILES): Add ld.log and ld.sum.
+ (DISTCLEANFILES): Add site.exp and site.bak.
+ * Makefile.in: Rebuild.
+
+ * configure.in: Put the tdirs in a file and use AC_SUBST_FILE,
+ rather than in a shell variable and using AC_SUBST.
+ * Makefile.am (DISTCLEANFILES): Remove ldscripts. Add tdirs.
+ (distclean-local): New target.
+ * configure, Makefile.in: Rebuild.
+
+ * ld.texinfo: Completely rewrite linker script documentation.
+
+Mon Mar 30 12:47:33 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Set version to 2.9.1.
+ * configure: Rebuild.
+
+ * Branched binutils 2.9.
+
+Sat Mar 28 16:48:19 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (MOSTLYCLEANFILES): Remove tmpdir.
+ (mostlyclean-local): New target to remove tmpdir.
+ * Makefile.in: Rebuild.
+
+ Fix some gcc -Wall warnings:
+ * ldcref.c (output_cref): Add casts to avoid warnings.
+ * ldfile.c (ldfile_add_arch): Likewise.
+ * ldlang.c (lang_leave_overlay_section): Likewise.
+ * lexsup.c (OPTION_COUNT): Likewise.
+ (parse_args): Likewise.
+ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan):
+ Likewise.
+ * emultempl/sunos.em (gld${EMULATION_NAME}_search_dir): Likewise.
+ * ldlang.c (lang_check): Initialize variables to avoid warnings.
+ * ldwrite.c (build_link_order): Likewise.
+ * emultempl/sunos.em (gld${EMULATION_NAME}_find_so): Likewise.
+ * emultempl/armcoff.em (gld${EMULATION_NAME}_before_allocation):
+ Remove unused variables.
+
+ * Makefile.am (MOSTLYCLEANFILES): Correct name (was
+ MOSTCLEANFILES).
+ * Makefile.in: Rebuild.
+
+Fri Mar 27 16:39:25 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_before_allocation): Put
+ ARM code inside ifdef TARGET_IS_armpe.
+
+Wed Mar 25 11:34:13 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patch from H.J. Lu <hjl@gnu.org>:
+ * Makefile.am (LDDISTSTUFF): New variable.
+ (diststuff): New target.
+ * Makefile.in: Rebuild.
+
+ * scripttempl/pe.sc: Only include .idata\$[0-7] in .idata when
+ relocating.
+
+Tue Mar 24 15:59:29 1998 Nick Clifton <nickc@cygnus.com>
+
+ * scripttempl/pe.sc (.text): Add .glue_7 and .glue_7t sections to
+ hold Arm/Thumb stubs.
+
+ * emultempl/pe.em (gld_pe_before_allocation): Call
+ arm_process_before_allocation (for ARM/Thumb targets) in order to
+ gather interworking stb information.
+
+Mon Mar 23 18:54:15 1998 Joel Sherrill <joel@OARcorp.com>
+
+ * configure.tgt: (sh*-*-rtems*): Switched from ELF to COFF.
+
+Fri Mar 20 19:17:13 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * aclocal.m4, configure: Rebuild with libtool 1.2.
+
+Thu Mar 19 14:54:45 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * scripttempl/pe.sc: The Cygwin32 library uses a .data$nocopy
+ section to avoid copying certain data on fork. The linker used to
+ include this between __data_start__ and __data_end__, but that
+ breaks building the cygwin32 dll. The fix is to rename the
+ section ".data_cygwin_nocopy" and explictly include it after
+ __data_end__.
+
+Wed Mar 18 09:42:24 1998 Nick Clifton <nickc@cygnus.com>
+
+ * configure.tgt (targ_extra_emuls): Add thumb-pe target.
+
+Sun Mar 8 23:34:14 1998 Stan Cox <scox@equinox.cygnus.com>
+
+ * configure.tgt (sparclite*-*-elf): Added.
+
+Mon Mar 2 19:24:08 1998 Michael Meissner <meissner@cygnus.com>
+
+ * ldlang.c (lang_size_sections): If the default memory region is
+ *default*, see if there is a memory region that could be used.
+
+Thu Feb 26 17:09:53 1998 Michael Meissner <meissner@cygnus.com>
+
+ * scripttempl/elfd30v.sc: Add support for .eit_v section and put
+ it at 0xfffff020.
+ * emulparams/d30v{elf,_o,_e}.sh: Ditto.
+
+Mon Feb 23 17:46:51 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/pe.em (sort_sections): Permit the wildcard to include
+ a trailing '*' when sorting grouped sections.
+ * scripttempl/pe.sc: Include grouped sections using NAME\$*. Only
+ include them when relocating.
+
+Wed Feb 18 23:39:46 1998 Richard Henderson <rth@cygnus.com>
+
+ * Makefile.am (install-exec-local): Install properly when ln
+ fails or tooldir == prefix.
+
+Fri Feb 13 15:24:06 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Define.
+ * configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.
+
+Thu Feb 12 14:10:44 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/elf.sc: Align the _end symbol according to the ELF
+ format size. From Gordon W. Ross <gwr@mc.com>.
+
+ NetBSD patches from Gordon W. Ross <gwr@mc.com>:
+ * configure.host (alpha*-*-netbsd*): New host.
+ * configure.tgt (alpha*-*-netbsd*, powerpc-*-netbsd*): New
+ targets.
+
+ * lexsup.c (help): Update bug-gnu-utils address.
+ * ld.texinfo (Bug Reporting): Likewise.
+
+Tue Feb 10 18:05:56 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ldlang.c (lang_size_sections): Warn if some memory regions were
+ defined, but a loadable section is going into the default memory
+ region.
+
+Tue Feb 10 16:17:20 1998 H.J. Lu <hjl@gnu.org>
+
+ * ldlex.l (V_IDENTIFIER): Allow '.' as symbol prefix.
+
+Tue Feb 10 15:09:45 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (Makefile): Add target, for dependencies on
+ configure.host and configure.tgt.
+ * configure.host, configure.tgt: Change -linux* to -linux-gnu*.
+ * Makefile.in: Rebuild.
+
+Mon Feb 9 13:44:40 1998 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * scripttempl/elfd10v.sc (.stack): Move stack to 0x00..7FFE.
+
+ * emulparams/d10velf.sh (READONLY_START_ADDR): Read only section
+ moved to 0x00.....4.
+
+Sat Feb 7 15:41:26 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure, aclocal.m4: Rebuild with new libtool.
+
+Thu Feb 5 12:16:11 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/pe.sc: Remove ${RELOCATING-0} from all sections.
+ From Thomas de Lellis <tdel@wrs.com>.
+
+ * configure, Makefile.in, aclocal.m4: Rebuild with new libtool.
+
+Wed Feb 4 13:02:32 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (ld_new_LDADD): Remove @LEXLIB@.
+ * Makefile.in: Rebuild.
+
+Mon Feb 2 19:34:54 1998 Steve Haworth <steve@pm.cse.rmit.EDU.AU>
+
+ Add tms320c30 support:
+ * configure.tgt (tic30-*-*aout*, tic30-*-*coff*): New targets.
+ * emulparams/tic30aout.sh: New file.
+ * emulparams/tic30coff.sh: New file.
+ * scripttempl/tic30aout.sc: New file.
+ * scripttempl/tic30coff.sc: New file.
+ * Makefile.am (ALL_EMULATIONS): Add etic30aout.o and
+ etic30coff.o.
+ (etic30aout.c, etic30coff.c): New targets.
+ * Makefile.in: Rebuild.
+
+Mon Feb 2 14:10:59 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.host: Correct HOSTING_CRT0 in alpha*-*-linux* case to
+ accept either ld.so or ld-linux.so.
+
+Fri Jan 30 19:16:28 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * Makefile.am ({CC,CXX}_FOR_TARGET): Change program_transform_name
+ to transform.
+ * Makefile.in: Regenerate.
+
+Fri Jan 30 19:15:17 1998 Geoff Keating <geoffk@ozemail.com.au>
+
+ * scripttempl/elfppc.sc: Put .dynsbss in .sbss.
+
+Fri Jan 30 11:43:49 1998 H.J. Lu <hjl@gnu.ai.mit.edu>
+
+ * Makefile.am (eelf32bsmip.c, eelf32lsmip.c): New targets.
+ * Makefile.in: Rebuild.
+
+Thu Jan 29 16:04:21 1998 Mumit Khan <khan@xraylith.wisc.edu>
+
+ * ldfile.c (slash): Set to backslash if _WIN32 but not
+ __CYGWIN32__.
+ (ldfile_open_file_search): If __MSDOS__ or _WIN32, accept a
+ leading backslash or a leading x: as an absolute path.
+ (ldfile_find_command_file): Use slash rather than / when
+ generating name to try.
+ * lexsup.c (PATH_SEPARATOR): Define.
+ (set_default_dirlist): Use PATH_SEPARATOR rather than ':'.
+
+Wed Jan 28 14:06:30 1998 Richard Henderson <rth@cygnus.com>
+
+ * emulparams/elf64_sparc.sh (ELFSIZE): 64
+ (TEXT_START_ADDR): Round off, since SIZEOF_HEADERS is added later.
+ (DATA_PLT): Needed by v9 abi.
+
+Wed Jan 28 16:37:27 1998 J.J. van der Heijden <J.J.vanderHeijden@student.utwente.nl>
+
+ * configure.tgt (i[3456]86-*-mingw32*): New entry.
+
+Wed Jan 28 15:51:58 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * scripttempl/elf.sc: Only include linkonce sections in final
+ sections when relocating.
+
+Wed Jan 28 14:10:01 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ld.texinfo (Options): Add a brief description of the types of
+ information included in a link map.
+
+ * ld.texinfo (Options): Mention LDEMULATION in description of -m.
+ (Environment): Mention LDEMULATION.
+
+ * ld.texinfo (Options): Clarify --export-dynamic a bit.
+
+Thu Jan 22 16:07:23 1998 Richard Henderson <rth@cygnus.com>
+
+ * ldlex.l (<SCRIPT>{WILDCHAR}*): Take care for the comments this
+ pattern could match.
+
+Wed Jan 21 22:26:46 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * emultempl/pe.em (gld_${EMULATION_NAME}_set_symbols): When doing
+ a relocateable link, set the image base to 0, and don't define the
+ various symbols.
+ * emulparams/i386pe.sh (RELOCATEABLE_OUTPUT_FORMAT): Define.
+ * scripttempl/pe.sc: Swap the .data and .bss sections so that
+ .data comes first. If doing a relocateable link, use
+ RELOCATEABLE_OUTPUT_FORMAT if it is defined, and start the
+ sections at 0, and don't define any symbols.
+
+ * ldlang.c (lang_memory_default): Correct parenthisization of
+ expression.
+
+Wed Jan 21 21:20:32 1998 Manfred Hollstein <manfred@s-direktnet.de>
+
+ * emultempl/sunos.em: Don't include sys/types.h and sys/stat.h
+ here; they are included already via sysdep.h.
+
+Tue Jan 6 13:40:02 1998 Richard Henderson <rth@cygnus.com>
+
+ * scripttempl/i960.sc: Don't explicitly set .data and .bss start.
+
+Fri Jan 2 20:15:37 1998 Michael Meissner <meissner@cygnus.com>
+
+ * ldgram.y (attributes_opt): Pass region pointer to
+ lang_set_flags, not &region->flags.
+
+ * ldlang.c (lang_memory_default): New function to figure out a
+ default memory region for a section if it was not specified.
+ (lang_memory_region_lookup): Zero flags, not_flags field.
+ (lang_map{,_flags}): Print attribute flags in memory map.
+ (lang_size_sections): Call lang_memory_default to get default
+ memory region.
+ (lang_set_flags): Implement attribute flags for real. Take new
+ argument to give the flags we are to skip for this region.
+
+ * ldlang.h (memory_region_struct): Add not_flags field, make both
+ flags fields flagword type.
+ (lang_output_section_state): Make flags field flagword type.
+ (lang_set_flags): Update prototype to match new calling sequence.
+ (lang_memory_region_default): Add prototype.
+
+ * emulparams/d30v{_e,_o,elf}.sh ({TEXT,DATA,EMEM}_DEF_SECTION):
+ Define whether or not the region gets default sections, and if so,
+ what sections.
+
+ * scripttempl/elfd30v.sc (MEMORY): Set up which of the regions get
+ default sections.
+
+Thu Jan 1 22:58:04 1998 Michael Meissner <meissner@cygnus.com>
+
+ * scripttempl/elfd30v.sc (.eh_frame): Link into the data section.
+
+Thu Jan 1 18:04:51 1998 Jeffrey A Law (law@cygnus.com)
+
+ * scripttempl/h8300h.sc: Fix typo.
+ * scripttempl/h8300s.sc: Likewise.
+
+For older changes see ChangeLog-9197
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/contrib/binutils/ld/MAINTAINERS b/contrib/binutils/ld/MAINTAINERS
new file mode 100644
index 0000000..d59a3bd
--- /dev/null
+++ b/contrib/binutils/ld/MAINTAINERS
@@ -0,0 +1 @@
+See ../binutils/MAINTAINERS
diff --git a/contrib/binutils/ld/Makefile.am b/contrib/binutils/ld/Makefile.am
index 0abc9b5..1a72278 100644
--- a/contrib/binutils/ld/Makefile.am
+++ b/contrib/binutils/ld/Makefile.am
@@ -13,6 +13,9 @@ YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bis
YFLAGS = -d
LEX = `if [ -f ../flex/flex ]; then echo ../flex/flex; else echo @LEX@; fi`
+WARN_CFLAGS = @WARN_CFLAGS@
+AM_CFLAGS = $(WARN_CFLAGS)
+
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
@@ -101,50 +104,57 @@ ALL_EMULATIONS = \
eaixrs6.o \
ealpha.o \
earcelf.o \
- earmelf.o \
- earmelf_oabi.o \
- earmelf_linux.o \
- earmelf_linux26.o \
+ earm_epoc_pe.o \
earmaoutb.o \
earmaoutl.o \
earmcoff.o \
+ earmelf.o \
+ earmelf_linux.o \
+ earmelf_oabi.o \
earmnbsd.o \
earmpe.o \
- earm_epoc_pe.o \
eavr1200.o \
eavr23xx.o \
- eavr44x4.o \
eavr4433.o \
+ eavr44x4.o \
eavr85xx.o \
- eavrmega603.o \
eavrmega103.o \
eavrmega161.o \
+ eavrmega603.o \
ecoff_sparc.o \
+ ecrisaout.o \
+ ecriself.o \
+ ecrislinux.o \
ed10velf.o \
- ed30velf.o \
ed30v_e.o \
ed30v_o.o \
+ ed30velf.o \
edelta68.o \
eebmon29k.o \
- eelf32_sparc.o \
eelf32_i960.o \
+ eelf32_i860.o \
+ eelf32_sparc.o \
eelf32b4300.o \
eelf32bmip.o \
+ eelf32bmipn32.o \
+ eelf32btsmip.o \
eelf32ebmip.o \
eelf32elmip.o \
- eelf32bmipn32.o \
+ eelf32fr30.o \
eelf32i370.o \
eelf32l4300.o \
eelf32lmip.o \
eelf32lppc.o \
+ eelf32lppcsim.o \
+ eelf32mcore.o \
eelf32ppc.o \
eelf32ppclinux.o \
+ eelf32ppcsim.o \
eelf_i386.o \
eelf_i386_be.o \
+ eelf_i386_chaos.o \
egld960.o \
egld960coff.o \
- eelf32fr30.o \
- eelf32mcore.o \
eh8300.o \
eh8300h.o \
eh8300s.o \
@@ -155,6 +165,8 @@ ALL_EMULATIONS = \
eh8500s.o \
ehp300bsd.o \
ehp3hpux.o \
+ ehppaelf.o \
+ ehppalinux.o \
ei386aout.o \
ei386beos.o \
ei386bsd.o \
@@ -170,6 +182,10 @@ ALL_EMULATIONS = \
ei386pe.o \
ei386pe_posix.o \
elnk960.o \
+ em68hc11elf.o \
+ em68hc11elfb.o \
+ em68hc12elf.o \
+ em68hc12elfb.o \
em68k4knbsd.o \
em68kaout.o \
em68kaux.o \
@@ -189,10 +205,10 @@ ALL_EMULATIONS = \
emipslnews.o \
emipspe.o \
enews.o \
- epjelf.o \
- epjlelf.o \
ens32knbsd.o \
epc532macha.o \
+ epjelf.o \
+ epjlelf.o \
eppcmacos.o \
eppcnw.o \
eppcpe.o \
@@ -200,8 +216,10 @@ ALL_EMULATIONS = \
esa29200.o \
esh.o \
eshelf.o \
- eshlelf.o \
+ eshelf_linux.o \
+ eshlelf_linux.o \
eshl.o \
+ eshlelf.o \
eshpe.o \
esparcaout.o \
esparclinux.o \
@@ -212,6 +230,7 @@ ALL_EMULATIONS = \
esun4.o \
etic30aout.o \
etic30coff.o \
+ etic54xcoff.o \
etic80coff.o \
evanilla.o \
evax.o \
@@ -221,13 +240,16 @@ ALL_EMULATIONS = \
ez8002.o
ALL_64_EMULATIONS = \
+ eelf64_ia64.o \
+ eelf_x86_64.o \
eelf64_sparc.o \
eelf64alpha.o \
- eelf64bmip.o
+ eelf64bmip.o \
+ eelf64hppa.o
ALL_EMUL_EXTRA_OFILES = \
- pe-dll.o \
- deffilep.o
+ deffilep.o \
+ pe-dll.o
CFILES = ldctor.c ldemul.c ldexp.c ldfile.c ldlang.c \
ldmain.c ldmisc.c ldver.c ldwrite.c lexsup.c \
@@ -279,7 +301,7 @@ stringify.sed: ${srcdir}/emultempl/$(STRINGIFY)
# These all start with e so 'make clean' can find them.
-GENSCRIPTS = $(SHELL) $(srcdir)/genscripts.sh ${srcdir} ${libdir} @host@ @target@ @target_alias@ "@EMULATION_LIBPATH@" "@NATIVE_LIB_DIRS@"
+GENSCRIPTS = $(SHELL) $(srcdir)/genscripts.sh ${srcdir} ${libdir} ${exec_prefix} @host@ @target@ @target_alias@ "@EMULATION_LIBPATH@" "@NATIVE_LIB_DIRS@"
GEN_DEPENDS = $(srcdir)/genscripts.sh stringify.sed
@TDIRS@
@@ -299,17 +321,16 @@ earcelf.c: $(srcdir)/emulparams/arcelf.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} arcelf "$(tdir_arcelf)"
earmelf.c: $(srcdir)/emulparams/armelf.sh \
- $(srcdir)/emultempl/armelf.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} armelf "$(tdir_armelf)"
earmelf_oabi.c: $(srcdir)/emulparams/armelf_oabi.sh \
$(srcdir)/emultempl/armelf_oabi.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} armelf_oabi "$(tdir_armelf)"
earmelf_linux.c: $(srcdir)/emulparams/armelf_linux.sh \
- $(srcdir)/emultempl/armelf.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} armelf_linux "$(tdir_armelf_linux)"
-earmelf_linux26.c: $(srcdir)/emulparams/armelf_linux26.sh \
- $(srcdir)/emultempl/armelf.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
- ${GENSCRIPTS} armelf_linux26 "$(tdir_armelf_linux26)"
earmaoutb.c: $(srcdir)/emulparams/armaoutb.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/armaout.sc ${GEN_DEPENDS}
${GENSCRIPTS} armaoutb "$(tdir_armaoutb)"
@@ -363,6 +384,15 @@ eavrmega161.c: $(srcdir)/emulparams/avrmega161.sh \
ecoff_sparc.c: $(srcdir)/emulparams/coff_sparc.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/sparccoff.sc ${GEN_DEPENDS}
${GENSCRIPTS} coff_sparc "$(tdir_coff_sparc)"
+ecrisaout.c: $(srcdir)/emulparams/crisaout.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/crisaout.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} crisaout "$(tdir_cris)"
+ecriself.c: $(srcdir)/emulparams/criself.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} criself "$(tdir_cris)"
+ecrislinux.c: $(srcdir)/emulparams/crislinux.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} crislinux "$(tdir_cris)"
ed10velf.c: $(srcdir)/emulparams/d10velf.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elfd10v.sc ${GEN_DEPENDS}
${GENSCRIPTS} d10velf "$(tdir_d10v)"
@@ -393,6 +423,9 @@ em32relf.c: $(srcdir)/emulparams/m32relf.sh \
eelf32_sparc.c: $(srcdir)/emulparams/elf32_sparc.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32_sparc "$(tdir_elf32_sparc)"
+eelf32_i860.c: $(srcdir)/emulparams/elf32_i860.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32_i860 "$(tdir_elf32_i860)"
eelf32_i960.c: $(srcdir)/emulparams/elf32_i960.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32_i960 "$(tdir_elf32_i960)"
@@ -405,6 +438,9 @@ eelf32bmip.c: $(srcdir)/emulparams/elf32bmip.sh \
eelf32bsmip.c: $(srcdir)/emulparams/elf32bsmip.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32bsmip "$(tdir_elf32bsmip)"
+eelf32btsmip.c: $(srcdir)/emulparams/elf32btsmip.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32btsmip "$(tdir_elf32btsmip)"
eelf32ebmip.c: $(srcdir)/emulparams/elf32ebmip.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32ebmip "$(tdir_elf32ebmip)"
@@ -421,16 +457,22 @@ eelf32lmip.c: $(srcdir)/emulparams/elf32lmip.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32lmip "$(tdir_elf32lmip)"
eelf32lppc.c: $(srcdir)/emulparams/elf32lppc.sh \
- $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfppc.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32lppc "$(tdir_elf32lppc)"
+eelf32lppcsim.c: $(srcdir)/emulparams/elf32lppcsim.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32lppcsim "$(tdir_elf32lppcsim)"
eelf32lsmip.c: $(srcdir)/emulparams/elf32lsmip.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32lsmip "$(tdir_elf32lsmip)"
eelf32ppc.c: $(srcdir)/emulparams/elf32ppc.sh \
- $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfppc.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32ppc "$(tdir_elf32ppc)"
+eelf32ppcsim.c: $(srcdir)/emulparams/elf32ppcsim.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32ppcsim "$(tdir_elf32ppcsim)"
eelf32ppclinux.c: $(srcdir)/emulparams/elf32ppclinux.sh \
- $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfppc.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32ppclinux "$(tdir_elf32ppclinux)"
eelf32i370.c: $(srcdir)/emulparams/elf32i370.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfi370.sc ${GEN_DEPENDS}
@@ -438,6 +480,12 @@ eelf32i370.c: $(srcdir)/emulparams/elf32i370.sh \
eelf64alpha.c: $(srcdir)/emulparams/elf64alpha.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64alpha "$(tdir_elf64alpha)"
+eelf64hppa.c: $(srcdir)/emulparams/elf64hppa.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf64hppa "$(tdir_elf64hppa)"
+eelf64_ia64.c: $(srcdir)/emulparams/elf64_ia64.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf64_ia64 "$(tdir_elf64_ia64)"
eelf64_sparc.c: $(srcdir)/emulparams/elf64_sparc.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64_sparc "$(tdir_elf64_sparc)"
@@ -447,9 +495,15 @@ eelf64bmip.c: $(srcdir)/emulparams/elf64bmip.sh \
eelf_i386.c: $(srcdir)/emulparams/elf_i386.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf_i386 "$(tdir_elf_i386)"
+eelf_x86_64.c: $(srcdir)/emulparams/elf_x86_64.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_x86_64 "$(tdir_elf_x86_64)"
eelf_i386_be.c: $(srcdir)/emulparams/elf_i386_be.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf_i386_be "$(tdir_elf_i386_be)"
+eelf_i386_chaos.c: $(srcdir)/emulparams/elf_i386_chaos.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_i386_chaos "$(tdir_elf_i386_chaos)"
egld960.c: $(srcdir)/emulparams/gld960.sh \
$(srcdir)/emultempl/gld960.em $(srcdir)/scripttempl/i960.sc ${GEN_DEPENDS}
${GENSCRIPTS} gld960 "$(tdir_gld960)"
@@ -486,6 +540,14 @@ ehp300bsd.c: $(srcdir)/emulparams/hp300bsd.sh \
ehp3hpux.c: $(srcdir)/emulparams/hp3hpux.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} hp3hpux "$(tdir_hp3hpux)"
+ehppaelf.c: $(srcdir)/emulparams/hppaelf.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/hppaelf.em \
+ $(srcdir)/scripttempl/hppaelf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} hppaelf "$(tdir_hppaelf)"
+ehppalinux.c: $(srcdir)/emulparams/hppalinux.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/hppaelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} hppalinux "$(tdir_hppalinux)"
ei386aout.c: $(srcdir)/emulparams/i386aout.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} i386aout "$(tdir_i386aout)"
@@ -531,6 +593,18 @@ ei386pe_posix.c: $(srcdir)/emulparams/i386pe_posix.sh \
elnk960.c: $(srcdir)/emulparams/lnk960.sh \
$(srcdir)/emultempl/lnk960.em $(srcdir)/scripttempl/i960.sc ${GEN_DEPENDS}
${GENSCRIPTS} lnk960 "$(tdir_lnk960)"
+em68hc11elf.c: $(srcdir)/emulparams/m68hc11elf.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elfm68hc11.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} m68hc11elf "$(tdir_m68hc11)"
+em68hc11elfb.c: $(srcdir)/emulparams/m68hc11elfb.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elfm68hc11.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} m68hc11elfb "$(tdir_m68hc11b)"
+em68hc12elf.c: $(srcdir)/emulparams/m68hc12elf.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elfm68hc12.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} m68hc12elf "$(tdir_m68hc12)"
+em68hc12elfb.c: $(srcdir)/emulparams/m68hc12elfb.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elfm68hc12.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} m68hc12elfb "$(tdir_m68hc12b)"
em68k4knbsd.c: $(srcdir)/emulparams/m68k4knbsd.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} m68k4knbsd "$(tdir_m68k4knbsd)"
@@ -541,10 +615,11 @@ em68kaux.c: $(srcdir)/emulparams/m68kaux.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/m68kaux.sc ${GEN_DEPENDS}
${GENSCRIPTS} m68kaux "$(tdir_m68kaux)"
em68kcoff.c: $(srcdir)/emulparams/m68kcoff.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/m68kcoff.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/m68kcoff.em $(srcdir)/scripttempl/m68kcoff.sc ${GEN_DEPENDS}
${GENSCRIPTS} m68kcoff "$(tdir_m68kcoff)"
em68kelf.c: $(srcdir)/emulparams/m68kelf.sh \
- $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/m68kelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} m68kelf "$(tdir_m68kelf)"
em68klinux.c: $(srcdir)/emulparams/m68klinux.sh \
$(srcdir)/emultempl/linux.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
@@ -627,6 +702,12 @@ esh.c: $(srcdir)/emulparams/sh.sh \
eshelf.c: $(srcdir)/emulparams/shelf.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} shelf "$(tdir_shelf)"
+eshelf_linux.c: $(srcdir)/emulparams/shelf_linux.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} shelf_linux "$(tdir_shelf_linux)"
+eshlelf_linux.c: $(srcdir)/emulparams/shlelf_linux.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} shlelf_linux "$(tdir_shlelf_linux)"
eshlelf.c: $(srcdir)/emulparams/shlelf.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} shlelf "$(tdir_shlelf)"
@@ -663,6 +744,9 @@ etic30aout.c: $(srcdir)/emulparams/tic30aout.sh \
etic30coff.c: $(srcdir)/emulparams/tic30coff.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/tic30coff.sc ${GEN_DEPENDS}
${GENSCRIPTS} tic30coff "$(tdir_tic30coff)"
+etic54xcoff.c: $(srcdir)/emulparams/tic54xcoff.sh \
+ $(srcdir)/emultempl/ticoff.em $(srcdir)/scripttempl/tic54xcoff.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} tic54xcoff "$(tdir_tic54xcoff)"
etic80coff.c: $(srcdir)/emulparams/tic80coff.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/tic80coff.sc ${GEN_DEPENDS}
${GENSCRIPTS} tic80coff "$(tdir_tic80coff)"
@@ -688,6 +772,9 @@ ez8002.c: $(srcdir)/emulparams/z8002.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/z8000.sc ${GEN_DEPENDS}
${GENSCRIPTS} z8002 "$(tdir_z8002)"
+# We need this for automake to use YLWRAP.
+EXTRA_ld_new_SOURCES = deffilep.y
+
ld_new_SOURCES = ldgram.y ldlex.l lexsup.c ldlang.c mri.c ldctor.c ldmain.c \
ldwrite.c ldexp.c ldemul.c ldver.c ldmisc.c ldfile.c ldcref.c
ld_new_DEPENDENCIES = $(EMULATION_OFILES) $(EMUL_EXTRA_OFILES) $(BFDLIB) $(LIBIBERTY) $(INTLDEPS)
@@ -807,7 +894,7 @@ MOSTLYCLEANFILES = $(STAGESTUFF) ld1$(EXEEXT) ld2$(EXEEXT) ld3$(EXEEXT) \
ldemul-list.h crtbegin.o crtend.o ld.log ld.sum
mostlyclean-local:
-rm -rf tmpdir
-CLEANFILES = dep.sed DEP DEP1 DEP2
+CLEANFILES = dep.sed DEP DEPA DEP1 DEP2
.PHONY: install-exec-local install-data-local
@@ -846,8 +933,13 @@ distclean-local:
DEP: dep.sed $(CFILES) $(HFILES) $(GENERATED_CFILES) $(GENERATED_HFILES) config.h
rm -f DEP1
$(MAKE) MKDEP="$(MKDEP)" DEP1
- sed -f dep.sed < DEP1 > $@
- echo '# IF YOU PUT ANYTHING HERE IT WILL GO AWAY' >> $@
+ 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
@@ -887,7 +979,7 @@ ldctor.o: ldctor.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
ldgram.h ldmain.h ldctor.h
ldemul.o: ldemul.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h ld.h $(INCDIR)/bin-bugs.h \
- ldemul.h ldmisc.h ldexp.h ldlang.h ldfile.h ldmain.h \
+ ldmisc.h ldexp.h ldlang.h ldfile.h ldemul.h ldmain.h \
ldemul-list.h
ldexp.o: ldexp.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
@@ -900,29 +992,30 @@ ldfile.o: ldfile.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
ldlang.o: ldlang.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
$(INCDIR)/obstack.h $(INCDIR)/bfdlink.h ld.h $(INCDIR)/bin-bugs.h \
- ldmain.h ldgram.h ldexp.h ldlang.h ldemul.h ldlex.h \
- ldmisc.h ldctor.h ldfile.h $(INCDIR)/fnmatch.h $(INCDIR)/demangle.h
+ ldmain.h ldgram.h ldexp.h ldlang.h ldlex.h ldmisc.h \
+ ldctor.h ldfile.h ldemul.h $(INCDIR)/fnmatch.h $(INCDIR)/demangle.h
ldmain.o: ldmain.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
- $(INCDIR)/progress.h $(INCDIR)/bfdlink.h ld.h $(INCDIR)/bin-bugs.h \
- ldmain.h ldmisc.h ldwrite.h ldgram.h ldexp.h ldlang.h \
- ldemul.h ldlex.h ldfile.h ldctor.h
+ $(INCDIR)/progress.h $(INCDIR)/bfdlink.h $(INCDIR)/filenames.h \
+ ld.h $(INCDIR)/bin-bugs.h ldmain.h ldmisc.h ldwrite.h \
+ ldgram.h ldexp.h ldlang.h ldlex.h ldfile.h ldemul.h \
+ ldctor.h
ldmisc.o: ldmisc.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
$(INCDIR)/demangle.h ld.h $(INCDIR)/bin-bugs.h ldmisc.h \
ldexp.h ldlang.h ldgram.h ldlex.h ldmain.h ldfile.h
ldver.o: ldver.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h ld.h $(INCDIR)/bin-bugs.h \
- ldver.h ldemul.h ldmain.h
+ ldver.h ldexp.h ldlang.h ldfile.h ldemul.h ldmain.h
ldwrite.o: ldwrite.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
$(INCDIR)/libiberty.h ld.h $(INCDIR)/bin-bugs.h ldexp.h \
ldlang.h ldwrite.h ldmisc.h ldgram.h ldmain.h
lexsup.o: lexsup.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
- $(INCDIR)/bfdlink.h ld.h $(INCDIR)/bin-bugs.h ldmain.h \
- ldmisc.h ldexp.h ldlang.h ldgram.h ldlex.h ldfile.h \
- ldver.h ldemul.h
+ $(INCDIR)/getopt.h $(INCDIR)/bfdlink.h ld.h $(INCDIR)/bin-bugs.h \
+ ldmain.h ldmisc.h ldexp.h ldlang.h ldgram.h ldlex.h \
+ ldfile.h ldver.h ldemul.h $(INCDIR)/demangle.h
mri.o: mri.c ../bfd/bfd.h $(INCDIR)/ansidecl.h sysdep.h \
config.h $(INCDIR)/fopen-same.h ld.h $(INCDIR)/bin-bugs.h \
ldexp.h ldlang.h ldmisc.h mri.h ldgram.h $(INCDIR)/libiberty.h
@@ -933,13 +1026,13 @@ ldcref.o: ldcref.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
pe-dll.o: pe-dll.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
$(INCDIR)/libiberty.h ld.h $(INCDIR)/bin-bugs.h ldexp.h \
- ldlang.h ldwrite.h ldmisc.h ldgram.h ldmain.h ldemul.h \
- $(INCDIR)/coff/internal.h ../bfd/libcoff.h deffile.h \
- pe-dll.h
+ ldlang.h ldwrite.h ldmisc.h ldgram.h ldmain.h ldfile.h \
+ ldemul.h $(INCDIR)/coff/internal.h ../bfd/libcoff.h \
+ deffile.h pe-dll.h
ldgram.o: ldgram.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
ld.h $(INCDIR)/bin-bugs.h ldexp.h ldver.h ldlang.h \
- ldemul.h ldfile.h ldmisc.h ldmain.h mri.h ldctor.h \
+ ldfile.h ldemul.h ldmisc.h ldmain.h mri.h ldctor.h \
ldlex.h
ldlex.o: ldlex.c ../bfd/bfd.h sysdep.h config.h $(INCDIR)/fopen-same.h \
ld.h $(INCDIR)/bin-bugs.h ldgram.h ldmisc.h ldexp.h \
diff --git a/contrib/binutils/ld/Makefile.in b/contrib/binutils/ld/Makefile.in
index 0fa39ae..862cad6 100644
--- a/contrib/binutils/ld/Makefile.in
+++ b/contrib/binutils/ld/Makefile.in
@@ -68,11 +68,14 @@ CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CC_FOR_BUILD = @CC_FOR_BUILD@
+CXXCPP = @CXXCPP@
DATADIRNAME = @DATADIRNAME@
DLLTOOL = @DLLTOOL@
EMULATION_LIBPATH = @EMULATION_LIBPATH@
EXEEXT = @EXEEXT@
EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
+GCJ = @GCJ@
+GCJFLAGS = @GCJFLAGS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GT_NO = @GT_NO@
@@ -90,11 +93,13 @@ MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
NATIVE_LIB_DIRS = @NATIVE_LIB_DIRS@
OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
POFILES = @POFILES@
POSUB = @POSUB@
RANLIB = @RANLIB@
STRINGIFY = @STRINGIFY@
+STRIP = @STRIP@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@@ -112,6 +117,9 @@ YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bis
YFLAGS = -d
LEX = `if [ -f ../flex/flex ]; then echo ../flex/flex; else echo @LEX@; fi`
+WARN_CFLAGS = @WARN_CFLAGS@
+AM_CFLAGS = $(WARN_CFLAGS)
+
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
@@ -204,50 +212,57 @@ ALL_EMULATIONS = \
eaixrs6.o \
ealpha.o \
earcelf.o \
- earmelf.o \
- earmelf_oabi.o \
- earmelf_linux.o \
- earmelf_linux26.o \
+ earm_epoc_pe.o \
earmaoutb.o \
earmaoutl.o \
earmcoff.o \
+ earmelf.o \
+ earmelf_linux.o \
+ earmelf_oabi.o \
earmnbsd.o \
earmpe.o \
- earm_epoc_pe.o \
eavr1200.o \
eavr23xx.o \
- eavr44x4.o \
eavr4433.o \
+ eavr44x4.o \
eavr85xx.o \
- eavrmega603.o \
eavrmega103.o \
eavrmega161.o \
+ eavrmega603.o \
ecoff_sparc.o \
+ ecrisaout.o \
+ ecriself.o \
+ ecrislinux.o \
ed10velf.o \
- ed30velf.o \
ed30v_e.o \
ed30v_o.o \
+ ed30velf.o \
edelta68.o \
eebmon29k.o \
- eelf32_sparc.o \
eelf32_i960.o \
+ eelf32_i860.o \
+ eelf32_sparc.o \
eelf32b4300.o \
eelf32bmip.o \
+ eelf32bmipn32.o \
+ eelf32btsmip.o \
eelf32ebmip.o \
eelf32elmip.o \
- eelf32bmipn32.o \
+ eelf32fr30.o \
eelf32i370.o \
eelf32l4300.o \
eelf32lmip.o \
eelf32lppc.o \
+ eelf32lppcsim.o \
+ eelf32mcore.o \
eelf32ppc.o \
eelf32ppclinux.o \
+ eelf32ppcsim.o \
eelf_i386.o \
eelf_i386_be.o \
+ eelf_i386_chaos.o \
egld960.o \
egld960coff.o \
- eelf32fr30.o \
- eelf32mcore.o \
eh8300.o \
eh8300h.o \
eh8300s.o \
@@ -258,6 +273,8 @@ ALL_EMULATIONS = \
eh8500s.o \
ehp300bsd.o \
ehp3hpux.o \
+ ehppaelf.o \
+ ehppalinux.o \
ei386aout.o \
ei386beos.o \
ei386bsd.o \
@@ -273,6 +290,10 @@ ALL_EMULATIONS = \
ei386pe.o \
ei386pe_posix.o \
elnk960.o \
+ em68hc11elf.o \
+ em68hc11elfb.o \
+ em68hc12elf.o \
+ em68hc12elfb.o \
em68k4knbsd.o \
em68kaout.o \
em68kaux.o \
@@ -292,10 +313,10 @@ ALL_EMULATIONS = \
emipslnews.o \
emipspe.o \
enews.o \
- epjelf.o \
- epjlelf.o \
ens32knbsd.o \
epc532macha.o \
+ epjelf.o \
+ epjlelf.o \
eppcmacos.o \
eppcnw.o \
eppcpe.o \
@@ -303,8 +324,10 @@ ALL_EMULATIONS = \
esa29200.o \
esh.o \
eshelf.o \
- eshlelf.o \
+ eshelf_linux.o \
+ eshlelf_linux.o \
eshl.o \
+ eshlelf.o \
eshpe.o \
esparcaout.o \
esparclinux.o \
@@ -315,6 +338,7 @@ ALL_EMULATIONS = \
esun4.o \
etic30aout.o \
etic30coff.o \
+ etic54xcoff.o \
etic80coff.o \
evanilla.o \
evax.o \
@@ -325,14 +349,17 @@ ALL_EMULATIONS = \
ALL_64_EMULATIONS = \
+ eelf64_ia64.o \
+ eelf_x86_64.o \
eelf64_sparc.o \
eelf64alpha.o \
- eelf64bmip.o
+ eelf64bmip.o \
+ eelf64hppa.o
ALL_EMUL_EXTRA_OFILES = \
- pe-dll.o \
- deffilep.o
+ deffilep.o \
+ pe-dll.o
CFILES = ldctor.c ldemul.c ldexp.c ldfile.c ldlang.c \
@@ -363,9 +390,12 @@ POTFILES = $(CFILES) $(HFILES) $(EMULATION_FILES)
# These all start with e so 'make clean' can find them.
-GENSCRIPTS = $(SHELL) $(srcdir)/genscripts.sh ${srcdir} ${libdir} @host@ @target@ @target_alias@ "@EMULATION_LIBPATH@" "@NATIVE_LIB_DIRS@"
+GENSCRIPTS = $(SHELL) $(srcdir)/genscripts.sh ${srcdir} ${libdir} ${exec_prefix} @host@ @target@ @target_alias@ "@EMULATION_LIBPATH@" "@NATIVE_LIB_DIRS@"
GEN_DEPENDS = $(srcdir)/genscripts.sh stringify.sed
+# We need this for automake to use YLWRAP.
+EXTRA_ld_new_SOURCES = deffilep.y
+
ld_new_SOURCES = ldgram.y ldlex.l lexsup.c ldlang.c mri.c ldctor.c ldmain.c \
ldwrite.c ldexp.c ldemul.c ldver.c ldmisc.c ldfile.c ldcref.c
@@ -380,7 +410,7 @@ MAINTAINERCLEANFILES = ldver.texi
MOSTLYCLEANFILES = $(STAGESTUFF) ld1$(EXEEXT) ld2$(EXEEXT) ld3$(EXEEXT) \
ldemul-list.h crtbegin.o crtend.o ld.log ld.sum
-CLEANFILES = dep.sed DEP DEP1 DEP2
+CLEANFILES = dep.sed DEP DEPA DEP1 DEP2
# Stuff that should be included in a distribution. The diststuff
# target is run by the taz target in ../Makefile.in.
@@ -399,11 +429,14 @@ DEFS = @DEFS@ -I. -I$(srcdir) -I.
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
-ld_new_OBJECTS = ldgram.o ldlex.o lexsup.o ldlang.o mri.o ldctor.o \
-ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o
+ld_new_OBJECTS = ldgram.$(OBJEXT) ldlex.$(OBJEXT) lexsup.$(OBJEXT) \
+ldlang.$(OBJEXT) mri.$(OBJEXT) ldctor.$(OBJEXT) ldmain.$(OBJEXT) \
+ldwrite.$(OBJEXT) ldexp.$(OBJEXT) ldemul.$(OBJEXT) ldver.$(OBJEXT) \
+ldmisc.$(OBJEXT) ldfile.$(OBJEXT) ldcref.$(OBJEXT)
ld_new_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)
@@ -420,19 +453,19 @@ MANS = $(man_MANS)
NROFF = nroff
DIST_COMMON = README ./stamp-h.in ChangeLog Makefile.am Makefile.in \
NEWS TODO acinclude.m4 aclocal.m4 config.in configure configure.in \
-ldgram.c ldlex.c
+deffilep.c ldgram.c ldlex.c
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP_ENV = --best
-SOURCES = $(ld_new_SOURCES)
+SOURCES = $(ld_new_SOURCES) $(EXTRA_ld_new_SOURCES)
OBJECTS = $(ld_new_OBJECTS)
all: all-redirect
.SUFFIXES:
-.SUFFIXES: .S .c .dvi .info .l .lo .o .ps .s .texi .texinfo .txi .y
+.SUFFIXES: .S .c .dvi .info .l .lo .o .obj .ps .s .texi .texinfo .txi .y
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile
@@ -485,6 +518,11 @@ 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 $<
@@ -493,6 +531,7 @@ maintainer-clean-noinstPROGRAMS:
mostlyclean-compile:
-rm -f *.o core *.core
+ -rm -f *.$(OBJEXT)
clean-compile:
@@ -526,10 +565,8 @@ ld-new$(EXEEXT): $(ld_new_OBJECTS) $(ld_new_DEPENDENCIES)
.l.c:
$(LEX) $(AM_LFLAGS) $(LFLAGS) $< && mv $(LEX_OUTPUT_ROOT).c $@
.y.c:
- $(YACC) $(AM_YFLAGS) $(YFLAGS) $< && mv y.tab.c $*.c
- if test -f y.tab.h; then \
- if cmp -s y.tab.h $*.h; then rm -f y.tab.h; else mv y.tab.h $*.h; fi; \
- else :; fi
+ $(SHELL) $(YLWRAP) "$(YACC)" $< y.tab.c $*.c y.tab.h $*.h -- $(AM_YFLAGS) $(YFLAGS)
+deffilep.h: deffilep.c
ldgram.h: ldgram.c
@@ -900,7 +937,7 @@ distclean-generic:
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
- -test -z "ldlexlldgramhldgramc$(MAINTAINERCLEANFILES)" || rm -f ldlexl ldgramh ldgramc $(MAINTAINERCLEANFILES)
+ -test -z "ldlexldeffilephdeffilepcldgramhldgramc$(MAINTAINERCLEANFILES)" || rm -f ldlexl deffileph deffilepc ldgramh ldgramc $(MAINTAINERCLEANFILES)
mostlyclean-am: mostlyclean-hdr mostlyclean-noinstPROGRAMS \
mostlyclean-compile mostlyclean-libtool \
mostlyclean-aminfo mostlyclean-tags mostlyclean-generic \
@@ -998,17 +1035,16 @@ earcelf.c: $(srcdir)/emulparams/arcelf.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} arcelf "$(tdir_arcelf)"
earmelf.c: $(srcdir)/emulparams/armelf.sh \
- $(srcdir)/emultempl/armelf.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} armelf "$(tdir_armelf)"
earmelf_oabi.c: $(srcdir)/emulparams/armelf_oabi.sh \
$(srcdir)/emultempl/armelf_oabi.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} armelf_oabi "$(tdir_armelf)"
earmelf_linux.c: $(srcdir)/emulparams/armelf_linux.sh \
- $(srcdir)/emultempl/armelf.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/armelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} armelf_linux "$(tdir_armelf_linux)"
-earmelf_linux26.c: $(srcdir)/emulparams/armelf_linux26.sh \
- $(srcdir)/emultempl/armelf.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
- ${GENSCRIPTS} armelf_linux26 "$(tdir_armelf_linux26)"
earmaoutb.c: $(srcdir)/emulparams/armaoutb.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/armaout.sc ${GEN_DEPENDS}
${GENSCRIPTS} armaoutb "$(tdir_armaoutb)"
@@ -1062,6 +1098,15 @@ eavrmega161.c: $(srcdir)/emulparams/avrmega161.sh \
ecoff_sparc.c: $(srcdir)/emulparams/coff_sparc.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/sparccoff.sc ${GEN_DEPENDS}
${GENSCRIPTS} coff_sparc "$(tdir_coff_sparc)"
+ecrisaout.c: $(srcdir)/emulparams/crisaout.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/crisaout.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} crisaout "$(tdir_cris)"
+ecriself.c: $(srcdir)/emulparams/criself.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} criself "$(tdir_cris)"
+ecrislinux.c: $(srcdir)/emulparams/crislinux.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} crislinux "$(tdir_cris)"
ed10velf.c: $(srcdir)/emulparams/d10velf.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elfd10v.sc ${GEN_DEPENDS}
${GENSCRIPTS} d10velf "$(tdir_d10v)"
@@ -1092,6 +1137,9 @@ em32relf.c: $(srcdir)/emulparams/m32relf.sh \
eelf32_sparc.c: $(srcdir)/emulparams/elf32_sparc.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32_sparc "$(tdir_elf32_sparc)"
+eelf32_i860.c: $(srcdir)/emulparams/elf32_i860.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32_i860 "$(tdir_elf32_i860)"
eelf32_i960.c: $(srcdir)/emulparams/elf32_i960.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32_i960 "$(tdir_elf32_i960)"
@@ -1104,6 +1152,9 @@ eelf32bmip.c: $(srcdir)/emulparams/elf32bmip.sh \
eelf32bsmip.c: $(srcdir)/emulparams/elf32bsmip.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32bsmip "$(tdir_elf32bsmip)"
+eelf32btsmip.c: $(srcdir)/emulparams/elf32btsmip.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32btsmip "$(tdir_elf32btsmip)"
eelf32ebmip.c: $(srcdir)/emulparams/elf32ebmip.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32ebmip "$(tdir_elf32ebmip)"
@@ -1120,16 +1171,22 @@ eelf32lmip.c: $(srcdir)/emulparams/elf32lmip.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32lmip "$(tdir_elf32lmip)"
eelf32lppc.c: $(srcdir)/emulparams/elf32lppc.sh \
- $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfppc.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32lppc "$(tdir_elf32lppc)"
+eelf32lppcsim.c: $(srcdir)/emulparams/elf32lppcsim.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32lppcsim "$(tdir_elf32lppcsim)"
eelf32lsmip.c: $(srcdir)/emulparams/elf32lsmip.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32lsmip "$(tdir_elf32lsmip)"
eelf32ppc.c: $(srcdir)/emulparams/elf32ppc.sh \
- $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfppc.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32ppc "$(tdir_elf32ppc)"
+eelf32ppcsim.c: $(srcdir)/emulparams/elf32ppcsim.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf32ppcsim "$(tdir_elf32ppcsim)"
eelf32ppclinux.c: $(srcdir)/emulparams/elf32ppclinux.sh \
- $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfppc.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf32ppclinux "$(tdir_elf32ppclinux)"
eelf32i370.c: $(srcdir)/emulparams/elf32i370.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfi370.sc ${GEN_DEPENDS}
@@ -1137,6 +1194,12 @@ eelf32i370.c: $(srcdir)/emulparams/elf32i370.sh \
eelf64alpha.c: $(srcdir)/emulparams/elf64alpha.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64alpha "$(tdir_elf64alpha)"
+eelf64hppa.c: $(srcdir)/emulparams/elf64hppa.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf64hppa "$(tdir_elf64hppa)"
+eelf64_ia64.c: $(srcdir)/emulparams/elf64_ia64.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf64_ia64 "$(tdir_elf64_ia64)"
eelf64_sparc.c: $(srcdir)/emulparams/elf64_sparc.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf64_sparc "$(tdir_elf64_sparc)"
@@ -1146,9 +1209,15 @@ eelf64bmip.c: $(srcdir)/emulparams/elf64bmip.sh \
eelf_i386.c: $(srcdir)/emulparams/elf_i386.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf_i386 "$(tdir_elf_i386)"
+eelf_x86_64.c: $(srcdir)/emulparams/elf_x86_64.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_x86_64 "$(tdir_elf_x86_64)"
eelf_i386_be.c: $(srcdir)/emulparams/elf_i386_be.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} elf_i386_be "$(tdir_elf_i386_be)"
+eelf_i386_chaos.c: $(srcdir)/emulparams/elf_i386_chaos.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} elf_i386_chaos "$(tdir_elf_i386_chaos)"
egld960.c: $(srcdir)/emulparams/gld960.sh \
$(srcdir)/emultempl/gld960.em $(srcdir)/scripttempl/i960.sc ${GEN_DEPENDS}
${GENSCRIPTS} gld960 "$(tdir_gld960)"
@@ -1185,6 +1254,14 @@ ehp300bsd.c: $(srcdir)/emulparams/hp300bsd.sh \
ehp3hpux.c: $(srcdir)/emulparams/hp3hpux.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} hp3hpux "$(tdir_hp3hpux)"
+ehppaelf.c: $(srcdir)/emulparams/hppaelf.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/hppaelf.em \
+ $(srcdir)/scripttempl/hppaelf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} hppaelf "$(tdir_hppaelf)"
+ehppalinux.c: $(srcdir)/emulparams/hppalinux.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/hppaelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} hppalinux "$(tdir_hppalinux)"
ei386aout.c: $(srcdir)/emulparams/i386aout.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} i386aout "$(tdir_i386aout)"
@@ -1230,6 +1307,18 @@ ei386pe_posix.c: $(srcdir)/emulparams/i386pe_posix.sh \
elnk960.c: $(srcdir)/emulparams/lnk960.sh \
$(srcdir)/emultempl/lnk960.em $(srcdir)/scripttempl/i960.sc ${GEN_DEPENDS}
${GENSCRIPTS} lnk960 "$(tdir_lnk960)"
+em68hc11elf.c: $(srcdir)/emulparams/m68hc11elf.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elfm68hc11.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} m68hc11elf "$(tdir_m68hc11)"
+em68hc11elfb.c: $(srcdir)/emulparams/m68hc11elfb.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elfm68hc11.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} m68hc11elfb "$(tdir_m68hc11b)"
+em68hc12elf.c: $(srcdir)/emulparams/m68hc12elf.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elfm68hc12.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} m68hc12elf "$(tdir_m68hc12)"
+em68hc12elfb.c: $(srcdir)/emulparams/m68hc12elfb.sh \
+ $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elfm68hc12.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} m68hc12elfb "$(tdir_m68hc12b)"
em68k4knbsd.c: $(srcdir)/emulparams/m68k4knbsd.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
${GENSCRIPTS} m68k4knbsd "$(tdir_m68k4knbsd)"
@@ -1240,10 +1329,11 @@ em68kaux.c: $(srcdir)/emulparams/m68kaux.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/m68kaux.sc ${GEN_DEPENDS}
${GENSCRIPTS} m68kaux "$(tdir_m68kaux)"
em68kcoff.c: $(srcdir)/emulparams/m68kcoff.sh \
- $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/m68kcoff.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/m68kcoff.em $(srcdir)/scripttempl/m68kcoff.sc ${GEN_DEPENDS}
${GENSCRIPTS} m68kcoff "$(tdir_m68kcoff)"
em68kelf.c: $(srcdir)/emulparams/m68kelf.sh \
- $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/m68kelf.em \
+ $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} m68kelf "$(tdir_m68kelf)"
em68klinux.c: $(srcdir)/emulparams/m68klinux.sh \
$(srcdir)/emultempl/linux.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
@@ -1326,6 +1416,12 @@ esh.c: $(srcdir)/emulparams/sh.sh \
eshelf.c: $(srcdir)/emulparams/shelf.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} shelf "$(tdir_shelf)"
+eshelf_linux.c: $(srcdir)/emulparams/shelf_linux.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} shelf_linux "$(tdir_shelf_linux)"
+eshlelf_linux.c: $(srcdir)/emulparams/shlelf_linux.sh \
+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} shlelf_linux "$(tdir_shlelf_linux)"
eshlelf.c: $(srcdir)/emulparams/shlelf.sh \
$(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
${GENSCRIPTS} shlelf "$(tdir_shlelf)"
@@ -1362,6 +1458,9 @@ etic30aout.c: $(srcdir)/emulparams/tic30aout.sh \
etic30coff.c: $(srcdir)/emulparams/tic30coff.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/tic30coff.sc ${GEN_DEPENDS}
${GENSCRIPTS} tic30coff "$(tdir_tic30coff)"
+etic54xcoff.c: $(srcdir)/emulparams/tic54xcoff.sh \
+ $(srcdir)/emultempl/ticoff.em $(srcdir)/scripttempl/tic54xcoff.sc ${GEN_DEPENDS}
+ ${GENSCRIPTS} tic54xcoff "$(tdir_tic54xcoff)"
etic80coff.c: $(srcdir)/emulparams/tic80coff.sh \
$(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/tic80coff.sc ${GEN_DEPENDS}
${GENSCRIPTS} tic80coff "$(tdir_tic80coff)"
@@ -1525,8 +1624,13 @@ distclean-local:
DEP: dep.sed $(CFILES) $(HFILES) $(GENERATED_CFILES) $(GENERATED_HFILES) config.h
rm -f DEP1
$(MAKE) MKDEP="$(MKDEP)" DEP1
- sed -f dep.sed < DEP1 > $@
- echo '# IF YOU PUT ANYTHING HERE IT WILL GO AWAY' >> $@
+ 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
@@ -1566,7 +1670,7 @@ ldctor.o: ldctor.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
ldgram.h ldmain.h ldctor.h
ldemul.o: ldemul.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h ld.h $(INCDIR)/bin-bugs.h \
- ldemul.h ldmisc.h ldexp.h ldlang.h ldfile.h ldmain.h \
+ ldmisc.h ldexp.h ldlang.h ldfile.h ldemul.h ldmain.h \
ldemul-list.h
ldexp.o: ldexp.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
@@ -1579,29 +1683,30 @@ ldfile.o: ldfile.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
ldlang.o: ldlang.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
$(INCDIR)/obstack.h $(INCDIR)/bfdlink.h ld.h $(INCDIR)/bin-bugs.h \
- ldmain.h ldgram.h ldexp.h ldlang.h ldemul.h ldlex.h \
- ldmisc.h ldctor.h ldfile.h $(INCDIR)/fnmatch.h $(INCDIR)/demangle.h
+ ldmain.h ldgram.h ldexp.h ldlang.h ldlex.h ldmisc.h \
+ ldctor.h ldfile.h ldemul.h $(INCDIR)/fnmatch.h $(INCDIR)/demangle.h
ldmain.o: ldmain.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
- $(INCDIR)/progress.h $(INCDIR)/bfdlink.h ld.h $(INCDIR)/bin-bugs.h \
- ldmain.h ldmisc.h ldwrite.h ldgram.h ldexp.h ldlang.h \
- ldemul.h ldlex.h ldfile.h ldctor.h
+ $(INCDIR)/progress.h $(INCDIR)/bfdlink.h $(INCDIR)/filenames.h \
+ ld.h $(INCDIR)/bin-bugs.h ldmain.h ldmisc.h ldwrite.h \
+ ldgram.h ldexp.h ldlang.h ldlex.h ldfile.h ldemul.h \
+ ldctor.h
ldmisc.o: ldmisc.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
$(INCDIR)/demangle.h ld.h $(INCDIR)/bin-bugs.h ldmisc.h \
ldexp.h ldlang.h ldgram.h ldlex.h ldmain.h ldfile.h
ldver.o: ldver.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h ld.h $(INCDIR)/bin-bugs.h \
- ldver.h ldemul.h ldmain.h
+ ldver.h ldexp.h ldlang.h ldfile.h ldemul.h ldmain.h
ldwrite.o: ldwrite.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
$(INCDIR)/libiberty.h ld.h $(INCDIR)/bin-bugs.h ldexp.h \
ldlang.h ldwrite.h ldmisc.h ldgram.h ldmain.h
lexsup.o: lexsup.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/libiberty.h \
- $(INCDIR)/bfdlink.h ld.h $(INCDIR)/bin-bugs.h ldmain.h \
- ldmisc.h ldexp.h ldlang.h ldgram.h ldlex.h ldfile.h \
- ldver.h ldemul.h
+ $(INCDIR)/getopt.h $(INCDIR)/bfdlink.h ld.h $(INCDIR)/bin-bugs.h \
+ ldmain.h ldmisc.h ldexp.h ldlang.h ldgram.h ldlex.h \
+ ldfile.h ldver.h ldemul.h $(INCDIR)/demangle.h
mri.o: mri.c ../bfd/bfd.h $(INCDIR)/ansidecl.h sysdep.h \
config.h $(INCDIR)/fopen-same.h ld.h $(INCDIR)/bin-bugs.h \
ldexp.h ldlang.h ldmisc.h mri.h ldgram.h $(INCDIR)/libiberty.h
@@ -1612,13 +1717,13 @@ ldcref.o: ldcref.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
pe-dll.o: pe-dll.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
$(INCDIR)/libiberty.h ld.h $(INCDIR)/bin-bugs.h ldexp.h \
- ldlang.h ldwrite.h ldmisc.h ldgram.h ldmain.h ldemul.h \
- $(INCDIR)/coff/internal.h ../bfd/libcoff.h deffile.h \
- pe-dll.h
+ ldlang.h ldwrite.h ldmisc.h ldgram.h ldmain.h ldfile.h \
+ ldemul.h $(INCDIR)/coff/internal.h ../bfd/libcoff.h \
+ deffile.h pe-dll.h
ldgram.o: ldgram.c ../bfd/bfd.h $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/fopen-same.h $(INCDIR)/bfdlink.h \
ld.h $(INCDIR)/bin-bugs.h ldexp.h ldver.h ldlang.h \
- ldemul.h ldfile.h ldmisc.h ldmain.h mri.h ldctor.h \
+ ldfile.h ldemul.h ldmisc.h ldmain.h mri.h ldctor.h \
ldlex.h
ldlex.o: ldlex.c ../bfd/bfd.h sysdep.h config.h $(INCDIR)/fopen-same.h \
ld.h $(INCDIR)/bin-bugs.h ldgram.h ldmisc.h ldexp.h \
diff --git a/contrib/binutils/ld/NEWS b/contrib/binutils/ld/NEWS
index 9506201..f1e7ece 100644
--- a/contrib/binutils/ld/NEWS
+++ b/contrib/binutils/ld/NEWS
@@ -1,5 +1,31 @@
-*- text -*-
+* Support for AMD x86-64 architecture, by Jan Hubicka, SuSE Labs.
+
+* Support added for eliminating duplicate DWARF2 debug information by
+ having the compiler generate the information in sections called
+ .gnu.linkonce.wi.XXXX where XXXX is a checksum for the contents. The
+ linker then merges these sections together into the normal .debug_info
+ section.
+
+* The native ELF linker now searches the directories in DT_RUNPATH or
+ DT_RPATH of a shared library for shared libraries needed by it.
+
+* TI C54x support, by Timothy Wall.
+
+* Added command line switch --section-start to set the start address of any
+ specified section.
+
+* Added ability to emit full relocation information in linked executables,
+ enabled by --emit-relocs. Some post-linkage optimization tools need
+ this information in order to be able to correctly identify and perform
+ symbol relative addressing in the event of changes in section contents
+ (instructions being added or deleted, extending data sections, etc.)
+
+* Support for i860, by Jason Eckhardt (preliminary, alpha quality).
+
+* Support for CRIS (Axis Communications ETRAX series).
+
Changes in version 2.10:
* Added AT> to the linker script language to allow load-time allocation of
@@ -7,8 +33,8 @@ Changes in version 2.10:
* Added garbage collection of unused sections, enabled by --gc-sections.
It does require a bit of backend support; currently implemented are
- avr-elf, d10v-elf, fr30-elf, i386-elf, m32r-elf, m68k-elf, mcore-elf,
- mips-elf, mn10300-elf, ppc-elf, sh-elf, sparc-elf, and v850-elf.
+ arm-elf, avr-elf, d10v-elf, fr30-elf, i386-elf, m32r-elf, m68k-elf,
+ mcore-elf, mips-elf, mn10300-elf, ppc-elf, sh-elf, sparc-elf, and v850-elf.
Others will ignore the option.
* Added SORT to the linker script language to permit sorting sections by file
diff --git a/contrib/binutils/ld/acinclude.m4 b/contrib/binutils/ld/acinclude.m4
index 71b09b9..403aa0e 100644
--- a/contrib/binutils/ld/acinclude.m4
+++ b/contrib/binutils/ld/acinclude.m4
@@ -1 +1,16 @@
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)
+])
diff --git a/contrib/binutils/ld/aclocal.m4 b/contrib/binutils/ld/aclocal.m4
index 8bebfa0..b468950 100644
--- a/contrib/binutils/ld/aclocal.m4
+++ b/contrib/binutils/ld/aclocal.m4
@@ -12,6 +12,21 @@ 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)
+])
+
# 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.
@@ -104,415 +119,6 @@ else
fi
AC_SUBST($1)])
-
-# serial 40 AC_PROG_LIBTOOL
-AC_DEFUN(AC_PROG_LIBTOOL,
-[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
-
-# Save cache, so that ltconfig can load it
-AC_CACHE_SAVE
-
-# Actually configure libtool. ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
-$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
-|| AC_MSG_ERROR([libtool configure failed])
-
-# Reload cache, that may have been modified by ltconfig
-AC_CACHE_LOAD
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-# Redirect the config.log output again, so that the ltconfig log is not
-# clobbered by the next message.
-exec 5>>./config.log
-])
-
-AC_DEFUN(AC_LIBTOOL_SETUP,
-[AC_PREREQ(2.13)dnl
-AC_REQUIRE([AC_ENABLE_SHARED])dnl
-AC_REQUIRE([AC_ENABLE_STATIC])dnl
-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([AC_PROG_RANLIB])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_LD])dnl
-AC_REQUIRE([AC_PROG_NM])dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-dnl
-
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
-esac
-
-# 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 "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
-test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
-ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
-[libtool_flags="$libtool_flags --enable-dlopen"])
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[libtool_flags="$libtool_flags --enable-win32-dll"])
-AC_ARG_ENABLE(libtool-lock,
- [ --disable-libtool-lock avoid locking (might break parallel builds)])
-test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
-test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case "$lt_target" in
-*-*-irix6*)
- # Find out which ABI we are using.
- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- case "`/usr/bin/file conftest.o`" in
- *32-bit*)
- LD="${LD-ld} -32"
- ;;
- *N32*)
- LD="${LD-ld} -n32"
- ;;
- *64-bit*)
- LD="${LD-ld} -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"
- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
- [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
- 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
- ;;
-
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[*-*-cygwin* | *-*-mingw*)
- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
- AC_CHECK_TOOL(AS, as, false)
- AC_CHECK_TOOL(OBJDUMP, objdump, false)
- ;;
-])
-esac
-])
-
-# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
-AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
-
-# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
-AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
-
-# AC_ENABLE_SHARED - implement the --enable-shared flag
-# Usage: AC_ENABLE_SHARED[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_SHARED, [dnl
-define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(shared,
-changequote(<<, >>)dnl
-<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
-])
-
-# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
-AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_SHARED(no)])
-
-# AC_ENABLE_STATIC - implement the --enable-static flag
-# Usage: AC_ENABLE_STATIC[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_STATIC, [dnl
-define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(static,
-changequote(<<, >>)dnl
-<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
-])
-
-# AC_DISABLE_STATIC - set the default static flag to --disable-static
-AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_STATIC(no)])
-
-
-# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
-# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
-define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(fast-install,
-changequote(<<, >>)dnl
-<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
-])
-
-# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
-AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_FAST_INSTALL(no)])
-
-# AC_PROG_LD - find the path to the GNU or non-GNU linker
-AC_DEFUN(AC_PROG_LD,
-[AC_ARG_WITH(gnu-ld,
-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-ac_prog=ld
-if test "$ac_cv_prog_gcc" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by GCC])
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
- case "$ac_prog" in
- # Accept absolute paths.
-changequote(,)dnl
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
-changequote([,])dnl
- # 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
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(ac_cv_path_LD,
-[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
- ac_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 "$ac_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
- ac_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$ac_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT($LD)
-else
- AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_PROG_LD_GNU
-])
-
-AC_DEFUN(AC_PROG_LD_GNU,
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- ac_cv_prog_gnu_ld=yes
-else
- ac_cv_prog_gnu_ld=no
-fi])
-])
-
-# AC_PROG_NM - find the path to a BSD-compatible name lister
-AC_DEFUN(AC_PROG_NM,
-[AC_MSG_CHECKING([for BSD-compatible nm])
-AC_CACHE_VAL(ac_cv_path_NM,
-[if test -n "$NM"; then
- # Let the user override the test.
- ac_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=.
- if test -f $ac_dir/nm || test -f $ac_dir/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
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -B"
- break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -p"
- break
- else
- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/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 "$ac_cv_path_NM" && ac_cv_path_NM=nm
-fi])
-NM="$ac_cv_path_NM"
-AC_MSG_RESULT([$NM])
-])
-
-# AC_CHECK_LIBM - check for math library
-AC_DEFUN(AC_CHECK_LIBM,
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case "$lt_target" in
-*-*-beos* | *-*-cygwin*)
- # These system don't have libm
- ;;
-*-ncr-sysv4.3*)
- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
- AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
- ;;
-*)
- AC_CHECK_LIB(m, main, LIBM="-lm")
- ;;
-esac
-])
-
-# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl convenience library, adds --enable-ltdl-convenience to
-# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
-# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
-# to be `${top_builddir}/libltdl'. Make sure you start DIR with
-# '${top_builddir}/' (note the single quotes!) if your package is not
-# flat, and, if you're not using automake, define top_builddir as
-# appropriate in the Makefiles.
-AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- case "$enable_ltdl_convenience" in
- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
- "") enable_ltdl_convenience=yes
- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
- esac
- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
-])
-
-# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl installable library, and adds --enable-ltdl-install to
-# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
-# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
-# to be `${top_builddir}/libltdl'. Make sure you start DIR with
-# '${top_builddir}/' (note the single quotes!) if your package is not
-# flat, and, if you're not using automake, define top_builddir as
-# appropriate in the Makefiles.
-# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
-AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- AC_CHECK_LIB(ltdl, main,
- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
- [if test x"$enable_ltdl_install" = xno; then
- AC_MSG_WARN([libltdl not installed, but installation disabled])
- else
- enable_ltdl_install=yes
- fi
- ])
- if test x"$enable_ltdl_install" = x"yes"; then
- ac_configure_args="$ac_configure_args --enable-ltdl-install"
- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
- else
- ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
- LIBLTDL="-lltdl"
- INCLTDL=
- fi
-])
-
-dnl old names
-AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
-AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
-AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
-
-dnl This is just to silence aclocal about the macro not being used
-ifelse([AC_DISABLE_FAST_INSTALL])dnl
-
# Like AC_CONFIG_HEADER, but automatically create stamp file.
AC_DEFUN(AM_CONFIG_HEADER,
@@ -536,351 +142,6 @@ for am_file in <<$1>>; do
done<<>>dnl>>)
changequote([,]))])
-# This file is derived from `gettext.m4'. The difference is that the
-# included macros assume Cygnus-style source and build trees.
-
-# Macro to add for using GNU gettext.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
-#
-# 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.
-
-# serial 3
-
-AC_DEFUN(CY_WITH_NLS,
- [AC_MSG_CHECKING([whether NLS is requested])
- dnl Default is enabled NLS
- AC_ARG_ENABLE(nls,
- [ --disable-nls do not use Native Language Support],
- USE_NLS=$enableval, USE_NLS=yes)
- AC_MSG_RESULT($USE_NLS)
- AC_SUBST(USE_NLS)
-
- USE_INCLUDED_LIBINTL=no
-
- dnl If we use NLS figure out what method
- if test "$USE_NLS" = "yes"; then
- AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if NLS is requested])
- AC_MSG_CHECKING([whether included gettext is requested])
- AC_ARG_WITH(included-gettext,
- [ --with-included-gettext use the GNU gettext library included here],
- nls_cv_force_use_gnu_gettext=$withval,
- nls_cv_force_use_gnu_gettext=no)
- AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
-
- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
- dnl User does not insist on using GNU NLS library. Figure out what
- dnl to use. If gettext or catgets are available (in this order) we
- dnl use this. Else we have to fall back to GNU NLS library.
- dnl catgets is only used if permitted by option --with-catgets.
- nls_cv_header_intl=
- nls_cv_header_libgt=
- CATOBJEXT=NONE
-
- AC_CHECK_HEADER(libintl.h,
- [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
- [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
- gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
-
- if test "$gt_cv_func_gettext_libc" != "yes"; then
- AC_CHECK_LIB(intl, bindtextdomain,
- [AC_CACHE_CHECK([for gettext in libintl],
- gt_cv_func_gettext_libintl,
- [AC_TRY_LINK([], [return (int) gettext ("")],
- gt_cv_func_gettext_libintl=yes,
- gt_cv_func_gettext_libintl=no)])])
- fi
-
- if test "$gt_cv_func_gettext_libc" = "yes" \
- || test "$gt_cv_func_gettext_libintl" = "yes"; then
- AC_DEFINE(HAVE_GETTEXT, 1,
- [Define as 1 if you have gettext and don't want to use GNU gettext.])
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
- if test "$MSGFMT" != "no"; then
- AC_CHECK_FUNCS(dcgettext)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
- AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
- return _nl_msg_cat_cntr],
- [CATOBJEXT=.gmo
- DATADIRNAME=share],
- [CATOBJEXT=.mo
- DATADIRNAME=lib])
- INSTOBJEXT=.mo
- fi
- fi
- ])
-
- dnl In the standard gettext, we would now check for catgets.
- dnl However, we never want to use catgets for our releases.
-
- if test "$CATOBJEXT" = "NONE"; then
- dnl Neither gettext nor catgets in included in the C library.
- dnl Fall back on GNU gettext library.
- nls_cv_use_gnu_gettext=yes
- fi
- fi
-
- if test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Mark actions used to generate GNU NLS library.
- INTLOBJS="\$(GETTOBJS)"
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
- AC_SUBST(MSGFMT)
- 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
-
- dnl Test whether we really found GNU xgettext.
- if test "$XGETTEXT" != ":"; then
- dnl If it is no GNU xgettext we define it as : so that the
- dnl Makefiles still can work.
- if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
- : ;
- else
- AC_MSG_RESULT(
- [found xgettext programs is not GNU xgettext; ignore it])
- 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
-
- dnl These rules are solely for the distribution goal. While doing this
- dnl we only have to keep exactly one list of the available catalogs
- dnl in configure.in.
- for lang in $ALL_LINGUAS; do
- GMOFILES="$GMOFILES $lang.gmo"
- POFILES="$POFILES $lang.po"
- done
-
- dnl Make all variables we use known to autoconf.
- AC_SUBST(USE_INCLUDED_LIBINTL)
- AC_SUBST(CATALOGS)
- AC_SUBST(CATOBJEXT)
- AC_SUBST(DATADIRNAME)
- AC_SUBST(GMOFILES)
- AC_SUBST(INSTOBJEXT)
- AC_SUBST(INTLDEPS)
- AC_SUBST(INTLLIBS)
- AC_SUBST(INTLOBJS)
- AC_SUBST(POFILES)
- AC_SUBST(POSUB)
- ])
-
-AC_DEFUN(CY_GNU_GETTEXT,
- [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_PROG_RANLIB])dnl
- AC_REQUIRE([AC_ISC_POSIX])dnl
- AC_REQUIRE([AC_HEADER_STDC])dnl
- AC_REQUIRE([AC_C_CONST])dnl
- AC_REQUIRE([AC_C_INLINE])dnl
- AC_REQUIRE([AC_TYPE_OFF_T])dnl
- AC_REQUIRE([AC_TYPE_SIZE_T])dnl
- AC_REQUIRE([AC_FUNC_ALLOCA])dnl
- AC_REQUIRE([AC_FUNC_MMAP])dnl
-
- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
-unistd.h values.h sys/param.h])
- AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
-__argz_count __argz_stringify __argz_next])
-
- if test "${ac_cv_func_stpcpy+set}" != "set"; then
- AC_CHECK_FUNCS(stpcpy)
- fi
- if test "${ac_cv_func_stpcpy}" = "yes"; then
- AC_DEFINE(HAVE_STPCPY, 1, [Define if you have the stpcpy function])
- fi
-
- AM_LC_MESSAGES
- CY_WITH_NLS
-
- if test "x$CATOBJEXT" != "x"; then
- if test "x$ALL_LINGUAS" = "x"; then
- LINGUAS=
- else
- AC_MSG_CHECKING(for catalogs to be installed)
- NEW_LINGUAS=
- for lang in ${LINGUAS=$ALL_LINGUAS}; do
- case "$ALL_LINGUAS" in
- *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
- esac
- done
- LINGUAS=$NEW_LINGUAS
- AC_MSG_RESULT($LINGUAS)
- fi
-
- dnl Construct list of names of catalog files to be constructed.
- if test -n "$LINGUAS"; then
- for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
- fi
- fi
-
- dnl The reference to <locale.h> in the installed <libintl.h> file
- dnl must be resolved because we cannot expect the users of this
- dnl to define HAVE_LOCALE_H.
- if test $ac_cv_header_locale_h = yes; then
- INCLUDE_LOCALE_H="#include <locale.h>"
- else
- INCLUDE_LOCALE_H="\
-/* The system does not provide the header <locale.h>. Take care yourself. */"
- fi
- AC_SUBST(INCLUDE_LOCALE_H)
-
- dnl Determine which catalog format we have (if any is needed)
- dnl For now we know about two different formats:
- dnl Linux libc-5 and the normal X/Open format
- if test -f $srcdir/po2tbl.sed.in; then
- if test "$CATOBJEXT" = ".cat"; then
- AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
-
- dnl Transform the SED scripts while copying because some dumb SEDs
- dnl cannot handle comments.
- sed -e '/^#/d' $srcdir/$msgformat-msg.sed > po2msg.sed
- fi
- dnl po2tbl.sed is always needed.
- sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
- $srcdir/po2tbl.sed.in > po2tbl.sed
- fi
-
- dnl In the intl/Makefile.in we have a special dependency which makes
- dnl only sense for gettext. We comment this out for non-gettext
- dnl packages.
- if test "$PACKAGE" = "gettext"; then
- GT_NO="#NO#"
- GT_YES=
- else
- GT_NO=
- GT_YES="#YES#"
- fi
- AC_SUBST(GT_NO)
- AC_SUBST(GT_YES)
-
- MKINSTALLDIRS="\$(srcdir)/../../mkinstalldirs"
- AC_SUBST(MKINSTALLDIRS)
-
- dnl *** For now the libtool support in intl/Makefile is not for real.
- l=
- AC_SUBST(l)
-
- dnl Generate list of files to be processed by xgettext which will
- dnl be included in po/Makefile. But only do this if the po directory
- dnl exists in srcdir.
- if test -d $srcdir/po; 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
- ])
-
-# Search path for a program which passes the given test.
-# Ulrich Drepper <drepper@cygnus.com>, 1996.
-#
-# 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.
-
-# serial 1
-
-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN(AM_PATH_PROG_WITH_TEST,
-[# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL(ac_cv_path_$1,
-[case "[$]$1" in
- /*)
- ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in ifelse([$5], , $PATH, [$5]); do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if [$3]; then
- ac_cv_path_$1="$ac_dir/$ac_word"
- break
- fi
- fi
- done
- IFS="$ac_save_ifs"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
- ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test -n "[$]$1"; then
- AC_MSG_RESULT([$]$1)
-else
- AC_MSG_RESULT(no)
-fi
-AC_SUBST($1)dnl
-])
-
-# Check whether LC_MESSAGES is available in <locale.h>.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
-#
-# 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.
-
-# serial 1
-
-AC_DEFUN(AM_LC_MESSAGES,
- [if test $ac_cv_header_locale_h = yes; then
- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
- [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
- am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
- if test $am_cv_val_LC_MESSAGES = yes; then
- AC_DEFINE(HAVE_LC_MESSAGES, 1,
- [Define if your locale.h file contains LC_MESSAGES.])
- fi
- fi])
-
dnl AM_PROG_LEX
dnl Look for flex, lex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT
diff --git a/contrib/binutils/ld/configdoc.texi b/contrib/binutils/ld/configdoc.texi
index 3a36727..8d1acad 100644
--- a/contrib/binutils/ld/configdoc.texi
+++ b/contrib/binutils/ld/configdoc.texi
@@ -5,6 +5,7 @@
@c 2. Specific target machines
@set H8300
@set I960
+@set TICOFF
@c 3. Properties of this configuration
@clear SingleFormat
diff --git a/contrib/binutils/ld/configure b/contrib/binutils/ld/configure
index 92d00d6..ee0e296 100755
--- a/contrib/binutils/ld/configure
+++ b/contrib/binutils/ld/configure
@@ -22,10 +22,14 @@ ac_help="$ac_help
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-64-bit-bfd 64-bit support (on hosts with narrower word sizes)"
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"
@@ -49,6 +53,7 @@ program_suffix=NONE
program_transform_name=s,x,x,
silent=
site=
+sitefile=
srcdir=
target=NONE
verbose=
@@ -163,6 +168,7 @@ Configuration:
--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
@@ -333,6 +339,11 @@ EOF
-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=*)
@@ -498,12 +509,16 @@ fi
srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
# Prefer explicitly selected file to automatically selected ones.
-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"
+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
@@ -541,6 +556,68 @@ 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 <<EOF
+#line 566 "configure"
+#include "confdefs.h"
+
+int main() {
+
+#ifndef __CYGWIN__
+#define __CYGWIN__ __CYGWIN32__
+#endif
+return __CYGWIN__;
+; return 0; }
+EOF
+if { (eval echo configure:577: \"$ac_compile\") 1>&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 <<EOF
+#line 599 "configure"
+#include "confdefs.h"
+
+int main() {
+return __MINGW32__;
+; return 0; }
+EOF
+if { (eval echo configure:606: \"$ac_compile\") 1>&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=
@@ -590,7 +667,7 @@ 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:594: checking host system type" >&5
+echo "configure:671: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -611,7 +688,7 @@ 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:615: checking target system type" >&5
+echo "configure:692: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -629,7 +706,7 @@ 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:633: checking build system type" >&5
+echo "configure:710: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -651,6 +728,249 @@ test "$host_alias" != "$target_alias" &&
NONENONEs,x,x, &&
program_prefix=${target_alias}-
+# 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:735: 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:765: 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:816: 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:848: 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 859 "configure"
+#include "confdefs.h"
+
+main(){return(0);}
+EOF
+if { (eval echo configure:864: \"$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:890: 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:895: 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 <<EOF
+#ifdef __GNUC__
+ yes;
+#endif
+EOF
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:904: \"$ac_try\") 1>&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:923: 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
+
+echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
+echo "configure:955: checking for POSIXized ISC" >&5
+if test -d /etc/conf/kconfig.d &&
+ grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
+then
+ echo "$ac_t""yes" 1>&6
+ ISC=yes # If later tests want to check for ISC.
+ cat >> confdefs.h <<\EOF
+#define _POSIX_SOURCE 1
+EOF
+
+ if test "$GCC" = yes; then
+ CC="$CC -posix"
+ else
+ CC="$CC -Xp"
+ fi
+else
+ echo "$ac_t""no" 1>&6
+ ISC=
+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
@@ -664,7 +984,7 @@ test "$host_alias" != "$target_alias" &&
# 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:668: checking for a BSD compatible install" >&5
+echo "configure:988: 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
@@ -717,7 +1037,7 @@ 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:721: checking whether build environment is sane" >&5
+echo "configure:1041: checking whether build environment is sane" >&5
# Just in case
sleep 1
echo timestamp > conftestfile
@@ -774,7 +1094,7 @@ test "$program_suffix" != NONE &&
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:778: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1098: 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
@@ -803,7 +1123,7 @@ fi
PACKAGE=ld
-VERSION=2.10.1
+VERSION=2.11
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; }
@@ -820,7 +1140,7 @@ EOF
missing_dir=`cd $ac_aux_dir && pwd`
echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
-echo "configure:824: checking for working aclocal" >&5
+echo "configure:1144: 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.
@@ -833,7 +1153,7 @@ else
fi
echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
-echo "configure:837: checking for working autoconf" >&5
+echo "configure:1157: 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.
@@ -846,7 +1166,7 @@ else
fi
echo $ac_n "checking for working automake""... $ac_c" 1>&6
-echo "configure:850: checking for working automake" >&5
+echo "configure:1170: 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.
@@ -859,7 +1179,7 @@ else
fi
echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
-echo "configure:863: checking for working autoheader" >&5
+echo "configure:1183: 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.
@@ -872,7 +1192,7 @@ else
fi
echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
-echo "configure:876: checking for working makeinfo" >&5
+echo "configure:1196: 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.
@@ -955,258 +1275,6 @@ else
enable_fast_install=yes
fi
-# 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:962: 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
-
-# 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:992: 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:1022: 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:1073: 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:1105: 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 1116 "configure"
-#include "confdefs.h"
-
-main(){return(0);}
-EOF
-if { (eval echo configure:1121: \"$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:1147: 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:1152: 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 <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1161: \"$ac_try\") 1>&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:1180: 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"
@@ -1219,8 +1287,14 @@ ac_prog=ld
if test "$ac_cv_prog_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:1223: checking for ld used by GCC" >&5
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
+echo "configure:1291: 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]:[\\/]*)
@@ -1243,10 +1317,10 @@ echo "configure:1223: checking for ld used by GCC" >&5
esac
elif test "$with_gnu_ld" = yes; then
echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1247: checking for GNU ld" >&5
+echo "configure:1321: checking for GNU ld" >&5
else
echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1250: checking for non-GNU ld" >&5
+echo "configure:1324: checking for non-GNU ld" >&5
fi
if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1281,7 +1355,7 @@ else
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:1285: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1359: checking if the linker ($LD) is GNU ld" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1294,10 +1368,23 @@ fi
fi
echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
+with_gnu_ld=$ac_cv_prog_gnu_ld
+echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
+echo "configure:1376: 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:1301: checking for BSD-compatible nm" >&5
+echo "configure:1388: checking for BSD-compatible nm" >&5
if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1308,18 +1395,20 @@ 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=.
- if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
+ 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
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -B"
+ # 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
+ ac_cv_path_NM="$tmp_nm -B"
break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -p"
+ elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+ ac_cv_path_NM="$tmp_nm -p"
break
else
- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
+ ac_cv_path_NM=${ac_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
@@ -1333,7 +1422,7 @@ NM="$ac_cv_path_NM"
echo "$ac_t""$NM" 1>&6
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1337: checking whether ln -s works" >&5
+echo "configure:1426: 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
@@ -1353,11 +1442,483 @@ else
echo "$ac_t""no" 1>&6
fi
+echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
+echo "configure:1447: 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
+aix4*)
+ 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'
+ ;;
+
+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*)
+ # TODO: Does this work for hpux-11 too?
+ lt_cv_deplibs_check_method='file_magic (s0-90-90-9|PA-RISC0-9.0-9) shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+
+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* | 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 :
+ else
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ fi
+ ;;
+
+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
+ ;;
+
+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:1590: 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:1596: \"$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:1616: 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:1626: \"$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:1659: 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 <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+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:1721: 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 <<EOF 1>&2
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
+*** 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:1792: 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:1824: 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:1859: 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:1891: 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"
@@ -1377,13 +1938,24 @@ 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 "$lt_target" in
+case "$host" in
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 1386 "configure"' > conftest.$ac_ext
- if { (eval echo configure:1387: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ echo '#line 1958 "configure"' > conftest.$ac_ext
+ if { (eval echo configure:1959: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
case "`/usr/bin/file conftest.o`" in
*32-bit*)
LD="${LD-ld} -32"
@@ -1404,19 +1976,27 @@ case "$lt_target" in
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -belf"
echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:1408: checking whether the C compiler needs -belf" >&5
+echo "configure:1980: 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
- cat > conftest.$ac_ext <<EOF
-#line 1413 "configure"
+
+ 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 1993 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:1420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
lt_cv_cc_needs_belf=yes
else
@@ -1426,6 +2006,13 @@ else
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
@@ -1489,12 +2076,14 @@ rm -f confcache
# Actually configure libtool. ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
+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 $ac_aux_dir/ltmain.sh $lt_target \
+$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
@@ -1508,7 +2097,7 @@ fi
# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
+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'
@@ -1518,6 +2107,12 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
exec 5>>./config.log
+
+
+
+
+
+
# Check whether --enable-targets or --disable-targets was given.
if test "${enable_targets+set}" = set; then
enableval="$enable_targets"
@@ -1540,6 +2135,29 @@ else
want64=false
fi
+build_warnings="-W -Wall"
+# 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
+
+
@@ -1556,7 +2174,7 @@ 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:1560: checking for $ac_word" >&5
+echo "configure:2178: 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
@@ -1586,7 +2204,7 @@ 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:1590: checking for $ac_word" >&5
+echo "configure:2208: 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
@@ -1637,7 +2255,7 @@ fi
# 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:1641: checking for $ac_word" >&5
+echo "configure:2259: 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
@@ -1669,7 +2287,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1673: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2291: 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.
@@ -1680,12 +2298,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1684 "configure"
+#line 2302 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2307: \"$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
@@ -1711,12 +2329,12 @@ 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:1715: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2333: 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:1720: checking whether we are using GNU C" >&5
+echo "configure:2338: 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
@@ -1725,7 +2343,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1729: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2347: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1744,7 +2362,7 @@ 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:1748: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2366: 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
@@ -1787,7 +2405,7 @@ fi
# 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:1791: checking for a BSD compatible install" >&5
+echo "configure:2409: 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
@@ -1842,7 +2460,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
ALL_LINGUAS=
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1846: checking how to run the C preprocessor" >&5
+echo "configure:2464: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -1857,13 +2475,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 1861 "configure"
+#line 2479 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1867: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2485: \"$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
:
@@ -1874,13 +2492,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 1878 "configure"
+#line 2496 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1884: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2502: \"$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
:
@@ -1891,13 +2509,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 1895 "configure"
+#line 2513 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1901: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2519: \"$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
:
@@ -1921,34 +2539,43 @@ else
fi
echo "$ac_t""$CPP" 1>&6
-echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1926: checking for POSIXized ISC" >&5
-if test -d /etc/conf/kconfig.d &&
- grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
-then
- echo "$ac_t""yes" 1>&6
- ISC=yes # If later tests want to check for ISC.
- cat >> confdefs.h <<\EOF
-#define _POSIX_SOURCE 1
-EOF
-
- if test "$GCC" = yes; then
- CC="$CC -posix"
- else
- CC="$CC -Xp"
- fi
+# 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:2546: 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
- ISC=
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1947: checking for ANSI C header files" >&5
+echo "configure:2574: 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 <<EOF
-#line 1952 "configure"
+#line 2579 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -1956,7 +2583,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1960: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2587: \"$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*
@@ -1973,7 +2600,7 @@ 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
-#line 1977 "configure"
+#line 2604 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -1991,7 +2618,7 @@ 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
-#line 1995 "configure"
+#line 2622 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2012,7 +2639,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2016 "configure"
+#line 2643 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -2023,7 +2650,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:2027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -2047,18 +2674,18 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:2051: checking for working const" >&5
+echo "configure:2678: 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 <<EOF
-#line 2056 "configure"
+#line 2683 "configure"
#include "confdefs.h"
int main() {
/* Ultrix mips cc rejects this. */
-typedef int charset[2]; const charset x = {0,0};
+typedef int charset[2]; const charset x;
/* SunOS 4.1.1 cc rejects this. */
char const *const *ccp;
char **p;
@@ -2101,7 +2728,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:2105: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2732: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -2122,21 +2749,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:2126: checking for inline" >&5
+echo "configure:2753: 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 <<EOF
-#line 2133 "configure"
+#line 2760 "configure"
#include "confdefs.h"
int main() {
-} int $ac_kw foo() {
+} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:2140: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2767: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -2162,12 +2789,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:2166: checking for off_t" >&5
+echo "configure:2793: 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 <<EOF
-#line 2171 "configure"
+#line 2798 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -2195,12 +2822,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:2199: checking for size_t" >&5
+echo "configure:2826: 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 <<EOF
-#line 2204 "configure"
+#line 2831 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -2230,19 +2857,19 @@ 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:2234: checking for working alloca.h" >&5
+echo "configure:2861: 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 <<EOF
-#line 2239 "configure"
+#line 2866 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
-void *p = alloca(2 * sizeof(int));
+char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2873: \"$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
@@ -2263,12 +2890,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:2267: checking for alloca" >&5
+echo "configure:2894: 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 <<EOF
-#line 2272 "configure"
+#line 2899 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -2296,7 +2923,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:2300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2927: \"$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
@@ -2328,12 +2955,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:2332: checking whether alloca needs Cray hooks" >&5
+echo "configure:2959: 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 <<EOF
-#line 2337 "configure"
+#line 2964 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -2358,12 +2985,12 @@ 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:2362: checking for $ac_func" >&5
+echo "configure:2989: 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 <<EOF
-#line 2367 "configure"
+#line 2994 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2386,7 +3013,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3017: \"$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
@@ -2413,7 +3040,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:2417: checking stack direction for C alloca" >&5
+echo "configure:3044: 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
@@ -2421,7 +3048,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 2425 "configure"
+#line 3052 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -2440,7 +3067,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:2444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3071: \"$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
@@ -2465,17 +3092,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:2469: checking for $ac_hdr" >&5
+echo "configure:3096: 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
-#line 2474 "configure"
+#line 3101 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2479: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3106: \"$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*
@@ -2504,12 +3131,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2508: checking for $ac_func" >&5
+echo "configure:3135: 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 <<EOF
-#line 2513 "configure"
+#line 3140 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2532,7 +3159,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3163: \"$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
@@ -2557,7 +3184,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:2561: checking for working mmap" >&5
+echo "configure:3188: 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
@@ -2565,7 +3192,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 2569 "configure"
+#line 3196 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -2592,15 +3219,12 @@ else
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
/* This mess was copied from the GNU getpagesize.h. */
#ifndef HAVE_GETPAGESIZE
+# ifdef HAVE_UNISTD_H
+# include <unistd.h>
+# endif
/* Assume that all systems that can run configure have sys/param.h. */
# ifndef HAVE_SYS_PARAM_H
@@ -2655,7 +3279,7 @@ main()
/*
* First, make a file with some known garbage in it.
*/
- data = (char*)malloc(pagesize);
+ data = malloc(pagesize);
if (!data)
exit(1);
for (i = 0; i < pagesize; ++i)
@@ -2676,7 +3300,7 @@ main()
fd = open("conftestmmap", O_RDWR);
if (fd < 0)
exit(1);
- data2 = (char*)malloc(2 * pagesize);
+ data2 = malloc(2 * pagesize);
if (!data2)
exit(1);
data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
@@ -2694,7 +3318,7 @@ main()
*/
for (i = 0; i < pagesize; ++i)
*(data2 + i) = *(data2 + i) + 1;
- data3 = (char*)malloc(pagesize);
+ data3 = malloc(pagesize);
if (!data3)
exit(1);
if (read(fd, data3, pagesize) != pagesize)
@@ -2708,7 +3332,7 @@ main()
}
EOF
-if { (eval echo configure:2712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3336: \"$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
@@ -2736,17 +3360,17 @@ 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:2740: checking for $ac_hdr" >&5
+echo "configure:3364: 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
-#line 2745 "configure"
+#line 3369 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2750: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3374: \"$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*
@@ -2776,12 +3400,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2780: checking for $ac_func" >&5
+echo "configure:3404: 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 <<EOF
-#line 2785 "configure"
+#line 3409 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2804,7 +3428,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3432: \"$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
@@ -2833,12 +3457,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2837: checking for $ac_func" >&5
+echo "configure:3461: 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 <<EOF
-#line 2842 "configure"
+#line 3466 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2861,7 +3485,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3489: \"$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
@@ -2895,19 +3519,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2899: checking for LC_MESSAGES" >&5
+echo "configure:3523: 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 <<EOF
-#line 2904 "configure"
+#line 3528 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3535: \"$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
@@ -2928,7 +3552,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2932: checking whether NLS is requested" >&5
+echo "configure:3556: 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"
@@ -2948,7 +3572,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2952: checking whether included gettext is requested" >&5
+echo "configure:3576: 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"
@@ -2967,17 +3591,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2971: checking for libintl.h" >&5
+echo "configure:3595: 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
-#line 2976 "configure"
+#line 3600 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2981: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3605: \"$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*
@@ -2994,19 +3618,19 @@ 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:2998: checking for gettext in libc" >&5
+echo "configure:3622: 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 <<EOF
-#line 3003 "configure"
+#line 3627 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:3010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3634: \"$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
@@ -3022,7 +3646,7 @@ 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:3026: checking for bindtextdomain in -lintl" >&5
+echo "configure:3650: 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
@@ -3030,7 +3654,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3034 "configure"
+#line 3658 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3041,7 +3665,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:3045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3057,19 +3681,19 @@ 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:3061: checking for gettext in libintl" >&5
+echo "configure:3685: 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 <<EOF
-#line 3066 "configure"
+#line 3690 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:3073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -3097,7 +3721,7 @@ 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:3101: checking for $ac_word" >&5
+echo "configure:3725: 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
@@ -3131,12 +3755,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3135: checking for $ac_func" >&5
+echo "configure:3759: 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 <<EOF
-#line 3140 "configure"
+#line 3764 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3159,7 +3783,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3787: \"$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
@@ -3186,7 +3810,7 @@ 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:3190: checking for $ac_word" >&5
+echo "configure:3814: 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
@@ -3222,7 +3846,7 @@ 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:3226: checking for $ac_word" >&5
+echo "configure:3850: 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
@@ -3254,7 +3878,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 3258 "configure"
+#line 3882 "configure"
#include "confdefs.h"
int main() {
@@ -3262,7 +3886,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:3266: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -3294,7 +3918,7 @@ fi
# 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:3298: checking for $ac_word" >&5
+echo "configure:3922: 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
@@ -3328,7 +3952,7 @@ 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:3332: checking for $ac_word" >&5
+echo "configure:3956: 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
@@ -3364,7 +3988,7 @@ 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:3368: checking for $ac_word" >&5
+echo "configure:3992: 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
@@ -3454,7 +4078,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:3458: checking for catalogs to be installed" >&5
+echo "configure:4082: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -3482,17 +4106,17 @@ echo "configure:3458: checking for catalogs to be installed" >&5
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:3486: checking for linux/version.h" >&5
+echo "configure:4110: 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
-#line 3491 "configure"
+#line 4115 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4120: \"$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*
@@ -3554,72 +4178,10 @@ fi
fi
-echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:3559: 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 <<EOF
-#line 3564 "configure"
-#include "confdefs.h"
-
-int main() {
-
-#ifndef __CYGWIN__
-#define __CYGWIN__ __CYGWIN32__
-#endif
-return __CYGWIN__;
-; return 0; }
-EOF
-if { (eval echo configure:3575: \"$ac_compile\") 1>&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:3592: 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 <<EOF
-#line 3597 "configure"
-#include "confdefs.h"
-
-int main() {
-return __MINGW32__;
-; return 0; }
-EOF
-if { (eval echo configure:3604: \"$ac_compile\") 1>&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
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:3623: checking for executable suffix" >&5
+echo "configure:4185: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3629,10 +4191,10 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:3633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:4195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
- *.c | *.o | *.obj) ;;
+ *.c | *.o | *.obj | *.ilk | *.pdb) ;;
*) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
esac
done
@@ -3655,7 +4217,7 @@ 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:3659: checking for $ac_word" >&5
+echo "configure:4221: 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
@@ -3691,7 +4253,7 @@ 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:3695: checking for $ac_word" >&5
+echo "configure:4257: 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
@@ -3724,7 +4286,7 @@ 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:3728: checking for $ac_word" >&5
+echo "configure:4290: 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
@@ -3758,7 +4320,7 @@ then
*) ac_lib=l ;;
esac
echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6
-echo "configure:3762: checking for yywrap in -l$ac_lib" >&5
+echo "configure:4324: 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
@@ -3766,7 +4328,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-l$ac_lib $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3770 "configure"
+#line 4332 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3777,7 +4339,7 @@ int main() {
yywrap()
; return 0; }
EOF
-if { (eval echo configure:3781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3800,7 +4362,7 @@ fi
fi
echo $ac_n "checking lex output file root""... $ac_c" 1>&6
-echo "configure:3804: checking lex output file root" >&5
+echo "configure:4366: 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
@@ -3821,7 +4383,7 @@ 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:3825: checking whether yytext is a pointer" >&5
+echo "configure:4387: 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
@@ -3833,14 +4395,14 @@ echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c
ac_save_LIBS="$LIBS"
LIBS="$LIBS $LEXLIB"
cat > conftest.$ac_ext <<EOF
-#line 3837 "configure"
+#line 4399 "configure"
#include "confdefs.h"
`cat $LEX_OUTPUT_ROOT.c`
int main() {
; return 0; }
EOF
-if { (eval echo configure:3844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_prog_lex_yytext_pointer=yes
else
@@ -3863,7 +4425,7 @@ fi
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:3867: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:4429: 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"
@@ -3897,17 +4459,17 @@ for ac_hdr in string.h strings.h stdlib.h unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3901: checking for $ac_hdr" >&5
+echo "configure:4463: 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
-#line 3906 "configure"
+#line 4468 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3911: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4473: \"$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*
@@ -3936,12 +4498,12 @@ done
for ac_func in sbrk
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3940: checking for $ac_func" >&5
+echo "configure:4502: 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 <<EOF
-#line 3945 "configure"
+#line 4507 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3964,7 +4526,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4530: \"$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
@@ -3993,12 +4555,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:3997: checking for $ac_hdr that defines DIR" >&5
+echo "configure:4559: checking for $ac_hdr that defines DIR" >&5
if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4002 "configure"
+#line 4564 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
@@ -4006,7 +4568,7 @@ int main() {
DIR *dirp = 0;
; return 0; }
EOF
-if { (eval echo configure:4010: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4572: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_header_dirent_$ac_safe=yes"
else
@@ -4031,7 +4593,7 @@ done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:4035: checking for opendir in -ldir" >&5
+echo "configure:4597: checking for opendir in -ldir" >&5
ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4039,7 +4601,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4043 "configure"
+#line 4605 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4050,7 +4612,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:4054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4616: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4072,7 +4634,7 @@ fi
else
echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:4076: checking for opendir in -lx" >&5
+echo "configure:4638: checking for opendir in -lx" >&5
ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4080,7 +4642,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4084 "configure"
+#line 4646 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4091,7 +4653,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:4095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4124,12 +4686,12 @@ EOF
esac
echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6
-echo "configure:4128: checking whether strstr must be declared" >&5
+echo "configure:4690: 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 <<EOF
-#line 4133 "configure"
+#line 4695 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4150,7 +4712,7 @@ int main() {
char *(*pfn) = (char *(*)) strstr
; return 0; }
EOF
-if { (eval echo configure:4154: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4716: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_strstr=no
else
@@ -4171,12 +4733,12 @@ EOF
fi
echo $ac_n "checking whether free must be declared""... $ac_c" 1>&6
-echo "configure:4175: checking whether free must be declared" >&5
+echo "configure:4737: checking whether free must be declared" >&5
if eval "test \"`echo '$''{'bfd_cv_decl_needed_free'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4180 "configure"
+#line 4742 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4197,7 +4759,7 @@ int main() {
char *(*pfn) = (char *(*)) free
; return 0; }
EOF
-if { (eval echo configure:4201: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4763: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_free=no
else
@@ -4218,12 +4780,12 @@ EOF
fi
echo $ac_n "checking whether sbrk must be declared""... $ac_c" 1>&6
-echo "configure:4222: checking whether sbrk must be declared" >&5
+echo "configure:4784: 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 <<EOF
-#line 4227 "configure"
+#line 4789 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4244,7 +4806,7 @@ int main() {
char *(*pfn) = (char *(*)) sbrk
; return 0; }
EOF
-if { (eval echo configure:4248: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4810: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_sbrk=no
else
@@ -4265,12 +4827,12 @@ EOF
fi
echo $ac_n "checking whether getenv must be declared""... $ac_c" 1>&6
-echo "configure:4269: checking whether getenv must be declared" >&5
+echo "configure:4831: 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 <<EOF
-#line 4274 "configure"
+#line 4836 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4291,7 +4853,7 @@ int main() {
char *(*pfn) = (char *(*)) getenv
; return 0; }
EOF
-if { (eval echo configure:4295: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4857: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_getenv=no
else
@@ -4312,12 +4874,12 @@ EOF
fi
echo $ac_n "checking whether environ must be declared""... $ac_c" 1>&6
-echo "configure:4316: checking whether environ must be declared" >&5
+echo "configure:4878: 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 <<EOF
-#line 4321 "configure"
+#line 4883 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -4338,7 +4900,7 @@ int main() {
char *(*pfn) = (char *(*)) environ
; return 0; }
EOF
-if { (eval echo configure:4342: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4904: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_environ=no
else
@@ -4366,19 +4928,19 @@ fi
# constants, while still supporting pre-ANSI compilers which do not
# support string concatenation.
echo $ac_n "checking whether ANSI C string concatenation works""... $ac_c" 1>&6
-echo "configure:4370: checking whether ANSI C string concatenation works" >&5
+echo "configure:4932: checking whether ANSI C string concatenation works" >&5
if eval "test \"`echo '$''{'ld_cv_string_concatenation'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4375 "configure"
+#line 4937 "configure"
#include "confdefs.h"
int main() {
char *a = "a" "a";
; return 0; }
EOF
-if { (eval echo configure:4382: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4944: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ld_cv_string_concatenation=yes
else
@@ -4652,6 +5214,7 @@ 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%@CC@%$CC%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
s%@INSTALL_DATA@%$INSTALL_DATA%g
@@ -4663,10 +5226,13 @@ s%@AUTOMAKE@%$AUTOMAKE%g
s%@AUTOHEADER@%$AUTOHEADER%g
s%@MAKEINFO@%$MAKEINFO%g
s%@SET_MAKE@%$SET_MAKE%g
-s%@RANLIB@%$RANLIB%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%@CPP@%$CPP%g
s%@ALLOCA@%$ALLOCA%g
s%@USE_NLS@%$USE_NLS%g
@@ -4689,7 +5255,6 @@ s%@GT_NO@%$GT_NO%g
s%@GT_YES@%$GT_YES%g
s%@MKINSTALLDIRS@%$MKINSTALLDIRS%g
s%@l@%$l%g
-s%@EXEEXT@%$EXEEXT%g
s%@YACC@%$YACC%g
s%@LEX@%$LEX%g
s%@LEXLIB@%$LEXLIB%g
diff --git a/contrib/binutils/ld/configure.host b/contrib/binutils/ld/configure.host
index 38ad347..7917e36 100644
--- a/contrib/binutils/ld/configure.host
+++ b/contrib/binutils/ld/configure.host
@@ -30,31 +30,12 @@ alpha*-*-netbsd*)
HOSTING_CRT0=/usr/lib/crt0.o
;;
-alpha*-*-*)
- HOSTING_CRT0=/usr/ccs/lib/crt0.o
- NATIVE_LIB_DIRS=/usr/ccs/lib
- ;;
-
arm*-*-linux-gnu*)
HOSTING_CRT0='-p -dynamic-linker `fgrep ld-linux.so \`${CC} --print-file-name=specs\` | sed -e "s,.*-dynamic-linker[ ][ ]*\(.*/ld-linux.so..\).*,\1,"` `${CC} --print-file-name=crt1.o` `${CC} --print-file-name=crti.o` `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else ${CC} --print-file-name=crtbegin.o; fi`'
HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` -L`dirname \`${CC} --print-file-name=libc.so\`` -lc `if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} --print-file-name=crtend.o; fi` `${CC} --print-file-name=crtn.o`'
;;
-i[3456]86-*-freebsdelf*)
- # The new BSD `make' has a bug: it doesn't pass empty arguments in
- # shell commands. So we need to make this value non-empty in order
- # for the genscripts.sh call to work. There's nothing magic about
- # the value `/lib'; it's just a dummy.
- NATIVE_LIB_DIRS=/lib
- # Older versions of gcc do not use a specs file. In those cases,
- # gcc -print-file-name=specs will simply print specs. We create a
- # dummy specs files to handle this.
- echo "-dynamic-linker /usr/libexec/ld-elf.so.1" > specs
- HOSTING_CRT0='-dynamic-linker `egrep "ld[^ ]*\.so" \`${CC} --print-file-name=specs\` | sed -e "s,.*-dynamic-linker[ ][ ]*\(.*/ld[^ ]*.so..\).*,\1,"` `${CC} --print-file-name=crt1.o` `${CC} --print-file-name=crti.o` `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else ${CC} --print-file-name=crtbegin.o; fi`'
- HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` -L`dirname \`${CC} --print-file-name=libc.so\`` -lc `if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} --print-file-name=crtend.o; fi` `${CC} --print-file-name=crtn.o`'
- ;;
-
-i[3456]86-*-bsd* | i[3456]86-*-freebsd* | i[3456]86-*-netbsd*)
+i[3456]86-*-bsd* | i[34567]86-*-freebsd[12] | i[34567]86-*-freebsd[12]\.* | i[34567]86-*-freebsd*aout* | i[3456]86-*-netbsd*)
# The new BSD `make' has a bug: it doesn't pass empty arguments in
# shell commands. So we need to make this value non-empty in order
# for the genscripts.sh call to work. There's nothing magic about
@@ -125,6 +106,15 @@ i[3456]86-pc-interix*)
HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` -L $$X/local_bin -L $$INTERIX_ROOT/usr/lib -lc -lcpsx -lc -lcpsx $$INTERIX_ROOT/usr/lib/psxdll.a $$INTERIX_ROOT/usr/lib/psxdll2.a'
;;
+i[3456]86-*-cygwin*)
+ HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` -lcygwin -luser32 -lkernel32 -ladvapi32 -lshell32 `if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi`'
+ ;;
+
+ia64-*-linux-gnu*)
+ HOSTING_CRT0='-dynamic-linker `egrep "ld-linux-ia64.so" \`${CC} --print-file-name=specs\` | sed -e "s,.*-dynamic-linker[ ][ ]*\(.*/ld-linux-ia64.so..\).*,\1,"` `${CC} --print-file-name=crt1.o` `${CC} --print-file-name=crti.o` `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else ${CC} --print-file-name=crtbegin.o; fi`'
+ HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` -L`dirname \`${CC} --print-file-name=libc.so\`` -lc `if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} --print-file-name=crtend.o; fi` `${CC} --print-file-name=crtn.o`'
+ ;;
+
mips*-dec-bsd*)
HOSTING_CRT0=/usr/lib/crt0.o
;;
@@ -193,10 +183,6 @@ powerpc*-*-linux-gnu*)
HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` -lc `if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} --print-file-name=crtend.o; fi` /usr/lib/crtn.o'
;;
-romp-*-*)
- HDEFINES=-DNO_VARARGS
- ;;
-
sparc*-*-solaris2*)
HOSTING_CRT0='`if [ -f ../gcc/crt1.o ]; then echo ../gcc/crt1.o; else ${CC} -print-file-name=crt1.o; fi` `if [ -f ../gcc/crti.o ]; then echo ../gcc/crti.o; else ${CC} -print-file-name=crti.o; fi` /usr/ccs/lib/values-Xa.o `if [ -f ../gcc/crtbegin.o ]; then echo ../gcc/crtbegin.o; else ${CC} -print-file-name=crtbegin.o; fi`'
HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` -lc `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} -print-file-name=crtend.o; fi` `if [ -f ../gcc/crtn.o ]; then echo ../gcc/crtn.o; else ${CC} -print-file-name=crtn.o; fi`'
@@ -213,4 +199,27 @@ sparc64-*-linux-gnu*)
HOSTING_LIBS='`if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` -L`dirname \`${CC} --print-file-name=libc.so\`` -lc `if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi` `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} --print-file-name=crtend.o; fi` `${CC} --print-file-name=crtn.o`'
;;
+#
+# Generic configurations:
+#
+
+*-*-freebsd*)
+ NATIVE_LIB_DIRS=/usr/lib
+ # Older versions of gcc do not use a specs file. In those cases,
+ # gcc -print-file-name=specs will simply print specs. We create a
+ # dummy specs files to handle this.
+ echo "-dynamic-linker `${CC} --print-file-name=ld-elf.so.1`" > specs
+ HOSTING_CRT0='-dynamic-linker `${CC} --print-file-name=ld-elf.so.1` `${CC} --print-file-name=crt1.o` `${CC} --print-file-name=crti.o` `${CC} --print-file-name=crtbegin.o`'
+ HOSTING_LIBS='`${CC} -print-libgcc-file-name` -L`dirname \`${CC} --print-file-name=libc.so\`` -lc `${CC} -print-libgcc-file-name` `${CC} --print-file-name=crtend.o` `${CC} --print-file-name=crtn.o`'
+ ;;
+
+alpha*-*-*)
+ HOSTING_CRT0=/usr/ccs/lib/crt0.o
+ NATIVE_LIB_DIRS=/usr/ccs/lib
+ ;;
+
+romp-*-*)
+ HDEFINES=-DNO_VARARGS
+ ;;
+
esac
diff --git a/contrib/binutils/ld/configure.in b/contrib/binutils/ld/configure.in
index d4b67ac..06831d2 100644
--- a/contrib/binutils/ld/configure.in
+++ b/contrib/binutils/ld/configure.in
@@ -4,8 +4,9 @@ AC_PREREG(2.13)
AC_INIT(ldmain.c)
AC_CANONICAL_SYSTEM
+AC_ISC_POSIX
-AM_INIT_AUTOMAKE(ld, 2.10.1)
+AM_INIT_AUTOMAKE(ld, 2.11)
AM_PROG_LIBTOOL
@@ -25,6 +26,27 @@ AC_ARG_ENABLE(64-bit-bfd,
*) AC_MSG_ERROR(bad value ${enableval} for 64-bit-bfd option) ;;
esac],[want64=false])dnl
+build_warnings="-W -Wall"
+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
diff --git a/contrib/binutils/ld/configure.tgt b/contrib/binutils/ld/configure.tgt
index c22eee7..e274cad 100644
--- a/contrib/binutils/ld/configure.tgt
+++ b/contrib/binutils/ld/configure.tgt
@@ -23,6 +23,12 @@ arm-*-pe) targ_emul=armpe ;
arc-*-elf*) targ_emul=arcelf ;;
avr-*-*) targ_emul=avr85xx
targ_extra_emuls="avr1200 avr23xx avr44x4 avr4433 avrmega603 avrmega103 avrmega161" ;;
+cris-*-*aout*) targ_emul=crisaout
+ targ_extra_emuls="criself crislinux"
+ targ_extra_libpath=$targ_extra_emuls ;;
+cris-*-*) targ_emul=criself
+ targ_extra_emuls="crisaout crislinux"
+ targ_extra_libpath=$targ_extra_emuls ;;
d10v-*-*) targ_emul=d10velf ;;
d30v-*-*ext*) targ_emul=d30v_e; targ_extra_emuls="d30velf d30v_o" ;;
d30v-*-*onchip*) targ_emul=d30v_o; targ_extra_emuls="d30velf d30v_e" ;;
@@ -37,6 +43,12 @@ sparc*-*-aout) targ_emul=sparcaout ;;
sparc*-*-coff) targ_emul=coff_sparc ;;
sparc*-*-elf) targ_emul=elf32_sparc ;;
sparc*-*-sysv4*) targ_emul=elf32_sparc ;;
+sparc64-*-freebsd* | sparcv9-*-freebsd*)
+ targ_emul=elf64_sparc
+ targ_extra_emuls="elf32_sparc"
+ targ_extra_libpath=$targ_extra_emuls
+ tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'`
+ ;;
sparc*-*-linux*aout*) targ_emul=sparclinux
targ_extra_emuls="elf32_sparc sun4"
tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/aout//'`
@@ -73,19 +85,26 @@ sparcv9-*-solaris2* | sparc64-*-solaris2*)
;;
sparc*-*-solaris2*) targ_emul=elf32_sparc ;;
sparc*-wrs-vxworks*) targ_emul=sparcaout ;;
-sparc*-*-rtemsaout*) targ_emul=sparcaout ;;
-sparc*-*-rtemself*) targ_emul=elf32_sparc ;;
-sparc*-*-rtems*) targ_emul=elf32_sparc ;;
+sparc*-*-rtemsaout*) targ_emul=sparcaout ;;
+sparc*-*-rtemself*) targ_emul=elf32_sparc ;;
+sparc*-*-rtems*) targ_emul=elf32_sparc ;;
+i860-stardent-sysv4* | i860-stardent-elf*)
+ targ_emul=elf32_i860 ;;
i960-wrs-vxworks5.0*) targ_emul=gld960 ;;
i960-wrs-vxworks5*) targ_emul=gld960coff ;;
i960-wrs-vxworks*) targ_emul=gld960 ;;
i960-*-coff) targ_emul=gld960coff ;;
i960-intel-nindy) targ_emul=gld960 ;;
-i960-*-rtemscoff*) targ_emul=gld960coff ;;
-i960-*-rtemself*) targ_emul=elf32_i960 ;;
i960-*-rtems*) targ_emul=gld960coff ;;
i960-*-elf*) targ_emul=elf32_i960 ;;
+ia64-*-elf*) targ_emul=elf64_ia64 ;;
+ia64-*-freebsd*) targ_emul=elf64_ia64 ;;
+ia64-*-linux*) targ_emul=elf64_ia64 ;;
m32r-*-*) targ_emul=m32relf ;;
+m68hc11-*-*|m6811-*-*) targ_emul=m68hc11elf
+ targ_extra_emuls="m68hc11elfb m68hc12elf m68hc12elfb" ;;
+m68hc12-*-*|m6812-*-*) targ_emul=m68hc12elf
+ targ_extra_emuls="m68hc12elfb m68hc11elf m68hc11elfb" ;;
m68*-sun-sunos[34]*) targ_emul=sun3 ;;
m68*-wrs-vxworks*) targ_emul=sun3 ;;
m68*-ericsson-ose) targ_emul=sun3 ;;
@@ -102,9 +121,8 @@ i[3456]86-*-sco*) targ_emul=i386coff ;;
i[3456]86-*-isc*) targ_emul=i386coff ;;
i[3456]86-*-lynxos*) targ_emul=i386lynx ;;
i[3456]86-*-coff) targ_emul=i386coff ;;
-i[3456]86-*-rtemscoff*) targ_emul=i386coff ;;
i[3456]86-*-rtemself*) targ_emul=elf_i386 ;;
-i[3456]86-*-rtems*) targ_emul=elf_i386 ;;
+i[3456]86-*-rtems*) targ_emul=i386coff ;;
i[3456]86-*-bsd) targ_emul=i386bsd ;;
i[3456]86-*-bsd386) targ_emul=i386bsd ;;
i[3456]86-*-bsdi*) targ_emul=i386bsd ;;
@@ -118,6 +136,10 @@ i[3456]86-*-linux-gnu*) targ_emul=elf_i386
targ_extra_emuls=i386linux
tdir_i386linux=${targ_alias}aout
;;
+x86_64-*-linux-gnu*) targ_emul=elf_x86_64
+ targ_extra_emuls="elf_i386 i386linux"
+ tdir_i386linux=${targ_alias}aout
+ ;;
i[3456]86-*-sysv[45]*) targ_emul=elf_i386 ;;
i[3456]86-*-solaris2*) targ_emul=elf_i386 ;;
i[3456]86-*-unixware) targ_emul=elf_i386 ;;
@@ -128,6 +150,10 @@ i[3456]86-*-elf*) targ_emul=elf_i386 ;;
i[3456]86-*-freebsdaout* | i[3456]86-*-freebsd[12].* | i[3456]86-*-freebsd[12])
targ_emul=i386bsd ;;
i[3456]86-*-freebsd*) targ_emul=elf_i386 ;;
+x86_64-*-freebsd*) targ_emul=elf_x86_64
+ targ_extra_emuls=elf_i386
+ tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/'`
+ ;;
i[3456]86-*-sysv*) targ_emul=i386coff ;;
i[3456]86-*-ptx*) targ_emul=i386coff ;;
i[3456]86-*-mach*) targ_emul=i386mach ;;
@@ -147,6 +173,7 @@ i[3456]86-*-interix*) targ_emul=i386pe_posix;
i[3456]86-*-beospe*) targ_emul=i386beos ;;
i[3456]86-*-beos*) targ_emul=elf_i386_be ;;
i[3456]86-*-vxworks*) targ_emul=i386aout ;;
+i[3456]86-*-chaos) targ_emul=elf_i386_chaos ;;
m8*-*-*) targ_emul=m88kbcs ;;
a29k-*-udi) targ_emul=sa29200 ;;
a29k-*-ebmon) targ_emul=ebmon29k ;;
@@ -155,10 +182,12 @@ a29k-*-*) targ_emul=a29k ;;
arm-*-aout | armel-*-aout) targ_emul=armaoutl ;;
armeb-*-aout) targ_emul=armaoutb ;;
arm-*-coff) targ_emul=armcoff ;;
+arm-*-freebsd*) targ_emul=armelf ;;
arm-*-netbsd*) targ_emul=armnbsd ;;
+arm-*-rtems*) targ_emul=armelf ;;
arm-*-elf) targ_emul=armelf ;;
arm-*-oabi) targ_emul=armelf_oabi ;;
-arm*-*-linux-gnu*) targ_emul=armelf_linux; targ_extra_emuls="armelf_linux26 armelf" ;;
+arm*-*-linux-gnu*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
arm*-*-uclinux*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
arm*-*-conix*) targ_emul=armelf ;;
thumb-*-linux-gnu* | thumb-*-uclinux*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
@@ -171,21 +200,26 @@ thumb-epoc-pe) targ_emul=arm_epoc_pe ;
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
thumb-*-pe) targ_emul=armpe ;
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
-h8300-*-hms* | h8300-*-coff*)
+xscale-*-coff) targ_emul=armcoff ;;
+xscale-*-elf) targ_emul=armelf ;;
+h8300-*-hms* | h8300-*-coff* | h8300-*-rtems*)
targ_emul=h8300; targ_extra_emuls="h8300h h8300s"
;;
h8500-*-hms* | h8500-*-coff*)
targ_emul=h8500
targ_extra_emuls="h8500s h8500b h8500m h8500c"
;;
+sh-*-linux*)
+ targ_emul=shelf_linux
+ targ_extra_emuls=shlelf_linux
+ ;;
sh-*-elf* | sh-*-rtemself*)
targ_emul=shelf
targ_extra_emuls="shlelf sh shl"
;;
sh-*-pe) targ_emul=shpe ;
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
-sh-*-rtemscoff* | sh-*-* | sh-*-rtems*)
- targ_emul=sh; targ_extra_emuls=shl ;;
+sh-*-*|sh-*-rtems*) targ_emul=sh; targ_extra_emuls=shl ;;
m68k-sony-*) targ_emul=news ;;
m68k-hp-bsd*) targ_emul=hp300bsd ;;
m68*-motorola-sysv*) targ_emul=delta68 ;;
@@ -206,12 +240,10 @@ m68*-*-lynxos*) targ_emul=m68klynx ;;
m68*-hp*-netbsd*) targ_emul=m68k4knbsd ;;
m68*-*-netbsd*) targ_emul=m68knbsd ;;
m68*-*-psos*) targ_emul=m68kpsos ;;
-m68*-*-rtemscoff*) targ_emul=m68kcoff ;;
-m68*-*-rtemself) targ_emul=m68kelf ;;
-m68*-*-rtems*) targ_emul=m68kelf ;;
-hppa*w*-*) targ_emul=elf64hppa ;;
+m68*-*-rtems*) targ_emul=m68kcoff ;;
+hppa*64*-*) targ_emul=elf64hppa ;;
+hppa*-*-linux-gnu*) targ_emul=hppalinux ;;
hppa*-*-*elf*) targ_emul=hppaelf ;;
-hppa*-*-linux-gnu*) targ_emul=hppaelf ;;
hppa*-*-lites*) targ_emul=hppaelf ;;
hppa*-*-rtems*) targ_emul=hppaelf ;;
vax-dec-ultrix* | vax-dec-bsd*) targ_emul=vax ;;
@@ -248,9 +280,13 @@ mips*-*-linux-gnu*) targ_emul=elf32bsmip
targ_extra_emuls="elf32lsmip mipsbig mipslit"
;;
mips*-*-lnews*) targ_emul=mipslnews ;;
+mips*-*-sysv4*) targ_emul=elf32btsmip ;;
mn10200-*-*) targ_emul=mn10200 ;;
mn10300-*-*) targ_emul=mn10300 ;;
-alpha-*-freebsd*) targ_emul=elf64alpha ;;
+alpha*-*-freebsd*) targ_emul=elf64alpha
+ targ_extra_emuls=alpha
+ tdir_alpha=`echo ${targ_alias} | sed -e 's/freebsd/freebsdecoff/'`
+ ;;
alpha*-*-linuxecoff*) targ_emul=alpha targ_extra_emuls=elf64alpha
tdir_elf64alpha=`echo ${targ_alias} | sed -e 's/ecoff//'`
;;
@@ -264,16 +300,22 @@ alpha*-*-netbsd*) targ_emul=elf64alpha ;;
z8k-*-coff) targ_emul=z8002; targ_extra_emuls=z8001 ;;
ns32k-pc532-mach* | ns32k-pc532-ux*) targ_emul=pc532macha ;;
ns32k-pc532-netbsd* | ns32k-pc532-lites*) targ_emul=ns32knbsd ;;
-powerpc-*-linux-gnu*) targ_emul=elf32ppclinux; targ_extra_emuls=elf32ppc;
+powerpc-*-freebsd*) targ_emul=elf32ppc;
+ targ_extra_emuls=elf32ppcsim;
+ targ_extra_libpath=elf32ppc;
+ tdir_elf32ppcsim=`echo ${targ_alias} | sed -e 's/ppc/ppcsim/'`
+ ;;
+powerpc-*-linux-gnu*) targ_emul=elf32ppclinux;
+ targ_extra_emuls="elf32ppc elf32ppcsim";
targ_extra_libpath=elf32ppc ;;
pjl*-*-*) targ_emul=pjlelf ; targ_extra_emuls="elf_i386" ;;
pj*-*-*) targ_emul=pjelf ;;
powerpc-*-elf* | powerpc-*-eabi* | powerpc-*-sysv* \
| powerpc-*-netbsd* | powerpc-*-vxworks*)
- targ_emul=elf32ppc ;;
+ targ_emul=elf32ppc targ_extra_emuls="elf32ppclinux elf32ppcsim";;
powerpcle-*-elf* | powerpcle-*-eabi* | powerpcle-*-solaris* \
| powerpcle-*-sysv* | powerpcle-*-vxworks*)
- targ_emul=elf32lppc ;;
+ targ_emul=elf32lppc targ_extra_emuls="elf32ppcsim";;
powerpcle-*-rtems*) targ_emul=elf32leppc ;;
powerpc-*-rtems*) targ_emul=elf32ppc ;;
powerpc-*-macos*) targ_emul=ppcmacos ;;
@@ -286,6 +328,7 @@ powerpc-*-beos*) targ_emul=aixppc ;;
rs6000-*-aix*) targ_emul=aixrs6 ;;
tic30-*-*aout*) targ_emul=tic30aout ;;
tic30-*-*coff*) targ_emul=tic30coff ;;
+tic54x-*-* | c54x*-*-*) targ_emul=tic54xcoff ;;
tic80-*-*) targ_emul=tic80coff ;;
v850-*-*) targ_emul=v850 ;;
v850e-*-*) targ_emul=v850 ;;
diff --git a/contrib/binutils/ld/deffile.h b/contrib/binutils/ld/deffile.h
index e2c710d..be6f486 100644
--- a/contrib/binutils/ld/deffile.h
+++ b/contrib/binutils/ld/deffile.h
@@ -1,5 +1,5 @@
/* deffile.h - header for .DEF file parser
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
Written by DJ Delorie dj@cygnus.com
This file is part of GLD, the Gnu Linker.
@@ -25,77 +25,66 @@
#include "ansidecl.h"
/* DEF storage definitions. Note that any ordinal may be zero, and
- any pointer may be NULL, if not defined by the DEF file. */
-
-typedef struct def_file_section
- {
- char *name; /* always set */
- char *class; /* may be NULL */
- char flag_read, flag_write, flag_execute, flag_shared;
- }
-def_file_section;
-
-typedef struct def_file_export
- {
- char *name; /* always set */
- char *internal_name; /* always set, may == name */
- int ordinal; /* -1 if not specified */
- int hint;
- char flag_private, flag_constant, flag_noname, flag_data;
- }
-def_file_export;
-
-typedef struct def_file_module
- {
- struct def_file_module *next;
- void *user_data;
- char name[1]; /* extended via malloc */
- }
-def_file_module;
-
-typedef struct def_file_import
- {
- char *internal_name; /* always set */
- def_file_module *module; /* always set */
- char *name; /* may be NULL; either this or ordinal will be set */
- int ordinal; /* may be -1 */
- }
-def_file_import;
-
-typedef struct def_file
- {
-
- /* from the NAME or LIBRARY command */
- char *name;
- int is_dll; /* -1 if NAME/LIBRARY not given */
- bfd_vma base_address; /* (bfd_vma)(-1) if unspecified */
-
- /* from the DESCRIPTION command */
- char *description;
-
- /* from the STACK/HEAP command, -1 if unspecified */
- int stack_reserve, stack_commit;
- int heap_reserve, heap_commit;
-
- /* from the SECTION/SEGMENT commands */
- int num_section_defs;
- def_file_section *section_defs;
-
- /* from the EXPORTS commands */
- int num_exports;
- def_file_export *exports;
-
- /* used by imports for module names */
- def_file_module *modules;
-
- /* from the IMPORTS commands */
- int num_imports;
- def_file_import *imports;
-
- /* from the VERSION command, -1 if not specified */
- int version_major, version_minor;
- }
-def_file;
+ any pointer may be NULL, if not defined by the DEF file. */
+
+typedef struct def_file_section {
+ char *name; /* always set */
+ char *class; /* may be NULL */
+ char flag_read, flag_write, flag_execute, flag_shared;
+} def_file_section;
+
+typedef struct def_file_export {
+ char *name; /* always set */
+ char *internal_name; /* always set, may == name */
+ int ordinal; /* -1 if not specified */
+ int hint;
+ char flag_private, flag_constant, flag_noname, flag_data;
+} def_file_export;
+
+typedef struct def_file_module {
+ struct def_file_module *next;
+ void *user_data;
+ char name[1]; /* extended via malloc */
+} def_file_module;
+
+typedef struct def_file_import {
+ char *internal_name; /* always set */
+ def_file_module *module; /* always set */
+ char *name; /* may be NULL; either this or ordinal will be set */
+ int ordinal; /* may be -1 */
+} def_file_import;
+
+typedef struct def_file {
+ /* from the NAME or LIBRARY command */
+ char *name;
+ int is_dll; /* -1 if NAME/LIBRARY not given */
+ bfd_vma base_address; /* (bfd_vma)(-1) if unspecified */
+
+ /* from the DESCRIPTION command */
+ char *description;
+
+ /* from the STACK/HEAP command, -1 if unspecified */
+ int stack_reserve, stack_commit;
+ int heap_reserve, heap_commit;
+
+ /* from the SECTION/SEGMENT commands */
+ int num_section_defs;
+ def_file_section *section_defs;
+
+ /* from the EXPORTS commands */
+ int num_exports;
+ def_file_export *exports;
+
+ /* used by imports for module names */
+ def_file_module *modules;
+
+ /* from the IMPORTS commands */
+ int num_imports;
+ def_file_import *imports;
+
+ /* from the VERSION command, -1 if not specified */
+ int version_major, version_minor;
+} def_file;
extern def_file *def_file_empty PARAMS ((void));
@@ -121,8 +110,7 @@ extern void def_file_add_directive PARAMS ((def_file * _def,
int len));
#ifdef DEF_FILE_PRINT
-extern void def_file_print PARAMS ((FILE * _file,
- def_file * _def));
+extern void def_file_print PARAMS ((FILE * _file, def_file * _def));
#endif
#endif /* DEFFILE_H */
diff --git a/contrib/binutils/ld/dep-in.sed b/contrib/binutils/ld/dep-in.sed
index 8c80eb0..89b1201 100644
--- a/contrib/binutils/ld/dep-in.sed
+++ b/contrib/binutils/ld/dep-in.sed
@@ -4,7 +4,7 @@
s!@INCDIR@!$(INCDIR)!g
s!@SRCDIR@/!!g
-s!\.\./bfd/hosts/[^ ]*\.h ! !g
+s! \.\./bfd/hosts/[^ ]*\.h! !g
s/\\\n */ /g
diff --git a/contrib/binutils/ld/emulparams/armelf.sh b/contrib/binutils/ld/emulparams/armelf.sh
index 8c79b64..338b9ce 100644
--- a/contrib/binutils/ld/emulparams/armelf.sh
+++ b/contrib/binutils/ld/emulparams/armelf.sh
@@ -4,7 +4,8 @@ OUTPUT_FORMAT="elf32-littlearm"
BIG_OUTPUT_FORMAT="elf32-bigarm"
LITTLE_OUTPUT_FORMAT="elf32-littlearm"
TEXT_START_ADDR=0x8000
-TEMPLATE_NAME=armelf
+TEMPLATE_NAME=elf32
+EXTRA_EM_FILE=armelf
OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)'
OTHER_BSS_SYMBOLS='__bss_start__ = .;'
OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;'
diff --git a/contrib/binutils/ld/emulparams/armelf_linux.sh b/contrib/binutils/ld/emulparams/armelf_linux.sh
index a85e8bd..d04d967 100644
--- a/contrib/binutils/ld/emulparams/armelf_linux.sh
+++ b/contrib/binutils/ld/emulparams/armelf_linux.sh
@@ -4,7 +4,8 @@ OUTPUT_FORMAT="elf32-littlearm"
BIG_OUTPUT_FORMAT="elf32-bigarm"
LITTLE_OUTPUT_FORMAT="elf32-littlearm"
MAXPAGESIZE=0x8000
-TEMPLATE_NAME=armelf
+TEMPLATE_NAME=elf32
+EXTRA_EM_FILE=armelf
GENERATE_SHLIB_SCRIPT=yes
DATA_START_SYMBOLS='__data_start = . ;';
@@ -12,8 +13,4 @@ OTHER_TEXT_SECTIONS='*(.glue_7t) *(.glue_7)'
OTHER_BSS_SYMBOLS='__bss_start__ = .;'
OTHER_BSS_END_SYMBOLS='_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;'
-# This needs to be high enough so that we can load ld.so below it,
-# yet low enough to stay away from the mmap area at 0x40000000.
-# Also, it is small enough so that relocs which are pointing
-# at absolute 0 will still be fixed up.
-TEXT_START_ADDR=0x02000000
+TEXT_START_ADDR=0x00008000
diff --git a/contrib/binutils/ld/emulparams/elf32lppc.sh b/contrib/binutils/ld/emulparams/elf32lppc.sh
index edffc61..bc9125d 100644
--- a/contrib/binutils/ld/emulparams/elf32lppc.sh
+++ b/contrib/binutils/ld/emulparams/elf32lppc.sh
@@ -1,8 +1,18 @@
TEMPLATE_NAME=elf32
+# If you change this, please also look at:
+# elf32ppc.sh elf32ppcsim.sh elf32lppc.sh elf32lppcsim.sh elf32ppclinux.sh
GENERATE_SHLIB_SCRIPT=yes
-SCRIPT_NAME=elfppc
+SCRIPT_NAME=elf
OUTPUT_FORMAT="elf32-powerpcle"
-TEXT_START_ADDR=0x40000
-MAXPAGESIZE=0x40000
+TEXT_START_ADDR=0x01800000
+MAXPAGESIZE=0x10000
ARCH=powerpc
MACHINE=
+BSS_PLT=
+EXECUTABLE_SYMBOLS='PROVIDE (__stack = 0); PROVIDE (___stack = 0);'
+OTHER_BSS_END_SYMBOLS='__end = .;'
+OTHER_READWRITE_SECTIONS='
+ .fixup : { *(.fixup) }
+ .got1 : { *(.got1) }
+ .got2 : { *(.got2) }
+'
diff --git a/contrib/binutils/ld/emulparams/elf32lppcsim.sh b/contrib/binutils/ld/emulparams/elf32lppcsim.sh
new file mode 100644
index 0000000..74959f8
--- /dev/null
+++ b/contrib/binutils/ld/emulparams/elf32lppcsim.sh
@@ -0,0 +1,18 @@
+TEMPLATE_NAME=elf32
+# If you change this, please also look at:
+# elf32ppc.sh elf32ppcsim.sh elf32lppc.sh elf32lppcsim.sh elf32ppclinux.sh
+GENERATE_SHLIB_SCRIPT=yes
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-powerpcle"
+TEXT_START_ADDR=0x10000000
+MAXPAGESIZE=0x10000
+ARCH=powerpc
+MACHINE=
+BSS_PLT=
+EXECUTABLE_SYMBOLS='PROVIDE (__stack = 0); PROVIDE (___stack = 0);'
+OTHER_BSS_END_SYMBOLS='__end = .;'
+OTHER_READWRITE_SECTIONS='
+ .fixup : { *(.fixup) }
+ .got1 : { *(.got1) }
+ .got2 : { *(.got2) }
+'
diff --git a/contrib/binutils/ld/emulparams/elf32ppc.sh b/contrib/binutils/ld/emulparams/elf32ppc.sh
index 3e3880c..2220810 100644
--- a/contrib/binutils/ld/emulparams/elf32ppc.sh
+++ b/contrib/binutils/ld/emulparams/elf32ppc.sh
@@ -1,8 +1,18 @@
TEMPLATE_NAME=elf32
+# If you change this, please also look at:
+# elf32ppc.sh elf32ppcsim.sh elf32lppc.sh elf32lppcsim.sh elf32ppclinux.sh
GENERATE_SHLIB_SCRIPT=yes
-SCRIPT_NAME=elfppc
+SCRIPT_NAME=elf
OUTPUT_FORMAT="elf32-powerpc"
TEXT_START_ADDR=0x01800000
MAXPAGESIZE=0x10000
ARCH=powerpc
MACHINE=
+BSS_PLT=
+EXECUTABLE_SYMBOLS='PROVIDE (__stack = 0); PROVIDE (___stack = 0);'
+OTHER_BSS_END_SYMBOLS='__end = .;'
+OTHER_READWRITE_SECTIONS='
+ .fixup : { *(.fixup) }
+ .got1 : { *(.got1) }
+ .got2 : { *(.got2) }
+'
diff --git a/contrib/binutils/ld/emulparams/elf32ppclinux.sh b/contrib/binutils/ld/emulparams/elf32ppclinux.sh
index 9996c7b..7c458a2 100644
--- a/contrib/binutils/ld/emulparams/elf32ppclinux.sh
+++ b/contrib/binutils/ld/emulparams/elf32ppclinux.sh
@@ -1,8 +1,18 @@
TEMPLATE_NAME=elf32
+# If you change this, please also look at:
+# elf32ppc.sh elf32ppcsim.sh elf32lppc.sh elf32lppcsim.sh elf32ppclinux.sh
GENERATE_SHLIB_SCRIPT=yes
-SCRIPT_NAME=elfppc
+SCRIPT_NAME=elf
OUTPUT_FORMAT="elf32-powerpc"
TEXT_START_ADDR=0x10000000
MAXPAGESIZE=0x10000
ARCH=powerpc
MACHINE=
+BSS_PLT=
+OTHER_RELOCATING_SECTIONS='
+ /DISCARD/ : { *(.fixup) }
+'
+OTHER_READWRITE_SECTIONS='
+ .got1 : { *(.got1) }
+ .got2 : { *(.got2) }
+'
diff --git a/contrib/binutils/ld/emulparams/elf32ppcsim.sh b/contrib/binutils/ld/emulparams/elf32ppcsim.sh
new file mode 100644
index 0000000..e25a170
--- /dev/null
+++ b/contrib/binutils/ld/emulparams/elf32ppcsim.sh
@@ -0,0 +1,18 @@
+TEMPLATE_NAME=elf32
+# If you change this, please also look at:
+# elf32ppc.sh elf32ppcsim.sh elf32lppc.sh elf32lppcsim.sh elf32ppclinux.sh
+GENERATE_SHLIB_SCRIPT=yes
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-powerpc"
+TEXT_START_ADDR=0x10000000
+MAXPAGESIZE=0x10000
+ARCH=powerpc
+MACHINE=
+BSS_PLT=
+EXECUTABLE_SYMBOLS='PROVIDE (__stack = 0); PROVIDE (___stack = 0);'
+OTHER_BSS_END_SYMBOLS='__end = .;'
+OTHER_READWRITE_SECTIONS='
+ .fixup : { *(.fixup) }
+ .got1 : { *(.got1) }
+ .got2 : { *(.got2) }
+'
diff --git a/contrib/binutils/ld/emulparams/elf64_sparc.sh b/contrib/binutils/ld/emulparams/elf64_sparc.sh
index 2ab2e4f..b0a58ea 100644
--- a/contrib/binutils/ld/emulparams/elf64_sparc.sh
+++ b/contrib/binutils/ld/emulparams/elf64_sparc.sh
@@ -2,15 +2,24 @@ SCRIPT_NAME=elf
ELFSIZE=64
TEMPLATE_NAME=elf32
OUTPUT_FORMAT="elf64-sparc"
-TEXT_START_ADDR=0x100000
MAXPAGESIZE=0x100000
-NONPAGED_TEXT_START_ADDR=0x100000
ARCH="sparc:v9"
MACHINE=
DATA_PLT=
GENERATE_SHLIB_SCRIPT=yes
NOP=0x01000000
+case "$target" in
+ sparc*-solaris*)
+ TEXT_START_ADDR=0x100000000
+ NONPAGED_TEXT_START_ADDR=0x100000000
+ ;;
+ *)
+ TEXT_START_ADDR=0x100000
+ NONPAGED_TEXT_START_ADDR=0x100000
+ ;;
+esac
+
if [ "x${host}" = "x${target}" ]; then
case " $EMULATION_LIBPATH " in
*" ${EMULATION_NAME} "*)
@@ -31,7 +40,7 @@ if [ "x${host}" = "x${target}" ]; then
LIB_PATH=/lib${suffix}:/lib
LIB_PATH=${LIB_PATH}:/usr/lib${suffix}:/usr/lib
if [ -n "${NATIVE_LIB_DIRS}" ]; then
- LIB_PATH=${LIB_PATH}:`echo ${NATIVE_LIB_DIRS} | sed s/:/${suffix}:/g`${suffix}:${NATIVE_LIB_DIRS}
+ LIB_PATH=${LIB_PATH}:`echo ${NATIVE_LIB_DIRS} | sed s_:_${suffix}:_g`${suffix}:${NATIVE_LIB_DIRS}
fi
if [ "${libdir}" != /usr/lib ]; then
LIB_PATH=${LIB_PATH}:${libdir}${suffix}:${libdir}
diff --git a/contrib/binutils/ld/emulparams/elf64alpha.sh b/contrib/binutils/ld/emulparams/elf64alpha.sh
index afa21f2..5c69816 100644
--- a/contrib/binutils/ld/emulparams/elf64alpha.sh
+++ b/contrib/binutils/ld/emulparams/elf64alpha.sh
@@ -1,10 +1,10 @@
-ENTRY=__start
+ENTRY=_start
SCRIPT_NAME=elf
ELFSIZE=64
TEMPLATE_NAME=elf32
OUTPUT_FORMAT="elf64-alpha"
TEXT_START_ADDR="0x120000000"
-MAXPAGESIZE=0x100000
+MAXPAGESIZE=0x10000
NONPAGED_TEXT_START_ADDR="0x120000000"
ARCH=alpha
MACHINE=
@@ -13,3 +13,54 @@ DATA_PLT=
NOP=0x47ff041f
OTHER_READONLY_SECTIONS='.reginfo : { *(.reginfo) }'
+
+# This code gets inserted into the generic elf32.sc linker script
+# and allows us to define our own command line switches.
+PARSE_AND_LIST_PROLOGUE='
+#define OPTION_TASO 300
+/* Set the start address as in the Tru64 ld */
+#define ALPHA_TEXT_START_32BIT 0x12000000
+
+static int elf64alpha_32bit = 0;
+
+struct ld_emulation_xfer_struct ld_elf64alpha_emulation;
+static void gld_elf64alpha_finish ();
+'
+
+PARSE_AND_LIST_LONGOPTS='
+ {"taso", no_argument, NULL, OPTION_TASO},
+'
+
+PARSE_AND_LIST_OPTIONS='
+ fprintf (file, _(" -taso\t\t\tLoad executable in the lower 31-bit addressable\n"));
+ fprintf (file, _("\t\t\t virtual address range\n"));
+'
+
+PARSE_AND_LIST_ARGS_CASES='
+ case EOF:
+ if (elf64alpha_32bit && !link_info.shared && !link_info.relocateable)
+ {
+ lang_section_start (".interp",
+ exp_binop ('\''+'\'',
+ exp_intop (ALPHA_TEXT_START_32BIT),
+ exp_nameop (SIZEOF_HEADERS, NULL)));
+ ld_elf64alpha_emulation.finish = gld_elf64alpha_finish;
+ }
+ return 0;
+
+ case OPTION_TASO:
+ elf64alpha_32bit = 1;
+ break;
+'
+
+PARSE_AND_LIST_EPILOGUE='
+#include "elf/internal.h"
+#include "elf/alpha.h"
+#include "elf-bfd.h"
+
+static void
+gld_elf64alpha_finish()
+{
+ elf_elfheader (output_bfd)->e_flags |= EF_ALPHA_32BIT;
+}
+'
diff --git a/contrib/binutils/ld/emulparams/elf_i386_chaos.sh b/contrib/binutils/ld/emulparams/elf_i386_chaos.sh
new file mode 100644
index 0000000..32e7719
--- /dev/null
+++ b/contrib/binutils/ld/emulparams/elf_i386_chaos.sh
@@ -0,0 +1,10 @@
+SCRIPT_NAME=elf
+OUTPUT_FORMAT="elf32-i386"
+TEXT_START_ADDR=0x40000000
+MAXPAGESIZE=0x1000
+NONPAGED_TEXT_START_ADDR=0x40000000
+ARCH=i386
+MACHINE=
+NOP=0x9090
+TEMPLATE_NAME=elf32
+GENERATE_SHLIB_SCRIPT=yes
diff --git a/contrib/binutils/ld/emultempl/armcoff.em b/contrib/binutils/ld/emultempl/armcoff.em
index d73b3d1..936da13 100644
--- a/contrib/binutils/ld/emultempl/armcoff.em
+++ b/contrib/binutils/ld/emultempl/armcoff.em
@@ -4,7 +4,8 @@ cat >e${EMULATION_NAME}.c <<EOF
/* This file is is generated by a shell script. DO NOT EDIT! */
/* emulate the original gld for the given ${EMULATION_NAME}
- Copyright (C) 1991, 93, 96, 97, 98, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1991, 93, 96, 97, 98, 99, 2000
+ Free Software Foundation, Inc.
Written by Steve Chamberlain steve@cygnus.com
This file is part of GLD, the Gnu Linker.
@@ -32,12 +33,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "ld.h"
#include "ldmain.h"
-#include "ldemul.h"
-#include "ldfile.h"
#include "ldmisc.h"
#include "ldexp.h"
#include "ldlang.h"
+#include "ldfile.h"
+#include "ldemul.h"
static void gld${EMULATION_NAME}_before_parse PARAMS ((void));
static void gld${EMULATION_NAME}_before_allocation PARAMS ((void));
diff --git a/contrib/binutils/ld/emultempl/armelf.em b/contrib/binutils/ld/emultempl/armelf.em
index 9abf7f1..3c82bce 100644
--- a/contrib/binutils/ld/emultempl/armelf.em
+++ b/contrib/binutils/ld/emultempl/armelf.em
@@ -1,137 +1,32 @@
# This shell script emits a C file. -*- C -*-
-# It does some substitutions.
-ELFSIZE=32
-cat >e${EMULATION_NAME}.c <<EOF
-/* This file is is generated by a shell script. DO NOT EDIT! */
-
-/* emulate the original gld for the given ${EMULATION_NAME}
- Copyright (C) 1991, 93, 96, 97, 98, 1999 Free Software Foundation, Inc.
- Written by Steve Chamberlain steve@cygnus.com
-
-This file is part of GLD, the Gnu Linker.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#define TARGET_IS_${EMULATION_NAME}
-
-#include "bfd.h"
-#include "sysdep.h"
-
-#include <ctype.h>
-
-#include "bfdlink.h"
-#include "getopt.h"
-
-#include "ld.h"
-#include "ldmain.h"
-#include "ldemul.h"
-#include "ldfile.h"
-#include "ldmisc.h"
-
-#include "ldexp.h"
-#include "ldlang.h"
-#include "ldgram.h"
-
-static boolean gld${EMULATION_NAME}_open_dynamic_archive
- PARAMS ((const char *, search_dirs_type *, lang_input_statement_type *));
-static void gld${EMULATION_NAME}_after_open PARAMS ((void));
-static void gld${EMULATION_NAME}_check_needed
- PARAMS ((lang_input_statement_type *));
-static void gld${EMULATION_NAME}_stat_needed
- PARAMS ((lang_input_statement_type *));
-static boolean gld${EMULATION_NAME}_search_needed
- PARAMS ((const char *, const char *, int));
-static boolean gld${EMULATION_NAME}_try_needed PARAMS ((const char *, int));
-static void gld${EMULATION_NAME}_vercheck
- PARAMS ((lang_input_statement_type *));
-static void gld${EMULATION_NAME}_find_statement_assignment
- PARAMS ((lang_statement_union_type *));
-static void gld${EMULATION_NAME}_find_exp_assignment PARAMS ((etree_type *));
-static boolean gld${EMULATION_NAME}_place_orphan
- PARAMS ((lang_input_statement_type *, asection *));
-static void gld${EMULATION_NAME}_place_section
- PARAMS ((lang_statement_union_type *));
-static void gld${EMULATION_NAME}_before_parse PARAMS ((void));
-static void gld${EMULATION_NAME}_before_allocation PARAMS ((void));
-static char *gld${EMULATION_NAME}_get_script PARAMS ((int *isfile));
-static int gld${EMULATION_NAME}_parse_args PARAMS((int, char **));
-static void gld${EMULATION_NAME}_list_options PARAMS ((FILE *));
-static void gld${EMULATION_NAME}_finish PARAMS ((void));
+# Copyright (C) 1991, 93, 96, 97, 98, 99, 2000
+# Free Software Foundation, Inc.
+#
+# This file is part of GLD, the Gnu Linker.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+# This file is sourced from elf32.em, and defines extra arm-elf
+# specific routines.
+#
+cat >>e${EMULATION_NAME}.c <<EOF
-
static int no_pipeline_knowledge = 0;
-static char * thumb_entry_symbol = NULL;
-
-#define OPTION_THUMB_ENTRY 301
+static char *thumb_entry_symbol = NULL;
-static struct option longopts[] =
-{
- { "no-pipeline-knowledge", no_argument, NULL, 'p'},
- { "thumb-entry", required_argument, NULL, OPTION_THUMB_ENTRY},
- { NULL, no_argument, NULL, 0 }
-};
-
-static void
-gld${EMULATION_NAME}_list_options (file)
- FILE * file;
-{
- fprintf (file, _(" -p --no-pipeline-knowledge Stop the linker knowing about the pipeline length\n"));
- fprintf (file, _(" --thumb-entry=<sym> Set the entry point to be Thumb symbol <sym>\n"));
-}
-
-static int
-gld${EMULATION_NAME}_parse_args (argc, argv)
- int argc;
- char ** argv;
-{
- int longind;
- int optc;
- int prevoptind = optind;
- int prevopterr = opterr;
- int wanterror;
- static int lastoptind = -1;
-
- if (lastoptind != optind)
- opterr = 0;
-
- wanterror = opterr;
- lastoptind = optind;
-
- optc = getopt_long_only (argc, argv, "-p", longopts, & longind);
- opterr = prevopterr;
-
- switch (optc)
- {
- default:
- if (wanterror)
- xexit (1);
- optind = prevoptind;
- return 0;
-
- case 'p':
- no_pipeline_knowledge = 1;
- break;
-
- case OPTION_THUMB_ENTRY:
- thumb_entry_symbol = optarg;
- break;
- }
-
- return 1;
-}
-
static void
gld${EMULATION_NAME}_before_parse ()
@@ -143,174 +38,12 @@ gld${EMULATION_NAME}_before_parse ()
config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo true ; else echo false ; fi`;
}
-/* Try to open a dynamic archive. This is where we know that ELF
- dynamic libraries have an extension of .so. */
-static boolean
-gld${EMULATION_NAME}_open_dynamic_archive (arch, search, entry)
- const char *arch;
- search_dirs_type *search;
- lang_input_statement_type *entry;
-{
- const char *filename;
- char *string;
-
- if (! entry->is_archive)
- return false;
-
- filename = entry->filename;
-
- string = (char *) xmalloc (strlen (search->name)
- + strlen (filename)
- + strlen (arch)
- + sizeof "/lib.so");
-
- sprintf (string, "%s/lib%s%s.so", search->name, filename, arch);
-
- if (! ldfile_try_open_bfd (string, entry))
- {
- free (string);
- return false;
- }
-
- entry->filename = string;
-
- /* We have found a dynamic object to include in the link. The ELF
- backend linker will create a DT_NEEDED entry in the .dynamic
- section naming this file. If this file includes a DT_SONAME
- entry, it will be used. Otherwise, the ELF linker will just use
- the name of the file. For an archive found by searching, like
- this one, the DT_NEEDED entry should consist of just the name of
- the file, without the path information used to find it. Note
- that we only need to do this if we have a dynamic object; an
- archive will never be referenced by a DT_NEEDED entry.
-
- FIXME: This approach--using bfd_elf_set_dt_needed_name--is not
- very pretty. I haven't been able to think of anything that is
- pretty, though. */
- if (bfd_check_format (entry->the_bfd, bfd_object)
- && (entry->the_bfd->flags & DYNAMIC) != 0)
- {
- char *needed_name;
-
- ASSERT (entry->is_archive && entry->search_dirs_flag);
- needed_name = (char *) xmalloc (strlen (filename)
- + strlen (arch)
- + sizeof "lib.so");
- sprintf (needed_name, "lib%s%s.so", filename, arch);
- bfd_elf_set_dt_needed_name (entry->the_bfd, needed_name);
- }
-
- return true;
-}
-
-EOF
-if [ "x${host}" = "x${target}" ] ; then
- case " ${EMULATION_LIBPATH} " in
- *" ${EMULATION_NAME} "*)
-cat >>e${EMULATION_NAME}.c <<EOF
-
-/* For a native linker, check the file /etc/ld.so.conf for directories
- in which we may find shared libraries. /etc/ld.so.conf is really
- only meaningful on Linux, but we check it on other systems anyhow. */
-
-static boolean gld${EMULATION_NAME}_check_ld_so_conf
- PARAMS ((const char *, int));
-
-static boolean
-gld${EMULATION_NAME}_check_ld_so_conf (name, force)
- const char *name;
- int force;
-{
- static boolean initialized;
- static char *ld_so_conf;
-
- if (! initialized)
- {
- FILE *f;
-
- f = fopen ("/etc/ld.so.conf", FOPEN_RT);
- if (f != NULL)
- {
- char *b;
- size_t len, alloc;
- int c;
-
- len = 0;
- alloc = 100;
- b = (char *) xmalloc (alloc);
-
- while ((c = getc (f)) != EOF)
- {
- if (len + 1 >= alloc)
- {
- alloc *= 2;
- b = (char *) xrealloc (b, alloc);
- }
- if (c != ':'
- && c != ' '
- && c != '\t'
- && c != '\n'
- && c != ',')
- {
- b[len] = c;
- ++len;
- }
- else
- {
- if (len > 0 && b[len - 1] != ':')
- {
- b[len] = ':';
- ++len;
- }
- }
- }
-
- if (len > 0 && b[len - 1] == ':')
- --len;
-
- if (len > 0)
- b[len] = '\0';
- else
- {
- free (b);
- b = NULL;
- }
-
- fclose (f);
-
- ld_so_conf = b;
- }
-
- initialized = true;
- }
-
- if (ld_so_conf == NULL)
- return false;
-
- return gld${EMULATION_NAME}_search_needed (ld_so_conf, name, force);
-}
-
-EOF
- ;;
- esac
-fi
-cat >>e${EMULATION_NAME}.c <<EOF
-
-/* These variables are required to pass information back and forth
- between after_open and check_needed and stat_needed and vercheck. */
-
-static struct bfd_link_needed_list *global_needed;
-static struct stat global_stat;
-static boolean global_found;
-static struct bfd_link_needed_list *global_vercheck_needed;
-static boolean global_vercheck_failed;
+static void arm_elf_after_open PARAMS((void));
static void
-gld${EMULATION_NAME}_after_open ()
+arm_elf_after_open ()
{
- struct bfd_link_needed_list *needed, *l;
-
if (strstr (bfd_get_target (output_bfd), "arm") == NULL)
{
/* The arm backend needs special fields in the output hash structure.
@@ -330,819 +63,20 @@ gld${EMULATION_NAME}_after_open ()
}
}
- /* We only need to worry about this when doing a final link. */
- if (link_info.relocateable || link_info.shared)
- return;
-
- /* Get the list of files which appear in DT_NEEDED entries in
- dynamic objects included in the link (often there will be none).
- For each such file, we want to track down the corresponding
- library, and include the symbol table in the link. This is what
- the runtime dynamic linker will do. Tracking the files down here
- permits one dynamic object to include another without requiring
- special action by the person doing the link. Note that the
- needed list can actually grow while we are stepping through this
- loop. */
- needed = bfd_elf_get_needed_list (output_bfd, &link_info);
- for (l = needed; l != NULL; l = l->next)
- {
- struct bfd_link_needed_list *ll;
- int force;
-
- /* If we've already seen this file, skip it. */
- for (ll = needed; ll != l; ll = ll->next)
- if (strcmp (ll->name, l->name) == 0)
- break;
- if (ll != l)
- continue;
-
- /* See if this file was included in the link explicitly. */
- global_needed = l;
- global_found = false;
- lang_for_each_input_file (gld${EMULATION_NAME}_check_needed);
- if (global_found)
- continue;
-
- /* We need to find this file and include the symbol table. We
- want to search for the file in the same way that the dynamic
- linker will search. That means that we want to use
- rpath_link, rpath, then the environment variable
- LD_LIBRARY_PATH (native only), then the linker script
- LIB_SEARCH_DIRS. We do not search using the -L arguments.
-
- We search twice. The first time, we skip objects which may
- introduce version mismatches. The second time, we force
- their use. See gld${EMULATION_NAME}_vercheck comment. */
- for (force = 0; force < 2; force++)
- {
- const char *lib_path;
- size_t len;
- search_dirs_type *search;
-
- if (gld${EMULATION_NAME}_search_needed (command_line.rpath_link,
- l->name, force))
- break;
- if (gld${EMULATION_NAME}_search_needed (command_line.rpath,
- l->name, force))
- break;
- if (command_line.rpath_link == NULL
- && command_line.rpath == NULL)
- {
- lib_path = (const char *) getenv ("LD_RUN_PATH");
- if (gld${EMULATION_NAME}_search_needed (lib_path, l->name,
- force))
- break;
- }
-EOF
-if [ "x${host}" = "x${target}" ] ; then
- case " ${EMULATION_LIBPATH} " in
- *" ${EMULATION_NAME} "*)
-cat >>e${EMULATION_NAME}.c <<EOF
- lib_path = (const char *) getenv ("LD_LIBRARY_PATH");
- if (gld${EMULATION_NAME}_search_needed (lib_path, l->name, force))
- break;
-EOF
- ;;
- esac
-fi
-cat >>e${EMULATION_NAME}.c <<EOF
- len = strlen (l->name);
- for (search = search_head; search != NULL; search = search->next)
- {
- char *filename;
-
- if (search->cmdline)
- continue;
- filename = (char *) xmalloc (strlen (search->name) + len + 2);
- sprintf (filename, "%s/%s", search->name, l->name);
- if (gld${EMULATION_NAME}_try_needed (filename, force))
- break;
- free (filename);
- }
- if (search != NULL)
- break;
-EOF
-if [ "x${host}" = "x${target}" ] ; then
- case " ${EMULATION_LIBPATH} " in
- *" ${EMULATION_NAME} "*)
-cat >>e${EMULATION_NAME}.c <<EOF
- if (gld${EMULATION_NAME}_check_ld_so_conf (l->name, force))
- break;
-EOF
- ;;
- esac
-fi
-cat >>e${EMULATION_NAME}.c <<EOF
- }
-
- if (force < 2)
- continue;
-
- einfo ("%P: warning: %s, needed by %B, not found (try using --rpath)\n",
- l->name, l->by);
- }
-}
-
-/* Search for a needed file in a path. */
-
-static boolean
-gld${EMULATION_NAME}_search_needed (path, name, force)
- const char *path;
- const char *name;
- int force;
-{
- const char *s;
- size_t len;
-
- if (path == NULL || *path == '\0')
- return false;
- len = strlen (name);
- while (1)
- {
- char *filename, *sset;
-
- s = strchr (path, ':');
- if (s == NULL)
- s = path + strlen (path);
-
- filename = (char *) xmalloc (s - path + len + 2);
- if (s == path)
- sset = filename;
- else
- {
- memcpy (filename, path, s - path);
- filename[s - path] = '/';
- sset = filename + (s - path) + 1;
- }
- strcpy (sset, name);
-
- if (gld${EMULATION_NAME}_try_needed (filename, force))
- return true;
-
- free (filename);
-
- if (*s == '\0')
- break;
- path = s + 1;
- }
-
- return false;
-}
-
-/* This function is called for each possible name for a dynamic object
- named by a DT_NEEDED entry. The FORCE parameter indicates whether
- to skip the check for a conflicting version. */
-
-static boolean
-gld${EMULATION_NAME}_try_needed (name, force)
- const char *name;
- int force;
-{
- bfd *abfd;
-
- abfd = bfd_openr (name, bfd_get_target (output_bfd));
- if (abfd == NULL)
- return false;
- if (! bfd_check_format (abfd, bfd_object))
- {
- (void) bfd_close (abfd);
- return false;
- }
- if ((bfd_get_file_flags (abfd) & DYNAMIC) == 0)
- {
- (void) bfd_close (abfd);
- return false;
- }
-
- /* Check whether this object would include any conflicting library
- versions. If FORCE is set, then we skip this check; we use this
- the second time around, if we couldn't find any compatible
- instance of the shared library. */
-
- if (! force)
- {
- struct bfd_link_needed_list *needed;
-
- if (! bfd_elf_get_bfd_needed_list (abfd, &needed))
- einfo ("%F%P:%B: bfd_elf_get_bfd_needed_list failed: %E\n", abfd);
-
- if (needed != NULL)
- {
- global_vercheck_needed = needed;
- global_vercheck_failed = false;
- lang_for_each_input_file (gld${EMULATION_NAME}_vercheck);
- if (global_vercheck_failed)
- {
- (void) bfd_close (abfd);
- /* Return false to force the caller to move on to try
- another file on the search path. */
- return false;
- }
-
- /* But wait! It gets much worse. On Linux, if a shared
- library does not use libc at all, we are supposed to skip
- it the first time around in case we encounter a shared
- library later on with the same name which does use the
- version of libc that we want. This is much too horrible
- to use on any system other than Linux. */
-
-EOF
-case ${target} in
- *-*-linux-gnu*)
- cat >>e${EMULATION_NAME}.c <<EOF
- {
- struct bfd_link_needed_list *l;
-
- for (l = needed; l != NULL; l = l->next)
- if (strncmp (l->name, "libc.so", 7) == 0)
- break;
- if (l == NULL)
- {
- (void) bfd_close (abfd);
- return false;
- }
- }
-
-EOF
- ;;
-esac
-cat >>e${EMULATION_NAME}.c <<EOF
- }
- }
-
- /* We've found a dynamic object matching the DT_NEEDED entry. */
-
- /* We have already checked that there is no other input file of the
- same name. We must now check again that we are not including the
- same file twice. We need to do this because on many systems
- libc.so is a symlink to, e.g., libc.so.1. The SONAME entry will
- reference libc.so.1. If we have already included libc.so, we
- don't want to include libc.so.1 if they are the same file, and we
- can only check that using stat. */
-
- if (bfd_stat (abfd, &global_stat) != 0)
- einfo ("%F%P:%B: bfd_stat failed: %E\n", abfd);
- global_found = false;
- lang_for_each_input_file (gld${EMULATION_NAME}_stat_needed);
- if (global_found)
- {
- /* Return true to indicate that we found the file, even though
- we aren't going to do anything with it. */
- return true;
- }
-
- /* Tell the ELF backend that don't want the output file to have a
- DT_NEEDED entry for this file. */
- bfd_elf_set_dt_needed_name (abfd, "");
-
- /* Add this file into the symbol table. */
- if (! bfd_link_add_symbols (abfd, &link_info))
- einfo ("%F%B: could not read symbols: %E\n", abfd);
-
- return true;
-}
-
-/* See if an input file matches a DT_NEEDED entry by name. */
-
-static void
-gld${EMULATION_NAME}_check_needed (s)
- lang_input_statement_type *s;
-{
- if (global_found)
- return;
-
- if (s->filename != NULL
- && strcmp (s->filename, global_needed->name) == 0)
- {
- global_found = true;
- return;
- }
-
- if (s->the_bfd != NULL)
- {
- const char *soname;
-
- soname = bfd_elf_get_dt_soname (s->the_bfd);
- if (soname != NULL
- && strcmp (soname, global_needed->name) == 0)
- {
- global_found = true;
- return;
- }
- }
-
- if (s->search_dirs_flag
- && s->filename != NULL
- && strchr (global_needed->name, '/') == NULL)
- {
- const char *f;
-
- f = strrchr (s->filename, '/');
- if (f != NULL
- && strcmp (f + 1, global_needed->name) == 0)
- {
- global_found = true;
- return;
- }
- }
+ /* Call the standard elf routine. */
+ gld${EMULATION_NAME}_after_open ();
}
-/* See if an input file matches a DT_NEEDED entry by running stat on
- the file. */
-static void
-gld${EMULATION_NAME}_stat_needed (s)
- lang_input_statement_type *s;
-{
- struct stat st;
- const char *suffix;
- const char *soname;
- const char *f;
-
- if (global_found)
- return;
- if (s->the_bfd == NULL)
- return;
-
- if (bfd_stat (s->the_bfd, &st) != 0)
- {
- einfo ("%P:%B: bfd_stat failed: %E\n", s->the_bfd);
- return;
- }
-
- if (st.st_dev == global_stat.st_dev
- && st.st_ino == global_stat.st_ino)
- {
- global_found = true;
- return;
- }
-
- /* We issue a warning if it looks like we are including two
- different versions of the same shared library. For example,
- there may be a problem if -lc picks up libc.so.6 but some other
- shared library has a DT_NEEDED entry of libc.so.5. This is a
- hueristic test, and it will only work if the name looks like
- NAME.so.VERSION. FIXME: Depending on file names is error-prone.
- If we really want to issue warnings about mixing version numbers
- of shared libraries, we need to find a better way. */
-
- if (strchr (global_needed->name, '/') != NULL)
- return;
- suffix = strstr (global_needed->name, ".so.");
- if (suffix == NULL)
- return;
- suffix += sizeof ".so." - 1;
-
- soname = bfd_elf_get_dt_soname (s->the_bfd);
- if (soname == NULL)
- soname = s->filename;
-
- f = strrchr (soname, '/');
- if (f != NULL)
- ++f;
- else
- f = soname;
-
- if (strncmp (f, global_needed->name, suffix - global_needed->name) == 0)
- einfo ("%P: warning: %s, needed by %B, may conflict with %s\n",
- global_needed->name, global_needed->by, f);
-}
-
-/* On Linux, it's possible to have different versions of the same
- shared library linked against different versions of libc. The
- dynamic linker somehow tags which libc version to use in
- /etc/ld.so.cache, and, based on the libc that it sees in the
- executable, chooses which version of the shared library to use.
-
- We try to do a similar check here by checking whether this shared
- library needs any other shared libraries which may conflict with
- libraries we have already included in the link. If it does, we
- skip it, and try to find another shared library farther on down the
- link path.
-
- This is called via lang_for_each_input_file.
- GLOBAL_VERCHECK_NEEDED is the list of objects needed by the object
- which we ar checking. This sets GLOBAL_VERCHECK_FAILED if we find
- a conflicting version. */
+static void arm_elf_before_allocation PARAMS ((void));
static void
-gld${EMULATION_NAME}_vercheck (s)
- lang_input_statement_type *s;
+arm_elf_before_allocation ()
{
- const char *soname, *f;
- struct bfd_link_needed_list *l;
-
- if (global_vercheck_failed)
- return;
- if (s->the_bfd == NULL
- || (bfd_get_file_flags (s->the_bfd) & DYNAMIC) == 0)
- return;
-
- soname = bfd_elf_get_dt_soname (s->the_bfd);
- if (soname == NULL)
- soname = bfd_get_filename (s->the_bfd);
-
- f = strrchr (soname, '/');
- if (f != NULL)
- ++f;
- else
- f = soname;
-
- for (l = global_vercheck_needed; l != NULL; l = l->next)
- {
- const char *suffix;
-
- if (strcmp (f, l->name) == 0)
- {
- /* Probably can't happen, but it's an easy check. */
- continue;
- }
-
- if (strchr (l->name, '/') != NULL)
- continue;
-
- suffix = strstr (l->name, ".so.");
- if (suffix == NULL)
- continue;
+ /* Call the standard elf routine. */
+ gld${EMULATION_NAME}_before_allocation ();
- suffix += sizeof ".so." - 1;
-
- if (strncmp (f, l->name, suffix - l->name) == 0)
- {
- /* Here we know that S is a dynamic object FOO.SO.VER1, and
- the object we are considering needs a dynamic object
- FOO.SO.VER2, and VER1 and VER2 are different. This
- appears to be a version mismatch, so we tell the caller
- to try a different version of this library. */
- global_vercheck_failed = true;
- return;
- }
- }
-}
-
-/* Place an orphan section. We use this to put random SHF_ALLOC
- sections in the right segment. */
-
-static asection *hold_section;
-static lang_output_section_statement_type *hold_use;
-static lang_output_section_statement_type *hold_text;
-static lang_output_section_statement_type *hold_rodata;
-static lang_output_section_statement_type *hold_data;
-static lang_output_section_statement_type *hold_bss;
-static lang_output_section_statement_type *hold_rel;
-static lang_output_section_statement_type *hold_interp;
-
-/*ARGSUSED*/
-static boolean
-gld${EMULATION_NAME}_place_orphan (file, s)
- lang_input_statement_type *file;
- asection *s;
-{
- lang_output_section_statement_type *place;
- asection *snew, **pps;
- lang_statement_list_type *old;
- lang_statement_list_type add;
- etree_type *address;
- const char *secname, *ps;
- const char *outsecname;
- lang_output_section_statement_type *os;
-
- if ((s->flags & SEC_ALLOC) == 0)
- return false;
-
- /* Look through the script to see where to place this section. */
- hold_section = s;
- hold_use = NULL;
- lang_for_each_statement (gld${EMULATION_NAME}_place_section);
-
- if (hold_use != NULL)
- {
- /* We have already placed a section with this name. */
- wild_doit (&hold_use->children, s, hold_use, file);
- return true;
- }
-
- secname = bfd_get_section_name (s->owner, s);
-
- /* If this is a final link, then always put .gnu.warning.SYMBOL
- sections into the .text section to get them out of the way. */
- if (! link_info.shared
- && ! link_info.relocateable
- && strncmp (secname, ".gnu.warning.", sizeof ".gnu.warning." - 1) == 0
- && hold_text != NULL)
- {
- wild_doit (&hold_text->children, s, hold_text, file);
- return true;
- }
-
- /* Decide which segment the section should go in based on the
- section name and section flags. We put loadable .note sections
- right after the .interp section, so that the PT_NOTE segment is
- stored right after the program headers where the OS can read it
- in the first page. */
- place = NULL;
- if (s->flags & SEC_EXCLUDE)
- return false;
- else if ((s->flags & SEC_LOAD) != 0
- && strncmp (secname, ".note", 4) == 0
- && hold_interp != NULL)
- place = hold_interp;
- else if ((s->flags & SEC_HAS_CONTENTS) == 0
- && hold_bss != NULL)
- place = hold_bss;
- else if ((s->flags & SEC_READONLY) == 0
- && hold_data != NULL)
- place = hold_data;
- else if (strncmp (secname, ".rel", 4) == 0
- && hold_rel != NULL)
- place = hold_rel;
- else if ((s->flags & SEC_CODE) == 0
- && (s->flags & SEC_READONLY) != 0
- && hold_rodata != NULL)
- place = hold_rodata;
- else if ((s->flags & SEC_READONLY) != 0
- && hold_text != NULL)
- place = hold_text;
- if (place == NULL)
- return false;
-
- /* Choose a unique name for the section. This will be needed if the
- same section name appears in the input file with different
- loadable or allocateable characteristics. */
- outsecname = secname;
- if (bfd_get_section_by_name (output_bfd, outsecname) != NULL)
- {
- unsigned int len;
- char *newname;
- unsigned int i;
-
- len = strlen (outsecname);
- newname = xmalloc (len + 5);
- strcpy (newname, outsecname);
- i = 0;
- do
- {
- sprintf (newname + len, "%d", i);
- ++i;
- }
- while (bfd_get_section_by_name (output_bfd, newname) != NULL);
-
- outsecname = newname;
- }
-
- /* Create the section in the output file, and put it in the right
- place. This shuffling is to make the output file look neater. */
- snew = bfd_make_section (output_bfd, outsecname);
- if (snew == NULL)
- einfo ("%P%F: output format %s cannot represent section called %s\n",
- output_bfd->xvec->name, outsecname);
- if (place->bfd_section != NULL)
- {
- for (pps = &output_bfd->sections; *pps != snew; pps = &(*pps)->next)
- ;
- *pps = snew->next;
- snew->next = place->bfd_section->next;
- place->bfd_section->next = snew;
- }
-
- /* Start building a list of statements for this section. */
- old = stat_ptr;
- stat_ptr = &add;
- lang_list_init (stat_ptr);
-
- /* If the name of the section is representable in C, then create
- symbols to mark the start and the end of the section. */
- for (ps = outsecname; *ps != '\0'; ps++)
- if (! isalnum ((unsigned char) *ps) && *ps != '_')
- break;
- if (*ps == '\0' && config.build_constructors)
- {
- char *symname;
-
- symname = (char *) xmalloc (ps - outsecname + sizeof "__start_");
- sprintf (symname, "__start_%s", outsecname);
- lang_add_assignment (exp_assop ('=', symname,
- exp_unop (ALIGN_K,
- exp_intop ((bfd_vma) 1
- << s->alignment_power))));
- }
-
- if (! link_info.relocateable)
- address = NULL;
- else
- address = exp_intop ((bfd_vma) 0);
-
- lang_enter_output_section_statement (outsecname, address, 0,
- (bfd_vma) 0,
- (etree_type *) NULL,
- (etree_type *) NULL,
- (etree_type *) NULL);
-
- os = lang_output_section_statement_lookup (outsecname);
- wild_doit (&os->children, s, os, file);
-
- lang_leave_output_section_statement
- ((bfd_vma) 0, "*default*", (struct lang_output_section_phdr_list *) NULL,
- "*default*");
- stat_ptr = &add;
-
- if (*ps == '\0' && config.build_constructors)
- {
- char *symname;
-
- symname = (char *) xmalloc (ps - outsecname + sizeof "__stop_");
- sprintf (symname, "__stop_%s", outsecname);
- lang_add_assignment (exp_assop ('=', symname,
- exp_nameop (NAME, ".")));
- }
-
- /* Now stick the new statement list right after PLACE. */
- *add.tail = place->header.next;
- place->header.next = add.head;
-
- stat_ptr = old;
-
- return true;
-}
-
-static void
-gld${EMULATION_NAME}_place_section (s)
- lang_statement_union_type *s;
-{
- lang_output_section_statement_type *os;
-
- if (s->header.type != lang_output_section_statement_enum)
- return;
-
- os = &s->output_section_statement;
-
- if (strcmp (os->name, hold_section->name) == 0
- && os->bfd_section != NULL
- && ((hold_section->flags & (SEC_LOAD | SEC_ALLOC))
- == (os->bfd_section->flags & (SEC_LOAD | SEC_ALLOC))))
- hold_use = os;
-
- if (strcmp (os->name, ".text") == 0)
- hold_text = os;
- else if (strcmp (os->name, ".rodata") == 0)
- hold_rodata = os;
- else if (strcmp (os->name, ".data") == 0)
- hold_data = os;
- else if (strcmp (os->name, ".bss") == 0)
- hold_bss = os;
- else if (hold_rel == NULL
- && os->bfd_section != NULL
- && (os->bfd_section->flags & SEC_ALLOC) != 0
- && strncmp (os->name, ".rel", 4) == 0)
- hold_rel = os;
- else if (strcmp (os->name, ".interp") == 0)
- hold_interp = os;
-}
-
-/* Look through an expression for an assignment statement. */
-
-static void
-gld${EMULATION_NAME}_find_exp_assignment (exp)
- etree_type *exp;
-{
- struct bfd_link_hash_entry *h;
-
- switch (exp->type.node_class)
- {
- case etree_provide:
- h = bfd_link_hash_lookup (link_info.hash, exp->assign.dst,
- false, false, false);
- if (h == NULL)
- break;
-
- /* We call record_link_assignment even if the symbol is defined.
- This is because if it is defined by a dynamic object, we
- actually want to use the value defined by the linker script,
- not the value from the dynamic object (because we are setting
- symbols like etext). If the symbol is defined by a regular
- object, then, as it happens, calling record_link_assignment
- will do no harm. */
-
- /* Fall through. */
- case etree_assign:
- if (strcmp (exp->assign.dst, ".") != 0)
- {
- if (! (bfd_elf${ELFSIZE}_record_link_assignment
- (output_bfd, &link_info, exp->assign.dst,
- exp->type.node_class == etree_provide ? true : false)))
- einfo ("%P%F: failed to record assignment to %s: %E\n",
- exp->assign.dst);
- }
- gld${EMULATION_NAME}_find_exp_assignment (exp->assign.src);
- break;
-
- case etree_binary:
- gld${EMULATION_NAME}_find_exp_assignment (exp->binary.lhs);
- gld${EMULATION_NAME}_find_exp_assignment (exp->binary.rhs);
- break;
-
- case etree_trinary:
- gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.cond);
- gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.lhs);
- gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.rhs);
- break;
-
- case etree_unary:
- gld${EMULATION_NAME}_find_exp_assignment (exp->unary.child);
- break;
-
- default:
- break;
- }
-}
-
-/* This is called by the before_allocation routine via
- lang_for_each_statement. It locates any assignment statements, and
- tells the ELF backend about them, in case they are assignments to
- symbols which are referred to by dynamic objects. */
-
-static void
-gld${EMULATION_NAME}_find_statement_assignment (s)
- lang_statement_union_type *s;
-{
- if (s->header.type == lang_assignment_statement_enum)
- gld${EMULATION_NAME}_find_exp_assignment (s->assignment_statement.exp);
-}
-
-/* This is called after the sections have been attached to output
- sections, but before any sizes or addresses have been set. */
-
-static void
-gld${EMULATION_NAME}_before_allocation ()
-{
- const char *rpath;
- asection *sinterp;
-
- /* If we are going to make any variable assignments, we need to let
- the ELF backend know about them in case the variables are
- referred to by dynamic objects. */
- lang_for_each_statement (gld${EMULATION_NAME}_find_statement_assignment);
-
- /* Let the ELF backend work out the sizes of any sections required
- by dynamic linking. */
- rpath = command_line.rpath;
- if (rpath == NULL)
- rpath = (const char *) getenv ("LD_RUN_PATH");
- if (! (bfd_elf${ELFSIZE}_size_dynamic_sections
- (output_bfd, command_line.soname, rpath,
- command_line.export_dynamic, command_line.filter_shlib,
- (const char * const *) command_line.auxiliary_filters,
- &link_info, &sinterp, lang_elf_version_info)))
- einfo ("%P%F: failed to set dynamic section sizes: %E\n");
-
- /* Let the user override the dynamic linker we are using. */
- if (command_line.interpreter != NULL
- && sinterp != NULL)
- {
- sinterp->contents = (bfd_byte *) command_line.interpreter;
- sinterp->_raw_size = strlen (command_line.interpreter) + 1;
- }
-
- /* Look for any sections named .gnu.warning. As a GNU extensions,
- we treat such sections as containing warning messages. We print
- out the warning message, and then zero out the section size so
- that it does not get copied into the output file. */
-
- {
- LANG_FOR_EACH_INPUT_STATEMENT (is)
- {
- asection *s;
- bfd_size_type sz;
- char *msg;
- boolean ret;
-
- if (is->just_syms_flag)
- continue;
-
- s = bfd_get_section_by_name (is->the_bfd, ".gnu.warning");
- if (s == NULL)
- continue;
-
- sz = bfd_section_size (is->the_bfd, s);
- msg = xmalloc ((size_t) sz + 1);
- if (! bfd_get_section_contents (is->the_bfd, s, msg, (file_ptr) 0, sz))
- einfo ("%F%B: Can't read contents of section .gnu.warning: %E\n",
- is->the_bfd);
- msg[sz] = '\0';
- ret = link_info.callbacks->warning (&link_info, msg,
- (const char *) NULL,
- is->the_bfd, (asection *) NULL,
- (bfd_vma) 0);
- ASSERT (ret);
- free (msg);
-
- /* Clobber the section size, so that we don't waste copying the
- warning into the output file. */
- s->_raw_size = 0;
- }
- }
-
- /* we should be able to set the size of the interworking stub section */
+ /* We should be able to set the size of the interworking stub section */
/* Here we rummage through the found bfds to collect glue information */
/* FIXME: should this be based on a command line option? krk@cygnus.com */
@@ -1162,6 +96,9 @@ gld${EMULATION_NAME}_before_allocation ()
bfd_elf32_arm_allocate_interworking_sections (& link_info);
}
+
+static void gld${EMULATION_NAME}_finish PARAMS ((void));
+
static void
gld${EMULATION_NAME}_finish PARAMS((void))
{
@@ -1170,7 +107,8 @@ gld${EMULATION_NAME}_finish PARAMS((void))
if (thumb_entry_symbol == NULL)
return;
- h = bfd_link_hash_lookup (link_info.hash, thumb_entry_symbol, false, false, true);
+ h = bfd_link_hash_lookup (link_info.hash, thumb_entry_symbol,
+ false, false, true);
if (h != (struct bfd_link_hash_entry *) NULL
&& (h->type == bfd_link_hash_defined
@@ -1202,92 +140,48 @@ gld${EMULATION_NAME}_finish PARAMS((void))
entry_symbol = buffer;
}
else
- einfo (_("%P: warning: connot find thumb start symbol %s\n"), thumb_entry_symbol);
+ einfo (_("%P: warning: connot find thumb start symbol %s\n"),
+ thumb_entry_symbol);
}
-static char *
-gld${EMULATION_NAME}_get_script (isfile)
- int *isfile;
EOF
-if test -n "$COMPILE_IN"
-then
-# Scripts compiled in.
+# Define some shell vars to insert bits of code into the standard elf
+# parse_args and list_options functions.
+#
+PARSE_AND_LIST_PROLOGUE='
+#define OPTION_THUMB_ENTRY 301
+'
-# sed commands to quote an ld script as a C string.
-sc="-f stringify.sed"
+PARSE_AND_LIST_SHORTOPTS=p
-cat >>e${EMULATION_NAME}.c <<EOF
-{
- *isfile = 0;
-
- if (link_info.relocateable == true && config.build_constructors == true)
- return
-EOF
-sed $sc ldscripts/${EMULATION_NAME}.xu >> e${EMULATION_NAME}.c
-echo ' ; else if (link_info.relocateable == true) return' >> e${EMULATION_NAME}.c
-sed $sc ldscripts/${EMULATION_NAME}.xr >> e${EMULATION_NAME}.c
-echo ' ; else if (!config.text_read_only) return' >> e${EMULATION_NAME}.c
-sed $sc ldscripts/${EMULATION_NAME}.xbn >> e${EMULATION_NAME}.c
-echo ' ; else if (!config.magic_demand_paged) return' >> e${EMULATION_NAME}.c
-sed $sc ldscripts/${EMULATION_NAME}.xn >> e${EMULATION_NAME}.c
-if test -n "$GENERATE_SHLIB_SCRIPT" ; then
- echo ' ; else if (link_info.shared) return' >> e${EMULATION_NAME}.c
- sed $sc ldscripts/${EMULATION_NAME}.xs >> e${EMULATION_NAME}.c
-fi
-echo ' ; else return' >> e${EMULATION_NAME}.c
-sed $sc ldscripts/${EMULATION_NAME}.x >> e${EMULATION_NAME}.c
-echo '; }' >> e${EMULATION_NAME}.c
+PARSE_AND_LIST_LONGOPTS='
+ { "no-pipeline-knowledge", no_argument, NULL, '\'p\''},
+ { "thumb-entry", required_argument, NULL, OPTION_THUMB_ENTRY},
+'
-else
-# Scripts read from the filesystem.
+PARSE_AND_LIST_OPTIONS='
+ fprintf (file, _(" -p --no-pipeline-knowledge Stop the linker knowing about the pipeline length\n"));
+ fprintf (file, _(" --thumb-entry=<sym> Set the entry point to be Thumb symbol <sym>\n"));
+'
-cat >>e${EMULATION_NAME}.c <<EOF
-{
- *isfile = 1;
+PARSE_AND_LIST_ARGS_CASES='
+ case '\'p\'':
+ no_pipeline_knowledge = 1;
+ break;
- if (link_info.relocateable == true && config.build_constructors == true)
- return "ldscripts/${EMULATION_NAME}.xu";
- else if (link_info.relocateable == true)
- return "ldscripts/${EMULATION_NAME}.xr";
- else if (!config.text_read_only)
- return "ldscripts/${EMULATION_NAME}.xbn";
- else if (!config.magic_demand_paged)
- return "ldscripts/${EMULATION_NAME}.xn";
- else if (link_info.shared)
- return "ldscripts/${EMULATION_NAME}.xs";
- else
- return "ldscripts/${EMULATION_NAME}.x";
-}
-EOF
+ case OPTION_THUMB_ENTRY:
+ thumb_entry_symbol = optarg;
+ break;
+'
-fi
+# We have our own after_open and before_allocation functions, but they call
+# the standard routines, so give them a different name.
+LDEMUL_AFTER_OPEN=arm_elf_after_open
+LDEMUL_BEFORE_ALLOCATION=arm_elf_before_allocation
-cat >>e${EMULATION_NAME}.c <<EOF
+# Replace the elf before_parse function with our own.
+LDEMUL_BEFORE_PARSE=gld"${EMULATION_NAME}"_before_parse
-struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
-{
- gld${EMULATION_NAME}_before_parse,
- syslib_default,
- hll_default,
- after_parse_default,
- gld${EMULATION_NAME}_after_open,
- after_allocation_default,
- set_output_arch_default,
- ldemul_default_target,
- gld${EMULATION_NAME}_before_allocation,
- gld${EMULATION_NAME}_get_script,
- "${EMULATION_NAME}",
- "${OUTPUT_FORMAT}",
- gld${EMULATION_NAME}_finish,
- NULL, /* create output section statements */
- gld${EMULATION_NAME}_open_dynamic_archive,
- gld${EMULATION_NAME}_place_orphan,
- NULL, /* set symbols */
- gld${EMULATION_NAME}_parse_args,
- NULL, /* unrecognized file */
- gld${EMULATION_NAME}_list_options,
- NULL, /* recognized file */
- NULL /* find_potential_libraries */
-};
-EOF
+# Call the extra arm-elf function
+LDEMUL_FINISH=gld${EMULATION_NAME}_finish
diff --git a/contrib/binutils/ld/emultempl/armelf_oabi.em b/contrib/binutils/ld/emultempl/armelf_oabi.em
index d8ca87a..7936d48 100644
--- a/contrib/binutils/ld/emultempl/armelf_oabi.em
+++ b/contrib/binutils/ld/emultempl/armelf_oabi.em
@@ -4,7 +4,8 @@ cat >e${EMULATION_NAME}.c <<EOF
/* This file is is generated by a shell script. DO NOT EDIT! */
/* emulate the original gld for the given ${EMULATION_NAME}
- Copyright (C) 1991, 93, 96, 97, 98, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1991, 93, 96, 97, 98, 99, 2000
+ Free Software Foundation, Inc.
Written by Steve Chamberlain steve@cygnus.com
This file is part of GLD, the Gnu Linker.
@@ -39,12 +40,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "ld.h"
#include "ldmain.h"
-#include "ldemul.h"
-#include "ldfile.h"
#include "ldmisc.h"
#include "ldexp.h"
#include "ldlang.h"
+#include "ldfile.h"
+#include "ldemul.h"
static void gld${EMULATION_NAME}_before_parse PARAMS ((void));
static void gld${EMULATION_NAME}_before_allocation PARAMS ((void));
diff --git a/contrib/binutils/ld/emultempl/elf32.em b/contrib/binutils/ld/emultempl/elf32.em
index b502d9e..9ac2d41 100644
--- a/contrib/binutils/ld/emultempl/elf32.em
+++ b/contrib/binutils/ld/emultempl/elf32.em
@@ -7,7 +7,7 @@ cat >e${EMULATION_NAME}.c <<EOF
/* This file is is generated by a shell script. DO NOT EDIT! */
/* ${ELFSIZE} bit ELF emulation code for ${EMULATION_NAME}
- Copyright (C) 1991, 93, 94, 95, 96, 97, 98, 99, 2000
+ Copyright (C) 1991, 93, 94, 95, 96, 97, 98, 99, 2000, 2001
Free Software Foundation, Inc.
Written by Steve Chamberlain <sac@cygnus.com>
ELF support by Ian Lance Taylor <ian@cygnus.com>
@@ -39,134 +39,402 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "ld.h"
#include "ldmain.h"
-#include "ldemul.h"
-#include "ldfile.h"
#include "ldmisc.h"
#include "ldexp.h"
#include "ldlang.h"
+#include "ldfile.h"
+#include "ldemul.h"
#include "ldgram.h"
+#include "elf/common.h"
static void gld${EMULATION_NAME}_before_parse PARAMS ((void));
-static boolean gld${EMULATION_NAME}_open_dynamic_archive
- PARAMS ((const char *, search_dirs_type *, lang_input_statement_type *));
-static void gld${EMULATION_NAME}_after_open PARAMS ((void));
-static void gld${EMULATION_NAME}_check_needed
+static void gld${EMULATION_NAME}_vercheck
PARAMS ((lang_input_statement_type *));
static void gld${EMULATION_NAME}_stat_needed
PARAMS ((lang_input_statement_type *));
+static boolean gld${EMULATION_NAME}_try_needed PARAMS ((const char *, int));
static boolean gld${EMULATION_NAME}_search_needed
PARAMS ((const char *, const char *, int));
-static boolean gld${EMULATION_NAME}_try_needed PARAMS ((const char *, int));
-static void gld${EMULATION_NAME}_vercheck
+static void gld${EMULATION_NAME}_check_needed
PARAMS ((lang_input_statement_type *));
-static void gld${EMULATION_NAME}_before_allocation PARAMS ((void));
+static void gld${EMULATION_NAME}_after_open PARAMS ((void));
+static void gld${EMULATION_NAME}_find_exp_assignment PARAMS ((etree_type *));
static void gld${EMULATION_NAME}_find_statement_assignment
PARAMS ((lang_statement_union_type *));
-static void gld${EMULATION_NAME}_find_exp_assignment PARAMS ((etree_type *));
+static void gld${EMULATION_NAME}_before_allocation PARAMS ((void));
+static boolean gld${EMULATION_NAME}_open_dynamic_archive
+ PARAMS ((const char *, search_dirs_type *, lang_input_statement_type *));
static lang_output_section_statement_type *output_rel_find PARAMS ((void));
static boolean gld${EMULATION_NAME}_place_orphan
PARAMS ((lang_input_statement_type *, asection *));
static char *gld${EMULATION_NAME}_get_script PARAMS ((int *isfile));
+EOF
+
+# Import any needed special functions and/or overrides.
+#
+if test -n "$EXTRA_EM_FILE" ; then
+. ${srcdir}/emultempl/${EXTRA_EM_FILE}.em
+fi
+
+# Functions in this file can be overridden by setting the LDEMUL_* shell
+# variables. If the name of the overriding function is the same as is
+# defined in this file, then don't output this file's version.
+# If a different overriding name is given then output the standard function
+# as presumably it is called from the overriding function.
+#
+if test x"$LDEMUL_BEFORE_PARSE" != xgld"$EMULATION_NAME"_before_parse; then
+cat >>e${EMULATION_NAME}.c <<EOF
+
static void
-gld${EMULATION_NAME}_before_parse()
+gld${EMULATION_NAME}_before_parse ()
{
ldfile_output_architecture = bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`;
config.dynamic_link = ${DYNAMIC_LINK-true};
config.has_shared = `if test -n "$GENERATE_SHLIB_SCRIPT" ; then echo true ; else echo false ; fi`;
}
-/* Try to open a dynamic archive. This is where we know that ELF
- dynamic libraries have an extension of .so (or .sl on oddball systems
- like hpux). */
+EOF
+fi
+
+cat >>e${EMULATION_NAME}.c <<EOF
+
+/* These variables are required to pass information back and forth
+ between after_open and check_needed and stat_needed and vercheck. */
+
+static struct bfd_link_needed_list *global_needed;
+static struct stat global_stat;
+static boolean global_found;
+static struct bfd_link_needed_list *global_vercheck_needed;
+static boolean global_vercheck_failed;
+
+
+/* On Linux, it's possible to have different versions of the same
+ shared library linked against different versions of libc. The
+ dynamic linker somehow tags which libc version to use in
+ /etc/ld.so.cache, and, based on the libc that it sees in the
+ executable, chooses which version of the shared library to use.
+
+ We try to do a similar check here by checking whether this shared
+ library needs any other shared libraries which may conflict with
+ libraries we have already included in the link. If it does, we
+ skip it, and try to find another shared library farther on down the
+ link path.
+
+ This is called via lang_for_each_input_file.
+ GLOBAL_VERCHECK_NEEDED is the list of objects needed by the object
+ which we are checking. This sets GLOBAL_VERCHECK_FAILED if we find
+ a conflicting version. */
+
+static void
+gld${EMULATION_NAME}_vercheck (s)
+ lang_input_statement_type *s;
+{
+ const char *soname, *f;
+ struct bfd_link_needed_list *l;
+
+ if (global_vercheck_failed)
+ return;
+ if (s->the_bfd == NULL
+ || (bfd_get_file_flags (s->the_bfd) & DYNAMIC) == 0)
+ return;
+
+ soname = bfd_elf_get_dt_soname (s->the_bfd);
+ if (soname == NULL)
+ soname = bfd_get_filename (s->the_bfd);
+
+ f = strrchr (soname, '/');
+ if (f != NULL)
+ ++f;
+ else
+ f = soname;
+
+ for (l = global_vercheck_needed; l != NULL; l = l->next)
+ {
+ const char *suffix;
+
+ if (strcmp (f, l->name) == 0)
+ {
+ /* Probably can't happen, but it's an easy check. */
+ continue;
+ }
+
+ if (strchr (l->name, '/') != NULL)
+ continue;
+
+ suffix = strstr (l->name, ".so.");
+ if (suffix == NULL)
+ continue;
+
+ suffix += sizeof ".so." - 1;
+
+ if (strncmp (f, l->name, suffix - l->name) == 0)
+ {
+ /* Here we know that S is a dynamic object FOO.SO.VER1, and
+ the object we are considering needs a dynamic object
+ FOO.SO.VER2, and VER1 and VER2 are different. This
+ appears to be a version mismatch, so we tell the caller
+ to try a different version of this library. */
+ global_vercheck_failed = true;
+ return;
+ }
+ }
+}
+
+
+/* See if an input file matches a DT_NEEDED entry by running stat on
+ the file. */
+
+static void
+gld${EMULATION_NAME}_stat_needed (s)
+ lang_input_statement_type *s;
+{
+ struct stat st;
+ const char *suffix;
+ const char *soname;
+ const char *f;
+
+ if (global_found)
+ return;
+ if (s->the_bfd == NULL)
+ return;
+
+ if (bfd_stat (s->the_bfd, &st) != 0)
+ {
+ einfo ("%P:%B: bfd_stat failed: %E\n", s->the_bfd);
+ return;
+ }
+
+ if (st.st_dev == global_stat.st_dev
+ && st.st_ino == global_stat.st_ino)
+ {
+ global_found = true;
+ return;
+ }
+
+ /* We issue a warning if it looks like we are including two
+ different versions of the same shared library. For example,
+ there may be a problem if -lc picks up libc.so.6 but some other
+ shared library has a DT_NEEDED entry of libc.so.5. This is a
+ heuristic test, and it will only work if the name looks like
+ NAME.so.VERSION. FIXME: Depending on file names is error-prone.
+ If we really want to issue warnings about mixing version numbers
+ of shared libraries, we need to find a better way. */
+
+ if (strchr (global_needed->name, '/') != NULL)
+ return;
+ suffix = strstr (global_needed->name, ".so.");
+ if (suffix == NULL)
+ return;
+ suffix += sizeof ".so." - 1;
+
+ soname = bfd_elf_get_dt_soname (s->the_bfd);
+ if (soname == NULL)
+ soname = s->filename;
+
+ f = strrchr (soname, '/');
+ if (f != NULL)
+ ++f;
+ else
+ f = soname;
+
+ if (strncmp (f, global_needed->name, suffix - global_needed->name) == 0)
+ einfo ("%P: warning: %s, needed by %B, may conflict with %s\n",
+ global_needed->name, global_needed->by, f);
+}
+
+
+/* This function is called for each possible name for a dynamic object
+ named by a DT_NEEDED entry. The FORCE parameter indicates whether
+ to skip the check for a conflicting version. */
static boolean
-gld${EMULATION_NAME}_open_dynamic_archive (arch, search, entry)
- const char *arch;
- search_dirs_type *search;
- lang_input_statement_type *entry;
+gld${EMULATION_NAME}_try_needed (name, force)
+ const char *name;
+ int force;
{
- const char *filename;
- char *string;
+ bfd *abfd;
+ const char *soname;
- if (! entry->is_archive)
+ abfd = bfd_openr (name, bfd_get_target (output_bfd));
+ if (abfd == NULL)
return false;
+ if (! bfd_check_format (abfd, bfd_object))
+ {
+ (void) bfd_close (abfd);
+ return false;
+ }
+ if ((bfd_get_file_flags (abfd) & DYNAMIC) == 0)
+ {
+ (void) bfd_close (abfd);
+ return false;
+ }
- filename = entry->filename;
+ /* Check whether this object would include any conflicting library
+ versions. If FORCE is set, then we skip this check; we use this
+ the second time around, if we couldn't find any compatible
+ instance of the shared library. */
- /* This allocates a few bytes too many when EXTRA_SHLIB_EXTENSION
- is defined, but it does not seem worth the headache to optimize
- away those two bytes of space. */
- string = (char *) xmalloc (strlen (search->name)
- + strlen (filename)
- + strlen (arch)
-#ifdef EXTRA_SHLIB_EXTENSION
- + strlen (EXTRA_SHLIB_EXTENSION)
-#endif
- + sizeof "/lib.so");
+ if (! force)
+ {
+ struct bfd_link_needed_list *needed;
- sprintf (string, "%s/lib%s%s.so", search->name, filename, arch);
+ if (! bfd_elf_get_bfd_needed_list (abfd, &needed))
+ einfo ("%F%P:%B: bfd_elf_get_bfd_needed_list failed: %E\n", abfd);
-#ifdef EXTRA_SHLIB_EXTENSION
- /* Try the .so extension first. If that fails build a new filename
- using EXTRA_SHLIB_EXTENSION. */
- if (! ldfile_try_open_bfd (string, entry))
- sprintf (string, "%s/lib%s%s%s", search->name,
- filename, arch, EXTRA_SHLIB_EXTENSION);
-#endif
+ if (needed != NULL)
+ {
+ global_vercheck_needed = needed;
+ global_vercheck_failed = false;
+ lang_for_each_input_file (gld${EMULATION_NAME}_vercheck);
+ if (global_vercheck_failed)
+ {
+ (void) bfd_close (abfd);
+ /* Return false to force the caller to move on to try
+ another file on the search path. */
+ return false;
+ }
- if (! ldfile_try_open_bfd (string, entry))
+ /* But wait! It gets much worse. On Linux, if a shared
+ library does not use libc at all, we are supposed to skip
+ it the first time around in case we encounter a shared
+ library later on with the same name which does use the
+ version of libc that we want. This is much too horrible
+ to use on any system other than Linux. */
+
+EOF
+case ${target} in
+ *-*-linux-gnu*)
+ cat >>e${EMULATION_NAME}.c <<EOF
+ {
+ struct bfd_link_needed_list *l;
+
+ for (l = needed; l != NULL; l = l->next)
+ if (strncmp (l->name, "libc.so", 7) == 0)
+ break;
+ if (l == NULL)
+ {
+ (void) bfd_close (abfd);
+ return false;
+ }
+ }
+
+EOF
+ ;;
+esac
+cat >>e${EMULATION_NAME}.c <<EOF
+ }
+ }
+
+ /* We've found a dynamic object matching the DT_NEEDED entry. */
+
+ /* We have already checked that there is no other input file of the
+ same name. We must now check again that we are not including the
+ same file twice. We need to do this because on many systems
+ libc.so is a symlink to, e.g., libc.so.1. The SONAME entry will
+ reference libc.so.1. If we have already included libc.so, we
+ don't want to include libc.so.1 if they are the same file, and we
+ can only check that using stat. */
+
+ if (bfd_stat (abfd, &global_stat) != 0)
+ einfo ("%F%P:%B: bfd_stat failed: %E\n", abfd);
+
+ /* First strip off everything before the last '/'. */
+ soname = strrchr (abfd->filename, '/');
+ if (soname)
+ soname++;
+ else
+ soname = abfd->filename;
+
+ if (trace_file_tries)
+ info_msg (_("found %s at %s\n"), soname, name);
+
+ global_found = false;
+ lang_for_each_input_file (gld${EMULATION_NAME}_stat_needed);
+ if (global_found)
{
- free (string);
- return false;
+ /* Return true to indicate that we found the file, even though
+ we aren't going to do anything with it. */
+ return true;
}
- entry->filename = string;
+ /* Tell the ELF backend that we don't want the output file to have a
+ DT_NEEDED entry for this file. */
+ bfd_elf_set_dt_needed_name (abfd, "");
- /* We have found a dynamic object to include in the link. The ELF
- backend linker will create a DT_NEEDED entry in the .dynamic
- section naming this file. If this file includes a DT_SONAME
- entry, it will be used. Otherwise, the ELF linker will just use
- the name of the file. For an archive found by searching, like
- this one, the DT_NEEDED entry should consist of just the name of
- the file, without the path information used to find it. Note
- that we only need to do this if we have a dynamic object; an
- archive will never be referenced by a DT_NEEDED entry.
+ /* Tell the ELF backend that the output file needs a DT_NEEDED
+ entry for this file if it is used to resolve the reference in
+ a regular object. */
+ bfd_elf_set_dt_needed_soname (abfd, soname);
- FIXME: This approach--using bfd_elf_set_dt_needed_name--is not
- very pretty. I haven't been able to think of anything that is
- pretty, though. */
- if (bfd_check_format (entry->the_bfd, bfd_object)
- && (entry->the_bfd->flags & DYNAMIC) != 0)
+ /* Add this file into the symbol table. */
+ if (! bfd_link_add_symbols (abfd, &link_info))
+ einfo ("%F%B: could not read symbols: %E\n", abfd);
+
+ return true;
+}
+
+
+/* Search for a needed file in a path. */
+
+static boolean
+gld${EMULATION_NAME}_search_needed (path, name, force)
+ const char *path;
+ const char *name;
+ int force;
+{
+ const char *s;
+ size_t len;
+
+ if (name[0] == '/')
+ return gld${EMULATION_NAME}_try_needed (name, force);
+
+ if (path == NULL || *path == '\0')
+ return false;
+ len = strlen (name);
+ while (1)
{
- char *needed_name;
+ char *filename, *sset;
- ASSERT (entry->is_archive && entry->search_dirs_flag);
+ s = strchr (path, ':');
+ if (s == NULL)
+ s = path + strlen (path);
- /* Rather than duplicating the logic above. Just use the
- filename we recorded earlier.
+ filename = (char *) xmalloc (s - path + len + 2);
+ if (s == path)
+ sset = filename;
+ else
+ {
+ memcpy (filename, path, s - path);
+ filename[s - path] = '/';
+ sset = filename + (s - path) + 1;
+ }
+ strcpy (sset, name);
- First strip off everything before the last '/'. */
- filename = strrchr (entry->filename, '/');
- filename++;
+ if (gld${EMULATION_NAME}_try_needed (filename, force))
+ return true;
- needed_name = (char *) xmalloc (strlen (filename) + 1);
- strcpy (needed_name, filename);
- bfd_elf_set_dt_needed_name (entry->the_bfd, needed_name);
+ free (filename);
+
+ if (*s == '\0')
+ break;
+ path = s + 1;
}
- return true;
+ return false;
}
EOF
if [ "x${host}" = "x${target}" ] ; then
case " ${EMULATION_LIBPATH} " in
*" ${EMULATION_NAME} "*)
-cat >>e${EMULATION_NAME}.c <<EOF
+ case ${target} in
+ *-*-linux-gnu*)
+ cat >>e${EMULATION_NAME}.c <<EOF
/* For a native linker, check the file /etc/ld.so.conf for directories
in which we may find shared libraries. /etc/ld.so.conf is really
- only meaningful on Linux, but we check it on other systems anyhow. */
+ only meaningful on Linux. */
static boolean gld${EMULATION_NAME}_check_ld_so_conf
PARAMS ((const char *, int));
@@ -246,19 +514,62 @@ gld${EMULATION_NAME}_check_ld_so_conf (name, force)
}
EOF
- ;;
+ # Linux
+ ;;
+ esac
esac
fi
cat >>e${EMULATION_NAME}.c <<EOF
-/* These variables are required to pass information back and forth
- between after_open and check_needed and stat_needed and vercheck. */
+/* See if an input file matches a DT_NEEDED entry by name. */
-static struct bfd_link_needed_list *global_needed;
-static struct stat global_stat;
-static boolean global_found;
-static struct bfd_link_needed_list *global_vercheck_needed;
-static boolean global_vercheck_failed;
+static void
+gld${EMULATION_NAME}_check_needed (s)
+ lang_input_statement_type *s;
+{
+ if (global_found)
+ return;
+
+ if (s->filename != NULL)
+ {
+ const char *f;
+
+ if (strcmp (s->filename, global_needed->name) == 0)
+ {
+ global_found = true;
+ return;
+ }
+
+ if (s->search_dirs_flag)
+ {
+ f = strrchr (s->filename, '/');
+ if (f != NULL
+ && strcmp (f + 1, global_needed->name) == 0)
+ {
+ global_found = true;
+ return;
+ }
+ }
+ }
+
+ if (s->the_bfd != NULL)
+ {
+ const char *soname;
+
+ soname = bfd_elf_get_dt_soname (s->the_bfd);
+ if (soname != NULL
+ && strcmp (soname, global_needed->name) == 0)
+ {
+ global_found = true;
+ return;
+ }
+ }
+}
+
+EOF
+
+if test x"$LDEMUL_AFTER_OPEN" != xgld"$EMULATION_NAME"_after_open; then
+cat >>e${EMULATION_NAME}.c <<EOF
/* This is called after all the input files have been opened. */
@@ -300,25 +611,46 @@ gld${EMULATION_NAME}_after_open ()
if (global_found)
continue;
+ if (trace_file_tries)
+ info_msg (_("%s needed by %B\n"), l->name, l->by);
+
/* We need to find this file and include the symbol table. We
want to search for the file in the same way that the dynamic
linker will search. That means that we want to use
rpath_link, rpath, then the environment variable
- LD_LIBRARY_PATH (native only), then the linker script
- LIB_SEARCH_DIRS. We do not search using the -L arguments.
+ LD_LIBRARY_PATH (native only), then the DT_RPATH/DT_RUNPATH
+ entries (native only), then the linker script LIB_SEARCH_DIRS.
+ We do not search using the -L arguments.
We search twice. The first time, we skip objects which may
introduce version mismatches. The second time, we force
their use. See gld${EMULATION_NAME}_vercheck comment. */
for (force = 0; force < 2; force++)
{
- const char *lib_path;
size_t len;
search_dirs_type *search;
+EOF
+if [ "x${host}" = "x${target}" ] ; then
+ case " ${EMULATION_LIBPATH} " in
+ *" ${EMULATION_NAME} "*)
+cat >>e${EMULATION_NAME}.c <<EOF
+ const char *lib_path;
+ struct bfd_link_needed_list *rp;
+ int found;
+EOF
+ ;;
+ esac
+fi
+cat >>e${EMULATION_NAME}.c <<EOF
if (gld${EMULATION_NAME}_search_needed (command_line.rpath_link,
l->name, force))
break;
+EOF
+if [ "x${host}" = "x${target}" ] ; then
+ case " ${EMULATION_LIBPATH} " in
+ *" ${EMULATION_NAME} "*)
+cat >>e${EMULATION_NAME}.c <<EOF
if (gld${EMULATION_NAME}_search_needed (command_line.rpath,
l->name, force))
break;
@@ -330,14 +662,22 @@ gld${EMULATION_NAME}_after_open ()
force))
break;
}
-EOF
-if [ "x${host}" = "x${target}" ] ; then
- case " ${EMULATION_LIBPATH} " in
- *" ${EMULATION_NAME} "*)
-cat >>e${EMULATION_NAME}.c <<EOF
lib_path = (const char *) getenv ("LD_LIBRARY_PATH");
if (gld${EMULATION_NAME}_search_needed (lib_path, l->name, force))
break;
+
+ found = 0;
+ rp = bfd_elf_get_runpath_list (output_bfd, &link_info);
+ for (; !found && rp != NULL; rp = rp->next)
+ {
+ found = (rp->by == l->by
+ && gld${EMULATION_NAME}_search_needed (rp->name,
+ l->name,
+ force));
+ }
+ if (found)
+ break;
+
EOF
;;
esac
@@ -362,10 +702,15 @@ EOF
if [ "x${host}" = "x${target}" ] ; then
case " ${EMULATION_LIBPATH} " in
*" ${EMULATION_NAME} "*)
-cat >>e${EMULATION_NAME}.c <<EOF
+ case ${target} in
+ *-*-linux-gnu*)
+ cat >>e${EMULATION_NAME}.c <<EOF
if (gld${EMULATION_NAME}_check_ld_so_conf (l->name, force))
break;
EOF
+ # Linux
+ ;;
+ esac
;;
esac
fi
@@ -380,342 +725,86 @@ cat >>e${EMULATION_NAME}.c <<EOF
}
}
-/* Search for a needed file in a path. */
-
-static boolean
-gld${EMULATION_NAME}_search_needed (path, name, force)
- const char *path;
- const char *name;
- int force;
-{
- const char *s;
- size_t len;
-
- if (path == NULL || *path == '\0')
- return false;
- len = strlen (name);
- while (1)
- {
- char *filename, *sset;
-
- s = strchr (path, ':');
- if (s == NULL)
- s = path + strlen (path);
-
- filename = (char *) xmalloc (s - path + len + 2);
- if (s == path)
- sset = filename;
- else
- {
- memcpy (filename, path, s - path);
- filename[s - path] = '/';
- sset = filename + (s - path) + 1;
- }
- strcpy (sset, name);
-
- if (gld${EMULATION_NAME}_try_needed (filename, force))
- return true;
-
- free (filename);
-
- if (*s == '\0')
- break;
- path = s + 1;
- }
-
- return false;
-}
-
-/* This function is called for each possible name for a dynamic object
- named by a DT_NEEDED entry. The FORCE parameter indicates whether
- to skip the check for a conflicting version. */
-
-static boolean
-gld${EMULATION_NAME}_try_needed (name, force)
- const char *name;
- int force;
-{
- bfd *abfd;
-
- abfd = bfd_openr (name, bfd_get_target (output_bfd));
- if (abfd == NULL)
- return false;
- if (! bfd_check_format (abfd, bfd_object))
- {
- (void) bfd_close (abfd);
- return false;
- }
- if ((bfd_get_file_flags (abfd) & DYNAMIC) == 0)
- {
- (void) bfd_close (abfd);
- return false;
- }
-
- /* Check whether this object would include any conflicting library
- versions. If FORCE is set, then we skip this check; we use this
- the second time around, if we couldn't find any compatible
- instance of the shared library. */
-
- if (! force)
- {
- struct bfd_link_needed_list *needed;
-
- if (! bfd_elf_get_bfd_needed_list (abfd, &needed))
- einfo ("%F%P:%B: bfd_elf_get_bfd_needed_list failed: %E\n", abfd);
-
- if (needed != NULL)
- {
- global_vercheck_needed = needed;
- global_vercheck_failed = false;
- lang_for_each_input_file (gld${EMULATION_NAME}_vercheck);
- if (global_vercheck_failed)
- {
- (void) bfd_close (abfd);
- /* Return false to force the caller to move on to try
- another file on the search path. */
- return false;
- }
-
- /* But wait! It gets much worse. On Linux, if a shared
- library does not use libc at all, we are supposed to skip
- it the first time around in case we encounter a shared
- library later on with the same name which does use the
- version of libc that we want. This is much too horrible
- to use on any system other than Linux. */
-
EOF
-case ${target} in
- *-*-linux-gnu*)
- cat >>e${EMULATION_NAME}.c <<EOF
- {
- struct bfd_link_needed_list *l;
-
- for (l = needed; l != NULL; l = l->next)
- if (strncmp (l->name, "libc.so", 7) == 0)
- break;
- if (l == NULL)
- {
- (void) bfd_close (abfd);
- return false;
- }
- }
+fi
-EOF
- ;;
-esac
cat >>e${EMULATION_NAME}.c <<EOF
- }
- }
-
- /* We've found a dynamic object matching the DT_NEEDED entry. */
-
- /* We have already checked that there is no other input file of the
- same name. We must now check again that we are not including the
- same file twice. We need to do this because on many systems
- libc.so is a symlink to, e.g., libc.so.1. The SONAME entry will
- reference libc.so.1. If we have already included libc.so, we
- don't want to include libc.so.1 if they are the same file, and we
- can only check that using stat. */
- if (bfd_stat (abfd, &global_stat) != 0)
- einfo ("%F%P:%B: bfd_stat failed: %E\n", abfd);
- global_found = false;
- lang_for_each_input_file (gld${EMULATION_NAME}_stat_needed);
- if (global_found)
- {
- /* Return true to indicate that we found the file, even though
- we aren't going to do anything with it. */
- return true;
- }
-
- /* Tell the ELF backend that don't want the output file to have a
- DT_NEEDED entry for this file. */
- bfd_elf_set_dt_needed_name (abfd, "");
-
- /* Add this file into the symbol table. */
- if (! bfd_link_add_symbols (abfd, &link_info))
- einfo ("%F%B: could not read symbols: %E\n", abfd);
-
- return true;
-}
-
-/* See if an input file matches a DT_NEEDED entry by name. */
+/* Look through an expression for an assignment statement. */
static void
-gld${EMULATION_NAME}_check_needed (s)
- lang_input_statement_type *s;
+gld${EMULATION_NAME}_find_exp_assignment (exp)
+ etree_type *exp;
{
- if (global_found)
- return;
-
- if (s->filename != NULL
- && strcmp (s->filename, global_needed->name) == 0)
- {
- global_found = true;
- return;
- }
+ struct bfd_link_hash_entry *h;
- if (s->the_bfd != NULL)
+ switch (exp->type.node_class)
{
- const char *soname;
+ case etree_provide:
+ h = bfd_link_hash_lookup (link_info.hash, exp->assign.dst,
+ false, false, false);
+ if (h == NULL)
+ break;
- soname = bfd_elf_get_dt_soname (s->the_bfd);
- if (soname != NULL
- && strcmp (soname, global_needed->name) == 0)
- {
- global_found = true;
- return;
- }
- }
-
- if (s->search_dirs_flag
- && s->filename != NULL
- && strchr (global_needed->name, '/') == NULL)
- {
- const char *f;
+ /* We call record_link_assignment even if the symbol is defined.
+ This is because if it is defined by a dynamic object, we
+ actually want to use the value defined by the linker script,
+ not the value from the dynamic object (because we are setting
+ symbols like etext). If the symbol is defined by a regular
+ object, then, as it happens, calling record_link_assignment
+ will do no harm. */
- f = strrchr (s->filename, '/');
- if (f != NULL
- && strcmp (f + 1, global_needed->name) == 0)
+ /* Fall through. */
+ case etree_assign:
+ if (strcmp (exp->assign.dst, ".") != 0)
{
- global_found = true;
- return;
+ if (! (bfd_elf${ELFSIZE}_record_link_assignment
+ (output_bfd, &link_info, exp->assign.dst,
+ exp->type.node_class == etree_provide ? true : false)))
+ einfo ("%P%F: failed to record assignment to %s: %E\n",
+ exp->assign.dst);
}
- }
-}
-
-/* See if an input file matches a DT_NEEDED entry by running stat on
- the file. */
+ gld${EMULATION_NAME}_find_exp_assignment (exp->assign.src);
+ break;
-static void
-gld${EMULATION_NAME}_stat_needed (s)
- lang_input_statement_type *s;
-{
- struct stat st;
- const char *suffix;
- const char *soname;
- const char *f;
+ case etree_binary:
+ gld${EMULATION_NAME}_find_exp_assignment (exp->binary.lhs);
+ gld${EMULATION_NAME}_find_exp_assignment (exp->binary.rhs);
+ break;
- if (global_found)
- return;
- if (s->the_bfd == NULL)
- return;
+ case etree_trinary:
+ gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.cond);
+ gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.lhs);
+ gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.rhs);
+ break;
- if (bfd_stat (s->the_bfd, &st) != 0)
- {
- einfo ("%P:%B: bfd_stat failed: %E\n", s->the_bfd);
- return;
- }
+ case etree_unary:
+ gld${EMULATION_NAME}_find_exp_assignment (exp->unary.child);
+ break;
- if (st.st_dev == global_stat.st_dev
- && st.st_ino == global_stat.st_ino)
- {
- global_found = true;
- return;
+ default:
+ break;
}
-
- /* We issue a warning if it looks like we are including two
- different versions of the same shared library. For example,
- there may be a problem if -lc picks up libc.so.6 but some other
- shared library has a DT_NEEDED entry of libc.so.5. This is a
- hueristic test, and it will only work if the name looks like
- NAME.so.VERSION. FIXME: Depending on file names is error-prone.
- If we really want to issue warnings about mixing version numbers
- of shared libraries, we need to find a better way. */
-
- if (strchr (global_needed->name, '/') != NULL)
- return;
- suffix = strstr (global_needed->name, ".so.");
- if (suffix == NULL)
- return;
- suffix += sizeof ".so." - 1;
-
- soname = bfd_elf_get_dt_soname (s->the_bfd);
- if (soname == NULL)
- soname = s->filename;
-
- f = strrchr (soname, '/');
- if (f != NULL)
- ++f;
- else
- f = soname;
-
- if (strncmp (f, global_needed->name, suffix - global_needed->name) == 0)
- einfo ("%P: warning: %s, needed by %B, may conflict with %s\n",
- global_needed->name, global_needed->by, f);
}
-/* On Linux, it's possible to have different versions of the same
- shared library linked against different versions of libc. The
- dynamic linker somehow tags which libc version to use in
- /etc/ld.so.cache, and, based on the libc that it sees in the
- executable, chooses which version of the shared library to use.
-
- We try to do a similar check here by checking whether this shared
- library needs any other shared libraries which may conflict with
- libraries we have already included in the link. If it does, we
- skip it, and try to find another shared library farther on down the
- link path.
- This is called via lang_for_each_input_file.
- GLOBAL_VERCHECK_NEEDED is the list of objects needed by the object
- which we ar checking. This sets GLOBAL_VERCHECK_FAILED if we find
- a conflicting version. */
+/* This is called by the before_allocation routine via
+ lang_for_each_statement. It locates any assignment statements, and
+ tells the ELF backend about them, in case they are assignments to
+ symbols which are referred to by dynamic objects. */
static void
-gld${EMULATION_NAME}_vercheck (s)
- lang_input_statement_type *s;
+gld${EMULATION_NAME}_find_statement_assignment (s)
+ lang_statement_union_type *s;
{
- const char *soname, *f;
- struct bfd_link_needed_list *l;
-
- if (global_vercheck_failed)
- return;
- if (s->the_bfd == NULL
- || (bfd_get_file_flags (s->the_bfd) & DYNAMIC) == 0)
- return;
-
- soname = bfd_elf_get_dt_soname (s->the_bfd);
- if (soname == NULL)
- soname = bfd_get_filename (s->the_bfd);
-
- f = strrchr (soname, '/');
- if (f != NULL)
- ++f;
- else
- f = soname;
-
- for (l = global_vercheck_needed; l != NULL; l = l->next)
- {
- const char *suffix;
-
- if (strcmp (f, l->name) == 0)
- {
- /* Probably can't happen, but it's an easy check. */
- continue;
- }
-
- if (strchr (l->name, '/') != NULL)
- continue;
-
- suffix = strstr (l->name, ".so.");
- if (suffix == NULL)
- continue;
+ if (s->header.type == lang_assignment_statement_enum)
+ gld${EMULATION_NAME}_find_exp_assignment (s->assignment_statement.exp);
+}
- suffix += sizeof ".so." - 1;
+EOF
- if (strncmp (f, l->name, suffix - l->name) == 0)
- {
- /* Here we know that S is a dynamic object FOO.SO.VER1, and
- the object we are considering needs a dynamic object
- FOO.SO.VER2, and VER1 and VER2 are different. This
- appears to be a version mismatch, so we tell the caller
- to try a different version of this library. */
- global_vercheck_failed = true;
- return;
- }
- }
-}
+if test x"$LDEMUL_BEFORE_ALLOCATION" != xgld"$EMULATION_NAME"_before_allocation; then
+cat >>e${EMULATION_NAME}.c <<EOF
/* This is called after the sections have been attached to output
sections, but before any sizes or addresses have been set. */
@@ -791,76 +880,98 @@ gld${EMULATION_NAME}_before_allocation ()
}
}
-/* This is called by the before_allocation routine via
- lang_for_each_statement. It locates any assignment statements, and
- tells the ELF backend about them, in case they are assignments to
- symbols which are referred to by dynamic objects. */
+EOF
+fi
-static void
-gld${EMULATION_NAME}_find_statement_assignment (s)
- lang_statement_union_type *s;
-{
- if (s->header.type == lang_assignment_statement_enum)
- gld${EMULATION_NAME}_find_exp_assignment (s->assignment_statement.exp);
-}
+if test x"$LDEMUL_OPEN_DYNAMIC_ARCHIVE" != xgld"$EMULATION_NAME"_open_dynamic_archive; then
+cat >>e${EMULATION_NAME}.c <<EOF
-/* Look through an expression for an assignment statement. */
+/* Try to open a dynamic archive. This is where we know that ELF
+ dynamic libraries have an extension of .so (or .sl on oddball systems
+ like hpux). */
-static void
-gld${EMULATION_NAME}_find_exp_assignment (exp)
- etree_type *exp;
+static boolean
+gld${EMULATION_NAME}_open_dynamic_archive (arch, search, entry)
+ const char *arch;
+ search_dirs_type *search;
+ lang_input_statement_type *entry;
{
- struct bfd_link_hash_entry *h;
+ const char *filename;
+ char *string;
- switch (exp->type.node_class)
+ if (! entry->is_archive)
+ return false;
+
+ filename = entry->filename;
+
+ /* This allocates a few bytes too many when EXTRA_SHLIB_EXTENSION
+ is defined, but it does not seem worth the headache to optimize
+ away those two bytes of space. */
+ string = (char *) xmalloc (strlen (search->name)
+ + strlen (filename)
+ + strlen (arch)
+#ifdef EXTRA_SHLIB_EXTENSION
+ + strlen (EXTRA_SHLIB_EXTENSION)
+#endif
+ + sizeof "/lib.so");
+
+ sprintf (string, "%s/lib%s%s.so", search->name, filename, arch);
+
+#ifdef EXTRA_SHLIB_EXTENSION
+ /* Try the .so extension first. If that fails build a new filename
+ using EXTRA_SHLIB_EXTENSION. */
+ if (! ldfile_try_open_bfd (string, entry))
+ sprintf (string, "%s/lib%s%s%s", search->name,
+ filename, arch, EXTRA_SHLIB_EXTENSION);
+#endif
+
+ if (! ldfile_try_open_bfd (string, entry))
{
- case etree_provide:
- h = bfd_link_hash_lookup (link_info.hash, exp->assign.dst,
- false, false, false);
- if (h == NULL)
- break;
+ free (string);
+ return false;
+ }
- /* We call record_link_assignment even if the symbol is defined.
- This is because if it is defined by a dynamic object, we
- actually want to use the value defined by the linker script,
- not the value from the dynamic object (because we are setting
- symbols like etext). If the symbol is defined by a regular
- object, then, as it happens, calling record_link_assignment
- will do no harm. */
+ entry->filename = string;
- /* Fall through. */
- case etree_assign:
- if (strcmp (exp->assign.dst, ".") != 0)
- {
- if (! (bfd_elf${ELFSIZE}_record_link_assignment
- (output_bfd, &link_info, exp->assign.dst,
- exp->type.node_class == etree_provide ? true : false)))
- einfo ("%P%F: failed to record assignment to %s: %E\n",
- exp->assign.dst);
- }
- gld${EMULATION_NAME}_find_exp_assignment (exp->assign.src);
- break;
+ /* We have found a dynamic object to include in the link. The ELF
+ backend linker will create a DT_NEEDED entry in the .dynamic
+ section naming this file. If this file includes a DT_SONAME
+ entry, it will be used. Otherwise, the ELF linker will just use
+ the name of the file. For an archive found by searching, like
+ this one, the DT_NEEDED entry should consist of just the name of
+ the file, without the path information used to find it. Note
+ that we only need to do this if we have a dynamic object; an
+ archive will never be referenced by a DT_NEEDED entry.
- case etree_binary:
- gld${EMULATION_NAME}_find_exp_assignment (exp->binary.lhs);
- gld${EMULATION_NAME}_find_exp_assignment (exp->binary.rhs);
- break;
+ FIXME: This approach--using bfd_elf_set_dt_needed_name--is not
+ very pretty. I haven't been able to think of anything that is
+ pretty, though. */
+ if (bfd_check_format (entry->the_bfd, bfd_object)
+ && (entry->the_bfd->flags & DYNAMIC) != 0)
+ {
+ char *needed_name;
- case etree_trinary:
- gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.cond);
- gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.lhs);
- gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.rhs);
- break;
+ ASSERT (entry->is_archive && entry->search_dirs_flag);
- case etree_unary:
- gld${EMULATION_NAME}_find_exp_assignment (exp->unary.child);
- break;
+ /* Rather than duplicating the logic above. Just use the
+ filename we recorded earlier.
- default:
- break;
+ First strip off everything before the last '/'. */
+ filename = strrchr (entry->filename, '/');
+ filename++;
+
+ needed_name = (char *) xmalloc (strlen (filename) + 1);
+ strcpy (needed_name, filename);
+ bfd_elf_set_dt_needed_name (entry->the_bfd, needed_name);
}
+
+ return true;
}
+EOF
+fi
+cat >>e${EMULATION_NAME}.c <<EOF
+
/* A variant of lang_output_section_find. Used by place_orphan. */
static lang_output_section_statement_type *
@@ -884,6 +995,11 @@ output_rel_find ()
return (lang_output_section_statement_type *) NULL;
}
+EOF
+
+if test x"$LDEMUL_PLACE_ORPHAN" != xgld"$EMULATION_NAME"_place_orphan; then
+cat >>e${EMULATION_NAME}.c <<EOF
+
/* Place an orphan section. We use this to put random SHF_ALLOC
sections in the right segment. */
@@ -904,6 +1020,8 @@ gld${EMULATION_NAME}_place_orphan (file, s)
static struct orphan_save hold_bss;
static struct orphan_save hold_rel;
static struct orphan_save hold_interp;
+ static struct orphan_save hold_sdata;
+ static int count = 1;
struct orphan_save *place;
lang_statement_list_type *old;
lang_statement_list_type add;
@@ -915,16 +1033,20 @@ gld${EMULATION_NAME}_place_orphan (file, s)
secname = bfd_get_section_name (s->owner, s);
- /* Look through the script to see where to place this section. */
- os = lang_output_section_find (secname);
-
- if (os != NULL
- && os->bfd_section != NULL
- && ((s->flags ^ os->bfd_section->flags) & (SEC_LOAD | SEC_ALLOC)) == 0)
+ if (! config.unique_orphan_sections && ! unique_section_p (secname))
{
- /* We have already placed a section with this name. */
- wild_doit (&os->children, s, os, file);
- return true;
+ /* Look through the script to see where to place this section. */
+ os = lang_output_section_find (secname);
+
+ if (os != NULL
+ && os->bfd_section != NULL
+ && ((s->flags ^ os->bfd_section->flags)
+ & (SEC_LOAD | SEC_ALLOC)) == 0)
+ {
+ /* We have already placed a section with this name. */
+ wild_doit (&os->children, s, os, file);
+ return true;
+ }
}
if (hold_text.os == NULL)
@@ -956,12 +1078,15 @@ gld${EMULATION_NAME}_place_orphan (file, s)
if ((s->flags & SEC_ALLOC) == 0)
;
else if ((s->flags & SEC_LOAD) != 0
- && strncmp (secname, ".note", 4) == 0
+ && strncmp (secname, ".note", 5) == 0
&& HAVE_SECTION (hold_interp, ".interp"))
place = &hold_interp;
else if ((s->flags & SEC_HAS_CONTENTS) == 0
&& HAVE_SECTION (hold_bss, ".bss"))
place = &hold_bss;
+ else if ((s->flags & SEC_SMALL_DATA) != 0
+ && HAVE_SECTION (hold_sdata, ".sdata"))
+ place = &hold_sdata;
else if ((s->flags & SEC_READONLY) == 0
&& HAVE_SECTION (hold_data, ".data"))
place = &hold_data;
@@ -980,26 +1105,15 @@ gld${EMULATION_NAME}_place_orphan (file, s)
/* Choose a unique name for the section. This will be needed if the
same section name appears in the input file with different
- loadable or allocateable characteristics. */
+ loadable or allocatable characteristics. */
outsecname = secname;
if (bfd_get_section_by_name (output_bfd, outsecname) != NULL)
{
- unsigned int len;
- char *newname;
- unsigned int i;
-
- len = strlen (outsecname);
- newname = xmalloc (len + 5);
- strcpy (newname, outsecname);
- i = 0;
- do
- {
- sprintf (newname + len, "%d", i);
- ++i;
- }
- while (bfd_get_section_by_name (output_bfd, newname) != NULL);
-
- outsecname = newname;
+ outsecname = bfd_get_unique_section_name (output_bfd,
+ outsecname,
+ &count);
+ if (outsecname == NULL)
+ einfo ("%F%P: place_orphan failed: %E\n");
}
/* Start building a list of statements for this section.
@@ -1140,8 +1254,14 @@ gld${EMULATION_NAME}_place_orphan (file, s)
return true;
}
+EOF
+fi
+
+if test x"$LDEMUL_GET_SCRIPT" != xgld"$EMULATION_NAME"_get_script; then
+cat >>e${EMULATION_NAME}.c <<EOF
+
static char *
-gld${EMULATION_NAME}_get_script(isfile)
+gld${EMULATION_NAME}_get_script (isfile)
int *isfile;
EOF
@@ -1153,7 +1273,7 @@ then
sc="-f stringify.sed"
cat >>e${EMULATION_NAME}.c <<EOF
-{
+{
*isfile = 0;
if (link_info.relocateable == true && config.build_constructors == true)
@@ -1180,7 +1300,7 @@ else
# Scripts read from the filesystem.
cat >>e${EMULATION_NAME}.c <<EOF
-{
+{
*isfile = 1;
if (link_info.relocateable == true && config.build_constructors == true)
@@ -1196,51 +1316,226 @@ cat >>e${EMULATION_NAME}.c <<EOF
else
return "ldscripts/${EMULATION_NAME}.x";
}
+
EOF
+fi
+fi
+
+if test -n "$PARSE_AND_LIST_ARGS_CASES" -o x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+if test x"$LDEMUL_PARSE_ARGS" != xgld"$EMULATION_NAME"_parse_args; then
+
+if test -n "$PARSE_AND_LIST_PROLOGUE" ; then
+cat >>e${EMULATION_NAME}.c <<EOF
+ $PARSE_AND_LIST_PROLOGUE
+EOF
fi
-if test -n "$PARSE_AND_LIST_ARGS" ; then
cat >>e${EMULATION_NAME}.c <<EOF
-static int gld_${EMULATION_NAME}_parse_args PARAMS ((int, char **));
-static void gld_${EMULATION_NAME}_list_options PARAMS ((FILE * file));
- $PARSE_AND_LIST_ARGS
+#include "getopt.h"
+
+#define OPTION_DISABLE_NEW_DTAGS (400)
+#define OPTION_ENABLE_NEW_DTAGS (OPTION_DISABLE_NEW_DTAGS + 1)
+
+static struct option longopts[] =
+{
+EOF
+
+if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+cat >>e${EMULATION_NAME}.c <<EOF
+ /* getopt allows abbreviations, so we do this to stop it from
+ treating -d/-e as abbreviations for these options. */
+ {"disable-new-dtags", no_argument, NULL, OPTION_DISABLE_NEW_DTAGS},
+ {"disable-new-dtags", no_argument, NULL, OPTION_DISABLE_NEW_DTAGS},
+ {"enable-new-dtags", no_argument, NULL, OPTION_ENABLE_NEW_DTAGS},
+ {"enable-new-dtags", no_argument, NULL, OPTION_ENABLE_NEW_DTAGS},
EOF
-else
+fi
+if test -n "$PARSE_AND_LIST_LONGOPTS" ; then
cat >>e${EMULATION_NAME}.c <<EOF
-#define gld_${EMULATION_NAME}_parse_args NULL
-#define gld_${EMULATION_NAME}_list_options NULL
+ $PARSE_AND_LIST_LONGOPTS
EOF
+fi
+
+cat >>e${EMULATION_NAME}.c <<EOF
+ {NULL, no_argument, NULL, 0}
+};
+
+static int gld${EMULATION_NAME}_parse_args PARAMS ((int, char **));
+
+static int
+gld${EMULATION_NAME}_parse_args (argc, argv)
+ int argc;
+ char ** argv;
+{
+ int longind;
+ int optc;
+ static int prevoptind = -1;
+ int prevopterr = opterr;
+ int wanterror;
+
+ if (prevoptind != optind)
+ opterr = 0;
+
+ wanterror = opterr;
+ prevoptind = optind;
+
+ optc = getopt_long_only (argc, argv,
+ "-${PARSE_AND_LIST_SHORTOPTS}z:", longopts,
+ &longind);
+ opterr = prevopterr;
+
+ switch (optc)
+ {
+ default:
+ if (wanterror)
+ xexit (1);
+ optind = prevoptind;
+ return 0;
+
+EOF
+
+if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+cat >>e${EMULATION_NAME}.c <<EOF
+ case OPTION_DISABLE_NEW_DTAGS:
+ link_info.new_dtags = false;
+ break;
+
+ case OPTION_ENABLE_NEW_DTAGS:
+ link_info.new_dtags = true;
+ break;
+
+ case 'z':
+ if (strcmp (optarg, "initfirst") == 0)
+ link_info.flags_1 |= (bfd_vma) DF_1_INITFIRST;
+ else if (strcmp (optarg, "interpose") == 0)
+ link_info.flags_1 |= (bfd_vma) DF_1_INTERPOSE;
+ else if (strcmp (optarg, "loadfltr") == 0)
+ link_info.flags_1 |= (bfd_vma) DF_1_LOADFLTR;
+ else if (strcmp (optarg, "nodefaultlib") == 0)
+ link_info.flags_1 |= (bfd_vma) DF_1_NODEFLIB;
+ else if (strcmp (optarg, "nodelete") == 0)
+ link_info.flags_1 |= (bfd_vma) DF_1_NODELETE;
+ else if (strcmp (optarg, "nodlopen") == 0)
+ link_info.flags_1 |= (bfd_vma) DF_1_NOOPEN;
+ else if (strcmp (optarg, "nodump") == 0)
+ link_info.flags_1 |= (bfd_vma) DF_1_NODUMP;
+ else if (strcmp (optarg, "now") == 0)
+ {
+ link_info.flags |= (bfd_vma) DF_BIND_NOW;
+ link_info.flags_1 |= (bfd_vma) DF_1_NOW;
+ }
+ else if (strcmp (optarg, "origin") == 0)
+ {
+ link_info.flags |= (bfd_vma) DF_ORIGIN;
+ link_info.flags_1 |= (bfd_vma) DF_1_ORIGIN;
+ }
+ /* What about the other Solaris -z options? FIXME. */
+ break;
+EOF
+fi
+
+if test -n "$PARSE_AND_LIST_ARGS_CASES" ; then
+cat >>e${EMULATION_NAME}.c <<EOF
+ $PARSE_AND_LIST_ARGS_CASES
+EOF
+fi
+
+cat >>e${EMULATION_NAME}.c <<EOF
+ }
+
+ return 1;
+}
+
+EOF
+fi
+
+if test x"$LDEMUL_LIST_OPTIONS" != xgld"$EMULATION_NAME"_list_options; then
+cat >>e${EMULATION_NAME}.c <<EOF
+
+static void gld${EMULATION_NAME}_list_options PARAMS ((FILE * file));
+
+static void
+gld${EMULATION_NAME}_list_options (file)
+ FILE * file;
+{
+EOF
+
+if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
+cat >>e${EMULATION_NAME}.c <<EOF
+ fprintf (file, _(" --disable-new-dtags\tDisable new dynamic tags\n"));
+ fprintf (file, _(" --enable-new-dtags\tEnable new dynamic tags\n"));
+ fprintf (file, _(" -z initfirst\t\tMark DSO to be initialized first at runtime\n"));
+ fprintf (file, _(" -z interpose\t\tMark object to interpose all DSOs but executable\n"));
+ fprintf (file, _(" -z loadfltr\t\tMark object requiring immediate process\n"));
+ fprintf (file, _(" -z nodefaultlib\tMark object not to use default search paths\n"));
+ fprintf (file, _(" -z nodelete\t\tMark DSO non-deletable at runtime\n"));
+ fprintf (file, _(" -z nodlopen\t\tMark DSO not available to dlopen\n"));
+ fprintf (file, _(" -z nodump\t\tMark DSO not available to dldump\n"));
+ fprintf (file, _(" -z now\t\tMark object non-lazy runtime binding\n"));
+ fprintf (file, _(" -z origin\t\tMark object requiring immediate \$ORIGIN processing\n"));
+ fprintf (file, _("\t\t\t at runtime\n"));
+ fprintf (file, _(" -z KEYWORD\t\tIgnored for Solaris compatibility\n"));
+EOF
+fi
+
+if test -n "$PARSE_AND_LIST_OPTIONS" ; then
+cat >>e${EMULATION_NAME}.c <<EOF
+ $PARSE_AND_LIST_OPTIONS
+EOF
+fi
+
+cat >>e${EMULATION_NAME}.c <<EOF
+}
+EOF
+
+if test -n "$PARSE_AND_LIST_EPILOGUE" ; then
+cat >>e${EMULATION_NAME}.c <<EOF
+ $PARSE_AND_LIST_EPILOGUE
+EOF
+fi
+fi
+else
+if test x"$LDEMUL_PARSE_ARGS" != xgld"$EMULATION_NAME"_parse_args; then
+cat >>e${EMULATION_NAME}.c <<EOF
+#define gld${EMULATION_NAME}_parse_args NULL
+EOF
+fi
+if test x"$LDEMUL_LIST_OPTIONS" != xgld"$EMULATION_NAME"_list_options; then
+cat >>e${EMULATION_NAME}.c <<EOF
+#define gld${EMULATION_NAME}_list_options NULL
+EOF
+fi
fi
cat >>e${EMULATION_NAME}.c <<EOF
-struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
+struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
{
- gld${EMULATION_NAME}_before_parse,
- syslib_default,
- hll_default,
- after_parse_default,
- gld${EMULATION_NAME}_after_open,
- after_allocation_default,
- set_output_arch_default,
- ldemul_default_target,
- gld${EMULATION_NAME}_before_allocation,
- gld${EMULATION_NAME}_get_script,
+ ${LDEMUL_BEFORE_PARSE-gld${EMULATION_NAME}_before_parse},
+ ${LDEMUL_SYSLIB-syslib_default},
+ ${LDEMUL_HLL-hll_default},
+ ${LDEMUL_AFTER_PARSE-after_parse_default},
+ ${LDEMUL_AFTER_OPEN-gld${EMULATION_NAME}_after_open},
+ ${LDEMUL_AFTER_ALLOCATION-after_allocation_default},
+ ${LDEMUL_SET_OUTPUT_ARCH-set_output_arch_default},
+ ${LDEMUL_CHOOSE_TARGET-ldemul_default_target},
+ ${LDEMUL_BEFORE_ALLOCATION-gld${EMULATION_NAME}_before_allocation},
+ ${LDEMUL_GET_SCRIPT-gld${EMULATION_NAME}_get_script},
"${EMULATION_NAME}",
"${OUTPUT_FORMAT}",
- NULL, /* finish */
- NULL, /* create output section statements */
- gld${EMULATION_NAME}_open_dynamic_archive,
- gld${EMULATION_NAME}_place_orphan,
- NULL, /* set_symbols */
- gld_${EMULATION_NAME}_parse_args,
- NULL, /* unrecognized_file */
- gld_${EMULATION_NAME}_list_options,
- NULL, /* recognized_file */
- NULL /* find_potential_libraries */
+ ${LDEMUL_FINISH-NULL},
+ ${LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS-NULL},
+ ${LDEMUL_OPEN_DYNAMIC_ARCHIVE-gld${EMULATION_NAME}_open_dynamic_archive},
+ ${LDEMUL_PLACE_ORPHAN-gld${EMULATION_NAME}_place_orphan},
+ ${LDEMUL_SET_SYMBOLS-NULL},
+ ${LDEMUL_PARSE_ARGS-gld${EMULATION_NAME}_parse_args},
+ ${LDEMUL_UNRECOGNIZED_FILE-NULL},
+ ${LDEMUL_LIST_OPTIONS-gld${EMULATION_NAME}_list_options},
+ ${LDEMUL_RECOGNIZED_FILE-NULL},
+ ${LDEMUL_FIND_POTENTIAL_LIBRARIES-NULL},
};
EOF
diff --git a/contrib/binutils/ld/emultempl/generic.em b/contrib/binutils/ld/emultempl/generic.em
index 6635e09..f96323e 100644
--- a/contrib/binutils/ld/emultempl/generic.em
+++ b/contrib/binutils/ld/emultempl/generic.em
@@ -4,7 +4,8 @@ cat >e${EMULATION_NAME}.c <<EOF
/* This file is is generated by a shell script. DO NOT EDIT! */
/* emulate the original gld for the given ${EMULATION_NAME}
- Copyright (C) 1991, 93, 94, 95, 96, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1991, 93, 94, 95, 96, 99, 2000
+ Free Software Foundation, Inc.
Written by Steve Chamberlain steve@cygnus.com
This file is part of GLD, the Gnu Linker.
@@ -31,10 +32,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "ld.h"
#include "ldmain.h"
-#include "ldemul.h"
-#include "ldfile.h"
#include "ldmisc.h"
+#include "ldexp.h"
+#include "ldlang.h"
+#include "ldfile.h"
+#include "ldemul.h"
+
static void gld${EMULATION_NAME}_before_parse PARAMS ((void));
static char *gld${EMULATION_NAME}_get_script PARAMS ((int *isfile));
diff --git a/contrib/binutils/ld/emultempl/linux.em b/contrib/binutils/ld/emultempl/linux.em
index dfa855e..31d816d 100644
--- a/contrib/binutils/ld/emultempl/linux.em
+++ b/contrib/binutils/ld/emultempl/linux.em
@@ -4,7 +4,8 @@ cat >e${EMULATION_NAME}.c <<EOF
/* This file is is generated by a shell script. DO NOT EDIT! */
/* Linux a.out emulation code for ${EMULATION_NAME}
- Copyright (C) 1991, 93, 94, 95, 96, 98, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1991, 93, 94, 95, 96, 98, 99, 2000
+ Free Software Foundation, Inc.
Written by Steve Chamberlain <sac@cygnus.com>
Linux support by Eric Youngdale <ericy@cais.cais.com>
@@ -32,11 +33,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "ld.h"
#include "ldmain.h"
-#include "ldemul.h"
-#include "ldfile.h"
#include "ldmisc.h"
#include "ldexp.h"
#include "ldlang.h"
+#include "ldfile.h"
+#include "ldemul.h"
static void gld${EMULATION_NAME}_before_parse PARAMS ((void));
static boolean gld${EMULATION_NAME}_open_dynamic_archive
diff --git a/contrib/binutils/ld/emultempl/pe.em b/contrib/binutils/ld/emultempl/pe.em
index d13bb40..fcbf835 100644
--- a/contrib/binutils/ld/emultempl/pe.em
+++ b/contrib/binutils/ld/emultempl/pe.em
@@ -37,11 +37,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "ldgram.h"
#include "ldexp.h"
#include "ldlang.h"
+#include "ldfile.h"
#include "ldemul.h"
#include "ldlex.h"
#include "ldmisc.h"
#include "ldctor.h"
-#include "ldfile.h"
#include "coff/internal.h"
/* FIXME: This is a BFD internal header file, and we should not be
@@ -102,11 +102,11 @@ static void gld_${EMULATION_NAME}_after_parse PARAMS ((void));
static void gld_${EMULATION_NAME}_before_allocation PARAMS ((void));
static boolean gld_${EMULATION_NAME}_place_orphan
PARAMS ((lang_input_statement_type *, asection *));
-static void gld${EMULATION_NAME}_place_section
- PARAMS ((lang_statement_union_type *));
static char *gld_${EMULATION_NAME}_get_script PARAMS ((int *));
static int gld_${EMULATION_NAME}_parse_args PARAMS ((int, char **));
static void gld_${EMULATION_NAME}_finish PARAMS ((void));
+static boolean gld_${EMULATION_NAME}_open_dynamic_archive
+ PARAMS ((const char *, search_dirs_type *, lang_input_statement_type *));
static struct internal_extra_pe_aouthdr pe;
static int dll;
@@ -114,10 +114,12 @@ static int support_old_code = 0;
static char * thumb_entry_symbol = NULL;
static lang_assignment_statement_type *image_base_statement = 0;
-static int pe_enable_stdcall_fixup = -1; /* 0=disable 1=enable */
#ifdef DLL_SUPPORT
-static char *pe_out_def_filename = 0;
-static char *pe_implib_filename = 0;
+static int pe_enable_stdcall_fixup = -1; /* 0=disable 1=enable */
+static char *pe_out_def_filename = NULL;
+static char *pe_implib_filename = NULL;
+static int pe_enable_auto_image_base = 0;
+static char *pe_dll_search_prefix = NULL;
#endif
extern const char *output_filename;
@@ -169,9 +171,12 @@ gld_${EMULATION_NAME}_before_parse()
#define OPTION_THUMB_ENTRY (OPTION_IMPLIB_FILENAME + 1)
#define OPTION_WARN_DUPLICATE_EXPORTS (OPTION_THUMB_ENTRY + 1)
#define OPTION_IMP_COMPAT (OPTION_WARN_DUPLICATE_EXPORTS + 1)
+#define OPTION_ENABLE_AUTO_IMAGE_BASE (OPTION_IMP_COMPAT + 1)
+#define OPTION_DISABLE_AUTO_IMAGE_BASE (OPTION_ENABLE_AUTO_IMAGE_BASE + 1)
+#define OPTION_DLL_SEARCH_PREFIX (OPTION_DISABLE_AUTO_IMAGE_BASE + 1)
+#define OPTION_NO_DEFAULT_EXCLUDES (OPTION_DLL_SEARCH_PREFIX + 1)
-static struct option longopts[] =
-{
+static struct option longopts[] = {
/* PE options */
{"base-file", required_argument, NULL, OPTION_BASE_FILE},
{"dll", no_argument, NULL, OPTION_DLL},
@@ -203,6 +208,10 @@ static struct option longopts[] =
{"out-implib", required_argument, NULL, OPTION_IMPLIB_FILENAME},
{"warn-duplicate-exports", no_argument, NULL, OPTION_WARN_DUPLICATE_EXPORTS},
{"compat-implib", no_argument, NULL, OPTION_IMP_COMPAT},
+ {"enable-auto-image-base", no_argument, NULL, OPTION_ENABLE_AUTO_IMAGE_BASE},
+ {"disable-auto-image-base", no_argument, NULL, OPTION_DISABLE_AUTO_IMAGE_BASE},
+ {"dll-search-prefix", required_argument, NULL, OPTION_DLL_SEARCH_PREFIX},
+ {"no-default-excludes", no_argument, NULL, OPTION_NO_DEFAULT_EXCLUDES},
#endif
{NULL, no_argument, NULL, 0}
};
@@ -282,6 +291,12 @@ gld_${EMULATION_NAME}_list_options (file)
fprintf (file, _(" --warn-duplicate-exports Warn about duplicate exports.\n"));
fprintf (file, _(" --compat-implib Create backward compatible import libs;\n"));
fprintf (file, _(" create __imp_<SYMBOL> as well.\n"));
+ fprintf (file, _(" --enable-auto-image-base Automatically choose image base for DLLs\n"));
+ fprintf (file, _(" unless user specifies one\n"));
+ fprintf (file, _(" --disable-auto-image-base Do not auto-choose image base. (default)\n"));
+ fprintf (file, _(" --dll-search-prefix=<string> When linking dynamically to a dll witout an\n"));
+ fprintf (file, _(" importlib, use <string><basename>.dll \n"));
+ fprintf (file, _(" in preference to lib<basename>.dll \n"));
#endif
}
@@ -540,11 +555,57 @@ gld_${EMULATION_NAME}_parse_args(argc, argv)
case OPTION_IMP_COMPAT:
pe_dll_compat_implib = 1;
break;
+ case OPTION_ENABLE_AUTO_IMAGE_BASE:
+ pe_enable_auto_image_base = 1;
+ break;
+ case OPTION_DISABLE_AUTO_IMAGE_BASE:
+ pe_enable_auto_image_base = 0;
+ break;
+ case OPTION_DLL_SEARCH_PREFIX:
+ pe_dll_search_prefix = xstrdup( optarg );
+ break;
+ case OPTION_NO_DEFAULT_EXCLUDES:
+ pe_dll_do_default_excludes = 0;
+ break;
#endif
}
return 1;
}
+
+#ifdef DLL_SUPPORT
+static unsigned long
+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;
+}
+
+/* Use the output file to create a image base for relocatable DLLs. */
+static unsigned long
+compute_dll_image_base (const char *ofile)
+{
+ unsigned long hash = strhash (ofile);
+ return 0x60000000 | ((hash << 16) & 0x0FFC0000);
+}
+#endif
+
/* Assign values to the special symbols before the linker script is
read. */
@@ -561,7 +622,12 @@ gld_${EMULATION_NAME}_set_symbols ()
if (link_info.relocateable)
init[IMAGEBASEOFF].value = 0;
else if (init[DLLOFF].value || link_info.shared)
+#ifdef DLL_SUPPORT
+ init[IMAGEBASEOFF].value = (pe_enable_auto_image_base) ?
+ compute_dll_image_base (output_filename) : NT_DLL_IMAGE_BASE;
+#else
init[IMAGEBASEOFF].value = NT_DLL_IMAGE_BASE;
+#endif
else
init[IMAGEBASEOFF].value = NT_EXE_IMAGE_BASE;
}
@@ -626,6 +692,7 @@ gld_${EMULATION_NAME}_after_parse ()
ldlang_add_undef (entry_symbol);
}
+#ifdef DLL_SUPPORT
static struct bfd_link_hash_entry *pe_undef_found_sym;
static boolean
@@ -644,7 +711,6 @@ pe_undef_cdecl_match (h, string)
return true;
}
-#ifdef DLL_SUPPORT
static void
pe_fixup_stdcalls ()
{
@@ -761,6 +827,116 @@ gld_${EMULATION_NAME}_after_open ()
#endif
{
+ /* This next chunk of code tries to detect the case where you have
+ two import libraries for the same DLL (specifically,
+ symbolically linking libm.a and libc.a in cygwin to
+ libcygwin.a). In those cases, it's possible for function
+ thunks from the second implib to be used but without the
+ head/tail objects, causing an improper import table. We detect
+ those cases and rename the "other" import libraries to match
+ the one the head/tail come from, so that the linker will sort
+ things nicely and produce a valid import table. */
+
+ LANG_FOR_EACH_INPUT_STATEMENT (is)
+ {
+ if (is->the_bfd->my_archive)
+ {
+ int idata2 = 0, reloc_count=0, is_imp = 0;
+ asection *sec;
+
+ /* See if this is an import library thunk. */
+ for (sec = is->the_bfd->sections; sec; sec = sec->next)
+ {
+ if (strcmp (sec->name, ".idata\$2") == 0)
+ idata2 = 1;
+ if (strncmp (sec->name, ".idata\$", 7) == 0)
+ is_imp = 1;
+ reloc_count += sec->reloc_count;
+ }
+
+ if (is_imp && !idata2 && reloc_count)
+ {
+ /* It is, look for the reference to head and see if it's
+ from our own library. */
+ for (sec = is->the_bfd->sections; sec; sec = sec->next)
+ {
+ int i;
+ long symsize;
+ long relsize;
+ asymbol **symbols;
+ arelent **relocs;
+ int nrelocs;
+
+ symsize = bfd_get_symtab_upper_bound (is->the_bfd);
+ if (symsize < 1)
+ break;
+ relsize = bfd_get_reloc_upper_bound (is->the_bfd, sec);
+ if (relsize < 1)
+ break;
+
+ symbols = (asymbol **) xmalloc (symsize);
+ symsize = bfd_canonicalize_symtab (is->the_bfd, symbols);
+ if (symsize < 0)
+ {
+ einfo ("%X%P: unable to process symbols: %E");
+ return;
+ }
+
+ relocs = (arelent **) xmalloc ((size_t) relsize);
+ nrelocs = bfd_canonicalize_reloc (is->the_bfd, sec,
+ relocs, symbols);
+ if (nrelocs < 0)
+ {
+ free (relocs);
+ einfo ("%X%P: unable to process relocs: %E");
+ return;
+ }
+
+ for (i = 0; i < nrelocs; i++)
+ {
+ struct symbol_cache_entry *s;
+ struct bfd_link_hash_entry * blhe;
+ bfd *other_bfd;
+ char *n;
+
+ s = (relocs[i]->sym_ptr_ptr)[0];
+
+ if (s->flags & BSF_LOCAL)
+ continue;
+
+ /* Thunk section with reloc to another bfd. */
+ blhe = bfd_link_hash_lookup (link_info.hash,
+ s->name,
+ false, false, true);
+
+ if (blhe == NULL
+ || blhe->type != bfd_link_hash_defined)
+ continue;
+
+ other_bfd = blhe->u.def.section->owner;
+
+ if (strcmp (is->the_bfd->my_archive->filename,
+ other_bfd->my_archive->filename) == 0)
+ continue;
+
+ /* Rename this implib to match the other. */
+ n = (char *) xmalloc (strlen (other_bfd->my_archive->filename) + 1);
+
+ strcpy (n, other_bfd->my_archive->filename);
+
+ is->the_bfd->my_archive->filename = n;
+ }
+
+ free (relocs);
+ /* Note - we do not free the symbols,
+ they are now cached in the BFD. */
+ }
+ }
+ }
+ }
+ }
+
+ {
int is_ms_arch = 0;
bfd *cur_arch = 0;
lang_input_statement_type *is2;
@@ -816,7 +992,7 @@ gld_${EMULATION_NAME}_after_open ()
sprintf (new_name, "%s.%c", is->the_bfd->filename, seq);
is->the_bfd->filename = new_name;
- new_name = xmalloc (strlen(is->filename) + 3);
+ new_name = xmalloc (strlen (is->filename) + 3);
sprintf (new_name, "%s.%c", is->filename, seq);
is->filename = new_name;
}
@@ -870,10 +1046,10 @@ gld_${EMULATION_NAME}_before_allocation()
#endif /* TARGET_IS_armpe */
}
-
+#ifdef DLL_SUPPORT
/* This is called when an input file isn't recognized as a BFD. We
check here for .DEF files and pull them in automatically. */
-#ifdef DLL_SUPPORT
+
static int
saw_option(char *option)
{
@@ -883,7 +1059,7 @@ saw_option(char *option)
return init[i].inited;
return 0;
}
-#endif
+#endif /* DLL_SUPPORT */
static boolean
gld_${EMULATION_NAME}_unrecognized_file(entry)
@@ -1049,6 +1225,7 @@ gld_${EMULATION_NAME}_finish ()
pe_dll_generate_implib (pe_def_file, pe_implib_filename);
}
#if defined(TARGET_IS_shpe) || defined(TARGET_IS_mipspe)
+ /* ARM doesn't need relocs. */
else
{
pe_exe_fill_sections (output_bfd, &link_info);
@@ -1057,7 +1234,7 @@ gld_${EMULATION_NAME}_finish ()
if (pe_out_def_filename)
pe_dll_generate_def_file (pe_out_def_filename);
-#endif
+#endif /* DLL_SUPPORT */
}
@@ -1074,16 +1251,12 @@ gld_${EMULATION_NAME}_finish ()
default linker script using wildcards, and are sorted by
sort_sections. */
-static asection *hold_section;
-static char *hold_section_name;
-static lang_output_section_statement_type *hold_use;
-static lang_output_section_statement_type *hold_text;
-static lang_output_section_statement_type *hold_rdata;
-static lang_output_section_statement_type *hold_data;
-static lang_output_section_statement_type *hold_bss;
-
-/* Place an orphan section. We use this to put random SHF_ALLOC
- sections in the right segment. */
+struct orphan_save
+{
+ lang_output_section_statement_type *os;
+ asection **section;
+ lang_statement_union_type **stmt;
+};
/*ARGSUSED*/
static boolean
@@ -1092,17 +1265,16 @@ gld_${EMULATION_NAME}_place_orphan (file, s)
asection *s;
{
const char *secname;
+ char *hold_section_name;
char *dollar = NULL;
-
- if ((s->flags & SEC_ALLOC) == 0)
- return false;
+ const char *ps = NULL;
+ lang_output_section_statement_type *os;
+ lang_statement_list_type add_child;
secname = bfd_get_section_name (s->owner, s);
/* Look through the script to see where to place this section. */
- hold_section = s;
-
hold_section_name = xstrdup (secname);
if (!link_info.relocateable)
{
@@ -1111,34 +1283,51 @@ gld_${EMULATION_NAME}_place_orphan (file, s)
*dollar = '\0';
}
- hold_use = NULL;
- lang_for_each_statement (gld${EMULATION_NAME}_place_section);
+ os = lang_output_section_find (hold_section_name);
- if (hold_use == NULL)
+ lang_list_init (&add_child);
+
+ if (os != NULL
+ && os->bfd_section != NULL
+ && ((s->flags ^ os->bfd_section->flags) & (SEC_LOAD | SEC_ALLOC)) == 0)
+ {
+ wild_doit (&add_child, s, os, file);
+ }
+ else
{
- lang_output_section_statement_type *place;
+ struct orphan_save *place;
+ static struct orphan_save hold_text;
+ static struct orphan_save hold_rdata;
+ static struct orphan_save hold_data;
+ static struct orphan_save hold_bss;
char *outsecname;
- asection *snew, **pps;
lang_statement_list_type *old;
lang_statement_list_type add;
etree_type *address;
/* Try to put the new output section in a reasonable place based
on the section name and section flags. */
+#define HAVE_SECTION(hold, name) \
+(hold.os != NULL || (hold.os = lang_output_section_find (name)) != NULL)
+
place = NULL;
- if ((s->flags & SEC_HAS_CONTENTS) == 0
- && hold_bss != NULL)
- place = hold_bss;
+ if ((s->flags & SEC_ALLOC) == 0)
+ ;
+ else if ((s->flags & SEC_HAS_CONTENTS) == 0
+ && HAVE_SECTION (hold_bss, ".bss"))
+ place = &hold_bss;
else if ((s->flags & SEC_READONLY) == 0
- && hold_data != NULL)
- place = hold_data;
+ && HAVE_SECTION (hold_data, ".data"))
+ place = &hold_data;
else if ((s->flags & SEC_CODE) == 0
&& (s->flags & SEC_READONLY) != 0
- && hold_rdata != NULL)
- place = hold_rdata;
+ && HAVE_SECTION (hold_rdata, ".rdata"))
+ place = &hold_rdata;
else if ((s->flags & SEC_READONLY) != 0
- && hold_text != NULL)
- place = hold_text;
+ && HAVE_SECTION (hold_text, ".text"))
+ place = &hold_text;
+
+#undef HAVE_SECTION
/* Choose a unique name for the section. This will be needed if
the same section name appears in the input file with
@@ -1165,32 +1354,33 @@ gld_${EMULATION_NAME}_place_orphan (file, s)
outsecname = newname;
}
- /* We don't want to free OUTSECNAME, as it may get attached to
- the output section statement. */
-
- /* Create the section in the output file, and put it in the
- right place. This shuffling is to make the output file look
- neater. */
- snew = bfd_make_section (output_bfd, outsecname);
- if (snew == NULL)
- einfo ("%P%F: output format %s cannot represent section called %s\n",
- output_bfd->xvec->name, outsecname);
- if (place != NULL && place->bfd_section != NULL)
- {
- for (pps = &output_bfd->sections; *pps != snew; pps = &(*pps)->next)
- ;
- *pps = snew->next;
- snew->next = place->bfd_section->next;
- place->bfd_section->next = snew;
- }
-
/* Start building a list of statements for this section. */
old = stat_ptr;
stat_ptr = &add;
lang_list_init (stat_ptr);
- if (link_info.relocateable)
- address = NULL;
+ if (config.build_constructors)
+ {
+ /* If the name of the section is representable in C, then create
+ symbols to mark the start and the end of the section. */
+ for (ps = outsecname; *ps != '\0'; ps++)
+ if (! isalnum ((unsigned char) *ps) && *ps != '_')
+ break;
+ if (*ps == '\0')
+ {
+ char *symname;
+ etree_type *e_align;
+
+ symname = (char *) xmalloc (ps - outsecname + sizeof "___start_");
+ sprintf (symname, "___start_%s", outsecname);
+ e_align = exp_unop (ALIGN_K,
+ exp_intop ((bfd_vma) 1 << s->alignment_power));
+ lang_add_assignment (exp_assop ('=', symname, e_align));
+ }
+ }
+
+ if (link_info.relocateable || (s->flags & (SEC_LOAD | SEC_ALLOC)) == 0)
+ address = exp_intop ((bfd_vma) 0);
else
{
/* All sections in an executable must be aligned to a page
@@ -1199,105 +1389,226 @@ gld_${EMULATION_NAME}_place_orphan (file, s)
exp_nameop (NAME, "__section_alignment__"));
}
- lang_enter_output_section_statement (outsecname, address, 0,
- (bfd_vma) 0,
- (etree_type *) NULL,
- (etree_type *) NULL,
- (etree_type *) NULL);
+ os = lang_enter_output_section_statement (outsecname, address, 0,
+ (bfd_vma) 0,
+ (etree_type *) NULL,
+ (etree_type *) NULL,
+ (etree_type *) NULL);
- hold_use = lang_output_section_statement_lookup (outsecname);
+ wild_doit (&add_child, s, os, file);
lang_leave_output_section_statement
((bfd_vma) 0, "*default*",
- (struct lang_output_section_phdr_list *) NULL,
- "*default*");
+ (struct lang_output_section_phdr_list *) NULL, "*default*");
- /* Now stick the new statement list right after PLACE. */
- if (place != NULL)
- {
- *add.tail = place->header.next;
- place->header.next = add.head;
+ if (config.build_constructors && *ps == '\0')
+ {
+ char *symname;
+
+ /* lang_leave_ouput_section_statement resets stat_ptr. Put
+ stat_ptr back where we want it. */
+ if (place != NULL)
+ stat_ptr = &add;
+
+ symname = (char *) xmalloc (ps - outsecname + sizeof "___stop_");
+ sprintf (symname, "___stop_%s", outsecname);
+ lang_add_assignment (exp_assop ('=', symname,
+ exp_nameop (NAME, ".")));
}
stat_ptr = old;
- }
-
- if (dollar == NULL)
- wild_doit (&hold_use->children, s, hold_use, file);
- else
- {
- lang_statement_union_type **pl;
- boolean found_dollar;
- lang_statement_list_type list;
-
- /* The section name has a '$'. Sort it with the other '$'
- sections. */
- found_dollar = false;
- for (pl = &hold_use->children.head; *pl != NULL; pl = &(*pl)->next)
+ if (place != NULL)
{
- lang_input_section_type *ls;
- const char *lname;
+ asection *snew, **pps;
+
+ snew = os->bfd_section;
+ if (place->os->bfd_section != NULL || place->section != NULL)
+ {
+ /* Shuffle the section to make the output file look neater. */
+ if (place->section == NULL)
+ {
+#if 0
+ /* Finding the end of the list is a little tricky. We
+ make a wild stab at it by comparing section flags. */
+ flagword first_flags = place->os->bfd_section->flags;
+ for (pps = &place->os->bfd_section->next;
+ *pps != NULL && (*pps)->flags == first_flags;
+ pps = &(*pps)->next)
+ ;
+ place->section = pps;
+#else
+ /* Put orphans after the first section on the list. */
+ place->section = &place->os->bfd_section->next;
+#endif
+ }
- if ((*pl)->header.type != lang_input_section_enum)
- continue;
+ /* Unlink the section. */
+ for (pps = &output_bfd->sections; *pps != snew; pps = &(*pps)->next)
+ ;
+ *pps = snew->next;
- ls = &(*pl)->input_section;
+ /* Now tack it on to the "place->os" section list. */
+ snew->next = *place->section;
+ *place->section = snew;
+ }
+ place->section = &snew->next; /* Save the end of this list. */
- lname = bfd_get_section_name (ls->ifile->the_bfd, ls->section);
- if (strchr (lname, '$') == NULL)
+ if (place->stmt == NULL)
{
- if (found_dollar)
- break;
+ /* Put the new statement list right at the head. */
+ *add.tail = place->os->header.next;
+ place->os->header.next = add.head;
}
else
{
- found_dollar = true;
- if (strcmp (secname, lname) < 0)
- break;
+ /* Put it after the last orphan statement we added. */
+ *add.tail = *place->stmt;
+ *place->stmt = add.head;
}
- }
-
- lang_list_init (&list);
- wild_doit (&list, s, hold_use, file);
- if (list.head != NULL)
- {
- ASSERT (list.head->next == NULL);
- list.head->next = *pl;
- *pl = list.head;
+ place->stmt = add.tail; /* Save the end of this list. */
}
}
+ {
+ lang_statement_union_type **pl = &os->children.head;
+
+ if (dollar != NULL)
+ {
+ boolean found_dollar;
+
+ /* The section name has a '$'. Sort it with the other '$'
+ sections. */
+
+ found_dollar = false;
+ for ( ; *pl != NULL; pl = &(*pl)->next)
+ {
+ lang_input_section_type *ls;
+ const char *lname;
+
+ if ((*pl)->header.type != lang_input_section_enum)
+ continue;
+
+ ls = &(*pl)->input_section;
+
+ lname = bfd_get_section_name (ls->ifile->the_bfd, ls->section);
+ if (strchr (lname, '$') == NULL)
+ {
+ if (found_dollar)
+ break;
+ }
+ else
+ {
+ found_dollar = true;
+ if (strcmp (secname, lname) < 0)
+ break;
+ }
+ }
+ }
+
+ if (add_child.head != NULL)
+ {
+ add_child.head->next = *pl;
+ *pl = add_child.head;
+ }
+ }
+
free (hold_section_name);
return true;
}
-static void
-gld${EMULATION_NAME}_place_section (s)
- lang_statement_union_type *s;
+static boolean
+gld_${EMULATION_NAME}_open_dynamic_archive (arch, search, entry)
+ const char * arch ATTRIBUTE_UNUSED;
+ search_dirs_type * search;
+ lang_input_statement_type * entry;
{
- lang_output_section_statement_type *os;
+ const char * filename;
+ char * string;
- if (s->header.type != lang_output_section_statement_enum)
- return;
+ if (! entry->is_archive)
+ return false;
- os = &s->output_section_statement;
+ filename = entry->filename;
- if (strcmp (os->name, hold_section_name) == 0
- && os->bfd_section != NULL
- && ((hold_section->flags & (SEC_LOAD | SEC_ALLOC))
- == (os->bfd_section->flags & (SEC_LOAD | SEC_ALLOC))))
- hold_use = os;
-
- if (strcmp (os->name, ".text") == 0)
- hold_text = os;
- else if (strcmp (os->name, ".rdata") == 0)
- hold_rdata = os;
- else if (strcmp (os->name, ".data") == 0)
- hold_data = os;
- else if (strcmp (os->name, ".bss") == 0)
- hold_bss = os;
+ string = (char *) xmalloc (strlen (search->name)
+ + strlen (filename)
+ + sizeof "/lib.a.dll"
+#ifdef DLL_SUPPORT
+ + (pe_dll_search_prefix ? strlen (pe_dll_search_prefix) : 0)
+#endif
+ + 1);
+
+ /* Try "libfoo.dll.a" first (preferred explicit import library for dll's */
+ sprintf (string, "%s/lib%s.dll.a", search->name, filename);
+
+ if (! ldfile_try_open_bfd (string, entry))
+ {
+ /* Try "foo.dll.a" next (alternate explicit import library for dll's */
+ sprintf (string, "%s/%s.dll.a", search->name, filename);
+ if (! ldfile_try_open_bfd (string, entry))
+ {
+/*
+ Try libfoo.a next. Normally, this would be interpreted as a static
+ library, but it *could* be an import library. For backwards compatibility,
+ libfoo.a needs to ==precede== libfoo.dll and foo.dll in the search,
+ or sometimes errors occur when building legacy packages.
+
+ Putting libfoo.a here means that in a failure case (i.e. the library
+ -lfoo is not found) we will search for libfoo.a twice before
+ giving up -- once here, and once when searching for a "static" lib.
+ for a "static" lib.
+*/
+ /* Try "libfoo.a" (import lib, or static lib, but must
+ take precedence over dll's) */
+ sprintf (string, "%s/lib%s.a", search->name, filename);
+ if (! ldfile_try_open_bfd (string, entry))
+ {
+#ifdef DLL_SUPPORT
+ if (pe_dll_search_prefix)
+ {
+ /* Try "<prefix>foo.dll" (preferred dll name, if specified) */
+ sprintf (string, "%s/%s%s.dll", search->name, pe_dll_search_prefix, filename);
+ if (! ldfile_try_open_bfd (string, entry))
+ {
+ /* Try "libfoo.dll" (default preferred dll name) */
+ sprintf (string, "%s/lib%s.dll", search->name, filename);
+ if (! ldfile_try_open_bfd (string, entry))
+ {
+ /* Finally, try "foo.dll" (alternate dll name) */
+ sprintf (string, "%s/%s.dll", search->name, filename);
+ if (! ldfile_try_open_bfd (string, entry))
+ {
+ free (string);
+ return false;
+ }
+ }
+ }
+ }
+ else /* pe_dll_search_prefix not specified */
+#endif
+ {
+ /* Try "libfoo.dll" (preferred dll name) */
+ sprintf (string, "%s/lib%s.dll", search->name, filename);
+ if (! ldfile_try_open_bfd (string, entry))
+ {
+ /* Finally, try "foo.dll" (alternate dll name) */
+ sprintf (string, "%s/%s.dll", search->name, filename);
+ if (! ldfile_try_open_bfd (string, entry))
+ {
+ free (string);
+ return false;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ entry->filename = string;
+
+ return true;
}
static int
@@ -1353,7 +1664,7 @@ struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
"${OUTPUT_FORMAT}",
gld_${EMULATION_NAME}_finish, /* finish */
NULL, /* create output section statements */
- NULL, /* open dynamic archive */
+ gld_${EMULATION_NAME}_open_dynamic_archive,
gld_${EMULATION_NAME}_place_orphan,
gld_${EMULATION_NAME}_set_symbols,
gld_${EMULATION_NAME}_parse_args,
diff --git a/contrib/binutils/ld/emultempl/ticoff.em b/contrib/binutils/ld/emultempl/ticoff.em
new file mode 100644
index 0000000..a2ab4db
--- /dev/null
+++ b/contrib/binutils/ld/emultempl/ticoff.em
@@ -0,0 +1,202 @@
+# This shell script emits a C file. -*- C -*-
+# It does some substitutions.
+(echo;echo;echo;echo)>e${EMULATION_NAME}.c # there, now line numbers match ;-)
+cat >>e${EMULATION_NAME}.c <<EOF
+/* This file is part of GLD, the Gnu Linker.
+ 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. */
+
+/* For TI COFF */
+/* Need to determine load and run pages for output sections */
+
+#define TARGET_IS_${EMULATION_NAME}
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "bfdlink.h"
+
+#include "ld.h"
+#include "ldmain.h"
+#include "ldmisc.h"
+
+#include "ldexp.h"
+#include "ldlang.h"
+#include "ldfile.h"
+#include "ldemul.h"
+
+#include "getopt.h"
+
+static int coff_version;
+
+static void gld_${EMULATION_NAME}_before_parse PARAMS ((void));
+static char *gld_${EMULATION_NAME}_get_script PARAMS ((int *));
+static int gld_${EMULATION_NAME}_parse_args PARAMS ((int, char **));
+static void gld_${EMULATION_NAME}_list_options PARAMS ((FILE *));
+
+/* TI COFF extra command line options */
+#define OPTION_COFF_FORMAT (300 + 1)
+
+static struct option longopts[] =
+{
+ /* TI COFF options */
+ {"format", required_argument, NULL, OPTION_COFF_FORMAT },
+ {NULL, no_argument, NULL, 0}
+};
+
+static void
+gld_${EMULATION_NAME}_list_options (file)
+ FILE * file;
+{
+ fprintf (file, _(" --format 0|1|2 Specify which COFF version to use"));
+}
+
+static int
+gld_${EMULATION_NAME}_parse_args(argc, argv)
+ int argc;
+ char **argv;
+{
+ int longind;
+ int optc;
+ int prevoptind = optind;
+ int prevopterr = opterr;
+ int wanterror;
+ static int lastoptind = -1;
+
+ if (lastoptind != optind)
+ opterr = 0;
+ wanterror = opterr;
+
+ lastoptind = optind;
+
+ optc = getopt_long_only (argc, argv, "-", longopts, &longind);
+ opterr = prevopterr;
+
+ switch (optc)
+ {
+ default:
+ if (wanterror)
+ xexit (1);
+ optind = prevoptind;
+ return 0;
+
+ case OPTION_COFF_FORMAT:
+ if ((*optarg == '0' || *optarg == '1' || *optarg == '2')
+ && optarg[1] == '\0')
+ {
+ extern void lang_add_output_format
+ PARAMS ((const char *, const char *, const char *, int));
+ static char buf[] = "coffX-${OUTPUT_FORMAT_TEMPLATE}";
+ coff_version = *optarg - '0';
+ buf[4] = *optarg;
+ lang_add_output_format (buf, NULL, NULL, 0);
+ }
+ else
+ {
+ einfo (_("%P%F: invalid COFF format version %s\n"), optarg);
+
+ }
+ break;
+ }
+ return 1;
+}
+
+static void
+gld_${EMULATION_NAME}_before_parse()
+{
+#ifndef TARGET_ /* I.e., if not generic. */
+ ldfile_set_output_arch ("`echo ${ARCH}`");
+#endif /* not TARGET_ */
+}
+
+static char *
+gld_${EMULATION_NAME}_get_script (isfile)
+ int *isfile;
+EOF
+if test -n "$COMPILE_IN"
+then
+# Scripts compiled in.
+
+# sed commands to quote an ld script as a C string.
+sc='s/["\\]/\\&/g
+s/$/\\n\\/
+1s/^/"/
+$s/$/n"/
+'
+cat >>e${EMULATION_NAME}.c <<EOF
+{
+ *isfile = 0;
+ if (link_info.relocateable == true && config.build_constructors == true)
+ return `sed "$sc" ldscripts/${EMULATION_NAME}.xu`;
+ else if (link_info.relocateable == true)
+ return `sed "$sc" ldscripts/${EMULATION_NAME}.xr`;
+ else if (!config.text_read_only)
+ return `sed "$sc" ldscripts/${EMULATION_NAME}.xbn`;
+ else if (!config.magic_demand_paged)
+ return `sed "$sc" ldscripts/${EMULATION_NAME}.xn`;
+ else
+ return `sed "$sc" ldscripts/${EMULATION_NAME}.x`;
+}
+EOF
+
+else
+# Scripts read from the filesystem.
+
+cat >>e${EMULATION_NAME}.c <<EOF
+{
+ *isfile = 1;
+
+ if (link_info.relocateable == true && config.build_constructors == true)
+ return "ldscripts/${EMULATION_NAME}.xu";
+ else if (link_info.relocateable == true)
+ return "ldscripts/${EMULATION_NAME}.xr";
+ else if (!config.text_read_only)
+ return "ldscripts/${EMULATION_NAME}.xbn";
+ else if (!config.magic_demand_paged)
+ return "ldscripts/${EMULATION_NAME}.xn";
+ else
+ return "ldscripts/${EMULATION_NAME}.x";
+}
+EOF
+
+fi
+
+cat >>e${EMULATION_NAME}.c <<EOF
+struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
+{
+ gld_${EMULATION_NAME}_before_parse,
+ syslib_default,
+ hll_default,
+ after_parse_default,
+ after_open_default,
+ after_allocation_default,
+ set_output_arch_default,
+ ldemul_default_target,
+ before_allocation_default,
+ gld_${EMULATION_NAME}_get_script,
+ "${EMULATION_NAME}",
+ "${OUTPUT_FORMAT}",
+ NULL, /* finish */
+ NULL, /* create output section statements */
+ NULL, /* open dynamic archive */
+ NULL, /* place orphan */
+ NULL, /* set_symbols */
+ gld_${EMULATION_NAME}_parse_args,
+ NULL, /* unrecognized_file */
+ gld_${EMULATION_NAME}_list_options,
+ NULL, /* recognized file */
+ NULL /* find_potential_libraries */
+};
+EOF
diff --git a/contrib/binutils/ld/emultempl/vanilla.em b/contrib/binutils/ld/emultempl/vanilla.em
index 0a74abd..c91d6ca 100644
--- a/contrib/binutils/ld/emultempl/vanilla.em
+++ b/contrib/binutils/ld/emultempl/vanilla.em
@@ -2,7 +2,7 @@
# It does some substitutions.
cat >e${EMULATION_NAME}.c <<EOF
/* A vanilla emulation with no defaults
- Copyright (C) 1991, 1993 Free Software Foundation, Inc.
+ Copyright (C) 1991, 92, 93, 94, 2000 Free Software Foundation, Inc.
Written by Steve Chamberlain steve@cygnus.com
This file is part of GLD, the Gnu Linker.
@@ -26,11 +26,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "ld.h"
-#include "ldemul.h"
-#include "ldfile.h"
#include "ldmisc.h"
#include "ldmain.h"
+#include "ldexp.h"
+#include "ldlang.h"
+#include "ldfile.h"
+#include "ldemul.h"
+
static void vanilla_before_parse()
{
}
diff --git a/contrib/binutils/ld/gen-doc.texi b/contrib/binutils/ld/gen-doc.texi
index 3a36727..8d1acad 100644
--- a/contrib/binutils/ld/gen-doc.texi
+++ b/contrib/binutils/ld/gen-doc.texi
@@ -5,6 +5,7 @@
@c 2. Specific target machines
@set H8300
@set I960
+@set TICOFF
@c 3. Properties of this configuration
@clear SingleFormat
diff --git a/contrib/binutils/ld/genscripts.sh b/contrib/binutils/ld/genscripts.sh
index 8294af7..f6a2970 100755
--- a/contrib/binutils/ld/genscripts.sh
+++ b/contrib/binutils/ld/genscripts.sh
@@ -1,23 +1,32 @@
#!/bin/sh
# genscripts.sh - generate the ld-emulation-target specific files
#
-# Usage: genscripts.sh srcdir libdir host target target_alias \
-# default_emulation native_lib_dirs this_emulation tool_dir
+# Usage: genscripts.sh srcdir libdir exec_prefix \
+# host target target_alias default_emulation \
+# native_lib_dirs this_emulation tool_dir
#
# Sample usage:
-# genscripts.sh /djm/ld-devo/devo/ld /usr/local/lib sparc-sun-sunos4.1.3 \
-# sparc-sun-sunos4.1.3 sparc-sun-sunos4.1.3 sun4 "" sun3 sparc-sun-sunos4.1.3
+# genscripts.sh /djm/ld-devo/devo/ld /usr/local/lib /usr/local \
+# sparc-sun-sunos4.1.3 sparc-sun-sunos4.1.3 sparc-sun-sunos4.1.3 sun4 \
+# "" sun3 sparc-sun-sunos4.1.3
# produces sun3.x sun3.xbn sun3.xn sun3.xr sun3.xu em_sun3.c
srcdir=$1
libdir=$2
-host=$3
-target=$4
-target_alias=$5
-EMULATION_LIBPATH=$6
-NATIVE_LIB_DIRS=$7
-EMULATION_NAME=$8
-tool_lib=`echo ${libdir} | sed -e 's|/lib$||'`/${9-$target_alias}/lib
+exec_prefix=$3
+host=$4
+target=$5
+target_alias=$6
+EMULATION_LIBPATH=$7
+NATIVE_LIB_DIRS=$8
+EMULATION_NAME=$9
+shift 9
+# Can't use ${1:-$target_alias} here due to an Ultrix shell bug.
+if [ "x$1" = "x" ] ; then
+ tool_lib=${exec_prefix}/${target_alias}/lib
+else
+ tool_lib=${exec_prefix}/$1/lib
+fi
# Include the emulation-specific parameters:
. ${srcdir}/emulparams/${EMULATION_NAME}.sh
diff --git a/contrib/binutils/ld/ld.1 b/contrib/binutils/ld/ld.1
index 58516b9..5ebaea8 100644
--- a/contrib/binutils/ld/ld.1
+++ b/contrib/binutils/ld/ld.1
@@ -1,6 +1,6 @@
-.\" Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 1999 Free Software Foundation
+.\" Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 1999, 2000 Free Software Foundation
.\" See section COPYING for conditions for redistribution
-.TH ld 1 "17 August 1992" "cygnus support" "GNU Development Tools"
+.TH ld 1 "" "Free Software Foundation" "GNU Development Tools"
.de BP
.sp
.ti \-.2i
@@ -39,7 +39,7 @@ ld \- the GNU linker
.br
.RB "[\|" "\-defsym\ "\c
.I symbol\c
-\& = \c
+\&=\c
.I expression\c
\&\|]
.RB "[\|" \-\-demangle "\|]"
@@ -122,6 +122,11 @@ ld \- the GNU linker
.RB "[\|" "\-T\ "\c
.I commandfile\c
\&\|]
+.RB "[\|" "\-\-section\-start\ "\c
+.I sectionname\c
+\&=\c
+.I sectionorg\c
+\&\|]
.RB "[\|" "\-Ttext\ "\c
.I textorg\c
\&\|]
@@ -253,8 +258,9 @@ The exceptions\(em\&which may meaningfully be used more than once\(em\&are
.B \-format\c
\&), \c
.B \-defsym\c
-\&,
-\c
+\&, \c
+.B \-\-section\-start\c
+\&, \c
.B \-L\c
\&, \c
.B \-l\c
@@ -454,7 +460,7 @@ specified (\c
\& has the same effect.
.TP
-.BI "-defsym " "symbol" "\fR = \fP" expression
+.BI "-defsym " "symbol" "\fR=\fP" expression
Create a global symbol in the output file, containing the absolute
address given by \c
.I expression\c
@@ -890,6 +896,20 @@ Similar to
but creates a new output section for each input file.
.TP
+.BI "--section-start " "sectionname" "\fR=\fP"org
+Locate a section in the output file at the absolute
+address given by \c
+.I org\c
+\&. \c
+\c
+.I org\c
+\& must be a hexadecimal integer.
+You may use this option as many
+times as necessary to locate multiple sections in the command
+line. If you need more elaborate expressions, consider
+using the linker command language from a script.
+
+.TP
.BI "\-Tbss " "org"\c
.TP
.BI "\-Tdata " "org"\c
@@ -1097,19 +1117,377 @@ The GNU Binary Utilities\c
, Roland H. Pesch.
.SH COPYING
-Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
-.PP
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-.PP
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
+Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998, 2000 Free Software Foundation, Inc.
.PP
-Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be included in
-translations approved by the Free Software Foundation instead of in
-the original English.
+This document is distributed under the terms of the GNU Free
+Documentation License, version 1.1. That license is described in the
+sources for this manual page, but it is not displayed here in order to
+make this manual more consise. Copies of this license can also be
+obtained from: http://www.gnu.org/copyleft/.
+
+\" .SH GNU Free Documentation License
+\" Version 1.1, March 2000
+
+\" Copyright (C) 2000 Free Software Foundation, Inc.
+\" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+\" Everyone is permitted to copy and distribute verbatim
+\" copies of this license document, but changing it is
+\" not allowed.
+\" .PP
+\" 0. PREAMBLE
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 1. APPLICABILITY AND DEFINITIONS
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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".
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 2. VERBATIM COPYING
+\" .PP
+\" 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.
+\" .PP
+\" You may also lend copies, under the same conditions stated above, and
+\" you may publicly display copies.
+\" .PP
+\" 3. COPYING IN QUANTITY
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 4. MODIFICATIONS
+\" .PP
+\" 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:
+\" .PP
+\" 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.
+\" .PP
+\" 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).
+\" .PP
+\" C. State on the Title page the name of the publisher of the
+\" Modified Version, as the publisher.
+\" .PP
+\" D. Preserve all the copyright notices of the Document.
+\" .PP
+\" E. Add an appropriate copyright notice for your modifications
+\" adjacent to the other copyright notices.
+\" .PP
+\" 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.
+\" Preserve in that license notice the full lists of Invariant Sections
+\" and required Cover Texts given in the Document's license notice.
+\" .PP
+\" H. Include an unaltered copy of this License.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" M. Delete any section entitled "Endorsements". Such a section
+\" may not be included in the Modified Version.
+\" .PP
+\" N. Do not retitle any existing section as "Endorsements"
+\" or to conflict in title with any Invariant Section.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 5. COMBINING DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+\" 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."
+\" .PP
+
+\" 6. COLLECTIONS OF DOCUMENTS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 7. AGGREGATION WITH INDEPENDENT WORKS
+\" .PP
+\" 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.
+\" .PP
+\" 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.
+\" .PP
+
+\" 8. TRANSLATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 9. TERMINATION
+\" .PP
+\" 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.
+\" .PP
+
+\" 10. FUTURE REVISIONS OF THIS LICENSE
+\" .PP
+\" 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/.
+\" .PP
+\" 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.
+\" .PP
+
+\" ADDENDUM: How to use this License for your documents
+\" .PP
+\" 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:
+\" .PP
+\" Copyright (c) YEAR YOUR NAME.
+\" Permission is granted to copy, distribute and/or
+\" modify this document under the terms of the GNU
+\" Free Documentation License, Version 1.1 or any later
+\" version published by the Free Software Foundation;
+\" with the Invariant Sections being LIST THEIR TITLES,
+\" with the Front-Cover Texts being LIST, and with the
+\" Back-Cover Texts being LIST. A copy of the license
+\" is included in the section entitled "GNU Free
+\" Documentation License".
+\" .PP
+\" If you have no Invariant Sections, write "with no Invariant Sections"
+\" instead of saying which ones are invariant. If you have no
+\" Front-Cover Texts, write "no Front-Cover Texts" instead of
+\" "Front-Cover Texts being LIST"; likewise for Back-Cover Texts.
+\" .PP
+\" 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/contrib/binutils/ld/ld.h b/contrib/binutils/ld/ld.h
index e2052a0..6b7db93 100644
--- a/contrib/binutils/ld/ld.h
+++ b/contrib/binutils/ld/ld.h
@@ -35,12 +35,11 @@
# define N_(String) (String)
# endif
#else
-/* Stubs that do something close enough. */
-# define textdomain(String) (String)
-# define gettext(String) (String)
-# define dgettext(Domain,Message) (Message)
-# define dcgettext(Domain,Message,Type) (Message)
-# define bindtextdomain(Domain,Directory) (Domain)
+# 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
@@ -59,30 +58,27 @@
#define DISCARD_SECTION_NAME "/DISCARD/"
/* A file name list */
-typedef struct name_list
-{
- const char *name;
- struct name_list *next;
-} name_list;
+typedef struct name_list {
+ const char *name;
+ struct name_list *next;
+}
+name_list;
/* A wildcard specification. This is only used in ldgram.y, but it
winds up in ldgram.h, so we need to define it outside. */
-struct wildcard_spec
-{
+struct wildcard_spec {
const char *name;
struct name_list *exclude_name_list;
boolean sorted;
};
/* Extra information we hold on sections */
-typedef struct user_section_struct
-{
+typedef struct user_section_struct {
/* Pointer to the section where this data will go */
struct lang_input_statement_struct *file;
} section_userdata_type;
-
#define get_userdata(x) ((x)->userdata)
#define BYTE_SIZE (1)
@@ -98,8 +94,7 @@ typedef struct user_section_struct
#define ALIGN_N(this, boundary) \
((( (this) + ((boundary) -1)) & (~((boundary)-1))))
-typedef struct
-{
+typedef struct {
/* 1 => assign space to common symbols even if `relocatable_output'. */
boolean force_common_definition;
boolean relax;
@@ -128,7 +123,7 @@ typedef struct
file. */
boolean embedded_relocs;
- /* If true, force generation of a file with a .exe file. */
+ /* If true, force generation of a file with a .exe file. */
boolean force_exe_suffix;
/* If true, generate a cross reference report. */
@@ -156,15 +151,14 @@ typedef struct
/* If true (the default) check section addresses, once compute,
fpor overlaps. */
boolean check_section_addresses;
-
+
} args_type;
extern args_type command_line;
typedef int token_code_type;
-typedef struct
-{
+typedef struct {
bfd_size_type specified_data_size;
boolean magic_demand_paged;
boolean make_executable;
@@ -207,14 +201,17 @@ typedef struct
boolean stats;
- int split_by_reloc;
- boolean split_by_file;
+ /* If set, orphan input sections will be mapped to separate output
+ sections. */
+ boolean unique_orphan_sections;
+
+ unsigned int split_by_reloc;
+ bfd_size_type split_by_file;
} ld_config_type;
extern ld_config_type config;
-typedef enum
-{
+typedef enum {
lang_first_phase_enum,
lang_allocating_phase_enum,
lang_final_phase_enum
diff --git a/contrib/binutils/ld/ld.texinfo b/contrib/binutils/ld/ld.texinfo
index c9d0fc6..e897d44 100644
--- a/contrib/binutils/ld/ld.texinfo
+++ b/contrib/binutils/ld/ld.texinfo
@@ -20,19 +20,15 @@ This file documents the @sc{gnu} linker LD version @value{VERSION}.
Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
+@ignore
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
+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".
-@ignore
Permission is granted to process this file through Tex and print the
results, provided the printed document carries copying permission
notice identical to this one except for the removal of this paragraph
@@ -52,13 +48,12 @@ notice identical to this one except for the removal of this paragraph
@subtitle Version @value{VERSION}
@author Steve Chamberlain
@author Ian Lance Taylor
-@author Cygnus Solutions
@page
@tex
{\parskip=0pt
-\hfill Cygnus Solutions\par
-\hfill ian\@cygnus.com, doc\@cygnus.com\par
+\hfill Red Hat Inc\par
+\hfill nickc\@credhat.com, doc\@redhat.com\par
\hfill {\it Using LD, the GNU linker}\par
\hfill Edited by Jeffrey Osier (jeffrey\@cygnus.com)\par
}
@@ -66,19 +61,15 @@ notice identical to this one except for the removal of this paragraph
@end tex
@vskip 0pt plus 1filll
-Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 1999 Free Software Foundation, Inc.
+Copyright @copyright{} 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+ Permission is granted to copy, 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".
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided also that
-the entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions.
@end titlepage
@end iftex
@c FIXME: Talk about importance of *order* of args, cmds to linker!
@@ -88,6 +79,10 @@ into another language, under the above conditions for modified versions.
@top Using ld
This file documents the @sc{gnu} linker ld version @value{VERSION}.
+This document is distributed under the terms of the GNU Free
+Documentation License. A copy of the license is included in the
+section entitled "GNU Free Documentation License".
+
@menu
* Overview:: Overview
* Invocation:: Invocation
@@ -105,6 +100,9 @@ This file documents the @sc{gnu} linker ld version @value{VERSION}.
@ifset I960
* i960:: ld and the Intel 960 family
@end ifset
+@ifset TICOFF
+* TI COFF:: ld and the TI COFF
+@end ifset
@end ifclear
@ifclear SingleFormat
* BFD:: BFD
@@ -113,6 +111,7 @@ This file documents the @sc{gnu} linker ld version @value{VERSION}.
* Reporting Bugs:: Reporting Bugs
* MRI:: MRI Compatible Script Files
+* GNU Free Documentation License:: GNU Free Documentation License
* Index:: Index
@end menu
@end ifinfo
@@ -220,13 +219,20 @@ whitespace, or be given as separate arguments immediately following the
option that requires them.
For options whose names are multiple letters, either one dash or two can
-precede the option name; for example, @samp{--oformat} and
-@samp{--oformat} are equivalent. Arguments to multiple-letter options
-must either be separated from the option name by an equals sign, or be
-given as separate arguments immediately following the option that
-requires them. For example, @samp{--oformat srec} and
-@samp{--oformat=srec} are equivalent. Unique abbreviations of the names
-of multiple-letter options are accepted.
+precede the option name; for example, @samp{-trace-symbol} and
+@samp{--trace-symbol} are equivalent. Note - there is one exception to
+this rule. Multiple letter options that start with a lower case 'o' can
+only be preceeded by two dashes. This is to reduce confusion with the
+@samp{-o} option. So for example @samp{-omagic} sets the output file
+name to @samp{magic} whereas @samp{--omagic} sets the NMAGIC flag on the
+output.
+
+Arguments to multiple-letter options must either be separated from the
+option name by an equals sign, or be given as separate arguments
+immediately following the option that requires them. For example,
+@samp{--trace-symbol foo} and @samp{--trace-symbol=foo} are equivalent.
+Unique abbreviations of the names of multiple-letter options are
+accepted.
Note - if the linker is being invoked indirectly, via a compiler driver
(eg @samp{gcc}) then all the linker command line options should be
@@ -588,6 +594,16 @@ If @var{level} is a numeric values greater than zero @code{ld} optimizes
the output. This might take significantly longer and therefore probably
should only be enabled for the final binary.
+@kindex -q
+@kindex --emit-relocs
+@cindex retain relocations in final executable
+@item -q
+@itemx --emit-relocs
+Leave relocation sections and contents in fully linked exececutables.
+Post link analysis and optimization tools may need this information in
+order to perform correct modifications of executables. This results
+in larger executables.
+
@cindex partial link
@cindex relocatable output
@kindex -r
@@ -679,6 +695,16 @@ with @samp{-Ur}; once the constructor table has been built, it cannot
be added to. Use @samp{-Ur} only for the last partial link, and
@samp{-r} for the others.
+@kindex --unique[=@var{SECTION}]
+@item --unique[=@var{SECTION}]
+Creates a separate output section for every input section matching
+@var{SECTION}, or if the optional wildcard @var{SECTION} argument is
+missing, for every orphan input section. An orphan section is one not
+specifically mentioned in a linker script. You may use this option
+multiple times on the command line; It prevents the normal merging of
+input sections with the same name, overriding output section assignments
+in a linker script.
+
@kindex -v
@kindex -V
@kindex --version
@@ -724,7 +750,21 @@ for Solaris compatibility.
@kindex -z @var{keyword}
@item -z @var{keyword}
-This option is ignored for Solaris compatibility.
+The recognized keywords are @code{initfirst}, @code{interpose},
+@code{loadfltr}, @code{nodefaultlib}, @code{nodelete}, @code{nodlopen},
+@code{nodump}, @code{now} and @code{origin}. The other keywords are
+ignored for Solaris compatibility. @code{initfirst} marks the object
+to be initialized first at runtime before any other objects.
+@code{interpose} marks the object that its symbol table interposes
+before all symbols but the primary executable. @code{loadfltr} marks
+the object that its filtees be processed immediately at runtime.
+@code{nodefaultlib} marks the object that the search for dependencies
+of this object will ignore any default library search paths.
+@code{nodelete} marks the object shouldn't be unloaded at runtime.
+@code{nodlopen} marks the object not available to @code{dlopen}.
+@code{nodump} marks the object can not be dumped by @code{dldump}.
+@code{now} marks the object with the non-lazy runtime binding.
+@code{origin} marks the object may contain $ORIGIN.
@kindex -(
@cindex groups of archives
@@ -825,17 +865,19 @@ space between @var{symbol}, the equals sign (``@key{=}''), and
@var{expression}.
@cindex demangling, from command line
-@kindex --demangle
+@kindex --demangle[=@var{style}]
@kindex --no-demangle
-@item --demangle
+@item --demangle[=@var{style}]
@itemx --no-demangle
These options control whether to demangle symbol names in error messages
and other output. When the linker is told to demangle, it tries to
present symbol names in a readable fashion: it strips leading
underscores if they are used by the object file format, and converts C++
-mangled symbol names into user readable names. The linker will demangle
-by default unless the environment variable @samp{COLLECT_NO_DEMANGLE} is
-set. These options may be used to override the default.
+mangled symbol names into user readable names. Different compilers have
+different mangling styles. The optional demangling style argument can be used
+to choose an appropriate demangling style for your compiler. The linker will
+demangle by default unless the environment variable @samp{COLLECT_NO_DEMANGLE}
+is set. These options may be used to override the default.
@cindex dynamic linker, from command line
@kindex --dynamic-linker @var{file}
@@ -882,6 +924,10 @@ specifying @samp{--no-gc-sections} on the command line.
@item --help
Print a summary of the command-line options on the standard output and exit.
+@kindex --target-help
+@item --target-help
+Print a summary of all target specific options on the standard output and exit.
+
@kindex -Map
@item -Map @var{mapfile}
Print a link map to the file @var{mapfile}. See the description of the
@@ -902,6 +948,19 @@ Normally when creating a non-symbolic shared library, undefined symbols
are allowed and left to be resolved by the runtime loader. This option
disallows such undefined symbols.
+@kindex --allow-shlib-undefined
+@item --allow-shlib-undefined
+Allow undefined symbols in shared objects even when --no-undefined is
+set. The net result will be that undefined symbols in regular objects
+will still trigger an error, but undefined symbols in shared objects
+will be ignored. The implementation of no_undefined makes the
+assumption that the runtime linker will choke on undefined symbols.
+However there is at least one system (BeOS) where undefined symbols in
+shared libraries is normal since the kernel patches them at load time to
+select which function is most appropriate for the current architecture.
+I.E. dynamically select an appropriate memset function. Apparently it
+is also normal for HPPA shared libraries to have undefined symbols.
+
@kindex --no-warn-mismatch
@item --no-warn-mismatch
Normally @code{ld} will give an error if you try to link together input
@@ -1045,6 +1104,11 @@ specifies the first set of directories to search. The
either by specifying a list of names separated by colons, or by
appearing multiple times.
+This option should be used with caution as it overrides the search path
+that may have been hard compiled into a shared library. In such a case it
+is possible to use unintentionally a different search path than the
+runtime linker would do.
+
The linker uses the following search paths to locate required shared
libraries.
@enumerate
@@ -1055,11 +1119,11 @@ Any directories specified by @code{-rpath} options. The difference
between @code{-rpath} and @code{-rpath-link} is that directories
specified by @code{-rpath} options are included in the executable and
used at runtime, whereas the @code{-rpath-link} option is only effective
-at link time.
+at link time. It is for the native linker only.
@item
On an ELF system, if the @code{-rpath} and @code{rpath-link} options
were not used, search the contents of the environment variable
-@code{LD_RUN_PATH}.
+@code{LD_RUN_PATH}. It is for the native linker only.
@item
On SunOS, if the @code{-rpath} option was not used, search any
directories specified using @code{-L} options.
@@ -1067,6 +1131,11 @@ directories specified using @code{-L} options.
For a native linker, the contents of the environment variable
@code{LD_LIBRARY_PATH}.
@item
+For a native ELF linker, the directories in @code{DT_RUNPATH} or
+@code{DT_RPATH} of a shared library are searched for shared
+libraries needed by it. The @code{DT_RPATH} entries are ignored if
+@code{DT_RUNPATH} entries exist.
+@item
The default directories, normally @file{/lib} and @file{/usr/lib}.
@item
For a native linker on an ELF system, if the file @file{/etc/ld.so.conf}
@@ -1096,22 +1165,23 @@ everything else. This is to prevent gaps between symbols due to
alignment constraints.
@kindex --split-by-file
-@item --split-by-file
+@item --split-by-file [@var{size}]
Similar to @code{--split-by-reloc} but creates a new output section for
-each input file.
+each input file when @var{size} is reached. @var{size} defaults to a
+size of 1 if not given.
@kindex --split-by-reloc
-@item --split-by-reloc @var{count}
-Trys to creates extra sections in the output file so that no single
+@item --split-by-reloc [@var{count}]
+Tries to creates extra sections in the output file so that no single
output section in the file contains more than @var{count} relocations.
-This is useful when generating huge relocatable for downloading into
+This is useful when generating huge relocatable files for downloading into
certain real time kernels with the COFF object file format; since COFF
cannot represent more than 65535 relocations in a single section. Note
that this will fail to work with object file formats which do not
support arbitrary sections. The linker will not split up individual
input sections for redistribution, so if a single input section contains
more than @var{count} relocations one output section will contain that
-many relocations.
+many relocations. @var{count} defaults to a value of 32768.
@kindex --stats
@item --stats
@@ -1133,6 +1203,18 @@ full debugging information by over 30 percent. Unfortunately, the SunOS
trouble). The @samp{--traditional-format} switch tells @code{ld} to not
combine duplicate entries.
+@kindex --section-start @var{sectionname}=@var{org}
+@item --section-start @var{sectionname}=@var{org}
+Locate a section in the output file at the absolute
+address given by @var{org}. You may use this option as many
+times as necessary to locate multiple sections in the command
+line.
+@var{org} must be a single hexadecimal integer;
+for compatibility with other linkers, you may omit the leading
+@samp{0x} usually associated with hexadecimal values. @emph{Note:} there
+should be no white space between @var{sectionname}, the equals
+sign (``@key{=}''), and @var{org}.
+
@kindex -Tbss @var{org}
@kindex -Tdata @var{org}
@kindex -Ttext @var{org}
@@ -1295,6 +1377,12 @@ files. This is normally used to turn an archive file into a shared
library, forcing every object to be included in the resulting shared
library. This option may be used more than once.
+Two notes when using this option from gcc: First, gcc doesn't know
+about this option, so you have to use @code{-Wl,-whole-archive}.
+Second, don't forget to use @code{-Wl,-no-whole-archive} after your
+list of archives, because gcc will add its own list of archives to
+your link and you may not want this flag to affect those as well.
+
@kindex --wrap
@item --wrap @var{symbol}
Use a wrapper function for @var{symbol}. Any undefined reference to
@@ -1329,6 +1417,17 @@ you should not put the definition of @code{__real_malloc} in the same
file as @code{__wrap_malloc}; if you do, the assembler may resolve the
call before the linker has a chance to wrap it to @code{malloc}.
+@kindex --enable-new-dtags
+@kindex --disable-new-dtags
+@item --enable-new-dtags
+@itemx --disable-new-dtags
+This linker can create the new dynamic tags in ELF. But the older ELF
+systems may not understand them. If you specify
+@code{--enable-new-dtags}, the dynamic tags will be created as needed.
+If you specify @code{--disable-new-dtags}, no new dynamic tags will be
+created. By default, the new dynamic tags are not created. Note that
+those options are only available for ELF systems.
+
@end table
@subsection Options specific to i386 PE targets
@@ -2486,6 +2585,16 @@ When the object file format does not have an explicit endianness, as is
true of, for example, S-records, the value will be stored in the
endianness of the first input object file.
+Note - these commands only work inside a section description and not
+between them, so the following will produce an error from the linker:
+@smallexample
+SECTIONS @{@ .text : @{@ *(.text) @}@ LONG(1) .data : @{@ *(.data) @}@ @}@
+@end smallexample
+whereas this will work:
+@smallexample
+SECTIONS @{@ .text : @{@ *(.text) ; LONG(1) @}@ .data : @{@ *(.data) @}@ @}@
+@end smallexample
+
@kindex FILL(@var{expression})
@cindex holes, filling
@cindex unspecified memory
@@ -3823,6 +3932,10 @@ functionality are not listed.
* H8/300:: @code{ld} and the H8/300
* i960:: @code{ld} and the Intel 960 family
* ARM:: @code{ld} and the ARM family
+* HPPA ELF32:: @code{ld} and HPPA 32-bit ELF
+@ifset TICOFF
+* TI COFF:: @code{ld} and TI COFF
+@end ifset
@end menu
@end ifset
@@ -3963,6 +4076,50 @@ But it also sets the bottom bit of the address, so that it can be
branched to using a BX instruction, and the program will start
executing in Thumb mode straight away.
+@node HPPA ELF32
+@section @code{ld} and HPPA 32-bit ELF support
+@cindex HPPA multiple sub-space stubs
+@kindex --multi-subspace
+When generating a shared library, @code{ld} will by default generate
+import stubs suitable for use with a single sub-space application.
+The @samp{--multi-subspace} switch causes @code{ld} to generate export
+stubs, and different (larger) import stubs suitable for use with
+multiple sub-spaces.
+
+@cindex HPPA stub grouping
+@kindex --stub-group-size=@var{N}
+Long branch stubs and import/export stubs are placed by @code{ld} in
+stub sections located between groups of input sections.
+@samp{--stub-group-size} specifies the maximum size of a group of input
+sections handled by one stub section. Since branch offsets are signed,
+a stub section may serve two groups of input sections, one group before
+the stub section, and one group after it. However, when using
+conditional branches that require stubs, it may be better (for branch
+prediction) that stub sections only serve one group of input sections.
+A negative value for @samp{N} chooses this scheme, ensuring that
+branches to stubs always use a negative offset. Two special values of
+@samp{N} are recognized, @samp{1} and @samp{-1}. These both instruct
+@code{ld} to automatically size input section groups for the branch types
+detected, with the same behaviour regarding stub placement as other
+positive or negative values of @samp{N} respectively.
+
+Note that @samp{--stub-group-size} does not split input sections. A
+single input section larger than the group size specified will of course
+create a larger group (of one section). If input sections are too
+large, it may not be possible for a branch to reach its stub.
+
+@ifset TICOFF
+@node TI COFF
+@section @code{ld}'s support for various TI COFF versions
+@cindex TI COFF versions
+@kindex --format=@var{version}
+The @samp{--format} switch allows selection of one of the various
+TI COFF versions. The latest of this writing is 2; versions 0 and 1 are
+also supported. The TI COFF versions also vary in header byte-order
+format; @code{ld} will read any version or byte order, but the output
+header format depends on the default specified by the specific target.
+@end ifset
+
@ifclear GENERIC
@lowersections
@end ifclear
@@ -4074,7 +4231,7 @@ individuals in the file @file{etc/SERVICE} in the @sc{gnu} Emacs
distribution.
Otherwise, send bug reports for @code{ld} to
-@samp{bug-gnu-utils@@gnu.org}.
+@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
@@ -4353,6 +4510,370 @@ If you have more than one @code{SECT} statement for the same
@var{secname}, only the @emph{first} sets the start address.
@end table
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@cindex GNU Free Documentation License
+
+ GNU Free Documentation License
+
+ Version 1.1, March 2000
+
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+written document "free" in the sense of freedom: to assure everyone
+the effective freedom to copy and redistribute it, with or without
+modifying it, either commercially or noncommercially. Secondarily,
+this License preserves for the author and publisher a way to get
+credit for their work, while not being considered responsible for
+modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a
+notice placed by the copyright holder saying it can be distributed
+under the terms of this License. The "Document", below, refers to any
+such manual or work. Any member of the public is a licensee, and is
+addressed as "you".
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (For example, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, whose contents can be viewed and edited directly and
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup has been designed to thwart or discourage
+subsequent modification by readers is not Transparent. A copy that is
+not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML designed for human modification. Opaque formats include
+PostScript, PDF, proprietary formats that can be read and edited only
+by proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML produced by some word processors for output
+purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100,
+and the Document's license notice requires Cover Texts, you must enclose
+the copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a publicly-accessible computer-network location containing a complete
+Transparent copy of the Document, free of added material, which the
+general network-using public has access to download anonymously at no
+charge using public-standard network protocols. If you use the latter
+option, you must take reasonably prudent steps, when you begin
+distribution of Opaque copies in quantity, to ensure that this
+Transparent copy will remain thus accessible at the stated location
+until at least one year after the last time you distribute an Opaque
+copy (directly or through your agents or retailers) of that edition to
+the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has less than five).
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section entitled "History", and its title, and add to
+ it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. In any section entitled "Acknowledgements" or "Dedications",
+ preserve the section's title, and preserve in the section all the
+ substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section as "Endorsements"
+ or to conflict in title with any Invariant Section.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled "History"
+in the various original documents, forming one section entitled
+"History"; likewise combine any sections entitled "Acknowledgements",
+and any sections entitled "Dedications". You must delete all sections
+entitled "Endorsements."
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, does not as a whole count as a Modified Version
+of the Document, provided no compilation copyright is claimed for the
+compilation. Such a compilation is called an "aggregate", and this
+License does not apply to the other self-contained works thus compiled
+with the Document, on account of their being thus compiled, if they
+are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one quarter
+of the entire aggregate, the Document's Cover Texts may be placed on
+covers that surround only the Document within the aggregate.
+Otherwise they must appear on covers around the whole aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License provided that you also include the
+original English version of this License. In case of a disagreement
+between the translation and the original English version of this
+License, the original English version will prevail.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1
+ or any later version published by the Free Software Foundation;
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+@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 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.
+
@node Index
@unnumbered Index
diff --git a/contrib/binutils/ld/ldcref.c b/contrib/binutils/ld/ldcref.c
index e208106..cb2a00f 100644
--- a/contrib/binutils/ld/ldcref.c
+++ b/contrib/binutils/ld/ldcref.c
@@ -36,8 +36,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* We keep an instance of this structure for each reference to a
symbol from a given object. */
-struct cref_ref
-{
+struct cref_ref {
/* The next reference. */
struct cref_ref *next;
/* The object. */
@@ -52,8 +51,7 @@ struct cref_ref
/* We keep a hash table of symbols. Each entry looks like this. */
-struct cref_hash_entry
-{
+struct cref_hash_entry {
struct bfd_hash_entry root;
/* The demangled name. */
char *demangled;
@@ -63,8 +61,7 @@ struct cref_hash_entry
/* This is what the hash table looks like. */
-struct cref_hash_table
-{
+struct cref_hash_table {
struct bfd_hash_table root;
};
@@ -145,7 +142,6 @@ cref_hash_newfunc (entry, table, string)
/* Add a symbol to the cref hash table. This is called for every
symbol that is seen during the link. */
-/*ARGSUSED*/
void
add_cref (name, abfd, section, value)
const char *name;
@@ -242,7 +238,7 @@ output_cref (fp)
len = strlen (msg);
while (len < FILECOL)
{
- putc (' ' , fp);
+ putc (' ', fp);
++len;
}
fprintf (fp, _("File\n"));
@@ -350,7 +346,6 @@ check_nocrossrefs ()
/* Check one symbol to see if it is a prohibited cross reference. */
-/*ARGSUSED*/
static boolean
check_nocrossref (h, ignore)
struct cref_hash_entry *h;
@@ -391,8 +386,7 @@ check_nocrossref (h, ignore)
/* The struct is used to pass information from check_refs to
check_reloc_refs through bfd_map_over_sections. */
-struct check_refs_info
-{
+struct check_refs_info {
struct cref_hash_entry *h;
asection *defsec;
struct lang_nocrossrefs *ncrs;
diff --git a/contrib/binutils/ld/ldctor.c b/contrib/binutils/ld/ldctor.c
index 0a434b8..6e5eace 100644
--- a/contrib/binutils/ld/ldctor.c
+++ b/contrib/binutils/ld/ldctor.c
@@ -1,8 +1,8 @@
/* ldctor.c -- constructor support routines
- Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 1998
+ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 2000
Free Software Foundation, Inc.
By Steve Chamberlain <sac@cygnus.com>
-
+
This file is part of GLD, the Gnu Linker.
GLD is free software; you can redistribute it and/or modify
@@ -86,7 +86,8 @@ ldctor_add_set_entry (h, reloc, name, section, value)
{
if (p->reloc != reloc)
{
- einfo (_("%P%X: Different relocs used in set %s\n"), h->root.string);
+ einfo (_("%P%X: Different relocs used in set %s\n"),
+ h->root.string);
return;
}
@@ -136,7 +137,7 @@ ctor_prio (name)
while (*name == '_')
++name;
- if (strncmp (name, "GLOBAL_", sizeof "GLOBAL_" - 1) != 0)
+ if (strncmp (name, "GLOBAL_", sizeof "GLOBAL_" - 1) != 0)
return -1;
name += sizeof "GLOBAL_" - 1;
@@ -365,7 +366,7 @@ ldctor_build_sets ()
minfo ("%G\n", e->section->owner, e->section, e->value);
}
- /* Need SEC_KEEP for --gc-sections */
+ /* Need SEC_KEEP for --gc-sections. */
if (! bfd_is_abs_section (e->section))
e->section->flags |= SEC_KEEP;
diff --git a/contrib/binutils/ld/ldctor.h b/contrib/binutils/ld/ldctor.h
index d873f77..4283c47 100644
--- a/contrib/binutils/ld/ldctor.h
+++ b/contrib/binutils/ld/ldctor.h
@@ -1,6 +1,6 @@
/* ldctor.h - linker constructor support
- Copyright 1991, 92, 93, 94, 95, 1998 Free Software Foundation, Inc.
-
+ Copyright 1991, 92, 93, 94, 95, 98, 2000 Free Software Foundation, Inc.
+
This file is part of GLD, the Gnu Linker.
GLD is free software; you can redistribute it and/or modify
@@ -31,8 +31,7 @@ extern boolean constructors_sorted;
/* We keep a list of these structures for each set we build. */
-struct set_info
-{
+struct set_info {
struct set_info *next; /* Next set. */
struct bfd_link_hash_entry *h; /* Hash table entry. */
bfd_reloc_code_real_type reloc; /* Reloc to use for an entry. */
@@ -40,8 +39,7 @@ struct set_info
struct set_element *elements; /* Elements in set. */
};
-struct set_element
-{
+struct set_element {
struct set_element *next; /* Next element. */
const char *name; /* Name in set (may be NULL). */
asection *section; /* Section of value in set. */
diff --git a/contrib/binutils/ld/ldemul.c b/contrib/binutils/ld/ldemul.c
index 08a4e47..b0f43cd 100644
--- a/contrib/binutils/ld/ldemul.c
+++ b/contrib/binutils/ld/ldemul.c
@@ -1,5 +1,5 @@
/* ldemul.c -- clearing house for ld emulation states
- Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
This file is part of GLD, the Gnu Linker.
@@ -15,47 +15,48 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR 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. */
+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 "bfd.h"
#include "sysdep.h"
#include "ld.h"
-#include "ldemul.h"
#include "ldmisc.h"
#include "ldexp.h"
#include "ldlang.h"
#include "ldfile.h"
+#include "ldemul.h"
#include "ldmain.h"
#include "ldemul-list.h"
ld_emulation_xfer_type *ld_emulation;
void
-ldemul_hll(name)
+ldemul_hll (name)
char *name;
{
- ld_emulation->hll(name);
+ ld_emulation->hll (name);
}
-
-void ldemul_syslib(name)
+void
+ldemul_syslib (name)
char *name;
{
- ld_emulation->syslib(name);
+ ld_emulation->syslib (name);
}
void
-ldemul_after_parse()
+ldemul_after_parse ()
{
- ld_emulation->after_parse();
+ ld_emulation->after_parse ();
}
void
-ldemul_before_parse()
+ldemul_before_parse ()
{
- ld_emulation->before_parse();
+ ld_emulation->before_parse ();
}
void
@@ -64,52 +65,51 @@ ldemul_after_open ()
ld_emulation->after_open ();
}
-void
-ldemul_after_allocation()
+void
+ldemul_after_allocation ()
{
- ld_emulation->after_allocation();
+ ld_emulation->after_allocation ();
}
-void
-ldemul_before_allocation()
+void
+ldemul_before_allocation ()
{
if (ld_emulation->before_allocation)
- ld_emulation->before_allocation();
+ ld_emulation->before_allocation ();
}
-
void
-ldemul_set_output_arch()
+ldemul_set_output_arch ()
{
- ld_emulation->set_output_arch();
+ ld_emulation->set_output_arch ();
}
void
-ldemul_finish()
+ldemul_finish ()
{
if (ld_emulation->finish)
- ld_emulation->finish();
+ ld_emulation->finish ();
}
void
-ldemul_set_symbols()
+ldemul_set_symbols ()
{
if (ld_emulation->set_symbols)
- ld_emulation->set_symbols();
+ ld_emulation->set_symbols ();
}
void
-ldemul_create_output_section_statements()
+ldemul_create_output_section_statements ()
{
if (ld_emulation->create_output_section_statements)
- ld_emulation->create_output_section_statements();
+ ld_emulation->create_output_section_statements ();
}
char *
-ldemul_get_script(isfile)
+ldemul_get_script (isfile)
int *isfile;
{
- return ld_emulation->get_script(isfile);
+ return ld_emulation->get_script (isfile);
}
boolean
@@ -138,7 +138,7 @@ ldemul_parse_args (argc, argv)
int argc;
char **argv;
{
- /* Try and use the emulation parser if there is one. */
+ /* Try and use the emulation parser if there is one. */
if (ld_emulation->parse_args)
{
return ld_emulation->parse_args (argc, argv);
@@ -169,26 +169,25 @@ ldemul_recognized_file (entry)
}
char *
-ldemul_choose_target()
+ldemul_choose_target ()
{
- return ld_emulation->choose_target();
+ return ld_emulation->choose_target ();
}
/* The default choose_target function. */
char *
-ldemul_default_target()
+ldemul_default_target ()
{
char *from_outside = getenv (TARGET_ENVIRON);
- if (from_outside != (char *)NULL)
+ if (from_outside != (char *) NULL)
return from_outside;
return ld_emulation->target_name;
}
-void
-after_parse_default()
+void
+after_parse_default ()
{
-
}
void
@@ -197,37 +196,33 @@ after_open_default ()
}
void
-after_allocation_default()
+after_allocation_default ()
{
-
}
void
-before_allocation_default()
+before_allocation_default ()
{
-
}
void
-set_output_arch_default()
+set_output_arch_default ()
{
- /* Set the output architecture and machine if possible */
- bfd_set_arch_mach(output_bfd,
- ldfile_output_architecture, ldfile_output_machine);
+ /* Set the output architecture and machine if possible. */
+ bfd_set_arch_mach (output_bfd,
+ ldfile_output_architecture, ldfile_output_machine);
}
-/*ARGSUSED*/
void
-syslib_default(ignore)
- char *ignore ATTRIBUTE_UNUSED;
+syslib_default (ignore)
+ char *ignore ATTRIBUTE_UNUSED;
{
info_msg (_("%S SYSLIB ignored\n"));
}
-/*ARGSUSED*/
void
-hll_default(ignore)
- char *ignore ATTRIBUTE_UNUSED;
+hll_default (ignore)
+ char *ignore ATTRIBUTE_UNUSED;
{
info_msg (_("%S HLL ignored\n"));
}
@@ -235,25 +230,25 @@ hll_default(ignore)
ld_emulation_xfer_type *ld_emulations[] = { EMULATION_LIST };
void
-ldemul_choose_mode(target)
+ldemul_choose_mode (target)
char *target;
{
- ld_emulation_xfer_type **eptr = ld_emulations;
- /* Ignore "gld" prefix. */
- if (target[0] == 'g' && target[1] == 'l' && target[2] == 'd')
- target += 3;
- for (; *eptr; eptr++)
- {
- if (strcmp(target, (*eptr)->emulation_name) == 0)
- {
- ld_emulation = *eptr;
- return;
- }
- }
- einfo (_("%P: unrecognised emulation mode: %s\n"), target);
- einfo (_("Supported emulations: "));
- ldemul_list_emulations (stderr);
- einfo ("%F\n");
+ ld_emulation_xfer_type **eptr = ld_emulations;
+ /* Ignore "gld" prefix. */
+ if (target[0] == 'g' && target[1] == 'l' && target[2] == 'd')
+ target += 3;
+ for (; *eptr; eptr++)
+ {
+ if (strcmp (target, (*eptr)->emulation_name) == 0)
+ {
+ ld_emulation = *eptr;
+ return;
+ }
+ }
+ einfo (_("%P: unrecognised emulation mode: %s\n"), target);
+ einfo (_("Supported emulations: "));
+ ldemul_list_emulations (stderr);
+ einfo ("%F\n");
}
void
@@ -275,33 +270,33 @@ ldemul_list_emulations (f)
void
ldemul_list_emulation_options (f)
- FILE * f;
+ FILE *f;
{
- ld_emulation_xfer_type ** eptr;
+ ld_emulation_xfer_type **eptr;
int options_found = 0;
-
- for (eptr = ld_emulations; * eptr; eptr ++)
+
+ for (eptr = ld_emulations; *eptr; eptr++)
{
- ld_emulation_xfer_type * emul = * eptr;
-
+ ld_emulation_xfer_type *emul = *eptr;
+
if (emul->list_options)
{
fprintf (f, "%s: \n", emul->emulation_name);
-
+
emul->list_options (f);
options_found = 1;
}
}
-
+
if (! options_found)
fprintf (f, _(" no emulation specific options.\n"));
}
int
ldemul_find_potential_libraries (name, entry)
- char * name;
- lang_input_statement_type * entry;
+ char *name;
+ lang_input_statement_type *entry;
{
if (ld_emulation->find_potential_libraries)
return ld_emulation->find_potential_libraries (name, entry);
diff --git a/contrib/binutils/ld/ldemul.h b/contrib/binutils/ld/ldemul.h
index b2d9103..224dab5 100644
--- a/contrib/binutils/ld/ldemul.h
+++ b/contrib/binutils/ld/ldemul.h
@@ -1,5 +1,6 @@
/* ld-emul.h - Linker emulation header file
- Copyright 1991, 92, 93, 94, 95, 96, 97, 1998, 2000 Free Software Foundation, Inc.
+ Copyright 1991, 92, 93, 94, 95, 96, 97, 1998, 2000
+ Free Software Foundation, Inc.
This file is part of GLD, the Gnu Linker.
@@ -16,11 +17,6 @@
#ifndef LDEMUL_H
#define LDEMUL_H
-#if ANSI_PROTOTYPES
-struct lang_input_statement_struct;
-struct search_dirs;
-#endif
-
extern void ldemul_hll PARAMS ((char *));
extern void ldemul_syslib PARAMS ((char *));
extern void ldemul_after_parse PARAMS ((void));
@@ -58,8 +54,7 @@ extern void hll_default PARAMS ((char*));
extern int ldemul_find_potential_libraries
PARAMS ((char *, struct lang_input_statement_struct *));
-typedef struct ld_emulation_xfer_struct
-{
+typedef struct ld_emulation_xfer_struct {
/* Run before parsing the command line and script file.
Set the architecture, maybe other things. */
void (*before_parse) PARAMS ((void));
@@ -116,12 +111,12 @@ typedef struct ld_emulation_xfer_struct
boolean (*place_orphan)
PARAMS ((struct lang_input_statement_struct *, asection *));
- /* Run after assigning parsing with the args, but before
- reading the script. Used to initialize symbols used in the script. */
+ /* Run after assigning parsing with the args, but before
+ reading the script. Used to initialize symbols used in the script. */
void (*set_symbols) PARAMS ((void));
/* Run to parse args which the base linker doesn't
- understand. Return non zero on sucess. */
+ understand. Return non zero on sucess. */
int (*parse_args) PARAMS ((int, char **));
/* Run to handle files which are not recognized as object files or
@@ -143,13 +138,12 @@ typedef struct ld_emulation_xfer_struct
(For VMS files matching ":lib*.a" have also been scanned). */
int (* find_potential_libraries)
PARAMS ((char *, struct lang_input_statement_struct *));
-
+
} ld_emulation_xfer_type;
-typedef enum
-{
+typedef enum {
intel_ic960_ld_mode_enum,
- default_mode_enum ,
+ default_mode_enum,
intel_gld960_ld_mode_enum
} lang_emulation_mode_enum_type;
diff --git a/contrib/binutils/ld/ldexp.c b/contrib/binutils/ld/ldexp.c
index 0c38314..cc34274 100644
--- a/contrib/binutils/ld/ldexp.c
+++ b/contrib/binutils/ld/ldexp.c
@@ -1,7 +1,7 @@
/* This module handles expression trees.
- Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
- Written by Steve Chamberlain of Cygnus Support (sac@cygnus.com).
+ Written by Steve Chamberlain of Cygnus Support <sac@cygnus.com>.
This file is part of GLD, the Gnu Linker.
@@ -20,15 +20,12 @@ 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. */
-/*
-This module is in charge of working out the contents of expressions.
-
-It has to keep track of the relative/absness of a symbol etc. This is
-done by keeping all values in a struct (an etree_value_type) which
-contains a value, a section to which it is relative and a valid bit.
-
-*/
+/* This module is in charge of working out the contents of expressions.
+ It has to keep track of the relative/absness of a symbol etc. This
+ is done by keeping all values in a struct (an etree_value_type)
+ which contains a value, a section to which it is relative and a
+ valid bit. */
#include "bfd.h"
#include "sysdep.h"
@@ -69,71 +66,71 @@ static void
exp_print_token (code)
token_code_type code;
{
- static CONST struct
- {
- token_code_type code;
- char *name;
- } table[] =
- {
- { INT, "int" },
- { REL, "relocateable" },
- { NAME,"NAME" },
- { PLUSEQ,"+=" },
- { MINUSEQ,"-=" },
- { MULTEQ,"*=" },
- { DIVEQ,"/=" },
- { LSHIFTEQ,"<<=" },
- { RSHIFTEQ,">>=" },
- { ANDEQ,"&=" },
- { OREQ,"|=" },
- { OROR,"||" },
- { ANDAND,"&&" },
- { EQ,"==" },
- { NE,"!=" },
- { LE,"<=" },
- { GE,">=" },
- { LSHIFT,"<<" },
- { RSHIFT,">>=" },
- { ALIGN_K,"ALIGN" },
- { BLOCK,"BLOCK" },
- { SECTIONS,"SECTIONS" },
- { SIZEOF_HEADERS,"SIZEOF_HEADERS" },
- { NEXT,"NEXT" },
- { SIZEOF,"SIZEOF" },
- { ADDR,"ADDR" },
- { LOADADDR,"LOADADDR" },
- { MEMORY,"MEMORY" },
- { DEFINED,"DEFINED" },
- { TARGET_K,"TARGET" },
- { SEARCH_DIR,"SEARCH_DIR" },
- { MAP,"MAP" },
- { QUAD,"QUAD" },
- { SQUAD,"SQUAD" },
- { LONG,"LONG" },
- { SHORT,"SHORT" },
- { BYTE,"BYTE" },
- { ENTRY,"ENTRY" },
- { 0,(char *)NULL }
- };
+ static CONST struct {
+ token_code_type code;
+ char *name;
+ } table[] = {
+ { INT, "int" },
+ { REL, "relocateable" },
+ { NAME, "NAME" },
+ { PLUSEQ, "+=" },
+ { MINUSEQ, "-=" },
+ { MULTEQ, "*=" },
+ { DIVEQ, "/=" },
+ { LSHIFTEQ, "<<=" },
+ { RSHIFTEQ, ">>=" },
+ { ANDEQ, "&=" },
+ { OREQ, "|=" },
+ { OROR, "||" },
+ { ANDAND, "&&" },
+ { EQ, "==" },
+ { NE, "!=" },
+ { LE, "<=" },
+ { GE, ">=" },
+ { LSHIFT, "<<" },
+ { RSHIFT, ">>=" },
+ { ALIGN_K, "ALIGN" },
+ { BLOCK, "BLOCK" },
+ { SECTIONS, "SECTIONS" },
+ { SIZEOF_HEADERS, "SIZEOF_HEADERS" },
+ { NEXT, "NEXT" },
+ { SIZEOF, "SIZEOF" },
+ { ADDR, "ADDR" },
+ { LOADADDR, "LOADADDR" },
+ { MEMORY, "MEMORY" },
+ { DEFINED, "DEFINED" },
+ { TARGET_K, "TARGET" },
+ { SEARCH_DIR, "SEARCH_DIR" },
+ { MAP, "MAP" },
+ { QUAD, "QUAD" },
+ { SQUAD, "SQUAD" },
+ { LONG, "LONG" },
+ { SHORT, "SHORT" },
+ { BYTE, "BYTE" },
+ { ENTRY, "ENTRY" },
+ { 0, (char *) NULL }
+ };
unsigned int idx;
- for (idx = 0; table[idx].name != (char*)NULL; idx++) {
- if (table[idx].code == code) {
- fprintf(config.map_file, "%s", table[idx].name);
- return;
+ for (idx = 0; table[idx].name != (char *) NULL; idx++)
+ {
+ if (table[idx].code == code)
+ {
+ fprintf (config.map_file, "%s", table[idx].name);
+ return;
+ }
}
- }
/* Not in table, just print it alone */
- fprintf(config.map_file, "%c",code);
+ fprintf (config.map_file, "%c", code);
}
-static void
+static void
make_abs (ptr)
etree_value_type *ptr;
{
- asection *s = ptr->section->bfd_section;
- ptr->value += s->vma;
- ptr->section = abs_output_section;
+ asection *s = ptr->section->bfd_section;
+ ptr->value += s->vma;
+ ptr->section = abs_output_section;
}
static etree_value_type
@@ -147,7 +144,7 @@ new_abs (value)
return new;
}
-static void
+static void
check (os, name, op)
lang_output_section_statement_type *os;
const char *name;
@@ -163,7 +160,7 @@ etree_type *
exp_intop (value)
bfd_vma value;
{
- etree_type *new = (etree_type *) stat_alloc(sizeof(new->value));
+ etree_type *new = (etree_type *) stat_alloc (sizeof (new->value));
new->type.node_code = INT;
new->value.value = value;
new->type.node_class = etree_value;
@@ -208,12 +205,12 @@ new_rel_from_section (value, section)
new.value = value;
new.section = section;
- new.value -= section->bfd_section->vma;
+ new.value -= section->bfd_section->vma;
return new;
}
-static etree_value_type
+static etree_value_type
fold_binary (tree, current_section, allocation_done, dot, dotp)
etree_type *tree;
lang_output_section_statement_type *current_section;
@@ -231,7 +228,7 @@ fold_binary (tree, current_section, allocation_done, dot, dotp)
other = exp_fold_tree (tree->binary.rhs,
current_section,
- allocation_done, dot,dotp) ;
+ allocation_done, dot, dotp);
if (other.valid_p)
{
/* If the values are from different sections, or this is an
@@ -260,11 +257,11 @@ fold_binary (tree, current_section, allocation_done, dot, dotp)
else if (result.section != other.section
|| current_section == abs_output_section)
{
- make_abs(&result);
- make_abs(&other);
+ make_abs (&result);
+ make_abs (&other);
}
- switch (tree->type.node_code)
+ switch (tree->type.node_code)
{
case '%':
if (other.value == 0)
@@ -281,22 +278,22 @@ fold_binary (tree, current_section, allocation_done, dot, dotp)
break;
#define BOP(x,y) case x : result.value = result.value y other.value; break;
- BOP('+',+);
- BOP('*',*);
- BOP('-',-);
- BOP(LSHIFT,<<);
- BOP(RSHIFT,>>);
- BOP(EQ,==);
- BOP(NE,!=);
- BOP('<',<);
- BOP('>',>);
- BOP(LE,<=);
- BOP(GE,>=);
- BOP('&',&);
- BOP('^',^);
- BOP('|',|);
- BOP(ANDAND,&&);
- BOP(OROR,||);
+ BOP ('+', +);
+ BOP ('*', *);
+ BOP ('-', -);
+ BOP (LSHIFT, <<);
+ BOP (RSHIFT, >>);
+ BOP (EQ, ==);
+ BOP (NE, !=);
+ BOP ('<', <);
+ BOP ('>', >);
+ BOP (LE, <=);
+ BOP (GE, >=);
+ BOP ('&', &);
+ BOP ('^', ^);
+ BOP ('|', |);
+ BOP (ANDAND, &&);
+ BOP (OROR, ||);
case MAX_K:
if (result.value < other.value)
@@ -309,7 +306,7 @@ fold_binary (tree, current_section, allocation_done, dot, dotp)
break;
default:
- FAIL();
+ FAIL ();
}
}
else
@@ -321,7 +318,7 @@ fold_binary (tree, current_section, allocation_done, dot, dotp)
return result;
}
-etree_value_type
+etree_value_type
invalid ()
{
etree_value_type new;
@@ -329,156 +326,157 @@ invalid ()
return new;
}
-static etree_value_type
+static etree_value_type
fold_name (tree, current_section, allocation_done, dot)
etree_type *tree;
lang_output_section_statement_type *current_section;
- lang_phase_type allocation_done;
+ lang_phase_type allocation_done;
bfd_vma dot;
{
etree_value_type result;
- switch (tree->type.node_code)
- {
- case SIZEOF_HEADERS:
- if (allocation_done != lang_first_phase_enum)
- {
- result = new_abs ((bfd_vma)
- bfd_sizeof_headers (output_bfd,
- link_info.relocateable));
- }
- else
- {
- result.valid_p = false;
- }
- break;
- case DEFINED:
- if (allocation_done == lang_first_phase_enum)
+ switch (tree->type.node_code)
+ {
+ case SIZEOF_HEADERS:
+ if (allocation_done != lang_first_phase_enum)
+ {
+ result = new_abs ((bfd_vma)
+ bfd_sizeof_headers (output_bfd,
+ link_info.relocateable));
+ }
+ else
+ {
result.valid_p = false;
- else
- {
- struct bfd_link_hash_entry *h;
-
- h = bfd_wrapped_link_hash_lookup (output_bfd, &link_info,
- tree->name.name,
- false, false, true);
- result.value = (h != (struct bfd_link_hash_entry *) NULL
- && (h->type == bfd_link_hash_defined
- || h->type == bfd_link_hash_defweak
- || h->type == bfd_link_hash_common));
- result.section = 0;
- result.valid_p = true;
- }
- break;
- case NAME:
+ }
+ break;
+ case DEFINED:
+ if (allocation_done == lang_first_phase_enum)
result.valid_p = false;
- if (tree->name.name[0] == '.' && tree->name.name[1] == 0)
- {
- if (allocation_done != lang_first_phase_enum)
- result = new_rel_from_section(dot, current_section);
- else
- result = invalid();
- }
- else if (allocation_done != lang_first_phase_enum)
- {
- struct bfd_link_hash_entry *h;
-
- h = bfd_wrapped_link_hash_lookup (output_bfd, &link_info,
- tree->name.name,
- false, false, true);
- if (h != NULL
- && (h->type == bfd_link_hash_defined
- || h->type == bfd_link_hash_defweak))
- {
- if (bfd_is_abs_section (h->u.def.section))
- result = new_abs (h->u.def.value);
- else if (allocation_done == lang_final_phase_enum
- || allocation_done == lang_allocating_phase_enum)
- {
- asection *output_section;
-
- output_section = h->u.def.section->output_section;
- if (output_section == NULL)
- einfo (_("%X%S: unresolvable symbol `%s' referenced in expression\n"),
- tree->name.name);
- else
- {
- lang_output_section_statement_type *os;
-
- os = (lang_output_section_statement_lookup
- (bfd_get_section_name (output_bfd,
- output_section)));
-
- /* FIXME: Is this correct if this section is
- being linked with -R? */
- result = new_rel ((h->u.def.value
- + h->u.def.section->output_offset),
- os);
- }
- }
- }
- else if (allocation_done == lang_final_phase_enum)
- einfo (_("%F%S: undefined symbol `%s' referenced in expression\n"),
- tree->name.name);
- }
- break;
-
- case ADDR:
- if (allocation_done != lang_first_phase_enum)
- {
- lang_output_section_statement_type *os;
-
- os = lang_output_section_find (tree->name.name);
- check (os, tree->name.name, "ADDR");
+ else
+ {
+ struct bfd_link_hash_entry *h;
+
+ h = bfd_wrapped_link_hash_lookup (output_bfd, &link_info,
+ tree->name.name,
+ false, false, true);
+ result.value = (h != (struct bfd_link_hash_entry *) NULL
+ && (h->type == bfd_link_hash_defined
+ || h->type == bfd_link_hash_defweak
+ || h->type == bfd_link_hash_common));
+ result.section = 0;
+ result.valid_p = true;
+ }
+ break;
+ case NAME:
+ result.valid_p = false;
+ if (tree->name.name[0] == '.' && tree->name.name[1] == 0)
+ {
+ if (allocation_done != lang_first_phase_enum)
+ result = new_rel_from_section (dot, current_section);
+ else
+ result = invalid ();
+ }
+ else if (allocation_done != lang_first_phase_enum)
+ {
+ struct bfd_link_hash_entry *h;
+
+ h = bfd_wrapped_link_hash_lookup (output_bfd, &link_info,
+ tree->name.name,
+ false, false, true);
+ if (h != NULL
+ && (h->type == bfd_link_hash_defined
+ || h->type == bfd_link_hash_defweak))
+ {
+ if (bfd_is_abs_section (h->u.def.section))
+ result = new_abs (h->u.def.value);
+ else if (allocation_done == lang_final_phase_enum
+ || allocation_done == lang_allocating_phase_enum)
+ {
+ asection *output_section;
+
+ output_section = h->u.def.section->output_section;
+ if (output_section == NULL)
+ einfo (_("%X%S: unresolvable symbol `%s' referenced in expression\n"),
+ tree->name.name);
+ else
+ {
+ lang_output_section_statement_type *os;
+
+ os = (lang_output_section_statement_lookup
+ (bfd_get_section_name (output_bfd,
+ output_section)));
+
+ /* FIXME: Is this correct if this section is
+ being linked with -R? */
+ result = new_rel ((h->u.def.value
+ + h->u.def.section->output_offset),
+ os);
+ }
+ }
+ }
+ else if (allocation_done == lang_final_phase_enum)
+ einfo (_("%F%S: undefined symbol `%s' referenced in expression\n"),
+ tree->name.name);
+ }
+ break;
+
+ case ADDR:
+ if (allocation_done != lang_first_phase_enum)
+ {
+ lang_output_section_statement_type *os;
+
+ os = lang_output_section_find (tree->name.name);
+ check (os, tree->name.name, "ADDR");
+ result = new_rel (0, os);
+ }
+ else
+ result = invalid ();
+ break;
+
+ case LOADADDR:
+ if (allocation_done != lang_first_phase_enum)
+ {
+ lang_output_section_statement_type *os;
+
+ os = lang_output_section_find (tree->name.name);
+ check (os, tree->name.name, "LOADADDR");
+ if (os->load_base == NULL)
result = new_rel (0, os);
- }
- else
- result = invalid ();
- break;
-
- case LOADADDR:
- if (allocation_done != lang_first_phase_enum)
- {
- lang_output_section_statement_type *os;
-
- os = lang_output_section_find (tree->name.name);
- check (os, tree->name.name, "LOADADDR");
- if (os->load_base == NULL)
- result = new_rel (0, os);
- else
- result = exp_fold_tree_no_dot (os->load_base,
- abs_output_section,
- allocation_done);
- }
- else
- result = invalid ();
- break;
-
- case SIZEOF:
- if (allocation_done != lang_first_phase_enum)
- {
- int opb = bfd_octets_per_byte (output_bfd);
- lang_output_section_statement_type *os;
-
- os = lang_output_section_find (tree->name.name);
- check (os, tree->name.name, "SIZEOF");
- result = new_abs (os->bfd_section->_raw_size / opb);
- }
- else
- result = invalid ();
- break;
-
- default:
- FAIL();
- break;
- }
+ else
+ result = exp_fold_tree_no_dot (os->load_base,
+ abs_output_section,
+ allocation_done);
+ }
+ else
+ result = invalid ();
+ break;
+
+ case SIZEOF:
+ if (allocation_done != lang_first_phase_enum)
+ {
+ int opb = bfd_octets_per_byte (output_bfd);
+ lang_output_section_statement_type *os;
+
+ os = lang_output_section_find (tree->name.name);
+ check (os, tree->name.name, "SIZEOF");
+ result = new_abs (os->bfd_section->_raw_size / opb);
+ }
+ else
+ result = invalid ();
+ break;
+
+ default:
+ FAIL ();
+ break;
+ }
return result;
}
-etree_value_type
+
+etree_value_type
exp_fold_tree (tree, current_section, allocation_done, dot, dotp)
etree_type *tree;
lang_output_section_statement_type *current_section;
- lang_phase_type allocation_done;
+ lang_phase_type allocation_done;
bfd_vma dot;
bfd_vma *dotp;
{
@@ -490,7 +488,7 @@ exp_fold_tree (tree, current_section, allocation_done, dot, dotp)
return result;
}
- switch (tree->type.node_class)
+ switch (tree->type.node_class)
{
case etree_value:
result = new_rel (tree->value.value, current_section);
@@ -508,8 +506,8 @@ exp_fold_tree (tree, current_section, allocation_done, dot, dotp)
case etree_assert:
result = exp_fold_tree (tree->assert_s.child,
- current_section,
- allocation_done, dot, dotp);
+ current_section,
+ allocation_done, dot, dotp);
if (result.valid_p)
{
if (! result.value)
@@ -524,7 +522,7 @@ exp_fold_tree (tree, current_section, allocation_done, dot, dotp)
allocation_done, dot, dotp);
if (result.valid_p)
{
- switch (tree->type.node_code)
+ switch (tree->type.node_code)
{
case ALIGN_K:
if (allocation_done != lang_first_phase_enum)
@@ -540,7 +538,7 @@ exp_fold_tree (tree, current_section, allocation_done, dot, dotp)
result.value += result.section->bfd_section->vma;
result.section = abs_output_section;
}
- else
+ else
result.valid_p = false;
break;
@@ -627,7 +625,7 @@ exp_fold_tree (tree, current_section, allocation_done, dot, dotp)
dot, nextdot);
}
else
- *dotp = nextdot;
+ *dotp = nextdot;
}
}
}
@@ -685,14 +683,14 @@ exp_fold_tree (tree, current_section, allocation_done, dot, dotp)
return result;
}
-static etree_value_type
+static etree_value_type
exp_fold_tree_no_dot (tree, current_section, allocation_done)
etree_type *tree;
lang_output_section_statement_type *current_section;
lang_phase_type allocation_done;
{
-return exp_fold_tree(tree, current_section, allocation_done, (bfd_vma)
- 0, (bfd_vma *)NULL);
+ return exp_fold_tree (tree, current_section, allocation_done,
+ (bfd_vma) 0, (bfd_vma *) NULL);
}
etree_type *
@@ -708,15 +706,15 @@ exp_binop (code, lhs, rhs)
value.binary.lhs = lhs;
value.binary.rhs = rhs;
value.type.node_class = etree_binary;
- r = exp_fold_tree_no_dot(&value,
- abs_output_section,
- lang_first_phase_enum );
+ r = exp_fold_tree_no_dot (&value,
+ abs_output_section,
+ lang_first_phase_enum);
if (r.valid_p)
{
- return exp_intop(r.value);
+ return exp_intop (r.value);
}
new = (etree_type *) stat_alloc (sizeof (new->binary));
- memcpy((char *)new, (char *)&value, sizeof(new->binary));
+ memcpy ((char *) new, (char *) &value, sizeof (new->binary));
return new;
}
@@ -734,17 +732,18 @@ exp_trinop (code, cond, lhs, rhs)
value.trinary.cond = cond;
value.trinary.rhs = rhs;
value.type.node_class = etree_trinary;
- r= exp_fold_tree_no_dot(&value, (lang_output_section_statement_type
- *)NULL,lang_first_phase_enum);
- if (r.valid_p) {
- return exp_intop(r.value);
- }
+ r = exp_fold_tree_no_dot (&value,
+ (lang_output_section_statement_type *) NULL,
+ lang_first_phase_enum);
+ if (r.valid_p)
+ {
+ return exp_intop (r.value);
+ }
new = (etree_type *) stat_alloc (sizeof (new->trinary));
- memcpy((char *)new,(char *) &value, sizeof(new->trinary));
+ memcpy ((char *) new, (char *) &value, sizeof (new->trinary));
return new;
}
-
etree_type *
exp_unop (code, child)
int code;
@@ -756,17 +755,17 @@ exp_unop (code, child)
value.unary.type.node_code = code;
value.unary.child = child;
value.unary.type.node_class = etree_unary;
- r = exp_fold_tree_no_dot(&value,abs_output_section,
- lang_first_phase_enum);
- if (r.valid_p) {
- return exp_intop(r.value);
- }
+ r = exp_fold_tree_no_dot (&value, abs_output_section,
+ lang_first_phase_enum);
+ if (r.valid_p)
+ {
+ return exp_intop (r.value);
+ }
new = (etree_type *) stat_alloc (sizeof (new->unary));
- memcpy((char *)new, (char *)&value, sizeof(new->unary));
+ memcpy ((char *) new, (char *) &value, sizeof (new->unary));
return new;
}
-
etree_type *
exp_nameop (code, name)
int code;
@@ -778,22 +777,19 @@ exp_nameop (code, name)
value.name.name = name;
value.name.type.node_class = etree_name;
-
- r = exp_fold_tree_no_dot(&value,
- (lang_output_section_statement_type *)NULL,
- lang_first_phase_enum);
- if (r.valid_p) {
- return exp_intop(r.value);
- }
+ r = exp_fold_tree_no_dot (&value,
+ (lang_output_section_statement_type *) NULL,
+ lang_first_phase_enum);
+ if (r.valid_p)
+ {
+ return exp_intop (r.value);
+ }
new = (etree_type *) stat_alloc (sizeof (new->name));
- memcpy((char *)new, (char *)&value, sizeof(new->name));
+ memcpy ((char *) new, (char *) &value, sizeof (new->name));
return new;
}
-
-
-
etree_type *
exp_assop (code, dst, src)
int code;
@@ -804,18 +800,18 @@ exp_assop (code, dst, src)
value.assign.type.node_code = code;
-
value.assign.src = src;
value.assign.dst = dst;
value.assign.type.node_class = etree_assign;
#if 0
- if (exp_fold_tree_no_dot(&value, &result)) {
- return exp_intop(result);
- }
+ if (exp_fold_tree_no_dot (&value, &result))
+ {
+ return exp_intop (result);
+ }
#endif
- new = (etree_type*) stat_alloc (sizeof (new->assign));
- memcpy((char *)new, (char *)&value, sizeof(new->assign));
+ new = (etree_type *) stat_alloc (sizeof (new->assign));
+ memcpy ((char *) new, (char *) &value, sizeof (new->assign));
return new;
}
@@ -853,86 +849,90 @@ exp_assert (exp, message)
return n;
}
-void
+void
exp_print_tree (tree)
etree_type *tree;
{
- switch (tree->type.node_class) {
- case etree_value:
- minfo ("0x%v", tree->value.value);
- return;
- case etree_rel:
- if (tree->rel.section->owner != NULL)
- minfo ("%B:", tree->rel.section->owner);
- minfo ("%s+0x%v", tree->rel.section->name, tree->rel.value);
- return;
- case etree_assign:
+ switch (tree->type.node_class)
+ {
+ case etree_value:
+ minfo ("0x%v", tree->value.value);
+ return;
+ case etree_rel:
+ if (tree->rel.section->owner != NULL)
+ minfo ("%B:", tree->rel.section->owner);
+ minfo ("%s+0x%v", tree->rel.section->name, tree->rel.value);
+ return;
+ case etree_assign:
#if 0
- if (tree->assign.dst->sdefs != (asymbol *)NULL){
- fprintf(config.map_file,"%s (%x) ",tree->assign.dst->name,
- tree->assign.dst->sdefs->value);
- }
- else {
- fprintf(config.map_file,"%s (UNDEFINED)",tree->assign.dst->name);
- }
+ if (tree->assign.dst->sdefs != (asymbol *) NULL)
+ {
+ fprintf (config.map_file, "%s (%x) ", tree->assign.dst->name,
+ tree->assign.dst->sdefs->value);
+ }
+ else
+ {
+ fprintf (config.map_file, "%s (UNDEFINED)", tree->assign.dst->name);
+ }
#endif
- fprintf(config.map_file,"%s",tree->assign.dst);
- exp_print_token(tree->type.node_code);
- exp_print_tree(tree->assign.src);
- break;
- case etree_provide:
- fprintf (config.map_file, "PROVIDE (%s, ", tree->assign.dst);
- exp_print_tree (tree->assign.src);
- fprintf (config.map_file, ")");
- break;
- case etree_binary:
- fprintf(config.map_file,"(");
- exp_print_tree(tree->binary.lhs);
- exp_print_token(tree->type.node_code);
- exp_print_tree(tree->binary.rhs);
- fprintf(config.map_file,")");
- break;
- case etree_trinary:
- exp_print_tree(tree->trinary.cond);
- fprintf(config.map_file,"?");
- exp_print_tree(tree->trinary.lhs);
- fprintf(config.map_file,":");
- exp_print_tree(tree->trinary.rhs);
- break;
- case etree_unary:
- exp_print_token(tree->unary.type.node_code);
- if (tree->unary.child)
- {
- fprintf(config.map_file,"(");
- exp_print_tree(tree->unary.child);
- fprintf(config.map_file,")");
- }
-
- break;
-
- case etree_assert:
- fprintf (config.map_file, "ASSERT (");
- exp_print_tree (tree->assert_s.child);
- fprintf (config.map_file, ", %s)", tree->assert_s.message);
- break;
-
- case etree_undef:
- fprintf(config.map_file,"????????");
- break;
- case etree_name:
- if (tree->type.node_code == NAME) {
- fprintf(config.map_file,"%s", tree->name.name);
- }
- else {
- exp_print_token(tree->type.node_code);
- if (tree->name.name)
- fprintf(config.map_file,"(%s)", tree->name.name);
+ fprintf (config.map_file, "%s", tree->assign.dst);
+ exp_print_token (tree->type.node_code);
+ exp_print_tree (tree->assign.src);
+ break;
+ case etree_provide:
+ fprintf (config.map_file, "PROVIDE (%s, ", tree->assign.dst);
+ exp_print_tree (tree->assign.src);
+ fprintf (config.map_file, ")");
+ break;
+ case etree_binary:
+ fprintf (config.map_file, "(");
+ exp_print_tree (tree->binary.lhs);
+ exp_print_token (tree->type.node_code);
+ exp_print_tree (tree->binary.rhs);
+ fprintf (config.map_file, ")");
+ break;
+ case etree_trinary:
+ exp_print_tree (tree->trinary.cond);
+ fprintf (config.map_file, "?");
+ exp_print_tree (tree->trinary.lhs);
+ fprintf (config.map_file, ":");
+ exp_print_tree (tree->trinary.rhs);
+ break;
+ case etree_unary:
+ exp_print_token (tree->unary.type.node_code);
+ if (tree->unary.child)
+ {
+ fprintf (config.map_file, "(");
+ exp_print_tree (tree->unary.child);
+ fprintf (config.map_file, ")");
+ }
+ break;
+
+ case etree_assert:
+ fprintf (config.map_file, "ASSERT (");
+ exp_print_tree (tree->assert_s.child);
+ fprintf (config.map_file, ", %s)", tree->assert_s.message);
+ break;
+
+ case etree_undef:
+ fprintf (config.map_file, "????????");
+ break;
+ case etree_name:
+ if (tree->type.node_code == NAME)
+ {
+ fprintf (config.map_file, "%s", tree->name.name);
+ }
+ else
+ {
+ exp_print_token (tree->type.node_code);
+ if (tree->name.name)
+ fprintf (config.map_file, "(%s)", tree->name.name);
+ }
+ break;
+ default:
+ FAIL ();
+ break;
}
- break;
- default:
- FAIL();
- break;
- }
}
bfd_vma
@@ -955,17 +955,16 @@ exp_get_vma (tree, def, name, allocation_done)
return def;
}
-int
-exp_get_value_int (tree,def,name, allocation_done)
+int
+exp_get_value_int (tree, def, name, allocation_done)
etree_type *tree;
int def;
char *name;
lang_phase_type allocation_done;
{
- return (int)exp_get_vma(tree,(bfd_vma)def,name, allocation_done);
+ return (int) exp_get_vma (tree, (bfd_vma) def, name, allocation_done);
}
-
bfd_vma
exp_get_abs_int (tree, def, name, allocation_done)
etree_type *tree;
@@ -980,8 +979,9 @@ exp_get_abs_int (tree, def, name, allocation_done)
{
res.value += res.section->bfd_section->vma;
}
- else {
- einfo (_("%F%S non constant expression for %s\n"),name);
- }
+ else
+ {
+ einfo (_("%F%S non constant expression for %s\n"), name);
+ }
return res.value;
}
diff --git a/contrib/binutils/ld/ldexp.h b/contrib/binutils/ld/ldexp.h
index b8e8ddf..4c507bd 100644
--- a/contrib/binutils/ld/ldexp.h
+++ b/contrib/binutils/ld/ldexp.h
@@ -1,5 +1,6 @@
/* ldexp.h -
- Copyright 1991, 92, 93, 94, 95, 1998 Free Software Foundation, Inc.
+ Copyright 1991, 92, 93, 94, 95, 98, 2000
+ Free Software Foundation, Inc.
This file is part of GLD, the Gnu Linker.
@@ -22,17 +23,13 @@
#define LDEXP_H
/* The result of an expression tree */
-typedef struct
-{
+typedef struct {
bfd_vma value;
struct lang_output_section_statement_struct *section;
boolean valid_p;
} etree_value_type;
-
-
-typedef struct
-{
+typedef struct {
int node_code;
enum { etree_binary,
etree_trinary,
@@ -47,10 +44,7 @@ typedef struct
etree_rel } node_class;
} node_type;
-
-
-typedef union etree_union
-{
+typedef union etree_union {
node_type type;
struct {
node_type type;
@@ -71,11 +65,11 @@ typedef union etree_union
struct {
node_type type;
- union etree_union *child;
+ union etree_union *child;
} unary;
struct {
node_type type;
- CONST char *name;
+ CONST char *name;
} name;
struct {
node_type type;
@@ -93,7 +87,6 @@ typedef union etree_union
} assert_s;
} etree_type;
-
etree_type *exp_intop PARAMS ((bfd_vma));
etree_type *exp_relop PARAMS ((asection *, bfd_vma));
etree_value_type invalid PARAMS ((void));
@@ -110,7 +103,7 @@ etree_type *exp_provide PARAMS ((const char *, etree_type *));
etree_type *exp_assert PARAMS ((etree_type *, const char *));
void exp_print_tree PARAMS ((etree_type *));
bfd_vma exp_get_vma PARAMS ((etree_type *, bfd_vma, char *, lang_phase_type));
-int exp_get_value_int PARAMS ((etree_type *, int, char *,lang_phase_type));
-bfd_vma exp_get_abs_int PARAMS ((etree_type *, int, char *,lang_phase_type));
+int exp_get_value_int PARAMS ((etree_type *, int, char *, lang_phase_type));
+bfd_vma exp_get_abs_int PARAMS ((etree_type *, int, char *, lang_phase_type));
#endif
diff --git a/contrib/binutils/ld/ldfile.c b/contrib/binutils/ld/ldfile.c
index 9613c07..fbb4685 100644
--- a/contrib/binutils/ld/ldfile.c
+++ b/contrib/binutils/ld/ldfile.c
@@ -19,12 +19,7 @@ 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. */
-/*
- ldfile.c
-
- look after all the file stuff
-
- */
+/* ldfile.c: look after all the file stuff. */
#include "bfd.h"
#include "sysdep.h"
@@ -59,7 +54,7 @@ char *slash = "/";
#endif
#endif
#else /* MPW */
-/* The MPW path char is a colon. */
+/* The MPW path char is a colon. */
char *slash = ":";
#endif /* MPW */
@@ -67,15 +62,14 @@ char *slash = ":";
static search_dirs_type **search_tail_ptr = &search_head;
-typedef struct search_arch
-{
- char *name;
+typedef struct search_arch {
+ char *name;
struct search_arch *next;
} search_arch_type;
static search_arch_type *search_arch_head;
static search_arch_type **search_arch_tail_ptr = &search_arch_head;
-
+
static FILE *try_open PARAMS ((const char *name, const char *exten));
void
@@ -137,7 +131,7 @@ ldfile_try_open_bfd (attempt, entry)
return true;
if (bfd_arch_get_compatible (check, output_bfd) == NULL)
{
- einfo (_("%P: skipping incompatible %s when searching for %s"),
+ einfo (_("%P: skipping incompatible %s when searching for %s\n"),
attempt, entry->local_sym_name);
bfd_close (entry->the_bfd);
entry->the_bfd = NULL;
@@ -170,8 +164,8 @@ ldfile_open_file_search (arch, entry, lib, suffix)
}
for (search = search_head;
- search != (search_dirs_type *)NULL;
- search = search->next)
+ search != (search_dirs_type *) NULL;
+ search = search->next)
{
char *string;
@@ -194,8 +188,8 @@ ldfile_open_file_search (arch, entry, lib, suffix)
lib, entry->filename, arch, suffix);
else if (entry->filename[0] == '/' || entry->filename[0] == '.'
#if defined (__MSDOS__) || defined (_WIN32)
- || entry->filename[0] == '\\'
- || (isalpha (entry->filename[0])
+ || entry->filename[0] == '\\'
+ || (isalpha (entry->filename[0])
&& entry->filename[1] == ':')
#endif
)
@@ -232,7 +226,7 @@ ldfile_open_file (entry)
einfo (_("%F%P: cannot open %s for %s: %E\n"),
entry->filename, entry->local_sym_name);
else
- einfo(_("%F%P: cannot open %s: %E\n"), entry->local_sym_name);
+ einfo (_("%F%P: cannot open %s: %E\n"), entry->local_sym_name);
}
else
{
@@ -252,6 +246,7 @@ ldfile_open_file (entry)
if (ldemul_find_potential_libraries (arch->name, entry))
return;
}
+
einfo (_("%F%P: cannot find %s\n"), entry->local_sym_name);
}
}
@@ -267,6 +262,7 @@ try_open (name, exten)
char buff[1000];
result = fopen (name, "r");
+
if (trace_file_tries)
{
if (result == NULL)
@@ -282,6 +278,7 @@ try_open (name, exten)
{
sprintf (buff, "%s%s", name, exten);
result = fopen (buff, "r");
+
if (trace_file_tries)
{
if (result == NULL)
@@ -306,18 +303,23 @@ ldfile_find_command_file (name, extend)
FILE *result;
char buffer[1000];
- /* First try raw name */
- result = try_open(name,"");
- if (result == (FILE *)NULL) {
- /* Try now prefixes */
- for (search = search_head;
- search != (search_dirs_type *)NULL;
- search = search->next) {
- sprintf(buffer,"%s%s%s", search->name, slash, name);
- result = try_open(buffer, extend);
- if (result)break;
+ /* First try raw name. */
+ result = try_open (name, "");
+ if (result == (FILE *) NULL)
+ {
+ /* Try now prefixes. */
+ for (search = search_head;
+ search != (search_dirs_type *) NULL;
+ search = search->next)
+ {
+ sprintf (buffer, "%s%s%s", search->name, slash, name);
+
+ result = try_open (buffer, extend);
+ if (result)
+ break;
+ }
}
- }
+
return result;
}
@@ -326,31 +328,29 @@ ldfile_open_command_file (name)
const char *name;
{
FILE *ldlex_input_stack;
- ldlex_input_stack = ldfile_find_command_file(name, "");
-
- if (ldlex_input_stack == (FILE *)NULL) {
- bfd_set_error (bfd_error_system_call);
- einfo(_("%P%F: cannot open linker script file %s: %E\n"),name);
- }
- lex_push_file(ldlex_input_stack, name);
-
+ ldlex_input_stack = ldfile_find_command_file (name, "");
+
+ if (ldlex_input_stack == (FILE *) NULL)
+ {
+ bfd_set_error (bfd_error_system_call);
+ einfo (_("%P%F: cannot open linker script file %s: %E\n"), name);
+ }
+
+ lex_push_file (ldlex_input_stack, name);
+
ldfile_input_filename = name;
lineno = 1;
had_script = true;
}
-
-
-
-
#ifdef GNU960
-static
-char *
-gnu960_map_archname( name )
-char *name;
+static char *
+gnu960_map_archname (name)
+ char *name;
{
struct tabentry { char *cmd_switch; char *arch; };
- static struct tabentry arch_tab[] = {
+ static struct tabentry arch_tab[] =
+ {
"", "",
"KA", "ka",
"KB", "kb",
@@ -362,60 +362,57 @@ char *name;
NULL, ""
};
struct tabentry *tp;
-
- for ( tp = arch_tab; tp->cmd_switch != NULL; tp++ ){
- if ( !strcmp(name,tp->cmd_switch) ){
- break;
+ for (tp = arch_tab; tp->cmd_switch != NULL; tp++)
+ {
+ if (! strcmp (name,tp->cmd_switch))
+ break;
}
- }
- if ( tp->cmd_switch == NULL ){
- einfo(_("%P%F: unknown architecture: %s\n"),name);
- }
+ if (tp->cmd_switch == NULL)
+ einfo (_("%P%F: unknown architecture: %s\n"), name);
+
return tp->arch;
}
-
-
void
-ldfile_add_arch(name)
-char *name;
+ldfile_add_arch (name)
+ char *name;
{
search_arch_type *new =
- (search_arch_type *)xmalloc((bfd_size_type)(sizeof(search_arch_type)));
+ (search_arch_type *) xmalloc ((bfd_size_type) (sizeof (search_arch_type)));
+ if (*name != '\0')
+ {
+ if (ldfile_output_machine_name[0] != '\0')
+ {
+ einfo (_("%P%F: target architecture respecified\n"));
+ return;
+ }
- if (*name != '\0') {
- if (ldfile_output_machine_name[0] != '\0') {
- einfo(_("%P%F: target architecture respecified\n"));
- return;
+ ldfile_output_machine_name = name;
}
- ldfile_output_machine_name = name;
- }
- new->next = (search_arch_type*)NULL;
- new->name = gnu960_map_archname( name );
+ new->next = (search_arch_type *) NULL;
+ new->name = gnu960_map_archname (name);
*search_arch_tail_ptr = new;
search_arch_tail_ptr = &new->next;
-
}
-#else /* not GNU960 */
-
+#else /* not GNU960 */
void
ldfile_add_arch (in_name)
- CONST char * in_name;
+ CONST char *in_name;
{
- char *name = buystring(in_name);
+ char *name = buystring (in_name);
search_arch_type *new =
(search_arch_type *) xmalloc (sizeof (search_arch_type));
ldfile_output_machine_name = in_name;
new->name = name;
- new->next = (search_arch_type*)NULL;
+ new->next = (search_arch_type *) NULL;
while (*name)
{
if (isupper ((unsigned char) *name))
@@ -428,19 +425,22 @@ ldfile_add_arch (in_name)
}
#endif
-/* Set the output architecture */
+/* Set the output architecture. */
+
void
ldfile_set_output_arch (string)
CONST char *string;
{
- const bfd_arch_info_type *arch = bfd_scan_arch(string);
-
- if (arch) {
- ldfile_output_architecture = arch->arch;
- ldfile_output_machine = arch->mach;
- ldfile_output_machine_name = arch->printable_name;
- }
- else {
- einfo(_("%P%F: cannot represent machine `%s'\n"), string);
- }
+ const bfd_arch_info_type *arch = bfd_scan_arch (string);
+
+ if (arch)
+ {
+ ldfile_output_architecture = arch->arch;
+ ldfile_output_machine = arch->mach;
+ ldfile_output_machine_name = arch->printable_name;
+ }
+ else
+ {
+ einfo (_("%P%F: cannot represent machine `%s'\n"), string);
+ }
}
diff --git a/contrib/binutils/ld/ldfile.h b/contrib/binutils/ld/ldfile.h
index 9c9a4d6..35bd2dc 100644
--- a/contrib/binutils/ld/ldfile.h
+++ b/contrib/binutils/ld/ldfile.h
@@ -1,5 +1,5 @@
/* ldfile.h -
- Copyright 1991, 1992 Free Software Foundation, Inc.
+ Copyright 1991, 92, 93, 94, 95, 2000 Free Software Foundation, Inc.
This file is part of GLD, the Gnu Linker.
@@ -17,6 +17,9 @@
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. */
+#ifndef LDFILE_H
+#define LDFILE_H
+
extern const char *ldfile_input_filename;
extern boolean ldfile_assumed_script;
extern unsigned long ldfile_output_machine;
@@ -26,8 +29,7 @@ extern const char *ldfile_output_machine_name;
/* Structure used to hold the list of directories to search for
libraries. */
-typedef struct search_dirs
-{
+typedef struct search_dirs {
/* Next directory on list. */
struct search_dirs *next;
/* Name of directory. */
@@ -38,10 +40,6 @@ typedef struct search_dirs
extern search_dirs_type *search_head;
-#if ANSI_PROTOTYPES
-struct lang_input_statement_struct;
-#endif
-
extern void ldfile_add_arch PARAMS ((CONST char *));
extern void ldfile_add_library_path PARAMS ((const char *, boolean cmdline));
extern void ldfile_open_command_file PARAMS ((const char *name));
@@ -54,3 +52,5 @@ extern void ldfile_set_output_arch PARAMS ((CONST char *));
extern boolean ldfile_open_file_search
PARAMS ((const char *arch, struct lang_input_statement_struct *,
const char *lib, const char *suffix));
+
+#endif
diff --git a/contrib/binutils/ld/ldgram.y b/contrib/binutils/ld/ldgram.y
index 806ea1c..2c40478 100644
--- a/contrib/binutils/ld/ldgram.y
+++ b/contrib/binutils/ld/ldgram.y
@@ -33,8 +33,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "ldexp.h"
#include "ldver.h"
#include "ldlang.h"
-#include "ldemul.h"
#include "ldfile.h"
+#include "ldemul.h"
#include "ldmisc.h"
#include "ldmain.h"
#include "mri.h"
@@ -619,7 +619,9 @@ memory_spec: NAME
attributes_opt ':'
origin_spec opt_comma length_spec
- ; origin_spec:
+ ;
+
+origin_spec:
ORIGIN '=' mustbe_exp
{ region->current =
region->origin =
@@ -1113,6 +1115,7 @@ vers_defns:
}
vers_defns '}'
{
+ $$ = $5;
ldgram_vers_current_lang = $<name>4;
}
;
diff --git a/contrib/binutils/ld/ldint.texinfo b/contrib/binutils/ld/ldint.texinfo
index 013e485..afb9890 100644
--- a/contrib/binutils/ld/ldint.texinfo
+++ b/contrib/binutils/ld/ldint.texinfo
@@ -12,12 +12,15 @@ END-INFO-DIR-ENTRY
@ifinfo
This file documents the internals of the GNU linker ld.
-Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
+Copyright (C) 1992, 93, 94, 95, 96, 97, 1998, 2000 Free Software Foundation, Inc.
Contributed by Cygnus Support.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+ Permission is granted to copy, 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".
@ignore
Permission is granted to process this file through Tex and print the
@@ -26,9 +29,6 @@ notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).
@end ignore
-Permission is granted to copy or distribute modified versions of this
-manual under the terms of the GPL (for which purpose this text may be
-regarded as a program in the language TeX).
@end ifinfo
@iftex
@@ -43,7 +43,7 @@ regarded as a program in the language TeX).
@tex
\def\$#1${{#1}} % Kluge: collect RCS revision info without $...$
-\xdef\manvers{\$Revision: 1.1.1.1 $} % For use in headers, footers too
+\xdef\manvers{2.10.91} % For use in headers, footers too
{\parskip=0pt
\hfill Cygnus Support\par
\hfill \manvers\par
@@ -52,12 +52,15 @@ regarded as a program in the language TeX).
@end tex
@vskip 0pt plus 1filll
-Copyright @copyright{} 1992, 93, 94, 95, 96, 97, 1998
+Copyright @copyright{} 1992, 93, 94, 95, 96, 97, 1998, 2000
Free Software Foundation, Inc.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+ Permission is granted to copy, 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
@end iftex
@@ -70,10 +73,15 @@ collection of miscellaneous information with little form at this point.
Mostly, it is a repository into which you can put information about
GNU @code{ld} as you discover it (or as you design changes to @code{ld}).
+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
* README:: The README File
* Emulations:: How linker emulations are generated
* Emulation Walkthrough:: A Walkthrough of a Typical Emulation
+* GNU Free Documentation License:: GNU Free Documentation License
@end menu
@node README
@@ -560,5 +568,368 @@ In summary,
@end itemize
+@node GNU Free Documentation License
+@chapter GNU Free Documentation License
+
+ GNU Free Documentation License
+
+ Version 1.1, March 2000
+
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+written document "free" in the sense of freedom: to assure everyone
+the effective freedom to copy and redistribute it, with or without
+modifying it, either commercially or noncommercially. Secondarily,
+this License preserves for the author and publisher a way to get
+credit for their work, while not being considered responsible for
+modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work that contains a
+notice placed by the copyright holder saying it can be distributed
+under the terms of this License. The "Document", below, refers to any
+such manual or work. Any member of the public is a licensee, and is
+addressed as "you".
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject. (For example, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, whose contents can be viewed and edited directly and
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup has been designed to thwart or discourage
+subsequent modification by readers is not Transparent. A copy that is
+not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML designed for human modification. Opaque formats include
+PostScript, PDF, proprietary formats that can be read and edited only
+by proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML produced by some word processors for output
+purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies of the Document numbering more than 100,
+and the Document's license notice requires Cover Texts, you must enclose
+the copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a publicly-accessible computer-network location containing a complete
+Transparent copy of the Document, free of added material, which the
+general network-using public has access to download anonymously at no
+charge using public-standard network protocols. If you use the latter
+option, you must take reasonably prudent steps, when you begin
+distribution of Opaque copies in quantity, to ensure that this
+Transparent copy will remain thus accessible at the stated location
+until at least one year after the last time you distribute an Opaque
+copy (directly or through your agents or retailers) of that edition to
+the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+ from that of the Document, and from those of previous versions
+ (which should, if there were any, be listed in the History section
+ of the Document). You may use the same title as a previous version
+ if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+ responsible for authorship of the modifications in the Modified
+ Version, together with at least five of the principal authors of the
+ Document (all of its principal authors, if it has less than five).
+C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+ giving the public permission to use the Modified Version under the
+ terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+ and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section entitled "History", and its title, and add to
+ it an item stating at least the title, year, new authors, and
+ publisher of the Modified Version as given on the Title Page. If
+ there is no section entitled "History" in the Document, create one
+ stating the title, year, authors, and publisher of the Document as
+ given on its Title Page, then add an item describing the Modified
+ Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+ public access to a Transparent copy of the Document, and likewise
+ the network locations given in the Document for previous versions
+ it was based on. These may be placed in the "History" section.
+ You may omit a network location for a work that was published at
+ least four years before the Document itself, or if the original
+ publisher of the version it refers to gives permission.
+K. In any section entitled "Acknowledgements" or "Dedications",
+ preserve the section's title, and preserve in the section all the
+ substance and tone of each of the contributor acknowledgements
+ and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section titles.
+M. Delete any section entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+N. Do not retitle any existing section as "Endorsements"
+ or to conflict in title with any Invariant Section.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections entitled "History"
+in the various original documents, forming one section entitled
+"History"; likewise combine any sections entitled "Acknowledgements",
+and any sections entitled "Dedications". You must delete all sections
+entitled "Endorsements."
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, does not as a whole count as a Modified Version
+of the Document, provided no compilation copyright is claimed for the
+compilation. Such a compilation is called an "aggregate", and this
+License does not apply to the other self-contained works thus compiled
+with the Document, on account of their being thus compiled, if they
+are not themselves derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one quarter
+of the entire aggregate, the Document's Cover Texts may be placed on
+covers that surround only the Document within the aggregate.
+Otherwise they must appear on covers around the whole aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License provided that you also include the
+original English version of this License. In case of a disagreement
+between the translation and the original English version of this
+License, the original English version will prevail.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns. See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation. If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+@smallexample
+ Copyright (c) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.1
+ or any later version published by the Free Software Foundation;
+ with the Invariant Sections being LIST THEIR TITLES, with the
+ Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+ A copy of the license is included in the section entitled "GNU
+ Free Documentation License".
+@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 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.
+
@contents
@bye
diff --git a/contrib/binutils/ld/ldlang.c b/contrib/binutils/ld/ldlang.c
index 8f0c607..32097fa 100644
--- a/contrib/binutils/ld/ldlang.c
+++ b/contrib/binutils/ld/ldlang.c
@@ -1,5 +1,5 @@
/* Linker command language support.
- Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001
Free Software Foundation, Inc.
This file is part of GLD, the Gnu Linker.
@@ -30,11 +30,11 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "ldgram.h"
#include "ldexp.h"
#include "ldlang.h"
-#include "ldemul.h"
#include "ldlex.h"
#include "ldmisc.h"
#include "ldctor.h"
#include "ldfile.h"
+#include "ldemul.h"
#include "fnmatch.h"
#include "demangle.h"
@@ -43,92 +43,88 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
/* FORWARDS */
static lang_statement_union_type *new_statement PARAMS ((enum statement_enum,
size_t,
- lang_statement_list_type*));
-
+ lang_statement_list_type *));
/* LOCALS */
static struct obstack stat_obstack;
#define obstack_chunk_alloc xmalloc
#define obstack_chunk_free free
-static CONST char *startup_file;
+static const char *startup_file;
static lang_statement_list_type input_file_chain;
static boolean placed_commons = false;
static lang_output_section_statement_type *default_common_section;
static boolean map_option_f;
static bfd_vma print_dot;
static lang_input_statement_type *first_file;
-static CONST char *current_target;
-static CONST char *output_target;
+static const char *current_target;
+static const char *output_target;
static lang_statement_list_type statement_list;
static struct lang_phdr *lang_phdr_list;
static void lang_for_each_statement_worker
- PARAMS ((void (*func) (lang_statement_union_type *),
- lang_statement_union_type *s));
+ PARAMS ((void (*) (lang_statement_union_type *),
+ lang_statement_union_type *));
static lang_input_statement_type *new_afile
- PARAMS ((const char *name, lang_input_file_enum_type file_type,
- const char *target, boolean add_to_list));
-static void init_os PARAMS ((lang_output_section_statement_type *s));
+ PARAMS ((const char *, lang_input_file_enum_type, const char *, boolean));
+static lang_memory_region_type *lang_memory_default PARAMS ((asection *));
+static void lang_map_flags PARAMS ((flagword));
+static void init_os PARAMS ((lang_output_section_statement_type *));
static void exp_init_os PARAMS ((etree_type *));
static void section_already_linked PARAMS ((bfd *, asection *, PTR));
static struct bfd_hash_entry *already_linked_newfunc
- PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *,
- const char *string));
+ PARAMS ((struct bfd_hash_entry *, struct bfd_hash_table *, const char *));
static void already_linked_table_init PARAMS ((void));
static void already_linked_table_free PARAMS ((void));
static boolean wildcardp PARAMS ((const char *));
static lang_statement_union_type *wild_sort
PARAMS ((lang_wild_statement_type *, lang_input_statement_type *,
asection *));
-static lang_input_statement_type *lookup_name PARAMS ((const char *name));
-static void load_symbols PARAMS ((lang_input_statement_type *entry,
- lang_statement_list_type *));
-static void wild PARAMS ((lang_wild_statement_type *s,
- const char *section, const char *file,
- const char *target,
- lang_output_section_statement_type *output));
-static bfd *open_output PARAMS ((const char *name));
-static void ldlang_open_output PARAMS ((lang_statement_union_type *statement));
-static void open_input_bfds
- PARAMS ((lang_statement_union_type *statement, boolean));
+static void output_section_callback
+ PARAMS ((lang_wild_statement_type *, asection *,
+ lang_input_statement_type *, PTR));
+static lang_input_statement_type *lookup_name PARAMS ((const char *));
+static void load_symbols
+ PARAMS ((lang_input_statement_type *, lang_statement_list_type *));
+static void wild
+ PARAMS ((lang_wild_statement_type *, const char *, const char *,
+ const char *, lang_output_section_statement_type *));
+static bfd *open_output PARAMS ((const char *));
+static void ldlang_open_output PARAMS ((lang_statement_union_type *));
+static void open_input_bfds PARAMS ((lang_statement_union_type *, boolean));
static void lang_reasonable_defaults PARAMS ((void));
static void lang_place_undefineds PARAMS ((void));
static void map_input_to_output_sections
- PARAMS ((lang_statement_union_type *s,
- const char *target,
- lang_output_section_statement_type *output_section_statement));
+ PARAMS ((lang_statement_union_type *, const char *,
+ lang_output_section_statement_type *));
static void print_output_section_statement
- PARAMS ((lang_output_section_statement_type *output_section_statement));
+ PARAMS ((lang_output_section_statement_type *));
static void print_assignment
- PARAMS ((lang_assignment_statement_type *assignment,
- lang_output_section_statement_type *output_section));
-static void print_input_statement PARAMS ((lang_input_statement_type *statm));
+ PARAMS ((lang_assignment_statement_type *,
+ lang_output_section_statement_type *));
+static void print_input_statement PARAMS ((lang_input_statement_type *));
static boolean print_one_symbol PARAMS ((struct bfd_link_hash_entry *, PTR));
-static void print_input_section PARAMS ((lang_input_section_type *in));
-static void print_fill_statement PARAMS ((lang_fill_statement_type *fill));
-static void print_data_statement PARAMS ((lang_data_statement_type *data));
+static void print_input_section PARAMS ((lang_input_section_type *));
+static void print_fill_statement PARAMS ((lang_fill_statement_type *));
+static void print_data_statement PARAMS ((lang_data_statement_type *));
static void print_address_statement PARAMS ((lang_address_statement_type *));
-static void print_reloc_statement PARAMS ((lang_reloc_statement_type *reloc));
-static void print_padding_statement PARAMS ((lang_padding_statement_type *s));
+static void print_reloc_statement PARAMS ((lang_reloc_statement_type *));
+static void print_padding_statement PARAMS ((lang_padding_statement_type *));
static void print_wild_statement
- PARAMS ((lang_wild_statement_type *w,
- lang_output_section_statement_type *os));
+ PARAMS ((lang_wild_statement_type *, lang_output_section_statement_type *));
static void print_group
PARAMS ((lang_group_statement_type *, lang_output_section_statement_type *));
-static void print_statement PARAMS ((lang_statement_union_type *s,
- lang_output_section_statement_type *os));
-static void print_statement_list PARAMS ((lang_statement_union_type *s,
- lang_output_section_statement_type *os));
+static void print_statement
+ PARAMS ((lang_statement_union_type *, lang_output_section_statement_type *));
+static void print_statement_list
+ PARAMS ((lang_statement_union_type *, lang_output_section_statement_type *));
static void print_statements PARAMS ((void));
-static bfd_vma insert_pad PARAMS ((lang_statement_union_type **this_ptr,
- fill_type fill, unsigned int power,
- asection *output_section_statement,
- bfd_vma dot));
+static bfd_vma insert_pad
+ PARAMS ((lang_statement_union_type **, fill_type,
+ unsigned int, asection *, bfd_vma));
static bfd_vma size_input_section
- PARAMS ((lang_statement_union_type **this_ptr,
- lang_output_section_statement_type *output_section_statement,
- fill_type fill, bfd_vma dot, boolean relax));
+ PARAMS ((lang_statement_union_type **, lang_output_section_statement_type *,
+ fill_type, bfd_vma, boolean));
static void lang_finish PARAMS ((void));
static void ignore_bfd_errors PARAMS ((const char *, ...));
static void lang_check PARAMS ((void));
@@ -138,31 +134,46 @@ static void lang_place_orphans PARAMS ((void));
static int topower PARAMS ((int));
static void lang_set_startof PARAMS ((void));
static void reset_memory_regions PARAMS ((void));
+static void gc_section_callback
+ PARAMS ((lang_wild_statement_type *, asection *,
+ lang_input_statement_type *, PTR));
static void lang_record_phdrs PARAMS ((void));
static void lang_gc_wild
PARAMS ((lang_wild_statement_type *, const char *, const char *));
static void lang_gc_sections_1 PARAMS ((lang_statement_union_type *));
static void lang_gc_sections PARAMS ((void));
+static int lang_vers_match_lang_c
+ PARAMS ((struct bfd_elf_version_expr *, const char *));
+static int lang_vers_match_lang_cplusplus
+ PARAMS ((struct bfd_elf_version_expr *, const char *));
+static int lang_vers_match_lang_java
+ PARAMS ((struct bfd_elf_version_expr *, const char *));
static void lang_do_version_exports_section PARAMS ((void));
static void lang_check_section_addresses PARAMS ((void));
+static void os_region_check
+ PARAMS ((lang_output_section_statement_type *,
+ struct memory_region_struct *, etree_type *, bfd_vma));
typedef void (*callback_t) PARAMS ((lang_wild_statement_type *,
asection *, lang_input_statement_type *,
- void *));
+ PTR));
+static void walk_wild
+ PARAMS ((lang_wild_statement_type *, const char *, const char *,
+ callback_t, PTR));
static void walk_wild_section
PARAMS ((lang_wild_statement_type *, const char *,
- lang_input_statement_type *, callback_t, void *));
+ lang_input_statement_type *, callback_t, PTR));
static void walk_wild_file
PARAMS ((lang_wild_statement_type *, const char *,
- lang_input_statement_type *, callback_t, void *));
+ lang_input_statement_type *, callback_t, PTR));
-static int get_target PARAMS ((const bfd_target *, void *));
+static int get_target PARAMS ((const bfd_target *, PTR));
static void stricpy PARAMS ((char *, char *));
static void strcut PARAMS ((char *, char *));
static int name_compare PARAMS ((char *, char *));
-static int closest_target_match PARAMS ((const bfd_target *, void *));
+static int closest_target_match PARAMS ((const bfd_target *, PTR));
static char * get_first_input_target PARAMS ((void));
-
+
/* EXPORTS */
lang_output_section_statement_type *abs_output_section;
lang_statement_list_type lang_output_section_statement;
@@ -175,21 +186,22 @@ boolean had_output_filename = false;
boolean lang_float_flag = false;
boolean delete_output_file_on_failure = false;
struct lang_nocrossrefs *nocrossref_list;
+struct unique_sections *unique_section_list;
etree_type *base; /* Relocation base - or null */
-
#if defined(__STDC__) || defined(ALMOST_STDC)
#define cat(a,b) a##b
#else
#define cat(a,b) a/**/b
#endif
-#define new_stat(x,y) (cat(x,_type)*) new_statement(cat(x,_enum), sizeof(cat(x,_type)),y)
+/* Don't beautify the line below with "innocent" whitespace, it breaks the K&R C preprocessor! */
+#define new_stat(x, y) (cat (x,_type)*) new_statement (cat (x,_enum), sizeof (cat (x,_type)), y)
-#define outside_section_address(q) ( (q)->output_offset + (q)->output_section->vma)
+#define outside_section_address(q) ((q)->output_offset + (q)->output_section->vma)
-#define outside_symbol_address(q) ((q)->value + outside_section_address(q->section))
+#define outside_symbol_address(q) ((q)->value + outside_section_address (q->section))
#define SECTION_NAME_MAP_LENGTH (16)
@@ -200,9 +212,24 @@ stat_alloc (size)
return obstack_alloc (&stat_obstack, size);
}
-/*----------------------------------------------------------------------
- Generic traversal routines for finding matching sections.
-*/
+boolean
+unique_section_p (secnam)
+ const char *secnam;
+{
+ struct unique_sections *unam;
+
+ for (unam = unique_section_list; unam; unam = unam->next)
+ if (wildcardp (unam->name)
+ ? fnmatch (unam->name, secnam, 0) == 0
+ : strcmp (unam->name, secnam) == 0)
+ {
+ return true;
+ }
+
+ return false;
+}
+
+/* Generic traversal routines for finding matching sections. */
static void
walk_wild_section (ptr, section, file, callback, data)
@@ -210,14 +237,14 @@ walk_wild_section (ptr, section, file, callback, data)
const char *section;
lang_input_statement_type *file;
callback_t callback;
- void *data;
+ PTR data;
{
- /* Don't process sections from files which were excluded. */
+ /* Don't process sections from files which were excluded. */
if (ptr->exclude_filename_list != NULL)
{
struct name_list *list_tmp;
for (list_tmp = ptr->exclude_filename_list; list_tmp; list_tmp = list_tmp->next)
- {
+ {
boolean match;
if (wildcardp (list_tmp->name))
@@ -233,31 +260,26 @@ walk_wild_section (ptr, section, file, callback, data)
if (file->just_syms_flag == false)
{
register asection *s;
- boolean wildcard;
+ boolean wildcard = false;
- if (section == NULL)
- wildcard = false;
- else
+ if (section != NULL)
wildcard = wildcardp (section);
for (s = file->the_bfd->sections; s != NULL; s = s->next)
{
boolean match;
+ const char *sname = bfd_get_section_name (file->the_bfd, s);
if (section == NULL)
match = true;
+ else if (wildcard)
+ match = fnmatch (section, sname, 0) == 0 ? true : false;
else
- {
- const char *name;
-
- name = bfd_get_section_name (file->the_bfd, s);
- if (wildcard)
- match = fnmatch (section, name, 0) == 0 ? true : false;
- else
- match = strcmp (section, name) == 0 ? true : false;
- }
+ match = strcmp (section, sname) == 0 ? true : false;
- if (match)
+ /* If this is a wild-card output section statement, exclude
+ sections that match UNIQUE_SECTION_LIST. */
+ if (match && (data == NULL || !unique_section_p (sname)))
(*callback) (ptr, s, file, data);
}
}
@@ -271,7 +293,7 @@ walk_wild_file (s, section, f, callback, data)
const char *section;
lang_input_statement_type *f;
callback_t callback;
- void *data;
+ PTR data;
{
if (f->the_bfd == NULL
|| ! bfd_check_format (f->the_bfd, bfd_archive))
@@ -308,7 +330,7 @@ walk_wild (s, section, file, callback, data)
const char *section;
const char *file;
callback_t callback;
- void *data;
+ PTR data;
{
if (file == (char *) NULL)
{
@@ -334,12 +356,10 @@ walk_wild (s, section, file, callback, data)
f = lookup_name (file);
walk_wild_file (s, section, f, callback, data);
}
-}
-
-/*----------------------------------------------------------------------
- lang_for_each_statement walks the parse tree and calls the provided
- function for each node
-*/
+}
+
+/* lang_for_each_statement walks the parse tree and calls the provided
+ function for each node. */
static void
lang_for_each_statement_worker (func, s)
@@ -392,11 +412,11 @@ void
lang_for_each_statement (func)
void (*func) PARAMS ((lang_statement_union_type *));
{
- lang_for_each_statement_worker (func,
- statement_list.head);
+ lang_for_each_statement_worker (func, statement_list.head);
}
/*----------------------------------------------------------------------*/
+
void
lang_list_init (list)
lang_statement_list_type *list;
@@ -405,18 +425,13 @@ lang_list_init (list)
list->tail = &list->head;
}
-/*----------------------------------------------------------------------
-
- build a new statement node for the parse tree
-
- */
+/* Build a new statement node for the parse tree. */
-static
-lang_statement_union_type *
+static lang_statement_union_type *
new_statement (type, size, list)
enum statement_enum type;
size_t size;
- lang_statement_list_type * list;
+ lang_statement_list_type *list;
{
lang_statement_union_type *new = (lang_statement_union_type *)
stat_alloc (size);
@@ -427,22 +442,20 @@ new_statement (type, size, list)
return new;
}
-/*
- Build a new input file node for the language. There are several ways
- in which we treat an input file, eg, we only look at symbols, or
- prefix it with a -l etc.
+/* Build a new input file node for the language. There are several
+ ways in which we treat an input file, eg, we only look at symbols,
+ or prefix it with a -l etc.
- We can be supplied with requests for input files more than once;
- they may, for example be split over serveral lines like foo.o(.text)
- foo.o(.data) etc, so when asked for a file we check that we havn't
- got it already so we don't duplicate the bfd.
+ We can be supplied with requests for input files more than once;
+ they may, for example be split over serveral lines like foo.o(.text)
+ foo.o(.data) etc, so when asked for a file we check that we havn't
+ got it already so we don't duplicate the bfd. */
- */
static lang_input_statement_type *
new_afile (name, file_type, target, add_to_list)
- CONST char *name;
+ const char *name;
lang_input_file_enum_type file_type;
- CONST char *target;
+ const char *target;
boolean add_to_list;
{
lang_input_statement_type *p;
@@ -527,15 +540,16 @@ new_afile (name, file_type, target, add_to_list)
lang_input_statement_type *
lang_add_input_file (name, file_type, target)
- CONST char *name;
+ const char *name;
lang_input_file_enum_type file_type;
- CONST char *target;
+ const char *target;
{
lang_has_input_file = true;
return new_afile (name, file_type, target, true);
}
-/* Build enough state so that the parser can build its tree */
+/* Build enough state so that the parser can build its tree. */
+
void
lang_init ()
{
@@ -551,29 +565,29 @@ lang_init ()
first_file = lang_add_input_file ((char *) NULL,
lang_input_file_is_marker_enum,
(char *) NULL);
- abs_output_section = lang_output_section_statement_lookup (BFD_ABS_SECTION_NAME);
+ abs_output_section =
+ lang_output_section_statement_lookup (BFD_ABS_SECTION_NAME);
abs_output_section->bfd_section = bfd_abs_section_ptr;
}
/*----------------------------------------------------------------------
- A region is an area of memory declared with the
- MEMORY { name:org=exp, len=exp ... }
- syntax.
+ A region is an area of memory declared with the
+ MEMORY { name:org=exp, len=exp ... }
+ syntax.
- We maintain a list of all the regions here
+ We maintain a list of all the regions here.
- If no regions are specified in the script, then the default is used
- which is created when looked up to be the entire data space
-*/
+ If no regions are specified in the script, then the default is used
+ which is created when looked up to be the entire data space. */
static lang_memory_region_type *lang_memory_region_list;
static lang_memory_region_type **lang_memory_region_list_tail = &lang_memory_region_list;
lang_memory_region_type *
lang_memory_region_lookup (name)
- CONST char *CONST name;
+ const char *const name;
{
lang_memory_region_type *p;
@@ -615,7 +629,7 @@ lang_memory_region_lookup (name)
new->origin = 0;
new->flags = 0;
new->not_flags = 0;
- new->length = ~(bfd_size_type)0;
+ new->length = ~(bfd_size_type) 0;
new->current = 0;
new->had_full_message = false;
@@ -623,8 +637,7 @@ lang_memory_region_lookup (name)
}
}
-
-lang_memory_region_type *
+static lang_memory_region_type *
lang_memory_default (section)
asection *section;
{
@@ -651,7 +664,7 @@ lang_memory_default (section)
lang_output_section_statement_type *
lang_output_section_find (name)
- CONST char *CONST name;
+ const char *const name;
{
lang_statement_union_type *u;
lang_output_section_statement_type *lookup;
@@ -671,7 +684,7 @@ lang_output_section_find (name)
lang_output_section_statement_type *
lang_output_section_statement_lookup (name)
- CONST char *CONST name;
+ const char *const name;
{
lang_output_section_statement_type *lookup;
@@ -694,7 +707,7 @@ lang_output_section_statement_lookup (name)
lookup->addr_tree = (etree_type *) NULL;
lang_list_init (&lookup->children);
- lookup->memspec = (CONST char *) NULL;
+ lookup->memspec = (const char *) NULL;
lookup->flags = 0;
lookup->subsection_alignment = -1;
lookup->section_alignment = -1;
@@ -809,8 +822,8 @@ init_os (s)
}
s->bfd_section->output_section = s->bfd_section;
- /* We initialize an output sections output offset to minus its own */
- /* vma to allow us to output a section through itself */
+ /* We initialize an output sections output offset to minus its own
+ vma to allow us to output a section through itself. */
s->bfd_section->output_offset = 0;
get_userdata (s->bfd_section) = (PTR) new;
@@ -883,13 +896,13 @@ exp_init_os (exp)
the same name. It's possible to get more than one element in a
list if the COMDAT sections have different names. */
-struct already_linked_hash_entry
+struct already_linked_hash_entry
{
struct bfd_hash_entry root;
struct already_linked *entry;
};
-struct already_linked
+struct already_linked
{
struct already_linked *next;
asection *sec;
@@ -899,7 +912,6 @@ struct already_linked
static struct bfd_hash_table already_linked_table;
-/*ARGSUSED*/
static void
section_already_linked (abfd, sec, data)
bfd *abfd;
@@ -926,30 +938,30 @@ section_already_linked (abfd, sec, data)
if ((flags & SEC_LINK_ONCE) == 0)
return;
- /* FIXME: When doing a relocateable link, we may have trouble
+ /* FIXME: When doing a relocatable link, we may have trouble
copying relocations in other sections that refer to local symbols
in the section being discarded. Those relocations will have to
be converted somehow; as of this writing I'm not sure that any of
the backends handle that correctly.
It is tempting to instead not discard link once sections when
- doing a relocateable link (technically, they should be discarded
+ doing a relocatable link (technically, they should be discarded
whenever we are building constructors). However, that fails,
because the linker winds up combining all the link once sections
into a single large link once section, which defeats the purpose
of having link once sections in the first place.
- Also, not merging link once sections in a relocateable link
+ Also, not merging link once sections in a relocatable link
causes trouble for MIPS ELF, which relies in link once semantics
to handle the .reginfo section correctly. */
name = bfd_get_section_name (abfd, sec);
- already_linked_list =
+ already_linked_list =
((struct already_linked_hash_entry *)
bfd_hash_lookup (&already_linked_table, name, true, false));
- for (l = already_linked_list->entry; l != NULL; l = l->next)
+ for (l = already_linked_list->entry; l != NULL; l = l->next)
{
if (sec->comdat == NULL
|| l->sec->comdat == NULL
@@ -995,8 +1007,7 @@ section_already_linked (abfd, sec, data)
discarded, we must retain a pointer to the section which
we are really going to use. */
sec->output_section = bfd_abs_section_ptr;
- if (sec->comdat != NULL)
- sec->comdat->sec = l->sec;
+ sec->kept_section = l->sec;
return;
}
@@ -1005,7 +1016,7 @@ section_already_linked (abfd, sec, data)
/* This is the first section with this name. Record it. Allocate
the memory from the same obstack as the hash table is kept in. */
- l = ((struct already_linked *)
+ l = ((struct already_linked *)
bfd_hash_allocate (&already_linked_table, sizeof *l));
l->sec = sec;
@@ -1022,7 +1033,7 @@ already_linked_newfunc (entry, table, string)
struct bfd_hash_table *table;
const char *string ATTRIBUTE_UNUSED;
{
- struct already_linked_hash_entry *ret =
+ struct already_linked_hash_entry *ret =
bfd_hash_allocate (table, sizeof (struct already_linked_hash_entry));
ret->entry = NULL;
@@ -1130,7 +1141,7 @@ wild_doit (ptr, section, output, file)
else
first = false;
- /* Add a section reference to the list */
+ /* Add a section reference to the list. */
new = new_stat (lang_input_section, ptr);
new->section = section;
@@ -1196,6 +1207,13 @@ wild_doit (ptr, section, output, file)
/* If supplied an aligment, then force it. */
if (output->section_alignment != -1)
output->bfd_section->alignment_power = output->section_alignment;
+
+ if (section->flags & SEC_BLOCK)
+ {
+ section->output_section->flags |= SEC_BLOCK;
+ /* FIXME: This value should really be obtained from the bfd... */
+ output->block_value = 128;
+ }
}
}
@@ -1308,47 +1326,47 @@ output_section_callback (ptr, section, file, output)
lang_wild_statement_type *ptr;
asection *section;
lang_input_statement_type *file;
- void *output;
+ PTR output;
{
lang_statement_union_type *before;
-
+
/* If the wild pattern was marked KEEP, the member sections
should be as well. */
if (ptr->keep_sections)
section->flags |= SEC_KEEP;
-
+
before = wild_sort (ptr, file, section);
-
+
/* Here BEFORE points to the lang_input_section which
should follow the one we are about to add. If BEFORE
is NULL, then the section should just go at the end
of the current list. */
-
+
if (before == NULL)
- wild_doit (&ptr->children, section,
- (lang_output_section_statement_type *) output,
+ wild_doit (&ptr->children, section,
+ (lang_output_section_statement_type *) output,
file);
else
{
lang_statement_list_type list;
lang_statement_union_type **pp;
-
+
lang_list_init (&list);
- wild_doit (&list, section,
- (lang_output_section_statement_type *) output,
+ wild_doit (&list, section,
+ (lang_output_section_statement_type *) output,
file);
-
+
/* If we are discarding the section, LIST.HEAD will
be NULL. */
if (list.head != NULL)
{
ASSERT (list.head->next == NULL);
-
+
for (pp = &ptr->children.head;
*pp != before;
pp = &(*pp)->next)
ASSERT (*pp != NULL);
-
+
list.head->next = *pp;
*pp = list.head;
}
@@ -1503,8 +1521,6 @@ load_symbols (entry, place)
entry->loaded = true;
}
-
-
/* Handle a wild statement. SECTION or FILE or both may be NULL,
indicating that it is a wildcard. Separate lang_input_section
statements are created for each part of the expansion; they are
@@ -1518,7 +1534,7 @@ wild (s, section, file, target, output)
const char *target ATTRIBUTE_UNUSED;
lang_output_section_statement_type *output;
{
- walk_wild (s, section, file, output_section_callback, (void *) output);
+ walk_wild (s, section, file, output_section_callback, (PTR) output);
if (section != (char *) NULL
&& strcmp (section, "COMMON") == 0
@@ -1531,66 +1547,70 @@ wild (s, section, file, target, output)
}
/* Return true iff target is the sought target. */
+
static int
get_target (target, data)
- const bfd_target * target;
- void * data;
+ const bfd_target *target;
+ PTR data;
{
- const char * sought = (const char *) data;
-
+ const char *sought = (const char *) data;
+
return strcmp (target->name, sought) == 0;
}
/* Like strcpy() but convert to lower case as well. */
+
static void
stricpy (dest, src)
- char * dest;
- char * src;
+ char *dest;
+ char *src;
{
char c;
-
- while ((c = * src ++) != 0)
+
+ while ((c = *src++) != 0)
{
if (isupper ((unsigned char) c))
c = tolower (c);
- * dest ++ = c;
+ *dest++ = c;
}
- * dest = 0;
+ *dest = 0;
}
/* Remove the first occurance of needle (if any) in haystack
from haystack. */
+
static void
strcut (haystack, needle)
- char * haystack;
- char * needle;
+ char *haystack;
+ char *needle;
{
haystack = strstr (haystack, needle);
-
+
if (haystack)
{
- char * src;
+ char *src;
+
+ for (src = haystack + strlen (needle); *src;)
+ *haystack++ = *src++;
- for (src = haystack + strlen (needle); * src;)
- * haystack ++ = * src ++;
-
- * haystack = 0;
+ *haystack = 0;
}
}
/* Compare two target format name strings.
Return a value indicating how "similar" they are. */
+
static int
name_compare (first, second)
- char * first;
- char * second;
+ char *first;
+ char *second;
{
- char * copy1;
- char * copy2;
- int result;
-
+ char *copy1;
+ char *copy2;
+ int result;
+
copy1 = xmalloc (strlen (first) + 1);
copy2 = xmalloc (strlen (second) + 1);
@@ -1607,13 +1627,13 @@ name_compare (first, second)
/* Return a value based on how many characters match,
starting from the beginning. If both strings are
the same then return 10 * their length. */
- for (result = 0; copy1 [result] == copy2 [result]; result ++)
- if (copy1 [result] == 0)
+ for (result = 0; copy1[result] == copy2[result]; result++)
+ if (copy1[result] == 0)
{
result *= 10;
break;
}
-
+
free (copy1);
free (copy2);
@@ -1621,22 +1641,25 @@ name_compare (first, second)
}
/* Set by closest_target_match() below. */
-static const bfd_target * winner;
+static const bfd_target *winner;
/* Scan all the valid bfd targets looking for one that has the endianness
requirement that was specified on the command line, and is the nearest
match to the original output target. */
+
static int
closest_target_match (target, data)
- const bfd_target * target;
- void * data;
+ const bfd_target *target;
+ PTR data;
{
- const bfd_target * original = (const bfd_target *) data;
-
- if (command_line.endian == ENDIAN_BIG && target->byteorder != BFD_ENDIAN_BIG)
+ const bfd_target *original = (const bfd_target *) data;
+
+ if (command_line.endian == ENDIAN_BIG
+ && target->byteorder != BFD_ENDIAN_BIG)
return 0;
-
- if (command_line.endian == ENDIAN_LITTLE && target->byteorder != BFD_ENDIAN_LITTLE)
+
+ if (command_line.endian == ENDIAN_LITTLE
+ && target->byteorder != BFD_ENDIAN_LITTLE)
return 0;
/* Must be the same flavour. */
@@ -1651,7 +1674,7 @@ closest_target_match (target, data)
}
/* Oh dear, we now have two potential candidates for a successful match.
- Compare their names and choose the better one. */
+ Compare their names and choose the better one. */
if (name_compare (target->name, original->name) > name_compare (winner->name, original->name))
winner = target;
@@ -1660,10 +1683,11 @@ closest_target_match (target, data)
}
/* Return the BFD target format of the first input file. */
+
static char *
get_first_input_target ()
{
- char * target = NULL;
+ char *target = NULL;
LANG_FOR_EACH_INPUT_STATEMENT (s)
{
@@ -1671,18 +1695,18 @@ get_first_input_target ()
&& s->real)
{
ldfile_open_file (s);
-
+
if (s->the_bfd != NULL
&& bfd_check_format (s->the_bfd, bfd_object))
{
target = bfd_get_target (s->the_bfd);
-
+
if (target != NULL)
break;
}
}
}
-
+
return target;
}
@@ -1690,18 +1714,19 @@ get_first_input_target ()
static bfd *
open_output (name)
- const char * name;
+ const char *name;
{
- bfd * output;
+ bfd *output;
- /* Has the user told us which output format to use ? */
+ /* Has the user told us which output format to use? */
if (output_target == (char *) NULL)
{
- /* No - has the current target been set to something other than the default ? */
+ /* No - has the current target been set to something other than
+ the default? */
if (current_target != default_target)
output_target = current_target;
- /* No - can we determine the format of the first input file ? */
+ /* No - can we determine the format of the first input file? */
else
{
output_target = get_first_input_target ();
@@ -1711,46 +1736,54 @@ open_output (name)
output_target = default_target;
}
}
-
- /* Has the user requested a particular endianness on the command line ? */
+
+ /* Has the user requested a particular endianness on the command
+ line? */
if (command_line.endian != ENDIAN_UNSET)
{
- const bfd_target * target;
+ const bfd_target *target;
enum bfd_endian desired_endian;
/* Get the chosen target. */
- target = bfd_search_for_target (get_target, (void *) output_target);
+ target = bfd_search_for_target (get_target, (PTR) output_target);
- if (command_line.endian == ENDIAN_BIG)
- desired_endian = BFD_ENDIAN_BIG;
- else
- desired_endian = BFD_ENDIAN_LITTLE;
-
- /* See if the target has the wrong endianness. This should not happen
- if the linker script has provided big and little endian alternatives,
- but some scrips don't do this. */
- if (target->byteorder != desired_endian)
+ /* If the target is not supported, we cannot do anything. */
+ if (target != NULL)
{
- /* If it does, then see if the target provides
- an alternative with the correct endianness. */
- if (target->alternative_target != NULL
- && (target->alternative_target->byteorder == desired_endian))
- output_target = target->alternative_target->name;
+ if (command_line.endian == ENDIAN_BIG)
+ desired_endian = BFD_ENDIAN_BIG;
else
+ desired_endian = BFD_ENDIAN_LITTLE;
+
+ /* See if the target has the wrong endianness. This should
+ not happen if the linker script has provided big and
+ little endian alternatives, but some scrips don't do
+ this. */
+ if (target->byteorder != desired_endian)
{
- /* Try to find a target as similar as possible to the default
- target, but which has the desired endian characteristic. */
- (void) bfd_search_for_target (closest_target_match, (void *) target);
-
- /* Oh dear - we could not find any targets that satisfy our requirements. */
- if (winner == NULL)
- einfo (_("%P: warning: could not find any targets that match endianness requirement\n"));
+ /* If it does, then see if the target provides
+ an alternative with the correct endianness. */
+ if (target->alternative_target != NULL
+ && (target->alternative_target->byteorder == desired_endian))
+ output_target = target->alternative_target->name;
else
- output_target = winner->name;
+ {
+ /* Try to find a target as similar as possible to
+ the default target, but which has the desired
+ endian characteristic. */
+ (void) bfd_search_for_target (closest_target_match, (PTR) target);
+
+ /* Oh dear - we could not find any targets that
+ satisfy our requirements. */
+ if (winner == NULL)
+ einfo (_("%P: warning: could not find any targets that match endianness requirement\n"));
+ else
+ output_target = winner->name;
+ }
}
}
}
-
+
output = bfd_openw (name, output_target);
if (output == (bfd *) NULL)
@@ -1763,7 +1796,9 @@ open_output (name)
delete_output_file_on_failure = true;
- /* output->flags |= D_PAGED;*/
+#if 0
+ output->flags |= D_PAGED;
+#endif
if (! bfd_set_format (output, bfd_object))
einfo (_("%P%F:%s: can not make object file: %E\n"), name);
@@ -1782,7 +1817,7 @@ open_output (name)
static void
ldlang_open_output (statement)
- lang_statement_union_type * statement;
+ lang_statement_union_type *statement;
{
switch (statement->header.type)
{
@@ -1830,7 +1865,7 @@ open_input_bfds (s, force)
open_input_bfds (s->output_section_statement.children.head, force);
break;
case lang_wild_statement_enum:
- /* Maybe we should load the file's symbols */
+ /* Maybe we should load the file's symbols. */
if (s->wild_statement.filename
&& ! wildcardp (s->wild_statement.filename))
(void) lookup_name (s->wild_statement.filename);
@@ -1841,8 +1876,8 @@ open_input_bfds (s, force)
struct bfd_link_hash_entry *undefs;
/* We must continually search the entries in the group
- until no new symbols are added to the list of undefined
- symbols. */
+ until no new symbols are added to the list of undefined
+ symbols. */
do
{
@@ -1864,8 +1899,10 @@ open_input_bfds (s, force)
/* If we are being called from within a group, and this
is an archive which has already been searched, then
- force it to be researched. */
+ force it to be researched unless the whole archive
+ has been loaded already. */
if (force
+ && !s->input_statement.whole_archive
&& s->input_statement.loaded
&& bfd_check_format (s->input_statement.the_bfd,
bfd_archive))
@@ -1888,7 +1925,8 @@ open_input_bfds (s, force)
}
}
-/* If there are [COMMONS] statements, put a wild one into the bss section */
+/* If there are [COMMONS] statements, put a wild one into the bss
+ section. */
static void
lang_reasonable_defaults ()
@@ -1897,9 +1935,7 @@ lang_reasonable_defaults ()
lang_output_section_statement_lookup (".text");
lang_output_section_statement_lookup (".data");
- default_common_section =
- lang_output_section_statement_lookup (".bss");
-
+ default_common_section = lang_output_section_statement_lookup (".bss");
if (placed_commons == false)
{
@@ -1912,13 +1948,10 @@ lang_reasonable_defaults ()
lang_list_init (&new->children);
}
#endif
-
}
-/*
- Add the supplied name to the symbol table as an undefined reference.
- Remove items from the chain as we open input bfds
- */
+/* Add the supplied name to the symbol table as an undefined reference.
+ Remove items from the chain as we open input bfds. */
typedef struct ldlang_undef_chain_list
{
struct ldlang_undef_chain_list *next;
@@ -1929,7 +1962,7 @@ static ldlang_undef_chain_list_type *ldlang_undef_chain_list_head;
void
ldlang_add_undef (name)
- CONST char *CONST name;
+ const char *const name;
{
ldlang_undef_chain_list_type *new =
((ldlang_undef_chain_list_type *)
@@ -1943,8 +1976,8 @@ ldlang_add_undef (name)
/* Run through the list of undefineds created above and place them
into the linker hash table as undefined symbols belonging to the
- script file.
-*/
+ script file. */
+
static void
lang_place_undefineds ()
{
@@ -1968,19 +2001,19 @@ lang_place_undefineds ()
}
}
-/* Open input files and attatch to output sections */
+/* Open input files and attatch to output sections. */
+
static void
map_input_to_output_sections (s, target, output_section_statement)
- lang_statement_union_type * s;
- CONST char *target;
- lang_output_section_statement_type * output_section_statement;
+ lang_statement_union_type *s;
+ const char *target;
+ lang_output_section_statement_type *output_section_statement;
{
for (; s != (lang_statement_union_type *) NULL; s = s->next)
{
switch (s->header.type)
{
-
case lang_wild_statement_enum:
wild (&s->wild_statement, s->wild_statement.section_name,
s->wild_statement.filename, target,
@@ -2024,14 +2057,14 @@ map_input_to_output_sections (s, target, output_section_statement)
init_os (output_section_statement);
/* Make sure that any sections mentioned in the assignment
- are initialized. */
+ are initialized. */
exp_init_os (s->assignment_statement.exp);
break;
case lang_afile_asection_pair_statement_enum:
FAIL ();
break;
case lang_address_statement_enum:
- /* Mark the specified section with the supplied address */
+ /* Mark the specified section with the supplied address. */
{
lang_output_section_statement_type *os =
lang_output_section_statement_lookup
@@ -2048,7 +2081,7 @@ map_input_to_output_sections (s, target, output_section_statement)
static void
print_output_section_statement (output_section_statement)
- lang_output_section_statement_type * output_section_statement;
+ lang_output_section_statement_type *output_section_statement;
{
asection *section = output_section_statement->bfd_section;
int len;
@@ -2094,8 +2127,8 @@ print_output_section_statement (output_section_statement)
static void
print_assignment (assignment, output_section)
- lang_assignment_statement_type * assignment;
- lang_output_section_statement_type * output_section;
+ lang_assignment_statement_type *assignment;
+ lang_output_section_statement_type *output_section;
{
int i;
etree_value_type result;
@@ -2124,7 +2157,7 @@ print_assignment (assignment, output_section)
static void
print_input_statement (statm)
- lang_input_statement_type * statm;
+ lang_input_statement_type *statm;
{
if (statm->filename != (char *) NULL)
{
@@ -2135,7 +2168,7 @@ print_input_statement (statm)
/* Print all symbols defined in a particular section. This is called
via bfd_link_hash_traverse. */
-static boolean
+static boolean
print_one_symbol (hash_entry, ptr)
struct bfd_link_hash_entry *hash_entry;
PTR ptr;
@@ -2165,11 +2198,11 @@ print_one_symbol (hash_entry, ptr)
static void
print_input_section (in)
- lang_input_section_type * in;
+ lang_input_section_type *in;
{
asection *i = in->section;
bfd_size_type size = i->_cooked_size != 0 ? i->_cooked_size : i->_raw_size;
- unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
ldfile_output_machine);
if (size != 0)
{
@@ -2223,20 +2256,20 @@ print_input_section (in)
static void
print_fill_statement (fill)
- lang_fill_statement_type * fill;
+ lang_fill_statement_type *fill;
{
fprintf (config.map_file, " FILL mask 0x%x\n", fill->fill);
}
static void
print_data_statement (data)
- lang_data_statement_type * data;
+ lang_data_statement_type *data;
{
int i;
bfd_vma addr;
bfd_size_type size;
const char *name;
- unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
ldfile_output_machine);
for (i = 0; i < SECTION_NAME_MAP_LENGTH; i++)
@@ -2307,8 +2340,8 @@ print_reloc_statement (reloc)
int i;
bfd_vma addr;
bfd_size_type size;
- unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
for (i = 0; i < SECTION_NAME_MAP_LENGTH; i++)
print_space ();
@@ -2331,7 +2364,7 @@ print_reloc_statement (reloc)
print_nl ();
print_dot = addr + size / opb;
-}
+}
static void
print_padding_statement (s)
@@ -2339,8 +2372,8 @@ print_padding_statement (s)
{
int len;
bfd_vma addr;
- unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
minfo (" *fill*");
@@ -2366,8 +2399,8 @@ print_padding_statement (s)
static void
print_wild_statement (w, os)
- lang_wild_statement_type * w;
- lang_output_section_statement_type * os;
+ lang_wild_statement_type *w;
+ lang_output_section_statement_type *os;
{
print_space ();
@@ -2377,11 +2410,11 @@ print_wild_statement (w, os)
{
name_list *tmp;
minfo ("EXCLUDE_FILE ( %s", w->exclude_filename_list->name);
- for (tmp=w->exclude_filename_list->next; tmp; tmp = tmp->next)
- minfo (", %s", tmp->name);
+ for (tmp = w->exclude_filename_list->next; tmp; tmp = tmp->next)
+ minfo (", %s", tmp->name);
minfo (")");
- }
- if (w->filename != NULL)
+ }
+ if (w->filename != NULL)
minfo ("%s", w->filename);
else
minfo ("*");
@@ -2519,7 +2552,7 @@ print_statements ()
void
dprint_statement (s, n)
- lang_statement_union_type * s;
+ lang_statement_union_type *s;
int n;
{
FILE *map_save = config.map_file;
@@ -2542,10 +2575,10 @@ dprint_statement (s, n)
static bfd_vma
insert_pad (this_ptr, fill, power, output_section_statement, dot)
- lang_statement_union_type ** this_ptr;
+ lang_statement_union_type **this_ptr;
fill_type fill;
unsigned int power;
- asection * output_section_statement;
+ asection *output_section_statement;
bfd_vma dot;
{
/* Align this section first to the
@@ -2553,11 +2586,10 @@ insert_pad (this_ptr, fill, power, output_section_statement, dot)
to the output section's requirement.
If this alignment is > than any seen before,
then record it too. Perform the alignment by
- inserting a magic 'padding' statement.
- */
+ inserting a magic 'padding' statement. */
- unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
unsigned int alignment_needed = align_power (dot, power) - dot;
if (alignment_needed != 0)
@@ -2566,7 +2598,7 @@ insert_pad (this_ptr, fill, power, output_section_statement, dot)
((lang_statement_union_type *)
stat_alloc (sizeof (lang_padding_statement_type)));
- /* Link into existing chain */
+ /* Link into existing chain. */
new->header.next = *this_ptr;
*this_ptr = new;
new->header.type = lang_padding_statement_enum;
@@ -2577,8 +2609,7 @@ insert_pad (this_ptr, fill, power, output_section_statement, dot)
new->padding_statement.size = alignment_needed * opb;
}
-
- /* Remember the most restrictive alignment */
+ /* Remember the most restrictive alignment. */
if (power > output_section_statement->alignment_power)
{
output_section_statement->alignment_power = power;
@@ -2588,19 +2619,20 @@ insert_pad (this_ptr, fill, power, output_section_statement, dot)
return dot + alignment_needed;
}
-/* Work out how much this section will move the dot point */
+/* Work out how much this section will move the dot point. */
+
static bfd_vma
size_input_section (this_ptr, output_section_statement, fill, dot, relax)
- lang_statement_union_type ** this_ptr;
- lang_output_section_statement_type * output_section_statement;
+ lang_statement_union_type **this_ptr;
+ lang_output_section_statement_type *output_section_statement;
fill_type fill;
bfd_vma dot;
boolean relax ATTRIBUTE_UNUSED;
{
lang_input_section_type *is = &((*this_ptr)->input_section);
asection *i = is->section;
- unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
if (is->ifile->just_syms_flag == false)
{
@@ -2611,18 +2643,17 @@ size_input_section (this_ptr, output_section_statement, fill, dot, relax)
dot = insert_pad (this_ptr, fill, i->alignment_power,
output_section_statement->bfd_section, dot);
- /* Remember where in the output section this input section goes */
+ /* Remember where in the output section this input section goes. */
i->output_offset = dot - output_section_statement->bfd_section->vma;
- /* Mark how big the output section must be to contain this now
- */
+ /* Mark how big the output section must be to contain this now. */
if (i->_cooked_size != 0)
dot += i->_cooked_size / opb;
else
dot += i->_raw_size / opb;
- output_section_statement->bfd_section->_raw_size =
- (dot - output_section_statement->bfd_section->vma) * opb;
+ output_section_statement->bfd_section->_raw_size =
+ (dot - output_section_statement->bfd_section->vma) * opb;
}
else
{
@@ -2639,21 +2670,22 @@ size_input_section (this_ptr, output_section_statement, fill, dot, relax)
/* Check to see if any allocated sections overlap with other allocated
sections. This can happen when the linker script specifically specifies
the output section addresses of the two sections. */
+
static void
lang_check_section_addresses ()
{
- asection * s;
+ asection *s;
unsigned opb = bfd_octets_per_byte (output_bfd);
/* Scan all sections in the output list. */
for (s = output_bfd->sections; s != NULL; s = s->next)
{
- asection * os;
-
+ asection *os;
+
/* Ignore sections which are not loaded or which have no contents. */
if (IGNORE_SECTION (output_bfd, s))
continue;
-
+
/* Once we reach section 's' stop our seach. This prevents two
warning messages from being produced, one for 'section A overlaps
section B' and one for 'section B overlaps section A'. */
@@ -2663,7 +2695,7 @@ lang_check_section_addresses ()
bfd_vma s_end;
bfd_vma os_start;
bfd_vma os_end;
-
+
/* Only consider loadable sections with real contents. */
if (IGNORE_SECTION (output_bfd, os))
continue;
@@ -2675,15 +2707,15 @@ lang_check_section_addresses ()
os_start = bfd_section_lma (output_bfd, os);
s_end = s_start + bfd_section_size (output_bfd, s) / opb - 1;
os_end = os_start + bfd_section_size (output_bfd, os) / opb - 1;
-
+
/* Look for an overlap. */
if ((s_end < os_start) || (s_start > os_end))
continue;
-
+
einfo (
_("%X%P: section %s [%V -> %V] overlaps section %s [%V -> %V]\n"),
s->name, s_start, s_end, os->name, os_start, os_end);
-
+
/* Once we have found one overlap for this section,
stop looking for others. */
break;
@@ -2699,14 +2731,14 @@ static boolean relax_again;
/* Make sure the new address is within the region. We explicitly permit the
current address to be at the exact end of the region when the address is
non-zero, in case the region is at the end of addressable memory and the
- calculation wraps around. */
+ calculation wraps around. */
static void
os_region_check (os, region, tree, base)
- lang_output_section_statement_type *os;
- struct memory_region_struct *region;
- etree_type *tree;
- bfd_vma base;
+ lang_output_section_statement_type *os;
+ struct memory_region_struct *region;
+ etree_type *tree;
+ bfd_vma base;
{
if ((region->current < region->origin
|| (region->current - region->origin > region->length))
@@ -2737,14 +2769,14 @@ os_region_check (os, region, tree, base)
bfd_vma
lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
- lang_statement_union_type * s;
- lang_output_section_statement_type * output_section_statement;
- lang_statement_union_type ** prev;
+ lang_statement_union_type *s;
+ lang_output_section_statement_type *output_section_statement;
+ lang_statement_union_type **prev;
fill_type fill;
bfd_vma dot;
boolean relax;
{
- unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
ldfile_output_machine);
/* Size up the sections from their constituent parts. */
@@ -2767,7 +2799,7 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
to do this, but nothing simple comes to mind. */
if ((os->bfd_section->flags & SEC_COFF_SHARED_LIBRARY) != 0)
{
- asection * input;
+ asection *input;
if (os->children.head == NULL
|| os->children.head->next != NULL
@@ -2817,7 +2849,7 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
bfd_get_section_name (output_bfd, os->bfd_section));
dot = os->region->current;
-
+
if (os->section_alignment == -1)
{
bfd_vma olddot;
@@ -2845,7 +2877,7 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
}
dot = r.value + r.section->bfd_section->vma;
}
-
+
/* The section starts here.
First, align to what the section needs. */
@@ -2853,15 +2885,16 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
dot = align_power (dot, os->section_alignment);
bfd_set_section_vma (0, os->bfd_section, dot);
-
+
os->bfd_section->output_offset = 0;
}
- (void) lang_size_sections (os->children.head, os, &os->children.head,
+ (void) lang_size_sections (os->children.head, os,
+ &os->children.head,
os->fill, dot, relax);
-
- /* put the section within the requested block size, or align at
- the block boundary */
+
+ /* Put the section within the requested block size, or
+ align at the block boundary. */
after = ALIGN_N (os->bfd_section->vma
+ os->bfd_section->_raw_size / opb,
/* The coercion here is important, see ld.h. */
@@ -2870,8 +2903,8 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
if (bfd_is_abs_section (os->bfd_section))
ASSERT (after == os->bfd_section->vma);
else
- os->bfd_section->_raw_size =
- (after - os->bfd_section->vma) * opb;
+ os->bfd_section->_raw_size =
+ (after - os->bfd_section->vma) * opb;
dot = os->bfd_section->vma + os->bfd_section->_raw_size / opb;
os->processed = true;
@@ -2879,7 +2912,7 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
We only do this if the section is going to be allocated,
since unallocated sections do not contribute to the region's
overall size in memory.
-
+
If the SEC_NEVER_LOAD bit is not set, it will affect the
addresses of sections after it. We have to update
dot. */
@@ -2890,36 +2923,37 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
& (SEC_ALLOC | SEC_LOAD))))
{
os->region->current = dot;
-
+
/* Make sure the new address is within the region. */
- os_region_check (os, os->region, os->addr_tree,
- os->bfd_section->vma);
-
- /* if there's no load address specified, use the run region as
- the load region */
- if (os->lma_region == NULL && os->load_base == NULL)
- os->lma_region = os->region;
-
- if (os->lma_region != NULL)
- {
- if (os->load_base != NULL)
- {
- einfo (_("%X%P: use an absolute load address or a load memory region, not both\n"));
- }
- else
- {
- /* don't allocate twice */
- if (os->lma_region != os->region)
- {
- /* set load_base, which will be handled later */
- os->load_base = exp_intop (os->lma_region->current);
- os->lma_region->current +=
- os->bfd_section->_raw_size / opb;
- os_region_check (os, os->lma_region, NULL,
- os->bfd_section->lma);
- }
- }
- }
+ os_region_check (os, os->region, os->addr_tree,
+ os->bfd_section->vma);
+
+ /* If there's no load address specified, use the run
+ region as the load region. */
+ if (os->lma_region == NULL && os->load_base == NULL)
+ os->lma_region = os->region;
+
+ if (os->lma_region != NULL)
+ {
+ if (os->load_base != NULL)
+ {
+ einfo (_("%X%P: use an absolute load address or a load memory region, not both\n"));
+ }
+ else
+ {
+ /* Don't allocate twice. */
+ if (os->lma_region != os->region)
+ {
+ /* Set load_base, which will be handled later. */
+ os->load_base =
+ exp_intop (os->lma_region->current);
+ os->lma_region->current +=
+ os->bfd_section->_raw_size / opb;
+ os_region_check (os, os->lma_region, NULL,
+ os->bfd_section->lma);
+ }
+ }
+ }
}
}
break;
@@ -2936,14 +2970,15 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
{
unsigned int size = 0;
- s->data_statement.output_vma = dot - output_section_statement->bfd_section->vma;
+ s->data_statement.output_vma =
+ dot - output_section_statement->bfd_section->vma;
s->data_statement.output_section =
output_section_statement->bfd_section;
switch (s->data_statement.type)
{
- default:
- abort();
+ default:
+ abort ();
case QUAD:
case SQUAD:
size = QUAD_SIZE;
@@ -2958,16 +2993,18 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
size = BYTE_SIZE;
break;
}
- if (size < opb)
- size = opb;
+ if (size < opb)
+ size = opb;
dot += size / opb;
output_section_statement->bfd_section->_raw_size += size;
/* The output section gets contents, and then we inspect for
any flags set in the input script which override any ALLOC. */
output_section_statement->bfd_section->flags |= SEC_HAS_CONTENTS;
- if (!(output_section_statement->flags & SEC_NEVER_LOAD)) {
- output_section_statement->bfd_section->flags |= SEC_ALLOC | SEC_LOAD;
- }
+ if (!(output_section_statement->flags & SEC_NEVER_LOAD))
+ {
+ output_section_statement->bfd_section->flags |=
+ SEC_ALLOC | SEC_LOAD;
+ }
}
break;
@@ -2984,13 +3021,12 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
output_section_statement->bfd_section->_raw_size += size;
}
break;
-
+
case lang_wild_statement_enum:
dot = lang_size_sections (s->wild_statement.children.head,
output_section_statement,
&s->wild_statement.children.head,
-
fill, dot, relax);
break;
@@ -3030,7 +3066,8 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
case lang_input_statement_enum:
break;
case lang_fill_statement_enum:
- s->fill_statement.output_section = output_section_statement->bfd_section;
+ s->fill_statement.output_section =
+ output_section_statement->bfd_section;
fill = s->fill_statement.fill;
break;
@@ -3114,13 +3151,13 @@ lang_size_sections (s, output_section_statement, prev, fill, dot, relax)
bfd_vma
lang_do_assignments (s, output_section_statement, fill, dot)
- lang_statement_union_type * s;
- lang_output_section_statement_type * output_section_statement;
+ lang_statement_union_type *s;
+ lang_output_section_statement_type *output_section_statement;
fill_type fill;
bfd_vma dot;
{
- unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
for (; s != (lang_statement_union_type *) NULL; s = s->next)
{
@@ -3146,14 +3183,15 @@ lang_do_assignments (s, output_section_statement, fill, dot)
dot = os->bfd_section->vma + os->bfd_section->_raw_size / opb;
}
- if (os->load_base)
+ if (os->load_base)
{
/* If nothing has been placed into the output section then
- it won't have a bfd_section. */
- if (os->bfd_section)
+ it won't have a bfd_section. */
+ if (os->bfd_section)
{
- os->bfd_section->lma
- = exp_get_abs_int(os->load_base, 0,"load base", lang_final_phase_enum);
+ os->bfd_section->lma
+ = exp_get_abs_int (os->load_base, 0, "load base",
+ lang_final_phase_enum);
}
}
}
@@ -3186,28 +3224,28 @@ lang_do_assignments (s, output_section_statement, fill, dot)
}
{
unsigned int size;
- switch (s->data_statement.type)
- {
- default:
- abort();
- case QUAD:
- case SQUAD:
- size = QUAD_SIZE;
- break;
- case LONG:
- size = LONG_SIZE;
- break;
- case SHORT:
- size = SHORT_SIZE;
- break;
- case BYTE:
- size = BYTE_SIZE;
- break;
- }
- if (size < opb)
- size = opb;
- dot += size / opb;
- }
+ switch (s->data_statement.type)
+ {
+ default:
+ abort ();
+ case QUAD:
+ case SQUAD:
+ size = QUAD_SIZE;
+ break;
+ case LONG:
+ size = LONG_SIZE;
+ break;
+ case SHORT:
+ size = SHORT_SIZE;
+ break;
+ case BYTE:
+ size = BYTE_SIZE;
+ break;
+ }
+ if (size < opb)
+ size = opb;
+ dot += size / opb;
+ }
break;
case lang_reloc_statement_enum:
@@ -3309,7 +3347,7 @@ lang_set_startof ()
h = bfd_link_hash_lookup (link_info.hash, buf, false, false, true);
if (h != NULL && h->type == bfd_link_hash_undefined)
{
- unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
ldfile_output_machine);
h->type = bfd_link_hash_defined;
if (s->_cooked_size != 0)
@@ -3360,7 +3398,7 @@ lang_finish ()
else
{
bfd_vma val;
- CONST char *send;
+ const char *send;
/* We couldn't find the entry symbol. Try parsing it as a
number. */
@@ -3420,7 +3458,7 @@ lang_check ()
{
lang_statement_union_type *file;
bfd *input_bfd;
- CONST bfd_arch_info_type *compatible;
+ const bfd_arch_info_type *compatible;
for (file = file_chain.head;
file != (lang_statement_union_type *) NULL;
@@ -3436,8 +3474,11 @@ lang_check ()
bfd_printable_name (input_bfd), input_bfd,
bfd_printable_name (output_bfd));
}
- else
+ else if (bfd_count_sections (input_bfd))
{
+ /* If the input bfd has no contents, it shouldn't set the
+ private data of the output bfd. */
+
bfd_error_handler_type pfn = NULL;
/* If we aren't supposed to warn about mismatched input
@@ -3492,8 +3533,8 @@ lang_one_common (h, info)
unsigned int power_of_two;
bfd_vma size;
asection *section;
- unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
- ldfile_output_machine);
+ unsigned opb = bfd_arch_mach_octets_per_byte (ldfile_output_architecture,
+ ldfile_output_machine);
if (h->type != bfd_link_hash_common)
return true;
@@ -3526,7 +3567,7 @@ lang_one_common (h, info)
/* Make sure the section is allocated in memory, and make sure that
it is no longer a common section. */
section->flags |= SEC_ALLOC;
- section->flags &= ~ SEC_IS_COMMON;
+ section->flags &= ~SEC_IS_COMMON;
if (config.map_file != NULL)
{
@@ -3578,12 +3619,9 @@ lang_one_common (h, info)
return true;
}
-/*
-run through the input files and ensure that every input
-section has somewhere to go. If one is found without
-a destination then create an input request and place it
-into the statement tree.
-*/
+/* Run through the input files and ensure that every input section has
+ somewhere to go. If one is found without a destination then create
+ an input request and place it into the statement tree. */
static void
lang_place_orphans ()
@@ -3599,7 +3637,7 @@ lang_place_orphans ()
if (s->output_section == (asection *) NULL)
{
/* This section of the file is not attatched, root
- around for a sensible place for it to go */
+ around for a sensible place for it to go. */
if (file->just_syms_flag)
{
@@ -3647,11 +3685,10 @@ lang_place_orphans ()
}
}
-
void
lang_set_flags (ptr, flags, invert)
lang_memory_region_type *ptr;
- CONST char *flags;
+ const char *flags;
int invert;
{
flagword *ptr_flags;
@@ -3725,11 +3762,11 @@ lang_for_each_file (func)
void
lang_for_each_input_section (func)
- void (*func) PARAMS ((bfd * ab, asection * as));
+ void (*func) PARAMS ((bfd *ab, asection *as));
{
LANG_FOR_EACH_INPUT_STATEMENT (f)
{
- asection * s;
+ asection *s;
for (s = f->the_bfd->sections;
s != (asection *) NULL;
@@ -3744,7 +3781,7 @@ lang_for_each_input_section (func)
void
ldlang_add_file (entry)
- lang_input_statement_type * entry;
+ lang_input_statement_type *entry;
{
bfd **pp;
@@ -3779,7 +3816,7 @@ ldlang_add_file (entry)
void
lang_add_output (name, from_script)
- CONST char *name;
+ const char *name;
int from_script;
{
/* Make -o on command line override OUTPUT in script. */
@@ -3790,7 +3827,6 @@ lang_add_output (name, from_script)
}
}
-
static lang_output_section_statement_type *current_section;
static int
@@ -3803,7 +3839,7 @@ topower (x)
if (x < 0)
return -1;
- for (l = 0; l < 32; l++)
+ for (l = 0; l < 32; l++)
{
if (i >= (unsigned int) x)
return l;
@@ -3818,7 +3854,7 @@ lang_enter_output_section_statement (output_section_statement_name,
address_exp, sectype, block_value,
align, subalign, ebase)
const char *output_section_statement_name;
- etree_type * address_exp;
+ etree_type *address_exp;
enum section_type sectype;
bfd_vma block_value;
etree_type *align;
@@ -3831,19 +3867,17 @@ lang_enter_output_section_statement (output_section_statement_name,
os =
lang_output_section_statement_lookup (output_section_statement_name);
+ /* Add this statement to tree. */
+#if 0
+ add_statement (lang_output_section_statement_enum,
+ output_section_statement);
+#endif
+ /* Make next things chain into subchain of this. */
-
- /* Add this statement to tree */
- /* add_statement(lang_output_section_statement_enum,
- output_section_statement);*/
- /* Make next things chain into subchain of this */
-
- if (os->addr_tree ==
- (etree_type *) NULL)
- {
- os->addr_tree =
- address_exp;
- }
+ if (os->addr_tree == (etree_type *) NULL)
+ {
+ os->addr_tree = address_exp;
+ }
os->sectype = sectype;
if (sectype != noload_section)
os->flags = SEC_NO_FLAGS;
@@ -3852,19 +3886,15 @@ lang_enter_output_section_statement (output_section_statement_name,
os->block_value = block_value ? block_value : 1;
stat_ptr = &os->children;
- os->subsection_alignment = topower(
- exp_get_value_int(subalign, -1,
- "subsection alignment",
- 0));
- os->section_alignment = topower(
- exp_get_value_int(align, -1,
- "section alignment", 0));
+ os->subsection_alignment =
+ topower (exp_get_value_int (subalign, -1, "subsection alignment", 0));
+ os->section_alignment =
+ topower (exp_get_value_int (align, -1, "section alignment", 0));
os->load_base = ebase;
return os;
}
-
void
lang_final ()
{
@@ -3874,7 +3904,8 @@ lang_final ()
new->name = output_filename;
}
-/* Reset the current counters in the regions */
+/* Reset the current counters in the regions. */
+
static void
reset_memory_regions ()
{
@@ -3897,7 +3928,7 @@ gc_section_callback (ptr, section, file, data)
lang_wild_statement_type *ptr;
asection *section;
lang_input_statement_type *file ATTRIBUTE_UNUSED;
- void *data ATTRIBUTE_UNUSED;
+ PTR data ATTRIBUTE_UNUSED;
{
/* If the wild pattern was marked KEEP, the member sections
should be as well. */
@@ -3921,7 +3952,7 @@ lang_gc_wild (s, section, file)
static void
lang_gc_sections_1 (s)
- lang_statement_union_type * s;
+ lang_statement_union_type *s;
{
for (; s != (lang_statement_union_type *) NULL; s = s->next)
{
@@ -3959,7 +3990,7 @@ lang_gc_sections ()
/* Keep all sections containing symbols undefined on the command-line.
Handle the entry symbol at the same time. */
-
+
if (entry_symbol != NULL)
{
fake_list_start.next = ldlang_undef_chain_list_head;
@@ -3971,12 +4002,12 @@ lang_gc_sections ()
for (; ulist; ulist = ulist->next)
{
- h = bfd_link_hash_lookup (link_info.hash, ulist->name,
+ h = bfd_link_hash_lookup (link_info.hash, ulist->name,
false, false, false);
if (h != (struct bfd_link_hash_entry *) NULL
- && (h->type == bfd_link_hash_defined
- || h->type == bfd_link_hash_defweak)
+ && (h->type == bfd_link_hash_defined
+ || h->type == bfd_link_hash_defweak)
&& ! bfd_is_abs_section (h->u.def.section))
{
h->u.def.section->flags |= SEC_KEEP;
@@ -3992,16 +4023,17 @@ lang_process ()
lang_reasonable_defaults ();
current_target = default_target;
- lang_for_each_statement (ldlang_open_output); /* Open the output file */
+ /* Open the output file. */
+ lang_for_each_statement (ldlang_open_output);
ldemul_create_output_section_statements ();
- /* Add to the hash table all undefineds on the command line */
+ /* Add to the hash table all undefineds on the command line. */
lang_place_undefineds ();
already_linked_table_init ();
- /* Create a bfd for each input file */
+ /* Create a bfd for each input file. */
current_target = default_target;
open_input_bfds (statement_list.head, false);
@@ -4028,17 +4060,15 @@ lang_process ()
if (command_line.gc_sections)
lang_gc_sections ();
- /* Size up the common data */
+ /* Size up the common data. */
lang_common ();
/* Run through the contours of the script and attach input sections
- to the correct output sections
- */
+ to the correct output sections. */
map_input_to_output_sections (statement_list.head, (char *) NULL,
(lang_output_section_statement_type *) NULL);
-
- /* Find any sections not attached explicitly and handle them */
+ /* Find any sections not attached explicitly and handle them. */
lang_place_orphans ();
ldemul_before_allocation ();
@@ -4047,7 +4077,7 @@ lang_process ()
section positions, since they will affect SIZEOF_HEADERS. */
lang_record_phdrs ();
- /* Now run around and relax if we can */
+ /* Now run around and relax if we can. */
if (command_line.relax)
{
/* First time round is a trial run to get the 'worst case'
@@ -4065,7 +4095,7 @@ lang_process ()
/* Note: pe-dll.c does something like this also. If you find
you need to change this code, you probably need to change
- pe-dll.c also. DJ */
+ pe-dll.c also. DJ */
/* Do all the assignments with our current guesses as to
section sizes. */
@@ -4096,8 +4126,8 @@ lang_process ()
/* Fix any .startof. or .sizeof. symbols. */
lang_set_startof ();
- /* Do all the assignments, now that we know the final restingplaces
- of all the symbols */
+ /* Do all the assignments, now that we know the final resting places
+ of all the symbols. */
lang_do_assignments (statement_list.head,
abs_output_section,
@@ -4107,8 +4137,8 @@ lang_process ()
if (! link_info.relocateable
&& command_line.check_section_addresses)
lang_check_section_addresses ();
-
- /* Final stuffs */
+
+ /* Final stuffs. */
ldemul_finish ();
lang_finish ();
@@ -4148,8 +4178,8 @@ lang_add_wild (section_name, sections_sorted, filename, filenames_sorted,
void
lang_section_start (name, address)
- CONST char *name;
- etree_type * address;
+ const char *name;
+ etree_type *address;
{
lang_address_statement_type *ad = new_stat (lang_address_statement, stat_ptr);
@@ -4164,7 +4194,7 @@ lang_section_start (name, address)
void
lang_add_entry (name, cmdline)
- CONST char *name;
+ const char *name;
boolean cmdline;
{
if (entry_symbol == NULL
@@ -4178,7 +4208,7 @@ lang_add_entry (name, cmdline)
void
lang_add_target (name)
- CONST char *name;
+ const char *name;
{
lang_target_statement_type *new = new_stat (lang_target_statement,
stat_ptr);
@@ -4189,13 +4219,13 @@ lang_add_target (name)
void
lang_add_map (name)
- CONST char *name;
+ const char *name;
{
while (*name)
{
switch (*name)
{
- case 'F':
+ case 'F':
map_option_f = true;
break;
}
@@ -4243,7 +4273,7 @@ lang_add_reloc (reloc, howto, section, name, addend)
union etree_union *addend;
{
lang_reloc_statement_type *p = new_stat (lang_reloc_statement, stat_ptr);
-
+
p->reloc = reloc;
p->howto = howto;
p->section = section;
@@ -4257,7 +4287,7 @@ lang_add_reloc (reloc, howto, section, name, addend)
lang_assignment_statement_type *
lang_add_assignment (exp)
- etree_type * exp;
+ etree_type *exp;
{
lang_assignment_statement_type *new = new_stat (lang_assignment_statement,
stat_ptr);
@@ -4275,7 +4305,7 @@ lang_add_attribute (attribute)
void
lang_startup (name)
- CONST char *name;
+ const char *name;
{
if (startup_file != (char *) NULL)
{
@@ -4307,8 +4337,8 @@ lang_leave_output_section_statement (fill, memspec, phdrs, lma_memspec)
if (strcmp (lma_memspec, "*default*") != 0)
{
current_section->lma_region = lang_memory_region_lookup (lma_memspec);
- /* if no runtime region has been given, but the load region has been,
- use the load region */
+ /* If no runtime region has been given, but the load region has
+ been, use the load region. */
if (strcmp (memspec, "*default*") == 0)
current_section->region = lang_memory_region_lookup (lma_memspec);
}
@@ -4316,12 +4346,11 @@ lang_leave_output_section_statement (fill, memspec, phdrs, lma_memspec)
stat_ptr = &statement_list;
}
-/*
- Create an absolute symbol with the given name with the value of the
- address of first byte of the section named.
+/* Create an absolute symbol with the given name with the value of the
+ address of first byte of the section named.
+
+ If the symbol already exists, then do nothing. */
- If the symbol already exists, then do nothing.
-*/
void
lang_abs_symbol_at_beginning_of (secname, name)
const char *secname;
@@ -4350,12 +4379,11 @@ lang_abs_symbol_at_beginning_of (secname, name)
}
}
-/*
- Create an absolute symbol with the given name with the value of the
- address of the first byte after the end of the section named.
+/* Create an absolute symbol with the given name with the value of the
+ address of the first byte after the end of the section named.
+
+ If the symbol already exists, then do nothing. */
- If the symbol already exists, then do nothing.
-*/
void
lang_abs_symbol_at_end_of (secname, name)
const char *secname;
@@ -4388,9 +4416,9 @@ lang_abs_symbol_at_end_of (secname, name)
void
lang_statement_append (list, element, field)
- lang_statement_list_type * list;
- lang_statement_union_type * element;
- lang_statement_union_type ** field;
+ lang_statement_list_type *list;
+ lang_statement_union_type *element;
+ lang_statement_union_type **field;
{
*(list->tail) = element;
list->tail = field;
@@ -4608,8 +4636,7 @@ static etree_type *overlay_max;
/* A list of all the sections in this overlay. */
-struct overlay_list
-{
+struct overlay_list {
struct overlay_list *next;
lang_output_section_statement_type *os;
};
@@ -4690,7 +4717,7 @@ lang_leave_overlay_section (fill, phdrs)
name = current_section->name;
- lang_leave_output_section_statement (fill, "*default*",
+ lang_leave_output_section_statement (fill, "*default*",
phdrs, "*default*");
/* Define the magic symbols. */
@@ -4753,8 +4780,15 @@ lang_leave_overlay (fill, memspec, phdrs, lma_memspec)
l->os->fill = fill;
if (region != NULL && l->os->region == NULL)
l->os->region = region;
- if (lma_region != NULL && l->os->lma_region == NULL)
- l->os->lma_region = lma_region;
+ /* We only set lma_region for the first overlay section, as
+ subsequent overlay sections will have load_base set relative
+ to the first section. Also, don't set lma_region if
+ load_base is specified. FIXME: There should really be a test
+ that `AT ( LDADDR )' doesn't conflict with `AT >LMA_REGION'
+ rather than letting LDADDR simply override LMA_REGION. */
+ if (lma_region != NULL && l->os->lma_region == NULL
+ && l->next == NULL && l->os->load_base == NULL)
+ l->os->lma_region = lma_region;
if (phdrs != NULL && l->os->phdrs == NULL)
l->os->phdrs = phdrs;
@@ -4814,7 +4848,7 @@ lang_vers_match_lang_cplusplus (expr, sym)
if (expr->pattern[0] == '*' && expr->pattern[1] == '\0')
return 1;
- alt_sym = cplus_demangle(sym, /* DMGL_NO_TPARAMS */ 0);
+ alt_sym = cplus_demangle (sym, /* DMGL_NO_TPARAMS */ 0);
if (!alt_sym)
{
/* cplus_demangle (also) returns NULL when it is not a C++ symbol.
@@ -4841,7 +4875,7 @@ lang_vers_match_lang_java (expr, sym)
if (expr->pattern[0] == '*' && expr->pattern[1] == '\0')
return 1;
- alt_sym = cplus_demangle(sym, DMGL_JAVA);
+ alt_sym = cplus_demangle (sym, DMGL_JAVA);
if (!alt_sym)
{
/* cplus_demangle (also) returns NULL when it is not a Java symbol.
@@ -5016,7 +5050,7 @@ lang_do_version_exports_section ()
einfo (_("%X%P: unable to read .exports section contents"), sec);
p = contents;
- while (p < contents+len)
+ while (p < contents + len)
{
greg = lang_new_vers_regex (greg, p, NULL);
p = strchr (p, '\0') + 1;
@@ -5033,3 +5067,19 @@ lang_do_version_exports_section ()
lang_register_vers_node (command_line.version_exports_section,
lang_new_vers_node (greg, lreg), NULL);
}
+
+void
+lang_add_unique (name)
+ const char *name;
+{
+ struct unique_sections *ent;
+
+ for (ent = unique_section_list; ent; ent = ent->next)
+ if (strcmp (ent->name, name) == 0)
+ return;
+
+ ent = (struct unique_sections *) xmalloc (sizeof *ent);
+ ent->name = xstrdup (name);
+ ent->next = unique_section_list;
+ unique_section_list = ent;
+}
diff --git a/contrib/binutils/ld/ldlang.h b/contrib/binutils/ld/ldlang.h
index 553db4b..ac0fd28 100644
--- a/contrib/binutils/ld/ldlang.h
+++ b/contrib/binutils/ld/ldlang.h
@@ -1,19 +1,19 @@
/* ldlang.h - linker command language support
- Copyright 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+ Copyright 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001
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 1, 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
@@ -22,8 +22,7 @@
#ifndef LDLANG_H
#define LDLANG_H
-typedef enum
-{
+typedef enum {
lang_input_file_is_l_enum,
lang_input_file_is_symbols_only_enum,
lang_input_file_is_marker_enum,
@@ -33,15 +32,13 @@ typedef enum
} lang_input_file_enum_type;
typedef unsigned int fill_type;
-typedef struct statement_list
-{
+
+typedef struct statement_list {
union lang_statement_union *head;
union lang_statement_union **tail;
} lang_statement_list_type;
-
-typedef struct memory_region_struct
-{
+typedef struct memory_region_struct {
char *name;
struct memory_region_struct *next;
bfd_vma origin;
@@ -51,58 +48,49 @@ typedef struct memory_region_struct
flagword flags;
flagword not_flags;
boolean had_full_message;
-} lang_memory_region_type ;
-
-typedef struct lang_statement_header_struct
-{
- union lang_statement_union *next;
- enum statement_enum
- {
- lang_output_section_statement_enum,
- lang_assignment_statement_enum,
- lang_input_statement_enum,
- lang_address_statement_enum,
- lang_wild_statement_enum,
- lang_input_section_enum,
- lang_object_symbols_statement_enum,
- lang_fill_statement_enum,
- lang_data_statement_enum,
- lang_reloc_statement_enum,
- lang_target_statement_enum,
- lang_output_statement_enum,
- lang_padding_statement_enum,
- lang_group_statement_enum,
-
- lang_afile_asection_pair_statement_enum,
- lang_constructors_statement_enum
- } type;
-} lang_statement_header_type;
+} lang_memory_region_type;
+typedef struct lang_statement_header_struct {
+ union lang_statement_union *next;
+ enum statement_enum {
+ lang_output_section_statement_enum,
+ lang_assignment_statement_enum,
+ lang_input_statement_enum,
+ lang_address_statement_enum,
+ lang_wild_statement_enum,
+ lang_input_section_enum,
+ lang_object_symbols_statement_enum,
+ lang_fill_statement_enum,
+ lang_data_statement_enum,
+ lang_reloc_statement_enum,
+ lang_target_statement_enum,
+ lang_output_statement_enum,
+ lang_padding_statement_enum,
+ lang_group_statement_enum,
+
+ lang_afile_asection_pair_statement_enum,
+ lang_constructors_statement_enum
+ } type;
+} lang_statement_header_type;
-typedef struct
-{
+typedef struct {
lang_statement_header_type header;
union etree_union *exp;
} lang_assignment_statement_type;
-
-typedef struct lang_target_statement_struct
-{
+typedef struct lang_target_statement_struct {
lang_statement_header_type header;
const char *target;
} lang_target_statement_type;
-
-typedef struct lang_output_statement_struct
-{
+typedef struct lang_output_statement_struct {
lang_statement_header_type header;
const char *name;
} lang_output_statement_type;
/* Section types specified in a linker script. */
-enum section_type
-{
+enum section_type {
normal_section,
dsect_section,
copy_section,
@@ -114,15 +102,13 @@ enum section_type
/* This structure holds a list of program headers describing segments
in which this section should be placed. */
-struct lang_output_section_phdr_list
-{
+struct lang_output_section_phdr_list {
struct lang_output_section_phdr_list *next;
const char *name;
boolean used;
};
-typedef struct lang_output_section_statement_struct
-{
+typedef struct lang_output_section_statement_struct {
lang_statement_header_type header;
union etree_union *addr_tree;
lang_statement_list_type children;
@@ -131,7 +117,7 @@ typedef struct lang_output_section_statement_struct
const char *name;
boolean processed;
-
+
asection *bfd_section;
flagword flags; /* Or together of all input sections */
enum section_type sectype;
@@ -140,38 +126,33 @@ typedef struct lang_output_section_statement_struct
size_t block_value;
fill_type fill;
- int subsection_alignment; /* alignment of components */
- int section_alignment; /* alignment of start of section */
+ int subsection_alignment; /* alignment of components */
+ int section_alignment; /* alignment of start of section */
union etree_union *load_base;
struct lang_output_section_phdr_list *phdrs;
} lang_output_section_statement_type;
-
-typedef struct
-{
+typedef struct {
lang_statement_header_type header;
} lang_common_statement_type;
-typedef struct
-{
+typedef struct {
lang_statement_header_type header;
} lang_object_symbols_statement_type;
-typedef struct
-{
+typedef struct {
lang_statement_header_type header;
fill_type fill;
int size;
asection *output_section;
} lang_fill_statement_type;
-typedef struct
-{
+typedef struct {
lang_statement_header_type header;
unsigned int type;
- union etree_union *exp;
+ union etree_union *exp;
bfd_vma value;
asection *output_section;
bfd_vma output_vma;
@@ -179,8 +160,7 @@ typedef struct
/* Generate a reloc in the output file. */
-typedef struct
-{
+typedef struct {
lang_statement_header_type header;
/* Reloc to generate. */
@@ -210,8 +190,7 @@ typedef struct
bfd_vma output_vma;
} lang_reloc_statement_type;
-typedef struct lang_input_statement_struct
-{
+typedef struct lang_input_statement_struct {
lang_statement_header_type header;
/* Name of this file. */
const char *filename;
@@ -219,32 +198,32 @@ typedef struct lang_input_statement_struct
/* Usually the same as filename, but for a file spec'd with -l
this is the -l switch itself rather than the filename. */
const char *local_sym_name;
-
+
bfd *the_bfd;
-
+
boolean closed;
file_ptr passive_position;
-
+
/* Symbol table of the file. */
asymbol **asymbols;
unsigned int symbol_count;
-
+
/* Point to the next file - whatever it is, wanders up and down
archives */
-
- union lang_statement_union *next;
+
+ union lang_statement_union *next;
/* Point to the next file, but skips archive contents */
- union lang_statement_union *next_real_file;
-
+ union lang_statement_union *next_real_file;
+
boolean is_archive;
-
+
/* 1 means search a set of directories for this file. */
boolean search_dirs_flag;
-
+
/* 1 means this is base file of incremental load.
Do not load this file's text or data.
- Also default text_start to after this file's bss. */
-
+ Also default text_start to after this file's bss. */
+
boolean just_syms_flag;
/* Whether to search for this entry as a dynamic archive. */
@@ -254,30 +233,28 @@ typedef struct lang_input_statement_struct
boolean whole_archive;
boolean loaded;
-
- /* unsigned int globals_in_this_file;*/
+
+#if 0
+ unsigned int globals_in_this_file;
+#endif
const char *target;
boolean real;
} lang_input_statement_type;
-typedef struct
-{
+typedef struct {
lang_statement_header_type header;
asection *section;
lang_input_statement_type *ifile;
-
-} lang_input_section_type;
+} lang_input_section_type;
-typedef struct
-{
+typedef struct {
lang_statement_header_type header;
asection *section;
union lang_statement_union *file;
} lang_afile_asection_pair_statement_type;
-typedef struct lang_wild_statement_struct
-{
+typedef struct lang_wild_statement_struct {
lang_statement_header_type header;
const char *section_name;
boolean sections_sorted;
@@ -288,15 +265,13 @@ typedef struct lang_wild_statement_struct
lang_statement_list_type children;
} lang_wild_statement_type;
-typedef struct lang_address_statement_struct
-{
+typedef struct lang_address_statement_struct {
lang_statement_header_type header;
- const char *section_name;
- union etree_union *address;
+ const char *section_name;
+ union etree_union *address;
} lang_address_statement_type;
-typedef struct
-{
+typedef struct {
lang_statement_header_type header;
bfd_vma output_offset;
size_t size;
@@ -309,14 +284,12 @@ typedef struct
symbols are found. The effect is to search a group of libraries as
though they were a single library. */
-typedef struct
-{
+typedef struct {
lang_statement_header_type header;
lang_statement_list_type children;
} lang_group_statement_type;
-typedef union lang_statement_union
-{
+typedef union lang_statement_union {
lang_statement_header_type header;
union lang_statement_union *next;
lang_wild_statement_type wild_statement;
@@ -340,8 +313,7 @@ typedef union lang_statement_union
/* This structure holds information about a program header, from the
PHDRS command in the linker script. */
-struct lang_phdr
-{
+struct lang_phdr {
struct lang_phdr *next;
const char *name;
unsigned long type;
@@ -354,22 +326,30 @@ struct lang_phdr
/* This structure is used to hold a list of sections which may not
cross reference each other. */
-struct lang_nocrossref
-{
+struct lang_nocrossref {
struct lang_nocrossref *next;
const char *name;
};
/* The list of nocrossref lists. */
-struct lang_nocrossrefs
-{
+struct lang_nocrossrefs {
struct lang_nocrossrefs *next;
struct lang_nocrossref *list;
};
extern struct lang_nocrossrefs *nocrossref_list;
+/* This structure is used to hold a list of input section names which
+ will not match an output section in the linker script. */
+
+struct unique_sections {
+ struct unique_sections *next;
+ const char *name;
+};
+
+extern struct unique_sections *unique_section_list;
+
extern lang_output_section_statement_type *abs_output_section;
extern lang_statement_list_type lang_output_section_statement;
extern boolean lang_has_input_file;
@@ -379,6 +359,7 @@ extern boolean delete_output_file_on_failure;
extern const char *entry_symbol;
extern boolean entry_from_cmdline;
+extern lang_statement_list_type file_chain;
extern void lang_init PARAMS ((void));
extern struct memory_region_struct *lang_memory_region_lookup
@@ -430,12 +411,11 @@ extern bfd_vma lang_do_assignments
bfd_vma dot));
#define LANG_FOR_EACH_INPUT_STATEMENT(statement) \
- extern lang_statement_list_type file_chain; \
lang_input_statement_type *statement; \
for (statement = (lang_input_statement_type *)file_chain.head;\
statement != (lang_input_statement_type *)NULL; \
statement = (lang_input_statement_type *)statement->next)\
-
+
extern void lang_process PARAMS ((void));
extern void ldlang_add_file PARAMS ((lang_input_statement_type *));
extern lang_output_section_statement_type *lang_output_section_find
@@ -492,5 +472,7 @@ extern struct bfd_elf_version_deps *lang_add_vers_depend
extern void lang_register_vers_node
PARAMS ((const char *, struct bfd_elf_version_tree *,
struct bfd_elf_version_deps *));
+boolean unique_section_p PARAMS ((const char *));
+extern void lang_add_unique PARAMS ((const char *));
#endif
diff --git a/contrib/binutils/ld/ldlex.h b/contrib/binutils/ld/ldlex.h
index 53444ca..9990ddd 100644
--- a/contrib/binutils/ld/ldlex.h
+++ b/contrib/binutils/ld/ldlex.h
@@ -57,6 +57,6 @@ extern void lex_unput PARAMS ((int));
#ifndef yywrap
extern int yywrap PARAMS ((void));
#endif
-extern void parse_args PARAMS ((int, char **));
+extern void parse_args PARAMS ((unsigned, char **));
#endif
diff --git a/contrib/binutils/ld/ldlex.l b/contrib/binutils/ld/ldlex.l
index f3efe77..d5f5d27 100644
--- a/contrib/binutils/ld/ldlex.l
+++ b/contrib/binutils/ld/ldlex.l
@@ -115,7 +115,7 @@ WHITE [ \t\n\r]+
NOCFILENAMECHAR [_a-zA-Z0-9\/\.\-\_\+\$\:\[\]\\\~]
V_TAG [.$_a-zA-Z][._a-zA-Z0-9]*
-V_IDENTIFIER [*?.$_a-zA-Z][*?.$_a-zA-Z0-9]*
+V_IDENTIFIER [*?.$_a-zA-Z]([*?.$_a-zA-Z0-9]|::)*
%s SCRIPT
%s EXPRESSION
diff --git a/contrib/binutils/ld/ldmain.c b/contrib/binutils/ld/ldmain.c
index 676eeba..9d6e042 100644
--- a/contrib/binutils/ld/ldmain.c
+++ b/contrib/binutils/ld/ldmain.c
@@ -36,12 +36,12 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "ldgram.h"
#include "ldexp.h"
#include "ldlang.h"
-#include "ldemul.h"
#include "ldlex.h"
#include "ldfile.h"
+#include "ldemul.h"
#include "ldctor.h"
-/* Somewhere above, sys/stat.h got included . . . . */
+/* Somewhere above, sys/stat.h got included . . . . */
#if !defined(S_ISDIR) && defined(S_IFDIR)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
@@ -65,7 +65,7 @@ const char *output_filename = "a.out";
/* Name this program was invoked by. */
char *program_name;
-/* The file that we're creating */
+/* The file that we're creating. */
bfd *output_bfd = 0;
/* Set by -G argument, for MIPS ECOFF target. */
@@ -130,8 +130,7 @@ static boolean unattached_reloc PARAMS ((struct bfd_link_info *,
static boolean notice PARAMS ((struct bfd_link_info *, const char *,
bfd *, asection *, bfd_vma));
-static struct bfd_link_callbacks link_callbacks =
-{
+static struct bfd_link_callbacks link_callbacks = {
add_archive_element,
multiple_definition,
multiple_common,
@@ -150,10 +149,10 @@ struct bfd_link_info link_info;
static void
remove_output ()
{
- if (output_filename)
+ if (output_filename)
{
if (output_bfd && output_bfd->iostream)
- fclose((FILE *)(output_bfd->iostream));
+ fclose ((FILE *) (output_bfd->iostream));
if (delete_output_file_on_failure)
unlink (output_filename);
}
@@ -200,6 +199,8 @@ main (argc, argv)
config.build_constructors = true;
config.dynamic_link = false;
config.has_shared = false;
+ config.split_by_reloc = (unsigned) -1;
+ config.split_by_file = (bfd_size_type) -1;
command_line.force_common_definition = false;
command_line.interpreter = NULL;
command_line.rpath = NULL;
@@ -215,12 +216,14 @@ main (argc, argv)
link_info.callbacks = &link_callbacks;
link_info.relocateable = false;
+ link_info.emitrelocations = false;
link_info.shared = false;
link_info.symbolic = false;
link_info.static_link = false;
link_info.traditional_format = false;
link_info.optimize = false;
link_info.no_undefined = false;
+ link_info.allow_shlib_undefined = false;
link_info.strip = strip_none;
link_info.discard = discard_none;
link_info.keep_memory = true;
@@ -236,6 +239,9 @@ main (argc, argv)
and _fini symbols. We are compatible. */
link_info.init_function = "_init";
link_info.fini_function = "_fini";
+ link_info.new_dtags = false;
+ link_info.flags = (bfd_vma) 0;
+ link_info.flags_1 = (bfd_vma) 0;
ldfile_add_arch ("");
@@ -243,7 +249,6 @@ main (argc, argv)
force_make_executable = false;
config.magic_demand_paged = true;
config.text_read_only = true;
- config.make_executable = true;
emulation = get_emulation (argc, argv);
ldemul_choose_mode (emulation);
@@ -322,7 +327,6 @@ main (argc, argv)
ldemul_after_parse ();
-
if (config.map_filename)
{
if (strcmp (config.map_filename, "-") == 0)
@@ -341,21 +345,22 @@ main (argc, argv)
}
}
-
lang_process ();
/* Print error messages for any missing symbols, for any warning
- symbols, and possibly multiple definitions */
-
+ symbols, and possibly multiple definitions. */
- if (config.text_read_only)
+ if (! link_info.relocateable)
{
- /* Look for a text section and mark the readonly attribute in it */
+ /* Look for a text section and switch the readonly attribute in it. */
asection *found = bfd_get_section_by_name (output_bfd, ".text");
if (found != (asection *) NULL)
{
- found->flags |= SEC_READONLY;
+ if (config.text_read_only)
+ found->flags |= SEC_READONLY;
+ else
+ found->flags &= ~SEC_READONLY;
}
}
@@ -395,12 +400,12 @@ main (argc, argv)
einfo (_("%F%B: final close failed: %E\n"), output_bfd);
/* If the --force-exe-suffix is enabled, and we're making an
- executable file and it doesn't end in .exe, copy it to one which does. */
-
+ executable file and it doesn't end in .exe, copy it to one
+ which does. */
if (! link_info.relocateable && command_line.force_exe_suffix)
{
int len = strlen (output_filename);
- if (len < 4
+ if (len < 4
|| (strcasecmp (output_filename + len - 4, ".exe") != 0
&& strcasecmp (output_filename + len - 4, ".dll") != 0))
{
@@ -491,7 +496,7 @@ get_emulation (argc, argv)
}
else
{
- einfo(_("%P%F: missing argument to -m\n"));
+ einfo (_("%P%F: missing argument to -m\n"));
}
}
else if (strcmp (argv[i], "-mips1") == 0
@@ -539,7 +544,7 @@ check_for_scripts_dir (dir)
dirlen = strlen (dir);
/* sizeof counts the terminating NUL. */
- buf = (char *) xmalloc (dirlen + sizeof("/ldscripts"));
+ buf = (char *) xmalloc (dirlen + sizeof ("/ldscripts"));
sprintf (buf, "%s/ldscripts", dir);
res = stat (buf, &s) == 0 && S_ISDIR (s.st_mode);
@@ -564,7 +569,8 @@ set_scripts_dir ()
size_t dirlen;
if (check_for_scripts_dir (SCRIPTDIR))
- return; /* We've been installed normally. */
+ /* We've been installed normally. */
+ return;
/* Look for "ldscripts" in the dir where our binary is. */
end = strrchr (program_name, '/');
@@ -572,7 +578,7 @@ set_scripts_dir ()
{
/* We could have \foo\bar, or /foo\bar. */
char *bslash = strrchr (program_name, '\\');
- if (bslash > end)
+ if (end == NULL || (bslash != NULL && bslash > end))
end = bslash;
}
#endif
@@ -592,14 +598,16 @@ set_scripts_dir ()
dir[dirlen] = '\0';
if (check_for_scripts_dir (dir))
- return; /* Don't free dir. */
+ /* Don't free dir. */
+ return;
/* Look for "ldscripts" in <the dir where our binary is>/../lib. */
strcpy (dir + dirlen, "/../lib");
if (check_for_scripts_dir (dir))
return;
- free (dir); /* Well, we tried. */
+ /* Well, we tried. */
+ free (dir);
}
void
@@ -614,7 +622,7 @@ add_ysym (name)
bfd_hash_newfunc,
61))
einfo (_("%P%F: bfd_hash_table_init failed: %E\n"));
- }
+ }
if (bfd_hash_lookup (link_info.notice_hash, name, true, true)
== (struct bfd_hash_entry *) NULL)
@@ -711,7 +719,6 @@ add_keepsyms_file (filename)
/* This is called when BFD has decided to include an archive member in
a link. */
-/*ARGSUSED*/
static boolean
add_archive_element (info, abfd, name)
struct bfd_link_info *info ATTRIBUTE_UNUSED;
@@ -826,7 +833,6 @@ add_archive_element (info, abfd, name)
/* This is called when BFD has discovered a symbol which is defined
multiple times. */
-/*ARGSUSED*/
static boolean
multiple_definition (info, name, obfd, osec, oval, nbfd, nsec, nval)
struct bfd_link_info *info ATTRIBUTE_UNUSED;
@@ -855,6 +861,13 @@ multiple_definition (info, name, obfd, osec, oval, nbfd, nsec, nval)
nbfd, nsec, nval, name);
if (obfd != (bfd *) NULL)
einfo (_("%D: first defined here\n"), obfd, osec, oval);
+
+ if (command_line.relax)
+ {
+ einfo (_("%P: Disabling relaxation: it will not work with multiple definitions\n"));
+ command_line.relax = 0;
+ }
+
return true;
}
@@ -863,7 +876,6 @@ multiple_definition (info, name, obfd, osec, oval, nbfd, nsec, nval)
or when two common symbols are found. We only do something if
-warn-common was used. */
-/*ARGSUSED*/
static boolean
multiple_common (info, name, obfd, otype, osize, nbfd, ntype, nsize)
struct bfd_link_info *info ATTRIBUTE_UNUSED;
@@ -930,7 +942,6 @@ multiple_common (info, name, obfd, otype, osize, nbfd, ntype, nsize)
entry in the linker hash table for the set. SECTION and VALUE
represent a value which should be added to the set. */
-/*ARGSUSED*/
static boolean
add_to_set (info, h, reloc, abfd, section, value)
struct bfd_link_info *info ATTRIBUTE_UNUSED;
@@ -1019,8 +1030,7 @@ constructor_callback (info, constructor, name, abfd, section, value)
/* A structure used by warning_callback to pass information through
bfd_map_over_sections. */
-struct warning_callback_info
-{
+struct warning_callback_info {
boolean found;
const char *warning;
const char *symbol;
@@ -1029,7 +1039,6 @@ struct warning_callback_info
/* This is called when there is a reference to a warning symbol. */
-/*ARGSUSED*/
static boolean
warning_callback (info, warning, symbol, abfd, section, address)
struct bfd_link_info *info ATTRIBUTE_UNUSED;
@@ -1151,7 +1160,6 @@ warning_find_reloc (abfd, sec, iarg)
/* This is called when an undefined symbol is found. */
-/*ARGSUSED*/
static boolean
undefined_symbol (info, name, abfd, section, address, fatal)
struct bfd_link_info *info ATTRIBUTE_UNUSED;
@@ -1159,7 +1167,7 @@ undefined_symbol (info, name, abfd, section, address, fatal)
bfd *abfd;
asection *section;
bfd_vma address;
- boolean fatal;
+ boolean fatal ATTRIBUTE_UNUSED;
{
static char *error_name;
static unsigned int error_count;
@@ -1232,7 +1240,6 @@ undefined_symbol (info, name, abfd, section, address, fatal)
/* This is called when a reloc overflows. */
-/*ARGSUSED*/
static boolean
reloc_overflow (info, name, reloc_name, addend, abfd, section, address)
struct bfd_link_info *info ATTRIBUTE_UNUSED;
@@ -1256,7 +1263,6 @@ reloc_overflow (info, name, reloc_name, addend, abfd, section, address)
/* This is called when a dangerous relocation is made. */
-/*ARGSUSED*/
static boolean
reloc_dangerous (info, message, abfd, section, address)
struct bfd_link_info *info ATTRIBUTE_UNUSED;
@@ -1276,7 +1282,6 @@ reloc_dangerous (info, message, abfd, section, address)
/* This is called when a reloc is being generated attached to a symbol
that is not being output. */
-/*ARGSUSED*/
static boolean
unattached_reloc (info, name, abfd, section, address)
struct bfd_link_info *info ATTRIBUTE_UNUSED;
diff --git a/contrib/binutils/ld/ldmisc.c b/contrib/binutils/ld/ldmisc.c
index e343944..7068cc3 100644
--- a/contrib/binutils/ld/ldmisc.c
+++ b/contrib/binutils/ld/ldmisc.c
@@ -76,10 +76,10 @@ demangle (string)
&& bfd_get_symbol_leading_char (output_bfd) == string[0])
++string;
- /* This is a hack for better error reporting on XCOFF, or the MS PE */
- /* format. Xcoff has a single '.', while the NT PE for PPC has '..'. */
- /* So we remove all of them. */
- while(string[0] == '.')
+ /* This is a hack for better error reporting on XCOFF, or the MS PE
+ format. Xcoff has a single '.', while the NT PE for PPC has
+ '..'. So we remove all of them. */
+ while (string[0] == '.')
++string;
res = cplus_demangle (string, DMGL_ANSI | DMGL_PARAMS);
@@ -96,19 +96,19 @@ vfinfo (fp, fmt, arg)
while (*fmt != '\0')
{
- while (*fmt != '%' && *fmt != '\0')
+ while (*fmt != '%' && *fmt != '\0')
{
putc (*fmt, fp);
fmt++;
}
- if (*fmt == '%')
+ if (*fmt == '%')
{
- fmt ++;
- switch (*fmt++)
+ fmt++;
+ switch (*fmt++)
{
default:
- fprintf (fp,"%%%c", fmt[-1]);
+ fprintf (fp, "%%%c", fmt[-1]);
break;
case '%':
@@ -191,7 +191,7 @@ vfinfo (fp, fmt, arg)
case 'B':
/* filename from a bfd */
- {
+ {
bfd *abfd = va_arg (arg, bfd *);
if (abfd->my_archive)
fprintf (fp, "%s(%s)", abfd->my_archive->filename,
@@ -202,12 +202,12 @@ vfinfo (fp, fmt, arg)
break;
case 'F':
- /* error is fatal */
+ /* Error is fatal. */
fatal = true;
break;
case 'P':
- /* print program name */
+ /* Print program name. */
fprintf (fp, "%s", program_name);
break;
@@ -233,7 +233,7 @@ vfinfo (fp, fmt, arg)
break;
case 'S':
- /* print script file and linenumber */
+ /* Print script file and linenumber. */
if (parsing_defsym)
fprintf (fp, "--defsym %s", lex_string);
else if (ldfile_input_filename != NULL)
@@ -243,17 +243,17 @@ vfinfo (fp, fmt, arg)
break;
case 'R':
- /* Print all that's interesting about a relent */
+ /* Print all that's interesting about a relent. */
{
arelent *relent = va_arg (arg, arelent *);
-
+
lfinfo (fp, "%s+0x%v (type %s)",
(*(relent->sym_ptr_ptr))->name,
relent->addend,
relent->howto->name);
}
break;
-
+
case 'C':
case 'D':
case 'G':
@@ -355,7 +355,7 @@ vfinfo (fp, fmt, arg)
if (linenumber != 0)
lfinfo (fp, ":%u", linenumber);
}
- else if (linenumber != 0)
+ else if (linenumber != 0)
lfinfo (fp, "%B:%s:%u", abfd, filename, linenumber);
else
lfinfo (fp, "%B(%s+0x%v):%s", abfd, section->name,
@@ -380,7 +380,7 @@ vfinfo (fp, fmt, arg)
}
}
break;
-
+
case 's':
/* arbitrary string, like printf */
fprintf (fp, "%s", va_arg (arg, char *));
@@ -399,11 +399,11 @@ vfinfo (fp, fmt, arg)
}
}
- if (fatal == true)
- xexit(1);
+ if (fatal == true)
+ xexit (1);
}
-/* Format info message and print on stdout. */
+/* Format info message and print on stdout. */
/* (You would think this should be called just "info", but then you
would hosed by LynxOS, which defines that name in its libc.) */
@@ -431,7 +431,7 @@ info_msg (va_alist)
va_end (arg);
}
-/* ('e' for error.) Format info message and print on stderr. */
+/* ('e' for error.) Format info message and print on stderr. */
void
#if USE_STDARG
@@ -456,7 +456,7 @@ einfo (va_alist)
va_end (arg);
}
-void
+void
info_assert (file, line)
const char *file;
unsigned int line;
@@ -468,13 +468,13 @@ char *
buystring (x)
CONST char *CONST x;
{
- size_t l = strlen(x)+1;
- char *r = xmalloc(l);
- memcpy(r, x,l);
+ size_t l = strlen (x) + 1;
+ char *r = xmalloc (l);
+ memcpy (r, x, l);
return r;
}
-/* ('m' for map) Format info message and print on map. */
+/* ('m' for map) Format info message and print on map. */
void
#if USE_STDARG
@@ -525,13 +525,13 @@ lfinfo (va_alist)
/* Functions to print the link map. */
-void
+void
print_space ()
{
fprintf (config.map_file, " ");
}
-void
+void
print_nl ()
{
fprintf (config.map_file, "\n");
diff --git a/contrib/binutils/ld/ldver.c b/contrib/binutils/ld/ldver.c
index 5b600a2..4e027b0 100644
--- a/contrib/binutils/ld/ldver.c
+++ b/contrib/binutils/ld/ldver.c
@@ -1,5 +1,6 @@
/* ldver.c -- Print linker version.
- Copyright (C) 1991, 92, 93, 94, 95, 1996, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 2000
+ Free Software Foundation, Inc.
This file is part of GLD, the Gnu Linker.
@@ -23,6 +24,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "ld.h"
#include "ldver.h"
+#include "ldexp.h"
+#include "ldlang.h"
+#include "ldfile.h"
#include "ldemul.h"
#include "ldmain.h"
@@ -35,12 +39,12 @@ ldversion (noisy)
fprintf (stdout, _("GNU ld version %s (with BFD %s)\n"),
ld_program_version, BFD_VERSION);
- if (noisy)
+ if (noisy)
{
ld_emulation_xfer_type **ptr = ld_emulations;
-
+
printf (_(" Supported emulations:\n"));
- while (*ptr)
+ while (*ptr)
{
printf (" %s\n", (*ptr)->emulation_name);
ptr++;
diff --git a/contrib/binutils/ld/ldwrite.c b/contrib/binutils/ld/ldwrite.c
index b56119a..e4f176f 100644
--- a/contrib/binutils/ld/ldwrite.c
+++ b/contrib/binutils/ld/ldwrite.c
@@ -1,5 +1,5 @@
/* ldwrite.c -- write out the linked file
- Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 1998
+ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 2000
Free Software Foundation, Inc.
Written by Steve Chamberlain sac@cygnus.com
@@ -33,7 +33,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "ldmain.h"
static void build_link_order PARAMS ((lang_statement_union_type *));
-static asection *clone_section PARAMS ((bfd *, asection *, int *));
+static asection *clone_section PARAMS ((bfd *, asection *, const char *, int *));
static void split_sections PARAMS ((bfd *, struct bfd_link_info *));
/* Build link_order structures for the BFD linker. */
@@ -290,48 +290,43 @@ build_link_order (statement)
/* Call BFD to write out the linked file. */
-
/**********************************************************************/
-
/* Wander around the input sections, make sure that
we'll never try and create an output section with more relocs
than will fit.. Do this by always assuming the worst case, and
- creating new output sections with all the right bits */
+ creating new output sections with all the right bits. */
#define TESTIT 1
static asection *
-clone_section (abfd, s, count)
+clone_section (abfd, s, name, count)
bfd *abfd;
asection *s;
+ const char *name;
int *count;
{
-#define SSIZE 8
- char sname[SSIZE]; /* ?? find the name for this size */
+ char templ[6];
+ char *sname;
asection *n;
struct bfd_link_hash_entry *h;
- /* Invent a section name - use first five
- chars of base section name and a digit suffix */
- do
+
+ /* Invent a section name from the first five chars of the base
+ section name and a digit suffix. */
+ strncpy (templ, name, sizeof (templ) - 1);
+ templ[sizeof (templ) - 1] = '\0';
+ if ((sname = bfd_get_unique_section_name (abfd, templ, count)) == NULL
+ || (n = bfd_make_section_anyway (abfd, sname)) == NULL
+ || (h = bfd_link_hash_lookup (link_info.hash,
+ sname, true, true, false)) == NULL)
{
- unsigned int i;
- char b[6];
- for (i = 0; i < sizeof (b) - 1 && s->name[i]; i++)
- b[i] = s->name[i];
- b[i] = 0;
- sprintf (sname, "%s%d", b, (*count)++);
+ einfo (_("%F%P: clone section failed: %E\n"));
+ /* Silence gcc warnings. einfo exits, so we never reach here. */
+ return NULL;
}
- while (bfd_get_section_by_name (abfd, sname));
- n = bfd_make_section_anyway (abfd, xstrdup (sname));
-
- /* Create a symbol of the same name */
-
- h = bfd_link_hash_lookup (link_info.hash,
- sname, true, true, false);
+ /* Set up section symbol. */
h->type = bfd_link_hash_defined;
h->u.def.value = 0;
- h->u.def.section = n ;
-
+ h->u.def.section = n;
n->flags = s->flags;
n->vma = s->vma;
@@ -348,7 +343,7 @@ clone_section (abfd, s, count)
}
#if TESTING
-static void
+static void
ds (s)
asection *s;
{
@@ -368,6 +363,7 @@ ds (s)
}
printf ("\n");
}
+
dump (s, a1, a2)
char *s;
asection *a1;
@@ -378,7 +374,7 @@ dump (s, a1, a2)
ds (a2);
}
-static void
+static void
sanity_check (abfd)
bfd *abfd;
{
@@ -402,7 +398,7 @@ sanity_check (abfd)
#define dump(a, b, c)
#endif
-static void
+static void
split_sections (abfd, info)
bfd *abfd;
struct bfd_link_info *info;
@@ -410,27 +406,27 @@ split_sections (abfd, info)
asection *original_sec;
int nsecs = abfd->section_count;
sanity_check (abfd);
- /* look through all the original sections */
+ /* Look through all the original sections. */
for (original_sec = abfd->sections;
original_sec && nsecs;
original_sec = original_sec->next, nsecs--)
{
- boolean first = true;
int count = 0;
- int lines = 0;
- int relocs = 0;
- struct bfd_link_order **pp;
+ unsigned int lines = 0;
+ unsigned int relocs = 0;
+ bfd_size_type sec_size = 0;
+ struct bfd_link_order *l;
+ struct bfd_link_order *p;
bfd_vma vma = original_sec->vma;
- bfd_vma shift_offset = 0;
asection *cursor = original_sec;
- /* count up the relocations and line entries to see if
- anything would be too big to fit */
- for (pp = &(cursor->link_order_head); *pp; pp = &((*pp)->next))
+ /* Count up the relocations and line entries to see if anything
+ would be too big to fit. Accumulate section size too. */
+ for (l = NULL, p = cursor->link_order_head; p != NULL; p = l->next)
{
- struct bfd_link_order *p = *pp;
- int thislines = 0;
- int thisrelocs = 0;
+ unsigned int thislines = 0;
+ unsigned int thisrelocs = 0;
+ bfd_size_type thissize = 0;
if (p->type == bfd_indirect_link_order)
{
asection *sec;
@@ -444,77 +440,98 @@ split_sections (abfd, info)
if (info->relocateable)
thisrelocs = sec->reloc_count;
+ if (sec->_cooked_size != 0)
+ thissize = sec->_cooked_size;
+ else
+ thissize = sec->_raw_size;
+
}
else if (info->relocateable
&& (p->type == bfd_section_reloc_link_order
|| p->type == bfd_symbol_reloc_link_order))
thisrelocs++;
- if (! first
- && (thisrelocs + relocs > config.split_by_reloc
- || thislines + lines > config.split_by_reloc
- || config.split_by_file))
+ if (l != NULL
+ && (thisrelocs + relocs >= config.split_by_reloc
+ || thislines + lines >= config.split_by_reloc
+ || thissize + sec_size >= config.split_by_file))
{
- /* create a new section and put this link order and the
- following link orders into it */
- struct bfd_link_order *l = p;
- asection *n = clone_section (abfd, cursor, &count);
- *pp = NULL; /* Snip off link orders from old section */
- n->link_order_head = l; /* attach to new section */
- pp = &n->link_order_head;
+ /* Create a new section and put this link order and the
+ following link orders into it. */
+ bfd_vma shift_offset;
+ asection *n;
- /* change the size of the original section and
- update the vma of the new one */
+ n = clone_section (abfd, cursor, original_sec->name, &count);
- dump ("before snip", cursor, n);
+ /* Attach the link orders to the new section and snip
+ them off from the old section. */
+ n->link_order_head = p;
+ n->link_order_tail = cursor->link_order_tail;
+ cursor->link_order_tail = l;
+ l->next = NULL;
+ l = p;
- n->_raw_size = cursor->_raw_size - l->offset;
- cursor->_raw_size = l->offset;
+ /* Change the size of the original section and
+ update the vma of the new one. */
- vma += cursor->_raw_size;
- n->lma = n->vma = vma;
+ dump ("before snip", cursor, n);
- shift_offset = l->offset;
+ shift_offset = p->offset;
+ if (cursor->_cooked_size != 0)
+ {
+ n->_cooked_size = cursor->_cooked_size - shift_offset;
+ cursor->_cooked_size = shift_offset;
+ }
+ n->_raw_size = cursor->_raw_size - shift_offset;
+ cursor->_raw_size = shift_offset;
- /* run down the chain and change the output section to
- the right one, update the offsets too */
+ vma += shift_offset;
+ n->lma = n->vma = vma;
- while (l)
+ /* Run down the chain and change the output section to
+ the right one, update the offsets too. */
+ do
{
- l->offset -= shift_offset;
- if (l->type == bfd_indirect_link_order)
+ p->offset -= shift_offset;
+ if (p->type == bfd_indirect_link_order)
{
- l->u.indirect.section->output_section = n;
- l->u.indirect.section->output_offset = l->offset;
+ p->u.indirect.section->output_section = n;
+ p->u.indirect.section->output_offset = p->offset;
}
- l = l->next;
+ p = p->next;
}
+ while (p);
+
dump ("after snip", cursor, n);
cursor = n;
relocs = thisrelocs;
lines = thislines;
+ sec_size = thissize;
}
else
{
+ l = p;
relocs += thisrelocs;
lines += thislines;
+ sec_size += thissize;
}
-
- first = false;
}
}
sanity_check (abfd);
}
+
/**********************************************************************/
+
void
ldwrite ()
{
/* Reset error indicator, which can typically something like invalid
- format from openning up the .o files */
+ format from opening up the .o files. */
bfd_set_error (bfd_error_no_error);
lang_for_each_statement (build_link_order);
- if (config.split_by_reloc || config.split_by_file)
+ if (config.split_by_reloc != (unsigned) -1
+ || config.split_by_file != (bfd_size_type) -1)
split_sections (output_bfd, &link_info);
if (!bfd_final_link (output_bfd, &link_info))
{
@@ -523,8 +540,8 @@ ldwrite ()
out. */
if (bfd_get_error () != bfd_error_no_error)
- einfo (_("%F%P: final link failed: %E\n"), output_bfd);
+ einfo (_("%F%P: final link failed: %E\n"));
else
- xexit(1);
+ xexit (1);
}
}
diff --git a/contrib/binutils/ld/lexsup.c b/contrib/binutils/ld/lexsup.c
index e2aac47..f9ef805 100644
--- a/contrib/binutils/ld/lexsup.c
+++ b/contrib/binutils/ld/lexsup.c
@@ -1,5 +1,5 @@
/* Parse options for the GNU linker.
- Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+ Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001
Free Software Foundation, Inc.
This file is part of GLD, the Gnu Linker.
@@ -37,6 +37,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "ldfile.h"
#include "ldver.h"
#include "ldemul.h"
+#include "demangle.h"
#ifndef PATH_SEPARATOR
#if defined (__MSDOS__) || (defined (_WIN32) && ! defined (__CYGWIN32__))
@@ -46,7 +47,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#endif
#endif
-/* Somewhere above, sys/stat.h got included . . . . */
+/* Somewhere above, sys/stat.h got included . . . . */
#if !defined(S_ISDIR) && defined(S_IFDIR)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
@@ -123,6 +124,10 @@ int parsing_defsym = 0;
#define OPTION_NO_UNDEFINED (OPTION_MPC860C0 + 1)
#define OPTION_INIT (OPTION_NO_UNDEFINED + 1)
#define OPTION_FINI (OPTION_INIT + 1)
+#define OPTION_SECTION_START (OPTION_FINI + 1)
+#define OPTION_UNIQUE (OPTION_SECTION_START + 1)
+#define OPTION_TARGET_HELP (OPTION_UNIQUE + 1)
+#define OPTION_ALLOW_SHLIB_UNDEFINED (OPTION_TARGET_HELP + 1)
/* The long options. This structure is used for both the option
parsing and the help text. */
@@ -138,15 +143,24 @@ struct ld_option
/* The documentation string. If this is NULL, this is a synonym for
the previous option. */
const char *doc;
- enum
- {
- /* Use one dash before long option name. */
- ONE_DASH,
- /* Use two dashes before long option name. */
- TWO_DASHES,
- /* Don't mention this option in --help output. */
- NO_HELP
- } control;
+ enum {
+ /* Use one dash before long option name. */
+ ONE_DASH,
+ /* Use two dashes before long option name. */
+ TWO_DASHES,
+ /* Only accept two dashes before the long option name.
+ This is an overloading of the use of this enum, since originally it
+ was only intended to tell the --help display function how to display
+ the long option name. This feature was added in order to resolve
+ the confusion about the -omagic command line switch. Is it setting
+ the output file name to "magic" or is it setting the NMAGIC flag on
+ the output ? It has been decided that it is setting the output file
+ name, and that if you want to set the NMAGIC flag you should use -N
+ or --omagic. */
+ EXACTLY_TWO_DASHES,
+ /* Don't mention this option in --help output. */
+ NO_HELP
+ } control;
};
static const struct ld_option ld_options[] =
@@ -196,13 +210,15 @@ static const struct ld_option ld_options[] =
'n', NULL, N_("Do not page align data"), TWO_DASHES },
{ {"omagic", no_argument, NULL, 'N'},
'N', NULL, N_("Do not page align data, do not make text readonly"),
- TWO_DASHES },
+ EXACTLY_TWO_DASHES },
{ {"output", required_argument, NULL, 'o'},
- 'o', N_("FILE"), N_("Set output file name"), TWO_DASHES },
+ 'o', N_("FILE"), N_("Set output file name"), EXACTLY_TWO_DASHES },
{ {NULL, required_argument, NULL, '\0'},
'O', NULL, N_("Optimize output file"), ONE_DASH },
{ {"Qy", no_argument, NULL, OPTION_IGNORE},
'\0', NULL, N_("Ignored for SVR4 compatibility"), ONE_DASH },
+ { {"emit-relocs", no_argument, NULL, 'q'},
+ 'q', NULL, "Generate relocations in final output", TWO_DASHES },
{ {"relocateable", no_argument, NULL, 'r'},
'r', NULL, N_("Generate relocateable output"), TWO_DASHES },
{ {NULL, no_argument, NULL, '\0'},
@@ -220,6 +236,8 @@ static const struct ld_option ld_options[] =
'T', N_("FILE"), N_("Read linker script"), TWO_DASHES },
{ {"undefined", required_argument, NULL, 'u'},
'u', N_("SYMBOL"), N_("Start with undefined reference to SYMBOL"), TWO_DASHES },
+ { {"unique", optional_argument, NULL, OPTION_UNIQUE},
+ '\0', N_("[=SECTION]"), N_("Don't merge input [SECTION | orphan] sections"), TWO_DASHES },
{ {"Ur", no_argument, NULL, OPTION_UR},
'\0', NULL, N_("Build global constructor/destructor tables"), ONE_DASH },
{ {"version", no_argument, NULL, OPTION_VERSION},
@@ -234,8 +252,6 @@ static const struct ld_option ld_options[] =
'y', N_("SYMBOL"), N_("Trace mentions of SYMBOL"), TWO_DASHES },
{ {NULL, required_argument, NULL, '\0'},
'Y', N_("PATH"), N_("Default search path for Solaris compatibility"), ONE_DASH },
- { {NULL, required_argument, NULL, '\0'},
- 'z', N_("KEYWORD"), N_("Ignored for Solaris compatibility"), ONE_DASH },
{ {"start-group", no_argument, NULL, '('},
'(', NULL, N_("Start a group"), TWO_DASHES },
{ {"end-group", no_argument, NULL, ')'},
@@ -267,8 +283,8 @@ static const struct ld_option ld_options[] =
'\0', NULL, N_("Output cross reference table"), TWO_DASHES },
{ {"defsym", required_argument, NULL, OPTION_DEFSYM},
'\0', N_("SYMBOL=EXPRESSION"), N_("Define a symbol"), TWO_DASHES },
- { {"demangle", no_argument, NULL, OPTION_DEMANGLE},
- '\0', NULL, N_("Demangle symbol names"), TWO_DASHES },
+ { {"demangle", optional_argument, NULL, OPTION_DEMANGLE},
+ '\0', N_("[=STYLE]"), N_("Demangle symbol names [using STYLE]"), TWO_DASHES },
{ {"dynamic-linker", required_argument, NULL, OPTION_DYNAMIC_LINKER},
'\0', N_("PROGRAM"), N_("Set the dynamic linker to use"), TWO_DASHES },
{ {"embedded-relocs", no_argument, NULL, OPTION_EMBEDDED_RELOCS},
@@ -295,6 +311,8 @@ static const struct ld_option ld_options[] =
'\0', NULL, N_("Use less memory and more disk I/O"), TWO_DASHES },
{ {"no-undefined", no_argument, NULL, OPTION_NO_UNDEFINED},
'\0', NULL, N_("Allow no undefined symbols"), TWO_DASHES },
+ { {"allow-shlib-undefined", no_argument, NULL, OPTION_ALLOW_SHLIB_UNDEFINED},
+ '\0', NULL, N_("Allow undefined symbols in shared objects"), TWO_DASHES },
{ {"no-warn-mismatch", no_argument, NULL, OPTION_NO_WARN_MISMATCH},
'\0', NULL, N_("Don't warn about mismatched input files"), TWO_DASHES},
{ {"no-whole-archive", no_argument, NULL, OPTION_NO_WHOLE_ARCHIVE},
@@ -304,7 +322,7 @@ static const struct ld_option ld_options[] =
{ {"noinhibit_exec", no_argument, NULL, OPTION_NOINHIBIT_EXEC},
'\0', NULL, NULL, NO_HELP },
{ {"oformat", required_argument, NULL, OPTION_OFORMAT},
- '\0', N_("TARGET"), N_("Specify target of output file"), TWO_DASHES },
+ '\0', N_("TARGET"), N_("Specify target of output file"), EXACTLY_TWO_DASHES },
{ {"qmagic", no_argument, NULL, OPTION_IGNORE},
'\0', NULL, N_("Ignored for Linux compatibility"), ONE_DASH },
{ {"relax", no_argument, NULL, OPTION_RELAX},
@@ -324,16 +342,20 @@ static const struct ld_option ld_options[] =
'\0', NULL, N_("Sort common symbols by size"), TWO_DASHES },
{ {"sort_common", no_argument, NULL, OPTION_SORT_COMMON},
'\0', NULL, NULL, NO_HELP },
- { {"split-by-file", no_argument, NULL, OPTION_SPLIT_BY_FILE},
- '\0', NULL, N_("Split output sections for each file"), TWO_DASHES },
- { {"split-by-reloc", required_argument, NULL, OPTION_SPLIT_BY_RELOC},
- '\0', N_("COUNT"), N_("Split output sections every COUNT relocs"), TWO_DASHES },
+ { {"split-by-file", optional_argument, NULL, OPTION_SPLIT_BY_FILE},
+ '\0', N_("[=SIZE]"), N_("Split output sections every SIZE octets"), TWO_DASHES },
+ { {"split-by-reloc", optional_argument, NULL, OPTION_SPLIT_BY_RELOC},
+ '\0', N_("[=COUNT]"), N_("Split output sections every COUNT relocs"), TWO_DASHES },
{ {"stats", no_argument, NULL, OPTION_STATS},
'\0', NULL, N_("Print memory usage statistics"), TWO_DASHES },
+ { {"target-help", no_argument, NULL, OPTION_TARGET_HELP},
+ '\0', NULL, N_("Display target specific options"), TWO_DASHES },
{ {"task-link", required_argument, NULL, OPTION_TASK_LINK},
'\0', N_("SYMBOL"), N_("Do task level linking"), TWO_DASHES },
{ {"traditional-format", no_argument, NULL, OPTION_TRADITIONAL_FORMAT},
'\0', NULL, N_("Use same format as native linker"), TWO_DASHES },
+ { {"section-start", required_argument, NULL, OPTION_SECTION_START},
+ '\0', N_("SECTION=ADDRESS"), N_("Set address of named section"), TWO_DASHES },
{ {"Tbss", required_argument, NULL, OPTION_TBSS},
'\0', N_("ADDRESS"), N_("Set address of .bss section"), ONE_DASH },
{ {"Tdata", required_argument, NULL, OPTION_TDATA},
@@ -370,7 +392,7 @@ static const struct ld_option ld_options[] =
'\0', N_("[=WORDS]"), N_("Modify problematic branches in last WORDS (1-10,\n\t\t\t\tdefault 5) words of a page"), TWO_DASHES }
};
-#define OPTION_COUNT ((int) (sizeof ld_options / sizeof ld_options[0]))
+#define OPTION_COUNT ARRAY_SIZE (ld_options)
/* Test STRING for containing a string of digits that form a number
between MIN and MAX. The return value is the number or ERR. */
@@ -401,14 +423,16 @@ is_num (string, min, max, err)
void
parse_args (argc, argv)
- int argc;
+ unsigned argc;
char **argv;
{
- int i, is, il;
+ unsigned i;
+ int is, il, irl;
int ingroup = 0;
char *default_dirlist = NULL;
char shortopts[OPTION_COUNT * 3 + 2];
struct option longopts[OPTION_COUNT + 1];
+ struct option really_longopts[OPTION_COUNT + 1];
int last_optind;
/* Starting the short option string with '-' is for programs that
@@ -418,6 +442,7 @@ parse_args (argc, argv)
shortopts[0] = '-';
is = 1;
il = 0;
+ irl = 0;
for (i = 0; i < OPTION_COUNT; i++)
{
if (ld_options[i].shortopt != '\0')
@@ -438,12 +463,21 @@ parse_args (argc, argv)
}
if (ld_options[i].opt.name != NULL)
{
- longopts[il] = ld_options[i].opt;
- ++il;
+ if (ld_options[i].control == EXACTLY_TWO_DASHES)
+ {
+ really_longopts[irl] = ld_options[i].opt;
+ ++irl;
+ }
+ else
+ {
+ longopts[il] = ld_options[i].opt;
+ ++il;
+ }
}
}
shortopts[is] = '\0';
longopts[il].name = NULL;
+ really_longopts[irl].name = NULL;
/* The -G option is ambiguous on different platforms. Sometimes it
specifies the largest data size to put into the small data
@@ -509,12 +543,22 @@ parse_args (argc, argv)
/* getopt_long_only is like getopt_long, but '-' as well as '--'
can indicate a long option. */
+ opterr = 0;
optc = getopt_long_only (argc, argv, shortopts, longopts, &longind);
+ if (optc == '?')
+ {
+ --optind;
+ optc = getopt_long (argc, argv, shortopts, really_longopts, &longind);
+ }
if (optc == -1)
break;
+
switch (optc)
{
+ case '?':
+ fprintf (stderr, _("%s: unrecognized option '%s'\n"),
+ program_name, argv[optind - 1]);
default:
fprintf (stderr,
_("%s: use the --help option for usage information\n"),
@@ -587,6 +631,17 @@ parse_args (argc, argv)
break;
case OPTION_DEMANGLE:
demangling = true;
+ if (optarg != NULL)
+ {
+ enum demangling_styles style;
+
+ style = cplus_demangle_name_to_style (optarg);
+ if (style == unknown_demangling)
+ einfo (_("%F%P: unknown demangling style `%s'"),
+ optarg);
+
+ cplus_demangle_set_style (style);
+ }
break;
case OPTION_DYNAMIC_LINKER:
command_line.interpreter = optarg;
@@ -691,6 +746,9 @@ parse_args (argc, argv)
case OPTION_NO_UNDEFINED:
link_info.no_undefined = true;
break;
+ case OPTION_ALLOW_SHLIB_UNDEFINED:
+ link_info.allow_shlib_undefined = true;
+ break;
case OPTION_NO_WARN_MISMATCH:
command_line.warn_mismatch = false;
break;
@@ -711,11 +769,14 @@ parse_args (argc, argv)
link_info.optimize = strtoul (optarg, NULL, 0) ? true : false;
break;
case 'o':
- lang_add_output (optarg, 0);
+ lang_add_output (optarg, 0);
break;
case OPTION_OFORMAT:
lang_add_output_format (optarg, (char *) NULL, (char *) NULL, 0);
break;
+ case 'q':
+ link_info.emitrelocations = true;
+ break;
case 'i':
case 'r':
link_info.relocateable = true;
@@ -836,6 +897,48 @@ parse_args (argc, argv)
parser_input = input_script;
yyparse ();
break;
+ case OPTION_SECTION_START:
+ {
+ char *optarg2;
+ char *sec_name;
+ int len;
+
+ /* Check for <something>=<somthing>... */
+ optarg2 = strchr (optarg, '=');
+ if (optarg2 == NULL)
+ {
+ fprintf (stderr,
+ _("%s: Invalid argument to option \"--section-start\"\n"),
+ program_name);
+ xexit (1);
+ }
+
+ optarg2++;
+
+ /* So far so good. Are all the args present? */
+ if ((*optarg == '\0') || (*optarg2 == '\0'))
+ {
+ fprintf (stderr,
+ _("%s: Missing argument(s) to option \"--section-start\"\n"),
+ program_name);
+ xexit (1);
+ }
+
+ /* We must copy the section name as set_section_start
+ doesn't do it for us. */
+ len = optarg2 - optarg;
+ sec_name = xmalloc (len);
+ memcpy (sec_name, optarg, len - 1);
+ sec_name[len - 1] = 0;
+
+ /* Then set it... */
+ set_section_start (sec_name, optarg2);
+ }
+ break;
+ case OPTION_TARGET_HELP:
+ /* Mention any target specific options. */
+ ldemul_list_emulation_options (stdout);
+ exit (0);
case OPTION_TBSS:
set_section_start (".bss", optarg);
break;
@@ -861,6 +964,12 @@ parse_args (argc, argv)
case 'u':
ldlang_add_undef (optarg);
break;
+ case OPTION_UNIQUE:
+ if (optarg != NULL)
+ lang_add_unique (optarg);
+ else
+ config.unique_orphan_sections = true;
+ break;
case OPTION_VERBOSE:
ldversion (1);
version_printed = true;
@@ -877,15 +986,15 @@ parse_args (argc, argv)
case OPTION_VERSION:
/* This output is intended to follow the GNU standards document. */
printf ("GNU ld %s\n", ld_program_version);
- printf (_("Copyright 2000 Free Software Foundation, Inc.\n"));
+ printf (_("Copyright 2001 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"));
{
ld_emulation_xfer_type **ptr = ld_emulations;
-
+
printf (_(" Supported emulations:\n"));
- while (*ptr)
+ while (*ptr)
{
printf (" %s\n", (*ptr)->emulation_name);
ptr++;
@@ -948,17 +1057,18 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
case 'y':
add_ysym (optarg);
break;
- case 'z':
- /* We accept and ignore this option for Solaris
- compatibility. Actually, on Solaris, optarg is not
- ignored. Someday we should handle it correctly. FIXME. */
- break;
case OPTION_SPLIT_BY_RELOC:
- config.split_by_reloc = strtoul (optarg, NULL, 0);
- break;
+ if (optarg != NULL)
+ config.split_by_reloc = strtoul (optarg, NULL, 0);
+ else
+ config.split_by_reloc = 32768;
+ break;
case OPTION_SPLIT_BY_FILE:
- config.split_by_file = true;
- break;
+ if (optarg != NULL)
+ config.split_by_file = bfd_scan_vma (optarg, NULL, 0);
+ else
+ config.split_by_file = 1;
+ break;
case OPTION_CHECK_SECTIONS:
command_line.check_section_addresses = true;
break;
@@ -987,29 +1097,29 @@ the GNU General Public License. This program has absolutely no warranty.\n"));
lang_leave_group ();
ingroup = 0;
break;
- case OPTION_MPC860C0:
- link_info.mpc860c0 = 20; /* default value (in bytes) */
- if (optarg)
- {
- unsigned words;
+ case OPTION_MPC860C0:
+ link_info.mpc860c0 = 20; /* default value (in bytes) */
+ if (optarg)
+ {
+ unsigned words;
- words = is_num (optarg, 1, 10, 0);
- if (words == 0)
- {
- fprintf (stderr,
+ words = is_num (optarg, 1, 10, 0);
+ if (words == 0)
+ {
+ fprintf (stderr,
_("%s: Invalid argument to option \"mpc860c0\"\n"),
program_name);
- xexit (1);
- }
- link_info.mpc860c0 = words * 4; /* convert words to bytes */
- }
- command_line.relax = true;
- break;
+ xexit (1);
+ }
+ link_info.mpc860c0 = words * 4; /* convert words to bytes */
+ }
+ command_line.relax = true;
+ break;
case OPTION_INIT:
link_info.init_function = optarg;
break;
-
+
case OPTION_FINI:
link_info.fini_function = optarg;
break;
@@ -1062,7 +1172,7 @@ set_section_start (sect, valstr)
static void
help ()
{
- int i;
+ unsigned i;
const char **targets, **pp;
printf (_("Usage: %s [options] file...\n"), program_name);
@@ -1074,7 +1184,7 @@ help ()
{
boolean comma;
int len;
- int j;
+ unsigned j;
printf (" ");
@@ -1111,13 +1221,17 @@ help ()
if (ld_options[j].opt.name != NULL
&& ld_options[j].control != NO_HELP)
{
+ int two_dashes =
+ (ld_options[j].control == TWO_DASHES
+ || ld_options[j].control == EXACTLY_TWO_DASHES);
+
printf ("%s-%s%s",
comma ? ", " : "",
- ld_options[j].control == TWO_DASHES ? "-" : "",
+ two_dashes ? "-" : "",
ld_options[j].opt.name);
len += ((comma ? 2 : 0)
+ 1
- + (ld_options[j].control == TWO_DASHES ? 1 : 0)
+ + (two_dashes ? 1 : 0)
+ strlen (ld_options[j].opt.name));
if (ld_options[j].arg != NULL)
{
diff --git a/contrib/binutils/ld/mri.c b/contrib/binutils/ld/mri.c
index d39186c..d53eccb 100644
--- a/contrib/binutils/ld/mri.c
+++ b/contrib/binutils/ld/mri.c
@@ -1,5 +1,6 @@
/* mri.c -- handle MRI style linker scripts
- Copyright (C) 1991, 92, 93, 94, 95, 96, 1997, 1998 Free Software Foundation, Inc.
+ Copyright 1991, 92, 93, 94, 95, 96, 1997, 1998, 2000
+ Free Software Foundation, Inc.
This file is part of GLD, the Gnu Linker.
@@ -16,19 +17,15 @@ 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. */
+02111-1307, USA.
+ This bit does the tree decoration when MRI style link scripts
+ are parsed.
-/* This bit does the tree decoration when MRI style link scripts are parsed */
-
-/*
- contributed by Steve Chamberlain
- sac@cygnus.com
-
-*/
+ Contributed by Steve Chamberlain <sac@cygnus.com>. */
#include "bfd.h"
-#include "sysdep.h"
+#include "sysdep.h"
#include "ld.h"
#include "ldexp.h"
#include "ldlang.h"
@@ -45,7 +42,7 @@ struct section_name_struct {
etree_type *align;
etree_type *subalign;
int ok_to_load;
-} ;
+};
unsigned int symbol_truncate = 10000;
struct section_name_struct *order;
@@ -68,21 +65,19 @@ lookup (name, list)
CONST char *name;
struct section_name_struct **list;
{
-
struct section_name_struct **ptr = list;
- while (*ptr)
- {
- if (strcmp(name, (*ptr)->name) == 0) {
- /* If this is a match, delete it, we only keep the last instance
- of any name */
- *ptr = (*ptr)->next;
- }
- else {
- ptr = &((*ptr)->next);
+
+ while (*ptr)
+ {
+ if (strcmp (name, (*ptr)->name) == 0)
+ /* If this is a match, delete it, we only keep the last instance
+ of any name. */
+ *ptr = (*ptr)->next;
+ else
+ ptr = &((*ptr)->next);
}
- }
- *ptr = (struct section_name_struct *)xmalloc(sizeof(struct section_name_struct));
+ *ptr = (struct section_name_struct *) xmalloc (sizeof (struct section_name_struct));
return ptr;
}
@@ -95,36 +90,35 @@ mri_add_to_list (list, name, vma, zalias, align, subalign)
etree_type *align;
etree_type *subalign;
{
- struct section_name_struct **ptr = lookup(name,list);
+ struct section_name_struct **ptr = lookup (name, list);
+
(*ptr)->name = name;
(*ptr)->vma = vma;
- (*ptr)->next = (struct section_name_struct *)NULL;
+ (*ptr)->next = (struct section_name_struct *) NULL;
(*ptr)->ok_to_load = 0;
(*ptr)->alias = zalias;
(*ptr)->align = align;
(*ptr)->subalign = subalign;
}
-
void
mri_output_section (name, vma)
CONST char *name;
etree_type *vma;
{
- mri_add_to_list(&address, name, vma, 0,0,0);
+ mri_add_to_list (&address, name, vma, 0, 0, 0);
}
-/* if any ABSOLUTE <name> are in the script, only load those files
-marked thus */
+/* If any ABSOLUTE <name> are in the script, only load those files
+ marked thus. */
void
mri_only_load (name)
CONST char *name;
{
- mri_add_to_list(&only_load, name, 0, 0,0,0);
+ mri_add_to_list (&only_load, name, 0, 0, 0, 0);
}
-
void
mri_base (exp)
etree_type *exp;
@@ -137,240 +131,221 @@ static int done_tree = 0;
void
mri_draw_tree ()
{
- if (done_tree) return;
+ if (done_tree)
+ return;
- /* We don't bother with memory regions. */
-#if 0
- /* Create the regions */
- {
- lang_memory_region_type *r;
- r = lang_memory_region_lookup("long");
- r->current = r->origin = exp_get_vma(base, (bfd_vma)0, "origin",
- lang_first_phase_enum);
- r->length = (bfd_size_type) exp_get_vma(0, (bfd_vma) ~((bfd_size_type)0),
- "length", lang_first_phase_enum);
- }
-#endif
-
- /* Now build the statements for the ldlang machine */
+#if 0 /* We don't bother with memory regions. */
+ /* Create the regions. */
+ {
+ lang_memory_region_type *r;
+ r = lang_memory_region_lookup("long");
+ r->current = r->origin = exp_get_vma (base, (bfd_vma)0, "origin",
+ lang_first_phase_enum);
+ r->length = (bfd_size_type) exp_get_vma (0, (bfd_vma) ~((bfd_size_type)0),
+ "length", lang_first_phase_enum);
+ }
+#endif
- /* Attatch the addresses of any which have addresses, and add the
- ones not mentioned */
- if (address != (struct section_name_struct *)NULL) {
- struct section_name_struct *alist;
- struct section_name_struct *olist;
- if (order == (struct section_name_struct *)NULL) {
- order = address;
- }
+ /* Now build the statements for the ldlang machine. */
- for (alist = address;
- alist != (struct section_name_struct*)NULL;
- alist = alist->next)
+ /* Attatch the addresses of any which have addresses,
+ and add the ones not mentioned. */
+ if (address != (struct section_name_struct *) NULL)
{
- int done = 0;
- for (olist = order;
- done == 0 &&
- olist != (struct section_name_struct *)NULL;
- olist = olist->next)
- {
- if (strcmp(alist->name, olist->name) == 0)
+ struct section_name_struct *alist;
+ struct section_name_struct *olist;
+
+ if (order == (struct section_name_struct *) NULL)
+ order = address;
+
+ for (alist = address;
+ alist != (struct section_name_struct *) NULL;
+ alist = alist->next)
{
- olist->vma = alist->vma;
- done = 1;
+ int done = 0;
+
+ for (olist = order;
+ done == 0 && olist != (struct section_name_struct *) NULL;
+ olist = olist->next)
+ {
+ if (strcmp (alist->name, olist->name) == 0)
+ {
+ olist->vma = alist->vma;
+ done = 1;
+ }
+ }
+
+ if (!done)
+ {
+ /* Add this onto end of order list. */
+ mri_add_to_list (&order, alist->name, alist->vma, 0, 0, 0);
+ }
}
- }
- if (!done) {
- /* add this onto end of order list */
- mri_add_to_list(&order, alist->name, alist->vma, 0,0,0);
- }
-
}
- }
-
/* If we're only supposed to load a subset of them in, then prune
the list. */
-
- if (only_load != (struct section_name_struct *)NULL)
- {
- struct section_name_struct *ptr1;
- struct section_name_struct *ptr2;
- if (order == (struct section_name_struct*)NULL)
- order = only_load;
-
- /* See if this name is in the list, if it is then we can load it
- */
- for (ptr1 = only_load; ptr1; ptr1 = ptr1->next)
+ if (only_load != (struct section_name_struct *) NULL)
{
- for (ptr2= order; ptr2; ptr2=ptr2->next)
- {
- if (strcmp(ptr2->name, ptr1->name)==0) {
- ptr2->ok_to_load = 1;
- }
- }
- }
- }
- else
- {
- /* No only load list, so everything is ok to load */
- struct section_name_struct *ptr;
- for (ptr = order; ptr; ptr=ptr->next) {
- ptr->ok_to_load = 1;
- }
- }
-
+ struct section_name_struct *ptr1;
+ struct section_name_struct *ptr2;
+ if (order == (struct section_name_struct *) NULL)
+ order = only_load;
- /* Create the order of sections to load */
- if (order != (struct section_name_struct *)NULL)
- {
- /* Been told to output the sections in a certain order */
- struct section_name_struct *p = order;
- while (p)
+ /* See if this name is in the list, if it is then we can load it. */
+ for (ptr1 = only_load; ptr1; ptr1 = ptr1->next)
+ for (ptr2 = order; ptr2; ptr2 = ptr2->next)
+ if (strcmp (ptr2->name, ptr1->name) == 0)
+ ptr2->ok_to_load = 1;
+ }
+ else
{
- struct section_name_struct *aptr;
- etree_type *align = 0;
- etree_type *subalign = 0;
- /* See if an alignment has been specified */
-
- for (aptr = alignment; aptr; aptr= aptr->next)
- {
- if (strcmp(aptr->name, p->name)==0) {
- align = aptr->align;
- }
- }
+ /* No only load list, so everything is ok to load. */
+ struct section_name_struct *ptr;
- for (aptr = subalignment; aptr; aptr= aptr->next)
- {
- if (strcmp(aptr->name, p->name)==0) {
- subalign = aptr->subalign;
- }
- }
-
- if (base == 0) {
- base = p->vma ? p->vma :exp_nameop(NAME, ".");
- }
- lang_enter_output_section_statement (p->name, base,
- p->ok_to_load ? 0 : noload_section,
- 1, align, subalign,
- (etree_type *) NULL);
- base = 0;
- lang_add_wild (p->name, false, (char *)NULL, false, false, NULL);
- /* If there is an alias for this section, add it too */
- for (aptr = alias; aptr; aptr = aptr->next) {
-
- if (strcmp(aptr->alias, p->name)== 0) {
- lang_add_wild (aptr->name, false, (char *)NULL, false, false, NULL);
- }
- }
+ for (ptr = order; ptr; ptr = ptr->next)
+ ptr->ok_to_load = 1;
+ }
- lang_leave_output_section_statement
- (0, "*default*", (struct lang_output_section_phdr_list *) NULL,
- "*default*");
+ /* Create the order of sections to load. */
+ if (order != (struct section_name_struct *) NULL)
+ {
+ /* Been told to output the sections in a certain order. */
+ struct section_name_struct *p = order;
- p = p->next;
+ while (p)
+ {
+ struct section_name_struct *aptr;
+ etree_type *align = 0;
+ etree_type *subalign = 0;
+
+ /* See if an alignment has been specified. */
+ for (aptr = alignment; aptr; aptr = aptr->next)
+ if (strcmp (aptr->name, p->name) == 0)
+ align = aptr->align;
+
+ for (aptr = subalignment; aptr; aptr = aptr->next)
+ if (strcmp (aptr->name, p->name) == 0)
+ subalign = aptr->subalign;
+
+ if (base == 0)
+ base = p->vma ? p->vma : exp_nameop (NAME, ".");
+
+ lang_enter_output_section_statement (p->name, base,
+ p->ok_to_load ? 0 : noload_section,
+ 1, align, subalign,
+ (etree_type *) NULL);
+ base = 0;
+ lang_add_wild (p->name, false, (char *) NULL, false, false, NULL);
+
+ /* If there is an alias for this section, add it too. */
+ for (aptr = alias; aptr; aptr = aptr->next)
+ if (strcmp (aptr->alias, p->name) == 0)
+ lang_add_wild (aptr->name, false, (char *) NULL, false, false, NULL);
+
+ lang_leave_output_section_statement
+ (0, "*default*", (struct lang_output_section_phdr_list *) NULL,
+ "*default*");
+
+ p = p->next;
+ }
}
- }
-
done_tree = 1;
-
}
+
void
mri_load (name)
CONST char *name;
{
base = 0;
- lang_add_input_file(name,
- lang_input_file_is_file_enum, (char *)NULL);
- /* lang_leave_output_section_statement(0,"*default*");*/
+ lang_add_input_file (name,
+ lang_input_file_is_file_enum, (char *) NULL);
+#if 0
+ lang_leave_output_section_statement (0, "*default*");
+#endif
}
-
void
mri_order (name)
CONST char *name;
{
- mri_add_to_list(&order, name, 0, 0,0,0);
+ mri_add_to_list (&order, name, 0, 0, 0, 0);
}
-void
+void
mri_alias (want, is, isn)
CONST char *want;
CONST char *is;
int isn;
{
- if (!is) {
- /* Some sections are digits - */
- char buf[20];
- sprintf(buf, "%d", isn);
- is = xstrdup (buf);
- if (is == NULL)
- abort ();
- }
- mri_add_to_list(&alias, is, 0, want,0,0);
+ if (!is)
+ {
+ char buf[20];
-}
+ /* Some sections are digits. */
+ sprintf (buf, "%d", isn);
+ is = xstrdup (buf);
+
+ if (is == NULL)
+ abort ();
+ }
+
+ mri_add_to_list (&alias, is, 0, want, 0, 0);
+}
-void
+void
mri_name (name)
CONST char *name;
{
- lang_add_output(name, 1);
-
+ lang_add_output (name, 1);
}
-
void
mri_format (name)
CONST char *name;
{
- if (strcmp(name, "S") == 0)
- {
- lang_add_output_format("srec", (char *) NULL, (char *) NULL, 1);
- }
- else if (strcmp(name, "IEEE") == 0)
- {
- lang_add_output_format("ieee", (char *) NULL, (char *) NULL, 1);
- }
- else if (strcmp(name, "COFF") == 0)
- {
- lang_add_output_format("coff-m68k", (char *) NULL, (char *) NULL, 1);
- }
- else {
- einfo(_("%P%F: unknown format type %s\n"), name);
- }
-}
+ if (strcmp (name, "S") == 0)
+ lang_add_output_format ("srec", (char *) NULL, (char *) NULL, 1);
+
+ else if (strcmp (name, "IEEE") == 0)
+ lang_add_output_format ("ieee", (char *) NULL, (char *) NULL, 1);
+ else if (strcmp (name, "COFF") == 0)
+ lang_add_output_format ("coff-m68k", (char *) NULL, (char *) NULL, 1);
+
+ else
+ einfo (_("%P%F: unknown format type %s\n"), name);
+}
void
mri_public (name, exp)
CONST char *name;
etree_type *exp;
{
- lang_add_assignment(exp_assop('=', name, exp));
+ lang_add_assignment (exp_assop ('=', name, exp));
}
-void
+void
mri_align (name, exp)
CONST char *name;
etree_type *exp;
{
- mri_add_to_list(&alignment, name,0,0,exp,0);
+ mri_add_to_list (&alignment, name, 0, 0, exp, 0);
}
-void
+void
mri_alignmod (name, exp)
CONST char *name;
etree_type *exp;
{
- mri_add_to_list(&subalignment, name,0,0,0,exp);
+ mri_add_to_list (&subalignment, name, 0, 0, 0, exp);
}
-
-void
+void
mri_truncate (exp)
unsigned int exp;
{
diff --git a/contrib/binutils/ld/pe-dll.c b/contrib/binutils/ld/pe-dll.c
index 6b8b1af..2553327 100644
--- a/contrib/binutils/ld/pe-dll.c
+++ b/contrib/binutils/ld/pe-dll.c
@@ -34,6 +34,7 @@
#include "ldmisc.h"
#include "ldgram.h"
#include "ldmain.h"
+#include "ldfile.h"
#include "ldemul.h"
#include "coff/internal.h"
#include "../bfd/libcoff.h"
@@ -135,10 +136,11 @@ pe_dll_id_target (target)
const char *target;
{
int i;
- for (i=0; pe_detail_list[i].target_name; i++)
- if (strcmp (pe_detail_list[i].target_name, target) == 0)
+ for (i = 0; pe_detail_list[i].target_name; i++)
+ if (strcmp (pe_detail_list[i].target_name, target) == 0
+ || strcmp (pe_detail_list[i].object_target, target) == 0)
{
- pe_details = pe_detail_list+i;
+ pe_details = pe_detail_list + i;
return;
}
einfo (_("%XUnsupported PEI architecture: %s\n"), target);
@@ -184,7 +186,7 @@ pe_export_sort (va, vb)
/* These correspond to the entries in pe_def_file->exports[]. I use
exported_symbol_sections[i] to tag whether or not the symbol was
- defined, since we can't export symbols we don't have. */
+ defined, since we can't export symbols we don't have. */
static bfd_vma *exported_symbol_offsets;
static struct sec **exported_symbol_sections;
@@ -197,12 +199,11 @@ static const char *dll_name;
static int min_ordinal, max_ordinal;
static int *exported_symbols;
-typedef struct exclude_list_struct
- {
- char *string;
- struct exclude_list_struct *next;
- }
-exclude_list_struct;
+typedef struct exclude_list_struct {
+ char *string;
+ struct exclude_list_struct *next;
+} exclude_list_struct;
+
static struct exclude_list_struct *excludes = 0;
void
@@ -264,13 +265,13 @@ process_def_file (abfd, info)
struct bfd_link_hash_entry *blhe;
bfd *b;
struct sec *s;
- def_file_export *e=0;
+ def_file_export *e = 0;
if (!pe_def_file)
pe_def_file = def_file_empty ();
/* First, run around to all the objects looking for the .drectve
- sections, and push those into the def file too */
+ sections, and push those into the def file too. */
for (b = info->input_bfds; b; b = b->link_next)
{
@@ -285,7 +286,7 @@ process_def_file (abfd, info)
}
}
- /* Now, maybe export everything else the default way */
+ /* Now, maybe export everything else the default way. */
if (pe_dll_export_everything || pe_def_file->num_exports == 0)
{
@@ -300,14 +301,21 @@ process_def_file (abfd, info)
for (j = 0; j < nsyms; j++)
{
- if ((symbols[j]->flags & (BSF_FUNCTION | BSF_GLOBAL))
- == (BSF_FUNCTION | BSF_GLOBAL))
+ /* We should export symbols which are either global or not
+ anything at all. (.bss data is the latter) */
+ if ((symbols[j]->flags & BSF_GLOBAL)
+ || (symbols[j]->flags == BSF_NO_FLAGS))
{
const char *sn = symbols[j]->name;
if (*sn == '_')
sn++;
if (auto_export (pe_def_file, sn))
- def_file_add_export (pe_def_file, sn, 0, -1);
+ {
+ def_file_export *p;
+ p=def_file_add_export (pe_def_file, sn, 0, -1);
+ /* Fill data flag properly, from dlltool.c */
+ p->flag_data = !(symbols[j]->flags & BSF_FUNCTION);
+ }
}
}
}
@@ -316,7 +324,7 @@ process_def_file (abfd, info)
#undef NE
#define NE pe_def_file->num_exports
- /* Canonicalize the export list */
+ /* Canonicalize the export list. */
if (pe_dll_kill_ats)
{
@@ -324,8 +332,9 @@ process_def_file (abfd, info)
{
if (strchr (pe_def_file->exports[i].name, '@'))
{
- /* This will preserve internal_name, which may have been pointing
- to the same memory as name, or might not have */
+ /* This will preserve internal_name, which may have been
+ pointing to the same memory as name, or might not
+ have. */
char *tmp = xstrdup (pe_def_file->exports[i].name);
*(strchr (tmp, '@')) = 0;
pe_def_file->exports[i].name = tmp;
@@ -350,7 +359,8 @@ process_def_file (abfd, info)
}
}
- e = pe_def_file->exports; /* convenience, but watch out for it changing */
+ /* Convenience, but watch out for it changing. */
+ e = pe_def_file->exports;
exported_symbol_offsets = (bfd_vma *) xmalloc (NE * sizeof (bfd_vma));
exported_symbol_sections = (struct sec **) xmalloc (NE * sizeof (struct sec *));
@@ -374,7 +384,7 @@ process_def_file (abfd, info)
{
if (pe_dll_warn_dup_exports)
/* xgettext:c-format */
- einfo (_("%XError, duplicate EXPORT with oridinals: %s (%d vs %d)\n"),
+ einfo (_("%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n"),
e[j - 1].name, e[j - 1].ordinal, e[i].ordinal);
}
else
@@ -384,7 +394,7 @@ process_def_file (abfd, info)
einfo (_("Warning, duplicate EXPORT: %s\n"),
e[j - 1].name);
}
- if (e[i].ordinal)
+ if (e[i].ordinal != -1)
e[j - 1].ordinal = e[i].ordinal;
e[j - 1].flag_private |= e[i].flag_private;
e[j - 1].flag_constant |= e[i].flag_constant;
@@ -416,7 +426,7 @@ process_def_file (abfd, info)
false, false, true);
if (blhe
- && (blhe->type == bfd_link_hash_defined
+ && (blhe->type == bfd_link_hash_defined
|| (blhe->type == bfd_link_hash_common)))
{
count_exported++;
@@ -426,11 +436,11 @@ process_def_file (abfd, info)
/* Only fill in the sections. The actual offsets are computed
in fill_exported_offsets() after common symbols are laid
out. */
- if (blhe->type == bfd_link_hash_defined)
+ if (blhe->type == bfd_link_hash_defined)
exported_symbol_sections[i] = blhe->u.def.section;
else
exported_symbol_sections[i] = blhe->u.c.p->section;
-
+
if (pe_def_file->exports[i].ordinal != -1)
{
if (max_ordinal < pe_def_file->exports[i].ordinal)
@@ -537,7 +547,7 @@ generate_edata (abfd, info)
const char *dlnp;
/* First, we need to know how many exported symbols there are,
- and what the range of ordinals is. */
+ and what the range of ordinals is. */
if (pe_def_file->name)
{
@@ -569,7 +579,7 @@ generate_edata (abfd, info)
for (i = 0; i < export_table_size; i++)
exported_symbols[i] = -1;
- /* Now we need to assign ordinals to those that don't have them */
+ /* Now we need to assign ordinals to those that don't have them. */
for (i = 0; i < NE; i++)
{
if (exported_symbol_sections[i])
@@ -581,7 +591,7 @@ generate_edata (abfd, info)
if (pi != -1)
{
/* xgettext:c-format */
- einfo (_("%XError, oridinal used twice: %d (%s vs %s)\n"),
+ einfo (_("%XError, ordinal used twice: %d (%s vs %s)\n"),
pe_def_file->exports[i].ordinal,
pe_def_file->exports[i].name,
pe_def_file->exports[pi].name);
@@ -603,7 +613,7 @@ generate_edata (abfd, info)
pe_def_file->exports[i].ordinal = next_ordinal;
}
- /* OK, now we can allocate some memory */
+ /* OK, now we can allocate some memory. */
edata_sz = (40 /* directory */
+ 4 * export_table_size /* addresses */
@@ -622,7 +632,7 @@ fill_exported_offsets (abfd, info)
{
int i;
struct bfd_link_hash_entry *blhe;
-
+
for (i = 0; i < pe_def_file->num_exports; i++)
{
char *name = (char *) xmalloc (strlen (pe_def_file->exports[i].internal_name) + 2);
@@ -641,7 +651,7 @@ fill_exported_offsets (abfd, info)
if (blhe && (blhe->type == bfd_link_hash_defined))
{
exported_symbol_offsets[i] = blhe->u.def.value;
- }
+ }
free (name);
}
}
@@ -663,7 +673,7 @@ fill_edata (abfd, info)
edata_d = (unsigned char *) xmalloc (edata_sz);
- /* Note use of array pointer math here */
+ /* Note use of array pointer math here. */
edirectory = edata_d;
eaddresses = (unsigned long *) (edata_d + 40);
enameptrs = eaddresses + export_table_size;
@@ -672,7 +682,7 @@ fill_edata (abfd, info)
#define ERVA(ptr) (((unsigned char *)(ptr) - edata_d) + edata_s->output_section->vma - image_base)
- memset (edata_d, 0, 40);
+ memset (edata_d, 0, edata_sz);
bfd_put_32 (abfd, now, edata_d + 4);
if (pe_def_file->version_major != -1)
{
@@ -691,7 +701,7 @@ fill_edata (abfd, info)
fill_exported_offsets (abfd, info);
- /* Ok, now for the filling in part */
+ /* Ok, now for the filling in part. */
hint = 0;
for (i = 0; i < export_table_size; i++)
{
@@ -702,19 +712,21 @@ fill_edata (abfd, info)
unsigned long srva = (exported_symbol_offsets[s]
+ ssec->output_section->vma
+ ssec->output_offset);
+ int ord = pe_def_file->exports[s].ordinal;
- bfd_put_32 (abfd, srva - image_base, (void *) (eaddresses + i));
+ bfd_put_32 (abfd, srva - image_base,
+ (void *) (eaddresses + ord - min_ordinal));
if (!pe_def_file->exports[s].flag_noname)
{
char *ename = pe_def_file->exports[s].name;
bfd_put_32 (abfd, ERVA (enamestr), (void *) enameptrs);
+ enameptrs++;
strcpy (enamestr, ename);
enamestr += strlen (enamestr) + 1;
- bfd_put_16 (abfd, i, (void *) eordinals);
- enameptrs++;
+ bfd_put_16 (abfd, ord - min_ordinal, (void *) eordinals);
+ eordinals++;
pe_def_file->exports[s].hint = hint++;
}
- eordinals++;
}
}
}
@@ -731,7 +743,7 @@ generate_reloc (abfd, info)
struct bfd_link_info *info;
{
- /* for .reloc stuff */
+ /* For .reloc stuff. */
reloc_data_type *reloc_data;
int total_relocs = 0;
int i;
@@ -761,18 +773,18 @@ generate_reloc (abfd, info)
asymbol **symbols;
int nsyms, symsize;
- /* if it's not loaded, we don't need to relocate it this way */
+ /* If it's not loaded, we don't need to relocate it this way. */
if (!(s->output_section->flags & SEC_LOAD))
continue;
/* I don't know why there would be a reloc for these, but I've
- seen it happen - DJ */
+ seen it happen - DJ */
if (s->output_section == &bfd_abs_section)
continue;
if (s->output_section->vma == 0)
{
- /* Huh? Shouldn't happen, but punt if it does */
+ /* Huh? Shouldn't happen, but punt if it does. */
einfo ("DJ: zero vma section reloc detected: `%s' #%d f=%d\n",
s->output_section->name, s->output_section->index,
s->output_section->flags);
@@ -800,9 +812,9 @@ generate_reloc (abfd, info)
+ sym->section->output_offset
+ sym->section->output_section->vma);
reloc_data[total_relocs].vma = sec_vma + relocs[i]->address;
-
+
#define BITS_AND_SHIFT(bits, shift) (bits * 1000 | shift)
-
+
switch BITS_AND_SHIFT (relocs[i]->howto->bitsize,
relocs[i]->howto->rightshift)
{
@@ -816,9 +828,10 @@ generate_reloc (abfd, info)
break;
case BITS_AND_SHIFT (16, 16):
reloc_data[total_relocs].type = 4;
- /* FIXME: we can't know the symbol's right value yet,
- but we probably can safely assume that CE will relocate
- us in 64k blocks, so leaving it zero is safe. */
+ /* FIXME: we can't know the symbol's right value
+ yet, but we probably can safely assume that
+ CE will relocate us in 64k blocks, so leaving
+ it zero is safe. */
reloc_data[total_relocs].extra = 0;
total_relocs++;
break;
@@ -835,31 +848,33 @@ generate_reloc (abfd, info)
}
}
free (relocs);
- /* Warning: the allocated symbols are remembered in BFD and reused
- later, so don't free them! */
- /* free (symbols); */
+ /* Warning: the allocated symbols are remembered in BFD and
+ reused later, so don't free them! */
+#if 0
+ free (symbol);
+#endif
}
}
/* At this point, we have total_relocs relocation addresses in
reloc_addresses, which are all suitable for the .reloc section.
- We must now create the new sections. */
+ We must now create the new sections. */
qsort (reloc_data, total_relocs, sizeof (*reloc_data), reloc_sort);
for (i = 0; i < total_relocs; i++)
{
unsigned long this_page = (reloc_data[i].vma >> 12);
-
+
if (this_page != sec_page)
{
reloc_sz = (reloc_sz + 3) & ~3; /* 4-byte align */
reloc_sz += 8;
sec_page = this_page;
}
-
+
reloc_sz += 2;
-
+
if (reloc_data[i].type == 4)
reloc_sz += 2;
}
@@ -887,7 +902,7 @@ generate_reloc (abfd, info)
sec_page = this_page;
page_count = 0;
}
- bfd_put_16 (abfd, (rva & 0xfff) + (reloc_data[i].type<<12),
+ bfd_put_16 (abfd, (rva & 0xfff) + (reloc_data[i].type << 12),
reloc_d + reloc_sz);
reloc_sz += 2;
if (reloc_data[i].type == 4)
@@ -915,7 +930,7 @@ generate_reloc (abfd, info)
static void
quoteput (s, f, needs_quotes)
char *s;
- FILE * f;
+ FILE *f;
int needs_quotes;
{
char *cp;
@@ -1098,7 +1113,7 @@ static char *dll_symname;
#define UNDSEC (asection *) &bfd_und_section
static asection *
-quick_section(abfd, name, flags, align)
+quick_section (abfd, name, flags, align)
bfd *abfd;
const char *name;
int flags;
@@ -1108,13 +1123,9 @@ quick_section(abfd, name, flags, align)
asymbol *sym;
sec = bfd_make_section_old_way (abfd, name);
- bfd_set_section_flags (abfd, sec, flags
- | SEC_ALLOC
- | SEC_LOAD
- | SEC_KEEP
- );
+ bfd_set_section_flags (abfd, sec, flags | SEC_ALLOC | SEC_LOAD | SEC_KEEP);
bfd_set_section_alignment (abfd, sec, align);
- /* remember to undo this before trying to link internally! */
+ /* Remember to undo this before trying to link internally! */
sec->output_section = sec;
sym = bfd_make_empty_symbol (abfd);
@@ -1160,7 +1171,7 @@ quick_reloc (abfd, address, which_howto, symidx)
int which_howto;
int symidx;
{
- if (relcount >= (relsize-1))
+ if (relcount >= (relsize - 1))
{
relsize += 10;
if (reltab)
@@ -1181,8 +1192,8 @@ save_relocs (asection *sec)
int i;
sec->relocation = reltab;
sec->reloc_count = relcount;
- sec->orelocation = (arelent **) xmalloc ((relcount+1) * sizeof (arelent *));
- for (i=0; i<relcount; i++)
+ sec->orelocation = (arelent **) xmalloc ((relcount + 1) * sizeof (arelent *));
+ for (i = 0; i < relcount; i++)
sec->orelocation[i] = sec->relocation + i;
sec->orelocation[relcount] = 0;
sec->flags |= SEC_RELOC;
@@ -1234,14 +1245,14 @@ make_head (parent)
id2 = quick_section (abfd, ".idata$2", SEC_HAS_CONTENTS, 2);
id5 = quick_section (abfd, ".idata$5", SEC_HAS_CONTENTS, 2);
id4 = quick_section (abfd, ".idata$4", SEC_HAS_CONTENTS, 2);
- quick_symbol (abfd, U("_head_"), dll_symname, "", id2, BSF_GLOBAL, 0);
- quick_symbol (abfd, U(""), dll_symname, "_iname", UNDSEC, BSF_GLOBAL, 0);
+ quick_symbol (abfd, U ("_head_"), dll_symname, "", id2, BSF_GLOBAL, 0);
+ quick_symbol (abfd, U (""), dll_symname, "_iname", UNDSEC, BSF_GLOBAL, 0);
/* OK, pay attention here. I got confused myself looking back at
it. We create a four-byte section to mark the beginning of the
list, and we include an offset of 4 in the section, so that the
pointer to the list points to the *end* of this section, which is
- the start of the list of sections from other objects. */
+ the start of the list of sections from other objects. */
bfd_set_section_size (abfd, id2, 20);
d2 = (unsigned char *) xmalloc (20);
@@ -1268,7 +1279,7 @@ make_head (parent)
bfd_set_section_contents (abfd, id2, d2, 0, 20);
bfd_set_section_contents (abfd, id5, d5, 0, 4);
bfd_set_section_contents (abfd, id4, d4, 0, 4);
-
+
bfd_make_readable (abfd);
return abfd;
}
@@ -1310,7 +1321,7 @@ make_tail (parent)
id4 = quick_section (abfd, ".idata$4", SEC_HAS_CONTENTS, 2);
id5 = quick_section (abfd, ".idata$5", SEC_HAS_CONTENTS, 2);
id7 = quick_section (abfd, ".idata$7", SEC_HAS_CONTENTS, 2);
- quick_symbol (abfd, U(""), dll_symname, "_iname", id7, BSF_GLOBAL, 0);
+ quick_symbol (abfd, U (""), dll_symname, "_iname", id7, BSF_GLOBAL, 0);
bfd_set_section_size (abfd, id4, 4);
d4 = (unsigned char *) xmalloc (4);
@@ -1322,9 +1333,9 @@ make_tail (parent)
id5->contents = d5;
memset (d5, 0, 4);
- len = strlen (dll_filename)+1;
+ len = strlen (dll_filename) + 1;
if (len & 1)
- len ++;
+ len++;
bfd_set_section_size (abfd, id7, len);
d7 = (unsigned char *) xmalloc (len);
id7->contents = d7;
@@ -1399,7 +1410,7 @@ make_one (exp, parent)
bfd *parent;
{
asection *tx, *id7, *id5, *id4, *id6;
- unsigned char *td, *d7, *d5, *d4, *d6 = NULL;
+ unsigned char *td = NULL, *d7, *d5, *d4, *d6 = NULL;
int len;
char *oname;
bfd *abfd;
@@ -1441,32 +1452,35 @@ make_one (exp, parent)
id4 = quick_section (abfd, ".idata$4", SEC_HAS_CONTENTS, 2);
id6 = quick_section (abfd, ".idata$6", SEC_HAS_CONTENTS, 2);
if (! exp->flag_data)
- quick_symbol (abfd, U(""), exp->internal_name, "", tx, BSF_GLOBAL, 0);
- quick_symbol (abfd, U("_head_"), dll_symname, "", UNDSEC, BSF_GLOBAL, 0);
- quick_symbol (abfd, U("__imp_"), exp->internal_name, "", id5, BSF_GLOBAL, 0);
+ quick_symbol (abfd, U (""), exp->internal_name, "", tx, BSF_GLOBAL, 0);
+ quick_symbol (abfd, U ("_head_"), dll_symname, "", UNDSEC, BSF_GLOBAL, 0);
+ quick_symbol (abfd, U ("_imp__"), exp->internal_name, "", id5, BSF_GLOBAL, 0);
if (pe_dll_compat_implib)
- quick_symbol (abfd, U("__imp_"), exp->internal_name, "",
- id5, BSF_GLOBAL, 0);
+ quick_symbol (abfd, U ("__imp_"), exp->internal_name, "",
+ id5, BSF_GLOBAL, 0);
- bfd_set_section_size (abfd, tx, jmp_byte_count);
- td = (unsigned char *) xmalloc (jmp_byte_count);
- tx->contents = td;
- memcpy (td, jmp_bytes, jmp_byte_count);
- switch (pe_details->pe_arch)
- {
- case PE_ARCH_i386:
- quick_reloc (abfd, 2, BFD_RELOC_32, 2);
- break;
- case PE_ARCH_sh:
- quick_reloc (abfd, 8, BFD_RELOC_32, 2);
- break;
- case PE_ARCH_mips:
- quick_reloc (abfd, 0, BFD_RELOC_HI16_S, 2);
- quick_reloc (abfd, 0, BFD_RELOC_LO16, 0); /* MIPS_R_PAIR */
- quick_reloc (abfd, 4, BFD_RELOC_LO16, 2);
- break;
- }
- save_relocs (tx);
+ if (! exp->flag_data)
+ {
+ bfd_set_section_size (abfd, tx, jmp_byte_count);
+ td = (unsigned char *) xmalloc (jmp_byte_count);
+ tx->contents = td;
+ memcpy (td, jmp_bytes, jmp_byte_count);
+ switch (pe_details->pe_arch)
+ {
+ case PE_ARCH_i386:
+ quick_reloc (abfd, 2, BFD_RELOC_32, 2);
+ break;
+ case PE_ARCH_sh:
+ quick_reloc (abfd, 8, BFD_RELOC_32, 2);
+ break;
+ case PE_ARCH_mips:
+ quick_reloc (abfd, 0, BFD_RELOC_HI16_S, 2);
+ quick_reloc (abfd, 0, BFD_RELOC_LO16, 0); /* MIPS_R_PAIR */
+ quick_reloc (abfd, 4, BFD_RELOC_LO16, 2);
+ break;
+ }
+ save_relocs (tx);
+ }
bfd_set_section_size (abfd, id7, 4);
d7 = (unsigned char *) xmalloc (4);
@@ -1497,9 +1511,9 @@ make_one (exp, parent)
memset (d4, 0, 4);
if (exp->flag_noname)
{
- d5[0] = exp->ordinal;
- d5[1] = exp->ordinal >> 8;
- d5[3] = 0x80;
+ d4[0] = exp->ordinal;
+ d4[1] = exp->ordinal >> 8;
+ d4[3] = 0x80;
}
else
{
@@ -1523,7 +1537,7 @@ make_one (exp, parent)
memset (d6, 0, len);
d6[0] = exp->hint & 0xff;
d6[1] = exp->hint >> 8;
- strcpy (d6+2, exp->name);
+ strcpy (d6 + 2, exp->name);
}
bfd_set_symtab (abfd, symtab, symptr);
@@ -1552,7 +1566,7 @@ pe_dll_generate_implib (def, impfilename)
dll_filename = (def->name) ? def->name : dll_name;
dll_symname = xstrdup (dll_filename);
- for (i=0; dll_symname[i]; i++)
+ for (i = 0; dll_symname[i]; i++)
if (!isalnum ((unsigned char) dll_symname[i]))
dll_symname[i] = '_';
@@ -1569,21 +1583,21 @@ pe_dll_generate_implib (def, impfilename)
/* xgettext:c-format */
einfo (_("Creating library file: %s\n"), impfilename);
-
+
bfd_set_format (outarch, bfd_archive);
outarch->has_armap = 1;
- /* Work out a reasonable size of things to put onto one line. */
+ /* Work out a reasonable size of things to put onto one line. */
ar_head = make_head (outarch);
- for (i = 0; i<def->num_exports; i++)
+ for (i = 0; i < def->num_exports; i++)
{
- /* The import library doesn't know about the internal name */
+ /* The import library doesn't know about the internal name. */
char *internal = def->exports[i].internal_name;
bfd *n;
def->exports[i].internal_name = def->exports[i].name;
- n = make_one (def->exports+i, outarch);
+ n = make_one (def->exports + i, outarch);
n->next = head;
head = n;
def->exports[i].internal_name = internal;
@@ -1594,7 +1608,7 @@ pe_dll_generate_implib (def, impfilename)
if (ar_head == NULL || ar_tail == NULL)
return;
- /* Now stick them all into the archive */
+ /* Now stick them all into the archive. */
ar_head->next = head;
ar_tail->next = ar_head;
@@ -1602,7 +1616,7 @@ pe_dll_generate_implib (def, impfilename)
if (! bfd_set_archive_head (outarch, head))
einfo ("%Xbfd_set_archive_head: %s\n", bfd_errmsg (bfd_get_error ()));
-
+
if (! bfd_close (outarch))
einfo ("%Xbfd_close %s: %s\n", impfilename, bfd_errmsg (bfd_get_error ()));
@@ -1636,7 +1650,7 @@ pe_process_import_defs (output_bfd, link_info)
struct bfd_link_info *link_info;
{
def_file_module *module;
- pe_dll_id_target(bfd_get_target (output_bfd));
+ pe_dll_id_target (bfd_get_target (output_bfd));
if (!pe_def_file)
return;
@@ -1647,28 +1661,35 @@ pe_process_import_defs (output_bfd, link_info)
dll_filename = module->name;
dll_symname = xstrdup (module->name);
- for (i=0; dll_symname[i]; i++)
+ for (i = 0; dll_symname[i]; i++)
if (!isalnum (dll_symname[i]))
dll_symname[i] = '_';
do_this_dll = 0;
- for (i=0; i<pe_def_file->num_imports; i++)
+ for (i = 0; i < pe_def_file->num_imports; i++)
if (pe_def_file->imports[i].module == module)
{
def_file_export exp;
struct bfd_link_hash_entry *blhe;
- /* see if we need this import */
- char *name = (char *) xmalloc (strlen (pe_def_file->imports[i].internal_name) + 2);
- sprintf (name, "%s%s", U(""), pe_def_file->imports[i].internal_name);
+ /* See if we need this import. */
+ char *name = (char *) xmalloc (strlen (pe_def_file->imports[i].internal_name) + 2 + 6);
+ sprintf (name, "%s%s", U (""), pe_def_file->imports[i].internal_name);
blhe = bfd_link_hash_lookup (link_info->hash, name,
false, false, false);
+ if (!blhe || (blhe && blhe->type != bfd_link_hash_undefined))
+ {
+ sprintf (name, "%s%s", U ("_imp__"),
+ pe_def_file->imports[i].internal_name);
+ blhe = bfd_link_hash_lookup (link_info->hash, name,
+ false, false, false);
+ }
free (name);
if (blhe && blhe->type == bfd_link_hash_undefined)
{
bfd *one;
- /* we do */
+ /* We do. */
if (!do_this_dll)
{
bfd *ar_head = make_head (output_bfd);
@@ -1713,7 +1734,7 @@ pe_get16 (abfd, where)
unsigned char b[2];
bfd_seek (abfd, where, SEEK_SET);
bfd_read (b, 1, 2, abfd);
- return b[0] + (b[1]<<8);
+ return b[0] + (b[1] << 8);
}
static unsigned int
@@ -1724,7 +1745,7 @@ pe_get32 (abfd, where)
unsigned char b[4];
bfd_seek (abfd, where, SEEK_SET);
bfd_read (b, 1, 4, abfd);
- return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+ return b[0] + (b[1] << 8) + (b[2] << 16) + (b[3] << 24);
}
#if 0 /* This is not currently used. */
@@ -1734,7 +1755,7 @@ pe_as16 (ptr)
void *ptr;
{
unsigned char *b = ptr;
- return b[0] + (b[1]<<8);
+ return b[0] + (b[1] << 8);
}
#endif
@@ -1744,7 +1765,7 @@ pe_as32 (ptr)
void *ptr;
{
unsigned char *b = ptr;
- return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+ return b[0] + (b[1] << 8) + (b[2] << 16) + (b[3] << 24);
}
boolean
@@ -1759,7 +1780,7 @@ pe_implied_import_dll (filename)
const char *dll_name;
/* No, I can't use bfd here. kernel32.dll puts its export table in
- the middle of the .rdata section. */
+ the middle of the .rdata section. */
dll = bfd_openr (filename, pe_details->target_name);
if (!dll)
@@ -1767,7 +1788,7 @@ pe_implied_import_dll (filename)
einfo ("%Xopen %s: %s\n", filename, bfd_errmsg (bfd_get_error ()));
return false;
}
- /* PEI dlls seem to be bfd_objects */
+ /* PEI dlls seem to be bfd_objects. */
if (!bfd_check_format (dll, bfd_object))
{
einfo ("%X%s: this doesn't appear to be a DLL\n", filename);
@@ -1775,7 +1796,7 @@ pe_implied_import_dll (filename)
}
dll_name = filename;
- for (i=0; filename[i]; i++)
+ for (i = 0; filename[i]; i++)
if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
dll_name = filename + i + 1;
@@ -1790,16 +1811,16 @@ pe_implied_import_dll (filename)
secptr = (pe_header_offset + 4 + 20 +
pe_get16 (dll, pe_header_offset + 4 + 16));
expptr = 0;
- for (i=0; i<nsections; i++)
+ for (i = 0; i < nsections; i++)
{
char sname[8];
unsigned long secptr1 = secptr + 40 * i;
unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
unsigned long vsize = pe_get32 (dll, secptr1 + 16);
unsigned long fptr = pe_get32 (dll, secptr1 + 20);
- bfd_seek(dll, secptr1, SEEK_SET);
- bfd_read(sname, 1, 8, dll);
- if (vaddr <= export_rva && vaddr+vsize > export_rva)
+ bfd_seek (dll, secptr1, SEEK_SET);
+ bfd_read (sname, 1, 8, dll);
+ if (vaddr <= export_rva && vaddr + vsize > export_rva)
{
expptr = fptr + (export_rva - vaddr);
if (export_rva + export_size > vaddr + vsize)
@@ -1814,17 +1835,17 @@ pe_implied_import_dll (filename)
erva = expdata - export_rva;
if (pe_def_file == 0)
- pe_def_file = def_file_empty();
+ pe_def_file = def_file_empty ();
- nexp = pe_as32 (expdata+24);
- name_rvas = pe_as32 (expdata+32);
- ordinals = pe_as32 (expdata+36);
- ordbase = pe_as32 (expdata+16);
- for (i=0; i<nexp; i++)
+ nexp = pe_as32 (expdata + 24);
+ name_rvas = pe_as32 (expdata + 32);
+ ordinals = pe_as32 (expdata + 36);
+ ordbase = pe_as32 (expdata + 16);
+ for (i = 0; i < nexp; i++)
{
- unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
+ unsigned long name_rva = pe_as32 (erva + name_rvas + i * 4);
def_file_import *imp;
- imp = def_file_add_import (pe_def_file, erva+name_rva, dll_name,
+ imp = def_file_add_import (pe_def_file, erva + name_rva, dll_name,
i, 0);
}
diff --git a/contrib/binutils/ld/po/ld.pot b/contrib/binutils/ld/po/ld.pot
index 6efdf65..584dca5 100644
--- a/contrib/binutils/ld/po/ld.pot
+++ b/contrib/binutils/ld/po/ld.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-04-05 14:09+0930\n"
+"POT-Creation-Date: 2000-12-26 12:54-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -14,253 +14,287 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: ENCODING\n"
-#: emultempl/armcoff.em:69
+#: emultempl/armcoff.em:70
msgid " --support-old-code Support interworking with old code\n"
msgstr ""
-#: emultempl/armcoff.em:70
+#: emultempl/armcoff.em:71
msgid " --thumb-entry=<sym> Set the entry point to be Thumb symbol <sym>\n"
msgstr ""
-#: emultempl/armcoff.em:139
+#: emultempl/armcoff.em:140
#, c-format
msgid "Errors encountered processing file %s"
msgstr ""
-#: emultempl/armcoff.em:205 emultempl/pe.em:1035
+#: emultempl/armcoff.em:206 emultempl/pe.em:1211
msgid "%P: warning: '--thumb-entry %s' is overriding '-e %s'\n"
msgstr ""
-#: emultempl/armcoff.em:210 emultempl/pe.em:1040
+#: emultempl/armcoff.em:211 emultempl/pe.em:1216
msgid "%P: warning: connot find thumb start symbol %s\n"
msgstr ""
-#: emultempl/pe.em:257
+#: emultempl/pe.em:266
msgid ""
" --base_file <basefile> Generate a base file for relocatable "
"DLLs\n"
msgstr ""
-#: emultempl/pe.em:258
+#: emultempl/pe.em:267
msgid ""
" --dll Set image base to the default for DLLs\n"
msgstr ""
-#: emultempl/pe.em:259
+#: emultempl/pe.em:268
msgid " --file-alignment <size> Set file alignment\n"
msgstr ""
-#: emultempl/pe.em:260
+#: emultempl/pe.em:269
msgid " --heap <size> Set initial size of the heap\n"
msgstr ""
-#: emultempl/pe.em:261
+#: emultempl/pe.em:270
msgid ""
" --image-base <address> Set start address of the executable\n"
msgstr ""
-#: emultempl/pe.em:262
+#: emultempl/pe.em:271
msgid ""
" --major-image-version <number> Set version number of the executable\n"
msgstr ""
-#: emultempl/pe.em:263
+#: emultempl/pe.em:272
msgid " --major-os-version <number> Set minimum required OS version\n"
msgstr ""
-#: emultempl/pe.em:264
+#: emultempl/pe.em:273
msgid ""
" --major-subsystem-version <number> Set minimum required OS subsystem "
"version\n"
msgstr ""
-#: emultempl/pe.em:265
+#: emultempl/pe.em:274
msgid ""
" --minor-image-version <number> Set revision number of the executable\n"
msgstr ""
-#: emultempl/pe.em:266
+#: emultempl/pe.em:275
msgid " --minor-os-version <number> Set minimum required OS revision\n"
msgstr ""
-#: emultempl/pe.em:267
+#: emultempl/pe.em:276
msgid ""
" --minor-subsystem-version <number> Set minimum required OS subsystem "
"revision\n"
msgstr ""
-#: emultempl/pe.em:268
+#: emultempl/pe.em:277
msgid " --section-alignment <size> Set section alignment\n"
msgstr ""
-#: emultempl/pe.em:269
+#: emultempl/pe.em:278
msgid " --stack <size> Set size of the initial stack\n"
msgstr ""
-#: emultempl/pe.em:270
+#: emultempl/pe.em:279
msgid ""
" --subsystem <name>[:<version>] Set required OS subsystem [& version]\n"
msgstr ""
-#: emultempl/pe.em:271
+#: emultempl/pe.em:280
msgid ""
" --support-old-code Support interworking with old code\n"
msgstr ""
-#: emultempl/pe.em:272
+#: emultempl/pe.em:281
msgid ""
" --thumb-entry=<symbol> Set the entry point to be Thumb "
"<symbol>\n"
msgstr ""
-#: emultempl/pe.em:274
+#: emultempl/pe.em:283
msgid ""
" --add-stdcall-alias Export symbols with and without @nn\n"
msgstr ""
-#: emultempl/pe.em:275
+#: emultempl/pe.em:284
msgid " --disable-stdcall-fixup Don't link _sym to _sym@nn\n"
msgstr ""
-#: emultempl/pe.em:276
+#: emultempl/pe.em:285
msgid ""
" --enable-stdcall-fixup Link _sym to _sym@nn without warnings\n"
msgstr ""
-#: emultempl/pe.em:277
+#: emultempl/pe.em:286
msgid ""
" --exclude-symbols sym,sym,... Exclude symbols from automatic export\n"
msgstr ""
-#: emultempl/pe.em:278
+#: emultempl/pe.em:287
msgid ""
" --export-all-symbols Automatically export all globals to "
"DLL\n"
msgstr ""
-#: emultempl/pe.em:279
+#: emultempl/pe.em:288
msgid " --kill-at Remove @nn from exported symbols\n"
msgstr ""
-#: emultempl/pe.em:280
+#: emultempl/pe.em:289
msgid " --out-implib <file> Generate import library\n"
msgstr ""
-#: emultempl/pe.em:281
+#: emultempl/pe.em:290
msgid ""
" --output-def <file> Generate a .DEF file for the built DLL\n"
msgstr ""
-#: emultempl/pe.em:282
+#: emultempl/pe.em:291
msgid " --warn-duplicate-exports Warn about duplicate exports.\n"
msgstr ""
-#: emultempl/pe.em:283
+#: emultempl/pe.em:292
msgid ""
" --compat-implib Create backward compatible import "
"libs;\n"
msgstr ""
-#: emultempl/pe.em:284
+#: emultempl/pe.em:293
msgid " create __imp_<SYMBOL> as well.\n"
msgstr ""
-#: emultempl/pe.em:352
+#: emultempl/pe.em:294
+msgid ""
+" --enable-auto-image-base Automatically choose image base for "
+"DLLs\n"
+msgstr ""
+
+#: emultempl/pe.em:295
+msgid " unless user specifies one\n"
+msgstr ""
+
+#: emultempl/pe.em:296
+msgid ""
+" --disable-auto-image-base Do not auto-choose image base. "
+"(default)\n"
+msgstr ""
+
+#: emultempl/pe.em:297
+msgid ""
+" --dll-search-prefix=<string> When linking dynamically to a dll "
+"witout an\n"
+msgstr ""
+
+#: emultempl/pe.em:298
+msgid ""
+" importlib, use <string><basename>.dll "
+"\n"
+msgstr ""
+
+#: emultempl/pe.em:299
+msgid ""
+" in preference to lib<basename>.dll \n"
+msgstr ""
+
+#: emultempl/pe.em:367
msgid "%P: warning: bad version number in -subsystem option\n"
msgstr ""
-#: emultempl/pe.em:388
+#: emultempl/pe.em:403
msgid "%P%F: invalid subsystem type %s\n"
msgstr ""
-#: emultempl/pe.em:403
+#: emultempl/pe.em:418
msgid "%P%F: invalid hex number for PE parameter '%s'\n"
msgstr ""
-#: emultempl/pe.em:421
+#: emultempl/pe.em:436
msgid "%P%F: strange hex info for PE parameter '%s'\n"
msgstr ""
-#: emultempl/pe.em:460
+#: emultempl/pe.em:475
#, c-format
msgid "%s: Can't open base file %s\n"
msgstr ""
-#: emultempl/pe.em:602
+#: emultempl/pe.em:668
msgid "%P: warning, file alignment > section alignment.\n"
msgstr ""
-#: emultempl/pe.em:673 emultempl/pe.em:699
+#: emultempl/pe.em:739 emultempl/pe.em:765
#, c-format
msgid "Warning: resolving %s by linking to %s\n"
msgstr ""
-#: emultempl/pe.em:678 emultempl/pe.em:704
+#: emultempl/pe.em:744 emultempl/pe.em:770
msgid "Use --enable-stdcall-fixup to disable these warnings\n"
msgstr ""
-#: emultempl/pe.em:679 emultempl/pe.em:705
+#: emultempl/pe.em:745 emultempl/pe.em:771
msgid "Use --disable-stdcall-fixup to disable these fixups\n"
msgstr ""
-#: emultempl/pe.em:722
+#: emultempl/pe.em:788
msgid "%F%P: PE operations on non PE file.\n"
msgstr ""
-#: emultempl/pe.em:839
+#: emultempl/pe.em:1015
#, c-format
msgid "Errors encountered processing file %s\n"
msgstr ""
-#: emultempl/pe.em:862
+#: emultempl/pe.em:1038
#, c-format
msgid "Errors encountered processing file %s for interworking"
msgstr ""
-#: emultempl/pe.em:918 ldlang.c:1961 ldlang.c:4333 ldlang.c:4367 ldmain.c:996
+#: emultempl/pe.em:1094 ldlang.c:1981 ldlang.c:4347 ldlang.c:4380
+#: ldmain.c:1016
msgid "%P%F: bfd_link_hash_lookup failed: %E\n"
msgstr ""
-#: ldcref.c:162
+#: ldcref.c:158
msgid "%X%P: bfd_hash_table_init of cref table failed: %E\n"
msgstr ""
-#: ldcref.c:168
+#: ldcref.c:164
msgid "%X%P: cref_hash_lookup failed: %E\n"
msgstr ""
-#: ldcref.c:239
+#: ldcref.c:235
msgid ""
"\n"
"Cross Reference Table\n"
"\n"
msgstr ""
-#: ldcref.c:240
+#: ldcref.c:236
msgid "Symbol"
msgstr ""
-#: ldcref.c:248
+#: ldcref.c:244
msgid "File\n"
msgstr ""
-#: ldcref.c:252
+#: ldcref.c:248
msgid "No symbols\n"
msgstr ""
-#: ldcref.c:369
+#: ldcref.c:364
msgid "%P: symbol `%T' missing from main hash table\n"
msgstr ""
-#: ldcref.c:441
+#: ldcref.c:435
msgid "%B%F: could not read symbols; %E\n"
msgstr ""
-#: ldcref.c:445 ldmain.c:1064 ldmain.c:1068
+#: ldcref.c:439 ldmain.c:1082 ldmain.c:1086
msgid "%B%F: could not read symbols: %E\n"
msgstr ""
-#: ldcref.c:517 ldcref.c:524 ldmain.c:1114 ldmain.c:1121
+#: ldcref.c:511 ldcref.c:518 ldmain.c:1132 ldmain.c:1139
msgid "%B%F: could not read relocs: %E\n"
msgstr ""
@@ -268,7 +302,7 @@ msgstr ""
#. in OUTSECNAME. This reloc is from a section which is
#. mapped into a section from which references to OUTSECNAME
#. are prohibited. We must report an error.
-#: ldcref.c:542
+#: ldcref.c:536
msgid "%X%C: prohibited cross reference from %s to `%T' in %s\n"
msgstr ""
@@ -276,86 +310,86 @@ msgstr ""
msgid "%P%X: Different relocs used in set %s\n"
msgstr ""
-#: ldctor.c:106
+#: ldctor.c:107
msgid "%P%X: Different object file formats composing set %s\n"
msgstr ""
-#: ldctor.c:288 ldctor.c:302
+#: ldctor.c:289 ldctor.c:303
msgid "%P%X: %s does not support reloc %s for set %s\n"
msgstr ""
-#: ldctor.c:323
+#: ldctor.c:324
msgid "%P%X: Unsupported size %d for set %s\n"
msgstr ""
-#: ldctor.c:344
+#: ldctor.c:345
msgid ""
"\n"
"Set Symbol\n"
"\n"
msgstr ""
-#: ldemul.c:224
+#: ldemul.c:220
msgid "%S SYSLIB ignored\n"
msgstr ""
-#: ldemul.c:232
+#: ldemul.c:227
msgid "%S HLL ignored\n"
msgstr ""
-#: ldemul.c:253
+#: ldemul.c:248
msgid "%P: unrecognised emulation mode: %s\n"
msgstr ""
-#: ldemul.c:254
+#: ldemul.c:249
msgid "Supported emulations: "
msgstr ""
-#: ldemul.c:298
+#: ldemul.c:293
msgid " no emulation specific options.\n"
msgstr ""
-#: ldexp.c:157
+#: ldexp.c:154
msgid "%F%P: %s uses undefined section %s\n"
msgstr ""
-#: ldexp.c:159
+#: ldexp.c:156
msgid "%F%P: %s forward reference of section %s\n"
msgstr ""
-#: ldexp.c:271
+#: ldexp.c:268
msgid "%F%S %% by zero\n"
msgstr ""
-#: ldexp.c:278
+#: ldexp.c:275
msgid "%F%S / by zero\n"
msgstr ""
-#: ldexp.c:401
+#: ldexp.c:398
msgid "%X%S: unresolvable symbol `%s' referenced in expression\n"
msgstr ""
-#: ldexp.c:420
+#: ldexp.c:417
msgid "%F%S: undefined symbol `%s' referenced in expression\n"
msgstr ""
-#: ldexp.c:602
+#: ldexp.c:600
msgid "%F%S can not PROVIDE assignment to location counter\n"
msgstr ""
-#: ldexp.c:612
+#: ldexp.c:610
msgid "%F%S invalid assignment to location counter\n"
msgstr ""
-#: ldexp.c:616
+#: ldexp.c:614
msgid "%F%S assignment to location counter invalid outside of SECTION\n"
msgstr ""
-#: ldexp.c:626
+#: ldexp.c:624
msgid "%F%S cannot move location counter backwards (from %V to %V)\n"
msgstr ""
-#: ldexp.c:654
+#: ldexp.c:652
msgid "%P%F:%s: hash creation failed\n"
msgstr ""
@@ -367,55 +401,55 @@ msgstr ""
msgid "%F%S non constant expression for %s\n"
msgstr ""
-#: ldfile.c:108
+#: ldfile.c:102
#, c-format
msgid "attempt to open %s failed\n"
msgstr ""
-#: ldfile.c:110
+#: ldfile.c:104
#, c-format
msgid "attempt to open %s succeeded\n"
msgstr ""
-#: ldfile.c:116
+#: ldfile.c:110
msgid "%F%P: invalid BFD target `%s'\n"
msgstr ""
-#: ldfile.c:140
-msgid "%P: skipping incompatible %s when searching for %s"
+#: ldfile.c:134
+msgid "%P: skipping incompatible %s when searching for %s\n"
msgstr ""
-#: ldfile.c:232
+#: ldfile.c:226
msgid "%F%P: cannot open %s for %s: %E\n"
msgstr ""
-#: ldfile.c:235
+#: ldfile.c:229
msgid "%F%P: cannot open %s: %E\n"
msgstr ""
-#: ldfile.c:255
+#: ldfile.c:250
msgid "%F%P: cannot find %s\n"
msgstr ""
-#: ldfile.c:273 ldfile.c:288
+#: ldfile.c:269 ldfile.c:285
#, c-format
msgid "cannot find script file %s\n"
msgstr ""
-#: ldfile.c:275 ldfile.c:290
+#: ldfile.c:271 ldfile.c:287
#, c-format
msgid "opened script file %s\n"
msgstr ""
-#: ldfile.c:333
+#: ldfile.c:336
msgid "%P%F: cannot open linker script file %s: %E\n"
msgstr ""
-#: ldfile.c:374
+#: ldfile.c:373
msgid "%P%F: unknown architecture: %s\n"
msgstr ""
-#: ldfile.c:391
+#: ldfile.c:389
msgid "%P%F: target architecture respecified\n"
msgstr ""
@@ -461,162 +495,162 @@ msgstr ""
msgid "%P%F: output format %s cannot represent section called %s\n"
msgstr ""
-#: ldlang.c:970
+#: ldlang.c:969
msgid "%P: %B: warning: ignoring duplicate section `%s'\n"
msgstr ""
-#: ldlang.c:973
+#: ldlang.c:972
msgid "%P: %B: warning: ignoring duplicate `%s' section symbol `%s'\n"
msgstr ""
-#: ldlang.c:987
+#: ldlang.c:986
msgid "%P: %B: warning: duplicate section `%s' has different size\n"
msgstr ""
-#: ldlang.c:1039
+#: ldlang.c:1037
msgid "%P%F: Failed to create hash table\n"
msgstr ""
-#: ldlang.c:1422
+#: ldlang.c:1427
msgid "%B: file not recognized: %E\n"
msgstr ""
-#: ldlang.c:1423
+#: ldlang.c:1428
msgid "%B: matching formats:"
msgstr ""
-#: ldlang.c:1430
+#: ldlang.c:1435
msgid "%F%B: file not recognized: %E\n"
msgstr ""
-#: ldlang.c:1483
+#: ldlang.c:1488
msgid "%F%B: object %B in archive is not object\n"
msgstr ""
-#: ldlang.c:1489 ldlang.c:1501
+#: ldlang.c:1494 ldlang.c:1506
msgid "%F%B: could not read symbols: %E\n"
msgstr ""
-#: ldlang.c:1747
+#: ldlang.c:1766
msgid ""
"%P: warning: could not find any targets that match endianness requirement\n"
msgstr ""
-#: ldlang.c:1759
+#: ldlang.c:1779
msgid "%P%F: target %s not found\n"
msgstr ""
-#: ldlang.c:1761
+#: ldlang.c:1781
msgid "%P%F: cannot open output file %s: %E\n"
msgstr ""
-#: ldlang.c:1769
+#: ldlang.c:1791
msgid "%P%F:%s: can not make object file: %E\n"
msgstr ""
-#: ldlang.c:1773
+#: ldlang.c:1795
msgid "%P%F:%s: can not set architecture: %E\n"
msgstr ""
-#: ldlang.c:1777
+#: ldlang.c:1799
msgid "%P%F: can not create link hash table: %E\n"
msgstr ""
-#: ldlang.c:2084
+#: ldlang.c:2104
msgid " load address 0x%V"
msgstr ""
-#: ldlang.c:2214
+#: ldlang.c:2234
msgid "%W (size before relaxing)\n"
msgstr ""
-#: ldlang.c:2296
+#: ldlang.c:2316
#, c-format
msgid "Address of section %s set to "
msgstr ""
-#: ldlang.c:2445
+#: ldlang.c:2465
#, c-format
msgid "Fail with %d\n"
msgstr ""
-#: ldlang.c:2684
+#: ldlang.c:2703
msgid "%X%P: section %s [%V -> %V] overlaps section %s [%V -> %V]\n"
msgstr ""
-#: ldlang.c:2718
+#: ldlang.c:2737
msgid "%X%P: address 0x%v of %B section %s is not within region %s\n"
msgstr ""
-#: ldlang.c:2726
+#: ldlang.c:2745
msgid "%X%P: region %s is full (%B section %s)\n"
msgstr ""
-#: ldlang.c:2775
+#: ldlang.c:2794
msgid "%P%X: Internal error on COFF shared library section %s\n"
msgstr ""
-#: ldlang.c:2816
+#: ldlang.c:2835
msgid "%P: warning: no memory region specified for section `%s'\n"
msgstr ""
-#: ldlang.c:2829
+#: ldlang.c:2848
msgid "%P: warning: changing start of section %s by %u bytes\n"
msgstr ""
-#: ldlang.c:2843
+#: ldlang.c:2862
msgid "%F%S: non constant address expression for section %s\n"
msgstr ""
-#: ldlang.c:2907
+#: ldlang.c:2927
msgid "%X%P: use an absolute load address or a load memory region, not both\n"
msgstr ""
-#: ldlang.c:3020
+#: ldlang.c:3043
msgid "%P%F: can't relax section: %E\n"
msgstr ""
-#: ldlang.c:3185
+#: ldlang.c:3210
msgid "%F%P: invalid data statement\n"
msgstr ""
-#: ldlang.c:3222
+#: ldlang.c:3247
msgid "%F%P: invalid reloc statement\n"
msgstr ""
-#: ldlang.c:3358
+#: ldlang.c:3383
msgid "%P%F:%s: can't set start address\n"
msgstr ""
-#: ldlang.c:3371 ldlang.c:3388
+#: ldlang.c:3396 ldlang.c:3413
msgid "%P%F: can't set start address\n"
msgstr ""
-#: ldlang.c:3383
+#: ldlang.c:3408
msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n"
msgstr ""
-#: ldlang.c:3393
+#: ldlang.c:3418
msgid "%P: warning: cannot find entry symbol %s; not setting start address\n"
msgstr ""
-#: ldlang.c:3435
+#: ldlang.c:3460
msgid ""
"%P: warning: %s architecture of input file `%B' is incompatible with %s "
"output\n"
msgstr ""
-#: ldlang.c:3453
+#: ldlang.c:3478
msgid "%E%X: failed to merge target specific data of file %B\n"
msgstr ""
-#: ldlang.c:3540
+#: ldlang.c:3565
msgid ""
"\n"
"Allocating common symbols\n"
msgstr ""
-#: ldlang.c:3541
+#: ldlang.c:3566
msgid ""
"Common symbol size file\n"
"\n"
@@ -625,43 +659,43 @@ msgstr ""
#. This message happens when using the
#. svr3.ifile linker script, so I have
#. disabled it.
-#: ldlang.c:3626
+#: ldlang.c:3648
msgid "%P: no [COMMON] command, defaulting to .bss\n"
msgstr ""
-#: ldlang.c:3686
+#: ldlang.c:3707
msgid "%P%F: invalid syntax in flags\n"
msgstr ""
-#: ldlang.c:4281
+#: ldlang.c:4296
msgid "%P%Fmultiple STARTUP files\n"
msgstr ""
-#: ldlang.c:4553
+#: ldlang.c:4566
msgid "%F%P: bfd_record_phdr failed: %E\n"
msgstr ""
-#: ldlang.c:4572
+#: ldlang.c:4585
msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n"
msgstr ""
-#: ldlang.c:4881
+#: ldlang.c:4893
msgid "%X%P: unknown language `%s' in version information\n"
msgstr ""
-#: ldlang.c:4930
+#: ldlang.c:4942
msgid "%X%P: duplicate version tag `%s'\n"
msgstr ""
-#: ldlang.c:4943 ldlang.c:4956
+#: ldlang.c:4955 ldlang.c:4968
msgid "%X%P: duplicate expression `%s' in version information\n"
msgstr ""
-#: ldlang.c:4993
+#: ldlang.c:5005
msgid "%X%P: unable to find version dependency `%s'\n"
msgstr ""
-#: ldlang.c:5015
+#: ldlang.c:5027
msgid "%X%P: unable to read .exports section contents"
msgstr ""
@@ -669,195 +703,199 @@ msgstr ""
msgid "%X%P: can't set BFD default target to `%s': %E\n"
msgstr ""
-#: ldmain.c:262
+#: ldmain.c:268
msgid "%P%F: -r and --mpc860c0 may not be used together\n"
msgstr ""
-#: ldmain.c:264
+#: ldmain.c:270
msgid "%P%F: --relax and -r may not be used together\n"
msgstr ""
-#: ldmain.c:266
+#: ldmain.c:272
msgid "%P%F: -r and -shared may not be used together\n"
msgstr ""
-#: ldmain.c:295
+#: ldmain.c:301
msgid "using internal linker script:\n"
msgstr ""
-#: ldmain.c:314
+#: ldmain.c:320
msgid "%P%F: no input files\n"
msgstr ""
-#: ldmain.c:319
+#: ldmain.c:325
msgid "%P: mode %s\n"
msgstr ""
-#: ldmain.c:337
+#: ldmain.c:342
msgid "%P%F: cannot open map file %s: %E\n"
msgstr ""
-#: ldmain.c:383
+#: ldmain.c:389
msgid "%P: link errors found, deleting executable `%s'\n"
msgstr ""
-#: ldmain.c:394
+#: ldmain.c:400
msgid "%F%B: final close failed: %E\n"
msgstr ""
-#: ldmain.c:418
+#: ldmain.c:424
msgid "%X%P: unable to open for source of copy `%s'\n"
msgstr ""
-#: ldmain.c:420
+#: ldmain.c:426
msgid "%X%P: unable to open for destination of copy `%s'\n"
msgstr ""
-#: ldmain.c:426
+#: ldmain.c:432
msgid "%P: Error writing file `%s'\n"
msgstr ""
-#: ldmain.c:432 pe-dll.c:1082
+#: ldmain.c:438 pe-dll.c:1097
#, c-format
msgid "%P: Error closing file `%s'\n"
msgstr ""
-#: ldmain.c:449
+#: ldmain.c:455
#, c-format
msgid "%s: total time in link: %ld.%06ld\n"
msgstr ""
-#: ldmain.c:452
+#: ldmain.c:458
#, c-format
msgid "%s: data size %ld\n"
msgstr ""
-#: ldmain.c:493
+#: ldmain.c:499
msgid "%P%F: missing argument to -m\n"
msgstr ""
-#: ldmain.c:607 ldmain.c:628 ldmain.c:659
+#: ldmain.c:624 ldmain.c:645 ldmain.c:676
msgid "%P%F: bfd_hash_table_init failed: %E\n"
msgstr ""
-#: ldmain.c:612 ldmain.c:631
+#: ldmain.c:629 ldmain.c:648
msgid "%P%F: bfd_hash_lookup failed: %E\n"
msgstr ""
-#: ldmain.c:646
+#: ldmain.c:663
msgid "%X%P: error: duplicate retain-symbols-file\n"
msgstr ""
-#: ldmain.c:690
+#: ldmain.c:707
msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n"
msgstr ""
-#: ldmain.c:695
+#: ldmain.c:712
msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n"
msgstr ""
-#: ldmain.c:772
+#: ldmain.c:788
msgid "Archive member included"
msgstr ""
-#: ldmain.c:773
+#: ldmain.c:789
msgid "because of file (symbol)"
msgstr ""
-#: ldmain.c:845
+#: ldmain.c:860
msgid "%X%C: multiple definition of `%T'\n"
msgstr ""
-#: ldmain.c:848
+#: ldmain.c:863
msgid "%D: first defined here\n"
msgstr ""
-#: ldmain.c:877
+#: ldmain.c:867
+msgid "%P: Disabling relaxation: it will not work with multiple definitions\n"
+msgstr ""
+
+#: ldmain.c:898
msgid "%B: warning: definition of `%T' overriding common\n"
msgstr ""
-#: ldmain.c:880
+#: ldmain.c:901
msgid "%B: warning: common is here\n"
msgstr ""
-#: ldmain.c:887
+#: ldmain.c:908
msgid "%B: warning: common of `%T' overridden by definition\n"
msgstr ""
-#: ldmain.c:890
+#: ldmain.c:911
msgid "%B: warning: defined here\n"
msgstr ""
-#: ldmain.c:897
+#: ldmain.c:918
msgid "%B: warning: common of `%T' overridden by larger common\n"
msgstr ""
-#: ldmain.c:900
+#: ldmain.c:921
msgid "%B: warning: larger common is here\n"
msgstr ""
-#: ldmain.c:904
+#: ldmain.c:925
msgid "%B: warning: common of `%T' overriding smaller common\n"
msgstr ""
-#: ldmain.c:907
+#: ldmain.c:928
msgid "%B: warning: smaller common is here\n"
msgstr ""
-#: ldmain.c:911
+#: ldmain.c:932
msgid "%B: warning: multiple common of `%T'\n"
msgstr ""
-#: ldmain.c:913
+#: ldmain.c:934
msgid "%B: warning: previous common is here\n"
msgstr ""
-#: ldmain.c:935 ldmain.c:974
+#: ldmain.c:955 ldmain.c:994
msgid "%P: warning: global constructor %s used\n"
msgstr ""
-#: ldmain.c:984
+#: ldmain.c:1004
msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n"
msgstr ""
-#: ldmain.c:1171
+#: ldmain.c:1188
msgid "%F%P: bfd_hash_table_init failed: %E\n"
msgstr ""
-#: ldmain.c:1178
+#: ldmain.c:1195
msgid "%F%P: bfd_hash_lookup failed: %E\n"
msgstr ""
-#: ldmain.c:1198
+#: ldmain.c:1215
msgid "%C: undefined reference to `%T'\n"
msgstr ""
-#: ldmain.c:1204
+#: ldmain.c:1221
msgid "%D: more undefined references to `%T' follow\n"
msgstr ""
-#: ldmain.c:1211
+#: ldmain.c:1228
msgid "%B: undefined reference to `%T'\n"
msgstr ""
-#: ldmain.c:1217
+#: ldmain.c:1234
msgid "%B: more undefined references to `%T' follow\n"
msgstr ""
-#: ldmain.c:1238 ldmain.c:1260 ldmain.c:1280
+#: ldmain.c:1254 ldmain.c:1275 ldmain.c:1294
msgid "%P%X: generated"
msgstr ""
-#: ldmain.c:1241
+#: ldmain.c:1257
msgid " relocation truncated to fit: %s %T"
msgstr ""
-#: ldmain.c:1263
+#: ldmain.c:1278
#, c-format
msgid "dangerous relocation: %s\n"
msgstr ""
-#: ldmain.c:1283
+#: ldmain.c:1297
msgid " reloc refers to symbol `%T' which is not being output\n"
msgstr ""
@@ -897,12 +935,12 @@ msgstr ""
msgid "%P%F: please report this bug\n"
msgstr ""
-#: ldver.c:35
+#: ldver.c:39
#, c-format
msgid "GNU ld version %s (with BFD %s)\n"
msgstr ""
-#: ldver.c:42 lexsup.c:887
+#: ldver.c:46 lexsup.c:961
msgid " Supported emulations:\n"
msgstr ""
@@ -910,593 +948,635 @@ msgstr ""
msgid "%P%F: bfd_new_link_order failed\n"
msgstr ""
-#: ldwrite.c:365
+#: ldwrite.c:321
+msgid "%F%P: clone section failed: %E\n"
+msgstr ""
+
+#: ldwrite.c:360
#, c-format
msgid "%8x something else\n"
msgstr ""
-#: ldwrite.c:526
+#: ldwrite.c:543
msgid "%F%P: final link failed: %E\n"
msgstr ""
-#: lexsup.c:155 lexsup.c:238 lexsup.c:244
+#: lexsup.c:159 lexsup.c:250
msgid "KEYWORD"
msgstr ""
-#: lexsup.c:155
+#: lexsup.c:159
msgid "Shared library control for HP/UX compatibility"
msgstr ""
-#: lexsup.c:158
+#: lexsup.c:162
msgid "ARCH"
msgstr ""
-#: lexsup.c:158
+#: lexsup.c:162
msgid "Set architecture"
msgstr ""
-#: lexsup.c:160 lexsup.c:307
+#: lexsup.c:164 lexsup.c:315
msgid "TARGET"
msgstr ""
-#: lexsup.c:160
+#: lexsup.c:164
msgid "Specify target for following input files"
msgstr ""
-#: lexsup.c:162 lexsup.c:201 lexsup.c:211 lexsup.c:220 lexsup.c:291
-#: lexsup.c:314 lexsup.c:348
+#: lexsup.c:166 lexsup.c:205 lexsup.c:217 lexsup.c:226 lexsup.c:297
+#: lexsup.c:322 lexsup.c:360
msgid "FILE"
msgstr ""
-#: lexsup.c:162
+#: lexsup.c:166
msgid "Read MRI format linker script"
msgstr ""
-#: lexsup.c:164
+#: lexsup.c:168
msgid "Force common symbols to be defined"
msgstr ""
-#: lexsup.c:168 lexsup.c:338 lexsup.c:340 lexsup.c:342
+#: lexsup.c:172 lexsup.c:350 lexsup.c:352 lexsup.c:354
msgid "ADDRESS"
msgstr ""
-#: lexsup.c:168
+#: lexsup.c:172
msgid "Set start address"
msgstr ""
-#: lexsup.c:170
+#: lexsup.c:174
msgid "Export all dynamic symbols"
msgstr ""
-#: lexsup.c:172
+#: lexsup.c:176
msgid "Link big-endian objects"
msgstr ""
-#: lexsup.c:174
+#: lexsup.c:178
msgid "Link little-endian objects"
msgstr ""
-#: lexsup.c:176 lexsup.c:179
+#: lexsup.c:180 lexsup.c:183
msgid "SHLIB"
msgstr ""
-#: lexsup.c:176
+#: lexsup.c:180
msgid "Auxiliary filter for shared object symbol table"
msgstr ""
-#: lexsup.c:179
+#: lexsup.c:183
msgid "Filter for shared object symbol table"
msgstr ""
-#: lexsup.c:181
+#: lexsup.c:185
msgid "Ignored"
msgstr ""
-#: lexsup.c:183
+#: lexsup.c:187
msgid "SIZE"
msgstr ""
-#: lexsup.c:183
+#: lexsup.c:187
msgid "Small data size (if no size, same as --shared)"
msgstr ""
-#: lexsup.c:186
+#: lexsup.c:190
msgid "FILENAME"
msgstr ""
-#: lexsup.c:186
+#: lexsup.c:190
msgid "Set internal name of shared library"
msgstr ""
-#: lexsup.c:188
+#: lexsup.c:192
msgid "LIBNAME"
msgstr ""
-#: lexsup.c:188
+#: lexsup.c:192
msgid "Search for library LIBNAME"
msgstr ""
-#: lexsup.c:190
+#: lexsup.c:194
msgid "DIRECTORY"
msgstr ""
-#: lexsup.c:190
+#: lexsup.c:194
msgid "Add DIRECTORY to library search path"
msgstr ""
-#: lexsup.c:192
+#: lexsup.c:196
msgid "EMULATION"
msgstr ""
-#: lexsup.c:192
+#: lexsup.c:196
msgid "Set emulation"
msgstr ""
-#: lexsup.c:194
+#: lexsup.c:198
msgid "Print map file on standard output"
msgstr ""
-#: lexsup.c:196
+#: lexsup.c:200
msgid "Do not page align data"
msgstr ""
-#: lexsup.c:198
+#: lexsup.c:202
msgid "Do not page align data, do not make text readonly"
msgstr ""
-#: lexsup.c:201
+#: lexsup.c:205
msgid "Set output file name"
msgstr ""
-#: lexsup.c:203
+#: lexsup.c:207
msgid "Optimize output file"
msgstr ""
-#: lexsup.c:205
+#: lexsup.c:209
msgid "Ignored for SVR4 compatibility"
msgstr ""
-#: lexsup.c:207
+#: lexsup.c:213
msgid "Generate relocateable output"
msgstr ""
-#: lexsup.c:211
+#: lexsup.c:217
msgid "Just link symbols (if directory, same as --rpath)"
msgstr ""
-#: lexsup.c:214
+#: lexsup.c:220
msgid "Strip all symbols"
msgstr ""
-#: lexsup.c:216
+#: lexsup.c:222
msgid "Strip debugging symbols"
msgstr ""
-#: lexsup.c:218
+#: lexsup.c:224
msgid "Trace file opens"
msgstr ""
-#: lexsup.c:220
+#: lexsup.c:226
msgid "Read linker script"
msgstr ""
-#: lexsup.c:222 lexsup.c:234 lexsup.c:277 lexsup.c:289 lexsup.c:334
-#: lexsup.c:351 lexsup.c:368
+#: lexsup.c:228 lexsup.c:242 lexsup.c:283 lexsup.c:295 lexsup.c:344
+#: lexsup.c:363 lexsup.c:380
msgid "SYMBOL"
msgstr ""
-#: lexsup.c:222
+#: lexsup.c:228
msgid "Start with undefined reference to SYMBOL"
msgstr ""
-#: lexsup.c:224
+#: lexsup.c:230
+msgid "Don't merge orphan sections with the same name"
+msgstr ""
+
+#: lexsup.c:232
msgid "Build global constructor/destructor tables"
msgstr ""
-#: lexsup.c:226
+#: lexsup.c:234
msgid "Print version information"
msgstr ""
-#: lexsup.c:228
+#: lexsup.c:236
msgid "Print version and emulation information"
msgstr ""
-#: lexsup.c:230
+#: lexsup.c:238
msgid "Discard all local symbols"
msgstr ""
-#: lexsup.c:232
+#: lexsup.c:240
msgid "Discard temporary local symbols"
msgstr ""
-#: lexsup.c:234
+#: lexsup.c:242
msgid "Trace mentions of SYMBOL"
msgstr ""
-#: lexsup.c:236 lexsup.c:316 lexsup.c:318
+#: lexsup.c:244 lexsup.c:324 lexsup.c:326
msgid "PATH"
msgstr ""
-#: lexsup.c:236
+#: lexsup.c:244
msgid "Default search path for Solaris compatibility"
msgstr ""
-#: lexsup.c:238
-msgid "Ignored for Solaris compatibility"
-msgstr ""
-
-#: lexsup.c:240
+#: lexsup.c:246
msgid "Start a group"
msgstr ""
-#: lexsup.c:242
+#: lexsup.c:248
msgid "End a group"
msgstr ""
-#: lexsup.c:244
+#: lexsup.c:250
msgid "Ignored for SunOS compatibility"
msgstr ""
-#: lexsup.c:246
+#: lexsup.c:252
msgid "Link against shared libraries"
msgstr ""
-#: lexsup.c:252
+#: lexsup.c:258
msgid "Do not link against shared libraries"
msgstr ""
-#: lexsup.c:260
+#: lexsup.c:266
msgid "Bind global references locally"
msgstr ""
-#: lexsup.c:262
+#: lexsup.c:268
msgid "Check section addresses for overlaps (default)"
msgstr ""
-#: lexsup.c:264
+#: lexsup.c:270
msgid "Do not check section addresses for overlaps"
msgstr ""
-#: lexsup.c:267
+#: lexsup.c:273
msgid "Output cross reference table"
msgstr ""
-#: lexsup.c:269
+#: lexsup.c:275
msgid "SYMBOL=EXPRESSION"
msgstr ""
-#: lexsup.c:269
+#: lexsup.c:275
msgid "Define a symbol"
msgstr ""
-#: lexsup.c:271
-msgid "Demangle symbol names"
+#: lexsup.c:277
+msgid "[=STYLE]"
msgstr ""
-#: lexsup.c:273
+#: lexsup.c:277
+msgid "Demangle symbol names [using STYLE]"
+msgstr ""
+
+#: lexsup.c:279
msgid "PROGRAM"
msgstr ""
-#: lexsup.c:273
+#: lexsup.c:279
msgid "Set the dynamic linker to use"
msgstr ""
-#: lexsup.c:275
+#: lexsup.c:281
msgid "Generate embedded relocs"
msgstr ""
-#: lexsup.c:277
+#: lexsup.c:283
msgid "Call SYMBOL at unload-time"
msgstr ""
-#: lexsup.c:279
+#: lexsup.c:285
msgid "Force generation of file with .exe suffix"
msgstr ""
-#: lexsup.c:281
+#: lexsup.c:287
msgid "Remove unused sections (on some targets)"
msgstr ""
-#: lexsup.c:284
+#: lexsup.c:290
msgid "Don't remove unused sections (default)"
msgstr ""
-#: lexsup.c:287
+#: lexsup.c:293
msgid "Print option help"
msgstr ""
-#: lexsup.c:289
+#: lexsup.c:295
msgid "Call SYMBOL at load-time"
msgstr ""
-#: lexsup.c:291
+#: lexsup.c:297
msgid "Write a map file"
msgstr ""
-#: lexsup.c:293
+#: lexsup.c:299
msgid "Do not demangle symbol names"
msgstr ""
-#: lexsup.c:295
+#: lexsup.c:301
msgid "Use less memory and more disk I/O"
msgstr ""
-#: lexsup.c:297
+#: lexsup.c:303
msgid "Allow no undefined symbols"
msgstr ""
-#: lexsup.c:299
+#: lexsup.c:305
+msgid "Allow undefined symbols in shared objects"
+msgstr ""
+
+#: lexsup.c:307
msgid "Don't warn about mismatched input files"
msgstr ""
-#: lexsup.c:301
+#: lexsup.c:309
msgid "Turn off --whole-archive"
msgstr ""
-#: lexsup.c:303
+#: lexsup.c:311
msgid "Create an output file even if errors occur"
msgstr ""
-#: lexsup.c:307
+#: lexsup.c:315
msgid "Specify target of output file"
msgstr ""
-#: lexsup.c:309
+#: lexsup.c:317
msgid "Ignored for Linux compatibility"
msgstr ""
-#: lexsup.c:311
+#: lexsup.c:319
msgid "Relax branches on certain targets"
msgstr ""
-#: lexsup.c:314
+#: lexsup.c:322
msgid "Keep only symbols listed in FILE"
msgstr ""
-#: lexsup.c:316
+#: lexsup.c:324
msgid "Set runtime shared library search path"
msgstr ""
-#: lexsup.c:318
+#: lexsup.c:326
msgid "Set link time shared library search path"
msgstr ""
-#: lexsup.c:320
+#: lexsup.c:328
msgid "Create a shared library"
msgstr ""
-#: lexsup.c:324
+#: lexsup.c:332
msgid "Sort common symbols by size"
msgstr ""
-#: lexsup.c:328
-msgid "Split output sections for each file"
+#: lexsup.c:336
+msgid "[=SIZE]"
msgstr ""
-#: lexsup.c:330
-msgid "COUNT"
+#: lexsup.c:336
+msgid "Split output sections every SIZE octets"
msgstr ""
-#: lexsup.c:330
+#: lexsup.c:338
+msgid "[=COUNT]"
+msgstr ""
+
+#: lexsup.c:338
msgid "Split output sections every COUNT relocs"
msgstr ""
-#: lexsup.c:332
+#: lexsup.c:340
msgid "Print memory usage statistics"
msgstr ""
-#: lexsup.c:334
+#: lexsup.c:342
+msgid "Display target specific options"
+msgstr ""
+
+#: lexsup.c:344
msgid "Do task level linking"
msgstr ""
-#: lexsup.c:336
+#: lexsup.c:346
msgid "Use same format as native linker"
msgstr ""
-#: lexsup.c:338
+#: lexsup.c:348
+msgid "SECTION=ADDRESS"
+msgstr ""
+
+#: lexsup.c:348
+msgid "Set address of named section"
+msgstr ""
+
+#: lexsup.c:350
msgid "Set address of .bss section"
msgstr ""
-#: lexsup.c:340
+#: lexsup.c:352
msgid "Set address of .data section"
msgstr ""
-#: lexsup.c:342
+#: lexsup.c:354
msgid "Set address of .text section"
msgstr ""
-#: lexsup.c:344
+#: lexsup.c:356
msgid "Output lots of information during link"
msgstr ""
-#: lexsup.c:348
+#: lexsup.c:360
msgid "Read version information script"
msgstr ""
-#: lexsup.c:351
+#: lexsup.c:363
msgid ""
"Take export symbols list from .exports, using\n"
"\t\t\t\tSYMBOL as the version."
msgstr ""
-#: lexsup.c:354
+#: lexsup.c:366
msgid "Warn about duplicate common symbols"
msgstr ""
-#: lexsup.c:356
+#: lexsup.c:368
msgid "Warn if global constructors/destructors are seen"
msgstr ""
-#: lexsup.c:359
+#: lexsup.c:371
msgid "Warn if the multiple GP values are used"
msgstr ""
-#: lexsup.c:361
+#: lexsup.c:373
msgid "Warn only once per undefined symbol"
msgstr ""
-#: lexsup.c:363
+#: lexsup.c:375
msgid "Warn if start of section changes due to alignment"
msgstr ""
-#: lexsup.c:366
+#: lexsup.c:378
msgid "Include all objects from following archives"
msgstr ""
-#: lexsup.c:368
+#: lexsup.c:380
msgid "Use wrapper functions for SYMBOL"
msgstr ""
-#: lexsup.c:370
+#: lexsup.c:382
msgid "[=WORDS]"
msgstr ""
-#: lexsup.c:370
+#: lexsup.c:382
msgid ""
"Modify problematic branches in last WORDS (1-10,\n"
"\t\t\t\tdefault 5) words of a page"
msgstr ""
-#: lexsup.c:520
+#: lexsup.c:532
#, c-format
msgid "%s: use the --help option for usage information\n"
msgstr ""
-#: lexsup.c:540
+#: lexsup.c:552
msgid "%P%F: unrecognized -a option `%s'\n"
msgstr ""
-#: lexsup.c:553
+#: lexsup.c:565
msgid "%P%F: unrecognized -assert option `%s'\n"
msgstr ""
-#: lexsup.c:644
+#: lexsup.c:608
+msgid "%F%P: unknown demangling style `%s'"
+msgstr ""
+
+#: lexsup.c:667
msgid "%P%F: invalid number `%s'\n"
msgstr ""
-#: lexsup.c:816
+#: lexsup.c:845
msgid "%P%F: -shared not supported\n"
msgstr ""
-#: lexsup.c:880
-msgid "Copyright 1997 Free Software Foundation, Inc.\n"
+#: lexsup.c:879
+#, c-format
+msgid "%s: Invalid argument to option \"--section-start\"\n"
+msgstr ""
+
+#: lexsup.c:890
+#, c-format
+msgid "%s: Missing argument(s) to option \"--section-start\"\n"
+msgstr ""
+
+#: lexsup.c:954
+msgid "Copyright 2000 Free Software Foundation, Inc.\n"
msgstr ""
-#: lexsup.c:881
+#: lexsup.c:955
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 ""
-#: lexsup.c:972
+#: lexsup.c:1047
#, c-format
msgid "%s: may not nest groups (--help for usage)\n"
msgstr ""
-#: lexsup.c:983
+#: lexsup.c:1058
#, c-format
msgid "%s: group ended before it began (--help for usage)\n"
msgstr ""
-#: lexsup.c:1000
+#: lexsup.c:1075
#, c-format
msgid "%s: Invalid argument to option \"mpc860c0\"\n"
msgstr ""
-#: lexsup.c:1056
+#: lexsup.c:1131
msgid "%P%F: invalid hex number `%s'\n"
msgstr ""
-#: lexsup.c:1068
+#: lexsup.c:1143
#, c-format
msgid "Usage: %s [options] file...\n"
msgstr ""
-#: lexsup.c:1070
+#: lexsup.c:1145
msgid "Options:\n"
msgstr ""
#. Note: Various tools (such as libtool) depend upon the
#. format of the listings below - do not change them.
-#: lexsup.c:1149
+#: lexsup.c:1224
#, c-format
msgid "%s: supported targets:"
msgstr ""
-#: lexsup.c:1157
+#: lexsup.c:1232
#, c-format
msgid "%s: supported emulations: "
msgstr ""
-#: lexsup.c:1162
+#: lexsup.c:1237
#, c-format
msgid "%s: emulation specific options:\n"
msgstr ""
-#: lexsup.c:1166
+#: lexsup.c:1241
#, c-format
msgid "Report bugs to %s\n"
msgstr ""
-#: mri.c:343
+#: mri.c:321
msgid "%P%F: unknown format type %s\n"
msgstr ""
-#: pe-dll.c:144
+#: pe-dll.c:146
#, c-format
msgid "%XUnsupported PEI architecture: %s\n"
msgstr ""
-#: pe-dll.c:377
+#: pe-dll.c:387
#, c-format
-msgid "%XError, duplicate EXPORT with oridinals: %s (%d vs %d)\n"
+msgid "%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n"
msgstr ""
-#: pe-dll.c:384
+#: pe-dll.c:394
#, c-format
msgid "Warning, duplicate EXPORT: %s\n"
msgstr ""
-#: pe-dll.c:446
+#: pe-dll.c:456
#, c-format
msgid "%XCannot export %s: symbol not defined\n"
msgstr ""
-#: pe-dll.c:452
+#: pe-dll.c:462
#, c-format
msgid "%XCannot export %s: symbol wrong type (%d vs %d)\n"
msgstr ""
-#: pe-dll.c:459
+#: pe-dll.c:469
#, c-format
msgid "%XCannot export %s: symbol not found\n"
msgstr ""
-#: pe-dll.c:584
+#: pe-dll.c:594
#, c-format
-msgid "%XError, oridinal used twice: %d (%s vs %s)\n"
+msgid "%XError, ordinal used twice: %d (%s vs %s)\n"
msgstr ""
-#: pe-dll.c:831
+#: pe-dll.c:844
#, c-format
msgid "%XError: %d-bit reloc in dll\n"
msgstr ""
-#: pe-dll.c:955
+#: pe-dll.c:970
#, c-format
msgid "%s: Can't open output def file %s\n"
msgstr ""
-#: pe-dll.c:1077
+#: pe-dll.c:1092
msgid "; no contents available\n"
msgstr ""
-#: pe-dll.c:1566
+#: pe-dll.c:1580
#, c-format
msgid "%XCan't open .lib file: %s\n"
msgstr ""
-#: pe-dll.c:1571
+#: pe-dll.c:1585
#, c-format
msgid "Creating library file: %s\n"
msgstr ""
diff --git a/contrib/binutils/ld/scripttempl/elf.sc b/contrib/binutils/ld/scripttempl/elf.sc
index 6c4741b..3c1bfb4 100644
--- a/contrib/binutils/ld/scripttempl/elf.sc
+++ b/contrib/binutils/ld/scripttempl/elf.sc
@@ -21,6 +21,7 @@
# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
# .bss section besides __bss_start.
# DATA_PLT - .plt should be in data segment, not text segment.
+# BSS_PLT - .plt should be in bss segment
# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
# EMBEDDED - whether this is for an embedded system.
# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
@@ -36,6 +37,26 @@
# when specifying the start address of the next.
#
+# Many sections come in three flavours. There is the 'real' section,
+# like ".data". Then there are the per-procedure or per-variable
+# sections, generated by -ffunction-sections and -fdata-sections in GCC,
+# and useful for --gc-sections, which for a variable "foo" might be
+# ".data.foo". Then there are the linkonce sections, for which the linker
+# eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
+# The exact correspondences are:
+#
+# Section Linkonce section
+# .text .gnu.linkonce.t.foo
+# .rodata .gnu.linkonce.r.foo
+# .data .gnu.linkonce.d.foo
+# .bss .gnu.linkonce.b.foo
+# .sdata .gnu.linkonce.s.foo
+# .sbss .gnu.linkonce.sb.foo
+# .sdata2 .gnu.linkonce.s2.foo
+# .sbss2 .gnu.linkonce.sb2.foo
+#
+# Each of these can also have corresponding .rel.* and .rela.* sections.
+
test -z "$ENTRY" && ENTRY=_start
test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
@@ -46,7 +67,9 @@ test "$LD_FLAG" = "N" && DATA_ADDR=.
INTERP=".interp ${RELOCATING-0} : { *(.interp) }"
PLT=".plt ${RELOCATING-0} : { *(.plt) }"
DYNAMIC=".dynamic ${RELOCATING-0} : { *(.dynamic) }"
-RODATA=".rodata ${RELOCATING-0} : { *(.rodata) ${RELOCATING+*(.rodata.*)} ${RELOCATING+*(.gnu.linkonce.r*)} }"
+RODATA=".rodata ${RELOCATING-0} : { *(.rodata) ${RELOCATING+*(.rodata.*)} ${RELOCATING+*(.gnu.linkonce.r.*)} }"
+SBSS2=".sbss2 ${RELOCATING-0} : { *(.sbss2) ${RELOCATING+*(.sbss2.*)} ${RELOCATING+*(.gnu.linkonce.sb2.*)} }"
+SDATA2=".sdata2 ${RELOCATING-0} : { *(.sdata2) ${RELOCATING+*(.sdata2.*)} ${RELOCATING+*(.gnu.linkonce.s2.*)} }"
CTOR=".ctors ${CONSTRUCTING-0} :
{
${CONSTRUCTING+${CTOR_START}}
@@ -127,13 +150,13 @@ SECTIONS
{
*(.rel.text)
${RELOCATING+*(.rel.text.*)}
- ${RELOCATING+*(.rel.gnu.linkonce.t*)}
+ ${RELOCATING+*(.rel.gnu.linkonce.t.*)}
}
.rela.text ${RELOCATING-0} :
{
*(.rela.text)
${RELOCATING+*(.rela.text.*)}
- ${RELOCATING+*(.rela.gnu.linkonce.t*)}
+ ${RELOCATING+*(.rela.gnu.linkonce.t.*)}
}
.rel.fini ${RELOCATING-0} : { *(.rel.fini) }
.rela.fini ${RELOCATING-0} : { *(.rela.fini) }
@@ -141,26 +164,26 @@ SECTIONS
{
*(.rel.rodata)
${RELOCATING+*(.rel.rodata.*)}
- ${RELOCATING+*(.rel.gnu.linkonce.r*)}
+ ${RELOCATING+*(.rel.gnu.linkonce.r.*)}
}
.rela.rodata ${RELOCATING-0} :
{
*(.rela.rodata)
${RELOCATING+*(.rela.rodata.*)}
- ${RELOCATING+*(.rela.gnu.linkonce.r*)}
+ ${RELOCATING+*(.rela.gnu.linkonce.r.*)}
}
${OTHER_READONLY_RELOC_SECTIONS}
.rel.data ${RELOCATING-0} :
{
*(.rel.data)
${RELOCATING+*(.rel.data.*)}
- ${RELOCATING+*(.rel.gnu.linkonce.d*)}
+ ${RELOCATING+*(.rel.gnu.linkonce.d.*)}
}
.rela.data ${RELOCATING-0} :
{
*(.rela.data)
${RELOCATING+*(.rela.data.*)}
- ${RELOCATING+*(.rela.gnu.linkonce.d*)}
+ ${RELOCATING+*(.rela.gnu.linkonce.d.*)}
}
.rel.ctors ${RELOCATING-0} : { *(.rel.ctors) }
.rela.ctors ${RELOCATING-0} : { *(.rela.ctors) }
@@ -173,30 +196,74 @@ SECTIONS
{
*(.rel.sdata)
${RELOCATING+*(.rel.sdata.*)}
- ${RELOCATING+*(.rel.gnu.linkonce.s*)}
+ ${RELOCATING+*(.rel.gnu.linkonce.s.*)}
}
.rela.sdata ${RELOCATING-0} :
{
*(.rela.sdata)
${RELOCATING+*(.rela.sdata.*)}
- ${RELOCATING+*(.rela.gnu.linkonce.s*)}
+ ${RELOCATING+*(.rela.gnu.linkonce.s.*)}
+ }
+ .rel.sbss ${RELOCATING-0} :
+ {
+ *(.rel.sbss)
+ ${RELOCATING+*(.rel.sbss.*)}
+ ${RELOCATING+*(.rel.gnu.linkonce.sb.*)}
+ }
+ .rela.sbss ${RELOCATING-0} :
+ {
+ *(.rela.sbss)
+ ${RELOCATING+*(.rela.sbss.*)}
+ ${RELOCATING+*(.rel.gnu.linkonce.sb.*)}
+ }
+ .rel.sdata2 ${RELOCATING-0} :
+ {
+ *(.rel.sdata2)
+ ${RELOCATING+*(.rel.sdata2.*)}
+ ${RELOCATING+*(.rel.gnu.linkonce.s2.*)}
+ }
+ .rela.sdata2 ${RELOCATING-0} :
+ {
+ *(.rela.sdata2)
+ ${RELOCATING+*(.rela.sdata2.*)}
+ ${RELOCATING+*(.rela.gnu.linkonce.s2.*)}
+ }
+ .rel.sbss2 ${RELOCATING-0} :
+ {
+ *(.rel.sbss2)
+ ${RELOCATING+*(.rel.sbss2.*)}
+ ${RELOCATING+*(.rel.gnu.linkonce.sb2.*)}
+ }
+ .rela.sbss2 ${RELOCATING-0} :
+ {
+ *(.rela.sbss2)
+ ${RELOCATING+*(.rela.sbss2.*)}
+ ${RELOCATING+*(.rela.gnu.linkonce.sb2.*)}
+ }
+ .rel.bss ${RELOCATING-0} :
+ {
+ *(.rel.bss)
+ ${RELOCATING+*(.rel.bss.*)}
+ ${RELOCATING+*(.rel.gnu.linkonce.b.*)}
+ }
+ .rela.bss ${RELOCATING-0} :
+ {
+ *(.rela.bss)
+ ${RELOCATING+*(.rela.bss.*)}
+ ${RELOCATING+*(.rela.gnu.linkonce.b.*)}
}
- .rel.sbss ${RELOCATING-0} : { *(.rel.sbss) }
- .rela.sbss ${RELOCATING-0} : { *(.rela.sbss) }
- .rel.bss ${RELOCATING-0} : { *(.rel.bss) }
- .rela.bss ${RELOCATING-0} : { *(.rela.bss) }
.rel.plt ${RELOCATING-0} : { *(.rel.plt) }
.rela.plt ${RELOCATING-0} : { *(.rela.plt) }
${OTHER_PLT_RELOC_SECTIONS}
.init ${RELOCATING-0} :
{
- ${INIT_START}
+ ${RELOCATING+${INIT_START}}
KEEP (*(.init))
- ${INIT_END}
+ ${RELOCATING+${INIT_END}}
} =${NOP-0}
- ${DATA_PLT-${PLT}}
+ ${DATA_PLT-${BSS_PLT-${PLT}}}
.text ${RELOCATING-0} :
{
${RELOCATING+${TEXT_START_SYMBOLS}}
@@ -205,19 +272,22 @@ SECTIONS
*(.stub)
/* .gnu.warning sections are handled specially by elf32.em. */
*(.gnu.warning)
- ${RELOCATING+*(.gnu.linkonce.t*)}
+ ${RELOCATING+*(.gnu.linkonce.t.*)}
${RELOCATING+${OTHER_TEXT_SECTIONS}}
} =${NOP-0}
- ${RELOCATING+_etext = .;}
- ${RELOCATING+PROVIDE (etext = .);}
.fini ${RELOCATING-0} :
{
- ${FINI_START}
+ ${RELOCATING+${FINI_START}}
KEEP (*(.fini))
- ${FINI_END}
+ ${RELOCATING+${FINI_END}}
} =${NOP-0}
+ ${RELOCATING+PROVIDE (__etext = .);}
+ ${RELOCATING+PROVIDE (_etext = .);}
+ ${RELOCATING+PROVIDE (etext = .);}
${WRITABLE_RODATA-${RODATA}}
.rodata1 ${RELOCATING-0} : { *(.rodata1) }
+ ${CREATE_SHLIB-${SDATA2}}
+ ${CREATE_SHLIB-${SBSS2}}
${RELOCATING+${OTHER_READONLY_SECTIONS}}
/* Adjust the address for the data segment. We want to adjust up to
@@ -230,7 +300,7 @@ SECTIONS
${RELOCATING+${DATA_START_SYMBOLS}}
*(.data)
${RELOCATING+*(.data.*)}
- ${RELOCATING+*(.gnu.linkonce.d*)}
+ ${RELOCATING+*(.gnu.linkonce.d.*)}
${CONSTRUCTING+SORT(CONSTRUCTORS)}
}
.data1 ${RELOCATING-0} : { *(.data1) }
@@ -243,6 +313,8 @@ SECTIONS
${DATA_PLT+${PLT}}
${RELOCATING+${OTHER_GOT_SYMBOLS}}
.got ${RELOCATING-0} : { *(.got.plt) *(.got) }
+ ${CREATE_SHLIB+${SDATA2}}
+ ${CREATE_SHLIB+${SBSS2}}
${TEXT_DYNAMIC-${DYNAMIC}}
/* We want the small data sections together, so single-instruction offsets
can access them all, and initialized data all before uninitialized, so
@@ -261,16 +333,23 @@ SECTIONS
${RELOCATING+${OTHER_BSS_SYMBOLS}}
.sbss ${RELOCATING-0} :
{
+ ${RELOCATING+PROVIDE (__sbss_start = .);}
+ ${RELOCATING+PROVIDE (___sbss_start = .);}
*(.dynsbss)
*(.sbss)
${RELOCATING+*(.sbss.*)}
+ ${RELOCATING+*(.gnu.linkonce.sb.*)}
*(.scommon)
+ ${RELOCATING+PROVIDE (__sbss_end = .);}
+ ${RELOCATING+PROVIDE (___sbss_end = .);}
}
+ ${BSS_PLT+${PLT}}
.bss ${RELOCATING-0} :
{
*(.dynbss)
*(.bss)
${RELOCATING+*(.bss.*)}
+ ${RELOCATING+*(.gnu.linkonce.b.*)}
*(COMMON)
/* Align here to ensure that the .bss section occupies space up to
_end. Align after .bss to ensure correct alignment even if the
@@ -310,7 +389,7 @@ SECTIONS
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
+ .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
diff --git a/contrib/binutils/ld/scripttempl/v850.sc b/contrib/binutils/ld/scripttempl/v850.sc
index 0a20954..90731de 100644
--- a/contrib/binutils/ld/scripttempl/v850.sc
+++ b/contrib/binutils/ld/scripttempl/v850.sc
@@ -4,13 +4,13 @@ OUTPUT_FORMAT("elf32-v850", "elf32-v850",
OUTPUT_ARCH(v850)
ENTRY(_start)
SEARCH_DIR(.);
-/*/critters/slug/grossman/install/sun4/v850-elf/lib*/
SECTIONS
{
/* This saves a little space in the ELF file, since the zda starts
at a higher location that the ELF headers take up. */
- .zdata ${ZDATA_START_ADDR} : {
+ .zdata ${ZDATA_START_ADDR} :
+ {
*(.zdata)
*(.zbss)
*(reszdata)
@@ -23,13 +23,14 @@ SECTIONS
section. Specifically it prevents the zdata
section from being marked READONLY. */
- .rozdata ${ROZDATA_START_ADDR} : {
+ .rozdata ${ROZDATA_START_ADDR} :
+ {
*(.rozdata)
*(romzdata)
*(romzbss)
}
- /* Read-only sections, merged into text segment: */
+ /* Read-only sections, merged into text segment. */
. = ${TEXT_START_ADDR};
.interp : { *(.interp) }
.hash : { *(.hash) }
@@ -58,9 +59,11 @@ SECTIONS
.init : { KEEP (*(.init)) } =0
.plt : { *(.plt) }
- .text : {
+ .text :
+ {
*(.text)
${RELOCATING+*(.text.*)}
+
/* .gnu.warning sections are handled specially by elf32.em. */
*(.gnu.warning)
*(.gnu.linkonce.t*)
@@ -73,45 +76,51 @@ SECTIONS
It contains a small lookup table at the start followed by the
code pointed to by entries in the lookup table. */
- .call_table_data ${CALL_TABLE_START_ADDR} : {
+ .call_table_data ${CALL_TABLE_START_ADDR} :
+ {
${RELOCATING+PROVIDE(__ctbp = .);}
*(.call_table_data)
- } = 0xff /* fill gaps with 0xff */
- .call_table_text : {
+ } = 0xff /* Fill gaps with 0xff. */
+
+ .call_table_text :
+ {
*(.call_table_text)
}
- .fini : { KEEP (*(.fini)) } =0
+ .fini : { KEEP (*(.fini)) } =0
.rodata : { *(.rodata) ${RELOCATING+*(.rodata.*)} *(.gnu.linkonce.r*) }
.rodata1 : { *(.rodata1) }
- .data : {
+ .data :
+ {
*(.data)
${RELOCATING+*(.data.*)}
*(.gnu.linkonce.d*)
CONSTRUCTORS
}
.data1 : { *(.data1) }
- .ctors : {
- ${RELOCATING+___ctors = .;}
+ .ctors :
+ {
+ ${CONSTRUCTING+___ctors = .;}
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
KEEP (*(SORT(.ctors.*)))
KEEP (*crtend(.ctors))
- ${RELOCATING+___ctors_end = .;}
+ ${CONSTRUCTING+___ctors_end = .;}
}
-
- .dtors : {
- ${RELOCATING+___dtors = .;}
+ .dtors :
+ {
+ ${CONSTRUCTING+___dtors = .;}
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
KEEP (*(SORT(.dtors.*)))
KEEP (*crtend.o(.dtors))
- ${RELOCATING+___dtors_end = .;}
+ ${CONSTRUCTING+___dtors_end = .;}
}
.got : { *(.got.plt) *(.got) }
.dynamic : { *(.dynamic) }
- .tdata ${TDATA_START_ADDR} : {
+ .tdata ${TDATA_START_ADDR} :
+ {
${RELOCATING+PROVIDE (__ep = .);}
*(.tbyte)
*(.tcommon_byte)
@@ -123,21 +132,26 @@ SECTIONS
/* We want the small data sections together, so single-instruction offsets
can access them all, and initialized data all before uninitialized, so
we can shorten the on-disk segment size. */
- .sdata ${SDATA_START_ADDR} : {
+
+ .sdata ${SDATA_START_ADDR} :
+ {
${RELOCATING+PROVIDE (__gp = . + 0x8000);}
*(.sdata)
}
/* See comment about .rozdata. */
- .rosdata ${ROSDATA_START_ADDR} : {
+ .rosdata ${ROSDATA_START_ADDR} :
+ {
*(.rosdata)
}
/* We place the .sbss data section AFTER the .rosdata section, so that
it can directly preceed the .bss section. This allows runtime startup
code to initialise all the zero-data sections by simply taking the
- value of '_edata' and zeroing until it reaches '_end' */
- .sbss : {
+ value of '_edata' and zeroing until it reaches '_end'. */
+
+ .sbss :
+ {
${RELOCATING+__sbss_start = .;}
*(.sbss)
*(.scommon)
@@ -184,7 +198,7 @@ SECTIONS
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
+ .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
@@ -192,17 +206,17 @@ SECTIONS
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
+ /* SGI/MIPS DWARF 2 extensions. */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
- /* User stack */
- .stack 0x200000 : {
+ /* User stack. */
+ .stack 0x200000 :
+ {
${RELOCATING+__stack = .;}
*(.stack)
}
- /* These must appear regardless of . */
}
EOF
diff --git a/contrib/binutils/ld/scripttempl/z8000.sc b/contrib/binutils/ld/scripttempl/z8000.sc
index 2b87930..646c880 100644
--- a/contrib/binutils/ld/scripttempl/z8000.sc
+++ b/contrib/binutils/ld/scripttempl/z8000.sc
@@ -5,7 +5,8 @@ ENTRY(_start)
SECTIONS
{
-.text ${BIG+ ${RELOCATING+ 0x0000000}} : {
+.text ${BIG+ ${RELOCATING+ 0x0000000}} :
+ {
*(.text)
*(.strings)
*(.rdata)
@@ -13,38 +14,40 @@ SECTIONS
.ctors ${BIG+ ${RELOCATING+ 0x2000000}} :
{
- ${RELOCATING+ ___ctors = . ; }
+ ${CONSTRUCTING+ ___ctors = . ; }
*(.ctors);
- ${RELOCATING+ ___ctors_end = . ; }
+ ${CONSTRUCTING+ ___ctors_end = . ; }
___dtors = . ;
*(.dtors);
- ${RELOCATING+ ___dtors_end = . ; }
+ ${CONSTRUCTING+ ___dtors_end = . ; }
}
-.data ${BIG+ ${RELOCATING+ 0x3000000}} : {
- *(.data)
+.data ${BIG+ ${RELOCATING+ 0x3000000}} :
+ {
+ *(.data)
}
.bss ${BIG+ ${RELOCATING+ 0x4000000}} :
- {
- ${RELOCATING+ __start_bss = . ; }
- *(.bss);
- *(COMMON);
- ${RELOCATING+ __end_bss = . ; }
- }
-
-.heap ${BIG+ ${RELOCATING+ 0x5000000}} : {
- ${RELOCATING+ __start_heap = . ; }
- ${RELOCATING+ . = . + 20k ; }
- ${RELOCATING+ __end_heap = . ; }
+ {
+ ${RELOCATING+ __start_bss = . ; }
+ *(.bss);
+ *(COMMON);
+ ${RELOCATING+ __end_bss = . ; }
+ }
+
+.heap ${BIG+ ${RELOCATING+ 0x5000000}} :
+ {
+ ${RELOCATING+ __start_heap = . ; }
+ ${RELOCATING+ . = . + 20k ; }
+ ${RELOCATING+ __end_heap = . ; }
}
.stack ${RELOCATING+ 0xf000 } :
{
- ${RELOCATING+ _stack = . ; }
- *(.stack)
- ${RELOCATING+ __stack_top = . ; }
- }
+ ${RELOCATING+ _stack = . ; }
+ *(.stack)
+ ${RELOCATING+ __stack_top = . ; }
+ }
}
EOF
diff --git a/contrib/binutils/libiberty/ChangeLog b/contrib/binutils/libiberty/ChangeLog
index dbd616b..dc1ef09 100644
--- a/contrib/binutils/libiberty/ChangeLog
+++ b/contrib/binutils/libiberty/ChangeLog
@@ -1,16 +1,740 @@
-2000-10-17 Philip Blundell <pb@futuretv.com>
-
- * cp-demangle.c, dyn-string.c, cplus-dem.c: Update from trunk
- version.
- * testsuite/demangle-expected, testsuite/regress-demangle:
- Likewise.
+2000-12-29 DJ Delorie <dj@redhat.com>
+
+ * fnmatch.c: Make the note about the origins of this file more
+ accurate, at least until we can sync with glibc.
+ * getopt.c: Ditto.
+ * getopt1.c: Ditto.
+ * md5.c: Ditto.
+ * obstack.c: Ditto.
- From 2000-06-04 Alex Samuel <samuel@codesourcery.com>
+2000-12-26 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * bsearch.c: New file.
+ * configure.in (funcs): Add bsearch.
+ (AC_CHECK_FUNCS): Likewise.
+ * configure, config.in: Regenerate.
+
+2000-12-13 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * safe-ctype.c: #include "ansidecl.h".
+ * strtod.c: Likewise.
+
+2000-12-13 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * strtoul.c: Include safe-ctype.h, not ctype.h.
+
+2000-12-07 Zack Weinberg <zack@wolery.stanford.edu>
+
+ * safe-ctype.c: New file.
+ * Makefile.in (CFILES): Add safe-ctype.c.
+ (REQUIRED_OFILES): Add safe-ctype.o.
+
+ * argv.c: Define ISBLANK and use it, not isspace.
+ * basename.c, cplus-dem.c, fnmatch.c, pexecute.c, strtod.c,
+ strtol.c, strtoul.c: Include safe-ctype.h, not ctype.h. Use
+ uppercase ctype macros. Don't test ISUPPER(c)/ISLOWER(c)
+ before calling TOLOWER(c)/TOUPPER(c).
+
+2000-12-07 Mike Stump <mrs@wrs.com>
+
+ * Makefile.in (distclean): When cleaning, remove testsuite.
+
+2000-12-05 Jason Merrill <jason@redhat.com>
+
+ * cp-demangle.c (cplus_demangle_v3): Check that it's a v3 mangled
+ name before allocating the dyn_string.
+
+2000-12-04 Jason Merrill <jason@redhat.com>
+
+ * cp-demangle.c: s/new_abi/v3/.
+ * cplus-dem.c: Likewise.
+ (current_demangling_style): Now auto_demangling.
+ (cplus_demangle): Try v3 demangling if AUTO_DEMANGLING.
+ (main): Use standard symbol chars for auto_demangling.
+
+2000-11-26 Mark Mitchell <mark@codesourcery.com>
+
+ * hashtab.c (higher_prime_number): Use a table, rather than a
+ seive, to find the next prime.
+
+2000-11-22 H.J. Lu <hjl@gnu.org>
+
+ * cplus-dem.c (main): Handle gnat_demangling.
+
+2000-11-22 Zack Weinberg <zack@wolery.stanford.edu>
+
+ * aclocal.m4 (LIB_AC_PROG_CC): Moved here from configure.in.
+ (AC_DEFINE_NOAUTOHEADER): New - work around bug in autoheader.
+ * configure.in: Call AC_C_INLINE and AC_C_CONST. Use three
+ argument form of AC_DEFINE in dummy definitions block. Use
+ AC_DEFINE_NOAUTOHEADER for real definitions of things defined
+ in dummy block. Preload cache variables instead of bypassing
+ tests, where possible.
+ * acconfig.h: Removed.
+
+ * xmalloc.c (xmalloc_failed): New function, does error
+ reporting on failed allocation.
+ (xmalloc, xcalloc, xrealloc): Use it.
+
+2000-11-21 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * cplus-dem.c (cplus_demangle): Fix formatting.
+ (grow_vect): Ditto.
+ (ada_demangle): Ditto.
+ (internal_cplus_demangle): Ditto.
+ (mop_up): Ditto.
+
+2000-11-21 H.J. Lu <hjl@gnu.org>
+
+ * cplus-dem.c (main): Handle java_demangling.
+
+2000-11-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * cplus-dem.c (grow_vect): Prototype.
+ (ada_demangle): Cast the arg of ctype macros to unsigned char.
+
+2000-11-15 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * cplus-dem.c (ada_demangle): Add back ATTRIBUTE_UNUSED for
+ parameter `option'.
+
+2000-11-15 Kenneth Block <kenneth.block@compaq.com>
+
+ * cplus-dem.c: Eliminate use of DEFUN, it is obsolete and cannot
+ be used in GCC.
+
+2000-11-15 Kenneth Block <kenneth.block@compaq.com>
+
+ * cplus-dem.c: Add gnat demangler. Add java to demangle style
+ list.
+
+2000-11-04 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * hashtab.c (htab_expand): Change to return int. Use calloc or
+ xcalloc depending on htab->return_allocation_failure. Return zero
+ if calloc fails.
+ (htab_create): Update comment to cover memory allocation.
+ (htab_try_create): New.
+ (htab_find_slot_with_hash): Return NULL if htab_expand fails.
+ Update comment to cover this.
+
+2000-11-03 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * hashtab.c: Change void * to PTR where necessary.
+ (htab_create, htab_expand): Correct formatting of comment before
+ function.
+
+2000-10-22 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (string_list_def): Add caret_position and comments.
+ (result_caret_pos): New macro.
+ (result_append_string): Rename to...
+ (result_add_string): ... this, and insert at caret position.
+ Rename throughout.
+ (result_append): Rename to...
+ (result_add): ... this, and insert at caret position. Rename
+ throughout.
+ (result_append_char): Rename to...
+ (result_add_char): ... this, and insert at caret position. Rename
+ throughout.
+ (result_append_space): Remove.
+ (string_list_new): Initialize caret position.
+ (result_add_separated_char): Use caret position.
+ (result_get_caret): New funtion.
+ (result_set_caret): Likewise.
+ (result_shift_caret): Likewise.
+ (result_previous_char_is_space): Likewise.
+ (substitution_start): Use caret position.
+ (substitution_add): Likewise.
+ (demangling_new): Initialize caret position.
+ (demangle_encoding): Use caret position.
+ (demanglin_nested_name): Put CV qualifiers after name.
+ (demangle_type_ptr): Use switch statement. Handle pointers to
+ arrays. Don't use result_append_space. Use caret position.
+ (demangle_type): Emit CV qualifiers after underlying type. Adjust
+ call to demangle_array_type.
+ (demangle_array_type): Add parameter to handle pointers to arrays.
+
+2000-10-01 Mark Mitchell <mark@codesourcery.com>
+
+ * splay-tree.c (splay_tree_insert): Fix formatting.
+
+2000-09-16 Mark Mitchell <mark@codesourcery.com>
+
+ * splay-tree.c (splay_tree_predecessor): Fix typo in comment.
+
+2000-09-14 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * splay-tree.c: #include <stdio.h>.
+
+2000-09-14 Hans-Peter Nilsson <hp@axis.com>
+
+ * testsuite/demangle-expected: Add two tests for anonymous
+ namespaces.
+ * cplus-dem.c (gnu_special): Handle anonymous namespaces.
+
+2000-09-10 Mark Mitchell <mark@codesourcery.com>
+
+ * splay-tree.c (splay_tree_predecessor): New function.
+ (splay_tree_successor): Likewise.
+
+2000-09-10 Hans-Peter Nilsson <hp@axis.com>
+
+ * testsuite/demangle-expected: Add four tests for type_info
+ mangling.
+ * cplus-dem.c (gnu_special): Use do_type, not demangle_fund_type,
+ for a non-template non-qualified type_info function or node.
+
+2000-09-08 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c: Fix copyright banner.
+
+2000-09-07 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * md5.c: #include "ansidecl.h".
+
+2000-09-06 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (status_allocation_failed): Rearrange whitespace.
+ (demangle_type): Handle substitution candidates correctly in the
+ face of special substitutions.
+
+2000-09-05 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (demangle_encoding): Rename variable.
+ (demangle_name): Rename parameter. Handle return type
+ suppression.
+ (demangle_nested_name): Rename parameter.
+ (demangle_prefix): Likewise. Change return type suppression.
+ (demangle_unqualified_name): Add parameter. Flag constructors and
+ conversion operators.
+ (demangle_special_name): Fix comment.
+ (demangle_type): Rename variable.
+ (demangle_bare_function_type): Check for missing return type and
+ parameter.
+ (demangle_class_enum_type): Rename parameter.
+ (demangle_discriminator): Fix misspelling in comment.
+
+2000-08-31 DJ Delorie <dj@redhat.com>
+
+ * configure.in (Cygwin): special case cygwin only when we're
+ building cygwin, not when we're hosting cygwin.
+
+2000-09-04 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (demangle_template_arg): Eat an `E' after an
+ <expression>.
+
+2000-09-04 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (demangle_type_ptr): Increment position past
+ pointer and reference characters.
+
+2000-09-04 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (demangle_nv_offset): New function.
+ (demangle_v_offset): Likewise.
+ (demangle_call_offset): Likewise.
+ (demangle_special_name): Update thunk demangling to comply with
+ ABI changes.
+
+2000-09-03 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (ANONYMOUS_NAMESPACE_PREFIX): New macro.
+ (substitution_def): Remove template_parm_number.
+ (NOT_TEMPLATE_PARM): Remove.
+ (result_insert_string): New macro.
+ (result_insert): Likewise.
+ (result_insert_char): Likewise.
+ (substitution_add): Remove last parameter. Don't store template
+ parm number.
+ (BFT_NO_RETURN_TYPE): Define as NULL.
+ (demangle_encoding): Adjust call to demangle_bare_function_type.
+ (demangle_name): Adjust substitution. Adjust call to
+ substitution_add.
+ (demangle_prefix): Adjust call to substitution_add.
+ (demangle_identifier): Handle anonymous namespaces.
+ (demangle_operator_name): Change demangling of vendor-extended
+ operator to match ABI changes.
+ (demangle_type_ptr): Change parameters. Make recursive. Handle
+ substitutions here.
+ (demangle_type): Adjust calls to demangle_template_param,
+ substitution_add, and demangle_type_ptr. Fix substitution of
+ templated types.
+ (demangle_function_type): Change parameter to a pointer.
+ (demangle_bare_function_type): Likewise. Adjust insertion point.
+ (demangle_template_param): Remove last parameter.
+ (demangle_expr_primary): Remove unused variable. Adjust call to
+ demangle_template_param.
+ (is_mangled_char): Accept `$' and `.'.
+ * cplus-dem.c (gnu_new_abi_symbol_characters): Add '$' and '.'.
+ * dyn-string.c (dyn_string_insert_char): New function.
+
+2000-08-31 Hans-Peter Nilsson <hp@axis.com>
+
+ * testsuite/demangle-expected: Add nine tests for
+ underscore-after-number followed by five tests for name-signature
+ delimiter.
+
+2000-08-28 Richard Henderson <rth@cygnus.com>
+
+ * Makefile.in (md5.o): Depend on config.h.
+
+2000-08-28 Jason Merrill <jason@redhat.com>
+
+ * Makefile.in (REQUIRED_OFILES): Add md5.o.
+ (CFILES): Add md5.c.
+ * md5.c: New file.
+
+2000-08-27 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (demangle_name): Initialize template_p in local
+ name case. Don't re-add substitutions as candidates.
+ (demangle_nested_name): Use <unqualified-name>.
+ (demangle_prefix): Likewise. Don't add template names as
+ substitution candidates twice, or re-add a substitution or the
+ last prefix component.
+ (demangle_local_name): Adjust output format.
+
+2000-08-25 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (result_add_separated_char): Change parameter to
+ int.
+ (substitution_add): Don't check for duplicates. Check if
+ previously allocated size is zero.
+ (demangle_name): Remove duplicate check for std substitution.
+ Clear template flag appropriately.
+ (demangle_prefix): Remove argument to demangle_substitution.
+ Don't check that template flag is already set.
+ (demangle_operator_name): Add pt operator.
+ (demangle_type): Don't treat r as built-in type. Remove argument
+ to demangle_substitution. Fix substitution candidate mechanics.
+ Handle <template-template-parm>s. Improve comments.
+ (demangle_template_param): Don't handle template arg lists here.
+ (demangle_substitution): Remove parameter.
+ (print_usage): Remove extra fprintf option.
+
+2000-08-24 Greg McGary <greg@mcgary.org>
+
+ * libiberty/random.c (end_ptr): Revert previous change.
+
+2000-08-24 Greg McGary <greg@mcgary.org>
+
+ * libiberty/cplus-dem.c (cplus_demangle_opname, cplus_mangle_opname,
+ demangle_expression, demangle_function_name): Use ARRAY_SIZE.
+ * libiberty/random.c (end_ptr): Likewise.
+
+2000-08-23 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (result_close_template_list): Remove function.
+ (result_add_separated_char): New function.
+ (result_open_template_list): New macro.
+ (result_close_template_list): Likewise.
+ (demangle_prefix): Don't set template_p if the
+ prefix ends with a ctor name.
+ (demangle_type_ptr): Remove duplicate RETURN_IF_ERROR.
+ (demangle_type): Check for template args after substitution.
+ (demangle_template_args): Use result_open_template_list.
+
+2000-08-02 Zack Weinberg <zack@wolery.cumb.org>
+
+ * pexecute.c: Don't use vfork. Initialize 'pid' before retry loop.
+
+2000-07-26 Dave Pitts <dpitts@cozx.com>
+
+ * config/mh-openedition.h: Added -DLE370 definition.
+
+2000-07-26 Mark Elbrecht <snowball3@bigfoot.com>
+
+ * pexecute.c (pexecute) [__MSDOS__]: Change __GO32__ to
+ __DJGPP__. Use P_WAIT instead of constant in the spawnv* call.
+ Cast program to 'char *' in errmsg_arg assignment.
+ (PWAIT_ERROR): Define.
+ (pwait): Use PWAIT_ERROR. Adjust DJGPP's status code to conform
+ to DJGPP's WIF* macros.
+
+2000-07-27 RodneyBrown <RodneyBrown@pmsc.com>
+ Jeff Law <law@cygnus.com>
+
+ * getcwd.c: Include string.h, stdlib.h for prototypes
+
+ * Makefile.in (rename.o, waitpid.o): Depend on config.h
+ * rename.c: Include config.h, unistd.h
+ * waitpid.c: Include config.h, sys/wait.h
+
+2000-07-24 Hans-Peter Nilsson <hp@axis.com>
+
+ * cplus-dem.c (work_stuff_copy_to_from): New.
+ (delete_non_B_K_work_stuff): New.
+ (delete_work_stuff): New.
+ (mop_up): Break out work_stuff partly destruction to
+ delete_non_B_K_work_stuff.
+ (iterate_demangle_function): New.
+ (demangle_prefix): Call iterate_demangle_function instead of
+ demangle_function_name. Leave handling of name-signature
+ __-delimiters to iterate_demangle_function.
+ (demangle_integral_value): Strip an optional
+ following underscore cautiously. Handle negative numbers.
+
+2000-07-24 Daniel Berlin <dberlin@redhat.com>
+
+ * cplus-dem.c (demangle_signature): Change if (GNU_DEMANGLING) to
+ if (AUTO_DEMANGLING || GNU_DEMANGLING)
+
+2000-07-21 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (demangle_ctor_dtor_name): Remove not-in-charge
+ allocating ctor mangling.
+ (demangle_array_type): Handle empty and non-constant array length.
+
+2000-07-23 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+ Jeff Law <law@cygnus.com>
+
+ * configure.in (AC_CHECK_HEADERS): Add time.h.
+ (AC_HEADER_TIME): Add check.
+ * configure, config.in: Regenerate.
+ * getruntime.c: Portably #include <sys/time.h> and/or <time.h>.
+
+ * configure.in (AC_CHECK_HEADERS): Add limits.h.
+ * configure, config.in: Regenerate.
+ * sort.c: Portably #include <limits.h> and/or <sys/param.h>.
+ * strtol.c, strtoul.c: #include "config.h". Portably #include
+ <limits.h> and/or <sys/param.h>.
+ * Makefile.in (strtol.o, strtoul.o): Update dependencies.
+
+ * aclocal.m4 (libiberty_AC_DECLARE_ERRNO): New macro.
+ * configure.in (libiberty_AC_DECLARE_ERRNO): Add check.
+ * configure, config.in: Regenerate.
+ * pexecute.c, strtol.c, strtoul.c: Declare errno if necessary.
+
+ * cp-demangle.c, mkstemps.c: #include <sys/types.h>.
+
+2000-07-21 Mike Stump <mrs@wrs.com>
+
+ * Makefile.in (xexit.o): Add dependency for config.h in xexit.c.
+ * (vasprintf.o): Add dependency for config.h in vasprintf.c.
+
+2000-07-21 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * cp-demangle.c (cp_demangle_type): Wrap in IN_LIBGCC2.
+
+ * setenv.c (setenv): Initialize variable `ep'.
+
+ * sigsetmask.c (abort): Prototype.
+
+ * vasprintf.c: Include config.h. Check ANSI_PROTOTYPES, not
+ __STDC__ for stdarg.h include.
+ (int_vasprintf): Prototype.
+ (checkit): Prototype. Use VPARAMS/ANSI_PROTOTYPES/VA_START in
+ definition. Cast `global_total_width' in comparison.
+ (main): Prototype. Return a value.
+
+ * vfork.c (fork): Prototype.
+
+ * xexit.c: Include config.h.
+
+2000-07-20 Joseph S. Myers <jsm28@cam.ac.uk>
+
+ * cplus-dem.c (demangle_fund_type): Make 'dec' an unsigned int,
+ and print it with %u.
+
+2000-07-17 Hans-Peter Nilsson <hp@axis.com>
+
+ * testsuite/regress-demangle (failed test): Show result and
+ expected output.
+
+2000-07-07 Andrew Haley <aph@cygnus.com>
+
+ * cplus-dem.c (main): fflush() after emitting last char before
+ waiting for input.
+
+2000-06-28 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (demangle_encoding): Accept no substitutions.
+ (demangle_name): Handle <substitution> followed by
+ <unqualified-template-name>.
+ (demangle_type): Follow special substitutions with
+ <class-enum-type>
+ (demangle_subtitution): Set template_p for special substitutions.
+ (main): Fix typos.
+
+2000-06-27 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (demangle_special_name): Swap base and derived
+ class when demangling construction vtables.
+
+2000-06-21 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c: Don't include ctype.h.
+ (IS_DIGIT): New macro.
+ (IS_ALPHA): Likewise. Use IS_DIGIT and IS_ALPHA throughout
+ instead of isdigit and isalpanum.
+ (demangling_def): Make name and next const pointers.
+ (STATUS_ALLOCATION_FAILED): New status code.
+ (dyn_string_append_space): Handle failure in
+ dyn_string_append_char.
+ (int_to_dyn_string): Likewise. Change return value to status_t.
+ (string_list_new): Handle failure of dyn_string_init.
+ (result_close_template_list): Change return type to status_t.
+ Handle failure in dyn_string_append.
+ (result_push): Change return value to status_t. Handle failure in
+ string_list_new. Handle failure of result_push throughout.
+ (substitution_add): Change return value to status_t. Handle
+ dyn_string failures. Handle failure of substitution_add
+ throughout.
+ (template_arg_list_new): Return NULL on allocation failure.
+ (result_append_string): Return STATUS_ALLOCATION_FAILED on error.
+ Handle error result throughout.
+ (result_append): Likewise.
+ (result_append_char): Likewise.
+ (result_append_space): Likewise.
+ (demangling_new): Make argument a const pointer. Handle
+ allocation failures.
+ (demangle_template_args): Handle failure in template_arg_list_new
+ and result_close_template_list.
+ (demangle_discriminator): Return if int_to_dyn_string fails.
+ (cp_demangle): Likewise.
+ (cp_demangle_type): New function.
+ (cplus_demangle_new_abi): Don't call dyn_string_delete. Abort on
+ memory allocation failure.
+ (main): Likewise.
+ * dyn-string.c (RETURN_ON_ALLOCATION_FAILURE): Define if
+ IN_LIBGCC2.
+ (dyn_string_init): Change return value to int. Handle
+ RETURN_ON_ALLOCATION_FAILURE case.
+ (dyn_string_new): Handle RETURN_ON_ALLOCATION_FAILURE case.
+ (dyn_string_release): Delete the dyn_string.
+ (dyn_string_resize): Handle RETURN_ON_ALLOCATION_FAILURE case.
+ (dyn_string_copy): Change return type to int.
+ (dyn_string_copy_cstr): Likewise.
+ (dyn_string_prepend): Likewise.
+ (dyn_string_prepend_cstr): Likewise.
+ (dyn_string_insert): Likewise.
+ (dyn_string_insert_cstr): Likewise.
+ (dyn_string_append): Likewise.
+ (dyn_string_append_cstr): Likewise.
+ (dyn_string_append_char): Likewise.
+ (dyn_string_substring): Likewise.
+
+2000-06-09 Zack Weinberg <zack@wolery.cumb.org>
+
+ * cp-demangle.c (demangle_operator_name): Add spaces before
+ names beginning with a letter: delete, delete[], new, new[],
+ sizeof.
+ (demangle_special_name): Handle TF <type> and TJ <type>.
+
+Thu Jun 8 18:52:24 2000 Philippe De Muyter <phdm@macqel.be>
+
+ * cp-demangle.c (template_arg_list_new): Revert previous PARAMS patch.
+
+Thu Jun 8 09:25:54 2000 Philippe De Muyter <phdm@macqel.be>
+
+ * cp-demangle.c (stdio.h): File included unconditionaly.
+ (template_arg_list_new): Parameter list is PARAMS ((void)), not ().
+ * dyn-string.c (stdio.h): File included.
+ * partition.c (partition_print): No `&' needed to take the address of
+ a function.
+
+2000-06-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * configure.in (ac_libiberty_warn_cflags): Add -pedantic.
+
+ * choose-temp.c (try, choose_temp_base, make_temp_file): Constify.
+
+ * cp-demangle.c (demangle_char): Change parameter from char to int.
+ (demangle_expression, demangle_expr_primary): Remove extra
+ semi-colon in prototype.
+
+ * dyn-string.c (dyn_string_append_char): Change parameter from
+ char to int.
+
+ * memcmp.c (memcmp): Constify.
+
+ * mkstemps.c (gcc_uint64_t): Mark GNUC `long long' case with
+ __extension__.
+
+ * partition.c (elem_compare): Prototype. Don't cast away
+ const-ness.
+
+ * setenv.c (setenv): Use braces to avoid ambiguous `else'.
+
+2000-06-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * Makefile.in (cp-demangle.o): Depend on $(INCDIR)/demangle.h.
+
+ * cp-demangle.c: Include demangle.h.
+ (template_arg_list_new): DeANSIfy.
+ (cp_demangle): Make static and add prototype.
+ (operator_code, operators): Constify.
+ (demangle_operator_name): Likewise for variables `p1', `p2' and `p'.
+
+2000-06-05 Alex Samuel <samuel@codesourcery.com>
+
+ * cp-demangle.c (demangle_prefix): Cast argument to isdigit to
+ unsigned char.
+ (demangle_unqualified_name): Likewise.
+ (demangle_number_literally): Likewise.
+ (demangle_type): Likewise.
+ (demangle_substitution): Likewise.
+ (is_mangled_char): Likewise, for isalnum.
+
+2000-06-04 Alex Samuel <samuel@codesourcery.com>
+
* Makefile.in (CFILES): Add cp-demangle.c and dyn-string.c.
(REQUIRED_OFILES): Add cp-demangle.o and dyn-string.o.
(cp-demangle.o): New dependency.
(dyn-string.o): Likewise.
+ * dyn-string.c: Move here from gcc/dyn-string.c. Add new functions.
+
+ * cplus-dem.c (libiberty_demanglers): Add initializer for new-ABI
+ demangler.
+ (cplus_demangle): Call cplus_demangle_new_abi if in new-ABI
+ demangling mode.
+ (gnu_new_abi_symbol_characters): New function.
+ (main): Use gnu_new_abi_symbol_characters. * cp-demangle.c: New
+ file.
+ * cp-demangle.c: New file.
+
+Tue May 30 16:45:25 2000 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * floatformat.c: Add name to each floatformat field.
+
+Tue May 30 15:07:52 2000 Jeffrey A Law (law@cygnus.com)
+
+ * Makefile.in (objalloc.o): Depend on config.h
+
+2000-05-29 Zack Weinberg <zack@wolery.cumb.org>
+
+ * hashtab.c, partition.c, sort.c, xmemdup.c: Include string.h
+ if HAVE_STRING_H.
+ * pexecute.c, xexit.c: Include stdlib.h if HAVE_STDLIB_H.
+ * objalloc.c: Include config.h. Include stdlib.h and don't
+ declare malloc or free if HAVE_STDLIB_H.
+ * strerror.c, strsignal.c: Include stdlib.h if HAVE_STDLIB_H,
+ else declare malloc without prototype. Include string.h if
+ HAVE_STRING_H, else declare memset without prototype. Don't
+ include stddef.h.
+
+2000-05-23 Mike Stump <mrs@wrs.com>
+
+ * Makefile.in (xmalloc.o): Add dependency for config.h, fixes make
+ -j3.
+
+2000-05-18 J. David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * xmalloc.c: Include config.h for HAVE_SBRK definition.
+
+2000-05-16 Horst von Brand <vonbrand@sleipnir.valparaiso.cl>
+
+ * hashtab.c (hash_pointer): Delete low-order bits which are
+ probably zero, also eliminate a warning on alpha.
+
+2000-05-15 David Edelsohn <edelsohn@gnu.org>
+
+ * Makefile.in: Change "pic" to depend on $(PICFLAG), not
+ on $(enable_shared).
+
+2000-05-10 Jakub Jelinek <jakub@redhat.com>
+
+ * config.table: Use mh-sparcpic for sparc*-*-*.
+
+2000-05-08 Nick Clifton <nickc@cygnus.com>
+
+ * Makefile.in (CFILES): Add strncmp.c.
+ (NEEDED): Add strncmp.
+
+2000-05-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * cplus-dem.c (cplus_demangle_opname, demangle_function_name):
+ Cast the arguments to `islower' to `unsigned char'.
+ (print_demangler_list): Prototype.
+
+Thu May 4 17:14:41 2000 Philippe De Muyter <phdm@macqel.be>
+
+ * sort.c (UCHAR_MAX): Provide fallback definition.
+
+2000-04-29 Alexandre Oliva <aoliva@cygnus.com>
+
+ * Makefile.in (maintainer-clean-subdir): Fix handling of empty
+ SUBDIRS.
+
+2000-04-28 Kenneth Block <block@zk3.dec.com>
+ Jason Merrill <jason@casey.cygnus.com>
+
+ * cplus-dem.c (libiberty_demanglers): New table for demangle styles.
+ (cplus_demangle_set_style): New function for setting style.
+ (cplus_demangle_name_to_style): New function to translate name.
+
+2000-04-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * aclocal.m4: New file with new test libiberty_AC_FUNC_STRNCMP.
+
+ * configure.in (AC_CHECK_HEADERS): Add sys/mman.h fcntl.h.
+ (libiberty_AC_FUNC_STRNCMP): Invoke.
+
+ * strncmp.c: New file.
+
+Thu Apr 27 16:58:43 MET DST 2000 Jan Hubicka <jh@suse.cz>
+
+ * hashtab.c (htab_expand): Add prototype.
+ (find_empty_slot_for_expand): Likewise.
+
+2000-04-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * hashtab.c (hash_pointer, eq_pointer): Make definition static to
+ match prototype.
+ (htab_expand): Cast the return value of xcalloc.
+
+2000-04-24 Mark Mitchell <mark@codesourcery.com>
+
+ * hashtab.c (hash_pointer): New function.
+ (eq_pointer): Likewise.
+ (htab_hash_pointer): New variable.
+ (htab_eq_pointer): Likewise.
+
+2000-04-23 Mark Mitchell <mark@codesourcery.com>
+
+ * sort.c (sort_pointers): Fix endianness bugs.
+
+ * sort.c: New file.
+ * Makefile.in (CFILES): Add sort.c
+ (REQUIRED_OFILES): Add sort.o.
+ (sort.o): New target.
+
+2000-04-21 Michael Sokolov <msokolov@ivan.Harhan.ORG>
+
+ * Makefile.in (*-subdir): Revamp slightly to avoid losing on
+ 4.3BSD systems.
+
+Tue Apr 18 16:23:31 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * hashtab.c: Various minor cleanups.
+ (htab_find_slot_with_hash): INSERT is now enum insert_option.
+ (htab_find_slot): Likewise.
+
+2000-04-16 Dave Pitts <dpitts@cozx.com>
+
+ * cplus-dem.c (cplus_demangle_opname): Changed to use islower.
+
+2000-04-05 Richard Henderson <rth@cygnus.com>
+
+ * splay-tree.c (splay_tree_remove): New.
+
+2000-03-30 Mark Mitchell <mark@codesourcery.com>
+
+ * hashtab.c (find_empty_slot_for_expand): Use hashval_t for hash
+ codes.
+ (htab_find_with_hash): Likewise.
+ (htab_find_slot_with_hash): Likewise.
+
+2000-03-29 Zack Weinberg <zack@wolery.cumb.org>
+
+ * hashtab.c (htab_find_with_hash): Avoid calculating hash2
+ unless it will be used. Rearrange loop for better
+ optimization.
+ (higher_prime_number): Add static prototype.
+
Thu Mar 16 01:33:58 2000 Jeffrey A Law (law@cygnus.com)
* Makefile.in (partition.o): Depend on config.h
@@ -32,7 +756,7 @@ Thu Mar 16 01:33:58 2000 Jeffrey A Law (law@cygnus.com)
(REQUIRED_OFILES): Add partition.o.
(partition.o): New rule.
* partition.c: New file.
-
+
2000-03-09 Zack Weinberg <zack@wolery.cumb.org>
* hashtab.c (htab_create): Set del_f.
@@ -3016,7 +3740,7 @@ Thu Feb 11 22:20:47 1993 Fred Fish (fnf@cygnus.com)
* cplus-dem.c (string_prepends): Used now, remove #if 0.
* cplus-dem.c (demangle_signature): Call demangle_qualified
with prepending.
- * cplus_dem.c (gnu_special): Recognize static data members that
+ * cplus-dem.c (gnu_special): Recognize static data members that
use qualified names.
* cplus-dem.c (demangle_qualified): Accumulate qualifiers in a
temporary buffer and the prepend or append them to the result,
diff --git a/contrib/binutils/libiberty/Makefile.in b/contrib/binutils/libiberty/Makefile.in
index 5858a50..0eab5a6 100644
--- a/contrib/binutils/libiberty/Makefile.in
+++ b/contrib/binutils/libiberty/Makefile.in
@@ -1,6 +1,6 @@
#
# Makefile
-# Copyright (C) 1990, 91, 00 - 99, 2000
+# Copyright (C) 1990, 91-99, 2000
# Free Software Foundation
#
# This file is part of the libiberty library.
@@ -108,8 +108,9 @@ INCDIR=$(srcdir)/$(MULTISRCTOP)../include
COMPILE.c = $(CC) -c @DEFS@ $(LIBCFLAGS) -I. -I$(INCDIR) $(HDEFINES) @ac_libiberty_warn_cflags@
.c.o:
- test x"$(enable_shared)" != xyes || \
- $(COMPILE.c) $(PICFLAG) $< -o pic/$@
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $< -o pic/$@; \
+ else true; fi
$(COMPILE.c) $<
info: info-subdir
@@ -125,26 +126,27 @@ HFILES = alloca-conf.h
# configure.in.
CFILES = asprintf.c alloca.c argv.c atexit.c basename.c bcmp.c bcopy.c \
bzero.c calloc.c choose-temp.c clock.c concat.c cplus-dem.c \
- cp-demangle.c dyn-string.c fdmatch.c \
- fnmatch.c getcwd.c getpwd.c getopt.c getopt1.c getpagesize.c \
- getruntime.c floatformat.c hashtab.c hex.c index.c insque.c memchr.c \
+ cp-demangle.c dyn-string.c fdmatch.c fnmatch.c getcwd.c \
+ getpwd.c getopt.c getopt1.c getpagesize.c getruntime.c \
+ floatformat.c hashtab.c hex.c index.c insque.c md5.c memchr.c \
memcmp.c memcpy.c memmove.c memset.c mkstemps.c objalloc.c obstack.c \
- partition.c pexecute.c putenv.c random.c rename.c rindex.c \
- setenv.c sigsetmask.c spaces.c splay-tree.c strcasecmp.c \
- strncasecmp.c strchr.c strdup.c strerror.c strrchr.c \
- strsignal.c strstr.c strtod.c strtol.c strtoul.c tmpnam.c \
- vasprintf.c vfork.c vfprintf.c vprintf.c vsprintf.c waitpid.c \
- xatexit.c xexit.c xmalloc.c xmemdup.c xstrdup.c xstrerror.c
+ partition.c pexecute.c putenv.c random.c rename.c rindex.c setenv.c \
+ sigsetmask.c safe-ctype.c sort.c spaces.c splay-tree.c strcasecmp.c \
+ strncasecmp.c strchr.c strdup.c strerror.c strncmp.c strrchr.c \
+ strsignal.c strstr.c strtod.c strtol.c strtoul.c tmpnam.c vasprintf.c \
+ vfork.c vfprintf.c vprintf.c vsprintf.c waitpid.c xatexit.c xexit.c \
+ xmalloc.c xmemdup.c xstrdup.c xstrerror.c
# These are always included in the library.
-REQUIRED_OFILES = argv.o choose-temp.o concat.o cplus-dem.o cp-demangle.o \
- dyn-string.o fdmatch.o fnmatch.o getopt.o getopt1.o getpwd.o getruntime.o \
- hashtab.o hex.o floatformat.o objalloc.o obstack.o partition.o pexecute.o \
- spaces.o splay-tree.o strerror.o strsignal.o xatexit.o xexit.o xmalloc.o \
- xmemdup.o xstrdup.o xstrerror.o
+REQUIRED_OFILES = argv.o choose-temp.o concat.o cplus-dem.o cp-demangle.o \
+ dyn-string.o fdmatch.o fnmatch.o getopt.o getopt1.o getpwd.o \
+ getruntime.o hashtab.o hex.o floatformat.o md5.o objalloc.o obstack.o \
+ partition.o pexecute.o safe-ctype.o sort.o spaces.o splay-tree.o \
+ strerror.o strsignal.o xatexit.o xexit.o xmalloc.o xmemdup.o \
+ xstrdup.o xstrerror.o
$(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS) $(ALLOCA)
- rm -f $(TARGETLIB)
+ -rm -f $(TARGETLIB)
$(AR) $(AR_FLAGS) $(TARGETLIB) \
$(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS) $(ALLOCA)
$(RANLIB) $(TARGETLIB)
@@ -168,7 +170,7 @@ install_to_tooldir: all
# to include there. Do not add anything LGPL to this list; libstdc++
# can't use anything encumbering.
NEEDED = atexit calloc memchr memcmp memcpy memmove memset rename strchr \
- strerror strrchr strstr strtol strtoul tmpnam vfprintf vprintf \
+ strerror strncmp strrchr strstr strtol strtoul tmpnam vfprintf vprintf \
vfork waitpid bcmp bcopy bzero
needed-list: Makefile
rm -f needed-list; touch needed-list; \
@@ -186,7 +188,7 @@ required-list: Makefile
echo $(REQUIRED_OFILES) > required-list
stamp-picdir:
- if [ x"$(enable_shared)" = xyes ] && [ ! -d pic ]; then \
+ if [ x"$(PICFLAG)" != x ] && [ ! -d pic ]; then \
mkdir pic; \
else true; fi
touch stamp-picdir
@@ -212,19 +214,20 @@ ls:
# Cleaning has to be done carefully to ensure that we don't clean our SUBDIRS
# multiple times, hence our explicit recursion with an empty SUBDIRS.
mostlyclean: mostlyclean-subdir
- rm -rf *.o pic core errs \#* *.E a.out
- rm -f needed.awk needed2.awk errors dummy needed-list config.h stamp-*
- rm -f $(CONFIG_H) $(NEEDED_LIST) stamp-picdir
+ -rm -rf *.o pic core errs \#* *.E a.out
+ -rm -f needed.awk needed2.awk errors dummy needed-list config.h stamp-*
+ -rm -f $(CONFIG_H) $(NEEDED_LIST) stamp-picdir
@$(MULTICLEAN) multi-clean DO=mostlyclean
clean: clean-subdir
$(MAKE) SUBDIRS="" mostlyclean
- rm -f *.a required-list tmpmulti.out
+ -rm -f *.a required-list tmpmulti.out
@$(MULTICLEAN) multi-clean DO=clean
distclean: distclean-subdir
$(MAKE) SUBDIRS="" clean
@$(MULTICLEAN) multi-clean DO=distclean
- rm -f *~ Makefile config.status xhost-mkfrag TAGS multilib.out
- rm -f config.log
+ -rm -f *~ Makefile config.status xhost-mkfrag TAGS multilib.out
+ -rm -f config.log
+ -rmdir testsuite 2>/dev/null
maintainer-clean realclean: maintainer-clean-subdir
$(MAKE) SUBDIRS="" distclean
@@ -245,9 +248,10 @@ all-subdir check-subdir installcheck-subdir info-subdir \
install-info-subdir clean-info-subdir dvi-subdir install-subdir \
etags-subdir mostlyclean-subdir clean-subdir distclean-subdir \
maintainer-clean-subdir:
- @target=`echo $@ | sed -e 's/-subdir//'`; \
- for dir in . $(SUBDIRS) ; do \
- test $$dir = . || (cd $$dir && $(MAKE) $$target) || exit 1; \
+ @subdirs='$(SUBDIRS)'; \
+ target=`echo $@ | sed -e 's/-subdir//'`; \
+ for dir in $$subdirs ; do \
+ cd $$dir && $(MAKE) $$target; \
done
$(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS) $(ALLOCA): stamp-picdir
@@ -273,19 +277,26 @@ getruntime.o: config.h $(INCDIR)/libiberty.h
hex.o: $(INCDIR)/libiberty.h
floatformat.o: $(INCDIR)/floatformat.h
mkstemps.o: config.h
-objalloc.o: $(INCDIR)/objalloc.h
+md5.o: config.h
+objalloc.o: config.h $(INCDIR)/objalloc.h
obstack.o: config.h $(INCDIR)/obstack.h
partition.o: config.h $(INCDIR)/partition.h
pexecute.o: config.h $(INCDIR)/libiberty.h
+rename.o: config.h
setenv.o: config.h
+sort.o: config.h $(INCDIR)/sort.h $(INCDIR)/ansidecl.h
spaces.o: $(INCDIR)/libiberty.h
splay-tree.o: config.h $(INCDIR)/libiberty.h $(INCDIR)/splay-tree.h $(INCDIR)/ansidecl.h
strerror.o: config.h $(INCDIR)/libiberty.h
strsignal.o: config.h $(INCDIR)/libiberty.h
+strtol.o: config.h
+strtoul.o: config.h
+vasprintf.o: config.h
xatexit.o: $(INCDIR)/libiberty.h
-xexit.o: $(INCDIR)/libiberty.h
-xmalloc.o: $(INCDIR)/libiberty.h
+xexit.o: config.h $(INCDIR)/libiberty.h
+xmalloc.o: config.h $(INCDIR)/libiberty.h
xmemdup.o: config.h $(INCDIR)/libiberty.h
xstrdup.o: config.h $(INCDIR)/libiberty.h
xstrerror.o: config.h $(INCDIR)/libiberty.h
+waitpid.o: config.h
hashtab.o: config.h $(INCDIR)/libiberty.h $(INCDIR)/hashtab.h $(INCDIR)/ansidecl.h
diff --git a/contrib/binutils/libiberty/aclocal.m4 b/contrib/binutils/libiberty/aclocal.m4
new file mode 100644
index 0000000..c562835
--- /dev/null
+++ b/contrib/binutils/libiberty/aclocal.m4
@@ -0,0 +1,136 @@
+dnl See whether strncmp reads past the end of its string parameters.
+dnl On some versions of SunOS4 at least, strncmp reads a word at a time
+dnl but erroneously reads past the end of strings. This can cause
+dnl a SEGV in some cases.
+AC_DEFUN(libiberty_AC_FUNC_STRNCMP,
+[AC_REQUIRE([AC_FUNC_MMAP])
+AC_CACHE_CHECK([for working strncmp], ac_cv_func_strncmp_works,
+[AC_TRY_RUN([
+/* Test by Jim Wilson and Kaveh Ghazi.
+ Check whether strncmp reads past the end of its string parameters. */
+#include <sys/types.h>
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+
+#ifndef MAP_ANON
+#ifdef MAP_ANONYMOUS
+#define MAP_ANON MAP_ANONYMOUS
+#else
+#define MAP_ANON MAP_FILE
+#endif
+#endif
+
+#ifndef MAP_FILE
+#define MAP_FILE 0
+#endif
+#ifndef O_RDONLY
+#define O_RDONLY 0
+#endif
+
+#define MAP_LEN 0x10000
+
+main ()
+{
+#if defined(HAVE_MMAP) || defined(HAVE_MMAP_ANYWHERE)
+ char *p;
+ int dev_zero;
+
+ dev_zero = open ("/dev/zero", O_RDONLY);
+ if (dev_zero < 0)
+ exit (1);
+
+ p = (char *) mmap (0, MAP_LEN, PROT_READ|PROT_WRITE,
+ MAP_ANON|MAP_PRIVATE, dev_zero, 0);
+ if (p == (char *)-1)
+ exit (2);
+ else
+ {
+ char *string = "__si_type_info";
+ char *q = (char *) p + MAP_LEN - strlen (string) - 2;
+ char *r = (char *) p + 0xe;
+
+ strcpy (q, string);
+ strcpy (r, string);
+ strncmp (r, q, 14);
+ }
+#endif /* HAVE_MMAP || HAVE_MMAP_ANYWHERE */
+ exit (0);
+}
+], ac_cv_func_strncmp_works=yes, ac_cv_func_strncmp_works=no,
+ ac_cv_func_strncmp_works=no)
+rm -f core core.* *.core])
+if test $ac_cv_func_strncmp_works = no ; then
+ LIBOBJS="$LIBOBJS strncmp.o"
+fi
+])
+
+dnl See if errno must be declared even when <errno.h> is included.
+AC_DEFUN(libiberty_AC_DECLARE_ERRNO,
+[AC_CACHE_CHECK(whether errno must be declared, libiberty_cv_declare_errno,
+[AC_TRY_COMPILE(
+[#include <errno.h>],
+[int x = errno;],
+libiberty_cv_declare_errno=no,
+libiberty_cv_declare_errno=yes)])
+if test $libiberty_cv_declare_errno = yes
+then AC_DEFINE(NEED_DECLARATION_ERRNO, 1,
+ [Define if errno must be declared even when <errno.h> is included.])
+fi
+])
+
+# FIXME: We temporarily define our own version of AC_PROG_CC. This is
+# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
+# are probably using a cross compiler, which will not be able to fully
+# link an executable. This should really be fixed in autoconf
+# itself.
+
+AC_DEFUN(LIB_AC_PROG_CC,
+[AC_BEFORE([$0], [AC_PROG_CPP])dnl
+AC_PROVIDE([AC_PROG_CC])
+AC_CHECK_PROG(CC, gcc, gcc)
+if test -z "$CC"; then
+ AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
+ test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
+fi
+
+AC_PROG_CC_GNU
+
+if test $ac_cv_prog_gcc = yes; then
+ GCC=yes
+ ac_libiberty_warn_cflags='-W -Wall -Wtraditional -pedantic'
+dnl Check whether -g works, even if CFLAGS is set, in case the package
+dnl plays around with CFLAGS (such as to build both debugging and
+dnl normal versions of a library), tasteless as that idea is.
+ ac_test_CFLAGS="${CFLAGS+set}"
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS=
+ AC_PROG_CC_G
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+ elif test $ac_cv_prog_cc_g = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-O2"
+ fi
+else
+ GCC=
+ ac_libiberty_warn_cflags=
+ test "${CFLAGS+set}" = set || CFLAGS="-g"
+fi
+AC_SUBST(ac_libiberty_warn_cflags)
+])
+
+# Work around a bug in autoheader. This can go away when we switch to
+# autoconf >2.50. The use of define instead of AC_DEFUN is
+# deliberate.
+define(AC_DEFINE_NOAUTOHEADER,
+[cat >> confdefs.h <<\EOF
+[#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1)
+EOF
+])
diff --git a/contrib/binutils/libiberty/argv.c b/contrib/binutils/libiberty/argv.c
index f596ffd..7aec9c0 100644
--- a/contrib/binutils/libiberty/argv.c
+++ b/contrib/binutils/libiberty/argv.c
@@ -25,10 +25,7 @@ Boston, MA 02111-1307, USA. */
#include "ansidecl.h"
#include "libiberty.h"
-#ifdef isspace
-#undef isspace
-#endif
-#define isspace(ch) ((ch) == ' ' || (ch) == '\t')
+#define ISBLANK(ch) ((ch) == ' ' || (ch) == '\t')
/* Routines imported from standard C runtime libraries. */
@@ -227,7 +224,7 @@ char *input;
do
{
/* Pick off argv[argc] */
- while (isspace (*input))
+ while (ISBLANK (*input))
{
input++;
}
@@ -260,7 +257,7 @@ char *input;
arg = copybuf;
while (*input != EOS)
{
- if (isspace (*input) && !squote && !dquote && !bsquote)
+ if (ISBLANK (*input) && !squote && !dquote && !bsquote)
{
break;
}
@@ -326,7 +323,7 @@ char *input;
argc++;
argv[argc] = NULL;
- while (isspace (*input))
+ while (ISBLANK (*input))
{
input++;
}
diff --git a/contrib/binutils/libiberty/basename.c b/contrib/binutils/libiberty/basename.c
index 7698f06..ca089eb 100644
--- a/contrib/binutils/libiberty/basename.c
+++ b/contrib/binutils/libiberty/basename.c
@@ -20,7 +20,7 @@ BUGS
#include "ansidecl.h"
#include "libiberty.h"
-#include <ctype.h>
+#include "safe-ctype.h"
#ifndef DIR_SEPARATOR
#define DIR_SEPARATOR '/'
@@ -50,7 +50,7 @@ basename (name)
#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
/* Skip over the disk name in MSDOS pathnames. */
- if (isalpha (name[0]) && name[1] == ':')
+ if (ISALPHA (name[0]) && name[1] == ':')
name += 2;
#endif
diff --git a/contrib/binutils/libiberty/bsearch.c b/contrib/binutils/libiberty/bsearch.c
new file mode 100644
index 0000000..6a8ee33
--- /dev/null
+++ b/contrib/binutils/libiberty/bsearch.c
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 1990 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. [rescinded 22 July 1999]
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "ansidecl.h"
+#include <sys/types.h> /* size_t */
+#include <stdio.h>
+
+/*
+ * Perform a binary search.
+ *
+ * The code below is a bit sneaky. After a comparison fails, we
+ * divide the work in half by moving either left or right. If lim
+ * is odd, moving left simply involves halving lim: e.g., when lim
+ * is 5 we look at item 2, so we change lim to 2 so that we will
+ * look at items 0 & 1. If lim is even, the same applies. If lim
+ * is odd, moving right again involes halving lim, this time moving
+ * the base up one item past p: e.g., when lim is 5 we change base
+ * to item 3 and make lim 2 so that we will look at items 3 and 4.
+ * If lim is even, however, we have to shrink it by one before
+ * halving: e.g., when lim is 4, we still looked at item 2, so we
+ * have to make lim 3, then halve, obtaining 1, so that we will only
+ * look at item 3.
+ */
+void *
+bsearch(key, base0, nmemb, size, compar)
+ register void *key;
+ void *base0;
+ size_t nmemb;
+ register size_t size;
+ register int (*compar)();
+{
+ register char *base = base0;
+ register int lim, cmp;
+ register void *p;
+
+ for (lim = nmemb; lim != 0; lim >>= 1) {
+ p = base + (lim >> 1) * size;
+ cmp = (*compar)(key, p);
+ if (cmp == 0)
+ return (p);
+ if (cmp > 0) { /* key > p: move right */
+ base = (char *)p + size;
+ lim--;
+ } /* else move left */
+ }
+ return (NULL);
+}
diff --git a/contrib/binutils/libiberty/choose-temp.c b/contrib/binutils/libiberty/choose-temp.c
index 826d818..1a475dd 100644
--- a/contrib/binutils/libiberty/choose-temp.c
+++ b/contrib/binutils/libiberty/choose-temp.c
@@ -79,9 +79,11 @@ extern int mkstemps ();
If success, DIR is returned.
Otherwise NULL is returned. */
-static char *
+static const char *try PARAMS ((const char *, const char *));
+
+static const char *
try (dir, base)
- char *dir, *base;
+ const char *dir, *base;
{
if (base != 0)
return base;
@@ -102,7 +104,7 @@ try (dir, base)
char *
choose_temp_base ()
{
- char *base = 0;
+ const char *base = 0;
char *temp_filename;
int len;
static char tmp[] = { DIR_SEPARATOR, 't', 'm', 'p', 0 };
@@ -147,7 +149,7 @@ char *
make_temp_file (suffix)
const char *suffix;
{
- char *base = 0;
+ const char *base = 0;
char *temp_filename;
int base_len, suffix_len;
int fd;
diff --git a/contrib/binutils/libiberty/config.in b/contrib/binutils/libiberty/config.in
index 6e64208..1fb946a 100644
--- a/contrib/binutils/libiberty/config.in
+++ b/contrib/binutils/libiberty/config.in
@@ -3,6 +3,9 @@
/* 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
@@ -13,12 +16,18 @@
/* Define if you have <alloca.h> 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 <sys/wait.h> that is POSIX.1 compatible. */
#undef HAVE_SYS_WAIT_H
/* Define if you have <vfork.h>. */
#undef HAVE_VFORK_H
+/* Define as __inline if that's what the C compiler calls it. */
+#undef inline
+
/* Define to `int' if <sys/types.h> doesn't define. */
#undef pid_t
@@ -37,21 +46,12 @@
/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS
+/* Define if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
/* Define vfork as fork if vfork does not work. */
#undef vfork
-/* Define if you have the sys_errlist variable. */
-#undef HAVE_SYS_ERRLIST
-
-/* Define if you have the sys_nerr variable. */
-#undef HAVE_SYS_NERR
-
-/* Define if you have the sys_siglist variable. */
-#undef HAVE_SYS_SIGLIST
-
-/* Define if you have the strerror function. */
-#undef HAVE_STRERROR
-
/* Define if you have the asprintf function. */
#undef HAVE_ASPRINTF
@@ -67,6 +67,9 @@
/* Define if you have the bcopy function. */
#undef HAVE_BCOPY
+/* Define if you have the bsearch function. */
+#undef HAVE_BSEARCH
+
/* Define if you have the bzero function. */
#undef HAVE_BZERO
@@ -196,6 +199,12 @@
/* Define if you have the waitpid function. */
#undef HAVE_WAITPID
+/* Define if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
/* Define if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
@@ -208,6 +217,9 @@
/* Define if you have the <sys/file.h> header file. */
#undef HAVE_SYS_FILE_H
+/* Define if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
+
/* Define if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H
@@ -220,5 +232,21 @@
/* Define if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H
+/* Define if you have the <time.h> header file. */
+#undef HAVE_TIME_H
+
/* Define if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
+
+/* Define if errno must be declared even when <errno.h> is included. */
+#undef NEED_DECLARATION_ERRNO
+
+/* Define if you have the sys_errlist variable. */
+#undef HAVE_SYS_ERRLIST
+
+/* Define if you have the sys_nerr variable. */
+#undef HAVE_SYS_NERR
+
+/* Define if you have the sys_siglist variable. */
+#undef HAVE_SYS_SIGLIST
+
diff --git a/contrib/binutils/libiberty/config.table b/contrib/binutils/libiberty/config.table
index 4e33746..ea3312b 100644
--- a/contrib/binutils/libiberty/config.table
+++ b/contrib/binutils/libiberty/config.table
@@ -27,6 +27,7 @@ if [ "${shared}" = "yes" ]; then
i[3456]86-*-*) frags="${frags} ../../config/mh-x86pic" ;;
powerpc*-*-aix*) ;;
powerpc*-*-*) frags="${frags} ../../config/mh-ppcpic" ;;
+ sparc*-*-*) frags="${frags} ../../config/mh-sparcpic" ;;
*-*-*) frags="${frags} ../../config/mh-${host_cpu}pic" ;;
esac
fi
diff --git a/contrib/binutils/libiberty/config/mh-openedition b/contrib/binutils/libiberty/config/mh-openedition
index 6e8e354..8de8ed1 100644
--- a/contrib/binutils/libiberty/config/mh-openedition
+++ b/contrib/binutils/libiberty/config/mh-openedition
@@ -1,3 +1,3 @@
-HDEFINES = -D_ALL_SOURCE
+HDEFINES = -D_ALL_SOURCE -DLE370
CC=c89
diff --git a/contrib/binutils/libiberty/configure b/contrib/binutils/libiberty/configure
index 02c826d..ca24ef9 100755
--- a/contrib/binutils/libiberty/configure
+++ b/contrib/binutils/libiberty/configure
@@ -733,20 +733,11 @@ fi
fi
-# FIXME: We temporarily define our own version of AC_PROG_CC. This is
-# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
-# are probably using a cross compiler, which will not be able to fully
-# link an executable. This should really be fixed in autoconf
-# itself.
-
-
-
-
# 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:750: checking for $ac_word" >&5
+echo "configure:741: 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
@@ -776,7 +767,7 @@ 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:780: checking for $ac_word" >&5
+echo "configure:771: 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
@@ -825,7 +816,7 @@ fi
fi
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:829: checking whether we are using GNU C" >&5
+echo "configure:820: 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
@@ -834,7 +825,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:838: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:829: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -845,12 +836,12 @@ echo "$ac_t""$ac_cv_prog_gcc" 1>&6
if test $ac_cv_prog_gcc = yes; then
GCC=yes
- ac_libiberty_warn_cflags='-W -Wall -Wtraditional'
+ ac_libiberty_warn_cflags='-W -Wall -Wtraditional -pedantic'
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:854: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:845: 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
@@ -879,8 +870,9 @@ else
fi
+
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:884: checking for POSIXized ISC" >&5
+echo "configure:876: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -900,6 +892,121 @@ else
ISC=
fi
+echo $ac_n "checking for working const""... $ac_c" 1>&6
+echo "configure:897: 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 <<EOF
+#line 902 "configure"
+#include "confdefs.h"
+
+int main() {
+
+/* Ultrix mips cc rejects this. */
+typedef int charset[2]; const charset x;
+/* SunOS 4.1.1 cc rejects this. */
+char const *const *ccp;
+char **p;
+/* NEC SVR4.0.2 mips cc rejects this. */
+struct point {int x, y;};
+static struct point const zero = {0,0};
+/* AIX XL C 1.02.0.0 rejects this.
+ It does not let you subtract one const X* pointer from another in an arm
+ of an if-expression whose if-part is not a constant expression */
+const char *g = "string";
+ccp = &g + (g ? g-g : 0);
+/* HPUX 7.0 cc rejects these. */
+++ccp;
+p = (char**) ccp;
+ccp = (char const *const *) p;
+{ /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+}
+{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+ const int *foo = &x[0];
+ ++foo;
+}
+{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+ typedef const int *iptr;
+ iptr p = 0;
+ ++p;
+}
+{ /* AIX XL C 1.02.0.0 rejects this saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+ struct s { int j; const int *ap[3]; };
+ struct s *b; b->j = 5;
+}
+{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+}
+
+; return 0; }
+EOF
+if { (eval echo configure:951: \"$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:972: 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 <<EOF
+#line 979 "configure"
+#include "confdefs.h"
+
+int main() {
+} $ac_kw foo() {
+; return 0; }
+EOF
+if { (eval echo configure:986: \"$ac_compile\") 1>&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 <<EOF
+#define inline $ac_cv_c_inline
+EOF
+ ;;
+esac
+
@@ -918,7 +1025,7 @@ fi
# 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:922: checking for a BSD compatible install" >&5
+echo "configure:1029: 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
@@ -979,7 +1086,7 @@ host_makefile_frag=${frag}
# able to link anything, it had better be able to at least compile
# something.
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:983: checking how to run the C preprocessor" >&5
+echo "configure:1090: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -994,13 +1101,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 998 "configure"
+#line 1105 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1004: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1111: \"$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
:
@@ -1011,13 +1118,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 1015 "configure"
+#line 1122 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1021: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1128: \"$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
:
@@ -1028,13 +1135,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 1032 "configure"
+#line 1139 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1038: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1145: \"$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
:
@@ -1058,21 +1165,21 @@ else
fi
echo "$ac_t""$CPP" 1>&6
-for ac_hdr in sys/file.h sys/param.h stdlib.h string.h unistd.h strings.h sys/time.h sys/resource.h sys/stat.h
+for ac_hdr in sys/file.h sys/param.h limits.h stdlib.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1066: checking for $ac_hdr" >&5
+echo "configure:1173: 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
-#line 1071 "configure"
+#line 1178 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1076: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1183: \"$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*
@@ -1099,12 +1206,12 @@ fi
done
echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:1103: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:1210: 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 <<EOF
-#line 1108 "configure"
+#line 1215 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/wait.h>
@@ -1120,7 +1227,7 @@ wait (&s);
s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
; return 0; }
EOF
-if { (eval echo configure:1124: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1231: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_sys_wait_h=yes
else
@@ -1140,6 +1247,75 @@ EOF
fi
+echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
+echo "configure:1252: checking whether time.h and sys/time.h may both be included" >&5
+if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1257 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/time.h>
+#include <time.h>
+int main() {
+struct tm *tp;
+; return 0; }
+EOF
+if { (eval echo configure:1266: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_header_time=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_header_time=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$ac_cv_header_time" 1>&6
+if test $ac_cv_header_time = yes; then
+ cat >> confdefs.h <<\EOF
+#define TIME_WITH_SYS_TIME 1
+EOF
+
+fi
+
+
+echo $ac_n "checking whether errno must be declared""... $ac_c" 1>&6
+echo "configure:1288: checking whether errno must be declared" >&5
+if eval "test \"`echo '$''{'libiberty_cv_declare_errno'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1293 "configure"
+#include "confdefs.h"
+#include <errno.h>
+int main() {
+int x = errno;
+; return 0; }
+EOF
+if { (eval echo configure:1300: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ libiberty_cv_declare_errno=no
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ libiberty_cv_declare_errno=yes
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$libiberty_cv_declare_errno" 1>&6
+if test $libiberty_cv_declare_errno = yes
+then cat >> confdefs.h <<\EOF
+#define NEED_DECLARATION_ERRNO 1
+EOF
+
+fi
+
# This is the list of functions which libiberty will provide if they
# are not available on the host.
@@ -1149,6 +1325,7 @@ funcs="$funcs atexit"
funcs="$funcs basename"
funcs="$funcs bcmp"
funcs="$funcs bcopy"
+funcs="$funcs bsearch"
funcs="$funcs bzero"
funcs="$funcs calloc"
funcs="$funcs clock"
@@ -1193,15 +1370,15 @@ checkfuncs="getrusage on_exit psignal strerror strsignal sysconf times sbrk gett
# These are neither executed nor required, but they help keep
# autoheader happy without adding a bunch of text to acconfig.h.
if test "x" = "y"; then
- for ac_func in asprintf atexit basename bcmp bcopy bzero calloc clock getcwd
+ for ac_func in asprintf atexit basename bcmp bcopy bsearch bzero calloc clock
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1200: checking for $ac_func" >&5
+echo "configure:1377: 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 <<EOF
-#line 1205 "configure"
+#line 1382 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1224,7 +1401,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1405: \"$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
@@ -1248,15 +1425,15 @@ else
fi
done
- for ac_func in getpagesize index insque mkstemps memchr memcmp memcpy memmove
+ for ac_func in getcwd getpagesize index insque mkstemps memchr memcmp memcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1255: checking for $ac_func" >&5
+echo "configure:1432: 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 <<EOF
-#line 1260 "configure"
+#line 1437 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1279,7 +1456,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1283: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1460: \"$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
@@ -1303,15 +1480,15 @@ else
fi
done
- for ac_func in memset putenv random rename rindex sigsetmask strcasecmp
+ for ac_func in memmove memset putenv random rename rindex sigsetmask
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1310: checking for $ac_func" >&5
+echo "configure:1487: 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 <<EOF
-#line 1315 "configure"
+#line 1492 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1334,7 +1511,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1515: \"$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
@@ -1358,15 +1535,15 @@ else
fi
done
- for ac_func in setenv strchr strdup strncasecmp strrchr strstr strtod strtol
+ for ac_func in strcasecmp setenv strchr strdup strncasecmp strrchr strstr
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1365: checking for $ac_func" >&5
+echo "configure:1542: 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 <<EOF
-#line 1370 "configure"
+#line 1547 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1389,7 +1566,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1570: \"$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
@@ -1413,15 +1590,15 @@ else
fi
done
- for ac_func in strtoul tmpnam vasprintf vfprintf vprintf vsprintf waitpid
+ for ac_func in strtod strtol strtoul tmpnam vasprintf vfprintf vprintf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1420: checking for $ac_func" >&5
+echo "configure:1597: 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 <<EOF
-#line 1425 "configure"
+#line 1602 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1444,7 +1621,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1448: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1625: \"$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
@@ -1468,27 +1645,15 @@ else
fi
done
- cat >> confdefs.h <<\EOF
-#define HAVE_SYS_ERRLIST 1
-EOF
-
- cat >> confdefs.h <<\EOF
-#define HAVE_SYS_NERR 1
-EOF
-
- cat >> confdefs.h <<\EOF
-#define HAVE_SYS_SIGLIST 1
-EOF
-
- for ac_func in getrusage on_exit psignal strerror strsignal sysconf times
+ for ac_func in vsprintf waitpid getrusage on_exit psignal strerror strsignal
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1487: checking for $ac_func" >&5
+echo "configure:1652: 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 <<EOF
-#line 1492 "configure"
+#line 1657 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1511,7 +1676,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1680: \"$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
@@ -1535,15 +1700,15 @@ else
fi
done
- for ac_func in sbrk gettimeofday
+ for ac_func in sysconf times sbrk gettimeofday
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1542: checking for $ac_func" >&5
+echo "configure:1707: 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 <<EOF
-#line 1547 "configure"
+#line 1712 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1566,7 +1731,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1570: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1735: \"$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
@@ -1590,6 +1755,18 @@ else
fi
done
+ cat >> confdefs.h <<\EOF
+#define HAVE_SYS_ERRLIST 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_SYS_NERR 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_SYS_SIGLIST 1
+EOF
+
fi
# For each of these functions, if the host does not provide the
@@ -1705,24 +1882,22 @@ if test -z "${setobjs}"; then
# provides from our shell variables, so that they appear to be
# missing.
- funcs="`echo $funcs | sed -e 's/random//'`"
- LIBOBJS="$LIBOBJS random.o"
- vars="`echo $vars | sed -e 's/sys_siglist//'`"
- checkfuncs="`echo $checkfuncs | sed -e 's/strsignal//' -e 's/psignal//'`"
+ # DJ - only if we're *building* cygwin, not just building *with* cygwin
+
+ if test -n "${with_target_subdir}"
+ then
+ funcs="`echo $funcs | sed -e 's/random//'`"
+ LIBOBJS="$LIBOBJS random.o"
+ vars="`echo $vars | sed -e 's/sys_siglist//'`"
+ checkfuncs="`echo $checkfuncs | sed -e 's/strsignal//' -e 's/psignal//'`"
+ fi
;;
*-*-mingw32*)
# Under mingw32, sys_nerr and sys_errlist exist, but they are
# macros, so the test below won't find them.
- vars="`echo $vars | sed -e 's/sys_nerr//' -e 's/sys_errlist//'`"
- cat >> confdefs.h <<\EOF
-#define HAVE_SYS_NERR 1
-EOF
-
- cat >> confdefs.h <<\EOF
-#define HAVE_SYS_ERRLIST 1
-EOF
-
+ libiberty_cv_var_sys_nerr=yes
+ libiberty_cv_var_sys_errlist=yes
;;
*-*-uwin*)
@@ -1733,14 +1908,8 @@ EOF
# Under uwin 2.0+, sys_nerr and sys_errlist exist, but they are
# macros (actually, these are imported from a DLL, but the end effect
# is the same), so the test below won't find them.
- cat >> confdefs.h <<\EOF
-#define HAVE_SYS_NERR 1
-EOF
-
- cat >> confdefs.h <<\EOF
-#define HAVE_SYS_ERRLIST 1
-EOF
-
+ libiberty_cv_var_sys_nerr=yes
+ libiberty_cv_var_sys_errlist=yes
;;
esac
@@ -1748,7 +1917,7 @@ EOF
# We haven't set the list of objects yet. Use the standard autoconf
# tests. This will only work if the compiler works.
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1752: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1921: 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.
@@ -1759,12 +1928,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1763 "configure"
+#line 1932 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1768: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1937: \"$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
@@ -1790,19 +1959,19 @@ 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:1794: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1963: 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
for ac_func in $funcs
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1801: checking for $ac_func" >&5
+echo "configure:1970: 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 <<EOF
-#line 1806 "configure"
+#line 1975 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1825,7 +1994,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1998: \"$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
@@ -1872,19 +2041,19 @@ EOF
# 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:1876: checking for working alloca.h" >&5
+echo "configure:2045: 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 <<EOF
-#line 1881 "configure"
+#line 2050 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2057: \"$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
@@ -1905,12 +2074,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1909: checking for alloca" >&5
+echo "configure:2078: 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 <<EOF
-#line 1914 "configure"
+#line 2083 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1938,7 +2107,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1942: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2111: \"$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
@@ -1970,12 +2139,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1974: checking whether alloca needs Cray hooks" >&5
+echo "configure:2143: 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 <<EOF
-#line 1979 "configure"
+#line 2148 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -2000,12 +2169,12 @@ 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:2004: checking for $ac_func" >&5
+echo "configure:2173: 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 <<EOF
-#line 2009 "configure"
+#line 2178 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2028,7 +2197,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2201: \"$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
@@ -2055,7 +2224,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:2059: checking stack direction for C alloca" >&5
+echo "configure:2228: 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
@@ -2063,7 +2232,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 2067 "configure"
+#line 2236 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -2082,7 +2251,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:2086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2255: \"$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
@@ -2107,12 +2276,12 @@ fi
esac
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:2111: checking for ANSI C header files" >&5
+echo "configure:2280: 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 <<EOF
-#line 2116 "configure"
+#line 2285 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -2120,7 +2289,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2124: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2293: \"$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*
@@ -2137,7 +2306,7 @@ 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
-#line 2141 "configure"
+#line 2310 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -2155,7 +2324,7 @@ 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
-#line 2159 "configure"
+#line 2328 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2176,7 +2345,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2180 "configure"
+#line 2349 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -2187,7 +2356,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:2191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -2211,12 +2380,12 @@ EOF
fi
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:2215: checking for pid_t" >&5
+echo "configure:2384: checking for pid_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2220 "configure"
+#line 2389 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -2245,17 +2414,17 @@ fi
ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:2249: checking for vfork.h" >&5
+echo "configure:2418: checking for vfork.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
-#line 2254 "configure"
+#line 2423 "configure"
#include "confdefs.h"
#include <vfork.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2428: \"$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*
@@ -2280,18 +2449,18 @@ else
fi
echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:2284: checking for working vfork" >&5
+echo "configure:2453: checking for working vfork" >&5
if eval "test \"`echo '$''{'ac_cv_func_vfork_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
echo $ac_n "checking for vfork""... $ac_c" 1>&6
-echo "configure:2290: checking for vfork" >&5
+echo "configure:2459: checking for vfork" >&5
if eval "test \"`echo '$''{'ac_cv_func_vfork'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2295 "configure"
+#line 2464 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vfork(); below. */
@@ -2314,7 +2483,7 @@ vfork();
; return 0; }
EOF
-if { (eval echo configure:2318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_vfork=yes"
else
@@ -2336,7 +2505,7 @@ fi
ac_cv_func_vfork_works=$ac_cv_func_vfork
else
cat > conftest.$ac_ext <<EOF
-#line 2340 "configure"
+#line 2509 "configure"
#include "confdefs.h"
/* Thanks to Paul Eggert for this test. */
#include <stdio.h>
@@ -2431,7 +2600,7 @@ main() {
}
}
EOF
-if { (eval echo configure:2435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_vfork_works=yes
else
@@ -2458,19 +2627,19 @@ fi
fi
for v in $vars; do
echo $ac_n "checking for $v""... $ac_c" 1>&6
-echo "configure:2462: checking for $v" >&5
+echo "configure:2631: checking for $v" >&5
if eval "test \"`echo '$''{'libiberty_cv_var_$v'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2467 "configure"
+#line 2636 "configure"
#include "confdefs.h"
int *p;
int main() {
extern int $v; p = &$v;
; return 0; }
EOF
-if { (eval echo configure:2474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "libiberty_cv_var_$v=yes"
else
@@ -2496,12 +2665,109 @@ EOF
for ac_func in $checkfuncs
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2500: checking for $ac_func" >&5
+echo "configure:2669: 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 <<EOF
+#line 2674 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+#include <assert.h>
+/* 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:2697: \"$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 <<EOF
+#define $ac_tr_func 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+done
+
+fi
+
+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:2727: 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
+#line 2732 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:2737: \"$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 <<EOF
+#define $ac_tr_hdr 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_func in getpagesize
+do
+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+echo "configure:2766: 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 <<EOF
-#line 2505 "configure"
+#line 2771 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2524,7 +2790,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2794: \"$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
@@ -2548,8 +2814,269 @@ else
fi
done
+echo $ac_n "checking for working mmap""... $ac_c" 1>&6
+echo "configure:2819: 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 <<EOF
+#line 2827 "configure"
+#include "confdefs.h"
+
+/* Thanks to Mike Haertel and Jim Avera for this test.
+ Here is a matrix of mmap possibilities:
+ mmap private not fixed
+ mmap private fixed at somewhere currently unmapped
+ mmap private fixed at somewhere already mapped
+ mmap shared not fixed
+ mmap shared fixed at somewhere currently unmapped
+ mmap shared fixed at somewhere already mapped
+ For private mappings, we should verify that changes cannot be read()
+ back from the file, nor mmap's back from the file at a different
+ address. (There have been systems where private was not correctly
+ implemented like the infamous i386 svr4.0, and systems where the
+ VM page cache was not coherent with the filesystem buffer cache
+ like early versions of FreeBSD and possibly contemporary NetBSD.)
+ For shared mappings, we should conversely verify that changes get
+ propogated back to all the places they're supposed to be.
+
+ Grep wants private fixed already mapped.
+ The main things grep needs to know about mmap are:
+ * does it exist and is it safe to write into the mmap'd area
+ * how to use it (BSD variants) */
+#include <sys/types.h>
+#include <fcntl.h>
+#include <sys/mman.h>
+
+/* This mess was copied from the GNU getpagesize.h. */
+#ifndef HAVE_GETPAGESIZE
+# ifdef HAVE_UNISTD_H
+# include <unistd.h>
+# 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 <sys/param.h>
+# 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:2967: \"$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
+
+echo $ac_n "checking for working strncmp""... $ac_c" 1>&6
+echo "configure:2991: checking for working strncmp" >&5
+if eval "test \"`echo '$''{'ac_cv_func_strncmp_works'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_strncmp_works=no
+else
+ cat > conftest.$ac_ext <<EOF
+#line 2999 "configure"
+#include "confdefs.h"
+
+/* Test by Jim Wilson and Kaveh Ghazi.
+ Check whether strncmp reads past the end of its string parameters. */
+#include <sys/types.h>
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
+#ifdef HAVE_SYS_MMAN_H
+#include <sys/mman.h>
+#endif
+
+#ifndef MAP_ANON
+#ifdef MAP_ANONYMOUS
+#define MAP_ANON MAP_ANONYMOUS
+#else
+#define MAP_ANON MAP_FILE
+#endif
+#endif
+
+#ifndef MAP_FILE
+#define MAP_FILE 0
+#endif
+#ifndef O_RDONLY
+#define O_RDONLY 0
+#endif
+
+#define MAP_LEN 0x10000
+
+main ()
+{
+#if defined(HAVE_MMAP) || defined(HAVE_MMAP_ANYWHERE)
+ char *p;
+ int dev_zero;
+
+ dev_zero = open ("/dev/zero", O_RDONLY);
+ if (dev_zero < 0)
+ exit (1);
+
+ p = (char *) mmap (0, MAP_LEN, PROT_READ|PROT_WRITE,
+ MAP_ANON|MAP_PRIVATE, dev_zero, 0);
+ if (p == (char *)-1)
+ exit (2);
+ else
+ {
+ char *string = "__si_type_info";
+ char *q = (char *) p + MAP_LEN - strlen (string) - 2;
+ char *r = (char *) p + 0xe;
+
+ strcpy (q, string);
+ strcpy (r, string);
+ strncmp (r, q, 14);
+ }
+#endif /* HAVE_MMAP || HAVE_MMAP_ANYWHERE */
+ exit (0);
+}
+
+EOF
+if { (eval echo configure:3060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ ac_cv_func_strncmp_works=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ ac_cv_func_strncmp_works=no
+fi
+rm -fr conftest*
+fi
+
+rm -f core core.* *.core
+fi
+
+echo "$ac_t""$ac_cv_func_strncmp_works" 1>&6
+if test $ac_cv_func_strncmp_works = no ; then
+ LIBOBJS="$LIBOBJS strncmp.o"
+fi
+
+
# Install a library built with a cross compiler in $(tooldir) rather
# than $(libdir).
if test -z "${with_cross_host}"; then
@@ -2705,8 +3232,8 @@ s%@build_vendor@%$build_vendor%g
s%@build_os@%$build_os%g
s%@AR@%$AR%g
s%@RANLIB@%$RANLIB%g
-s%@ac_libiberty_warn_cflags@%$ac_libiberty_warn_cflags%g
s%@CC@%$CC%g
+s%@ac_libiberty_warn_cflags@%$ac_libiberty_warn_cflags%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
s%@INSTALL_DATA@%$INSTALL_DATA%g
diff --git a/contrib/binutils/libiberty/configure.in b/contrib/binutils/libiberty/configure.in
index cc1b2c2..af80e0d 100644
--- a/contrib/binutils/libiberty/configure.in
+++ b/contrib/binutils/libiberty/configure.in
@@ -36,51 +36,11 @@ dnl to call AC_CHECK_PROG.
AC_CHECK_TOOL(AR, ar)
AC_CHECK_TOOL(RANLIB, ranlib, :)
-# FIXME: We temporarily define our own version of AC_PROG_CC. This is
-# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
-# are probably using a cross compiler, which will not be able to fully
-# link an executable. This should really be fixed in autoconf
-# itself.
-
-AC_DEFUN(LIB_AC_PROG_CC,
-[AC_BEFORE([$0], [AC_PROG_CPP])dnl
-AC_PROVIDE([AC_PROG_CC])
-AC_CHECK_PROG(CC, gcc, gcc)
-if test -z "$CC"; then
- AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
- test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
-fi
-
-AC_PROG_CC_GNU
-
-if test $ac_cv_prog_gcc = yes; then
- GCC=yes
- ac_libiberty_warn_cflags='-W -Wall -Wtraditional'
-dnl Check whether -g works, even if CFLAGS is set, in case the package
-dnl plays around with CFLAGS (such as to build both debugging and
-dnl normal versions of a library), tasteless as that idea is.
- ac_test_CFLAGS="${CFLAGS+set}"
- ac_save_CFLAGS="$CFLAGS"
- CFLAGS=
- AC_PROG_CC_G
- if test "$ac_test_CFLAGS" = set; then
- CFLAGS="$ac_save_CFLAGS"
- elif test $ac_cv_prog_cc_g = yes; then
- CFLAGS="-g -O2"
- else
- CFLAGS="-O2"
- fi
-else
- GCC=
- ac_libiberty_warn_cflags=
- test "${CFLAGS+set}" = set || CFLAGS="-g"
-fi
-])
-AC_SUBST(ac_libiberty_warn_cflags)
-
LIB_AC_PROG_CC
AC_ISC_POSIX
+AC_C_CONST
+AC_C_INLINE
dnl When we start using libtool:
dnl Default to a non shared library. This may be overridden by the
@@ -109,8 +69,11 @@ AC_SUBST_FILE(host_makefile_frag)
# It's OK to check for header files. Although the compiler may not be
# able to link anything, it had better be able to at least compile
# something.
-AC_CHECK_HEADERS(sys/file.h sys/param.h stdlib.h string.h unistd.h strings.h sys/time.h sys/resource.h sys/stat.h)
+AC_CHECK_HEADERS(sys/file.h sys/param.h limits.h stdlib.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h)
AC_HEADER_SYS_WAIT
+AC_HEADER_TIME
+
+libiberty_AC_DECLARE_ERRNO
# This is the list of functions which libiberty will provide if they
# are not available on the host.
@@ -120,6 +83,7 @@ funcs="$funcs atexit"
funcs="$funcs basename"
funcs="$funcs bcmp"
funcs="$funcs bcopy"
+funcs="$funcs bsearch"
funcs="$funcs bzero"
funcs="$funcs calloc"
funcs="$funcs clock"
@@ -164,16 +128,16 @@ checkfuncs="getrusage on_exit psignal strerror strsignal sysconf times sbrk gett
# These are neither executed nor required, but they help keep
# autoheader happy without adding a bunch of text to acconfig.h.
if test "x" = "y"; then
- AC_CHECK_FUNCS(asprintf atexit basename bcmp bcopy bzero calloc clock getcwd)
- AC_CHECK_FUNCS(getpagesize index insque mkstemps memchr memcmp memcpy memmove)
- AC_CHECK_FUNCS(memset putenv random rename rindex sigsetmask strcasecmp)
- AC_CHECK_FUNCS(setenv strchr strdup strncasecmp strrchr strstr strtod strtol)
- AC_CHECK_FUNCS(strtoul tmpnam vasprintf vfprintf vprintf vsprintf waitpid)
- AC_DEFINE(HAVE_SYS_ERRLIST)
- AC_DEFINE(HAVE_SYS_NERR)
- AC_DEFINE(HAVE_SYS_SIGLIST)
- AC_CHECK_FUNCS(getrusage on_exit psignal strerror strsignal sysconf times)
- AC_CHECK_FUNCS(sbrk gettimeofday)
+ AC_CHECK_FUNCS(asprintf atexit basename bcmp bcopy bsearch bzero calloc clock)
+ AC_CHECK_FUNCS(getcwd getpagesize index insque mkstemps memchr memcmp memcpy)
+ AC_CHECK_FUNCS(memmove memset putenv random rename rindex sigsetmask)
+ AC_CHECK_FUNCS(strcasecmp setenv strchr strdup strncasecmp strrchr strstr)
+ AC_CHECK_FUNCS(strtod strtol strtoul tmpnam vasprintf vfprintf vprintf)
+ AC_CHECK_FUNCS(vsprintf waitpid getrusage on_exit psignal strerror strsignal)
+ AC_CHECK_FUNCS(sysconf times sbrk gettimeofday)
+ AC_DEFINE(HAVE_SYS_ERRLIST, 1, [Define if you have the sys_errlist variable.])
+ AC_DEFINE(HAVE_SYS_NERR, 1, [Define if you have the sys_nerr variable.])
+ AC_DEFINE(HAVE_SYS_SIGLIST, 1, [Define if you have the sys_siglist variable.])
fi
# For each of these functions, if the host does not provide the
@@ -212,7 +176,7 @@ if test -n "${with_target_subdir}"; then
# dont have to check them here.
# Of the functions in $checkfuncs, newlib only has strerror.
- AC_DEFINE(HAVE_STRERROR)
+ AC_DEFINE_NOAUTOHEADER(HAVE_STRERROR)
setobjs=yes
@@ -253,7 +217,7 @@ if test -z "${setobjs}"; then
# don't have to check them here.
# Of the functions in $checkfuncs, VxWorks only has strerror.
- AC_DEFINE(HAVE_STRERROR)
+ AC_DEFINE_NOAUTOHEADER(HAVE_STRERROR)
setobjs=yes
;;
@@ -277,18 +241,22 @@ if test -z "${setobjs}"; then
# provides from our shell variables, so that they appear to be
# missing.
- funcs="`echo $funcs | sed -e 's/random//'`"
- LIBOBJS="$LIBOBJS random.o"
- vars="`echo $vars | sed -e 's/sys_siglist//'`"
- checkfuncs="`echo $checkfuncs | sed -e 's/strsignal//' -e 's/psignal//'`"
+ # DJ - only if we're *building* cygwin, not just building *with* cygwin
+
+ if test -n "${with_target_subdir}"
+ then
+ funcs="`echo $funcs | sed -e 's/random//'`"
+ LIBOBJS="$LIBOBJS random.o"
+ vars="`echo $vars | sed -e 's/sys_siglist//'`"
+ checkfuncs="`echo $checkfuncs | sed -e 's/strsignal//' -e 's/psignal//'`"
+ fi
;;
*-*-mingw32*)
# Under mingw32, sys_nerr and sys_errlist exist, but they are
# macros, so the test below won't find them.
- vars="`echo $vars | sed -e 's/sys_nerr//' -e 's/sys_errlist//'`"
- AC_DEFINE(HAVE_SYS_NERR)
- AC_DEFINE(HAVE_SYS_ERRLIST)
+ libiberty_cv_var_sys_nerr=yes
+ libiberty_cv_var_sys_errlist=yes
;;
*-*-uwin*)
@@ -299,8 +267,8 @@ if test -z "${setobjs}"; then
# Under uwin 2.0+, sys_nerr and sys_errlist exist, but they are
# macros (actually, these are imported from a DLL, but the end effect
# is the same), so the test below won't find them.
- AC_DEFINE(HAVE_SYS_NERR)
- AC_DEFINE(HAVE_SYS_ERRLIST)
+ libiberty_cv_var_sys_nerr=yes
+ libiberty_cv_var_sys_errlist=yes
;;
esac
@@ -352,6 +320,8 @@ EOF
AC_CHECK_FUNCS($checkfuncs)
fi
+libiberty_AC_FUNC_STRNCMP
+
# Install a library built with a cross compiler in $(tooldir) rather
# than $(libdir).
if test -z "${with_cross_host}"; then
diff --git a/contrib/binutils/libiberty/cp-demangle.c b/contrib/binutils/libiberty/cp-demangle.c
index 1eb2402..1cc4847 100644
--- a/contrib/binutils/libiberty/cp-demangle.c
+++ b/contrib/binutils/libiberty/cp-demangle.c
@@ -1,7 +1,9 @@
-/* Demangler for IA64 / g++ standard C++ ABI.
- Copyright (C) 2000 CodeSourcery LLC.
+/* Demangler for IA64 / g++ V3 ABI.
+ Copyright (C) 2000 Free Software Foundation, Inc.
Written by Alex Samuel <samuel@codesourcery.com>.
+ This file is part of GNU CC.
+
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
@@ -18,10 +20,11 @@
*/
/* This file implements demangling of C++ names mangled according to
- the IA64 / g++ standard C++ ABI. Use the cp_demangle function to
+ the IA64 / g++ V3 ABI. Use the cp_demangle function to
demangle a mangled name, or compile with the preprocessor macro
STANDALONE_DEMANGLER defined to create a demangling filter
- executable. */
+ executable (functionally similar to c++filt, but includes this
+ demangler only). */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -61,6 +64,10 @@
(((CHAR) >= 'a' && (CHAR) <= 'z') \
|| ((CHAR) >= 'A' && (CHAR) <= 'Z'))
+/* The prefix prepended by GCC to an identifier represnting the
+ anonymous namespace. */
+#define ANONYMOUS_NAMESPACE_PREFIX "_GLOBAL_"
+
/* If flag_verbose is zero, some simplifications will be made to the
output to make it easier to read and supress details that are
generally not of interest to the average C++ programmer.
@@ -72,13 +79,22 @@ static int flag_verbose;
specification -- don't demangle special g++ manglings. */
static int flag_strict;
-/* String_list_t is an extended form of dyn_string_t which provides a link
- field. A string_list_t may safely be cast to and used as a
- dyn_string_t. */
+/* String_list_t is an extended form of dyn_string_t which provides a
+ link field and a caret position for additions to the string. A
+ string_list_t may safely be cast to and used as a dyn_string_t. */
struct string_list_def
{
+ /* The dyn_string; must be first. */
struct dyn_string string;
+
+ /* The position at which additional text is added to this string
+ (using the result_add* macros). This value is an offset from the
+ end of the string, not the beginning (and should be
+ non-positive). */
+ int caret_position;
+
+ /* The next string in the list. */
struct string_list_def *next;
};
@@ -91,17 +107,10 @@ struct substitution_def
/* The demangled text of the substitution. */
dyn_string_t text;
- /* The template parameter that this represents, indexed from zero.
- If this is not a template paramter number, the value is
- NOT_TEMPLATE_PARM. */
- int template_parm_number;
-
/* Whether this substitution represents a template item. */
int template_p : 1;
};
-#define NOT_TEMPLATE_PARM (-1)
-
/* Data structure representing a template argument list. */
struct template_arg_list_def
@@ -172,7 +181,7 @@ typedef const char *status_t;
#define STATUS_INTERNAL_ERROR "Internal error."
/* This status code indicates a failure in malloc or realloc. */
-static const char* const status_allocation_failed = "Allocation failed.";
+static const char *const status_allocation_failed = "Allocation failed.";
#define STATUS_ALLOCATION_FAILED status_allocation_failed
/* Non-zero if STATUS indicates that no error has occurred. */
@@ -196,8 +205,8 @@ static string_list_t string_list_new
PARAMS ((int));
static void string_list_delete
PARAMS ((string_list_t));
-static status_t result_close_template_list
- PARAMS ((demangling_t));
+static status_t result_add_separated_char
+ PARAMS ((demangling_t, int));
static status_t result_push
PARAMS ((demangling_t));
static string_list_t result_pop
@@ -205,7 +214,7 @@ static string_list_t result_pop
static int substitution_start
PARAMS ((demangling_t));
static status_t substitution_add
- PARAMS ((demangling_t, int, int, int));
+ PARAMS ((demangling_t, int, int));
static dyn_string_t substitution_get
PARAMS ((demangling_t, int, int *));
#ifdef CP_DEMANGLE_DEBUG
@@ -272,30 +281,56 @@ static void demangling_delete
/* Returns the string containing the current demangled result. */
#define result_string(DM) (&(DM)->result->string)
-/* Appends a dyn_string_t to the demangled result. */
-#define result_append_string(DM, STRING) \
- (dyn_string_append (&(DM)->result->string, (STRING)) \
+/* Returns the position at which new text is inserted into the
+ demangled result. */
+#define result_caret_pos(DM) \
+ (result_length (DM) + \
+ ((string_list_t) result_string (DM))->caret_position)
+
+/* Adds a dyn_string_t to the demangled result. */
+#define result_add_string(DM, STRING) \
+ (dyn_string_insert (&(DM)->result->string, \
+ result_caret_pos (DM), (STRING)) \
+ ? STATUS_OK : STATUS_ALLOCATION_FAILED)
+
+/* Adds NUL-terminated string CSTR to the demangled result. */
+#define result_add(DM, CSTR) \
+ (dyn_string_insert_cstr (&(DM)->result->string, \
+ result_caret_pos (DM), (CSTR)) \
? STATUS_OK : STATUS_ALLOCATION_FAILED)
-/* Appends NUL-terminated string CSTR to the demangled result. */
-#define result_append(DM, CSTR) \
- (dyn_string_append_cstr (&(DM)->result->string, (CSTR)) \
+/* Adds character CHAR to the demangled result. */
+#define result_add_char(DM, CHAR) \
+ (dyn_string_insert_char (&(DM)->result->string, \
+ result_caret_pos (DM), (CHAR)) \
? STATUS_OK : STATUS_ALLOCATION_FAILED)
-/* Appends character CHAR to the demangled result. */
-#define result_append_char(DM, CHAR) \
- (dyn_string_append_char (&(DM)->result->string, (CHAR)) \
+/* Inserts a dyn_string_t to the demangled result at position POS. */
+#define result_insert_string(DM, POS, STRING) \
+ (dyn_string_insert (&(DM)->result->string, (POS), (STRING)) \
+ ? STATUS_OK : STATUS_ALLOCATION_FAILED)
+
+/* Inserts NUL-terminated string CSTR to the demangled result at
+ position POS. */
+#define result_insert(DM, POS, CSTR) \
+ (dyn_string_insert_cstr (&(DM)->result->string, (POS), (CSTR)) \
+ ? STATUS_OK : STATUS_ALLOCATION_FAILED)
+
+/* Inserts character CHAR to the demangled result at position POS. */
+#define result_insert_char(DM, POS, CHAR) \
+ (dyn_string_insert_char (&(DM)->result->string, (POS), (CHAR)) \
? STATUS_OK : STATUS_ALLOCATION_FAILED)
/* The length of the current demangled result. */
#define result_length(DM) \
dyn_string_length (&(DM)->result->string)
-/* Appends a space to the demangled result if the last character is
- not a space. */
-#define result_append_space(DM) \
- (dyn_string_append_space (&(DM)->result->string) \
- ? STATUS_OK : STATUS_ALLOCATION_FAILED)
+/* Appends a (less-than, greater-than) character to the result in DM
+ to (open, close) a template argument or parameter list. Appends a
+ space first if necessary to prevent spurious elision of angle
+ brackets with the previous character. */
+#define result_open_template_list(DM) result_add_separated_char(DM, '<')
+#define result_close_template_list(DM) result_add_separated_char(DM, '>')
/* Appends a base 10 representation of VALUE to DS. STATUS_OK on
success. On failure, deletes DS and returns an error code. */
@@ -357,6 +392,7 @@ string_list_new (length)
int length;
{
string_list_t s = (string_list_t) malloc (sizeof (struct string_list_def));
+ s->caret_position = 0;
if (s == NULL)
return NULL;
if (!dyn_string_init ((dyn_string_t) s, length))
@@ -378,29 +414,23 @@ string_list_delete (node)
}
}
-/* Appends a greater-than character to the demangled result. If the
- last character is a greater-than character, a space is inserted
- first, so that the two greater-than characters don't look like a
- right shift token. */
+/* Appends CHARACTER to the demangled result. If the current trailing
+ character of the result is CHARACTER, a space is inserted first. */
static status_t
-result_close_template_list (dm)
+result_add_separated_char (dm, character)
demangling_t dm;
+ int character;
{
- dyn_string_t s = &dm->result->string;
+ char *result = dyn_string_buf (result_string (dm));
+ int caret_pos = result_caret_pos (dm);
- /* Add a space if the last character is already a closing angle
- bracket, so that a nested template arg list doesn't look like
- it's closed with a right-shift operator. */
- if (dyn_string_last_char (s) == '>')
- {
- if (!dyn_string_append_char (s, ' '))
- return STATUS_ALLOCATION_FAILED;
- }
-
- /* Add closing angle brackets. */
- if (!dyn_string_append_char (s, '>'))
- return STATUS_ALLOCATION_FAILED;
+ /* Add a space if the last character is already the character we
+ want to add. */
+ if (caret_pos > 0 && result[caret_pos - 1] == character)
+ RETURN_IF_ERROR (result_add_char (dm, ' '));
+ /* Add the character. */
+ RETURN_IF_ERROR (result_add_char (dm, character));
return STATUS_OK;
}
@@ -438,6 +468,51 @@ result_pop (dm)
return top;
}
+/* Returns the current value of the caret for the result string. The
+ value is an offet from the end of the result string. */
+
+static int
+result_get_caret (dm)
+ demangling_t dm;
+{
+ return ((string_list_t) result_string (dm))->caret_position;
+}
+
+/* Sets the value of the caret for the result string, counted as an
+ offet from the end of the result string. */
+
+static void
+result_set_caret (dm, position)
+ demangling_t dm;
+ int position;
+{
+ ((string_list_t) result_string (dm))->caret_position = position;
+}
+
+/* Shifts the position of the next addition to the result by
+ POSITION_OFFSET. A negative value shifts the caret to the left. */
+
+static void
+result_shift_caret (dm, position_offset)
+ demangling_t dm;
+ int position_offset;
+{
+ ((string_list_t) result_string (dm))->caret_position += position_offset;
+}
+
+/* Returns non-zero if the character that comes right before the place
+ where text will be added to the result is a space. In this case,
+ the caller should supress adding another space. */
+
+static int
+result_previous_char_is_space (dm)
+ demangling_t dm;
+{
+ char *result = dyn_string_buf (result_string (dm));
+ int pos = result_caret_pos (dm);
+ return pos > 0 && result[pos - 1] == ' ';
+}
+
/* Returns the start position of a fragment of the demangled result
that will be a substitution candidate. Should be called at the
start of productions that can add substitutions. */
@@ -446,24 +521,18 @@ static int
substitution_start (dm)
demangling_t dm;
{
- return result_length (dm);
+ return result_caret_pos (dm);
}
/* Adds the suffix of the current demangled result of DM starting at
START_POSITION as a potential substitution. If TEMPLATE_P is
- non-zero, this potential substitution is a template-id.
-
- If TEMPLATE_PARM_NUMBER is not NOT_TEMPLATE_PARM, the substitution
- is for that particular <template-param>, and is distinct from other
- otherwise-identical types and other <template-param>s with
- different indices. */
+ non-zero, this potential substitution is a template-id. */
static status_t
-substitution_add (dm, start_position, template_p, template_parm_number)
+substitution_add (dm, start_position, template_p)
demangling_t dm;
int start_position;
int template_p;
- int template_parm_number;
{
dyn_string_t result = result_string (dm);
dyn_string_t substitution = dyn_string_new (0);
@@ -475,29 +544,20 @@ substitution_add (dm, start_position, template_p, template_parm_number)
/* Extract the substring of the current demangling result that
represents the subsitution candidate. */
if (!dyn_string_substring (substitution,
- result, start_position, result_length (dm)))
+ result, start_position, result_caret_pos (dm)))
{
dyn_string_delete (substitution);
return STATUS_ALLOCATION_FAILED;
}
- /* Check whether SUBSTITUTION already occurs. */
- for (i = 0; i < dm->num_substitutions; ++i)
- if (dyn_string_eq (dm->substitutions[i].text, substitution)
- && dm->substitutions[i].template_parm_number == template_parm_number)
- /* Found SUBSTITUTION already present. */
- {
- /* Callers expect this function to take ownership of
- SUBSTITUTION, so delete it. */
- dyn_string_delete (substitution);
- return STATUS_OK;
- }
-
/* If there's no room for the new entry, grow the array. */
if (dm->substitutions_allocated == dm->num_substitutions)
{
size_t new_array_size;
- dm->substitutions_allocated *= 2;
+ if (dm->substitutions_allocated > 0)
+ dm->substitutions_allocated *= 2;
+ else
+ dm->substitutions_allocated = 2;
new_array_size =
sizeof (struct substitution_def) * dm->substitutions_allocated;
@@ -512,10 +572,9 @@ substitution_add (dm, start_position, template_p, template_parm_number)
}
/* Add the substitution to the array. */
+ i = dm->num_substitutions++;
dm->substitutions[i].text = substitution;
dm->substitutions[i].template_p = template_p;
- dm->substitutions[i].template_parm_number = template_parm_number;
- ++dm->num_substitutions;
#ifdef CP_DEMANGLE_DEBUG
substitutions_print (dm, stderr);
@@ -801,7 +860,7 @@ static status_t demangle_nested_name
static status_t demangle_prefix
PARAMS ((demangling_t, int *));
static status_t demangle_unqualified_name
- PARAMS ((demangling_t));
+ PARAMS ((demangling_t, int *));
static status_t demangle_source_name
PARAMS ((demangling_t));
static status_t demangle_number
@@ -812,12 +871,18 @@ static status_t demangle_identifier
PARAMS ((demangling_t, int, dyn_string_t));
static status_t demangle_operator_name
PARAMS ((demangling_t, int, int *));
+static status_t demangle_nv_offset
+ PARAMS ((demangling_t));
+static status_t demangle_v_offset
+ PARAMS ((demangling_t));
+static status_t demangle_call_offset
+ PARAMS ((demangling_t));
static status_t demangle_special_name
PARAMS ((demangling_t));
static status_t demangle_ctor_dtor_name
PARAMS ((demangling_t));
static status_t demangle_type_ptr
- PARAMS ((demangling_t));
+ PARAMS ((demangling_t, int *, int));
static status_t demangle_type
PARAMS ((demangling_t));
static status_t demangle_CV_qualifiers
@@ -825,15 +890,15 @@ static status_t demangle_CV_qualifiers
static status_t demangle_builtin_type
PARAMS ((demangling_t));
static status_t demangle_function_type
- PARAMS ((demangling_t, int));
+ PARAMS ((demangling_t, int *));
static status_t demangle_bare_function_type
- PARAMS ((demangling_t, int));
+ PARAMS ((demangling_t, int *));
static status_t demangle_class_enum_type
PARAMS ((demangling_t, int *));
static status_t demangle_array_type
- PARAMS ((demangling_t));
-static status_t demangle_template_param
PARAMS ((demangling_t, int *));
+static status_t demangle_template_param
+ PARAMS ((demangling_t));
static status_t demangle_template_args
PARAMS ((demangling_t));
static status_t demangle_literal
@@ -847,19 +912,21 @@ static status_t demangle_scope_expression
static status_t demangle_expr_primary
PARAMS ((demangling_t));
static status_t demangle_substitution
- PARAMS ((demangling_t, int *, int *));
+ PARAMS ((demangling_t, int *));
static status_t demangle_local_name
PARAMS ((demangling_t));
static status_t demangle_discriminator
PARAMS ((demangling_t, int));
static status_t cp_demangle
PARAMS ((const char *, dyn_string_t));
+#ifdef IN_LIBGCC2
static status_t cp_demangle_type
PARAMS ((const char*, dyn_string_t));
+#endif
/* When passed to demangle_bare_function_type, indicates that the
function's return type is not encoded before its parameter types. */
-#define BFT_NO_RETURN_TYPE -1
+#define BFT_NO_RETURN_TYPE NULL
/* Check that the next character is C. If so, consume it. If not,
return an error. */
@@ -910,7 +977,7 @@ static status_t
demangle_encoding (dm)
demangling_t dm;
{
- int template_p;
+ int encode_return_type;
int start_position;
template_arg_list_t old_arg_list = current_template_arg_list (dm);
char peek = peek_char (dm);
@@ -919,25 +986,25 @@ demangle_encoding (dm)
/* Remember where the name starts. If it turns out to be a template
function, we'll have to insert the return type here. */
- start_position = result_length (dm);
+ start_position = result_caret_pos (dm);
if (peek == 'G' || peek == 'T')
RETURN_IF_ERROR (demangle_special_name (dm));
else
{
/* Now demangle the name. */
- RETURN_IF_ERROR (demangle_name (dm, &template_p));
+ RETURN_IF_ERROR (demangle_name (dm, &encode_return_type));
/* If there's anything left, the name was a function name, with
- maybe its return type, and its parameters types, following. */
+ maybe its return type, and its parameter types, following. */
if (!end_of_name_p (dm)
&& peek_char (dm) != 'E')
{
- if (template_p)
+ if (encode_return_type)
/* Template functions have their return type encoded. The
return type should be inserted at start_position. */
RETURN_IF_ERROR
- (demangle_bare_function_type (dm, start_position));
+ (demangle_bare_function_type (dm, &start_position));
else
/* Non-template functions don't have their return type
encoded. */
@@ -968,24 +1035,32 @@ demangle_encoding (dm)
::= <substitution> */
static status_t
-demangle_name (dm, template_p)
+demangle_name (dm, encode_return_type)
demangling_t dm;
- int *template_p;
+ int *encode_return_type;
{
- int special_std_substitution;
int start = substitution_start (dm);
+ char peek = peek_char (dm);
+ int is_std_substitution = 0;
+
+ /* Generally, the return type is encoded if the function is a
+ template-id, and suppressed otherwise. There are a few cases,
+ though, in which the return type is not encoded even for a
+ templated function. In these cases, this flag is set. */
+ int suppress_return_type = 0;
DEMANGLE_TRACE ("name", dm);
- switch (peek_char (dm))
+ switch (peek)
{
case 'N':
/* This is a <nested-name>. */
- RETURN_IF_ERROR (demangle_nested_name (dm, template_p));
+ RETURN_IF_ERROR (demangle_nested_name (dm, encode_return_type));
break;
case 'Z':
RETURN_IF_ERROR (demangle_local_name (dm));
+ *encode_return_type = 0;
break;
case 'S':
@@ -995,49 +1070,46 @@ demangle_name (dm, template_p)
{
(void) next_char (dm);
(void) next_char (dm);
- RETURN_IF_ERROR (result_append (dm, "std::"));
- RETURN_IF_ERROR (demangle_unqualified_name (dm));
+ RETURN_IF_ERROR (result_add (dm, "std::"));
+ RETURN_IF_ERROR
+ (demangle_unqualified_name (dm, &suppress_return_type));
+ is_std_substitution = 1;
}
else
- {
- RETURN_IF_ERROR (demangle_substitution (dm, template_p,
- &special_std_substitution));
- if (special_std_substitution)
- {
- /* This was the magic `std::' substitution. We can have
- a <nested-name> or one of the unscoped names
- following. */
- RETURN_IF_ERROR (result_append (dm, "::"));
- RETURN_IF_ERROR (demangle_name (dm, template_p));
- }
- }
+ RETURN_IF_ERROR (demangle_substitution (dm, encode_return_type));
/* Check if a template argument list immediately follows.
If so, then we just demangled an <unqualified-template-name>. */
if (peek_char (dm) == 'I')
{
- RETURN_IF_ERROR (substitution_add (dm, start, 0,
- NOT_TEMPLATE_PARM));
+ /* A template name of the form std::<unqualified-name> is a
+ substitution candidate. */
+ if (is_std_substitution)
+ RETURN_IF_ERROR (substitution_add (dm, start, 0));
+ /* Demangle the <template-args> here. */
RETURN_IF_ERROR (demangle_template_args (dm));
+ *encode_return_type = !suppress_return_type;
}
+ else
+ *encode_return_type = 0;
+
break;
default:
/* This is an <unscoped-name> or <unscoped-template-name>. */
- RETURN_IF_ERROR (demangle_unqualified_name (dm));
+ RETURN_IF_ERROR (demangle_unqualified_name (dm, &suppress_return_type));
/* If the <unqualified-name> is followed by template args, this
is an <unscoped-template-name>. */
if (peek_char (dm) == 'I')
{
/* Add a substitution for the unqualified template name. */
- RETURN_IF_ERROR (substitution_add (dm, start, 0,
- NOT_TEMPLATE_PARM));
+ RETURN_IF_ERROR (substitution_add (dm, start, 0));
RETURN_IF_ERROR (demangle_template_args (dm));
- *template_p = 1;
+ *encode_return_type = !suppress_return_type;
}
else
- *template_p = 0;
+ *encode_return_type = 0;
break;
}
@@ -1047,12 +1119,12 @@ demangle_name (dm, template_p)
/* Demangles and emits a <nested-name>.
- <nested-name> ::= N [<CV-qualifiers>] <prefix> <component> E */
+ <nested-name> ::= N [<CV-qualifiers>] <prefix> <unqulified-name> E */
static status_t
-demangle_nested_name (dm, template_p)
+demangle_nested_name (dm, encode_return_type)
demangling_t dm;
- int *template_p;
+ int *encode_return_type;
{
char peek;
@@ -1063,23 +1135,33 @@ demangle_nested_name (dm, template_p)
peek = peek_char (dm);
if (peek == 'r' || peek == 'V' || peek == 'K')
{
+ dyn_string_t cv_qualifiers;
status_t status;
- /* Snarf up and emit CV qualifiers. */
- dyn_string_t cv_qualifiers = dyn_string_new (24);
+ /* Snarf up CV qualifiers. */
+ cv_qualifiers = dyn_string_new (24);
if (cv_qualifiers == NULL)
return STATUS_ALLOCATION_FAILED;
-
demangle_CV_qualifiers (dm, cv_qualifiers);
- status = result_append_string (dm, cv_qualifiers);
+
+ /* Emit them, preceded by a space. */
+ status = result_add_char (dm, ' ');
+ if (STATUS_NO_ERROR (status))
+ status = result_add_string (dm, cv_qualifiers);
+ /* The CV qualifiers that occur in a <nested-name> will be
+ qualifiers for member functions. These are placed at the end
+ of the function. Therefore, shift the caret to the left by
+ the length of the qualifiers, so other text is inserted
+ before them and they stay at the end. */
+ result_shift_caret (dm, -dyn_string_length (cv_qualifiers) - 1);
+ /* Clean up. */
dyn_string_delete (cv_qualifiers);
RETURN_IF_ERROR (status);
- RETURN_IF_ERROR (result_append_space (dm));
}
-
- RETURN_IF_ERROR (demangle_prefix (dm, template_p));
- /* No need to demangle the final <component>; demangle_prefix will
- handle it. */
+
+ RETURN_IF_ERROR (demangle_prefix (dm, encode_return_type));
+ /* No need to demangle the final <unqualified-name>; demangle_prefix
+ will handle it. */
RETURN_IF_ERROR (demangle_char (dm, 'E'));
return STATUS_OK;
@@ -1087,41 +1169,52 @@ demangle_nested_name (dm, template_p)
/* Demangles and emits a <prefix>.
- <prefix> ::= <prefix> <component>
+ <prefix> ::= <prefix> <unqualified-name>
::= <template-prefix> <template-args>
::= # empty
::= <substitution>
<template-prefix> ::= <prefix>
- ::= <substitution>
-
- <component> ::= <unqualified-name>
- ::= <local-name> */
+ ::= <substitution> */
static status_t
-demangle_prefix (dm, template_p)
+demangle_prefix (dm, encode_return_type)
demangling_t dm;
- int *template_p;
+ int *encode_return_type;
{
int start = substitution_start (dm);
int nested = 0;
- /* TEMPLATE_P is updated as we decend the nesting chain. After
- <template-args>, it is set to non-zero; after everything else it
- is set to zero. */
+ /* ENCODE_RETURN_TYPE is updated as we decend the nesting chain.
+ After <template-args>, it is set to non-zero; after everything
+ else it is set to zero. */
+
+ /* Generally, the return type is encoded if the function is a
+ template-id, and suppressed otherwise. There are a few cases,
+ though, in which the return type is not encoded even for a
+ templated function. In these cases, this flag is set. */
+ int suppress_return_type = 0;
DEMANGLE_TRACE ("prefix", dm);
while (1)
{
char peek;
- int unused;
if (end_of_name_p (dm))
return "Unexpected end of name in <compound-name>.";
peek = peek_char (dm);
+ /* We'll initialize suppress_return_type to false, and set it to true
+ if we end up demangling a constructor name. However, make
+ sure we're not actually about to demangle template arguments
+ -- if so, this is the <template-args> following a
+ <template-prefix>, so we'll want the previous flag value
+ around. */
+ if (peek != 'I')
+ suppress_return_type = 0;
+
if (IS_DIGIT ((unsigned char) peek)
|| (peek >= 'a' && peek <= 'z')
|| peek == 'C' || peek == 'D'
@@ -1129,31 +1222,36 @@ demangle_prefix (dm, template_p)
{
/* We have another level of scope qualification. */
if (nested)
- RETURN_IF_ERROR (result_append (dm, "::"));
+ RETURN_IF_ERROR (result_add (dm, "::"));
else
nested = 1;
if (peek == 'S')
/* The substitution determines whether this is a
- template-id. */
- RETURN_IF_ERROR (demangle_substitution (dm, template_p,
- &unused));
+ template-id. */
+ RETURN_IF_ERROR (demangle_substitution (dm, encode_return_type));
else
{
- RETURN_IF_ERROR (demangle_unqualified_name (dm));
- *template_p = 0;
+ /* It's just a name. */
+ RETURN_IF_ERROR
+ (demangle_unqualified_name (dm, &suppress_return_type));
+ *encode_return_type = 0;
}
}
else if (peek == 'Z')
RETURN_IF_ERROR (demangle_local_name (dm));
else if (peek == 'I')
{
- if (*template_p)
- return STATUS_INTERNAL_ERROR;
- /* The template name is a substitution candidate. */
- RETURN_IF_ERROR (substitution_add (dm, start, 0, NOT_TEMPLATE_PARM));
RETURN_IF_ERROR (demangle_template_args (dm));
- *template_p = 1;
+
+ /* Now we want to indicate to the caller that we've
+ demangled template arguments, thus the prefix was a
+ <template-prefix>. That's so that the caller knows to
+ demangle the function's return type, if this turns out to
+ be a function name. But, if it's a member template
+ constructor or a templated conversion operator, report it
+ as untemplated. Those never get encoded return types. */
+ *encode_return_type = !suppress_return_type;
}
else if (peek == 'E')
/* All done. */
@@ -1161,38 +1259,56 @@ demangle_prefix (dm, template_p)
else
return "Unexpected character in <compound-name>.";
- /* Add a new substitution for the prefix thus far. */
- RETURN_IF_ERROR (substitution_add (dm, start, *template_p,
- NOT_TEMPLATE_PARM));
+ if (peek != 'S'
+ && peek_char (dm) != 'E')
+ /* Add a new substitution for the prefix thus far. */
+ RETURN_IF_ERROR (substitution_add (dm, start, *encode_return_type));
}
}
-/* Demangles and emits an <unqualified-name>. If the
- <unqualified-name> is a function and the first element in the
- argument list should be taken to be its return type,
- ENCODE_RETURN_TYPE is non-zero.
+/* Demangles and emits an <unqualified-name>. If this
+ <unqualified-name> is for a special function type that should never
+ have its return type encoded (particularly, a constructor or
+ conversion operator), *SUPPRESS_RETURN_TYPE is set to 1; otherwise,
+ it is set to zero.
<unqualified-name> ::= <operator-name>
::= <special-name>
::= <source-name> */
static status_t
-demangle_unqualified_name (dm)
+demangle_unqualified_name (dm, suppress_return_type)
demangling_t dm;
+ int *suppress_return_type;
{
char peek = peek_char (dm);
DEMANGLE_TRACE ("unqualified-name", dm);
+ /* By default, don't force suppression of the return type (though
+ non-template functions still don't get a return type encoded). */
+ *suppress_return_type = 0;
+
if (IS_DIGIT ((unsigned char) peek))
RETURN_IF_ERROR (demangle_source_name (dm));
else if (peek >= 'a' && peek <= 'z')
{
int num_args;
+
+ /* Conversion operators never have a return type encoded. */
+ if (peek == 'c' && peek_char_next (dm) == 'v')
+ *suppress_return_type = 1;
+
RETURN_IF_ERROR (demangle_operator_name (dm, 0, &num_args));
}
else if (peek == 'C' || peek == 'D')
- RETURN_IF_ERROR (demangle_ctor_dtor_name (dm));
+ {
+ /* Constructors never have a return type encoded. */
+ if (peek == 'C')
+ *suppress_return_type = 1;
+
+ RETURN_IF_ERROR (demangle_ctor_dtor_name (dm));
+ }
else
return "Unexpected character in <unqualified-name>.";
@@ -1222,7 +1338,7 @@ demangle_source_name (dm)
dm->last_source_name));
/* Emit it. */
- RETURN_IF_ERROR (result_append_string (dm, dm->last_source_name));
+ RETURN_IF_ERROR (result_add_string (dm, dm->last_source_name));
return STATUS_OK;
}
@@ -1330,6 +1446,29 @@ demangle_identifier (dm, length, identifier)
return STATUS_ALLOCATION_FAILED;
}
+ /* GCC encodes anonymous namespaces using a `_GLOBAL_[_.$]N.'
+ followed by the source file name and some random characters.
+ Unless we're in strict mode, decipher these names appropriately. */
+ if (!flag_strict)
+ {
+ char *name = dyn_string_buf (identifier);
+ int prefix_length = strlen (ANONYMOUS_NAMESPACE_PREFIX);
+
+ /* Compare the first, fixed part. */
+ if (strncmp (name, ANONYMOUS_NAMESPACE_PREFIX, prefix_length) == 0)
+ {
+ name += prefix_length;
+ /* The next character might be a period, an underscore, or
+ dollar sign, depending on the target architecture's
+ assembler's capabilities. After that comes an `N'. */
+ if ((*name == '.' || *name == '_' || *name == '$')
+ && *(name + 1) == 'N')
+ /* This looks like the anonymous namespace identifier.
+ Replace it with something comprehensible. */
+ dyn_string_copy_cstr (identifier, "(anonymous namespace)");
+ }
+ }
+
return STATUS_OK;
}
@@ -1388,7 +1527,7 @@ demangle_identifier (dm, length, identifier)
::= qu # ?
::= sz # sizeof
::= cv <type> # cast
- ::= vx <source-name> # vendor extended operator */
+ ::= v [0-9] <source-name> # vendor extended operator */
static status_t
demangle_operator_name (dm, short_name, num_args)
@@ -1449,6 +1588,7 @@ demangle_operator_name (dm, short_name, num_args)
{ "pm", "->*" , 2 },
{ "pp", "++" , 1 },
{ "ps", "+" , 1 },
+ { "pt", "->" , 2 },
{ "qu", "?" , 3 },
{ "rM", "%=" , 2 },
{ "rS", ">>=" , 2 },
@@ -1467,10 +1607,10 @@ demangle_operator_name (dm, short_name, num_args)
DEMANGLE_TRACE ("operator-name", dm);
- /* Is this a vendor extended operator? */
- if (c0 == 'v' && c1 == 'x')
+ /* Is this a vendor-extended operator? */
+ if (c0 == 'v' && IS_DIGIT (c1))
{
- RETURN_IF_ERROR (result_append (dm, "operator"));
+ RETURN_IF_ERROR (result_add (dm, "operator "));
RETURN_IF_ERROR (demangle_source_name (dm));
*num_args = 0;
return STATUS_OK;
@@ -1479,7 +1619,7 @@ demangle_operator_name (dm, short_name, num_args)
/* Is this a conversion operator? */
if (c0 == 'c' && c1 == 'v')
{
- RETURN_IF_ERROR (result_append (dm, "operator "));
+ RETURN_IF_ERROR (result_add (dm, "operator "));
/* Demangle the converted-to type. */
RETURN_IF_ERROR (demangle_type (dm));
*num_args = 0;
@@ -1497,8 +1637,8 @@ demangle_operator_name (dm, short_name, num_args)
/* Found it. */
{
if (!short_name)
- RETURN_IF_ERROR (result_append (dm, "operator"));
- RETURN_IF_ERROR (result_append (dm, p->name));
+ RETURN_IF_ERROR (result_add (dm, "operator"));
+ RETURN_IF_ERROR (result_add (dm, p->name));
*num_args = p->num_args;
return STATUS_OK;
@@ -1516,22 +1656,157 @@ demangle_operator_name (dm, short_name, num_args)
}
}
+/* Demangles and omits an <nv-offset>.
+
+ <nv-offset> ::= <offset number> # non-virtual base override */
+
+static status_t
+demangle_nv_offset (dm)
+ demangling_t dm;
+{
+ dyn_string_t number;
+ status_t status = STATUS_OK;
+
+ DEMANGLE_TRACE ("h-offset", dm);
+
+ /* Demangle the offset. */
+ number = dyn_string_new (4);
+ if (number == NULL)
+ return STATUS_ALLOCATION_FAILED;
+ demangle_number_literally (dm, number, 10, 1);
+
+ /* Don't display the offset unless in verbose mode. */
+ if (flag_verbose)
+ {
+ status = result_add (dm, " [nv:");
+ if (STATUS_NO_ERROR (status))
+ status = result_add_string (dm, number);
+ if (STATUS_NO_ERROR (status))
+ status = result_add_char (dm, ']');
+ }
+
+ /* Clean up. */
+ dyn_string_delete (number);
+ RETURN_IF_ERROR (status);
+ return STATUS_OK;
+}
+
+/* Demangles and emits a <v-offset>.
+
+ <v-offset> ::= <offset number> _ <virtual offset number>
+ # virtual base override, with vcall offset */
+
+static status_t
+demangle_v_offset (dm)
+ demangling_t dm;
+{
+ dyn_string_t number;
+ status_t status = STATUS_OK;
+
+ DEMANGLE_TRACE ("v-offset", dm);
+
+ /* Demangle the offset. */
+ number = dyn_string_new (4);
+ if (number == NULL)
+ return STATUS_ALLOCATION_FAILED;
+ demangle_number_literally (dm, number, 10, 1);
+
+ /* Don't display the offset unless in verbose mode. */
+ if (flag_verbose)
+ {
+ status = result_add (dm, " [v:");
+ if (STATUS_NO_ERROR (status))
+ status = result_add_string (dm, number);
+ if (STATUS_NO_ERROR (status))
+ result_add_char (dm, ',');
+ }
+ dyn_string_delete (number);
+ RETURN_IF_ERROR (status);
+
+ /* Demangle the separator. */
+ RETURN_IF_ERROR (demangle_char (dm, '_'));
+
+ /* Demangle the vcall offset. */
+ number = dyn_string_new (4);
+ if (number == NULL)
+ return STATUS_ALLOCATION_FAILED;
+ demangle_number_literally (dm, number, 10, 1);
+
+ /* Don't display the vcall offset unless in verbose mode. */
+ if (flag_verbose)
+ {
+ status = result_add_string (dm, number);
+ if (STATUS_NO_ERROR (status))
+ status = result_add_char (dm, ']');
+ }
+ dyn_string_delete (number);
+ RETURN_IF_ERROR (status);
+
+ return STATUS_OK;
+}
+
+/* Demangles and emits a <call-offset>.
+
+ <call-offset> ::= h <nv-offset> _
+ ::= v <v-offset> _ */
+
+static status_t
+demangle_call_offset (dm)
+ demangling_t dm;
+{
+ DEMANGLE_TRACE ("call-offset", dm);
+
+ switch (peek_char (dm))
+ {
+ case 'h':
+ advance_char (dm);
+ /* Demangle the offset. */
+ RETURN_IF_ERROR (demangle_nv_offset (dm));
+ /* Demangle the separator. */
+ RETURN_IF_ERROR (demangle_char (dm, '_'));
+ break;
+
+ case 'v':
+ advance_char (dm);
+ /* Demangle the offset. */
+ RETURN_IF_ERROR (demangle_v_offset (dm));
+ /* Demangle the separator. */
+ RETURN_IF_ERROR (demangle_char (dm, '_'));
+ break;
+
+ default:
+ return "Unrecognized <call-offset>.";
+ }
+
+ return STATUS_OK;
+}
+
/* Demangles and emits a <special-name>.
<special-name> ::= GV <object name> # Guard variable
- ::= Th[n] <offset number> _ <base name> <base encoding>
- # non-virtual base override thunk
- ::= Tv[n] <offset number> _ <vcall offset number>
- _ <base encoding>
- # virtual base override thunk
::= TV <type> # virtual table
::= TT <type> # VTT
::= TI <type> # typeinfo structure
::= TS <type> # typeinfo name
+ Other relevant productions include thunks:
+
+ <special-name> ::= T <call-offset> <base encoding>
+ # base is the nominal target function of thunk
+
+ <special-name> ::= Tc <call-offset> <call-offset> <base encoding>
+ # base is the nominal target function of thunk
+ # first call-offset is 'this' adjustment
+ # second call-offset is result adjustment
+
+ where
+
+ <call-offset> ::= h <nv-offset> _
+ ::= v <v-offset> _
+
Also demangles the special g++ manglings,
- <special-name> ::= CT <type> <offset number> _ <base type>
+ <special-name> ::= TC <type> <offset number> _ <base type>
# construction vtable
::= TF <type> # typeinfo function (old ABI only)
::= TJ <type> # java Class structure */
@@ -1551,7 +1826,7 @@ demangle_special_name (dm)
/* A guard variable name. Consume the G. */
advance_char (dm);
RETURN_IF_ERROR (demangle_char (dm, 'V'));
- RETURN_IF_ERROR (result_append (dm, "guard variable for "));
+ RETURN_IF_ERROR (result_add (dm, "guard variable for "));
RETURN_IF_ERROR (demangle_name (dm, &unused));
}
else if (peek == 'T')
@@ -1566,108 +1841,77 @@ demangle_special_name (dm)
case 'V':
/* Virtual table. */
advance_char (dm);
- RETURN_IF_ERROR (result_append (dm, "vtable for "));
+ RETURN_IF_ERROR (result_add (dm, "vtable for "));
RETURN_IF_ERROR (demangle_type (dm));
break;
case 'T':
/* VTT structure. */
advance_char (dm);
- RETURN_IF_ERROR (result_append (dm, "VTT for "));
+ RETURN_IF_ERROR (result_add (dm, "VTT for "));
RETURN_IF_ERROR (demangle_type (dm));
break;
case 'I':
/* Typeinfo structure. */
advance_char (dm);
- RETURN_IF_ERROR (result_append (dm, "typeinfo for "));
+ RETURN_IF_ERROR (result_add (dm, "typeinfo for "));
RETURN_IF_ERROR (demangle_type (dm));
break;
case 'F':
/* Typeinfo function. Used only in old ABI with new mangling. */
advance_char (dm);
- RETURN_IF_ERROR (result_append (dm, "typeinfo fn for "));
+ RETURN_IF_ERROR (result_add (dm, "typeinfo fn for "));
RETURN_IF_ERROR (demangle_type (dm));
break;
case 'S':
/* Character string containing type name, used in typeinfo. */
advance_char (dm);
- RETURN_IF_ERROR (result_append (dm, "typeinfo name for "));
+ RETURN_IF_ERROR (result_add (dm, "typeinfo name for "));
RETURN_IF_ERROR (demangle_type (dm));
break;
case 'J':
/* The java Class variable corresponding to a C++ class. */
advance_char (dm);
- RETURN_IF_ERROR (result_append (dm, "java Class for "));
+ RETURN_IF_ERROR (result_add (dm, "java Class for "));
RETURN_IF_ERROR (demangle_type (dm));
break;
case 'h':
/* Non-virtual thunk. */
advance_char (dm);
- RETURN_IF_ERROR (result_append (dm, "non-virtual thunk"));
- /* Demangle and emit the offset. */
- number = dyn_string_new (4);
- if (number == NULL)
- return STATUS_ALLOCATION_FAILED;
- demangle_number_literally (dm, number, 10, 1);
- /* Don't display the offset unless in verbose mode. */
- if (flag_verbose)
- {
- status = result_append_char (dm, ' ');
- if (STATUS_NO_ERROR (status))
- status = result_append_string (dm, number);
- }
- dyn_string_delete (number);
- RETURN_IF_ERROR (status);
+ RETURN_IF_ERROR (result_add (dm, "non-virtual thunk"));
+ RETURN_IF_ERROR (demangle_nv_offset (dm));
/* Demangle the separator. */
RETURN_IF_ERROR (demangle_char (dm, '_'));
/* Demangle and emit the target name and function type. */
- RETURN_IF_ERROR (result_append (dm, " to "));
+ RETURN_IF_ERROR (result_add (dm, " to "));
RETURN_IF_ERROR (demangle_encoding (dm));
break;
case 'v':
/* Virtual thunk. */
advance_char (dm);
- RETURN_IF_ERROR (result_append (dm, "virtual thunk "));
- /* Demangle and emit the offset. */
- number = dyn_string_new (4);
- if (number == NULL)
- return STATUS_ALLOCATION_FAILED;
- demangle_number_literally (dm, number, 10, 1);
- /* Don't display the offset unless in verbose mode. */
- if (flag_verbose)
- {
- status = result_append_string (dm, number);
- if (STATUS_NO_ERROR (status))
- result_append_char (dm, ' ');
- }
- dyn_string_delete (number);
- RETURN_IF_ERROR (status);
- /* Demangle the separator. */
- RETURN_IF_ERROR (demangle_char (dm, '_'));
- /* Demangle and emit the vcall offset. */
- number = dyn_string_new (4);
- if (number == NULL)
- return STATUS_ALLOCATION_FAILED;
- demangle_number_literally (dm, number, 10, 1);
- /* Don't display the vcall offset unless in verbose mode. */
- if (flag_verbose)
- {
- status = result_append_string (dm, number);
- if (STATUS_NO_ERROR (status))
- status = result_append_char (dm, ' ');
- }
- dyn_string_delete (number);
- RETURN_IF_ERROR (status);
+ RETURN_IF_ERROR (result_add (dm, "virtual thunk"));
+ RETURN_IF_ERROR (demangle_v_offset (dm));
/* Demangle the separator. */
RETURN_IF_ERROR (demangle_char (dm, '_'));
/* Demangle and emit the target function. */
- RETURN_IF_ERROR (result_append (dm, "to "));
+ RETURN_IF_ERROR (result_add (dm, " to "));
+ RETURN_IF_ERROR (demangle_encoding (dm));
+ break;
+
+ case 'c':
+ /* Covariant return thunk. */
+ advance_char (dm);
+ RETURN_IF_ERROR (result_add (dm, "covariant return thunk"));
+ RETURN_IF_ERROR (demangle_call_offset (dm));
+ RETURN_IF_ERROR (demangle_call_offset (dm));
+ /* Demangle and emit the target function. */
+ RETURN_IF_ERROR (result_add (dm, " to "));
RETURN_IF_ERROR (demangle_encoding (dm));
break;
@@ -1678,7 +1922,7 @@ demangle_special_name (dm)
dyn_string_t derived_type;
advance_char (dm);
- RETURN_IF_ERROR (result_append (dm, "construction vtable for "));
+ RETURN_IF_ERROR (result_add (dm, "construction vtable for "));
/* Demangle the derived type off to the side. */
RETURN_IF_ERROR (result_push (dm));
@@ -1702,17 +1946,17 @@ demangle_special_name (dm)
/* Emit the derived type. */
if (STATUS_NO_ERROR (status))
- status = result_append (dm, "-in-");
+ status = result_add (dm, "-in-");
if (STATUS_NO_ERROR (status))
- status = result_append_string (dm, derived_type);
+ status = result_add_string (dm, derived_type);
dyn_string_delete (derived_type);
/* Don't display the offset unless in verbose mode. */
if (flag_verbose)
{
- status = result_append_char (dm, ' ');
+ status = result_add_char (dm, ' ');
if (STATUS_NO_ERROR (status))
- result_append_string (dm, number);
+ result_add_string (dm, number);
}
dyn_string_delete (number);
RETURN_IF_ERROR (status);
@@ -1736,7 +1980,6 @@ demangle_special_name (dm)
::= C1 # complete object (in-charge) ctor
::= C2 # base object (not-in-charge) ctor
::= C3 # complete object (in-charge) allocating ctor
- ::= C4 # base object (not-in-charge) allocating ctor
::= D0 # deleting (in-charge) dtor
::= D1 # complete object (in-charge) dtor
::= D2 # base object (not-in-charge) dtor */
@@ -1749,8 +1992,7 @@ demangle_ctor_dtor_name (dm)
{
"in-charge",
"not-in-charge",
- "in-charge allocating",
- "not-in-charge allocating"
+ "allocating"
};
static const char *const dtor_flavors[] =
{
@@ -1768,16 +2010,16 @@ demangle_ctor_dtor_name (dm)
{
/* A constructor name. Consume the C. */
advance_char (dm);
- if (peek_char (dm) < '1' || peek_char (dm) > '4')
+ if (peek_char (dm) < '1' || peek_char (dm) > '3')
return "Unrecognized constructor.";
- RETURN_IF_ERROR (result_append_string (dm, dm->last_source_name));
+ RETURN_IF_ERROR (result_add_string (dm, dm->last_source_name));
/* Print the flavor of the constructor if in verbose mode. */
flavor = next_char (dm) - '1';
if (flag_verbose)
{
- RETURN_IF_ERROR (result_append (dm, "["));
- RETURN_IF_ERROR (result_append (dm, ctor_flavors[flavor]));
- RETURN_IF_ERROR (result_append_char (dm, ']'));
+ RETURN_IF_ERROR (result_add (dm, "["));
+ RETURN_IF_ERROR (result_add (dm, ctor_flavors[flavor]));
+ RETURN_IF_ERROR (result_add_char (dm, ']'));
}
}
else if (peek == 'D')
@@ -1786,15 +2028,15 @@ demangle_ctor_dtor_name (dm)
advance_char (dm);
if (peek_char (dm) < '0' || peek_char (dm) > '2')
return "Unrecognized destructor.";
- RETURN_IF_ERROR (result_append_char (dm, '~'));
- RETURN_IF_ERROR (result_append_string (dm, dm->last_source_name));
+ RETURN_IF_ERROR (result_add_char (dm, '~'));
+ RETURN_IF_ERROR (result_add_string (dm, dm->last_source_name));
/* Print the flavor of the destructor if in verbose mode. */
flavor = next_char (dm) - '0';
if (flag_verbose)
{
- RETURN_IF_ERROR (result_append (dm, " ["));
- RETURN_IF_ERROR (result_append (dm, dtor_flavors[flavor]));
- RETURN_IF_ERROR (result_append_char (dm, ']'));
+ RETURN_IF_ERROR (result_add (dm, " ["));
+ RETURN_IF_ERROR (result_add (dm, dtor_flavors[flavor]));
+ RETURN_IF_ERROR (result_add_char (dm, ']'));
}
}
else
@@ -1810,6 +2052,19 @@ demangle_ctor_dtor_name (dm)
a pointer to data or pointer to function to construct the right
output syntax. C++'s pointer syntax is hairy.
+ This function adds substitution candidates for every nested
+ pointer/reference type it processes, including the outermost, final
+ type, assuming the substitution starts at SUBSTITUTION_START in the
+ demangling result. For example, if this function demangles
+ `PP3Foo', it will add a substitution for `Foo', `Foo*', and
+ `Foo**', in that order.
+
+ *INSERT_POS is a quantity used internally, when this function calls
+ itself recursively, to figure out where to insert pointer
+ punctuation on the way up. On entry to this function, INSERT_POS
+ should point to a temporary value, but that value need not be
+ initialized.
+
<type> ::= P <type>
::= R <type>
::= <pointer-to-member-type>
@@ -1817,105 +2072,152 @@ demangle_ctor_dtor_name (dm)
<pointer-to-member-type> ::= M </class/ type> </member/ type> */
static status_t
-demangle_type_ptr (dm)
+demangle_type_ptr (dm, insert_pos, substitution_start)
demangling_t dm;
+ int *insert_pos;
+ int substitution_start;
{
- char next;
status_t status;
-
- /* Collect pointer symbols into this string. */
- dyn_string_t symbols = dyn_string_new (10);
+ int is_substitution_candidate = 1;
DEMANGLE_TRACE ("type*", dm);
- if (symbols == NULL)
- return STATUS_ALLOCATION_FAILED;
-
/* Scan forward, collecting pointers and references into symbols,
until we hit something else. Then emit the type. */
- while (1)
+ switch (peek_char (dm))
{
- next = peek_char (dm);
- if (next == 'P')
- {
- if (!dyn_string_append_char (symbols, '*'))
- return STATUS_ALLOCATION_FAILED;
- advance_char (dm);
- }
- else if (next == 'R')
- {
- if (!dyn_string_append_char (symbols, '&'))
- return STATUS_ALLOCATION_FAILED;
- advance_char (dm);
- }
- else if (next == 'M')
- {
- /* Pointer-to-member. */
- dyn_string_t class_type;
-
- /* Eat the 'M'. */
- advance_char (dm);
-
- /* Capture the type of which this is a pointer-to-member. */
- RETURN_IF_ERROR (result_push (dm));
- RETURN_IF_ERROR (demangle_type (dm));
- class_type = (dyn_string_t) result_pop (dm);
-
- /* Build the pointer-to-member notation. It comes before
- other pointer and reference qualifiers -- */
- if (!dyn_string_prepend_cstr (symbols, "::*"))
- return STATUS_ALLOCATION_FAILED;
- if (!dyn_string_prepend (symbols, class_type))
- return STATUS_ALLOCATION_FAILED;
- dyn_string_delete (class_type);
+ case 'P':
+ /* A pointer. Snarf the `P'. */
+ advance_char (dm);
+ /* Demangle the underlying type. */
+ RETURN_IF_ERROR (demangle_type_ptr (dm, insert_pos,
+ substitution_start));
+ /* Insert an asterisk where we're told to; it doesn't
+ necessarily go at the end. */
+ RETURN_IF_ERROR (result_insert_char (dm, *insert_pos, '*'));
+ /* The next (outermost) pointer or reference character should go
+ after this one. */
+ ++(*insert_pos);
+ break;
- if (peek_char (dm) == 'F')
- continue;
+ case 'R':
+ /* A reference. Snarf the `R'. */
+ advance_char (dm);
+ /* Demangle the underlying type. */
+ RETURN_IF_ERROR (demangle_type_ptr (dm, insert_pos,
+ substitution_start));
+ /* Insert an ampersand where we're told to; it doesn't
+ necessarily go at the end. */
+ RETURN_IF_ERROR (result_insert_char (dm, *insert_pos, '&'));
+ /* The next (outermost) pointer or reference character should go
+ after this one. */
+ ++(*insert_pos);
+ break;
- /* Demangle the type of the pointed-to member. */
+ case 'M':
+ {
+ /* A pointer-to-member. */
+ dyn_string_t class_type;
+
+ /* Eat the 'M'. */
+ advance_char (dm);
+
+ /* Capture the type of which this is a pointer-to-member. */
+ RETURN_IF_ERROR (result_push (dm));
+ RETURN_IF_ERROR (demangle_type (dm));
+ class_type = (dyn_string_t) result_pop (dm);
+
+ if (peek_char (dm) == 'F')
+ /* A pointer-to-member function. We want output along the
+ lines of `void (C::*) (int, int)'. Demangle the function
+ type, which would in this case give `void () (int, int)'
+ and set *insert_pos to the spot between the first
+ parentheses. */
+ status = demangle_type_ptr (dm, insert_pos, substitution_start);
+ else if (peek_char (dm) == 'A')
+ /* A pointer-to-member array variable. We want output that
+ looks like `int (Klass::*) [10]'. Demangle the array type
+ as `int () [10]', and set *insert_pos to the spot between
+ the parentheses. */
+ status = demangle_array_type (dm, insert_pos);
+ else
+ {
+ /* A pointer-to-member variable. Demangle the type of the
+ pointed-to member. */
status = demangle_type (dm);
/* Make it pretty. */
- if (STATUS_NO_ERROR (status))
- status = result_append_space (dm);
- /* Add the pointer-to-member syntax, and other pointer and
- reference symbols. */
- if (STATUS_NO_ERROR (status))
- status = result_append_string (dm, symbols);
- /* Clean up. */
- dyn_string_delete (symbols);
-
- RETURN_IF_ERROR (status);
- return STATUS_OK;
+ if (STATUS_NO_ERROR (status)
+ && !result_previous_char_is_space (dm))
+ status = result_add_char (dm, ' ');
+ /* The pointer-to-member notation (e.g. `C::*') follows the
+ member's type. */
+ *insert_pos = result_caret_pos (dm);
}
- else if (next == 'F')
- {
- /* Ooh, tricky, a pointer-to-function. */
- int position = result_length (dm);
- status = result_append_char (dm, '(');
- if (STATUS_NO_ERROR (status))
- status = result_append_string (dm, symbols);
- if (STATUS_NO_ERROR (status))
- status = result_append_char (dm, ')');
- dyn_string_delete (symbols);
- RETURN_IF_ERROR (status);
- RETURN_IF_ERROR (demangle_function_type (dm, position));
- return STATUS_OK;
- }
- else
- {
- /* No more pointe or reference tokens. Finish up. */
- status = demangle_type (dm);
+ /* Build the pointer-to-member notation. */
+ if (STATUS_NO_ERROR (status))
+ status = result_insert (dm, *insert_pos, "::*");
+ if (STATUS_NO_ERROR (status))
+ status = result_insert_string (dm, *insert_pos, class_type);
+ /* There may be additional levels of (pointer or reference)
+ indirection in this type. If so, the `*' and `&' should be
+ added after the pointer-to-member notation (e.g. `C::*&' for
+ a reference to a pointer-to-member of class C). */
+ *insert_pos += dyn_string_length (class_type) + 3;
- if (STATUS_NO_ERROR (status))
- status = result_append_string (dm, symbols);
- dyn_string_delete (symbols);
- RETURN_IF_ERROR (status);
+ /* Clean up. */
+ dyn_string_delete (class_type);
- RETURN_IF_ERROR (status);
- return STATUS_OK;
- }
+ RETURN_IF_ERROR (status);
+ }
+ break;
+
+ case 'F':
+ /* Ooh, tricky, a pointer-to-function. When we demangle the
+ function type, the return type should go at the very
+ beginning. */
+ *insert_pos = result_caret_pos (dm);
+ /* The parentheses indicate this is a function pointer or
+ reference type. */
+ RETURN_IF_ERROR (result_add (dm, "()"));
+ /* Now demangle the function type. The return type will be
+ inserted before the `()', and the argument list will go after
+ it. */
+ RETURN_IF_ERROR (demangle_function_type (dm, insert_pos));
+ /* We should now have something along the lines of
+ `void () (int, int)'. The pointer or reference characters
+ have to inside the first set of parentheses. *insert_pos has
+ already been updated to point past the end of the return
+ type. Move it one character over so it points inside the
+ `()'. */
+ ++(*insert_pos);
+ break;
+
+ case 'A':
+ /* An array pointer or reference. demangle_array_type will figure
+ out where the asterisks and ampersands go. */
+ RETURN_IF_ERROR (demangle_array_type (dm, insert_pos));
+ break;
+
+ default:
+ /* No more pointer or reference tokens; this is therefore a
+ pointer to data. Finish up by demangling the underlying
+ type. */
+ RETURN_IF_ERROR (demangle_type (dm));
+ /* The pointer or reference characters follow the underlying
+ type, as in `int*&'. */
+ *insert_pos = result_caret_pos (dm);
+ /* Because of the production <type> ::= <substitution>,
+ demangle_type will already have added the underlying type as
+ a substitution candidate. Don't do it again. */
+ is_substitution_candidate = 0;
+ break;
}
+
+ if (is_substitution_candidate)
+ RETURN_IF_ERROR (substitution_add (dm, substitution_start, 0));
+
+ return STATUS_OK;
}
/* Demangles and emits a <type>.
@@ -1926,6 +2228,7 @@ demangle_type_ptr (dm)
::= <array-type>
::= <pointer-to-member-type>
::= <template-param>
+ ::= <template-template-param> <template-args>
::= <CV-qualifiers> <type>
::= P <type> # pointer-to
::= R <type> # reference-to
@@ -1941,22 +2244,28 @@ demangle_type (dm)
int start = substitution_start (dm);
char peek = peek_char (dm);
char peek_next;
- int template_p = 0;
- int special_std_substitution;
- int is_builtin_type = 0;
+ int encode_return_type = 0;
template_arg_list_t old_arg_list = current_template_arg_list (dm);
- int template_parm = NOT_TEMPLATE_PARM;
+ int insert_pos;
+
+ /* A <type> can be a <substitution>; therefore, this <type> is a
+ substitution candidate unless a special condition holds (see
+ below). */
+ int is_substitution_candidate = 1;
DEMANGLE_TRACE ("type", dm);
/* A <class-enum-type> can start with a digit (a <source-name>), an
N (a <nested-name>), or a Z (a <local-name>). */
if (IS_DIGIT ((unsigned char) peek) || peek == 'N' || peek == 'Z')
- RETURN_IF_ERROR (demangle_class_enum_type (dm, &template_p));
- else if (peek >= 'a' && peek <= 'z')
+ RETURN_IF_ERROR (demangle_class_enum_type (dm, &encode_return_type));
+ /* Lower-case letters begin <builtin-type>s, except for `r', which
+ denotes restrict. */
+ else if (peek >= 'a' && peek <= 'z' && peek != 'r')
{
RETURN_IF_ERROR (demangle_builtin_type (dm));
- is_builtin_type = 1;
+ /* Built-in types are not substitution candidates. */
+ is_substitution_candidate = 0;
}
else
switch (peek)
@@ -1964,37 +2273,36 @@ demangle_type (dm)
case 'r':
case 'V':
case 'K':
+ /* CV-qualifiers (including restrict). We have to demangle
+ them off to the side, since C++ syntax puts them in a funny
+ place for qualified pointer and reference types. */
{
status_t status;
dyn_string_t cv_qualifiers = dyn_string_new (24);
+ int old_caret_position = result_get_caret (dm);
if (cv_qualifiers == NULL)
return STATUS_ALLOCATION_FAILED;
+ /* Decode all adjacent CV qualifiers. */
demangle_CV_qualifiers (dm, cv_qualifiers);
-
- /* If the qualifiers apply to a pointer or reference, they
- need to come after the whole qualified type. */
- if (peek_char (dm) == 'P' || peek_char (dm) == 'R')
- {
- status = demangle_type (dm);
- if (STATUS_NO_ERROR (status))
- status = result_append_space (dm);
- if (STATUS_NO_ERROR (status))
- status = result_append_string (dm, cv_qualifiers);
- }
- /* Otherwise, the qualifiers come first. */
- else
- {
- status = result_append_string (dm, cv_qualifiers);
- if (STATUS_NO_ERROR (status))
- status = result_append_space (dm);
- if (STATUS_NO_ERROR (status))
- status = demangle_type (dm);
- }
-
+ /* Emit them, and shift the caret left so that the
+ underlying type will be emitted before the qualifiers. */
+ status = result_add_string (dm, cv_qualifiers);
+ result_shift_caret (dm, -dyn_string_length (cv_qualifiers));
+ /* Clean up. */
dyn_string_delete (cv_qualifiers);
RETURN_IF_ERROR (status);
+ /* Also prepend a blank, if needed. */
+ RETURN_IF_ERROR (result_add_char (dm, ' '));
+ result_shift_caret (dm, -1);
+
+ /* Demangle the underlying type. It will be emitted before
+ the CV qualifiers, since we moved the caret. */
+ RETURN_IF_ERROR (demangle_type (dm));
+
+ /* Put the caret back where it was previously. */
+ result_set_caret (dm, old_caret_position);
}
break;
@@ -2002,11 +2310,32 @@ demangle_type (dm)
return "Non-pointer or -reference function type.";
case 'A':
- RETURN_IF_ERROR (demangle_array_type (dm));
+ RETURN_IF_ERROR (demangle_array_type (dm, NULL));
break;
case 'T':
- RETURN_IF_ERROR (demangle_template_param (dm, &template_parm));
+ /* It's either a <template-param> or a
+ <template-template-param>. In either case, demangle the
+ `T' token first. */
+ RETURN_IF_ERROR (demangle_template_param (dm));
+
+ /* Check for a template argument list; if one is found, it's a
+ <template-template-param> ::= <template-param>
+ ::= <substitution> */
+ if (peek_char (dm) == 'I')
+ {
+ /* Add a substitution candidate. The template parameter
+ `T' token is a substitution candidate by itself,
+ without the template argument list. */
+ RETURN_IF_ERROR (substitution_add (dm, start, encode_return_type));
+
+ /* Now demangle the template argument list. */
+ RETURN_IF_ERROR (demangle_template_args (dm));
+ /* The entire type, including the template template
+ parameter and its argument list, will be added as a
+ substitution candidate below. */
+ }
+
break;
case 'S':
@@ -2016,37 +2345,77 @@ demangle_type (dm)
or underscore. */
peek_next = peek_char_next (dm);
if (IS_DIGIT (peek_next) || peek_next == '_')
- RETURN_IF_ERROR (demangle_substitution (dm, &template_p,
- &special_std_substitution));
+ {
+ RETURN_IF_ERROR (demangle_substitution (dm, &encode_return_type));
+
+ /* The substituted name may have been a template name.
+ Check if template arguments follow, and if so, demangle
+ them. */
+ if (peek_char (dm) == 'I')
+ RETURN_IF_ERROR (demangle_template_args (dm));
+ else
+ /* A substitution token is not itself a substitution
+ candidate. (However, if the substituted template is
+ instantiated, the resulting type is.) */
+ is_substitution_candidate = 0;
+ }
else
- demangle_class_enum_type (dm, &template_p);
+ {
+ /* Now some trickiness. We have a special substitution
+ here. Often, the special substitution provides the
+ name of a template that's subsequently instantiated,
+ for instance `SaIcE' => std::allocator<char>. In these
+ cases we need to add a substitution candidate for the
+ entire <class-enum-type> and thus don't want to clear
+ the is_substitution_candidate flag.
+
+ However, it's possible that what we have here is a
+ substitution token representing an entire type, such as
+ `Ss' => std::string. In this case, we mustn't add a
+ new substitution candidate for this substitution token.
+ To detect this case, remember where the start of the
+ substitution token is. */
+ const char *next = dm->next;
+ /* Now demangle the <class-enum-type>. */
+ RETURN_IF_ERROR
+ (demangle_class_enum_type (dm, &encode_return_type));
+ /* If all that was just demangled is the two-character
+ special substitution token, supress the addition of a
+ new candidate for it. */
+ if (dm->next == next + 2)
+ is_substitution_candidate = 0;
+ }
+
break;
case 'P':
case 'R':
case 'M':
- RETURN_IF_ERROR (demangle_type_ptr (dm));
+ RETURN_IF_ERROR (demangle_type_ptr (dm, &insert_pos, start));
+ /* demangle_type_ptr adds all applicable substitution
+ candidates. */
+ is_substitution_candidate = 0;
break;
case 'C':
/* A C99 complex type. */
- RETURN_IF_ERROR (result_append (dm, "complex "));
+ RETURN_IF_ERROR (result_add (dm, "complex "));
advance_char (dm);
RETURN_IF_ERROR (demangle_type (dm));
break;
case 'G':
/* A C99 imaginary type. */
- RETURN_IF_ERROR (result_append (dm, "imaginary "));
+ RETURN_IF_ERROR (result_add (dm, "imaginary "));
advance_char (dm);
RETURN_IF_ERROR (demangle_type (dm));
break;
case 'U':
- /* Vendor extended type qualifier. */
+ /* Vendor-extended type qualifier. */
advance_char (dm);
RETURN_IF_ERROR (demangle_source_name (dm));
- RETURN_IF_ERROR (result_append_char (dm, ' '));
+ RETURN_IF_ERROR (result_add_char (dm, ' '));
RETURN_IF_ERROR (demangle_type (dm));
break;
@@ -2054,13 +2423,12 @@ demangle_type (dm)
return "Unexpected character in <type>.";
}
- /* Unqualified builin types are not substitution candidates. */
- if (!is_builtin_type)
+ if (is_substitution_candidate)
/* Add a new substitution for the type. If this type was a
<template-param>, pass its index since from the point of
- substitutions, a <template-param> token is a substitution
+ substitutions; a <template-param> token is a substitution
candidate distinct from the type that is substituted for it. */
- RETURN_IF_ERROR (substitution_add (dm, start, template_p, template_parm));
+ RETURN_IF_ERROR (substitution_add (dm, start, encode_return_type));
/* Pop off template argument lists added during mangling of this
type. */
@@ -2147,7 +2515,7 @@ demangle_builtin_type (dm)
if (type_name == NULL)
return "Unrecognized <builtin-type> code.";
- RETURN_IF_ERROR (result_append (dm, type_name));
+ RETURN_IF_ERROR (result_add (dm, type_name));
advance_char (dm);
return STATUS_OK;
}
@@ -2199,16 +2567,18 @@ demangle_CV_qualifiers (dm, qualifiers)
}
}
-/* Demangles and emits a <function-type> FUNCTION_NAME_POS is the
+/* Demangles and emits a <function-type>. *FUNCTION_NAME_POS is the
position in the result string of the start of the function
- identifier, at which the function's return type will be inserted.
+ identifier, at which the function's return type will be inserted;
+ *FUNCTION_NAME_POS is updated to position past the end of the
+ function's return type.
<function-type> ::= F [Y] <bare-function-type> E */
static status_t
demangle_function_type (dm, function_name_pos)
demangling_t dm;
- int function_name_pos;
+ int *function_name_pos;
{
DEMANGLE_TRACE ("function-type", dm);
RETURN_IF_ERROR (demangle_char (dm, 'F'));
@@ -2216,7 +2586,7 @@ demangle_function_type (dm, function_name_pos)
{
/* Indicate this function has C linkage if in verbose mode. */
if (flag_verbose)
- RETURN_IF_ERROR (result_append (dm, " [extern \"C\"] "));
+ RETURN_IF_ERROR (result_add (dm, " [extern \"C\"] "));
advance_char (dm);
}
RETURN_IF_ERROR (demangle_bare_function_type (dm, function_name_pos));
@@ -2234,7 +2604,7 @@ demangle_function_type (dm, function_name_pos)
static status_t
demangle_bare_function_type (dm, return_type_pos)
demangling_t dm;
- int return_type_pos;
+ int *return_type_pos;
{
/* Sequence is the index of the current function parameter, counting
from zero. The value -1 denotes the return type. */
@@ -2243,7 +2613,7 @@ demangle_bare_function_type (dm, return_type_pos)
DEMANGLE_TRACE ("bare-function-type", dm);
- RETURN_IF_ERROR (result_append_char (dm, '('));
+ RETURN_IF_ERROR (result_add_char (dm, '('));
while (!end_of_name_p (dm) && peek_char (dm) != 'E')
{
if (sequence == -1)
@@ -2259,10 +2629,16 @@ demangle_bare_function_type (dm, return_type_pos)
/* Add a space to the end of the type. Insert the return
type where we've been asked to. */
- if (!dyn_string_append_space (return_type)
- || !dyn_string_insert (result_string (dm), return_type_pos,
- return_type))
+ if (!dyn_string_append_space (return_type))
status = STATUS_ALLOCATION_FAILED;
+ if (STATUS_NO_ERROR (status))
+ {
+ if (!dyn_string_insert (result_string (dm), *return_type_pos,
+ return_type))
+ status = STATUS_ALLOCATION_FAILED;
+ else
+ *return_type_pos += dyn_string_length (return_type);
+ }
dyn_string_delete (return_type);
RETURN_IF_ERROR (status);
@@ -2273,60 +2649,103 @@ demangle_bare_function_type (dm, return_type_pos)
the only type in a parameter list; in that case, we want
to print `foo ()' instead of `foo (void)'. */
if (peek_char (dm) == 'v')
+ /* Consume the v. */
+ advance_char (dm);
+ else
{
- /* Consume the v. */
- advance_char (dm);
- continue;
+ /* Separate parameter types by commas. */
+ if (sequence > 0)
+ RETURN_IF_ERROR (result_add (dm, ", "));
+ /* Demangle the type. */
+ RETURN_IF_ERROR (demangle_type (dm));
}
- /* Separate parameter types by commas. */
- if (sequence > 0)
- RETURN_IF_ERROR (result_append (dm, ", "));
- /* Demangle the type. */
- RETURN_IF_ERROR (demangle_type (dm));
}
++sequence;
}
- RETURN_IF_ERROR (result_append_char (dm, ')'));
+ RETURN_IF_ERROR (result_add_char (dm, ')'));
+
+ /* We should have demangled at least one parameter type (which would
+ be void, for a function that takes no parameters), plus the
+ return type, if we were supposed to demangle that. */
+ if (sequence == -1)
+ return "Missing function return type.";
+ else if (sequence == 0)
+ return "Missing function parameter.";
return STATUS_OK;
}
-/* Demangles and emits a <class-enum-type>. *TEMPLATE_P is set to
+/* Demangles and emits a <class-enum-type>. *ENCODE_RETURN_TYPE is set to
non-zero if the type is a template-id, zero otherwise.
<class-enum-type> ::= <name> */
static status_t
-demangle_class_enum_type (dm, template_p)
+demangle_class_enum_type (dm, encode_return_type)
demangling_t dm;
- int *template_p;
+ int *encode_return_type;
{
DEMANGLE_TRACE ("class-enum-type", dm);
- RETURN_IF_ERROR (demangle_name (dm, template_p));
+ RETURN_IF_ERROR (demangle_name (dm, encode_return_type));
return STATUS_OK;
}
/* Demangles and emits an <array-type>.
- <array-type> ::= A [<dimension number>] _ <element type> */
+ If PTR_INSERT_POS is not NULL, the array type is formatted as a
+ pointer or reference to an array, except that asterisk and
+ ampersand punctuation is omitted (since it's not know at this
+ point). *PTR_INSERT_POS is set to the position in the demangled
+ name at which this punctuation should be inserted. For example,
+ `A10_i' is demangled to `int () [10]' and *PTR_INSERT_POS points
+ between the parentheses.
+
+ If PTR_INSERT_POS is NULL, the array type is assumed not to be
+ pointer- or reference-qualified. Then, for example, `A10_i' is
+ demangled simply as `int[10]'.
+
+ <array-type> ::= A [<dimension number>] _ <element type>
+ ::= A <dimension expression> _ <element type> */
static status_t
-demangle_array_type (dm)
+demangle_array_type (dm, ptr_insert_pos)
demangling_t dm;
+ int *ptr_insert_pos;
{
- status_t status;
- dyn_string_t array_size = dyn_string_new (10);
+ status_t status = STATUS_OK;
+ dyn_string_t array_size = NULL;
+ char peek;
- if (array_size == NULL)
- return STATUS_ALLOCATION_FAILED;
+ DEMANGLE_TRACE ("array-type", dm);
- status = demangle_char (dm, 'A');
+ RETURN_IF_ERROR (demangle_char (dm, 'A'));
/* Demangle the array size into array_size. */
- if (STATUS_NO_ERROR (status))
- status = demangle_number_literally (dm, array_size, 10, 0);
+ peek = peek_char (dm);
+ if (peek == '_')
+ /* Array bound is omitted. This is a C99-style VLA. */
+ ;
+ else if (IS_DIGIT (peek_char (dm)))
+ {
+ /* It looks like a constant array bound. */
+ array_size = dyn_string_new (10);
+ if (array_size == NULL)
+ return STATUS_ALLOCATION_FAILED;
+ status = demangle_number_literally (dm, array_size, 10, 0);
+ }
+ else
+ {
+ /* Anything is must be an expression for a nont-constant array
+ bound. This happens if the array type occurs in a template
+ and the array bound references a template parameter. */
+ RETURN_IF_ERROR (result_push (dm));
+ RETURN_IF_ERROR (demangle_expression (dm));
+ array_size = (dyn_string_t) result_pop (dm);
+ }
+ /* array_size may have been allocated by now, so we can't use
+ RETURN_IF_ERROR until it's been deallocated. */
/* Demangle the base type of the array. */
if (STATUS_NO_ERROR (status))
@@ -2334,30 +2753,40 @@ demangle_array_type (dm)
if (STATUS_NO_ERROR (status))
status = demangle_type (dm);
+ if (ptr_insert_pos != NULL)
+ {
+ /* This array is actually part of an pointer- or
+ reference-to-array type. Format appropriately, except we
+ don't know which and how much punctuation to use. */
+ if (STATUS_NO_ERROR (status))
+ status = result_add (dm, " () ");
+ /* Let the caller know where to insert the punctuation. */
+ *ptr_insert_pos = result_caret_pos (dm) - 2;
+ }
+
/* Emit the array dimension syntax. */
if (STATUS_NO_ERROR (status))
- status = result_append_char (dm, '[');
- if (STATUS_NO_ERROR (status))
- status = result_append_string (dm, array_size);
+ status = result_add_char (dm, '[');
+ if (STATUS_NO_ERROR (status) && array_size != NULL)
+ status = result_add_string (dm, array_size);
if (STATUS_NO_ERROR (status))
- status = result_append_char (dm, ']');
- dyn_string_delete (array_size);
+ status = result_add_char (dm, ']');
+ if (array_size != NULL)
+ dyn_string_delete (array_size);
RETURN_IF_ERROR (status);
return STATUS_OK;
}
-/* Demangles and emits a <template-param>. The zero-indexed position
- in the parameter list is placed in *TEMPLATE_PARM_NUMBER.
+/* Demangles and emits a <template-param>.
<template-param> ::= T_ # first template parameter
::= T <parameter-2 number> _ */
static status_t
-demangle_template_param (dm, template_parm_number)
+demangle_template_param (dm)
demangling_t dm;
- int *template_parm_number;
{
int parm_number;
template_arg_list_t current_arg_list = current_template_arg_list (dm);
@@ -2385,12 +2814,8 @@ demangle_template_param (dm, template_parm_number)
/* parm_number exceeded the number of arguments in the current
template argument list. */
return "Template parameter number out of bounds.";
- RETURN_IF_ERROR (result_append_string (dm, (dyn_string_t) arg));
-
- if (peek_char (dm) == 'I')
- RETURN_IF_ERROR (demangle_template_args (dm));
+ RETURN_IF_ERROR (result_add_string (dm, (dyn_string_t) arg));
- *template_parm_number = parm_number;
return STATUS_OK;
}
@@ -2419,7 +2844,7 @@ demangle_template_args (dm)
return STATUS_ALLOCATION_FAILED;
RETURN_IF_ERROR (demangle_char (dm, 'I'));
- RETURN_IF_ERROR (result_append_char (dm, '<'));
+ RETURN_IF_ERROR (result_open_template_list (dm));
do
{
string_list_t arg;
@@ -2427,7 +2852,7 @@ demangle_template_args (dm)
if (first)
first = 0;
else
- RETURN_IF_ERROR (result_append (dm, ", "));
+ RETURN_IF_ERROR (result_add (dm, ", "));
/* Capture the template arg. */
RETURN_IF_ERROR (result_push (dm));
@@ -2435,7 +2860,7 @@ demangle_template_args (dm)
arg = result_pop (dm);
/* Emit it in the demangled name. */
- RETURN_IF_ERROR (result_append_string (dm, (dyn_string_t) arg));
+ RETURN_IF_ERROR (result_add_string (dm, (dyn_string_t) arg));
/* Save it for use in expanding <template-param>s. */
template_arg_list_add_arg (arg_list, arg);
@@ -2511,9 +2936,9 @@ demangle_literal (dm)
corresponding to false or true, respectively. */
value = peek_char (dm);
if (value == '0')
- RETURN_IF_ERROR (result_append (dm, "false"));
+ RETURN_IF_ERROR (result_add (dm, "false"));
else if (value == '1')
- RETURN_IF_ERROR (result_append (dm, "true"));
+ RETURN_IF_ERROR (result_add (dm, "true"));
else
return "Unrecognized bool constant.";
/* Consume the 0 or 1. */
@@ -2531,10 +2956,10 @@ demangle_literal (dm)
value_string = dyn_string_new (0);
status = demangle_number_literally (dm, value_string, 10, 1);
if (STATUS_NO_ERROR (status))
- status = result_append_string (dm, value_string);
+ status = result_add_string (dm, value_string);
/* For long integers, append an l. */
if (code == 'l' && STATUS_NO_ERROR (status))
- status = result_append_char (dm, code);
+ status = result_add_char (dm, code);
dyn_string_delete (value_string);
RETURN_IF_ERROR (status);
@@ -2544,9 +2969,9 @@ demangle_literal (dm)
literal's type explicitly using cast syntax. */
}
- RETURN_IF_ERROR (result_append_char (dm, '('));
+ RETURN_IF_ERROR (result_add_char (dm, '('));
RETURN_IF_ERROR (demangle_type (dm));
- RETURN_IF_ERROR (result_append_char (dm, ')'));
+ RETURN_IF_ERROR (result_add_char (dm, ')'));
value_string = dyn_string_new (0);
if (value_string == NULL)
@@ -2554,7 +2979,7 @@ demangle_literal (dm)
status = demangle_number_literally (dm, value_string, 10, 1);
if (STATUS_NO_ERROR (status))
- status = result_append_string (dm, value_string);
+ status = result_add_string (dm, value_string);
dyn_string_delete (value_string);
RETURN_IF_ERROR (status);
@@ -2595,6 +3020,7 @@ demangle_template_arg (dm)
/* Expression. */
advance_char (dm);
RETURN_IF_ERROR (demangle_expression (dm));
+ RETURN_IF_ERROR (demangle_char (dm, 'E'));
break;
default:
@@ -2641,30 +3067,30 @@ demangle_expression (dm)
/* If it's binary, do an operand first. */
if (num_args > 1)
{
- status = result_append_char (dm, '(');
+ status = result_add_char (dm, '(');
if (STATUS_NO_ERROR (status))
status = demangle_expression (dm);
if (STATUS_NO_ERROR (status))
- status = result_append_char (dm, ')');
+ status = result_add_char (dm, ')');
}
/* Emit the operator. */
if (STATUS_NO_ERROR (status))
- status = result_append_string (dm, operator_name);
+ status = result_add_string (dm, operator_name);
dyn_string_delete (operator_name);
RETURN_IF_ERROR (status);
/* Emit its second (if binary) or only (if unary) operand. */
- RETURN_IF_ERROR (result_append_char (dm, '('));
+ RETURN_IF_ERROR (result_add_char (dm, '('));
RETURN_IF_ERROR (demangle_expression (dm));
- RETURN_IF_ERROR (result_append_char (dm, ')'));
+ RETURN_IF_ERROR (result_add_char (dm, ')'));
/* The ternary operator takes a third operand. */
if (num_args == 3)
{
- RETURN_IF_ERROR (result_append (dm, ":("));
+ RETURN_IF_ERROR (result_add (dm, ":("));
RETURN_IF_ERROR (demangle_expression (dm));
- RETURN_IF_ERROR (result_append_char (dm, ')'));
+ RETURN_IF_ERROR (result_add_char (dm, ')'));
}
}
@@ -2683,7 +3109,7 @@ demangle_scope_expression (dm)
RETURN_IF_ERROR (demangle_char (dm, 's'));
RETURN_IF_ERROR (demangle_char (dm, 'r'));
RETURN_IF_ERROR (demangle_type (dm));
- RETURN_IF_ERROR (result_append (dm, "::"));
+ RETURN_IF_ERROR (result_add (dm, "::"));
RETURN_IF_ERROR (demangle_encoding (dm));
return STATUS_OK;
}
@@ -2699,12 +3125,11 @@ demangle_expr_primary (dm)
demangling_t dm;
{
char peek = peek_char (dm);
- int unused;
DEMANGLE_TRACE ("expr-primary", dm);
if (peek == 'T')
- RETURN_IF_ERROR (demangle_template_param (dm, &unused));
+ RETURN_IF_ERROR (demangle_template_param (dm));
else if (peek == 'L')
{
/* Consume the `L'. */
@@ -2725,10 +3150,7 @@ demangle_expr_primary (dm)
}
/* Demangles and emits a <substitution>. Sets *TEMPLATE_P to non-zero
- if the substitution is the name of a template, zero otherwise. If
- the substitution token is St, which corresponds to the `::std::'
- namespace and can appear in a non-nested name, sets
- *SPECIAL_STD_SUBSTITUTION to non-zero; zero otherwise.
+ if the substitution is the name of a template, zero otherwise.
<substitution> ::= S <seq-id> _
::= S_
@@ -2744,14 +3166,13 @@ demangle_expr_primary (dm)
::= So # ::std::basic_ostream<char,
std::char_traits<char> >
::= Sd # ::std::basic_iostream<char,
- std::char_traits<char> >
+ std::char_traits<char> >
*/
static status_t
-demangle_substitution (dm, template_p, special_std_substitution)
+demangle_substitution (dm, template_p)
demangling_t dm;
int *template_p;
- int *special_std_substitution;
{
int seq_id;
int peek;
@@ -2760,7 +3181,6 @@ demangle_substitution (dm, template_p, special_std_substitution)
DEMANGLE_TRACE ("substitution", dm);
RETURN_IF_ERROR (demangle_char (dm, 'S'));
- *special_std_substitution = 0;
/* Scan the substitution sequence index. A missing number denotes
the first index. */
@@ -2780,18 +3200,17 @@ demangle_substitution (dm, template_p, special_std_substitution)
switch (peek)
{
case 't':
- RETURN_IF_ERROR (result_append (dm, "std"));
- *special_std_substitution = 1;
+ RETURN_IF_ERROR (result_add (dm, "std"));
break;
case 'a':
- RETURN_IF_ERROR (result_append (dm, "std::allocator"));
+ RETURN_IF_ERROR (result_add (dm, "std::allocator"));
new_last_source_name = "allocator";
*template_p = 1;
break;
case 'b':
- RETURN_IF_ERROR (result_append (dm, "std::basic_string"));
+ RETURN_IF_ERROR (result_add (dm, "std::basic_string"));
new_last_source_name = "basic_string";
*template_p = 1;
break;
@@ -2799,12 +3218,12 @@ demangle_substitution (dm, template_p, special_std_substitution)
case 's':
if (!flag_verbose)
{
- RETURN_IF_ERROR (result_append (dm, "std::string"));
+ RETURN_IF_ERROR (result_add (dm, "std::string"));
new_last_source_name = "string";
}
else
{
- RETURN_IF_ERROR (result_append (dm, "std::basic_string<char, std::char_traits<char>, std::allocator<char> >"));
+ RETURN_IF_ERROR (result_add (dm, "std::basic_string<char, std::char_traits<char>, std::allocator<char> >"));
new_last_source_name = "basic_string";
}
*template_p = 0;
@@ -2813,12 +3232,12 @@ demangle_substitution (dm, template_p, special_std_substitution)
case 'i':
if (!flag_verbose)
{
- RETURN_IF_ERROR (result_append (dm, "std::istream"));
+ RETURN_IF_ERROR (result_add (dm, "std::istream"));
new_last_source_name = "istream";
}
else
{
- RETURN_IF_ERROR (result_append (dm, "std::basic_istream<char, std::char_traints<char> >"));
+ RETURN_IF_ERROR (result_add (dm, "std::basic_istream<char, std::char_traints<char> >"));
new_last_source_name = "basic_istream";
}
*template_p = 0;
@@ -2827,12 +3246,12 @@ demangle_substitution (dm, template_p, special_std_substitution)
case 'o':
if (!flag_verbose)
{
- RETURN_IF_ERROR (result_append (dm, "std::ostream"));
+ RETURN_IF_ERROR (result_add (dm, "std::ostream"));
new_last_source_name = "ostream";
}
else
{
- RETURN_IF_ERROR (result_append (dm, "std::basic_ostream<char, std::char_traits<char> >"));
+ RETURN_IF_ERROR (result_add (dm, "std::basic_ostream<char, std::char_traits<char> >"));
new_last_source_name = "basic_ostream";
}
*template_p = 0;
@@ -2841,12 +3260,12 @@ demangle_substitution (dm, template_p, special_std_substitution)
case 'd':
if (!flag_verbose)
{
- RETURN_IF_ERROR (result_append (dm, "std::iostream"));
+ RETURN_IF_ERROR (result_add (dm, "std::iostream"));
new_last_source_name = "iostream";
}
else
{
- RETURN_IF_ERROR (result_append (dm, "std::basic_iostream<char, std::char_traits<char> >"));
+ RETURN_IF_ERROR (result_add (dm, "std::basic_iostream<char, std::char_traits<char> >"));
new_last_source_name = "basic_iostream";
}
*template_p = 0;
@@ -2877,7 +3296,7 @@ demangle_substitution (dm, template_p, special_std_substitution)
return "Substitution number out of range.";
/* Emit the substitution text. */
- RETURN_IF_ERROR (result_append_string (dm, text));
+ RETURN_IF_ERROR (result_add_string (dm, text));
RETURN_IF_ERROR (demangle_char (dm, '_'));
return STATUS_OK;
@@ -2897,12 +3316,12 @@ demangle_local_name (dm)
RETURN_IF_ERROR (demangle_char (dm, 'Z'));
RETURN_IF_ERROR (demangle_encoding (dm));
RETURN_IF_ERROR (demangle_char (dm, 'E'));
- RETURN_IF_ERROR (result_append (dm, "'s "));
+ RETURN_IF_ERROR (result_add (dm, "::"));
if (peek_char (dm) == 's')
{
/* Local character string literal. */
- RETURN_IF_ERROR (result_append (dm, "string literal"));
+ RETURN_IF_ERROR (result_add (dm, "string literal"));
/* Consume the s. */
advance_char (dm);
RETURN_IF_ERROR (demangle_discriminator (dm, 0));
@@ -2910,7 +3329,6 @@ demangle_local_name (dm)
else
{
int unused;
- RETURN_IF_ERROR (result_append (dm, "local "));
/* Local name for some other entity. Demangle its name. */
RETURN_IF_ERROR (demangle_name (dm, &unused));
RETURN_IF_ERROR (demangle_discriminator (dm, 1));
@@ -2933,14 +3351,14 @@ demangle_discriminator (dm, suppress_first)
int suppress_first;
{
/* Output for <discriminator>s to the demangled name is completely
- supressed if not in verbose mode. */
+ suppressed if not in verbose mode. */
if (peek_char (dm) == '_')
{
/* Consume the underscore. */
advance_char (dm);
if (flag_verbose)
- RETURN_IF_ERROR (result_append (dm, " [#"));
+ RETURN_IF_ERROR (result_add (dm, " [#"));
/* Check if there's a number following the underscore. */
if (IS_DIGIT ((unsigned char) peek_char (dm)))
{
@@ -2958,15 +3376,15 @@ demangle_discriminator (dm, suppress_first)
{
if (flag_verbose)
/* A missing digit correspond to one. */
- RETURN_IF_ERROR (result_append_char (dm, '1'));
+ RETURN_IF_ERROR (result_add_char (dm, '1'));
}
if (flag_verbose)
- RETURN_IF_ERROR (result_append_char (dm, ']'));
+ RETURN_IF_ERROR (result_add_char (dm, ']'));
}
else if (!suppress_first)
{
if (flag_verbose)
- RETURN_IF_ERROR (result_append (dm, " [#0]"));
+ RETURN_IF_ERROR (result_add (dm, " [#0]"));
}
return STATUS_OK;
@@ -3025,6 +3443,7 @@ cp_demangle (name, result)
dyn_string_t. On success, returns STATUS_OK. On failiure, returns
an error message, and the contents of RESULT are unchanged. */
+#ifdef IN_LIBGCC2
static status_t
cp_demangle_type (type_name, result)
const char* type_name;
@@ -3062,12 +3481,9 @@ cp_demangle_type (type_name, result)
return status;
}
-
-#ifdef IN_LIBGCC2
-
extern char *__cxa_demangle PARAMS ((const char *, char *, size_t *, int *));
-/* ABI-mandated entry point in the C++ runtime library for performing
+/* ia64 ABI-mandated entry point in the C++ runtime library for performing
demangling. MANGLED_NAME is a NUL-terminated character string
containing the name to be demangled.
@@ -3181,13 +3597,21 @@ __cxa_demangle (mangled_name, output_buffer, length, status)
If the demangling failes, returns NULL. */
char *
-cplus_demangle_new_abi (mangled)
+cplus_demangle_v3 (mangled)
const char* mangled;
{
+ dyn_string_t demangled;
+ status_t status;
+
+ /* If this isn't a mangled name, don't pretend to demangle it. */
+ if (strncmp (mangled, "_Z", 2) != 0)
+ return NULL;
+
/* Create a dyn_string to hold the demangled name. */
- dyn_string_t demangled = dyn_string_new (0);
+ demangled = dyn_string_new (0);
/* Attempt the demangling. */
- status_t status = cp_demangle ((char *) mangled, demangled);
+ status = cp_demangle ((char *) mangled, demangled);
+
if (STATUS_NO_ERROR (status))
/* Demangling succeeded. */
{
@@ -3221,7 +3645,8 @@ static void print_usage
/* Non-zero if CHAR is a character than can occur in a mangled name. */
#define is_mangled_char(CHAR) \
- (IS_ALPHA (CHAR) || IS_DIGIT (CHAR) || (CHAR) == '_')
+ (IS_ALPHA (CHAR) || IS_DIGIT (CHAR) \
+ || (CHAR) == '_' || (CHAR) == '.' || (CHAR) == '$')
/* The name of this program, as invoked. */
const char* program_name;
@@ -3234,7 +3659,7 @@ print_usage (fp, exit_value)
int exit_value;
{
fprintf (fp, "Usage: %s [options] [names ...]\n", program_name);
- fprintf (fp, "Options:\n", program_name);
+ fprintf (fp, "Options:\n");
fprintf (fp, " -h,--help Display this message.\n");
fprintf (fp, " -s,--strict Demangle standard names only.\n");
fprintf (fp, " -v,--verbose Produce verbose demanglings.\n");
diff --git a/contrib/binutils/libiberty/cplus-dem.c b/contrib/binutils/libiberty/cplus-dem.c
index 8a672c6..a42f45e 100644
--- a/contrib/binutils/libiberty/cplus-dem.c
+++ b/contrib/binutils/libiberty/cplus-dem.c
@@ -1,5 +1,6 @@
/* Demangler for GNU C++
- Copyright 1989, 91, 94, 95, 96, 97, 98, 1999 Free Software Foundation, Inc.
+ Copyright 1989, 1991, 1994, 1995, 1996, 1997, 1998, 1999,
+ 2000 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
@@ -33,7 +34,8 @@ Boston, MA 02111-1307, USA. */
#include "config.h"
#endif
-#include <ctype.h>
+#include "safe-ctype.h"
+
#include <sys/types.h>
#include <string.h>
#include <stdio.h>
@@ -51,6 +53,8 @@ char * realloc ();
#include "libiberty.h"
+static char *ada_demangle PARAMS ((const char *, int));
+
#define min(X,Y) (((X) < (Y)) ? (X) : (Y))
/* A value at least one greater than the maximum number of characters
@@ -98,7 +102,7 @@ mystrstr (s1, s2)
#define CPLUS_MARKER '$'
#endif
-enum demangling_styles current_demangling_style = gnu_demangling;
+enum demangling_styles current_demangling_style = auto_demangling;
static char cplus_markers[] = { CPLUS_MARKER, '.', '$', '\0' };
@@ -291,9 +295,21 @@ struct demangler_engine libiberty_demanglers[] =
}
,
{
- GNU_NEW_ABI_DEMANGLING_STYLE_STRING,
- gnu_new_abi_demangling,
- "GNU (g++) new-ABI-style demangling"
+ GNU_V3_DEMANGLING_STYLE_STRING,
+ gnu_v3_demangling,
+ "GNU (g++) V3 ABI-style demangling"
+ }
+ ,
+ {
+ JAVA_DEMANGLING_STYLE_STRING,
+ java_demangling,
+ "Java style demangling"
+ }
+ ,
+ {
+ GNAT_DEMANGLING_STYLE_STRING,
+ gnat_demangling,
+ "GNAT style demangling"
}
,
{
@@ -512,6 +528,9 @@ static void
recursively_demangle PARAMS ((struct work_stuff *, const char **, string *,
int));
+static void
+grow_vect PARAMS ((void **, size_t *, size_t, int));
+
/* Translate count to integer, consuming tokens in the process.
Conversion terminates on the first non-digit character.
@@ -526,10 +545,10 @@ consume_count (type)
{
int count = 0;
- if (! isdigit ((unsigned char)**type))
+ if (! ISDIGIT ((unsigned char)**type))
return -1;
- while (isdigit ((unsigned char)**type))
+ while (ISDIGIT ((unsigned char)**type))
{
count *= 10;
@@ -540,7 +559,7 @@ consume_count (type)
ten. */
if ((count % 10) != 0)
{
- while (isdigit ((unsigned char) **type))
+ while (ISDIGIT ((unsigned char) **type))
(*type)++;
return -1;
}
@@ -566,7 +585,7 @@ consume_count_with_underscores (mangled)
if (**mangled == '_')
{
(*mangled)++;
- if (!isdigit ((unsigned char)**mangled))
+ if (!ISDIGIT ((unsigned char)**mangled))
return -1;
idx = consume_count (mangled);
@@ -698,14 +717,14 @@ cplus_demangle_opname (opname, result, options)
}
}
else if (opname[0] == '_' && opname[1] == '_'
- && islower((unsigned char)opname[2])
- && islower((unsigned char)opname[3]))
+ && ISLOWER((unsigned char)opname[2])
+ && ISLOWER((unsigned char)opname[3]))
{
if (opname[4] == '\0')
{
/* Operator. */
size_t i;
- for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
+ for (i = 0; i < ARRAY_SIZE (optable); i++)
{
if (strlen (optable[i].in) == 2
&& memcmp (optable[i].in, opname + 2, 2) == 0)
@@ -723,7 +742,7 @@ cplus_demangle_opname (opname, result, options)
{
/* Assignment. */
size_t i;
- for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
+ for (i = 0; i < ARRAY_SIZE (optable); i++)
{
if (strlen (optable[i].in) == 3
&& memcmp (optable[i].in, opname + 2, 3) == 0)
@@ -747,7 +766,7 @@ cplus_demangle_opname (opname, result, options)
&& memcmp (opname + 3, "assign_", 7) == 0)
{
size_t i;
- for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
+ for (i = 0; i < ARRAY_SIZE (optable); i++)
{
len1 = len - 10;
if ((int) strlen (optable[i].in) == len1
@@ -764,7 +783,7 @@ cplus_demangle_opname (opname, result, options)
else
{
size_t i;
- for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
+ for (i = 0; i < ARRAY_SIZE (optable); i++)
{
len1 = len - 3;
if ((int) strlen (optable[i].in) == len1
@@ -811,7 +830,7 @@ cplus_mangle_opname (opname, options)
int len;
len = strlen (opname);
- for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
+ for (i = 0; i < ARRAY_SIZE (optable); i++)
{
if ((int) strlen (optable[i].out) == len
&& (options & DMGL_ANSI) == (optable[i].flags & DMGL_ANSI)
@@ -891,13 +910,20 @@ cplus_demangle (mangled, options)
char *ret;
struct work_stuff work[1];
memset ((char *) work, 0, sizeof (work));
- work -> options = options;
- if ((work -> options & DMGL_STYLE_MASK) == 0)
- work -> options |= (int) current_demangling_style & DMGL_STYLE_MASK;
+ work->options = options;
+ if ((work->options & DMGL_STYLE_MASK) == 0)
+ work->options |= (int) current_demangling_style & DMGL_STYLE_MASK;
+
+ /* The V3 ABI demangling is implemented elsewhere. */
+ if (GNU_V3_DEMANGLING || AUTO_DEMANGLING)
+ {
+ ret = cplus_demangle_v3 (mangled);
+ if (ret || GNU_V3_DEMANGLING)
+ return ret;
+ }
- /* The new-ABI demangling is implemented elsewhere. */
- if (GNU_NEW_ABI_DEMANGLING)
- return cplus_demangle_new_abi (mangled);
+ if (GNAT_DEMANGLING)
+ return ada_demangle(mangled,options);
ret = internal_cplus_demangle (work, mangled);
squangle_mop_up (work);
@@ -905,6 +931,139 @@ cplus_demangle (mangled, options)
}
+/* Assuming *OLD_VECT points to an array of *SIZE objects of size
+ ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
+ updating *OLD_VECT and *SIZE as necessary. */
+
+static void
+grow_vect (old_vect, size, min_size, element_size)
+ void **old_vect;
+ size_t *size;
+ size_t min_size;
+ int element_size;
+{
+ if (*size < min_size)
+ {
+ *size *= 2;
+ if (*size < min_size)
+ *size = min_size;
+ *old_vect = xrealloc (*old_vect, *size * element_size);
+ }
+}
+
+/* Demangle ada names:
+ 1. Discard final __{DIGIT}+ or ${DIGIT}+
+ 2. Convert other instances of embedded "__" to `.'.
+ 3. Discard leading _ada_.
+ 4. Remove everything after first ___ if it is followed by 'X'.
+ 5. Put symbols that should be suppressed in <...> brackets.
+ The resulting string is valid until the next call of ada_demangle. */
+
+static char *
+ada_demangle (mangled, option)
+ const char *mangled;
+ int option ATTRIBUTE_UNUSED;
+{
+ int i, j;
+ int len0;
+ const char* p;
+ char *demangled = NULL;
+ int at_start_name;
+ int changed;
+ char *demangling_buffer = NULL;
+ size_t demangling_buffer_size = 0;
+
+ changed = 0;
+
+ if (strncmp (mangled, "_ada_", 5) == 0)
+ {
+ mangled += 5;
+ changed = 1;
+ }
+
+ if (mangled[0] == '_' || mangled[0] == '<')
+ goto Suppress;
+
+ p = strstr (mangled, "___");
+ if (p == NULL)
+ len0 = strlen (mangled);
+ else
+ {
+ if (p[3] == 'X')
+ {
+ len0 = p - mangled;
+ changed = 1;
+ }
+ else
+ goto Suppress;
+ }
+
+ /* Make demangled big enough for possible expansion by operator name. */
+ grow_vect ((void **) &(demangling_buffer),
+ &demangling_buffer_size, 2 * len0 + 1,
+ sizeof (char));
+ demangled = demangling_buffer;
+
+ if (ISDIGIT ((unsigned char) mangled[len0 - 1])) {
+ for (i = len0 - 2; i >= 0 && ISDIGIT ((unsigned char) mangled[i]); i -= 1)
+ ;
+ if (i > 1 && mangled[i] == '_' && mangled[i - 1] == '_')
+ {
+ len0 = i - 1;
+ changed = 1;
+ }
+ else if (mangled[i] == '$')
+ {
+ len0 = i;
+ changed = 1;
+ }
+ }
+
+ for (i = 0, j = 0; i < len0 && ! ISALPHA ((unsigned char)mangled[i]);
+ i += 1, j += 1)
+ demangled[j] = mangled[i];
+
+ at_start_name = 1;
+ while (i < len0)
+ {
+ at_start_name = 0;
+
+ if (i < len0 - 2 && mangled[i] == '_' && mangled[i + 1] == '_')
+ {
+ demangled[j] = '.';
+ changed = at_start_name = 1;
+ i += 2; j += 1;
+ }
+ else
+ {
+ demangled[j] = mangled[i];
+ i += 1; j += 1;
+ }
+ }
+ demangled[j] = '\000';
+
+ for (i = 0; demangled[i] != '\0'; i += 1)
+ if (ISUPPER ((unsigned char)demangled[i]) || demangled[i] == ' ')
+ goto Suppress;
+
+ if (! changed)
+ return NULL;
+ else
+ return demangled;
+
+ Suppress:
+ grow_vect ((void **) &(demangling_buffer),
+ &demangling_buffer_size, strlen (mangled) + 3,
+ sizeof (char));
+ demangled = demangling_buffer;
+ if (mangled[0] == '<')
+ strcpy (demangled, mangled);
+ else
+ sprintf (demangled, "<%s>", mangled);
+
+ return demangled;
+}
+
/* This function performs most of what cplus_demangle use to do, but
to be able to demangle a name with a B, K or n code, we need to
have a longer term memory of what types have been seen. The original
@@ -920,7 +1079,7 @@ internal_cplus_demangle (work, mangled)
string decl;
int success = 0;
char *demangled = NULL;
- int s1,s2,s3,s4;
+ int s1, s2, s3, s4;
s1 = work->constructor;
s2 = work->destructor;
s3 = work->static_type;
@@ -973,7 +1132,7 @@ internal_cplus_demangle (work, mangled)
work->destructor = s2;
work->static_type = s3;
work->type_quals = s4;
- return (demangled);
+ return demangled;
}
@@ -1134,7 +1293,7 @@ mop_up (work, declp, success)
else
{
string_appendn (declp, "", 1);
- demangled = declp -> b;
+ demangled = declp->b;
}
return (demangled);
}
@@ -1374,7 +1533,7 @@ demangle_signature (work, mangled, declp)
if (HP_DEMANGLING)
{
(*mangled)++;
- while (**mangled && isdigit ((unsigned char)**mangled))
+ while (**mangled && ISDIGIT ((unsigned char)**mangled))
(*mangled)++;
}
else
@@ -1573,9 +1732,7 @@ demangle_expression (work, mangled, s, tk)
len = strlen (*mangled);
- for (i = 0;
- i < sizeof (optable) / sizeof (optable [0]);
- ++i)
+ for (i = 0; i < ARRAY_SIZE (optable); ++i)
{
size_t l = strlen (optable[i].in);
@@ -1709,7 +1866,7 @@ demangle_real_value (work, mangled, s)
string_appendn (s, "-", 1);
(*mangled)++;
}
- while (isdigit ((unsigned char)**mangled))
+ while (ISDIGIT ((unsigned char)**mangled))
{
string_appendn (s, *mangled, 1);
(*mangled)++;
@@ -1718,7 +1875,7 @@ demangle_real_value (work, mangled, s)
{
string_appendn (s, ".", 1);
(*mangled)++;
- while (isdigit ((unsigned char)**mangled))
+ while (ISDIGIT ((unsigned char)**mangled))
{
string_appendn (s, *mangled, 1);
(*mangled)++;
@@ -1728,7 +1885,7 @@ demangle_real_value (work, mangled, s)
{
string_appendn (s, "e", 1);
(*mangled)++;
- while (isdigit ((unsigned char)**mangled))
+ while (ISDIGIT ((unsigned char)**mangled))
{
string_appendn (s, *mangled, 1);
(*mangled)++;
@@ -2579,20 +2736,20 @@ demangle_prefix (work, mangled, declp)
}
else if (work -> static_type)
{
- if (!isdigit ((unsigned char)scan[0]) && (scan[0] != 't'))
+ if (!ISDIGIT ((unsigned char)scan[0]) && (scan[0] != 't'))
{
success = 0;
}
}
else if ((scan == *mangled)
- && (isdigit ((unsigned char)scan[2]) || (scan[2] == 'Q')
+ && (ISDIGIT ((unsigned char)scan[2]) || (scan[2] == 'Q')
|| (scan[2] == 't') || (scan[2] == 'K') || (scan[2] == 'H')))
{
/* The ARM says nothing about the mangling of local variables.
But cfront mangles local variables by prepending __<nesting_level>
to them. As an extension to ARM demangling we handle this case. */
if ((LUCID_DEMANGLING || ARM_DEMANGLING || HP_DEMANGLING)
- && isdigit ((unsigned char)scan[2]))
+ && ISDIGIT ((unsigned char)scan[2]))
{
*mangled = scan + 2;
consume_count (mangled);
@@ -2629,7 +2786,7 @@ demangle_prefix (work, mangled, declp)
/* EDG template? */
demangle_arm_hp_template (work, mangled, strlen (*mangled), declp);
}
- else if ((scan == *mangled) && !isdigit ((unsigned char)scan[2])
+ else if ((scan == *mangled) && !ISDIGIT ((unsigned char)scan[2])
&& (scan[2] != 't'))
{
/* Mangled name starts with "__". Skip over any leading '_' characters,
@@ -2751,7 +2908,7 @@ gnu_special (work, mangled, declp)
1);
break;
default:
- if (isdigit((unsigned char)*mangled[0]))
+ if (ISDIGIT((unsigned char)*mangled[0]))
{
n = consume_count(mangled);
/* We may be seeing a too-large size, or else a
@@ -3278,13 +3435,13 @@ get_count (type, count)
const char *p;
int n;
- if (!isdigit ((unsigned char)**type))
+ if (!ISDIGIT ((unsigned char)**type))
return (0);
else
{
*count = **type - '0';
(*type)++;
- if (isdigit ((unsigned char)**type))
+ if (ISDIGIT ((unsigned char)**type))
{
p = *type;
n = *count;
@@ -3294,7 +3451,7 @@ get_count (type, count)
n += *p - '0';
p++;
}
- while (isdigit ((unsigned char)*p));
+ while (ISDIGIT ((unsigned char)*p));
if (*p == '_')
{
*type = p + 1;
@@ -3424,7 +3581,7 @@ do_type (work, mangled, result)
if (**mangled != 'Q')
string_prepend (&decl, SCOPE_STRING (work));
- if (isdigit ((unsigned char)**mangled))
+ if (ISDIGIT ((unsigned char)**mangled))
{
n = consume_count (mangled);
if (n == -1
@@ -3744,7 +3901,7 @@ demangle_fund_type (work, mangled, result)
break;
case 'G':
(*mangled)++;
- if (!isdigit ((unsigned char)**mangled))
+ if (!ISDIGIT ((unsigned char)**mangled))
{
success = 0;
break;
@@ -3856,12 +4013,12 @@ do_hpacc_template_const_value (work, mangled, result)
}
/* We have to be looking at an integer now */
- if (!(isdigit ((unsigned char)**mangled)))
+ if (!(ISDIGIT ((unsigned char)**mangled)))
return 0;
/* We only deal with integral values for template
parameters -- so it's OK to look only for digits */
- while (isdigit ((unsigned char)**mangled))
+ while (ISDIGIT ((unsigned char)**mangled))
{
char_str[0] = **mangled;
string_append (result, char_str);
@@ -3940,10 +4097,10 @@ snarf_numeric_literal (args, arg)
else if (**args == '+')
(*args)++;
- if (!isdigit ((unsigned char)**args))
+ if (!ISDIGIT ((unsigned char)**args))
return 0;
- while (isdigit ((unsigned char)**args))
+ while (ISDIGIT ((unsigned char)**args))
{
char_str[0] = **args;
string_append (arg, char_str);
@@ -4449,7 +4606,7 @@ demangle_function_name (work, mangled, declp, scan)
if (declp->p - declp->b >= 10 /* op$assign_ */
&& memcmp (declp->b + 3, "assign_", 7) == 0)
{
- for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
+ for (i = 0; i < ARRAY_SIZE (optable); i++)
{
int len = declp->p - declp->b - 10;
if ((int) strlen (optable[i].in) == len
@@ -4465,7 +4622,7 @@ demangle_function_name (work, mangled, declp, scan)
}
else
{
- for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
+ for (i = 0; i < ARRAY_SIZE (optable); i++)
{
int len = declp->p - declp->b - 3;
if ((int) strlen (optable[i].in) == len
@@ -4507,13 +4664,13 @@ demangle_function_name (work, mangled, declp, scan)
}
}
else if (declp->b[0] == '_' && declp->b[1] == '_'
- && islower((unsigned char)declp->b[2])
- && islower((unsigned char)declp->b[3]))
+ && ISLOWER((unsigned char)declp->b[2])
+ && ISLOWER((unsigned char)declp->b[3]))
{
if (declp->b[4] == '\0')
{
/* Operator. */
- for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
+ for (i = 0; i < ARRAY_SIZE (optable); i++)
{
if (strlen (optable[i].in) == 2
&& memcmp (optable[i].in, declp->b + 2, 2) == 0)
@@ -4530,7 +4687,7 @@ demangle_function_name (work, mangled, declp, scan)
if (declp->b[2] == 'a' && declp->b[5] == '\0')
{
/* Assignment. */
- for (i = 0; i < sizeof (optable) / sizeof (optable[0]); i++)
+ for (i = 0; i < ARRAY_SIZE (optable); i++)
{
if (strlen (optable[i].in) == 3
&& memcmp (optable[i].in, declp->b + 2, 3) == 0)
@@ -4816,7 +4973,7 @@ static const char *
hp_symbol_characters PARAMS ((void));
static const char *
-gnu_new_abi_symbol_characters PARAMS ((void));
+gnu_v3_symbol_characters PARAMS ((void));
/* Return the string of non-alnum characters that may occur
as a valid symbol component, in the standard assembler symbol
@@ -4867,13 +5024,13 @@ hp_symbol_characters ()
/* Return the string of non-alnum characters that may occur
- as a valid symbol component in the GNU standard C++ ABI mangling
+ as a valid symbol component in the GNU C++ V3 ABI mangling
scheme. */
static const char *
-gnu_new_abi_symbol_characters ()
+gnu_v3_symbol_characters ()
{
- return "_";
+ return "_$.";
}
@@ -4945,14 +5102,17 @@ main (argc, argv)
case gnu_demangling:
case lucid_demangling:
case arm_demangling:
+ case java_demangling:
case edg_demangling:
+ case gnat_demangling:
+ case auto_demangling:
valid_symbols = standard_symbol_characters ();
break;
case hp_demangling:
valid_symbols = hp_symbol_characters ();
break;
- case gnu_new_abi_demangling:
- valid_symbols = gnu_new_abi_symbol_characters ();
+ case gnu_v3_demangling:
+ valid_symbols = gnu_v3_symbol_characters ();
break;
default:
/* Folks should explicitly indicate the appropriate alphabet for
@@ -4966,7 +5126,7 @@ main (argc, argv)
int i = 0;
c = getchar ();
/* Try to read a label. */
- while (c != EOF && (isalnum (c) || strchr (valid_symbols, c)))
+ while (c != EOF && (ISALNUM (c) || strchr (valid_symbols, c)))
{
if (i >= MBUF_SIZE-1)
break;
diff --git a/contrib/binutils/libiberty/dyn-string.c b/contrib/binutils/libiberty/dyn-string.c
index 69897f8..34f88ad 100644
--- a/contrib/binutils/libiberty/dyn-string.c
+++ b/contrib/binutils/libiberty/dyn-string.c
@@ -305,6 +305,30 @@ dyn_string_insert_cstr (dest, pos, src)
return 1;
}
+/* Inserts character C into DEST starting at position POS. DEST is
+ expanded as necessary. Returns 1 on success. On failure,
+ RETURN_ON_ALLOCATION_FAILURE, deletes DEST and returns 0. */
+
+int
+dyn_string_insert_char (dest, pos, c)
+ dyn_string_t dest;
+ int pos;
+ int c;
+{
+ int i;
+
+ if (dyn_string_resize (dest, dest->length + 1) == NULL)
+ return 0;
+ /* Make room for the insertion. Be sure to copy the NUL. */
+ for (i = dest->length; i >= pos; --i)
+ dest->s[i + 1] = dest->s[i];
+ /* Add the new character. */
+ dest->s[pos] = c;
+ /* Compute the new length. */
+ ++dest->length;
+ return 1;
+}
+
/* Append S to DS, resizing DS if necessary. Returns 1 on success.
On failure, if RETURN_ON_ALLOCATION_FAILURE, deletes DEST and
returns 0. */
diff --git a/contrib/binutils/libiberty/floatformat.c b/contrib/binutils/libiberty/floatformat.c
index 1d8f16d..3cb78f5 100644
--- a/contrib/binutils/libiberty/floatformat.c
+++ b/contrib/binutils/libiberty/floatformat.c
@@ -1,5 +1,5 @@
/* IEEE floating point support routines, for GDB, the GNU Debugger.
- Copyright (C) 1991, 1994, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1991, 1994, 1999, 2000 Free Software Foundation, Inc.
This file is part of GDB.
@@ -36,19 +36,27 @@ extern char *memset ();
/* floatformats for IEEE single and double, big and little endian. */
const struct floatformat floatformat_ieee_single_big =
{
- floatformat_big, 32, 0, 1, 8, 127, 255, 9, 23, floatformat_intbit_no
+ floatformat_big, 32, 0, 1, 8, 127, 255, 9, 23,
+ floatformat_intbit_no,
+ "floatformat_ieee_single_big"
};
const struct floatformat floatformat_ieee_single_little =
{
- floatformat_little, 32, 0, 1, 8, 127, 255, 9, 23, floatformat_intbit_no
+ floatformat_little, 32, 0, 1, 8, 127, 255, 9, 23,
+ floatformat_intbit_no,
+ "floatformat_ieee_single_little"
};
const struct floatformat floatformat_ieee_double_big =
{
- floatformat_big, 64, 0, 1, 11, 1023, 2047, 12, 52, floatformat_intbit_no
+ floatformat_big, 64, 0, 1, 11, 1023, 2047, 12, 52,
+ floatformat_intbit_no,
+ "floatformat_ieee_double_big"
};
const struct floatformat floatformat_ieee_double_little =
{
- floatformat_little, 64, 0, 1, 11, 1023, 2047, 12, 52, floatformat_intbit_no
+ floatformat_little, 64, 0, 1, 11, 1023, 2047, 12, 52,
+ floatformat_intbit_no,
+ "floatformat_ieee_double_little"
};
/* floatformat for IEEE double, little endian byte order, with big endian word
@@ -56,24 +64,30 @@ const struct floatformat floatformat_ieee_double_little =
const struct floatformat floatformat_ieee_double_littlebyte_bigword =
{
- floatformat_littlebyte_bigword, 64, 0, 1, 11, 1023, 2047, 12, 52, floatformat_intbit_no
+ floatformat_littlebyte_bigword, 64, 0, 1, 11, 1023, 2047, 12, 52,
+ floatformat_intbit_no,
+ "floatformat_ieee_double_little"
};
const struct floatformat floatformat_i387_ext =
{
floatformat_little, 80, 0, 1, 15, 0x3fff, 0x7fff, 16, 64,
- floatformat_intbit_yes
+ floatformat_intbit_yes,
+ "floatformat_i387_ext"
};
const struct floatformat floatformat_m68881_ext =
{
/* Note that the bits from 16 to 31 are unused. */
- floatformat_big, 96, 0, 1, 15, 0x3fff, 0x7fff, 32, 64, floatformat_intbit_yes
+ floatformat_big, 96, 0, 1, 15, 0x3fff, 0x7fff, 32, 64,
+ floatformat_intbit_yes,
+ "floatformat_m68881_ext"
};
const struct floatformat floatformat_i960_ext =
{
/* Note that the bits from 0 to 15 are unused. */
floatformat_little, 96, 16, 17, 15, 0x3fff, 0x7fff, 32, 64,
- floatformat_intbit_yes
+ floatformat_intbit_yes,
+ "floatformat_i960_ext"
};
const struct floatformat floatformat_m88110_ext =
{
@@ -81,17 +95,20 @@ const struct floatformat floatformat_m88110_ext =
/* Harris uses raw format 128 bytes long, but the number is just an ieee
double, and the last 64 bits are wasted. */
floatformat_big,128, 0, 1, 11, 0x3ff, 0x7ff, 12, 52,
- floatformat_intbit_no
+ floatformat_intbit_no,
+ "floatformat_m88110_ext(harris)"
#else
floatformat_big, 80, 0, 1, 15, 0x3fff, 0x7fff, 16, 64,
- floatformat_intbit_yes
+ floatformat_intbit_yes,
+ "floatformat_m88110_ext"
#endif /* HARRIS_FLOAT_FORMAT */
};
const struct floatformat floatformat_arm_ext =
{
/* Bits 1 to 16 are unused. */
floatformat_big, 96, 0, 17, 15, 0x3fff, 0x7fff, 32, 64,
- floatformat_intbit_yes
+ floatformat_intbit_yes,
+ "floatformat_arm_ext"
};
static unsigned long get_field PARAMS ((unsigned char *,
diff --git a/contrib/binutils/libiberty/fnmatch.c b/contrib/binutils/libiberty/fnmatch.c
index 0a9bfe6..eb898ee 100644
--- a/contrib/binutils/libiberty/fnmatch.c
+++ b/contrib/binutils/libiberty/fnmatch.c
@@ -1,7 +1,7 @@
/* Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
-NOTE: The canonical source of this file is maintained with the GNU C Library.
-Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+NOTE: This source is derived from an old version taken from the GNU C
+Library (glibc).
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
@@ -45,8 +45,7 @@ Boston, MA 02111-1307, USA. */
#include <errno.h>
#include <fnmatch.h>
-#include <ctype.h>
-
+#include <safe-ctype.h>
/* Comment out all this code if we are using the GNU C Library, and are not
actually compiling the library itself. This code is part of the GNU C
@@ -74,8 +73,7 @@ fnmatch (pattern, string, flags)
register const char *p = pattern, *n = string;
register unsigned char c;
-/* Note that this evalutes C many times. */
-#define FOLD(c) ((flags & FNM_CASEFOLD) && isupper (c) ? tolower (c) : (c))
+#define FOLD(c) ((flags & FNM_CASEFOLD) ? TOLOWER (c) : (c))
while ((c = *p++) != '\0')
{
diff --git a/contrib/binutils/libiberty/getcwd.c b/contrib/binutils/libiberty/getcwd.c
index 47b1c1e..3445563 100644
--- a/contrib/binutils/libiberty/getcwd.c
+++ b/contrib/binutils/libiberty/getcwd.c
@@ -29,6 +29,12 @@ BUGS
#include <sys/param.h>
#endif
#include <errno.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
extern char *getwd ();
extern int errno;
diff --git a/contrib/binutils/libiberty/getopt.c b/contrib/binutils/libiberty/getopt.c
index c41531e..fd302b6 100644
--- a/contrib/binutils/libiberty/getopt.c
+++ b/contrib/binutils/libiberty/getopt.c
@@ -6,8 +6,8 @@
Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98
Free Software Foundation, Inc.
- NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to bug-glibc@gnu.org.
+ NOTE: This source is derived from an old version taken from the GNU C
+ Library (glibc).
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
diff --git a/contrib/binutils/libiberty/getopt1.c b/contrib/binutils/libiberty/getopt1.c
index ff25737..a3637c2 100644
--- a/contrib/binutils/libiberty/getopt1.c
+++ b/contrib/binutils/libiberty/getopt1.c
@@ -2,8 +2,8 @@
Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98
Free Software Foundation, Inc.
- NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to bug-glibc@gnu.org.
+ NOTE: This source is derived from an old version taken from the GNU C
+ Library (glibc).
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
diff --git a/contrib/binutils/libiberty/getruntime.c b/contrib/binutils/libiberty/getruntime.c
index b855ea6..4abfa83 100644
--- a/contrib/binutils/libiberty/getruntime.c
+++ b/contrib/binutils/libiberty/getruntime.c
@@ -26,10 +26,20 @@ Boston, MA 02111-1307, USA. */
single way is available for all host systems, nor are there reliable
ways to find out which way is correct for a given host. */
-#include <time.h>
+#ifdef TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+# include <sys/time.h>
+# else
+# ifdef HAVE_TIME_H
+# include <time.h>
+# endif
+# endif
+#endif
#if defined (HAVE_GETRUSAGE) && defined (HAVE_SYS_RESOURCE_H)
-#include <sys/time.h>
#include <sys/resource.h>
#endif
diff --git a/contrib/binutils/libiberty/hashtab.c b/contrib/binutils/libiberty/hashtab.c
index 16c5d3e..122ed43 100644
--- a/contrib/binutils/libiberty/hashtab.c
+++ b/contrib/binutils/libiberty/hashtab.c
@@ -1,5 +1,5 @@
/* An expandable hash tables datatype.
- Copyright (C) 1999 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
Contributed by Vladimir Makarov (vmakarov@cygnus.com).
This file is part of the libiberty library.
@@ -41,6 +41,10 @@ Boston, MA 02111-1307, USA. */
#include <stdlib.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
#include <stdio.h>
#include "libiberty.h"
@@ -48,44 +52,113 @@ Boston, MA 02111-1307, USA. */
/* This macro defines reserved value for empty table entry. */
-#define EMPTY_ENTRY ((void *) 0)
+#define EMPTY_ENTRY ((PTR) 0)
/* This macro defines reserved value for table entry which contained
a deleted element. */
-#define DELETED_ENTRY ((void *) 1)
+#define DELETED_ENTRY ((PTR) 1)
+
+static unsigned long higher_prime_number PARAMS ((unsigned long));
+static hashval_t hash_pointer PARAMS ((const void *));
+static int eq_pointer PARAMS ((const void *, const void *));
+static int htab_expand PARAMS ((htab_t));
+static PTR *find_empty_slot_for_expand PARAMS ((htab_t, hashval_t));
-/* The following function returns the nearest prime number which is
- greater than given source number. */
+/* At some point, we could make these be NULL, and modify the
+ hash-table routines to handle NULL specially; that would avoid
+ function-call overhead for the common case of hashing pointers. */
+htab_hash htab_hash_pointer = hash_pointer;
+htab_eq htab_eq_pointer = eq_pointer;
+
+/* The following function returns a nearest prime number which is
+ greater than N, and near a power of two. */
static unsigned long
higher_prime_number (n)
unsigned long n;
{
- unsigned long i;
-
- n |= 0x01; /* Force N to be odd. */
- if (n < 9)
- return n; /* All odd numbers < 9 are prime. */
+ /* These are primes that are near, but slightly smaller than, a
+ power of two. */
+ static unsigned long primes[] = {
+ 2,
+ 7,
+ 13,
+ 31,
+ 61,
+ 127,
+ 251,
+ 509,
+ 1021,
+ 2039,
+ 4093,
+ 8191,
+ 16381,
+ 32749,
+ 65521,
+ 131071,
+ 262139,
+ 524287,
+ 1048573,
+ 2097143,
+ 4194301,
+ 8388593,
+ 16777213,
+ 33554393,
+ 67108859,
+ 134217689,
+ 268435399,
+ 536870909,
+ 1073741789,
+ 2147483647,
+ 4294967291
+ };
+
+ unsigned long* low = &primes[0];
+ unsigned long* high = &primes[sizeof(primes) / sizeof(primes[0])];
+
+ while (low != high)
+ {
+ unsigned long* mid = low + (high - low) / 2;
+ if (n > *mid)
+ low = mid + 1;
+ else
+ high = mid;
+ }
- next:
- n += 2;
- i = 3;
- do
+ /* If we've run out of primes, abort. */
+ if (n > *low)
{
- if (n % i == 0)
- goto next;
- i += 2;
+ fprintf (stderr, "Cannot find prime bigger than %lu\n", n);
+ abort ();
}
- while ((i * i) <= n);
- return n;
+ return *low;
+}
+
+/* Returns a hash code for P. */
+
+static hashval_t
+hash_pointer (p)
+ const PTR p;
+{
+ return (hashval_t) ((long)p >> 3);
+}
+
+/* Returns non-zero if P1 and P2 are equal. */
+
+static int
+eq_pointer (p1, p2)
+ const PTR p1;
+ const PTR p2;
+{
+ return p1 == p2;
}
/* This function creates table with length slightly longer than given
source length. Created hash table is initiated as empty (all the
hash table entries are EMPTY_ENTRY). The function returns the
- created hash table. */
+ created hash table. Memory allocation must not fail. */
htab_t
htab_create (size, hash_f, eq_f, del_f)
@@ -98,11 +171,46 @@ htab_create (size, hash_f, eq_f, del_f)
size = higher_prime_number (size);
result = (htab_t) xcalloc (1, sizeof (struct htab));
- result->entries = (void **) xcalloc (size, sizeof (void *));
+ result->entries = (PTR *) xcalloc (size, sizeof (PTR));
result->size = size;
result->hash_f = hash_f;
result->eq_f = eq_f;
result->del_f = del_f;
+ result->return_allocation_failure = 0;
+ return result;
+}
+
+/* This function creates table with length slightly longer than given
+ source length. The created hash table is initiated as empty (all the
+ hash table entries are EMPTY_ENTRY). The function returns the created
+ hash table. Memory allocation may fail; it may return NULL. */
+
+htab_t
+htab_try_create (size, hash_f, eq_f, del_f)
+ size_t size;
+ htab_hash hash_f;
+ htab_eq eq_f;
+ htab_del del_f;
+{
+ htab_t result;
+
+ size = higher_prime_number (size);
+ result = (htab_t) calloc (1, sizeof (struct htab));
+ if (result == NULL)
+ return NULL;
+
+ result->entries = (PTR *) calloc (size, sizeof (PTR));
+ if (result->entries == NULL)
+ {
+ free (result);
+ return NULL;
+ }
+
+ result->size = size;
+ result->hash_f = hash_f;
+ result->eq_f = eq_f;
+ result->del_f = del_f;
+ result->return_allocation_failure = 1;
return result;
}
@@ -114,13 +222,12 @@ htab_delete (htab)
htab_t htab;
{
int i;
+
if (htab->del_f)
for (i = htab->size - 1; i >= 0; i--)
- {
- if (htab->entries[i] != EMPTY_ENTRY
- && htab->entries[i] != DELETED_ENTRY)
- (*htab->del_f) (htab->entries[i]);
- }
+ if (htab->entries[i] != EMPTY_ENTRY
+ && htab->entries[i] != DELETED_ENTRY)
+ (*htab->del_f) (htab->entries[i]);
free (htab->entries);
free (htab);
@@ -133,15 +240,14 @@ htab_empty (htab)
htab_t htab;
{
int i;
+
if (htab->del_f)
for (i = htab->size - 1; i >= 0; i--)
- {
- if (htab->entries[i] != EMPTY_ENTRY
- && htab->entries[i] != DELETED_ENTRY)
- (*htab->del_f) (htab->entries[i]);
- }
+ if (htab->entries[i] != EMPTY_ENTRY
+ && htab->entries[i] != DELETED_ENTRY)
+ (*htab->del_f) (htab->entries[i]);
- memset (htab->entries, 0, htab->size * sizeof (void *));
+ memset (htab->entries, 0, htab->size * sizeof (PTR));
}
/* Similar to htab_find_slot, but without several unwanted side effects:
@@ -150,22 +256,23 @@ htab_empty (htab)
hash table.
This function also assumes there are no deleted entries in the table.
HASH is the hash value for the element to be inserted. */
-static void **
+
+static PTR *
find_empty_slot_for_expand (htab, hash)
htab_t htab;
- unsigned int hash;
+ hashval_t hash;
{
size_t size = htab->size;
- unsigned int hash2 = 1 + hash % (size - 2);
+ hashval_t hash2 = 1 + hash % (size - 2);
unsigned int index = hash % size;
for (;;)
{
- void **slot = htab->entries + index;
+ PTR *slot = htab->entries + index;
+
if (*slot == EMPTY_ENTRY)
return slot;
-
- if (*slot == DELETED_ENTRY)
+ else if (*slot == DELETED_ENTRY)
abort ();
index += hash2;
@@ -178,21 +285,32 @@ find_empty_slot_for_expand (htab, hash)
entries and repeatedly inserts the table elements. The occupancy
of the table after the call will be about 50%. Naturally the hash
table must already exist. Remember also that the place of the
- table entries is changed. */
+ table entries is changed. If memory allocation failures are allowed,
+ this function will return zero, indicating that the table could not be
+ expanded. If all goes well, it will return a non-zero value. */
-static void
+static int
htab_expand (htab)
htab_t htab;
{
- void **oentries;
- void **olimit;
- void **p;
+ PTR *oentries;
+ PTR *olimit;
+ PTR *p;
oentries = htab->entries;
olimit = oentries + htab->size;
htab->size = higher_prime_number (htab->size * 2);
- htab->entries = xcalloc (htab->size, sizeof (void **));
+
+ if (htab->return_allocation_failure)
+ {
+ PTR *nentries = (PTR *) calloc (htab->size, sizeof (PTR *));
+ if (nentries == NULL)
+ return 0;
+ htab->entries = nentries;
+ }
+ else
+ htab->entries = (PTR *) xcalloc (htab->size, sizeof (PTR *));
htab->n_elements -= htab->n_deleted;
htab->n_deleted = 0;
@@ -200,56 +318,69 @@ htab_expand (htab)
p = oentries;
do
{
- void *x = *p;
+ PTR x = *p;
+
if (x != EMPTY_ENTRY && x != DELETED_ENTRY)
{
- void **q = find_empty_slot_for_expand (htab, (*htab->hash_f) (x));
+ PTR *q = find_empty_slot_for_expand (htab, (*htab->hash_f) (x));
+
*q = x;
}
+
p++;
}
while (p < olimit);
+
free (oentries);
+ return 1;
}
/* This function searches for a hash table entry equal to the given
element. It cannot be used to insert or delete an element. */
-void *
+PTR
htab_find_with_hash (htab, element, hash)
htab_t htab;
- const void *element;
- unsigned int hash;
+ const PTR element;
+ hashval_t hash;
{
- unsigned int index, hash2;
+ unsigned int index;
+ hashval_t hash2;
size_t size;
+ PTR entry;
htab->searches++;
size = htab->size;
- hash2 = 1 + hash % (size - 2);
index = hash % size;
+ entry = htab->entries[index];
+ if (entry == EMPTY_ENTRY
+ || (entry != DELETED_ENTRY && (*htab->eq_f) (entry, element)))
+ return entry;
+
+ hash2 = 1 + hash % (size - 2);
+
for (;;)
{
- void *entry = htab->entries[index];
- if (entry == EMPTY_ENTRY)
- return NULL;
- else if (entry != DELETED_ENTRY && (*htab->eq_f) (entry, element))
- return entry;
-
htab->collisions++;
index += hash2;
if (index >= size)
index -= size;
+
+ entry = htab->entries[index];
+ if (entry == EMPTY_ENTRY
+ || (entry != DELETED_ENTRY && (*htab->eq_f) (entry, element)))
+ return entry;
}
}
/* Like htab_find_slot_with_hash, but compute the hash value from the
element. */
-void *
+
+PTR
htab_find (htab, element)
htab_t htab;
- const void *element;
+ const PTR element;
{
return htab_find_with_hash (htab, element, (*htab->hash_f) (element));
}
@@ -258,21 +389,25 @@ htab_find (htab, element)
equal to the given element. To delete an entry, call this with
INSERT = 0, then call htab_clear_slot on the slot returned (possibly
after doing some checks). To insert an entry, call this with
- INSERT = 1, then write the value you want into the returned slot. */
+ INSERT = 1, then write the value you want into the returned slot.
+ When inserting an entry, NULL may be returned if memory allocation
+ fails. */
-void **
+PTR *
htab_find_slot_with_hash (htab, element, hash, insert)
htab_t htab;
- const void *element;
- unsigned int hash;
- int insert;
+ const PTR element;
+ hashval_t hash;
+ enum insert_option insert;
{
- void **first_deleted_slot;
- unsigned int index, hash2;
+ PTR *first_deleted_slot;
+ unsigned int index;
+ hashval_t hash2;
size_t size;
- if (insert && htab->size * 3 <= htab->n_elements * 4)
- htab_expand (htab);
+ if (insert == INSERT && htab->size * 3 <= htab->n_elements * 4
+ && htab_expand (htab) == 0)
+ return NULL;
size = htab->size;
hash2 = 1 + hash % (size - 2);
@@ -283,10 +418,10 @@ htab_find_slot_with_hash (htab, element, hash, insert)
for (;;)
{
- void *entry = htab->entries[index];
+ PTR entry = htab->entries[index];
if (entry == EMPTY_ENTRY)
{
- if (!insert)
+ if (insert == NO_INSERT)
return NULL;
htab->n_elements++;
@@ -305,11 +440,8 @@ htab_find_slot_with_hash (htab, element, hash, insert)
if (!first_deleted_slot)
first_deleted_slot = &htab->entries[index];
}
- else
- {
- if ((*htab->eq_f) (entry, element))
- return &htab->entries[index];
- }
+ else if ((*htab->eq_f) (entry, element))
+ return &htab->entries[index];
htab->collisions++;
index += hash2;
@@ -320,11 +452,12 @@ htab_find_slot_with_hash (htab, element, hash, insert)
/* Like htab_find_slot_with_hash, but compute the hash value from the
element. */
-void **
+
+PTR *
htab_find_slot (htab, element, insert)
htab_t htab;
- const void *element;
- int insert;
+ const PTR element;
+ enum insert_option insert;
{
return htab_find_slot_with_hash (htab, element, (*htab->hash_f) (element),
insert);
@@ -337,11 +470,11 @@ htab_find_slot (htab, element, insert)
void
htab_remove_elt (htab, element)
htab_t htab;
- void *element;
+ PTR element;
{
- void **slot;
+ PTR *slot;
- slot = htab_find_slot (htab, element, 0);
+ slot = htab_find_slot (htab, element, NO_INSERT);
if (*slot == EMPTY_ENTRY)
return;
@@ -359,13 +492,15 @@ htab_remove_elt (htab, element)
void
htab_clear_slot (htab, slot)
htab_t htab;
- void **slot;
+ PTR *slot;
{
if (slot < htab->entries || slot >= htab->entries + htab->size
|| *slot == EMPTY_ENTRY || *slot == DELETED_ENTRY)
abort ();
+
if (htab->del_f)
(*htab->del_f) (*slot);
+
*slot = DELETED_ENTRY;
htab->n_deleted++;
}
@@ -379,14 +514,15 @@ void
htab_traverse (htab, callback, info)
htab_t htab;
htab_trav callback;
- void *info;
+ PTR info;
{
- void **slot, **limit;
- slot = htab->entries;
- limit = slot + htab->size;
+ PTR *slot = htab->entries;
+ PTR *limit = slot + htab->size;
+
do
{
- void *x = *slot;
+ PTR x = *slot;
+
if (x != EMPTY_ENTRY && x != DELETED_ENTRY)
if (!(*callback) (slot, info))
break;
@@ -394,7 +530,7 @@ htab_traverse (htab, callback, info)
while (++slot < limit);
}
-/* The following function returns current size of given hash table. */
+/* Return the current size of given hash table. */
size_t
htab_size (htab)
@@ -403,8 +539,7 @@ htab_size (htab)
return htab->size;
}
-/* The following function returns current number of elements in given
- hash table. */
+/* Return the current number of elements in given hash table. */
size_t
htab_elements (htab)
@@ -413,17 +548,15 @@ htab_elements (htab)
return htab->n_elements - htab->n_deleted;
}
-/* The following function returns number of percents of fixed
- collisions during all work with given hash table. */
+/* Return the fraction of fixed collisions during all work with given
+ hash table. */
double
htab_collisions (htab)
htab_t htab;
{
- int searches;
-
- searches = htab->searches;
- if (searches == 0)
+ if (htab->searches == 0)
return 0.0;
- return (double)htab->collisions / (double)searches;
+
+ return (double) htab->collisions / (double) htab->searches;
}
diff --git a/contrib/binutils/libiberty/md5.c b/contrib/binutils/libiberty/md5.c
new file mode 100644
index 0000000..20c3cd1
--- /dev/null
+++ b/contrib/binutils/libiberty/md5.c
@@ -0,0 +1,421 @@
+/* md5.c - Functions to compute MD5 message digest of files or memory blocks
+ according to the definition of MD5 in RFC 1321 from April 1992.
+ Copyright (C) 1995, 1996 Free Software Foundation, Inc.
+
+ NOTE: This source is derived from an old version taken from the GNU C
+ Library (glibc).
+
+ 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. */
+
+/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <sys/types.h>
+
+#if STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+# include <string.h>
+#else
+# ifndef HAVE_MEMCPY
+# define memcpy(d, s, n) bcopy ((s), (d), (n))
+# endif
+#endif
+
+#include "ansidecl.h"
+#include "md5.h"
+
+#ifdef _LIBC
+# include <endian.h>
+# if __BYTE_ORDER == __BIG_ENDIAN
+# define WORDS_BIGENDIAN 1
+# endif
+#endif
+
+#ifdef WORDS_BIGENDIAN
+# define SWAP(n) \
+ (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
+#else
+# define SWAP(n) (n)
+#endif
+
+
+/* This array contains the bytes used to pad the buffer to the next
+ 64-byte boundary. (RFC 1321, 3.1: Step 1) */
+static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ };
+
+
+/* Initialize structure containing state of computation.
+ (RFC 1321, 3.3: Step 3) */
+void
+md5_init_ctx (ctx)
+ struct md5_ctx *ctx;
+{
+ ctx->A = 0x67452301;
+ ctx->B = 0xefcdab89;
+ ctx->C = 0x98badcfe;
+ ctx->D = 0x10325476;
+
+ ctx->total[0] = ctx->total[1] = 0;
+ ctx->buflen = 0;
+}
+
+/* Put result from CTX in first 16 bytes following RESBUF. The result
+ must be in little endian byte order.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 32 bits value. */
+void *
+md5_read_ctx (ctx, resbuf)
+ const struct md5_ctx *ctx;
+ void *resbuf;
+{
+ ((md5_uint32 *) resbuf)[0] = SWAP (ctx->A);
+ ((md5_uint32 *) resbuf)[1] = SWAP (ctx->B);
+ ((md5_uint32 *) resbuf)[2] = SWAP (ctx->C);
+ ((md5_uint32 *) resbuf)[3] = SWAP (ctx->D);
+
+ return resbuf;
+}
+
+/* Process the remaining bytes in the internal buffer and the usual
+ prolog according to the standard and write the result to RESBUF.
+
+ IMPORTANT: On some systems it is required that RESBUF is correctly
+ aligned for a 32 bits value. */
+void *
+md5_finish_ctx (ctx, resbuf)
+ struct md5_ctx *ctx;
+ void *resbuf;
+{
+ /* Take yet unprocessed bytes into account. */
+ md5_uint32 bytes = ctx->buflen;
+ size_t pad;
+
+ /* Now count remaining bytes. */
+ ctx->total[0] += bytes;
+ if (ctx->total[0] < bytes)
+ ++ctx->total[1];
+
+ pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes;
+ memcpy (&ctx->buffer[bytes], fillbuf, pad);
+
+ /* Put the 64-bit file length in *bits* at the end of the buffer. */
+ *(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3);
+ *(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) |
+ (ctx->total[0] >> 29));
+
+ /* Process last bytes. */
+ md5_process_block (ctx->buffer, bytes + pad + 8, ctx);
+
+ return md5_read_ctx (ctx, resbuf);
+}
+
+/* Compute MD5 message digest for bytes read from STREAM. The
+ resulting message digest number will be written into the 16 bytes
+ beginning at RESBLOCK. */
+int
+md5_stream (stream, resblock)
+ FILE *stream;
+ void *resblock;
+{
+ /* Important: BLOCKSIZE must be a multiple of 64. */
+#define BLOCKSIZE 4096
+ struct md5_ctx ctx;
+ char buffer[BLOCKSIZE + 72];
+ size_t sum;
+
+ /* Initialize the computation context. */
+ md5_init_ctx (&ctx);
+
+ /* Iterate over full file contents. */
+ while (1)
+ {
+ /* We read the file in blocks of BLOCKSIZE bytes. One call of the
+ computation function processes the whole buffer so that with the
+ next round of the loop another block can be read. */
+ size_t n;
+ sum = 0;
+
+ /* Read block. Take care for partial reads. */
+ do
+ {
+ n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
+
+ sum += n;
+ }
+ while (sum < BLOCKSIZE && n != 0);
+ if (n == 0 && ferror (stream))
+ return 1;
+
+ /* If end of file is reached, end the loop. */
+ if (n == 0)
+ break;
+
+ /* Process buffer with BLOCKSIZE bytes. Note that
+ BLOCKSIZE % 64 == 0
+ */
+ md5_process_block (buffer, BLOCKSIZE, &ctx);
+ }
+
+ /* Add the last bytes if necessary. */
+ if (sum > 0)
+ md5_process_bytes (buffer, sum, &ctx);
+
+ /* Construct result in desired memory. */
+ md5_finish_ctx (&ctx, resblock);
+ return 0;
+}
+
+/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
+ result is always in little endian byte order, so that a byte-wise
+ output yields to the wanted ASCII representation of the message
+ digest. */
+void *
+md5_buffer (buffer, len, resblock)
+ const char *buffer;
+ size_t len;
+ void *resblock;
+{
+ struct md5_ctx ctx;
+
+ /* Initialize the computation context. */
+ md5_init_ctx (&ctx);
+
+ /* Process whole buffer but last len % 64 bytes. */
+ md5_process_bytes (buffer, len, &ctx);
+
+ /* Put result in desired memory area. */
+ return md5_finish_ctx (&ctx, resblock);
+}
+
+
+void
+md5_process_bytes (buffer, len, ctx)
+ const void *buffer;
+ size_t len;
+ struct md5_ctx *ctx;
+{
+ /* When we already have some bits in our internal buffer concatenate
+ both inputs first. */
+ if (ctx->buflen != 0)
+ {
+ size_t left_over = ctx->buflen;
+ size_t add = 128 - left_over > len ? len : 128 - left_over;
+
+ memcpy (&ctx->buffer[left_over], buffer, add);
+ ctx->buflen += add;
+
+ if (left_over + add > 64)
+ {
+ md5_process_block (ctx->buffer, (left_over + add) & ~63, ctx);
+ /* The regions in the following copy operation cannot overlap. */
+ memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63],
+ (left_over + add) & 63);
+ ctx->buflen = (left_over + add) & 63;
+ }
+
+ buffer = (const char *) buffer + add;
+ len -= add;
+ }
+
+ /* Process available complete blocks. */
+ if (len > 64)
+ {
+ md5_process_block (buffer, len & ~63, ctx);
+ buffer = (const char *) buffer + (len & ~63);
+ len &= 63;
+ }
+
+ /* Move remaining bytes in internal buffer. */
+ if (len > 0)
+ {
+ memcpy (ctx->buffer, buffer, len);
+ ctx->buflen = len;
+ }
+}
+
+
+/* These are the four functions used in the four steps of the MD5 algorithm
+ and defined in the RFC 1321. The first function is a little bit optimized
+ (as found in Colin Plumbs public domain implementation). */
+/* #define FF(b, c, d) ((b & c) | (~b & d)) */
+#define FF(b, c, d) (d ^ (b & (c ^ d)))
+#define FG(b, c, d) FF (d, b, c)
+#define FH(b, c, d) (b ^ c ^ d)
+#define FI(b, c, d) (c ^ (b | ~d))
+
+/* Process LEN bytes of BUFFER, accumulating context into CTX.
+ It is assumed that LEN % 64 == 0. */
+
+void
+md5_process_block (buffer, len, ctx)
+ const void *buffer;
+ size_t len;
+ struct md5_ctx *ctx;
+{
+ md5_uint32 correct_words[16];
+ const md5_uint32 *words = buffer;
+ size_t nwords = len / sizeof (md5_uint32);
+ const md5_uint32 *endp = words + nwords;
+ md5_uint32 A = ctx->A;
+ md5_uint32 B = ctx->B;
+ md5_uint32 C = ctx->C;
+ md5_uint32 D = ctx->D;
+
+ /* First increment the byte count. RFC 1321 specifies the possible
+ length of the file up to 2^64 bits. Here we only compute the
+ number of bytes. Do a double word increment. */
+ ctx->total[0] += len;
+ if (ctx->total[0] < len)
+ ++ctx->total[1];
+
+ /* Process all bytes in the buffer with 64 bytes in each round of
+ the loop. */
+ while (words < endp)
+ {
+ md5_uint32 *cwp = correct_words;
+ md5_uint32 A_save = A;
+ md5_uint32 B_save = B;
+ md5_uint32 C_save = C;
+ md5_uint32 D_save = D;
+
+ /* First round: using the given function, the context and a constant
+ the next context is computed. Because the algorithms processing
+ unit is a 32-bit word and it is determined to work on words in
+ little endian byte order we perhaps have to change the byte order
+ before the computation. To reduce the work for the next steps
+ we store the swapped words in the array CORRECT_WORDS. */
+
+#define OP(a, b, c, d, s, T) \
+ do \
+ { \
+ a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \
+ ++words; \
+ CYCLIC (a, s); \
+ a += b; \
+ } \
+ while (0)
+
+ /* It is unfortunate that C does not provide an operator for
+ cyclic rotation. Hope the C compiler is smart enough. */
+#define CYCLIC(w, s) (w = (w << s) | (w >> (32 - s)))
+
+ /* Before we start, one word to the strange constants.
+ They are defined in RFC 1321 as
+
+ T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64
+ */
+
+ /* Round 1. */
+ OP (A, B, C, D, 7, 0xd76aa478);
+ OP (D, A, B, C, 12, 0xe8c7b756);
+ OP (C, D, A, B, 17, 0x242070db);
+ OP (B, C, D, A, 22, 0xc1bdceee);
+ OP (A, B, C, D, 7, 0xf57c0faf);
+ OP (D, A, B, C, 12, 0x4787c62a);
+ OP (C, D, A, B, 17, 0xa8304613);
+ OP (B, C, D, A, 22, 0xfd469501);
+ OP (A, B, C, D, 7, 0x698098d8);
+ OP (D, A, B, C, 12, 0x8b44f7af);
+ OP (C, D, A, B, 17, 0xffff5bb1);
+ OP (B, C, D, A, 22, 0x895cd7be);
+ OP (A, B, C, D, 7, 0x6b901122);
+ OP (D, A, B, C, 12, 0xfd987193);
+ OP (C, D, A, B, 17, 0xa679438e);
+ OP (B, C, D, A, 22, 0x49b40821);
+
+ /* For the second to fourth round we have the possibly swapped words
+ in CORRECT_WORDS. Redefine the macro to take an additional first
+ argument specifying the function to use. */
+#undef OP
+#define OP(f, a, b, c, d, k, s, T) \
+ do \
+ { \
+ a += f (b, c, d) + correct_words[k] + T; \
+ CYCLIC (a, s); \
+ a += b; \
+ } \
+ while (0)
+
+ /* Round 2. */
+ OP (FG, A, B, C, D, 1, 5, 0xf61e2562);
+ OP (FG, D, A, B, C, 6, 9, 0xc040b340);
+ OP (FG, C, D, A, B, 11, 14, 0x265e5a51);
+ OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa);
+ OP (FG, A, B, C, D, 5, 5, 0xd62f105d);
+ OP (FG, D, A, B, C, 10, 9, 0x02441453);
+ OP (FG, C, D, A, B, 15, 14, 0xd8a1e681);
+ OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8);
+ OP (FG, A, B, C, D, 9, 5, 0x21e1cde6);
+ OP (FG, D, A, B, C, 14, 9, 0xc33707d6);
+ OP (FG, C, D, A, B, 3, 14, 0xf4d50d87);
+ OP (FG, B, C, D, A, 8, 20, 0x455a14ed);
+ OP (FG, A, B, C, D, 13, 5, 0xa9e3e905);
+ OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8);
+ OP (FG, C, D, A, B, 7, 14, 0x676f02d9);
+ OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a);
+
+ /* Round 3. */
+ OP (FH, A, B, C, D, 5, 4, 0xfffa3942);
+ OP (FH, D, A, B, C, 8, 11, 0x8771f681);
+ OP (FH, C, D, A, B, 11, 16, 0x6d9d6122);
+ OP (FH, B, C, D, A, 14, 23, 0xfde5380c);
+ OP (FH, A, B, C, D, 1, 4, 0xa4beea44);
+ OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9);
+ OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60);
+ OP (FH, B, C, D, A, 10, 23, 0xbebfbc70);
+ OP (FH, A, B, C, D, 13, 4, 0x289b7ec6);
+ OP (FH, D, A, B, C, 0, 11, 0xeaa127fa);
+ OP (FH, C, D, A, B, 3, 16, 0xd4ef3085);
+ OP (FH, B, C, D, A, 6, 23, 0x04881d05);
+ OP (FH, A, B, C, D, 9, 4, 0xd9d4d039);
+ OP (FH, D, A, B, C, 12, 11, 0xe6db99e5);
+ OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8);
+ OP (FH, B, C, D, A, 2, 23, 0xc4ac5665);
+
+ /* Round 4. */
+ OP (FI, A, B, C, D, 0, 6, 0xf4292244);
+ OP (FI, D, A, B, C, 7, 10, 0x432aff97);
+ OP (FI, C, D, A, B, 14, 15, 0xab9423a7);
+ OP (FI, B, C, D, A, 5, 21, 0xfc93a039);
+ OP (FI, A, B, C, D, 12, 6, 0x655b59c3);
+ OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92);
+ OP (FI, C, D, A, B, 10, 15, 0xffeff47d);
+ OP (FI, B, C, D, A, 1, 21, 0x85845dd1);
+ OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f);
+ OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0);
+ OP (FI, C, D, A, B, 6, 15, 0xa3014314);
+ OP (FI, B, C, D, A, 13, 21, 0x4e0811a1);
+ OP (FI, A, B, C, D, 4, 6, 0xf7537e82);
+ OP (FI, D, A, B, C, 11, 10, 0xbd3af235);
+ OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb);
+ OP (FI, B, C, D, A, 9, 21, 0xeb86d391);
+
+ /* Add the starting values of the context. */
+ A += A_save;
+ B += B_save;
+ C += C_save;
+ D += D_save;
+ }
+
+ /* Put checksum in context given as argument. */
+ ctx->A = A;
+ ctx->B = B;
+ ctx->C = C;
+ ctx->D = D;
+}
diff --git a/contrib/binutils/libiberty/memcmp.c b/contrib/binutils/libiberty/memcmp.c
index 127ae0c..0fd21ca 100644
--- a/contrib/binutils/libiberty/memcmp.c
+++ b/contrib/binutils/libiberty/memcmp.c
@@ -25,8 +25,8 @@ int
DEFUN(memcmp, (str1, str2, count),
const PTR str1 AND const PTR str2 AND size_t count)
{
- register unsigned char *s1 = (unsigned char*)str1;
- register unsigned char *s2 = (unsigned char*)str2;
+ register const unsigned char *s1 = (const unsigned char*)str1;
+ register const unsigned char *s2 = (const unsigned char*)str2;
while (count-- > 0)
{
diff --git a/contrib/binutils/libiberty/mkstemps.c b/contrib/binutils/libiberty/mkstemps.c
index 16c16a2..4b89162 100644
--- a/contrib/binutils/libiberty/mkstemps.c
+++ b/contrib/binutils/libiberty/mkstemps.c
@@ -20,6 +20,7 @@
#include "config.h"
#endif
+#include <sys/types.h>
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
@@ -39,7 +40,7 @@
/* We need to provide a type for gcc_uint64_t. */
#ifdef __GNUC__
-typedef unsigned long long gcc_uint64_t;
+__extension__ typedef unsigned long long gcc_uint64_t;
#else
typedef unsigned long gcc_uint64_t;
#endif
diff --git a/contrib/binutils/libiberty/objalloc.c b/contrib/binutils/libiberty/objalloc.c
index 57754a8..5099569 100644
--- a/contrib/binutils/libiberty/objalloc.c
+++ b/contrib/binutils/libiberty/objalloc.c
@@ -18,6 +18,8 @@ Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include "ansidecl.h"
+#include "config.h"
+
#include "objalloc.h"
/* Get a definition for NULL. */
@@ -33,11 +35,16 @@ Boston, MA 02111-1307, USA. */
#include <stddef.h>
#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#else
/* For systems with larger pointers than ints, this must be declared. */
extern PTR malloc PARAMS ((size_t));
extern void free PARAMS ((PTR));
#endif
+#endif
+
/* These routines allocate space for an object. Freeing allocated
space may or may not free all more recently allocated space.
diff --git a/contrib/binutils/libiberty/obstack.c b/contrib/binutils/libiberty/obstack.c
index bc318b3..0d4a4c8 100644
--- a/contrib/binutils/libiberty/obstack.c
+++ b/contrib/binutils/libiberty/obstack.c
@@ -2,8 +2,8 @@
Copyright (C) 1988,89,90,91,92,93,94,96,97 Free Software Foundation, Inc.
- NOTE: The canonical source of this file is maintained with the GNU C Library.
- Bugs can be reported to bug-glibc@gnu.org.
+ NOTE: This source is derived from an old version taken from the GNU C
+ Library (glibc).
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
diff --git a/contrib/binutils/libiberty/partition.c b/contrib/binutils/libiberty/partition.c
index c1d5847..a5a7349 100644
--- a/contrib/binutils/libiberty/partition.c
+++ b/contrib/binutils/libiberty/partition.c
@@ -27,9 +27,15 @@
#include <stdlib.h>
#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
#include "libiberty.h"
#include "partition.h"
+static int elem_compare PARAMS ((const void *, const void *));
+
/* Creates a partition of NUM_ELEMENTS elements. Initially each
element is in a class by itself. */
@@ -124,8 +130,8 @@ elem_compare (elem1, elem2)
const void *elem1;
const void *elem2;
{
- int e1 = * (int *) elem1;
- int e2 = * (int *) elem2;
+ int e1 = * (const int *) elem1;
+ int e2 = * (const int *) elem2;
if (e1 < e2)
return -1;
else if (e1 > e2)
@@ -171,7 +177,7 @@ partition_print (part, fp)
c = elements[c].next - elements;
}
/* Sort them. */
- qsort ((void *) class_elements, count, sizeof (int), &elem_compare);
+ qsort ((void *) class_elements, count, sizeof (int), elem_compare);
/* Print them. */
fputc ('(', fp);
for (i = 0; i < count; ++i)
diff --git a/contrib/binutils/libiberty/pexecute.c b/contrib/binutils/libiberty/pexecute.c
index 56ddec7..32943af 100644
--- a/contrib/binutils/libiberty/pexecute.c
+++ b/contrib/binutils/libiberty/pexecute.c
@@ -29,31 +29,24 @@ Boston, MA 02111-1307, USA. */
#include <stdio.h>
#include <errno.h>
+#ifdef NEED_DECLARATION_ERRNO
+extern int errno;
+#endif
#ifdef HAVE_STRING_H
#include <string.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
-#define ISSPACE (x) isspace(x)
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
#endif
-#ifdef vfork /* Autoconf may define this to fork for us. */
-# define VFORK_STRING "fork"
-#else
-# define VFORK_STRING "vfork"
-#endif
-#ifdef HAVE_VFORK_H
-#include <vfork.h>
-#endif
-#ifdef VMS
-#define vfork() (decc$$alloc_vfork_blocks() >= 0 ? \
- lib$get_current_invo_context(decc$$get_vfork_jmpbuf()) : -1)
-#endif /* VMS */
-
#include "libiberty.h"
+#include "safe-ctype.h"
/* stdin file number. */
#define STDIN_FILE_NO 0
@@ -151,9 +144,9 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
if ((flags & PEXECUTE_ONE) != PEXECUTE_ONE)
abort ();
-#ifdef __GO32__
+#ifdef __DJGPP__
/* ??? What are the possible return values from spawnv? */
- rc = (flags & PEXECUTE_SEARCH ? spawnvp : spawnv) (1, program, argv);
+ rc = (flags & PEXECUTE_SEARCH ? spawnvp : spawnv) (P_WAIT, program, argv);
#else
char *scmd, *rf;
FILE *argfile;
@@ -202,7 +195,7 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
if (rc == -1)
{
*errmsg_fmt = install_error_msg;
- *errmsg_arg = program;
+ *errmsg_arg = (char *)program;
return -1;
}
@@ -211,6 +204,13 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
return last_pid;
}
+/* Use ECHILD if available, otherwise use EINVAL. */
+#ifdef ECHILD
+#define PWAIT_ERROR ECHILD
+#else
+#define PWAIT_ERROR EINVAL
+#endif
+
int
pwait (pid, status, flags)
int pid;
@@ -222,13 +222,16 @@ pwait (pid, status, flags)
/* Called twice for the same child? */
|| pid == last_reaped)
{
- /* ??? ECHILD would be a better choice. Can we use it here? */
- errno = EINVAL;
+ errno = PWAIT_ERROR;
return -1;
}
/* ??? Here's an opportunity to canonicalize the values in STATUS.
Needed? */
+#ifdef __DJGPP__
+ *status = (last_status >> 8);
+#else
*status = last_status;
+#endif
last_reaped = last_pid;
return last_pid;
}
@@ -698,9 +701,10 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
/* Fork a subprocess; wait and retry if it fails. */
sleep_interval = 1;
+ pid = -1;
for (retries = 0; retries < 4; retries++)
{
- pid = vfork ();
+ pid = fork ();
if (pid >= 0)
break;
sleep (sleep_interval);
@@ -710,11 +714,9 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
switch (pid)
{
case -1:
- {
- *errmsg_fmt = VFORK_STRING;
- *errmsg_arg = NULL;
- return -1;
- }
+ *errmsg_fmt = "fork";
+ *errmsg_arg = NULL;
+ return -1;
case 0: /* child */
/* Move the input and output pipes into place, if necessary. */
@@ -738,7 +740,6 @@ pexecute (program, argv, this_pname, temp_base, errmsg_fmt, errmsg_arg, flags)
/* Exec the program. */
(*func) (program, argv);
- /* Note: Calling fprintf and exit here doesn't seem right for vfork. */
fprintf (stderr, "%s: ", this_pname);
fprintf (stderr, install_error_msg, program);
fprintf (stderr, ": %s\n", xstrerror (errno));
diff --git a/contrib/binutils/libiberty/rename.c b/contrib/binutils/libiberty/rename.c
index ae26e2d..2e9dec1 100644
--- a/contrib/binutils/libiberty/rename.c
+++ b/contrib/binutils/libiberty/rename.c
@@ -3,7 +3,13 @@
/* Rename a file. */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
#include <errno.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
int
rename (zfrom, zto)
diff --git a/contrib/binutils/libiberty/safe-ctype.c b/contrib/binutils/libiberty/safe-ctype.c
new file mode 100644
index 0000000..0c2be3e
--- /dev/null
+++ b/contrib/binutils/libiberty/safe-ctype.c
@@ -0,0 +1,163 @@
+/* <ctype.h> replacement macros.
+
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ Contributed by Zack Weinberg <zackw@stanford.edu>.
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If
+not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* This is a compatible replacement of the standard C library's <ctype.h>
+ with the following properties:
+
+ - Implements all isxxx() macros required by C99.
+ - Also implements some character classes useful when
+ parsing C-like languages.
+ - Does not change behavior depending on the current locale.
+ - Behaves properly for all values in the range of a signed or
+ unsigned char. */
+
+#include "ansidecl.h"
+#include <safe-ctype.h>
+#include <stdio.h> /* for EOF */
+
+/* Shorthand */
+#define bl _sch_isblank
+#define cn _sch_iscntrl
+#define di _sch_isdigit
+#define is _sch_isidst
+#define lo _sch_islower
+#define nv _sch_isnvsp
+#define pn _sch_ispunct
+#define pr _sch_isprint
+#define sp _sch_isspace
+#define up _sch_isupper
+#define vs _sch_isvsp
+#define xd _sch_isxdigit
+
+/* Masks. */
+#define L lo|is |pr /* lower case letter */
+#define XL lo|is|xd|pr /* lowercase hex digit */
+#define U up|is |pr /* upper case letter */
+#define XU up|is|xd|pr /* uppercase hex digit */
+#define D di |xd|pr /* decimal digit */
+#define P pn |pr /* punctuation */
+#define _ pn|is |pr /* underscore */
+
+#define C cn /* control character */
+#define Z nv |cn /* NUL */
+#define M nv|sp |cn /* cursor movement: \f \v */
+#define V vs|sp |cn /* vertical space: \r \n */
+#define T nv|sp|bl|cn /* tab */
+#define S nv|sp|bl|pr /* space */
+
+/* Are we ASCII? */
+#if '\n' == 0x0A && ' ' == 0x20 && '0' == 0x30 \
+ && 'A' == 0x41 && 'a' == 0x61 && '!' == 0x21 \
+ && EOF == -1
+
+const unsigned short _sch_istable[256] =
+{
+ Z, C, C, C, C, C, C, C, /* NUL SOH STX ETX EOT ENQ ACK BEL */
+ C, T, V, M, M, V, C, C, /* BS HT LF VT FF CR SO SI */
+ C, C, C, C, C, C, C, C, /* DLE DC1 DC2 DC3 DC4 NAK SYN ETB */
+ C, C, C, C, C, C, C, C, /* CAN EM SUB ESC FS GS RS US */
+ S, P, P, P, P, P, P, P, /* SP ! " # $ % & ' */
+ P, P, P, P, P, P, P, P, /* ( ) * + , - . / */
+ D, D, D, D, D, D, D, D, /* 0 1 2 3 4 5 6 7 */
+ D, D, P, P, P, P, P, P, /* 8 9 : ; < = > ? */
+ P, XU, XU, XU, XU, XU, XU, U, /* @ A B C D E F G */
+ U, U, U, U, U, U, U, U, /* H I J K L M N O */
+ U, U, U, U, U, U, U, U, /* P Q R S T U V W */
+ U, U, U, P, P, P, P, _, /* X Y Z [ \ ] ^ _ */
+ P, XL, XL, XL, XL, XL, XL, L, /* ` a b c d e f g */
+ L, L, L, L, L, L, L, L, /* h i j k l m n o */
+ L, L, L, L, L, L, L, L, /* p q r s t u v w */
+ L, L, L, P, P, P, P, C, /* x y z { | } ~ DEL */
+
+ /* high half of unsigned char is locale-specific, so all tests are
+ false in "C" locale */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+};
+
+const unsigned char _sch_tolower[256] =
+{
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64,
+
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
+ 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+
+ 91, 92, 93, 94, 95, 96,
+
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
+ 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+
+ 123,124,125,126,127,
+
+ 128,129,130,131, 132,133,134,135, 136,137,138,139, 140,141,142,143,
+ 144,145,146,147, 148,149,150,151, 152,153,154,155, 156,157,158,159,
+ 160,161,162,163, 164,165,166,167, 168,169,170,171, 172,173,174,175,
+ 176,177,178,179, 180,181,182,183, 184,185,186,187, 188,189,190,191,
+
+ 192,193,194,195, 196,197,198,199, 200,201,202,203, 204,205,206,207,
+ 208,209,210,211, 212,213,214,215, 216,217,218,219, 220,221,222,223,
+ 224,225,226,227, 228,229,230,231, 232,233,234,235, 236,237,238,239,
+ 240,241,242,243, 244,245,246,247, 248,249,250,251, 252,253,254,255,
+};
+
+const unsigned char _sch_toupper[256] =
+{
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64,
+
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+ 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+
+ 91, 92, 93, 94, 95, 96,
+
+ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+ 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+
+ 123,124,125,126,127,
+
+ 128,129,130,131, 132,133,134,135, 136,137,138,139, 140,141,142,143,
+ 144,145,146,147, 148,149,150,151, 152,153,154,155, 156,157,158,159,
+ 160,161,162,163, 164,165,166,167, 168,169,170,171, 172,173,174,175,
+ 176,177,178,179, 180,181,182,183, 184,185,186,187, 188,189,190,191,
+
+ 192,193,194,195, 196,197,198,199, 200,201,202,203, 204,205,206,207,
+ 208,209,210,211, 212,213,214,215, 216,217,218,219, 220,221,222,223,
+ 224,225,226,227, 228,229,230,231, 232,233,234,235, 236,237,238,239,
+ 240,241,242,243, 244,245,246,247, 248,249,250,251, 252,253,254,255,
+};
+
+#else
+ #error "Unsupported host character set"
+#endif /* not ASCII */
diff --git a/contrib/binutils/libiberty/setenv.c b/contrib/binutils/libiberty/setenv.c
index eec1300..f025716 100644
--- a/contrib/binutils/libiberty/setenv.c
+++ b/contrib/binutils/libiberty/setenv.c
@@ -63,7 +63,7 @@ setenv (name, value, replace)
const char *value;
int replace;
{
- register char **ep;
+ register char **ep = 0;
register size_t size;
const size_t namelen = strlen (name);
const size_t vallen = strlen (value) + 1;
@@ -72,11 +72,13 @@ setenv (name, value, replace)
size = 0;
if (__environ != NULL)
- for (ep = __environ; *ep != NULL; ++ep)
- if (!strncmp (*ep, name, namelen) && (*ep)[namelen] == '=')
- break;
- else
- ++size;
+ {
+ for (ep = __environ; *ep != NULL; ++ep)
+ if (!strncmp (*ep, name, namelen) && (*ep)[namelen] == '=')
+ break;
+ else
+ ++size;
+ }
if (__environ == NULL || *ep == NULL)
{
diff --git a/contrib/binutils/libiberty/sigsetmask.c b/contrib/binutils/libiberty/sigsetmask.c
index 2a09e6a..db6408d 100644
--- a/contrib/binutils/libiberty/sigsetmask.c
+++ b/contrib/binutils/libiberty/sigsetmask.c
@@ -12,6 +12,8 @@
#include <sys/types.h>
#include <signal.h>
+extern void abort PARAMS ((void)) ATTRIBUTE_NORETURN;
+
#ifdef SIG_SETMASK
int
DEFUN(sigsetmask,(set),
diff --git a/contrib/binutils/libiberty/sort.c b/contrib/binutils/libiberty/sort.c
new file mode 100644
index 0000000..90c97e0
--- /dev/null
+++ b/contrib/binutils/libiberty/sort.c
@@ -0,0 +1,190 @@
+/* Sorting algorithms.
+ Copyright (C) 2000 Free Software Foundation, Inc.
+ Contributed by Mark Mitchell <mark@codesourcery.com>.
+
+This file is part of GNU CC.
+
+GNU CC is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU CC is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU CC; see the file COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include "libiberty.h"
+#include "sort.h"
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#ifndef UCHAR_MAX
+#define UCHAR_MAX ((unsigned char)(-1))
+#endif
+
+/* POINTERS and WORK are both arrays of N pointers. When this
+ function returns POINTERS will be sorted in ascending order. */
+
+void sort_pointers (n, pointers, work)
+ size_t n;
+ void **pointers;
+ void **work;
+{
+ /* The type of a single digit. This can be any unsigned integral
+ type. When changing this, DIGIT_MAX should be changed as
+ well. */
+ typedef unsigned char digit_t;
+
+ /* The maximum value a single digit can have. */
+#define DIGIT_MAX (UCHAR_MAX + 1)
+
+ /* The Ith entry is the number of elements in *POINTERSP that have I
+ in the digit on which we are currently sorting. */
+ unsigned int count[DIGIT_MAX];
+ /* Nonzero if we are running on a big-endian machine. */
+ int big_endian_p;
+ size_t i;
+ size_t j;
+
+ /* The algorithm used here is radix sort which takes time linear in
+ the number of elements in the array. */
+
+ /* The algorithm here depends on being able to swap the two arrays
+ an even number of times. */
+ if ((sizeof (void *) / sizeof (digit_t)) % 2 != 0)
+ abort ();
+
+ /* Figure out the endianness of the machine. */
+ for (i = 0, j = 0; i < sizeof (size_t); ++i)
+ {
+ j *= (UCHAR_MAX + 1);
+ j += i;
+ }
+ big_endian_p = (((char *)&j)[0] == 0);
+
+ /* Move through the pointer values from least significant to most
+ significant digits. */
+ for (i = 0; i < sizeof (void *) / sizeof (digit_t); ++i)
+ {
+ digit_t *digit;
+ digit_t *bias;
+ digit_t *top;
+ unsigned int *countp;
+ void **pointerp;
+
+ /* The offset from the start of the pointer will depend on the
+ endianness of the machine. */
+ if (big_endian_p)
+ j = sizeof (void *) / sizeof (digit_t) - i;
+ else
+ j = i;
+
+ /* Now, perform a stable sort on this digit. We use counting
+ sort. */
+ memset (count, 0, DIGIT_MAX * sizeof (unsigned int));
+
+ /* Compute the address of the appropriate digit in the first and
+ one-past-the-end elements of the array. On a little-endian
+ machine, the least-significant digit is closest to the front. */
+ bias = ((digit_t *) pointers) + j;
+ top = ((digit_t *) (pointers + n)) + j;
+
+ /* Count how many there are of each value. At the end of this
+ loop, COUNT[K] will contain the number of pointers whose Ith
+ digit is K. */
+ for (digit = bias;
+ digit < top;
+ digit += sizeof (void *) / sizeof (digit_t))
+ ++count[*digit];
+
+ /* Now, make COUNT[K] contain the number of pointers whose Ith
+ digit is less than or equal to K. */
+ for (countp = count + 1; countp < count + DIGIT_MAX; ++countp)
+ *countp += countp[-1];
+
+ /* Now, drop the pointers into their correct locations. */
+ for (pointerp = pointers + n - 1; pointerp >= pointers; --pointerp)
+ work[--count[((digit_t *) pointerp)[j]]] = *pointerp;
+
+ /* Swap WORK and POINTERS so that POINTERS contains the sorted
+ array. */
+ pointerp = pointers;
+ pointers = work;
+ work = pointerp;
+ }
+}
+
+/* Everything below here is a unit test for the routines in this
+ file. */
+
+#ifdef UNIT_TEST
+
+#include <stdio.h>
+
+void *xmalloc (n)
+ size_t n;
+{
+ return malloc (n);
+}
+
+int main (int argc, char **argv)
+{
+ int k;
+ int result;
+ size_t i;
+ void **pointers;
+ void **work;
+
+ if (argc > 1)
+ k = atoi (argv[1]);
+ else
+ k = 10;
+
+ pointers = xmalloc (k * sizeof (void *));
+ work = xmalloc (k * sizeof (void *));
+
+ for (i = 0; i < k; ++i)
+ {
+ pointers[i] = (void *) random ();
+ printf ("%x\n", pointers[i]);
+ }
+
+ sort_pointers (k, pointers, work);
+
+ printf ("\nSorted\n\n");
+
+ result = 0;
+
+ for (i = 0; i < k; ++i)
+ {
+ printf ("%x\n", pointers[i]);
+ if (i > 0 && (char*) pointers[i] < (char*) pointers[i - 1])
+ result = 1;
+ }
+
+ free (pointers);
+ free (work);
+
+ return result;
+}
+
+#endif
diff --git a/contrib/binutils/libiberty/splay-tree.c b/contrib/binutils/libiberty/splay-tree.c
index 22ea07d..52b57c0 100644
--- a/contrib/binutils/libiberty/splay-tree.c
+++ b/contrib/binutils/libiberty/splay-tree.c
@@ -1,5 +1,5 @@
/* A splay-tree datatype.
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
Contributed by Mark Mitchell (mark@markmitchell.com).
This file is part of GNU CC.
@@ -32,6 +32,8 @@ Boston, MA 02111-1307, USA. */
#include <stdlib.h>
#endif
+#include <stdio.h>
+
#include "libiberty.h"
#include "splay-tree.h"
@@ -303,12 +305,53 @@ splay_tree_insert (sp, key, value)
node->right->left = 0;
}
- sp->root = node;
- }
+ sp->root = node;
+ }
return sp->root;
}
+/* Remove KEY from SP. It is not an error if it did not exist. */
+
+void
+splay_tree_remove (sp, key)
+ splay_tree sp;
+ splay_tree_key key;
+{
+ splay_tree_splay (sp, key);
+
+ if (sp->root && (*sp->comp) (sp->root->key, key) == 0)
+ {
+ splay_tree_node left, right;
+
+ left = sp->root->left;
+ right = sp->root->right;
+
+ /* Delete the root node itself. */
+ if (sp->delete_value)
+ (*sp->delete_value) (sp->root->value);
+ free (sp->root);
+
+ /* One of the children is now the root. Doesn't matter much
+ which, so long as we preserve the properties of the tree. */
+ if (left)
+ {
+ sp->root = left;
+
+ /* If there was a right child as well, hang it off the
+ right-most leaf of the left child. */
+ if (right)
+ {
+ while (left->right)
+ left = left->right;
+ left->right = right;
+ }
+ }
+ else
+ sp->root = right;
+ }
+}
+
/* Lookup KEY in SP, returning VALUE if present, and NULL
otherwise. */
@@ -325,6 +368,72 @@ splay_tree_lookup (sp, key)
return 0;
}
+/* Return the immediate predecessor KEY, or NULL if there is no
+ predecessor. KEY need not be present in the tree. */
+
+splay_tree_node
+splay_tree_predecessor (sp, key)
+ splay_tree sp;
+ splay_tree_key key;
+{
+ int comparison;
+ splay_tree_node node;
+
+ /* If the tree is empty, there is certainly no predecessor. */
+ if (!sp->root)
+ return NULL;
+
+ /* Splay the tree around KEY. That will leave either the KEY
+ itself, its predecessor, or its successor at the root. */
+ splay_tree_splay (sp, key);
+ comparison = (*sp->comp)(sp->root->key, key);
+
+ /* If the predecessor is at the root, just return it. */
+ if (comparison < 0)
+ return sp->root;
+
+ /* Otherwise, find the leftmost element of the right subtree. */
+ node = sp->root->left;
+ if (node)
+ while (node->right)
+ node = node->right;
+
+ return node;
+}
+
+/* Return the immediate successor KEY, or NULL if there is no
+ predecessor. KEY need not be present in the tree. */
+
+splay_tree_node
+splay_tree_successor (sp, key)
+ splay_tree sp;
+ splay_tree_key key;
+{
+ int comparison;
+ splay_tree_node node;
+
+ /* If the tree is empty, there is certainly no predecessor. */
+ if (!sp->root)
+ return NULL;
+
+ /* Splay the tree around KEY. That will leave either the KEY
+ itself, its predecessor, or its successor at the root. */
+ splay_tree_splay (sp, key);
+ comparison = (*sp->comp)(sp->root->key, key);
+
+ /* If the successor is at the root, just return it. */
+ if (comparison > 0)
+ return sp->root;
+
+ /* Otherwise, find the rightmost element of the left subtree. */
+ node = sp->root->right;
+ if (node)
+ while (node->left)
+ node = node->left;
+
+ return node;
+}
+
/* Call FN, passing it the DATA, for every node in SP, following an
in-order traversal. If FN every returns a non-zero value, the
iteration ceases immediately, and the value is returned.
diff --git a/contrib/binutils/libiberty/strerror.c b/contrib/binutils/libiberty/strerror.c
index 644cc75..0dd2220 100644
--- a/contrib/binutils/libiberty/strerror.c
+++ b/contrib/binutils/libiberty/strerror.c
@@ -25,14 +25,17 @@
/* Routines imported from standard C runtime libraries. */
-#ifdef __STDC__
-#include <stddef.h>
-extern void *malloc (size_t size); /* 4.10.3.3 */
-extern void *memset (void *s, int c, size_t n); /* 4.11.6.1 */
-#else /* !__STDC__ */
-extern char *malloc (); /* Standard memory allocater */
-extern char *memset ();
-#endif /* __STDC__ */
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#else
+extern PTR malloc ();
+#endif
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+extern PTR memset ();
+#endif
#ifndef MAX
# define MAX(a,b) ((a) > (b) ? (a) : (b))
diff --git a/contrib/binutils/libiberty/strncmp.c b/contrib/binutils/libiberty/strncmp.c
new file mode 100644
index 0000000..b3b9de1
--- /dev/null
+++ b/contrib/binutils/libiberty/strncmp.c
@@ -0,0 +1,28 @@
+/* strncmp -- compare two strings, stop after n bytes.
+ This function is in the public domain. */
+
+#include <ansidecl.h>
+#ifdef __STDC__
+#include <stddef.h>
+#else
+#define size_t unsigned long
+#endif
+
+int
+strncmp(s1, s2, n)
+ const char *s1, *s2;
+ register size_t n;
+{
+ register unsigned char u1, u2;
+
+ while (n-- > 0)
+ {
+ u1 = (unsigned char) *s1++;
+ u2 = (unsigned char) *s2++;
+ if (u1 != u2)
+ return u1 - u2;
+ if (u1 == '\0')
+ return 0;
+ }
+ return 0;
+}
diff --git a/contrib/binutils/libiberty/strsignal.c b/contrib/binutils/libiberty/strsignal.c
index c7bb10c..5625323 100644
--- a/contrib/binutils/libiberty/strsignal.c
+++ b/contrib/binutils/libiberty/strsignal.c
@@ -23,14 +23,17 @@
/* Routines imported from standard C runtime libraries. */
-#ifdef __STDC__
-#include <stddef.h>
-extern void *malloc (size_t size); /* 4.10.3.3 */
-extern void *memset (void *s, int c, size_t n); /* 4.11.6.1 */
-#else /* !__STDC__ */
-extern char *malloc (); /* Standard memory allocater */
-extern char *memset ();
-#endif /* __STDC__ */
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#else
+extern PTR malloc ();
+#endif
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+extern PTR memset ();
+#endif
/* Undefine the macro we used to hide the definition of sys_siglist
found in the system header files. */
diff --git a/contrib/binutils/libiberty/strtod.c b/contrib/binutils/libiberty/strtod.c
index c86c73d..90292c2 100644
--- a/contrib/binutils/libiberty/strtod.c
+++ b/contrib/binutils/libiberty/strtod.c
@@ -22,7 +22,8 @@ the resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why
the executable file might be covered by the GNU General Public License. */
-#include <ctype.h>
+#include "ansidecl.h"
+#include "safe-ctype.h"
extern double atof ();
@@ -42,7 +43,7 @@ strtod (str, ptr)
p = str;
- while (isspace (*p))
+ while (ISSPACE (*p))
++p;
if (*p == '+' || *p == '-')
@@ -88,10 +89,10 @@ strtod (str, ptr)
}
/* digits, with 0 or 1 periods in it. */
- if (isdigit (*p) || *p == '.')
+ if (ISDIGIT (*p) || *p == '.')
{
int got_dot = 0;
- while (isdigit (*p) || (!got_dot && *p == '.'))
+ while (ISDIGIT (*p) || (!got_dot && *p == '.'))
{
if (*p == '.')
got_dot = 1;
@@ -105,9 +106,9 @@ strtod (str, ptr)
i = 1;
if (p[i] == '+' || p[i] == '-')
++i;
- if (isdigit (p[i]))
+ if (ISDIGIT (p[i]))
{
- while (isdigit (p[i]))
+ while (ISDIGIT (p[i]))
++i;
*ptr = p + i;
return atof (str);
diff --git a/contrib/binutils/libiberty/strtol.c b/contrib/binutils/libiberty/strtol.c
index 5467cc3..7095c72 100644
--- a/contrib/binutils/libiberty/strtol.c
+++ b/contrib/binutils/libiberty/strtol.c
@@ -28,13 +28,20 @@
* SUCH DAMAGE.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#ifdef HAVE_LIMITS_H
#include <limits.h>
-#include <ctype.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
#include <errno.h>
-#if 0
-#include <stdlib.h>
+#ifdef NEED_DECLARATION_ERRNO
+extern int errno;
#endif
-#include "ansidecl.h"
+#include "safe-ctype.h"
/* FIXME: It'd be nice to configure around these, but the include files are too
painful. These macros should at least be more portable than hardwired hex
@@ -77,7 +84,7 @@ strtol(nptr, endptr, base)
*/
do {
c = *s++;
- } while (isspace(c));
+ } while (ISSPACE(c));
if (c == '-') {
neg = 1;
c = *s++;
@@ -113,10 +120,10 @@ strtol(nptr, endptr, base)
cutlim = cutoff % (unsigned long)base;
cutoff /= (unsigned long)base;
for (acc = 0, any = 0;; c = *s++) {
- if (isdigit(c))
+ if (ISDIGIT(c))
c -= '0';
- else if (isalpha(c))
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
+ else if (ISALPHA(c))
+ c -= ISUPPER(c) ? 'A' - 10 : 'a' - 10;
else
break;
if (c >= base)
diff --git a/contrib/binutils/libiberty/strtoul.c b/contrib/binutils/libiberty/strtoul.c
index 2ec3204..66420f2 100644
--- a/contrib/binutils/libiberty/strtoul.c
+++ b/contrib/binutils/libiberty/strtoul.c
@@ -28,13 +28,24 @@
* SUCH DAMAGE.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#ifdef HAVE_LIMITS_H
#include <limits.h>
-#include <ctype.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
#include <errno.h>
+#ifdef NEED_DECLARATION_ERRNO
+extern int errno;
+#endif
#if 0
#include <stdlib.h>
#endif
#include "ansidecl.h"
+#include "safe-ctype.h"
#ifndef ULONG_MAX
#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF */
@@ -63,7 +74,7 @@ strtoul(nptr, endptr, base)
*/
do {
c = *s++;
- } while (isspace(c));
+ } while (ISSPACE(c));
if (c == '-') {
neg = 1;
c = *s++;
@@ -80,10 +91,10 @@ strtoul(nptr, endptr, base)
cutoff = (unsigned long)ULONG_MAX / (unsigned long)base;
cutlim = (unsigned long)ULONG_MAX % (unsigned long)base;
for (acc = 0, any = 0;; c = *s++) {
- if (isdigit(c))
+ if (ISDIGIT(c))
c -= '0';
- else if (isalpha(c))
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
+ else if (ISALPHA(c))
+ c -= ISUPPER(c) ? 'A' - 10 : 'a' - 10;
else
break;
if (c >= base)
diff --git a/contrib/binutils/libiberty/vasprintf.c b/contrib/binutils/libiberty/vasprintf.c
index b959f5f..c34585d 100644
--- a/contrib/binutils/libiberty/vasprintf.c
+++ b/contrib/binutils/libiberty/vasprintf.c
@@ -18,21 +18,31 @@ License along with libiberty; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#ifdef __STDC__
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include <ansidecl.h>
+#ifdef ANSI_PROTOTYPES
#include <stdarg.h>
#else
#include <varargs.h>
#endif
#include <stdio.h>
#include <string.h>
-#include <ansidecl.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#else
+extern unsigned long strtoul ();
+extern PTR malloc ();
+#endif
+#include "libiberty.h"
#ifdef TEST
int global_total_width;
#endif
-unsigned long strtoul ();
-char *malloc ();
+
+static int int_vasprintf PARAMS ((char **, const char *, va_list *));
static int
int_vasprintf (result, format, args)
@@ -60,7 +70,7 @@ int_vasprintf (result, format, args)
total_width += abs (va_arg (ap, int));
}
else
- total_width += strtoul (p, &p, 10);
+ total_width += strtoul (p, (char **) &p, 10);
if (*p == '.')
{
++p;
@@ -70,7 +80,7 @@ int_vasprintf (result, format, args)
total_width += abs (va_arg (ap, int));
}
else
- total_width += strtoul (p, &p, 10);
+ total_width += strtoul (p, (char **) &p, 10);
}
while (strchr ("hlL", *p))
++p;
@@ -132,33 +142,33 @@ vasprintf (result, format, args)
}
#ifdef TEST
-void
-checkit
-#ifdef __STDC__
- (const char* format, ...)
-#else
- (va_alist)
- va_dcl
-#endif
+static void checkit PARAMS ((const char *, ...));
+
+static void
+checkit VPARAMS ((const char* format, ...))
{
va_list args;
char *result;
+#ifndef ANSI_PROTOTYPES
+ const char *format;
+#endif
-#ifdef __STDC__
- va_start (args, format);
-#else
- char *format;
- va_start (args);
- format = va_arg (args, char *);
+ VA_START (args, format);
+
+#ifndef ANSI_PROTOTYPES
+ format = va_arg (args, const char *);
#endif
+
vasprintf (&result, format, args);
- if (strlen (result) < global_total_width)
+ if (strlen (result) < (size_t) global_total_width)
printf ("PASS: ");
else
printf ("FAIL: ");
printf ("%d %s\n", global_total_width, result);
}
+extern int main PARAMS ((void));
+
int
main ()
{
@@ -169,5 +179,7 @@ main ()
checkit ("%s", "jjjjjjjjjiiiiiiiiiiiiiiioooooooooooooooooppppppppppppaa\n\
777777777777777777333333333333366666666666622222222222777777777777733333");
checkit ("%f%s%d%s", 1.0, "foo", 77, "asdjffffffffffffffiiiiiiiiiiixxxxx");
+
+ return 0;
}
#endif /* TEST */
diff --git a/contrib/binutils/libiberty/vfork.c b/contrib/binutils/libiberty/vfork.c
index 86c4591..5e877210 100644
--- a/contrib/binutils/libiberty/vfork.c
+++ b/contrib/binutils/libiberty/vfork.c
@@ -1,6 +1,10 @@
/* Emulate vfork using just plain fork, for systems without a real vfork.
This function is in the public domain. */
+#include "ansidecl.h"
+
+extern int fork PARAMS ((void));
+
int
vfork ()
{
diff --git a/contrib/binutils/libiberty/waitpid.c b/contrib/binutils/libiberty/waitpid.c
index 23db0b9..2848309 100644
--- a/contrib/binutils/libiberty/waitpid.c
+++ b/contrib/binutils/libiberty/waitpid.c
@@ -1,3 +1,10 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
int
waitpid (pid, stat_loc, options)
int pid, *stat_loc, options;
diff --git a/contrib/binutils/libiberty/xexit.c b/contrib/binutils/libiberty/xexit.c
index 431bbe0..e8b1ed1 100644
--- a/contrib/binutils/libiberty/xexit.c
+++ b/contrib/binutils/libiberty/xexit.c
@@ -17,10 +17,15 @@ License along with libiberty; see the file COPYING.LIB. If not, write
to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#include "ansidecl.h"
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
#include "libiberty.h"
-#include <stdio.h>
/* This variable is set by xatexit if it is called. This way, xmalloc
doesn't drag xatexit into the link. */
diff --git a/contrib/binutils/libiberty/xmalloc.c b/contrib/binutils/libiberty/xmalloc.c
index 621c6d2..3ea2d4a 100644
--- a/contrib/binutils/libiberty/xmalloc.c
+++ b/contrib/binutils/libiberty/xmalloc.c
@@ -17,6 +17,9 @@ License along with libiberty; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
#include "ansidecl.h"
#include "libiberty.h"
@@ -61,6 +64,31 @@ xmalloc_set_program_name (s)
#endif /* HAVE_SBRK */
}
+void
+xmalloc_failed (size)
+ size_t size;
+{
+#ifdef HAVE_SBRK
+ extern char **environ;
+ size_t allocated;
+
+ if (first_break != NULL)
+ allocated = (char *) sbrk (0) - first_break;
+ else
+ allocated = (char *) sbrk (0) - (char *) &environ;
+ fprintf (stderr,
+ "\n%s%sCannot allocate %lu bytes after allocating %lu bytes\n",
+ name, *name ? ": " : "",
+ (unsigned long) size, (unsigned long) allocated);
+#else /* HAVE_SBRK */
+ fprintf (stderr,
+ "\n%s%sCannot allocate %lu bytes\n",
+ name, *name ? ": " : "",
+ (unsigned long) size);
+#endif /* HAVE_SBRK */
+ xexit (1);
+}
+
PTR
xmalloc (size)
size_t size;
@@ -71,27 +99,8 @@ xmalloc (size)
size = 1;
newmem = malloc (size);
if (!newmem)
- {
-#ifdef HAVE_SBRK
- extern char **environ;
- size_t allocated;
-
- if (first_break != NULL)
- allocated = (char *) sbrk (0) - first_break;
- else
- allocated = (char *) sbrk (0) - (char *) &environ;
- fprintf (stderr,
- "\n%s%sCannot allocate %lu bytes after allocating %lu bytes\n",
- name, *name ? ": " : "",
- (unsigned long) size, (unsigned long) allocated);
-#else /* HAVE_SBRK */
- fprintf (stderr,
- "\n%s%sCannot allocate %lu bytes\n",
- name, *name ? ": " : "",
- (unsigned long) size);
-#endif /* HAVE_SBRK */
- xexit (1);
- }
+ xmalloc_failed (size);
+
return (newmem);
}
@@ -106,27 +115,8 @@ xcalloc (nelem, elsize)
newmem = calloc (nelem, elsize);
if (!newmem)
- {
-#ifdef HAVE_SBRK
- extern char **environ;
- size_t allocated;
-
- if (first_break != NULL)
- allocated = (char *) sbrk (0) - first_break;
- else
- allocated = (char *) sbrk (0) - (char *) &environ;
- fprintf (stderr,
- "\n%s%sCannot allocate %lu bytes after allocating %lu bytes\n",
- name, *name ? ": " : "",
- (unsigned long) (nelem * elsize), (unsigned long) allocated);
-#else /* HAVE_SBRK */
- fprintf (stderr,
- "\n%s%sCannot allocate %lu bytes\n",
- name, *name ? ": " : "",
- (unsigned long) (nelem * elsize));
-#endif /* HAVE_SBRK */
- xexit (1);
- }
+ xmalloc_failed (nelem * elsize);
+
return (newmem);
}
@@ -144,26 +134,7 @@ xrealloc (oldmem, size)
else
newmem = realloc (oldmem, size);
if (!newmem)
- {
-#ifdef HAVE_SBRK
- extern char **environ;
- size_t allocated;
-
- if (first_break != NULL)
- allocated = (char *) sbrk (0) - first_break;
- else
- allocated = (char *) sbrk (0) - (char *) &environ;
- fprintf (stderr,
- "\n%s%sCannot reallocate %lu bytes after allocating %lu bytes\n",
- name, *name ? ": " : "",
- (unsigned long) size, (unsigned long) allocated);
-#else /* HAVE_SBRK */
- fprintf (stderr,
- "\n%s%sCannot reallocate %lu bytes\n",
- name, *name ? ": " : "",
- (unsigned long) size);
-#endif /* HAVE_SBRK */
- xexit (1);
- }
+ xmalloc_failed (size);
+
return (newmem);
}
diff --git a/contrib/binutils/libiberty/xmemdup.c b/contrib/binutils/libiberty/xmemdup.c
index f780041..fdb17a5 100644
--- a/contrib/binutils/libiberty/xmemdup.c
+++ b/contrib/binutils/libiberty/xmemdup.c
@@ -9,6 +9,9 @@
#include "libiberty.h"
#include <sys/types.h> /* For size_t. */
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
PTR
xmemdup (input, copy_size, alloc_size)
diff --git a/contrib/binutils/ltconfig b/contrib/binutils/ltconfig
index a01334f..fb0bf8b 100755
--- a/contrib/binutils/ltconfig
+++ b/contrib/binutils/ltconfig
@@ -1,7 +1,7 @@
#! /bin/sh
# ltconfig - Create a system-specific libtool.
-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
# This file is free software; you can redistribute it and/or modify it
@@ -77,8 +77,11 @@ if test "X${echo_test_string+set}" != Xset; then
done
fi
-if test "X`($echo '\t') 2>/dev/null`" != 'X\t' ||
- test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
# The Solaris, AIX, and Digital Unix default echo programs unquote
# backslashes. This makes it impossible to quote backslashes using
# echo "$something" | sed 's/\\/\\\\/g'
@@ -89,7 +92,8 @@ if test "X`($echo '\t') 2>/dev/null`" != 'X\t' ||
for dir in $PATH /usr/ucb; do
if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
echo="$dir/echo"
break
fi
@@ -99,7 +103,8 @@ if test "X`($echo '\t') 2>/dev/null`" != 'X\t' ||
if test "X$echo" = Xecho; then
# We didn't find a better echo, so look for alternatives.
if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
- test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
# This shell has a builtin print -r that does the trick.
echo='print -r'
elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
@@ -112,20 +117,25 @@ if test "X`($echo '\t') 2>/dev/null`" != 'X\t' ||
exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"}
else
# Try using printf.
- echo='printf "%s\n"'
+ echo='printf %s\n'
if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
# Cool, printf works
:
- elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+ elif echo_testing_string=`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL"
export CONFIG_SHELL
SHELL="$CONFIG_SHELL"
export SHELL
echo="$CONFIG_SHELL $0 --fallback-echo"
- elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
- test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+ elif echo_testing_string=`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
echo="$CONFIG_SHELL $0 --fallback-echo"
else
# maybe with a smaller string...
@@ -140,8 +150,9 @@ if test "X`($echo '\t') 2>/dev/null`" != 'X\t' ||
if test "$prev" != 'sed 50q "$0"'; then
echo_test_string=`eval $prev`
+
export echo_test_string
- exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"}
+ exec "${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}}" "$0" ${1+"$@"}
else
# Oops. We lost completely, so just stick with echo.
echo=echo
@@ -169,8 +180,8 @@ progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'`
# Constants:
PROGRAM=ltconfig
PACKAGE=libtool
-VERSION=1.3.4
-TIMESTAMP=" (1.385.2.196 1999/12/07 21:47:57)"
+VERSION=1.4a
+TIMESTAMP=" (1.641.2.122 2000/09/30 05:27:52)"
ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
rm="rm -f"
@@ -187,37 +198,96 @@ enable_static=yes
enable_fast_install=yes
enable_dlopen=unknown
enable_win32_dll=no
+pic_mode=default
ltmain=
silent=
srcdir=
ac_config_guess=
ac_config_sub=
host=
-nonopt=
+build=NONE
+nonopt=NONE
ofile="$default_ofile"
verify_host=yes
+tagname=
with_gcc=no
with_gnu_ld=no
need_locks=yes
ac_ext=c
-objext=o
libext=a
-exeext=
cache_file=
+## Dependencies to place before and after the object being linked:
+predep_objects=
+postdep_objects=
+predeps=
+postdeps=
+compiler_lib_search_path=
+
+## Link characteristics:
+allow_undefined_flag=
+no_undefined_flag=
+need_lib_prefix=unknown
+need_version=unknown
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+archive_cmds=
+archive_expsym_cmds=
+old_archive_from_new_cmds=
+old_archive_from_expsyms_cmds=
+striplib=
+old_striplib=
+export_dynamic_flag_spec=
+whole_archive_flag_spec=
+thread_safe_flag_spec=
+hardcode_into_libs=no
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+hardcode_shlibpath_var=unsupported
+runpath_var=
+link_all_deplibs=unknown
+always_export_symbols=no
+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
+# include_expsyms should be a list of space-separated symbols to be *always*
+# included in the symbol list
+include_expsyms=
+# exclude_expsyms can be an egrep regular expression of symbols to exclude
+# it will be wrapped by ` (' and `)$', so one must not match beginning or
+# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+# as well as any symbol that contains `d'.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+# platforms (ab)use it in PIC code, but their linkers get confused if
+# the symbol is explicitly referenced. Since portable code cannot
+# rely on this symbol name, it's probably fine to never include it in
+# preloaded symbol tables.
+extract_expsyms_cmds=
+
+## Tools:
old_AR="$AR"
+old_AR_FLAGS="$AR_FLAGS"
old_CC="$CC"
old_CFLAGS="$CFLAGS"
old_CPPFLAGS="$CPPFLAGS"
old_LDFLAGS="$LDFLAGS"
+old_LIBS="$LIBS"
+old_MAGIC_CMD="$MAGIC_CMD"
old_LD="$LD"
old_LN_S="$LN_S"
-old_LIBS="$LIBS"
+old_LTCC="$LTCC"
old_NM="$NM"
old_RANLIB="$RANLIB"
+old_STRIP="$STRIP"
+old_AS="$AS"
old_DLLTOOL="$DLLTOOL"
old_OBJDUMP="$OBJDUMP"
-old_AS="$AS"
+old_OBJEXT="$OBJEXT"
+old_EXEEXT="$EXEEXT"
+old_reload_flag="$reload_flag"
+old_deplibs_check_method="$deplibs_check_method"
+old_file_magic_cmd="$file_magic_cmd"
# Parse the command line options.
args=
@@ -238,10 +308,11 @@ do
case "$option" in
--help) cat <<EOM
-Usage: $progname [OPTION]... [HOST [LTMAIN]]
+Usage: $progname [OPTION]... LTMAIN [HOST]
Generate a system-specific libtool script.
+ --build configure for building on BUILD [BUILD=HOST]
--debug enable verbose shell tracing
--disable-shared do not build shared libraries
--disable-static do not build static libraries
@@ -255,8 +326,11 @@ Generate a system-specific libtool script.
--silent do not print informational messages
--srcdir=DIR find \`config.guess' in DIR
--version output version information and exit
+ --add-tag=TAG append an alternate configuration
--with-gcc assume that the GNU C compiler will be used
--with-gnu-ld assume that the C compiler uses the GNU linker
+ --prefer-pic try to use only PIC objects
+ --prefer-non-pic try to use only non-PIC objects
--disable-lock disable file locking
--cache-file=FILE configure cache file
@@ -268,6 +342,9 @@ EOM
exit 0
;;
+ --build) prev=build ;;
+ --build=*) build="$optarg" ;;
+
--debug)
echo "$progname: enabling shell trace mode"
set -x
@@ -295,9 +372,15 @@ EOM
--version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;;
+ --add-tag) prev=tagname ;;
+ --add-tag=*) tagname="$optarg" ;;
+
--with-gcc) with_gcc=yes ;;
--with-gnu-ld) with_gnu_ld=yes ;;
+ --prefer-pic) pic_mode=yes ;;
+ --prefer-non-pic) pic_mode=no ;;
+
--disable-lock) need_locks=no ;;
--cache-file=*) cache_file="$optarg" ;;
@@ -337,6 +420,34 @@ if test ! -f "$ltmain"; then
exit 1
fi
+if test -n "$tagname"; then
+ # Check whether tagname contains only valid characters
+ case "$tagname" in
+ *[!-_A-Za-z0-9,/]*)
+ echo "$progname: invalid tag name: $tagname" 1>&2
+ exit 1
+ ;;
+ esac
+
+ if grep "^### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$ofile" > /dev/null; then
+ echo "$progname: tag name $tagname already exists" 1>&2
+ exit 1
+ fi
+
+ if test ! -f "$ofile"; then
+ echo "$progname: warning: output file \`$ofile' does not exist" 1>&2
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL $ofile --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ echo "$progname: warning: output file \`$ofile' does not look like a libtool script" 1>&2
+ else
+ echo "$progname: warning: using \`LTCC=$LTCC', extracted from \`$ofile'" 1>&2
+ fi
+ fi
+fi
+
# Quote any args containing shell metacharacters.
ltconfig_args=
for arg
@@ -372,7 +483,7 @@ exec 5>>./config.log
if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi
if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi
-if test -n "$cache_file" && test -r "$cache_file"; then
+if test -n "$cache_file" && test -r "$cache_file" && test -f "$cache_file"; then
echo "loading cache $cache_file within ltconfig"
. $cache_file
fi
@@ -426,12 +537,21 @@ if test "$verify_host" = yes; then
host_alias=$host
case "$host_alias" in
"")
+ # Force config.guess to use the C compiler.
+ # CC_FOR_BUILD overrides the CC variable in config.guess but I had
+ # problems with it so do it this way for now.
+ CC="$LTCC"
+
if host_alias=`$SHELL $ac_config_guess`; then :
else
echo "$progname: cannot guess host type; you must specify one" 1>&2
echo "$help" 1>&2
exit 1
- fi ;;
+ fi
+
+ # Restore the C compiler.
+ CC="$old_CC"
+ ;;
esac
host=`$SHELL $ac_config_sub $host_alias`
echo "$ac_t$host" 1>&6
@@ -439,24 +559,50 @@ if test "$verify_host" = yes; then
# Make sure the host verified.
test -z "$host" && exit 1
+ # Check for the build system type
+ echo $ac_n "checking build system type... $ac_c" 1>&6
+
+ build_alias=$build
+ case "$build_alias" in
+ NONE)
+ case $nonopt in
+ NONE) build_alias=$host_alias ;;
+ *) build_alias=$nonopt ;;
+ esac ;;
+ esac
+
+ build=`$SHELL $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
+
elif test -z "$host"; then
echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2
echo "$help" 1>&2
exit 1
else
host_alias=$host
+ build_alias=$host_alias
+ build=$host
+fi
+
+if test x"$host" != x"$build"; then
+ ac_tool_prefix=${host_alias}-
+else
+ ac_tool_prefix=
fi
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
case "$host_os" in
linux-gnu*) ;;
linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
esac
-host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-
case "$host_os" in
aix3*)
# AIX sometimes has problems with the GCC collect2 program. For some
@@ -470,353 +616,170 @@ aix3*)
esac
# Determine commands to create old-style static archives.
-old_archive_cmds='$AR cru $oldlib$oldobjs'
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
old_postinstall_cmds='chmod 644 $oldlib'
old_postuninstall_cmds=
-# Set a sane default for `AR'.
-test -z "$AR" && AR=ar
-
-# Set a sane default for `OBJDUMP'.
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
-# If RANLIB is not set, then run the test.
-if test "${RANLIB+set}" != "set"; then
- result=no
-
- echo $ac_n "checking for ranlib... $ac_c" 1>&6
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for dir in $PATH; do
- test -z "$dir" && dir=.
- if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then
- RANLIB="ranlib"
- result="ranlib"
- break
- fi
- done
- IFS="$save_ifs"
-
- echo "$ac_t$result" 1>&6
-fi
-
if test -n "$RANLIB"; then
old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
fi
-# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin.
+# Source the script associated with the $tagname tag configuration.
+if test -n "$tagname"; then
+ . $ltmain
+else
+ # FIXME: We should use a variable here
+ # Configure for a C compiler
+ . $srcdir/ltcf-c.sh
+fi
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$NM" && NM=nm
test -z "$OBJDUMP" && OBJDUMP=objdump
-test -z "$AS" && AS=as
-
-# Check to see if we are using GCC.
-if test "$with_gcc" != yes || test -z "$CC"; then
- # If CC is not set, then try to find GCC or a usable CC.
- if test -z "$CC"; then
- echo $ac_n "checking for gcc... $ac_c" 1>&6
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for dir in $PATH; do
- test -z "$dir" && dir=.
- if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then
- CC="gcc"
- break
- fi
- done
- IFS="$save_ifs"
-
- if test -n "$CC"; then
- echo "$ac_t$CC" 1>&6
- else
- echo "$ac_t"no 1>&6
- fi
- fi
-
- # Not "gcc", so try "cc", rejecting "/usr/ucb/cc".
- if test -z "$CC"; then
- echo $ac_n "checking for cc... $ac_c" 1>&6
- IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- cc_rejected=no
- for dir in $PATH; do
- test -z "$dir" && dir=.
- if test -f $dir/cc || test -f $dir/cc$ac_exeext; then
- if test "$dir/cc" = "/usr/ucb/cc"; then
- cc_rejected=yes
- continue
- fi
- CC="cc"
- break
- fi
- done
- IFS="$save_ifs"
- if test $cc_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $CC
- shift
- if test $# -gt 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same name, so the bogon will be chosen
- # first if we set CC to just the name; use the full file name.
- shift
- set dummy "$dir/cc" "$@"
- shift
- CC="$@"
- fi
- fi
-
- if test -n "$CC"; then
- echo "$ac_t$CC" 1>&6
- else
- echo "$ac_t"no 1>&6
- fi
-
- if test -z "$CC"; then
- echo "$progname: error: no acceptable cc found in \$PATH" 1>&2
- exit 1
- fi
- fi
-
- # Now see if the compiler is really GCC.
- with_gcc=no
- echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6
- echo "$progname:581: checking whether we are using GNU C" >&5
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$objext" && objext=o
- $rm conftest.c
- cat > conftest.c <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
- if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- with_gcc=yes
- fi
- $rm conftest.c
- echo "$ac_t$with_gcc" 1>&6
+echo $ac_n "checking for objdir... $ac_c" 1>&6
+rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+ objdir=.libs
+else
+ # MS-DOS does not allow filenames that begin with a dot.
+ objdir=_libs
fi
+rmdir .libs 2>/dev/null
+echo "$ac_t$objdir" 1>&6
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
# Allow CC to be a program name with arguments.
set dummy $CC
compiler="$2"
-echo $ac_n "checking for object suffix... $ac_c" 1>&6
-$rm conftest*
-echo 'int i = 1;' > conftest.c
-echo "$progname:603: checking for object suffix" >& 5
-if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
- # Append any warnings to the config.log.
- cat conftest.err 1>&5
-
- for ac_file in conftest.*; do
- case $ac_file in
- *.c) ;;
- *) objext=`echo $ac_file | sed -e s/conftest.//` ;;
- esac
- done
-else
- cat conftest.err 1>&5
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
-fi
-$rm conftest*
-echo "$ac_t$objext" 1>&6
+# We assume here that the value for ac_cv_prog_cc_pic will not be cached
+# in isolation, and that seeing it set (from the cache) indicates that
+# the associated values are set (in the cache) correctly too.
+echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6
+echo "$progname:675:checking for $compiler option to produce PIC" 1>&5
-echo $ac_n "checking for executable suffix... $ac_c" 1>&6
-if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+if test -z "$ac_cv_prog_cc_pic"; then
+ echo "$ac_t"none 1>&6
else
- ac_cv_exeext="no"
- $rm conftest*
- echo 'main () { return 0; }' > conftest.c
- echo "$progname:629: checking for executable suffix" >& 5
- if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then
- # Append any warnings to the config.log.
- cat conftest.err 1>&5
+ echo "$ac_t""$ac_cv_prog_cc_pic" 1>&6
- for ac_file in conftest.*; do
- case $ac_file in
- *.c | *.err | *.$objext ) ;;
- *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;;
- esac
- done
+ # Check to make sure the pic_flag actually works.
+ echo $ac_n "checking if $compiler PIC flag $ac_cv_prog_cc_pic works... $ac_c" 1>&6
+ echo "$progname:684:checking that $compiler PIC flag $ac_cv_prog_cc_pic works." 1>&5
+ if test "X${ac_cv_prog_cc_pic_works+set}" = Xset && \
+ test "X${ac_cv_prog_cc_pic_works}" != X; then
+ echo $ac_n "(cached) $ac_c" 1>&6
else
- cat conftest.err 1>&5
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
+ ac_cv_prog_cc_pic_works=yes
+ $rm conftest*
+ echo $lt_simple_compile_test_code > conftest.$ac_ext
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $ac_cv_prog_cc_pic -DPIC"
+ if { (eval echo $progname:694: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
+ # Append any warnings to the config.log.
+ cat conftest.err 1>&5
+
+ case "$host_os" in
+ hpux9* | hpux10* | hpux11*)
+ # On HP-UX, both CC and GCC only warn that PIC is supported... then
+ # they create non-PIC objects. So, if there were any warnings, we
+ # assume that PIC is not supported.
+ if test -s conftest.err; then
+ ac_cv_prog_cc_pic_works=no
+ ac_cv_prog_cc_can_build_shared=no
+ ac_cv_prog_cc_pic=
+ else
+ ac_cv_prog_cc_pic_works=yes
+ ac_cv_prog_cc_pic=" $ac_cv_prog_cc_pic"
+ fi
+ ;;
+ *)
+ ac_cv_prog_cc_pic_works=yes
+ ac_cv_prog_cc_pic=" $ac_cv_prog_cc_pic"
+ ;;
+ esac
+ else
+ # Append any errors to the config.log.
+ cat conftest.err 1>&5
+ ac_cv_prog_cc_pic_works=no
+ ac_cv_prog_cc_can_build_shared=no
+ ac_cv_prog_cc_pic=
+ fi
+ CFLAGS="$save_CFLAGS"
+ $rm conftest*
fi
- $rm conftest*
-fi
-if test "X$ac_cv_exeext" = Xno; then
- exeext=""
-else
- exeext="$ac_cv_exeext"
+ # Belt *and* braces to stop my trousers falling down:
+ if test "X$ac_cv_prog_cc_pic_works" = Xno; then
+ ac_cv_prog_cc_pic=
+ ac_cv_prog_cc_can_build_shared=no
+ fi
+ echo "$ac_t""$ac_cv_prog_cc_pic_works" 1>&6
fi
-echo "$ac_t$ac_cv_exeext" 1>&6
-
-echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6
-pic_flag=
-special_shlib_compile_flags=
-wl=
-link_static_flag=
-no_builtin_flag=
-
-if test "$with_gcc" = yes; then
- wl='-Wl,'
- link_static_flag='-static'
- case "$host_os" in
- beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
- # PIC is the default for these OSes.
- ;;
- aix*)
- # Below there is a dirty hack to force normal static linking with -ldl
- # The problem is because libdl dynamically linked with both libc and
- # libC (AIX C++ library), which obviously doesn't included in libraries
- # list by gcc. This cause undefined symbols with -static flags.
- # This hack allows C programs to be linked with "-static -ldl", but
- # we not sure about C++ programs.
- link_static_flag="$link_static_flag ${wl}-lC"
- ;;
- cygwin* | mingw* | os2*)
- # We can build DLLs from non-PIC.
- ;;
- amigaos*)
- # FIXME: we need at least 68020 code to build shared libraries, but
- # adding the `-m68020' flag to GCC prevents building anything better,
- # like `-m68040'.
- pic_flag='-m68020 -resident32 -malways-restore-a4'
- ;;
- sysv4*MP*)
- if test -d /usr/nec; then
- pic_flag=-Kconform_pic
- fi
- ;;
- *)
- pic_flag='-fPIC'
- ;;
- esac
-else
- # PORTME Check for PIC flags for the system compiler.
- case "$host_os" in
- aix3* | aix4*)
- # All AIX code is PIC.
- link_static_flag='-bnso -bI:/lib/syscalls.exp'
- ;;
-
- hpux9* | hpux10* | hpux11*)
- # Is there a better link_static_flag that works with the bundled CC?
- wl='-Wl,'
- link_static_flag="${wl}-a ${wl}archive"
- pic_flag='+Z'
- ;;
-
- irix5* | irix6*)
- wl='-Wl,'
- link_static_flag='-non_shared'
- # PIC (with -KPIC) is the default.
- ;;
-
- cygwin* | mingw* | os2*)
- # We can build DLLs from non-PIC.
- ;;
-
- osf3* | osf4* | osf5*)
- # All OSF/1 code is PIC.
- wl='-Wl,'
- link_static_flag='-non_shared'
- ;;
-
- sco3.2v5*)
- pic_flag='-Kpic'
- link_static_flag='-dn'
- special_shlib_compile_flags='-belf'
- ;;
-
- solaris*)
- pic_flag='-KPIC'
- link_static_flag='-Bstatic'
- wl='-Wl,'
- ;;
-
- sunos4*)
- pic_flag='-PIC'
- link_static_flag='-Bstatic'
- wl='-Qoption ld '
- ;;
-
- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
- pic_flag='-KPIC'
- link_static_flag='-Bstatic'
- wl='-Wl,'
- ;;
-
- uts4*)
- pic_flag='-pic'
- link_static_flag='-Bstatic'
- ;;
- sysv4*MP*)
- if test -d /usr/nec ;then
- pic_flag='-Kconform_pic'
- link_static_flag='-Bstatic'
- fi
- ;;
- *)
- can_build_shared=no
- ;;
- esac
+# Check for any special shared library compilation flags.
+if test -n "$ac_cv_prog_cc_shlib"; then
+ echo "$progname: warning: \`$CC' requires \`$ac_cv_prog_cc_shlib' to build shared libraries" 1>&2
+ if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$ac_cv_prog_cc_shlib[ ]" >/dev/null; then :
+ else
+ echo "$progname: add \`$ac_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" 1>&2
+ ac_cv_prog_cc_can_build_shared=no
+ fi
fi
-if test -n "$pic_flag"; then
- echo "$ac_t$pic_flag" 1>&6
-
- # Check to make sure the pic_flag actually works.
- echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6
+echo $ac_n "checking if $compiler static flag $ac_cv_prog_cc_static works... $ac_c" 1>&6
+echo "$progname:746: checking if $compiler static flag $ac_cv_prog_cc_static works" >&5
+if test "X${ac_cv_prog_cc_static_works+set}" = Xset && \
+ test "X${ac_cv_prog_cc_static_works}" != X; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
$rm conftest*
- echo "int some_variable = 0;" > conftest.c
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $pic_flag -DPIC"
- echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5
- if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
- # Append any warnings to the config.log.
- cat conftest.err 1>&5
-
- case "$host_os" in
- hpux9* | hpux10* | hpux11*)
- # On HP-UX, both CC and GCC only warn that PIC is supported... then they
- # create non-PIC objects. So, if there were any warnings, we assume that
- # PIC is not supported.
- if test -s conftest.err; then
- echo "$ac_t"no 1>&6
- can_build_shared=no
- pic_flag=
- else
- echo "$ac_t"yes 1>&6
- pic_flag=" $pic_flag"
- fi
- ;;
- *)
- echo "$ac_t"yes 1>&6
- pic_flag=" $pic_flag"
- ;;
- esac
+ echo $lt_simple_link_test_code > conftest.$ac_ext
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $ac_cv_prog_cc_static"
+ if { (eval echo $progname:755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+ ac_cv_prog_cc_static_works=yes
else
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- can_build_shared=no
- pic_flag=
- echo "$ac_t"no 1>&6
+ ac_cv_prog_cc_static_works=no
+ ac_cv_prog_cc_static=
fi
- CFLAGS="$save_CFLAGS"
+ LDFLAGS="$save_LDFLAGS"
$rm conftest*
-else
- echo "$ac_t"none 1>&6
fi
+# Belt *and* braces to stop my trousers falling down:
+if test "X$ac_cv_prog_cc_static_works" = Xno; then
+ ac_cv_prog_cc_static=
+fi
+echo "$ac_t""$ac_cv_prog_cc_static_works" 1>&6
+pic_flag="$ac_cv_prog_cc_pic"
+special_shlib_compile_flags="$ac_cv_prog_cc_shlib"
+wl="$ac_cv_prog_cc_wl"
+link_static_flag="$ac_cv_prog_cc_static"
+no_builtin_flag="$ac_cv_prog_cc_no_builtin"
+can_build_shared="$ac_cv_prog_cc_can_build_shared"
# Check to see if options -o and -c are simultaneously supported by compiler
-echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6
+echo $ac_n "checking if $compiler supports -c -o file.$objext... $ac_c" 1>&6
$rm -r conftest 2>/dev/null
mkdir conftest
cd conftest
$rm conftest*
-echo "int some_variable = 0;" > conftest.c
+echo $lt_simple_compile_test_code > conftest.$ac_ext
mkdir out
# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
# that will create temporary files in the current directory regardless of
@@ -825,9 +788,9 @@ mkdir out
# builds.
chmod -w .
save_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -o out/conftest2.o"
-echo "$progname:829: checking if $compiler supports -c -o file.o" >&5
-if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then
+CFLAGS="$CFLAGS -o out/conftest2.$objext"
+echo "$progname:792: checking if $compiler supports -c -o file.$objext" >&5
+if { (eval echo $progname:793: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$objext; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -852,37 +815,6 @@ cd ..
rmdir conftest
$rm -r conftest 2>/dev/null
-if test x"$compiler_c_o" = x"yes"; then
- # Check to see if we can write to a .lo
- echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6
- $rm conftest*
- echo "int some_variable = 0;" > conftest.c
- save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -c -o conftest.lo"
- echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5
-if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then
-
- # The compiler can only warn and ignore the option if not recognized
- # So say no if there are warnings
- if test -s conftest.err; then
- echo "$ac_t"no 1>&6
- compiler_o_lo=no
- else
- echo "$ac_t"yes 1>&6
- compiler_o_lo=yes
- fi
- else
- # Append any errors to the config.log.
- cat conftest.err 1>&5
- compiler_o_lo=no
- echo "$ac_t"no 1>&6
- fi
- CFLAGS="$save_CFLAGS"
- $rm conftest*
-else
- compiler_o_lo=no
-fi
-
# Check to see if we can do hard links to lock some files if needed
hard_links="nottested"
if test "$compiler_c_o" = no && test "$need_locks" != no; then
@@ -908,11 +840,11 @@ if test "$with_gcc" = yes; then
# Check to see if options -fno-rtti -fno-exceptions are supported by compiler
echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6
$rm conftest*
- echo "int some_variable = 0;" > conftest.c
+ echo $lt_simple_compile_test_code > conftest.$ac_ext
save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c"
- echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
- if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
+ CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext"
+ echo "$progname:846: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+ if { (eval echo $progname:847: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -940,793 +872,12 @@ if test "$with_gcc" = yes; then
fi
-# Check for any special shared library compilation flags.
-if test -n "$special_shlib_compile_flags"; then
- echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2
- if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then :
- else
- echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2
- can_build_shared=no
- fi
-fi
-
-echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6
-$rm conftest*
-echo 'main(){return(0);}' > conftest.c
-save_LDFLAGS="$LDFLAGS"
-LDFLAGS="$LDFLAGS $link_static_flag"
-echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5
-if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
- echo "$ac_t$link_static_flag" 1>&6
-else
- echo "$ac_t"none 1>&6
- link_static_flag=
-fi
-LDFLAGS="$save_LDFLAGS"
-$rm conftest*
-
-if test -z "$LN_S"; then
- # Check to see if we can use ln -s, or we need hard links.
- echo $ac_n "checking whether ln -s works... $ac_c" 1>&6
- $rm conftest.dat
- if ln -s X conftest.dat 2>/dev/null; then
- $rm conftest.dat
- LN_S="ln -s"
- else
- LN_S=ln
- fi
- if test "$LN_S" = "ln -s"; then
- echo "$ac_t"yes 1>&6
- else
- echo "$ac_t"no 1>&6
- fi
-fi
-
-# Make sure LD is an absolute path.
-if test -z "$LD"; then
- ac_prog=ld
- if test "$with_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 "$progname:991: checking for ld used by GCC" >&5
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
- 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 are not 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 "$progname:1015: checking for GNU ld" >&5
- else
- echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
- echo "$progname:1018: checking for non-GNU ld" >&5
- fi
-
- 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
- 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 "$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"
- fi
-
- if test -n "$LD"; then
- echo "$ac_t$LD" 1>&6
- else
- echo "$ac_t"no 1>&6
- fi
-
- if test -z "$LD"; then
- echo "$progname: error: no acceptable ld found in \$PATH" 1>&2
- exit 1
- fi
-fi
-
-# Check to see if it really is or is not GNU ld.
-echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6
-# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- with_gnu_ld=yes
-else
- with_gnu_ld=no
-fi
-echo "$ac_t$with_gnu_ld" 1>&6
-
# See if the linker supports building shared libraries.
echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6
-allow_undefined_flag=
-no_undefined_flag=
-need_lib_prefix=unknown
-need_version=unknown
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-archive_cmds=
-archive_expsym_cmds=
-old_archive_from_new_cmds=
-export_dynamic_flag_spec=
-whole_archive_flag_spec=
-thread_safe_flag_spec=
-hardcode_libdir_flag_spec=
-hardcode_libdir_separator=
-hardcode_direct=no
-hardcode_minus_L=no
-hardcode_shlibpath_var=unsupported
-runpath_var=
-always_export_symbols=no
-export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
-# include_expsyms should be a list of space-separated symbols to be *always*
-# included in the symbol list
-include_expsyms=
-# exclude_expsyms can be an egrep regular expression of symbols to exclude
-# it will be wrapped by ` (' and `)$', so one must not match beginning or
-# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-# as well as any symbol that contains `d'.
-exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
-# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-# platforms (ab)use it in PIC code, but their linkers get confused if
-# the symbol is explicitly referenced. Since portable code cannot
-# rely on this symbol name, it's probably fine to never include it in
-# preloaded symbol tables.
-
-case "$host_os" in
-cygwin* | mingw*)
- # FIXME: the MSVC++ port hasn't been tested in a loooong time
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- if test "$with_gcc" != yes; then
- with_gnu_ld=no
- fi
- ;;
-
-esac
-
-ld_shlibs=yes
-if test "$with_gnu_ld" = yes; then
- # If archive_cmds runs LD, not CC, wlarc should be empty
- wlarc='${wl}'
-
- # See if GNU ld supports shared libraries.
- case "$host_os" in
- aix3* | aix4*)
- # On AIX, the GNU linker is very broken
- ld_shlibs=no
- cat <<EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support. If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-EOF
- ;;
-
- amigaos*)
- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
-
- # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
- # that the semantics of dynamic libraries on AmigaOS, at least up
- # to version 4, is to share data among multiple programs linked
- # with the same dynamic library. Since this doesn't match the
- # behavior of shared libraries on other platforms, we can use
- # them.
- ld_shlibs=no
- ;;
-
- beos*)
- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- allow_undefined_flag=unsupported
- # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
- # support --undefined. This deserves some investigation. FIXME
- archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- cygwin* | mingw*)
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- hardcode_libdir_flag_spec='-L$libdir'
- allow_undefined_flag=unsupported
- always_export_symbols=yes
-
- # Extract the symbol export list from an `--export-all' def file,
- # then regenerate the def file from the symbol export list, so that
- # the compiled dll only exports the symbol export list.
- export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
- test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
- $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~
- sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols'
-
- archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~
- _lt_hint=1;
- for symbol in `cat $export_symbols`; do
- echo " \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def;
- _lt_hint=`expr 1 + \$_lt_hint`;
- done~
- test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
- test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
- $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
- $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
- $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
- $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts'
-
- old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a'
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib'
- # can we support soname and/or expsyms with a.out? -oliva
- fi
- ;;
-
- solaris* | sysv5*)
- if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
- ld_shlibs=no
- cat <<EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems. Therefore, libtool
-*** is disabling shared libraries support. We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer. Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-EOF
- elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
-
- sunos4*)
- archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts'
- wlarc=
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- *)
- if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
- archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
- else
- ld_shlibs=no
- fi
- ;;
- esac
-
- if test "$ld_shlibs" = yes; then
- runpath_var=LD_RUN_PATH
- hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
- export_dynamic_flag_spec='${wl}--export-dynamic'
- case $host_os in
- cygwin* | mingw*)
- # dlltool doesn't understand --whole-archive et. al.
- whole_archive_flag_spec=
- ;;
- *)
- # ancient GNU ld didn't support --whole-archive et. al.
- if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
- whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
- else
- whole_archive_flag_spec=
- fi
- ;;
- esac
- fi
-else
- # PORTME fill in a description of your system's linker (not GNU ld)
- case "$host_os" in
- aix3*)
- allow_undefined_flag=unsupported
- always_export_symbols=yes
- archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname'
- # Note: this linker hardcodes the directories in LIBPATH if there
- # are no directories specified by -L.
- hardcode_minus_L=yes
- if test "$with_gcc" = yes && test -z "$link_static_flag"; then
- # Neither direct hardcoding nor static linking is supported with a
- # broken collect2.
- hardcode_direct=unsupported
- fi
- ;;
-
- aix4*)
- hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib'
- hardcode_libdir_separator=':'
- if test "$with_gcc" = yes; then
- collect2name=`${CC} -print-prog-name=collect2`
- if test -f "$collect2name" && \
- strings "$collect2name" | grep resolve_lib_name >/dev/null
- then
- # We have reworked collect2
- hardcode_direct=yes
- else
- # We have old collect2
- hardcode_direct=unsupported
- # It fails to find uninstalled libraries when the uninstalled
- # path is not listed in the libpath. Setting hardcode_minus_L
- # to unsupported forces relinking
- hardcode_minus_L=yes
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_libdir_separator=
- fi
- shared_flag='-shared'
- else
- shared_flag='${wl}-bM:SRE'
- hardcode_direct=yes
- fi
- allow_undefined_flag=' ${wl}-berok'
- archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}'
- archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}'
- case "$host_os" in aix4.[01]|aix4.[01].*)
- # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on
- always_export_symbols=yes ;;
- esac
- ;;
-
- amigaos*)
- archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- # see comment about different semantics on the GNU ld section
- ld_shlibs=no
- ;;
-
- cygwin* | mingw*)
- # When not using gcc, we currently assume that we are using
- # Microsoft Visual C++.
- # hardcode_libdir_flag_spec is actually meaningless, as there is
- # no search path for DLLs.
- hardcode_libdir_flag_spec=' '
- allow_undefined_flag=unsupported
- # Tell ltmain to make .lib files, not .a files.
- libext=lib
- # FIXME: Setting linknames here is a bad hack.
- archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
- # The linker will automatically build a .lib file if we build a DLL.
- old_archive_from_new_cmds='true'
- # FIXME: Should let the user specify the lib program.
- old_archive_cmds='lib /OUT:$oldlib$oldobjs'
- fix_srcfile_path='`cygpath -w $srcfile`'
- ;;
-
- freebsd1*)
- ld_shlibs=no
- ;;
-
- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
- # support. Future versions do this automatically, but an explicit c++rt0.o
- # does not break anything, and helps significantly (at the cost of a little
- # extra space).
- freebsd2.2*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- # Unfortunately, older versions of FreeBSD 2 do not have this feature.
- freebsd2*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
- hardcode_direct=yes
- hardcode_minus_L=yes
- hardcode_shlibpath_var=no
- ;;
-
- # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
- freebsd*)
- archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- hpux9* | hpux10* | hpux11*)
- case "$host_os" in
- hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;;
- *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;;
- esac
- hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
- hardcode_libdir_separator=:
- hardcode_direct=yes
- hardcode_minus_L=yes # Not in the search PATH, but as the default
- # location of the library.
- export_dynamic_flag_spec='${wl}-E'
- ;;
-
- irix5* | irix6*)
- if test "$with_gcc" = yes; then
- archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
- else
- archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
- fi
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
-
- netbsd*)
- if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out
- else
- archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF
- fi
- hardcode_libdir_flag_spec='${wl}-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- openbsd*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- ;;
-
- os2*)
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_minus_L=yes
- allow_undefined_flag=unsupported
- archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def'
- old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def'
- ;;
-
- osf3*)
- if test "$with_gcc" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
- else
- allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
- fi
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
-
- osf4* | osf5*) # As osf3* with the addition of the -msym flag
- if test "$with_gcc" = yes; then
- allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
- archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
- else
- allow_undefined_flag=' -expect_unresolved \*'
- archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
- fi
- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
- hardcode_libdir_separator=:
- ;;
-
- sco3.2v5*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_shlibpath_var=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- ;;
-
- solaris*)
- no_undefined_flag=' -z text'
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
- hardcode_libdir_flag_spec='-R$libdir'
- hardcode_shlibpath_var=no
- case "$host_os" in
- solaris2.[0-5] | solaris2.[0-5].*) ;;
- *) # Supported since Solaris 2.6 (maybe 2.5.1?)
- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
- esac
- ;;
-
- sunos4*)
- archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_direct=yes
- hardcode_minus_L=yes
- hardcode_shlibpath_var=no
- ;;
-
- sysv4)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var=no
- hardcode_direct=no #Motorola manual says yes, but my tests say they lie
- ;;
-
- sysv4.3*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_shlibpath_var=no
- export_dynamic_flag_spec='-Bexport'
- ;;
-
- sysv5*)
- no_undefined_flag=' -z text'
- # $CC -shared without GNU ld will not create a library from C++
- # object files and a static libstdc++, better avoid it by now
- archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
- archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
- hardcode_libdir_flag_spec=
- hardcode_shlibpath_var=no
- runpath_var='LD_RUN_PATH'
- ;;
-
- uts4*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_shlibpath_var=no
- ;;
-
- dgux*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_libdir_flag_spec='-L$libdir'
- hardcode_shlibpath_var=no
- ;;
-
- sysv4*MP*)
- if test -d /usr/nec; then
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- hardcode_shlibpath_var=no
- runpath_var=LD_RUN_PATH
- hardcode_runpath_var=yes
- ld_shlibs=yes
- fi
- ;;
-
- sysv4.2uw2*)
- archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts'
- hardcode_direct=yes
- hardcode_minus_L=no
- hardcode_shlibpath_var=no
- hardcode_runpath_var=yes
- runpath_var=LD_RUN_PATH
- ;;
-
- unixware7*)
- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
- runpath_var='LD_RUN_PATH'
- hardcode_shlibpath_var=no
- ;;
-
- *)
- ld_shlibs=no
- ;;
- esac
-fi
echo "$ac_t$ld_shlibs" 1>&6
test "$ld_shlibs" = no && can_build_shared=no
-if test -z "$NM"; then
- echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6
- case "$NM" in
- [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path.
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
- for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/nm || test -f $ac_dir/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
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- NM="$ac_dir/nm -B"
- break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- NM="$ac_dir/nm -p"
- break
- else
- NM=${NM="$ac_dir/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 "$NM" && NM=nm
- ;;
- esac
- echo "$ac_t$NM" 1>&6
-fi
-
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6
-
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix. What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[BCDEGRST]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
-
-# Transform the above into a raw symbol and a C symbol.
-symxfrm='\1 \2\3 \3'
-
-# Transform an extracted symbol line into a proper C declaration
-global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
-
-# Define system-specific variables.
-case "$host_os" in
-aix*)
- symcode='[BCDT]'
- ;;
-cygwin* | mingw*)
- symcode='[ABCDGISTW]'
- ;;
-hpux*) # Its linker distinguishes data from code symbols
- global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
- ;;
-irix*)
- symcode='[BCDEGRST]'
- ;;
-solaris*)
- symcode='[BDT]'
- ;;
-sysv4)
- symcode='[DFNSTU]'
- ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
- symcode='[ABCDGISTW]'
-fi
-
-# Try without a prefix undercore, then with it.
-for ac_symprfx in "" "_"; do
-
- # Write the raw and C identifiers.
- global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'"
-
- # Check to see that the pipe works correctly.
- pipe_works=no
- $rm conftest*
- cat > conftest.c <<EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(){}
-#ifdef __cplusplus
-}
-#endif
-main(){nm_test_var='a';nm_test_func();return(0);}
-EOF
-
- echo "$progname:1635: checking if global_symbol_pipe works" >&5
- if { (eval echo $progname:1636: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
- # Now try to grab the symbols.
- nlist=conftest.nm
- if { echo "$progname:1639: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
-
- # Try sorting and uniquifying the output.
- if sort "$nlist" | uniq > "$nlist"T; then
- mv -f "$nlist"T "$nlist"
- else
- rm -f "$nlist"T
- fi
-
- # Make sure that we snagged all the symbols we need.
- if egrep ' nm_test_var$' "$nlist" >/dev/null; then
- if egrep ' nm_test_func$' "$nlist" >/dev/null; then
- cat <<EOF > conftest.c
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-EOF
- # Now generate the symbol file.
- eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c'
-
- cat <<EOF >> conftest.c
-#if defined (__STDC__) && __STDC__
-# define lt_ptr_t void *
-#else
-# define lt_ptr_t char *
-# define const
-#endif
-
-/* The mapping between symbol names and symbols. */
-const struct {
- const char *name;
- lt_ptr_t address;
-}
-lt_preloaded_symbols[] =
-{
-EOF
- sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c
- cat <<\EOF >> conftest.c
- {0, (lt_ptr_t) 0}
-};
-
-#ifdef __cplusplus
-}
-#endif
-EOF
- # Now try linking the two files.
- mv conftest.$objext conftstm.$objext
- save_LIBS="$LIBS"
- save_CFLAGS="$CFLAGS"
- LIBS="conftstm.$objext"
- CFLAGS="$CFLAGS$no_builtin_flag"
- if { (eval echo $progname:1691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
- pipe_works=yes
- else
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
- fi
- LIBS="$save_LIBS"
- else
- echo "cannot find nm_test_func in $nlist" >&5
- fi
- else
- echo "cannot find nm_test_var in $nlist" >&5
- fi
- else
- echo "cannot run $global_symbol_pipe" >&5
- fi
- else
- echo "$progname: failed program was:" >&5
- cat conftest.c >&5
- fi
- $rm conftest* conftst*
-
- # Do not use the global_symbol_pipe unless it works.
- if test "$pipe_works" = yes; then
- break
- else
- global_symbol_pipe=
- fi
-done
-if test "$pipe_works" = yes; then
- echo "${ac_t}ok" 1>&6
-else
- echo "${ac_t}failed" 1>&6
-fi
-
-if test -z "$global_symbol_pipe"; then
- global_symbol_to_cdecl=
-fi
-
# Check hardcoding attributes.
echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6
hardcode_action=
@@ -1753,14 +904,17 @@ else
fi
echo "$ac_t$hardcode_action" 1>&6
+echo $ac_n "checking whether stripping libraries is possible... $ac_c" 1>&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+ test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+ echo "${ac_t}yes" 1>&6
+else
+ echo "${ac_t}no" 1>&6
+fi
-reload_flag=
reload_cmds='$LD$reload_flag -o $output$reload_objs'
-echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6
-# PORTME Some linkers may need a different reload flag.
-reload_flag='-r'
-echo "$ac_t$reload_flag" 1>&6
-test -n "$reload_flag" && reload_flag=" $reload_flag"
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
# PORTME Fill in your ld.so characteristics
library_names_spec=
@@ -1776,19 +930,7 @@ version_type=none
dynamic_linker="$host_os ld.so"
sys_lib_dlsearch_path_spec="/lib /usr/lib"
sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-file_magic_cmd=
-file_magic_test_file=
-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.
+
echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6
case "$host_os" in
aix3*)
@@ -1809,7 +951,6 @@ aix4*)
# and later linker supports .so
library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a'
shlibpath_var=LIBPATH
- deplibs_check_method=pass_all
;;
amigaos*)
@@ -1822,7 +963,6 @@ beos*)
library_names_spec='${libname}.so'
dynamic_linker="$host_os ld.so"
shlibpath_var=LIBRARY_PATH
- deplibs_check_method=pass_all
lt_cv_dlopen="load_add_on"
lt_cv_dlopen_libs=
lt_cv_dlopen_self=yes
@@ -1835,9 +975,6 @@ bsdi4*)
soname_spec='${libname}${release}.so$major'
finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
shlibpath_var=LD_LIBRARY_PATH
- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=/shlib/libc.so
sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
export_dynamic_flag_spec=-rdynamic
@@ -1846,18 +983,16 @@ bsdi4*)
# libtool to hard-code these into programs
;;
-cygwin* | mingw*)
+cygwin* | mingw* | pw32*)
version_type=windows
need_version=no
need_lib_prefix=no
if test "$with_gcc" = yes; then
- library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a'
+ library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll'
else
library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
fi
dynamic_linker='Win32 ld.exe'
- deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
- file_magic_cmd='${OBJDUMP} -f'
# FIXME: first we should search . and the directory the executable is in
shlibpath_var=PATH
lt_cv_dlopen="LoadLibrary"
@@ -1867,32 +1002,29 @@ cygwin* | mingw*)
freebsd1*)
dynamic_linker=no
;;
-
+
freebsd*)
objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
version_type=freebsd-$objformat
case "$version_type" in
freebsd-elf*)
- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /usr/lib/libc.so*`
library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
need_version=no
need_lib_prefix=no
;;
freebsd-*)
- deplibs_check_method=unknown
library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
need_version=yes
;;
esac
shlibpath_var=LD_LIBRARY_PATH
case "$host_os" in
- freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*)
+ freebsd2*)
shlibpath_overrides_runpath=yes
;;
- *) # from 3.2 on
+ *)
shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
;;
esac
;;
@@ -1904,6 +1036,7 @@ gnu*)
library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
soname_spec='${libname}${release}.so$major'
shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
;;
hpux9* | hpux10* | hpux11*)
@@ -1925,13 +1058,11 @@ irix5* | irix6*)
version_type=irix
need_lib_prefix=no
need_version=no
- soname_spec='${libname}${release}.so.$major'
- library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so'
+ soname_spec='${libname}${release}.so$major'
+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so'
case "$host_os" in
irix5*)
libsuff= shlibsuff=
- # this will be overridden with pass_all, but let us keep it just in case
- deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
;;
*)
case "$LD" in # libtool.m4 will add one of these switches to LD
@@ -1946,9 +1077,6 @@ irix5* | irix6*)
shlibpath_overrides_runpath=no
sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /lib${libsuff}/libc.so*`
- deplibs_check_method='pass_all'
;;
# No shared lib support for Linux oldld, aout, or coff.
@@ -1966,19 +1094,18 @@ linux-gnu*)
finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=no
- deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-
- if test -f /lib/ld.so.1; then
- dynamic_linker='GNU ld.so'
- else
- # Only the GNU ld.so supports shared libraries on MkLinux.
- case "$host_cpu" in
- powerpc*) dynamic_linker=no ;;
- *) dynamic_linker='Linux ld.so' ;;
- esac
- fi
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+
+ # We used to test for /lib/ld.so.1 and disable shared libraries on
+ # powerpc, because MkLinux only supported shared libraries with the
+ # GNU dynamic linker. Since this was broken with cross compilers,
+ # most powerpc-linux boxes support dynamic linking these days and
+ # people can always --disable-shared, the test was removed, and we
+ # assume the GNU/Linux dynamic linker is in use.
+ dynamic_linker='GNU/Linux ld.so'
;;
netbsd*)
@@ -1993,6 +1120,8 @@ netbsd*)
dynamic_linker='NetBSD ld.elf_so'
fi
shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
;;
openbsd*)
@@ -2020,11 +1149,6 @@ osf3* | osf4* | osf5*)
soname_spec='${libname}${release}.so'
library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
shlibpath_var=LD_LIBRARY_PATH
- # this will be overridden with pass_all, but let us keep it just in case
- deplibs_check_method='file_magic COFF format alpha shared library'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=/shlib/libc.so
- deplibs_check_method='pass_all'
sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
;;
@@ -2044,11 +1168,9 @@ solaris*)
soname_spec='${libname}${release}.so$major'
shlibpath_var=LD_LIBRARY_PATH
shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
# ldd complains unless libraries are executable
postinstall_cmds='chmod +x $lib'
- deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib"
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=/lib/libc.so
;;
sunos4*)
@@ -2069,17 +1191,11 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
soname_spec='${libname}${release}.so$major'
shlibpath_var=LD_LIBRARY_PATH
case "$host_vendor" in
- ncr)
- deplibs_check_method='pass_all'
- ;;
motorola)
need_lib_prefix=no
need_version=no
shlibpath_overrides_runpath=no
sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
- 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]'
- file_magic_cmd=/usr/bin/file
- file_magic_test_file=`echo /usr/lib/libc.so*`
;;
esac
;;
@@ -2116,13 +1232,182 @@ esac
echo "$ac_t$dynamic_linker" 1>&6
test "$dynamic_linker" = no && can_build_shared=no
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix. What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
+
+# Define system-specific variables.
+case "$host_os" in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
+ ;;
+irix*)
+ symcode='[BCDEGRST]'
+ ;;
+solaris* | sysv5*)
+ symcode='[BDT]'
+ ;;
+sysv4)
+ symcode='[DFNSTU]'
+ ;;
+esac
+
+# Handle CRLF in mingw too chain
+opt_cr=
+case "$host_os" in
+mingw*)
+ opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+ ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
+ symcode='[ABCDGISTW]'
+fi
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+ # Write the raw and C identifiers.
+global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+ $rm conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ echo "$progname:1309: checking if global_symbol_pipe works" >&5
+ if { (eval echo $progname:1310: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { echo "$progname:1313: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
+
+ # Try sorting and uniquifying the output.
+ if sort "$nlist" | uniq > "$nlist"T; then
+ mv -f "$nlist"T "$nlist"
+ else
+ rm -f "$nlist"T
+ fi
+
+ # Make sure that we snagged all the symbols we need.
+ if egrep ' nm_test_var$' "$nlist" >/dev/null; then
+ if egrep ' nm_test_func$' "$nlist" >/dev/null; then
+ cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+ sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$objext conftstm.$objext
+ save_LIBS="$LIBS"
+ save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$objext"
+ CFLAGS="$CFLAGS$no_builtin_flag"
+ if { (eval echo $progname:1365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+ pipe_works=yes
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ LIBS="$save_LIBS"
+ else
+ echo "cannot find nm_test_func in $nlist" >&5
+ fi
+ else
+ echo "cannot find nm_test_var in $nlist" >&5
+ fi
+ else
+ echo "cannot run $global_symbol_pipe" >&5
+ fi
+ else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ fi
+ $rm conftest* conftst*
+
+ # Do not use the global_symbol_pipe unless it works.
+ if test "$pipe_works" = yes; then
+ break
+ else
+ global_symbol_pipe=
+ fi
+done
+if test "$pipe_works" = yes; then
+ echo "${ac_t}ok" 1>&6
+else
+ echo "${ac_t}failed" 1>&6
+fi
+
+if test -z "$global_symbol_pipe"; then
+ global_symbol_to_cdecl=
+fi
+
# Report the final consequences.
echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6
# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in
# configure.in, otherwise build static only libraries.
case "$host_os" in
-cygwin* | mingw* | os2*)
+cygwin* | mingw* | pw32* | os2*)
if test x$can_build_shared = xyes; then
test x$enable_win32_dll = xno && can_build_shared=no
echo "checking if package supports dlls... $can_build_shared" 1>&6
@@ -2130,30 +1415,6 @@ cygwin* | mingw* | os2*)
;;
esac
-if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then
- case "$deplibs_check_method" in
- "file_magic "*)
- file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
- egrep "$file_magic_regex" > /dev/null; then
- :
- else
- cat <<EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such. This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem. Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-EOF
- fi ;;
- esac
-fi
-
echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6
test "$can_build_shared" = "no" && enable_shared=no
@@ -2189,35 +1450,30 @@ elif test "$shlibpath_overrides_runpath" = yes ||
enable_fast_install=needless
fi
-echo $ac_n "checking for objdir... $ac_c" 1>&6
-rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
- objdir=.libs
-else
- # MS-DOS does not allow filenames that begin with a dot.
- objdir=_libs
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$with_gcc" = yes; then
+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
fi
-rmdir .libs 2>/dev/null
-echo "$ac_t$objdir" 1>&6
+
+# Check whether we must set pic_mode to default
+test -z "$pic_flag" && pic_mode=default
if test "x$enable_dlopen" != xyes; then
enable_dlopen=unknown
enable_dlopen_self=unknown
enable_dlopen_self_static=unknown
else
-if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then
+if test "X${lt_cv_dlopen+set}" != Xset; then
lt_cv_dlopen=no lt_cv_dlopen_libs=
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "$progname:2212: checking for dlopen in -ldl" >&5
-ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+echo "$progname:1469: checking for dlopen in -ldl" >&5
+if test "X${ac_cv_lib_dl_dlopen+set}" = Xset; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2220 "ltconfig"
+#line 1476 "ltconfig"
/* 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. */
@@ -2230,31 +1486,31 @@ int main() {
dlopen()
; return 0; }
EOF
-if { (eval echo $progname:2233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:1489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
+ ac_cv_lib_dl_dlopen=yes
else
echo "$progname: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
+ ac_cv_lib_dl_dlopen=no
fi
rm -f conftest*
LIBS="$ac_save_LIBS"
fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+if test "X$ac_cv_lib_dl_dlopen" = Xyes; then
echo "$ac_t""yes" 1>&6
lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for dlopen""... $ac_c" 1>&6
-echo "$progname:2252: checking for dlopen" >&5
-if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
+echo "$progname:1508: checking for dlopen" >&5
+if test "X${ac_cv_func_dlopen+set}" = Xset; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2257 "ltconfig"
+#line 1513 "ltconfig"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char dlopen(); below. */
#include <assert.h>
@@ -2279,32 +1535,70 @@ dlopen();
; return 0; }
EOF
-if { (eval echo $progname:2282: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:1538: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
- eval "ac_cv_func_dlopen=yes"
+ ac_cv_func_dlopen=yes
else
echo "$progname: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
- eval "ac_cv_func_dlopen=no"
+ ac_cv_func_dlopen=no
fi
rm -f conftest*
fi
-if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
+if test "X$ac_cv_func_dlopen" = Xyes; then
echo "$ac_t""yes" 1>&6
lt_cv_dlopen="dlopen"
else
echo "$ac_t""no" 1>&6
+echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6
+echo "$progname:1555: checking for dlopen in -lsvld" >&5
+if test "X${ac_cv_lib_svld_dlopen+set}" = Xset; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ ac_save_LIBS="$LIBS"
+LIBS="-lsvld $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1562 "ltconfig"
+/* 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. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen();
+
+int main() {
+dlopen()
+; return 0; }
+EOF
+if { (eval echo $progname:1575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$progname: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if test "X$ac_cv_lib_svld_dlopen" = Xyes; then
+ echo "$ac_t""yes" 1>&6
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ echo "$ac_t""no" 1>&6
echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
-echo "$progname:2299: checking for dld_link in -ldld" >&5
-ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+echo "$progname:1594: checking for dld_link in -ldld" >&5
+if test "X${ac_cv_lib_dld_dld_link+set}" = Xset; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-ldld $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2307 "ltconfig"
+#line 1601 "ltconfig"
/* 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. */
@@ -2317,31 +1611,31 @@ int main() {
dld_link()
; return 0; }
EOF
-if { (eval echo $progname:2320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:1614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
+ ac_cv_lib_dld_dld_link=yes
else
echo "$progname: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
+ ac_cv_lib_dld_dld_link=no
fi
rm -f conftest*
LIBS="$ac_save_LIBS"
fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+if test "X$ac_cv_lib_dld_dld_link" = Xyes; then
echo "$ac_t""yes" 1>&6
lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for shl_load""... $ac_c" 1>&6
-echo "$progname:2339: checking for shl_load" >&5
-if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
+echo "$progname:1633: checking for shl_load" >&5
+if test "X${ac_cv_func_shl_load+set}" = Xset; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2344 "ltconfig"
+#line 1638 "ltconfig"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char shl_load(); below. */
#include <assert.h>
@@ -2366,33 +1660,32 @@ shl_load();
; return 0; }
EOF
-if { (eval echo $progname:2369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:1663: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
- eval "ac_cv_func_shl_load=yes"
+ ac_cv_func_shl_load=yes
else
echo "$progname: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
- eval "ac_cv_func_shl_load=no"
+ ac_cv_func_shl_load=no
fi
rm -f conftest*
fi
-if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
+if test "X$ac_cv_func_shl_load" = Xyes; then
echo "$ac_t""yes" 1>&6
lt_cv_dlopen="shl_load"
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "$progname:2387: checking for shl_load in -ldld" >&5
-ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+echo "$progname:1681: checking for shl_load in -ldld" >&5
+if test "X${ac_cv_lib_dld_shl_load+set}" = Xset; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-ldld $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2395 "ltconfig"
+#line 1688 "ltconfig"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2406,20 +1699,20 @@ int main() {
shl_load()
; return 0; }
EOF
-if { (eval echo $progname:2409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo $progname:1702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
+ ac_cv_lib_dld_shl_load=yes
else
echo "$progname: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
+ ac_cv_lib_dld_shl_load=no
fi
rm -f conftest*
LIBS="$ac_save_LIBS"
fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+if test "X$ac_cv_lib_dld_shl_load" = Xyes; then
echo "$ac_t""yes" 1>&6
lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
else
@@ -2429,10 +1722,10 @@ fi
fi
-
+
fi
-
+
fi
@@ -2440,8 +1733,12 @@ fi
fi
+fi
+
if test "x$lt_cv_dlopen" != xno; then
enable_dlopen=yes
+ else
+ enable_dlopen=no
fi
case "$lt_cv_dlopen" in
@@ -2449,17 +1746,18 @@ fi
for ac_hdr in dlfcn.h; do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "$progname:2452: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+echo "$progname:1749: checking for $ac_hdr" >&5
+if eval "test \"`echo 'X$''{'ac_cv_header_$ac_safe'+set}'`\" = Xset"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2457 "ltconfig"
+#line 1754 "ltconfig"
#include <$ac_hdr>
int fnord = 0;
+int main () { return(0); }
EOF
ac_try="$ac_compile >/dev/null 2>conftest.out"
-{ (eval echo $progname:2462: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo $progname:1760: \"$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*
@@ -2487,15 +1785,15 @@ done
LIBS="$lt_cv_dlopen_libs $LIBS"
echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
-echo "$progname:2490: checking whether a program can dlopen itself" >&5
-if test "${lt_cv_dlopen_self+set}" = set; then
+echo "$progname:1788: checking whether a program can dlopen itself" >&5
+if test "X${lt_cv_dlopen_self+set}" = Xset; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
lt_cv_dlopen_self=cross
else
- cat > conftest.c <<EOF
-#line 2498 "ltconfig"
+ cat > conftest.$ac_ext <<EOF
+#line 1796 "ltconfig"
#if HAVE_DLFCN_H
#include <dlfcn.h>
@@ -2538,10 +1836,10 @@ else
fnord() { int i=42;}
main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
- if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
+ if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
EOF
-if { (eval echo $progname:2544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo $progname:1842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
lt_cv_dlopen_self=yes
else
@@ -2560,15 +1858,15 @@ echo "$ac_t""$lt_cv_dlopen_self" 1>&6
if test "$lt_cv_dlopen_self" = yes; then
LDFLAGS="$LDFLAGS $link_static_flag"
echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
-echo "$progname:2563: checking whether a statically linked program can dlopen itself" >&5
-if test "${lt_cv_dlopen_self_static+set}" = set; then
+echo "$progname:1861: checking whether a statically linked program can dlopen itself" >&5
+if test "X${lt_cv_dlopen_self_static+set}" = Xset; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
lt_cv_dlopen_self_static=cross
else
- cat > conftest.c <<EOF
-#line 2571 "ltconfig"
+ cat > conftest.$ac_ext <<EOF
+#line 1869 "ltconfig"
#if HAVE_DLFCN_H
#include <dlfcn.h>
@@ -2611,10 +1909,10 @@ else
fnord() { int i=42;}
main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
- if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
+ if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); }
EOF
-if { (eval echo $progname:2617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo $progname:1915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
lt_cv_dlopen_self_static=yes
else
@@ -2658,33 +1956,40 @@ LTCONFIG_VERSION="$VERSION"
case "$ltmain" in
*.sh)
# Now quote all the things that may contain metacharacters.
- for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \
- old_LD old_LDFLAGS old_LIBS \
- old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \
- AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \
+ for var in ltecho old_AR old_AR_FLAGS old_CC old_LTCC old_CFLAGS old_CPPFLAGS \
+ old_MAGIC_CMD old_LD old_LDFLAGS old_LIBS \
+ old_LN_S old_NM old_RANLIB old_STRIP \
+ old_AS old_DLLTOOL old_OBJDUMP \
+ old_OBJEXT old_EXEEXT old_reload_flag \
+ old_deplibs_check_method old_file_magic_cmd \
+ AR AR_FLAGS CC LTCC LD LN_S NM LTSHELL LTCONFIG_VERSION \
reload_flag reload_cmds wl \
pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
thread_safe_flag_spec whole_archive_flag_spec libname_spec \
library_names_spec soname_spec \
RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
- old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \
- file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \
+ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \
+ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \
+ predep_objects postdep_objects predeps postdeps compiler_lib_search_path \
+ old_striplib striplib file_magic_cmd export_symbols_cmds \
+ deplibs_check_method allow_undefined_flag no_undefined_flag \
finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
hardcode_libdir_flag_spec hardcode_libdir_separator \
sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
- compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
+ compiler_c_o need_locks exclude_expsyms include_expsyms; do
case "$var" in
reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
old_postinstall_cmds | old_postuninstall_cmds | \
export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
+ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \
postinstall_cmds | postuninstall_cmds | \
finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
# Double-quote double-evaled strings.
- eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ### testsuite: skip nested quoting test
;;
*)
- eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ### testsuite: skip nested quoting test
;;
esac
done
@@ -2695,17 +2000,18 @@ case "$ltmain" in
;;
esac
- trap "$rm \"$ofile\"; exit 1" 1 2 15
- echo "creating $ofile"
- $rm "$ofile"
- cat <<EOF > "$ofile"
+ if test -z "$tagname"; then
+ trap "$rm \"$ofile\"; exit 1" 1 2 15
+ echo "creating $ofile"
+ $rm "$ofile"
+ cat <<EOF > "$ofile"
#! $SHELL
# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh.
#
-# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Copyright (C) 1996-2000 Free Software Foundation, Inc.
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
# This program is free software; you can redistribute it and/or modify
@@ -2734,38 +2040,59 @@ Xsed="sed -e s/^X//"
# if CDPATH is set.
if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+# The names of the tagged configurations supported by this script.
+available_tags=
+
### BEGIN LIBTOOL CONFIG
EOF
+ else
+ echo "appending configuration tag \"$tagname\" to $ofile"
+ echo "### BEGIN LIBTOOL TAG CONFIG: $tagname" >> "$ofile"
+ fi
cfgfile="$ofile"
;;
*)
# Double-quote the variables that need it (for aesthetics).
- for var in old_CC old_CFLAGS old_CPPFLAGS \
- old_LD old_LDFLAGS old_LIBS \
- old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do
+ for var in old_AR old_AR_FLAGS old_CC old_LTCC old_CFLAGS old_CPPFLAGS \
+ old_MAGIC_CMD old_LD old_LDFLAGS old_LIBS \
+ old_LN_S old_NM old_RANLIB old_STRIP \
+ old_AS old_DLLTOOL old_OBJDUMP \
+ old_OBJEXT old_EXEEXT old_reload_flag \
+ old_deplibs_check_method old_file_magic_cmd; do
eval "$var=\\\"\$var\\\""
done
# Just create a config file.
cfgfile="$ofile.cfg"
- trap "$rm \"$cfgfile\"; exit 1" 1 2 15
- echo "creating $cfgfile"
- $rm "$cfgfile"
- cat <<EOF > "$cfgfile"
+ if test -z "$tagname"; then
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ echo "creating $cfgfile"
+ $rm "$cfgfile"
+ cat <<EOF > "$cfgfile"
# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file.
# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+
+### BEGIN LIBTOOL CONFIG
EOF
+ else
+ echo "appending to $cfgfile"
+ echo "### BEGIN LIBTOOL TAG CONFIG: $tagname" >> "$ofile"
+ fi
;;
esac
cat <<EOF >> "$cfgfile"
# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
#
-# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\
-# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\
-# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\
-# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\
+# AR=$old_AR AR_FLAGS=$old_AR_FLAGS LTCC=$old_LTCC CC=$old_CC \\
+# CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\
+# MAGIC_CMD=$old_MAGIC_CMD LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\
+# LN_S=$old_LN_S NM=$old_NM RANLIB=$old_RANLIB STRIP=$old_STRIP \\
+# AS=$old_AS DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP \\
+# objext=$old_OBJEXT exeext=$old_EXEEXT reload_flag=$old_reload_flag \\
+# deplibs_check_method=$old_deplibs_check_method \\
+# file_magic_cmd=$old_file_magic_cmd \\
# $0$ltconfig_args
#
# Compiler and other test output produced by $progname, useful for
@@ -2780,6 +2107,9 @@ SHELL=$LTSHELL
# Whether or not to build shared libraries.
build_libtool_libs=$enable_shared
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$need_lc
+
# Whether or not to build static libraries.
build_old_libs=$enable_static
@@ -2795,10 +2125,17 @@ echo=$ltecho
# The archiver.
AR=$AR
+AR_FLAGS=$AR_FLAGS
+
+# A C compiler.
+LTCC=$LTCC
-# The default C compiler.
+# A language-specific compiler.
CC=$CC
+# Is the compiler the GNU C compiler?
+with_gcc=$with_gcc
+
# The linker used to build libraries.
LD=$LD
@@ -2808,6 +2145,12 @@ LN_S=$LN_S
# A BSD-compatible nm program.
NM=$NM
+# A symbol stripping program
+STRIP=$STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
# Used on cygwin: DLL creation program.
DLLTOOL="$DLLTOOL"
@@ -2838,13 +2181,11 @@ exeext="$exeext"
# Additional compiler flags for building library objects.
pic_flag=$pic_flag
+pic_mode=$pic_mode
# Does compiler simultaneously support -c and -o options?
compiler_c_o=$compiler_c_o
-# Can we write directly to a .lo ?
-compiler_o_lo=$compiler_o_lo
-
# Must we lock files when doing compilation ?
need_locks=$need_locks
@@ -2855,7 +2196,7 @@ need_lib_prefix=$need_lib_prefix
need_version=$need_version
# Whether dlopen is supported.
-dlopen=$enable_dlopen
+dlopen_support=$enable_dlopen
# Whether dlopen of programs is supported.
dlopen_self=$enable_dlopen_self
@@ -2900,12 +2241,39 @@ old_postuninstall_cmds=$old_postuninstall_cmds
# Create an old-style archive from a shared archive.
old_archive_from_new_cmds=$old_archive_from_new_cmds
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$old_archive_from_expsyms_cmds
+
# Commands used to build and install a shared archive.
archive_cmds=$archive_cmds
archive_expsym_cmds=$archive_expsym_cmds
postinstall_cmds=$postinstall_cmds
postuninstall_cmds=$postuninstall_cmds
+# Commands to strip libraries.
+old_striplib=$old_striplib
+striplib=$striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$compiler_lib_search_path
+
# Method to check whether dependent libraries are shared objects.
deplibs_check_method=$deplibs_check_method
@@ -2942,6 +2310,9 @@ shlibpath_overrides_runpath=$shlibpath_overrides_runpath
# How to hardcode a shared library path into an executable.
hardcode_action=$hardcode_action
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
# Flag to hardcode \$libdir into a binary during linking.
# This must work even if \$libdir does not exist.
hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec
@@ -2961,6 +2332,13 @@ hardcode_minus_L=$hardcode_minus_L
# the resulting binary.
hardcode_shlibpath_var=$hardcode_shlibpath_var
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
# Compile-time system search path for libraries
sys_lib_search_path_spec=$sys_lib_search_path_spec
@@ -2976,6 +2354,9 @@ always_export_symbols=$always_export_symbols
# The commands to list exported symbols.
export_symbols_cmds=$export_symbols_cmds
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$extract_expsyms_cmds
+
# Symbols that should not be listed in the preloaded symbols.
exclude_expsyms=$exclude_expsyms
@@ -2984,13 +2365,19 @@ include_expsyms=$include_expsyms
EOF
+if test -z "$tagname"; then
+ echo '### END LIBTOOL CONFIG' >> "$ofile"
+else
+ echo "### END LIBTOOL TAG CONFIG: $tagname" >> "$ofile"
+fi
+
case "$ltmain" in
*.sh)
- echo '### END LIBTOOL CONFIG' >> "$ofile"
echo >> "$ofile"
- case "$host_os" in
- aix3*)
- cat <<\EOF >> "$ofile"
+ if test -z "$tagname"; then
+ case "$host_os" in
+ aix3*)
+ cat <<\EOF >> "$ofile"
# AIX sometimes has problems with the GCC collect2 program. For some
# reason, if we set the COLLECT_NAMES environment variable, the problems
@@ -3000,17 +2387,198 @@ if test "X${COLLECT_NAMES+set}" != Xset; then
export COLLECT_NAMES
fi
EOF
+ ;;
+ esac
+ case "$host" in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ cat <<'EOF' >> "$ofile"
+ # This is a source program that is used to create dlls on Windows
+ # Don't remove nor modify the starting and closing comments
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# # ifdef __CYGWIN32__
+# # define __CYGWIN__ __CYGWIN32__
+# # endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+# __hDllInstance_base = hInst;
+# return TRUE;
+# }
+# /* ltdll.c ends here */
+ # This is a source program that is used to create import libraries
+ # on Windows for dlls which lack them. Don't remove nor modify the
+ # starting and closing comments
+# /* impgen.c starts here */
+# /* Copyright (C) 1999-2000 Free Software Foundation, Inc.
+#
+# This file is part of GNU libtool.
+#
+# 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 <stdio.h> /* for printf() */
+# #include <unistd.h> /* for open(), lseek(), read() */
+# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
+# #include <string.h> /* for strdup() */
+#
+# /* O_BINARY isn't required (or even defined sometimes) under Unix */
+# #ifndef O_BINARY
+# #define O_BINARY 0
+# #endif
+#
+# static unsigned int
+# pe_get16 (fd, offset)
+# int fd;
+# int offset;
+# {
+# unsigned char b[2];
+# lseek (fd, offset, SEEK_SET);
+# read (fd, b, 2);
+# return b[0] + (b[1]<<8);
+# }
+#
+# static unsigned int
+# pe_get32 (fd, offset)
+# int fd;
+# int offset;
+# {
+# unsigned char b[4];
+# lseek (fd, offset, SEEK_SET);
+# read (fd, b, 4);
+# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# static unsigned int
+# pe_as32 (ptr)
+# void *ptr;
+# {
+# unsigned char *b = ptr;
+# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
+# }
+#
+# int
+# main (argc, argv)
+# int argc;
+# char *argv[];
+# {
+# int dll;
+# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
+# unsigned long export_rva, export_size, nsections, secptr, expptr;
+# unsigned long name_rvas, nexp;
+# unsigned char *expdata, *erva;
+# char *filename, *dll_name;
+#
+# filename = argv[1];
+#
+# dll = open(filename, O_RDONLY|O_BINARY);
+# if (!dll)
+# return 1;
+#
+# dll_name = filename;
+#
+# for (i=0; filename[i]; i++)
+# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
+# dll_name = filename + i +1;
+#
+# pe_header_offset = pe_get32 (dll, 0x3c);
+# opthdr_ofs = pe_header_offset + 4 + 20;
+# num_entries = pe_get32 (dll, opthdr_ofs + 92);
+#
+# if (num_entries < 1) /* no exports */
+# return 1;
+#
+# export_rva = pe_get32 (dll, opthdr_ofs + 96);
+# export_size = pe_get32 (dll, opthdr_ofs + 100);
+# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
+# secptr = (pe_header_offset + 4 + 20 +
+# pe_get16 (dll, pe_header_offset + 4 + 16));
+#
+# expptr = 0;
+# for (i = 0; i < nsections; i++)
+# {
+# char sname[8];
+# unsigned long secptr1 = secptr + 40 * i;
+# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
+# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
+# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
+# lseek(dll, secptr1, SEEK_SET);
+# read(dll, sname, 8);
+# if (vaddr <= export_rva && vaddr+vsize > export_rva)
+# {
+# expptr = fptr + (export_rva - vaddr);
+# if (export_rva + export_size > vaddr + vsize)
+# export_size = vsize - (export_rva - vaddr);
+# break;
+# }
+# }
+#
+# expdata = (unsigned char*)malloc(export_size);
+# lseek (dll, expptr, SEEK_SET);
+# read (dll, expdata, export_size);
+# erva = expdata - export_rva;
+#
+# nexp = pe_as32 (expdata+24);
+# name_rvas = pe_as32 (expdata+32);
+#
+# printf ("EXPORTS\n");
+# for (i = 0; i<nexp; i++)
+# {
+# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
+# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
+# }
+#
+# return 0;
+# }
+# /* impgen.c ends here */
+
+EOF
;;
esac
- # Append the ltmain.sh script.
- sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
- # We use sed instead of cat because bash on DJGPP gets confused if
- # if finds mixed CR/LF and LF-only lines. Since sed operates in
- # text mode, it properly converts lines to CR/LF. This bash problem
- # is reportedly fixed, but why not run on old versions too?
- chmod +x "$ofile"
+ # Append the ltmain.sh script.
+ sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
+ # We use sed instead of cat because bash on DJGPP gets confused if
+ # if finds mixed CR/LF and LF-only lines. Since sed operates in
+ # text mode, it properly converts lines to CR/LF. This bash problem
+ # is reportedly fixed, but why not run on old versions too?
+
+ chmod +x "$ofile"
+ fi
;;
*)
@@ -3019,7 +2587,29 @@ EOF
;;
esac
-test -n "$cache_file" || exit 0
+# Update the list of available tags.
+if test -n "$tagname"; then
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" $ofile | sed -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ # Append the new tag name to the list of available tags.
+ available_tags="$available_tags $tagname"
+
+ # Now substitute the updated of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' ${ofile} > ${ofile}.new"; then
+ mv ${ofile}.new ${ofile}
+ chmod +x "$ofile"
+ else
+ rm -f ${ofile}.new
+ echo "$progname: unable to update list of available tagged configurations."
+ exit 1
+ fi
+fi
+
+# Don't cache tagged configuration!
+test -n "$cache_file" && test -z "$tagname" || exit 0
# AC_CACHE_SAVE
trap '' 1 2 15
diff --git a/contrib/binutils/ltmain.sh b/contrib/binutils/ltmain.sh
index c32939e..2bccd11 100644
--- a/contrib/binutils/ltmain.sh
+++ b/contrib/binutils/ltmain.sh
@@ -1,7 +1,7 @@
# ltmain.sh - Provide generalized library-building support services.
# NOTE: Changing this file will not affect anything until you rerun ltconfig.
#
-# Copyright (C) 1996-1999, 2000 Free Software Foundation, Inc.
+# Copyright (C) 1996-2000, 2001 Free Software Foundation, Inc.
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
# This program is free software; you can redistribute it and/or modify
@@ -54,8 +54,8 @@ modename="$progname"
# Constants.
PROGRAM=ltmain.sh
PACKAGE=libtool
-VERSION=1.3.4
-TIMESTAMP=" (1.385.2.196 1999/12/07 21:47:57)"
+VERSION=1.4a
+TIMESTAMP=" (1.641.2.122 2000/09/30 05:27:52)"
default_mode=
help="Try \`$progname --help' for more information."
@@ -124,6 +124,25 @@ do
execute_dlfiles)
eval "$prev=\"\$$prev \$arg\""
;;
+ tag)
+ tagname="$arg"
+
+ # Check whether tagname contains only valid characters
+ case "$tagname" in
+ *[!-_A-Za-z0-9,/]*)
+ echo "$progname: invalid tag name: $tagname" 1>&2
+ exit 1
+ ;;
+ esac
+
+ if grep "^### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then
+ taglist="$taglist $tagname"
+ # Evaluate the configuration.
+ eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`"
+ else
+ echo "$progname: ignoring unknown tag $tagname" 1>&2
+ fi
+ ;;
*)
eval "$prev=\$arg"
;;
@@ -146,7 +165,11 @@ do
;;
--config)
- sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0
+ sed -n -e '/^### BEGIN LIBTOOL CONFIG/,/^### END LIBTOOL CONFIG/p' < "$0"
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ sed -n -e "/^### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0"
+ done
exit 0
;;
@@ -183,6 +206,13 @@ do
show=:
;;
+ --tag) prevopt="--tag" prev=tag ;;
+ --tag=*)
+ set tag "$optarg" ${1+"$@"}
+ shift
+ prev=tag
+ ;;
+
-dlopen)
prevopt="-dlopen"
prev=execute_dlfiles
@@ -267,6 +297,7 @@ if test -z "$show_help"; then
modename="$modename: compile"
# Get the compilation command and the source file.
base_compile=
+ prev=
lastarg=
srcfile="$nonopt"
suppress_output=
@@ -274,6 +305,32 @@ if test -z "$show_help"; then
user_target=no
for arg
do
+ case "$prev" in
+ "") ;;
+ xcompiler)
+ # Aesthetically quote the previous argument.
+ prev=
+ lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+
+ case "$arg" in
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+
+ # Add the previous argument to base_compile.
+ if test -z "$base_compile"; then
+ base_compile="$lastarg"
+ else
+ base_compile="$base_compile $lastarg"
+ fi
+ continue
+ ;;
+ esac
+
# Accept any command-line options.
case "$arg" in
-o)
@@ -288,6 +345,50 @@ if test -z "$show_help"; then
build_old_libs=yes
continue
;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+ lastarg=
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ case "$arg" in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ lastarg="$lastarg $arg"
+ done
+ IFS="$save_ifs"
+ lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+ # Add the arguments to base_compile.
+ if test -z "$base_compile"; then
+ base_compile="$lastarg"
+ else
+ base_compile="$base_compile $lastarg"
+ fi
+ continue
+ ;;
esac
case "$user_target" in
@@ -316,10 +417,10 @@ if test -z "$show_help"; then
lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
# Double-quote args containing other shell metacharacters.
- # Many Bourne shells cannot handle close brackets correctly in scan
- # sets, so we specify it separately.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
case "$lastarg" in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
lastarg="\"$lastarg\""
;;
esac
@@ -355,10 +456,12 @@ if test -z "$show_help"; then
*.asm) xform=asm ;;
*.c++) xform=c++ ;;
*.cc) xform=cc ;;
+ *.class) xform=class ;;
*.cpp) xform=cpp ;;
*.cxx) xform=cxx ;;
*.f90) xform=f90 ;;
*.for) xform=for ;;
+ *.java) xform=java ;;
esac
libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
@@ -371,6 +474,59 @@ if test -z "$show_help"; then
;;
esac
+ # Infer tagged configuration to use if any are available and
+ # if one wasn't chosen via the "--tag" command line option.
+ # Only attempt this if the compiler in the base compile
+ # command doesn't match the default compiler.
+ if test -n "$available_tags" && test -z "$tagname"; then
+ case $base_compile in
+ "$CC "*) ;;
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when ltconfig was run.
+ "`$echo $CC` "*) ;;
+ *)
+ for z in $available_tags; do
+ if grep "^### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
+ case $base_compile in
+ "$CC "*)
+ # The compiler in the base compile command matches
+ # the one in the tagged configuration.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ "`$echo $CC` "*)
+ tagname=$z
+ break
+ ;;
+ esac
+ fi
+ done
+ # If $tagname still isn't set, then no tagged configuration
+ # was found and let the user know that the "--tag" command
+ # line option must be used.
+ if test -z "$tagname"; then
+ echo "$modename: unable to infer tagged configuration"
+ echo "$modename: specify a tag with \`--tag'" 1>&2
+ exit 1
+# else
+# echo "$modename: using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+
+ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$obj"; then
+ xdir=
+ else
+ xdir=$xdir/
+ fi
+ lobj=${xdir}$objdir/$objname
+
if test -z "$base_compile"; then
$echo "$modename: you must specify a compilation command" 1>&2
$echo "$help" 1>&2
@@ -379,22 +535,34 @@ if test -z "$show_help"; then
# Delete any leftover library objects.
if test "$build_old_libs" = yes; then
- removelist="$obj $libobj"
+ removelist="$obj $lobj $libobj ${libobj}T"
else
- removelist="$libobj"
+ removelist="$lobj $libobj ${libobj}T"
fi
$run $rm $removelist
trap "$run $rm $removelist; exit 1" 1 2 15
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case "$host_os" in
+ cygwin* | mingw* | pw32* | os2*)
+ pic_mode=default
+ ;;
+ esac
+ if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
+ # non-PIC code in shared libraries is not supported
+ pic_mode=default
+ fi
+
# Calculate the filename of the output object if compiler does
# not support -o with -c
if test "$compiler_c_o" = no; then
- output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext}
+ output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
lockfile="$output_obj.lock"
removelist="$removelist $output_obj $lockfile"
trap "$run $rm $removelist; exit 1" 1 2 15
else
+ output_obj=
need_locks=no
lockfile=
fi
@@ -402,7 +570,7 @@ if test -z "$show_help"; then
# Lock this critical section if it is needed
# We use this script file to make the link, it avoids creating a new file
if test "$need_locks" = yes; then
- until ln "$0" "$lockfile" 2>/dev/null; do
+ until $run ln "$0" "$lockfile" 2>/dev/null; do
$show "Waiting for $lockfile to be removed"
sleep 2
done
@@ -429,50 +597,48 @@ compiler."
eval srcfile=\"$fix_srcfile_path\"
fi
+ $run $rm "$libobj" "${libobj}T"
+
+ # Create a libtool object file (analogous to a ".la" file),
+ # but don't create it if we're doing a dry run.
+ test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
# Only build a PIC object if we are building libtool libraries.
if test "$build_libtool_libs" = yes; then
# Without this assignment, base_compile gets emptied.
fbsd_hideous_sh_bug=$base_compile
- # All platforms use -DPIC, to notify preprocessed assembler code.
- # However, make sure we only set it for non-Java code.
- case "$srcfile" in
- *.java|*.class)
- command="$base_compile $pic_flag $srcfile";;
- *)
- command="$base_compile $srcfile $pic_flag -DPIC";;
- esac
- if test "$build_old_libs" = yes; then
- lo_libobj="$libobj"
- dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$dir" = "X$libobj"; then
- dir="$objdir"
- else
- dir="$dir/$objdir"
- fi
- libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
-
- if test -d "$dir"; then
- $show "$rm $libobj"
- $run $rm $libobj
- else
- $show "$mkdir $dir"
- $run $mkdir $dir
- status=$?
- if test $status -ne 0 && test ! -d $dir; then
- exit $status
- fi
- fi
+ if test "$pic_mode" != no; then
+ command="$base_compile $srcfile $pic_flag"
+ else
+ # Don't build PIC code
+ command="$base_compile $srcfile"
fi
- if test "$compiler_o_lo" = yes; then
- output_obj="$libobj"
- command="$command -o $output_obj"
- elif test "$compiler_c_o" = yes; then
- output_obj="$obj"
- command="$command -o $output_obj"
+
+ if test ! -d ${xdir}$objdir; then
+ $show "$mkdir ${xdir}$objdir"
+ $run $mkdir ${xdir}$objdir
+ status=$?
+ if test $status -ne 0 && test ! -d ${xdir}$objdir; then
+ exit $status
+ fi
+ fi
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
fi
- $run $rm "$output_obj"
+ $run $rm "$lobj" "$output_obj"
+
$show "$command"
if $run eval "$command"; then :
else
@@ -501,9 +667,9 @@ compiler."
fi
# Just move the object if needed, then go on to compile the next one
- if test x"$output_obj" != x"$libobj"; then
- $show "$mv $output_obj $libobj"
- if $run $mv $output_obj $libobj; then :
+ if test -n "$output_obj" && test "x$output_obj" != "x$lobj"; then
+ $show "$mv $output_obj $lobj"
+ if $run $mv $output_obj $lobj; then :
else
error=$?
$run $rm $removelist
@@ -511,56 +677,38 @@ compiler."
fi
fi
- # If we have no pic_flag, then copy the object into place and finish.
- if test -z "$pic_flag" && test "$build_old_libs" = yes; then
- # Rename the .lo from within objdir to obj
- if test -f $obj; then
- $show $rm $obj
- $run $rm $obj
- fi
+ # Append the name of the PIC object to the libtool object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
- $show "$mv $libobj $obj"
- if $run $mv $libobj $obj; then :
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
-
- xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$xdir" = "X$obj"; then
- xdir="."
- else
- xdir="$xdir"
- fi
- baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"`
- libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
- # Now arrange that obj and lo_libobj become the same file
- $show "(cd $xdir && $LN_S $baseobj $libobj)"
- if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then
- exit 0
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
- fi
+EOF
# Allow error messages only from the first compilation.
suppress_output=' >/dev/null 2>&1'
+ else
+ # No PIC object so indicate it doesn't exist in the libtool
+ # object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
fi
# Only build a position-dependent object if we build old libraries.
if test "$build_old_libs" = yes; then
- command="$base_compile $srcfile"
+ if test "$pic_mode" != yes; then
+ # Don't build PIC code
+ command="$base_compile $srcfile"
+ else
+ command="$base_compile $srcfile $pic_flag"
+ fi
if test "$compiler_c_o" = yes; then
command="$command -o $obj"
- output_obj="$obj"
fi
# Suppress compiler output if we already did a PIC compilation.
command="$command$suppress_output"
- $run $rm "$output_obj"
+ $run $rm "$obj" "$output_obj"
$show "$command"
if $run eval "$command"; then :
else
@@ -589,7 +737,7 @@ compiler."
fi
# Just move the object if needed
- if test x"$output_obj" != x"$obj"; then
+ if test -n "$output_obj" && test "x$output_obj" != "x$obj"; then
$show "$mv $output_obj $obj"
if $run $mv $output_obj $obj; then :
else
@@ -599,50 +747,38 @@ compiler."
fi
fi
- # Create an invalid libtool object if no PIC, so that we do not
- # accidentally link it into a program.
- if test "$build_libtool_libs" != yes; then
- $show "echo timestamp > $libobj"
- $run eval "echo timestamp > \$libobj" || exit $?
- else
- # Move the .lo from within objdir
- $show "$mv $libobj $lo_libobj"
- if $run $mv $libobj $lo_libobj; then :
- else
- error=$?
- $run $rm $removelist
- exit $error
- fi
- fi
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+ else
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
fi
+ $run $mv "${libobj}T" "${libobj}"
+
# Unlock the critical section if it was locked
if test "$need_locks" != no; then
- $rm "$lockfile"
+ $run $rm "$lockfile"
fi
exit 0
;;
# libtool link mode
- link)
+ link | relink)
modename="$modename: link"
- C_compiler="$CC" # save it, to compile generated C sources
- # Always respect the CC configured in by ltconfig.
- CC="$nonopt"
- # CYGNUS LOCAL: tromey/java
- # Add -B options to link line.
- for arg
- do
- case "$arg" in
- -B*)
- CC="$CC $arg"
- ;;
- esac
- done
- # END CYGNUS LOCAL
case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2*)
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
# It is impossible to link a dll without this setting, and
# we shouldn't force the makefile maintainer to figure out
# which system we are compiling for in order to pass an extra
@@ -655,179 +791,13 @@ compiler."
# -no-undefined on the libtool link line when we can be certain
# that all symbols are satisfied, otherwise we get a static library.
allow_undefined=yes
-
- # This is a source program that is used to create dlls on Windows
- # Don't remove nor modify the starting and closing comments
-# /* ltdll.c starts here */
-# #define WIN32_LEAN_AND_MEAN
-# #include <windows.h>
-# #undef WIN32_LEAN_AND_MEAN
-# #include <stdio.h>
-#
-# #ifndef __CYGWIN__
-# # ifdef __CYGWIN32__
-# # define __CYGWIN__ __CYGWIN32__
-# # endif
-# #endif
-#
-# #ifdef __cplusplus
-# extern "C" {
-# #endif
-# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
-# #ifdef __cplusplus
-# }
-# #endif
-#
-# #ifdef __CYGWIN__
-# #include <cygwin/cygwin_dll.h>
-# DECLARE_CYGWIN_DLL( DllMain );
-# #endif
-# HINSTANCE __hDllInstance_base;
-#
-# BOOL APIENTRY
-# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
-# {
-# __hDllInstance_base = hInst;
-# return TRUE;
-# }
-# /* ltdll.c ends here */
- # This is a source program that is used to create import libraries
- # on Windows for dlls which lack them. Don't remove nor modify the
- # starting and closing comments
-# /* impgen.c starts here */
-# /* Copyright (C) 1999 Free Software Foundation, Inc.
-#
-# This file is part of GNU libtool.
-#
-# 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 <stdio.h> /* for printf() */
-# #include <unistd.h> /* for open(), lseek(), read() */
-# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
-# #include <string.h> /* for strdup() */
-#
-# static unsigned int
-# pe_get16 (fd, offset)
-# int fd;
-# int offset;
-# {
-# unsigned char b[2];
-# lseek (fd, offset, SEEK_SET);
-# read (fd, b, 2);
-# return b[0] + (b[1]<<8);
-# }
-#
-# static unsigned int
-# pe_get32 (fd, offset)
-# int fd;
-# int offset;
-# {
-# unsigned char b[4];
-# lseek (fd, offset, SEEK_SET);
-# read (fd, b, 4);
-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-# }
-#
-# static unsigned int
-# pe_as32 (ptr)
-# void *ptr;
-# {
-# unsigned char *b = ptr;
-# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);
-# }
-#
-# int
-# main (argc, argv)
-# int argc;
-# char *argv[];
-# {
-# int dll;
-# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
-# unsigned long export_rva, export_size, nsections, secptr, expptr;
-# unsigned long name_rvas, nexp;
-# unsigned char *expdata, *erva;
-# char *filename, *dll_name;
-#
-# filename = argv[1];
-#
-# dll = open(filename, O_RDONLY|O_BINARY);
-# if (!dll)
-# return 1;
-#
-# dll_name = filename;
-#
-# for (i=0; filename[i]; i++)
-# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')
-# dll_name = filename + i +1;
-#
-# pe_header_offset = pe_get32 (dll, 0x3c);
-# opthdr_ofs = pe_header_offset + 4 + 20;
-# num_entries = pe_get32 (dll, opthdr_ofs + 92);
-#
-# if (num_entries < 1) /* no exports */
-# return 1;
-#
-# export_rva = pe_get32 (dll, opthdr_ofs + 96);
-# export_size = pe_get32 (dll, opthdr_ofs + 100);
-# nsections = pe_get16 (dll, pe_header_offset + 4 +2);
-# secptr = (pe_header_offset + 4 + 20 +
-# pe_get16 (dll, pe_header_offset + 4 + 16));
-#
-# expptr = 0;
-# for (i = 0; i < nsections; i++)
-# {
-# char sname[8];
-# unsigned long secptr1 = secptr + 40 * i;
-# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
-# unsigned long vsize = pe_get32 (dll, secptr1 + 16);
-# unsigned long fptr = pe_get32 (dll, secptr1 + 20);
-# lseek(dll, secptr1, SEEK_SET);
-# read(dll, sname, 8);
-# if (vaddr <= export_rva && vaddr+vsize > export_rva)
-# {
-# expptr = fptr + (export_rva - vaddr);
-# if (export_rva + export_size > vaddr + vsize)
-# export_size = vsize - (export_rva - vaddr);
-# break;
-# }
-# }
-#
-# expdata = (unsigned char*)malloc(export_size);
-# lseek (dll, expptr, SEEK_SET);
-# read (dll, expdata, export_size);
-# erva = expdata - export_rva;
-#
-# nexp = pe_as32 (expdata+24);
-# name_rvas = pe_as32 (expdata+32);
-#
-# printf ("EXPORTS\n");
-# for (i = 0; i<nexp; i++)
-# {
-# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
-# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
-# }
-#
-# return 0;
-# }
-# /* impgen.c ends here */
;;
*)
allow_undefined=yes
;;
esac
+ libtool_args="$nonopt"
+ base_compile="$nonopt"
compile_command="$nonopt"
finalize_command="$nonopt"
@@ -838,18 +808,12 @@ compiler."
convenience=
old_convenience=
deplibs=
- linkopts=
+ old_deplibs=
+ compiler_flags=
+ linker_flags=
+ dllsearchpath=
+ lib_search_path=`pwd`
- if test -n "$shlibpath_var"; then
- # get the directories listed in $shlibpath_var
- eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
- else
- lib_search_path=
- fi
- # now prepend the system-specific ones
- eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\"
- eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
-
avoid_version=no
dlfiles=
dlprefiles=
@@ -859,10 +823,11 @@ compiler."
export_symbols_regex=
generated=
libobjs=
- link_against_libtool_libs=
ltlibs=
module=no
+ no_install=no
objs=
+ non_pic_objects=
prefer_static_libs=no
preload=no
prev=
@@ -906,7 +871,15 @@ compiler."
# Go through the arguments, transforming them on the way.
while test $# -gt 0; do
arg="$1"
+ base_compile="$base_compile $arg"
shift
+ case "$arg" in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+ ;;
+ *) qarg=$arg ;;
+ esac
+ libtool_args="$libtool_args $qarg"
# If the previous option needs an argument, assign it.
if test -n "$prev"; then
@@ -954,6 +927,7 @@ compiler."
dlprefiles="$dlprefiles $arg"
fi
prev=
+ continue
;;
esac
;;
@@ -999,6 +973,21 @@ compiler."
prev=
continue
;;
+ xcompiler)
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ xlinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $wl$qarg"
+ prev=
+ compile_command="$compile_command $wl$qarg"
+ finalize_command="$finalize_command $wl$qarg"
+ continue
+ ;;
*)
eval "$prev=\"\$arg\""
prev=
@@ -1057,6 +1046,18 @@ compiler."
continue
;;
+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+ # so, if we see these flags be careful not to treat them like -L
+ -L[A-Z][A-Z]*:*)
+ case $with_gcc/$host in
+ no/*-*-irix*)
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ ;;
+ esac
+ continue
+ ;;
+
-L*)
dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
# We need an absolute path.
@@ -1065,50 +1066,48 @@ compiler."
*)
absdir=`cd "$dir" && pwd`
if test -z "$absdir"; then
- $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
- $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
- absdir="$dir"
+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+ exit 1
fi
dir="$absdir"
;;
esac
- case " $deplibs " in
- *" $arg "*) ;;
- *) deplibs="$deplibs $arg";;
- esac
- case " $lib_search_path " in
- *" $dir "*) ;;
- *) lib_search_path="$lib_search_path $dir";;
+ case "$deplibs " in
+ *" -L$dir "*) ;;
+ *)
+ deplibs="$deplibs -L$dir"
+ lib_search_path="$lib_search_path $dir"
+ ;;
esac
case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2*)
- dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
case ":$dllsearchpath:" in
- ::) dllsearchpath="$dllsearchdir";;
- *":$dllsearchdir:"*) ;;
- *) dllsearchpath="$dllsearchpath:$dllsearchdir";;
+ *":$dir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
esac
;;
esac
+ continue
;;
-l*)
if test "$arg" = "-lc"; then
case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
# These systems don't actually have c library (as such)
continue
;;
esac
elif test "$arg" = "-lm"; then
case "$host" in
- *-*-cygwin* | *-*-beos*)
+ *-*-cygwin* | *-*-pw32* | *-*-beos*)
# These systems don't actually have math library (as such)
continue
;;
esac
fi
deplibs="$deplibs $arg"
+ continue
;;
-module)
@@ -1116,6 +1115,31 @@ compiler."
continue
;;
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case "$host" in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # in order for the loader to find any dlls it needs.
+ $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+ $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+ fast_install=no
+ ;;
+ *-*-rhapsody*)
+ # rhapsody is a little odd...
+ deplibs="$deplibs -framework System"
+ ;;
+ *)
+ no_install=yes
+ ;;
+ esac
+ continue
+ ;;
+
-no-undefined)
allow_undefined=no
continue
@@ -1156,11 +1180,11 @@ compiler."
;;
-static)
- # If we have no pic_flag, then this is the same as -all-static.
- if test -z "$pic_flag" && test -n "$link_static_flag"; then
- compile_command="$compile_command $link_static_flag"
- finalize_command="$finalize_command $link_static_flag"
- fi
+ # The effects of -static are defined in a previous loop.
+ # We used to do the same as -all-static on platforms that
+ # didn't have a PIC flag, but the assumption that the effects
+ # would be equivalent was wrong. It would break on at least
+ # Digital Unix and AIX.
continue
;;
@@ -1174,387 +1198,1078 @@ compiler."
continue
;;
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+ arg=
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case "$flag" in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Wl,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+ arg=
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case "$flag" in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $wl$flag"
+ linker_flags="$linker_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
# Some other compiler flag.
-* | +*)
# Unknown arguments in both finalize_command and compile_command need
# to be aesthetically quoted because they are evaled later.
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
case "$arg" in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
arg="\"$arg\""
;;
esac
;;
- *.o | *.obj | *.a | *.lib)
+ *.$objext)
# A standard object.
objs="$objs $arg"
;;
*.lo)
- # A library object.
- if test "$prev" = dlfiles; then
- dlfiles="$dlfiles $arg"
- if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then
- prev=
- continue
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case "$arg" in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit 1
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
else
- # If libtool objects are unsupported, then we need to preload.
- prev=dlprefiles
+ xdir="$xdir/"
fi
- fi
- if test "$prev" = dlprefiles; then
- # Preload the old-style object.
- dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"`
- prev=
+ if test "$pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ pic_object="$xdir$pic_object"
+
+ if test "$prev" = dlfiles; then
+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+ dlfiles="$dlfiles $pic_object"
+ prev=
+ continue
+ else
+ # If libtool objects are unsupported, then we need to preload.
+ prev=dlprefiles
+ fi
+ fi
+
+ # CHECK ME: I think I busted this. -Ossama
+ if test "$prev" = dlprefiles; then
+ # Preload the old-style object.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$libobjs $pic_object"
+ arg="$pic_object"
+ fi
+
+ # Non-PIC object.
+ if test "$non_pic_object" != none; then
+ # Prepend the subdirectory the object is found in.
+ non_pic_object="$xdir$non_pic_object"
+
+ # A standard non-PIC object
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ if test -z "$pic_object" || test "$pic_object" = none ; then
+ arg="$non_pic_object"
+ fi
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit 1
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
fi
- libobjs="$libobjs $arg"
+ ;;
+
+ *.$libext)
+ # An archive.
+ deplibs="$deplibs $arg"
+ old_deplibs="$old_deplibs $arg"
+ continue
;;
*.la)
# A libtool-controlled library.
- dlname=
- libdir=
- library_names=
- old_library=
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ dlfiles="$dlfiles $arg"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ dlprefiles="$dlprefiles $arg"
+ prev=
+ else
+ deplibs="$deplibs $arg"
+ fi
+ continue
+ ;;
+
+ # Some other compiler argument.
+ *)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case "$arg" in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+ esac
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+ done
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit 1
+ fi
+
+ # Infer tagged configuration to use if any are available and
+ # if one wasn't chosen via the "--tag" command line option.
+ # Only attempt this if the compiler in the base link
+ # command doesn't match the default compiler.
+ if test -n "$available_tags" && test -z "$tagname"; then
+ case $base_compile in
+ "$CC "*) ;;
+ # Blanks in the command may have been stripped by the calling shell,
+ # but not from the CC environment variable when ltconfig was run.
+ "`$echo $CC` "*) ;;
+ *)
+ for z in $available_tags; do
+ if grep "^### BEGIN LIBTOOL TAG CONFIG: $z$" < "$0" > /dev/null; then
+ # Evaluate the configuration.
+ eval "`sed -n -e '/^### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`"
+ case $base_compile in
+ "$CC "*)
+ # The compiler in $compile_command matches
+ # the one in the tagged configuration.
+ # Assume this is the tagged configuration we want.
+ tagname=$z
+ break
+ ;;
+ "`$echo $CC` "*)
+ tagname=$z
+ break
+ ;;
+ esac
+ fi
+ done
+ # If $tagname still isn't set, then no tagged configuration
+ # was found and let the user know that the "--tag" command
+ # line option must be used.
+ if test -z "$tagname"; then
+ echo "$modename: unable to infer tagged configuration"
+ echo "$modename: specify a tag with \`--tag'" 1>&2
+ exit 1
+# else
+# echo "$modename: using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+ else
+ shlib_search_path=
+ fi
+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+ output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$output_objdir" = "X$output"; then
+ output_objdir="$objdir"
+ else
+ output_objdir="$output_objdir/$objdir"
+ fi
+ # Create the object directory.
+ if test ! -d $output_objdir; then
+ $show "$mkdir $output_objdir"
+ $run $mkdir $output_objdir
+ status=$?
+ if test $status -ne 0 && test ! -d $output_objdir; then
+ exit $status
+ fi
+ fi
+
+ # Determine the type of output
+ case "$output" in
+ "")
+ $echo "$modename: you must specify an output file" 1>&2
+ $echo "$help" 1>&2
+ exit 1
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ specialdeplibs=
+ libs=
+ # Find all interdependent deplibs by searching for libraries
+ # that are linked more than once (e.g. -la -lb -la)
+ for deplib in $deplibs; do
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ libs="$libs $deplib"
+ done
+
+ if test $linkmode = lib; then
+ libs="$predeps $libs $compiler_lib_search_path $postdeps"
+ fi
+
+ deplibs=
+ newdependency_libs=
+ newlib_search_path=
+ need_relink=no # whether we're linking any uninstalled libtool libraries
+ uninst_deplibs= # uninstalled libtool libraries
+ uninst_path= # paths that contain uninstalled libtool libraries
+ case $linkmode in
+ lib)
+ passes="conv link"
+ for file in $dlfiles $dlprefiles; do
+ case "$file" in
+ *.la) ;;
+ *)
+ $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+ exit 1
+ ;;
+ esac
+ done
+ ;;
+ prog)
+ compile_deplibs=
+ finalize_deplibs=
+ alldeplibs=no
+ newdlfiles=
+ newdlprefiles=
+ passes="conv scan dlopen dlpreopen link"
+ ;;
+ *) passes="conv"
+ ;;
+ esac
+ for pass in $passes; do
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan"; then
+ libs="$deplibs"
+ deplibs=
+ fi
+ if test $linkmode = prog; then
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
+ if test $pass = dlopen; then
+ # Collect dlpreopened libraries
+ save_deplibs="$deplibs"
+ deplibs=
+ fi
+ for deplib in $libs; do
+ lib=
+ found=no
+ case "$deplib" in
+ -l*)
+ if test $linkmode != lib && test $linkmode != prog; then
+ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+ continue
+ fi
+ if test $pass = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ # Search the libtool library
+ lib="$searchdir/lib${name}.la"
+ if test -f "$lib"; then
+ found=yes
+ break
+ fi
+ done
+ if test "$found" != yes; then
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ deplibs="$deplib $deplibs"
+ test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs"
+ fi
+ continue
+ fi
+ ;;
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test $pass = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ prog)
+ if test $pass = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ if test $pass = scan; then
+ deplibs="$deplib $deplibs"
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ ;;
+ *)
+ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+ ;;
+ esac
+ continue
+ ;;
+ -R*)
+ if test $pass = link; then
+ dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la) lib="$deplib" ;;
+ *.$libext)
+ if test $pass = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ if test "$deplibs_check_method" != pass_all; then
+ echo
+ echo "*** Warning: This library needs some functionality provided by $deplib."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have."
+ else
+ echo
+ echo "*** Warning: Linking the shared library $output against the"
+ echo "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ continue
+ ;;
+ prog)
+ if test $pass != link; then
+ deplibs="$deplib $deplibs"
+ else
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ fi
+ continue
+ ;;
+ esac
+ ;;
+ *.lo | *.$objext)
+ if test $pass = conv; then
+ deplibs="$deplib $deplibs"
+ elif test $linkmode = prog; then
+ if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlopen support or we're linking statically,
+ # we need to preload.
+ newdlprefiles="$newdlprefiles $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ newdlfiles="$newdlfiles $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac
+ if test $found = yes || test -f "$lib"; then :
+ else
+ $echo "$modename: cannot find the library \`$lib'" 1>&2
+ exit 1
+ fi
# Check to see that this really is a libtool archive.
- if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
else
- $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
exit 1
fi
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
# If the library was installed with an old release of libtool,
# it will not redefine variable installed.
installed=yes
# Read the .la file
- # If there is no directory component, then add one.
- case "$arg" in
- */* | *\\*) . $arg ;;
- *) . ./$arg ;;
+ case "$lib" in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
esac
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test $linkmode != prog && test $linkmode != lib; }; then
+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+ fi
+
+ if test $pass = conv; then
+ # only check for convenience libraries
+ deplibs="$lib $deplibs"
+ if test -z "$libdir"; then
+ if test -z "$old_library"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit 1
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $ladir/$objdir/$old_library"
+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ tmp_libs="$tmp_libs $deplib"
+ done
+ elif test $linkmode != prog && test $linkmode != lib; then
+ $echo "$modename: \`$lib' is not a convenience library" 1>&2
+ exit 1
+ fi
+ continue
+ fi
+
# Get the name of the library we link against.
linklib=
for l in $old_library $library_names; do
linklib="$l"
done
-
if test -z "$linklib"; then
- $echo "$modename: cannot find name of link library for \`$arg'" 1>&2
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
exit 1
fi
- # Find the relevant object directory and library name.
- name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'`
+ # This library was specified with -dlopen.
+ if test $pass = dlopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+ exit 1
+ fi
+ if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+ # If there is no dlname, no dlopen support or we're linking statically,
+ # we need to preload.
+ dlprefiles="$dlprefiles $lib"
+ else
+ newdlfiles="$newdlfiles $lib"
+ fi
+ continue
+ fi
+ # We need an absolute path.
+ case "$ladir" in
+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+ *)
+ abs_ladir=`cd "$ladir" && pwd`
+ if test -z "$abs_ladir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+ $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+ # Find the relevant object directory and library name.
if test "X$installed" = Xyes; then
- dir="$libdir"
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ $echo "$modename: warning: library \`$lib' was moved." 1>&2
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$libdir"
+ absdir="$libdir"
+ fi
else
- dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$dir" = "X$arg"; then
- dir="$objdir"
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ uninst_path="$uninst_path $abs_ladir"
+ fi
+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+ # This library was specified with -dlpreopen.
+ if test $pass = dlpreopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+ exit 1
+ fi
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ newdlprefiles="$newdlprefiles $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ newdlprefiles="$newdlprefiles $dir/$dlname"
else
- dir="$dir/$objdir"
+ newdlprefiles="$newdlprefiles $dir/$linklib"
fi
fi
- if test -n "$dependency_libs"; then
- # Extract -R and -L from dependency_libs
- temp_deplibs=
+ if test -z "$libdir"; then
+ # link the convenience library
+ if test $linkmode = lib; then
+ deplibs="$dir/$old_library $deplibs"
+ elif test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$dir/$old_library $compile_deplibs"
+ finalize_deplibs="$dir/$old_library $finalize_deplibs"
+ else
+ deplibs="$lib $deplibs" # used for prog,scan pass
+ fi
+ continue
+ fi
+
+ if test $linkmode = prog && test $pass != link; then
+ newlib_search_path="$newlib_search_path $ladir"
+ deplibs="$lib $deplibs"
+
+ linkalldeplibs=no
+ if test "$link_all_deplibs" != no || test -z "$library_names" ||
+ test "$build_libtool_libs" = no; then
+ linkalldeplibs=yes
+ fi
+
+ tmp_libs=
for deplib in $dependency_libs; do
case "$deplib" in
- -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
- case " $rpath $xrpath " in
- *" $temp_xrpath "*) ;;
- *) xrpath="$xrpath $temp_xrpath";;
- esac;;
- -L*) case "$compile_command $temp_deplibs " in
- *" $deplib "*) ;;
- *) temp_deplibs="$temp_deplibs $deplib";;
- esac
- temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'`
- case " $lib_search_path " in
- *" $temp_dir "*) ;;
- *) lib_search_path="$lib_search_path $temp_dir";;
- esac
- ;;
- *) temp_deplibs="$temp_deplibs $deplib";;
+ -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+ esac
+ # Need to link against all dependency_libs?
+ if test $linkalldeplibs = yes; then
+ deplibs="$deplib $deplibs"
+ else
+ # Need to hardcode shared library paths
+ # or/and link against static libraries
+ newdependency_libs="$deplib $newdependency_libs"
+ fi
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
esac
+ tmp_libs="$tmp_libs $deplib"
done
- dependency_libs="$temp_deplibs"
- fi
-
- if test -z "$libdir"; then
- # It is a libtool convenience library, so add in its objects.
- convenience="$convenience $dir/$old_library"
- old_convenience="$old_convenience $dir/$old_library"
- deplibs="$deplibs$dependency_libs"
- compile_command="$compile_command $dir/$old_library$dependency_libs"
- finalize_command="$finalize_command $dir/$old_library$dependency_libs"
continue
fi
- # This library was specified with -dlopen.
- if test "$prev" = dlfiles; then
- dlfiles="$dlfiles $arg"
- if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then
- # If there is no dlname, no dlopen support or we're linking statically,
- # we need to preload.
- prev=dlprefiles
- else
- # We should not create a dependency on this library, but we
- # may need any libraries it requires.
- compile_command="$compile_command$dependency_libs"
- finalize_command="$finalize_command$dependency_libs"
- prev=
- continue
+ if test "$linkmode,$pass" = "prog,link"; then
+ if test -n "$library_names" &&
+ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var"; then
+ # Make sure the rpath contains only unique directories.
+ case "$temp_rpath " in
+ *" $dir "*) ;;
+ *" $absdir "*) ;;
+ *) temp_rpath="$temp_rpath $dir" ;;
+ esac
+ fi
+
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
fi
- fi
- # The library was specified with -dlpreopen.
- if test "$prev" = dlprefiles; then
- # Prefer using a static library (so that no silly _DYNAMIC symbols
- # are required to link).
- if test -n "$old_library"; then
- dlprefiles="$dlprefiles $dir/$old_library"
- else
- dlprefiles="$dlprefiles $dir/$linklib"
+ if test "$alldeplibs" = yes &&
+ { test "$deplibs_check_method" = pass_all ||
+ { test "$build_libtool_libs" = yes &&
+ test -n "$library_names"; }; }; then
+ # We only need to search for static libraries
+ continue
fi
- prev=
fi
+ link_static=no # Whether the deplib will be linked statically
if test -n "$library_names" &&
{ test "$prefer_static_libs" = no || test -z "$old_library"; }; then
- link_against_libtool_libs="$link_against_libtool_libs $arg"
- if test -n "$shlibpath_var"; then
- # Make sure the rpath contains only unique directories.
- case "$temp_rpath " in
- *" $dir "*) ;;
- *) temp_rpath="$temp_rpath $dir" ;;
+ if test "$installed" = no; then
+ uninst_deplibs="$uninst_deplibs $lib"
+ need_relink=yes
+ fi
+ # This is a shared library
+ if test $linkmode = lib &&
+ test $hardcode_into_libs = yes; then
+ # Hardcode the library path.
+ # Skip directories that are in the system default run-time
+ # search path.
+ case " $sys_lib_dlsearch_path " in
+ *" $absdir "*) ;;
+ *)
+ case "$compile_rpath " in
+ *" $absdir "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
esac
fi
- # We need an absolute path.
- case "$dir" in
- [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;;
- *)
- absdir=`cd "$dir" && pwd`
- if test -z "$absdir"; then
- $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
- $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
- absdir="$dir"
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ realname="$2"
+ shift; shift
+ libname=`eval \\$echo \"$libname_spec\"`
+ if test -n "$soname_spec"; then
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
fi
- ;;
- esac
-
- # This is the magic to use -rpath.
- # Skip directories that are in the system default run-time
- # search path, unless they have been requested with -R.
- case " $sys_lib_dlsearch_path " in
- *" $absdir "*) ;;
- *)
- case "$compile_rpath " in
- *" $absdir "*) ;;
- *) compile_rpath="$compile_rpath $absdir"
- esac
- ;;
- esac
- case " $sys_lib_dlsearch_path " in
- *" $libdir "*) ;;
- *)
- case "$finalize_rpath " in
- *" $libdir "*) ;;
- *) finalize_rpath="$finalize_rpath $libdir"
+ # Make a new name for the extract_expsyms_cmds to use
+ newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a"
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ $show "extracting exported symbol list from \`$soname'"
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+ eval cmds=\"$extract_expsyms_cmds\"
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ $show "generating import library for \`$soname'"
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+ eval cmds=\"$old_archive_from_expsyms_cmds\"
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+ # make sure the library variables are pointing to the new library
+ dir=$output_objdir
+ linklib=$newlib
+ fi
+
+ if test $linkmode = prog || test "$mode" != relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ lib_linked=yes
+ case "$hardcode_action" in
+ immediate | unsupported)
+ if test "$hardcode_direct" = no; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = no; then
+ case "$host" in
+ *-*-sunos*) add_shlibpath="$dir" ;;
+ esac
+ add_dir="-L$dir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = no; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ relink)
+ if test "$hardcode_direct" = yes; then
+ add="$dir/$linklib"
+ elif test "$hardcode_minus_L" = yes; then
+ add_dir="-L$dir"
+ add="-l$name"
+ elif test "$hardcode_shlibpath_var" = yes; then
+ add_shlibpath="$dir"
+ add="-l$name"
+ else
+ lib_linked=no
+ fi
+ ;;
+ *) lib_linked=no ;;
esac
- ;;
- esac
- lib_linked=yes
- case "$hardcode_action" in
- immediate | unsupported)
- if test "$hardcode_direct" = no; then
- compile_command="$compile_command $dir/$linklib"
- deplibs="$deplibs $dir/$linklib"
- case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2*)
- dllsearchdir=`cd "$dir" && pwd || echo "$dir"`
- if test -n "$dllsearchpath"; then
- dllsearchpath="$dllsearchpath:$dllsearchdir"
- else
- dllsearchpath="$dllsearchdir"
- fi
- ;;
- esac
- elif test "$hardcode_minus_L" = no; then
- case "$host" in
- *-*-sunos*)
- compile_shlibpath="$compile_shlibpath$dir:"
- ;;
- esac
- case "$compile_command " in
- *" -L$dir "*) ;;
- *) compile_command="$compile_command -L$dir";;
- esac
- compile_command="$compile_command -l$name"
- deplibs="$deplibs -L$dir -l$name"
- elif test "$hardcode_shlibpath_var" = no; then
+ if test "$lib_linked" != yes; then
+ $echo "$modename: configuration error: unsupported hardcode properties"
+ exit 1
+ fi
+
+ if test -n "$add_shlibpath"; then
case ":$compile_shlibpath:" in
- *":$dir:"*) ;;
- *) compile_shlibpath="$compile_shlibpath$dir:";;
+ *":$add_shlibpath:"*) ;;
+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
esac
- compile_command="$compile_command -l$name"
- deplibs="$deplibs -l$name"
+ fi
+ if test $linkmode = prog; then
+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+ test -n "$add" && compile_deplibs="$add $compile_deplibs"
else
- lib_linked=no
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ if test "$hardcode_direct" != yes && \
+ test "$hardcode_minus_L" != yes && \
+ test "$hardcode_shlibpath_var" = yes; then
+ case ":$finalize_shlibpath:" in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ fi
fi
- ;;
+ fi
- relink)
+ if test $linkmode = prog || test "$mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
if test "$hardcode_direct" = yes; then
- compile_command="$compile_command $absdir/$linklib"
- deplibs="$deplibs $absdir/$linklib"
+ add="$libdir/$linklib"
elif test "$hardcode_minus_L" = yes; then
- case "$compile_command " in
- *" -L$absdir "*) ;;
- *) compile_command="$compile_command -L$absdir";;
- esac
- compile_command="$compile_command -l$name"
- deplibs="$deplibs -L$absdir -l$name"
+ add_dir="-L$libdir"
+ add="-l$name"
elif test "$hardcode_shlibpath_var" = yes; then
- case ":$compile_shlibpath:" in
- *":$absdir:"*) ;;
- *) compile_shlibpath="$compile_shlibpath$absdir:";;
+ case ":$finalize_shlibpath:" in
+ *":$libdir:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
esac
- compile_command="$compile_command -l$name"
- deplibs="$deplibs -l$name"
+ add="-l$name"
else
- lib_linked=no
+ # We cannot seem to hardcode it, guess we'll fake it.
+ add_dir="-L$libdir"
+ add="-l$name"
fi
- ;;
-
- *)
- lib_linked=no
- ;;
- esac
- if test "$lib_linked" != yes; then
- $echo "$modename: configuration error: unsupported hardcode properties"
- exit 1
- fi
-
- # Finalize command for both is simple: just hardcode it.
- if test "$hardcode_direct" = yes; then
- finalize_command="$finalize_command $libdir/$linklib"
- elif test "$hardcode_minus_L" = yes; then
- case "$finalize_command " in
- *" -L$libdir "*) ;;
- *) finalize_command="$finalize_command -L$libdir";;
- esac
- finalize_command="$finalize_command -l$name"
- elif test "$hardcode_shlibpath_var" = yes; then
- case ":$finalize_shlibpath:" in
- *":$libdir:"*) ;;
- *) finalize_shlibpath="$finalize_shlibpath$libdir:";;
- esac
- finalize_command="$finalize_command -l$name"
- else
- # We cannot seem to hardcode it, guess we'll fake it.
- case "$finalize_command " in
- *" -L$dir "*) ;;
- *) finalize_command="$finalize_command -L$libdir";;
- esac
- finalize_command="$finalize_command -l$name"
- fi
- else
- # Transform directly to old archives if we don't build new libraries.
- if test -n "$pic_flag" && test -z "$old_library"; then
- $echo "$modename: cannot find static library for \`$arg'" 1>&2
- exit 1
+ if test $linkmode = prog; then
+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+ else
+ test -n "$add_dir" && deplibs="$add_dir $deplibs"
+ test -n "$add" && deplibs="$add $deplibs"
+ fi
fi
-
+ elif test $linkmode = prog; then
# Here we assume that one of hardcode_direct or hardcode_minus_L
# is not unsupported. This is valid on all known static and
# shared platforms.
if test "$hardcode_direct" != unsupported; then
test -n "$old_library" && linklib="$old_library"
- compile_command="$compile_command $dir/$linklib"
- finalize_command="$finalize_command $dir/$linklib"
+ compile_deplibs="$dir/$linklib $compile_deplibs"
+ finalize_deplibs="$dir/$linklib $finalize_deplibs"
else
- case "$compile_command " in
- *" -L$dir "*) ;;
- *) compile_command="$compile_command -L$dir";;
- esac
- compile_command="$compile_command -l$name"
- case "$finalize_command " in
- *" -L$dir "*) ;;
- *) finalize_command="$finalize_command -L$dir";;
- esac
- finalize_command="$finalize_command -l$name"
+ compile_deplibs="-l$name -L$dir $compile_deplibs"
+ finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+ fi
+ elif test "$build_libtool_libs" = yes; then
+ # Not a shared library
+ if test "$deplibs_check_method" != pass_all; then
+ # We're trying link a shared library against a static one
+ # but the system doesn't support it.
+ # Just print a warning and add the library to dependency_libs so
+ # that the program can be linked against the static library.
+ echo
+ echo "*** Warning: This library needs some functionality provided by $lib."
+ echo "*** I have the capability to make that library automatically link in when"
+ echo "*** you link to this library. But I can only do this if you have a"
+ echo "*** shared version of the library, which you do not appear to have."
+ else
+ convenience="$convenience $dir/$old_library"
+ old_convenience="$old_convenience $dir/$old_library"
+ deplibs="$dir/$old_library $deplibs"
+ link_static=yes
fi
fi
- # Add in any libraries that this one depends upon.
- compile_command="$compile_command$dependency_libs"
- finalize_command="$finalize_command$dependency_libs"
- continue
- ;;
+ if test $linkmode = lib; then
+ if test -n "$dependency_libs" &&
+ { test $hardcode_into_libs != yes || test $build_old_libs = yes ||
+ test $link_static = yes; }; then
+ # Extract -R from dependency_libs
+ temp_deplibs=
+ for libdir in $dependency_libs; do
+ case "$libdir" in
+ -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) xrpath="$xrpath $temp_xrpath";;
+ esac;;
+ *) temp_deplibs="$temp_deplibs $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
- # Some other compiler argument.
- *)
- # Unknown arguments in both finalize_command and compile_command need
- # to be aesthetically quoted because they are evaled later.
- arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
- case "$arg" in
- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
- arg="\"$arg\""
- ;;
- esac
- ;;
- esac
+ newlib_search_path="$newlib_search_path $absdir"
+ # Link against this library
+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+ # ... and its dependency_libs
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ newdependency_libs="$deplib $newdependency_libs"
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ tmp_libs="$tmp_libs $deplib"
+ done
- # Now actually substitute the argument into the commands.
- if test -n "$arg"; then
- compile_command="$compile_command $arg"
- finalize_command="$finalize_command $arg"
+ if test $link_all_deplibs != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ case "$deplib" in
+ -L*) path="$deplib" ;;
+ *.la)
+ dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$deplib" && dir="."
+ # We need an absolute path.
+ case "$dir" in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if grep "^installed=no" $deplib > /dev/null; then
+ path="-L$absdir/$objdir"
+ else
+ eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit 1
+ fi
+ if test "$absdir" != "$libdir"; then
+ $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+ fi
+ path="-L$absdir"
+ fi
+ ;;
+ *) continue ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ done
+ fi
+ fi
+ done
+ dependency_libs="$newdependency_libs"
+ if test $pass = dlpreopen; then
+ # Link the dlpreopened libraries before other libraries
+ for deplib in $save_deplibs; do
+ deplibs="$deplib $deplibs"
+ done
fi
- done
-
- if test -n "$prev"; then
- $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
- $echo "$help" 1>&2
- exit 1
- fi
-
- if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
- eval arg=\"$export_dynamic_flag_spec\"
- compile_command="$compile_command $arg"
- finalize_command="$finalize_command $arg"
- fi
-
- oldlibs=
- # calculate the name of the file, without its directory
- outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
- libobjs_save="$libobjs"
-
- case "$output" in
- "")
- $echo "$modename: you must specify an output file" 1>&2
- $echo "$help" 1>&2
- exit 1
- ;;
+ if test $pass != dlopen; then
+ if test $pass != conv; then
+ # Make sure lib_search_path contains only unique directories.
+ lib_search_path=
+ for dir in $newlib_search_path; do
+ case "$lib_search_path " in
+ *" $dir "*) ;;
+ *) lib_search_path="$lib_search_path $dir" ;;
+ esac
+ done
+ newlib_search_path=
+ fi
- *.a | *.lib)
- if test -n "$link_against_libtool_libs"; then
- $echo "$modename: error: cannot link libtool libraries into archives" 1>&2
- exit 1
+ if test "$linkmode,$pass" != "prog,link"; then
+ vars="deplibs"
+ else
+ vars="compile_deplibs finalize_deplibs"
+ fi
+ for var in $vars dependency_libs; do
+ # Make sure that $var contains only unique libraries
+ # and add them in reverse order
+ eval tmp_libs=\"\$$var\"
+ new_libs=
+ for deplib in $tmp_libs; do
+ case "$deplib" in
+ -L*) new_libs="$deplib $new_libs" ;;
+ *)
+ case " $specialdeplibs " in
+ *" $deplib "*) new_libs="$deplib $new_libs" ;;
+ *)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$deplib $new_libs" ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+ done
+ tmp_libs=
+ for deplib in $new_libs; do
+ case "$deplib" in
+ -L*)
+ case " $tmp_libs " in
+ *" $deplib "*) ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ done
+ eval $var=\"$tmp_libs\"
+ done
fi
+ done
+ if test $linkmode = prog; then
+ dlfiles="$newdlfiles"
+ dlprefiles="$newdlprefiles"
+ fi
+ case $linkmode in
+ oldlib)
if test -n "$deplibs"; then
$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
fi
@@ -1586,9 +2301,10 @@ compiler."
# Now set the variables for building old libraries.
build_libtool_libs=no
oldlibs="$output"
+ objs="$objs$old_deplibs"
;;
- *.la)
+ lib)
# Make sure we only generate libraries of the form `libNAME.la'.
case "$outputname" in
lib*)
@@ -1611,26 +2327,20 @@ compiler."
;;
esac
- output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$output_objdir" = "X$output"; then
- output_objdir="$objdir"
- else
- output_objdir="$output_objdir/$objdir"
- fi
-
if test -n "$objs"; then
- $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1
- exit 1
- fi
-
- # How the heck are we supposed to write a wrapper for a shared library?
- if test -n "$link_against_libtool_libs"; then
- $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2
- exit 1
+ if test "$deplibs_check_method" != pass_all; then
+ $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+ exit 1
+ else
+ echo
+ echo "*** Warning: Linking the shared library $output against the non-libtool"
+ echo "*** objects $objs is not portable!"
+ libobjs="$libobjs $objs"
+ fi
fi
- if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
- $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2
+ if test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
fi
set dummy $rpath
@@ -1643,12 +2353,13 @@ compiler."
if test -z "$rpath"; then
if test "$build_libtool_libs" = yes; then
# Building a libtool convenience library.
- libext=al
+ # Some compilers have problems with a `.al' extension so
+ # convenience libraries should have the same extension an
+ # archive normally would.
oldlibs="$output_objdir/$libname.$libext $oldlibs"
build_libtool_libs=convenience
build_old_libs=yes
fi
- dependency_libs="$deplibs"
if test -n "$vinfo"; then
$echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2
@@ -1717,7 +2428,6 @@ compiler."
irix)
major=`expr $current - $age + 1`
- versuffix="$major.$revision"
verstring="sgi$major.$revision"
# Add in all the interfaces that we are compatible with.
@@ -1727,6 +2437,10 @@ compiler."
loop=`expr $loop - 1`
verstring="sgi$major.$iface:$verstring"
done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
;;
linux)
@@ -1767,10 +2481,10 @@ compiler."
;;
windows)
- # Like Linux, but with '-' rather than '.', since we only
- # want one extension on Windows 95.
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
major=`expr $current - $age`
- versuffix="-$major-$age-$revision"
+ versuffix="-$major"
;;
*)
@@ -1797,7 +2511,7 @@ compiler."
versuffix=
verstring=""
fi
-
+
# Check to see if the archive will have undefined symbols.
if test "$allow_undefined" = yes; then
if test "$allow_undefined_flag" = unsupported; then
@@ -1809,30 +2523,27 @@ compiler."
# Don't allow undefined symbols.
allow_undefined_flag="$no_undefined_flag"
fi
-
- dependency_libs="$deplibs"
- case "$host" in
- *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
- # these systems don't actually have a c library (as such)!
- ;;
- *)
- # Add libc to deplibs on all other systems.
- deplibs="$deplibs -lc"
- ;;
- esac
fi
- # Create the output directory, or remove our outputs if we need to.
- if test -d $output_objdir; then
- $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*"
- $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*
- else
- $show "$mkdir $output_objdir"
- $run $mkdir $output_objdir
- status=$?
- if test $status -ne 0 && test ! -d $output_objdir; then
- exit $status
- fi
+ if test "$mode" != relink; then
+ # Remove our outputs, but don't remove object files since they
+ # may have been created when compiling PIC objects.
+ removelist=
+ tempremovelist=`echo "$output_objdir/*"`
+ for p in $tempremovelist; do
+ case "$p" in
+ *.$objext)
+ ;;
+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+ removelist="$removelist $p"
+ ;;
+ *) ;;
+ esac
+ done
+ if test -n "$removelist"; then
+ $show "${rm}r $removelist"
+ $run ${rm}r $removelist
+ fi
fi
# Now set the variables for building old libraries.
@@ -1843,7 +2554,63 @@ compiler."
oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
fi
+ # Eliminate all temporary directories.
+ for path in $uninst_path; do
+ lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'`
+ deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'`
+ dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'`
+ done
+
+ if test -n "$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+ temp_xrpath=
+ for libdir in $xrpath; do
+ temp_xrpath="$temp_xrpath -R$libdir"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir" ;;
+ esac
+ done
+ if test $hardcode_into_libs != yes || test $build_old_libs = yes; then
+ dependency_libs="$temp_xrpath $dependency_libs"
+ fi
+ fi
+
+ # Make sure dlfiles contains only unique files that won't be dlpreopened
+ old_dlfiles="$dlfiles"
+ dlfiles=
+ for lib in $old_dlfiles; do
+ case " $dlprefiles $dlfiles " in
+ *" $lib "*) ;;
+ *) dlfiles="$dlfiles $lib" ;;
+ esac
+ done
+
+ # Make sure dlprefiles contains only unique files
+ old_dlprefiles="$dlprefiles"
+ dlprefiles=
+ for lib in $old_dlprefiles; do
+ case "$dlprefiles " in
+ *" $lib "*) ;;
+ *) dlprefiles="$dlprefiles $lib" ;;
+ esac
+ done
+
if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case "$host" in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *)
+ # Add libc to deplibs on all other systems if necessary.
+ if test $build_libtool_need_lc = "yes"; then
+ deplibs="$deplibs -lc"
+ fi
+ ;;
+ esac
+ fi
+
# Transform deplibs into only deplibs that can be linked in shared.
name_save=$name
libname_save=$libname
@@ -1877,7 +2644,7 @@ compiler."
int main() { return 0; }
EOF
$rm conftest
- $CC -o conftest conftest.c $deplibs
+ $LTCC -o conftest conftest.c $deplibs
if test $? -eq 0 ; then
ldd_output=`ldd conftest`
for i in $deplibs; do
@@ -1910,7 +2677,7 @@ EOF
# If $name is empty we are operating on a -L argument.
if test "$name" != "" ; then
$rm conftest
- $CC -o conftest conftest.c $i
+ $LTCC -o conftest conftest.c $i
# Did it work?
if test $? -eq 0 ; then
ldd_output=`ldd conftest`
@@ -1944,19 +2711,19 @@ EOF
;;
file_magic*)
set dummy $deplibs_check_method
- file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`"
+ file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
for a_deplib in $deplibs; do
name="`expr $a_deplib : '-l\(.*\)'`"
# If $name is empty we are operating on a -L argument.
if test "$name" != "" ; then
libname=`eval \\$echo \"$libname_spec\"`
- for i in $lib_search_path; do
+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
for potent_lib in $potential_libs; do
# Follow soft links.
if ls -lLd "$potent_lib" 2>/dev/null \
| grep " -> " >/dev/null; then
- continue
+ continue
fi
# The statement above tries to avoid entering an
# endless loop below, in case of cyclic links.
@@ -2051,9 +2818,64 @@ EOF
library_names=
old_library=
dlname=
-
+
# Test again, we may have decided not to build it any more
if test "$build_libtool_libs" = yes; then
+ if test $hardcode_into_libs = yes; then
+ # Hardcode the library paths
+ hardcode_libdirs=
+ dep_rpath=
+ rpath="$finalize_rpath"
+ test "$mode" != relink && rpath="$compile_rpath$rpath"
+ for libdir in $rpath; do
+ if test -n "$hardcode_libdir_flag_spec"; then
+ if test -n "$hardcode_libdir_separator"; then
+ if test -z "$hardcode_libdirs"; then
+ hardcode_libdirs="$libdir"
+ else
+ # Just accumulate the unique libdirs.
+ case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in
+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ dep_rpath="$dep_rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ done
+ # Substitute the hardcoded libdirs into the rpath.
+ if test -n "$hardcode_libdir_separator" &&
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+ fi
+ if test -n "$runpath_var" && test -n "$perm_rpath"; then
+ # We should set the runpath_var.
+ rpath=
+ for dir in $perm_rpath; do
+ rpath="$rpath$dir:"
+ done
+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+ fi
+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+ fi
+
+ shlibpath="$finalize_shlibpath"
+ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+ if test -n "$shlibpath"; then
+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+ fi
+
# Get the real and link names of the library.
eval library_names=\"$library_names_spec\"
set dummy $library_names
@@ -2072,22 +2894,22 @@ EOF
linknames="$linknames $link"
done
- # Ensure that we have .o objects for linkers which dislike .lo
- # (e.g. aix) in case we are running --disable-static
- for obj in $libobjs; do
- xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$xdir" = "X$obj"; then
- xdir="."
- else
- xdir="$xdir"
- fi
- baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
- if test ! -f $xdir/$oldobj; then
- $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
- $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
- fi
- done
+# # Ensure that we have .o objects for linkers which dislike .lo
+# # (e.g. aix) in case we are running --disable-static
+# for obj in $libobjs; do
+# xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+# if test "X$xdir" = "X$obj"; then
+# xdir="."
+# else
+# xdir="$xdir"
+# fi
+# baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+# oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+# if test ! -f $xdir/$oldobj && test "$baseobj" != "$oldobj"; then
+# $show "(cd $xdir && ${LN_S} $baseobj $oldobj)"
+# $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $?
+# fi
+# done
# Use standard objects if they are pic
test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
@@ -2126,8 +2948,8 @@ EOF
gentop="$output_objdir/${outputname}x"
$show "${rm}r $gentop"
$run ${rm}r "$gentop"
- $show "mkdir $gentop"
- $run mkdir "$gentop"
+ $show "$mkdir $gentop"
+ $run $mkdir "$gentop"
status=$?
if test $status -ne 0 && test ! -d "$gentop"; then
exit $status
@@ -2145,8 +2967,8 @@ EOF
$show "${rm}r $xdir"
$run ${rm}r "$xdir"
- $show "mkdir $xdir"
- $run mkdir "$xdir"
+ $show "$mkdir $xdir"
+ $run $mkdir "$xdir"
status=$?
if test $status -ne 0 && test ! -d "$xdir"; then
exit $status
@@ -2154,14 +2976,19 @@ EOF
$show "(cd $xdir && $AR x $xabs)"
$run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
- libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+ libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
done
fi
fi
if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
eval flag=\"$thread_safe_flag_spec\"
- linkopts="$linkopts $flag"
+ linker_flags="$linker_flags $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
fi
# Do each of the archive commands.
@@ -2178,6 +3005,12 @@ EOF
done
IFS="$save_ifs"
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+ exit 0
+ fi
+
# Create links to the real library.
for linkname in $linknames; do
if test "$realname" != "$linkname"; then
@@ -2194,12 +3027,7 @@ EOF
fi
;;
- *.lo | *.o | *.obj)
- if test -n "$link_against_libtool_libs"; then
- $echo "$modename: error: cannot link libtool libraries into objects" 1>&2
- exit 1
- fi
-
+ obj)
if test -n "$deplibs"; then
$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
fi
@@ -2226,7 +3054,7 @@ EOF
case "$output" in
*.lo)
- if test -n "$objs"; then
+ if test -n "$objs$old_deplibs"; then
$echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
exit 1
fi
@@ -2250,7 +3078,7 @@ EOF
gentop=
# reload_cmds runs $LD directly, so let us get rid of
# -Wl from whole_archive_flag_spec
- wl=
+ wl=
if test -n "$convenience"; then
if test -n "$whole_archive_flag_spec"; then
@@ -2259,8 +3087,8 @@ EOF
gentop="$output_objdir/${obj}x"
$show "${rm}r $gentop"
$run ${rm}r "$gentop"
- $show "mkdir $gentop"
- $run mkdir "$gentop"
+ $show "$mkdir $gentop"
+ $run $mkdir "$gentop"
status=$?
if test $status -ne 0 && test ! -d "$gentop"; then
exit $status
@@ -2278,8 +3106,8 @@ EOF
$show "${rm}r $xdir"
$run ${rm}r "$xdir"
- $show "mkdir $xdir"
- $run mkdir "$xdir"
+ $show "$mkdir $xdir"
+ $run $mkdir "$xdir"
status=$?
if test $status -ne 0 && test ! -d "$xdir"; then
exit $status
@@ -2287,13 +3115,13 @@ EOF
$show "(cd $xdir && $AR x $xabs)"
$run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
- reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP`
+ reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
done
fi
fi
# Create the old-style object.
- reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs"
+ reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
output="$obj"
eval cmds=\"$reload_cmds\"
@@ -2323,12 +3151,12 @@ EOF
# Create an invalid libtool object if no PIC, so that we don't
# accidentally link it into a program.
- $show "echo timestamp > $libobj"
- $run eval "echo timestamp > $libobj" || exit $?
+ # $show "echo timestamp > $libobj"
+ # $run eval "echo timestamp > $libobj" || exit $?
exit 0
fi
- if test -n "$pic_flag"; then
+ if test -n "$pic_flag" || test "$pic_mode" != default; then
# Only do commands if we really have different PIC objects.
reload_objs="$libobjs $reload_conv_objs"
output="$libobj"
@@ -2340,20 +3168,20 @@ EOF
$run eval "$cmd" || exit $?
done
IFS="$save_ifs"
- else
- # Just create a symlink.
- $show $rm $libobj
- $run $rm $libobj
- xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$xdir" = "X$libobj"; then
- xdir="."
- else
- xdir="$xdir"
- fi
- baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
- oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
- $show "(cd $xdir && $LN_S $oldobj $baseobj)"
- $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
+# else
+# # Just create a symlink.
+# $show $rm $libobj
+# $run $rm $libobj
+# xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'`
+# if test "X$xdir" = "X$libobj"; then
+# xdir="."
+# else
+# xdir="$xdir"
+# fi
+# baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'`
+# oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"`
+# $show "(cd $xdir && $LN_S $oldobj $baseobj)"
+# $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $?
fi
if test -n "$gentop"; then
@@ -2364,8 +3192,7 @@ EOF
exit 0
;;
- # Anything else should be a program.
- *)
+ prog)
if test -n "$vinfo"; then
$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
fi
@@ -2375,20 +3202,19 @@ EOF
fi
if test "$preload" = yes; then
- if test "$dlopen" = unknown && test "$dlopen_self" = unknown &&
+ if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
test "$dlopen_self_static" = unknown; then
$echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
- fi
+ fi
fi
-
+
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$finalize_command $finalize_deplibs"
+
if test -n "$rpath$xrpath"; then
# If the user specified any rpath flags, then add them.
for libdir in $rpath $xrpath; do
# This is the magic to use -rpath.
- case "$compile_rpath " in
- *" $libdir "*) ;;
- *) compile_rpath="$compile_rpath $libdir" ;;
- esac
case "$finalize_rpath " in
*" $libdir "*) ;;
*) finalize_rpath="$finalize_rpath $libdir" ;;
@@ -2424,6 +3250,14 @@ EOF
*) perm_rpath="$perm_rpath $libdir" ;;
esac
fi
+ case "$host" in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ case ":$dllsearchpath:" in
+ *":$libdir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+ ;;
+ esac
done
# Substitute the hardcoded libdirs into the rpath.
if test -n "$hardcode_libdir_separator" &&
@@ -2469,29 +3303,6 @@ EOF
fi
finalize_rpath="$rpath"
- output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$output_objdir" = "X$output"; then
- output_objdir="$objdir"
- else
- output_objdir="$output_objdir/$objdir"
- fi
-
- # Create the binary in the object directory, then wrap it.
- if test ! -d $output_objdir; then
- $show "$mkdir $output_objdir"
- $run $mkdir $output_objdir
- status=$?
- if test $status -ne 0 && test ! -d $output_objdir; then
- exit $status
- fi
- fi
-
- if test -n "$libobjs" && test "$build_old_libs" = yes; then
- # Transform all the library objects into standard objects.
- compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
- fi
-
dlsyms=
if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
if test -n "$NM" && test -n "$global_symbol_pipe"; then
@@ -2534,7 +3345,7 @@ extern \"C\" {
test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
# Add our own program objects to the symbol list.
- progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ progfiles="$objs$old_deplibs"
for arg in $progfiles; do
$show "extracting global C symbols from \`$arg'"
$run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
@@ -2544,7 +3355,7 @@ extern \"C\" {
$run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
$run eval '$mv "$nlist"T "$nlist"'
fi
-
+
if test -n "$export_symbols_regex"; then
$run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T'
$run eval '$mv "$nlist"T "$nlist"'
@@ -2639,21 +3450,21 @@ static const void *lt_preloaded_setup() {
# linked before any other PIC object. But we must not use
# pic_flag when linking with -static. The problem exists in
# FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
- *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
case "$compile_command " in
*" -static "*) ;;
- *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";;
+ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
esac;;
*-*-hpux*)
case "$compile_command " in
*" -static "*) ;;
- *) pic_flag_for_symtable=" $pic_flag -DPIC";;
+ *) pic_flag_for_symtable=" $pic_flag";;
esac
esac
# Now compile the dynamic symbol file.
- $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
- $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+ $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+ $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
# Clean up the generated files.
$show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
@@ -2678,7 +3489,7 @@ static const void *lt_preloaded_setup() {
finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
fi
- if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then
+ if test $need_relink = no || test "$build_libtool_libs" != yes; then
# Replace the output file specification.
compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
link_command="$compile_command$compile_rpath"
@@ -2687,7 +3498,7 @@ static const void *lt_preloaded_setup() {
$show "$link_command"
$run eval "$link_command"
status=$?
-
+
# Delete the generated files.
if test -n "$dlsyms"; then
$show "$rm $output_objdir/${outputname}S.${objext}"
@@ -2743,11 +3554,24 @@ static const void *lt_preloaded_setup() {
fi
fi
+ if test "$no_install" = yes; then
+ # We don't need to create a wrapper script.
+ link_command="$compile_var$compile_command$compile_rpath"
+ # Replace the output file specification.
+ link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $run $rm $output
+ # Link the executable and exit
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+ exit 0
+ fi
+
if test "$hardcode_action" = relink; then
# Fast installation is not supported
link_command="$compile_var$compile_command$compile_rpath"
relink_command="$finalize_var$finalize_command$finalize_rpath"
-
+
$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
$echo "$modename: \`$output' will be relinked during installation" 1>&2
else
@@ -2767,7 +3591,7 @@ static const void *lt_preloaded_setup() {
# Replace the output file specification.
link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
-
+
# Delete the old output files.
$run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
@@ -2779,6 +3603,18 @@ static const void *lt_preloaded_setup() {
# Quote the relink command for shipping.
if test -n "$relink_command"; then
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ relink_command="cd `pwd`; $relink_command"
relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
fi
@@ -2829,7 +3665,7 @@ relink_command=\"$relink_command\"
# This environment variable determines our operation mode.
if test \"\$libtool_install_magic\" = \"$magic\"; then
# install mode needs the following variable:
- link_against_libtool_libs='$link_against_libtool_libs'
+ uninst_deplibs='$uninst_deplibs'
else
# When we are sourced in execute mode, \$file and \$echo are already set.
if test \"\$libtool_execute_magic\" != \"$magic\"; then
@@ -2862,7 +3698,7 @@ else
# If there was a directory component, then change thisdir.
if test \"x\$destdir\" != \"x\$file\"; then
case \"\$destdir\" in
- [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;;
+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
*) thisdir=\"\$thisdir/\$destdir\" ;;
esac
fi
@@ -2880,7 +3716,7 @@ else
echo >> $output "\
program=lt-'$outputname'
progdir=\"\$thisdir/$objdir\"
-
+
if test ! -f \"\$progdir/\$program\" || \\
{ file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\
test \"X\$file\" != \"X\$progdir/\$program\"; }; then
@@ -2897,7 +3733,7 @@ else
# relink executable if necessary
if test -n \"\$relink_command\"; then
- if (cd \"\$thisdir\" && eval \$relink_command); then :
+ if (eval \$relink_command); then :
else
$rm \"\$progdir/\$file\"
exit 1
@@ -2947,13 +3783,21 @@ else
# Run the actual program with our arguments.
"
case $host in
- *-*-cygwin* | *-*-mingw | *-*-os2*)
- # win32 systems need to use the prog path for dll
- # lookup to work
+ # win32 systems need to use the prog path for dll
+ # lookup to work
+ *-*-cygwin* | *-*-pw32*)
+ $echo >> $output "\
+ exec \$progdir/\$program \${1+\"\$@\"}
+"
+ ;;
+
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2*)
$echo >> $output "\
exec \$progdir\\\\\$program \${1+\"\$@\"}
"
;;
+
*)
$echo >> $output "\
# Export the path to the program.
@@ -2995,7 +3839,7 @@ fi\
oldobjs="$libobjs_save"
build_libtool_libs=no
else
- oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`
+ oldobjs="$objs$old_deplibs $non_pic_objects"
fi
addlibs="$old_convenience"
fi
@@ -3004,14 +3848,14 @@ fi\
gentop="$output_objdir/${outputname}x"
$show "${rm}r $gentop"
$run ${rm}r "$gentop"
- $show "mkdir $gentop"
- $run mkdir "$gentop"
+ $show "$mkdir $gentop"
+ $run $mkdir "$gentop"
status=$?
if test $status -ne 0 && test ! -d "$gentop"; then
exit $status
fi
generated="$generated $gentop"
-
+
# Add in members from convenience archives.
for xlib in $addlibs; do
# Extract the objects.
@@ -3024,8 +3868,8 @@ fi\
$show "${rm}r $xdir"
$run ${rm}r "$xdir"
- $show "mkdir $xdir"
- $run mkdir "$xdir"
+ $show "$mkdir $xdir"
+ $run $mkdir "$xdir"
status=$?
if test $status -ne 0 && test ! -d "$xdir"; then
exit $status
@@ -3033,7 +3877,7 @@ fi\
$show "(cd $xdir && $AR x $xabs)"
$run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
- oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
+ oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print | $NL2SP`
done
fi
@@ -3041,23 +3885,23 @@ fi\
if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
eval cmds=\"$old_archive_from_new_cmds\"
else
- # Ensure that we have .o objects in place in case we decided
- # not to build a shared library, and have fallen back to building
- # static libs even though --disable-static was passed!
- for oldobj in $oldobjs; do
- if test ! -f $oldobj; then
- xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
- if test "X$xdir" = "X$oldobj"; then
- xdir="."
- else
- xdir="$xdir"
- fi
- baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
- obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
- $show "(cd $xdir && ${LN_S} $obj $baseobj)"
- $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
- fi
- done
+# # Ensure that we have .o objects in place in case we decided
+# # not to build a shared library, and have fallen back to building
+# # static libs even though --disable-static was passed!
+# for oldobj in $oldobjs; do
+# if test ! -f $oldobj; then
+# xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'`
+# if test "X$xdir" = "X$oldobj"; then
+# xdir="."
+# else
+# xdir="$xdir"
+# fi
+# baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'`
+# obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"`
+# $show "(cd $xdir && ${LN_S} $obj $baseobj)"
+# $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $?
+# fi
+# done
eval cmds=\"$old_archive_cmds\"
fi
@@ -3082,13 +3926,20 @@ fi\
test "$build_old_libs" = yes && old_library="$libname.$libext"
$show "creating $output"
- if test -n "$xrpath"; then
- temp_xrpath=
- for libdir in $xrpath; do
- temp_xrpath="$temp_xrpath -R$libdir"
- done
- dependency_libs="$temp_xrpath $dependency_libs"
- fi
+ # Preserve any variables that may affect compiler behavior
+ for var in $variables_saved_for_relink; do
+ if eval test -z \"\${$var+set}\"; then
+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+ elif eval var_value=\$$var; test -z "$var_value"; then
+ relink_command="$var=; export $var; $relink_command"
+ else
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ # Quote the link command for shipping.
+ relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args"
+ relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
# Only create the output if not a dry run.
if test -z "$run"; then
@@ -3098,6 +3949,45 @@ fi\
break
fi
output="$output_objdir/$outputname"i
+ # Replace all uninstalled libtool libraries with the installed ones
+ newdependency_libs=
+ for deplib in $dependency_libs; do
+ case "$deplib" in
+ *.la)
+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit 1
+ fi
+ newdependency_libs="$newdependency_libs $libdir/$name"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+ for lib in $dlfiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit 1
+ fi
+ newdlfiles="$newdlfiles $libdir/$name"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit 1
+ fi
+ newdlprefiles="$newdlprefiles $libdir/$name"
+ done
+ dlprefiles="$newdlprefiles"
fi
$rm $output
$echo > $output "\
@@ -3127,16 +4017,23 @@ revision=$revision
# Is this an already installed library?
installed=$installed
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
# Directory that this library needs to be installed in:
-libdir='$install_libdir'\
-"
+libdir='$install_libdir'"
+ if test "$installed" = no && test $need_relink = yes; then
+ $echo >> $output "\
+relink_command=\"$relink_command\""
+ fi
done
fi
# Do a symbolic link so that the libtool archive can be found in
# LD_LIBRARY_PATH before the program is installed.
$show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
- $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $?
+ $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
;;
esac
exit 0
@@ -3148,7 +4045,9 @@ libdir='$install_libdir'\
# There may be an optional sh(1) argument at the beginning of
# install_prog (especially on Windows NT).
- if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then
+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+ # Allow the use of GNU shtool's install command.
+ $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
# Aesthetically quote it.
arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
case "$arg" in
@@ -3293,7 +4192,7 @@ libdir='$install_libdir'\
# Do each installation.
case "$file" in
- *.a | *.lib)
+ *.$libext)
# Do the static libraries later.
staticlibs="$staticlibs $file"
;;
@@ -3309,6 +4208,7 @@ libdir='$install_libdir'\
library_names=
old_library=
+ relink_command=
# If there is no directory component, then add one.
case "$file" in
*/* | *\\*) . $file ;;
@@ -3329,10 +4229,20 @@ libdir='$install_libdir'\
esac
fi
- dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/"
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
test "X$dir" = "X$file/" && dir=
dir="$dir$objdir"
+ if test -n "$relink_command"; then
+ $echo "$modename: warning: relinking \`$file'" 1>&2
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ continue
+ fi
+ fi
+
# See the names of the shared library.
set dummy $library_names
if test -n "$2"; then
@@ -3340,9 +4250,16 @@ libdir='$install_libdir'\
shift
shift
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
# Install the shared library and build the symlinks.
- $show "$install_prog $dir/$realname $destdir/$realname"
- $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $?
+ $show "$install_prog $dir/$srcname $destdir/$realname"
+ $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+ if test -n "$stripme" && test -n "$striplib"; then
+ $show "$striplib $destdir/$realname"
+ $run eval "$striplib $destdir/$realname" || exit $?
+ fi
if test $# -gt 0; then
# Delete the old symlinks, and create new ones.
@@ -3393,7 +4310,7 @@ libdir='$install_libdir'\
*.lo)
staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
;;
- *.o | *.obj)
+ *.$objext)
staticdest="$destfile"
destfile=
;;
@@ -3432,7 +4349,7 @@ libdir='$install_libdir'\
# Do a test to see if this is really a libtool program.
if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
- link_against_libtool_libs=
+ uninst_deplibs=
relink_command=
# If there is no directory component, then add one.
@@ -3442,13 +4359,13 @@ libdir='$install_libdir'\
esac
# Check the variables that should have been set.
- if test -z "$link_against_libtool_libs"; then
+ if test -z "$uninst_deplibs"; then
$echo "$modename: invalid libtool wrapper script \`$file'" 1>&2
exit 1
fi
finalize=yes
- for lib in $link_against_libtool_libs; do
+ for lib in $uninst_deplibs; do
# Check to see that each library is installed.
libdir=
if test -f "$lib"; then
@@ -3458,13 +4375,20 @@ libdir='$install_libdir'\
*) . ./$lib ;;
esac
fi
- libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`"
+ libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
if test -n "$libdir" && test ! -f "$libfile"; then
$echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
finalize=no
fi
done
+ relink_command=
+ # If there is no directory component, then add one.
+ case "$file" in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
outputname=
if test "$fast_install" = no && test -n "$relink_command"; then
if test "$finalize" = yes && test -z "$run"; then
@@ -3476,6 +4400,7 @@ libdir='$install_libdir'\
$echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
continue
fi
+ file=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
outputname="$tmpdir/$file"
# Replace the output file specification.
relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
@@ -3513,6 +4438,11 @@ libdir='$install_libdir'\
$show "$install_prog $file $oldlib"
$run eval "$install_prog \$file \$oldlib" || exit $?
+ if test -n "$stripme" && test -n "$striplib"; then
+ $show "$old_striplib $oldlib"
+ $run eval "$old_striplib $oldlib" || exit $?
+ fi
+
# Do each command in the postinstall commands.
eval cmds=\"$old_postinstall_cmds\"
IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
@@ -3726,8 +4656,8 @@ libdir='$install_libdir'\
if test -z "$run"; then
if test -n "$shlibpath_var"; then
- # Export the shlibpath_var.
- eval "export $shlibpath_var"
+ # Export the shlibpath_var.
+ eval "export $shlibpath_var"
fi
# Restore saved enviroment variables
@@ -3746,20 +4676,24 @@ libdir='$install_libdir'\
else
# Display what would be done.
if test -n "$shlibpath_var"; then
- eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
- $echo "export $shlibpath_var"
+ eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+ $echo "export $shlibpath_var"
fi
$echo "$cmd$args"
exit 0
fi
;;
- # libtool uninstall mode
- uninstall)
- modename="$modename: uninstall"
+ # libtool clean and uninstall mode
+ clean | uninstall)
+ modename="$modename: $mode"
rm="$nonopt"
files=
+ # This variable tells wrapper scripts just to set variables rather
+ # than running their programs.
+ libtool_install_magic="$magic"
+
for arg
do
case "$arg" in
@@ -3776,8 +4710,14 @@ libdir='$install_libdir'\
for file in $files; do
dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
- test "X$dir" = "X$file" && dir=.
+ if test "X$dir" = "X$file"; then
+ dir=.
+ objdir="$objdir"
+ else
+ objdir="$dir/$objdir"
+ fi
name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ test $mode = uninstall && objdir="$dir"
rmfiles="$file"
@@ -3789,55 +4729,77 @@ libdir='$install_libdir'\
# Delete the libtool libraries and symlinks.
for n in $library_names; do
- rmfiles="$rmfiles $dir/$n"
+ rmfiles="$rmfiles $objdir/$n"
done
- test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library"
-
- $show "$rm $rmfiles"
- $run $rm $rmfiles
-
- if test -n "$library_names"; then
- # Do each command in the postuninstall commands.
- eval cmds=\"$postuninstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+ test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+ if test $mode = uninstall; then
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ eval cmds=\"$postuninstall_cmds\"
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd"
+ done
IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd"
- done
- IFS="$save_ifs"
- fi
+ fi
- if test -n "$old_library"; then
- # Do each command in the old_postuninstall commands.
- eval cmds=\"$old_postuninstall_cmds\"
- IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
- for cmd in $cmds; do
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ eval cmds=\"$old_postuninstall_cmds\"
+ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd"
+ done
IFS="$save_ifs"
- $show "$cmd"
- $run eval "$cmd"
- done
- IFS="$save_ifs"
+ fi
+ # FIXME: should reinstall the best remaining shared library.
fi
-
- # FIXME: should reinstall the best remaining shared library.
fi
;;
*.lo)
- if test "$build_old_libs" = yes; then
- oldobj=`$echo "X$name" | $Xsed -e "$lo2o"`
- rmfiles="$rmfiles $dir/$oldobj"
+ # Possibly a libtool object, so verify it.
+ if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+ # Read the .lo file
+ . ./$file
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" \
+ && test "$pic_object" != none; then
+ rmfiles="$rmfiles $dir/$pic_object"
+ fi
+
+ # Add non-PIC object to the list of files to remove.
+ if test -n "$non_pic_object" \
+ && test "$non_pic_object" != none; then
+ rmfiles="$rmfiles $dir/$non_pic_object"
+ fi
fi
- $show "$rm $rmfiles"
- $run $rm $rmfiles
;;
*)
- $show "$rm $rmfiles"
- $run $rm $rmfiles
+ # Do a test to see if this is a libtool program.
+ if test $mode = clean &&
+ (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ relink_command=
+ . $dir/$file
+
+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ rmfiles="$rmfiles $objdir/lt-$name"
+ fi
+ fi
;;
esac
+ $show "$rm $rmfiles"
+ $run $rm $rmfiles
done
exit 0
;;
@@ -3870,10 +4832,12 @@ Provide generalized library-building support services.
--mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
--quiet same as \`--silent'
--silent don't print informational messages
+ --tag=TAG use configuration variables from tag TAG
--version print version information
MODE must be one of the following:
+ clean remove files from the build directory
compile compile a source file into a libtool object
execute automatically set library path, then run a program
finish complete the installation of libtool libraries
@@ -3886,6 +4850,20 @@ a more detailed description of MODE."
exit 0
;;
+clean)
+ $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+ ;;
+
compile)
$echo \
"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
@@ -3974,6 +4952,8 @@ The following components of LINK-COMMAND are treated specially:
-LLIBDIR search LIBDIR for required installed libraries
-lNAME OUTPUT-FILE requires the installed library libNAME
-module build a library that can dlopened
+ -no-fast-install disable the fast-install mode
+ -no-install link a not-installable executable
-no-undefined declare that a library does not refer to external symbols
-o OUTPUT-FILE create OUTPUT-FILE from the specified objects
-release RELEASE specify package release information
@@ -4026,6 +5006,26 @@ $echo "Try \`$modename --help' for more information about other modes."
exit 0
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries. Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them. This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration. But we'll never go from static-only to shared-only.
+
+### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+### END LIBTOOL TAG CONFIG: disable-shared
+
+### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+### END LIBTOOL TAG CONFIG: disable-static
+
# Local Variables:
# mode:shell-script
# sh-indentation:2
diff --git a/contrib/binutils/md5.sum b/contrib/binutils/md5.sum
new file mode 100644
index 0000000..1b004f4
--- /dev/null
+++ b/contrib/binutils/md5.sum
@@ -0,0 +1,2992 @@
+0636e73ff0215e8d672dc4c32c317bb3 COPYING
+f30a9716ef3762e3467a2f62bf790f0a COPYING.LIB
+ee0a5e2f900180a82dc841d234919ea1 Makefile.in
+07c33a285703b40cd6f93a478e97e03b README
+5792afcc52b3df1859cbb6394e8be46a bfd/ChangeLog
+0636e73ff0215e8d672dc4c32c317bb3 bfd/COPYING
+24fd1168aee832d6b21aa720f5a90749 bfd/doc/ChangeLog
+1e5a6fbefd1aaed4433ace8afce78961 bfd/doc/Makefile.am
+abc8d197787acd4344dad4117f6ed9c1 bfd/doc/Makefile.in
+0fbe144d8d1782e0379db812371c6a57 bfd/doc/aoutx.texi
+6f34186ad28a5b230efc088a709560de bfd/doc/archive.texi
+d77fc5ac447524c6d9aedfbe6401d0c0 bfd/doc/archures.texi
+ccd7183071feb33a6f65d3ea8f88ff23 bfd/doc/bfd.info
+a31bdf4569c4f1cd2745113b3083aa30 bfd/doc/bfd.info-1
+a2d32f008c380e7d5cc76edd52d01c34 bfd/doc/bfd.info-2
+711d156bbf41f41ea61a000f9f4b9ca9 bfd/doc/bfd.info-3
+5391edee580fb344b751b32931175389 bfd/doc/bfd.info-4
+8836abc0e97737405d36f4c00b28ce94 bfd/doc/bfd.info-5
+33ed65a4ba35b35445e5684b8454a0b9 bfd/doc/bfd.info-6
+9fe03450e18a9de5dcbb56cf5fff42b3 bfd/doc/bfd.info-7
+197659f41f9c7c7001bf059ae38cc957 bfd/doc/bfd.texinfo
+fa0e42fa8fae6bffec3e7d1f35cdea14 bfd/doc/bfdint.texi
+8b6ecc6029ed69110c2fd06605bbb028 bfd/doc/bfdsumm.texi
+aeb854f56071a92ed682ea3a47ef412e bfd/doc/bfdt.texi
+a08da988e834eaa44ce036daed384f3f bfd/doc/cache.texi
+c18ee97c1a09c15f59eb0b87acdebdb4 bfd/doc/chew.c
+9b20193a1b085b49ad22e22a94d7eade bfd/doc/coffcode.texi
+99105e514872b3e0f5eadbc9844efeed bfd/doc/core.texi
+e67d8b07516154c4ddbee2e3bab3d75e bfd/doc/doc.str
+c60b298f07f5a175f2325d48bd009bdb bfd/doc/elf.texi
+d41d8cd98f00b204e9800998ecf8427e bfd/doc/elfcode.texi
+4e84142a7f35ea897af65f69d33fbae5 bfd/doc/format.texi
+1d846f321c1f04f609386d3c31201c93 bfd/doc/hash.texi
+7ac9a36b8a72594048188cd4ee5012dc bfd/doc/init.texi
+e17fcdf3ea8e298f1327ed8c4649a156 bfd/doc/libbfd.texi
+6f212b00766abadea5b686c91c024f16 bfd/doc/linker.texi
+5fa24958e8a60b2f879af658e615ccc0 bfd/doc/makefile.vms
+75adee5262cfe18e955d31dcec3d9a54 bfd/doc/opncls.texi
+5bf597a23995b21bfaefa45638e33df3 bfd/doc/proto.str
+17043729eec09a75b3125dca593db8c3 bfd/doc/reloc.texi
+7bd54200ce59c540898e3b5e5a5aa978 bfd/doc/section.texi
+fd78f14948d36f7fae45d29db7b0d521 bfd/doc/syms.texi
+d193493718f22e2de122b05b741f660b bfd/doc/targets.texi
+5aaa1d12d3db7fddeba0f18d906e89b7 bfd/po/POTFILES.in
+bfb5c178c2404196ab54d7532a61e3d4 bfd/po/Make-in
+445a1c3ee4b5467304d3568fc54a9530 bfd/po/bfd.pot
+6aaeff367ac449364787e94b6db53183 bfd/ChangeLog-9193
+78e72a396e9d529dc2f9e3f6c0eb7efb bfd/ChangeLog-9495
+45851bb85b21afd2c2247c5bd531eda0 bfd/ChangeLog-9697
+3a8b2876879b53a8f247a03416527a48 bfd/ChangeLog-9899
+d618facc3e8ce8bf3d02ba452e1be6ab bfd/MAINTAINERS
+1e671045481dfe9fc67b1d40737d67b9 bfd/Makefile.am
+cd50f918cd88a5ca58773a408ffa461d bfd/Makefile.in
+6455e3c85b31e588ecb75f7d3c945c8d bfd/PORTING
+11627ef87a2a20a3326b87602d051620 bfd/README
+cd26654c6eb30680694867e434e40044 bfd/TODO
+fa9dc5a90d06b56e4fc7388caa0936f2 bfd/acinclude.m4
+93bb2eded5fc0a815ab407903e6688f6 bfd/aclocal.m4
+0171cf1968ae35eb99a5cac661dd7164 bfd/aix386-core.c
+270a572f5690ea3081b8e0f84a13a517 bfd/aout-adobe.c
+2df5e049b195faa120e95373feab5366 bfd/aout-arm.c
+f57dc97a99ea5d45e7928c1b853b6055 bfd/aout-cris.c
+353895f365526f8f4aa8a86a7995c3bb bfd/aout-encap.c
+c26e6ab67e4aaaa00cdcd74d49adea3f bfd/aout-ns32k.c
+3ce216ca1ec6820232cd8f7d692325f7 bfd/aout-sparcle.c
+3a3ce112d376cb0e3d823a42bf13f646 bfd/aout-target.h
+6017a7e76b6da59419824a63c24bdc42 bfd/aout-tic30.c
+96f41ef53815bcf3ef5e80950b2512e5 bfd/aout0.c
+8f34b482bf2e2675fa6aa9c2c493f948 bfd/aout32.c
+1de8148de5adf4e3358437d76b50f03d bfd/aout64.c
+bb421a7d23a28f172075a3b8693075e0 bfd/aoutf1.h
+5cce02a7cc07072c20a90c0ff9983786 bfd/aoutx.h
+a98d05468bf9d8ac297c8d324d970f80 bfd/archive.c
+9f87367ac5cc3f1452c3c9d1f047409b bfd/archures.c
+a139e857e5acf1286e0a0e0f74315a5b bfd/armnetbsd.c
+70635b54d2aa8cd6b4c813185ccbfeea bfd/bfd-in.h
+f1f720232beaf3d2a1689c4870b395ff bfd/bfd-in2.h
+40d6dd16ef3c9474bdceefeb098a015c bfd/bfd.c
+61ca703210714d5c0b952b72d5c7354b bfd/binary.c
+d95c3f844ed278f19b087cb119b0fe60 bfd/bout.c
+093e665e185852ccc47a24dbad79df8a bfd/cache.c
+42e1263df91b7ca62cedd8485d50a6b6 bfd/cf-i386lynx.c
+545c111611d3dddaae8c666293aac89b bfd/cf-m68klynx.c
+405481daefc6a8c8c30955e43515841a bfd/cf-sparclynx.c
+7252cf48e8b7e999e71b54e08a4744d5 bfd/cisco-core.c
+39bc24ff5082722ef80995d234ea1e96 bfd/coff-a29k.c
+0ecb6c326b7e2e009eafb3228be667e9 bfd/coff-alpha.c
+6af89df2ab8adb0408c843048f1b2096 bfd/coff-apollo.c
+5f7a14fe109c300348f47de9bc057254 bfd/coff-arm.c
+33890c97550aad945eef394a4e2c9f6e bfd/coff-aux.c
+de760f696d5f8c579f14b361bcf2b9ea bfd/coff-go32.c
+5d16e2e3dfdcaa62bdb5ca07d7110e6a bfd/coff-h8300.c
+8c2250bfef67896714d4094c09b479b0 bfd/coff-h8500.c
+5dc0bde0258a5de8357e5211625ff396 bfd/coff-i386.c
+551e5dde304269ccf303068575b13d93 bfd/coff-i860.c
+c7d4d4664b1a1528763028db016e7071 bfd/coff-i960.c
+6cabbbe2893c35a1c59f85186cf819f5 bfd/coff-ia64.c
+e3e4fe45fbce868e3f5b5f70b3fb3df7 bfd/coff-m68k.c
+3efd126ce889f2b747e00ee064cb2676 bfd/coff-m88k.c
+50f8724e9d2735a956e6da14eb9cc0df bfd/coff-mcore.c
+0cf3e5ec491375029927bf6ef979a8c4 bfd/coff-mips.c
+6cf398afa1c87480bffa7d8780891465 bfd/coff-pmac.c
+1a49bea5fed10d3061fe5dc4e216ca23 bfd/coff-ppc.c
+58cd309581399359b8a309f86cbc0e67 bfd/coff-rs6000.c
+6eaae180a45d8dd05234da8c4867b018 bfd/coff-sh.c
+083459d4e796bfa696bcf3388c94e785 bfd/coff-sparc.c
+ff09554abd281030f46ccc417c403aa9 bfd/coff-stgo32.c
+0a6bcb90289a5f62cb39fb0ec0858560 bfd/coff-svm68k.c
+da552c34773de7fccba019ba14aca1f4 bfd/coff-tic30.c
+bcf1d3de2874b946601e8ef60dd90b1f bfd/coff-tic54x.c
+3543968fb8554b87362401e8ee57c536 bfd/coff-tic80.c
+f8c6308a039c92faded1d165112668a2 bfd/coff-u68k.c
+3cecb1d6c6d22728607cd05bd229d4dd bfd/coff-w65.c
+0309f979dc3b3ad16a2b94bb6a3ad711 bfd/coff-we32k.c
+a30560480331eced68322c44fcdf5326 bfd/coff-z8k.c
+9bd93ce47021c205b715f2b4551e0cf0 bfd/coff64-rs6000.c
+6a7cee0152dc57b63be3d36501335459 bfd/coffcode.h
+cbd81964f82ebc45764ee0a5727c5c1e bfd/coffgen.c
+39b64229eedb2f58dfbbcf590dda584b bfd/cofflink.c
+2cf64b322caf1289bdd74414b859d8d5 bfd/coffswap.h
+38f77977675db99ae968fd2a28ed4b9b bfd/config.bfd
+f9b0d2a4911efa47c7a13f59fed3b70d bfd/config.in
+c0a59a0a4e74df2485f5b38e09808791 bfd/configure
+a8485b69f68d81f4ef2f29b51bb36d85 bfd/configure.com
+da932a956ba7ad830b729bafd4af4644 bfd/configure.host
+f7031103cfc748c12f68b4fa01e06973 bfd/configure.in
+1afab296535d7f51c0dbdd91ba28d214 bfd/corefile.c
+139083c86ac805539b143c6aa1487703 bfd/cpu-a29k.c
+5b5ed561c128f922e79ebe5d822e67b6 bfd/cpu-alpha.c
+7f6047dda14a6668c611ff7060f6ee91 bfd/cpu-arc.c
+2881c20a285dc270f2e8c0372791d751 bfd/cpu-arm.c
+e643bb5d3d0c9b89c6f9b73d68456d90 bfd/cpu-avr.c
+b0eb72b4c0c276bedc62f176cb29e3f7 bfd/cpu-cris.c
+8912e8d1121d45f8acf81dde7ee11d30 bfd/cpu-d10v.c
+7a7d89b109710f951f825992832fb422 bfd/cpu-d30v.c
+dcae5e6bd49070f3255edc8d19a683ff bfd/cpu-fr30.c
+cfd9fd9cda24ce1e27fb2d88b145ccd4 bfd/cpu-h8300.c
+35ce05155a899e5dd86557beb0c5f94d bfd/cpu-h8500.c
+532c00824aeb3e2459a621a636859e89 bfd/cpu-hppa.c
+65dc94a2ef94b4313179f35b6b9d1334 bfd/cpu-i370.c
+1faf510096f0afadc984ff76819df508 bfd/cpu-i386.c
+b6d0fbb65c82465573f28353a930b3b6 bfd/cpu-i860.c
+0b8dd8cc209b47d2ce98e4552d7a2087 bfd/cpu-i960.c
+3cdb0f3b06793ebba2270212aedf0809 bfd/cpu-ia64-opc.c
+52a4241343f6f7199c4560a637407d1e bfd/cpu-ia64.c
+cdbfa4a9703bf5bfca24f4b7d6bc49a7 bfd/cpu-m10200.c
+088dc28356ff582ebf219d54b28f5dea bfd/cpu-m10300.c
+502b3d6ed3e9561fa037523fd4c4e643 bfd/cpu-m32r.c
+8ea239bc23fc50a75ca68fbb7bd5c411 bfd/cpu-m68hc11.c
+5f6585a0783899916bc3bd9ce42c0624 bfd/cpu-m68hc12.c
+eb61797edf01ea26dcafcf78310c4cd4 bfd/cpu-m68k.c
+0638fa7af072c85659088513c062a192 bfd/cpu-m88k.c
+7c82bdb2281ce9a1a36fcc4d8f8c2a33 bfd/cpu-mcore.c
+292f2ac8628ed19112576dafd6df80da bfd/cpu-mips.c
+1bf48a6239c0e21d6779894905b1aa41 bfd/cpu-ns32k.c
+3d9f28cd363dde6f1185f61000095d08 bfd/cpu-pj.c
+03ac21ac1aad533f43829af7897ebd0f bfd/cpu-powerpc.c
+b3b8559627933c62670841f40f09856f bfd/cpu-rs6000.c
+0e0c7923dfc45c89ad10ce5989852fdb bfd/cpu-sh.c
+36d09ff1d10ffd14d77679dbac5b3a29 bfd/cpu-sparc.c
+4a7876d7cfd8a37c9e37f95d0968e7b4 bfd/cpu-tic30.c
+0f829c2fe21974f7ea58a602ed93c998 bfd/cpu-tic54x.c
+f3d769b1d339a43198bc22b7cc24e3f3 bfd/cpu-tic80.c
+15056c28812d9d4287195f6360bcb802 bfd/cpu-v850.c
+5fb46acfc1e3643c28096aef431920f8 bfd/cpu-vax.c
+b3a34d4ee7a2a75b2243af2b3a59c2fa bfd/cpu-w65.c
+e887789bdc9bd2c9de76b054228d6b08 bfd/cpu-we32k.c
+219ba81ce8cdc79a5f9062a522d7ef6e bfd/cpu-z8k.c
+93fe6ca4c1aa371628fbfa62bcce0d78 bfd/demo64.c
+325284c2aa7c21d58bf3592f16147525 bfd/dep-in.sed
+317b8a4a0cd9eff5c2ce7ed14a9efcb3 bfd/dwarf1.c
+7b66c02855d0d6758fbbeecb5e022e65 bfd/dwarf2.c
+c480143d916eb264abe57ff1912e7aa2 bfd/ecoff.c
+73a1816910138cdd5ed7aa1d442ce873 bfd/ecofflink.c
+db00ffc5b3f7965d10d519a85c224b29 bfd/ecoffswap.h
+30176f18336b2959d6b2f7c8a7dfe5d6 bfd/efi-app-ia32.c
+8ce9d1c26f0f15e534978c90583db3b2 bfd/efi-app-ia64.c
+33440970b3475127ce6528df3e051d1c bfd/elf-bfd.h
+a45567b7ed9963c8917942cfb177f137 bfd/elf-hppa.h
+c90ec44ea00eb27055dcc872d3e55dd4 bfd/elf-m10200.c
+5f94627a6fcc4535f3e70d8f972cf361 bfd/elf-m10300.c
+2b9565d06de3e331cb1a1f21452af4a9 bfd/elf.c
+36bb9364aabb03344d48f81f8135a42d bfd/elf32-arc.c
+a915cff51c5d2b6db98dcff9b54085a9 bfd/elf32-arm.h
+16374e4c15e5569426555429ed147e51 bfd/elf32-avr.c
+696a949581b1e8bb5b3a3720709b2cd1 bfd/elf32-cris.c
+8c42358080db9db764c0a94b21d25682 bfd/elf32-d10v.c
+4253a565eec5a0d23bbd4e036ddf5d17 bfd/elf32-d30v.c
+3d37c60aaf7efe0923f75462184c55d1 bfd/elf32-fr30.c
+e8040020c66e66a42fd98d2bc855e805 bfd/elf32-gen.c
+405b853aa937d38d07c456f0faaa0616 bfd/elf32-hppa.c
+ec09db75cba814782324ffad7d369bc9 bfd/elf32-hppa.h
+60e2613f03ce5296321ac6a52956a7e0 bfd/elf32-i370.c
+a6b3a528747577af04ef78c3f194bdfe bfd/elf32-i386.c
+7839b39c27d81dc506e72795e177a25f bfd/elf32-i860.c
+23688e86a00f0a648a9564841b17c487 bfd/elf32-i960.c
+747bb7c76cc6f871ad702f1ae05cacac bfd/elf32-m32r.c
+18e7f6c6ca38179c3cee8af9315387b6 bfd/elf32-m68hc11.c
+b8c040fe30b395d871f37069061976f9 bfd/elf32-m68hc12.c
+49ae65ca52a2b897503ba7bfe32c7d69 bfd/elf32-m68k.c
+7e81cff07181024b11060035b7b708d8 bfd/elf32-m88k.c
+3f89f0ea70fbe44f760149a274d84496 bfd/elf32-mcore.c
+a6a8aac98f118e8e93943a53ab1932b5 bfd/elf32-mips.c
+670c2263c0ab86cc239b823a3fc702a5 bfd/elf32-pj.c
+d2cc0bd6aefdd1e4f9c40f2449cbf0f8 bfd/elf32-ppc.c
+18f44608c596c17f9b986a18a3c9fa1e bfd/elf32-sh-lin.c
+dbcc0751cfcf02c41bc6cd2b6409c672 bfd/elf32-sh.c
+6af8ec5ddbf253c1ffc8f899024d80c1 bfd/elf32-sparc.c
+72d1bddf3567acd2b2983eed3ed6d4cd bfd/elf32-v850.c
+06662b158950c44ae3bb39b126ba1d6b bfd/elf32.c
+605a74fb90a8de8814893692ddeb8ddf bfd/elf64-alpha.c
+cdfda14b5bf1e42b5b49b0d3e9ecd661 bfd/elf64-gen.c
+2a24c42838e0c052f84cf7ddca54bbc1 bfd/elf64-hppa.c
+4b29c27aa5eb611c00e57b752fab225a bfd/elf64-hppa.h
+a7b3f68b631aef45a5a226f7e3062975 bfd/elf64-mips.c
+9472c8db627c4aee404a3b7640d8bb03 bfd/elf64-sparc.c
+b3c657d58c90bf36ab1047e2389a015c bfd/elf64-x86-64.c
+0df4bff9f99908d451625f14be3dc667 bfd/elf64.c
+4d3687a30883412f59c16393053ce367 bfd/elfarm-nabi.c
+0be070d595a3fe4a4fb1e64d75d61e71 bfd/elfarm-oabi.c
+080a1d9d44792e69952ccabff55cc1fa bfd/elfcode.h
+a6366c382023373da1ad05b3a404d082 bfd/elfcore.h
+3d147916127246be6c68fc13a11461d9 bfd/elflink.c
+b9c633c4a7ee2610ec475ee24133f357 bfd/elflink.h
+81abcbbcf9803fd6280b3f8208c10d4c bfd/elfxx-ia64.c
+320fd555ee47823a3c88f8812619b932 bfd/elfxx-target.h
+d7a2139b217c10cc13c497041e6b10c9 bfd/epoc-pe-arm.c
+f0d32bc7ef625f5ef29b4276da78e78a bfd/epoc-pei-arm.c
+745c501e60fde81c050c64996887e2d6 bfd/format.c
+a713c8fd86e8e08754fcc7d6db16f15b bfd/freebsd.h
+b2971b19fd1797e567461197ceef4e1f bfd/gen-aout.c
+d11068cc2dc8af758bc17bdb90c44aad bfd/genlink.h
+663a6979bd331c91d1385445edeca7b0 bfd/go32stub.h
+df2d0b2cd7ea351218915fa6433a7686 bfd/hash.c
+af2ae39676c5b9e01b062dd610c4d992 bfd/host-aout.c
+178681083bcc5cc8c726317060f90eee bfd/hp300bsd.c
+aaa3035ff8787559080dbca2ee1afb24 bfd/hp300hpux.c
+37b286ff96beb70afaa74d5befc57c81 bfd/hppabsd-core.c
+8e295b71a4113c717a77bfe104adfca1 bfd/hpux-core.c
+c53323084bbf842c3deb66624d6a253b bfd/i386aout.c
+754df0cfd2dee8bbcfdbe1ba5ad312db bfd/i386bsd.c
+08aef48317ae704a73c2759d80d10798 bfd/i386dynix.c
+bd65d18688dc50fd735ed5035a51f70a bfd/i386freebsd.c
+51d3338df48fceb2a0c9be2ea043ac25 bfd/i386linux.c
+a042a5dcd6b26e3ea17ae304a9247980 bfd/i386lynx.c
+e95aded1f1f1074bbae3880786eeb1ef bfd/i386mach3.c
+13c243b932980467680b413b7d7a16c1 bfd/i386msdos.c
+11e74abe5341ae36d5096b074b4d4221 bfd/i386netbsd.c
+52cc59d482b71c55c6720fe2d3b330ea bfd/i386os9k.c
+dbb33ce6453f8037a6282034801f7072 bfd/ieee.c
+5aed97894d74270f2c1560c05e996298 bfd/ihex.c
+a418c29ccd27925a22f4dbc9164077db bfd/init.c
+322d7723aaf41d68135708016383fac1 bfd/irix-core.c
+e249cf21fb469bc32760ced576253a28 bfd/libaout.h
+b301e0b57d93119a83d687f18d32eeac bfd/libbfd-in.h
+db73d4cf33b46980527c31756b8ca2cd bfd/libbfd.c
+7d43a1b4c23b49994d8348ef8e5b9074 bfd/libbfd.h
+facdbf02d39bd735527cadfcea5b9a31 bfd/libcoff-in.h
+6053869d8962be79e9d60405ef1ed4f4 bfd/libcoff.h
+22e4d8af76c93874c666b8a17790764b bfd/libecoff.h
+a0c57b8987755d563eb733f40228780c bfd/libhppa.h
+62b6ada382d6308f4d4d891e6be252f2 bfd/libieee.h
+eea21d604bee15e6c1329661d744265b bfd/libnlm.h
+539a59aa3f6a30ad56a62122d046712a bfd/liboasys.h
+42f5eb734c73d6bfdeb8caea2d39356f bfd/libpei.h
+522b1e9433ad7255a03154b16d79c58c bfd/linker.c
+c807b69e7102ca6e35f1dca0a07567cf bfd/lynx-core.c
+d75e3e751ee121b5c68bc9861c5e015c bfd/m68k4knetbsd.c
+0aee5cebc8dcda52be241ea58d87df1a bfd/m68klinux.c
+56bb5d9f6c547d7ebf043c94c0d10e89 bfd/m68klynx.c
+4106cdd6c5cd6f3ae465e0d234414da9 bfd/m68knetbsd.c
+6445a3bf54c681bbf719edd2fc59c17a bfd/m88kmach3.c
+5de4da6a9169effb512e6ba4d014d420 bfd/makefile.vms
+15d35c8a837ddc83a217e4f2c866459a bfd/mipsbsd.c
+5971cd61d7c10702978519aa5ed41474 bfd/mpw-config.in
+85bd791a2ac9c9d7c2bea1932665d568 bfd/mpw-make.sed
+b9b4e741b71f6641646dc11b275672ec bfd/netbsd-core.c
+2439d322e381e5e6154d8629ea011fed bfd/netbsd.h
+62b7b666874b43cd9cb2f60a2b1a3566 bfd/newsos3.c
+e1f49a6a9c14373aea2150449bf0eec7 bfd/nlm-target.h
+07500cd97cea583188020d5acec51535 bfd/nlm.c
+2f7b7e0f9140a3689ac7da78fcfa523f bfd/nlm32-alpha.c
+e637d4d8b3d21584df08976c0c1d0adb bfd/nlm32-i386.c
+16485bd69ccc2f788f0e7a4e78d13080 bfd/nlm32-ppc.c
+d73118b8347221ad5654dfdf83f4c011 bfd/nlm32-sparc.c
+8681522ed8537dc4d4ad25bb0e81d135 bfd/nlm32.c
+4ced1c0f78dca51fd26cd148e7852fb4 bfd/nlm64.c
+4184805e1b5c038f8375f5ad37a85538 bfd/nlmcode.h
+ef634af66f79ef9f2cacd09c4de2ef4b bfd/nlmswap.h
+8e9c830cacb3843634b4438619c73365 bfd/ns32k.h
+41a1acec2a818f8fe6c543ee96de1c8b bfd/ns32knetbsd.c
+86dbb8b1e95fb7c1607aa0d1a538a6ef bfd/oasys.c
+5f845c1eece8bc78d785fef9ca238485 bfd/opncls.c
+5266f96bc29035f8ae5013a4fb9e6c98 bfd/osf-core.c
+af9b39595fa9627fdb052181591d360b bfd/pc532-mach.c
+b8f4b9c76f85c701995aecfc9e1fd0fa bfd/pe-arm.c
+856fc09b2d179c2660acd85abfe5d633 bfd/pe-i386.c
+eac157e8749a4d566f023fc73ad2701b bfd/pe-mcore.c
+d192586165323abd0d5cf195722f380d bfd/pe-mips.c
+8687b0ea6f5a2ad2aa857f38d1eafeb2 bfd/pe-ppc.c
+7098d401e1e6c775a2cbbebdab686f7f bfd/pe-sh.c
+0674fc368b3047115a9f6e9e2cd20758 bfd/pei-arm.c
+351655074548989187fe875754b59a71 bfd/pei-i386.c
+dbd6eb2c16f6c94bb0d3af6970467b5c bfd/pei-mcore.c
+ff522f8540259bfdfb1f90064dbda427 bfd/pei-mips.c
+505f4491630724fe9357e03618058f2c bfd/pei-ppc.c
+af088593cf0d7588699115fff44d2436 bfd/pei-sh.c
+549d06216d597dc12f7bb532abf3564a bfd/peicode.h
+99552cf2462f031dcfaee34e8151dd80 bfd/peigen.c
+36e512e82898a2f50ace960fac3d1ba8 bfd/ppcboot.c
+b56c780a82e5cc4ded1cbf3989672490 bfd/ptrace-core.c
+6aa6fccfca19b4ee6ce8047e54b66684 bfd/reloc.c
+a1b8a2faff21b4cb55db2fccf48b4fb3 bfd/reloc16.c
+f3d7b3ec9dec8d9751c822ad0f7cda32 bfd/riscix.c
+cbcbd08c9cf2db5cba7b363f232742f1 bfd/rs6000-core.c
+a3c3a3306cef20649071b08f1a41b503 bfd/sco5-core.c
+669eb6e68af2bce602241ab09b169fd1 bfd/section.c
+544f5cdf06ccb440134c6d3dccfecba7 bfd/som.c
+dfb5514d4e5d85045a02711d16d5b837 bfd/som.h
+db7d53435ef4476657143762d1c76077 bfd/sparclinux.c
+16b6c8ab9b1ba13088451b6ab01b7d84 bfd/sparclynx.c
+14474155b80b37f68ee3b569c246480e bfd/sparcnetbsd.c
+478dbde3f25d2d26b45adcea03e3ed08 bfd/srec.c
+9af42c7837cf0c643be9042488414922 bfd/stab-syms.c
+d366652ac810c1ab5a2d49b24f47c1fe bfd/stabs.c
+1ded054093de910d9786c62bc4fe8cc6 bfd/stamp-h.in
+4e344bc6075b4c9589ff912d3b78723f bfd/sunos.c
+46791300797fca991a00125fb55af4a0 bfd/syms.c
+435e4760bd54ed817b2a56822aff3972 bfd/sysdep.h
+ef5a4773698ea2da30012dc1e01105d8 bfd/targets.c
+26dac42ee68d1de97152743dd098bd83 bfd/targmatch.sed
+23720305da99ceea682031fcbf4a35a1 bfd/tekhex.c
+969f0092251c74555a960e1b5d297e02 bfd/trad-core.c
+1110231b3b74f309b8395b533dbf1a0f bfd/vaxnetbsd.c
+34cf67d45022eca8abc6ddd675d36be9 bfd/versados.c
+8c7c918c64fa0d3c6779a8f8f38fe52e bfd/vms-gsd.c
+db82cb705478152a30758ea335761c37 bfd/vms-hdr.c
+03c556c0214c972e35570f6bf359166e bfd/vms-misc.c
+1820b267a4219086b2da6d698aed6c12 bfd/vms-tir.c
+48d9371c32947ce0ad0e03db0dfe8579 bfd/vms.c
+50e6b1c456e21f4edfb38cd7c0544a5b bfd/vms.h
+5cad20ef456e87f0a8ae8c073963009e bfd/xcoff-target.h
+546bfaeaba55b33cc08b9cdf01f5a0b3 bfd/xcofflink.c
+74b9e8377ce5ef7f2ad8914ad5e1dd41 bfd/hosts/alphalinux.h
+6626deeac79edaa6eef30082a4fd9dd4 bfd/hosts/alphavms.h
+70e1a59995604c3b804469fa27b92d94 bfd/hosts/decstation.h
+7f90b6f7c21bcc67525386bdb9399540 bfd/hosts/delta68.h
+5a75f0a8518cdf994c6837632317650a bfd/hosts/dpx2.h
+6d9ebd0f91f9085690638821e2ce67e0 bfd/hosts/hp300bsd.h
+50735617194ee653f1cf99af40a7dbc9 bfd/hosts/i386bsd.h
+c3d90b1a06731c814d89371f91583bb9 bfd/hosts/i386linux.h
+90fa9751fedd9623f399b8bcd6a646b3 bfd/hosts/i386mach3.h
+09a90ebd4e56bce95e72a93c6274997e bfd/hosts/i386sco.h
+1d13cbc7201d1b35dfd2353027122d33 bfd/hosts/i860mach3.h
+779197139aaf874e61ef9339cdf7df30 bfd/hosts/m68kaux.h
+c40f7966cbdb0fac0b4366c9c61eac06 bfd/hosts/m68klinux.h
+2563c4d1fef8234619b1c2007dfdaf90 bfd/hosts/m88kmach3.h
+8fbd4bfd38ea85aeedac03e1962242dc bfd/hosts/mipsbsd.h
+f61dc4a9a9a665ab9fba6861214bdea3 bfd/hosts/mipsmach3.h
+d4e865701ae3a5149a05ff92b2542e94 bfd/hosts/news-mips.h
+2a46cd81291f56275932a241e022f567 bfd/hosts/news.h
+21af1454d516fbfd996f6d6bc3b8db9b bfd/hosts/pc532mach.h
+2440e7cdd4e85ead6516650e1329bd0f bfd/hosts/riscos.h
+31fe7c1b8aaaf0174c5fe2ef83298ca9 bfd/hosts/symmetry.h
+627775bbea4f1d59b97edfa80e81a259 bfd/hosts/tahoe.h
+1214020ec5befbef1dda50900deb4740 bfd/hosts/vaxbsd.h
+9b476271b3bc5815a37f6b887c092090 bfd/hosts/vaxult.h
+9b476271b3bc5815a37f6b887c092090 bfd/hosts/vaxult2.h
+9fd8ff8120f96817fe7b034b4ed9b4f5 binutils/po/POTFILES.in
+bfb5c178c2404196ab54d7532a61e3d4 binutils/po/Make-in
+617c7c057bbe2cb428faef00469aacee binutils/po/binutils.pot
+cc34f84c231167795bb73979a99f2359 binutils/ChangeLog
+2472bb0eaaa74c1313fa692818c05de1 binutils/ChangeLog-9197
+14304b5ca4a2273914dfcad6be18564e binutils/ChangeLog-9899
+d00a3e0fe88a42378eaf5678ce13fd25 binutils/MAINTAINERS
+5218de4e1741931458055cad4f856494 binutils/Makefile.am
+9cff53a6900db5e03705c302ff244f46 binutils/Makefile.in
+d4e158f46a941528b4f4073c401c0e00 binutils/NEWS
+d3c110ce10986acf5652bcede3ba5d15 binutils/README
+949ae831863e3d2d546a13e90598af7d binutils/acinclude.m4
+f11369538ab277c7d21545b00f4e6a3b binutils/aclocal.m4
+c1436a898294a0066903a5104d59658e binutils/addr2line.1
+f9422636447373a92cd27c8d18da6b4c binutils/addr2line.c
+98881d2c88484e6af6d780a96771be58 binutils/ar.1
+0a7f04d0e8d2e7aad755b3ee26c633fe binutils/ar.c
+59b04ea4c2a76e274f29a764e32df29c binutils/arlex.c
+1627c1e5a2ad925644e7b0e0d0294e1c binutils/arlex.l
+4ce08acb93afa8bcba90c019e9a4af75 binutils/arparse.c
+9f796192da100ab75cc8e8986cf5ec9f binutils/arparse.h
+64c8c15b9e083f8dcca5d9ef724bbf1e binutils/arparse.y
+85787c199f1787efed54204d31016ef9 binutils/arsup.c
+1ed7fd34d339da2a4646707ac28cf298 binutils/arsup.h
+1d0b1ce7485aca1bd7611907afbfa0da binutils/binutils.info
+a6519201dbcedf4553688c71b9a913f1 binutils/binutils.info-1
+7a8229729ee7593b7d2056a6dce05d10 binutils/binutils.info-2
+50ee13b99e9ac1e1b16526240d1ba810 binutils/binutils.info-3
+f3b2eece916766a335345bced30642c7 binutils/binutils.texi
+1432feb40d134ab6f02b9af4ddfa9e8a binutils/bucomm.c
+b093bbaa8b2a7c540391af8d7fbe01cf binutils/bucomm.h
+73af1f8883c755c42d1b4daea9b61a21 binutils/budbg.h
+c2fbd45cd776dc9c3f70d6931f49c43c binutils/coffdump.c
+3f71f90dca31f7eceb451f04091ce646 binutils/coffgrok.c
+4c1ad92a1b0fd1a4bee6550fd570e1fc binutils/coffgrok.h
+1ddc3b7cfc2227191284e2efb4f2c769 binutils/config.in
+d33e75b81c9ea97cd428a743e350350e binutils/config.texi
+7628ee1c3a4fc0cf02fcb6723bf6aea6 binutils/configure
+0df24a539b5dcfb1c9b147d28b80e05d binutils/configure.com
+e06d86f427065faeb3b489da51ed8d84 binutils/configure.in
+150a0434297702b55b12a72ee3836b4e binutils/cxxfilt.man
+d56ec134365b3aec1319de2a58a1af65 binutils/debug.c
+e00eba3654d5743e788ebc5c1973995f binutils/debug.h
+f3e0729525d81c8f4ba2efdaf95b00b2 binutils/deflex.c
+591805d9997a54553a55b47af7a54f65 binutils/deflex.l
+5d447a921c6f6511415112354bbe943b binutils/defparse.c
+01fa40dc7e4ed75477d60fe6853be93e binutils/defparse.h
+ef8172a22c814cfa3264b3935157dc97 binutils/defparse.y
+fb7920a70d8eba8b94fd446da371604e binutils/dep-in.sed
+72c8fc0ee17d6a7e78181cb5e7737436 binutils/dlltool.c
+bff4e3df13598acbbdc68e0a6a6b6174 binutils/dlltool.h
+ed8c2237b24fba031bc1cd03c0dcf23b binutils/dllwrap.c
+17d7b80794f539023822984c91803215 binutils/filemode.c
+ddc5c5901b33508df8f07e1298d6c707 binutils/ieee.c
+4d04341c680f1136f390abd07d49caef binutils/is-ranlib.c
+920b2431a9bafbda1144b22258327b10 binutils/is-strip.c
+39ac662d88dea0e279c66fee67cac871 binutils/mac-binutils.r
+fb2055ce0e0f73de2e8df95cc40641d9 binutils/makefile.vms-in
+f82d9835fa96d421d65a5ea7f5cb5299 binutils/maybe-ranlib.c
+aa064dac8c2147d98b05609a47b80ddd binutils/maybe-strip.c
+1d9d64c1d1409968c8f722c009b71b32 binutils/mpw-config.in
+2ccc0b509ed732287996815f4ec3bb81 binutils/mpw-make.sed
+3f9006583fe2a2baee6469944a4d6c06 binutils/nlmconv.1
+de30bc4e7ef4bd56592adc78669cfe35 binutils/nlmconv.c
+80b28c0025c02572586574b215081738 binutils/nlmconv.h
+a29af1255991c6946db06146a83b2d22 binutils/nlmheader.c
+3426060b7fba0ed0184a410e33bf7fd3 binutils/nlmheader.h
+7084d5f0f15bca6fe7b1d24447662e8a binutils/nlmheader.y
+216a9371bddca8d4638e129ad21a4337 binutils/nm.1
+7de9f996f26423dc539de05f7db81233 binutils/nm.c
+b3c63de023675571764212902c24ee77 binutils/not-ranlib.c
+7b521296e81503ee1a37cc77039dc203 binutils/not-strip.c
+bf6dfc70af53532846b0cb1e71a4c3e5 binutils/objcopy.1
+7785d62d0a9d9b9fd99ccea5f52c28f4 binutils/objcopy.c
+542a5564ba0a8082d59cdcdc8151c665 binutils/objdump.1
+9f6f96528d177b64b60f3152358a733f binutils/objdump.c
+5627dabb69c43b6d889eaf8aeb800690 binutils/prdbg.c
+020c2cec49a443a1b1865f95077e044e binutils/ranlib.1
+bec38036243f76c13fa87b092c0292e4 binutils/ranlib.sh
+ac0bd40e5dfc34b14e3e0bf44ed9e6eb binutils/rclex.c
+f7733d8d5f8e5655fb6c7ab867499f78 binutils/rclex.l
+ee8ec542e309823431ca05b36d771ba0 binutils/rcparse.c
+0bb76c3e578d61500674d6fafb307be3 binutils/rcparse.h
+ee97623355cdd69893db915a99619008 binutils/rcparse.y
+70c957614e98a5faf0c461cf39762d11 binutils/rdcoff.c
+dbd9af6e619e31005ad592405a1c8a1e binutils/rddbg.c
+55b5648e0fde88c04ff65b772d57e2fe binutils/readelf.c
+aa31c7f3e0d3e20dec69cbe6a1e166e1 binutils/rename.c
+e873278d95090c6be84e05e129ca4bc5 binutils/resbin.c
+3f94f59d1480c52a633de5d4b1c09903 binutils/rescoff.c
+3a6b79ea5517cf0a03a3af606b423344 binutils/resrc.c
+e266faaa14043a879715b85dbf53d48a binutils/resres.c
+b62e62e9c7d29e37c5968c1a005f3eae binutils/sanity.sh
+e0d20337f2d99c6f1546cc14750c2af7 binutils/size.1
+1b0ba4b4bc51d03c58f899c56e2de52f binutils/size.c
+0ce93ed9a31befc424a940b631dd6dc8 binutils/srconv.c
+7bdd8bcf3f73100f2ba7a7455c04ee39 binutils/stabs.c
+1ded054093de910d9786c62bc4fe8cc6 binutils/stamp-h.in
+0548ad6ecd51c170effca26be02c225b binutils/strings.1
+5bfa090a64e9da906c79102f535e8a07 binutils/strings.c
+d2c537d036457e8b2a8ec56ea0a37a60 binutils/strip.1
+3556e12d1dfaacc25799e811dc8ded8d binutils/sysdump.c
+614368b68dcb2afebcaa89ca83755e60 binutils/sysinfo.c
+c872c0449117476453fa1156a4ddd4fe binutils/sysinfo.h
+10ee4e310e399a02083765cebc66f44a binutils/sysinfo.y
+2a317813459ef16b3e0c30061597b058 binutils/syslex.c
+358404c78829322202140f64db54bae4 binutils/syslex.l
+2a0d9dfb5514c6c076eae77e837c9418 binutils/sysroff.info
+0c92188f4e74f6c3a688d628dd812c42 binutils/version.c
+ae6e3de730b3d0e9c82e53e837be72cd binutils/windres.c
+0382f44a2826a714a2ca98cae5d290d5 binutils/windres.h
+d5e5a7f1ce5f0bfdac6677f94363937b binutils/winduni.c
+656d6daadd2719e5d0c7fe398114e95a binutils/winduni.h
+883200faac93fbc23af42596975182da binutils/wrstabs.c
+34d0ab842ffa4318e8cbe2bba4c565dd binutils/testsuite/binutils-all/bintest.s
+a4cc79d006057f03d643df282c75b54a binutils/testsuite/binutils-all/ar.exp
+98c234915a733af3aa93276f14f5e976 binutils/testsuite/binutils-all/objcopy.exp
+a236c301559d5c1c22ad90ea803b07a2 binutils/testsuite/binutils-all/nm.exp
+8e5c9079f46f332db8bbe679b64c878b binutils/testsuite/binutils-all/hppa/addendbug.s
+d91ecc8b2ba6965842cf206d8144c3e1 binutils/testsuite/binutils-all/hppa/freg.s
+51be8dfa0a2c4a90e290f4a4f7d358e0 binutils/testsuite/binutils-all/hppa/objdump.exp
+c9435a56e0e65a9870ba97e56b38fc61 binutils/testsuite/binutils-all/objdump.exp
+477dff15e3ca6bc31c3a2173e5a2d6e7 binutils/testsuite/binutils-all/readelf.exp
+fd5d39184621cf8c2e7ff6b2404d299d binutils/testsuite/binutils-all/readelf.h
+25d9186ef9252a2db8ef03ad11337e1e binutils/testsuite/binutils-all/readelf.r
+d1c124e085140bfc5dd738bf03e2beca binutils/testsuite/binutils-all/readelf.s
+e597a5420641d9d64c21fee25118b7cc binutils/testsuite/binutils-all/readelf.s-64
+b1d2f987e8bc3b99c2f25d3b1ad0ba7d binutils/testsuite/binutils-all/readelf.ss
+22c83167f1761586e80d622551da44d3 binutils/testsuite/binutils-all/readelf.ss-64
+b017b043dd3ada52a96abb5a577f8592 binutils/testsuite/binutils-all/readelf.ss-mips
+67dd925a68696254ec77a8759252cbb2 binutils/testsuite/binutils-all/readelf.wi
+dfaf59b20790c809eb1086b514969c34 binutils/testsuite/binutils-all/size.exp
+1a13c3483fcb7533554e311d1e44f826 binutils/testsuite/binutils-all/testprog.c
+8d61227bf68a3fc7aee697ac53b1eb85 binutils/testsuite/ChangeLog
+95bf389c4474488cd543b5563b82b331 binutils/testsuite/config/default.exp
+332890f8e08b7aa8c60bb35f6065c211 binutils/testsuite/config/hppa.sed
+d1cc0241abff02d4fa69e4106d4f38d7 binutils/testsuite/lib/utils-lib.exp
+bf1e177862ddef9aa6970474ca011825 config/mpw/ChangeLog
+43d2a9ca5ff1a5f5acd3390b7b082830 config/mpw/MoveIfChange
+d9387d651ddbc91875c97259d0fc35af config/mpw/README
+a31a49fd4c06ba2b08ff299cc2cfac0d config/mpw/forward-include
+a9ee17c3900e8edf08a3cf209a87cf2d config/mpw/g-mpw-make.sed
+df7cf8189011eae6ec32c27a268ebc06 config/mpw/mpw-touch
+082758f13e230f38a846e9017ee6025d config/mpw/mpw-true
+39980e1a3d29624ec94a6df2dfb8dcd2 config/mpw/null-command
+71b670c5a9868b2833972721f73578e0 config/mpw/open-brace
+7588b51a118ab73de5d6a3ba0fc1e47f config/mpw/tr-7to8-src
+082758f13e230f38a846e9017ee6025d config/mpw/true
+02a96b04d8fd1586bfca132bac4e1a4e config/ChangeLog
+70c03dac891f6bc7d806b9427b31bc86 config/acinclude.m4
+141167afa246fce5e59bb9e55cfb2fc8 config/mh-a68bsd
+2b5476085f7589e173bd81316a7549c2 config/mh-aix386
+57925a69ccb24ae7ca7cf949a07d26d3 config/mh-apollo68
+9b65dc7f50a7134932aa278ac0378703 config/mh-armpic
+8d82479feea57715325ee949952ae5e5 config/mh-cxux
+ddde55c2eac58773f99aabb2f011e206 config/mh-cygwin
+251cf9b667a963075140fcfa616f06da config/mh-decstation
+a3dc79b2e3494813c3a0b352d2185c17 config/mh-delta88
+ab6f38194c18de21e5ac0761d0d6352d config/mh-dgux
+615158832b3fca3cea2f51053e67590e config/mh-dgux386
+2738c9de2581bc9c2d21f48950b18bec config/mh-djgpp
+9b65dc7f50a7134932aa278ac0378703 config/mh-elfalphapic
+153649fe7fb621b814baad06a2bf299f config/mh-hp300
+3330f1730b6b4bb70b09ffe2415c74be config/mh-hpux
+3330f1730b6b4bb70b09ffe2415c74be config/mh-hpux8
+9b65dc7f50a7134932aa278ac0378703 config/mh-i370pic
+740855ebe34cb2d01fba1f1bcb4264cf config/mh-ia64pic
+7add3042f79e57cdcb52abf304c26a70 config/mh-interix
+25c3bd9e7778c2c5d799fb6f1615be3f config/mh-irix4
+ffaaae454726b7ec67de856093365ec1 config/mh-irix5
+bc99b6de866022c39cde3cc7eda83fe3 config/mh-irix6
+1acb83eaa6a78c587598bd7efc2025d9 config/mh-lynxos
+6bace932d30f092a27fba43e01226c04 config/mh-lynxrs6k
+740855ebe34cb2d01fba1f1bcb4264cf config/mh-m68kpic
+7bb6a9aa44a68e1e71f76cf8b8c2d135 config/mh-mingw32
+44882b0820862d0e134a8e4e5537afce config/mh-ncr3000
+42f074ecc1191e9ebda8e447c4f46713 config/mh-ncrsvr43
+90b19906d7ba40a6e4b83efb959809c7 config/mh-necv4
+21c5c77600fd6fb58f378ef2acf0190c config/mh-openedition
+9b65dc7f50a7134932aa278ac0378703 config/mh-papic
+9b65dc7f50a7134932aa278ac0378703 config/mh-ppcpic
+e263a8fdee36cbc610757f2317da3991 config/mh-riscos
+ac3fc3e8d21f9f9fe83c4cbde3890387 config/mh-sco
+c502a579b42cb78af2154966343f491f config/mh-solaris
+fa84a282ce7cd6876d1eac368a31a368 config/mh-sparcpic
+2e3ce1267c492dd862c48b59eab932ac config/mh-sun3
+278ff58db0fc6c75e1cd39ca2ad1acfe config/mh-sysv
+a0992273a62d3448fe6ea65a74250899 config/mh-sysv4
+08516ddc97d1ada83d4bd631bd1964be config/mh-sysv5
+e75a559cf75354c524229f480b5f6e7a config/mh-vaxult2
+740855ebe34cb2d01fba1f1bcb4264cf config/mh-x86pic
+f80e59daab2815b9faf70f2fe2f0ec2c config/mpw-mh-mpw
+f60c118789c383f2548e2f8969513865 config/mt-aix43
+6eee2b9b80994128082ebcfb8285239d config/mt-armpic
+96289d06809692c31d71e69c4bedb6d7 config/mt-d30v
+6eee2b9b80994128082ebcfb8285239d config/mt-elfalphapic
+6eee2b9b80994128082ebcfb8285239d config/mt-i370pic
+4d21c96a048f825b25f5ecb7259866ef config/mt-ia64pic
+9c9256a473bc2e1204e258e48246cabf config/mt-linux
+4d21c96a048f825b25f5ecb7259866ef config/mt-m68kpic
+2067ce86494ccb89791fe169eee8c198 config/mt-netware
+5aa8f75c6588d513ce199e2e44c206e2 config/mt-ospace
+6eee2b9b80994128082ebcfb8285239d config/mt-papic
+6eee2b9b80994128082ebcfb8285239d config/mt-ppcpic
+05fc6527f7fe0692e7bd51c24868c2a3 config/mt-sparcpic
+4c029f499ccf3ba2561603b2a113178e config/mt-v810
+12b3030d3d59526c374c15af4f5944dd config/mt-wince
+4d21c96a048f825b25f5ecb7259866ef config/mt-x86pic
+8f1f7dafc590b26d22f3e597284f25b9 config-ml.in
+e0d75b8ca062b8ec4eebf664aab1644a config.guess
+306d551fd358a6363d2446486f1b8821 config.if
+3a43bdabca8b9eca92530bb3ea2eeb24 config.sub
+2523c7ca068da11d38e06af6347abce9 configure
+0473df9cb9367e9c8a77c289a6f5f764 configure.in
+e28364a0df955105a7f6898cc8ca366e etc/Makefile.in
+213e80930c0be010bb250612af54775f etc/configure
+e9b828169fe54bf6414ec1f4376af077 etc/configure.in
+27fb25be358ff0eec0a44ac86f3872ee etc/standards.texi
+fc8ef2abb184ab45779484c10d4d8d8f etc/make-stds.texi
+a76594be1e11898d26d9bdf1f54af07b etc/standards.info
+5ee7bcaad637e7010a2581db7927a16a etc/configure.texi
+193f671ff984e81653741fa7c212a232 etc/configure.info
+1a911cd9b8902678f64b5e33d457a8bd etc/configure.info-1
+ca127e48a13744e2fff22df3b893264e etc/configure.info-2
+1686cccb56366de0a01e848bfbfd9f22 etc/configure.info-3
+a20b40a0a5d3282f6a97c627be1e38c6 etc/configbuild.ein
+570746cd93c4dae506cf2a6153a2a1b3 etc/configbuild.fig
+f97ac2d5e05edeb335b73f8b6beef581 etc/configbuild.jin
+b2851bb6d77822adc89ffc6d323b5fea etc/configbuild.tin
+e67b330b1ad623f1bd3850483cd4666f etc/configdev.ein
+c1f7c41d3e596256ab5f5f933a66293f etc/configdev.fig
+8e14386548b8da4c5072aa2abea55886 etc/configdev.jin
+32fc10cbdbf679bd0ffc8857cf069b43 etc/configdev.tin
+faae6f2e73940264ae855d85213f1d13 gas/config/aout_gnu.h
+c9af3361c125907abcfa1749568dabdb gas/config/atof-ieee.c
+fede1fbb86cba44c1ad646104cf5a6cc gas/config/atof-tahoe.c
+3d992235507bb27e16f4537c9b7c895d gas/config/atof-vax.c
+09c324e401be218c9f9b18833e2bfd9b gas/config/e-crisaout.c
+88c6165199c1aae7bd9c2733ad9a1847 gas/config/e-criself.c
+8915ab931627c03103b8ff52bd2060eb gas/config/e-i386aout.c
+4592324396b51379efcdefa7b75a17da gas/config/e-i386coff.c
+90f70110e875b74bf055abc7f609c4be gas/config/e-i386elf.c
+a153ff4dc91266991257426d1a9d7309 gas/config/e-mipsecoff.c
+be51facd59d0de4cc60d8b0a64360795 gas/config/e-mipself.c
+e5ff2ff5861d7bf403421af91b00ea2b gas/config/itbl-mips.h
+b81f70f78c502ef7b65669bbf6a42d40 gas/config/m68k-parse.h
+9c349d1fdfc29afcbe11cc3073ac91e7 gas/config/m68k-parse.y
+513b26a839408f4ef48c0928326f6b20 gas/config/m88k-opcode.h
+80de808249ef5b9809d057c8b8b5d8f6 gas/config/obj-aout.c
+6745cd9e8d420e086fd8c3a0fe9d9095 gas/config/obj-aout.h
+7d1b430e4192138505f7ec837f217047 gas/config/obj-bout.c
+f172fb8c8335e4a897f42d58aba0cff8 gas/config/obj-bout.h
+9708f26cafdb94e02e74581d00986f75 gas/config/obj-coff.c
+f4d7d6a2f1fab1ad9f437760b1e4a290 gas/config/obj-coff.h
+d4626ed17d1c4796954bc9418b2fcae2 gas/config/obj-ecoff.c
+09b60005742d62edbf5b55a2e0dc7f68 gas/config/obj-ecoff.h
+0ddffb15d54b7a745c051f7d7c384ca1 gas/config/obj-elf.c
+8685e6969e035a265d590f30d2a86020 gas/config/obj-elf.h
+b5d0f9f5a50058e43213df1990ad2f8e gas/config/obj-evax.c
+38a5d4d9266d1ac532e62c848f9f29c7 gas/config/obj-evax.h
+1a5fb62914ddd24d361b7b129a038361 gas/config/obj-generic.c
+fe06aa0f9d5ebbba420483ab4e251ddc gas/config/obj-generic.h
+7dc3eb8376dbbdfe1a9cde7d7e81cc48 gas/config/obj-hp300.c
+f5dcbd28e8875b931649df4622152eee gas/config/obj-hp300.h
+b30adf5012828a55085cb1e5cb90787a gas/config/obj-ieee.c
+2dfed749abc91e9112dff52510f53883 gas/config/obj-ieee.h
+32d6ee58a1474027c5403a0fae7a9ba4 gas/config/obj-multi.c
+26302e29fa5c705640737f4aab11fbea gas/config/obj-multi.h
+1225ae9363a247d28ab0533256c35473 gas/config/obj-som.c
+d612178561226728dd78c040fc35ce06 gas/config/obj-som.h
+7c5ded557bb7c88fded22b96ec25f417 gas/config/obj-vms.c
+b9eb514f5636a10c03d6aae92c53372b gas/config/obj-vms.h
+fd2ce5ad932b5dc2c104b63f2a3a0b04 gas/config/tc-a29k.c
+34b3a16f63278dbd43881ccd3b2db87d gas/config/tc-a29k.h
+ec7f4ed990017191833a07a0407b157a gas/config/tc-alpha.c
+3b0455cb893be3d824aa3ddfb374f368 gas/config/tc-alpha.h
+b636acb50409659b1d5f57b14a876a3b gas/config/tc-arc.c
+6fe272c8df90aba7de56ff7eec096d76 gas/config/tc-arc.h
+33dc87e2b33710e71eec2aef79c11553 gas/config/tc-arm.c
+4ac5f77ce89749c350d7e02c50bf9bde gas/config/tc-arm.h
+0a3a0f2bd64c7bb14527b47a7296a41e gas/config/tc-avr.c
+35f4883156b15402b224f945b6caf4bd gas/config/tc-avr.h
+ebbe16f57e78882b55475edb782de4a7 gas/config/tc-cris.c
+6710000131a46d84b05b46bef09aded0 gas/config/tc-cris.h
+e313ec8fbb659c2f6f64845925805bc9 gas/config/tc-d10v.c
+3554d8d0658406384900b90127ead6c7 gas/config/tc-d10v.h
+7cb96637362a4e7f43dba88c17abddcf gas/config/tc-d30v.c
+18eb9982a3686bad7630d233bdc574f1 gas/config/tc-d30v.h
+81ca90fd6c43325e74643175595043c5 gas/config/tc-fr30.c
+568aebdeddbe7ea9c77be57707d2b414 gas/config/tc-fr30.h
+d41d8cd98f00b204e9800998ecf8427e gas/config/tc-generic.c
+3e858b89b3daae2e48d6a8d653bcb0e6 gas/config/tc-generic.h
+5dd13d5ef04d4b72e2faeeea89cfd0ad gas/config/tc-h8300.c
+2dcb85342a59ca796899ff4e5101ecf7 gas/config/tc-h8300.h
+81bd90c94b40aae136691c802da79263 gas/config/tc-h8500.c
+e1ccdb66b234c1025be46d2f486678f0 gas/config/tc-h8500.h
+f763378e31a8c10cbb8437e2513b53b5 gas/config/tc-hppa.c
+d3185fa681fc58d6f1edfd24f4025b85 gas/config/tc-hppa.h
+7a27c1b4919e2b489a6b34c06ac024f0 gas/config/tc-i370.c
+23dc9165d7162ce4c0950d963b203fb3 gas/config/tc-i370.h
+7098d2c32b72f829161ae52da9c49e47 gas/config/tc-i386.c
+1da35faf3395cd7e7a245d78b8f49dac gas/config/tc-i386.h
+3a815c5abb0e0c113e44f6c211e33223 gas/config/tc-i860.c
+c58a518713dee8762a31b111aa00e0cd gas/config/tc-i860.h
+c85a2b8411404395676018ba371a1bef gas/config/tc-i960.c
+9057040879214146b9871c143ef81ea3 gas/config/tc-i960.h
+dd520249dab9849851abebf39a36d6fd gas/config/tc-ia64.c
+1a49e7ab1a82abeee4c2ff408ded5c94 gas/config/tc-ia64.h
+b74f825dfb3d331ea81331dd377c773c gas/config/tc-m32r.c
+473466075cd1c6118dc0d2d9da658d22 gas/config/tc-m32r.h
+036c6936868352ca0d944053cc0d3029 gas/config/tc-m68851.h
+42c100b93447786feecd4763ec6775aa gas/config/tc-m68hc11.c
+3050cb10ca0d88f186c1f129684ebaf4 gas/config/tc-m68hc11.h
+05f7cc1859117e47363e2fb2a9eb1d39 gas/config/tc-m68k.c
+95242a2f0073ce7264f28d60c7c92cb0 gas/config/tc-m68k.h
+bfe4b64d9482a84a985b5f7f0973b976 gas/config/tc-m88k.c
+a3e1d26e2e172346f0122419f0a4326a gas/config/tc-m88k.h
+d8aa01751d30628318e590bcd567a1c6 gas/config/tc-mcore.c
+c0f203d7b58720282ffafa6645f1cc2d gas/config/tc-mcore.h
+97577ab4a8da41d97ce8a36bc1d9fde5 gas/config/tc-mips.c
+33dcd1abf9b67ab185eb88d414623581 gas/config/tc-mips.h
+fc6555aa7113c27336a2ecfe26644483 gas/config/tc-mn10200.c
+fabab5ff110b4f7d03137eb9512ea7b4 gas/config/tc-mn10200.h
+516948b2ad929b95fc4e91e55c6882be gas/config/tc-mn10300.c
+bd3a3f7428e20710f6168d887903380e gas/config/tc-mn10300.h
+77804e6249b7de1c4b121b2794fbdabc gas/config/tc-ns32k.c
+d1f4c833e9a8c187c47816a8b2c4adc9 gas/config/tc-ns32k.h
+303ed8283eea6d2e3f23e30547dd1296 gas/config/tc-pj.c
+bf88ed760a0351e567e20d9e735b985d gas/config/tc-pj.h
+12bc9915b0f4e1c713c26dcb126f52e1 gas/config/tc-ppc.c
+6eaf81e2f267dddd833807be6fe22061 gas/config/tc-ppc.h
+1e041cd996c704bc5f7682c98e2a0eff gas/config/tc-sh.c
+75ce3d962d159199084c1dd12d54178a gas/config/tc-sh.h
+1979ca0fd615bd6fe5642ddb1424229a gas/config/tc-sparc.c
+ead1ffe60167f6a6e4bcf67c431696e7 gas/config/tc-sparc.h
+05e02f353b7cbb55cdd2e65f0dfd2b3b gas/config/tc-tahoe.c
+3dcc20a36dc047c1b911b88c0dedf1cb gas/config/tc-tahoe.h
+cf8275037c30613a74700d4b9ef1528d gas/config/tc-tic30.c
+c87a51ecc2c5404b361c76bb79b758e5 gas/config/tc-tic30.h
+9c8bcb4f0187020a29f320480e67b72b gas/config/tc-tic54x.c
+69db1fb2bcfe9b683fcfe32ee08c69ba gas/config/tc-tic54x.h
+4935fd83f38ef996af76928251d8ece1 gas/config/tc-tic80.c
+c300c7c08f27d59b6b36f88b1bced62d gas/config/tc-tic80.h
+83d8b89c69eeab142633298d4a50a596 gas/config/tc-v850.c
+86f360272ce4239e6f69719b44538502 gas/config/tc-v850.h
+8aca138b74b9b504774becc1458fc866 gas/config/tc-vax.c
+b4b8528766ae2f534253246733b1a1b0 gas/config/tc-vax.h
+865c78ec81004885f2068999ba393785 gas/config/tc-w65.c
+ea4d3797d325ed8d7136eab85f5e4d41 gas/config/tc-w65.h
+64d1a03f6199d0dd0e050b2e307fead0 gas/config/tc-z8k.c
+3e4a65379ada2038393c4020595ecd50 gas/config/tc-z8k.h
+5c64e67ea88ca2b90cece0a54c608b55 gas/config/te-386bsd.h
+0d6f3b4695c8a69980eef0635a4b376b gas/config/te-aux.h
+904c7780c93025e1c16bd7facc5eb6d5 gas/config/te-delt88.h
+c30935955b6e3e593aec0c121bf741fb gas/config/te-delta.h
+47cd21925072d94dd095186c5202b92d gas/config/te-dpx2.h
+fbce03dceb71bf68d8c872bbb69b35aa gas/config/te-dynix.h
+7e2acd95eb4766b4530cd90d5da12e11 gas/config/te-epoc-pe.h
+9d0e7ea986b579a8dc599c81545ec018 gas/config/te-freebsd.h
+9677889ebc4d2d31b7cf1d99bf884883 gas/config/te-generic.h
+9c4b72d5db2a3b58fe216e98e5d1604e gas/config/te-go32.h
+da615158789ee50c5c745918b8734301 gas/config/te-hp300.h
+74f8f7e6cbd67afb40b6a39236d796a9 gas/config/te-hppa.h
+ffe54b5f97c4c93a036fcb434b0e2ce3 gas/config/te-hppa64.h
+8a89d0db3087edfef6adb3d11e461332 gas/config/te-hppalinux64.h
+37ed6767b7669c59a6f01cf229bb2763 gas/config/te-hpux.h
+c5c5a24aae2ba252078a1e9aba6f29dc gas/config/te-i386aix.h
+6dea8bd12ee50ec94d13f03355157be9 gas/config/te-ic960.h
+19b403b208d810d952e172e14e5ccc4d gas/config/te-interix.h
+4cfb2f20ec1301d37e9ff374e46317ce gas/config/te-linux.h
+0525817b2f140459473072028c30da2b gas/config/te-lnews.h
+2d77aec1c4985fc5f3a8eee88e95dec7 gas/config/te-lynx.h
+36d49af0e764532aaae5a64d2c046790 gas/config/te-mach.h
+9f70e9ab23ffcbdddf605e1f7b9479c4 gas/config/te-macos.h
+473b5d1e3e16c96f5e21f286303bafdd gas/config/te-nbsd.h
+42e509551b9c1e76f3a8f4621d2eee03 gas/config/te-nbsd532.h
+c34e9c2b58482673113e11fd998598c1 gas/config/te-pc532mach.h
+158cb175a491e482d6e0d3412b0bb216 gas/config/te-pe.h
+2c21e57dfc1102a048c6e0956092a091 gas/config/te-ppcnw.h
+a8a052866cd9c40ef31c0f4eaf7d653f gas/config/te-psos.h
+0ff6629cbf363fc1b3d16c4ee4877f1c gas/config/te-riscix.h
+5dd47a1843434b0b890794781a146f03 gas/config/te-sparcaout.h
+80672f9c3be9fe9d93bcb6f782a9e6f9 gas/config/te-sun3.h
+589c88a6aa89ffe655b1f8924e13bbd6 gas/config/te-svr4.h
+667553559949ecb7bc468a6fda1003f4 gas/config/te-sysv32.h
+8608f289632cd0949047ed48908e6fb7 gas/config/te-tmips.h
+5dc896f3c45078f34974fe05fb94ee3e gas/config/te-wince-pe.h
+5a92ddbf8b0d54fcf6a58ffd9db014e4 gas/config/vax-inst.h
+fd1ee35049f9bb5ca0b5b40b8109e49f gas/config/vms-a-conf.h
+ed8248ba3c34b041f1d8942b285d6196 gas/config/vms-conf.h
+cf987871e5d5e86f6aa12afbc89fc785 gas/CONTRIBUTORS
+0636e73ff0215e8d672dc4c32c317bb3 gas/COPYING
+93966e2f69923efd785e5b237882ee3b gas/ChangeLog
+416a26a1162590c860fb1fefffc54cca gas/ChangeLog-9295
+6d8b241f06f94a04f180294552ee41a2 gas/ChangeLog-9697
+f577af562fb6cac4e22d6b5ae67235ac gas/ChangeLog-9899
+d618facc3e8ce8bf3d02ba452e1be6ab gas/MAINTAINERS
+39d2ef4586b044c71e1b25e11f01770c gas/Makefile.am
+8cc6e57aadf4a95a2cc6e84622d7a584 gas/Makefile.in
+d9a8e0c26cac87a5c4618803fe69ecde gas/NEWS
+0ed4366c2ef5bde49890368940dc9fa3 gas/README
+e8b1e941cbf0b441da52f38fd2ea9725 gas/README-vms
+c66ab308e6d86fac0000d1a9322838b1 gas/acinclude.m4
+a8c1d7d4a843b2bbb535b4a4dd18250b gas/aclocal.m4
+03e0763a9fb35514bc09c8996b7085c4 gas/app.c
+eff2e5ce523bf7a686514a173b15dffd gas/as.c
+d21fceea67ce18ad9b2fc2b50a4890b7 gas/as.h
+ce55cfda10b264cbfdc248126c3900a3 gas/asintl.h
+4ad50f7119638ed918dc5e933cbc79d1 gas/atof-generic.c
+83cd2696fbb8562e7bcc5e6fd3469d4b gas/bignum-copy.c
+6c1f323383a5aa266a30c6dce43cb3c2 gas/bignum.h
+fc95edffacb54139f23cde8ef7c5338a gas/bit_fix.h
+e0edadd3d75337d594b80a948e84dc19 gas/cgen.c
+93ae143312ab0263ba42449e72812466 gas/cgen.h
+65dd281f88f92212b81bb354359b3336 gas/cond.c
+e46511c2ddcf00256c007081122f6678 gas/config-gas.com
+0e72698314c35bffec6fbe56bb16b037 gas/config.in
+cb9151563960e5549f5a7589e2306ddc gas/configure
+656e9c370441ed0eab7b03ae7cbf6a05 gas/configure.in
+ce2657cbdcb3edd953071c06c9b1dd79 gas/debug.c
+402433baaaa08f73e6ec935228d2e751 gas/dep-in.sed
+a74f17c6e39879bec1b6c22f7efbe15d gas/depend.c
+baac77c4874c43e1988e4107902bfcc7 gas/dwarf2dbg.c
+48978310605e322a8e363abc670e4299 gas/dwarf2dbg.h
+334d209fb55570888b71cb2598cbe678 gas/ecoff.c
+6043841d5599ddf995a8b47d1cffd67a gas/ecoff.h
+1eba6fbdaadbdd2243bcc4b6d0af8d82 gas/ehopt.c
+00cb7c9053c5257a28c7b14bf3ba530b gas/emul-target.h
+9ed7a9759d74c52da5c6ddb105793a80 gas/emul.h
+a74446c8c5e92047cdff2c40bfe0358d gas/expr.c
+f3b6270c8845c6c107c54c7f2a253905 gas/expr.h
+46f797867db9532ae3d0bafd51b97754 gas/flonum-copy.c
+88a7a6f8beb89c64d0487f0435746162 gas/flonum-konst.c
+e0f94431352445bfd0248fca9d596a79 gas/flonum-mult.c
+c7ed6951a01ab294949f728025296559 gas/flonum.h
+245aa47ce9c897522cabd3720ac685ba gas/frags.c
+22613d9d7758898d23c91c079126486c gas/frags.h
+932dbd125da6bcbf316a99963a2324b6 gas/gasp.c
+f728bf7e9df39918cf8c7467d5fa7478 gas/gdbinit.in
+72fe90cd787ff809b5c02e66b2be8615 gas/hash.c
+0c8ac311024b1a1c9407481b1b5ded65 gas/hash.h
+f41714a2810e0761286edf62303e7415 gas/input-file.c
+ef2c53101aaf2228b99af4a3cb998bc6 gas/input-file.h
+bd72b56b17776db5213e62957bea90b6 gas/input-scrub.c
+5964244bf6d281a73ab46ab17be0368a gas/itbl-lex.c
+9200cf41520a1e8587c19aed6869a357 gas/itbl-lex.l
+def5f405f4e3bdd8b9a64ece946a56d0 gas/itbl-ops.c
+9d79f77cf1068c48c66d8acc7fc7c2e5 gas/itbl-ops.h
+ff5b692c56eee9174c57aba5edafc2d2 gas/itbl-parse.c
+04faf433a35cef1d6b5e9f445aaf6acc gas/itbl-parse.h
+fee754c47a1f10687973e317fe161572 gas/itbl-parse.y
+c7fe4764b8aa7ac76eeed0a1de98a8d9 gas/link.cmd
+687e8b5eb64646e802334fd785512a73 gas/listing.c
+51a86eb608f9cc9b92c8440f70680755 gas/listing.h
+d2b49d8a9ab84fa058d43a8fffd84745 gas/literal.c
+0c618ba312cb7c4f246fe939776fa626 gas/m68k-parse.c
+afe7080b22bc9b5e058f473469ced030 gas/mac-as.r
+a4a9f7b8a8e7527b24fbb57cff4a4464 gas/macro.c
+02ced8f7312abb785d59bc46d2f6faf2 gas/macro.h
+b905aee5c2a099f7d2579459121c7e2b gas/make-gas.com
+c3cd93b34bceee0379472974735c6f6b gas/makefile.vms
+007bb191f3cd4818e1aac2a1336166d6 gas/messages.c
+829e2d776ea96775c8298d5efddc22e7 gas/mpw-config.in
+3c7892f4cb73a22801aa4656e36bb469 gas/mpw-make.sed
+8925b5dd2d5e457299606423ca0669ee gas/obj.h
+6b4712303087a1975b1e58cc127451bd gas/output-file.c
+f230d70e4b789b3d73f36f973a5eb7c9 gas/output-file.h
+0cdf89c7fec5963728f7b9ab8edfba66 gas/read.c
+33357007068017c6e90e46e29b39ffed gas/read.h
+9f7ed301bff7322b8e9125fa056043a6 gas/sb.c
+2b67b3b168645cf8e314736d3519e07a gas/sb.h
+7d3304c9c70e2a011f20317ec1b0986b gas/stabs.c
+1ded054093de910d9786c62bc4fe8cc6 gas/stamp-h.in
+271afa5c22a7c0f8786ccb8b01d9e160 gas/struc-symbol.h
+e3625971672de7093f197ab2f914e895 gas/subsegs.c
+91f17641c771f97990df11e59528313e gas/subsegs.h
+1b53ecaa6492c3e678d6b57a859d3019 gas/symbols.c
+caed2f1334ae1863b7c980bc87fe4ea0 gas/symbols.h
+125df5f0e0237ef8ee9d2e6f6e4895b6 gas/tc.h
+df57d3e0b2752e5caab5294b3acee98c gas/vmsconf.sh
+5902e6f68e2f26d6c221613773ee60a3 gas/write.c
+0cb130121023e6ae86e5334bc4289bd2 gas/write.h
+bb547fe62002b67ae96d3c52f72f9de2 gas/doc/Makefile.am
+c6ba177084edd850d124cc006cc92d90 gas/doc/Makefile.in
+50cb23706106552b0aaea405926fddfa gas/doc/all.texi
+41db9086dadd0f035d15cb3d92bd1203 gas/doc/as.1
+09c2c2346e4d23d483a1c8387bd9ee65 gas/doc/as.info
+27f82e79417a9a9c56cae68dca90ac8c gas/doc/as.info-1
+190356efeffe16478a901ddf903f5481 gas/doc/as.info-2
+c9de0e0b3797e590cf3003a12ed9d77a gas/doc/as.info-3
+ce0eeb02af7b87d8b44bda86bbea4299 gas/doc/as.info-4
+23f7d8027aa3dd16ad5eb3e0f70b9004 gas/doc/as.info-5
+69df70b521608ae16fdc07d42f0ac776 gas/doc/as.info-6
+41fe1393b25845f0a16585f076c52f3c gas/doc/as.info-7
+94705e2e9f12c6ec33493e5dc00d4343 gas/doc/as.info-8
+7d9b25c1b98ad0fa88eefebaa392c62c gas/doc/as.info-9
+fb69b5f7d430d6b6868c588e860bbe1d gas/doc/as.texinfo
+b2710b1a5c608a199632eb4ca62879a8 gas/doc/c-a29k.texi
+e1246a8018d7542d2fb939fc4a7a1c97 gas/doc/c-arc.texi
+89bf6ccbd50dfbdf7d9e91268529bdf5 gas/doc/c-arm.texi
+b3a20638095fce502b1eeccf64f66710 gas/doc/c-d10v.texi
+670a3dc2d7f147e973d1540d3e02059e gas/doc/c-d30v.texi
+6e93279725365b5846b332617955f22b gas/doc/c-h8300.texi
+1e370e38bad3cf84368e988413793571 gas/doc/c-h8500.texi
+62dcca66209c5338e5c54b7ea5e8861c gas/doc/c-hppa.texi
+1dc91c33e16d803ae5fae94c2e252b33 gas/doc/c-i370.texi
+341631d74503ce0677593ad8fd986de8 gas/doc/c-i386.texi
+58649643d80456d371950f0070bcda72 gas/doc/c-i860.texi
+ea4e1e33196df6f48640ae7c65efb947 gas/doc/c-i960.texi
+d79215d783b086c7969d6d26ea809d73 gas/doc/c-m32r.texi
+c9e04ef4c13c6eac41ab3ddc349be805 gas/doc/c-m68hc11.texi
+fd6ddbf4269ab33bbd5068e217009190 gas/doc/c-m68k.texi
+1488e5d07664beab791c25a11db8570b gas/doc/c-mips.texi
+3628d384e5726c66a939e1c9fdf31875 gas/doc/c-ns32k.texi
+6aac98d95352354b58b28bae551dd667 gas/doc/c-pj.texi
+25a30794f997e20f00e3cb27e8f113b4 gas/doc/c-sh.texi
+b4aab35c9ce2e0838c07f4bcd355a1cf gas/doc/c-sparc.texi
+21247c01ed3288605b5e67e6748ca785 gas/doc/c-tic54x.texi
+db5be52820ad37742a74b3631f692667 gas/doc/c-v850.texi
+62d8eef5a8398fd70a64d9da0ccc7ff3 gas/doc/c-vax.texi
+2bbbb2f3dad72572baee0286601b7888 gas/doc/c-z8k.texi
+79b45497aca1b0c05295f8f2faee4b6f gas/doc/gasp.info
+7cf89001aa89d597df2f58f5051fc0d0 gas/doc/gasp.texi
+d33e75b81c9ea97cd428a743e350350e gas/doc/gasver.texi
+73b674cd9bd9d15802cc28334b6a25e1 gas/doc/h8.texi
+6f277ec72104f4c8bbab68bee47e4676 gas/doc/internals.texi
+f2f0c3f4a9bb3bbcd41afa94d2a67fbd gas/po/POTFILES.in
+bfb5c178c2404196ab54d7532a61e3d4 gas/po/Make-in
+8d085be47b4986e1d1f7b90d59722bb2 gas/po/gas.pot
+981673f7f6a103cf076b1a382a5dd4d7 gas/testsuite/config/default.exp
+f6a74f819f082443b504808004041bbb gas/testsuite/ChangeLog
+6fdc3af8b63d5c8dd0a98137215d3753 gas/testsuite/gas/all/cofftag.d
+acc0977114e4b9e65b9d2aa95c35ff8f gas/testsuite/gas/all/align.d
+a60277af402def6d8b222eb7aa29fd72 gas/testsuite/gas/all/align.s
+a43c5656afe02c36a6e1ef61a6027724 gas/testsuite/gas/all/cofftag.s
+7642a824a63aa87c0f0c07ebab2ea9ba gas/testsuite/gas/all/comment.s
+b693149b9cb9c53162d7d2eddc0ee4e8 gas/testsuite/gas/all/cond.d
+a0744db73ab7d631e72a1107ffb1c1d8 gas/testsuite/gas/all/cond.s
+7ec8ad8becdaf04c09bde661a8ae427e gas/testsuite/gas/all/diff1.s
+a3ed4c57221d0e6ae68721825604f04d gas/testsuite/gas/all/float.s
+d5cade1146f240feeeb31fa7cee691f3 gas/testsuite/gas/all/gas.exp
+ff0067e6fc03e40d69f6d4a3df69c315 gas/testsuite/gas/all/itbl
+ae3b5706bcb2b5451fa0da52c419c576 gas/testsuite/gas/all/itbl-test.c
+0a1bc24fd58a8e10476fda0bd5b649ed gas/testsuite/gas/all/itbl.s
+b61a6aca515ae31b7be7abda0a152bbc gas/testsuite/gas/all/p1480.s
+c9637636fc150630e2d44c82892f2551 gas/testsuite/gas/all/p2425.s
+856ac38b9fe37e63d8173f9299961115 gas/testsuite/gas/all/struct.d
+0b2dc0f909d4928a8de943eade54a345 gas/testsuite/gas/all/struct.s
+8ba076a868d6d446a4ab1462add54fd3 gas/testsuite/gas/all/x930509.s
+1a8de6cbd6b3c02a2a483c8cd6ce42a7 gas/testsuite/gas/arc/branch.d
+19197f29a6d87e3e78495e7a47ebf496 gas/testsuite/gas/arc/adc.d
+1b06ceb2288c093be970d894568fa5da gas/testsuite/gas/arc/adc.s
+65084e57125295318062997e920c19af gas/testsuite/gas/arc/add.d
+75e6baa15e0d53599edfd7ec770375b6 gas/testsuite/gas/arc/add.s
+4927747f607ee7be7bf50e7fd6ef02ee gas/testsuite/gas/arc/alias.d
+54f01e033f0d248759b8fc6fb71a06db gas/testsuite/gas/arc/alias.s
+b8a7885db402fc70652f0410a5820d50 gas/testsuite/gas/arc/and.d
+b8fce093a488f7b1c2e6418f7c31c9e3 gas/testsuite/gas/arc/and.s
+4bafbcb8f67131a387ad56e5b1bcfac1 gas/testsuite/gas/arc/arc.exp
+aa32ccad03a6d294726c0e58e6d2250a gas/testsuite/gas/arc/asl.d
+af955c8cf38c553fa4221383c64b6b13 gas/testsuite/gas/arc/asl.s
+56384c65539866b6e7fc0a0a05eabce8 gas/testsuite/gas/arc/asr.d
+9887c6e68d8176e71d75b9d91604e914 gas/testsuite/gas/arc/asr.s
+5288b51666fdc9bb0c65a07671c3c9fd gas/testsuite/gas/arc/b.d
+78b81ebb3355a47d5c478e1e56444ffb gas/testsuite/gas/arc/b.s
+402522bfb20c4387e1faba27224186ac gas/testsuite/gas/arc/bic.d
+ab22388e1552b8926d7b8960f9a6fe20 gas/testsuite/gas/arc/bic.s
+ec7abac24fa3c402b31f624a3ff9de77 gas/testsuite/gas/arc/bl.d
+e2c237cc25d1cfc82c9285818858e329 gas/testsuite/gas/arc/bl.s
+8432db29eb95c38348bb4216a28f43a4 gas/testsuite/gas/arc/branch.s
+1165c7d246f9e1a548af4c5b7f4e5f60 gas/testsuite/gas/arc/brk.d
+872c85cca67988958ef95591b4fecb7d gas/testsuite/gas/arc/brk.s
+acf1eca3b061941ff367bba7654f8a2e gas/testsuite/gas/arc/extb.d
+0ab2d9abcadcf93d9b6dd8eb0962d7ab gas/testsuite/gas/arc/extb.s
+cb8963efc4b0412d0cf5f6d2d4412d14 gas/testsuite/gas/arc/extw.d
+e66a84df62389472e90d215276e87384 gas/testsuite/gas/arc/extw.s
+53684f8cb4cc475d5632ffa22555b6c5 gas/testsuite/gas/arc/flag.d
+2b6e2dd0335ebc45bb694de8cc2f4c6b gas/testsuite/gas/arc/flag.s
+dd35c9020fa1c43318beec05e9d63dd6 gas/testsuite/gas/arc/insn3.d
+c9f07db5b59a1a725b1cb520c7dfffe2 gas/testsuite/gas/arc/insn3.s
+6623a00a22962dfb1afcb24a2f8920bb gas/testsuite/gas/arc/j.d
+7ee6358f55317d08d08f864238c78515 gas/testsuite/gas/arc/j.s
+431696fbe85080394483a455208af19c gas/testsuite/gas/arc/jl.d
+4a56cf56903f8e4c25dd7865dd1a92df gas/testsuite/gas/arc/jl.s
+59910ad05ca1dd842920f3ca9f4b491d gas/testsuite/gas/arc/ld.d
+d5a8532516e863d33880e4a649f8ebc9 gas/testsuite/gas/arc/ld.s
+4d7ba9b754c7afdba41dfec82239bc30 gas/testsuite/gas/arc/ld2.d
+28379656fb4f5c37963ed6991c582ed6 gas/testsuite/gas/arc/ld2.s
+af5c07a06b5ab10049b70efc03fe4310 gas/testsuite/gas/arc/lp.d
+657d876ad61daec2d6de3a4269bfeaf3 gas/testsuite/gas/arc/lp.s
+0b801348feff41c1625f9c681af122c5 gas/testsuite/gas/arc/lsr.d
+a9c2ebcafcfc68a8bb7014172813ee2c gas/testsuite/gas/arc/lsr.s
+ae005c091f26b4ceac5b19e8c13d8835 gas/testsuite/gas/arc/math.d
+c632e7e9e19d65e75557a5e42d513905 gas/testsuite/gas/arc/math.s
+42cc6922491da263d6ab87fca2593794 gas/testsuite/gas/arc/mov.d
+5bbe3186d21f23263b4a3743cfb1c0e5 gas/testsuite/gas/arc/mov.s
+ff9e23ba171eb9fab4ae4bf71ca1964f gas/testsuite/gas/arc/nop.d
+4b5a9a087212c040ef94e7cfc7c64113 gas/testsuite/gas/arc/nop.s
+c596ab98be90e4fcdb2e92e35e3ca66f gas/testsuite/gas/arc/or.d
+a9984178263c3d2fdc55aa82c0850038 gas/testsuite/gas/arc/or.s
+152d55e75d6f7079d969d4582e98e32c gas/testsuite/gas/arc/rlc.d
+7186c231f11739791f407f6ad9bfdfcd gas/testsuite/gas/arc/rlc.s
+f67f42d8077195a9ed9da2cd3ff93889 gas/testsuite/gas/arc/ror.d
+0f4fa90aec1e6518392567bb89d7420f gas/testsuite/gas/arc/ror.s
+cce2b1054c09a0d526bc548ea162dc6c gas/testsuite/gas/arc/rrc.d
+2a33859e8d1450a314390aee1eed985c gas/testsuite/gas/arc/rrc.s
+7d0b42fa66729b4df6f26c5daa47c6ee gas/testsuite/gas/arc/sbc.d
+6d4e549168ccb7340e4c87d6c3ca9f06 gas/testsuite/gas/arc/sbc.s
+b0ae0aa5baea6246ee417710ad641653 gas/testsuite/gas/arc/sexb.d
+e3e0516272a27d4fdde6e78fcfc0beae gas/testsuite/gas/arc/sexb.s
+753f0757cceff8d9fba7da206607b32c gas/testsuite/gas/arc/sexw.d
+505c87905fe1b3b19909f4ff658880e8 gas/testsuite/gas/arc/sexw.s
+04e291c6c4227ad3ea068b33bcca2bee gas/testsuite/gas/arc/sleep.d
+4b2c68f86079ddc3738d423a7d9286ec gas/testsuite/gas/arc/sleep.s
+dd35c9020fa1c43318beec05e9d63dd6 gas/testsuite/gas/arc/sshift.d
+285d03daf381a393d3099a8ff7ad1b92 gas/testsuite/gas/arc/sshift.s
+15bcea7e5243fe6d08107039eff96e76 gas/testsuite/gas/arc/st.d
+0416aa9321cbdc9a725bc459453431cc gas/testsuite/gas/arc/st.s
+e913933835012629d5199008027146f4 gas/testsuite/gas/arc/sub.d
+beca3fc3b72a58cc4eadd2369592d87f gas/testsuite/gas/arc/sub.s
+f2c956a2c8d124cf6924a93a3b18641d gas/testsuite/gas/arc/swi.d
+458a27c1ed4ecb3d834bc928af3a1969 gas/testsuite/gas/arc/swi.s
+ca575363e502545e2e5d2a6ab64c6af8 gas/testsuite/gas/arc/warn.exp
+8bdd04be09313ff33dba220b78d26d8c gas/testsuite/gas/arc/warn.s
+9020b43e63291859faac20e7065787d9 gas/testsuite/gas/arc/xor.d
+c1a790a7f1cc4e88b2235b226fae54b2 gas/testsuite/gas/arc/xor.s
+218ceddbec7e4efdd63a6186a62fded9 gas/testsuite/gas/template
+abe5158404494a7b0e74db43f784559a gas/testsuite/gas/alpha/fp.d
+eb3ec5f424ad44c0e52fe488caa1402e gas/testsuite/gas/alpha/fp.exp
+820ca91b26e95c2ba803e8b9a0ebe76e gas/testsuite/gas/alpha/fp.s
+a1361a5b37b54c593cbef99cd85f28a9 gas/testsuite/gas/arm/arch4t.s
+2ced8ddb8b24edb7b1d3b451474f7385 gas/testsuite/gas/arm/adrl.d
+fea3d814c57f0d641ed3e2b30e3fe9da gas/testsuite/gas/arm/adrl.s
+035a15045a9f50492d980d3fac9ef34a gas/testsuite/gas/arm/arm7dm.s
+699d3b85edfec44597049b633c6e75ec gas/testsuite/gas/arm/arm.exp
+217d22388024d3ceb3c80613491f9d13 gas/testsuite/gas/arm/arm3.s
+1eb3fbffc325dda43f0f98e8237840f7 gas/testsuite/gas/arm/arm6.s
+3b3aa7939f5a6f1b53dc96025bbcfdd4 gas/testsuite/gas/arm/el_segundo.d
+70e3b2ae51a898b7bc350eee59f7b03c gas/testsuite/gas/arm/arm7t.d
+acdb01f03b31a3f8cae20ac99db63be5 gas/testsuite/gas/arm/arm7t.s
+d594c5bb1795675960702c68c17df8aa gas/testsuite/gas/arm/copro.s
+9b3a93b21d21ee58a49c1d0039a555de gas/testsuite/gas/arm/el_segundo.s
+6f3f35f3d1f4b051fddba9412542e087 gas/testsuite/gas/arm/float.s
+2134e910175749a301307015d968cbb1 gas/testsuite/gas/arm/immed.s
+9bcdfba3761c8c15468b82671d2eee7d gas/testsuite/gas/arm/inst.d
+d451b7fb925e026001176d59277d67c5 gas/testsuite/gas/arm/inst.s
+b2fd7458f8e0d2cf15a9249f9fedac4d gas/testsuite/gas/arm/le-fpconst.d
+01ece05c7a31cb680e04d26a1f7dc281 gas/testsuite/gas/arm/le-fpconst.s
+b1084d71794fbbdf4ceea2e42a375e36 gas/testsuite/gas/arm/msr-bad.s
+b1c9f59b3896c3839bc9dd10c6462264 gas/testsuite/gas/arm/pic.d
+528c3bb56cc6ae2b19157b75203221c6 gas/testsuite/gas/arm/pic.s
+55a46d871a3fe4417039c85265d830a1 gas/testsuite/gas/arm/thumb.s
+9ff4ff70b161234084582258230d98cb gas/testsuite/gas/arm/xscale.d
+814449ccde23eaac315e913ef381756a gas/testsuite/gas/arm/xscale.s
+109b1e2f911068bd6a3280a90061ea8b gas/testsuite/gas/cris/binop-extx.d
+eed41e12ba1edecaaa2d3c3789332377 gas/testsuite/gas/cris/addi.d
+04449730390af545ba20b42dccd5fe09 gas/testsuite/gas/cris/addi.s
+29cdb8544456ec0d40f1b406db48473a gas/testsuite/gas/cris/binop-cmpmove.d
+d2a858f83be22b61d2299cc2e5e10a0b gas/testsuite/gas/cris/binop-cmpmovx.d
+e31ad643fe65589cbbdb034e1e5f197f gas/testsuite/gas/cris/binop-segref.s
+7f94279e488ea079e8a1568dbeb09974 gas/testsuite/gas/cris/binop.d
+0128aaa3d875adaf235960d488417afc gas/testsuite/gas/cris/binop.s
+a3e707e09eac0416e1d96af6bc910dd0 gas/testsuite/gas/cris/bork.d
+67a42ca84f31bc333b785695009221fa gas/testsuite/gas/cris/bork.s
+d77f50b1d3d668af993e9fb633b9f401 gas/testsuite/gas/cris/branch-warn-1.s
+eb037cb8821e59f91c4e4b787f56cd78 gas/testsuite/gas/cris/branch-warn-2.s
+6cf3f5c1d500bd9b0a1de2c3416dffe0 gas/testsuite/gas/cris/branch-warn-3.s
+6475601840a6f889ee9eccdc91023bf9 gas/testsuite/gas/cris/branch.d
+caff7842b5ef92ca805daf6782c1e414 gas/testsuite/gas/cris/branch.s
+4e520a3efff1f37f0de6df15c0a34c10 gas/testsuite/gas/cris/break.d
+700be97c0689c4196f0da1842abcc231 gas/testsuite/gas/cris/break.s
+2aaf552ea3b069446af5a6a18ad2c7e0 gas/testsuite/gas/cris/brokw-1.d
+82d4b8908cfe41325173b31ad92d03fc gas/testsuite/gas/cris/brokw-1.s
+a13ae25cf3ec8d458caa16dc63c2b828 gas/testsuite/gas/cris/brokw-2.d
+99acc6281a586d428c2e81f5a3e76020 gas/testsuite/gas/cris/brokw-2.s
+9fb7e1ca811a353db12fab28f6d7a630 gas/testsuite/gas/cris/brokw-3.d
+b5ea3631270db99bda62649c3d96f03d gas/testsuite/gas/cris/brokw-3.s
+c4d5e7abbcaf212d987111b7c1e2040e gas/testsuite/gas/cris/bwtest-err-1.s
+d80841d50a9461e6e7533c43e44dd4d1 gas/testsuite/gas/cris/ccr.d
+fb52bd22addaa45d2f47fc8fc5bcc63f gas/testsuite/gas/cris/ccr.s
+0d39e0e05353afc3532e275b909fdbeb gas/testsuite/gas/cris/clear.d
+0c2ea11d1047cf554432ca3d4e9d03cc gas/testsuite/gas/cris/continue.d
+c87164ab4042aef14e7b7bed37d62d46 gas/testsuite/gas/cris/continue.s
+944c9803d087eee985d9f792da7c29be gas/testsuite/gas/cris/cris.exp
+ab7c0afd8d2cd448c3b0576af049256b gas/testsuite/gas/cris/diffexp-ovwr.d
+a5073cd621e46c9b6b371425b3a8059a gas/testsuite/gas/cris/diffexp-ovwr.s
+ee8c39803ebc83959f29ae641da137a0 gas/testsuite/gas/cris/fragtest.d
+8de93219134f7b607edec27266d57c27 gas/testsuite/gas/cris/fragtest.s
+37ac7adec86ed5a8fd0ef39db9a607f4 gas/testsuite/gas/cris/jump-type.d
+1763110b16f52ce71e7111a466e55493 gas/testsuite/gas/cris/labfloat.d
+2788020656f9952ba2200bfe6ed8b5f6 gas/testsuite/gas/cris/labfloat.s
+63b363c29b7f111d3522135b27a5baac gas/testsuite/gas/cris/macroat.d
+f2ac553ad97357a22204205c1c2c64d5 gas/testsuite/gas/cris/macroat.s
+7972fbd01b55832d66e9afe5b21a44d9 gas/testsuite/gas/cris/movem-to-reg.d
+06f511d9c5dfbbd6ec70e6b5fd954735 gas/testsuite/gas/cris/nosep.d
+fc504e0b22b646ea6326e679962d2062 gas/testsuite/gas/cris/nosep.s
+e87fda2ed120152aed5ef5927f48514d gas/testsuite/gas/cris/oneop-type.d
+2cdc382a264a948b2290859f9b0722f2 gas/testsuite/gas/cris/operand-err-1.s
+a9f5ed5476ee8f09aeb8676f6751b01f gas/testsuite/gas/cris/prefix.d
+ce78d7541cba3153c036b973d48c2233 gas/testsuite/gas/cris/prefix.s
+cef8a89ceeecbfe4d7566ccbfdd4a357 gas/testsuite/gas/cris/pushpop-byte-sreg.d
+1e8ffe5e395258d271453a7d182b125e gas/testsuite/gas/cris/pushpop-dcr1-sreg.d
+d97ab94343d60cc33c71b43c1fb5cabd gas/testsuite/gas/cris/pushpop-dword-sreg.d
+b27c33ec812e847a147601591093ccf0 gas/testsuite/gas/cris/pushpop-word-sreg.d
+38ca765cb65923ca112c69a5b347c04e gas/testsuite/gas/cris/pushpop.d
+5f57132a6921dd590b853ab871c16039 gas/testsuite/gas/cris/pushpop.s
+e4c7c0f31b9839d5536151310f544ee3 gas/testsuite/gas/cris/quick-s6.d
+7fa1053d2735accfe207c6bd9dc2c699 gas/testsuite/gas/cris/quick-u5.d
+0c9904527686c1ab40e8b41ebd824baf gas/testsuite/gas/cris/quick-u6.d
+078d655cbc167283db8ba953c3148a1b gas/testsuite/gas/cris/quick.s
+b76b6dbc2e3d8675977eba8b2c80fdeb gas/testsuite/gas/cris/range-err-1.s
+fb6ff1ccf6bc8984d311335bb1c65de2 gas/testsuite/gas/cris/range-err-2.s
+1aa963985a948084e7f57bc64ae394dc gas/testsuite/gas/cris/rd-regprefix-1.d
+483b2b941bdac034989505d636c292bb gas/testsuite/gas/cris/rd-regprefix-1.s
+ec4ae60abafccecdf76cfa6db8973836 gas/testsuite/gas/cris/rd-regprefix-1b.d
+ba3a8b1d41f12777d99bb3b0f0242e4a gas/testsuite/gas/cris/reg-to-mem.d
+c36b1354d494fa3d14e0f53cbdad14d1 gas/testsuite/gas/cris/regprefix-err-1.s
+daf514b146b6d788c0d44a44c78fb084 gas/testsuite/gas/cris/regreg.d
+57d564c932d2ec3a002e095c03b43755 gas/testsuite/gas/cris/regreg.s
+9b3f927669d4ef8900289aa5ec407517 gas/testsuite/gas/cris/return.d
+618b1c16f597a8c927d63668befe360c gas/testsuite/gas/cris/return.s
+e0ccfd23d8757d8497bf9428ced9a2be gas/testsuite/gas/cris/scc.d
+dfef1f180533d93400114eb0106e4047 gas/testsuite/gas/cris/scc.s
+a4016c7d0fb8462d531bedf3d29db82a gas/testsuite/gas/cris/sep-err-1.s
+0d8192d5d6fc2d3cf97a212a82d0ce7e gas/testsuite/gas/cris/sep-err-2.s
+faaccaed133c943daeb19f14b890ac70 gas/testsuite/gas/cris/sep-err-3.s
+62e83deae56f617278b9cc972afe4da2 gas/testsuite/gas/cris/separator.d
+e929807163f06ba801c4d3d98eef047a gas/testsuite/gas/cris/separator.s
+7dd5458e20d0ecb5c21cff9fa0a9f46a gas/testsuite/gas/cris/shexpr-1.d
+f6aed27cb988eadba85e4dacfcef485e gas/testsuite/gas/cris/shexpr-1.s
+47b5ed349286a89189e5915c07a7d945 gas/testsuite/gas/cris/sreg-to-x.d
+36ee6b68e98b7cbd9ffd498673bb83a8 gas/testsuite/gas/cris/string-1.d
+ba96569c4c3a69683f9eda2f2e804ac9 gas/testsuite/gas/cris/string-1.s
+5649d5e6ddaf6789f15e1b8cb1979b1c gas/testsuite/gas/cris/string-2.d
+6ddd84549c2ae105a7ffc9e339d1e37e gas/testsuite/gas/cris/string-2.s
+80c15d753b5f84e6b2dc8834e2f8906e gas/testsuite/gas/cris/test.d
+b7120a4705aa9a380d545c5a796c3159 gas/testsuite/gas/cris/unimplemented.d
+962270c17acff6001a62ba57047c826a gas/testsuite/gas/cris/unimplemented.s
+ddd6a1784dc2c7a34042c0a5fb3c1800 gas/testsuite/gas/cris/unop-mem.d
+ec2af75e8927ac1b38d610129de5962b gas/testsuite/gas/cris/unop.s
+75063b64ce4c7ce0ccb58e946587b1fb gas/testsuite/gas/cris/us-err-1.s
+57983a53289a7da6c1ed399d7fe0a3e9 gas/testsuite/gas/cris/us-err-2.s
+89b77f3261be6a0b6f7c2117ec573b35 gas/testsuite/gas/cris/us-err-3.s
+a325d1070d73f0a40781fd4c0feb8055 gas/testsuite/gas/cris/x-to-byte-sreg.d
+5f4256191fa514d404b9b31f0b48d973 gas/testsuite/gas/cris/x-to-dcr1-sreg.d
+183314b6dae188dbb4ed4b3dfbfbd02a gas/testsuite/gas/cris/x-to-dword-sreg.d
+be4438db4d0c5d5a732331453a4f54b3 gas/testsuite/gas/cris/x-to-word-sreg.d
+c1a784e8e7fc1cb601b7c63df2e1320f gas/testsuite/gas/d10v/d10.exp
+0004da131d3e5488db3b4b89bd259250 gas/testsuite/gas/d10v/inst.d
+bbe173f89d3ad611d31b7cf43d88291c gas/testsuite/gas/d10v/inst.s
+d7768075c27bdbdff4a1347c6b1746d0 gas/testsuite/gas/d30v/bittest.d
+a15d68d40c502f8fb891fb71e6a331b4 gas/testsuite/gas/d30v/align.d
+8ab5843e51782cc8150825c0aed13da9 gas/testsuite/gas/d30v/align.s
+8a9471a2ce14a0c94c7af09fd8cf6f7c gas/testsuite/gas/d30v/array.d
+afb9ee8fc39b6c6a3b5a607f0958dd2b gas/testsuite/gas/d30v/array.s
+36ccce5414200c372215e06d70d6aad0 gas/testsuite/gas/d30v/bittest.l
+4b9689db23a80dfeeb4e6217aaf0a8ad gas/testsuite/gas/d30v/bittest.s
+df0c590e221f5dd7900a1c128978ecea gas/testsuite/gas/d30v/d30.exp
+5c2ba5b08a8d87ddfc1a70cf2d7c90aa gas/testsuite/gas/d30v/guard-debug.d
+739c4467a3344e1787f7b4bdbf919705 gas/testsuite/gas/d30v/guard-debug.s
+24a691232054571885f6c30112e51658 gas/testsuite/gas/d30v/guard.d
+59254ab788d218d38c2c0d6e71251e76 gas/testsuite/gas/d30v/guard.s
+748040da85ada059191e19f00e2488f6 gas/testsuite/gas/d30v/inst.d
+39cdbdd6bd65bb5930b303daa6d76dcd gas/testsuite/gas/d30v/inst.s
+02e401be332104808af7c8300005fe7d gas/testsuite/gas/d30v/label-debug.d
+7f982990c748276d508b09332cdae4f6 gas/testsuite/gas/d30v/label-debug.s
+c483a48ce51ab77c8dee11cfab64b50a gas/testsuite/gas/d30v/label.d
+7f982990c748276d508b09332cdae4f6 gas/testsuite/gas/d30v/label.s
+26406f9a3cbcac3df375ce96f2bf6d60 gas/testsuite/gas/d30v/mul.d
+d16bd2d8de2333b4d7ee533c7fbdb1c4 gas/testsuite/gas/d30v/mul.s
+3f5d45bfe5794cd78197dab5eba2c4e6 gas/testsuite/gas/d30v/opt.d
+cd67e61c7ea236940d9b65c880a564b4 gas/testsuite/gas/d30v/opt.s
+7ede5044d404df6c8e7e4397218784b3 gas/testsuite/gas/d30v/reloc.d
+2ed511260d2382d512257ccd75e39887 gas/testsuite/gas/d30v/reloc.s
+d06a422e5cd491385a39700e8488ebe2 gas/testsuite/gas/d30v/serial.l
+26005134b177b676ea077b771aa246cc gas/testsuite/gas/d30v/serial.s
+ecab3756772637d3e43ed51d3afe89dd gas/testsuite/gas/d30v/serial2.l
+4c96fc10e8ae0de631d7681473ac66eb gas/testsuite/gas/d30v/serial2.s
+fbd1fa6f75f8a3d34dd0eb6b9bcfecf2 gas/testsuite/gas/d30v/serial2O.l
+4c96fc10e8ae0de631d7681473ac66eb gas/testsuite/gas/d30v/serial2O.s
+7fc2a4f0d0ed0a1e698ef2e351bacd11 gas/testsuite/gas/d30v/warn_oddreg.l
+04cb44d9a5a4e2791243c475947c1dfa gas/testsuite/gas/d30v/warn_oddreg.s
+2e585cb42734f16db2d5af3c7e3b8ae0 gas/testsuite/gas/elf/section0.d
+a7e7b32e1106a12433dde4ce71313054 gas/testsuite/gas/elf/elf.exp
+94799bbca15898e61e62e52d81f0bcca gas/testsuite/gas/elf/section0.s
+045c78bad26109f03785866dccb0aef6 gas/testsuite/gas/elf/section1.d
+b892afd90c0c8f8d9b5486dcd484d815 gas/testsuite/gas/elf/section1.s
+8f760ce7cf5b0bcea1fd0c123134bc4b gas/testsuite/gas/fr30/allinsn.d
+f43f517834a1bcead42dab25e75f41d0 gas/testsuite/gas/fr30/allinsn.exp
+fdf34a19cb21c9273e472a9bb4c9e97f gas/testsuite/gas/fr30/allinsn.s
+4a1055775cc266d1a0458ce050e653d3 gas/testsuite/gas/fr30/fr30.exp
+2924c535df55b6a32889011860a29689 gas/testsuite/gas/h8300/addsub.s
+8b119bf28b7ba30807a8850b9edf96d3 gas/testsuite/gas/h8300/addsubh.s
+5b8c73d8de33afa02ff707f67065a1ef gas/testsuite/gas/h8300/addsubs.s
+d86b31775e7398f8bc4d446d9d0a017b gas/testsuite/gas/h8300/bitops1.s
+15fd0f35907c986489fa36bddebbb526 gas/testsuite/gas/h8300/bitops1h.s
+584a7cd8ad886afe1f0d2f9b5d817467 gas/testsuite/gas/h8300/bitops1s.s
+30ff0841f2e26ebb8e15aa636a64e4a5 gas/testsuite/gas/h8300/bitops2.s
+a741bf520d8175248d8c363dd660cad9 gas/testsuite/gas/h8300/bitops2h.s
+2e137c2f7cf12903edc7dd00bfe6d409 gas/testsuite/gas/h8300/bitops2s.s
+3d15e82abb0f85bdfacdbb653e083999 gas/testsuite/gas/h8300/bitops3.s
+82edeaa989ae932805db0608f8cc235a gas/testsuite/gas/h8300/bitops3h.s
+f5395cd9806896db584e3fbbdb548389 gas/testsuite/gas/h8300/bitops3s.s
+6249a5e4419949642c98aaa14f3d8b10 gas/testsuite/gas/h8300/bitops4.s
+5a394a0dbef8a7f14e4294b4dcfed8a5 gas/testsuite/gas/h8300/bitops4h.s
+791083648e92754b6c62f3201681ece1 gas/testsuite/gas/h8300/bitops4s.s
+23aecc0c8af29a4bf18f97a9607677d5 gas/testsuite/gas/h8300/branch.s
+1f02561f75f4c45679ba42b0492cc58a gas/testsuite/gas/h8300/branchh.s
+e251ed292c39572dbd1364f73d5fd32e gas/testsuite/gas/h8300/branchs.s
+f0e5262ac4229fe320614df5a40f35e9 gas/testsuite/gas/h8300/cbranch.s
+30d75e5d8c2ef426fe42a377456bda0b gas/testsuite/gas/h8300/cbranchh.s
+5fdbcffb87056d813eafd925d9c763f0 gas/testsuite/gas/h8300/cbranchs.s
+80cc8a6d96ee17417ea03077199ad4d7 gas/testsuite/gas/h8300/cmpsi2.s
+3be6267a929c5b26e8f4d69491d0877a gas/testsuite/gas/h8300/compare.s
+b2030d679f34f4563b5a00cbe2c1d072 gas/testsuite/gas/h8300/compareh.s
+94eec517c2a5cefb40f7bcc8a338a83a gas/testsuite/gas/h8300/compares.s
+437e6b6cef5f904dd70a700cd486f7ea gas/testsuite/gas/h8300/decimal.s
+9b32251ca7b543949470558b507ca6b3 gas/testsuite/gas/h8300/decimalh.s
+56fe63d196d46b2f8dc1c4bfca0c351d gas/testsuite/gas/h8300/decimals.s
+0c35be5ae497429ff49aa3076805fda3 gas/testsuite/gas/h8300/divmul.s
+d37984dfb136ed1c465a17ac6ff8cbb4 gas/testsuite/gas/h8300/divmulh.s
+d37984dfb136ed1c465a17ac6ff8cbb4 gas/testsuite/gas/h8300/divmuls.s
+f813008dac0b658d469085e795844664 gas/testsuite/gas/h8300/extendh.s
+4d7497fb959f22fd9f7b666d4c61eee6 gas/testsuite/gas/h8300/extends.s
+75a67be04365505ad29c72fef5a9ffe9 gas/testsuite/gas/h8300/ffxx1.d
+fac5432bff2a42ebe3ace2a5431b0028 gas/testsuite/gas/h8300/ffxx1.s
+67fb823dadfe9cc61cc4c40717871318 gas/testsuite/gas/h8300/h8300.exp
+d068dc8b49ea5e3a2841052399d04411 gas/testsuite/gas/h8300/incdec.s
+57ef072e39a9e088908da70b650fe6b7 gas/testsuite/gas/h8300/incdech.s
+68127cbf4156b232462ded46fb1eeb96 gas/testsuite/gas/h8300/incdecs.s
+ad670f4be1807bfa3361ea5dfdc0658d gas/testsuite/gas/h8300/logical.s
+4baf511d4fbb91925e6de834c9b49ea5 gas/testsuite/gas/h8300/logicalh.s
+c4d9cba61beedae407c0c1260e6e1d5d gas/testsuite/gas/h8300/logicals.s
+3c56ddac8216a69a609103570d7b3e49 gas/testsuite/gas/h8300/macs.s
+fb0d77314633b62d40a4a054311960e8 gas/testsuite/gas/h8300/misc.s
+0474a81ccc5b5408fc54aa171faafb52 gas/testsuite/gas/h8300/misch.s
+11bb474016acda38cc0db95df94487a3 gas/testsuite/gas/h8300/miscs.s
+9193c97fad2ede164c0c90d605b70f46 gas/testsuite/gas/h8300/mov32bug.s
+1883f564d24d685c8dc63486f070f4a6 gas/testsuite/gas/h8300/movb.s
+fcd326aa9537340e99b1100508c3aa5b gas/testsuite/gas/h8300/movbh.s
+7145f97672f9645e3de195a7fdf55a1b gas/testsuite/gas/h8300/movbs.s
+d8c9bc7371b9b1d46a2eefb32d90d58d gas/testsuite/gas/h8300/movlh.s
+0e5f5a058fd24a750a53bfa817b326a5 gas/testsuite/gas/h8300/movls.s
+3674b05426b7d9c23e487af7bb8465e2 gas/testsuite/gas/h8300/movw.s
+75e9728e4f42fb7fbedbba7ed96b11db gas/testsuite/gas/h8300/movwh.s
+b0068c567a3f9efc6b3b31cf95a5a318 gas/testsuite/gas/h8300/movws.s
+911d1f05cbac2099a9f3d2c76df2d656 gas/testsuite/gas/h8300/multiples.s
+4393180d58ab1ed9d690f02ff183b6f6 gas/testsuite/gas/h8300/pushpop.s
+4d82e273acc364dfaddc59b3a13ee22e gas/testsuite/gas/h8300/pushpoph.s
+8ff1c8b35100699d39d44f67e19a5176 gas/testsuite/gas/h8300/pushpops.s
+6cc6731a0e070e666e164d9163629113 gas/testsuite/gas/h8300/rotsh.s
+7bc113956c8ca4ddcd42503e4bd530e3 gas/testsuite/gas/h8300/rotshh.s
+811af24ecd9436d020bfaf84413f5847 gas/testsuite/gas/h8300/rotshs.s
+3f42a581ab454d64c32db9aee33ef424 gas/testsuite/gas/hppa/basic/basic.exp
+f0fc0667db6fc80b90e168e77d21a710 gas/testsuite/gas/hppa/basic/add.s
+98ee4fb8ed790b202a1c065b7e0b997b gas/testsuite/gas/hppa/basic/add2.s
+57ad58f96f1a781f50c99315319025b2 gas/testsuite/gas/hppa/basic/addi.s
+d9c4ae7672d35624f16301c6c3d2d6e3 gas/testsuite/gas/hppa/basic/branch.s
+018bafaddc464bf5344056a4a6ba62aa gas/testsuite/gas/hppa/basic/branch2.s
+2744044afb6af0ffe892e71482c7e83b gas/testsuite/gas/hppa/basic/comclr.s
+30e98c333c6c3c41f4230609d617d4bd gas/testsuite/gas/hppa/basic/copr.s
+18c064b287abc57be5f66793ce0a4ed8 gas/testsuite/gas/hppa/basic/coprmem.s
+593e94c43830b50ccf4ccf7aefdabc9a gas/testsuite/gas/hppa/basic/dcor.s
+54b1bb4ce869350a6860eea7ef011576 gas/testsuite/gas/hppa/basic/dcor2.s
+7f9d07824ecdd65dce64fdbb8ab88668 gas/testsuite/gas/hppa/basic/deposit.s
+9e7936d6dca987e90acb029a0794e50c gas/testsuite/gas/hppa/basic/deposit2.s
+4179bc45da0c3f5c674c51bce4f3ef42 gas/testsuite/gas/hppa/basic/deposit3.s
+5532f754b3ee74d823c916f73352f531 gas/testsuite/gas/hppa/basic/ds.s
+ebef581b3abd2e0a860dc45c474dcc77 gas/testsuite/gas/hppa/basic/extract.s
+f0c6b56da1f75e189baf27d8c1f535fe gas/testsuite/gas/hppa/basic/extract2.s
+51d8fb411be8712bd0c7ce811ad6dc38 gas/testsuite/gas/hppa/basic/extract3.s
+a982fc398cedf2e44201d59012ee7066 gas/testsuite/gas/hppa/basic/fmem.s
+a0babc25ea6d4372cb5eccc0ae3f4825 gas/testsuite/gas/hppa/basic/fmemLRbug.s
+91548514b195f47807497ea510c61712 gas/testsuite/gas/hppa/basic/fp_comp.s
+9847e0fce8c6da72b7f980b441367739 gas/testsuite/gas/hppa/basic/fp_comp2.s
+698e8f34a3b345696ad42ea0fe3a42dc gas/testsuite/gas/hppa/basic/fp_conv.s
+50c67d6e1a3d6914794a948be62b14f6 gas/testsuite/gas/hppa/basic/fp_fcmp.s
+67b6a72f5e598098f02c322b08238380 gas/testsuite/gas/hppa/basic/fp_misc.s
+bf748287a3393071018df9ef711ff79e gas/testsuite/gas/hppa/basic/imem.s
+382400fc1867cc374e7a9a97620ba203 gas/testsuite/gas/hppa/basic/immed.s
+3dcb29aed920c5fca9f33ae76fa7bf5e gas/testsuite/gas/hppa/basic/logical.s
+40808c7e14c9dd94905f168f5bd28a9d gas/testsuite/gas/hppa/basic/media.s
+3f9890f5f05691d773c5252cca7c3bdb gas/testsuite/gas/hppa/basic/perf.s
+5cc775342d33290ccc79a2c3392ba59c gas/testsuite/gas/hppa/basic/purge.s
+585389c4c1113b467f309f8b53564ddf gas/testsuite/gas/hppa/basic/purge2.s
+bc0a3320065bbb6f8c7226807fa35e7d gas/testsuite/gas/hppa/basic/sh1add.s
+7682c249ad6ac5dce5a7a0d5c70b9759 gas/testsuite/gas/hppa/basic/sh2add.s
+3976fa98bed24429b469cc702b660e93 gas/testsuite/gas/hppa/basic/sh3add.s
+69cfdc26fc07d25504dfb30978448340 gas/testsuite/gas/hppa/basic/shift.s
+f588468f60d1393a578d3147a655f303 gas/testsuite/gas/hppa/basic/shift2.s
+d35888a201d29276d5f468576ce69678 gas/testsuite/gas/hppa/basic/shift3.s
+b3128437c366866da97f401491e4854c gas/testsuite/gas/hppa/basic/shladd.s
+8ed6a738a1fd2383dbe99d68c8cf59e4 gas/testsuite/gas/hppa/basic/shladd2.s
+66715cf6565b3eabaabafd99e8b2dab6 gas/testsuite/gas/hppa/basic/special.s
+1af275b55a5680b0a941bfdf1e5496e9 gas/testsuite/gas/hppa/basic/spop.s
+cbe82b7200c01fac6ef8ad8c4c90e4a0 gas/testsuite/gas/hppa/basic/sub.s
+7f6527cc71e690f05a0d73c733c1b14b gas/testsuite/gas/hppa/basic/sub2.s
+c2fd7d2c7fc3f77c944b5af56ebbcb7d gas/testsuite/gas/hppa/basic/subi.s
+857c66689b29c2902448ccfc8b55d78a gas/testsuite/gas/hppa/basic/system.s
+9dec6c8e5b94b75cb0e0fb27c16ce4ee gas/testsuite/gas/hppa/basic/system2.s
+05e8ccf6f72f4a0efbdf0f852a206023 gas/testsuite/gas/hppa/basic/unit.s
+1ed85cf259a78d3d86ea435e74dfcbe6 gas/testsuite/gas/hppa/basic/unit2.s
+03008cde62428d4ff2464bef8cb8bcd2 gas/testsuite/gas/hppa/basic/weird.s
+73cbb56b2c330327d9c06ea89af0cd91 gas/testsuite/gas/hppa/README
+d93edd3b974fa05de350f6104c63af74 gas/testsuite/gas/hppa/parse/align1.s
+6a7df2ab8d1491f8f64f60fb0a359558 gas/testsuite/gas/hppa/parse/align2.s
+85d6e969f063c0bee9565d096c43657e gas/testsuite/gas/hppa/parse/appbug.s
+72ae2fe9c7ff74b0267402ab93c59282 gas/testsuite/gas/hppa/parse/badfmpyadd.s
+b0dd08d05ad154fa1797fbb7b65f1b3a gas/testsuite/gas/hppa/parse/block1.s
+44d0164ab1f3f2f8201ca4cac02f0a91 gas/testsuite/gas/hppa/parse/block2.s
+7012f9c767f18688e051c168e218464b gas/testsuite/gas/hppa/parse/calldatabug.s
+d26fcb5186e8ffda4892557ecf9d836a gas/testsuite/gas/hppa/parse/callinfobug.s
+36132d401bbf31234a71915b94762a26 gas/testsuite/gas/hppa/parse/defbug.s
+8355f3baa7c8bf6dfdde12165f166988 gas/testsuite/gas/hppa/parse/entrybug.s
+a8c2940c51c368a14265009963ce4a7d gas/testsuite/gas/hppa/parse/exportbug.s
+0aa9ab25448da72ed059168f45ee4e11 gas/testsuite/gas/hppa/parse/exprbug.s
+464c7378f55821348860da76fd77ed2e gas/testsuite/gas/hppa/parse/fixup7bug.s
+69d79811f23cb30bd2c536063a29c137 gas/testsuite/gas/hppa/parse/global.s
+eae1949a6363097a7e2ef5bd260b9aa7 gas/testsuite/gas/hppa/parse/labelbug.s
+a7ec38bf59489eb49f4bd3ce752f7cb4 gas/testsuite/gas/hppa/parse/linesepbug.s
+adf3dd32e97d184fa3a923e977ac0f20 gas/testsuite/gas/hppa/parse/lselbug.s
+e09d99b9bb0cc52546de922bf02a3a13 gas/testsuite/gas/hppa/parse/nosubspace.s
+8161b5f30367ba86f14e168e2fbf025a gas/testsuite/gas/hppa/parse/parse.exp
+030b7a7332dca245ae8a65a00ab8e169 gas/testsuite/gas/hppa/parse/procbug.s
+ba4a443e4362a957c9eda52f33e9ed56 gas/testsuite/gas/hppa/parse/regpopbug.s
+b19738063af645b6f2231ee644131542 gas/testsuite/gas/hppa/parse/spacebug.s
+16d00a249972a7d82fd5b443a6c006ea gas/testsuite/gas/hppa/parse/ssbug.s
+6e77c97c02695c15f9f54b9b531a5e2b gas/testsuite/gas/hppa/parse/stdreg.s
+e4c3228c9e3a74eb9b2170caafd9cf4c gas/testsuite/gas/hppa/parse/stringer.s
+b91fabc2587cd34b7543fe16032d9c3e gas/testsuite/gas/hppa/parse/undefbug.s
+ad0e0513effd832ce4787671ac4c5eac gas/testsuite/gas/hppa/parse/versionbug.s
+7f9b2353d22448012a9435f7b80ccf1a gas/testsuite/gas/hppa/parse/xmpyubug.s
+629e685800d946a73fba78f4f9e2a342 gas/testsuite/gas/hppa/reloc/applybug.s
+e7eccf3a36e653b9312fc78bb40a5022 gas/testsuite/gas/hppa/reloc/blebug.s
+9c8150c0635455986ba2e99432e230ad gas/testsuite/gas/hppa/reloc/blebug2.s
+cfe88051f0bd644932bc22814216e804 gas/testsuite/gas/hppa/reloc/blebug3.s
+2e83d05979fd4ec0c399182ad7513423 gas/testsuite/gas/hppa/reloc/exitbug.s
+a7ab875345b2ba9a0c1e6aee0c0b23cb gas/testsuite/gas/hppa/reloc/fixupbug.s
+84f724d5d6335f9367de5e493847499c gas/testsuite/gas/hppa/reloc/funcrelocbug.s
+8fd8e8d6557a090221c4b9382f712183 gas/testsuite/gas/hppa/reloc/labelopbug.s
+79c490df3cf5ac395769cfd1378b598b gas/testsuite/gas/hppa/reloc/longcall.s
+6fedcfa10d24c76dde19990cbdb53c1a gas/testsuite/gas/hppa/reloc/picreloc.s
+a30d0372d62d0a448e374ed80897e3bf gas/testsuite/gas/hppa/reloc/plabelbug.s
+f2f905140c0955e2a88e451fad681f42 gas/testsuite/gas/hppa/reloc/r_no_reloc.s
+5042b71ae3f83b270fa17a2b7f27fc92 gas/testsuite/gas/hppa/reloc/reduce.s
+bc728b6253b6c770472ed22f5def04e0 gas/testsuite/gas/hppa/reloc/reduce2.s
+45668f4718492900a833f2d3ebe47e57 gas/testsuite/gas/hppa/reloc/reduce3.s
+5fce2ee045a8f221d7d4a0470786d00b gas/testsuite/gas/hppa/reloc/reloc.exp
+2813e26c00aa991fb8cc3f67b56ae4f6 gas/testsuite/gas/hppa/reloc/roundmode.s
+c690211a1ccb9ebe1cda17e17b5d1cf4 gas/testsuite/gas/hppa/reloc/selectorbug.s
+c0e4f0dd244fb83332f776ca09756e5b gas/testsuite/gas/hppa/unsorted/align3.s
+a7b6914341e97c943a5b931b5ff724a1 gas/testsuite/gas/hppa/unsorted/align4.s
+d5ecda3dffcd60591d33b1718f89d02c gas/testsuite/gas/hppa/unsorted/brlenbug.s
+0854f5ede3fb810256df5394b5d17a6f gas/testsuite/gas/hppa/unsorted/common.s
+563abc929a52d7539bb83a990fbfcb65 gas/testsuite/gas/hppa/unsorted/fragbug.s
+3c295194b6d3754be9b7b7da67fddcb4 gas/testsuite/gas/hppa/unsorted/globalbug.s
+af9e915b6ea1a8a691914d94bb230546 gas/testsuite/gas/hppa/unsorted/importbug.s
+741867661d59451b7d71d392fc0d7206 gas/testsuite/gas/hppa/unsorted/labeldiffs.s
+0aa46fc17784b72b21d387564dddde36 gas/testsuite/gas/hppa/unsorted/locallabel.s
+f8705df6b564ae8bc51ff8255048afd1 gas/testsuite/gas/hppa/unsorted/ss_align.s
+da24d502a74952b6c5895ffc62d541d1 gas/testsuite/gas/hppa/unsorted/unsorted.exp
+dabaf1f82986e409d20127484c8388e3 gas/testsuite/gas/i386/general.l
+4f13cd819c9c8bdc0e25c3e1ea7e0be1 gas/testsuite/gas/i386/amd.d
+c89704ccdc6abd42145480c444772394 gas/testsuite/gas/i386/amd.s
+481a82666e24dd35712ddbe1953070fc gas/testsuite/gas/i386/float.l
+0df7ab956e3209428d665890983ef957 gas/testsuite/gas/i386/float.s
+c6f32143c1a338a7e3c688cadb2a27b3 gas/testsuite/gas/i386/general.s
+f3389ade9599f32e84af4b32431fda4e gas/testsuite/gas/i386/i386.exp
+e4de541dcbc8eac40ddb0b5902544063 gas/testsuite/gas/i386/intel.d
+4cca84b3737f3b569f66c878f4cc880d gas/testsuite/gas/i386/intel.s
+92c2460d4bc6a3d856918e182ca720b3 gas/testsuite/gas/i386/inval.l
+ebaaadf5e7218736c6523e8c024e4a63 gas/testsuite/gas/i386/inval.s
+e6d4cc21cd6fd3850a2527bd9a0602df gas/testsuite/gas/i386/jump.d
+a5ac8a9636b7ab8c6a732203d0914133 gas/testsuite/gas/i386/jump.s
+73d7f5fe54695a0d1baff6361ee951af gas/testsuite/gas/i386/jump16.d
+72fb343c916713f2da32dd3ebcb13cd7 gas/testsuite/gas/i386/jump16.s
+8b9d9ce2ed935332bf317067a40a0027 gas/testsuite/gas/i386/katmai.d
+3e427af40c4ab651d69de595d3f996f7 gas/testsuite/gas/i386/katmai.s
+d566afc7ce85d649e11306e09c745945 gas/testsuite/gas/i386/modrm.l
+1d1696a1b6db5c16aa2463cdd8b6a045 gas/testsuite/gas/i386/modrm.s
+a9f88835bfba484b001209393305e9ab gas/testsuite/gas/i386/naked.d
+b4fe60a42e7f416e8bcfc4c911652c79 gas/testsuite/gas/i386/naked.s
+91f562b065b071024b4ad049253cc00b gas/testsuite/gas/i386/opcode.d
+7c8d765ebc016ae5b7ce8941230d47ba gas/testsuite/gas/i386/opcode.s
+d1ab72522efa161dc5bb0d5d34c6cbe3 gas/testsuite/gas/i386/prefix.d
+18eb6094372a8ea6dcedecc52d4bbafb gas/testsuite/gas/i386/prefix.s
+73bd114ee58f8613e40dcc68dc44ecab gas/testsuite/gas/i386/reloc.d
+785e2743dba0137e0235c3a40f7ed72b gas/testsuite/gas/i386/reloc.s
+d50ee8265551722a6703e91b9de2da46 gas/testsuite/gas/i386/sse2.d
+270a24c77538993162ce7c3f76fd5c25 gas/testsuite/gas/i386/sse2.s
+8e960ebf4b5bf1b506398d53f9f7cd74 gas/testsuite/gas/i386/ssemmx2.d
+e73e0f652b697100e02db9b419b06cd0 gas/testsuite/gas/i386/ssemmx2.s
+04f524b94eb61aaf58b37c180ab1e373 gas/testsuite/gas/i386/white.l
+305b7d730a90ea5ac8fb330a3bf13fec gas/testsuite/gas/i386/white.s
+62171adf925034f2497f65c4381bda77 gas/testsuite/gas/i386/x86_64.d
+167651a8472e8240a82c364ac9738761 gas/testsuite/gas/i386/x86_64.s
+dbbf38f460db18779a5e3b6d064eb499 gas/testsuite/gas/ia64/dv-branch.d
+ec058dd65d1af91fe84f41b725857462 gas/testsuite/gas/ia64/dv-branch.s
+956561267da937b1be0fada7c6ea25c7 gas/testsuite/gas/ia64/dv-entry-err.l
+e635d21d0f94975c7df306096506d41b gas/testsuite/gas/ia64/dv-entry-err.s
+d2c80d56ca498f06aaed101e323f583f gas/testsuite/gas/ia64/dv-imply.d
+a4c835f4336ab0d7bea5c1251fe02f94 gas/testsuite/gas/ia64/dv-imply.s
+091538d6530e8a161937745d99426d7a gas/testsuite/gas/ia64/dv-mutex-err.l
+91d93a728f474aa95c998e07a884224c gas/testsuite/gas/ia64/dv-mutex-err.s
+8126eb7a7fcdd728745e456cb576a1e3 gas/testsuite/gas/ia64/dv-mutex.d
+91cb93a568ee81bf4a049bfcad3be8f4 gas/testsuite/gas/ia64/dv-mutex.s
+faad91ad280ed985504df18b5df67462 gas/testsuite/gas/ia64/dv-raw-err.l
+47f0ecc4a6d44c41bceba1bf96951931 gas/testsuite/gas/ia64/dv-raw-err.s
+042d6a6ba6e6fab95e540ea3f117cadd gas/testsuite/gas/ia64/dv-safe.d
+c06a2d45e380eacc79be2946865839ea gas/testsuite/gas/ia64/dv-safe.s
+b08507477c737fd99ecbcdaf985f7864 gas/testsuite/gas/ia64/dv-srlz.d
+fcb5ba635bb6c1bf11217572aed8c194 gas/testsuite/gas/ia64/dv-srlz.s
+47a1c9e8c8d646cb1276022156938aef gas/testsuite/gas/ia64/dv-war-err.l
+96d62a881175a15f9d0eb1464592de82 gas/testsuite/gas/ia64/dv-war-err.s
+c29583516e19e2b432fc8be35ccfd38c gas/testsuite/gas/ia64/dv-waw-err.l
+5120b50924c7c72ed617ecf58bb839c4 gas/testsuite/gas/ia64/dv-waw-err.s
+4702e0589d4ecfea81d623654726c865 gas/testsuite/gas/ia64/fixup-dump.pl
+3340310e879de7f94d7008a34cd902e3 gas/testsuite/gas/ia64/ia64.exp
+e6ff55117be31d2e2338afa8ba6743e1 gas/testsuite/gas/ia64/opc-a-err.l
+c10f248c93a66cf00810e181bcf47859 gas/testsuite/gas/ia64/opc-a-err.s
+d01bcbbb33e4aaddf588cf96bb2818c3 gas/testsuite/gas/ia64/opc-a.d
+7a4b4b8b83d010b15200291b7428d900 gas/testsuite/gas/ia64/opc-a.pl
+25a4e13b65c5c563854c68b27850ec27 gas/testsuite/gas/ia64/opc-a.s
+6f669176b63ccb7041cff7a0c43bdd2a gas/testsuite/gas/ia64/opc-b.d
+a6e1c6d4094099abc90c4eddf392cf90 gas/testsuite/gas/ia64/opc-b.pl
+0a0dcd4d0f92863aacd3374f10cf89d4 gas/testsuite/gas/ia64/opc-b.s
+87d4c9bce119a46f50cd7873ecdbb579 gas/testsuite/gas/ia64/opc-f.d
+e44f587f12c4e939d44570b92b5ca82b gas/testsuite/gas/ia64/opc-f.pl
+7de8eef520f311b774af7bdea416eee9 gas/testsuite/gas/ia64/opc-f.s
+08b1ba95e8fd11a0f7f8c1f3705e0be2 gas/testsuite/gas/ia64/opc-i.d
+6df89ea375d396efe8cd150381479c12 gas/testsuite/gas/ia64/opc-i.pl
+2574b1a2f2579fa030a50947773fa6c0 gas/testsuite/gas/ia64/opc-i.s
+95ae13460bb1d9601c083697cac119e9 gas/testsuite/gas/ia64/opc-m.d
+85878e0564576b3b7bafb3eb82660f7d gas/testsuite/gas/ia64/opc-m.pl
+df0663aeae5336e53e1d06b3e39f6bb2 gas/testsuite/gas/ia64/opc-m.s
+42205102976e466e5bbffcdd4d3cfcb7 gas/testsuite/gas/ia64/opc-x.d
+da315d802d151e76d7d335473c729f38 gas/testsuite/gas/ia64/opc-x.s
+cd152fa44d0a9ca4200fbec848788915 gas/testsuite/gas/ia64/regs.d
+e6ce0da8b25a4cd6c5b44068eb4278cd gas/testsuite/gas/ia64/regs.pl
+b6c72b3bbf42fd15250f957014a139c9 gas/testsuite/gas/ia64/regs.s
+c8161d7293bcc7692937ee4d5b16fc60 gas/testsuite/gas/ieee-fp/x930509a.exp
+b0509b0492fd2fc8448b011ae03a41b8 gas/testsuite/gas/ieee-fp/x930509a.s
+649f145a8122db7f91f18b85740849a5 gas/testsuite/gas/m32r/allinsn.d
+239bb6ea0e35bbe2e8a5939edab2a2cb gas/testsuite/gas/m32r/allinsn.exp
+5f9b6e2b9934e8a02576ba496d16ab72 gas/testsuite/gas/m32r/allinsn.s
+74ef82c499b9dbc10b25373e6823c276 gas/testsuite/gas/m32r/error.exp
+d71cb8f6eee3bbdd0ccecaaca513831a gas/testsuite/gas/m32r/fslot.d
+da6bcd9a061b6fdd7a4ee5b2aec6811a gas/testsuite/gas/m32r/fslot.s
+da48ccf2513f4723fced3d98ee902eee gas/testsuite/gas/m32r/fslotx.d
+c81e23eb3020f45236c4ef7e98a14008 gas/testsuite/gas/m32r/fslotx.s
+13b1a745fafe89b83fc828fa73bc0ea5 gas/testsuite/gas/m32r/high-1.d
+0c257c8a3667fa667e99bb3cb9aff5a7 gas/testsuite/gas/m32r/high-1.s
+873accfff909b6aac6b9a2e8cf961856 gas/testsuite/gas/m32r/interfere.s
+d8115906f69c19b93a1fa6deba5b2d70 gas/testsuite/gas/m32r/m32r.exp
+6b48ad39eeb0006e1fc1c9010cfbc21d gas/testsuite/gas/m32r/m32rx.d
+778e305ed7747652af13150f315591a9 gas/testsuite/gas/m32r/m32rx.exp
+3e3e8b05f1651dbc0692a8a20fc804ba gas/testsuite/gas/m32r/m32rx.s
+c0b5f95ee4eec971ea74dc81435baec8 gas/testsuite/gas/m32r/outofrange.s
+32f8410f7bdb6db49efc7016f230360f gas/testsuite/gas/m32r/relax-1.d
+ee56272ade0ca1ed891d0bcdc81d1173 gas/testsuite/gas/m32r/relax-1.s
+ffadebffc2057e150da0f56aa0f6d511 gas/testsuite/gas/m32r/relax-2.d
+dfd4ad2ea1d8b29e222e48a671c648e1 gas/testsuite/gas/m32r/relax-2.s
+debc3c1322cf7602d46e1657a4249b10 gas/testsuite/gas/m32r/uppercase.d
+3ad7dc32e323605aaf71cc84e39717df gas/testsuite/gas/m32r/uppercase.s
+d21d472754ca0f699e8faf8c95175ec1 gas/testsuite/gas/m32r/wrongsize.s
+9187362c4020cfb7b9df8782637bb65d gas/testsuite/gas/m68hc11/all_insns.d
+f17b7c3ca3c536ffa8e6df6dc2f439f1 gas/testsuite/gas/m68hc11/all.exp
+57022ccbd6cef54a3a8ece7847d6569f gas/testsuite/gas/m68hc11/all_insns.s
+7bd42f694ffddccc2e193372d35e2541 gas/testsuite/gas/m68hc11/insns-dwarf2.d
+afeb3f5fe5cf302f22c11a8a73c76fe6 gas/testsuite/gas/m68hc11/insns.d
+b40598fa9d279a12c73b904dc7f640cd gas/testsuite/gas/m68hc11/insns.s
+d77d9f6b2a194247a6d436103c2aa5a6 gas/testsuite/gas/m68hc11/lbranch-dwarf2.d
+2ce8f16d1b2813d639637246318a2fa5 gas/testsuite/gas/m68hc11/lbranch.d
+270514d96ae94f63ea38a4eb9fccd095 gas/testsuite/gas/m68hc11/lbranch.s
+7e3463ce5e0c47ca8bdaaf6f3d443f8d gas/testsuite/gas/m68hc11/malis-include.s
+41ba77d190f160fb60f0392b97e0d453 gas/testsuite/gas/m68hc11/malis.d
+a469d5986f2366e13cba507b0314fdfd gas/testsuite/gas/m68hc11/malis.s
+89d1a83096ae0248028459092e1518ca gas/testsuite/gas/m68hc11/opers12-dwarf2.d
+9931e7658c6388e1ad91fb3bb0f38a38 gas/testsuite/gas/m68hc11/opers12.d
+bfd8edd9e0edf8fb9cd5ea3ebf070461 gas/testsuite/gas/m68hc11/opers12.s
+d36654135443b0740d6b2c78b03ad44b gas/testsuite/gas/m68k/bitfield.d
+2a34f43b42955f46a42618a50182de68 gas/testsuite/gas/m68k/all.exp
+fa19c98907bd173f6de4c396ef9acd45 gas/testsuite/gas/m68k/bitfield.s
+1c229d52fdc1160c9dd9f74b19c1ec69 gas/testsuite/gas/m68k/cas.d
+20e0445e36d8d9f35c6022fa7118a3da gas/testsuite/gas/m68k/cas.s
+96de03f7fc5967e5d267ae957ac508cf gas/testsuite/gas/m68k/disperr.s
+26dfd242ac765008271e85e25d9d8446 gas/testsuite/gas/m68k/fmoveml.d
+205a85d6482891f58292e065222b78fa gas/testsuite/gas/m68k/fmoveml.s
+b14e11a2793fb32f7d471e31e4ecf7b9 gas/testsuite/gas/m68k/link.d
+ea9ee18230b981ada48e2b69bb566220 gas/testsuite/gas/m68k/link.s
+85e6de04e2d6138d3b0e1e3e932fc884 gas/testsuite/gas/m68k/op68000.d
+d72997199e7c0cfb9dae24c9bc0347fd gas/testsuite/gas/m68k/operands.d
+d5012d936b1b45db947e4a29a883fc9d gas/testsuite/gas/m68k/operands.s
+b334f15354ebeffb3acba502cc1dae67 gas/testsuite/gas/m68k/p2410.s
+ce5152b0da290f444d58c6ef03d48e02 gas/testsuite/gas/m68k/p2663.s
+10e1d7f21db2dad7db1aa4b66ad1a3fc gas/testsuite/gas/m68k/pcrel.d
+3bc8cba59ef27f67c6c6e2a67717db04 gas/testsuite/gas/m68k/pcrel.s
+c1fce4f35335083fbf7d4538c5a7230f gas/testsuite/gas/m68k/pic1.s
+6ebe1f8291de253ee6ce0e469b3e03aa gas/testsuite/gas/m68k/t2.d
+ba9a3e851cb31d41e5a33c44dc3ebd13 gas/testsuite/gas/m68k/t2.s
+3a162ab2de5525fc4745144a511922c9 gas/testsuite/gas/m68k-coff/p2389a.s
+4117edd076cf599f92777cbfea5d59ba gas/testsuite/gas/m68k-coff/gas.exp
+45f1ecda71b05960409560f553228a2d gas/testsuite/gas/m68k-coff/p2389.s
+29f7789ff1bca9100fda6a1276c73f70 gas/testsuite/gas/m68k-coff/p2430a.s
+2c65e9837c0fa5884e6d7aa8ab7f5b27 gas/testsuite/gas/m68k-coff/p2430.s
+9ae5a3f91535cb9ce86b48698e6096b1 gas/testsuite/gas/m68k-coff/t1.s
+abc6ff7e3825198ada07ac55f4f3ab7e gas/testsuite/gas/m88k/m88k.exp
+dccbd7ad6ededd07df99af498231642d gas/testsuite/gas/m88k/init.d
+ebcd9dfb18999e4f42a3c3d5a53fcb81 gas/testsuite/gas/m88k/init.s
+ef6c6bcefee3f0df10bbe2455661acc7 gas/testsuite/gas/macros/macros.exp
+06148aa2e0046074be6e05308a79b642 gas/testsuite/gas/macros/err.s
+f64593bf9530d575f681a8566ef216c3 gas/testsuite/gas/macros/irp.d
+e284db7fba30dba3218492a95521d6b1 gas/testsuite/gas/macros/irp.s
+369273a5f986fd76ff12a8c638e722a0 gas/testsuite/gas/macros/strings.d
+b320acc9c113dd9d1967db7ee0857e8a gas/testsuite/gas/macros/rept.d
+f5abc6437f073dff4af533a36ea9d280 gas/testsuite/gas/macros/rept.s
+efbeac5d9e630c2251fa42fd98bdfd47 gas/testsuite/gas/macros/semi.d
+e772243ae7fe04097bba952a6d9173bd gas/testsuite/gas/macros/semi.s
+8990b11a483140af060adb1ff48c4cc5 gas/testsuite/gas/macros/strings.s
+df6bcb5dd71cf55583464fc270bc52a1 gas/testsuite/gas/macros/test1.d
+74a3db320fafd23b64c4ab6f48a17246 gas/testsuite/gas/macros/test1.s
+ac43f2633f23586812df9e1a40627d82 gas/testsuite/gas/macros/test2.d
+0fd6102941c5acb1bb8e85a697a2ff23 gas/testsuite/gas/macros/test2.s
+7e8aafe277f842553e1bf935c32fa0e8 gas/testsuite/gas/macros/test3.d
+1dbcc25102396060274f0b3d1268f47c gas/testsuite/gas/macros/test3.s
+0544bcf7466e18eabd7d715e3059b24f gas/testsuite/gas/mcore/allinsn.d
+3f84389ae5d2fa1891f6db5a66746c47 gas/testsuite/gas/mcore/allinsn.exp
+0ee353f47d16db7430f79032977dc1af gas/testsuite/gas/mcore/allinsn.s
+537103a0821acc23c643173a5b44062a gas/testsuite/gas/mips/break20.d
+7ecf723198564c29b64133a79763434c gas/testsuite/gas/mips/abs.d
+93b8bd81a813fed709cc6b5639d4552a gas/testsuite/gas/mips/abs.s
+c85732e95fe3ff1ac95180b73f318609 gas/testsuite/gas/mips/add.d
+3aee944bf3dc58dded8dd88c0ef7e205 gas/testsuite/gas/mips/add.s
+805312f81661628ce0ce96745f25265f gas/testsuite/gas/mips/and.d
+31c4e7dfe6203941f0a009c79fe9aedb gas/testsuite/gas/mips/and.s
+4557cb42ddd54df5d03123aff8aca082 gas/testsuite/gas/mips/beq.d
+0c68387d4560df31811cf1a8acbc2958 gas/testsuite/gas/mips/beq.s
+41ced17da42c7e548942f9742b30194e gas/testsuite/gas/mips/bge.d
+eca0c74d018c0e56f81d49381b5f9a6c gas/testsuite/gas/mips/bge.s
+8c2b91b4f65a8295609659ad5729e4a4 gas/testsuite/gas/mips/bgeu.d
+5a9a9ba8716b251c9b6aea9a9ddfed78 gas/testsuite/gas/mips/bgeu.s
+bef2f5afe912fa7b7a7a954ed57b923a gas/testsuite/gas/mips/blt.d
+e28cc53eef33d048effa03ff1d696991 gas/testsuite/gas/mips/blt.s
+d0c12bbd9684c3563f1d6f393542d596 gas/testsuite/gas/mips/bltu.d
+08821d562fd1d36b49bb73ec19a1b818 gas/testsuite/gas/mips/bltu.s
+01e30fca71ae643c6acb0e4c3d579f1c gas/testsuite/gas/mips/break20.s
+d6d3c0e183e1051b7d4acb2346a25567 gas/testsuite/gas/mips/delay.d
+f8386c3523ad68825b3b91215e3ce856 gas/testsuite/gas/mips/delay.s
+4a8ec40bf30de27bef21c0cc2019d293 gas/testsuite/gas/mips/div-ilocks.d
+f78945db2feec90094cd83dcedbcfa67 gas/testsuite/gas/mips/div.d
+6da8cc8418138e9b9ee39ac970e437da gas/testsuite/gas/mips/div.s
+ff772a0132afa7b76dc26924cc924594 gas/testsuite/gas/mips/dli.d
+89a3d7e768db094a0b11ede7bfca879d gas/testsuite/gas/mips/dli.s
+e66f7bf10e7ba1ebcee5676a941b05f8 gas/testsuite/gas/mips/e32-rel2.d
+d2c1e7d3e05e5c131355c44845540cd5 gas/testsuite/gas/mips/elf-rel.d
+eb8cd56831349b3482483c425b481301 gas/testsuite/gas/mips/elf-rel.s
+a356c5fade123e74a0f4e77a3f12e8be gas/testsuite/gas/mips/elf-rel2.d
+f7a0c6062a5a8fe838e93a14441b72bc gas/testsuite/gas/mips/elf-rel2.s
+6531d00a109f1e0829eda1178a1b886a gas/testsuite/gas/mips/elf_e_flags.c
+6bbeff5a2159c064f18894cc7bd9b7ef gas/testsuite/gas/mips/elf_e_flags.s
+7642529c0caaf2021b2a677f8a05022a gas/testsuite/gas/mips/elf_e_flags1.d
+2d78e209398e0ab48310ed24719e11f3 gas/testsuite/gas/mips/elf_e_flags2.d
+acf627a8ac194e475924c152240f0a0f gas/testsuite/gas/mips/elf_e_flags3.d
+ed956de75f2145aa280bbae1e161b95f gas/testsuite/gas/mips/elf_e_flags4.d
+d79ba442cf5a41841326b47965d44530 gas/testsuite/gas/mips/empic.d
+749cf53f3155f1f122aa79bf71ccacbc gas/testsuite/gas/mips/empic.s
+b47234477b017d8640d0a583d17b44cb gas/testsuite/gas/mips/itbl
+3be9cfa967f82e0b4325b152baf0f23a gas/testsuite/gas/mips/itbl.s
+5d0d11522551eea10fbd31140172a691 gas/testsuite/gas/mips/jal-empic.d
+0b5c3dfae9e1c8d16b1701193b32e94c gas/testsuite/gas/mips/jal-svr4pic.d
+644da8eaec6c846730e2b965a6fb0e39 gas/testsuite/gas/mips/jal-svr4pic.s
+006ce48fb7ce882c12797070ace8667a gas/testsuite/gas/mips/jal-xgot.d
+3b46dcc6a46735c0d08d81d6fc71fa4b gas/testsuite/gas/mips/jal.d
+2a9d8534b670ee90e9212ab2a706cf87 gas/testsuite/gas/mips/jal.s
+8a92e7f7b56ea8ced4d426c7d4ae8ebf gas/testsuite/gas/mips/la-empic.d
+e9c696756945df68acdf916951943741 gas/testsuite/gas/mips/la-empic.s
+3a0d3831d5f3055dbf2f099d3da9577a gas/testsuite/gas/mips/la-svr4pic.d
+e07c68431be3dd747d76a37a756557ba gas/testsuite/gas/mips/la-xgot.d
+da1e002c8062c8d504a3941aece01787 gas/testsuite/gas/mips/la.d
+f479612dc60112156a66a5292a60b205 gas/testsuite/gas/mips/la.s
+cea53849d71396ee735df7b2ffea8268 gas/testsuite/gas/mips/lb-empic.d
+b941d24b4746291a2fe361540766913b gas/testsuite/gas/mips/lb-pic.s
+5d167aef8e7a7e22db580d91001d4829 gas/testsuite/gas/mips/lb-svr4pic.d
+1b775dc32ee34e1afc8476eed4a2831c gas/testsuite/gas/mips/lb-xgot-ilocks.d
+1d476b824034a9744421f0e2ce5ec7c0 gas/testsuite/gas/mips/lb-xgot.d
+c54b2f131da6bff744f06d03e960e9cf gas/testsuite/gas/mips/lb.d
+e9d35a3d0cdd51294a858378d467574d gas/testsuite/gas/mips/lb.s
+2f391fd7557853537ccbb438e05901ae gas/testsuite/gas/mips/ld-empic.d
+5db429307346953194434663a764b6a6 gas/testsuite/gas/mips/ld-ilocks-addr32.d
+be3e40636930ca55edb85deeee4ffe62 gas/testsuite/gas/mips/ld-ilocks.d
+3e1c4e9e2e45a90c704db383f9551b8a gas/testsuite/gas/mips/ld-pic.s
+0c3544e13b7c4cba7f5cdca91bbe1cbd gas/testsuite/gas/mips/ld-svr4pic.d
+aa339204e345d9babe9b97994d06ddd6 gas/testsuite/gas/mips/ld-xgot.d
+f095991340001fbd0307989220f2fd22 gas/testsuite/gas/mips/ld.d
+8b08d1b9548f0a0ece2cede37c07ec87 gas/testsuite/gas/mips/ld.s
+f8c8c11260e1ad0abbaf0b253cf11ab9 gas/testsuite/gas/mips/li.d
+b5df74ea9e934e9bf65cd0bba8eac411 gas/testsuite/gas/mips/li.s
+37b2da1146677e269ef51e8441143d11 gas/testsuite/gas/mips/lif-empic.d
+174beb5c60c70f5581bf545944aa97fe gas/testsuite/gas/mips/lif-svr4pic.d
+dfed11fe3fdeff0206c03e9a9f58bdb6 gas/testsuite/gas/mips/lif-xgot.d
+07bf4b6026ea624a426cd3aa83474f97 gas/testsuite/gas/mips/lifloat.d
+a0a03d60c7fdb7e812a9f97325945910 gas/testsuite/gas/mips/lifloat.s
+75a9e47a4d860df10f5498370a8ca76d gas/testsuite/gas/mips/lineno.d
+c2034fba9031ad7f3bc0a1128ae6198f gas/testsuite/gas/mips/lineno.s
+66358721a628dc05ab525e1e29cd73c3 gas/testsuite/gas/mips/mips.exp
+eab31dfe394fc22de1caaeefd8a069f0 gas/testsuite/gas/mips/mips16-e.d
+4785c49a602347865df48551df7121fc gas/testsuite/gas/mips/mips16-e.s
+1105eeebc5024baca97d51c73a94920d gas/testsuite/gas/mips/mips16-f.d
+7146e7075936aa4a1434864cf7bf6d4e gas/testsuite/gas/mips/mips16-f.s
+b8dbc10d4ebee3611868704e21c6e841 gas/testsuite/gas/mips/mips16.d
+a686ad0a2da9fe043d717c57b4580d0b gas/testsuite/gas/mips/mips16.s
+5024d77ccdc240641cff04dacf254898 gas/testsuite/gas/mips/mips32.d
+9f4640a5a47e4b1a26a968bc837de82a gas/testsuite/gas/mips/mips32.s
+d89f8ee3cff5a2c42fbf8aaf889e567e gas/testsuite/gas/mips/mips4.d
+1d91653bf695ab6b54caf527440eb0b2 gas/testsuite/gas/mips/mips4.s
+ae87df9999329b644efd93f6a83e6e63 gas/testsuite/gas/mips/mips4010.d
+0bef6e09181f70f6320fb8a847d3fb6c gas/testsuite/gas/mips/mips4010.s
+3053bc5317a9ae7a09b70b7167119cab gas/testsuite/gas/mips/mips4100.d
+965852829cb668ab99e91a3102c20fbe gas/testsuite/gas/mips/mips4100.s
+ce624c5178da2258a83b167726e2a7f5 gas/testsuite/gas/mips/mips4650.d
+96873ddf2396f27657e63d270450ea72 gas/testsuite/gas/mips/mips4650.s
+019d91e37dd701192db49c2a03ce9cb2 gas/testsuite/gas/mips/mips64.d
+4929310e699e0e1ac8bc28e44030ebff gas/testsuite/gas/mips/mips64.s
+f2721e3c17e4eb57c650fbea1e11c9e2 gas/testsuite/gas/mips/mul-ilocks.d
+24efc4be055a00dbc7db1f98fc8885cb gas/testsuite/gas/mips/mul.d
+03190409f6e3f76c2b66c8ab590d10bf gas/testsuite/gas/mips/mul.s
+5ae9d795d225ea16713a38ab91bf591f gas/testsuite/gas/mips/nodelay.d
+19ec58b05eca83152c2b1f31b86014eb gas/testsuite/gas/mips/rol.d
+5f8fefb5bda995779109a3d959bc071f gas/testsuite/gas/mips/rol.s
+187e8ed3544de51030724ad86967e37d gas/testsuite/gas/mips/sb.d
+15410af41b16b3678e11c8c7d4d6d7a7 gas/testsuite/gas/mips/sb.s
+5d3f8be0295dfe3afa394af2d492190b gas/testsuite/gas/mips/sync.d
+d58080b2224720b5c6b9b14b08a14c8f gas/testsuite/gas/mips/sync.s
+5f19f1192007fa6a09e4e9d695ec0c34 gas/testsuite/gas/mips/trap20.d
+f7d1e998d2057f17dfa22040879794f5 gas/testsuite/gas/mips/trap20.s
+ab6f22b6648e827cb85e2ec7fad6c1ab gas/testsuite/gas/mips/trunc.d
+6206de0006f0d3b3552c2c4de6d4d40c gas/testsuite/gas/mips/trunc.s
+b93858591ee8c4c9ae68b98cfb1ae421 gas/testsuite/gas/mips/uld.d
+4dfc3d5c85518711401b4a15122c6cea gas/testsuite/gas/mips/uld.s
+c78d95b9a5aec9c414a3a2374007f4e8 gas/testsuite/gas/mips/ulh-empic.d
+42668d2b953e17216dad9ff5b51a11b8 gas/testsuite/gas/mips/ulh-pic.s
+ea00f2bb76e55e1ffa6269f92b5d9387 gas/testsuite/gas/mips/ulh-svr4pic.d
+e10428575e053e8a287a0252dc004d8d gas/testsuite/gas/mips/ulh-xgot.d
+a51ae1a087b3a99528776c917dddaa27 gas/testsuite/gas/mips/ulh.d
+d4c1e8e91b66176d0dd73baa903929d9 gas/testsuite/gas/mips/ulh.s
+e76918b18374f7d32e4dfb9d8aa20b20 gas/testsuite/gas/mips/ulw.d
+ed019962f9d9264d80ac0a3ec29faaf3 gas/testsuite/gas/mips/ulw.s
+12cf090342244e469b2587787079a344 gas/testsuite/gas/mips/usd.d
+c4f723634a0f69013515468922c55a04 gas/testsuite/gas/mips/usd.s
+f6412eea09e87fd6a3fbf232f4bd2fce gas/testsuite/gas/mips/ush.d
+fa20601e0c404bd38a90edf5f43077bb gas/testsuite/gas/mips/ush.s
+d83f51cd9b5a8e2783993ac02b561b5c gas/testsuite/gas/mips/usw.d
+59b429c3b2d1ea0daf2377204cbdfdca gas/testsuite/gas/mips/usw.s
+b00b8e50d58ac967e8e84c9dc8df9075 gas/testsuite/gas/mn10200/basic.exp
+c58581edb3ac95b306f040bbc2c16678 gas/testsuite/gas/mn10200/add.s
+b117e36f812c2eb416156d441f26185e gas/testsuite/gas/mn10200/logical.s
+9411b8190fac3aad748696ea30bba5b0 gas/testsuite/gas/mn10200/bcc.s
+efa2232339233fab01e2fe7ca6c2f3cf gas/testsuite/gas/mn10200/bccx.s
+aabf4d8010190b4ebadb4d4dce938282 gas/testsuite/gas/mn10200/bit.s
+3f51363ea969316f726dc5529904888e gas/testsuite/gas/mn10200/cmp.s
+874b6bc0f155eecbaffecb93a5642416 gas/testsuite/gas/mn10200/ext.s
+1ff17a9ade34cc243a67f4e5afb1873e gas/testsuite/gas/mn10200/muldiv.s
+ea8599975d89b01f9aaba3b664947565 gas/testsuite/gas/mn10200/mov1.s
+3386b14210f3cd873dde20c6166162c6 gas/testsuite/gas/mn10200/mov2.s
+a0b70b1cc9ec5e2783428dcc483ee86d gas/testsuite/gas/mn10200/mov3.s
+6e62837e492b9688e29de9625549b402 gas/testsuite/gas/mn10200/mov4.s
+e37e1b13a06659d005a650675dcf3935 gas/testsuite/gas/mn10200/movb.s
+f6ce44141165b449c3cb51ebe486e98e gas/testsuite/gas/mn10200/movbu.s
+32dfde7ae5c5361c03c746481b7aee8d gas/testsuite/gas/mn10200/movx.s
+723c642cba806a6ce6dda8c3881ef233 gas/testsuite/gas/mn10200/other.s
+21b9f1644f5a62fdc603b218708648f3 gas/testsuite/gas/mn10200/shift.s
+7ac2864fac53b6b778c4aba3efb1a2e1 gas/testsuite/gas/mn10200/sub.s
+3c5d635c4e529ba743b2062006ab8a00 gas/testsuite/gas/mn10300/am33_2.s
+02ba050389aba06e510285db97af882b gas/testsuite/gas/mn10300/add.s
+3bb44c38f4fbab75c570123d255c57f8 gas/testsuite/gas/mn10300/am33.s
+dfe221c89fe65738a2360f231c2b6794 gas/testsuite/gas/mn10300/am33_3.s
+593bbef9992d2f23b91f4ea176b28957 gas/testsuite/gas/mn10300/am33_4.s
+62ae8325beee2a8180a39e125355ba2b gas/testsuite/gas/mn10300/am33_5.s
+90dcb58c5eb364963271d465adac73ef gas/testsuite/gas/mn10300/am33_6.s
+ae77079066eabaa0cc3b0db53f95500b gas/testsuite/gas/mn10300/am33_7.s
+631a649907d27d317cee70928c6c27fc gas/testsuite/gas/mn10300/am33_8.s
+04890830259a2f960fa1ef6f2d344ee8 gas/testsuite/gas/mn10300/basic.exp
+9411b8190fac3aad748696ea30bba5b0 gas/testsuite/gas/mn10300/bcc.s
+b15e3790182c7ba25b21a4185f2a55e6 gas/testsuite/gas/mn10300/bit.s
+647a9c89d56b470cb3fef7839a32834d gas/testsuite/gas/mn10300/cmp.s
+3828018d3809076328223d9d3c1e48c5 gas/testsuite/gas/mn10300/ext.s
+f6db4622ff4a88bc9ebf44aec56bc245 gas/testsuite/gas/mn10300/extend.s
+f2b5260884e40bc35f8694403da505f8 gas/testsuite/gas/mn10300/logical.s
+d3d15560536638ff0e38a1cd6bea678a gas/testsuite/gas/mn10300/loop.s
+e554261a6559698fe2722b841dd1b5e3 gas/testsuite/gas/mn10300/mov1.s
+1453d74ea0d60c24e054f9443aa26fe4 gas/testsuite/gas/mn10300/mov2.s
+8d091f8bc50686881c4104f6dc9b6ab7 gas/testsuite/gas/mn10300/mov3.s
+e5df57ebcca23c27b6c2399780e9a146 gas/testsuite/gas/mn10300/mov4.s
+384122880cfa3e6fa4a8b08c350c62a8 gas/testsuite/gas/mn10300/movbu.s
+075a3ba2756f3cf09ac1926492ccf614 gas/testsuite/gas/mn10300/movhu.s
+155d5bd225998f0bf8a65d543230adc5 gas/testsuite/gas/mn10300/movm.s
+aa222b2f903cde208e2be8c3972e3c8a gas/testsuite/gas/mn10300/muldiv.s
+9cbe29313848966be970cdecdc09e7b2 gas/testsuite/gas/mn10300/other.s
+293fa500fcb2e85940176a545801b046 gas/testsuite/gas/mn10300/shift.s
+ed9edfd6a0eea176f6974376bd321b10 gas/testsuite/gas/mn10300/sub.s
+961a51d51720b650cb383a6aa510d4d9 gas/testsuite/gas/mn10300/udf.s
+4b259d611c94c789b73572d5b0863a5b gas/testsuite/gas/mri/comment.d
+5ffc5b9af8cd82e8ff721a39d583a9cb gas/testsuite/gas/mri/char.d
+016f8a629209b7d7313c4a4e3c37c909 gas/testsuite/gas/mri/char.s
+84c565776c727a1f5986b5d8d39ba13e gas/testsuite/gas/mri/comment.s
+aca62962ea755bbc1aaeb56b32c53974 gas/testsuite/gas/mri/common.d
+7b6bfc157de809b518bb8820f293f78c gas/testsuite/gas/mri/common.s
+c3db4a831aaf5f148abfde517fff14f2 gas/testsuite/gas/mri/constants.d
+df9ad2212b59618793c7080d043c14e4 gas/testsuite/gas/mri/constants.s
+2258c0445fb6b2005828c77b96c0520a gas/testsuite/gas/mri/empty.s
+78ea402a49a07c1a325a03a28be37678 gas/testsuite/gas/mri/equ.d
+83843a1d515852848a6fc1054a984792 gas/testsuite/gas/mri/equ.s
+ceec8399c07b39bee0a4ea07eece6d2f gas/testsuite/gas/mri/expr.d
+21255a47a57f7e00246072b10af9b641 gas/testsuite/gas/mri/expr.s
+bc4dc43acfdddf49f994908c7e26abe6 gas/testsuite/gas/mri/float.d
+4f7756364607bd924587f3689b8b16b7 gas/testsuite/gas/mri/float.s
+2e7a0a8ee1508d01e6532c6c6c7b11b1 gas/testsuite/gas/mri/for.d
+70d33f74b91d862f9f9b6c4dd173ce58 gas/testsuite/gas/mri/for.s
+75333d0367e1162e0f31471a7731fbf5 gas/testsuite/gas/mri/if.d
+ba2ce35b0663f91570cc0725695f2f0f gas/testsuite/gas/mri/if.s
+4b03ed946465a72d469e2aeff2ddd6f5 gas/testsuite/gas/mri/immconst.d
+f1f5c0c93c39409b9a82cf956d42e39e gas/testsuite/gas/mri/label.d
+ed17ca77ec65b8492a436ad06a222487 gas/testsuite/gas/mri/label.s
+31e12f9de66d36f631e1883a3f763077 gas/testsuite/gas/mri/moveml.d
+4e57586c117d02856b0a1e2fe1e199cb gas/testsuite/gas/mri/moveml.s
+6f90672446c28d52cef0a7a5ce335254 gas/testsuite/gas/mri/mri.exp
+4f6263a77a91affd2a0cd34b177000bd gas/testsuite/gas/mri/repeat.d
+1684df3330c24639ae41d526858b2a80 gas/testsuite/gas/mri/repeat.s
+67ebccbf76d5002534361af491abfddf gas/testsuite/gas/mri/semi.d
+da1cdabe1af1adb9735d5d609dccca32 gas/testsuite/gas/mri/semi.s
+bf93368342190b86a250e95b9de09d8a gas/testsuite/gas/mri/while.d
+cdd1ad74d4bb0147f32931b83c7383be gas/testsuite/gas/mri/while.s
+f3a7124485548781ba12a81c18199e29 gas/testsuite/gas/pj/ops.d
+308d2177ed3b3b087d977e46c924fc0c gas/testsuite/gas/pj/ops.s
+a6667ed6fc7b116477f95ef897bc5444 gas/testsuite/gas/pj/pj.exp
+96a9890816c6c3314d3862d35fe59f3f gas/testsuite/gas/ppc/astest.d
+5254d1fc440f434a46e97eb96b2735c1 gas/testsuite/gas/ppc/astest.s
+b9b4926634e4c4e6e812b47b38a2f84b gas/testsuite/gas/ppc/astest2.d
+9ae09fa391c3aa343824a7745551b28e gas/testsuite/gas/ppc/astest2.s
+318ca470fd4b138732e4907c229b9bf6 gas/testsuite/gas/ppc/ppc.exp
+d2e3625ca66a7c30b9270f806c67c877 gas/testsuite/gas/ppc/simpshft.d
+0fc9ce29053c855d0a3abe241d93c961 gas/testsuite/gas/ppc/simpshft.s
+f32ff8e646f5d0e0fbc6ecb76c4682e5 gas/testsuite/gas/sh/basic.exp
+83d353a7646413b74d2087aa22fae13b gas/testsuite/gas/sh/err-1.s
+495cac29a4993f28c4782ef285228c38 gas/testsuite/gas/sh/err.exp
+70b8c1e3f6395cf992292993dcbdf601 gas/testsuite/gas/sh/fp.s
+4b815d3da1c2d2bceeb98994c659c492 gas/testsuite/gas/sparc/membar.d
+392efaa6637a8734d3ab35e579615a53 gas/testsuite/gas/sparc/asi.d
+8f35c68aef641d7cc35698d67a32557e gas/testsuite/gas/sparc/asi.s
+521b5671f3aa6bae70f78b5f3d37de1a gas/testsuite/gas/sparc/membar.s
+12b5e618325d4a4bc80cb8766bbfc064 gas/testsuite/gas/sparc/mism-1.s
+706c79f848f389921b20f0f64dde1ecd gas/testsuite/gas/sparc/mismatch.exp
+d85c226fa388a66bd2689ba3efedf5e4 gas/testsuite/gas/sparc/prefetch.d
+0b615422f6c8ad3fe5c42f2a8c7af1e4 gas/testsuite/gas/sparc/prefetch.s
+9c7bc5ce86d96a964c5c7f02d43db0da gas/testsuite/gas/sparc/rdpr.d
+09f5e33dbd927c548c928b9db9f14fe0 gas/testsuite/gas/sparc/rdpr.s
+78517d2fce6c7707fd2f09689ebc3d72 gas/testsuite/gas/sparc/reloc64.d
+7d56aec0e050e09c004a33abd25a9293 gas/testsuite/gas/sparc/reloc64.s
+08afa18cf165a3043a6b92153526c876 gas/testsuite/gas/sparc/set64.d
+1facb5655fe83c44ac900776c563e717 gas/testsuite/gas/sparc/set64.s
+f1d53f74c2cdaafcd77da9ac68911614 gas/testsuite/gas/sparc/sparc.exp
+3564e46bcf53613a512e32f2633c3d05 gas/testsuite/gas/sparc/splet-2.d
+69817b445f39a0e3cf591de872fa74e5 gas/testsuite/gas/sparc/splet-2.s
+5fa3fb7a059f3fd315df0af21e0c9619 gas/testsuite/gas/sparc/splet.d
+6236b0423a317e0a2340bdb317c54d1e gas/testsuite/gas/sparc/splet.s
+a6b1a41bb26dc70e130bc42ef7133cc7 gas/testsuite/gas/sparc/synth.d
+0e0dead95b89c31c1ed49b21c430bc1a gas/testsuite/gas/sparc/synth.s
+b041cafa83c1f1f131ca949780217e54 gas/testsuite/gas/sparc/synth64.d
+0303005116e0116e28f1dd473ca39f28 gas/testsuite/gas/sparc/synth64.s
+10dd2c15d6932af5f1203d03fbc6dae6 gas/testsuite/gas/sparc/wrpr.d
+d44c4548a463c3e491d6fdaaa0f20177 gas/testsuite/gas/sparc/wrpr.s
+f65f40edb42735b8af3a4baaacd662f5 gas/testsuite/gas/sparc-solaris/addend.exp
+7dd4467acc1dda3c1753ebcbfeeead33 gas/testsuite/gas/sparc-solaris/addend.s
+dd2ab79e6bd90288569274206313966b gas/testsuite/gas/sparc-solaris/gas.exp
+b2d813e248b8ec085ca8d551271274bf gas/testsuite/gas/sparc-solaris/sol-cc.s
+2e927e8072e145441bb882a01e3ac8cd gas/testsuite/gas/sparc-solaris/sol-gcc.s
+54a6b727f437bf7989e266329d0dd875 gas/testsuite/gas/sun4/addend.d
+b648f70387617b14507805caeea0b6d6 gas/testsuite/gas/sun4/addend.exp
+7dd4467acc1dda3c1753ebcbfeeead33 gas/testsuite/gas/sun4/addend.s
+8d19328fb89c3001a897cbf2f4f3b92d gas/testsuite/gas/symver/symver.exp
+f942ca1487fba1e0fa62d14b0f2cca1d gas/testsuite/gas/symver/symver0.d
+7f2d42503901978e4eb5bab37fd01df2 gas/testsuite/gas/symver/symver0.s
+711847708837ed39c80fa62ab704b649 gas/testsuite/gas/symver/symver1.d
+1d6eb4d5a6cbf6ac541ca7d4c561b74f gas/testsuite/gas/symver/symver1.s
+b44c04d7f2b689d60bccae544b854f95 gas/testsuite/gas/symver/symver2.l
+7214f11688ed0284f53c3c060fa973bf gas/testsuite/gas/symver/symver2.s
+d37568e052e76a50c9d4775eede01585 gas/testsuite/gas/symver/symver3.l
+7f58a39bd0e6eda06fa15260adaa1044 gas/testsuite/gas/symver/symver3.s
+aaf2746f913c7c81f487786bd9b99543 gas/testsuite/gas/symver/symver4.l
+ff40f84c77b398ca408422048eb1684e gas/testsuite/gas/symver/symver4.s
+c2401f7310b24ae252e1905a90fbb133 gas/testsuite/gas/symver/symver5.l
+ed56c563fc819e4c50c4160a17f8abae gas/testsuite/gas/symver/symver5.s
+a3a92a55022c0edb85d34af1d1739ee8 gas/testsuite/gas/symver/symver6.l
+73c983230d1435795774501e7247e78c gas/testsuite/gas/symver/symver6.s
+06219e9948de26c5c3c06e783256d8e5 gas/testsuite/gas/tic54x/address.d
+78c05303f9f0cbc1a4610cafd8684961 gas/testsuite/gas/tic54x/address.s
+fb347ccf07d51593edd432f687aa5376 gas/testsuite/gas/tic54x/addrfar.d
+25c170a2e98a7b134c9d90c32965c1b3 gas/testsuite/gas/tic54x/align.d
+59a3b1b5bc5d51e4f20df8ea41128d88 gas/testsuite/gas/tic54x/align.s
+6b7b3e8e956870e9d7ce471e2a1b6ebf gas/testsuite/gas/tic54x/all-opcodes.d
+16b138265d758ee38dbf89a41696f4b4 gas/testsuite/gas/tic54x/all-opcodes.s
+6ed8469e573b882990ad930cd270b1b1 gas/testsuite/gas/tic54x/asg.d
+64c9ec95e386f8e5d0040c26fee7321c gas/testsuite/gas/tic54x/asg.s
+fcd7df0d00621d5b547d92bd23c4ca62 gas/testsuite/gas/tic54x/cons.d
+671f83be79acf4e42032f33d828864ac gas/testsuite/gas/tic54x/cons.s
+2f04f28d19f65600c0958cf168558a6d gas/testsuite/gas/tic54x/consfar.d
+f29bcaee02fc92a68ccfdd32f6999527 gas/testsuite/gas/tic54x/extaddr.d
+7eae8033cffbecce992afdaa9c339ff6 gas/testsuite/gas/tic54x/extaddr.s
+953d25fcac101a1860be2b36bb61ec50 gas/testsuite/gas/tic54x/field.d
+534ff025c4a332a0b3a4811c889d9637 gas/testsuite/gas/tic54x/field.s
+e8334221e9d81711a8120983fc654f4b gas/testsuite/gas/tic54x/in_mlib.asm
+6b81ff294df52cc2ee0cde1d128f3253 gas/testsuite/gas/tic54x/labels.d
+aae9f04acb5f59969bf1f0465d7c78bd gas/testsuite/gas/tic54x/labels.inc
+b745801cf3d0eb59ca1b1a583e26a0b1 gas/testsuite/gas/tic54x/labels.s
+28e2dc705290da3c4d7010494599f100 gas/testsuite/gas/tic54x/loop.d
+4a609e1f44de00f164f48203d5df870b gas/testsuite/gas/tic54x/loop.s
+eb2b6fc38f9bd4793dd7020a05122e3b gas/testsuite/gas/tic54x/lp.d
+2c650e0c313376b80d7a6950039ff3b4 gas/testsuite/gas/tic54x/lp.s
+c8161a6bcb529ab6c94cfa3a3521e429 gas/testsuite/gas/tic54x/macro.d
+d76d2e7a0d946a16279b4eeafcfa0cc7 gas/testsuite/gas/tic54x/macro.s
+09c277ba1f7d69551c473cd20cbb14bd gas/testsuite/gas/tic54x/macro1.s
+ddbfc019917d779c19002992f3929367 gas/testsuite/gas/tic54x/macros.lib
+7ad5a03901cc52759b77b30e51f34875 gas/testsuite/gas/tic54x/math.d
+1ff7d6cd1fb20b8cde42e82ea5e38dfa gas/testsuite/gas/tic54x/math.s
+aa3b0bac4ffdf82c7a4b6121ec3fc560 gas/testsuite/gas/tic54x/opcodes.d
+03c7d9751c849b0f4a04ce24d181e494 gas/testsuite/gas/tic54x/opcodes.s
+d1f6def2d5b9c1a697baaa24128bc192 gas/testsuite/gas/tic54x/sections.d
+4c9b7302923b60d63cd64bee9dd621d5 gas/testsuite/gas/tic54x/sections.s
+41deec8226f138d357d5a06609ff7c1b gas/testsuite/gas/tic54x/set.d
+cdf1f13fafc4d4abd831567cdda40eff gas/testsuite/gas/tic54x/set.s
+cdf7f966b14c2ae2815b55e4b6eaa023 gas/testsuite/gas/tic54x/struct.d
+28bcc7e09d20e59e1ccb70e318f45324 gas/testsuite/gas/tic54x/struct.s
+3a49bc7e30027613e26e13d25b7f5dbd gas/testsuite/gas/tic54x/subsym.d
+a6d4e40952285da31a31a7146766dc04 gas/testsuite/gas/tic54x/subsym.s
+a3547e6b13dd61f04ad639ae18c38bb3 gas/testsuite/gas/tic54x/subsym1.s
+b2df4dd8056e7236407bbc4c60b27b02 gas/testsuite/gas/tic54x/tic54x.exp
+f3ab69523e22267482a9bb7a4ca35543 gas/testsuite/gas/tic80/align.lst
+bed809ed517aeb7c1246209c7f5b0ede gas/testsuite/gas/tic80/add.d
+98eb432f2b3667f4172bc7bf8279fae8 gas/testsuite/gas/tic80/add.lst
+126505861238887b38542c2c007b4f44 gas/testsuite/gas/tic80/add.s
+26a1a236ac7ccef8f9d5ae9f771a1e15 gas/testsuite/gas/tic80/align.d
+e184de59b384a0b61f611f43fd0481db gas/testsuite/gas/tic80/bitnum.d
+0bd85a81ad6b84115fb27616eec5abd5 gas/testsuite/gas/tic80/align.s
+4e8424d297ee11749b57a2dec2bfd7be gas/testsuite/gas/tic80/bitnum.lst
+8670ee2178617d2fab1746489ec22609 gas/testsuite/gas/tic80/bitnum.s
+4d4729704be4f2a668a5b8f589fc6922 gas/testsuite/gas/tic80/ccode.d
+ee5b688ae7df591cadc29f06f26845a0 gas/testsuite/gas/tic80/ccode.lst
+2b9858d4ebadb84b9197d33ccc1422e1 gas/testsuite/gas/tic80/ccode.s
+7a715f4871362014afea0032c8ab1bde gas/testsuite/gas/tic80/cregops.d
+74aaf84be9651b7d468afe9d57016a6d gas/testsuite/gas/tic80/cregops.lst
+ef4ba470d30ac045a040677b704ffc66 gas/testsuite/gas/tic80/cregops.s
+626d4a37405c1c8ebc93a7be21c2a9b0 gas/testsuite/gas/tic80/endmask.d
+46833c7025b93bab36f855a40a5be3ce gas/testsuite/gas/tic80/endmask.lst
+00643dd65f546646666046d4e2cfdef5 gas/testsuite/gas/tic80/endmask.s
+6fa3699cda567401f6236547132b0d20 gas/testsuite/gas/tic80/float.d
+f97907246c6a0d4370a3b08b1f7d6829 gas/testsuite/gas/tic80/float.lst
+e9392428f1929a6f12c8d0c5bfc7d95c gas/testsuite/gas/tic80/float.s
+924d1ef98e49d0d881d7936c76795f26 gas/testsuite/gas/tic80/regops.d
+68f717e98126f6612a5fa278576ffcb1 gas/testsuite/gas/tic80/regops.lst
+16bbb022a6816956f454d4f141d87b8f gas/testsuite/gas/tic80/regops.s
+ff82220cf29c5cd876cb0ba8a495695a gas/testsuite/gas/tic80/regops2.d
+207cc576c6c79969fe4510ae1c0fb1e0 gas/testsuite/gas/tic80/regops2.lst
+0e21bec7cf7231f015d0890f3c60c750 gas/testsuite/gas/tic80/regops2.s
+cab98129d538fef49483e468bea9cab7 gas/testsuite/gas/tic80/regops3.d
+fb72f4fadb5605b36c53f5c798139907 gas/testsuite/gas/tic80/regops3.lst
+dca27d2d5b2888ad207b35cbb5a5c1bf gas/testsuite/gas/tic80/regops3.s
+4a437df1abe33ea3d6b4a744dd1b3c71 gas/testsuite/gas/tic80/regops4.d
+d127941ee0d43b5f508f2e40744df9fc gas/testsuite/gas/tic80/regops4.lst
+610f8fb61cc924958615f15cbd3fb591 gas/testsuite/gas/tic80/regops4.s
+987bf57eb106e1f96eef6b5a8add52c1 gas/testsuite/gas/tic80/relocs1.c
+96d6b8f21498eb373bcd7cf1c0438c0c gas/testsuite/gas/tic80/relocs1.d
+1932c15229e0d07381c8f8cea548fd75 gas/testsuite/gas/tic80/relocs1.lst
+db5aaea7f4cbc104391f2a92ac06f28f gas/testsuite/gas/tic80/relocs1.s
+22e1b37d7fdb2c192a1203a5e71a7fad gas/testsuite/gas/tic80/relocs1b.d
+e53f695a65c5ec81a507b69f66537d65 gas/testsuite/gas/tic80/relocs2.c
+420fdeac1619d019ca440ea87663d870 gas/testsuite/gas/tic80/relocs2.d
+04fecb799cbd9447e058e8d53ed75ff4 gas/testsuite/gas/tic80/relocs2.lst
+5c763a74cae5be60ace2421226e27631 gas/testsuite/gas/tic80/relocs2.s
+2c1dc022a0f215dae6dea890f28798d8 gas/testsuite/gas/tic80/relocs2b.d
+d7d5f18226711cd03767a8e2538cdbef gas/testsuite/gas/tic80/tic80.exp
+ce0fc256b576a00b3292ad52441d079c gas/testsuite/gas/v850/basic.exp
+b3daff1073feeab915c5d25268ab1d71 gas/testsuite/gas/v850/arith.s
+d33db5351243bff28f76ada8284737dc gas/testsuite/gas/v850/branch.s
+fd5263cb3409650f6bb2e9b610eab2d9 gas/testsuite/gas/v850/bit.s
+e3d311e55349338e4876c3711ed91c46 gas/testsuite/gas/v850/compare.s
+986292c2ba21464166aa337ab580a139 gas/testsuite/gas/v850/fepsw.s
+5f8e79e5bec30791f19218a7ad23040d gas/testsuite/gas/v850/hilo.s
+f7d87df456dee97f2d28be5a29afde0a gas/testsuite/gas/v850/hilo2.s
+36254aabdcf9005f2dd8e7fba47de388 gas/testsuite/gas/v850/jumps.s
+ee5a6da54e89a759bccef5da2ce4747e gas/testsuite/gas/v850/logical.s
+79263247214c7d46c383e26aafc74d31 gas/testsuite/gas/v850/mem.s
+2db16d6b7c2aa2cc17e621ac1da852eb gas/testsuite/gas/v850/misc.s
+8c5fd0446e831223f93adebecec8a2b2 gas/testsuite/gas/v850/move.s
+90c3465d11f275837ad5b9cac2dd51c4 gas/testsuite/gas/v850/range.s
+10e8b025bce8af1b59c395fc5799236c gas/testsuite/gas/v850/reloc.s
+9dab247181eb9a6ca08677f2b567cec0 gas/testsuite/gas/vax/quad.exp
+c36a2f8942f73fe7a5550ba90d2ecfd7 gas/testsuite/gas/vax/quad.s
+1e191c0d4f723e71c2f4f44b14cfa942 gas/testsuite/gas/vtable/entry0.d
+bb679f23724eed5be0d4524e7f14005c gas/testsuite/gas/vtable/entry0.s
+0b1998d125aec2d1e508c646ac5da657 gas/testsuite/gas/vtable/entry1.d
+bb679f23724eed5be0d4524e7f14005c gas/testsuite/gas/vtable/entry1.s
+64f7daf21aa03263ec1f75c8b4ebbebe gas/testsuite/gas/vtable/inherit0.d
+a37bd60d99eb2ada7ec2360039dc1b4a gas/testsuite/gas/vtable/inherit0.s
+a90dff346874aeab5a7833b62a12e5db gas/testsuite/gas/vtable/inherit1.l
+fcc7f1b5a640e5714a1bcd9d50df7979 gas/testsuite/gas/vtable/inherit1.s
+1b1f9e422b1d90576fac2ffee6256a9f gas/testsuite/gas/vtable/vtable.exp
+5c08b2b199bcea246a03344173d3f96b gas/testsuite/gasp/assign.asm
+99deacf6e3a96c8e21a453709af6ca01 gas/testsuite/gasp/INC1.H
+a926c95abb0d81a9a764bed20ca06f0c gas/testsuite/gasp/INC2.H
+269356bda8c304ef47bacd331b4fc968 gas/testsuite/gasp/mri/embed.asm
+fd5ca6b2f3c6e59aa7040e532f28600e gas/testsuite/gasp/mri/embed.out
+6b8744910f78aef4b165e287973af04f gas/testsuite/gasp/mri/exists.asm
+ac5385c093c3023ebc8370ef66cf3b41 gas/testsuite/gasp/mri/exists.out
+ceadf5cddc8000502be2f2fbc24cabec gas/testsuite/gasp/mri/irp.asm
+c41e38e1116c0009a93516f09e86f839 gas/testsuite/gasp/mri/irp.out
+728e6db3e88d2ddb22e424fc2e404dae gas/testsuite/gasp/mri/irpc.asm
+c4d925d7fdc60ddafa773c5b7830cf2e gas/testsuite/gasp/mri/irpc.out
+bc9ea91fe33eea9993f7dd5b737cb880 gas/testsuite/gasp/mri/macro.asm
+8bf5e77911c284a34bfdf9c3f34d9e49 gas/testsuite/gasp/mri/macro.out
+7a68842c90401e4b34071449715e0f0e gas/testsuite/gasp/mri/narg.asm
+87693669559588c329af7213cd9c487a gas/testsuite/gasp/mri/narg.out
+d0af25ef7f1c265d961ee9e088cf8276 gas/testsuite/gasp/mri/rept.asm
+e2065f7a89c27a29049327cf8e31b18e gas/testsuite/gasp/mri/rept.out
+563a4800e8b40729415090306bce6554 gas/testsuite/gasp/assign.err
+42447b48e38c0caa7934fe72d48f1724 gas/testsuite/gasp/assign.out
+7e11017965ff9319ca614e437e3b269a gas/testsuite/gasp/condass.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/condass.err
+e7bf1012067a2a9008084234aea5c23c gas/testsuite/gasp/condass.out
+03ec63f9050b6d77982db47bd7216cda gas/testsuite/gasp/crash.asm
+f92c854daee87f8949312ec1faf02864 gas/testsuite/gasp/crash.err
+9f1a1ec87f3fcc35cf3ab8f943ee0f04 gas/testsuite/gasp/crash.out
+70aced41deb34edfe61b2888a0f2d2b4 gas/testsuite/gasp/crash1.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/crash1.err
+a23d7921aa2ba917503b2994e53ddf1a gas/testsuite/gasp/crash1.out
+0a6ae29a56ebe74b4f93dc149949dbe5 gas/testsuite/gasp/crash2.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/crash2.err
+d18e176c99fab5d444ef8ef98ef476c1 gas/testsuite/gasp/crash2.out
+e8e046b711151d3439e06411493b6b67 gas/testsuite/gasp/data.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/data.err
+dd5d6726c6d3ab3b244367d15e5a33a5 gas/testsuite/gasp/data.out
+d3a831ce902a2c7a641807d41bf060b3 gas/testsuite/gasp/exp.asm
+635e19beab5dc8dbda0faae105390da5 gas/testsuite/gasp/exp.err
+3cfa517a87ee6808108dd82d821a9142 gas/testsuite/gasp/exp.out
+d9840554d6f6404180190fb46ecfa609 gas/testsuite/gasp/gasp.exp
+6952d6e84b8eff6f8ad3735049384d9b gas/testsuite/gasp/include.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/include.err
+38f5ce2c3d1abd4c85cbae3381a35d00 gas/testsuite/gasp/include.out
+b336cf59f3381637b0bbc85903836f49 gas/testsuite/gasp/listing.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/listing.err
+d64ca2c01c09d852ee97d0b9e283f427 gas/testsuite/gasp/listing.out
+2cbe9e11582b63f485413fb0c8d4882a gas/testsuite/gasp/macro.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/macro.err
+3aeb89bd83e0cf8b84c7281b5191ba07 gas/testsuite/gasp/macro.out
+8111773c73a99298c21c45704eb6fa11 gas/testsuite/gasp/mdouble.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/mdouble.err
+fbfd85681f676ecec67e21d8aa571bf6 gas/testsuite/gasp/mdouble.out
+a7284cd713fd12560f811939fc784860 gas/testsuite/gasp/pl1.asm
+76cefca44793036ef20556314fdafadd gas/testsuite/gasp/pl1.err
+266d215f1b5b7d6743c3bb75be698654 gas/testsuite/gasp/pl1.out
+b67a3bb2f6c1256c5252c8f3b6e76bfd gas/testsuite/gasp/pl2.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pl2.err
+21bd454e41c190fc028359db94f60626 gas/testsuite/gasp/pl2.out
+80cb3c666405f7145b2a385fc6e4dfbd gas/testsuite/gasp/pl3.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pl3.err
+089301edb4b459a59d61ffcfe7d709dc gas/testsuite/gasp/pl3.out
+b8410781da6854955ede10668b40acb0 gas/testsuite/gasp/pl4.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pl4.err
+4344b2df49ee03937e0e6757e9546441 gas/testsuite/gasp/pl4.out
+f0836880911e25120d0e919a3e3c9a6e gas/testsuite/gasp/pl5.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pl5.err
+531bce879bdb6df7858a251b2489548c gas/testsuite/gasp/pl5.out
+214848f5a01f2721b749c0d6d179fc7a gas/testsuite/gasp/pl6.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pl6.err
+6c5154a2e0886aa2ed34040e9fe697c4 gas/testsuite/gasp/pl6.out
+ed7dc7cdd7cba3f7d2bfd972654e741b gas/testsuite/gasp/pl7.asm
+76cefca44793036ef20556314fdafadd gas/testsuite/gasp/pl7.err
+2b0bfdec74d0f2d405f6dcaf11e9cb9d gas/testsuite/gasp/pl7.out
+c2ec7a594dd444a867ccb269a255c592 gas/testsuite/gasp/pl8.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pl8.err
+a01ab58299b4bbda08c5a55e3152301d gas/testsuite/gasp/pl8.out
+1b8fdb309983468765a0f26231b7db2a gas/testsuite/gasp/pr7583.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/pr7583.err
+a29f353fa5f949d2eb12b499baf3bd0c gas/testsuite/gasp/pr7583.out
+f94a30de39715bba6e11b2720e2a7a24 gas/testsuite/gasp/reg.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/reg.err
+129ad1aea55cbd6afe5b5e44c433ee57 gas/testsuite/gasp/reg.out
+6287f41f28e5d0a372bcec00489a1fcc gas/testsuite/gasp/rep.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/rep.err
+0d497169dff397f2e446fe23b5ee981f gas/testsuite/gasp/rep.out
+a91feea67b9afd9c2d123299e917cdb2 gas/testsuite/gasp/repeat.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/repeat.err
+7fe9d715fbf1f3e90c282b69c8a388af gas/testsuite/gasp/repeat.out
+a0420f1482401d14d10ef4d4c8da644f gas/testsuite/gasp/reperr.asm
+76cefca44793036ef20556314fdafadd gas/testsuite/gasp/reperr.err
+f4c30bc7915f5d47168f3b47094c1449 gas/testsuite/gasp/reperr.out
+e042647132f714b19a98c4ab535fcf69 gas/testsuite/gasp/reperr1.asm
+527eea9a7e1feaa36aee5f84c4691465 gas/testsuite/gasp/reperr1.err
+5bde34ef89fa801ac3eaf1c59f7d4763 gas/testsuite/gasp/reperr1.out
+b4b91fe28ecaa31df9618a2a4a9e2a76 gas/testsuite/gasp/reperr2.asm
+443731a66bbfcc1831647071a681f5b1 gas/testsuite/gasp/reperr2.err
+a9f1da65b7f9da6492a84ce6296970fa gas/testsuite/gasp/reperr2.out
+f85e0a8deb6e54c906e2750b42d7cfd2 gas/testsuite/gasp/reperr3.asm
+4eeca830592748b13cde26461bac739b gas/testsuite/gasp/reperr3.err
+2f151098b19ade3dad0cbef222e86a5d gas/testsuite/gasp/reperr3.out
+1b326c95c48895d14dba16c01e763bb0 gas/testsuite/gasp/sdata.asm
+0c62f96d2af905dfa64eb1427a600c11 gas/testsuite/gasp/sdata.err
+657f7bdf02673edba4a055158e9cb587 gas/testsuite/gasp/sdata.out
+6b52ad9f5150dfabecadf59651b01012 gas/testsuite/gasp/sfunc.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/sfunc.err
+3f5c6078bb1164493fd7d975fa78134c gas/testsuite/gasp/sfunc.out
+c928b32a65029c49d6add1539b555a17 gas/testsuite/gasp/t1.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/t1.err
+37921430797b568a3ac395ffdcd1030c gas/testsuite/gasp/t1.out
+94f4985650874fa3f2223be2ca97a494 gas/testsuite/gasp/t2.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/t2.err
+e63f0cf737dcecca010288e940156820 gas/testsuite/gasp/t2.out
+0aa649aaacfcdbf138acd6302e51444b gas/testsuite/gasp/t3.asm
+76cefca44793036ef20556314fdafadd gas/testsuite/gasp/t3.err
+cb8d602227b2b4e0ee0cbc24905b1c92 gas/testsuite/gasp/t3.out
+65f971bbfd23b3e6f4f256550fa6c999 gas/testsuite/gasp/while.asm
+d41d8cd98f00b204e9800998ecf8427e gas/testsuite/gasp/while.err
+a68b47ff34892c8fa97aaf9cc09bc975 gas/testsuite/gasp/while.out
+133e9f8bb4d12ac7e498f0ac5d0246c0 gas/testsuite/lib/doobjcmp
+5725f8e58e03bd6026f3e2721e1db22e gas/testsuite/lib/doboth
+aad4965bf0067bf9fb71acc19f7877d4 gas/testsuite/lib/dostriptest
+bdf5e4dee40167a92f0a45965b0375b7 gas/testsuite/lib/dotest
+af650aab07403b5a05623713b613856f gas/testsuite/lib/dounsreloc
+30764ced5c424e3c2c384059cbe2a227 gas/testsuite/lib/dounssym
+11ac8d1eb5cdf4bdd02d0aae83fed66d gas/testsuite/lib/gas-defs.exp
+d78aaf1191d033531d00fa9888214ee0 gas/testsuite/lib/gas-dg.exp
+499042a4448e4b2d3bd2b2a1b0b5d859 gas/testsuite/lib/run
+c25a2b439faecdbc5a8cd011fb753f1f gettext.m4
+f830d343ce09eb11786979f2ce0bf68d gprof/po/POTFILES.in
+bfb5c178c2404196ab54d7532a61e3d4 gprof/po/Make-in
+ba1bcadd6275dd4ce7f7663645c967ac gprof/po/gprof.pot
+b167dc5dcf583c07feecea0f8003e647 gprof/.gdbinit
+5c1891897860a145ad7c30909449718d gprof/ChangeLog
+d618facc3e8ce8bf3d02ba452e1be6ab gprof/MAINTAINERS
+02ef2320553009ebd7b503ad9867162e gprof/Makefile.am
+7d65b04a19d759d52a9e3875e3577f68 gprof/Makefile.in
+55be9544e8fe419300921fa44a0aa692 gprof/NOTES
+84c06350a03466660f0f691ed1220657 gprof/TEST
+62728c5b834e3893e5414a8bae9a99d8 gprof/TODO
+2e77183c94ff25e517327793c2db2e55 gprof/acinclude.m4
+245c5c6842c9a94a0e48a3d8deeebe75 gprof/aclocal.m4
+e778a923257c810d68dec13fd488eb17 gprof/alpha.c
+a7770962b33861e027937f67dd04d636 gprof/basic_blocks.c
+5a9a5be037656558e5279b90c1ae2ab0 gprof/basic_blocks.h
+7968182684da901d7b38b24fa1e07b3f gprof/bb_exit_func.c
+fbfb6886c21d1566d892893aacf14e8b gprof/bbconv.pl
+25e7c14a812ac2befca1efaba7326de3 gprof/bsd_callg_bl.c
+cadeef23b67be4bb67efb8d51c426a84 gprof/bsd_callg_bl.m
+888f37551929750ba7f6fd19afcb21da gprof/call_graph.c
+866716da997cb0d650c5efc15110055f gprof/call_graph.h
+eca150566a8cd2a54a43e98ca6d15463 gprof/cg_arcs.c
+f4b4564ff4855580d031efb91d6b96c8 gprof/cg_arcs.h
+d698389b5fb62def7dca627e691f69f2 gprof/cg_dfn.c
+9763120b90a70649f8da911568b308fc gprof/cg_dfn.h
+bf8c04d475a0f790c06cd8f764857699 gprof/cg_print.c
+4667c90f2f2a2c76ec0adf7435223b22 gprof/cg_print.h
+ac814b7e1ea6a9cbbf65d1c8e3bd935a gprof/configure
+1b440fda464f9264f1741223c6d41fe8 gprof/configure.in
+14f5916f4d21a48666b6fc298f95507a gprof/corefile.c
+49f017147fe6fe103bc3e084836e07c9 gprof/corefile.h
+fb7920a70d8eba8b94fd446da371604e gprof/dep-in.sed
+b25cb6184818f6bb4dea4962b70ea3bb gprof/flat_bl.c
+d6498bb2d3ec24087785cd109c215067 gprof/flat_bl.m
+8929b59fb940ea7c3d784d48d652200d gprof/fsf_callg_bl.c
+609bbce6f5cedf6b0c8d25c3061b582a gprof/fsf_callg_bl.m
+fd54ad39db25077ad9a12a918e166d8e gprof/gconfig.in
+95f54ce5c8c2dab23e194640fcd4e7cb gprof/gen-c-prog.awk
+cd759d3654ba11ef9d2efaa366af2624 gprof/gmon.h
+18ae91e87eed5129da1638a241c61627 gprof/gmon_io.c
+b650ef55a8a4e0a45c8367ccc2d564dc gprof/gmon_io.h
+021e4887d32fe6edf00f68b823c2a95d gprof/gmon_out.h
+24d890c7d2b01bf70a015038155504a2 gprof/gprof.1
+ecd2835af95354b585276fdc11f24043 gprof/gprof.c
+1f49635b9990b75a4f482f23f80639df gprof/gprof.h
+fd4e33072a67b1aed065e8a56a681c01 gprof/gprof.info
+7a0a344dee265ffc777fed1dac3f40fd gprof/gprof.info-1
+e0558f0ebe0660c2f99b60e45aa3b86e gprof/gprof.info-2
+4f5a8f8d3c765480e3926b416714bb8b gprof/gprof.info-3
+fab18a76ce499e43dc4b69c6e3a2fa79 gprof/gprof.texi
+774dcfa219e6de263957873db9bb656a gprof/hertz.c
+02cf975780e3e9ea8f94840e5e907513 gprof/hertz.h
+f8ad2788edee51d03a09c4657cc2c900 gprof/hist.c
+11b350c4b77760c07e82941345400787 gprof/hist.h
+248d423e63692161059538b9440dc97a gprof/i386.c
+5d25c1e89b77bd6acc0096b25d8b81cf gprof/search_list.c
+d0aafa7175d1e4ccf1879db0b3a7fc0f gprof/search_list.h
+64e13daae27c6a20dda59c5e4923db6e gprof/source.c
+bb8eb050cb231ebffa1daea6e1837c38 gprof/source.h
+fb1a645046a0682ea7c81a99c9d58504 gprof/sparc.c
+1ded054093de910d9786c62bc4fe8cc6 gprof/stamp-h.in
+36d9b04b03aa3ccb1f45f119fb40a9e8 gprof/sym_ids.c
+c3d17f95806a25f66aa2a69a4e744f77 gprof/sym_ids.h
+401bb53aeba4deeb72e3d5416909a117 gprof/symtab.c
+69b49dd5703629791c3e8595063ee528 gprof/symtab.h
+6c1ffc7c93988672055912275476793b gprof/tahoe.c
+26879b43fc4139d5ab539955ee00cd0c gprof/utils.c
+9174a73ed79e0d552e57d09390065985 gprof/utils.h
+30e9c3f1ed98b4c9cd45b99cbea476ef gprof/vax.c
+3f7f2285462f26d3ba5e4a182f413a93 include/ChangeLog
+94d55d512a9ba36caa9b7df079bae19f include/COPYING
+54e880a7e5cb6b86d4c896a9ce11240c include/aout/ChangeLog
+a2e69801e5ea7ccdaf6f3c50d2bc0612 include/aout/adobe.h
+a3f73aefbf3f988c748dde4d5eeeded9 include/aout/aout64.h
+6e29d3496a023a2d2287a5387b9f9d3a include/aout/ar.h
+f86cb6d13f7f5966f1cff6913e97637c include/aout/dynix3.h
+5c7ef1a75ff1e0e4c2dc584ae7110160 include/aout/encap.h
+31778c847e418158b15357384df3de8c include/aout/host.h
+5d9fed058c072b61553cf62174a8e37e include/aout/hp.h
+e9ee45a148c4510c53692eae23ef9852 include/aout/hp300hpux.h
+d82993bf02befd5682dcd44b076ad991 include/aout/hppa.h
+41c3773c74d1526d230e16d2ab8be1d3 include/aout/ranlib.h
+ed54d98cf7ce35b650a28eb174ecde23 include/aout/reloc.h
+a49779c8783c459d42b28e50ed8e2d49 include/aout/stab.def
+c76002cd3fcc12e5a10b8b658cfc74af include/aout/stab_gnu.h
+aa113b4de23ca91a3242487c342ee5fc include/aout/sun4.h
+fd2735e0ed2816536ca54314023f445d include/coff/ChangeLog
+fc69b63cf02eb32fb8522e4049d974d8 include/coff/a29k.h
+72b0187d131c12e743031fa71609e98e include/coff/alpha.h
+205e0127811cbfd49a7fa7d6932b01b8 include/coff/apollo.h
+2362e8c685e033743b759dedf41e04f3 include/coff/arm.h
+0404b91ab9da88108cb04d27d61b0039 include/coff/aux-coff.h
+86516d902a540e3ff0c6d304fa2760d3 include/coff/ecoff.h
+a920c823c31e6263642496f98e9900cd include/coff/go32exe.h
+238e5452aed4c6398809ab68909dd75f include/coff/h8300.h
+f0ebcfaa50c170cf9b8ca43194b94f7a include/coff/h8500.h
+22d1ae082baad5153e6b8383a2a93bbf include/coff/i386.h
+7ae7f629ae094840394131823585d004 include/coff/i860.h
+de098a34e2825d280cc4043a57f20041 include/coff/i960.h
+5b35a899abfba53f079403a5c85180c9 include/coff/ia64.h
+40775337c9d44e31107260080f77870d include/coff/internal.h
+1f270ed695d268eeecacbe013988283b include/coff/m68k.h
+178823e20e015e0148e0830a1197fb43 include/coff/m88k.h
+5931db20cadd2652b3578b38d6674df6 include/coff/mcore.h
+bd5b2f3b0c31a05f34eeba6ee1031b1e include/coff/mips.h
+bb36c964fd4c18308de209b32391d243 include/coff/mipspe.h
+005a2bcf46690d3e0919825d2598810c include/coff/pe.h
+3e63a5a40cbd5789cc4f959949168e02 include/coff/powerpc.h
+ca7551ab79d241ffbb45086318f24ec5 include/coff/rs6000.h
+cf1329a03f33532c65c158a16c4c0e9c include/coff/rs6k64.h
+eaef0bc049b8cec12d2b7df650ec5667 include/coff/sh.h
+bfe3c43cd94a2e6263db37e830f10bc0 include/coff/sparc.h
+49952fda1e759e5aa659f8f78d7e0ba0 include/coff/sym.h
+ac2f6431d01bacf541ecc3e5e8dc5499 include/coff/symconst.h
+317d74cdf079fbfa059f8831a4748683 include/coff/ti.h
+7cd214c5c8f7536f226cb7cf11cd4861 include/coff/tic30.h
+e75a3d088b34d1bd2a26a9b0bb366703 include/coff/tic54x.h
+a4c8e4d53034224ff29118e8324278a0 include/coff/tic80.h
+99f71352ba13538b641fb6f911a32a52 include/coff/w65.h
+044467053ae212c29174aa86b638311b include/coff/we32k.h
+d20bb9db7f31b7bd70bedb2259a83a35 include/coff/z8k.h
+d618facc3e8ce8bf3d02ba452e1be6ab include/MAINTAINERS
+de46742edca3a9276eefa5ae8fdee5eb include/alloca-conf.h
+0fe1a22990f770625f2d47db07ea3710 include/ansidecl.h
+6e9ad6c2a8d23e9769fdcb2115d2c5f0 include/bfdlink.h
+e4247635fdf4b4f00f70e8d0fb756cf7 include/bin-bugs.h
+fccd6737c231d4f83c8cac5e056b2ab8 include/bout.h
+c4f59b0838482455edea3d3ec13bfe62 include/callback.h
+4d429e3514ede7e9df68ee892cb642f2 include/demangle.h
+4d17322722def8cf7571efc929f1c9e1 include/dis-asm.h
+bdf2bd343ec6e5fb41e946812accd405 include/dyn-string.h
+df592480ae2f45f93360b1f1270756ab include/filenames.h
+9c6e6fa3c695140329e596fb787c67fb include/floatformat.h
+47d3c43034a06e9bf8edf7ee03b22c9a include/fnmatch.h
+b2cd17a9267bc2e92df461d3170cb15c include/fopen-bin.h
+87444b5c85b3c2bc734f8b86157b15db include/fopen-same.h
+2f3ef0265ac665d61a8721a78c47a79f include/fopen-vms.h
+7b08d623511997558fcc99b0df47efc5 include/gdbm.h
+d448bf1c037d00b23f67c690e25d7a16 include/getopt.h
+0a7705129476cbc81cb4a95a69b5177a include/hashtab.h
+e9b005e687f2260ebc81b9174f5df8bf include/hp-symtab.h
+b1abe57717d91f6953b7d6f6e45cac8a include/ieee.h
+ee8d566190279ae9455fcc673fdfeba3 include/libiberty.h
+d366263aa35f7ef0c33a737c1bbaf063 include/md5.h
+7a88769e6ad00e6a26e0c12602f24c77 include/oasys.h
+88d315194393cec8fa190539965d5113 include/objalloc.h
+f94c94145708746261e21b0d294c676f include/obstack.h
+1587b7de5627b690e5b3a74a62e92d4f include/os9k.h
+77aed2784cb97c49c7b7792da483a5ab include/partition.h
+28efeab7c67b08dce026e929b90ea452 include/progress.h
+1d3a79553fcb7445d1f01f73557e9d0e include/remote-sim.h
+52d200962cf12f5c3ef553b60919cc2d include/safe-ctype.h
+501824b571d12bd085cc1447188ad304 include/sim-d10v.h
+866d60698fbecc154ad3cf29e029ebc6 include/sort.h
+231be5c42f774755c49d2d5b6938fe0d include/splay-tree.h
+4ebaa58a8bcb2ad62a520447123446ed include/symcat.h
+4139f8542dc5f06dc666e55de9e8b32a include/elf/ChangeLog
+99e5896de3e59f55476388ec209a60ea include/elf/alpha.h
+dacd0e3478f0c2b65bbbf95627a63ca5 include/elf/arc.h
+5a763d499e03b2f8d0b56629e1072ba8 include/elf/arm.h
+baa59d27677ebaac3d9930b0a694c4d4 include/elf/avr.h
+e1237d41e4ae17d719de8ed689dc308b include/elf/common.h
+6587e0defb62d3cdfe0212b1e96232eb include/elf/cris.h
+e0e7e72a2c3bafa9e1edb8c0790e1048 include/elf/d10v.h
+c9f638b2b24fd31585172c5a6e1d593f include/elf/d30v.h
+08bf48f59f748b8d8790f7b6d8963a9d include/elf/dwarf.h
+9a47815297f36688167f9a878b311475 include/elf/dwarf2.h
+448f0b7c67c137801574929a296c13b9 include/elf/external.h
+a9b2dcf12dbc2a0b0517b2a081b6f3fb include/elf/fr30.h
+a187bab1f34e1d1b8babbdbcd88cea5e include/elf/hppa.h
+c56808ee28d1512c9e7dba90395bcb9c include/elf/i370.h
+d11fe6eaf8b48b858376878561c5fa28 include/elf/i386.h
+578c40eed3fb682e21543a16ba7d036f include/elf/i860.h
+050b05ce787b1be511b14cad030771ff include/elf/i960.h
+c46361ea197bce9fce6f171ef718bd24 include/elf/ia64.h
+c44dc60476fddf81e9ef9a801a9a533b include/elf/internal.h
+8cc47daa6d0822c919aed7aeac181012 include/elf/m32r.h
+be3fc4a34428bb924d1194bb7c6ecbd3 include/elf/m68hc11.h
+4c6a0574b9fcadc055603a71bbc84819 include/elf/m68k.h
+4287410dc1a5b0713687c975308fc3bb include/elf/mcore.h
+4b25f4e4c8e495c40612b249a32e7a56 include/elf/mips.h
+4e99b2e749471d905c1cf71b20db4200 include/elf/mn10200.h
+779d7af919444aee7f48596d3261bc4c include/elf/mn10300.h
+f6f6eac01098353e234cffaf8063be25 include/elf/pj.h
+3dd41ee9a09f243c5acf9e16461e7c39 include/elf/ppc.h
+3fc36f9e94fb482e8c011d3726a87899 include/elf/reloc-macros.h
+6470f2f7ea05ff6efa01c081f260fb38 include/elf/sh.h
+107f9211c16edadf3da0f8c79c4839ce include/elf/sparc.h
+b565ed87c438c2f606f1833074f938d6 include/elf/v850.h
+a02d6617c483d114704d8b89e7af3e0c include/elf/x86-64.h
+5dbb507e309b9fe20c45d16972bfb936 include/mpw/sys/resource.h
+6bc56500657f8c3b71b20af4c69e967f include/mpw/sys/file.h
+6bc56500657f8c3b71b20af4c69e967f include/mpw/sys/param.h
+745d20e08d92b71d289da383e8a47168 include/mpw/sys/stat.h
+99098422e0de596f6a2e552220346da7 include/mpw/sys/time.h
+009a0ee881c63ae879dd80dde06daca5 include/mpw/sys/types.h
+f455b31f23d018ab96236c2010c67991 include/mpw/ChangeLog
+ac05e56eb8acd390d0fa557abc21380d include/mpw/README
+d1c1f4e66376b9ef2e8d4c79446503ba include/mpw/dir.h
+c293cf9a745465e2371edda6e3f700d5 include/mpw/dirent.h
+fd0c0ec6483a6ac794cfe370f323c8e7 include/mpw/fcntl.h
+211595cb825444acd3656a8172a3261c include/mpw/grp.h
+7a2ba7b6e2b168f335e8d53b1003ab24 include/mpw/mpw.h
+32f1e7dc45c3a15418ec5e0998f1f8f3 include/mpw/pwd.h
+f45a638fbfe5d806a23ae06f144aff99 include/mpw/spin.h
+043c8982bc0ff4fd987727abd7341aa9 include/mpw/stat.h
+94cd8a35a9f625ee6a4d19ef2a481042 include/mpw/utime.h
+30ab289a4d9376ba8ec961019e3c291c include/mpw/varargs.h
+5762cee36090b023e2f910d9b731ddde include/nlm/ChangeLog
+94e11c7e32e32838f88946b1b355706d include/nlm/alpha-ext.h
+94b0066e4ca4a2401de4e35a4c0ff2ed include/nlm/common.h
+d99b59c29a613bf7d7f74ef13db63325 include/nlm/external.h
+2941e0434d99ec31c6b73705569375f2 include/nlm/i386-ext.h
+d29fc7cab53b97756fcd04eea5bbfb46 include/nlm/internal.h
+5446642ff3b9fee027d46b00a0cd9383 include/nlm/ppc-ext.h
+07d5a112968f3e5629f99dbe16a1cd83 include/nlm/sparc32-ext.h
+c9fa04c292f0e84a0e434a8ef8e24dc4 include/opcode/ChangeLog
+e7cbedc3aad8bbef42e851f90d162509 include/opcode/a29k.h
+0c6d0efab2da874133036face81c3666 include/opcode/alpha.h
+fbe2d697643319e026cfb158ae6157b5 include/opcode/arc.h
+51b2acd51be854eb7ba2c5de2758ebe3 include/opcode/arm.h
+98fab9ee305c764c0d98bdaa52ddb874 include/opcode/avr.h
+a631b8f544942ce9c8c3a076fdd5ceed include/opcode/cgen.h
+9c1b1e4d85e47570a76709b54ef8a2e0 include/opcode/convex.h
+dcaf3ebf4fb9dce75ecd954fce725db6 include/opcode/cris.h
+0e26517f29d51a430ccf81633bb0fe3c include/opcode/d10v.h
+82e2cb83f5753cedfd6bae391b5a9a10 include/opcode/d30v.h
+63474b8ed80be8ec520e011384f42715 include/opcode/h8300.h
+977296bd30088e28af4fb0f1e22bf3f5 include/opcode/hppa.h
+12050c01526d91ecae3940a97edc6efe include/opcode/i370.h
+8049a7b021c6633d693effb0f063ff5a include/opcode/i386.h
+261467113a1f7b7979cc7657c8303ea8 include/opcode/i860.h
+a4c1fa7b5d71c77d7e6ac99f117f3061 include/opcode/i960.h
+05bf164aa56c4c5ab3dcb35d8785aac1 include/opcode/ia64.h
+7628171c45c02183c4c952b6760ebcdd include/opcode/m68hc11.h
+374f69b08aba12d281bd8f6fff78a2fc include/opcode/m68k.h
+567f1a3942681580f9f923a2293d46f1 include/opcode/m88k.h
+649282ca8b3b0f4d2950cefc7dcc1cde include/opcode/mips.h
+43e315bf6f41c74ceeb8422191c76ffb include/opcode/mn10200.h
+def243da12a8bf17cf08a4412389bbba include/opcode/mn10300.h
+3591de84447bfe470a5342f9dc531f51 include/opcode/np1.h
+b824262608009bf12fd9db8932e8dacd include/opcode/ns32k.h
+b41ba79f4a4c89a77b0e9b0a5b415e02 include/opcode/pj.h
+0ccb043fed74ecf6f32760f7291dc31f include/opcode/pn.h
+db64cd5d7c983a67868b09f9d51da5d2 include/opcode/ppc.h
+ff61d5b48aaaef08f63e76419fb025a2 include/opcode/pyr.h
+a44b28ce6531fb1a20694b8cf8d57dc8 include/opcode/sparc.h
+c69e19287023c929ac20ee5311acfadc include/opcode/tahoe.h
+2b0f365ad336acad633a116537cfd018 include/opcode/tic30.h
+f6d161f577d67533b30aa8fa85ca3c33 include/opcode/tic54x.h
+efeb6dd89edaa5f9e286dd496890748e include/opcode/tic80.h
+5c7069039abb92b3d527bb4d8a56b579 include/opcode/v850.h
+6b9ce866f07a184a6527bf95904b1699 include/opcode/vax.h
+d41d8cd98f00b204e9800998ecf8427e include/regs/ChangeLog
+5afe8eb5573965dfb58378e4e46f3813 install-sh
+c3f98161a09663d4152a318793fde272 intl/ChangeLog
+e824af0ffcae539e52cac31fa3faf1d5 intl/Makefile.in
+ee2ff1244c36ed348643bd1a51001f4f intl/acconfig.h
+6e16646448de7fab92862eefbdcca179 intl/aclocal.m4
+da7585912c32cc902a40682c188c9c76 intl/bindtextdom.c
+caa3581b00edb0a7d3811a24a3e46c5c intl/cat-compat.c
+da5e55ccdeae42d336d8f9225cebfd75 intl/config.h
+bd51dd1c7684c9f15ee4532bfd7bf12f intl/config.in
+05c6a93ed8c2801c09dfe15e6cd47452 intl/config.status
+2f9be0885ee6447a29fd0550b52c40aa intl/configure
+eb4685d54a1e3da00cab275a5c3fa6c4 intl/configure.in
+b542cbb1c1c4a9dfac867172246e0a20 intl/dcgettext.c
+63df19e31e5f6a6df817da915b44ed3d intl/dgettext.c
+4db7c1b94ee4cda24bc74474f3a59a3e intl/explodename.c
+4b12bb77b2d9d268b8ec6ee39d12c4a8 intl/finddomain.c
+a3f9f228e0044a48c00cf5970b8be258 intl/gettext.c
+2ba9a94b32d0c8056e617e85ad7a994a intl/gettext.h
+5f9d7d7a72a3e8e42034c55b5c7f83eb intl/gettextP.h
+5fca7fa018536a827790bf56e384cb5d intl/hash-string.h
+93e4ab4b2eba5d2b8a36e1b2380190c5 intl/intl-compat.c
+f00903218b78761c55cd76aea43e0cad intl/intlh.inst.in
+3ee800e1115b811c49bd4f0b8a6a65aa intl/l10nflist.c
+792fd16022a69b1321042701c46218d0 intl/libgettext.h
+07e60d7ada1d5cf14da1c4c2823feaf0 intl/libintl.glibc
+88c9303406b57aeed1f313b827c28e3a intl/linux-msg.sed
+bc7989f895f4e4e38d43419dc0f4777b intl/loadinfo.h
+441f20d1c11229acbe9eb350b162548a intl/loadmsgcat.c
+122fc9bc010467ff915e57aa7114a780 intl/localealias.c
+606344532ffc07b36812c0d04acb1f38 intl/po2tbl.sed.in
+1ded054093de910d9786c62bc4fe8cc6 intl/stamp-h
+6283160be713ad0dc1102617ada6fa54 intl/textdomain.c
+0be261721efcbc3f04680d99e149f18a intl/xopen-msg.sed
+c289dc63e731d4a1da809249e0922832 ld/emulparams/aixppc.sh
+2e897117043ad88f2c7bcf35a606d76b ld/emulparams/README
+4f6b4154113438f7481f4661d09daabe ld/emulparams/a29k.sh
+b313a6fa271657abd14511455050cdb2 ld/emulparams/aixrs6.sh
+29fda341c48f8b90fbf258b6d475867e ld/emulparams/alpha.sh
+91e308e524924e29bc43412f89a2fead ld/emulparams/arcelf.sh
+2e08024e0d4b3c527d426e134d4af1ef ld/emulparams/arm_epoc_pe.sh
+a061559a038d4e5b1efe929656c6eabd ld/emulparams/armaoutb.sh
+a419e5e9b54e9511306099d0f8ddf0a5 ld/emulparams/armaoutl.sh
+d7a431dc9e8878378179623ccf9bfb47 ld/emulparams/armcoff.sh
+b89887d1de91912a100a09e766faafeb ld/emulparams/armelf.sh
+27ee98332d14972c9906e52f38dbc915 ld/emulparams/armelf_linux.sh
+4e88bc5535572c27ad8e22ea4f245202 ld/emulparams/armelf_oabi.sh
+0f7bcbd8a14e3f6392834cf18fde47fb ld/emulparams/armnbsd.sh
+f8974ac24d96f452ff36b40a6203383d ld/emulparams/armpe.sh
+d054a3453b323338552bb636ebb8e116 ld/emulparams/avr1200.sh
+35959d43d0a857cea44143e597becec1 ld/emulparams/avr23xx.sh
+6bce86ca67f3e0d62294eb9bd2635402 ld/emulparams/avr4433.sh
+3c8c6bed009efce2bf0242ef1d003245 ld/emulparams/avr44x4.sh
+b79ca66a017af6b2cc9612337262291c ld/emulparams/avr85xx.sh
+d612b547d13f97624ad3cabe1406a152 ld/emulparams/avrmega103.sh
+b9db3ff305090194178987e80d8ed449 ld/emulparams/avrmega161.sh
+fe83397f7a2e0de4d02d04b61f229a25 ld/emulparams/avrmega603.sh
+d47b82239f4ac8c14355a94378cf39b7 ld/emulparams/coff_sparc.sh
+2106e6a6c645d248df9265a8408980c2 ld/emulparams/crisaout.sh
+ce0b745d5a04bfd7bb575b1c7180641e ld/emulparams/criself.sh
+57b93a092a4cac65e988765446eb13da ld/emulparams/crislinux.sh
+4e68ea19373cca478057e6a64814e143 ld/emulparams/d10velf.sh
+17e84454d13546953021ef10207da62f ld/emulparams/d30v_e.sh
+094a88671f30762402b9e5c78e4e3e9e ld/emulparams/d30v_o.sh
+b904add983e2aa12033b4c8812a73cb4 ld/emulparams/d30velf.sh
+162d7cba8938432d260e1e9321bf43ce ld/emulparams/delta68.sh
+e8fa19901f4c10300649e6c2d30be9f8 ld/emulparams/ebmon29k.sh
+b30522a3c37bc370dfe45f546cca3127 ld/emulparams/elf32_i860.sh
+3d9de5e9ff61c57dfe7cae3508863c7f ld/emulparams/elf32_i960.sh
+5521057ee51d04b9c5be955ad01fa01d ld/emulparams/elf32_sparc.sh
+1dd17564c9aff8b6c2e40e7a9f571b7a ld/emulparams/elf32b4300.sh
+f64269d5383ab08f0c9e5b79c788caf0 ld/emulparams/elf32bmip.sh
+989be87f670515d0a102da2ee6102e7c ld/emulparams/elf32bmipn32.sh
+52f1a6b5e20bd996dc715168c8700d56 ld/emulparams/elf32bsmip.sh
+09ad12c799e0de160ea05b5e2c67977d ld/emulparams/elf32btsmip.sh
+41c14a8d73070481da1f2559785322b0 ld/emulparams/elf32ebmip.sh
+6f124bd5baf085b40380db07a4ba7c2e ld/emulparams/elf32elmip.sh
+ed5f10fa7edc2674622078dbfd378434 ld/emulparams/elf32fr30.sh
+8c345571cb4a1d16f3335639204f1b3b ld/emulparams/elf32i370.sh
+e6c4955bf2db80c6964e66af709f05cb ld/emulparams/elf32l4300.sh
+0fc4b854a11f17219053f735f3f6cec2 ld/emulparams/elf32lmip.sh
+1e20413e271fd05e253b187172ba8137 ld/emulparams/elf32lppc.sh
+92f6cc4fe8ca41fb6e6d15cd4f72838f ld/emulparams/elf32lppcsim.sh
+1143fb3d9743c026ec587df088bd31f8 ld/emulparams/elf32lsmip.sh
+b0bd40fd4790073da2ca8a139dd5abbb ld/emulparams/elf32mcore.sh
+5e3d03a5417dbd051c0f465b832d15d4 ld/emulparams/elf32ppc.sh
+2d539f783dfb7d0fe71e2554f4b14841 ld/emulparams/elf32ppclinux.sh
+7790d9c91fc199cc51434abe289bf438 ld/emulparams/elf32ppcsim.sh
+792c26246fde59e0f132bb33c4039b48 ld/emulparams/elf64_ia64.sh
+7448f80602579636b9e1898cd5a37228 ld/emulparams/elf64_sparc.sh
+ed729adb5c8420afe7245240e95db0f1 ld/emulparams/elf64alpha.sh
+769fdd8cbe0bf5e72ca8dca7d78d3259 ld/emulparams/elf64bmip.sh
+ff249db25e56dc6b03a8b61eb8a89070 ld/emulparams/elf64hppa.sh
+7ebad7c632abef6e016c94541d4ad30b ld/emulparams/elf_i386.sh
+e853a2e087ac512a0cfa5ffc4baa6474 ld/emulparams/elf_i386_be.sh
+05e655e5b9bba0d20b4020d660720f56 ld/emulparams/elf_i386_chaos.sh
+f8d2414b6e37767eb91fb846f2d76405 ld/emulparams/elf_x86_64.sh
+a12d58b36cd6e31986d7515c77fec3af ld/emulparams/gld960.sh
+16e204dd1b3a385eb2dcf14ccddaa50a ld/emulparams/gld960coff.sh
+3a7b9aaf11eae3f3cbd21b6220434ad0 ld/emulparams/h8300.sh
+38e60b173489d53692974c5b6a04cfb9 ld/emulparams/h8300h.sh
+f9d708a8c553ed19183a1f638fe633b4 ld/emulparams/h8300s.sh
+b3b0d0be943fd5517fbc171778f63de0 ld/emulparams/h8500.sh
+6dabd6ffde56b2445c38969243d3575e ld/emulparams/h8500b.sh
+6d71814235108ce0faa35813c1959495 ld/emulparams/h8500c.sh
+e8b9174ddad38feceda59af2dbec0d09 ld/emulparams/h8500m.sh
+f0a112f331b4c6bfbfbb1895cdd63eff ld/emulparams/h8500s.sh
+54b7e862187330b80b6314b2c1c1b05e ld/emulparams/hp300bsd.sh
+4bbb1b67f14d1e124683aecbd19e69cf ld/emulparams/hp3hpux.sh
+7af6e1ad74bc71f864b9c04412f1bebc ld/emulparams/hppaelf.sh
+dbcd064517314bc119e4b54ae7847284 ld/emulparams/hppalinux.sh
+0537af9ab3953ed67d099959cd4e181c ld/emulparams/i386aout.sh
+5ed1f528a6752f2ed12d48977cc43da1 ld/emulparams/i386beos.sh
+ca54144cdb2703b51ceb13bc03e36c83 ld/emulparams/i386bsd.sh
+d05a50688386622b8ad4e4c1f2286662 ld/emulparams/i386coff.sh
+8d213758c362dee91c9aca3fe2521321 ld/emulparams/i386go32.sh
+da7411bcf5fc48e4739d94a108c64f56 ld/emulparams/i386linux.sh
+7d2e038dbd7439a23c353688c7ff6087 ld/emulparams/i386lynx.sh
+fdc6893b38868d4006e1d62edc5a09bd ld/emulparams/i386mach.sh
+63dc5bed51de89c74fdfb27b20c5dcc9 ld/emulparams/i386moss.sh
+95e2973323b32d1896c6e19758582b09 ld/emulparams/i386msdos.sh
+fd44b883579ad95580bf3cae88bd91b4 ld/emulparams/i386nbsd.sh
+5714ea774490dece5da92c0fc5c72d77 ld/emulparams/i386nw.sh
+189c01efee7710b9d1b107f60db173a9 ld/emulparams/i386pe.sh
+168c0e6c22de9f60b4cfd893a1e0a4f0 ld/emulparams/i386pe_posix.sh
+50cd18f6ac43ffed547adab63eaf7fd0 ld/emulparams/lnk960.sh
+02117bc90d8d122568f4695bb15d61b7 ld/emulparams/m32relf.sh
+17f327870e9d5f2b67bb6767084eae64 ld/emulparams/m68hc11elf.sh
+f11b453814e07dfe2f126c575f25db31 ld/emulparams/m68hc11elfb.sh
+30b81dcf1f3db68cdb1e15bce5b41d78 ld/emulparams/m68hc12elf.sh
+7d1044ca8b044c1a519d8db2db658577 ld/emulparams/m68hc12elfb.sh
+2c03157a829a79d93b2ca4b5005f032a ld/emulparams/m68k4knbsd.sh
+173818cf70910edb066aa57cbad66829 ld/emulparams/m68kaout.sh
+00b17c39c4dcf1058751dc07f30dbea3 ld/emulparams/m68kaux.sh
+f0580d8a518bcc77032874c9cb72809d ld/emulparams/m68kcoff.sh
+d82fefa828fc4538f17bb3f788352154 ld/emulparams/m68kelf.sh
+7d5b500c05a8f5cd0eccbbc81dc99139 ld/emulparams/m68klinux.sh
+89788f2245a4c41e33afab79e70e6bb7 ld/emulparams/m68klynx.sh
+37404d78456eeb52a674a4dcbbb9bb36 ld/emulparams/m68knbsd.sh
+13f758bfc68e72e4e1df1cc8e8b01407 ld/emulparams/m68kpsos.sh
+71a6bb6cc26e527411df45774831e1fc ld/emulparams/m88kbcs.sh
+f1fa919d1c7900c6c69ad1137c008524 ld/emulparams/mcorepe.sh
+6c5efc2d80801d3ab24a03f11d108e39 ld/emulparams/mipsbig.sh
+8589776726fb0a88568b9dbda5660c35 ld/emulparams/mipsbsd.sh
+9b4dac4f3c4dcd64fa56cef06eff44fa ld/emulparams/mipsidt.sh
+a9f7e459186328fe620a7923de39340c ld/emulparams/mipsidtl.sh
+60661603c73c5ec9883d1f65e561e2d6 ld/emulparams/mipslit.sh
+8cb42fe6977ca6c642cb7b96a9b0fda0 ld/emulparams/mipslnews.sh
+1e83e0caf4fa27128375fc0ee5b0d362 ld/emulparams/mipspe.sh
+cb9ddc7149bdc45e4894ad3c5f7043dc ld/emulparams/mn10200.sh
+16199cff84a98df6ed43d1032f86d4ac ld/emulparams/mn10300.sh
+49337298ecef7c4e2569237b614c9675 ld/emulparams/news.sh
+a712bce9b19b7554abdf8de63140c88e ld/emulparams/ns32knbsd.sh
+a9ad37848e6c339a4fe81f322c3f3390 ld/emulparams/pc532macha.sh
+332eddb90f3e1d4a5a320243735ebf5c ld/emulparams/pjelf.sh
+8e2b9fce572d19af6ce84e6efbb74add ld/emulparams/pjlelf.sh
+cbcbc06cb401fb2074140cb8b535d4e8 ld/emulparams/ppcmacos.sh
+f71b3cd563ff272019f928ca9cbd0eba ld/emulparams/ppcnw.sh
+762b6a9cb39066b56d9cee03286dcf82 ld/emulparams/ppcpe.sh
+ff7570d6bf2e39ba10e74a394052028b ld/emulparams/riscix.sh
+e1c80afa234bc21751979b515fb688e2 ld/emulparams/sa29200.sh
+f363ccd6fc740ceec31fa8001cf2e9a0 ld/emulparams/sh.sh
+131aec9365eaee35bf7d15d9e28dec96 ld/emulparams/shelf.sh
+8b4b3eed32de796acbcf4a2b11a83e3b ld/emulparams/shelf_linux.sh
+0806db54e70993cecdd7023f339e4d39 ld/emulparams/shl.sh
+70d54bfad0f08afc691f19192fb244f8 ld/emulparams/shlelf.sh
+d1cb0ddcc185836f97a39dd37a0f49cb ld/emulparams/shlelf_linux.sh
+a316da8cf4e620c00377e161b3a15fa0 ld/emulparams/shpe.sh
+6062ec8406144fbbe4ad32e193a7ac04 ld/emulparams/sparcaout.sh
+16bbfb9268886d428a81d42f007c5f20 ld/emulparams/sparclinux.sh
+d004a32b2e6edcc69d900c2207bcbbbb ld/emulparams/sparclynx.sh
+957bd3e925d255ac965dde1aa7303f40 ld/emulparams/sparcnbsd.sh
+8f86834d923d64e45861594e4dc8c457 ld/emulparams/st2000.sh
+f8ff78cfcc19d1d4389a84330615a363 ld/emulparams/sun3.sh
+04380fc27e6223ffc89d2b43f9421434 ld/emulparams/sun4.sh
+5d10f221cc393b1ae1719132de13f3da ld/emulparams/tic30aout.sh
+4fc903e37671053625509f7486c63816 ld/emulparams/tic30coff.sh
+aead097a3385a27cba7210470e150a10 ld/emulparams/tic54xcoff.sh
+786ca05591eada9f7fbf7d5804dc0b81 ld/emulparams/tic80coff.sh
+31a5bc747cdaf134204652bf78e61771 ld/emulparams/v850.sh
+060bf2672cf53a505f23d413017e0be4 ld/emulparams/vanilla.sh
+1689044462ea8c0a614ff1b3a91a0192 ld/emulparams/vax.sh
+1e240622a795d134bad0e8a60460b9ae ld/emulparams/vsta.sh
+7efc4f8c9d1eca2e14084bcd65535b9a ld/emulparams/w65.sh
+cd93ec9e7e74cadfaf8044cca1581111 ld/emulparams/z8001.sh
+8890ef4fad0e25044c8d3200a9e77ee7 ld/emulparams/z8002.sh
+1f35ed55af4d887f90c00f1469b1a318 ld/ChangeLog
+1ae0cd65c8a7fb4e347f5a8584cafd1a ld/ChangeLog-9197
+2e154e4e100af48493f6fa789d4517ae ld/ChangeLog-9899
+d618facc3e8ce8bf3d02ba452e1be6ab ld/MAINTAINERS
+a46825d69440ec06d6c85c079fce57d4 ld/Makefile.am
+6e876b2ac487a212b3ce7faaefe05473 ld/Makefile.in
+8adc4dd7a7707cade1f72f88c49b818a ld/NEWS
+d3f15e73b68c6d694e6eddcdc11f1f04 ld/README
+01627b664c7e61ab5dc202bb72913e0a ld/TODO
+b802b0cc52e6c72a326c11a64c8155a0 ld/acinclude.m4
+f1734965ff3907806ff585fdbcda515d ld/aclocal.m4
+bcd1abcd9f55cd39380e86555cd04488 ld/config.in
+90d2578417805724a825879c4f89f186 ld/configure
+e69ed266e63c90bd0e5a9b22ae2088a5 ld/configure.host
+5dc84743d886e08ade22b1d51289b67a ld/configure.in
+ca7b9d6571ef6be4faa3f90de0a854de ld/configure.tgt
+120f2d083e3b6f265baefda150148ac6 ld/deffile.h
+c6d7a1e111e0c30dcdde2b9fd51e3314 ld/deffilep.y
+93fbfa053ffcf82c36613c2e7ca30eda ld/dep-in.sed
+e2677a696ed870d444e53cf69e8a69f6 ld/gen-doc.texi
+5a7a6887613081ade332f14f1262f907 ld/genscripts.sh
+d3d6fc53e5f8d5e5f962266911f0441b ld/h8-doc.texi
+8a5a04faa8dc8a010bdb353f9bfc6cb3 ld/ld.1
+d29802de243828fd2fdad6dc835d8b9d ld/ld.h
+8f65bcaa2313228cda881da57c61365b ld/ld.info
+df0a7dc970bc2eb7f30a2e9fa98873bb ld/ld.info-1
+472ad33b76d8c6707f85b06659e7e918 ld/ld.info-2
+73d85ce13d4545a7d872893b971c9943 ld/ld.info-3
+a0bb0cbee4f579030d1bd8854d88bdc0 ld/ld.info-4
+b4b62309706c07cbccf1aaf9ef059700 ld/ld.info-5
+3a375fbf067cfffae7a2ebdb20ff639d ld/ld.info-6
+fc88efb47fb798ad3825bb4f7d84e7c0 ld/ld.texinfo
+bf31eb6ce4c371dcc15bf151197fd585 ld/ldcref.c
+2819c4929707e6a0667680e4ae140a39 ld/ldctor.c
+064ef5c52e6dfca0fa4301589aab02f1 ld/ldctor.h
+ca5b3db32d4daa02a9928ae5f32d4dca ld/ldemul.c
+b47303bff0f69194ece9e7ec9230a22f ld/ldemul.h
+842172c0dae76b98ddb4c0d49062656e ld/ldexp.c
+6d1be16a073c76d8c22b47049d85de77 ld/ldexp.h
+201ff2d3f4332d50c47034aaff33ef8b ld/ldfile.c
+5be12c159f85ea6f7053fa35a5e1c80c ld/ldfile.h
+654c2a2456ddcd77f7fc4f7dd43a9d83 ld/ldgram.c
+469602bdd786d950e9759b5c1c607058 ld/ldgram.h
+700bfd472ff66389107be98b1090b4da ld/ldgram.y
+be0fbc34c7ef603b2def1fa2c160fe41 ld/ldint.texinfo
+a113dc2c37ad22dafb734ec4c5aac206 ld/ldlang.c
+2bc2ddd1744ba872802f04415fa19975 ld/ldlang.h
+67fbecd3d5d39940cb07aa1a1b31adb8 ld/ldlex.c
+09a4ec5cde5f75a9ff6bce2128b6545f ld/ldlex.h
+28624435ef60884b10000dc7ff3a2609 ld/ldlex.l
+ebc41a74550dd055aa043132f5fe1219 ld/ldmain.c
+ba7a4d2adcf5d5907b7ba97aebb8e341 ld/ldmain.h
+4647d46a05b4523bd5deb0dff8292b05 ld/ldmisc.c
+d4185100078d64aeec51a2d1e54f403c ld/ldmisc.h
+c5eb3b35f8c491706cec615e8e2565c9 ld/ldver.c
+34e90fd8f8e977fefec645bb889b704d ld/ldver.h
+d33e75b81c9ea97cd428a743e350350e ld/ldver.texi
+314a0e2d2a6b3b623aa9ed74f6e7aab6 ld/ldwrite.c
+2b0d7a0f98da7f507f182b4dd2f9b616 ld/ldwrite.h
+f1de89c8f7f0d3b2ad1364f88b6e0bd7 ld/lexsup.c
+d2c2ef9b2c8b24061720ae93db1c4908 ld/mac-ld.r
+26d2c38dee9ec69444252636bb0f6cc9 ld/mpw-config.in
+10258c0a530aaf2f7f0099fe23a80014 ld/mpw-elfmips.c
+be3ef94a51356e29d865d3b4669a858f ld/mpw-eppcmac.c
+67727f64d1a26bcf0a52fa7b3c5df915 ld/mpw-esh.c
+dc70f552339d9caf2de1f488a0a7a4ab ld/mpw-idtmips.c
+01eb948a7c267f614ce2d08c8270170f ld/mpw-make.sed
+7b9f2ca2be0c3e36ff2ab49ee6c8d415 ld/mri.c
+f2cd489e9c0577601306a65edd09d24b ld/mri.h
+f2fc4f282b19585cbb5d470748d7051d ld/pe-dll.c
+5ae25c3252146f552a4b0a45d52ba705 ld/pe-dll.h
+1ded054093de910d9786c62bc4fe8cc6 ld/stamp-h.in
+0f6495fce6d472a4068d7bd0f9085db6 ld/sysdep.h
+e1e2d3f036d0844a86e04f4091441370 ld/emultempl/armcoff.em
+b812a798c37d8d5f5901f1821a8a648a ld/emultempl/README
+cc3a672541632c423a23cb5ccae3bd09 ld/emultempl/aix.em
+07257bae7fa4fed28b0649f2e7ed47f7 ld/emultempl/armelf.em
+052a4bd23e1fe88c6ee7ec5ec715518d ld/emultempl/armelf_oabi.em
+995bbfc228460e4eef6eef52a09384a9 ld/emultempl/astring.sed
+e8b6a5f42a768e040a888475078a9d12 ld/emultempl/beos.em
+35d3bb67a73be9d3aef37aab4158ff2d ld/emultempl/elf32.em
+ed194a97d6e676374e915bf106eb075c ld/emultempl/generic.em
+8fd8d48bf93f51f72ff67fd9f73f7d40 ld/emultempl/gld960.em
+b12efd6866600382d9c038b56e2fb020 ld/emultempl/gld960c.em
+25b3e7842a0ebe7db9034c6503e83fc9 ld/emultempl/hppaelf.em
+742a39d3de32f9fcff0f3e7da728001a ld/emultempl/linux.em
+1d3d2a44ad59d0b2802dd133fcbf31c0 ld/emultempl/lnk960.em
+2d9d0444426365298a25d0a675f4a268 ld/emultempl/m68kcoff.em
+acd5f3905f69c6a88c7f147dceaaa305 ld/emultempl/m68kelf.em
+fb2a7316f5093d496f2f60d2eaf01044 ld/emultempl/mipsecoff.em
+a8190e4a0b5cca5b8677d8bb2d39940f ld/emultempl/ostring.sed
+9d2b1207ebb859aa8ffbf8b84fc16e9c ld/emultempl/pe.em
+0468ee5653ecdf54c9ee8c98dd413897 ld/emultempl/sunos.em
+e21fa8d986017ca6352be94fdff217bd ld/emultempl/ticoff.em
+3644ae1786e548c6268661b4dee1ee25 ld/emultempl/vanilla.em
+62ddbb955a5c380d7b8410626ac73d7c ld/po/POTFILES.in
+ea2baddf1654fa8df40eb033d33b6068 ld/po/Make-in
+c8e20dea09bd30058704c752a202c8b9 ld/po/ld.pot
+d471f7a5a3dc4deffa1a8f2039a38504 ld/scripttempl/alpha.sc
+01c6e3598e372d510730e381dd25c2cd ld/scripttempl/README
+fdcbfdd0b93aa6b73e1b73127b28bdae ld/scripttempl/a29k.sc
+ebac9206176b1d49526ea9edbc71867a ld/scripttempl/aix.sc
+8e2be304cab1b30f2770ca3dd188f47f ld/scripttempl/armaout.sc
+11e720b2d4fbd6b8ad9ce26f980acd6a ld/scripttempl/aout.sc
+f40cc9e187c16d5d4170456ccb17d03a ld/scripttempl/armcoff.sc
+119e975ce8b1005742840a9152c03a99 ld/scripttempl/crisaout.sc
+3fb69113f5952434021a5fc481d5b417 ld/scripttempl/delta68.sc
+a4e630a7a2094f2b44f19e41069e4433 ld/scripttempl/ebmon29k.sc
+2f6206dfef231404aa0babbf12d2b69c ld/scripttempl/elf.sc
+c7f5cfe3ed0b5773a9d2107c7fe08475 ld/scripttempl/elf32avr.sc
+744fd7db42c234328f24006210a9f7a9 ld/scripttempl/elfd10v.sc
+557b6406e74fc2c9cefe6233f95fe5a8 ld/scripttempl/elfd30v.sc
+6ad7e39a3e5729ad923402573fd2351f ld/scripttempl/elfi370.sc
+e96aae5650c97ddede3769205d9256f6 ld/scripttempl/elfm68hc11.sc
+b435ff7b33225c47a2c42481b66fd5b6 ld/scripttempl/elfm68hc12.sc
+5393b9689fa4a05d916c9ebbb54f015f ld/scripttempl/epocpe.sc
+bb39f599d5755db06b3516d0471fe7f0 ld/scripttempl/h8300.sc
+03a31f296b07be57364e68342f141a75 ld/scripttempl/h8300h.sc
+b3675a21a2701e05a7895b6a28108d25 ld/scripttempl/h8300s.sc
+6c57b9f11a6f50c46ecce9df62061dbf ld/scripttempl/h8500.sc
+39da8240aa7f5aca7b23d93bcf243bb8 ld/scripttempl/h8500b.sc
+a1235b4e692307533adc69d75c98da06 ld/scripttempl/h8500c.sc
+45c5f295e421e663e1843207ae13951a ld/scripttempl/h8500m.sc
+b6ce335a288c23cf897c944a84aafe3b ld/scripttempl/h8500s.sc
+786aba3e828af6519ac1cb21ca5ebd9e ld/scripttempl/hppaelf.sc
+973ec6d5280fe67f4694d07f03b6991e ld/scripttempl/i386beos.sc
+89f55fbb09da1e8728f74f0dfda3192d ld/scripttempl/i386coff.sc
+606d3f3a80d30603f3bbaf5c75ca3bee ld/scripttempl/i386go32.sc
+debc01664da1e6913ca6ee1d350c7c9f ld/scripttempl/i386lynx.sc
+dd4667c5e75a68e5bcc4b0769830974b ld/scripttempl/i386msdos.sc
+f14aed79776fb856704487766477ef6b ld/scripttempl/i960.sc
+ac993ea32406502f14b7089c4239296f ld/scripttempl/m68kaux.sc
+0acb5ea28c8feeee6aae68de5fb62a67 ld/scripttempl/m68kcoff.sc
+5ac24db89fd94088b97b9b2a9b5c6ea2 ld/scripttempl/m68klynx.sc
+66790e6da2a36230461c111c12e5a6fc ld/scripttempl/m88kbcs.sc
+d942ea1043bca95ad16a43702655862c ld/scripttempl/mcorepe.sc
+13a45868ad3e92575be92f1558d1c9b7 ld/scripttempl/mips.sc
+756f010bc1fcebe9cb08b1c8afa66389 ld/scripttempl/mipsbsd.sc
+3219d28558d7ee8ceac00771c0f41aad ld/scripttempl/nw.sc
+305f38a09603aa92f10e6d0b4cfc7680 ld/scripttempl/pe.sc
+47e02e8254495a858dbef6c19c1ac173 ld/scripttempl/pj.sc
+219f146ba7cb4c7346c9abd2a6c78798 ld/scripttempl/ppcpe.sc
+ab0f8d8220dc084233dee358c5e57433 ld/scripttempl/psos.sc
+1ca280b61dcc707ecc1128cfa80b8243 ld/scripttempl/riscix.sc
+cd076d3e4b10af9d6eec06ff494e1c6e ld/scripttempl/sa29200.sc
+e9bf54b19fd6c440995f4bf7a7a34d64 ld/scripttempl/sh.sc
+1231890eaa6427329f4e49ef29a3b632 ld/scripttempl/sparccoff.sc
+a56557b365a2fc1cf4070c7c5663b79c ld/scripttempl/sparclynx.sc
+6277ea502afc8c184eeccce4362d538b ld/scripttempl/st2000.sc
+f9f56c0b4c0548aadba5f30ee7f105fe ld/scripttempl/tic30aout.sc
+581d4b5a31b2f67b8274aa96b201af92 ld/scripttempl/tic30coff.sc
+d66c340121962b6706c37311253b0ea8 ld/scripttempl/tic54xcoff.sc
+b6d1e44df8ff2382dcc53bf1816a4177 ld/scripttempl/tic80coff.sc
+9767716444e270cbeda9727d75e12b39 ld/scripttempl/v850.sc
+922fccd6995f0a119365fd7ceb7b25ce ld/scripttempl/vanilla.sc
+9ef634e16ac4537117ea157867e85207 ld/scripttempl/w65.sc
+474b1c82cd04327e7433dd108c93e239 ld/scripttempl/z8000.sc
+e822025dd24c858b3b89277149d5f16f ld/testsuite/config/default.exp
+be7b00e0b8591e85aba1cff1d36dbf44 ld/testsuite/ChangeLog
+ee2acec13afe7c900e3f0e44c88ad23a ld/testsuite/ld-bootstrap/bootstrap.exp
+4b9f7ea09166acbf0b5d72c88c5b3956 ld/testsuite/ld-cdtest/cdtest-bar.cc
+7d245ef3c98762296b516547243311d0 ld/testsuite/ld-cdtest/cdtest-foo.cc
+6db246fa73606a55b99fd68fc8b67e5d ld/testsuite/ld-cdtest/cdtest-foo.h
+42bc325afd7f1f937f20faa53c9f1490 ld/testsuite/ld-cdtest/cdtest-main.cc
+cfb423f4424fe65c2fe45d99c49ff558 ld/testsuite/ld-cdtest/cdtest.dat
+fe02ea287d1db9a68a0ae8da38d800d5 ld/testsuite/ld-cdtest/cdtest.exp
+ffc794c4b55f6bb29b64423ca768b838 ld/testsuite/ld-checks/checks.exp
+328c5cac80b76bd422b0b77d5517d175 ld/testsuite/ld-checks/asm.s
+536a4d2e63692344109849b984f9da06 ld/testsuite/ld-checks/script
+4e55761dcb05b25e8e6f7c88fa58f023 ld/testsuite/ld-elfvers/vers.exp
+5f2c2be170fc2ea8b5f4b1d7e8d72165 ld/testsuite/ld-elfvers/vers1.c
+580fae4dde72b7ecb4ddf9a2fb369b72 ld/testsuite/ld-elfvers/vers1.dsym
+0f0d48d66a7468bb1ea8f0f907f65f74 ld/testsuite/ld-elfvers/vers1.map
+e70fa3cc72507e3c454eeaff68f8c28f ld/testsuite/ld-elfvers/vers1.sym
+d739eb560d4a0f23ab4cf60df5378602 ld/testsuite/ld-elfvers/vers1.ver
+ca85484e74a669868fc7e52fe11d7fb4 ld/testsuite/ld-elfvers/vers13.asym
+e8cdfeee2880948d113226cb5004d92c ld/testsuite/ld-elfvers/vers15.c
+63a46548615c9f270349f427719d1b10 ld/testsuite/ld-elfvers/vers15.dsym
+46f1035151fe2009e5de509d8f7ebaf2 ld/testsuite/ld-elfvers/vers15.sym
+63f2b3b06a796f7a49a90902fbadd4ad ld/testsuite/ld-elfvers/vers15.ver
+d71d95fe36a6bc2f88c952ac37cb990a ld/testsuite/ld-elfvers/vers16.c
+ff7574e34a600f7ae616a4384f98ad0f ld/testsuite/ld-elfvers/vers16.dsym
+d057681641b9fc14e87f35c677b6243d ld/testsuite/ld-elfvers/vers16.map
+92e6d0ae0c0aef2c17de9ef04d6bf7f2 ld/testsuite/ld-elfvers/vers16a.c
+4d81c8fe8c0b5ea33ef6c4001cfee806 ld/testsuite/ld-elfvers/vers16a.dsym
+fb67971a2dd673bf9ae0506459f0bf2d ld/testsuite/ld-elfvers/vers16a.ver
+a2e06e03cf5f45c27839f309a5388b81 ld/testsuite/ld-elfvers/vers17.c
+35a714a53e208be7dd7f246285c4dd30 ld/testsuite/ld-elfvers/vers17.dsym
+db62e32b4b422023390633f11005c406 ld/testsuite/ld-elfvers/vers17.map
+bf382203a5c52664aa6e7728abbbd31a ld/testsuite/ld-elfvers/vers17.ver
+64ce133534d131385b4d10606c423b81 ld/testsuite/ld-elfvers/vers18.c
+3a85e7068b4a30ec5e7585a14b19ce69 ld/testsuite/ld-elfvers/vers18.dsym
+31b6949806df3bd1f959a957bed07ff6 ld/testsuite/ld-elfvers/vers18.map
+99fdeff24e389af67f2125724e3c0c2b ld/testsuite/ld-elfvers/vers18.sym
+3727b5769ad6291477eb3ffaa67eb9d2 ld/testsuite/ld-elfvers/vers18.ver
+039a925919afb81dc1ee342704f38935 ld/testsuite/ld-elfvers/vers19.c
+c1b9e106ce57e5a1d19a19e5ad108ea6 ld/testsuite/ld-elfvers/vers19.dsym
+56042a92306b44d3b68444cb64f9c768 ld/testsuite/ld-elfvers/vers19.ver
+0a2838d86e28cda599478f48e5b5bdfd ld/testsuite/ld-elfvers/vers2.c
+6c04dd6b5a1f83b8ad01dc66e0cef2c9 ld/testsuite/ld-elfvers/vers2.dsym
+0f243904b21ec2e5cda0083a35f9708e ld/testsuite/ld-elfvers/vers2.map
+a597d603357c6c6537d1ee1e806a56d6 ld/testsuite/ld-elfvers/vers2.ver
+2198856c8569cc7494ffe89650a9e63b ld/testsuite/ld-elfvers/vers3.c
+c1b9e106ce57e5a1d19a19e5ad108ea6 ld/testsuite/ld-elfvers/vers3.dsym
+d02949a2cd805d83970ffc3229895e01 ld/testsuite/ld-elfvers/vers3.ver
+eaeb7b786e1af44d384e8c84dc7a2dc4 ld/testsuite/ld-elfvers/vers4.c
+41acbfbc82b54219566366b069b2ce34 ld/testsuite/ld-elfvers/vers4.sym
+e878b24651400ca1fb1bdc0c16a22848 ld/testsuite/ld-elfvers/vers4a.dsym
+41acbfbc82b54219566366b069b2ce34 ld/testsuite/ld-elfvers/vers4a.sym
+e15e85042ec35363e4bc97c35187187a ld/testsuite/ld-elfvers/vers4a.ver
+940d06960890b0eb73114f452b44604a ld/testsuite/ld-elfvers/vers5.c
+3874cf48820bc48dd48d1ee16551af06 ld/testsuite/ld-elfvers/vers6.c
+440222caab8e6f857b77c1ba50d81e84 ld/testsuite/ld-elfvers/vers6.dsym
+b355de4ba2834305bca9bf3b7cc91e70 ld/testsuite/ld-elfvers/vers6.sym
+c6dda7839f06ae8858d0d413c6b436dc ld/testsuite/ld-elfvers/vers6.ver
+8c6338ab91836afb2918ef463e5e899a ld/testsuite/ld-elfvers/vers7.c
+9a7ae246a7154e67158fc0cdcda850d8 ld/testsuite/ld-elfvers/vers7.map
+8d7f1e06f9194fa66402e5efff269754 ld/testsuite/ld-elfvers/vers7a.c
+b3fdb5ca0a4cf57530bf9d838fe825da ld/testsuite/ld-elfvers/vers7a.dsym
+d466ec8b7fcadee36db85cac92c1601a ld/testsuite/ld-elfvers/vers7a.sym
+3cbade7d1c3f4ac6ccbc83cebf13d3f7 ld/testsuite/ld-elfvers/vers7a.ver
+258f61144bcd39b444b75dba182129e6 ld/testsuite/ld-elfvers/vers8.c
+3a208e171858590f5717735bf85432b6 ld/testsuite/ld-elfvers/vers8.map
+36514fcaa2e950e55d5930aa97782ea2 ld/testsuite/ld-elfvers/vers8.ver
+2866447458043d608659fc1fe92f617a ld/testsuite/ld-elfvers/vers9.c
+21dcd2120edc32b5e36974abdc6e1f3e ld/testsuite/ld-elfvers/vers9.dsym
+0d2f6f5317e5732e649745046ab2ab9a ld/testsuite/ld-elfvers/vers9.sym
+ba97850c4c77d6ae99535f328268af22 ld/testsuite/ld-elfvers/vers9.ver
+a1502268321d4816ffa1d1bb1cf335e1 ld/testsuite/ld-elfvsb/elf-offset.ld
+26f7423a78988457f44e1879ec1ec1b1 ld/testsuite/ld-elfvsb/elfvsb.dat
+a58c2cf2ea19127ba611077ed78b937e ld/testsuite/ld-elfvsb/elfvsb.exp
+996a5cc52bf7b1f6356ea1e77aaca26e ld/testsuite/ld-elfvsb/main.c
+a5d04655b47574a63e0d034c2b15ecf8 ld/testsuite/ld-elfvsb/sh1.c
+2a301406fc0d5ccedb5fe48db23d0838 ld/testsuite/ld-elfvsb/sh2.c
+6e936deabc76e48e6db98f8064fdec3f ld/testsuite/ld-empic/empic.exp
+e7337619d5f156145600727d89a92cad ld/testsuite/ld-empic/relax.t
+9890e4435b569df5957bf349ae070544 ld/testsuite/ld-empic/relax1.c
+06661c7d74d2309ff2e35b10146bd41e ld/testsuite/ld-empic/relax2.c
+9bb9724eff6590e585dd1969fac15dff ld/testsuite/ld-empic/relax3.c
+c192f60f33fc224b5c2c16766d07994d ld/testsuite/ld-empic/relax4.c
+a8b21f91a17c7ecd1f8ca5b7f00e075b ld/testsuite/ld-empic/run.c
+37bc1d770c9e77e637c46e1ae7992247 ld/testsuite/ld-empic/runtest1.c
+a27a7a90ff46445fa4334638ec71ce3d ld/testsuite/ld-empic/runtest2.c
+75a0208d669a12ec40c6c09cda96a4b4 ld/testsuite/ld-empic/runtesti.s
+e882253a7b0f660986d5794a36239b1b ld/testsuite/ld-scripts/cross1.c
+dacdbdd934565fa39a43a2a2372dfe7f ld/testsuite/ld-scripts/cross1.t
+2bad1250e1d3998f3c2d678b1b90d275 ld/testsuite/ld-scripts/cross2.c
+29dbd60e1fb2c6a24cb2efa11a56e75c ld/testsuite/ld-scripts/cross2.t
+6cda0a6cae6d6fe585c175aa49c2578e ld/testsuite/ld-scripts/cross3.c
+ba439faf8d0be611ad61472ffdf5447d ld/testsuite/ld-scripts/crossref.exp
+812428bd0f7cec1a5aa0b8391f03d9f6 ld/testsuite/ld-scripts/defined.exp
+89dc613e3ce213bd756b77d022667dac ld/testsuite/ld-scripts/defined.s
+d3b1800f46a71805045a3a5732fd42bc ld/testsuite/ld-scripts/defined.t
+8c080d50df15bdcf21cefb87501e62f3 ld/testsuite/ld-scripts/phdrs.exp
+9af38df1b2580b0ee309b0acfb185537 ld/testsuite/ld-scripts/phdrs.s
+802baa96a82e221ce048497ddfbe2249 ld/testsuite/ld-scripts/phdrs.t
+564474bba4cb4d8ae11a4dad2984863c ld/testsuite/ld-scripts/script.exp
+8ef222fed2cbd6222ef9c4bfb5caceb3 ld/testsuite/ld-scripts/script.s
+b9bc56b095f61ceef7cb9a948be41609 ld/testsuite/ld-scripts/script.t
+a673788e6a586931f65fee9d8964d0b8 ld/testsuite/ld-scripts/scriptm.t
+d263d95b0c34c0ccc85c91c409f39a1b ld/testsuite/ld-scripts/sizeof.exp
+de2cf65f9506880e63f0fdd46bb23c12 ld/testsuite/ld-scripts/sizeof.s
+feffaafc250ae18dfdd493f8a6c4f2c6 ld/testsuite/ld-scripts/sizeof.t
+2919cb90d7f9b1d53f4a28ebb0de11c1 ld/testsuite/ld-scripts/weak.exp
+3591b42540bac07bfbb66f7f0ce59d88 ld/testsuite/ld-scripts/weak.t
+8df46a87530dbe689785bcc1c1a75da7 ld/testsuite/ld-scripts/weak1.s
+b3bb044bcdc10e3eccef47d0c2c2429e ld/testsuite/ld-scripts/weak2.s
+0490e9a40c7efa469100cf3f29ea8143 ld/testsuite/ld-selective/3.cc
+3f6043e6b6bd49e760b9e753b6aaf9ac ld/testsuite/ld-selective/1.c
+237d849095a360c8cad108dd7c84812b ld/testsuite/ld-selective/2.c
+dcfb7a28e3bdf5d5453248236fbd60bc ld/testsuite/ld-selective/4.cc
+a2c9c1152a0133516e4640ed96422473 ld/testsuite/ld-selective/5.cc
+3c5a6cebdfeb5ad5fc0348aec68f78da ld/testsuite/ld-selective/selective.exp
+94349527b6110d2fb12a4ee7e915d93c ld/testsuite/ld-sh/sh.exp
+1480d5643c4a3a7456700440e9f108dc ld/testsuite/ld-sh/sh1.s
+4a6b928d31480c42bc368db1a2d729b3 ld/testsuite/ld-sh/sh2.c
+486895674299bb2c523133e56a567c1f ld/testsuite/ld-sh/start.s
+a1502268321d4816ffa1d1bb1cf335e1 ld/testsuite/ld-shared/elf-offset.ld
+7ecc6d02af3521696416b0bd8e300925 ld/testsuite/ld-shared/main.c
+1ac7636415298be4ec10d57894d7bd92 ld/testsuite/ld-shared/sh1.c
+dda81aa1c99d9fd983ae39378b5b69fd ld/testsuite/ld-shared/sh2.c
+7ac9ed1cf3e4b23bd77743315f0560d5 ld/testsuite/ld-shared/shared.dat
+27d2296f87ead486ae162fd22b4ec707 ld/testsuite/ld-shared/shared.exp
+8b38128b19d7be0a9f143a3fae14669f ld/testsuite/ld-shared/sun4.dat
+bf16787cbff593c9377800bda68bc12b ld/testsuite/ld-shared/xcoff.dat
+a9c5960069dec6310ecd1fcce0648fd6 ld/testsuite/ld-srec/srec.exp
+ff2b78b0df3a6bc56644e35ec4f068bd ld/testsuite/ld-srec/sr1.c
+6524623299b50b9299f4b3fca543b0fa ld/testsuite/ld-srec/sr2.c
+16d9ac8f3038072368a8550eb60b5d26 ld/testsuite/ld-srec/sr3.cc
+b619c6e42cb950ef08a2be4baed7e558 ld/testsuite/ld-undefined/undefined.c
+18031d6ced12f9a7a257ebd3787d1c7e ld/testsuite/ld-undefined/undefined.exp
+404fb2765f0a0bf014c5ea9a85041a89 ld/testsuite/ld-undefined/weak-undef.exp
+d46f02756d74cac491eccd91c9497ca3 ld/testsuite/ld-undefined/weak-undef.s
+ff2b7f892a6ef004c2076f2bab575ec0 ld/testsuite/ld-undefined/weak-undef.t
+fa393e907e916af10e49b89864404dda ld/testsuite/ld-versados/versados.exp
+a3dd5e83356444e20dfff2b6986f9701 ld/testsuite/ld-versados/t1-1.ro
+20fa39afdcf19846ef54b8c8a63c09fa ld/testsuite/ld-versados/t1-2.ro
+750043b1377753643d66f2ea010d1d64 ld/testsuite/ld-versados/t1.ld
+1ea1a397873490e5a225282b08911b79 ld/testsuite/ld-versados/t1.ook
+b73a148ff92b3b9f50118dedddc8e9aa ld/testsuite/ld-versados/t2-1.ro
+6521d61c4bf4f500cb868ded9a47044e ld/testsuite/ld-versados/t2-2.ro
+ed2b6b448335acf507dc34b5a01710d8 ld/testsuite/ld-versados/t2-3.ro
+7020c6c2928c89ca798f517226862f1c ld/testsuite/ld-versados/t2.ld
+fb1e9ddf26ad5af0d34950d762f68ed9 ld/testsuite/ld-versados/t2.ook
+44f6166a79f258860aea2efd9179789a ld/testsuite/lib/ld-lib.exp
+e2677a696ed870d444e53cf69e8a69f6 ld/configdoc.texi
+7b65854f594c84e80295173de277b3dc libiberty/config/mh-cxux7
+4004fdcde347fda58406b4b84a995c66 libiberty/config/mh-aix
+b2eafdc4d4e0928a5d0e89d5f6fe116c libiberty/config/mh-beos
+044204f5b4bcac5eae2face0602129ae libiberty/config/mh-fbsd21
+904bdcd9daf97fa55a9ca8901ffe7435 libiberty/config/mh-openedition
+38e76da568ab25260754fdb9d5080513 libiberty/config/mh-windows
+f30a9716ef3762e3467a2f62bf790f0a libiberty/COPYING.LIB
+536f1ea00e95287882c108f51be00df5 libiberty/ChangeLog
+d43770145fb3c3433ac33986770a7b36 libiberty/Makefile.in
+08cc0e5f8cd2cc6bc1e4114011be131b libiberty/README
+5ca0eba5b33e5f6952114bfe84c167b9 libiberty/aclocal.m4
+de46742edca3a9276eefa5ae8fdee5eb libiberty/alloca-conf.h
+18b3e90c1496f1db337b93a2c3bda513 libiberty/alloca.c
+d54574b77c40ff38a37139b4df4918c8 libiberty/argv.c
+d837d38495c38d45d1c8bd94eda40b39 libiberty/asprintf.c
+d89da155295f797db9f987220ef9af4f libiberty/atexit.c
+0ec74e2bf6de5ac2ee096696b3f7dfb5 libiberty/basename.c
+8536a9fe63d5270026766fb6a833c0e3 libiberty/bcmp.c
+37f840db36868cae15135e9beb9d9c5b libiberty/bcopy.c
+c5855ab06709314b196b5ceb7a7cb5dc libiberty/bsearch.c
+3e539dda7281866347213ed444830f9b libiberty/bzero.c
+fd01fef67ce311c2462b1957ff06282e libiberty/calloc.c
+815fb49e28a8980f8b838aaecaefa891 libiberty/choose-temp.c
+4c081fe106364d829d16c720e3a99ad0 libiberty/clock.c
+6abc10aedbbd94274f97174a9ec454dd libiberty/concat.c
+fdaf5fdc2a84ff34103604588aea1a3b libiberty/config.h-vms
+bb2688eeee0799b47128613436b5731f libiberty/config.in
+6ba918af7eec27cd147903518d519d46 libiberty/config.table
+fde4aae2aac71c6837d5db1db1f4b880 libiberty/configure
+9cc359fd1437d6afd69b5169104ddffd libiberty/configure.in
+8493d27a97881009393ceec1aa431f0e libiberty/copysign.c
+4427c696ecc360a813ecf063589f84a3 libiberty/cp-demangle.c
+9463d7142e481f2a98e594901ca5a9f6 libiberty/cplus-dem.c
+231d3202aadb19e1d3209fa0797b4ec4 libiberty/dyn-string.c
+62121149a1d62bef125c75380131b180 libiberty/fdmatch.c
+85de4ab7bf13ff400ecbd15001f91950 libiberty/floatformat.c
+5a0e7522053fc29b178bcd5ee644aaee libiberty/fnmatch.c
+3508056d5c091a4a066ef6895b66a63c libiberty/getcwd.c
+2deefd98fad4fd25e2ed0facd2e5518f libiberty/getopt.c
+5fd11388f488b53ec69eeb3e71161636 libiberty/getopt1.c
+f4ed35bf0db2796c07db055f638abec8 libiberty/getpagesize.c
+9fc32d36b7617e6393b8d8aa4dc8a5e0 libiberty/getpwd.c
+b9bdf217753be4c1315c3a9689983290 libiberty/getruntime.c
+e05e129c9bbfca9c792724adff237e85 libiberty/hashtab.c
+d707920a44f45525dc4c6e310926a210 libiberty/hex.c
+004477cba1e0a85a2d443bee4a0af269 libiberty/index.c
+4c4b7edb35b7ffbbba5e7e2ec399d559 libiberty/insque.c
+e331b31ce1cbf27a44f2fbeb54fa7b17 libiberty/makefile.vms
+d985e08160b8aec6f4ba23175400181c libiberty/md5.c
+cdca3f90987260a7a860aee136ca740a libiberty/memchr.c
+2439abd355027df270d48733215f891a libiberty/memcmp.c
+f59c3c95c9ab8b66dfccaa3d7ba1f878 libiberty/memcpy.c
+8dda7ebe5e2c3c6c28aa53e06b283fcb libiberty/memmove.c
+57043300d663328adbb1b40c2cd7793e libiberty/memset.c
+bd2a139d55d7bbaeee671b50a45992fa libiberty/mkstemps.c
+969668698375a7ecf08bc086b9613a31 libiberty/mpw-config.in
+54c65d1bafd7d8d29b9d29761d977020 libiberty/mpw-make.sed
+9de6f56befd6350286f5a42836a8433a libiberty/mpw.c
+7897e43bedd2def4beb6eb73003efa68 libiberty/msdos.c
+9fbb504341d8982f9439a168b9ef825e libiberty/objalloc.c
+41b517bd87e0312eb4f1c72f641c2008 libiberty/obstack.c
+34f70650591a3e50bf80a47259b21063 libiberty/partition.c
+170b24f0daa4451a1a0c61badc6a2592 libiberty/pexecute.c
+1c26add2214f8d43e42a3ef76e0a2c4e libiberty/putenv.c
+892047691cd75e110b6c995047656068 libiberty/random.c
+9afa19a52697f0d83a8f94c8f55b0140 libiberty/rename.c
+b751b6a5c19944eded4cfcba1fd527df libiberty/rindex.c
+438e62574b58fc80136eb9b43aa4d6b7 libiberty/safe-ctype.c
+fb5ea509ef834b0fae40b4de9e121a4e libiberty/setenv.c
+1f3c59265795bbeeaa0682e30ec008fa libiberty/sigsetmask.c
+bcd38bbff8e80df6e908d7ee57d7b681 libiberty/sort.c
+4a3173c26ad8cb30302e1425135647f8 libiberty/spaces.c
+ea6978858b89cbdbf2bb796522e38603 libiberty/splay-tree.c
+406f9df3aca1c9cb104e35d93aa5f19a libiberty/strcasecmp.c
+25493d01cf01dddc7326eb6bb39b59d7 libiberty/strchr.c
+352f6f1cb2e6025866d406ede3a475c0 libiberty/strdup.c
+db0fc51193ca195a3f588e5184e1987a libiberty/strerror.c
+00040f08f420f8336e67840133efdd87 libiberty/strncasecmp.c
+2e333001f8ef8e01ae2f153e51b59ce4 libiberty/strncmp.c
+19847187ca2ed7b38342718371b57a89 libiberty/strrchr.c
+022d5e8aa132e524de1a9e087867161e libiberty/strsignal.c
+58984b80dbe4d3364feda5c675b3e23c libiberty/strstr.c
+0cd5eef7fa7708a43350f98eacf8776a libiberty/strtod.c
+a0e7c73c62ba8a24e1590c27e34c59d3 libiberty/strtol.c
+e06d6526f14dcd0834827520331fef16 libiberty/strtoul.c
+d0b4c29a87478edc4c2c69c3e9d2be0a libiberty/tmpnam.c
+8824ff84682ec60eca212b518429db18 libiberty/vasprintf.c
+1e46cffdcdf7e68d72a8f24c71c04d08 libiberty/vfork.c
+280fb05a979214b0876be4c9dc7d4061 libiberty/vfprintf.c
+9a46f8a6bd6b911849f209d09e94b66f libiberty/vmsbuild.com
+893d859616bab673df0504cb02a7feec libiberty/vprintf.c
+d187e50a7a7817fcbf2bbd6595093756 libiberty/vsprintf.c
+52860722750d8633eb78d1dbe6db4f5b libiberty/waitpid.c
+5caf61856a76a6eb1cb52bb1c86501c5 libiberty/xatexit.c
+357b147749e719e3c69315ac83c6a4bf libiberty/xexit.c
+e404c730a2531595d5fea1c5da957e98 libiberty/xmalloc.c
+b0feb91e581c43d5ae41b0576e877ab3 libiberty/xmemdup.c
+6ec02ce9b4802dd6939200d4d2faba6a libiberty/xstrdup.c
+e70805298181e0f55a52a64b17d72904 libiberty/xstrerror.c
+f209fdb2c52db4462c254e6b8d89f2ee libiberty/testsuite/Makefile.in
+6319e17edb27c399c30f1596c2ce41b5 libiberty/testsuite/demangle-expected
+5cd31fc5e2e642e2de1c3d6a0792b431 libiberty/testsuite/regress-demangle
+cc28484945e89f4d469672c4b1beaabe libtool.m4
+30c8f1fcca77253cf9e9657caac44c12 ltcf-c.sh
+3a3fcd8d6f8accd80d1d41301045b2d8 ltcf-cxx.sh
+1bf2c254103b812c60e6c8e8b90e4c83 ltcf-gcj.sh
+9dedd8a70b17964941f1446787f61c2d ltconfig
+906ef7ec1319467f83cfc91083949b01 ltmain.sh
+734690a438420e8479e15d8ee6971792 makefile.vms
+393d298125f8e03c13364afe447b308d missing
+fbe2467afef81c41c166173adeb0ee20 mkdep
+bc994884d395541d40c4192919a89a21 mkinstalldirs
+c71ddf72c059891ca0bd1727f5aa0de1 move-if-change
+a8fe1ab072e42efff2a0ec883d91130b mpw-README
+af52692753387da2241fc4bc6ccec120 mpw-build.in
+5479cbb3e13987fe2170b7a403b82e8f mpw-config.in
+d186332a893eacec29defecdc3524ecf mpw-configure
+96312bdd41def6a5946784d468dc29d3 mpw-install
+e1a5fb918ca6c05b58fd5fd39541dcfa opcodes/po/POTFILES.in
+bfb5c178c2404196ab54d7532a61e3d4 opcodes/po/Make-in
+87185f7dbaa4e4671dd4d64d491ed41e opcodes/po/opcodes.pot
+bdd472067a6ca8ee4f243de5c26e63a9 opcodes/ChangeLog
+47912714837729ee35d5261ffff2941c opcodes/ChangeLog-9297
+2b70061d7488180442b52de1c9a9e819 opcodes/ChangeLog-9899
+d618facc3e8ce8bf3d02ba452e1be6ab opcodes/MAINTAINERS
+88c3e21eeef4604140cdccee41e6e0be opcodes/Makefile.am
+18167111932c3381d2fa2ecb2c6b0144 opcodes/Makefile.in
+645d6a4c3074aafc0739c3c8cf7b6dfd opcodes/a29k-dis.c
+901749e9292ba1f5f109f5cc195bfe8b opcodes/acinclude.m4
+2c4e12d715daf0bfab0df7edb2ee8c14 opcodes/aclocal.m4
+96f2dce728a7415feb0a818955910b20 opcodes/alpha-dis.c
+3faca7e048d2bf3c3b93cc95cabb569e opcodes/alpha-opc.c
+4679b8bcb411d460f706b9467895e953 opcodes/arc-dis.c
+0924cfc3377482adc695c4169ef1df3e opcodes/arc-dis.h
+6d29e8487c87fa46fab31aa9e38d69da opcodes/arc-ext.c
+a06993b8767da617f1e96700f7be5882 opcodes/arc-ext.h
+f73862f055877a2dd3e09466098fa357 opcodes/arc-opc.c
+c85fb9db635a801f2bf906a54992149f opcodes/arm-dis.c
+14507ea7809bec1d95d9c2c281515eb3 opcodes/arm-opc.h
+34704934e7a4d36fbc487e97d2df7b3e opcodes/avr-dis.c
+c56c30405aaa29cbcade9321397a5165 opcodes/cgen-asm.c
+a89582dd6ebbdd094d5e98ed36b41bf6 opcodes/cgen-asm.in
+cb84c537babcbb5af274807102e62887 opcodes/cgen-dis.c
+0d11d7a2a01fae122a7df8749cb9b6d1 opcodes/cgen-dis.in
+009649d256b2523e2ee82e28dd0cc420 opcodes/cgen-ibld.in
+625cdd5741644aa0b29fa7c6da4654ad opcodes/cgen-opc.c
+9a68548bbb15ed89aa6ea4c358d9ea04 opcodes/cgen.sh
+b024616c6675ea3b85d3ffd3fa19fe1d opcodes/config.in
+605a42ccf7ab31cd7be0cd25b363919a opcodes/configure
+b2c12afdc03f19af83fe35ab8e635687 opcodes/configure.in
+499988190b54c764e4375f61e9544de8 opcodes/cris-dis.c
+3a10bb1e445c0949494e1f3aa997088e opcodes/cris-opc.c
+00e90d24a57493a9ad61791a06d51b3b opcodes/d10v-dis.c
+7706c567b6fd485d0c08988b6e2b96a2 opcodes/d10v-opc.c
+88bd933509b45a138ae4bacb4338aad1 opcodes/d30v-dis.c
+18dc02b890f4d6f87668ebbc64a42d10 opcodes/d30v-opc.c
+003af092c5d632b4f4d90904faecd02e opcodes/dep-in.sed
+1f5c98b69c13e22d8f1b635c83090b57 opcodes/dis-buf.c
+64dbc6bf7522c73f599f33d5dda7e624 opcodes/disassemble.c
+e89595751f2c687b0cd0f772ef365860 opcodes/fr30-asm.c
+2cd4fe8405837fbb052fe670c13289ea opcodes/fr30-desc.c
+865150975592205c2d8ef0c8937d1a57 opcodes/fr30-desc.h
+7a672cc47db0e155550f731612b7d263 opcodes/fr30-dis.c
+f22030e08fe1977abd16111faaa33851 opcodes/fr30-ibld.c
+f87c51ac0711540f3e0922ec44ba5c44 opcodes/fr30-opc.c
+eb7c0f6820202fc459a47c0c96d3f5ae opcodes/fr30-opc.h
+cddff90ebda85f6ede0ffaf449e6e961 opcodes/h8300-dis.c
+72f03012cbda6d5372f76f835a6162bf opcodes/h8500-dis.c
+f4cf0fb07d827dd6bba35253736998de opcodes/h8500-opc.h
+1e67cdde18b9f05871334dcef604c05f opcodes/hppa-dis.c
+8baa539d215e542bf822c36afd58d1d3 opcodes/i370-dis.c
+f2ffaf6eaf3da84601fa3e11c75cb3b6 opcodes/i370-opc.c
+4dfb48832d928d352253c9ca1fa35910 opcodes/i386-dis.c
+325271abed39e7901f8e311329b7cd40 opcodes/i860-dis.c
+a6545254df1779ca96ced8538fa17d5c opcodes/i960-dis.c
+ae6cb313745148c11055c216f9b6af20 opcodes/ia64-asmtab.c
+c2107e58a2a6fda3092ebc93c5e7ca32 opcodes/ia64-asmtab.h
+fbb66c6be64410ab2f75c5da8f8e10d9 opcodes/ia64-dis.c
+2fd977b3ec03bb6f48424bb3818ad8c0 opcodes/ia64-gen.c
+c36c8bd413a36bdbb0769eb453f96233 opcodes/ia64-ic.tbl
+fb76aa4ea004336589e2e7e7be887656 opcodes/ia64-opc-a.c
+ff96cc6a6f373954bb81500cef62369e opcodes/ia64-opc-b.c
+8c9afa7e15881357af5fe46b1f5d80a4 opcodes/ia64-opc-d.c
+417cf56277ebd50319d61763c986bff9 opcodes/ia64-opc-f.c
+1a51c400fbc59b3148f35a9a620f6386 opcodes/ia64-opc-i.c
+c3fd2ab17b8138a0a33b7aea294e2cb8 opcodes/ia64-opc-m.c
+694265f81af4fc915209293fa8ef0b19 opcodes/ia64-opc-x.c
+e33f83b6f16ba5dc675023ada2b6abd7 opcodes/ia64-opc.c
+50761e99ff94376cb07ffadc7e7b6518 opcodes/ia64-opc.h
+be62c652f94c6c4e4c7339a42025c43a opcodes/ia64-raw.tbl
+b3d7452b4310332b7974b34b09f65a6d opcodes/ia64-war.tbl
+a4eed6589f8feed99206080f7362eb7a opcodes/ia64-waw.tbl
+693f100d1d68c3e479ae2b17388be8fe opcodes/m10200-dis.c
+9c6513402cb7e613241d6a9d0ccbfa45 opcodes/m10200-opc.c
+3cce744dd78253b057697fb120f738f9 opcodes/m10300-dis.c
+5b24c68f8db191e34c7fef7cf126b990 opcodes/m10300-opc.c
+d6691c6cf7c6764ada198a2fc7acba32 opcodes/m32r-asm.c
+d9593057b926a3ebb02ab4fe209510ee opcodes/m32r-desc.c
+da659b6f3ecc08ee14cb623bed0ef811 opcodes/m32r-desc.h
+441eff461d2a13986c33c4c979de1dae opcodes/m32r-dis.c
+b18f1e570c8a79556cd869ac375824ce opcodes/m32r-ibld.c
+4d1e41299d96cfbb23cf06acdf9d2af3 opcodes/m32r-opc.c
+a4024213138cc5e6052e280cbab2b19e opcodes/m32r-opc.h
+6c56fe82dab6ec480c87af308afca2ca opcodes/m32r-opinst.c
+b23366deff64c6618a5fa9935ff249e8 opcodes/m68hc11-dis.c
+534406cb1900704eb5bd5a8ab7c15362 opcodes/m68hc11-opc.c
+3eeab14c284ea6346c4a18e1160d7e71 opcodes/m68k-dis.c
+048e7c2922c8095e869a6dc09c50fd79 opcodes/m68k-opc.c
+62ffe3858af81981ed20e485007b914d opcodes/m88k-dis.c
+d129eed92c6947db4372b285656ef9a1 opcodes/makefile.vms
+175b59f6744f6a730d228801bc47d6bf opcodes/mcore-dis.c
+f67e19601e87a7127369113b7f44e18e opcodes/mcore-opc.h
+85a301cd0498ded5bcb7c0ad39ca2461 opcodes/mips-dis.c
+7cad79823a2d7d5bf206e1308452975c opcodes/mips-opc.c
+8362ab41392683313ae8b63d3bc6ce88 opcodes/mips16-opc.c
+5de239a139c71421a7cce634f8deca83 opcodes/mpw-config.in
+031902d455df71012bd4603e5d616ca6 opcodes/mpw-make.sed
+996d85c1b5ede5b65b26d03f1f27d743 opcodes/ns32k-dis.c
+f5c34a95c1b5c43cfa8195c101e278db opcodes/opintl.h
+aa303dbc7b09f5bf96946237946c3e8e opcodes/pj-dis.c
+81bef8a91825c6429f50db99a60bc856 opcodes/pj-opc.c
+710caf2a6faeb2081ed5c2850d7a3e46 opcodes/ppc-dis.c
+4c2eca7f4de1f33af67d6a370590a80a opcodes/ppc-opc.c
+6145c92319a74bc70f5b1fa98588f49c opcodes/sh-dis.c
+47a9454f36b8978f226a03eb88dd5eac opcodes/sh-opc.h
+f66a1028337cb3f24024f33486fb13b0 opcodes/sparc-dis.c
+a99af75b1c4eb88e3c2e3d40943bcfdb opcodes/sparc-opc.c
+1ded054093de910d9786c62bc4fe8cc6 opcodes/stamp-h.in
+17a9eeaec43855d615c11f9a60d45c0d opcodes/sysdep.h
+b9cbace9806c752c1a9e838741043973 opcodes/tic30-dis.c
+0e73e8362d24a1574f034b74999b7d4b opcodes/tic54x-dis.c
+fc1a3909c0bfc04225c09d65c1e6be0b opcodes/tic54x-opc.c
+116c34878a05c7b290609ddfcd9f149d opcodes/tic80-dis.c
+758f039a282eacf9e05e9b4b2ceaf86f opcodes/tic80-opc.c
+f734b82c7bcd6d89300953b7c6e471ca opcodes/v850-dis.c
+2e7738acbf478a3bddac70e4badf12bf opcodes/v850-opc.c
+d527b0365fa83fb2eb1c0f490ae4ad47 opcodes/vax-dis.c
+7086df384c09612c4330c8b8d217b1f1 opcodes/w65-dis.c
+c0e9e5eafa00a69df12c6abb2e2d4a2d opcodes/w65-opc.h
+519a608c259b78c865f8de6f0f7b72ff opcodes/z8k-dis.c
+2bab6fea415ef1dbac1f958c912bc0d2 opcodes/z8k-opc.h
+7f43b7a736334f3fe6abe87d57e4d053 opcodes/z8kgen.c
+0b03c02d551d6f9d9db0c64ddde56500 setup.com
+7d7855ad10def38a17850f5b17d3a9dd symlink-tree
+0a8fa11d23b640dd1b15a36f8a7f0d3f texinfo/texinfo.tex
+7588c5103af27cc93537977f059f52dc ylwrap
diff --git a/contrib/binutils/opcodes/ChangeLog b/contrib/binutils/opcodes/ChangeLog
index e329df2..dd8cb59 100644
--- a/contrib/binutils/opcodes/ChangeLog
+++ b/contrib/binutils/opcodes/ChangeLog
@@ -1,5731 +1,1154 @@
-2000-05-26 Scott Bambrough <scottb@netwinder.org>
+2001-03-30 Alexandre Oliva <aoliva@redhat.com>
- Port of patch to mainline by Nick Clifton <nickc@cygnus.com>:
- * arm-opc.h: Use upper case for flags in MSR and MRS
- instructions. Allow any bit to be set in the field_mask of
- the MSR instruction.
-
- Port of patch to mainline by Nick Clifton <nickc@cygnus.com>:
- * arm-dis.c (print_insn_arm): Decode _x and _s bits of
- the field_mask of an MSR instruction.
-
-2000-05-26 Scott Bambrough <scottb@netwinder.org>
-
- Port of patch to mainline by Thomas de Lellis <tdel@windriver.com>:
- * arm-opc.h: Disassembly of thumb ldsb/ldsh
- instructions changed to ldrsb/ldrsh.
-
-2000-04-13 Michael Sokolov <msokolov@ivan.Harhan.ORG>
-
- * a29k-dis.c, alpha-dis.c, alpha-opc.c, arc-dis.c, arc-opc.c,
- avr-dis.c, d10v-dis.c, d10v-opc.c, d30v-dis.c, d30v-opc.c,
- disassemble.c, h8300-dis.c, h8500-dis.c, hppa-dis.c, i370-dis.c,
- i370-opc.c, i960-dis.c, m10200-dis.c, m10200-opc.c, m10300-dis.c,
- m10300-opc.c, m68k-dis.c, m68k-opc.c, m88k-dis.c, mcore-dis.c,
- mips-dis.c, mips-opc.c, mips16-opc.c, pj-dis.c, pj-opc.c, ppc-dis.c,
- ppc-opc.c, sh-dis.c, sparc-dis.c, sparc-opc.c, tic80-dis.c,
- tic80-opc.c, v850-dis.c, v850-opc.c, vax-dis.c, w65-dis.c, z8k-dis.c,
- z8kgen.c: Everyone includes sysdep.h. Remove ansidecl.h as sysdep.h
- includes it.
-
-2000-04-20 Alexandre Oliva <aoliva@cygnus.com>
-
- * m10300-dis.c (HAVE_AM30, HAVE_AM33): Define.
- (disassemble): Use them.
-
-2000-04-04 Alan Modra <alan@linuxcare.com.au>
-
- * po/opcodes.pot: Regenerate.
-
- * 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-03 Denis Chertykov <denisc@overta.ru>
-
- * avr-dis.c: Syntax cleanup.
- (add0fff): Print the pc relative address as a signed number.
- (add03f8): Likewise.
-
-2000-04-01 Ian Lance Taylor <ian@zembu.com>
-
- * disassemble.c (disassembler_usage): Don't use a prototype. Mark
- the parameter ATTRIBUTE_UNUSED.
- * ppc-opc.c: Add ATTRIBUTE_UNUSED as needed.
-
-2000-04-01 Alexandre Oliva <aoliva@cygnus.com>
-
- * m10300-opc.c: SP-based offsets are always unsigned.
-
-2000-03-29 Thomas de Lellis <tdel@windriver.com>
-
- * arm-opc.h (thumb_opcodes): Disassemble 0xde.. to "bal"
- [branch always] instead of "undefined".
-
-2000-03-27 Nick Clifton <nickc@cygnus.com>
-
- * d30v-opc.c (d30v_format_table): Move SHORT_AR to end of list of
- short instructions, from end of list of long instructions.
-
-2000-03-27 Ian Lance Taylor <ian@zembu.com>
-
- * Makefile.am (CFILES): Add avr-dis.c.
- (ALL_MACHINES): Add avr-dis.lo.
-
-2000-03-27 Alan Modra <alan@linuxcare.com>
-
- * avr-dis.c (add0fff, add03f8): Don't use structure bitfields to
- truncate integers.
- (print_insn_avr): Call function via pointer in K&R compatible way.
- (dispLDD, regPP, reg50, reg104, reg40, reg20w, lit404, lit204,
- add0fff, add03f8): Convert to old style function declaration and
- add prototype.
- (avrdis_opcode): Add prototype.
-
-2000-03-27 Denis Chertykov <denisc@overta.ru>
-
- * avr-dis.c: New file. AVR disassembler.
- * configure.in (bfd_avr_arch): New architecture support.
- * disassemble.c: Likewise.
- * configure: Regenerate.
-
-Mon Mar 6 19:52:05 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * sh-opc.h (sh_table): ldre and ldrs have a *signed* displacement.
-
-2000-03-02 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * d30v-dis.c (print_insn): Remove d*i hacks. Use per-operand
- flag to determine if operand is pc-relative.
- * d30v-opc.c:
- (d30v_format_table):
- (REL6S3): Renamed from IMM6S3.
- Added flag OPERAND_PCREL.
- (REL12S3, REL18S3, REL32): Split from IMM12S3, IMM18S3, REL32, with
- added flag OPERAND_PCREL.
- (IMM12S3U): Replaced with REL12S3.
- (SHORT_D2, LONG_D): Delay target is pc-relative.
- (SHORT_B2r, SHORT_B3r, SHORT_B3br, SHORT_D2r, LONG_Ur, LONG_2r):
- Split from SHORT_B2, SHORT_D2, SHORT_B3b, SHORT_D2, LONG_U, LONG_2r,
- using the REL* operands.
- (LONG_2br, LONG_Dr): Likewise, from LONG_2b, LONG_D.
- (SHORT_D1r, SHORT_D2Br, LONG_Dbr): Renamed from SHORT_D1, SHORT_D2B,
- LONG_Db, using REL* operands.
- (SHORT_U, SHORT_A5S): Removed stray alternatives.
- (d30v_opcode_table): Use new *r formats.
-
-2000-02-28 Nick Clifton <nickc@cygnus.com>
-
- * m32r-desc.c (m32r_cgen_cpu_open): Replace 'flags' with
- 'signed_overflow_ok_p'.
-
-2000-02-27 Eli Zaretskii <eliz@is.elta.co.il>
-
- * Makefile.am (stamp-lib): Use $(LIBTOOL) --config to get the
- name of the libtool directory.
- * Makefile.in: Rebuild.
-
-2000-02-24 Nick Clifton <nickc@cygnus.com>
-
- * cgen-opc.c (cgen_set_signed_overflow_ok): New function.
- (cgen_clear_signed_overflow_ok): New function.
- (cgen_signed_overflow_ok_p): New function.
-
-2000-02-23 Andrew Haley <aph@cygnus.com>
-
- * m32r-asm.c, m32r-desc.c, m32r-desc.h, m32r-dis.c,
- m32r-ibld.c,m32r-opc.h: Rebuild.
-
-2000-02-23 Linas Vepstas <linas@linas.org>
-
- * i370-dis.c, i370-opc.c: New.
-
- * disassemble.c (ARCH_i370): Define.
- (disassembler): Handle it.
-
- * Makefile.am: Add support for Linux/IBM 370.
- * configure.in: Likewise.
-
- * Makefile.in: Regenerate.
- * configure: Likewise.
-
-2000-02-22 Chandra Chavva <cchavva@cygnus.com>
-
- * d30v-opc.c (d30v_opcode_tab) : Added FLAG_NOT_WITH_ADDSUBppp to
- ST2H, STB, STH, STHH, STW and ST2H opcodes to prohibit parallel
- procedure.
-
-1999-12-30 Andrew Haley <aph@cygnus.com>
-
- * mips-dis.c (_print_insn_mips): New arg for OPCODE_IS_MEMBER:
- force gp32 to zero.
- * mips-opc.c (G6): New define.
- (mips_builtin_op): Add "move" definition for -gp32.
+ * ppc-opc.c (insert_mbe): Shift mask initializer as long.
-2000-02-22 Ian Lance Taylor <ian@zembu.com>
+2001-03-24 Alan Modra <alan@linuxcare.com.au>
- From Grant Erickson <gerickso@Brocade.COM>:
- * ppc-opc.c: Correct dcread--it takes 3 arguments, not 2.
+ * i386-dis.c (PREGRP25): Define.
+ (dis386_twobyte_att): Use here in place of "movntq" entry.
+ (dis386_twobyte_intel): Likewise.
+ (prefix_user_table): Add PREGRP25 entry for "movntq" and "movntdq".
+ (PREGRP26): Define.
+ (dis386_twobyte_att): Use here.
+ (dis386_twobyte_intel): Likewise.
+ (prefix_user_table): Add PREGRP26 entry for "punpcklqdq".
+ (prefix_user_table <maskmovdqu>): XM operand, not MX.
+ (prefix_user_table): Cosmetic changes to "bad" entries.
-2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
+2001-03-22 Alan Modra <alan@linuxcare.com.au>
- * dis-buf.c (buffer_read_memory): Change `length' param and all int
- vars to unsigned.
+ * i386-dis.c (dis386_twobyte_att): Add entries for paddq, psubq.
+ (dis386_twobyte_intel): Likewise.
+ (twobyte_has_modrm): Set entry for paddq, psubq.
-Thu Feb 17 00:18:12 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+2001-03-19 Jim Wilson <wilson@redhat.com>
- * sh-dis.c (print_movxy, print_insn_ddt, print_dsp_reg): New functions.
- (print_insn_ppi): Likewise.
- (print_insn_shx): Use info->mach to select appropriate insn set.
- Add support for sh-dsp. Remove FD_REG_N support.
- * sh-opc.h (sh_nibble_type): Add new values for sh-dsp support.
- (sh_arg_type): Likewise. Remove FD_REG_N.
- (sh_dsp_reg_nums): New enum.
- (arch_sh1, arch_sh2, arch_sh3, arch_sh3e, arch_sh4): New macros.
- (arch_sh_dsp, arch_sh3_dsp, arch_sh1_up, arch_sh2_up): Likewise.
- (arch_sh3_up, arch_sh3e_up, arch_sh4_up, arch_sh_dsp_up): Likewise.
- (arch_sh3_dsp_up): Likewise.
- (sh_opcode_info): New field: arch.
- (sh_table): Split up insn with FD_REG_N into ones with F_REG_N and
- D_REG_N. Fill in arch field. Add sh-dsp insns.
-
-2000-02-14 Fernando Nasser <fnasser@totem.to.cygnus.com>
+ * ia64-gen.c (fetch_insn_class): If xsect, then ignore comment and
+ notestr if larger than xsect.
+ (in_class): Handle format M5.
+ * ia64-asmtab.c: Regnerate.
- * arm-dis.c: Change flavor name from atpcs-special to
- special-atpcs to prevent name conflict in gdb.
- (get_arm_regname_num_options, set_arm_regname_option,
- get_arm_regnames): New functions. API to access the several
- flavor of register names. Note: Used by gdb.
- (print_insn_thumb): Use the register name entry from the currently
- selected flavor for LR and PC.
+2001-03-19 John David Anglin <dave@hiauly1.hia.nrc.ca>
-2000-02-10 Nick Clifton <nickc@cygnus.com>
+ * vax-dis.c (print_insn_vax): Only fetch two bytes if the info buffer
+ has more than one byte left to read.
- * mcore-opc.h (enum mcore_opclass): Add MULSH and OPSR
- classes.
- (mcore_table): Add "idly4", "psrclr", "psrset", "mulsh" and
- "mulsh.h" instructions.
- * mcore-dis.c (imsk array): Add masks for MULSH and OPSR
- classes.
- (print_insn_mcore): Add support for little endian targets.
- Add support for MULSH and OPSR classes.
+2001-02-23 David Mosberger <davidm@hpl.hp.com>
-2000-02-07 Nick Clifton <nickc@cygnus.com>
+ * ia64-opc-a.c: Add missing pseudo-ops for "cmp" and "cmp4".
+ * ia64-asmtab.c: Regenerate.
- * arm-dis.c (parse_arm_diassembler_option): Rename again.
- Previous delat did not take.
+2001-02-21 David Mosberger <davidm@hpl.hp.com>
-2000-02-03 Timothy Wall <twall@redhat.com>
+ * ia64-opc-d.c (ia64_opcodes_d): Break the "add" pattern into two
+ separate variants: one for IMM22 and the other for IMM14.
+ * ia64-asmtab.c: Regenerate.
- * dis-buf.c (buffer_read_memory): Use octets_per_byte field
- to adjust target address bounds checking and calculate the
- appropriate octet offset into data.
-
-2000-01-27 Nick Clifton <nickc@redhat.com>
-
- * arm-dis.c: (parse_disassembler_option): Rename to
- parse_arm_disassembler_option and allow to be exported.
-
- * disassemble.c (disassembler_usage): New function: Print out any
- target specific disassembler options.
- Call arm_disassembler_options() if the ARM architecture is being
- supported.
-
- * arm-dis.c (NUM_ELEM): Define this macro if not already
- defined.
- (arm_regname): New struct type for ARM register names.
- (arm_toggle_regnames): Delete.
- (parse_disassembler_option): Use register name structure.
- (print_insn): New function: Combines duplicate code found in
- print_insn_big_arm and print_insn_little_arm.
- (print_insn_big_arm): Call print_insn.
- (print_insn_little_arm): Call print_insn.
- (print_arm_disassembler_options): Display list of supported,
- ARM specific disassembler options.
-
-2000-01-27 Thomas de Lellis <tdel@windriver.com>
-
- * arm-dis.c (printf_insn_big_arm): Treat ELF symbols with the
- ARM_STT_16BIT flag as Thumb code symbols.
-
- * arm-dis.c (printf_insn_little_arm): Ditto.
-
-2000-01-25 Thomas de Lellis <tdel@windriver.com>
-
- * arm-dis.c (printf_insn_thumb): Prevent double dumping
- of raw thumb instructions.
-
-2000-01-20 Nick Clifton <nickc@cygnus.com>
-
- * mcore-opc.h (mcore_table): Add "add" as an alias for "addu".
-
-2000-01-03 Nick Clifton <nickc@cygnus.com>
-
- * arm-dis.c (streq): New macro.
- (strneq): New macro.
- (force_thumb): ew local variable.
- (parse_disassembler_option): New function: Parse a single, ARM
- specific disassembler command line switch.
- (parse_disassembler_option): Call parse_disassembler_option to
- parse individual command line switches.
- (print_insn_big_arm): Check force_thumb.
- (print_insn_little_arm): Check force_thumb.
-
-1999-12-27 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386-dis.c (grps[]): Correct GRP5 FF/3 from "call" to "lcall".
-
-Wed Dec 1 03:34:53 1999 Jeffrey A Law (law@cygnus.com)
-
- * m10300-opc.c, m10300-dis.c: Add am33 support.
-
-Wed Nov 24 20:29:58 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa-dis.c (unit_cond_names): Add PA2.0 unit condition names.
- (print_insn_hppa): Handle 'B' operand.
-
-1999-11-22 Nick Clifton <nickc@cygnus.com>
-
- * d10v-opc.c: Fix pattern for "cpfg,f{0|1},c" instruction.
-
-1999-11-18 Gavin Romig-Koch <gavin@cygnus.com>
-
- * mips-opc.c (I5): New.
- (abs.ps,add.ps,alnv.ps,c.COND.ps,cvt.s.pl,cvt.s.pu,cvt.ps.s
- madd.ps,movf.ps,movt.ps,mul.ps,net.ps,nmadd.ps,nmsub.ps,
- pll.ps,plu.ps,pul.ps,puu.ps,sub.ps,suxc1,luxc1): New.
-
-Mon Nov 15 19:34:58 1999 Donald Lindsay <dlindsay@cygnus.com>
-
- * arm-dis.c (print_insn_arm): Added general purpose 'X' format.
- * arm-opc.h (print_insn_arm): Added comment documenting
- the 'X' format just added to arm-dis.c.
-
-1999-11-15 Gavin Romig-Koch <gavin@cygnus.com>
-
- * mips-opc.c (la): Create a version that just uses addiu directly.
- (dla): Expand to daddiu if possible.
-
-1999-11-11 Nick Clifton <nickc@cygnus.com>
-
- * mips-opc.c: Add ssnop pattern.
-
-1999-11-01 Gavin Romig-Koch <gavin@cygnus.com>
-
- * mips-dis.c (_print_insn_mips): Use OPCODE_IS_MEMBER.
-
-1999-10-29 Nick Clifton <nickc@cygnus.com>
-
- * d30v-opc.c (mvtacc): Use format SHORT_AR not SHORT_AA
- (d30v_format_tab): Define the SHORT_AR format.
-
-1999-10-28 Nick Clifton <nickc@cygnus.com>
-
- * mcore-dis.c: Remove spurious code introduced in previous delta.
-
-1999-10-27 Scott Bambrough <scottb@netwinder.org>
-
- * arm-dis.c: Include sysdep.h to prevent compile time warnings.
-
-1999-10-18 Michael Meissner <meissner@cygnus.com>
-
- * alpha-opc.c (alpha_operands): Fill in missing initializer.
- (alpha_num_operands): Convert to unsigned.
- (alpha_num_opcodes): Ditto.
- (insert_rba): Declare unused arguments ATTRIBUTE_UNUSED.
- (insert_rca): Ditto.
- (insert_za): Ditto.
- (insert_zb): Ditto.
- (insert_zc): Ditto.
- (extract_bdisp): Ditto.
- (extract_jhint): Ditto.
- (extract_ev6hwjhint): Ditto.
-
-Sun Oct 10 01:48:01 1999 Jerry Quinn <jerry.quinn.adv91@alum.dartmouth.org>
-
- * hppa-dis.c (print_insn_hppa): Add new codes 'cc', 'cd', 'cC',
- 'co', '@'.
+2001-02-14 Jim Wilson <wilson@redhat.com>
- * hppa-dis.c (print_insn_hppa): Removed unused args. Fix '?W'.
+ * ia64-ic.tbl: Update from Intel. Add setf to fr-writers.
+ * ia64-asmtab.c: Regenerate.
- * hppa-dis.c (print_insn_hppa): Implement codes "?N", "?Q".
+Mon Feb 12 17:38:59 CET 2001 Jan Hubicka <jh@suse.cz>
-Thu Oct 7 00:12:43 MDT 1999 Diego Novillo <dnovillo@cygnus.com>
-
- * d10v-opc.c (d10v_operands): Add RESTRICTED_NUM3 flag for
- rac/rachi instructions.
- (d10v_opcodes): Added seven new instructions ld, ld2w, sac, sachi,
- slae, st and st2w.
-
-1999-10-04 Doug Evans <devans@casey.cygnus.com>
-
- * fr30-asm.c,fr30-desc.h: Rebuild.
- * m32r-asm.c,m32r-desc.c,m32r-desc.h: Rebuild. Add m32rx support.
- * m32r-dis.c,m32r-ibld.c,m32r-opc.c,m32r-opc.h,m32r-opinst.c: Ditto.
-
-1999-09-29 Nick Clifton <nickc@cygnus.com>
-
- * sh-opc.h: Fix bit patterns for several load and store
- instructions.
-
-Thu Sep 23 08:27:20 1999 Jerry Quinn <jerry.quinn.adv91@alum.dartmouth.org
-
- * hppa-dis.c (print_insn_hppa): Replace 'B', 'M', 'g' and 'l' with
- cleaner code using completer prefixes. Add 'Y'.
-
-Sun Sep 19 10:41:27 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa-dis.c: (print_insn_hppa): Correct 'cJ', 'cc'.
-
- * hppa-dis.c (extract_22): New function.
-
- * hppa-dis.c (print_insn_hppa): Handle 'J', 'K', and 'cc'.
-
- * hppa-dis.c (print_insn_hppa): Handle 'fe' and 'cJ'.
-
- * hppa-dis.c (print_insn_hppa): Handle '#', 'd', and 'cq'.
-
- * hppa-dis.c (print_insn_hppa): Handle 'm', 'h', '='.
-
- * hppa-dis.c (print_insn_hppa): Handle 'X' operand.
-
- * hppa-dis.c (print_insn_hppa): Handle 'B' operand.
-
- * hppa-dis.c (print_insn_hppa): Handle 'M' and 'L' operands.
-
- * hppa-dis.c (print_insn_hppa): Handle 'l' operand.
-
- * hppa-dis.c (print_insn_hppa): Handle 'g' operand.
-
-Sat Sep 18 11:36:12 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa-dis.c (print_insn_hppa): Output a space after 'X' completer.
-
- * hppa-dis.c: (print_insn_hppa): Do output a space before a 'v'
- operand.
-
- * hppa-dis.c: (print_insn_hppa): Handle 'fX'.
-
- * hppa-dis.c: (print_insn_hppa): Add missing break after
- FP register case.
-
- * hppa-dis.c: Finish constifying various completers, register
- names, etc etc.
-
-1999-09-14 Michael Meissner <meissner@cygnus.com>
-
- * configure.in (Canonicalization of target names): Remove adding
- ${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
- generates $ac_config_sub with a ${CONFIG_SHELL} already.
- * configure: Regenerate.
-
-Tue Sep 7 13:50:32 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa-dis.c (print_insn_hppa): Escape '%' in output strings.
-
- * hppa-dis.c (print_insn_hppa): Handle 'Z' argument.
-
-1999-09-07 Nick Clifton <nickc@cygnus.com>
-
- * sh-opc.h: Add mulu.w and muls.w patterns. These are the correct
- names for the mulu and muls patterns.
-
-1999-09-04 Steve Chamberlain <sac@pobox.com>
-
- * pj-opc.c: New file.
- * pj-dis.c: New file.
- * disassemble.c (disassembler): Handle bfd_arch_pj.
- * configure.in: Handle bfd_pj_arch.
- * Makefile.am: Rebuild dependencies.
- (CFILES): Add pj-dis.c and pj-opc.c.
- (ALL_MACHINES): Add pj-dis.lo and pj-opc.lo.
- * configure, Makefile.in: Rebuild.
-
-1999-09-04 H.J. Lu <hjl@gnu.org>
-
- * i386-dis.c (print_insn_i386): Set bytes_per_line to 7.
-
-Mon Aug 30 18:56:14 1999 Richard Henderson <rth@cygnus.com>
-
- * alpha-opc.c (fetch, fetch_m, ecb, wh64): RA must be R31.
-
-1999-08-04 Doug Evans <devans@casey.cygnus.com>
-
- * fr30-asm.c,fr30-desc.h,fr30-dis.c,fr30-ibld.c,fr30-opc.c: Rebuild.
- * m32r-asm.c,m32r-desc.h,m32r-dis.c,m32r-ibld.c,m32r-opc.c: Rebuild.
- * m32r-opinst.c: Rebuild.
-
-Sat Aug 28 00:27:24 1999 Jerry Quinn <jquinn@nortelnetworks.com>
-
- * hppa-dis.c (print_insn_hppa): Replace 'f' by 'v'. Prefix float
- register args by 'f'.
-
- * hppa-dis.c (print_insn_hppa): Add args q, %, !, and |.
-
- * hppa-dis.c (MASK_10, read_write_names, add_compl_names,
- extract_10U_store): New.
- (print_insn_hppa): Add new completers.
-
- * hppa-dis.c (signed_unsigned_names,mix_half_names,
- saturation_names): New.
- (print_insn_hppa): Add completer codes 'a', 'ch', 'cH', 'cS', and 'c*'.
-
- * hppa-dis.c (print_insn_hppa): Place completers behind prefix 'c'.
-
- * hppa-dis.c (print_insn_hppa): Add cases for '.', '~'. '$'. and '!'
-
- * hppa-dis.c (print_insn_hppa): Look at next arg instead of bits
- to decide to print a space.
-
-1999-08-21 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386-dis.c: Add AMD athlon instruction support.
-
-1999-08-10 Ian Lance Taylor <ian@zembu.com>
-
- From Wally Iimura <iimura@microunity.com>:
- * dis-buf.c (buffer_read_memory): Rewrite expression to avoid
- overflow at end of address space.
- (generic_print_address): Use sprintf_vma.
-
-1999-08-08 Ian Lance Taylor <ian@zembu.com>
-
- * Makefile.am: Rename .dep* files to DEP*. Change DEP variable to
- MKDEP. Rebuild dependencies.
- * Makefile.in: Rebuild.
-
-Fri Aug 6 09:46:35 1999 Jerry Quinn <jquinn@nortelnetworks.com>
-
- * hppa-dis.c (compare_cond_64_names, cmpib_cond_64_names,
- add_cond_64_names, wide_add_cond_names, logical_cond_64_names,
- unit_cond_64_names, shift_cond_64_names, bb_cond_64_names): New.
- (print_insn_hppa): Add 64 bit condition completers.
-
-Thu Aug 5 16:59:58 1999 Jerry Quinn <jquinn@nortelnetworks.com>
-
- * hppa-dis.c (print_insn_hppa): Change condition args to use
- '?' prefix.
-
-Wed Jul 28 04:33:58 1999 Jerry Quinn <jquinn@nortelnetworks.com>
-
- * hppa-dis.c (print_insn_hppa): Remove unnecessary test in 'E'
- code.
-
-1999-07-21 Ian Lance Taylor <ian@zembu.com>
-
- From Mark Elbrecht:
- * configure.bat: Remove; obsolete.
-
-1999-07-11 Ian Lance Taylor <ian@zembu.com>
-
- * dis-buf.c: Add ATTRIBUTE_UNUSED as appropriate.
- (generic_strcat_address): Add cast to avoid warning.
- * i386-dis.c: Initialize all structure fields to avoid warnings.
- Add ATTRIBUTE_UNUSED as appropriate.
-
-1999-07-08 Jakub Jelinek <jj@ultra.linux.cz>
-
- * sparc-dis.c (print_insn_sparc): Differentiate between
- addition and oring when guessing symbol for comment.
-
-1999-07-05 Nick Clifton <nickc@cygnus.com>
-
- * arm-dis.c (print_insn_arm): Display hex equivalent of rotated
- constant.
-
-1999-06-23 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386-dis.c: Mention intel mode specials in macro char comment.
-
-1999-06-21 Ian Lance Taylor <ian@zembu.com>
-
- * alpha-dis.c: Don't include <stdlib.h>.
- * arm-dis.c: Include "sysdep.h".
- * tic30-dis.c: Don't include <stdlib.h> or <string.h>. Include
- "sysdep.h".
- * Makefile.am: Rebuild dependencies.
- * Makefile.in: Rebuild.
-
-1999-06-16 Nick Clifton <nickc@cygnus.com>
-
- * arm-dis.c (print_insn_arm): Add detection of IMB and IMBRange
- SWIs.
-
-1999-06-14 Nick Clifton <nickc@cygnus.com> & Drew Mosley <dmoseley@cygnus.com>
-
- * arm-dis.c (arm_regnames): Turn into a pointer to a register
- name set.
- (arm_regnames_standard): New variable: Array of ARM register
- names according to ARM instruction set nomenclature.
- (arm_regnames_apcs): New variable: Array of ARM register names
- according to ARM Procedure Call Standard.
- (arm_regnames_raw): New variable: Array of ARM register names
- using just 'r' and the register number.
- (arm_toggle_regnames): New function: Toggle the chosen register set
- naming scheme.
- (parse_disassembler_options): New function: Parse any target
- disassembler command line options.
- (print_insn_big_arm): Call parse_disassembler_options if any
- are defined.
- (print_insn_little_arm): Call parse_disassembler_options if any
- are defined.
-
-1999-06-13 Ian Lance Taylor <ian@zembu.com>
-
- * i386-dis.c (FWAIT_OPCODE): Define.
- (used_prefixes): New static variable.
- (fetch_data): Don't print an error message if we have already
- fetched some bytes successfully.
- (ckprefix): Clear used_prefixes. Use FWAIT_OPCODE, not 0x9b.
- (prefix_name): New static function.
- (print_insn_i386): If setjmp fails, indicating a data error, but
- we have managed to fetch some bytes, print the first one as a
- prefix or a .byte pseudo-op. If fwait is followed by a non
- floating point instruction, print the first prefix. Set
- used_prefixes when prefixes are used. If any prefixes were not
- used after disassembling the instruction, print the first prefix
- instead of printing the instruction.
- (putop): Set used_prefixes when prefixes are used.
- (append_seg, OP_E, OP_G, OP_REG, OP_I, OP_sI, OP_J): Likewise.
- (OP_DIR, OP_SIMD_Suffix): Likewise.
-
-1999-06-07 Jakub Jelinek <jj@ultra.linux.cz>
-
- * sparc-opc.c: Fix up set, setsw, setuw operand kinds.
- Support signx %reg, clruw %reg.
-
-1999-06-07 Jakub Jelinek <jj@ultra.linux.cz>
-
- * sparc-opc.c: Add aliases Solaris as supports.
-
-Mon Jun 7 12:04:52 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
-
- * Makefile.am (CFILES): Add arc-{dis,opc}.c and v850-{dis,opc}.c.
- * Makefile.in: Regenerated.
-
-1999-06-03 Philip Blundell <philb@gnu.org>
-
- * arm-dis.c (print_insn_arm): Make LDRH/LDRB consistent with LDR
- when target is PC-relative.
-
-1999-05-28 Linus Nordberg <linus.nordberg@canit.se>
-
- * m68k-opc.c: Rename MACL/MSACL to MAC/MSAC. Add MACM/MSACM. Add
- MOVE MACSR,CCR.
-
- * m68k-dis.c (fetch_arg): Add places `n', `o'.
-
- * m68k-opc.c: Add MSAC, MACL, MOVE to/from ACC, MACSR, MASK.
- Add mcf5206e to appropriate instructions.
- Add alias for MAC, MSAC.
-
- * m68k-dis.c (print_insn_arg): Add formats `E', `G', `H' and place
- `N'.
-
- * m68k-opc.c (m68k_opcodes): Add divsw, divsl, divuw, divul, macl,
- macw, remsl, remul for mcf5307. Change mcf5200 --> mcf.
-
- * m68k-dis.c: Add format `u' and places `h', `m', `M'.
-
-1999-05-18 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386-dis.c (Ed): Define.
- (dis386_twobyte_att, dis386_twobyte_intel): Use Ed for movd.
- (Rw): Remove.
- (OP_rm): Rename to OP_Rd.
- (ONE): Remove.
- (OP_ONE): Remove.
- (putop): Add const to template and p.
- (print_insn_x86): Delete.
- (print_insn_i386): Merge old function print_insn_x86. Add const
- to dp.
- (struct dis386): Add const to name.
- (dis386_att, dis386_intel): Add const.
- (dis386_twobyte_att, dis386_twobyte_intel): Add const.
- (names32, names16, names8, names_seg, index16): Add const.
- (grps, prefix_user_table, float_reg): Add const.
- (float_mem_att, float_mem_intel): Add const.
- (oappend): Add const to s.
- (OP_REG): Add const to s.
- (ptr_reg): Add const to s.
- (dofloat): Add const to dp.
- (OP_C): Don't skip modrm, it's now done in OP_Rd.
- (OP_D): Ditto.
- (OP_T): Ditto.
- (OP_Rd): Check for valid mod. Call Op_E to print.
- (OP_E): Handle d_mode arg. Check for bad sfence,lea,lds etc.
- (OP_MS): Check for valid mod. Call Op_EM to print.
- (OP_3DNowSuffix): Set obufp and use oappend rather than
- strcat. Call BadOp() for errors.
- (OP_SIMD_Suffix): Likewise.
- (BadOp): New function.
-
-1999-05-12 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386-dis.c (dis386_intel): Remove macro chars, except for
- jEcxz. Change cWtR and cRtd to cW and cR.
- (dis386_twobyte_intel): Remove macro chars here too.
- (putop): Handle R and W macros for intel mode.
-
- * i386-dis.c (SIMD_Fixup): New function.
- (dis386_twobyte_att): Use it on movlps and movhps, and change
- Ev to EX on these insns. Change movmskps Ev, XM to Gv, EX.
- (dis386_twobyte_intel): Same here.
-
- * i386-dis.c (Av): Remove.
- (Ap): remove lptr.
- (lptr): Remove.
- (OPSIMD): Define.
- (OP_SIMD_Suffix): New function.
- (OP_DIR): Remove dead code.
- (eAX_reg..eDI_reg): Renumber.
- (onebyte_has_modrm): Table numbering comments.
- (INTERNAL_DISASSEMBLER_ERROR): Move to before print_insn_x86.
- (print_insn_x86): Move all prefix oappends to after uses_f3_prefix
- checks. Print error on invalid dp->bytemode2. Remove simd_cmp,
- and handle SIMD cmp insns in OP_SIMD_Suffix.
- (info->bytes_per_line): Bump from 5 to 6.
- (OP_None): Remove.
- (OP_E): Use INTERNAL_DISASSEMBLER_ERROR. Handle sfence.
- (OP_3DNowSuffix): Ensure mnemonic index unsigned.
-
- PIII SIMD support from Doug Ledford <dledford@redhat.com>
- * i386-dis.c (XM, EX, None): Define.
- (OP_XMM, OP_EX, OP_None): New functions.
- (USE_GROUPS, USE_PREFIX_USER_TABLE): Define.
- (GRP14): Rename to GRPAMD.
- (GRP*): Add USE_GROUPS flag.
- (PREGRP*): Define.
- (dis386_twobyte_att, dis386_twobyte_intel): Add SIMD insns.
- (twobyte_has_modrm): Add SIMD entries.
- (twobyte_uses_f3_prefix, simd_cmp_op, prefix_user_table): New.
- (grps): Add SIMD insns.
- (print_insn_x86): New vars uses_f3_prefix and simd_cmp. Don't
- oappend repz if uses_f3_prefix. Add code to handle new groups for
- SIMD insns.
-
- From Maciej W. Rozycki <macro@ds2.pg.gda.pl>
- * i386-dis.c (dis386_att, dis386_intel): Change 0xE8 call insn
- operand from Av to Jv.
-
-1999-05-07 Nick Clifton <nickc@cygnus.com>
-
- * mcore-dis.c (print_insn_mcore): Use .short to display
- unidentified instructions, not .word.
-
-1999-04-26 Tom Tromey <tromey@cygnus.com>
-
- * aclocal.m4, configure: Updated for new version of libtool.
-
-1999-04-14 Doug Evans <devans@casey.cygnus.com>
-
- * fr30-desc.c,fr30-desc.h,fr30-dis.c,fr30-ibld.c,fr30-opc.c: Rebuild.
- * m32r-desc.c,m32r-desc.h,m32r-dis.c,m32r-ibld.c,m32r-opc.c: Rebuild.
-
-Mon Apr 12 23:46:17 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa-dis.c (print_insn_hppa, case '3'): New case for PA2.0
+ * i386-dis.c (prefix_user_t): Add 'Y' to SSE ineger converison
instructions.
+ (putop): Handle 'Y'
-1999-04-10 Doug Evans <devans@casey.cygnus.com>
-
- * fr30-desc.c,fr30-desc.h,fr30-ibld.c: Rebuild.
- * m32r-desc.c,m32r-desc.h,m32r-opinst.c: Rebuild.
+2001-02-05 Jim Wilson <wilson@redhat.com>
-1999-04-06 Ian Lance Taylor <ian@zembu.com>
+ * ia64-asmtab.c: Revert 2000-12-16 change.
- * opintl.h (LC_MESSAGES): Never define.
+Thu Feb 1 16:41:58 MET 2001 Jan Hubicka <jh@suse.cz>
-1999-04-04 Ian Lance Taylor <ian@zembu.com>
+ * i387-dis.c (dis386_att, grps): Use 'T' for push/pop
+ (putop): Handle 'T', alphabetize order, fix 'I' handling in Intel syntax
- * i386-dis.c (intel_syntax, open_char, close_char): Make static.
- (separator_char, scale_char): Likewise.
- (print_insn_x86): Likewise.
- (print_insn_i386): Likewise. Add declaration.
+2001-01-14 Alan Modra <alan@linuxcare.com.au>
-1999-03-26 Doug Evans <devans@casey.cygnus.com>
+ * hppa-dis.c (print_insn_hppa): Handle '>' and '<' arg types.
- * fr30-dis.c: Rebuild.
- * m32r-dis.c: Rebuild.
+2001-01-13 Nick Clifton <nickc@redhat.com>
-1999-03-23 Ian Lance Taylor <ian@zembu.com>
+ * disassemble.c: Remove spurious white space.
- * m68k-opc.c: Change compare instructions to use "@s" rather than
- ";s" when used with an immediate operand.
+Sat Jan 13 01:48:24 MET 2001 Jan Hubicka <jh@suse.cz>
-1999-03-22 Doug Evans <devans@casey.cygnus.com>
+ * i386-dis.c (dis386_att, disx86_64_att): Fix ret, lret and iret
+ templates.
- * cgen-opc.c (cgen_set_cpu): Delete.
- (cgen_lookup_insn): max_insn_size renamed to max_insn_bitsize.
- * fr30-desc.c,fr30-desc.h,fr30-dis.c,fr30-ibld.c,fr30-opc.c,fr30-opc.h:
- Rebuild.
- * m32r-desc.c,m32r-desc.h,m32r-dis.c,m32r-ibld.c,m32r-opc.c,m32r-opc.h:
- Rebuild.
- * po/opcodes.pot: Rebuild.
+2001-01-11 Peter Targett <peter.targett@arccores.com>
-1999-03-16 Martin Hunt <hunt@cygnus.com>
+ * configure.in: Add arc-ext.lo for bfd_arc_arch selection.
+ * Makefile.am (C_FILES): Add arc-ext.c.
+ (ALL_MACHINES) Add arc-ext.lo.
+ (INCLUDES) Add opcode directory to list.
+ New dependency entry for arc-ext.lo.
+ * disassemble.c (disassembler): Correct call to
+ arc_get_disassembler.
+ * arc-opc.c: New update for ARC, including full base
+ instructions for ARC variants.
+ * arc-dis.h, arc-dis.c: New update for ARC, including
+ extensibility functionality.
+ * arc-ext.h, arc-ext.c: New files for handling extensibility.
- * d30v-opc.c (mvtsys): Remove FLAG_LKR.
+2001-01-10 Jan Hubicka <jh@suse.cz>
-1999-03-11 Doug Evans <devans@casey.cygnus.com>
+ * i386-dis.c (PREGRP15 - PREGRP24): New.
+ (dis386_twobyt): Add SSE2 instructions.
+ (twobyte_uses_SSE_prefix: Rename from ... ; add new SSE instructions.
+ (twobyte_uses_f3_prefix): ... this one.
+ (grps): Add SSE instructions.
+ (prefix_user_table): Add two new slots; add SSE2 instructions.
+ (print_insn_i386): Rename uses_f3_prefix to uses_SSE_prefix;
+ Handle the REPNZ and Data16 prefixes as well; do proper lookup
+ to prefix_user_table.
+ (OP_E): Accept mfence and lfence as well.
+ (OP_MMX): Data16 prefix turns MMX to SSE; support REX extensions.
+ (OP_XMM): Support REX extensions.
+ (OP_EM): Likewise.
+ (OP_EX): Likewise.
- * cgen-opc.c (cgen_set_cpu): New arg `isa'. All callers updated.
- (cgen_operand_lookup_by_name,cgen_operand_lookup_by_num): New fns.
- (cgen_get_insn_operands): Rewrite test for hardcoded/operand index.
- * fr30-asm.c,fr30-desc.c,fr30-desc.h,fr30-dis.c,fr30-ibld.c: Rebuild.
- * m32r-asm.c,m32r-desc.c,m32r-desc.h,m32r-dis.c,m32r-ibld.c: Rebuild.
- * m32r-opinst.c: Rebuild.
+2001-01-09 Nick Clifton <nickc@redhat.com>
-1999-02-25 Doug Evans <devans@casey.cygnus.com>
+ * arm-dis.c (print_insn): Set pc to zero for instructions with
+ a reloc associated with them.
- * cgen-opc.c (cgen_hw_lookup_by_name): Rewrite.
- (cgen_hw_lookup_by_num): Rewrite.
- * fr30-desc.c,fr30-desc.h,fr30-dis.c,fr30-ibld.c,fr30-opc.c: Rebuild.
- * m32r-desc.c,m32r-desc.h,m32r-dis.c,m32r-ibld.c,m32r-opc.c: Rebuild.
- * m32r-opinst.c: Rebuild.
+2001-01-09 Jeff Johnston <jjohnstn@redhat.com>
-Sat Feb 13 14:06:19 1999 Richard Henderson <rth@cygnus.com>
+ * cgen-asm.in (parse_insn_normal): Changed syn to be
+ CGEN_SYNTAX_CHAR_TYPE. Changed all references to *syn
+ as character to use CGEN_SYNTAX_CHAR macro and all comparisons
+ to '\0' to use 0 instead.
+ * cgen-dis.in (print_insn_normal): Ditto.
+ * cgen-ibld.in (insert_insn_normal, extract_insn_normal): Ditto.
- * alpha-opc.c: Add sqrt+flags patterns. Add EV6 PALcode insns.
- (insert_jhint): Fix insertion mask.
- * alpha-dis.c (print_insn_alpha): Disassemble EV6 PALcode insns.
+2001-01-05 Jan Hubicka <jh@suse.cz>
-1999-02-10 Doug Evans <devans@casey.cygnus.com>
-
- * Makefile.in: Rebuild.
+ * i386-dis.c: Add x86_64 support.
+ (rex): New static variable.
+ (REX_MODE64, REX_EXTX, REX_EXTY, REX_EXTZ): New constants.
+ (USED_REX): New macro.
+ (Ev, Ed, Rm, Iq, Iv64, Cm, Dm, Rm*, Ob64, Ov64): New macros.
+ (OP_I64, OP_OFF64, OP_IMREG): New functions.
+ (OP_REG, OP_OFF): Declare.
+ (get64, get32, get32s): New functions.
+ (r??_reg): New constants.
+ (dis386_att): Change templates of instruction implicitly promoted
+ to 64bit; change e?? to RMe?? for unwind RM byte instructions.
+ (grps): Likewise.
+ (dis386_intel): Likewise.
+ (dixx86_64_att): New table based on dis386_att.
+ (dixx86_64_intel): New table based on dis386_intel.
+ (names64, names8rex): New global variable.
+ (names32, names16): Add extended registers.
+ (prefix_user_t): Recognize rex prefixes.
+ (prefix_name): Print REX prefixes nicely.
+ (op_riprel): New global variable.
+ (start_pc): Set type to bfd_vma.
+ (print_insn_i386): Detect the 64bit mode and use proper table;
+ move ckprefix after initializing the buffer; output unused rex prefixes;
+ output information about target of RIP relative addresses.
+ (putop): Support 'O' and 'I'. Update handling of "P', 'Q', 'R' and 'S';
+ (print_operand_value): New function.
+ (OP_E, OP_G, OP_REG, OP_I, OP_J, OP_DIR, OP_OFF, OP_D): Add support for
+ REX prefix and new modes.
+ (get64, get32s): New.
+ (get32): Return bfd_signed_vma type.
+ (set_op): Initialize the op_riprel.
+ * disassemble.c (disassembler): Recognize the x86-64 disassembly.
+
+2001-01-03 Richard Sandiford <r.sandiford@redhat.com>
+
+ cgen-dis.in (read_insn): Use bfd_get_bits()
+
+2001-01-02 Richard Sandiford <rsandifo@redhat.com>
+
+ * cgen-dis.c (hash_insn_array): Use bfd_put_bits().
+ (hash_insn_list): Likewise
+ * cgen-ibld.in (insert_1): Use bfd_put_bits() and bfd_get_bits().
+ (extract_1): Use bfd_get_bits().
+ (extract_normal): Apply sign extension to both extraction
+ methods.
+ * cgen-opc.c (cgen_get_insn_value): Use bfd_get_bits()
+ (cgen_put_insn_value): Use bfd_put_bits()
+
+2000-12-28 Frank Ch. Eigler <fche@redhat.com>
+
+ * cgen-asm.in (parse_insn_normal): Print better error message for
+ instructions with missing operands.
+
+2000-12-21 Santeri Paavolainen <santtu@ssh.com>
+
+ * cgen-opc.c: Include alloca.h if HAVE_ALLOCA_H is defined.
+
+2000-12-16 Nick Clifton <nickc@redhat.com>
-1999-02-09 Doug Evans <devans@casey.cygnus.com>
-
- * i960c-asm.c,i960c-dis.c,i960c-opc.c,i960c-opc.h: Delete.
- * i960-dis.c (print_insn_i960): Rename from print_insn_i960_orig.
- * Makefile.am: Remove references to them.
- (HFILES): Add fr30-desc.h,m32r-desc.h.
- (CFILES): Add fr30-desc.c,fr30-ibld.c,m32r-desc.c,m32r-ibld.c,
- m32r-opinst.c.
- (ALL_MACHINES): Update.
- * configure.in: Redo handling of cgen_files.
- (bfd_i960_arch): Delete i960c-*.lo files.
+ * Makefile.in: Regenerate.
+ * aclocal.m4: Regenerate.
+ * config.in: Regenerate.
+ * configure.in: Add spacing.
* configure: Regenerate.
- * cgen-asm.c (*): CGEN_OPCODE_DESC renamed to CGEN_CPU_DESC.
- (hash_insn_array): Rewrite.
- * cgen-dis.c (*): CGEN_OPCODE_DESC renamed to CGEN_CPU_DESC.
- (hash_insn_array): Rewrite.
- * cgen-opc.c (*): CGEN_OPCODE_DESC renamed to CGEN_CPU_DESC.
- (cgen_lookup_insn,cgen_get_insn_operands): Define here.
- (cgen_lookup_get_insn_operands): Ditto.
- * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerate.
- * m32r-asm.c,m32r-dis.c,m32r-opc.c,m32r-opc.h: Regenerate.
- * po/POTFILES.in: Rebuild.
- * po/opcodes.pot: Rebuild.
-
-Fri Feb 5 00:04:24 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am: Rebuild dependencies.
- (HFILES): Add fr30-opc.h.
- (CFILES): Add fr30-asm.c, fr30-dis.c, fr30-opc.c.
- * Makefile.in: Rebuild.
+ * ia64-asmtab.c: Regenerate.
+ * po/opcodes.pot: Regenerate.
- * configure.in: Change AC_PREREQ to 2.13. Remove AM_CYGWIN32.
- Change AM_EXEEXT to AC_EXEEXT and AM_PROG_INSTALL to
- AC_PROG_INSTALL.
- * acconfig.h: Remove.
- * configure: Rebuild with current autoconf/automake.
- * aclocal.m4: Likewise.
- * config.in: Likewise.
- * Makefile.in: Likewise.
-
-Thu Feb 4 13:48:52 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c: Correct move (not movew) to status word on 5200.
-
-Mon Feb 1 20:54:36 1999 Catherine Moore <clm@cygnus.com>
-
- * disassemble.c (disassembler): Handle bfd_mach_i386_i386_intel_syntax.
- * i386-dis.c (x_mode): Define.
- (dis386): Remove.
- (dis386_att): New.
- (dis386_intel): New.
- (dis386_twobyte): Remove.
- (dis386_twobyte_att): New.
- (dis386_twobyte_intel): New.
- (print_insn_x86): Use new arrays.
- (float_mem): Remove.
- (float_mem_intel): New.
- (float_mem_att): New.
- (dofloat): Use new float_mem arrays.
- (print_insn_i386_att): New.
- (print_insn_i386_intel): New.
- (print_insn_i386): Handle bfd_mach_i386_i386_intel_syntax.
- (putop): Handle intel syntax.
- (OP_indirE): Handle intel syntax.
- (OP_E): Handle intel syntax.
- (OP_I): Handle intel syntax.
- (OP_sI): Handle intel syntax.
- (OP_OFF): Handle intel syntax.
-
-
-
-1999-01-27 Doug Evans <devans@casey.cygnus.com>
-
- * fr30-opc.h,fr30-opc.c: Rebuild.
- * i960c-opc.h,i960c-opc.c: Rebuild.
- * m32r-opc.c: Rebuild.
-
-Tue Jan 19 18:01:54 1999 David Taylor <taylor@texas.cygnus.com>
-
- * hppa-dis.c: revert HP merge changes until HP gives us
- an updated file.
+2000-12-12 Frank Ch. Eigler <fche@redhat.com>
+
+ * cgen-asm.in (@arch@_cgen_assemble_insn): Prefer printing insert-time
+ error messages over later parse-time ones.
+
+2000-12-12 Jim Wilson <wilson@redhat.com>
+
+ * ia64-dis.c (print_insn_ia64): Cast away const on ia64_free_opcode
+ argument.
+ * ia64_gen.c (insert_deplist): Cast sizeof result to int.
+ (print_dependency_table): Print NULL if semantics field not set.
+ (insert_opcode_dependencies): Mark cmp parameter as unused.
+ (print_main_table): Use fprintf_vma to print long long fields.
+ (main): Mark argv paramter as unused. Convert to old style definition.
+ * ia64-opc.c (ia64_find_dependency): Cast sizeof result to int.
+ * ia64-asmtab.c: Regnerate.
+
+2000-12-09 Nick Clifton <nickc@redhat.com>
+
+ * m32r-dis.c (print_insn): Prevent re-read of instruction from
+ wrong address.
+
+ * fr30-dis.c: Regenerate.
+
+2000-12-08 Peter Targett <peter.targett@arccores.com>
+
+ * configure.in: Add arc-ext.lo for bfd_arc_arch selection.
+ * Makefile.am (C_FILES): Add arc-ext.c.
+ (ALL_MACHINES) Add arc-ext.lo.
+ (INCLUDES) Add opcode directory to list.
+ New dependency entry for arc-ext.lo.
+ * disassemble.c (disassembler): Correct call to
+ arc_get_disassembler.
+ * arc-opc.c: New update for ARC, including full base
+ instructions for ARC variants.
+ * arc-dis.h, arc-dis.c: New update for ARC, including
+ extensibility functionality.
+ * arc-ext.h, arc-ext.c: New files for handling extensibility.
+
+2000-12-03 Chris Demetriou cgd@sibyte.com
+
+ * mips-opc.c (mips_builtin_opcodes): Use the WR_HILO, RD_HILO,
+ MOD_HILO, and MOD_LO macros.
+
+ * mips-opc.c (M1, M2): Delete.
+ (mips_builtin_opcodes): Remove all uses of M1.
+
+ * mips-opc.c (mips_builtin_opcodes): Make the dmfc2 and dmtc2
+ instructions take "G" format second operands and use the
+ correct flags.
+ There are mfc3 and mtc3 opcodes, so add dmfc3 and dmtc3 opcodes to
+ match.
+ Delete "sel" code operands from mfc1 and mtc1.
+ Add MIPS64 opcode changes (dclo, dclz), and "sel" code variants
+ for dm[ft]c[023].
-1999-01-19 Nick Clifton <nickc@cygnus.com>
-
- * arm-dis.c (print_insn_arm): Display ARM syntax for PC relative
- offsets as well as symbloic address.
-
-Tue Jan 19 10:51:01 1999 David Taylor <taylor@texas.cygnus.com>
-
- * hppa-dis.c: fix comments and some indentation.
-
-1999-01-12 Doug Evans <devans@casey.cygnus.com>
-
- * fr30-opc.c,i960c-opc.c: Regenerate.
-
-1999-01-11 Doug Evans <devans@casey.cygnus.com>
-
- * fr30-opc.c: Regenerate.
-
-1999-01-06 Doug Evans <devans@casey.cygnus.com>
-
- * m32r-dis.c: Regenerate.
-
-1999-01-05 Doug Evans <devans@casey.cygnus.com>
-
- * fr30-asm.c,fr30-dis.c,fr30-opc.h,fr30-opc.c: Regenerate.
- * i960c-asm.c,i960c-dis.c,i960c-opc.h,i960c-opc.c: Regenerate.
- * m32r-asm.c,m32r-dis.c,m32r-opc.h,m32r-opc.c: Regenerate.
-
-1999-01-04 Jason Molenda (jsm@bugshack.cygnus.com)
-
- * configure.in: Require autoconf 2.12.1 or higher.
-
-1998-12-30 Gavin Romig-Koch <gavin@cygnus.com>
+2000-12-03 Ed Satterthwaite ehs@sibyte.com and
+ Chris Demetriou cgd@sibyte.com
+
+ * mips-opc.c (mips_builtin_opcodes): Finish additions
+ for MIPS32 support, and clean up existing entries for
+ aesthetics, consistency with the MIPS32 ISA, and
+ with consistency the rest of the table.
+
+2000-12-01 Nick Clifton <nickc@redhat.com>
+
+ * mips16-opc.c (mips16_opcodes): Add initialiser for membership
+ field.
+
+2000-12-01 Chris Demetriou <cgd@sibyte.com>
+
+ mips-dis.c (print_insn_arg): Handle new 'U' and 'J' argument
+ specifiers. Update 'B' for new constant names, and remove
+ 'm'.
+ mips-opc.c (mips_builtin_opcodes): Place "pref" and "ssnop"
+ near the top of the array, so they are disassembled properly.
+ Enable "ssnop" for MIPS32. Add "break" variant with 20 bit
+ code for MIPS32. Update "clo" and "clz" to use 'U' operand
+ specifier. Add 'H' format specifier variants for "mfc1,"
+ "mfc2," "mfc3," "mtc1," "mtc2," and "mtc3" for MIPS32. Update
+ MIPS32 "sdbbp" to use 'B' operand specifier. Add MIPS32
+ "wait" variant which uses 'J' operand specifier.
+
+ * mips-dis.c (set_mips_isa_type): Update to use
+ CPU_UNKNOWN and ISA_* constants. Add bfd_mach_mips32 case.
+ Replace bfd_mach_mips4K with bfd_mach_mips32_4k case.
+ * mips-opc.c (I32): New constant for instructions added in
+ MIPS32.
+ (P4): Delete.
+ (mips_builtin_opcodes) Replace all uses of P4 with I32.
- * mips16-opc.c: Mark branch insns with MIPS16_INSN_BRANCH.
+ * mips-dis.c (set_mips_isa_type): Add cases for
+ bfd_mach_mips5 and bfd_mach_mips64.
+ * mips-opc.c (I64): New definitions.
-Wed Dec 16 16:17:49 1998 Dave Brolley <brolley@cygnus.com>
+ * mips-dis.c (set_mips_isa_type): Add case for
+ bfd_mach_mips_sb1.
- * fr30-opc.c: Regenerated.
+2000-11-28 Hans-Peter Nilsson <hp@bitrange.com>
-1998-12-16 Gavin Romig-Koch <gavin@cygnus.com>
+ * sh-dis.c (print_insn_ddt): Make insn_x, insn_y unsigned.
+ (print_insn_ppi): Make nib1, nib2, nib3 unsigned.
+ Initialize variable dc to NULL.
+ (print_insn_shx): Remove unused label d_reg_n.
- * mips-dis.c (set_mips_isa_type): Handle bfd_mach_mips4111.
+2000-11-24 Nick Clifton <nickc@redhat.com>
-1998-12-15 Dave Brolley <brolley@cygnus.com>
+ * arm-opc.h: Add new opcode formatting parameter 'B'.
+ (arm_opcodes): Add XScale, v5, and v5te instructions.
+ (thumb_opcodes): Add v5t instructions.
- * fr30-opc.c,fr30-opc.h: Regenerated.
+ * arm-dis.c (print_insn_arm): Handle new 'B' format
+ parameter.
+ (print_insn_thumb): Decode BLX(1) instruction.
-1998-12-14 Dave Brolley <brolley@cygnus.com>
+2000-11-21 Chris Demetriou <cgd@sibyte.com>
- * fr30-opc.c,fr30-opc.h: Regenerated.
+ * mips-opc.c: Fix file header comment.
-Thu Dec 10 18:39:46 1998 Dave Brolley <brolley@cygnus.com>
+2000-11-14 Hans-Peter Nilsson <hp@axis.com>
- * fr30-opc.c,fr30-opc.h: Regenerated.
+ * cris-dis.c (cris_get_disassembler): If abfd is NULL, return
+ print_insn_cris_with_register_prefix.
-Thu Dec 10 12:49:24 1998 Doug Evans <devans@canuck.cygnus.com>
+2000-11-11 Alexandre Oliva <aoliva@redhat.com>
- * m32r-opc.c: Regenerate.
+ * sh-opc.h: The operand of `mov.w r0, (<disp>,GBR)' is IMM1, not 0.
-Tue Dec 8 13:56:18 1998 David Taylor <taylor@texas.cygnus.com>
+2000-11-07 Matthew Green <mrg@redhat.com>
- * dis-buf.c (generic_strcat_address): reformat to GNU coding
- conventions. change sprintf call to an sprintf_vma call.
+ * cgen-dis.in (print_insn): All insns which can fit into insn_value
+ must be loaded there in their entirety.
-Tue Dec 8 13:12:44 1998 Dave Brolley <brolley@cygnus.com>
+2000-10-20 Jakub Jelinek <jakub@redhat.com>
- * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerated.
+ * sparc-dis.c (v9a_asr_reg_names): Add v9b ASRs.
+ (compute_arch_mask): Add v8plusb and v9b machines.
+ (print_insn_sparc): siam mode decoding, accept ASRs up to 25.
+ * opcodes/sparc-opc.c: Support for Cheetah instruction set.
+ (prefetch_table): Add #invalidate.
-Tue Dec 8 10:50:46 1998 David Taylor <taylor@texas.cygnus.com>
+2000-10-16 Nick Clifton <nickc@redhat.com>
- The following changes were made by
- Elena Zannoni <ezannoni@kwikemart.cygnus.com>,
- David Taylor <taylor@texas.cygnus.com>, and
- Edith Epstein <eepstein@sophia.cygnus.com> as part of a project to
- merge in changes by HP; HP did not create ChangeLog entries.
+ * mcore-dis.c (imsk): Change mask for OC to 0xFE00.
- * dis-buf.c (generic_strcat_address): new function.
+2000-10-06 Dave Brolley <brolley@redhat.com>
- * hppa-dis.c: Changes to improve hppa disassembly.
- Changed formatting in : reg_names, fp_reg_names,control_reg,
- New variables : sign_extension_names, deposit_names, conversion_names
- float_test_names, compare_cond_names_double, add_cond_names_double,
- logical_cond_names_double, unit_cond_names_double,
- branch_push_pop_names, saturation_names, shift_names, mix_names,
- New Macros : GET_COMPL_O, GET_PUSH_POP,MERGED_REG
- Move some definitions to libhppa.h: GET_FIELD, GET_BIT
- (fput_const): renamed as fput_hex_const
- (print_insn_hppa):
- - use the macros fputs_filtered and
- fput_decimal_const whenever possible; calls to sign_extend require
- 2 params -- add a missing second param of 0.
- - Some new code ifdefed for LOCAL_ONLY, all related to figuring out
- architecture version number of current machine. HP folks are
- trying to handle situation where the target program was compiled
- for PA 1.x (32-bit), but is running on a PA 2.0 machine and
- visa versa.
- - added new cases : 'g', 'B', 'm'
- - added cases specifically for PA 2.0
- - changed the following cases : '"', 'n', 'N', 'p', 'Z',
- - calls to fput_const become calls to fput_hex_const
+ * fr30-desc.h: Regenerate.
+ * m32r-desc.h: Regenerate.
+ * m32r-ibld.c: Regenerate.
-1998-12-07 James E Wilson <wilson@wilson-pc.cygnus.com>
+2000-10-05 Jim Wilson <wilson@redhat.com>
- * Makefile.am (CFILES): Add i960c-asm, i960c-dis.c, i960c-opc.c.
- (ALL_MACHINES): Add i960c-asm.lo, i960c-dis.lo, i960-opc.lo.
- (i960-asm.lo, i960c-dis.lo, i960c-opc.lo): New Makefile rules.
- * Makefile.in: Rebuilt.
- * configure.in (bfd_i960_arch): Add i960c-opc.lo, i960-asm.o,
- i960-dis.c to ta.
- * i960-dis.c (print_insn_i960): Rename to print_insn_i960_orig.
- * i960c-asm.c, i960c-dis.c, i960c-opc.c, i960c-opc.h: New files.
+ * ia64-ic.tbl: Update from Intel.
+ * ia64-asmtab.c: Regenerate.
-Mon Dec 7 14:33:44 1998 Dave Brolley <brolley@cygnus.com>
-
- * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerated.
-
-Sun Dec 6 14:06:48 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-opc.c (mips_builtin_opcodes): Add dmfc2 and dmtc2.
-
- * ppc-opc.c (powerpc_opcodes): Add PowerPC403 GC[X] instructions.
- From Saitoh Masanobu <msaitoh@spa.is.uec.ac.jp>.
-
-Fri Dec 4 17:45:51 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * fr30-opc.c: Regenerate.
-
-Fri Dec 4 17:08:08 1998 Dave Brolley <brolley@cygnus.com>
-
- * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerated.
-
-Thu Dec 3 14:26:20 1998 Dave Brolley <brolley@cygnus.com>
-
- * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerated.
-
-Thu Dec 3 00:09:17 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerate.
+2000-10-04 Kazu Hirata <kazu@hxi.com>
+
+ * ia64-gen.c: Convert C++-style comments to C-style comments.
+ * tic54x-dis.c: Likewise.
+
+2000-09-29 Hans-Peter Nilsson <hp@axis.com>
+
+ Changes to add dollar prefix to registers for files where user symbols
+ don't have a leading underscore. Fix formatting.
+ * cris-dis.c (REGISTER_PREFIX_CHAR): New.
+ (format_reg): Add parameter with_reg_prefix. All callers changed.
+ (print_with_operands): Ditto.
+ (print_insn_cris_generic): Renamed from print_insn_cris, add
+ parameter with_reg_prefix.
+ (print_insn_cris_with_register_prefix,
+ print_insn_cris_without_register_prefix, cris_get_disassembler):
+ New.
+ * disassemble.c (disassembler) [ARCH_cris]: Call cris_get_disassembler.
+
+2000-09-22 Jim Wilson <wilson@redhat.com>
+
+ * ia64-opc-f.c (ia64_opcodes_f): Add fpcmp pseudo-ops for
+ gt, ge, ngt, and nge.
+ * ia64-asmtab.c: Regenerate.
+
+ * ia64-dis.c (print_insn_ia64): Revert Aug 7 byte skip count change.
+ * ia64-gen.c (parse_semantics): Handle IA64_DVS_STOP.
+ (lookup_specifier): Handle "PR%, 1 to 15" and "PR%, 16 to 62".
+ * ia64-ic.tbl, ia64-raw.tbl, ia64-war.tbl, ia64-waw.tbl: Update.
+ * ia64-asmtab.c: Regnerate.
+
+2000-09-13 Anders Norlander <anorland@acc.umu.se>
+
+ * mips-opc.c (mips_builtin_opcodes): Support cache instruction on 4K cores.
+ Add mfc0 and mtc0 with sub-selection values.
+ Add clo and clz opcodes.
+ Add msub and msubu instructions for MIPS32.
+ Add madd/maddu aliases for mad/madu for MIPS32.
+ Support wait, deret, eret, movn, pref for MIPS32.
+ Support tlbp, tlbr, tlbwi, tlbwr.
+ (P4): New define.
+
+ * mips-dis.c (print_insn_arg): Print sdbbp 'm' args.
+ (print_insn_arg): Handle 'H' args.
+ (set_mips_isa_type): Recognize 4K.
+ Use CPU_* defines instead of hardcoded numbers.
+
+2000-09-11 Catherine Moore <clm@redhat.com>
+
+ * d30v-opc.c (d30v_operand_t): New operand type Rb2.
+ (d30v_format_tab): Use Rb2 for modinc and moddec.
+
+2000-09-07 Catherine Moore <clm@redhat.com>
+
+ * d30v-opc.c (d30v_format_tab): Use format Ra for
+ modinc and moddec.
+
+2000-09-06 Alexandre Oliva <aoliva@redhat.com>
+
+ * configure: Rebuilt with new libtool.m4.
+
+2000-09-05 Nick Clifton <nickc@redhat.com>
-1998-11-30 Doug Evans <devans@casey.cygnus.com>
+ * configure: Regenerate.
+ * po/opcodes.pot: Regenerate.
+
+2000-08-31 Alexandre Oliva <aoliva@redhat.com>
- * cgen-dis.c (hash_insn_array): CGEN_INSN_VALUE ->
- CGEN_INSN_BASE_VALUE.
- * m32r-opc.c,m32r-opc.h,m32r-asm.c,m32r-dis.c: Regenerate.
- * fr30-opc.c,fr30-opc.h,fr30-asm.c,fr30-dis.c: Regenerate.
+ * acinclude.m4: Include libtool and gettext macros from the
+ top level.
+ * aclocal.m4, configure: Rebuilt.
-Thu Nov 26 11:26:32 1998 Dave Brolley <brolley@cygnus.com>
+2000-08-30 Kazu Hirata <kazu@hxi.com>
- * fr30-asm.c,fr30-dis.c,fr30-opc.c: Regenerated.
+ * tic80-dis.c: Fix formatting.
-Tue Nov 24 11:20:54 1998 Dave Brolley <brolley@cygnus.com>
+2000-08-29 Kazu Hirata <kazu@hxi.com>
- * fr30-asm.c,fr30-dis.c: Regenerated.
+ * w65-dis.c: Fix formatting.
-Mon Nov 23 18:28:48 1998 Dave Brolley <brolley@cygnus.com>
+2000-08-28 Mark Hatle <mhatle@mvista.com>
- * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerated.
+ * ppc-opc.c: Add XTLB macro for a few PPC 4xx extended mnemonics.
+ (powerpc_opcodes): Add table entries for PPC 405 instructions.
+ Changed rfci, icbt, mfdcr, dccci, mtdcr, iccci from PPC to PPC403
+ instructions. Added extended mnemonic mftbl as defined in the
+ 405GP manual for all PPCs.
-1998-11-20 Doug Evans <devans@tobor.to.cygnus.com>
+2000-08-28 Jim Wilson <wilson@redhat.com>
- * fr30-opc.c: Regenerated.
+ * ia64-dis.c (print_insn_ia64): Add failed label after ia64_free_opcode
+ call. Change last goto to use failed instead of done.
-Thu Nov 19 16:02:46 1998 Dave Brolley <brolley@cygnus.com>
+2000-08-28 Dave Brolley <brolley@redhat.com>
- * fr30-opc.c: Regenerated.
- * fr30-opc.h: Regenerated.
- * fr30-dis.c: Regenerated.
+ * cgen-ibld.in (cgen_put_insn_int_value): New function.
+ (insert_normal): Allow for non-zero word_offset with CGEN_INT_INSN_P.
+ (insert_insn_normal): Use cgen_put_insn_int_value with CGEN_INT_INSN_P.
+ (extract_normal): Allow for non-zero word_offset with CGEN_INT_INSN_P.
+ * cgen-dis.in (read_insn): New static function.
+ (print_insn): Use read_insn to read the insn into the buffer and set
+ up for disassembly.
+ (print_insn): in CGEN_INT_INSN_P, make sure that the entire insn is
+ in the buffer.
* fr30-asm.c: Regenerated.
-
-Thu Nov 19 07:54:15 1998 Doug Evans <devans@charmed.cygnus.com>
-
- * mips-opc.c (sync.p,sync.l): Swap insn values.
-
-1998-11-19 Doug Evans <devans@tobor.to.cygnus.com>
-
- * fr30-opc.c: Regenerate.
-
-Wed Nov 18 21:36:37 1998 Dave Brolley <brolley@cygnus.com>
-
- * fr30-opc.c: Regenerated.
- * fr30-opc.h: Regenerated.
-
-1998-11-18 Doug Evans <devans@casey.cygnus.com>
-
- * m32r-asm.c,m32r-dis.c,m32r-opc.c: Rebuild.
- * fr30-asm.c,fr30-dis.c,fr30-opc.c: Rebuild.
-
-Wed Nov 18 11:30:04 1998 Dave Brolley <brolley@cygnus.com>
-
- * fr30-opc.c: Regenerated.
-
-Mon Nov 16 19:21:48 1998 Dave Brolley <brolley@cygnus.com>
-
- * fr30-opc.c: Regenerated.
- * fr30-opc.h: Regenerated.
+ * fr30-desc.c: Regenerated.
+ * fr30-desc.h Regenerated.
* fr30-dis.c: Regenerated.
- * fr30-asm.c: Regenerated.
-
-Thu Nov 12 19:24:18 1998 Dave Brolley <brolley@cygnus.com>
-
- * po/opcodes.pot: Regenerated.
+ * fr30-ibld.c: Regenerated.
* fr30-opc.c: Regenerated.
- * fr30-opc.h: Regenerated.
- * fr30-dis.c: Regenerated.
- * fr30-asm.c: Regenerated.
-
-Tue Nov 10 15:26:27 1998 Nick Clifton <nickc@cygnus.com>
-
- * disassemble.c (disassembler): Add support for FR30 target.
-
-Tue Nov 10 11:00:04 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * m32r-dis.c,m32r-opc.c,m32r-opc.h: Rebuild.
- * fr30-dis.c,fr30-opc.c,fr30-opc.h: Rebuild.
-
-Mon Nov 9 18:22:55 1998 Dave Brolley <brolley@cygnus.com>
-
- * po/opcodes.pot: Regenerate.
- * po/POTFILES.in: Regenerate.
- * fr30-opc.c: Regenerate.
- * fr30-opc.h: Regenerate.
-
-Fri Nov 6 17:21:38 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * m32r-asm.c: Regenerate.
-
-Wed Nov 4 18:46:47 1998 Dave Brolley <brolley@cygnus.com>
-
- * configure.in: Added case for bfd_fr30_arch.
- * Makefile.am (CFILES): Added fr30-asm.c, fr30-dis.c, fr30-opc.c.
- (ALL_MACHINES): Added fr30-asm.lo, fr30-dis.lo, fr30-opc.lo.
- (CLEANFILES): Added stamp-fr30.
- (FR30_DEPS): Added.
- * fr30-asm.c: New file.
- * fr30-dis.c: New file.
- * fr30-opc.c: New file.
- * fr30-opc.h: New file.
- * po/POTFILES.in: Regenerated
- * po/opcodes.pot: Regenerated
-
-Mon Nov 2 15:05:33 1998 Geoffrey Noer <noer@cygnus.com>
-
- * configure.in: detect cygwin* instead of cygwin32*
- * configure: regenerate
-
-Tue Oct 27 08:58:37 1998 Gavin Romig-Koch <gavin@cygnus.com>
-
- * mips-opc.c (IS_M): Added.
-
-Mon Oct 19 13:03:19 1998 Doug Evans <devans@seba.cygnus.com>
-
- * m32r-opc.c,m32r-opc.h,m32r-asm.c,m32r-dis.c: Regenerate.
-
-Fri Oct 9 14:01:56 1998 Doug Evans <devans@seba.cygnus.com>
-
- * m32r-opc.h,m32r-opc.c: Regenerate.
-
-Sun Oct 4 21:01:44 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386-dis.c (OP_3DNowSuffix): New static function.
- (OPSUF): Define.
- (GRP14): Define.
- (dis386_twobyte): Add GRP14, femms, and 3DNow entries.
- (twobyte_has_modrm): Set entries corresponding to GRP14, 3DNow.
- (insn_codep): New static variable.
- (print_insn_x86): Init insn_codep after prefixes.
- (grps): Add GRP14 entries for prefetch, prefetchw.
- (OP_REG): Reformat.
-
- From Jeff B Epler <jepler@usgs.gov>
- * i386-dis.c (Suffix3DNow): New table.
-
-Wed Sep 30 10:17:50 1998 Nick Clifton <nickc@cygnus.com>
-
- * d10v-opc.c: Treat TRAP as if it were a branch type instruction.
-
-Mon Sep 28 14:35:43 1998 Martin M. Hunt <hunt@cygnus.com>
-
- * d10v-dis.c (print_operand): If num is nonzero, then
- add OPERAND_ACC1, not OPERAND_ACC0.
-
-Thu Sep 24 09:20:03 1998 Nick Clifton <nickc@cygnus.com>
-
- * d30v-opc.c: Add FLAG_JSR attribute to DBT, REIT, RTD, and TRAP
- insns.
-
-Tue Sep 22 17:55:14 1998 Nick Clifton <nickc@cygnus.com>
-
- * d30v-opc.c: Add use of EITHER_BUT_PREFER_MU execution unit
- class.
-
-Tue Sep 15 15:14:45 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * m32r-opc.h,m32r-opc.c: Add bbpc,bbpsw support.
-
-1998-09-09 Michael Meissner <meissner@cygnus.com>
-
- * ppc-opc.c (powerpc_opcodes): Add support for PowerPC 750 move
- to/from SPRs.
-
-Fri Sep 4 19:42:59 1998 Nick Clifton <nickc@cygnus.com>
-
- * arm-dis.c (print_insn_big_arm): Detect Thumb symbols in elf
- object files.
- (print_insn_little_arm): Detect Thumb symbols in elf object
- files.
-
-Sat Aug 29 22:24:09 1998 Richard Henderson <rth@cygnus.com>
-
- * alpha-dis.c (print_insn_alpha): Use the machine type to
- decide which PALcode set to include.
-
-Sun Aug 23 02:16:18 1998 Richard Henderson <rth@cygnus.com>
-
- * sparc-opc.c (FBRX): Fix typo in ",a,pn %fcc3" case.
-
-Fri Aug 21 16:07:52 1998 Nick Clifton <nickc@cygnus.com>
-
- * d30v-opc.c (d30v_opcode_table): Add FLAG_MUL32 to MAC, MACS,
- MSUB and MSUBS instructions.
-
-Thu Aug 13 16:23:04 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * ppc-opc.c (powerpc_operands): Omit parens around additions in
- operand name macros.
-
-Wed Aug 12 14:00:38 1998 Ian Lance Taylor <ian@cygnus.com>
-
- From Peter Jeremy <peter.jeremy@auss2.alcatel.com.au>:
- * m68k-opc.c: Correct mulsl and mulul to use q rather than D, a,
- +, -, and d for ColdFire.
-
- From Peter Thiemann <thiemann@informatik.uni-tuebingen.de>:
- * ppc-opc.c (insert_mbe): Handle wrapping bitmasks.
- (extract_mbe): Likewise.
-
-Wed Aug 12 11:11:34 1998 Jeffrey A Law (law@cygnus.com)
-
- * m10300-opc.c: Fix typo in udf20 .. udf25 instruction opcodes.
-
- * m10300-opc.c: First cut at UDF instructions.
-
-Mon Aug 10 14:08:22 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * m32r-opc.c: Regenerate (remove semantic descriptions).
-
-Mon Aug 10 12:51:12 1998 Catherine Moore <clm@cygnus.com>
-
- * arm-dis.c (print_insn_big_arm): Fix indentation.
- (print_insn_little_arm): Likewise.
-
-Sun Aug 9 20:17:28 1998 Catherine Moore <clm@cygnus.com>
-
- * arm-dis.c (print_insn_big_arm): Check for thumb symbol
- attributes.
- (print_insn_little_arm): Likewise.
-
-Mon Aug 3 12:43:16 1998 Doug Evans <devans@seba.cygnus.com>
-
- Move all global state data into opcode table struct, and treat
- opcode table as something that is "opened/closed".
- * cgen-asm.c (all fns): New first arg of opcode table descriptor.
- (cgen_asm_init): Delete.
- (cgen_set_parse_operand_fn): New function.
- * cgen-dis.c (all fns): New first arg of opcode table descriptor.
- (cgen_dis_init): Delete.
- * cgen-opc.c (all fns): New first arg of opcode table descriptor.
- (cgen_current_{opcode_table_mach,endian}): Delete.
- * m32r-asm.c,m32r-dis.c,m32r-opc.c,m32r-opc.h: Regenerate.
-
-Thu Jul 30 21:41:10 1998 Frank Ch. Eigler <fche@cygnus.com>
-
- * d30v-opc.c (d30v_opcode_table): Add new "LKR" flag to some
- instructions.
-
-Tue Jul 28 11:00:09 1998 Jeffrey A Law (law@cygnus.com)
-
- * m10300-opc.c: Add entries for "no_match_operands" field in
- the opcode table.
-
-Fri Jul 24 11:41:37 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * m32r-asm.c,m32r-opc.c: Regenerate (-Wall cleanups).
-
-Tue Jul 21 13:41:07 1998 Doug Evans <devans@seba.cygnus.com>
-
- * m32r-opc.h,m32r-opc.c,m32r-asm.c,m32r-dis.c: Regenerate.
-
-Mon Jul 13 14:53:59 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386-dis.c (ckprefix): Handle fwait specially only when it isn't
- the first prefix.
- (dofloat): Correct test for fnstsw. Print `fnstsw %ax' rather
- than `fnstsw %eax'.
- (OP_J): Remove unnecessary subtraction when 16-bit displacement
- will be masked later.
-
-Thu Jul 2 17:11:27 1998 Doug Evans <devans@seba.cygnus.com>
-
- * m32r-opc.h (CGEN_MIN_INSN_SIZE): New #define.
-
-Wed Jul 1 16:11:16 1998 Doug Evans <devans@seba.cygnus.com>
-
- * m32r-asm.c,m32r-dis.c,m32r-opc.c,m32r-opc.h: Regenerate.
-
-Fri Jun 26 11:08:55 1998 Jeffrey A Law (law@cygnus.com)
-
- * m10300-dis.c: Only recognize instructions from the currently
- selected machine.
- * m10300-opc.c: Add field indicating the particular variant of
- the mn10300 each instruction is available on.
-
-Fri Jun 26 12:04:21 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: For bfd_vax_arch, build vax-dis.lo.
- * Makefile.am: Rebuild dependencies.
- (CFILES): Add vax-dis.c.
- (ALL_MACHINES): Add vax-dis.lo.
- * aclocal.m4: Rebuild with current libtool.
- * configure, Makefile.in: Rebuild.
-
-Fri Jun 26 12:03:20 1998 Klaus Kaempf <kkaempf@progis.de>
-
- * vax-dis.c: New file, from work by Pauline Middelink
- <middelin@polyware.iaf.nl>.
- * disassemble.c (ARCH_vax): Define if ARCH_all.
- (disassembler): Add case for ARCH_vax.
- * makefile.vms: Support compilation on vms/vax.
-
-Tue Jun 23 19:42:18 1998 Mark Alexander <marka@cygnus.com>
-
- * m10200-dis.c (print_insn_mn10200): Fix various non-portabilities
- related to sign extension and the size of ints.
-
-Tue Jun 23 10:59:26 1998 Jeffrey A Law (law@cygnus.com)
-
- * m10300-opc.c: Support one operand "asr", "lsr" and "asl"
- instructions. Support (sp) addressing mode by expanding it into
- (0,sp).
-
-Sat Jun 20 14:46:20 1998 Frank Ch. Eigler <fche@cygnus.com>
-
- * mips-dis.c (_print_insn_mips): Fix argument interchange typo.
-
-Fri Jun 19 09:16:42 1998 Mark Alexander <marka@cygnus.com>
-
- * m10200-dis.c (print_insn_mn10200): Recognize 'break' pseudo-op.
-
-1998-06-18 Ulrich Drepper <drepper@cygnus.com>
-
- * i386-dis.c: Add support for fxsave, fxrstor, sysenter and
- sysexit.
-
-Thu Jun 18 10:22:24 1998 John Metzler <jmetzler@cygnus.com>
-
- * mips-dis.c (print_insn_little_mips): Previously, instruction
- printing references the symbol table to determine whether the
- instruction resides in a block regular instructions or mips16
- instructions. However, when the disassembler gets used in other
- environments where the symbol table is not present, we no longer
- rely in the symbol table, rather, use the low bit of the
- instructions address to guess. There should be no change for usage
- of the disassembler in host based programs, gdb, objdump.
- (print_insn_big_mips): ditto.
- (print_insn_mips): ditto
-
-Wed Jun 17 21:19:01 1998 Mark Alexander <marka@cygnus.com>
-
- * m10200-dis.c (print_insn_mn10200): Don't bomb on unknown opcodes.
-
-Wed Jun 17 17:49:23 1998 Jeffrey A Law (law@cygnus.com)
+ * fr30-opc.h Regenerated.
+ * m32r-asm.c: Regenerated.
+ * m32r-desc.c: Regenerated.
+ * m32r-desc.h Regenerated.
+ * m32r-dis.c: Regenerated.
+ * m32r-ibld.c: Regenerated.
+ * m32r-opc.c: Regenerated.
- * m10300-opc.c (mn10300_opcodes): Change opcode for "syscall".
+2000-08-28 Kazu Hirata <kazu@hxi.com>
-Tue Jun 16 13:10:51 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * tic30-dis.c: Fix formatting.
- * i386-dis.c (index16): Add '%' to register names. Use ','
- instead of '+'.
+2000-08-27 Kazu Hirata <kazu@hxi.com>
-Sat Jun 13 11:33:55 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * sh-dis.c: Fix formatting.
- * i386-dis.c: Don't print opcode suffix when we can figure out the
- size (and gas can!) by register operands, or from the default
- size.
- (putop): Handle 'A', 'B', 'L', 'P', 'Q', 'R' macros. Rename 'C'
- macro to 'E'.
- (dis386, dis386_twobyte, grps): Use new suffix macros.
- (dis386): Correct imul Ib to imul sIb. Change jnl to jge to be
- consistent. Add suffix for call, jmp, lcall, ljmp, iret. Reverse
- order of cmps operands to agree with Intel docs. Correct operand
- of aad and aam (Ib -> sIb). Change ud2b from 0fb8 to 0fb9 to
- agree with Intel docs.
- (print_insn_x86): Print orphan fwait before other prefixes.
- Return correct byte count for orphan fwait with prefixes. Don't
- print `bound' operands in reverse order.
- (ckprefix): Stop accumulating prefixes if we get fwait.
- (OP_DIR): Print `$' before Ap operands of ljmp, lcall.
+2000-08-24 David Edelsohn <dje@watson.ibm.com>
-Fri Jun 12 13:40:38 1998 Tom Tromey <tromey@cygnus.com>
+ * ppc-opc.c (powerpc_opcodes): Add rfid, mtsrd, mtsrdin, mtmsrd.
- * po/Make-in (all-yes): If maintainer mode, depend on .pot file.
- ($(PACKAGE).pot): Unconditionally depend on POTFILES.
+2000-08-24 Kazu Hirata <kazu@hxi.com>
-Fri Jun 12 11:04:06 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+ * z8k-dis.c: Fix formatting.
- Fix problems when bfd_vma is wider than long.
- * i386-dis.c: Make op_address and start_pc unsigned.
- (set_op): Make parameter unsigned.
- (print_insn_x86): Cast to bfd_vma when passing a value to
- print_address_func.
- * ns32k-dis.c (CORE_ADDR): Don't define.
- (print_insn_ns32k): Change type of addr to bfd_vma. Use
- bfd_scan_vma to read back address.
- (print_insn_arg): Change type of addr to bfd_vma. Use sprintf_vma
- to format it.
- * m68k-dis.c (COERCE32): Cast to bfd_signed_vma to avoid overflow.
- (NEXTULONG): New definition.
- (print_insn_m68k): Avoid overflow when computing third argument of
- print_insn_arg.
- (print_insn_arg): Use NEXTULONG to fetch 32 bit address values.
- Use disp instead of val to store offset values.
- (print_indexed): Use base_disp instead of word to store base
- displacement, to avoid overflow.
- * m10300-dis.c (disassemble): Cast value to long when computing
- pc-relative address, to get correct sign extension.
+2000-08-16 Jim Wilson <wilson@redhat.com>
-Wed Jun 10 15:58:37 1998 Doug Evans <devans@canuck.cygnus.com>
+ * ia64-ic.tbl (pr-readers-nobr-nomovpr): Add addl, adds. Delete
+ break, mov-immediate, nop.
+ * ia64-opc-f.c: Delete fpsub instructions.
+ * ia64-opc-m.c: Add POSTINC to all instructions with postincrement
+ address operand. Rewrite using macros to avoid long lines.
+ * ia64-opc.h (POSTINC): Define.
+ * ia64-asmtab.c: Regenerate.
- * m32r-opc.c: Regenerate.
+2000-08-15 Jim Wilson <wilson@redhat.com>
-Tue Jun 9 14:27:57 1998 Nick Clifton <nickc@cygnus.com>
+ * ia64-ic.tbl: Add missing entries.
- * arm-opc.h (thumb_opcodes): Display 'add rx, rY, #0' insns as
- 'mov rX, rY'. Patch courtesy of Tony Thompson <Tony.Thompson@arm.com>
+2000-08-08 Jason Eckhardt <jle@redhat.com>
-Mon Jun 8 18:17:21 1998 Nick Clifton <nickc@cygnus.com>
+ * i860-dis.c (print_br_address): Change third argument from int
+ to long.
- * d30v-opc.c: Remove FALG_MUL32 attribyte from MULX2H insn.
+2000-08-07 Richard Henderson <rth@redhat.com>
-Fri Jun 5 23:47:55 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+ * ia64-dis.c (print_insn_ia64): Get byte skip count correct
+ for MLI templates. Handle IA64_OPND_TGT64.
- * i386-dis.c: Combine aflag and dflag into sizeflag. Change OP_*
- functions to void.
- (OP_DSreg): Rename from OP_DSSI.
- (OP_ESreg): Rename from OP_ESDI.
- (Xb, Xv, Yb, Yv): Use index reg code, not b_mode or v_mode.
- (DSBX): Define.
- (append_seg): Rename from append_prefix.
- (ptr_reg): New function.
- (dis386): Add S suffix to pushf, popf, ret, lret, enter, leave.
- Add DSBX for xlat.
- (PREFIX_ADDR): Rename from PREFIX_ADR.
- (float_reg): Add non-broken opcodes for people who don't want
- UNIXWARE_COMPAT.
+2000-08-04 Ben Elliston <bje@redhat.com>
-Fri Jun 5 19:15:04 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+ * cgen-dis.in, cgen-asm.in, cgen-ibld.in: New files.
+ * cgen.sh: Likewise.
- * m68k-opc.c (tstb, tstw, tstl): Don't allow pcrel on
- 68000/68008/68010.
-
-Wed Jun 3 18:56:22 1998 H.J. Lu <hjl@gnu.org>
-
- * i386-dis.c (dis386): Change 0x60 to "pushaS", 0x61 to "popaS".
-
-Tue Jun 2 15:06:46 1998 Geoff Keating <geoffk@ozemail.com.au>
-
- * ppc-opc.c (powerpc_macros): Support shifts and rotates of size
- 0; produce error message for shifts of size 32 (or 64 for 64-bit
- shifts), because the hardware doesn't support them.
-
-Wed May 27 15:29:13 1998 Nick Clifton <nickc@cygnus.com>
-
- * d30v-opc.c: Add new operand: Ra3. Change SHORT_B3, SHORT_B3b,
- LONG_2, LONG_2b formats to use this new operand.
-
-Tue May 26 20:47:48 1998 Stan Cox <scox@cygnus.com>
-
- * sparc-dis.c (compute_arch_mask): Added bfd_mach_sparc_sparclite_le.
-
-Tue May 26 20:45:33 1998 Mark Alexander <marka@cygnus.com>
-
- * sparc-dis.c (print_insn_sparc): big endian instruction / little
- endian data support.
-
-Tue May 26 16:14:39 1998 Nick Clifton <nickc@cygnus.com>
-
- * d30v-opc.c (d30v_format_table): Change definition of SHORT_B3
- and SHORT_B3b formats to use Rb instead of Ra.
-
- Add FLAG_MUL16 to MUL2XH opcode.
-
- Add FLAG_ADDSUBppp to SRC and SATHp opcodes to implement extension
- to existing 1.1.1 parallelisation prohibition procedure.
-
-Fri May 22 16:00:00 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * m32r-asm.c,m32r-dis.c: Regenerate.
-
-Tue May 19 17:36:08 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-dis.c (print_mips16_insn_arg): Handle type ']' correctly
- with a shift count of 0.
-
-Fri May 15 14:58:31 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen-opc.c (cgen_hw_lookup_by_name): Renamed from cgen_hw_lookup.
- (cgen_hw_lookup_by_num): New function.
-
-Wed May 13 17:03:59 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * m32r-asm.c: Regenerate (handle uppercase HIGH/SHIGH/LOW/SDA).
-
-Wed May 13 14:34:31 1998 Mark Alexander <marka@cygnus.com>
-
- * sparc-dis.c (print_insn_sparc): Always fetch instructions
- as big-endian on SPARClite.
-
-Tue May 12 11:46:31 1998 Richard Henderson <rth@cygnus.com>
-
- * d30v-opc.c (pre_defined_register): Remove alias for r0.
-
-Sun May 10 22:37:22 1998 Jeffrey A Law (law@cygnus.com)
-
- * po/Make-in (install-info): New target.
-
-Thu May 7 17:15:59 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in (WIN32LIBADD): Add -lintl on cygwin32.
- * configure: Rebuild.
-
-Thu May 7 12:49:46 1998 Frank Ch. Eigler <fche@cygnus.com>
-
- * mips-opc.c (teq,tge,tgeu,tlt,tltu,tne): Added three-operand
- variety of ISA2 instructions to set bottom ten bits of trap code.
+2000-08-02 Jim Wilson <wilson@redhat.com>
+
+ * ia64-dis.c (print_insn_ia64): Call ia64_free_opcode at end.
-Thu May 7 11:54:25 1998 Ian Lance Taylor <ian@cygnus.com>
+2000-07-29 Marek Michalkiewicz <marekm@linux.org.pl>
- * Makefile.am (config.status): Add explicit target so that
- config.status depends upon bfd/configure.in.
- * Makefile.in: Rebuild.
+ * avr-dis.c (avr_operand): Use PARAMS macro in declaration.
+ Change return type from void to int. Check the combination
+ of operands, return 1 if valid. Fix to avoid BUF overflow.
+ Report undefined combinations of operands in COMMENT.
+ Report internal errors to stderr. Output the adiw/sbiw
+ constant operand in both decimal and hex.
+ (print_insn_avr): Disassemble ldd/std with displacement of 0
+ as ld/st. Check avr_operand () return value, handle invalid
+ combinations of operands like unknown opcodes.
-Thu May 7 09:33:02 1998 Frank Ch. Eigler <fche@cygnus.com>
+2000-07-28 Ben Elliston <bje@redhat.com>
- * mips-opc.c (break, sdbbp): Added two-operand variety of ISA1
- instructions to set bottom ten bits of break code.
- * mips-dis.c (print_insn_arg): Implement 'q' operand format used
- for above optional argument.
+ * Makefile.am (CGEN, CGENDEPS, CGENDIR, CGENFLAGS): New.
+ (run-cgen, stamp-m32r, stamp-fr30): New targets.
+ * Makefile.in: Regenerate.
+ * configure.in: Add --enable-cgen-maint option.
+ * configure: Regenerate.
-Wed May 6 15:30:06 1998 Klaus Kaempf <kkaempf@progis.de>
+2000-07-26 Dave Brolley <brolley@redhat.com>
- * makefile.vms: Run dec c with /nodebug.
+ * cgen-opc.c (cgen_hw_lookup_by_name): 'i' is now unsigned.
+ (cgen_hw_lookup_by_num): Ditto.
+ (cgen_operand_lookup_by_name): Ditto.
+ (print_address): Ditto.
+ (print_keyword): Ditto.
+ * cgen-dis.c (hash_insn_array): Mark unused parameters with
+ ATTRIBUTE_UNUSED.
+ * cgen-asm.c (hash_insn_array): Mark unused parameters with
+ ATTRIBUTE_UNUSED.
+ (cgen_parse_keyword): Ditto.
-Mon May 4 10:19:57 1998 Tom Tromey <tromey@cygnus.com>
+2000-07-22 Jason Eckhardt <jle@redhat.com>
- * Makefile.in: Rebuilt.
- * Makefile.am: Regenerated dependencies with mkdep.
+ * i860-dis.c: New file.
+ (print_insn_i860): New function.
+ (print_br_address): New function.
+ (sign_extend): New function.
+ (BITWISE_OP): New macro.
+ (I860_REG_PREFIX): New macro.
+ (grnames, frnames, crnames): New structures.
- * opintl.h (_): Define as dgettext.
+ * disassemble.c (ARCH_i860): Define.
+ (disassembler): Add check for bfd_arch_i860 to set disassemble
+ function to print_insn_i860.
-Tue Apr 28 14:12:12 1998 Nick Clifton <nickc@cygnus.com>
+ * Makefile.in (CFILES): Added i860-dis.c.
+ (ALL_MACHINES): Added i860-dis.lo.
+ (i860-dis.lo): New dependences.
- * cgen-asm.c: Internationalised.
- * m32r-asm.c: Internationalised.
- * m32r-dis.c: Internationalised.
- * m32r-opc.c: Internationalised.
+ * configure.in: New bits for bfd_i860_arch.
- * aclocal.m4: Regenerated.
* configure: Regenerated.
- * Makefile.am (POTFILES): Remove inclusion of BFD_H.
- * Makefile.in: Rebuild.
- * po/POTFILES.in: Rebuilt using rule in Makefile.in.
- * po/opcodes.pot: Rebuilt after changing POTFILES.in.
-
-Tue Apr 28 13:13:13 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Call AC_ISC_POSIX near start. Move CY_GNU_GETTEXT
- after AC_PROG_CC.
- * aclocal.m4, configure: Rebuild with current tools.
-
-Mon Apr 27 14:31:00 1998 Nick Clifton <nickc@cygnus.com>
-
- * opintl.h: New file - contains internationalisation macros used
- by source files in this directory.
- * po/: New subdirectory - contains internationalisation files.
- * po/Make-in: New file - Makefile constructor.
- * po/POTFILES.in: New file - list of files in opcodes directory
- that should be scan for internationalisation macros.
- * po/opcodes.pot: New file - list of internationisation strings
- found in files mentioned in po/POTFILES.in.
- * Makefile.am: Add rule to build po/POTFILES.in. Add SUBDIRS
- entry. Add intl directory to include paths.
- * acconfig.h: Add ENABLE_NLS, HAVE_CATGETS, HAVE_GETEXT,
- HAVE_STRCPY, HAVE_LC_MESSAGES
- * configure.in: Add rule to build Makefile in po subdirectory.
- * Makefile.in: Rebuilt.
- * aclocal.m4: Rebuilt.
- * config.in: Rebuilt.
- * configure: Rebuilt.
- * alpha-opc.c: Internationalised.
- * arc-dis.c: Internationalised.
- * arc-opc.c: Internationalised.
- * arm-dis.c: Internationalised.
- * cgen-asm.c: Internationalised.
- * d30v-dis.c: Internationalised.
- * dis-buf.c: Internationalised.
- * h8300-dis.c: Internationalised.
- * h8500-dis.c: Internationalised.
- * i386-dis.c: Internationalised.
- * m10200-dis.c: Internationalised.
- * m10300-dis.c: Internationalised.
- * m68k-dis.c: Internationalised.
- * m88k-dis.c: Internationalised.
- * mips-dis.c: Internationalised.
- * ns32k-dis.c: Internationalised.
- * opintl.h: Internationalised.
- * ppc-opc.c: Internationalised.
- * sparc-dis.c: Internationalised.
- * v850-dis.c: Internationalised.
- * v850-opc.c: Internationalised.
-
-Mon Apr 27 10:33:56 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen-asm.c (cgen_current_opcode_table): Renamed from ..._data.
- (asm_hash_table_entries): New variable.
- (cgen_asm_init): Free asm_hash_table_entries.
- (hash_insn_array,hash_insn_list): New functions.
- (build_asm_hash_table): Use them. Hash macro insns as well.
- (cgen_asm_lookup_insn): Update.
- * cgen_dis.c (cgen_current_opcode_table): Renamed from ..._data.
- (dis_hash_table_entries): New variable.
- (cgen_dis_init): Free dis_hash_table_entries.
- (hash_insn_array,hash_insn_list): New functions.
- (build_dis_hash_table): Use them. Hash macro insns as well.
- (cgen_dis_lookup_insn): Update.
- * cgen-opc.c (cgen_current_opcode_table): Renamed from ..._data.
- (cgen_set_cpu,cgen_hw_lookup,cgen_insn_count): Update.
- (cgen_macro_insn_count): New function.
- * m32r-opc.h,m32r-opc.c,m32r-asm.c,m32r-dis.c: Regenerate.
-
-Fri Apr 24 16:07:57 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386-dis.c (OP_DSSI): Print segment override.
-
-Mon Apr 13 16:59:39 1998 Nick Clifton <nickc@cygnus.com>
-
- * arm-dis.c (print_insn_arm): Add "_all" extension to 'C'
- operator.
-
-Mon Apr 13 16:50:27 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (libopcodes_la_LIBADD): Add @WIN32LIBADD@.
- (libopcodes_la_LDFLAGS): Add @WIN32LDFLAGS@.
- * configure.in: Define and substitute WIN32LDFLAGS and
- WIN32LIBADD.
- * aclocal.m4: Rebuild with new libtool.
- * configure, Makefile.in: Rebuild.
-
-Fri Apr 10 18:14:31 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * m32r-opc.c: Regenerate.
-
-Sun Apr 5 16:04:39 1998 H.J. Lu <hjl@gnu.org>
-
- * Makefile.am (stamp-lib): Check that .libs/libopcodes.a exists
- before trying to copy it.
- * Makefile.in: Rebuild.
-
-Thu Apr 2 17:25:49 1998 Nick Clifton <nickc@cygnus.com>
-
- * m32r-opc.c: Use signed immediate values for CMPUI instruction.
-
-Wed Apr 1 16:20:27 1998 Ian Dall <Ian.Dall@dsto.defence.gov.au>
-
- * ns32k-dis.c (bit_extract_simple): New function to extract bits
- from an arbitrary valid buffer instead of fetching them on demand
- using fetch_data().
- (invalid_float): use bit_extract_simple() instead of bit_extract().
-
-Tue Mar 31 11:09:08 1998 Ian Lance Taylor <ian@cygnus.com>
-
- From H.J. Lu <hjl@gnu.org>:
- * i386-dis.c (dis386): Change 0x8c and 0x8e to movS, and change Ew
- to Ev for both.
-
-Mon Mar 30 17:32:03 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Branched binutils 2.9.
-
-Mon Mar 30 15:18:00 1998 Ken Raeburn <raeburn@cygnus.com>
-
- * d30v-dis.c (print_insn_d30v): Don't use uninitialized "num" when
- disassembling last 4 bytes of a section.
-
-Fri Mar 27 18:08:13 1998 Ian Lance Taylor <ian@cygnus.com>
-
- Fix some gcc -Wall warnings:
- * arc-dis.c (print_insn): Add casts to avoid warnings.
- * cgen-opc.c (cgen_keyword_lookup_name): Likewise.
- * d10v-dis.c (dis_long, dis_2_short): Likewise.
- * m10200-dis.c (disassemble): Likewise.
- * m10300-dis.c (disassemble): Likewise.
- * ns32k-dis.c (print_insn_ns32k): Likewise.
- * ppc-opc.c (insert_ral, insert_ram): Likewise.
- * cgen-dis.c (build_dis_hash_table): Remove used local variables.
- * cgen-opc.c (cgen_keyword_search_next): Likewise.
- * d10v-dis.c (dis_long, dis_2_short): Likewise.
- * d30v-dis.c (print_insn_d30v, lookup_opcode): Likewise.
- * ns32k-dis.c (bit_extract, print_insn_ns32k): Likewise.
- * tic80-dis.c (print_one_instruction): Likewise.
- * w65-dis.c (print_operand): Likewise.
- * z8k-dis.c (fetch_data): Likewise.
- * a29k-dis.c: Add return type for find_byte_func_type.
- * arc-opc.c: Include <stdio.h>. Remove declarations of
- insert_multshift and extract_multshift.
- * d30v-dis.c (lookup_opcode): Parenthesize assignments in
- conditionals.
- (extract_value): Fully parenthesize expression.
- * h8500-dis.c (print_insn_h8500): Initialize local variables.
- * h8500-opc.h (h8500_table): Fully bracket initializer.
- * w65-opc.h (optable): Likewise.
- * i386-dis.c (print_insn_x86): Declare aflag and flag parameters.
- * i386-dis.c (OP_E): Initialize local variables.
- * m10200-dis.c (print_insn_mn10200): Likewise.
- * mips-dis.c (print_insn_mips16): Likewise.
- * sh-dis.c (print_insn_shx): Likewise.
- * v850-dis.c (print_insn_v850): Likewise.
- * ns32k-dis.c (print_insn_arg): Declare.
- (get_displacement, invalid_float): Declare.
- (list_search, sign_extend, flip_bytes): Declare return type.
- (get_displacement): Likewise.
- (print_insn_arg): Likewise. Make d int. Fix sprintf format
- string.
- (print_insn_ns32k): Make i unsigned.
- (invalid_float): Make static. Declare type of val.
- * tic30-dis.c (print_par_insn): Make i size_t. Don't check strlen
- on each for iteration.
- * tic30-dis.c (get_indirect_operand): Likewise.
- * z8k-dis.c (print_insn_z8001): Declare return type.
- (print_insn_z8002): Likewise.
- (unparse_instr): Fix sprintf format strings.
-
-Fri Mar 27 00:05:23 1998 Jeffrey A Law (law@cygnus.com)
-
- * mips-opc.c: Add "sync.l" and "sync.p".
-
-Wed Mar 25 14:32:48 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * m68k-dis.c (print_insn_m68k): Use info->mach to select the
- default m68k variant to recognize.
-
- * i960-dis.c (pinsn): Change type of first argument to bfd_vma.
- (ctrl, cobr, mem, ea): Likewise.
- (print_addr): Likewise. Remove cast.
- (ea): Cast argument of print_addr to bfd_vma.
-
- * cgen-asm.c (cgen_parse_signed_integer): Fix type of local
- variable value.
- (cgen_parse_unsigned_integer): Likewise.
- (cgen_parse_address): Likewise.
-
-Wed Mar 25 14:31:31 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * i960-dis.c (ctrl): Add full braces to structure initialization.
- (cobr, mem, reg): Likewise.
- (ea): Correct parenthesization in expression.
-
- * cgen-asm.c: Include <ctype.h>.
- (build_asm_hash_table): Remove unused local variable i.
- (cgen_parse_keyword): Add casts to avoid warnings.
-
- * arm-dis.c (print_insn_big_arm): Only call coffsymbol for a COFF
- symbol. Fix indentation.
- (print_insn_little_arm): Likewise.
-
-Fri Mar 20 18:55:18 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Use AM_DISABLE_SHARED.
- * aclocal.m4, configure: Rebuild with libtool 1.2.
-
-Thu Mar 19 15:46:53 1998 Nick Clifton <nickc@cygnus.com>
-
- These patches are courtesy of Jonathan Walton and Tony Thompson
- (athompso@cambridge.arm.com).
-
- * arm-dis.c (print_insn_thumb): Ignore bottom two bits of PC
- relative addresses.
-
- * arm-opc.h (thumb_opcodes): Annotate PC relative addresses with
- both the offset and the label closest to the destination.
-
-Sat Mar 14 23:47:14 1998 Doug Evans <devans@seba.cygnus.com>
-
- * m32r-opc.h: Regenerate.
-Wed Mar 4 12:08:14 1998 Doug Evans <devans@canuck.cygnus.com>
+2000-07-20 Hans-Peter Nilsson <hp@axis.com>
- * m32r-opc.h,m32r-opc.c,m32r-asm.c,m32r-dis.c: Regenerate.
-
-Sat Feb 28 16:02:34 1998 Nick Clifton <nickc@cygnus.com>
-
- * arm-dis.c (print_insn_big_arm, print_insn_little_arm): Do not
- assume that info->symbols is non-empty.
-
-Sat Feb 28 12:19:05 1998 Richard Henderson <rth@cygnus.com>
-
- * alpha-opc.c (cvtqs) There is no such thing.
- (cvttq): Missing most of the /*d variants.
-
-Thu Feb 26 15:53:09 1998 Michael Meissner <meissner@cygnus.com>
-
- * d30v-opc.c (d30v_opcode_table): Indicate which instructions are
- delayed branches or jumps.
-
-Tue Feb 24 10:46:44 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * arm-dis.c (print_insn_{big,little}_arm): info->symbol changed
- to *info->symbols.
- * mips-dis.c (print_insn_{big,little}_mips): Likewise.
- * tic30-dis.c (print_branch): Likewise.
-
-Tue Feb 24 11:06:18 1998 Nick Clifton <nickc@cygnus.com>
-
- * arm-dis.c (print_insn_big_arm, print_insn_little_arm): Remove
- saved_symbol code as it is no longer needed.
-
-Mon Feb 23 13:16:17 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen-asm.c: Include symcat.h.
- * cgen-dis.c,cgen-opc.c: Ditto.
- * m32r-asm.c,m32r-dis.c,m32r-opc.h,m32r-opc.c: Regenerate.
-
-Mon Feb 23 10:34:58 1998 Jeffrey A Law (law@cygnus.com)
-
- * mips-dis.c (print_insn_arg): Do not prefix 'P' arguments with '$'.
-
-Thu Feb 19 16:51:13 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * m32r-opc.[ch]: Regenerate.
-
-Tue Feb 17 17:14:50 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen-asm.c (cgen_parse_{signed,unsigned}_integer): Delete min,max
- arguments. Don't perform validation here.
- * m32r-asm.c,m32r-dis.c,m32r-opc.c: Regenerate.
-
-Fri Feb 13 14:26:06 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * m32r-opc.c: Regenerate.
-
-Fri Feb 13 14:53:02 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (AUTOMAKE_OPTIONS): Define.
- * configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.
-
-Fri Feb 13 10:21:09 1998 Mark Alexander <marka@cygnus.com>
-
- * m10300-dis.c (print_insn_mn10300): Recognize break instruction.
-
-Fri Feb 13 13:12:14 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Get the version number from BFD.
- * configure: Rebuild.
-
- From H.J. Lu <hjl@gnu.org>:
- * Makefile.am (libopcodes_la_LDFLAGS): Define.
+ * Makefile.am (CFILES): Add cris-dis.c and cris-opc.c.
+ (ALL_MACHINES): Add cris-dis.lo and cris-opc.lo.
+ (cris-dis.lo, cris-opc.lo): New rules.
* Makefile.in: Rebuild.
-
-Fri Feb 13 09:50:32 1998 Nick Clifton <nickc@cygnus.com>
-
- * m32r-opc.c: Regenerate.
- * m32r-opc.h: Regenerate.
-
-Thu Feb 12 11:01:40 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * m32r-opc.c: Regenerate.
-
-Thu Feb 12 03:41:00 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- Fix rac to accept only a0:
- * d10v-opc.c (d10v_predefined_registers, d10v_operands, d10v_opcodes):
- Split OPERAND_ACC into OPERAND_ACC0 and OPERAND_ACC1.
- Introduce OPERAND_GPR.
- * d10v-dis.c (print_operand): Likewise.
-
-Wed Feb 11 18:58:34 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen-opc.c (cgen_set_cpu): Delete init of hw list `next' chain.
- (cgen_hw_lookup): Make result const.
- * m32r-opc.h, m32r-opc.c, m32r-asm.c, m32r-dis.c: Regenerate.
-
-Sat Feb 7 15:30:27 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure, aclocal.m4: Rebuild with new libtool.
-
-Thu Feb 5 17:56:10 1998 Michael Meissner <meissner@cygnus.com>
-
- * d30v-opc.c (repeat{,i} instructions): Repeat/repeati
- instructions use a PC relative branch, not absolute.
-
-Wed Feb 4 19:17:37 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Set libtool_enable_shared rather than
- libtool_shared. Remove diversion hack.
- * configure, Makefile.in, aclocal.m4: Rebuild with new libtool.
-
-Tue Feb 3 17:19:40 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen-opc.c (cgen_set_cpu): Initialize hardware table.
- * m32r-opc.h, m32r-opc.c, m32r-asm.c, m32r-dis.c: Regenerate.
-
-Mon Feb 2 19:22:15 1998 Steve Haworth <steve@pm.cse.rmit.EDU.AU>
-
- * tic30-dis.c: New file.
- * disassemble.c (disassembler): Add bfd_arch_tic30 case.
- * configure.in: Handle bfd_tic30_arch.
- * Makefile.am: Rebuild dependencies.
- (CFILES): Add tic30-dis.c
- (ALL_MACHINES): Add tic30-dis.lo.
- * configure, Makefile.in: Rebuild.
-
-Thu Jan 29 13:02:56 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * m32r-opc.h (HAVE_CPU_M32R): Define.
-
-Wed Jan 28 09:55:03 1998 Nick Clifton <nickc@cygnus.com>
-
- * v850-opc.c (insertion routines): If both alignment and size is
- wrong then report this.
-
-Tue Jan 27 21:52:59 1998 Jeffrey A Law (law@cygnus.com)
-
- * mips-dis.c (_print_insn_mips): Set target_processor as appropriate.
- Only recognize instructions for the current target_processor.
-
-Thu Jan 22 16:20:17 1998 Fred Fish <fnf@cygnus.com>
-
- * d10v-dis.c (PC_MASK): Correct value.
- (print_operand): If there's a reloc, don't calculate the
- address because they could be in different sections.
-
-Fri Jan 16 15:29:11 1998 Jim Blandy <jimb@zwingli.cygnus.com>
-
- * mips-opc.c (mips_builtin_opcodes): Move 4010's "addciu"
- instruction after the 4650's "mul" instruction; nobody's using the
- 4010 these days. If object files someday indicate which processor
- variant they're intended for, we can do a better job at this.
-
-Mon Jan 12 14:43:54 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen-asm.c (build_asm_hash_table): Traverse compiled in table using
- table provided entry size. Use CGEN_INSN_MNEMONIC.
- (cgen_parse_keyword): Rewrite.
- * cgen-dis.c (build_dis_hash_table): Traverse compiled in table using
- table provided entry size. Use CGEN_INSN_MASK_BITSIZE.
- * cgen-opc.c: Clean up pass over `struct foo' usage.
- (cgen_keyword_lookup_value): Handle "" entry.
- (cgen_keyword_add): Likewise.
-
-Mon Dec 22 12:37:06 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-opc.c: Add FP_D to s.d instruction flags.
-
-Wed Dec 17 11:38:29 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * m68k-opc.c (halt, pulse): Enable them on the 68060.
-
-Tue Dec 16 15:22:53 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (tic80_opcodes): Revert change that put the 32 bit
- PC relative offset forms before the 15 bit forms. An assembler command
- line option now chooses the default.
-
-Tue Dec 16 15:22:51 1997 Michael Meissner <meissner@cygnus.com>
-
- * d30v-opc.c (d30v_opcode_table): Set new flags bits
- FLAG_{2WORD,MUL{16,32},ADDSUBppp}, in appropriate instructions.
-
-1997-12-15 Brendan Kehoe <brendan@lisa.cygnus.com>
-
- * configure: Only build libopcodes shared if --enable-shared's value
- was `yes', or was set to `*opcodes*'.
- * aclocal.m4: Likewise.
- * NOTE: this really needs to be fixed in libtool/libtool.m4, the
- original source of this bit of code. It's not clear what the best fix
- would be, though.
-
-Fri Dec 12 11:57:04 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (OFF_SL_PC, OFF_SL_BR): Minor formatting change.
- (tic80_opcodes): Reorder table entries to put the 32 bit PC relative
- offset forms before the 15 bit forms, to default to the long forms.
-
-Fri Dec 12 01:32:30 1997 Richard Henderson <rth@cygnus.com>
-
- * alpha-opc.c (cvttq/*u*): Remove, as that suffix is invalid.
-
-Wed Dec 10 17:42:35 1997 Nick Clifton <nickc@cygnus.com>
-
- * arm-dis.c (print_insn_little_arm): Prevent examination of stored
- symbol if none is present.
- (print_insn_big_arm): Prevent examination of stored symbol if
- none is present.
-
-Thu Oct 23 21:13:37 1997 Fred Fish <fnf@cygnus.com>
-
- * d10v-opc.c (d10v_opcodes): Correct entry for RTE.
-
-Mon Dec 8 11:21:07 1997 Nick Clifton <nickc@cygnus.com>
-
- * disassemble.c: Remove disasm_symaddr() function.
-
- * arm-dis.c: Use info->symbol instead of info->flags to determine
- if disassmbly should be in Thumb or Arm mode.
-
-Tue Dec 2 09:54:27 1997 Nick Clifton <nickc@cygnus.com>
-
- * arm-dis.c: Add support for disassembling Thumb opcodes.
- (print_insn_thumb): New function.
-
- * disassemble.c (disasm_symaddr): New function.
-
- * arm-opc.h: Display nop pseudo ops alongside equivalent disassembly.
- (thumb_opcodes): Table of Thumb opcodes.
-
-Mon Dec 1 12:25:57 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * m68k-opc.c (btst): Change Dd@s to Dd;b.
-
- * m68k-dis.c (print_insn_arg): Recognize 'm', 'n', 'o', 'p', 'q',
- and 'v' as operand types.
-
-Mon Dec 1 11:56:50 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c: Add argument for lpstop. From Olivier Carmona
- <olivier.carmona@di.epfl.ch>.
- * m68k-dis.c (print_insn_m68k): Handle special case of lpstop,
- which has a two word opcode with a one word argument.
-
-Sun Nov 23 22:25:21 1997 Michael Meissner <meissner@cygnus.com>
-
- * d30v-opc.c (d30v_opcode_table, case cmpu): Immediate field is
- unsigned, not signed.
- (d30v_format_table): Add SHORT_CMPU cases for cmpu.
-
-Tue Nov 18 23:10:03 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * d10v-dis.c (print_operand):
- Split OPERAND_FLAG into OPERAND_FFLAG and OPERAND_CFLAG.
-
-Tue Nov 18 18:45:14 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * d10v-opc.c (OPERAND_FLAG): Split into:
- (OPERAND_FFLAG, OPERAND_CFLAG) .
- (FSRC): Split into:
- (FFSRC, CFSRC).
-
-Thu Nov 13 11:05:33 1997 Gavin Koch <gavin@cygnus.com>
-
- * mips-opc.c: Move the INSN_MACRO ISA value to the membership
- field for all INSN_MACRO's.
- * mips16-opc.c: same
-
-Wed Nov 12 10:16:57 1997 Gavin Koch <gavin@cygnus.com>
-
- * mips-opc.c (sync,cache): These are 3900 insns.
-
-Tue Nov 11 23:53:41 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- sh-opc.h (sh_table): Remove ftst/nan.
-
-Tue Oct 28 17:59:32 1997 Ken Raeburn <raeburn@cygnus.com>
-
- * mips-opc.c (ffc, ffs): Fix mask.
-
-Tue Oct 28 16:34:54 1997 Michael Meissner <meissner@cygnus.com>
-
- * d30v-opc.c (pre_defined_registers): Add eit_vb, int_s, and int_m
- control registers.
-
-Mon Oct 27 22:34:03 1997 Ken Raeburn <raeburn@cygnus.com>
-
- * mips-opc.c: Fix bug in mask for "not" pseudo-instruction.
- (WR_HILO, RD_HILO, MOD_HILO): New macros.
-
-Mon Oct 27 22:34:03 1997 Ken Raeburn <raeburn@cygnus.com>
-
- * mips-opc.c: Fix bug in mask for "not" pseudo-instruction.
- (WR_HILO, RD_HILO, MOD_HILO): New macros.
-
-Thu Oct 23 14:57:58 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850-dis.c (disassemble): Replace // with /* ... */
-
-Wed Oct 22 17:33:21 1997 Richard Henderson <rth@cygnus.com>
-
- * sparc-opc.c: Add wr & rd for v9a asr's.
- * sparc-dis.c (print_insn_sparc): Recognize '_' and '/' for v9a asr's.
- (v9a_asr_reg_names): New variable.
- Patch from David Miller <davem@vger.rutgers.edu>.
-
-Wed Oct 22 17:18:02 1997 Richard Henderson <rth@cygnus.com>
-
- * sparc-opc.c (v9notv9a): New insn type.
- (IMPDEP): Move to the end to not conflict with edge8 et al.
- Patch from David Miller <davem@vger.rutgers.edu>.
-
-Fri Oct 17 13:18:53 1997 Gavin Koch <gavin@cygnus.com>
-
- * mips-opc.c (bnezl,beqzl): Mark these as also tx39.
-
-Thu Oct 16 11:55:20 1997 Gavin Koch <gavin@cygnus.com>
-
- * mips-opc.c: Note that 'jalx' is (probably incorrectly) marked I1.
-
-Tue Oct 14 16:10:31 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850-dis.c (disassemble): Use new symbol_at_address_func() field
- of disassemble_info structure to determine if an overlay address
- has a matching symbol in low memory.
-
- * dis-buf.c (generic_symbol_at_address): New (dummy) function for
- new symbol_at_address_func field in disassemble_info structure.
-
-Fri Oct 10 16:44:52 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850-opc.c (extract_d22): Use signed arithmatic.
-
-Tue Oct 7 23:40:43 1997 Gavin Koch <gavin@cygnus.com>
-
- * mips-opc.c: Three op mult is not an ISA insn.
-
-Tue Oct 7 23:37:21 1997 Gavin Koch <gavin@cygnus.com>
-
- * mips-opc.c: Fix formatting.
-
-Fri Oct 3 17:26:54 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * i386-dis.c (OP_E): Explicitly sign extend 8 bit values, rather
- than assuming that char is signed. Explicitly sign extend 16 bit
- values, rather than assuming that short is 16 bits.
- (OP_sI, OP_J, OP_DIR): Likewise.
-
-Thu Oct 2 13:36:45 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850-dis.c (v850_sreg_names): Use symbolic names for higher
- system registers.
-
-Wed Oct 1 16:58:54 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850-opc.c: Fix typo in comment.
-
- * v850-dis.c (disassemble): Add test of processor type when
- determining opcodes.
-
-Wed Oct 1 14:10:20 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Use a diversion to set enable_shared before the
- arguments are parsed.
- * configure: Rebuild.
-
-Thu Sep 25 13:04:59 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c (TBL1): Use ! rather than `.
- * m68k-dis.c (print_insn_arg): Remove ` operand specifier.
-
-Wed Sep 24 11:29:35 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c: Correct bchg, bclr, bset, and btst on ColdFire.
-
- * m68k-opc.c: Accept tst{b,w,l} with immediate operands on cpu32.
-
- * m68k-opc.c: Correct movew of an immediate operand to %sr or %ccr
- for mcf5200.
-
- * configure.in: Call AC_CHECK_TOOL before AM_PROG_LIBTOOL.
- * aclocal.m4: Rebuild with new libtool.
+ * configure.in (bfd_cris_arch): New target.
* configure: Rebuild.
+ * disassemble.c (ARCH_cris): Define.
+ (disassembler): Support ARCH_cris.
+ * cris-dis.c, cris-opc.c: New files.
+ * po/POTFILES.in, po/opcodes.pot: Regenerate.
-Fri Sep 19 11:45:49 1997 Andrew Cagney <cagney@b1.cygnus.com>
-
- * v850-opc.c ("cmov"): Order reg param r1, r2 not r2, r2.
-
-Thu Sep 18 11:21:43 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-opc.c (sparclet_cpreg_table): Add %ccsr2, %cccrr, %ccrstr.
-
-Tue Sep 16 15:18:20 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850-opc.c (v850_opcodes): Further rearrangements.
-
-Tue Sep 16 16:12:11 1997 Ken Raeburn <raeburn@cygnus.com>
-
- * d30v-opc.c (rot2h, sra2h, srl2h insns): Revert last change.
-
-Tue Sep 16 09:48:50 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850-opc.c (v850_opcodes): Fields reordered to allow assembler
- parser to work.
-
-Tue Sep 16 10:01:00 1997 Gavin Koch <gavin@cygnus.com>
-
- * mips-opc.c: Added tx39 insns sdbbp, rfe, and deret.
-
-Mon Sep 15 18:31:52 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850-opc.c: Initialise processors field of v850_opcode structure.
-
-Wed Aug 27 21:42:39 1997 Ken Raeburn <raeburn@cygnus.com>
-
- Merge changes from Martin Hunt:
-
- * d30v-opc.c: Change mvfacc to accept 6-bit unsigned values.
-
- * d30v-opc.c (pre_defined_registers): Add control registers from 0-63.
- (d30v_opcode_tabel): Add dbt, rtd, srah, and srlh instructions. Fix
- rot2h, sra2h, and srl2h to use new SHORT_A5S format.
-
- * d30v-dis.c (print_insn): Fix disassembly of SHORT_D2 opcodes.
-
- * d30v-dis.c (print_insn): First operand of d*i (delayed
- branch) instructions is relative.
-
- * d30v-opc.c (d30v_opcode_table): Change form for repeati.
- (d30v_operand_table): Add IMM6S3 type.
- (d30v_format_table): Change SHORT_D2. Add LONG_Db.
-
- * d30v-dis.c: Fix bug with ".s" and ".l" extensions
- and cmp instructions.
-
- * d30v-opc.c: Correct entries for repeat*, and sat*.
- Make IMM5 unsigned. Create IMM6U and IMM12S3U operand
- types. Correct several formats.
-
- * d30v-opc.c: (pre_defined_registers): Add dpsw and dpc.
-
- * d30v-opc.c (pre_defined_registers): Change control registers.
-
- * d30v-opc.c (d30v_format_table): Correct SHORT_C1 and
- SHORT_C2. Manual was incorrect.
-
- * d30v-dis.c (lookup_opcode): Return value now indicates
- if an opcode has a short and a long form. Used for deciding
- to append a ".s" or ".l".
- (print_insn): Append a ".s" to an instruction if it is
- the short form and ".l" if it is a long form. Do not append
- anything if the instruction has only one possible size.
-
- * d30v-opc.c: Change mulx2h to require an even register.
- New form: SHORT_A2; a SHORT_A form that needs an even
- register as the first operand.
-
- * d30v-dis.c (print_insn_d30v): Fix problem where the last
- instruction was not being disassembled if there were an odd
- number of instructions.
-
- * d30v-opc.c (SHORT_M2, LONG_M2): Two new forms.
-
-Fri Sep 12 11:43:54 1997 Nick Clifton <nickc@cygnus.com>
+2000-07-11 Jakub Jelinek <jakub@redhat.com>
- * v850-dis.c (disassemble): Improved display of register lists.
+ * sparc-opc.c (sparc_opcodes): popc has 0 in rs1, not rs2.
+ Reported by Bill Clarke <llib@computer.org>.
-Thu Sep 11 17:35:10 1997 Doug Evans <dje@canuck.cygnus.com>
+2000-07-09 Geoffrey Keating <geoffk@redhat.com>
- * sparc-opc.c (sparc_opcodes): Fix assembler args to
- fzeros, fones, fsrc1, fsrc1s, fsrc2s, fnot1, fnot1s, fnot2s,
- fors, fnors, fands, fnands, fxors, fxnors, fornot1s, fornot2s,
- fandnot1s, fandnot2s.
+ * ppc-opc.c (powerpc_opcodes): Correct suffix for vslw.
+ Patch by Randall J Fisher <rfisher@ecn.purdue.edu>.
-Tue Sep 9 10:03:49 1997 Doug Evans <dje@canuck.cygnus.com>
+2000-07-09 Alan Modra <alan@linuxcare.com.au>
- * sparc-opc.c (sparc_opcodes): Fix op3 field for fcmpq/fcmpeq.
+ * hppa-dis.c (fput_reg, fput_fp_reg, fput_fp_reg_r, fput_creg,
+ fput_const, extract_3, extract_5_load, extract_5_store,
+ extract_5r_store, extract_5R_store, extract_10U_store,
+ extract_5Q_store, extract_11, extract_14, extract_16, extract_21,
+ extract_12, extract_17, extract_22): Prototype.
+ (print_insn_hppa): Rename inner block opcode -> opc to avoid
+ shadowing outer block.
+ (GET_BIT): Define.
-Mon Sep 8 14:06:59 1997 Doug Evans <dje@canuck.cygnus.com>
+2000-07-05 DJ Delorie <dj@redhat.com>
- * cgen-asm.c (cgen_parse_address): New argument resultp.
- All callers updated.
- * m32r-asm.c (parse_h_hi16): Right shift numbers by 16.
+ * MAINTAINERS: new
-Tue Sep 2 18:39:08 1997 Jeffrey A Law (law@cygnus.com)
+2000-07-04 Alexandre Oliva <aoliva@redhat.com>
- * mn10200-dis.c (disassemble): PC relative instructions are
- relative to the next instruction, not the current instruction.
+ * arm-dis.c (print_insn_arm): Output combinations of PSR flags.
-Tue Sep 2 15:41:55 1997 Nick Clifton <nickc@cygnus.com>
+2000-07-03 Marek Michalkiewicz <marekm@linux.org.pl>
- * v850-dis.c (disassemble): Only signed extend values that are not
- returned by extract functions.
- Remove use of V850_OPERAND_ADJUST_SHORT_MEMORY flag.
+ * avr-dis.c (avr_operand): Change _ () to _() around all strings
+ marked for translation (exception from the usual coding style).
+ (print_insn_avr): Initialize insn2 to avoid warnings.
-Tue Sep 2 15:39:40 1997 Nick Clifton <nickc@cygnus.com>
+2000-07-03 Kazu Hirata <kazu@hxi.com>
- * v850-opc.c: Update comments. Remove use of
- V850_OPERAND_ADJUST_SHORT_MEMORY. Fix several operand patterns.
+ * h8300-dis.c (bfd_h8_disassemble): Improve readability.
+ * h8500-dis.c: Fix formatting.
-Tue Aug 26 09:42:28 1997 Nick Clifton <nickc@cygnus.com>
+2000-07-01 Alan Modra <alan@linuxcare.com.au>
- * v850-opc.c (MOVHI): Immediate parameter is unsigned.
-
-Mon Aug 25 15:58:07 1997 Christopher Provenzano <proven@cygnus.com>
-
- * configure: Rebuilt with latest devo autoconf for NT support.
-
-Fri Aug 22 10:35:15 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850-dis.c (disassemble): Use curly brace syntax for register
- lists.
-
- * v850-opc.c (v850_opcodes[]): Add NOT_R0 flag to decect cases
- where r0 is being used as a destination register.
-
-Thu Aug 21 11:09:09 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850-opc.c (v850_opcodes[]): Move divh opcodes next to each other.
-
-Tue Aug 19 10:59:59 1997 Richard Henderson <rth@cygnus.com>
-
- * alpha-opc.c (alpha_opcodes): Fix hw_rei_stall mungage.
-
-Mon Aug 18 11:10:03 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850-opc.c (v850_opcodes[]): Remove use of flag field.
- * v850-opc.c (v850_opcodes[]): Add support for reversed short load
- opcodes..
+ * Makefile.am (DEP): Fix 2000-06-22. grep after running dep.sed
+ (CLEANFILES): Add DEPA.
+ * Makefile.in: Regenerate.
-Mon Aug 18 11:08:25 1997 Nick Clifton <nickc@cygnus.com>
+2000-06-26 Scott Bambrough <scottb@netwinder.org>
- * configure (cgen_files): Add support for v850e target.
- * configure.in (cgen_files): Add support for v850e target.
+ * arm-dis.c (regnames): Add an additional register set to match
+ the set used by GCC. Make it the default.
-Mon Aug 18 11:08:25 1997 Nick Clifton <nickc@cygnus.com>
+2000-06-22 Alan Modra <alan@linuxcare.com.au>
- * configure (cgen_files): Add support for v850ea target.
- * configure.in (cgen_files): Add support for v850ea target.
+ * Makefile.am (DEP): grep for leading `/' in DEP1, and fail if we
+ find one.
+ * Makefile.in: Regenerate.
-Fri Aug 15 05:17:48 1997 Doug Evans <dje@canuck.cygnus.com>
+2000-06-20 H.J. Lu <hjl@gnu.org>
- * configure.in (bfd_arc_arch): Add.
- * configure: Rebuild.
- * Makefile.am (ALL_MACHINES): Add arc-dis.lo, arc-opc.lo.
+ * Makefile.am: Rebuild dependency.
* Makefile.in: Rebuild.
- * arc-dis.c, arc-opc.c: New files.
- * disassemble.c (ARCH_all): Define ARCH_arc.
- (disassembler): Add ARC support.
-
-Wed Aug 13 18:52:11 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850-dis.c (disassemble): Add support for v850EA instructions.
-
- * v850-opc.c (insert_i5div, extract_i5div): New Functions.
- (v850_opcodes): Add v850EA instructions.
-
- * v850-dis.c (disassemble): Add support for v850E instructions.
-
- * v850-opc.c (insert_d5_4, extract_d5_4, insert_d16_16,
- extract_d16_16, insert_i9, extract_i9, insert_u9, extract_u9,
- insert_spe, extract_spe): New Functions.
- (v850_opcodes): Add v850E instructions.
-
- * v850-opc.c: Reorganised and re-layed out to improve readability
- and portability.
-
-Tue Aug 5 23:09:31 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * configure: Rebuild with autoconf 2.12.1.
-
-Mon Aug 4 12:02:16 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * aclocal.m4, configure: Rebuild with new automake patches.
-
-Fri Aug 1 13:02:04 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Set enable_shared before AM_PROG_LIBTOOL.
- * acinclude.m4: Just include acinclude.m4 from BFD.
- * aclocal.m4, configure: Rebuild.
-
-Thu Jul 31 21:44:42 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am: New file, based on old Makefile.in.
- * acconfig.h: New file.
- * acinclude.m4: New file.
- * stamp-h.in: New file.
- * configure.in: Call AM_INIT_AUTOMAKE and AM_PROG_LIBTOOL.
- Removed shared library handling; now handled by libtool. Replace
- AC_CONFIG_HEADER with AM_CONFIG_HEADER. Call AM_MAINTAINER_MODE,
- AM_CYGWIN32, and AM_EXEEXT. Replace AC_PROG_INSTALL with
- AM_PROG_INSTALL. Change all .o files to .lo. Remove stamp-h
- handling in AC_OUTPUT.
- * dep-in.sed: Change .o to .lo.
- * Makefile.in: Now built with automake.
- * aclocal.m4: Now built with aclocal.
- * config.in, configure: Rebuild.
-
-Mon Jul 28 21:52:24 1997 Jeffrey A Law (law@cygnus.com)
-
- * mips-opc.c: Fix typo/thinko in "eret" instruction.
-
-Thu Jul 24 13:03:26 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-opc.c (sparc_opcodes): Fix spelling on fpaddX, fpsubX insns.
- Make array const.
- * sparc-dis.c (sorted_opcodes): New static local.
- (struct opcode_hash): `opcode' is pointer to const element.
- (build_hash): First arg is now table of sorted pointers.
- (print_insn_sparc): Sort opcodes by sorting table of pointers.
- (compare_opcodes): Update.
-
-Tue Jul 15 12:05:23 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * cgen-opc.c: #include <ctype.h>.
- (hash_keyword_name): New arg `case_sensitive_p'. Callers updated.
- Handle case insensitive hashing.
- (hash_keyword_value): Change type of `value' to unsigned int.
-
-Thu Jul 10 12:56:10 1997 Jeffrey A Law (law@cygnus.com)
-
- * mips-opc.c (mips_builtin_opcodes): If an insn uses single
- precision FP, mark it as such. Likewise for double precision
- FP. Mark ISA1 insns. Consolidate duplicate opcodes where
- possible.
-
-Wed Jun 25 15:25:57 1997 Felix Lee <flee@cirdan.cygnus.com>
-
- * ppc-opc.c (extract_nsi): make unsigned expression signed before
- negating it.
- (UNUSED): remove one level of parens, so MSVC doesn't choke on
- nesting depth when all the macros are expanded.
-
-Tue Jun 17 17:02:17 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * sparc-opc.c: The fcmp v9a instructions take an integer register
- as a destination, not a floating point register. From Christian
- Kuehnke <Christian.Kuehnke@arbi.Informatik.Uni-Oldenburg.DE>.
-
-Mon Jun 16 14:13:18 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-dis.c (print_insn_arg): Print case 7.2 using %pc@()
- syntax. From Roman Hodek
- <rnhodek@faui22c.informatik.uni-erlangen.de>.
-
- * i386-dis.c (twobyte_has_modrm): Fix pand.
-
-Mon Jun 16 14:08:38 1997 Michael Taylor <mbt@mit.edu>
-
- * i386-dis.c (dis386_twobyte): Fix pand and pandn.
-
-Tue Jun 10 11:26:47 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
-
- * arm-dis.c: Add prototypes for arm_decode_shift and
- print_insn_arm.
-
-Mon Jun 2 11:39:04 1997 Gavin Koch <gavin@cygnus.com>
-
- * mips-opc.c: Add r3900 insns.
-
-Tue May 27 15:55:44 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * sh-dis.c (print_insn_shx): Change relmask to bfd_vma. Don't
- print delay slot instructions on the same line. When using a PC
- relative load, add a comment with the value being loaded if it can
- be obtained.
-
-Tue May 27 11:02:08 1997 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386-dis.c (dis386[], dis386_twobyte[]): change pushl/popl
- to pushS/popS for segment regs and byte constant so that
- pushw/popw printed when in 16 bit data mode.
-
- * i386-dis.c (dis386[]): change cwtl, cltd to cWtS, cStd to
- print cbtw, cwtd in 16 bit data mode.
- * i386-dis.c (putop): extra case W to support above.
-
- * i386-dis.c (print_insn_x86): print addr32 prefix when given
- address size prefix in 16 bit address mode.
-
-Fri May 23 16:47:23 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * sh-dis.c: Reindent. Rename local variable fprintf to
- fprintf_fn.
-
-Thu May 22 14:06:02 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * m32r-opc.c (m32r_cgen_insn_table, cmpui): Undo patch of May 2.
-
-Tue May 20 11:26:27 1997 Gavin Koch <gavin@cygnus.com>
-
- * mips-opc.c (mips_builtin_opcodes): Moved INSN_ISA field into new
- field membership.
- * mips16-opc.c (mip16_opcodes): same.
-
-Mon May 12 15:10:53 1997 Jim Wilson <wilson@cygnus.com>
-
- * m68k-opc.c (moveb): Change $d to %d.
-
-Mon May 5 14:28:41 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * i386-dis.c: (dis386_twobyte): Add MMX instructions.
- (twobyte_has_modrm): Likewise.
- (grps): Likewise.
- (OP_MMX, OP_EM, OP_MS): New static functions.
-
- * i386-dis.c: Revert patch of April 4. The output now matches
- what gcc generates.
-
-Fri May 2 12:48:37 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * m32r-opc.c (m32r_cgen_insn_table, cmpui): Use $uimm16 instead
- of $simm16.
-
-Thu May 1 15:34:15 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * m32r-opc.h (CGEN_ARCH): Renamed from CGEN_CPU.
-
-Tue Apr 15 12:40:08 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (install): Depend upon installdirs.
- (installdirs): New target.
-
-Mon Apr 14 12:13:51 1997 Ian Lance Taylor <ian@cygnus.com>
-
- From Thomas Graichen <graichen@rzpd.de>:
- * configure.in: Use ${CONFIG_SHELL} when running $ac_config_sub.
- * configure: Rebuild.
-
-Sun Apr 13 17:50:41 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * cgen-*.c, m32r-*.c: #include sysdep.h instead of config.h.
- Delete string{,s}.h support.
-
-Thu Apr 10 14:44:56 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * cgen-asm.c (cgen_parse_operand_fn): New global.
- (cgen_parse_{{,un}signed_integer,address}): Update call to
- cgen_parse_operand_fn.
- (cgen_init_parse_operand): New function.
- * m32r-asm.c (parse_insn_normal): cgen_init_parse_operand renamed
- from cgen_asm_init_parse.
- (m32r_cgen_assemble_insn): New operand `errmsg'.
- Delete call to as_bad, return error message to caller.
- (m32r_cgen_asm_hash_keywords): #if 0 out.
-
-Wed Apr 9 12:05:25 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * m68k-dis.c (print_insn_arg) [case 'd']: Print as address register,
- not data register.
- [case 'J']: Fix typo in register name.
-
-Mon Apr 7 16:48:22 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Substitute SHLIB_LIBS.
- * configure: Rebuild.
- * Makefile.in (SHLIB_LIBS): New variable.
- ($(SHLIB)): Use $(SHLIB_LIBS).
-
-Mon Apr 7 11:45:44 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * cgen-dis.c (build_dis_hash_table): Fix xmalloc size computation.
-
- * cgen-opc.c (hash_keyword_name): Improve algorithm.
-
- * disassemble.c (disassembler): Handle m32r.
-
-Fri Apr 4 12:29:38 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * m32r-asm.c, m32r-dis.c, m32r-opc.c, m32r-opc.h: New files.
- * cgen-asm.c, cgen-dis.c, cgen-opc.c: New files.
- * Makefile.in (CFILES): Add them.
- (ALL_MACHINES): Add them.
- (dependencies): Regenerate.
- * configure.in (cgen_files): New variable.
- (bfd_m32r_arch): Add entry.
- * configure: Regenerate.
-
-Fri Apr 4 14:04:16 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Correct file names for bfd_mn10[23]00_arch.
- * configure: Rebuild.
-
- * Makefile.in: Rebuild dependencies.
-
- * d10v-dis.c: Include "ansidecl.h" before "opcode/d10v.h".
-
- * i386-dis.c (float_reg): Swap fsubrp and fsubp. Swap fdivrp and
- fdivp.
-
-Thu Apr 3 13:22:45 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Branched binutils 2.8.
-
-Wed Apr 2 12:23:53 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * m10200-dis.c: Rename from mn10200-dis.c.
- * m10200-opc.c: Rename from mn10200-opc.c.
- * m10300-dis.c: Rename from mn10300-dis.c
- * m10300-opc.c: Rename from mn10300-opc.c.
- * Makefile.in: Update accordingly.
-
- * mips16-opc.c: Add mul and dmul macros.
-
-Tue Apr 1 16:27:45 1997 Klaus Kaempf <kkaempf@progis.de>
-
- * makefile.vms: Update CFLAGS, add clean target.
-
-Fri Mar 28 12:10:09 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-opc.c: Add "wait". From Ralf Baechle
- <ralf@gnu.ai.mit.edu>.
-
- * configure.in: Add stdlib.h to AC_CHECK_HEADERS list.
- * configure, config.in: Rebuild.
- * sysdep.h: Include <stdlib.h> if it exists.
- * sparc-dis.c: Include <stdio.h> and "sysdep.h". Don't include
- <string.h>.
- * Makefile.in: Rebuild dependencies.
-
-Thu Mar 27 14:24:43 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * ppc-opc.c: Add PPC 403 instructions and extended opcodes. From
- Andrew Bray <andy@madhouse.demon.co.uk>.
-
- * mips-opc.c: Add cast when setting mips_opcodes.
-
-Tue Mar 25 23:04:00 1997 Stu Grossman (grossman@critters.cygnus.com)
-
- * v850-dis.c (disassemble): Fix sign extension problem.
- * v850-opc.c (extract_d*): Fix sign extension problems to make
- disassembly calculate branch offsets correctly.
-
-Mon Mar 24 13:22:13 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * sh-opc.h: Add bf/s and bt/s as synonyms for bf.s and bt.s.
-
- * mips-opc.c: Add dctr and dctw.
-
-Sun Mar 23 18:08:10 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d30v-dis.c (print_insn): Change the way signed constants
- are displayed.
-
-Fri Mar 21 14:37:52 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (BFD_H): New variable.
- (HFILES): New variable.
- (CFILES): Add all C files.
- (.dep, .dep1, dep.sed, dep, dep-in): New targets.
- Delete old dependencies, and build new ones.
- * dep-in.sed: New file.
-
-Thu Mar 20 19:03:30 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
-
- * m68k-opc.c (m68k_opcode_aliases): Added blo and blo{s,b,w,l}.
-
-Tue Mar 18 14:17:03 1997 Jeffrey A Law (law@cygnus.com)
-
- * mn10200-opc.c: Change "trap" to "syscall".
- * mn10300-opc.c: Add new "syscall" instruction.
-
-Mon Mar 17 08:48:03 1997 J.T. Conklin <jtc@beauty.cygnus.com>
-
- * m68k-opc.c (m68k_opcodes): Provide correct entries for mulsl and
- mulul insns on the coldfire.
-
-Sat Mar 15 17:13:05 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * arm-dis.c (print_insn_arm): Don't print instruction bytes.
- (print_insn_big_arm): Set bytes_per_chunk and display_endian.
- (print_insn_little_arm): Likewise.
-
-Fri Mar 14 15:08:59 1997 Ian Lance Taylor <ian@cygnus.com>
-
- Based on patches from H.J. Lu <hjl@lucon.org>:
- * i386-dis.c (fetch_data): Add prototype.
- * m68k-dis.c (fetch_data): Add prototype.
- (dummy_print_address): Add prototype. Make static.
- * ppc-opc.c (valid_bo): Add prototype.
- * sparc-dis.c (build_hash_table): Add prototype.
- (is_delayed_branch, compute_arch_mask): Add prototypes.
- (print_insn_sparc): Make several local variables const.
- (compare_opcodes): Change arguments to const PTR. Add prototype.
- * sparc-opc.c (arg): Change name field to be const.
- (lookup_name, lookup_value): Add prototypes. Change table and
- name parameters to be const.
- (sparc_encode_asi): Change name parameter to be const.
- (sparc_encode_membar, sparc_encode_prefetch): Likewise.
- (sparc_encode_sparclet_cpreg): Likewise.
- (sparc_decode_asi): Change return type to be const.
- (sparc_decode_membar, sparc_decode_prefetch): Likewise.
- (sparc_decode_sparclet_cpreg): Likewise.
-
-Fri Mar 7 10:51:49 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in ($(SHLINK)): Just use ln -s, not ln -sf, since
- Solaris doesn't like the combined options, and the -f is
- unnecessary.
- (stamp-tshlink, install): Likewise.
-
-Thu Mar 6 16:51:11 1997 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-opc.c (IMM16_PCREL, SD8N_PCREL, D16_SHIFT): Mark these
- as relaxable.
-
-Tue Mar 4 06:10:36 1997 J.T. Conklin <jtc@cygnus.com>
-
- * m68k-opc.c (m68k_opcodes): Fix last change for the mc68010.
-
-Mon Mar 3 07:45:20 1997 J.T. Conklin <jtc@cygnus.com>
-
- * m68k-opc.c (m68k_opcodes): Added entries for the tst insns on
- the mc68000.
-
-Thu Feb 27 14:04:32 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
-
- * m68k-opc.c (m68k_opcodes): Added swbegl pseudo-instruction.
-
-Thu Feb 27 11:36:41 1997 Michael Meissner <meissner@cygnus.com>
-
- * tic80-dis.c (print_insn_tic80): Set info->bytes_per_line to 8.
-
-Wed Feb 26 15:34:48 1997 Michael Meissner <meissner@cygnus.com>
-
- * tic80-opc.c (tic80_predefined_symbols): Define r25 properly.
-
-Wed Feb 26 13:38:30 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * m68k-dis.c (NEXTSINGLE, NEXTDOUBLE, NEXTEXTEND): Use
- floatformat_to_double to make portable.
- (print_insn_arg): Use NEXTEXTEND macro when extracting extended
- precision float.
-
-Mon Feb 24 19:26:12 1997 Dawn Perchik <dawn@cygnus.com>
-
- * mips-opc.c: Initialize mips_opcodes to mips_builtin_opcodes,
- and bfd_mips_num_opcodes to bfd_mips_num_builtin_opcodes.
-
-Mon Feb 24 15:19:01 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v-dis.c, d10v-opc.c: Change pre_defined_registers to
- d10v_predefined_registers and reg_name_cnt to d10v_reg_name_cnt.
-
-Mon Feb 24 14:33:26 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (LSI_SCALED): Renamed from this ...
- (OFF_SL_BR_SCALED): ... to this, and added the flag
- TIC80_OPERAND_BASEREL to the flags word.
- (tic80_opcodes): Replace all occurances of LSI_SCALED with
- OFF_SL_BR_SCALED.
-
-Sat Feb 22 21:25:00 1997 Dawn Perchik <dawn@cygnus.com>
-
- * mips-opc.c: Add macros for cop0, cop1 cop2 and cop3.
- Change mips_opcodes from const array to a pointer,
- and change bfd_mips_num_opcodes from const int to int,
- so that we can increase the size of the mips opcodes table
- dynamically.
-
-Sat Feb 22 21:03:47 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (tic80_predefined_symbols): Revert change to
- store BITNUM values in the table in one's complement form
- to match behavior when assembler is given a raw numeric
- value for a BITNUM operand.
- * tic80-dis.c (print_operand_bitnum): Ditto.
-
-Fri Feb 21 16:31:18 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d30v-opc.c: Removed references to FLAG_X.
-
-Wed Feb 19 14:51:20 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in: Add dependencies on ../bfd/bfd.h as required.
-
-Tue Feb 18 17:43:43 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * Makefile.in: Added d30v object files.
- * configure: (bfd_d30v_arch) Rebuilt.
- * configure.in: (bfd_d30v_arch) Added new case.
- * d30v-dis.c: New file.
- * d30v-opc.c: New file.
- * disassemble.c (disassembler) Add entry for d30v.
-
-Tue Feb 18 16:32:08 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (tic80_predefined_symbols): Add symbolic
- representations for the floating point BITNUM values.
-
-Fri Feb 14 12:14:05 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (tic80_predefined_symbols): Store BITNUM values
- in the table in one's complement form, as they appear in the
- actual instruction.
- (tic80_symbol_to_value): Use macros to access predefined
- symbol fields.
- (tic80_value_to_symbol): Ditto.
- (tic80_next_predefined_symbol): New function.
- * tic80-dis.c (print_operand_bitnum): Remove code that did
- one's complement for BITNUM values.
-
-Thu Feb 13 21:56:51 1997 Klaus Kaempf <kkaempf@progis.de>
-
- * makefile.vms: Remove 8 bit characters. Update to latest
- gcc release.
-
-Thu Feb 13 20:41:22 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
-
- * m68k-opc.c (m68k_opcodes): Add swbeg pseudo-instruction.
-
-Thu Feb 13 16:30:02 1997 Jeffrey A Law (law@cygnus.com)
-
- * mn10200-opc.c (IMM16_PCREL): This is a signed operand.
- (IMM24_PCREL): Likewise.
-
-Thu Feb 13 13:28:43 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-dis.c (print_mips16_insn_arg): Use memaddr - 2 as the base
- address for an extended PC relative instruction that is not a
- branch.
-
-Wed Feb 12 12:27:40 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * m68k-dis.c (print_insn_m68k): Set bytes_per_chunk and
- bytes_per_line.
-
-Tue Feb 11 16:36:31 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (tic80_operands): Fix typo '+' -> '|'.
- (tic80_opcodes): Sort entries so that long immediate forms
- come after short immediate forms, making it easier for
- assembler to select the right one for a given operand.
-
-Tue Feb 11 15:26:47 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-dis.c (_print_insn_mips): Set bytes_per_chunk and
- display_endian.
- (print_insn_mips16): Likewise.
-
-Mon Feb 10 10:12:41 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (tic80_symbol_to_value): Changed to accept
- a symbol class that restricts translation to just that
- class (general register, condition code, etc).
-
-Thu Feb 6 17:34:09 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (tic80_operands): Add REG_0_E, REG_22_E,
- and REG_DEST_E for register operands that have to be
- an even numbered register. Add REG_FPA for operands that
- are one of the floating point accumulator registers.
- Add TIC80_OPERAND_MASK to flags for ENDMASK operand.
- (tic80_opcodes): Change entries that need even numbered
- register operands to use the new operand table entries.
- Add "or" entries that are identical to "or.tt" entries.
-
-Wed Feb 5 11:12:44 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * mips16-opc.c: Add new cases of exit instruction for
- disassembler.
- * mips-dis.c (print_mips16_insn_arg): Display floating point
- registers in operands of exit instruction. Print `$' before
- register names in operands of entry and exit instructions.
-
-Thu Jan 30 14:09:03 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (tic80_predefined_symbols): Table of name/value
- pairs for all predefined symbols recognized by the assembler.
- Also used by the disassembling routines.
- (tic80_symbol_to_value): New function.
- (tic80_value_to_symbol): New function.
- * tic80-dis.c (print_operand_control_register,
- print_operand_condition_code, print_operand_bitnum):
- Remove private tables and use tic80_value_to_symbol function.
-
-Thu Jan 30 11:30:45 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v-dis.c (print_operand): Change address printing
- to correctly handle PC wrapping. Fixes PR11490.
-
-Wed Jan 29 09:39:17 1997 Jeffrey A Law (law@cygnus.com)
-
- * mn10200-opc.c (mn10200_operands): Make 8 and 16 bit pc-relative
- branches relaxable.
-
-Tue Jan 28 15:57:34 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-dis.c (print_insn_mips16): Set insn_info information.
- (print_mips16_insn_arg): Likewise.
-
- * mips-dis.c (print_insn_mips16): Better handling of an extend
- opcode followed by an instruction which can not be extended.
-
-Fri Jan 24 12:08:21 1997 J.T. Conklin <jtc@cygnus.com>
-
- * m68k-opc.c (m68k_opcodes): Changed operand specifier for the
- coldfire moveb instruction to not allow an address register as
- destination. Although the documentation does not indicate that
- this is invalid, experiments uncovered unexpected behavior.
- Added a comment explaining the situation. Thanks to Andreas
- Schwab for pointing this out to me.
-
-Wed Jan 22 20:13:51 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (tic80_opcodes): Expand comment to note that the
- entries are presorted so that entries with the same mnemonic are
- adjacent to each other in the table. Sort the entries for each
- instruction so that this is true.
-
-Mon Jan 20 12:48:57 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * m68k-dis.c: Include <libiberty.h>.
- (print_insn_m68k): Sort the opcode table on the most significant
- nibble of the opcode.
-
-Sat Jan 18 15:15:05 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-dis.c (tic80_opcodes): Add "wrcr", "vmpy", "vrnd",
- "vsub", "vst", "xnor", and "xor" instructions.
- (V_a1): Renamed from V_a, msb of accumulator reg number.
- (V_a0): Add macro, lsb of accumulator reg number.
-
-Fri Jan 17 18:24:31 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-dis.c (print_insn_tic80): Broke excessively long
- function up into several smaller ones and arranged for
- the instruction printing function to be callable recursively
- to print vector instructions that have both a load and a
- math instruction packed into a single opcode.
- * tic80-opc.c (tic80_opcodes): Expand comment for vld opcode
- to explain why it comes after the other vector opcodes.
-
-Fri Jan 17 16:19:15 1997 J.T. Conklin <jtc@beauty.cygnus.com>
-
- * m68k-opc.c (m68k_opcodes): add b, w, or l specifier to coldfire
- move insns to handle immediate operands.
-
-Thu Jan 17 16:19:00 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * m68k-opc.c (m68k_opcodes): Delete duplicate entry for "cmpil".
- fix operand mask in the "moveml" entries for the coldfire.
-
-Thu Jan 16 20:54:40 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (V_a, V_m, V_S, V_Z, V_p, OP_V, MASK_V):
- New macros for building vector instruction opcodes.
- (tic80_opcodes): Remove all uses of FMT_SI, FMT_REG, and
- FMT_LI, which were unused. The field is now a flags field.
- Remove some opcodes that are possible, but illegal, such
- as long immediate instructions with doubles for immediate
- values. Add "vadd" and "vld" instructions.
-
-Wed Jan 15 18:59:51 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (tic80_operands): Reorder some table entries to make
- the order more logical. Move the shift alias instructions ("rotl",
- "shl", "ins", "rotr", "extu", "exts", "srl", and "sra" to be
- interspersed with the regular sr.x and sl.x instructions. Add
- and test new instruction opcodes for "sl", "sli", "sr", "sri", "st",
- "sub", "subu", "swcr", and "trap".
-
-Tue Jan 14 19:42:50 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-opc.c (OFF_SS_PC): Renamed from OFF_SS.
- (OFF_SL_PC): Renamed from OFF_SL.
- (OFF_SS_BR): New operand type for base relative operand.
- (OFF_SL_BR): New operand type for base relative operand.
- (REG_BASE): New operand type for base register operand.
- (tic80_opcodes): Add and test "fmpy", "frndm", "frndn", "frndp",
- "frndz", "fsqrt", "fsub", "illop0", "illopF", "ins", "jsr",
- "ld", "ld.u", "lmo", "or", "rdcr", "rmo", "rotl", and "rotr"
- instructions.
- * tic80-dis.c (print_insn_tic80): Print opcode name with fixed width
- 10 char field, padded with spaces on rhs, rather than a string
- followed by a tab. Use renamed TIC80_OPERAND_PCREL flag bit rather
- than old TIC80_OPERAND_RELATIVE. Add support for new
- TIC80_OPERAND_BASEREL flag bit.
-
-Mon Jan 13 15:58:56 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-dis.c (print_insn_tic80): Print floating point operands
- as floats.
- * tic80-opc.c (SPFI): Add single precision floating point
- immediate operand type.
- (ROTATE): Add rotate operand type for shifts.
- (ENDMASK): Add for shifts.
- (n): Macro for the 'n' bit.
- (i): Macro for the 'i' bit.
- (PD): Macro for the 'PD' field.
- (P2): Macro for the 'P2' field.
- (P1): Macro for the 'P1' field.
- (tic80_opcodes): Add entries for "exts", "extu", "fadd",
- "fcmp", and "fdiv".
-
-Mon Jan 6 15:06:55 1997 Jeffrey A Law (law@cygnus.com)
-
- * mn10200-dis.c (disassemble): Mask off unwanted bits after
- adding in current address for pc-relative operands.
-
-Mon Jan 6 10:56:25 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-dis.c (R_SCALED): Add macro to test for ":s" modifier bit.
- (print_insn_tic80): If R_SCALED then print ":s" modifier for operand.
- * tic80-opc.c (REG0, REG22, REG27, SSOFF, LSOFF): Names
- changed to REG_0, REG_22, REG_DEST, OFF_SS, OFF_SL respectively.
- (SICR, LICR, REGM_SI, REGM_LI): Names changed to CR_SI, CR_LI,
- REG_BASE_M_SI, REG_BASE_M_LI respectively.
- (REG_SCALED, LSI_SCALED): New operand types.
- (E): New macro for 'E' bit at bit 27.
- (tic80_opcodes): Add and test dld, dld.u, dst, estop, and etrap
- opcodes, including the various size flavors (b,h,w,d) for
- the direct load and store instructions.
-
-Sun Jan 5 12:18:14 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-dis.c (M_SI, M_LI): Add macros to test for ":m" modifier bit
- in an instruction.
- * tic80-dis.c (print_insn_tic80): Change comma and paren handling.
- Use M_SI and M_LI macros to check for ":m" modifier for GPR operands.
- * tic80-opc.c (tic80_operands): Add REGM_SI and REGM_LI operands.
- (F, M_REG, M_LI, M_SI, SZ_REG, SZ_LI, SZ_SI, D, S): New bit-twiddlers.
- (MASK_LI_M, MASK_SI_M, MASK_REG_M): Remove and replace in opcode
- masks with "MASK_* & ~M_*" to get the M bit reset.
- (tic80_opcodes): Add bsr, bsr.a, cmnd, cmp, dcachec, and dcachef.
-
-Sat Jan 4 19:05:05 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80-dis.c (print_insn_tic80): Print TIC80_OPERAND_RELATIVE
- correctly. Add support for printing TIC80_OPERAND_BITNUM and
- TIC80_OPERAND_CC, and TIC80_OPERAND_CR operands in symbolic
- form.
- * tic80-opc.c (tic80_operands): Add SSOFF, LSOFF, BITNUM,
- CC, SICR, and LICR table entries.
- (tic80_opcodes): Add and test "nop", "br", "bbo", "bbz",
- "bcnd", and "brcr" opcodes.
-
-Fri Jan 3 18:32:11 1997 Fred Fish <fnf@cygnus.com>
-
- * ppc-opc.c (powerpc_operands): Make comment match the
- actual fields (no shift field).
- * sparc-opc.c (sparc_opcodes): Document why this cannot be "const".
- * tic80-dis.c (print_insn_tic80): Replace abort stub with a
- partial implementation, work in progress.
- * tic80-opc.c (tic80_operands): Begin construction operands table.
- (tic80_opcodes): Continue populating opcodes table and start
- filling in the operand indices.
- (tic80_num_opcodes): Add this.
-
-Fri Jan 3 12:13:52 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c: Add #B case for moveq.
-
-Thu Jan 2 12:14:29 1997 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-dis.c (disassemble): Make sure all variables are initialized
- before they are used.
-
-Tue Dec 31 12:20:38 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850-opc.c (v850_opcodes): Put curly-braces around operands
- for "breakpoint" instruction.
-Tue Dec 31 15:38:13 1996 Ian Lance Taylor <ian@cygnus.com>
+2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
- * Makefile.in (ALL_CFLAGS): Add -D_GNU_SOURCE.
- (dep): Use ALL_CFLAGS rather than CFLAGS.
+ * Makefile.in, configure: regenerate
+ * disassemble.c (disassembler): Recognize ARCH_m68hc12,
+ ARCH_m68hc11.
+ * m68hc11-dis.c (read_memory, print_insn, print_insn_m68hc12):
+ New functions.
+ * configure.in: Recognize m68hc12 and m68hc11.
+ * m68hc11-dis.c, m68hc11-opc.c: New files for support of m68hc1x
+ * Makefile.am (CFILES, ALL_MACHINES): New files for disassembly
+ and opcode generation for m68hc11 and m68hc12.
-Tue Dec 31 15:09:16 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+2000-06-16 Nick Duffek <nsd@redhat.com>
- * v850-opc.c (D8_{6,7}): Set V850_OPERAND_ADJUST_SHORT_MEMORY
- flag.
+ * disassemble.c (disassembler): Refer to the PowerPC 620 using
+ bfd_mach_ppc_620 instead of 620.
-Mon Dec 30 17:02:11 1996 Fred Fish <fnf@cygnus.com>
+2000-06-12 Kazu Hirata <kazu@hxi.com>
- * Makefile.in (m68k-opc.o, alpha-opc.o): Remove dis-asm.h dependency.
- (tic80-dis.o, tic80-opc.o): Add rules per comment in Makefile.in.
+ * h8300-dis.c: Fix formatting.
+ (bfd_h8_disassemble): Distinguish adds/subs, inc/dec.[wl]
+ correctly.
-Mon Dec 30 11:38:01 1996 Ian Lance Taylor <ian@cygnus.com>
+2000-06-09 Denis Chertykov <denisc@overta.ru>
- * mips16-opc.c: Add "abs".
+ * avr-dis.c (avr_operand): Bugfix for jmp/call address.
-Sun Dec 29 10:58:22 1996 Fred Fish <fnf@cygnus.com>
+2000-06-07 Denis Chertykov <denisc@overta.ru>
- * Makefile.in (ALL_MACHINES): Add tic80-dis.o and tic80-opc.o.
- * disassemble.c (ARCH_tic80): Define if ARCH_all is defined.
- (disassembler): Add bfd_arch_tic80 support to set disassemble
- to print_insn_tic80.
- * tic80-dis.c (print_insn_tic80): Add stub.
+ * avr-dis.c: completely rewritten.
-Fri Dec 27 22:30:57 1996 Fred Fish <fnf@cygnus.com>
+2000-06-02 Kazu Hirata <kazu@hxi.com>
- * configure.in (arch in $selarchs): Add bfd_tic80_arch entry.
- * configure: Regenerate with autoconf.
- * tic80-dis.c: Add file.
- * tic80-opc.c: Add file.
+ * h8300-dis.c: Follow the GNU coding style.
+ (bfd_h8_disassemble) Fix a typo.
-Fri Dec 20 14:30:19 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+2000-06-01 Kazu Hirata <kazu@hxi.com>
- * d10v-opc.c (pre_defined_registers): Add cr[0-15], dpc, dpsw, link.
+ * h8300-dis.c (bfd_h8_disassemble_init): Fix a typo.
+ (bfd_h8_disassemble): Distinguish the operand size of inc/dev.[wl]
+ correctly. Fix a typo.
-Mon Dec 16 13:00:15 1996 Jeffrey A Law (law@cygnus.com)
+2000-05-31 Nick Clifton <nickc@redhat.com>
- * mn10200-opc.c (mn10200_operands): Add SIMM16N.
- (mn10200_opcodes): Use it for some logicals and btst insns.
- Add "break" and "trap" instructions.
+ * opintl.h (_(String)): Explain why dgettext is used instead of
+ gettext.
- * mn10300-opc.c (mn10300_opcodes): Add "break" instruction.
+2000-05-30 Nick Clifton <nickc@redhat.com>
- * mn10200-opc.c: Add pseudo-ops for "mov (an),am" and "mov an,(am)".
+ * opintl.h (gettext, dgettext, dcgettext, textdomain,
+ bindtextdomain): Replace defines with those from intl/libgettext.h
+ to quieten gcc warnings.
-Sat Dec 14 22:36:20 1996 Ian Lance Taylor <ian@cygnus.com>
+2000-05-26 Alan Modra <alan@linuxcare.com.au>
- * mips-dis.c (print_mips16_insn_arg): The base address of a PC
- relative load or add now depends upon whether the instruction is
- in a delay slot.
-
-Wed Dec 11 09:23:46 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10200-dis.c: Finish writing disassembler.
- * mn10200-opc.c (mn10200_opcodes): Fix mask for "mov imm8,dn".
- Fix mask for "jmp (an)".
-
- * mn10300-dis.c (disassemble, print_insn_mn10300): Corrently
- handle endianness issues for mn10300.
-
- * mn10200-opc.c (mn10200_opcodes): Fix operands for "movb dm,(an)".
-
-Tue Dec 10 12:08:05 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10200-opc.c (mn10200_opcodes): "mov imm8,d0" is a format 2
- instruction. Fix opcode field for "movb (imm24),dn".
-
- * mn10200-opc.c (mn10200_operands): Fix insertion position
- for DI operand.
-
-Mon Dec 9 16:42:43 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10200-opc.c: Create mn10200 opcode table.
- * mn10200-dis.c: Flesh out mn10200 disassembler. Not ready,
- but moving along nicely.
-
-Sun Dec 8 04:28:31 1996 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * Makefile.in (ALL_MACHINES): Add mips16-opc.o.
-
-Fri Dec 6 16:47:40 1996 J.T. Conklin <jtc@rhino.cygnus.com>
-
- * m68k-opc.c (m68k_opcodes): Revert change to use < and >
- specifiers for fmovem* instructions.
-
-Fri Dec 6 14:48:09 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-dis.c (disassemble): Remove '$' register prefixing.
-
-Fri Dec 6 17:34:39 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips16-opc.c: Change opcode for entry/exit to avoid conflicting
- with dsrl.
-
-Fri Dec 6 14:48:09 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-opc.c: Add some comments explaining the various
- operands and such.
-
- * mn10300-dis.c (disassemble): Fix minor gcc -Wall warnings.
-
-Thu Dec 5 12:09:48 1996 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * m68k-dis.c (print_insn_arg): Handle new < and > operand
- specifiers.
-
- * m68k-opc.c (m68k_opcodes): Simplify table by using < and >
- operand specifiers in fmovm* instructions.
-
-Wed Dec 4 14:52:18 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ppc-opc.c (insert_li): Give an error if the offset has the two
- least significant bits set.
-
-Wed Nov 27 13:09:01 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-dis.c (print_insn_mips16): Separate the instruction from
- the arguments with a tab, not a space.
-
-Tue Nov 26 13:24:17 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-dis.c (disasemble): Finish conversion to '$' as
- register prefix.
-
- * mn10300-opc.c (mn10300_opcodes): Fix mask field for
- mov am,(imm32,sp).
-
-Tue Nov 26 10:53:21 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure: Rebuild with autoconf 2.12.
-
- Add support for mips16 (16 bit MIPS implementation):
- * mips16-opc.c: New file.
- * mips-dis.c: Include "elf-bfd.h" and "elf/mips.h".
- (mips16_reg_names): New static array.
- (print_insn_big_mips): Use print_insn_mips16 in 16 bit mode or
- after seeing a 16 bit symbol.
- (print_insn_little_mips): Likewise.
- (print_insn_mips16): New static function.
- (print_mips16_insn_arg): New static function.
- * mips-opc.c: Add jalx instruction.
- * Makefile.in (mips16-opc.o): New target.
- * configure.in: Use mips16-opc.o for bfd_mips_arch.
- * configure: Rebuild.
-
-Mon Nov 25 16:15:17 1996 J.T. Conklin <jtc@cygnus.com>
-
- * m68k-opc.c (m68k_opcodes): Simplify table by using < and >
- operand specifiers in *save, *restore and movem* instructions.
-
- * m68k-opc.c (m68k_opcodes): Fix move and movem instructions for
- the coldfire.
-
- * m68k-opc.c (m68k_opcodes): The coldfire (mcf5200) can only use
- register operands for immediate arithmetic, not, neg, negx, and
- set according to condition instructions.
-
- * m68k-opc.c (m68k_opcodes): Consistantly Use "s" as the storage
- specifier of the effective-address operand in immediate forms of
- arithmetic instructions. The specifier for the immediate operand
- notes how and where the constant will be stored.
-
-Mon Nov 25 11:17:01 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-opc.c (mn10300_opcodes): Remove redundant "lcc"
- opcode.
-
- * mn10300-dis.c (disassemble): Use '$' instead of '%' for
- register prefix.
-
- * mn10300-dis.c (disassemble): Prefix registers with '%'.
-
-Wed Nov 20 10:37:13 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-dis.c (disassemble): Handle register lists.
-
- * mn10300-opc.c: Fix handling of register list operand for
- "call", "ret", and "rets" instructions.
-
- * mn10300-dis.c (disassemble): Print PC-relative and memory
- addresses symbolically if possible.
- * mn10300-opc.c: Distinguish between absolute memory addresses,
- pc-relative offsets & random immediates.
-
- * mn10300-dis.c (print_insn_mn10300): Fix fetch of last byte
- in 7 byte insns.
- (disassemble): Handle SPLIT and EXTENDED operands.
-
-Tue Nov 19 13:33:01 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-dis.c: Rough cut at printing some operands.
-
- * mn10300-dis.c: Start working on disassembler support.
- * mn10300-opc.c (mn10300_opcodes): Fix masks on several insns.
-
- * mn10300-opc.c (mn10300_operands): Add "REGS" for a register
- list.
- (mn10300_opcodes): Use REGS for register list in "movm" instructions.
-
-Mon Nov 18 15:20:35 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * d10v-opc.c (d10v_opcodes): Add3 sets the carry.
-
-Fri Nov 15 13:43:19 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-opc.c (mn10300_opcodes): Demand parens around
- register argument is calls and jmp instructions.
-
-Thu Nov 7 00:26:05 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-opc.c (mn10300_opcodes): Use DN01 for putx and
- getx operand. Fix opcode for mulqu imm,dn.
-
-Wed Nov 6 13:42:32 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-opc.c (mn10300_operands): Hijack "bits" field
- in MN10300_OPERAND_SPLIT operands for how many bits
- appear in the basic insn word. Add IMM32_HIGH24,
- IMM32_HIGH24_LOWSHIFT8, IMM8E_SHIFT8.
- (mn10300_opcodes): Use new operands as needed.
-
- * mn10300-opc.c (mn10300_operands): Add IMM32_LOWSHIFT8
- for bset, bclr, btst instructions.
- (mn10300_opcodes): Use new IMM32_LOWSHIFT8 as needed.
-
- * mn10300-opc.c (mn10300_operands): Remove many redundant
- operands. Update opcode table as appropriate.
- (IMM32): Add MN10300_OPERAND_SPLIT flag.
- (mn10300_opcodes): Fix single bit error in mov imm32,dn insn.
-
-Tue Nov 5 13:26:58 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-opc.c (mn10300_operands): Add DN2, DM2, AN2, AM2
- operands (for indexed load/stores). Fix bitpos for DI
- operand. Add SN8N_SHIFT8, IMM8_SHIFT8, and D16_SHIFT for the
- few instructions that insert immediates/displacements in the
- middle of the instruction. Add IMM8E for 8 bit immediate in
- the extended part of an instruction.
- (mn10300_operands): Use new opcodes as appropriate.
-
-Tue Nov 5 10:30:51 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v-opc.c (d10v_opcodes): Declare the trap instruction
- sequential so the assembler never parallelizes it with
- other instructions.
-
-Mon Nov 4 12:50:40 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-opc.c (mn10300_operands): Add DN01 and AN01 for
- a data/address register that appears in register field 0
- and register field 1.
- (mn10300_opcodes): Use DN01 and AN01 for mov/cmp imm8,DN/AN
-
-Fri Nov 1 10:29:11 1996 Richard Henderson <rth@tamu.edu>
-
- * alpha-dis.c (print_insn_alpha): Use new NOPAL mask for
- standard disassembly.
-
- * alpha-opc.c (alpha_operands): Rearrange flags slot.
- (alpha_opcodes): Add new BWX, CIX, and MAX instructions.
- Recategorize PALcode instructions.
-
-Wed Oct 30 16:46:58 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850-opc.c (v850_opcodes): Add relaxing "jbr".
-
-Tue Oct 29 16:30:28 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-dis.c (_print_insn_mips): Don't print a trailing tab if
- there are no operand types.
-
-Tue Oct 29 12:22:21 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850-opc.c (D9_RELAX): Renamed from D9, all references
- changed.
- (v850_operands): Make sure D22 immediately follows D9_RELAX.
-
-Fri Oct 25 12:12:53 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * i386-dis.c (print_insn_x86): Set info->bytes_per_line to 5.
-
-Thu Oct 24 17:53:52 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850-opc.c (insert_d8_6): Fix operand insertion for sld.w
- and sst.w instructions.
-
- * v850-opc.c (v850_opcodes): Add "jCC" instructions (aliases for
- "bCC"instructions).
-
-Thu Oct 24 17:21:20 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-dis.c (_print_insn_mips): Use a tab between the instruction
- and the arguments.
-
-Tue Oct 22 23:32:56 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * ppc-opc.c (PPCPWR2): Define.
- (powerpc_opcodes): Use PPCPWR2 for fsqrt, rather than duplicating
- it.
-
-Fri Oct 11 16:03:49 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-opc.c (mn10300_opcodes): Fix typo in opcode
- field for movhu instruction.
-
- * v850-dis.c (disassemble): For V850_OPERAND_SIGNED operands,
- cast value to "long" not "signed long" to keep hpux10
- compiler quiet.
-
-Thu Oct 10 10:25:58 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-opc.c (mn10300_opcodes): Fix typo in opcode field
- for mov (abs16),DN.
-
- * mn10300-opc.c (FMT*): Remove definitions.
-
- * mn10300-opc.c (mn10300_opcodes): Fix destination register
- for shift-by-register opcodes.
-
- * mn10300-opc.c (mn10300_operands): Break DN, DM, AN, AM
- into [AD][MN][01] for encoding the position of the register
- in the opcode.
-
-Wed Oct 9 11:19:26 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-opc.c (mn10300_opcodes): Add "extended" instructions,
- "putx", "getx", "mulq", "mulqu", "sat16", "sat24", "bsch".
-
-Tue Oct 8 11:55:35 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-opc.c (mn10300_operands): Remove "REGS" operand.
- Fix various typos. Add "PAREN" operand.
- (MEM, MEM2): Define.
- (mn10300_opcodes): Surround all memory addresses with "PAREN"
- operands. Fix several typos.
-
- * mn10300-opc.c (mn10300_opcodes): Fix typos in yesterday's
- changes.
-
-Mon Oct 7 16:48:45 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300-opc.c (FMT_XX): Renumber starting at one.
- (mn10300_operands): Rough cut. Enough to parse "mov" instructions
- at this time.
- (mn10300_opcodes): Break opcode format out into its own field.
- Update many operand fields to deal with signed vs unsigned
- issues. Fix one or two typos in the "mov" instruction
- opcode, mask and/or operand fields.
-
-Mon Oct 7 11:39:49 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * m68k-opc.c (plusha): Prefer encoding for m68040up, in case
- m68851 wasn't reset.
-
-Thu Oct 3 17:17:02 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mn10300-opc.c (mn10300_opcodes): Add opcode & masks for
- all opcodes. Very rough cut at operands for all opcodes.
-
- * mn10300-opc.c (mn10300_opcodes): Start fleshing out the
- opcode table.
-
-Thu Oct 3 10:06:07 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10200-opc.c, mn10300-opc.c: New files.
- * mn10200-dis.c, mn10300-dis.c: New files.
- * mn10x00-opc.c, mn10x00-dis.c: Deleted.
- * disassemble.c: Break mn10x00 support into 10200 and 10300
- support.
- * configure.in: Likewise.
- * configure: Rebuilt.
-
-Thu Oct 3 15:59:12 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
-
- * Makefile.in (MOSTLYCLEAN): Move config.log to distclean.
-
-Wed Oct 2 23:28:42 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10x00-opc.c, mn10x00-dis.c: New files for Matsushita
- MN10x00 processors.
- * disassemble (ARCH_mn10x00): Define.
- (disassembler): Handle bfd_arch_mn10x00.
- * configure.in: Recognize bfd_mn10x00_arch.
- * configure: Rebuilt.
-
-Tue Oct 1 10:49:11 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * i386-dis.c (op_rtn): Change to be a pointer. Adjust uses
- accordingly. Don't declare functions using op_rtn.
-
-Fri Sep 27 18:28:59 1996 Stu Grossman (grossman@critters.cygnus.com)
-
- * v850-dis.c (disassemble): Add memaddr argument. Re-arrange
- params to be more standard.
- * (disassemble): Print absolute addresses and symbolic names for
- branch and jump targets.
- * v850-opc.c (v850_operand): Add displacement flag to 9 and 22
- bit operands.
- * (v850_opcodes): Add breakpoint insn.
-
-Mon Sep 23 12:32:26 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c: Move the fmovemx data register cases before the
- other cases, so that they get recognized before the data register
- does gets treated as a degenerate register list.
-
-Tue Sep 17 12:06:51 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-opc.c: Add a case for "div" and "divu" with two registers
- and a destination of $0.
-
-Tue Sep 10 16:12:39 1996 Fred Fish <fnf@rtl.cygnus.com>
-
- * mips-dis.c (print_insn_arg): Add prototype.
- (_print_insn_mips): Ditto.
-
-Mon Sep 9 14:26:26 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-dis.c (print_insn_arg): Print condition code registers as
- $fccN.
-
-Tue Sep 3 12:09:46 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-opc.c (sparc_opcodes): Add setuw, setsw, setx.
-
-Tue Sep 3 12:05:25 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850-dis.c (disassemble): Make static. Provide prototype.
-
-Sun Sep 1 22:30:40 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850-opc.c (insert_d9, insert_d22): Fix boundary case
- in range checks.
-
-Sat Aug 31 01:27:26 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850-dis.c (disassemble): Handle insertion of ',', '[' and
- ']' characters into the output stream.
- * v850-opc.c (v850_opcodes: Remove size field from all opcodes.
- Add "memop" field to all opcodes (for the disassembler).
- Reorder opcodes so that "nop" comes before "mov" and "jr"
- comes before "jarl".
-
- * v850-dis.c (print_insn_v850): Fix typo in last change.
-
- * v850-dis.c (print_insn_v850): Properly handle disassembling
- a two byte insn at the end of a memory region when the memory
- region's size is only two byte aligned.
-
- * v850-dis.c (v850_cc_names): Fix stupid thinkos.
-
- * v850-dis.c (v850_reg_names): Define.
- (v850_sreg_names, v850_cc_names): Likewise.
- (disassemble): Very rough cut at printing operands (unformatted).
-
- * v850-opc.c (BOP_MASK): Fix.
- (v850_opcodes): Fix mask for jarl and jr.
-
- * v850-dis.c: New file. Skeleton for disassembler support.
- * Makefile.in Remove v850 references, they're not needed here.
- * configure.in: Add v850-dis.o when building v850 toolchains.
- * configure: Rebuilt.
- * disassemble.c (disassembler): Call v850 disassembler.
-
- * v850-opc.c (insert_d8_7, extract_d8_7): New functions.
- (insert_d8_6, extract_d8_6): New functions.
- (v850_operands): Rename D7S to D7; operand for D7 is unsigned.
- Rename D8 to D8_7, use {insert,extract}_d8_7 routines.
- Add D8_6.
- (IF4A, IF4B): Use "D7" instead of "D7S".
- (IF4C, IF4D): Use "D8_7" instead of "D8".
- (IF4E, IF4F): New. Use "D8_6".
- (v850_opcodes): Use IF4A/IF4B for sld.b/sst.b. Use IF4C/IF4D for
- sld.h/sst.h. Use IF4E/IF4F for sld.w/sst.w.
-
- * v850-opc.c (insert_d16_15, extract_d16_15): New functions.
- (v850_operands): Change D16 to D16_15, use special insert/extract
- routines. New new D16 that uses the generic insert/extract code.
- (IF7A, IF7B): Use D16_15.
- (IF7C, IF7D): New. Use D16.
- (v850_opcodes): Use IF7C and IF7D for ld.b and st.b.
-
- * v850-opc.c (insert_d9, insert_d22): Slightly improve error
- message. Issue an error if the branch offset is odd.
-
- * v850-opc.c: Add notes about needing special insert/extract
- for all the load/store insns, except "ld.b" and "st.b".
-
- * v850-opc.c (insert_d22, extract_d22): New functions.
- (v850_operands): Use insert_d22 and extract_d22 for
- D22 operands.
- (insert_d9): Fix range check.
-
-Fri Aug 30 18:01:02 1996 J.T. Conklin <jtc@hippo.cygnus.com>
-
- * v850-opc.c (v850_operands): Add V850_OPERAND_SIGNED flag
- and set bits field to D9 and D22 operands.
-
-Thu Aug 29 11:10:46 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850-opc.c (v850_operands): Define SR2 operand.
- (v850_opcodes): "ldsr" uses R1,SR2.
-
- * v850-opc.c (v850_opcodes): Fix opcode specs for
- sld.w, sst.b, sst.h, sst.w, and nop.
-
-Wed Aug 28 15:55:43 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850-opc.c (v850_opcodes): Add null opcode to mark the
- end of the opcode table.
-
-Mon Aug 26 13:35:53 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v-opc.c (pre_defined_registers): Added register pairs,
- "r0-r1", "r2-r3", etc.
-
-Fri Aug 23 00:27:01 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850-opc.c (v850_operands): Make I16 be a signed operand.
- Create I16U for an unsigned 16bit mmediate operand.
- (v850_opcodes): Use I16U for "ori", "andi" and "xori".
-
- * v850-opc.c (v850_operands): Define EP operand.
- (IF4A, IF4B, IF4C, IF4D): Use EP.
-
- * v850-opc.c (v850_opcodes): Fix opcode numbers for "mov"
- with immediate operand, "movhi". Tweak "ldsr".
-
- * v850-opc.c (v850_opcodes): Get ld.[bhw] and st.[bhw]
- correct. Get sld.[bhw] and sst.[bhw] closer.
-
- * v850-opc.c (v850_operands): "not" is a two byte insn
-
- * v850-opc.c (v850_opcodes): Correct bit pattern for setf.
-
- * v850-opc.c (v850_operands): D16 inserts at offset 16!
-
- * v850-opc.c (two): Get order of words correct.
-
- * v850-opc.c (v850_operands): I16 inserts at offset 16!
-
- * v850-opc.c (v850_operands): Add "SR1" and "SR2" for system
- register source and destination operands.
- (v850_opcodes): Use SR1 and SR2 for "ldsr" and "stsr".
-
- * v850-opc.c (v850_opcodes): Fix thinko in "jmp" opcode. Fix
- same thinko in "trap" opcode.
-
- * v850-opc.c (v850_opcodes): Add initializer for size field
- on all opcodes.
-
- * v850-opc.c (v850_operands): D6 -> DS7. References changed.
- Add D8 for 8-bit unsigned field in short load/store insns.
- (IF4A, IF4D): These both need two registers.
- (IF4C, IF4D): Define. Use 8-bit unsigned field.
- (v850_opcodes): For "sld.h", "sld.w", "sst.h", "sst.w", use
- IF4C & IF4D. For "trap" use I5U, not I5. Add IF1 operand
- for "ldsr" and "stsr".
- * v850-opc.c (v850_operands): 3-bit immediate for bit insns
- is unsigned.
-
- * v850-opc.c (v850_opcodes): Correct short store half (sst.h) and
- short store word (sst.w).
-
-Thu Aug 22 16:57:27 1996 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * v850-opc.c (v850_operands): Added insert and extract fields,
- pointers to functions that handle unusual operand encodings.
-
-Thu Aug 22 01:05:24 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850-opc.c (v850_opcodes): Enable "trap".
-
- * v850-opc.c (v850_opcodes): Fix order of displacement
- and register for "set1", "clr1", "not1", and "tst1".
-
-Wed Aug 21 18:46:26 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850-opc.c (v850_operands): Add "B3" support.
- (v850_opcodes): Fix and enable "set1", "clr1", "not1"
- and "tst1".
-
- * v850-opc.c (v850_opcodes): "jmp" has only an R1 operand.
-
- * v850-opc.c: Close unterminated comment.
-
-Wed Aug 21 17:31:26 1996 J.T. Conklin <jtc@hippo.cygnus.com>
-
- * v850-opc.c (v850_operands): Add flags field.
- (v850_opcodes): add move opcodes.
-
-Tue Aug 20 14:41:03 1996 J.T. Conklin <jtc@hippo.cygnus.com>
-
- * Makefile.in (ALL_MACHINES): Add v850-opc.o.
- * configure: (bfd_v850v_arch) Add new case.
- * configure.in: (bfd_v850_arch) Add new case.
- * v850-opc.c: New file.
-
-Mon Aug 19 15:21:38 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-dis.c (print_insn_sparc): Handle little endian sparcs.
-
-Thu Aug 15 13:14:43 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v-opc.c: Add additional information to the opcode
- table to help determinine which instructions can be done
- in parallel.
-
-Thu Aug 15 13:11:13 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-make.sed: Update editing of include pathnames to be
- more general.
-
-Thu Aug 15 16:28:41 1996 James G. Smith <jsmith@cygnus.co.uk>
-
- * arm-opc.h: Added "bx" instruction definition.
-
-Wed Aug 14 17:00:04 1996 Richard Henderson <rth@tamu.edu>
-
- * alpha-opc.c (EV4EXTHWINDEX): Field width should be 8 not 5.
-
-Mon Aug 12 14:30:37 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v-opc.c (d10v_opcodes): Minor fixes to addi and bl.l.
-
-Fri Aug 9 13:21:59 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v-opc.c (d10v_opcodes): Correct 'mv' unit entry to EITHER.
-
-Thu Aug 8 12:43:52 1996 Klaus Kaempf <kkaempf@progis.de>
-
- * makefile.vms: Update for alpha-opc changes.
-
-Wed Aug 7 11:55:10 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * i386-dis.c (print_insn_i386): Actually return the correct value.
- (ONE, OP_ONE): #ifdef out; not used.
-
-Fri Aug 2 17:47:03 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v-opc.c (d10v_opcodes): Added 2 accumulator sub instructions.
- Changed subi operand type to treat 0 as 16.
-
-Wed Jul 31 16:21:41 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c: Add cpushl for the mcf5200. From Ken Rose
- <rose@netcom.com>.
-
-Wed Jul 31 14:39:27 1996 James G. Smith <jsmith@cygnus.co.uk>
-
- * arm-opc.h: (arm_opcodes): Added halfword and sign-extension
- memory transfer instructions. Add new format string entries %h and %s.
- * arm-dis.c: (print_insn_arm): Provide decoding of the new
- formats %h and %s.
-
-Fri Jul 26 11:45:04 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v-opc.c (d10v_operands): Added UNUM4S; a 4-bit accumulator shift.
- (d10v_opcodes): Modified accumulator shift instructions to use UNUM4S.
-
-Fri Jul 26 14:01:43 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * alpha-dis.c (print_insn_alpha_osf): Remove.
- (print_insn_alpha_vms): Remove.
- (print_insn_alpha): Make globally visible. Chose the register
- names based on info->flavour.
- * disassemble.c: Always return print_insn_alpha for the alpha.
-
-Thu Jul 25 15:24:17 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v-dis.c (dis_long): Handle unknown opcodes.
-
-Thu Jul 25 12:08:09 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v-opc.c: Changes to support signed and unsigned numbers.
- All instructions with the same name that have long and short forms
- now end in ".l" or ".s". Divs added.
- * d10v-dis.c: Changes to support signed and unsigned numbers.
-
-Tue Jul 23 11:02:53 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v-dis.c: Change all functions to use info->print_address_func.
-
-Mon Jul 22 15:38:53 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * m68k-opc.c (m68k_opcodes): Make opcode masks for the ColdFire
- move ccr/sr insns more strict so that the disassembler only
- selects them when the addressing mode is data register.
-
-Mon Jul 22 11:25:24 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
- * d10v-opc.c (pre_defined_registers): Declare.
- * d10v-dis.c (print_operand): Now uses pre_defined_registers
- to pick a better name for the registers.
-
-Mon Jul 22 13:47:23 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * sparc-opc.c: Fix opcode values for fpack16, and fpackfix. Fix
- operands for fexpand and fpmerge. From Christian Kuehnke
- <Christian.Kuehnke@arbi.informatik.uni-oldenburg.de>.
-
-Mon Jul 22 13:17:06 1996 Richard Henderson <rth@tamu.edu>
-
- * alpha-dis.c (print_insn_alpha): No longer the user-visible
- print routine. Take new regnames and cpumask arguments.
- Kill the environment variable nonsense.
- (print_insn_alpha_osf): New function. Do OSF/1 style regnames.
- (print_insn_alpha_vms): New function. Do VMS style regnames.
- * disassemble.c (disassembler): Test bfd flavour to pick
- between OSF and VMS routines. Default to OSF.
-
-Thu Jul 18 17:19:34 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Call AC_SUBST (INSTALL_SHLIB).
- * configure: Rebuild.
- * Makefile.in (install): Use @INSTALL_SHLIB@.
-
-Wed Jul 17 14:39:05 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * configure: (bfd_d10v_arch) Add new case.
- * configure.in: (bfd_d10v_arch) Add new case.
- * d10v-dis.c: New file.
- * d10v-opc.c: New file.
- * disassemble.c (disassembler) Add entry for d10v.
-
-Wed Jul 17 10:12:05 1996 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * m68k-opc.c (m68k_opcodes): Fix bugs in coldfire insns relating
- to bcc, trapfl, subxl, and wddata discovered by Andreas Schwab.
-
-Mon Jul 15 16:59:55 1996 Stu Grossman (grossman@critters.cygnus.com)
-
- * i386-dis.c: Get rid of print_insn_i8086. Use info.mach to
- distinguish between variants of the instruction set.
- * sparc-dis.c: Get rid of print_insn_sparclite. Use info.mach to
- distinguish between variants of the instruction set.
-
-Fri Jul 12 10:12:01 1996 Stu Grossman (grossman@critters.cygnus.com)
-
- * i386-dis.c (print_insn_i8086): New routine to disassemble using
- the 8086 instruction set.
- * i386-dis.c: General cleanups. Make most things static. Add
- prototypes. Get rid of static variables aflags and dflags. Pass
- them as args (to almost everything).
-
-Thu Jul 11 11:58:44 1996 Jeffrey A Law (law@cygnus.com)
-
- * h8300-dis.c (bfd_h8_disassemble): Handle macregs in ldmac insns.
-
- * h8300-dis.c (bfd_h8_disassemble): Handle "ldm.l" and "stm.l".
-
- * h8300-dis.c (bfd_h8_disassemble): "abs" is implicitly two
- if the next arg is marked with SRC_IN_DST. Gross.
-
- * h8300-dis.c (bfd_h8_disassemble): Print "exr" when
- we're looking for and find EXR.
-
- * h8300-dis.c (bfd_h8_disassemble): We don't have a match
- if we're looking for KBIT and we don't find it.
-
- * h8300-dis.c (bfd_h8_disassemble): Mask off unwanted bits
- for L_3 and L_2.
-
- * h8300-dis.c (bfd_h8_disassemble): Don't set plen for
- 3bit immediate operands.
-
-Tue Jul 9 10:55:20 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * Released binutils 2.7.
-
- * alpha-opc.c: Add new case of "mov". From Klaus Kaempf
- <kkaempf@progis.ac-net.de>.
-
-Thu Jul 4 11:42:51 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * alpha-opc.c: Correct second case of "mov" to use OPRL.
-
-Wed Jul 3 16:03:47 1996 Stu Grossman (grossman@critters.cygnus.com)
-
- * sparc-dis.c (print_insn_sparclite): New routine to print
- sparclite instructions.
-
-Wed Jul 3 14:21:18 1996 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * m68k-opc.c (m68k_opcodes): Add coldfire support.
-
-Fri Jun 28 15:53:51 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-opc.c (asi_table): Add #ASI_N, #ASI_N_L, #ASI_NUCLEUS,
- #ASI_NUCLEUS_LITTLE. Rename #ASI_AS_IF_USER_{PRIMARY,SECONDARY}_L
- to #ASI_AS_IF_USER_{PRIMARY,SECONDARY}_LITTLE.
-
-Tue Jun 25 22:58:31 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
-
- * Makefile.in (bindir, libdir, datadir, mandir, infodir, includedir):
- Use autoconf-set values.
- (docdir, oldincludedir): Removed.
- * configure.in (AC_PREREQ): autoconf 2.5 or higher.
-
-Fri Jun 21 13:53:36 1996 Richard Henderson <rth@tamu.edu>
-
- * alpha-opc.c: New file.
- * alpha-opc.h: Remove.
- * alpha-dis.c: Complete rewrite to use new opcode table.
- * configure.in: For bfd_alpha_arch, use alpha-opc.o.
- * configure: Rebuild with autoconf 2.10.
- * Makefile.in (ALL_MACHINES): Add alpha-opc.o.
- (alpha-dis.o): Depend upon $(INCDIR)/opcode/alpha.h, not
- alpha-opc.h.
- (alpha-opc.o): New target.
-
-Wed Jun 19 15:55:12 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * sparc-dis.c (print_insn_sparc): Remove unused local variable i.
- Set imm_added_to_rs1 even if the source and destination register
- are not the same.
-
- * sparc-opc.c: Add some two operand forms of the wr instruction.
-
-Tue Jun 18 15:58:27 1996 Jeffrey A. Law <law@rtl.cygnus.com>
-
- * h8300-dis.c (bfd_h8_disassemble): Rename "hmode" argument
- to just "mode".
-
- * disassemble.c (disassembler): Handle H8/S.
- * h8300-dis.c (print_insn_h8300s): New function for H8/S.
-
-Tue Jun 18 18:06:50 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * sparc-opc.c: Add beq/teq as aliases for be/te.
-
- * ppc-opc.c: Fix fcmpo opcode. From Sergei Steshenko
- <sergei@msil.sps.mot.com>.
-
-Tue Jun 18 15:08:54 1996 Klaus Kaempf <kkaempf@progis.de>
-
- * makefile.vms: New file.
-
- * alpha-dis.c (print_insn_alpha): Print lda ra,lit(rz) as mov.
-
-Mon Jun 10 18:50:38 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * h8300-dis.c (bfd_h8_disassemble): Always print ABS8MEM with :8,
- regardless of plen.
-
-Tue Jun 4 09:15:53 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * i386-dis.c (OP_OFF): Call append_prefix.
-
-Thu May 23 15:18:23 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * ppc-opc.c (instruction encoding macros): Add explicit casts to
- unsigned long to silence a warning from the Solaris PowerPC
- compiler.
-
-Thu Apr 25 19:33:32 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-opc.c (sparc_opcodes): Add ultrasparc vis extensions.
-
-Mon Apr 22 17:12:35 1996 Doug Evans <dje@blues.cygnus.com>
-
- * sparc-dis.c (X_IMM,X_SIMM): New macros.
- (X_IMM13): Delete.
- (print_insn_sparc): Merge cases i,I,j together. New cases X,Y.
- * sparc-opc.c (sparc_opcodes): Use X for 5 bit shift constants,
- Y for 6 bit shift constants. Rewrite entries for crdcxt, cwrcxt,
- cpush, cpusha, cpull sparclet insns.
-
-Wed Apr 17 14:20:22 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-dis.c (compute_arch_mask): Replace ANSI style def with K&R.
-
-Thu Apr 11 17:30:02 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * sparc-opc.c: Set F_FBR on floating point branch instructions.
- Set F_FLOAT on other floating point instructions.
-
-Mon Apr 8 17:02:48 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * ppc-opc.c (PPC860): Macro for 860/821 specific instructions and
- registers.
- (powerpc_opcodes): Add 860/821 specific SPRs.
-
-Mon Apr 8 14:00:44 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Permit --enable-shared to specify a list of
- directories. Set and substitute BFD_PICLIST.
- * configure: Rebuild.
- * Makefile.in (BFD_PICLIST): Rename from BFD_LIST. Change all
- uses. Set to @BFD_PICLIST@.
-
-Fri Apr 5 17:12:27 1996 Jeffrey A Law (law@cygnus.com)
-
- * h8300-dis.c (bfd_h8_disassemble): Use "bit" for L_3 immediates,
- not "abs", which may be needed for the absolute in something
- like btst #0,@10:8. Print L_3 immediates separately from other
- immediates. Change ABSMOV reference to ABS8MEM.
-
-Wed Apr 3 10:40:45 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-dis.c (opcodes_initialized): Move inside print_insn_sparc.
- (current_arch_mask): New static global.
- (compute_arch_mask): New static function.
- (print_insn_sparc): Delete sparc_v9_p. New static local
- current_mach. Resort opcode table if current_mach changes.
- Generalize "insn not supported" test.
- (compare_opcodes): Prefer supported opcodes to nonsupported ones.
- Delete test for v9/!v9.
- * sparc-opc.c (MASK_*): Use SPARC_OPCODE_ARCH_MASK.
- (v6notlet): Define.
- (brfc): Split into CBR and FBR for coprocessor/fp branches.
- (brfcx): Renamed to FBRX.
- (condfc): Renamed to CONDFC. Pass v6notlet to CBR (standard
- coprocessor mnemonics are not supported on the sparclet).
- (condf): Renamed to CONDF.
- (SLCBCC2): Delete F_ALIAS flag.
-
-Sat Mar 30 21:45:59 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-opc.c (sparc_opcodes): rd must be 0 for
- mov foo,{%y,%psr,%wim,%tbr}. Support mov foo,%asrX.
-
-Fri Mar 29 13:02:40 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (config.status): Depend upon BFD VERSION file, so
- that the shared library version number is set correctly.
-
-Tue Mar 26 15:47:14 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Use AC_CHECK_TOOL to find ar and ranlib. From
- Miles Bader <miles@gnu.ai.mit.edu>.
- * configure: Rebuild.
-
-Sat Mar 16 13:04:07 1996 Fred Fish <fnf@cygnus.com>
-
- * z8kgen.c (internal, gas): Call xmalloc rather than unchecked
- malloc.
-
-Tue Mar 12 12:14:10 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure: Rebuild with autoconf 2.8.
-
-Thu Mar 7 15:11:10 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc-dis.c (print_insn_sparc): Handle 'O' operand char like 'r'.
- * sparc-opc.c (sparc_opcodes): Use 'O' operand char for `neg reg'.
-
-Tue Mar 5 15:51:57 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Don't set SHLIB or SHLINK to an empty string,
- since they appear as targets in Makefile.in.
- * configure: Rebuild.
-
-Mon Feb 26 13:03:40 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-make.sed: Edit out shared library support bits.
-
-Tue Feb 20 20:48:28 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc-opc.c (v8,v6notv9): Add MASK_SPARCLET.
- (sparc_opcode_archs): Add MASK_V8 to sparclet entry.
- (sparc_opcodes): Add sparclet insns.
- (sparclet_cpreg_table): New static local.
- (sparc_{encode,decode}_sparclet_cpreg): New functions.
- * sparc-dis.c (print_insn_sparc): Handle sparclet cpregs.
-
-Tue Feb 20 11:02:44 1996 Alan Modra <alan@mullet.Levels.UniSA.Edu.Au>
-
- * i386-dis.c (index16): New static variable.
- (putop): Print jecxz for 32 bit case, jcxz for 16 bit, not the
- other way around.
- (OP_indirE): Return result of OP_E.
- (OP_E): Check for 16 bit addressing mode, and disassemble
- correctly. Optimised 32 bit case a little. Don't print
- "(base,index,scale)" when sib specifies only an offset.
-
-Mon Feb 19 12:32:17 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Set and substitute SHLIB_DEP.
- * configure: Rebuild.
- * Makefile.in (SHLIB_DEP): New variable.
- (LIBIBERTY_LISTS, BFD_LIST): New variables.
- (stamp-piclist): Depend upon LIBIBERTY_LISTS and BFD_LIST. If
- COMMON_SHLIB, add them to piclist with appropriate modifications.
- ($(SHLIB)): Depend upon $(SHLIB_DEP). Don't check COMMON_SHLIB
- here: just use piclist.
-
-Mon Feb 19 02:03:50 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc-dis.c (MASK_V9,V9_ONLY_P,V9_P): Define.
- (print_insn_sparc): Rewrite v9/not-v9 tests.
- (compare_opcodes): Likewise.
- * sparc-opc.c (MASK_<ARCH>): Define.
- (v6,v7,v8,sparclite,v9,v9a): Redefine.
- (sparclet,v6notv9): Define.
- (sparc_opcode_archs): Delete member `conflicts'. Add `supported'.
- (sparc_opcodes): Delete F_NOTV9, use v6notv9 instead.
-
-Thu Feb 15 14:45:05 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Call AC_PROG_CC before configure.host.
- * configure: Rebuild.
-
- * Makefile.in (SONAME): Remove leading ../bfd/ from $(SHLIB).
-
-Wed Feb 14 19:01:27 1996 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386-dis.c (onebyte_has_modrm): New static array.
- (twobyte_has_modrm): New static array.
- (print_insn_i386): Only fetch the mod/reg/rm byte if it is needed.
-
-Tue Feb 13 15:15:01 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in ($(SHLINK)): Check ts against $(SHLIB), not
- $(SHLINK).
-
-Mon Feb 12 16:26:06 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * ppc-opc.c (PPC): Undef, so default defination on Windows NT
- doesn't conflict.
-
-Wed Feb 7 13:59:54 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c (m68k_opcodes): The bkpt instruction is supported on
- m68010up, not just m68020up | cpu32.
-
- * Makefile.in (SONAME): New variable.
- ($(SHLINK)): Make a link to the transformed name, as well.
- (stamp-tshlink): New target.
- (install): Skip stamp-tshlink during install.
-
-Tue Feb 6 12:28:54 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Call AC_ARG_PROGRAM.
- * configure: Rebuild.
- * Makefile.in (program_transform_name): New variable.
- (install): Transform library name before installing it.
-
-Mon Feb 5 16:14:42 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * i960-dis.c (mem): Add HX dcinva instruction.
-
- Support for building as a shared library, based on patches from
- Alan Modra <alan@spri.levels.unisa.edu.au>:
- * configure.in: Add AC_ARG_ENABLE for shared and commonbfdlib.
- New substitutions: ALLLIBS, PICFLAG, SHLIB, SHLIB_CC,
- SHLIB_CFLAGS, COMMON_SHLIB, SHLINK.
- * configure: Rebuild.
- * Makefile.in (ALLLIBS): New variable.
- (PICFLAG, SHLIB, SHLIB_CC, SHLIB_CFLAGS): New variables.
- (COMMON_SHLIB, SHLINK): New variables.
- (.c.o): If PICFLAG is set, compile twice, once PIC, once normal.
- (STAGESTUFF): Remove variable.
- (all): Depend upon $(ALLLIBS) rather than $(TARGETLIB).
- (stamp-piclist, piclist): New targets.
- ($(SHLIB), $(SHLINK)): New targets.
- ($(OFILES)): Depend upon stamp-picdir.
- (disassemble.o): Build twice if PICFLAG is set.
- (MOSTLYCLEAN): Add pic/*.o.
- (clean): Remove $(SHLIB), $(SHLINK), piclist, and stamp-piclist.
- (distclean): Remove pic and stamp-picdir.
- (install): Install shared libraries.
- (stamp-picdir): New target.
-
-Fri Feb 2 17:15:25 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc-dis.c (print_insn_sparc): Delete DISASM_RAW_INSN support.
- Print unknown instruction as "unknown", rather than in hex.
-
-Tue Jan 30 14:06:08 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * dis-buf.c: Include "sysdep.h" before "dis-asm.h".
-
-Thu Jan 25 20:24:07 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc-opc.c (sparc_opcode_archs): Mark v8/sparclite as conflicting.
-
-Thu Jan 25 11:56:49 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * i386-dis.c (print_insn_i386): Only fetch the mod/reg/rm byte
- when necessary. From Ulrich Drepper
- <drepper@myware.rz.uni-karlsruhe.de>.
-
-Thu Jan 25 03:39:10 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc-dis.c (print_insn_sparc): NUMOPCODES replaced with
- sparc_num_opcodes. Update architecture enum values.
- * sparc-opc.c (sparc_opcode_archs): Replaces architecture_pname.
- (sparc_opcode_lookup_arch): New function.
- (sparc_num_opcodes): Renamed from bfd_sparc_num_opcodes.
- (sparc_opcodes): Add v9a shutdown insn.
-
-Mon Jan 22 08:29:59 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc-dis.c (print_insn_sparc): Renamed from print_insn.
- If DISASM_RAW_INSN, print insn in hex. Handle v9a as opcode
- architecture.
- (print_insn_sparc64): Deleted.
- * disassemble.c (disassembler, case bfd_arch_sparc): Always use
- print_insn_sparc.
-
- * sparc-opc.c (architecture_pname): Add v9a.
-
-Fri Jan 12 14:35:58 1996 David Mosberger-Tang <davidm@AZStarNet.com>
-
- * alpha-opc.h (alpha_insn_set): VAX floating point opcode was
- incorrectly defined as 0x16 when it should be 0x15.
- (FLOAT_FORMAT_MASK): function code is 11 bits, not just 7 bits!
- (alpha_insn_set): added cvtst and cvttq float ops. Also added
- excb (exception barrier) which is defined in the Alpha
- Architecture Handbook version 2.
- * alpha-dis.c (print_insn_alpha): Fixed special-case decoding for
- OPERATE_FORMAT_CODE type instructions. The bug caused mulq to be
- disassembled as or, for example.
-
-Wed Jan 10 12:37:22 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-dis.c (print_insn_arg): Print cases 'i' and 'u' in hex.
- (_print_insn_mips): Change i from int to unsigned int.
-
-Thu Jan 4 17:21:10 1996 David Edelsohn <edelsohn@mhpcc.edu>
-
- * ppc-opc.c (powerpc_opcodes): tlbi POWER opcode form different
- from tlbie PowerPC opcode. Add PPC603 tlbld and tlbli.
-
-Thu Dec 28 13:29:19 1995 John Hassey <hassey@rtp.dg.com>
-
- * i386-dis.c: Added Pentium Pro instructions.
-
-Tue Dec 19 22:56:35 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * ppc-opc.c (fsqrt{,.}): Duplicate for PowerPC in addition to
- being for Power2.
-
-Fri Dec 15 14:14:15 1995 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * sh-opc.h (sh_nibble_type): Added REG_B.
- (sh_arg_type): Added A_REG_B.
- (sh_table): Added pref and bank reg versions of ldc, ldc.l, stc
- and stc.l opcodes.
- * sh-dis.c (print_insn_shx): Added cases for REG_B and A_REG_B.
-
-Fri Dec 15 16:44:31 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * disassemble.c (disassembler): Use new bfd_big_endian macro.
-
-Tue Dec 12 12:22:24 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (distclean): Remove stamp-h. From Ronald
- F. Guilmette <rfg@monkeys.com>.
-
-Tue Dec 5 13:42:44 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- From David Mosberger-Tang <davidm@azstarnet.com>:
- * alpha-dis.c (print_insn_alpha): fixed decoding of cpys
- instruction.
-
-Mon Dec 4 12:29:05 1995 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * sh-opc.h (sh_arg_type): Added A_SSR and A_SPC.
- (sh_table): Added many SH3 opcodes.
- * sh-dis.c (print_insn_shx): Added cases for A_SSR and A_SPC.
-
-Fri Dec 1 07:42:18 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * ppc-opc.c (subfc., subfco): Mark this PPCCOM, not PPC.
- (subco,subco.): Mark this PPC, not PPCCOM.
-
-Mon Nov 27 13:09:52 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure: Rebuild with autoconf 2.7.
-
-Tue Nov 21 18:28:06 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure: Rebuild with autoconf 2.6.
-
-Wed Nov 15 19:02:53 1995 Ken Raeburn <raeburn@cygnus.com>
-
- * configure.in: Sort list of architectures. Accept but do nothing
- for alliant, convex, pyramid, romp, and tahoe.
-
-Wed Nov 8 20:18:59 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * a29k-dis.c (print_special): Change num to unsigned int.
-
-Wed Nov 8 20:10:35 1995 Eric Freudenthal <freudenthal@nyu.edu>
-
- * a29k-dis.c (print_insn): Cast insn24 to unsigned long when
- shifting it.
-
-Tue Nov 7 15:21:06 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Call AC_CHECK_PROG to find and cache AR.
- * configure: Rebuilt.
-
-Mon Nov 6 17:39:47 1995 Harry Dolan <dolan@ssd.intel.com>
-
- * configure.in: Add case for bfd_i860_arch.
- * configure: Rebuild.
-
-Fri Nov 3 12:45:31 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c (m68k_opcodes): Correct fmoveml operands.
- * m68k-dis.c (NEXTSINGLE): Change i to unsigned int.
- (NEXTDOUBLE): Likewise.
- (print_insn_m68k): Don't match fmoveml if there is more than one
- register in the list.
- (print_insn_arg): Handle a place of '8' for a type of 'L'.
-
-Thu Nov 2 23:06:33 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c: Use #W rather than #w.
- * m68k-dis.c (print_insn_arg): Handle new 'W' place.
-
-Wed Nov 1 13:30:24 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c (m68k_opcode_aliases): Add dbfw as an alias for dbf,
- and likewise for all the dbxx opcodes.
-
-Mon Oct 30 20:50:40 1995 Fred Fish <fnf@cygnus.com>
-
- * arc-dis.c: Include elf-bfd.h rather than libelf.h.
-
-Mon Oct 23 11:11:34 1995 James G. Smith <jsmith@pasanda.cygnus.co.uk>
-
- * mips-opc.c: Added shorthand (V1) for INSN_4100 manifest. Added
- the VR4100 specific instructions to the mips_opcodes structure.
-
-Thu Oct 19 11:05:23 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-config.in, mpw-make.sed: Remove ugly workaround for
- ugly Metrowerks bug in CW6, is fixed in CW7.
-
-Mon Oct 16 12:59:01 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * ppc-opc.c (whole file): Add flags for common/any support.
-
-Tue Oct 10 11:06:07 1995 Fred Fish <fnf@cygnus.com>
-
- * Makefile.in (BISON): Remove macro.
- (FLAGS_TO_PASS): Remove BISON.
-
-Fri Oct 6 16:26:45 1995 Ken Raeburn <raeburn@cygnus.com>
-
- Mon Sep 25 22:49:32 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * m68k-dis.c (print_insn_m68k): Recognize all two-word
- instructions that take no args by looking at the match mask.
- (print_insn_arg): Always print "%" before register names.
- [case 'c']: Use "nc" for the no-cache case, as recognized by gas.
- [case '_']: Don't print "@#" before address.
- [case 'J']: Use "%s" as format string, not register name.
- [case 'B']: Treat place == 'C' like 'l' and 'L'.
-
-Thu Oct 5 22:16:20 1995 Ken Raeburn <raeburn@cygnus.com>
-
- * i386-dis.c: Describe cmpxchg8b operand, and spell the opcode
- name correctly.
-
-Tue Oct 3 08:30:20 1995 steve chamberlain <sac@slash.cygnus.com>
-
- From David Mosberger-Tang <davidm@azstarnet.com>
-
- * alpha-opc.h (MEMORY_FUNCTION_FORMAT_MASK): added.
- (alpha_insn_set): added definitions for VAX floating point
- instructions (Unix compilers don't generate these, but handcoded
- assembly might still use them).
-
- * alpha-dis.c (print_insn_alpha): added support for disassembling
- the miscellaneous instructions in the Alpha instruction set.
-
-Tue Sep 26 18:47:20 1995 Stan Shebs <shebs@andros.cygnus.com>
-
- * mpw-config.in: Add m68k-opc.c.o to BFD_MACHINES for m68k,
- no longer create sysdep.h, sed ppc-opc.c to work around a
- serious Metrowerks C bug.
- * mpw-make.in: Remove.
- * mpw-make.sed: New file, used by mpw-configure to edit
- Makefile.in into an MPW makefile.
-
-Wed Sep 20 12:55:28 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (maintainer-clean): New synonym for realclean.
-
-Tue Sep 19 15:28:36 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c: Split pmove patterns which use 'P' into patterns
- which use '0', '1', and '2' instead. Specify the proper size for
- a pmove immediate operand. Correct the pmovefd patterns to be
- moves to a register, not from a register.
- * m68k-dis.c (print_insn_arg): Replace 'P' with '0', '1', '2'.
-
-Thu Sep 14 11:58:22 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-opc.c (sparc_opcodes): Mark all insns that reference
- %psr, %wim, %tbr as F_NOTV9.
-
-Fri Sep 8 01:07:38 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (Makefile): Just rebuild Makefile when running
- config.status.
- (config.h, stamp-h): New targets.
- * configure.in: Call AC_CONFIG_HEADER and AC_CANONICAL_SYSTEM
- earlier. Don't bother to call AC_ARG_PROGRAM. Touch stamp-h when
- rebuilding config.h.
- * configure: Rebuild.
-
- * mips-opc.c: Change unaligned loads and stores with "t,A"
- operands to use "t,A(b)".
-
-Thu Sep 7 19:02:46 1995 Jim Wilson <wilson@chestnut.cygnus.com>
-
- * sh-dis.c (print_insn_shx): Add F_FR0 support.
-
-Thu Sep 7 19:02:46 1995 Jim Wilson <wilson@chestnut.cygnus.com>
-
- * sh-dis.c (print_insn_shx): Change loop over op->arg[n] to iterate
- until 3 instead of until 2.
-
-Wed Sep 6 21:21:33 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (ALL_CFLAGS): Define.
- (.c.o, disassemble.o): Use $(ALL_CFLAGS).
- (MOSTLYCLEAN): Add config.log.
- (distclean): Don't remove config.log.
- * configure.in: Substitute HDEFINES.
- * configure: Rebuild.
-
-Wed Sep 6 15:08:09 1995 Jim Wilson <wilson@chestnut.cygnus.com>
-
- * sh-opc.h (sh_arg_type): Add F_FR0.
- (sh_table, case fmac): Add F_FR0 as first argument.
-
-Wed Sep 6 15:08:09 1995 Jim Wilson <wilson@chestnut.cygnus.com>
-
- * sh-opc.h (sh_opcode_info): Increase arg array size to 4.
-
-Tue Sep 5 18:28:10 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-dis.c: Remove all references to NO_V9.
-
-Tue Sep 5 20:03:26 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * aclocal.m4: Just include ../bfd/aclocal.m4.
- * configure: Rebuild.
-
-Tue Sep 5 16:09:59 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-dis.c (X_DISP19): Define.
- (print_insn, case 'G'): Use it.
- (print_insn, case 'L'): Sign extend displacement.
-
-Mon Sep 4 14:28:46 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * configure.in: Run ../bfd/configure.host before AC_PROG_CC.
- Subsitute CFLAGS and AR. Call AC_PROG_INSTALL. Don't substitute
- host_makefile_frag or frags.
- * aclocal.m4: New file.
- * configure: Rebuild.
- * Makefile.in (INSTALL): Set to @INSTALL@.
- (INSTALL_PROGRAM): Set to @INSTALL_PROGRAM@.
- (INSTALL_DATA): Set to @INSTALL_DATA@.
- (AR): Set to @AR@.
- (AR_FLAGS): Set to rc rather than qc.
- (CC): Define as @CC@.
- (CFLAGS): Set to @CFLAGS@.
- (@host_makefile_frag@): Remove.
- (config.status): Remove dependency upon @frags@.
-
- * configure.in: ../bfd/config.bfd now just sets shell variables.
- Use them rather than looking through target Makefile fragments.
- * configure: Rebuild.
-
-Thu Aug 31 12:35:32 1995 Jim Wilson <wilson@chestnut.cygnus.com>
-
- * sh-opc.h (ftrc): Change FPUL_N to FPUL_M.
-
-Wed Aug 30 13:52:28 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-opc.c (sparc_opcodes): Delete duplicate wr %y insn.
- Add clrx, iprefetch, signx, clruw, cas, casl, casx, casxl synthetic
- sparc64 insns.
-
- * sparc-opc.c (sparc_opcodes): Fix prefetcha insn.
- (lookup_{name,value}): New functions.
- (prefetch_table): New static local.
- (sparc_{encode,decode}_prefetch): New functions.
- * sparc-dis.c (print_insn): Handle '*' arg (prefetch function).
-
-Wed Aug 30 11:11:58 1995 Jim Wilson <wilson@chestnut.cygnus.com>
-
- * sh-opc.h: Add blank lines to improve readabililty of sh3e
- instructions.
-
-Wed Aug 30 11:09:38 1995 Jim Wilson <wilson@chestnut.cygnus.com>
-
- * sh-dis.c: Correct comment on first line of file.
-
-Tue Aug 29 15:37:18 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * disassemble.c (disassembler): Handle bfd_mach_sparc64.
-
- * sparc-opc.c (asi, membar): New static locals.
- (sparc_{encode,decode}_{asi,membar}): New functions.
- (sparc_opcodes, membar insn): Fix.
- * sparc-dis.c (print_insn): Call sparc_decode_asi.
- Support decoding of membar masks.
- (X_MEMBAR): Define.
-
-Sat Aug 26 21:22:48 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c (m68k_opcode_aliases): Add br, brs, brb, brw, brl.
-
-Mon Aug 21 17:33:36 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c (m68k_opcode_aliases): Add bhib as an alias for bhis,
- and likewise for the other branches. Add bhs as an alias for bcc,
- and likewise for the size variants. Add dbhs as an alias for
- dbcc.
-
-Fri Aug 11 13:40:24 1995 Jeff Law (law@snake.cs.utah.edu)
-
- * sh-opc.h (FP sts instructions): Update to match reality.
-
-Mon Aug 7 16:12:58 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-dis.c: (fpcr_names): Add % before all register names.
- (reg_names): Likewise.
- (print_insn_arg): Don't explicitly print % before register names.
- Add % before register names in static array names. In case 'r',
- print data registers as `@(Dn)', not `Dn@'. When printing a
- memory address, don't print @# before it.
- (print_indexed): Change base_disp and outer_disp from int to
- bfd_vma. Print using MIT syntax, not mutant invalid Motorola
- syntax. Sign extend 8 byte displacement correctly.
- (print_base): Print using MIT syntax. Print zpc when appropriate.
- Change parameter disp from int to bfd_vma.
-
- * m68k-opc.c (m68k_opcode_aliases): Add jsrl and jsrs as aliases
- for jsr.
-
-Mon Aug 7 02:21:40 1995 Jeff Law (law@snake.cs.utah.edu)
-
- * sh-dis.c (print_insn_shx): Handle new operand types F_REG_N,
- F_REG_M, FPSCR_M, FPSCR_N, FPUL_M and FPUL_N.
- * sh-opc.h (sh_arg_type): Add new operand types.
- (sh_table): Add new opcodes from SH3E Floating Point ISA.
-
-Sat Aug 5 16:50:14 1995 Fred Fish <fnf@cygnus.com>
-
- * Makefile.in (distclean): Remove generated file config.h.
-
-Sat Aug 5 16:50:14 1995 Fred Fish <fnf@cygnus.com>
-
- * Makefile.in (distclean): Remove generated file config.h.
-
-Wed Aug 2 18:33:40 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k-opc.c: New file, holding tables from include/opcode/m68k.h.
- Clean up tables.
- * m68k-dis.c: Remove BREAK_UP_BIG_DECL stuff.
- (opcode): Remove.
- (print_insn_m68k): Change d to be const. Use m68k_numopcodes
- rather than numopcodes. Use m68k_opcodes rather than removed
- opcode function. Don't check F_ALIAS.
- (print_insn_arg): Change first parameter to be const char *.
- * Makefile.in (ALL_MACHINES): Add m68k-opc.o.
- (m68k-opc.o): New target.
- * configure.in: Build m68k-opc.o for bfd_m68k_arch.
- * configure: Rebuild.
-
-Wed Aug 2 08:23:38 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-dis.c (HASH_SIZE, HASH_INSN): Define.
- (opcode_bits, opcode_hash_table): New variables.
- (opcodes_initialized): Renamed from opcodes_sorted.
- (build_hash_table): New function.
- (is_delayed_branch): Use hash table.
- (print_insn): Renamed from print_insn_sparc, made static.
- Build and use hash table. If !sparc64, ignore sparc64 insns,
- and vice-versa if sparc64.
- (print_insn_sparc, print_insn_sparc64): New functions.
- (compare_opcodes): Move sparc64 opcodes to end.
- Print commutative insns with constant second.
- * sparc-opc.c (all non-v9 insns): Use flag F_NOTV9 instead of F_ALIAS.
-
-Tue Aug 1 00:12:49 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * sh-dis.c (print_insn_shx): Remove unused local dslot. Use
- print_address_func for A_BDISP12 and A_BDISP8. Correct test which
- avoids printing a delay slot in a delay slot.
- * sh-opc.h (sh_table): Fully bracket last entry.
-
-Mon Jul 31 12:04:47 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc-opc.c (sllx, srax, srlx): Fix disassembly.
-
-Wed Jul 12 00:59:34 1995 Ken Raeburn <raeburn@kr-pc.cygnus.com>
-
- * configure.in: Get host_makefile_frag from ${srcdir}.
-
- * configure.in: Autoconfiscated. Check for string[s].h. Create
- config.h from config.in. Don't set up sysdep.h link.
- * sysdep.h: New file.
- * configure, config.in: New files, generated from configure.in.
- * Makefile.in: Updated to be processed autoconf-style.
- (distclean): Keep sysdep.h. Remove config.log and config.cache.
- (Makefile): Depend on config.status.
- (config.status): New rule.
- * configure.bat: Update Makefile substitutions.
-
-Tue Jul 11 14:23:37 1995 Jeff Spiegel <jeffs@lsil.com>
-
- * mips-opc.c (L1): Define.
- (mips_opcodes): Add R4010 instructions: flushi, flushd, flushid,
- addciu, madd, maddu, ffc, ffs, msub, msubu, selsi, selsr, waiti,
- and wb.
-
-Tue Jul 11 11:49:49 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * mips-opc.c (mips_opcodes): For the move pseudo-op, prefer daddu
- if ISA 3 and addu otherwise, replacing or, since some MIPS chips
- have multiple add units but only a single logical unit.
-
- * ppc-opc.c (powerpc_operands): Change CR to use a bitsize of 3,
- shifted by 18, without any insertion or extraction function.
- (insert_cr, extract_cr): Remove.
-
-Wed Jun 21 20:05:39 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * m68k-dis.c (print_insn_arg, print_indexed): Print "%" before
- register names.
+ * Makefile.am: Update dependencies with "make dep-am"
+ * Makefile.in: Regenerate.
-Thu Jun 15 17:23:31 1995 Stan Shebs <shebs@andros.cygnus.com>
+2000-05-25 Alexandre Oliva <aoliva@redhat.com>
- * mpw-config.in: Add sh and i386 configs, remove sparc config.
- * sh-opc.h: Add copyright.
+ * m10300-dis.c (disassemble): Don't assume 32-bit longs when
+ sign-extending operands.
-Mon Jun 5 03:30:43 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
+2000-05-15 Donald Lindsay <dlindsay@redhat.com>
- * Makefile.in (crunch-m68k): Delete extra target accidentally
- checked in a while ago.
+ * d10v-opc.c (d10v_opcodes): add ALONE tag to all short branches
+ except brf's.
-Wed May 24 16:22:13 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+2000-05-21 Nick Clifton <nickc@redhat.com>
- * sh-opc.h (sh_table): Add SH3 support.
+ * Makefile.am (LIBIBERTY): Define.
-Wed May 24 14:16:08 1995 Steve Chamberlain <sac@slash.cygnus.com>
+2000-05-19 Diego Novillo <dnovillo@redhat.com>
- * sh-opc.h: Added bsrf and braf.
+ * mips-dis.c (REGISTER_NAMES): Rename to STD_REGISTER_NAMES.
+ (STD_REGISTER_NAMES): New name for REGISTER_NAMES.
+ (reg_names): Rename to std_reg_names. Change it to a char **
+ static variable.
+ (std_reg_names): New name for reg_names.
+ (set_mips_isa_type): Set reg_names to point to std_reg_names by
+ default.
-Wed May 10 14:28:16 1995 Richard Earnshaw (rearnsha@armltd.co.uk)
+2000-05-16 Frank Ch. Eigler <fche@redhat.com>
- * arm-opc.h (arm_opcodes): Add 64-bit multiply patterns. Delete
- bogus [ls]fm{ea,fd} patterns.
+ * fr30-desc.h: Partially regenerated to account for changed
+ CGEN_MAX_* -> CGEN_ACTUAL_MAX_* macros.
+ * m32r-desc.h: Ditto.
- * arm-opc.h (arm_opcodes): Correct typos in stm, ldm, std, and ldc.
- * arm-dis.c (print_insn_arm): Make GIVEN a parameter, don't try and
- initialize it from memory. Make function static.
- (print_insn_{big,little}_arm): New functions.
- * disassemble.c (disassembler, case bfd_arch_arm): Disassemble for
- the correct endianness.
+2000-05-15 Nick Clifton <nickc@redhat.com>
-Mon Apr 24 14:18:05 1995 Jason Molenda (crash@phydeaux.cygnus.com>
+ * arm-opc.h: Use upper case for flasg in MSR and MRS
+ instructions. Allow any bit to be set in the field_mask of
+ the MSR instruction.
- * sh-opc.h (sh_nibble_type, sh_arg_type): remove trailing , from
- enum list.
+ * arm-dis.c (print_insn_arm): Decode _x and _s bits of the
+ field_mask of an MSR instruction.
-Wed Apr 19 14:07:03 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+2000-05-11 Thomas de Lellis <tdel@windriver.com>
- * m68k-dis.c (opcode): Finish change made by Kung Hsu on April
- 17th, so that it builds again using GCC as the compiler.
+ * arm-opc.c: Disassembly of thumb ldsb/ldsh
+ instructions changed to ldrsb/ldrsh.
-Tue Apr 18 12:14:51 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+2000-05-11 Ulf Carlsson <ulfc@engr.sgi.com>
- * mips-dis.c (print_insn_little_mips): Cast return value from
- bfd_getl32 from bfd_vma to unsigned long, because _print_insn_mips
- expects an unsigned long, and that might be fewer words of
- argument storage (e.g., if bfd_vma is long long on a 32-bit
- machine).
- (print_insn_big_mips): Likewise with bfd_getb32 value.
- (_print_insn_mips): Now static.
+ * mips-dis.c (print_insn_arg): Don't mask top 32 bits of 64-bit
+ target addresses for 'jal' and 'j'.
-Mon Apr 17 12:23:28 1995 Kung Hsu <kung@rtl.cygnus.com>
+2000-05-10 Geoff Keating <geoffk@redhat.com>
- * m68k-dis.c: Take out #define BREAK_UP_BIG_DECL kludge, because
- gcc memory hog problem with initializer is fixed.
+ * ppc-opc.c (powerpc_opcodes): Make the predicted-branch opcodes
+ also available in common mode when powerpc syntax is being used.
-Mon Apr 10 15:55:01 1995 Stan Shebs <shebs@andros.cygnus.com>
+2000-05-08 Alan Modra <alan@linuxcare.com.au>
- Merge in support for Mac MPW as a host.
- (Old change descriptions retained for informational value.)
+ * m68k-dis.c (dummy_printer): Add ATTRIBUTE_UNUSED to args.
+ (dummy_print_address): Ditto.
- * mpw-config.in (archname): Compute from the config.
- (BFD_MACHINES, ARCHDEFS): Put into mk.tmp.
+2000-05-04 Timothy Wall <twall@redhat.com>
- * mpw-config.in (target_arch): Compute from canonical target.
- (m68k, mips, powerpc, sparc): Add architectures.
- * mpw-make.in (disassemble.c.o): Add.
- (ALL_CFLAGS): Remove special flags (-mc68020 -mc68881 -model far).
+ * tic54x-opc.c: New.
+ * tic54x-dis.c: New.
+ * disassemble.c (disassembler): Add ARCH_tic54x.
+ * configure.in: Added tic54x target.
+ * configure: Ditto.
+ * Makefile.am: Add tic54x dependencies.
+ * Makefile.in: Ditto.
- * mpw-config.in (BFD_MACHINES): Set to a default value.
- * mpw-make.in (BFD_MACHINES): Remove wired-in value.
+2000-05-03 J.T. Conklin <jtc@redback.com>
- * mpw-make.in (CSEARCH): Add extra-include to search path.
+ * ppc-opc.c (VA, VB, VC, VD, VS, SIMM, UIMM, SHB): New macros, for
+ vector unit operands.
+ (VX, VX_MASK, VXA, VXA_MASK, VXR, VXR_MASK): New macros, for vector
+ unit instruction formats.
+ (PPCVEC): New macro, mask for vector instructions.
+ (powerpc_operands): Add table entries for above operand types.
+ (powerpc_opcodes): Add table entries for vector instructions.
- * mpw-config.in (varargs.h): Don't create.
- (sysdep.h): Create using forward-include.
- * mpw-make.in (CSEARCH): Add include/mpw to search path.
+ * ppc-dis.c (print_insn_big_powerpc): Add PPC_OPCODE_ALTIVEC to mask.
+ (print_insn_little_powerpc): Likewise.
+ (print_insn_powerpc): Prepend 'v' when printing vector registers.
- * mpw-config.in: New file, MPW version of configure.in.
- * mpw-make.in: New file, MPW version of Makefile.in.
+2000-04-24 Clinton Popetz <cpopetz@redhat.com>
-Fri Mar 31 14:23:38 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+ * configure.in: Add bfd_powerpc_64_arch.
+ * disassemble.c (disassembler): Use print_insn_big_powerpc for
+ 64 bit code.
- * alpha-dis.c (print_insn_alpha): Put empty statement after
- default label.
+2000-04-24 Nick Clifton <nickc@redhat.com>
-Tue Mar 21 10:51:40 1995 Jeff Law (law@snake.cs.utah.edu)
+ * fr30-desc.c (fr30_cgen_cpu_open): Initialise signed_overflow
+ field.
- * hppa-dis.c (sign_extend): Delete, redundant with libhppa.h version.
- (low_sign_extend): Likewise.
- (get_field): Delete unused function.
- (set_field, deposit_14, deposit_21): Likewise.
+2000-04-23 Denis Chertykov <denisc@overta.ru>
-Fri Mar 17 15:55:53 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+ * avr-dis.c (reg_fmul_d): New. Extract destination register from
+ FMUL instruction.
+ (reg_fmul_r): New. Extract source register from FMUL instruction.
+ (reg_muls_d): New. Extract destination register from MULS instruction.
+ (reg_muls_r): New. Extract source register from MULS instruction.
+ (reg_movw_d): New. Extract destination register from MOVW instruction.
+ (reg_movw_r): New. Extract source register from MOVW instruction.
+ (print_insn_avr): Handle MOVW, MULS, MULSU, FMUL, FMULS, FMULSU,
+ EICALL, EIJMP, LPM r,Z, ELPM r,Z, SPM, ESPM instructions.
- * i386-dis.c: Support for more pentium opcodes. From Guy Harris
- (guy@netapp.com).
+2000-04-22 Timothy Wall <twall@redhat.com>
-Tue Mar 14 00:52:57 1995 Ken Raeburn (raeburn@kr-pc.cygnus.com)
+ * ia64-gen.c (general): Add an ordered table of primary
+ opcode names, as well as priority fields to disassembly data
+ structures to enforce a preferred disassembly format based on the
+ ordering of the opcode tables.
+ (load_insn_classes): Show a useful message if IC tables are missing.
+ (load_depfile): Ditto.
+ * ia64-asmtab.h (struct ia64_dis_names ): Add priority flag to
+ distinguish preferred disassembly.
+ * ia64-opc-f.c: Reorder some insn for preferred disassembly
+ format. Fix incorrect flag on fma.s/fma.s.s0.
+ * ia64-opc.c: Scan *all* disassembly matches and use the one with
+ the highest priority.
+ * ia64-opc-b.c: Use more abbreviations.
+ * ia64-asmtab.c: Regenerate.
- Sat Feb 11 17:22:41 1995 Klaus Kaempf (kkaempf@didymus.rmi.de)
+2000-04-21 Jason Eckhardt <jle@redhat.com>
- * alpha-opc.h (OSF_ASMCODE): define
- print pal-code names as defined in App C of the
- Alpha Architecture Reference Manual
+ * hppa-dis.c (extract_16): New function.
+ (print_insn_hppa): Fix incorrect handling of 'fe'. Added handling of
+ new operand types l,y,&,fe,fE,fx.
- * alpha-dis.c: cleaned up output
- print stylized code forms as defined in App A.4.3 of the
- Alpha Architecture Reference Manual
+2000-04-21 Richard Henderson <rth@redhat.com>
+ David Mosberger <davidm@hpl.hp.com>
+ Timothy Wall <twall@redhat.com>
+ Bob Manson <manson@charmed.cygnus.com>
+ Jim Wilson <wilson@redhat.com>
-Wed Mar 8 15:21:14 1995 Ian Lance Taylor <ian@cygnus.com>
+ * Makefile.am (HFILES): Add ia64-asmtab.h, ia64-opc.h.
+ (CFILES): Add ia64-dis.c, ia64-opc-a.c, ia64-opc-b.c, ia64-opc-f.c,
+ ia64-opc-i.c, ia64-opc-m.c, ia64-opc-d.c, ia64-opc.c, ia64-gen.c,
+ ia64-asmtab.c.
+ (ALL_MACHINES): Add ia64-dis.lo, ia64-opc.lo.
+ (ia64-ic.tbl, ia64-raw.tbl, ia64-waw.tbl, ia64-war.tbl, ia64-gen,
+ ia64-gen.o, ia64-asmtab.c, ia64-dis.lo, ia64-opc.lo): New rules.
+ * Makefile.in: Rebuild.
+ * configure Rebuild.
+ * configure.in (bfd_ia64_arch): New target.
+ * disassemble.c (ARCH_ia64): Define.
+ (disassembler): Support ARCH_ia64.
+ * ia64-asmtab.c, ia64-asmtab.h, ia64-dis.c, ia64-gen.c ia64-ic.tbl,
+ ia64-opc-a.c, ia64-opc-b.c, ia64-opc-d.c ia64-opc-f.c, ia64-opc-i.c,
+ ia64-opc-m.c, ia64-opc-x.c, ia64-opc.c, ia64-opc.h, ia64-raw.tbl,
+ ia64-war.tbl, ia64-waw.tbl): New files.
- * mips-opc.c: Add new mips4 instructions. Don't set INSN_RFE for
- `rfe'.
- * mips-dis.c (print_insn_arg): Handle new argument types 'h', 'R',
- 'N', and 'M'.
+2000-04-20 Alexandre Oliva <aoliva@redhat.com>
-Wed Mar 8 02:54:05 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+ * m10300-dis.c (HAVE_AM30, HAVE_AM33): Define.
+ (disassemble): Use them.
- * m68k-dis.c (opcode): New function. Returns address of opcode
- table entry given index, even if the opcode table was split to
- work around gcc bugs.
- (print_insn_m68k): Call opcode instead of referencing m68k_opcodes
- directly.
- (BREAK_UP_BIG_DECL): Make secondary array static and const.
- (reg_names): Now const.
- (print_insn_arg): Arrays cacheFieldName and names now const.
- (print_indexed): Array scales now const.
+2000-04-14 Alan Modra <alan@linuxcare.com.au>
-Tue Mar 7 16:41:21 1995 Ian Lance Taylor <ian@cygnus.com>
+ * sysdep.h: Include "ansidecl.h" not <ansidecl.h>
+ * Makefile.am: Update dependencies.
+ * Makefile.in: Regenerate.
- * ppc-opc.c: Sort recently added instructions by minor opcode
- number within major opcode number.
+2000-04-14 Michael Sokolov <msokolov@ivan.Harhan.ORG>
-Mon Mar 6 10:04:36 1995 Jeff Law (law@snake.cs.utah.edu)
+ * a29k-dis.c, alpha-dis.c, alpha-opc.c, arc-dis.c, arc-opc.c,
+ avr-dis.c, d10v-dis.c, d10v-opc.c, d30v-dis.c, d30v-opc.c,
+ disassemble.c, h8300-dis.c, h8500-dis.c, hppa-dis.c, i370-dis.c,
+ i370-opc.c, i960-dis.c, m10200-dis.c, m10200-opc.c, m10300-dis.c,
+ m10300-opc.c, m68k-dis.c, m68k-opc.c, m88k-dis.c, mcore-dis.c,
+ mips-dis.c, mips-opc.c, mips16-opc.c, pj-dis.c, pj-opc.c,
+ ppc-dis.c, ppc-opc.c, sh-dis.c, sparc-dis.c, sparc-opc.c,
+ tic80-dis.c, tic80-opc.c, v850-dis.c, v850-opc.c, vax-dis.c,
+ w65-dis.c, z8k-dis.c, z8kgen.c: Include sysdep.h. Remove
+ ansidecl.h as sysdep.h includes it.
- * hppa-dis.c: Include libhppa.h.
+2000-04-7 Andrew Cagney <cagney@b1.redhat.com>
-Fri Feb 24 19:15:36 1995 Ian Lance Taylor <ian@cygnus.com>
+ * configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add
+ --enable-build-warnings option.
+ * Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions.
+ * Makefile.in, configure: Re-generate.
- * mips-opc.c: Change dli to use M_DLI, and add dla.
+2000-04-05 J"orn Rennecke <amylaar@redhat.com>
-Mon Feb 20 23:54:38 1995 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+ * sh-opc.c (sh_table): Use A_DISP_PC / PCRELIMM_8BY2 for ldre & ldrs.
+ stc GBR,@-<REG_N> is available for arch_sh1_up.
+ Group parallel processing insn with identical mnemonics together.
+ Make three-operand psha / pshl come first.
- * Makefile.in (ALL_MACHINES): Add w65-dis.o.
+2000-04-05 J"orn Rennecke <amylaar@redhat.co.uk>
-Thu Feb 16 17:34:41 1995 Ian Lance Taylor <ian@cygnus.com>
+ * sh-opc.h (sh_nibble_type): Remove DISP_8 and DISP_4.
+ Split IMM_[48]{,BY[24]} into IMM[01]_[48]{,BY[24]}. Add REPEAT.
+ (sh_arg_type): Add A_PC.
+ (sh_table): Update entries using immediates. Add repeat.
+ * sh-dis.c (print_insn_shx): Remove DISP_8 and DISP_4.
+ Split IMM_[48]{,BY[24]} into IMM[01]_[48]{,BY[24]}. Add REPEAT.
- * mips-opc.c: Add r4650 mul instruction.
+2000-04-04 Alan Modra <alan@linuxcare.com.au>
-Wed Feb 15 15:45:20 1995 Ian Lance Taylor <ian@cygnus.com>
+ * po/opcodes.pot: Regenerate.
- * mips-opc.c: Add uld and usd macros for unaligned double load and
- store.
+ * 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.
-Tue Feb 14 13:17:37 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+2000-04-03 Denis Chertykov <denisc@overta.ru>
- * ppc-opc.c (powerpc_opcodes): Add 403GA opcodes rfci, dccci,
- mfdcr, mtdcr, icbt, iccci.
+ * avr-dis.c: Syntax cleanup.
+ (add0fff): Print the pc relative address as a signed number.
+ (add03f8): Likewise.
-Thu Feb 9 12:28:13 1995 Stan Shebs <shebs@andros.cygnus.com>
+2000-04-01 Ian Lance Taylor <ian@zembu.com>
- * i960-dis.c (struct tabent, struct sparse_tabent): Change the
- signed char fields to shorts, more portable.
+ * disassemble.c (disassembler_usage): Don't use a prototype. Mark
+ the parameter ATTRIBUTE_UNUSED.
+ * ppc-opc.c: Add ATTRIBUTE_UNUSED as needed.
-Wed Feb 8 17:29:29 1995 Stan Shebs <shebs@andros.cygnus.com>
+2000-04-01 Alexandre Oliva <aoliva@redhat.com>
- * i960-dis.c (struct tabent, struct sparse_tabent): Declare the
- char fields as signed chars, since they may have negative values.
+ * m10300-opc.c: SP-based offsets are always unsigned.
-Mon Feb 6 10:52:06 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+2000-03-29 Thomas de Lellis <tdel@windriver.com>
- * i386-dis.c (dis386_twobyte): Add cpuid, From Charles Hannum
- (mycroft@netbsd.org).
+ * arm-opc.h (thumb_opcodes): Disassemble 0xde.. to "bal"
+ [branch always] instead of "undefined".
-Mon Jan 30 12:38:00 1995 Ian Lance Taylor <ian@cygnus.com>
+2000-03-27 Nick Clifton <nickc@redhat.com>
- From "Logg, Ed" <elogg@ea.com>:
- * ppc-opc.c (extract_bdm): Correct parenthezisation.
- * ppc-dis.c (print_insn_powerpc): Print .long before unrecognized
- value.
+ * d30v-opc.c (d30v_format_table): Move SHORT_AR to end of list of
+ short instructions, from end of list of long instructions.
-Thu Jan 26 18:32:08 1995 Ian Lance Taylor <ian@cygnus.com>
+2000-03-27 Ian Lance Taylor <ian@zembu.com>
- * ppc-opc.c: Changes based on patch from David Edelsohn
- <edelsohn@mhpcc.edu>.
- (powerpc_operands): Add operands SPRBAT and SPRG. Split TBR out of
- SPR.
- (FXM_MASK): Define.
- (insert_tbr): New static function.
- (extract_tbr): New static function.
- (XFXFXM_MASK, XFXM): Define.
- (XSPRBAT_MASK, XSPRG_MASK): Define.
- (powerpc_opcodes): Add instructions to access special registers by
- name. Add mtcr and mftbu.
+ * Makefile.am (CFILES): Add avr-dis.c.
+ (ALL_MACHINES): Add avr-dis.lo.
-Tue Jan 17 10:56:43 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
+2000-03-27 Alan Modra <alan@linuxcare.com>
- * mips-opc.c (P3): Define.
- (mips_opcodes): Add mad and madu.
+ * avr-dis.c (add0fff, add03f8): Don't use structure bitfields to
+ truncate integers.
+ (print_insn_avr): Call function via pointer in K&R compatible way.
+ (dispLDD, regPP, reg50, reg104, reg40, reg20w, lit404, lit204,
+ add0fff, add03f8): Convert to old style function declaration and
+ add prototype.
+ (avrdis_opcode): Add prototype.
-Sun Jan 15 16:32:59 1995 Steve Chamberlain <sac@splat>
+2000-03-27 Denis Chertykov <denisc@overta.ru>
- * configure.in: Add W65 support.
+ * avr-dis.c: New file. AVR disassembler.
+ * configure.in (bfd_avr_arch): New architecture support.
* disassemble.c: Likewise.
- * w65-opc.h, w65-dis.c: New files.
-
-Wed Dec 28 22:15:33 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * h8300-dis.c (bfd_h8_disassemble): Add support for 2 bit
- immediates.
-
-Tue Dec 20 11:25:12 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * mips-opc.c: Add dli as a synonym for li.
-
-Thu Dec 8 18:23:31 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * alpha-dis.c (print_insn_alpha): Handle call_pal instruction, and
- print something for reserved opcode values, even if it won't
- assemble again.
-
- * mips-dis.c (_print_insn_mips): When initializing, shift right
- and mask, to avoid sign extension problems on the Alpha.
-
- * m68k-dis.c (print_insn_arg, case 'J'): Handle buscr and pcr
- control registers.
-
-Wed Nov 23 22:34:51 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * sh-opc.h (mov.l gbr): Get direction right.
- * sh-dis.c (print_insn_shx): New function.
- (print_insn_shl, print_insn_sh): Call print_insn_shx to
- print opcodes with right byte order.
-
-Thu Nov 3 19:32:22 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * ns32k-dis.c (struct ns32k_option): Renamed from struct option,
- to avoid conflicts with getopt.
-
-Mon Oct 31 18:48:10 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * hppa-dis.c (print_insn_hppa): Read the instruction using
- bfd_getb32, so that it works on a little endian or 64 bit host.
- Remove unused local variable op.
-
-Tue Oct 25 17:07:57 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * mips-opc.c: Use or instead of addu for pseudo-op move, since
- addu does not work correctly if -mips3.
-
-Wed Oct 19 13:40:16 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * a29k-dis.c (print_special): Add special register names defined
- on 29030, 29040 and 29050.
- (print_insn): Handle new operand type 'I'.
-
-Wed Oct 12 11:59:55 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * Makefile.in (INSTALL): Use top level install.sh script.
-
-Wed Oct 5 19:16:29 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * sparc-dis.c: Rewrite to use bitfields, rather than a union, so
- that it works on a little endian host.
-
-Tue Oct 4 12:14:21 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * configure.in: Use ${config_shell} when running config.bfd.
-
-Wed Sep 21 18:49:12 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * mips-opc.c (mips_opcodes): "dabs" is only available with -mips3.
-
-Thu Sep 15 16:30:22 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * a29k-dis.c (print_insn): Print the opcode.
-
-Wed Sep 14 17:52:14 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * mips-opc.c (mips_opcodes): Set WR_t for sc and scd.
-
-Sun Sep 11 22:32:17 1994 Jeff Law (law@snake.cs.utah.edu)
-
- * hppa-dis.c (reg_names): Use r26-r23 for arg0-arg3.
-
-Tue Sep 6 11:37:12 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * mips-opc.c: Set INSN_STORE_MEMORY flag for all instructions
- which store a value into memory.
-
-Sun Sep 04 17:58:10 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
-
- * configure.in, Makefile.in, disassemble.c: Add support for the ARM.
- * arm-dis.c, arm-opc.h: New files.
-
-Fri Aug 5 14:00:05 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * Makefile.in (ns32k-dis.o): Add dependency.
- * ns32k-dis.c (print_insn_arg): Declare initialized local as
- string, not as array of chars.
-
-Thu Jul 28 18:14:16 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * sparc-dis.c (print_insn_sparc): Handle new operand type 'x'.
-
- * sparc-opc.c: Added sparclite extended FP operations, and
- versions of v9 impdep* instructions permitting specification of
- the OPF field.
-
-Tue Jul 26 16:36:03 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * i960-dis.c (reg_names): Now const.
- (struct sparse_tabent): New type, copied from array type in mem
- function.
- (ctrl): Local static array ctrl_tab now const.
- (cobr): Local static array cobr_tab now const.
- (mem): Local variables reg1, reg2, reg3 now point to const. Local
- static variable mem_tab no longer explicitly initialized. Changed
- mem_init to const array of struct sparse_tabent.
- (reg): Local static variable reg_tab no longer explicitly
- initialized. Changed reg_init to const array of struct
- sparse_tabent.
- (ea): Local static array scale_tab now const.
-
- * i960-dis.c (reg): Added i960JX instructions to reg_init table.
- (REG_MAX): Updated.
-
-Tue Jul 19 21:00:00 1994 DJ Delorie (dj@ctron.com)
-
- * configure.bat: the disassember needs to be enabled for
- "objdump -d" to work in djgpp.
-
-Wed Jul 13 18:01:58 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * ns32k-dis.c: Deleted all code in "#ifdef GDB".
- (invalid_float): Enabled general version, doesn't require running
- on ns32k host. Changed to take char* argument, and test for
- explicitly specified sizes, instead of using sizeof() on host CPU
- types.
- (INVALID_FLOAT): Cast first argument.
- (opt_u, opt_U, opt_O, opt_C, opt_S, list_P532, list_M532,
- list_P032, list_M032): Now const.
- (optlist, list_search): Made appropriate arguments now point to
- const.
- (print_insn_arg): Changed static array of one-character-string
- pointers into a static const array of characters; fixed sprintf
- statement accordingly.
-
-Sun Jul 10 00:27:47 1994 Ian Dall (dall@hfrd.dsto.gov.au)
-
- * opcodes/ns32k-dis.c: Semi-new file. Had apparently been dropped
- from distribution. A ns32k-dis.c from a previous distribution has
- been brought up to date and supports the new interface.
-
- * disassemble.c: define ARCH_ns32k and add case bfd_arch_ns32k.
-
- * configure.in: add bfd_ns32k_arch target support.
-
- * Makefile.in: add ns32k-dis.o to ALL_MACHINES.
- Add ns32k-dis.c to CFILES. Add dependencies for ns32k-dis.o.
-
-Wed Jun 29 22:10:37 1994 Steve Chamberlain (sac@cygnus.com)
-
- * h8300-dis.c (bfd_h8_disassemble): Get 16bit branch
- disassembly right.
-
-Tue Jun 28 13:22:06 1994 Stan Shebs (shebs@andros.cygnus.com)
-
- * h8300-dis.c, mips-dis.c: Don't use true and false.
-
-Thu Jun 23 12:53:19 1994 David J. Mackenzie (djm@rtl.cygnus.com)
-
- * configure.in: Change --with-targets to --enable-targets.
-
-Wed Jun 22 13:38:32 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * mips-dis.c (_print_insn_mips): Build a static hash table mapping
- opcodes to the first instruction with that opcode, to speed
- disassembly of large files. From ralphc@pyramid.com (Ralph
- Campbell).
-
-Tue Jun 7 12:49:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * Makefile.in (mostlyclean): Fix typo (was mostyclean).
-
-Wed May 11 22:32:00 1994 DJ Delorie (dj@ctron.com)
-
- * configure.bat: update to latest makefile.in
-
-Sat May 7 17:13:21 1994 Steve Chamberlain (sac@cygnus.com)
-
- * a29k-dis.c (print_insn): Print 'x' type operand in hex.
- * h8300-dis.c (bfd_h8_disassemble): Print 16bit rels correctly.
- * sh-dis.c (print_insn_sh): Don't recur endlessly if delay
- slot insn is in a delay slot.
- * z8k-opc.h: (resflg): Fix patterns.
- * h8500-opc.h Fix CR insn patterns.
-
-Fri May 6 14:34:46 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ppc-opc.c (powerpc_opcodes): Put PowerPC versions of "cmp" and
- "cmpl" before POWER versions, so that gas -many uses them.
-
-Thu Apr 28 18:32:36 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * disassemble.c: New file.
- * Makefile.in (OFILES): Add disassemble.o.
- (disassemble.o): Provide dependencies; compile with $(ARCHDEFS).
- * configure.in: Define ARCHDEFS in Makefile. Code taken from
- binutils/configure.in.
-
- * m68k-dis.c (print_insn_m68k): If F_ALIAS flag is set, skip the
- opcode being examined.
-
-Thu Apr 21 17:08:40 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ppc-opc.c (powerpc_operands): Added RAL, RAM and RAS.
- (insert_ral, insert_ram, insert_ras): New functions.
- (powerpc_opcodes): Use RAL for load with update, RAM for lmw, and
- RAS for store with update.
-
-Sat Apr 16 23:41:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ppc-opc.c (powerpc_opcodes): Correct fcir. From David Edelsohn
- (edelsohn@npac.syr.edu).
-
-Wed Apr 6 17:11:45 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c (mips_opcodes): Correct operands of "nor" with an
- immediate argument.
-
-Mon Apr 4 16:30:46 1994 Doug Evans (dje@canuck.cygnus.com)
-
- * sparc-opc.c (sparc_opcodes): Fix "rd %fprs,%l0".
-
-Mon Apr 4 13:22:00 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ppc-opc.c (powerpc_operands): The signedp field has been
- removed, so don't initialize it. Set the PPC_OPERAND_SIGNED flag
- instead. Add new operand SISIGNOPT.
- (powerpc_opcodes): For lis, liu, addis, and cau use SISIGNOPT.
- Based on patch from David Edelsohn (edelsohn@npac.syr.edu).
- * ppc-dis.c (print_insn_powerpc): Check PPC_OPERAND_SIGNED rather
- than signedp field.
-
-Wed Mar 30 00:31:49 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * i386-dis.c (struct private): Renamed to dis_private. `private'
- is a reserved word for dynix cc.
-
-Mon Mar 28 13:00:15 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * configure.in: Change error message to refer to bfd/config.bfd
- rather than bfd/configure.in.
-
-Mon Mar 28 12:28:30 1994 David Edelsohn (edelsohn@npac.syr.edu)
-
- * ppc-opc.c: Define POWER2 as short alias flag.
- (powerpc_opcodes): Add POWER/2 opcodes lfq*, stfq*, fcir[z], and
- fsqrt.
-
-Wed Mar 23 12:23:05 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * i960-dis.c (print_insn_i960): Don't read a second word for
- opcodes 0, 1, 2 and 3.
-
-Wed Mar 16 15:37:58 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * configure.in: Don't build m68881-ext.o for bfd_m68k_arch.
-
-Mon Mar 14 14:53:50 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * m68881-ext.c: Removed; no longer used.
- * Makefile.in: Changed accordingly.
-
- * m68k-dis.c (ext_format_68881): Don't declare.
- (print_insn_m68k): If an instruction uses place 'i', it uses at
- least four fixed bytes.
- (print_insn_arg): Don't bump p by 2 for case 'I', place 'i'. For
- extended float, convert to double using floatformat_to_double, not
- ieee_extended_to_double, and fetch the data before converting it.
-
-Tue Mar 8 18:12:25 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c: It's sqrt.s, not sqrt.w. From
- davidj@ICSI.Berkeley.EDU (David Johnson).
-
-Tue Feb 8 16:55:27 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ppc-opc.c (powerpc_opcodes): The POWER uses bdn[l][a] where the
- PowerPC uses bdnz[l][a].
-
-Tue Feb 8 00:32:28 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * dis-buf.c, i386-dis.c: Include sysdep.h.
-
-Mon Feb 7 19:22:23 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * configure.in (bfd_powerpc_arch): Use ppc-dis.o and ppc-opc.o.
-
- * ppc-opc.c (powerpc_opcodes): Mark POWER instructions supported
- by Motorola PowerPC 601 with PPC_OPCODE_601.
- * ppc-dis.c (print_insn_big_powerpc, print_insn_little_powerpc):
- Disassemble Motorola PowerPC 601 instructions as well as normal
- PowerPC instructions.
-
-Sun Feb 6 07:45:17 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * i960-dis.c (reg, mem): Just use a static array instead of
- calling xmalloc.
-
-Sat Feb 5 00:04:02 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * hppa-dis.c (print_insn_hppa): For '?' and '@' only adjust the
- condition name index if this is for a negated condition.
-
- * hppa-dis.c (print_insn_hppa): No space before 'H' operand.
- Floating point format for 'H' operand is backwards from normal
- case (0 == double, 1 == single). For '4', '6', '7', '9', and '8'
- operands (fmpyadd and fmpysub), handle bizarre register
- translation correctly for single precision format.
-
- * hppa-dis.c (print_insn_hppa): Do not emit a space after 'F'
- or 'I' operands if the next format specifier is 'M' (fcmp
- condition completer).
-
-Feb 4 23:38:03 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ppc-opc.c (powerpc_operands): New operand type MBE to handle a
- single number giving a bitmask for the MB and ME fields of an M
- form instruction. Change NB to accept 32, and turn it into 0;
- also turn 0 into 32 when disassembling. Seperated SH from NB.
- (insert_mbe, extract_mbe): New functions.
- (insert_nb, extract_nb): New functions.
- (SC_MASK): Mask out SA and LK bits.
- (powerpc_opcodes): Change "cal" to use RT, D, RA rather than RT,
- RA, SI. Change "liu" and "cau" to use UI rather than SI. Mark
- "bctr" and "bctrl" as accepted by POWER. Change "rlwimi",
- "rlimi", "rlwimi.", "rlimi.", "rlwinm", "rlinm", "rlwinm.",
- "rlinm.", "rlmi", "rlmi.", "rlwnm", "rlnm", "rlwnm.", "rlnm." to
- use MBE rather than MB. Add "mfmq" and "mtmq" POWER instructions.
- (powerpc_macros): Define table of macro definitions.
- (powerpc_num_macros): Define.
-
- * ppc-dis.c (print_insn_powerpc): Don't skip optional operands
- if PPC_OPERAND_NEXT is set.
-
-Sat Jan 22 23:10:07 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * i960-dis.c (print_insn_i960): Make buffer bfd_byte instead of
- char. Retrieve contents using bfd_getl32 instead of shifting.
-
-Fri Jan 21 19:01:39 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ppc-opc.c: New file. Opcode table for PowerPC, including
- opcodes for POWER (RS/6000).
- * ppc-dis.c: New file. PowerPC and Power (RS/6000) disassembler.
- * Makefile.in (ALL_MACHINES): Add ppc-dis.o and ppc-opc.o.
- (CFILES): Add ppc-dis.c.
- (ppc-dis.o, ppc-opc.o): New targets.
- * configure.in: Build ppc-dis.o and ppc-opc.o for bfd_rs6000_arch.
-
-Mon Jan 17 20:05:49 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * hppa-dis.c (print_insn_hppa): Handle 'N' in assembler template.
- No space before 'u', 'f', or 'N'.
-
-Sun Jan 16 14:20:16 1994 Jim Kingdon (kingdon@deneb.cygnus.com)
-
- * i386-dis.c (print_insn_i386): Add FIXME comment regarding reading
- farther than we should.
-
- * i386-dis.c (dis386): Use Yb and Yv for scasb and scasS.
-
-Thu Jan 6 12:38:05 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * sparc-dis.c m68k-dis.c alpha-dis.c a29k-dis.c: Fix comments.
-
-Wed Jan 5 11:56:21 1994 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * i960-dis.c (print_insn_i960): Only read word2 if the instruction
- needs it, to prevent reading past the end of a section.
-
-Wed Nov 17 17:20:12 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.h: Use macro for j instruction, to support SVR4 PIC.
- Removed t,A case for la; always use t,A(b) case.
-
-Mon Nov 8 12:37:36 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- From Ted Lemen <mellon@pepper.ncd.com>
- * mips-dis.c (print_insn_arg): Handle 'k'.
- * mips-opc.c: Make cache use k, not t.
-
-Sun Nov 7 23:52:34 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * alpha-opc.h, alpha-dis.c (print_insn_alpha): Add
- FLOAT_MEMORY_FORMAT_CODE, FLOAT_BRANCH_FORMAT_CODE, correct
- FLOAT_FORMAT_CODE to put out floating point register names.
-
-Mon Nov 1 18:17:51 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c: Use macros for jal variants, to support SVR4 PIC.
-
-Thu Oct 28 17:42:23 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * a29k-dis.c (print_insn): Use 0x%08x, not 0x%8x.
-
-Wed Oct 27 11:48:01 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c (dsll, dsra, dsrl): Added '>' cases for shift counts
- larger than 32. Moved dsxx32 variants first for disassembler.
-
-Mon Oct 25 11:33:14 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
-
- * z8kgen.c, z8k-opc.h: Add full lda information.
-
-Tue Oct 19 12:39:25 1993 Jeffrey A Law (law@cs.utah.edu)
-
- * hppa-dis.c (print_insn_hppa): Do not emit a space after
- movb instructions. Any necessary space will be emitted by
- the code to handle nullification completers.
-
-Wed Oct 13 16:19:07 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c: Moved l.d down so that it disassembles as ldc1.
-
-Fri Oct 8 02:34:21 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * alpha-opc.h: Add ldl_l, fix typo for ldq_u.
- * alpha-dis.c (print_insn_alpha): Add code for PAL_FORMAT_CODE.
-
-Tue Oct 5 17:47:53 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c: Correct lwu opcode value (book had it wrong).
-
-Thu Sep 30 11:26:18 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
-
- * z8k-dis.c (FETCH_DATA): get just the right amount of data.
- (unpack_instr): Cope with ARG_IMM4M1 type instructions.
-
-Wed Sep 29 16:24:49 1993 K. Richard Pixley (rich@sendai.cygnus.com)
-
- * m88k-dis.c (m88kdis): comment change. Remove space after
- printing mnemonic.
- (printop): handle new arg types DEC and XREG for m88110.
-
-Tue Sep 28 19:20:16 1993 Jeffrey A Law (law@snake.cs.utah.edu)
-
- * hppa-dis.c (print_insn_hppa): Handle 'z' operand
- type for absolute branch addresses. Delete special
- "ble" and "be" code in 'W' operand code.
-
-Fri Sep 24 14:08:33 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c: Set hazard information correctly for branch
- likely instructions.
-
-Fri Sep 17 04:41:17 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * alpha-dis.c (print_insn_alpha), alpha-opc.h: Fix bugs, use
- info->fprintf_func for printing and info->print_address_func for
- address output.
-
-Wed Sep 15 12:12:07 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c: Set INSN_TRAP for tXX instructions.
-
-Thu Sep 9 10:11:27 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c: From davidj@ICSI.Berkeley.EDU (David Johnson):
- Corrected second case of "b" for disassembler.
-
-Tue Sep 7 14:25:15 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-dis.c, m88k-dis.c: Don't include libbfd.h. Changed calls
- to BFD swapping routines to correspond to BFD name changes.
-
-Thu Sep 2 10:35:25 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c: Change div machine instruction to be z,s,t rather
- than s,t. Change div macro to be d,v,t rather than d,s,t.
- Likewise for divu, ddiv, ddivu. Added z,s,t case for drem, dremu,
- rem and remu which generates only the corresponding div
- instruction. This is for compatibility with the MIPS assembler,
- which only generates the simple machine instruction when an
- explicit destination of $0 is used.
- * mips-dis.c (print_insn_arg): Handle 'z' (always register zero).
-
-Thu Aug 26 17:41:44 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c: From davidj@ICSI.Berkeley.EDU (David Johnson): Set
- WR_31 hazard for bal, bgezal, bltzal.
-
-Thu Aug 26 17:20:02 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * hppa-dis.c (print_insn_hppa): Use print function
- from within the disassemble_info, not fprintf_filtered.
-
-Wed Aug 25 13:51:40 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * hppa-dis.c (print_insn_hppa): Handle '|' like '>'. (From Jeff
- Law, law@cs.utah.edu.)
-
-Mon Aug 23 12:44:05 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c ("absu"): Removed.
- ("dabs"): Added.
-
-Fri Aug 20 10:52:52 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c: Added r6000 and r4000 instructions and macros.
- Changed hazard information to distinguish between memory load
- delays and coprocessor load delays.
-
-Wed Aug 18 15:39:23 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c: li.d uses "T,L", not "S,F". Added li.s.
-
-Tue Aug 17 09:44:42 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * configure.in: Don't pass cpu to config.bfd.
-
-Tue Aug 17 12:23:52 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * m88k-dis.c (m88kdis): Make class unsigned.
-
-Thu Aug 12 15:08:18 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * alpha-dis.c (print_insn_alpha): One branch format case was
- missing the instruction name.
-
-Wed Aug 11 19:29:39 1993 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * Makefile.in (ALL_MACHINES): Renamed from DIS_LIBS.
- Add the arch-specific auxiliary files.
- (OFILES): Remove the arch-specific auxiliary files
- and use BFD_MACHINES instead of DIS_LIBS.
- * configure.in: Set BFD_MACHINES based on --with-targets option.
-
-Thu Aug 12 12:04:53 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c: Added lwc1 E,A(b) to go with lwc1 T,A(b). Similarly
- for swc1.
-
-Sun Aug 8 15:09:30 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * sparc-opc.c: Change CONST to const to deal with gcc
- -Dconst=__const -traditional.
-
-Fri Aug 6 10:58:55 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips-opc.c: From davidj@ICSI.Berkeley.EDU (David Johnson): Took
- coprocessor instructions out of #if 0, and made them use new
- argument type "C".
-
-Thu Aug 5 17:11:06 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * sparc-dis.c: Include ansidecl.h before opcodes/sparc.h.
-
-Fri Jul 30 18:48:15 1993 John Gilmore (gnu@cygnus.com)
-
- * sparc-opc.c: Add F_JSR, F_UNBR, or F_CONDBR flags to each branch
- instruction, for use by the disassembler.
-
- * sparc-dis.c (SEX): Add sign extension macro. Replace many
- hand-coded sign extensions that depended on 32-bit host ints.
- FIXME, we still depend on big-endian host bitfield ordering.
- (sparc_print_insn): Set the insn_info_valid field, and the
- other fields that describe the instruction being printed.
-
-Tue Jul 27 17:04:58 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
-
- * sparc-opc.c (call): Accept all 6 addressing modes valid for
- `jmp' instead of just one of them.
-
-Wed Jul 21 11:43:32 1993 Jim Kingdon (kingdon@deneb.cygnus.com)
-
- * hppa-dis.c: Move floating registers from reg_names to fp_reg_names.
- (fput_fp_reg_r): Renamed from fput_reg_r.
- (fput_fp_reg): New function.
- (print_insn_hppa): Use fput_fp_reg{,_r} where appropriate.
-
- * hppa-dis.c (print_insn_hppa, cases 'a', 'd'): Print space afterwards.
-
- * hppa-dis.c (print_insn_hppa, case 'd'): Use GET_COND not GET_FIELD.
-
-Mon Jul 19 13:52:21 1993 Jim Kingdon (kingdon@deneb.cygnus.com)
-
- * hppa-dis.c (print_insn_hppa): Use extract_5r_store for 'r'.
-
- * hppa-dis.c (print_insn_hppa, case '>'): If next character is 'n',
- don't output a space.
-
- * hppa-dis.c (float_format_names): 10 is undefined, and 11 is quad.
-
-Sun Jul 18 16:30:02 1993 Jim Kingdon (kingdon@rtl.cygnus.com)
-
- * mips-opc.c: New file, containing opcode table from
- ../include/opcode/mips.h.
- * Makefile.in: Add it.
-
-Thu Jul 15 12:37:05 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * m88k-dis.c: New file, moved in from gdb and changed to use the
- new dis-asm.h disassembler interface.
- * Makefile.in (DIS_LIBS): Added m88k-dis.o.
- (m88k-dis.o): New target.
-
-Tue Jul 13 10:04:16 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips-dis.c (print_insn_arg, _print_insn_mips): Made pointer to
- argument string const char * to correspond to opcode/mips.h.
-
-Tue Jul 6 15:18:37 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips-dis.c: Updated to account for name changes in new version
- of opcode/mips.h.
- * Makefile.in: Added header file dependencies.
-
-Sat Jul 3 23:47:56 1993 Doug Evans (dje@canuck.cygnus.com)
-
- * h8300-dis.c (bfd_h8_disassemble): Correct fetching of instruction.
-
-Thu Jul 1 12:23:38 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * m68k-dis.c (NEXTWORD, NEXTLONG): Use ((x) ^ 0x8000) - 0x8000 to sign
- extend, rather than shifts.
-
-Sun Jun 20 20:56:56 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
-
- * Makefile.in: Undo 15 June change.
-
-Fri Jun 18 14:15:15 1993 Per Bothner (bothner@deneb.cygnus.com)
-
- * m68k-dis.c (print_insn_arg): Change return value to byte count
- or error code.
- * m68k-dis.c: Re-write to detect invalid operands before
- printing anything, so we can handle this the same way we
- handle invalid opcodes.
-
-Thu Jun 17 15:01:36 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
-
- * sh-dis.c, sh-opc.h: Understand some more opcodes.
-
-Wed Jun 16 13:48:05 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * hppa-dis.c: Include <ansidecl.h> and sysdep.h before other
- header files.
-
-Tue Jun 15 21:45:26 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * sparc-dis.c: Don't declare qsort, since sysdep.h might.
-
- * configure.in: Do make sysdep.h link.
- * Makefile.in: Search ../include. Don't search ../bfd.
-
-Tue Jun 15 13:36:10 1993 Stu Grossman (grossman@cygnus.com)
-
- Changes from Jeff Law, law@cs.utah.edu:
- * hppa-dis.c: Fix typo. 'a' and 'd' were reversed.
- Do not print a space before the completers specified by
- 'a' and 'd'.
-
-Fri Jun 11 18:40:21 1993 Ken Raeburn (raeburn@cygnus.com)
-
- * mips-dis.c: No longer need to bomb out if HOST_64_BIT is
- defined, since gdb has been fixed.
-
- Changes from Jeff Law, law@cs.utah.edu:
- * hppa-dis.c (print_insn_hppa): Last argument to fput_reg,
- fput_reg_r, fput_creg, fput_const, and fputs_filtered should
- be a *disassemble_info, not a *FILE.
- * hppa-dis.c: Support 'd', '!', and 'a'.
- * hppa-dis.c: Support 's' to extract a 2 bit space register.
- * hppa-dis.c: Delete cases which are no longer needed.
-
-Fri Jun 11 07:53:48 1993 Jim Kingdon (kingdon@cygnus.com)
-
- * m68k-dis.c (print_insn_{m68k,arg}): Add MMU codes.
-
-Tue Jun 8 12:25:01 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
-
- * h8300-dis.c: New file, removed from bfd/cpu-h8300.c, with
- H8/300-H opcodes.
-
-Mon Jun 7 12:58:49 1993 Per Bothner (bothner@rtl.cygnus.com)
-
- * Makefile.in (CSEARCH): Add -I../bfd for sysdep.h and bfd.h.
- * configure.in: No longer need to configure to get sysdep.h.
-
-Thu Jun 3 15:56:49 1993 Stu Grossman (grossman@cygnus.com)
-
- * Patches from Jeffrey Law <law@cs.utah.edu>.
- * hppa-dis.c: Support 'I', 'J', and 'K' in output
- templates for 1.1 FP computational instructions.
-
-Tue May 25 13:05:48 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * h8500-dis.c (print_insn_h8500): Address argument is type
- bfd_vma.
- * z8k-dis.c (print_insn_z8k, print_insn_z8001, print_insn_z8002):
- Ditto.
-
- * h8500-opc.h (addr_class_type): No comma at end of enumerator.
- * sh-opc.h (sh_nibble_type, sh_arg_type): Ditto.
-
- * sparc-dis.c (compare_opcodes): Move static declaration to
- top-level.
-
-Fri May 21 14:17:37 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * sparc-dis.c (print_insn_sparc): Implement 'n' argument for unimp
- instruction, remove unimp hack from 'l' argument.
-
-Wed May 19 15:35:54 1993 Stu Grossman (grossman@cygnus.com)
-
- * z8k-dis.c (fetch_data): Use unsigned char to make ancient gcc's
- happy.
-
-Fri May 14 15:22:46 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * Based on patches from davidj@ICSI.Berkeley.EDU (David Johnson):
- * mips-dis.c (print_insn_arg): Handle 'C' for general coprocessor
- instructions.
-
-Fri May 14 00:09:14 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * hppa-dis.c: Include dis-asm.h before sysdep.h. Changed some
- arrays of string pointers to 2-d arrays of chars, to save
- space.
-
-Thu May 6 20:51:17 1993 Fred Fish (fnf@cygnus.com)
-
- * a29k-dis.c, alpha-dis.c, i960-dis.c, sparc-dis.c, z8k-dis.c:
- Cast second arg to read_memory_func to "bfd_byte *", as necessary.
-
-Tue May 4 20:31:10 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * hppa-dis.c: New file from Utah, adapted to new disassembler
- calling interface.
- * Makefile.in: Include it.
-
-Mon Apr 26 18:17:42 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * sh-dis.c, sh-opc.h: New files.
-
-Fri Apr 23 18:51:22 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * alpha-dis.c, alpha-opc.h: New files.
-
-Tue Apr 6 12:54:08 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * mips-dis.c: Sign extend 'j' and 'b' arguments, delta is a signed
- value.
-
-Mon Apr 5 17:37:37 1993 John Gilmore (gnu@cygnus.com)
-
- * sparc-dis.c: Make "ta" the default trap instruction, "t" the alias.
-
-Fri Apr 2 07:24:27 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * a29k-dis.c, sparc-dis.c, sparc-opc.c: Use CONST rather than
- const.
-
-Thu Apr 1 11:20:43 1993 Jim Kingdon (kingdon@cygnus.com)
-
- * sparc-dis.c: Use fprintf_func a few places where I forgot,
- and double percent signs a few places.
-
- * a29k-dis.c, i960-dis.c: New, merged from gdb and binutils.
-
- * i386-dis.c, m68k-dis.c, mips-dis.c, sparc-dis.c:
- Use info->print_address_func not print_address.
-
- * dis-buf.c (generic_print_address): New function.
-
-Wed Mar 31 10:07:04 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * Makefile.in: Add sparc-dis.c.
- sparc-dis.c: New file, merges binutils and gdb versions as follows:
- From GDB:
- Add `add' instruction to the set that get checked
- for a preceding `sethi' in order to print an absolute address.
- * (print_insn): Disassembly prefers real instructions.
- (is_delayed_branch): Speed up.
- * sparc-opcode.h: Add ALIAS bit to aliases. Fix up opcode tables.
- Still missing some float ops, and needs testing.
- * sparc-pinsn.c (print_insn): Eliminate 'set' test, subsumed by
- F_ALIAS. Use printf, not fprintf, when not passing a file
- pointer...
- (compare_opcodes): Check that identical instructions have
- identical opcodes, complain otherwise.
- From binutils:
- * New 'm' arg.
- * Include reg_names.
- From neither:
- Use dis-asm.h/read_memory_func interface.
-
-Wed Mar 31 20:49:06 1993 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * h8500-dis.c, i386-dis.c, m68k-dis.c, z8k-dis.c (fetch_data):
- deliberately return non-zero to setjmp from longjmp. Otherwise
- this code fails to compile.
-
-Wed Mar 31 17:04:31 1993 Stu Grossman (grossman@cygnus.com)
-
- * m68k-dis.c: Fix prototype for fetch_arg().
-
-Wed Mar 31 10:07:04 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * dis-buf.c: New file, for new read_memory_func interface.
- Makefile.in (OFILES): Include it.
- m68k-dis.c, i386-dis.c, h8500-dis.c, mips-dis.c, z8k-dis.c:
- Use new read_memory_func interface.
-
-Mon Mar 29 14:02:17 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * h8500-dis.c (print_insn_h8500): Get sign of fp offsets right.
- * h8500-opc.h: Fix couple of opcodes.
-
-Wed Mar 24 02:03:36 1993 david d `zoo' zuhn (zoo at poseidon.cygnus.com)
-
- * Makefile.in: add dvi & installcheck targets
-
-Mon Mar 22 18:55:04 1993 John Gilmore (gnu@cygnus.com)
-
- * Makefile.in: Update for h8500-dis.c.
-
-Fri Mar 19 14:27:17 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+ * configure: Regenerate.
- * h8500-dis.c, h8500-opc.h: New files
+2000-03-06 J"oern Rennecke <amylaar@redhat.com>
-Thu Mar 18 14:12:37 1993 Per Bothner (bothner@rtl.cygnus.com)
+ * sh-opc.h (sh_table): ldre and ldrs have a *signed* displacement.
- * mips-dis.c, z8k-dis.c: Converted to use interface defined in
- ../include/dis-asm.h.
- * m68k-dis.c: New file (merge of ../binutils/m68k-pinsn.c
- and ../gdb/m68k-pinsn.c).
- * i386-dis.c: New file (merge of ../binutils/i386-pinsn.c
- and ../gdb/i386-pinsn.c).
- * m68881-ext.c: New file. Moved definition of
- ext_format ext_format_68881 from ../gdb/m68k-tdep.c.
- * Makefile.in: Adjust for new files.
- * i386-dis.c: Patches from John Hassey (hassey@dg-rtp.dg.com).
- * m68k-dis.c: Recognize '9' placement code, so (say) pflush
- can be dis-assembled.
+2000-03-02 J"orn Rennecke <amylaar@redhat.co.uk>
+
+ * d30v-dis.c (print_insn): Remove d*i hacks. Use per-operand
+ flag to determine if operand is pc-relative.
+ * d30v-opc.c:
+ (d30v_format_table):
+ (REL6S3): Renamed from IMM6S3.
+ Added flag OPERAND_PCREL.
+ (REL12S3, REL18S3, REL32): Split from IMM12S3, IMM18S3, REL32, with
+ added flag OPERAND_PCREL.
+ (IMM12S3U): Replaced with REL12S3.
+ (SHORT_D2, LONG_D): Delay target is pc-relative.
+ (SHORT_B2r, SHORT_B3r, SHORT_B3br, SHORT_D2r, LONG_Ur, LONG_2r):
+ Split from SHORT_B2, SHORT_D2, SHORT_B3b, SHORT_D2, LONG_U, LONG_2r,
+ using the REL* operands.
+ (LONG_2br, LONG_Dr): Likewise, from LONG_2b, LONG_D.
+ (SHORT_D1r, SHORT_D2Br, LONG_Dbr): Renamed from SHORT_D1, SHORT_D2B,
+ LONG_Db, using REL* operands.
+ (SHORT_U, SHORT_A5S): Removed stray alternatives.
+ (d30v_opcode_table): Use new *r formats.
+
+2000-02-28 Nick Clifton <nickc@redhat.com>
-Wed Feb 17 09:19:47 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+ * m32r-desc.c (m32r_cgen_cpu_open): Replace 'flags' with
+ 'signed_overflow_ok_p'.
- * mips-dis.c (print_insn_arg): Now returns void.
+2000-02-27 Eli Zaretskii <eliz@is.elta.co.il>
-Mon Jan 11 16:09:16 1993 Fred Fish (fnf@cygnus.com)
+ * Makefile.am (stamp-lib): Use $(LIBTOOL) --config to get the
+ name of the libtool directory.
+ * Makefile.in: Rebuild.
- * mips-dis.c (ansidecl.h): Include for benefit of sysdep.h
- files that use the macros.
+2000-02-24 Nick Clifton <nickc@redhat.com>
-Thu Jan 7 13:15:17 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+ * cgen-opc.c (cgen_set_signed_overflow_ok): New function.
+ (cgen_clear_signed_overflow_ok): New function.
+ (cgen_signed_overflow_ok_p): New function.
- * mips-dis.c: New file, from gdb/mips-pinsn.c.
- * Makefile.in (DIS_LIBS): Added mips-dis.o.
- (CFILES): Added mips-dis.c.
+2000-02-23 Andrew Haley <aph@redhat.com>
-Thu Jan 7 07:36:33 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+ * m32r-asm.c, m32r-desc.c, m32r-desc.h, m32r-dis.c,
+ m32r-ibld.c,m32r-opc.h: Rebuild.
- * z8k-dis.c (print_insn_z8001, print_insn_z8002): new routines
- * z8kgen.c, z8k-opc.h: fix sizes of some shifts.
+2000-02-23 Linas Vepstas <linas@linas.org>
-Tue Dec 22 15:42:44 1992 Per Bothner (bothner@rtl.cygnus.com)
+ * i370-dis.c, i370-opc.c: New.
- * Makefile.in: Improve *clean rules.
- * configure.in: Allow a default host.
+ * disassemble.c (ARCH_i370): Define.
+ (disassembler): Handle it.
-Tue Nov 17 19:53:54 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+ * Makefile.am: Add support for Linux/IBM 370.
+ * configure.in: Likewise.
- * Makefile.in: also use -I$(srcdir)/../bfd, since some sysdep
- files include other sysdep files
+ * Makefile.in: Regenerate.
+ * configure: Likewise.
-Thu Nov 12 16:10:37 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+2000-02-22 Chandra Chavva <cchavva@redhat.com>
- * z8k-dis.c z8k-opc.h z8kgen.c: checkpoint
+ * d30v-opc.c (d30v_opcode_tab) : Added FLAG_NOT_WITH_ADDSUBppp to
+ ST2H, STB, STH, STHH, STW and ST2H opcodes to prohibit parallel
+ procedure.
-Fri Oct 9 04:56:05 1992 John Gilmore (gnu@cygnus.com)
+2000-02-22 Andrew Haley <aph@redhat.com>
- * configure.in: For host support, use ../bfd/configure.host
- so it stays in sync with the ../bfd/hosts database.
+ * mips-dis.c (_print_insn_mips): New arg for OPCODE_IS_MEMBER:
+ force gp32 to zero.
+ * mips-opc.c (G6): New define.
+ (mips_builtin_op): Add "move" definition for -gp32.
-Thu Oct 1 23:38:54 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+2000-02-22 Ian Lance Taylor <ian@zembu.com>
- * configure.in: use cpu-vendor-os triple instead of nested cases
+ From Grant Erickson <gerickso@Brocade.COM>:
+ * ppc-opc.c: Correct dcread--it takes 3 arguments, not 2.
-Wed Sep 30 16:09:20 1992 Michael Werner (mtw@cygnus.com)
+2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
- * z8k-dis.c (unparse_instr): fix bug where opcode returned was
- *always* the wrong one.
+ * dis-buf.c (buffer_read_memory): Change `length' param and all int
+ vars to unsigned.
-Wed Sep 30 07:42:17 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+2000-02-17 J"orn Rennecke <amylaar@redhat.co.uk>
- * z8kgen.c: added copyright info
+ * sh-dis.c (print_movxy, print_insn_ddt, print_dsp_reg): New functions.
+ (print_insn_ppi): Likewise.
+ (print_insn_shx): Use info->mach to select appropriate insn set.
+ Add support for sh-dsp. Remove FD_REG_N support.
+ * sh-opc.h (sh_nibble_type): Add new values for sh-dsp support.
+ (sh_arg_type): Likewise. Remove FD_REG_N.
+ (sh_dsp_reg_nums): New enum.
+ (arch_sh1, arch_sh2, arch_sh3, arch_sh3e, arch_sh4): New macros.
+ (arch_sh_dsp, arch_sh3_dsp, arch_sh1_up, arch_sh2_up): Likewise.
+ (arch_sh3_up, arch_sh3e_up, arch_sh4_up, arch_sh_dsp_up): Likewise.
+ (arch_sh3_dsp_up): Likewise.
+ (sh_opcode_info): New field: arch.
+ (sh_table): Split up insn with FD_REG_N into ones with F_REG_N and
+ D_REG_N. Fill in arch field. Add sh-dsp insns.
-Tue Sep 29 12:20:21 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+2000-02-14 Fernando Nasser <fnasser@totem.to.redhat.com>
- * z8k-dis.c (unparse_instr): prettier tabs
- * z8kgen.c -> z8k-opc.h: bug fixes in tables
+ * arm-dis.c: Change flavor name from atpcs-special to
+ special-atpcs to prevent name conflict in gdb.
+ (get_arm_regname_num_options, set_arm_regname_option,
+ get_arm_regnames): New functions. API to access the several
+ flavor of register names. Note: Used by gdb.
+ (print_insn_thumb): Use the register name entry from the currently
+ selected flavor for LR and PC.
-Fri Sep 25 12:50:32 1992 Stu Grossman (grossman at cygnus.com)
+2000-02-10 Nick Clifton <nickc@redhat.com>
- * configure.in: Add ncr* configuration.
- * z8k-dis.c (struct instr_data_s): Make instr_asmsrc char to make
- picayune ANSI compilers happy.
+ * mcore-opc.h (enum mcore_opclass): Add MULSH and OPSR
+ classes.
+ (mcore_table): Add "idly4", "psrclr", "psrset", "mulsh" and
+ "mulsh.h" instructions.
+ * mcore-dis.c (imsk array): Add masks for MULSH and OPSR
+ classes.
+ (print_insn_mcore): Add support for little endian targets.
+ Add support for MULSH and OPSR classes.
-Sep 20 08:50:55 1992 Fred Fish (fnf@cygnus.com)
+2000-02-07 Nick Clifton <nickc@redhat.com>
- * configure.in (i386): Make i386 and i486 synonymous for now.
- * configure.in (i[34]86-*-sysv4): Add my_host definition.
+ * arm-dis.c (parse_arm_diassembler_option): Rename again.
+ Previous delat did not take.
-Fri Sep 18 17:01:23 1992 Ken Raeburn (raeburn@cambridge.cygnus.com)
+2000-02-03 Timothy Wall <twall@redhat.com>
- * Makefile.in (install): Fix typo.
+ * dis-buf.c (buffer_read_memory): Use octets_per_byte field
+ to adjust target address bounds checking and calculate the
+ appropriate octet offset into data.
-Fri Sep 18 02:04:24 1992 John Gilmore (gnu@cygnus.com)
+2000-01-27 Nick Clifton <nickc@redhat.com>
- * Makefile.in (make): Remove obsolete crud.
- (sparc-opc.o): Avoid Sun Make VPATH bug.
+ * arm-dis.c: (parse_disassembler_option): Rename to
+ parse_arm_disassembler_option and allow to be exported.
-Tue Sep 8 17:29:27 1992 K. Richard Pixley (rich@sendai.cygnus.com)
+ * disassemble.c (disassembler_usage): New function: Print out any
+ target specific disassembler options.
+ Call arm_disassembler_options() if the ARM architecture is being
+ supported.
- * Makefile.in: since there are no SUBDIRS, remove rule and
- references of subdir_do.
+ * arm-dis.c (NUM_ELEM): Define this macro if not already
+ defined.
+ (arm_regname): New struct type for ARM register names.
+ (arm_toggle_regnames): Delete.
+ (parse_disassembler_option): Use register name structure.
+ (print_insn): New function: Combines duplicate code found in
+ print_insn_big_arm and print_insn_little_arm.
+ (print_insn_big_arm): Call print_insn.
+ (print_insn_little_arm): Call print_insn.
+ (print_arm_disassembler_options): Display list of supported,
+ ARM specific disassembler options.
-Tue Sep 8 17:02:58 1992 Ken Raeburn (raeburn@cambridge.cygnus.com)
+2000-01-27 Thomas de Lellis <tdel@windriver.com>
- * Makefile.in (install): Get the library name right here too.
- Don't install bfd.h, since it's unrelated to this library. No
- subdirs to recurse into, either.
- (CFILES): The source file has a .c suffix, not .o.
+ * arm-dis.c (printf_insn_big_arm): Treat ELF symbols with the
+ ARM_STT_16BIT flag as Thumb code symbols.
- * sparc-opc.c: New file, moved from BFD.
- * Makefile.in (OFILES): Build it.
+ * arm-dis.c (printf_insn_little_arm): Ditto.
-Thu Sep 3 16:59:20 1992 Michael Werner (mtw@cygnus.com)
+2000-01-25 Thomas de Lellis <tdel@windriver.com>
- * z8k-dis.c: fixed forward refferences of some declarations.
+ * arm-dis.c (printf_insn_thumb): Prevent double dumping
+ of raw thumb instructions.
-Mon Aug 31 16:09:45 1992 Michael Werner (mtw@cygnus.com)
+2000-01-20 Nick Clifton <nickc@redhat.com>
- * Makefile.in: get the name of the library right
+ * mcore-opc.h (mcore_table): Add "add" as an alias for "addu".
-Mon Aug 31 13:47:35 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+2000-01-03 Nick Clifton <nickc@cygnus.com>
- * z8k-dis.c: knows how to disassemble z8k stuff
- * z8k-opc.h: new file full of z8000 opcodes
+ * arm-dis.c (streq): New macro.
+ (strneq): New macro.
+ (force_thumb): ew local variable.
+ (parse_disassembler_option): New function: Parse a single, ARM
+ specific disassembler command line switch.
+ (parse_disassembler_option): Call parse_disassembler_option to
+ parse individual command line switches.
+ (print_insn_big_arm): Check force_thumb.
+ (print_insn_little_arm): Check 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/contrib/binutils/opcodes/ChangeLog-9297 b/contrib/binutils/opcodes/ChangeLog-9297
new file mode 100644
index 0000000..5fa3fa0
--- /dev/null
+++ b/contrib/binutils/opcodes/ChangeLog-9297
@@ -0,0 +1,3791 @@
+Mon Dec 22 12:37:06 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-opc.c: Add FP_D to s.d instruction flags.
+
+Wed Dec 17 11:38:29 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k-opc.c (halt, pulse): Enable them on the 68060.
+
+Tue Dec 16 15:22:53 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (tic80_opcodes): Revert change that put the 32 bit
+ PC relative offset forms before the 15 bit forms. An assembler command
+ line option now chooses the default.
+
+Tue Dec 16 15:22:51 1997 Michael Meissner <meissner@cygnus.com>
+
+ * d30v-opc.c (d30v_opcode_table): Set new flags bits
+ FLAG_{2WORD,MUL{16,32},ADDSUBppp}, in appropriate instructions.
+
+1997-12-15 Brendan Kehoe <brendan@lisa.cygnus.com>
+
+ * configure: Only build libopcodes shared if --enable-shared's value
+ was `yes', or was set to `*opcodes*'.
+ * aclocal.m4: Likewise.
+ * NOTE: this really needs to be fixed in libtool/libtool.m4, the
+ original source of this bit of code. It's not clear what the best fix
+ would be, though.
+
+Fri Dec 12 11:57:04 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (OFF_SL_PC, OFF_SL_BR): Minor formatting change.
+ (tic80_opcodes): Reorder table entries to put the 32 bit PC relative
+ offset forms before the 15 bit forms, to default to the long forms.
+
+Fri Dec 12 01:32:30 1997 Richard Henderson <rth@cygnus.com>
+
+ * alpha-opc.c (cvttq/*u*): Remove, as that suffix is invalid.
+
+Wed Dec 10 17:42:35 1997 Nick Clifton <nickc@cygnus.com>
+
+ * arm-dis.c (print_insn_little_arm): Prevent examination of stored
+ symbol if none is present.
+ (print_insn_big_arm): Prevent examination of stored symbol if
+ none is present.
+
+Thu Oct 23 21:13:37 1997 Fred Fish <fnf@cygnus.com>
+
+ * d10v-opc.c (d10v_opcodes): Correct entry for RTE.
+
+Mon Dec 8 11:21:07 1997 Nick Clifton <nickc@cygnus.com>
+
+ * disassemble.c: Remove disasm_symaddr() function.
+
+ * arm-dis.c: Use info->symbol instead of info->flags to determine
+ if disassmbly should be in Thumb or Arm mode.
+
+Tue Dec 2 09:54:27 1997 Nick Clifton <nickc@cygnus.com>
+
+ * arm-dis.c: Add support for disassembling Thumb opcodes.
+ (print_insn_thumb): New function.
+
+ * disassemble.c (disasm_symaddr): New function.
+
+ * arm-opc.h: Display nop pseudo ops alongside equivalent disassembly.
+ (thumb_opcodes): Table of Thumb opcodes.
+
+Mon Dec 1 12:25:57 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k-opc.c (btst): Change Dd@s to Dd;b.
+
+ * m68k-dis.c (print_insn_arg): Recognize 'm', 'n', 'o', 'p', 'q',
+ and 'v' as operand types.
+
+Mon Dec 1 11:56:50 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c: Add argument for lpstop. From Olivier Carmona
+ <olivier.carmona@di.epfl.ch>.
+ * m68k-dis.c (print_insn_m68k): Handle special case of lpstop,
+ which has a two word opcode with a one word argument.
+
+Sun Nov 23 22:25:21 1997 Michael Meissner <meissner@cygnus.com>
+
+ * d30v-opc.c (d30v_opcode_table, case cmpu): Immediate field is
+ unsigned, not signed.
+ (d30v_format_table): Add SHORT_CMPU cases for cmpu.
+
+Tue Nov 18 23:10:03 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * d10v-dis.c (print_operand):
+ Split OPERAND_FLAG into OPERAND_FFLAG and OPERAND_CFLAG.
+
+Tue Nov 18 18:45:14 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * d10v-opc.c (OPERAND_FLAG): Split into:
+ (OPERAND_FFLAG, OPERAND_CFLAG) .
+ (FSRC): Split into:
+ (FFSRC, CFSRC).
+
+Thu Nov 13 11:05:33 1997 Gavin Koch <gavin@cygnus.com>
+
+ * mips-opc.c: Move the INSN_MACRO ISA value to the membership
+ field for all INSN_MACRO's.
+ * mips16-opc.c: same
+
+Wed Nov 12 10:16:57 1997 Gavin Koch <gavin@cygnus.com>
+
+ * mips-opc.c (sync,cache): These are 3900 insns.
+
+Tue Nov 11 23:53:41 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ sh-opc.h (sh_table): Remove ftst/nan.
+
+Tue Oct 28 17:59:32 1997 Ken Raeburn <raeburn@cygnus.com>
+
+ * mips-opc.c (ffc, ffs): Fix mask.
+
+Tue Oct 28 16:34:54 1997 Michael Meissner <meissner@cygnus.com>
+
+ * d30v-opc.c (pre_defined_registers): Add eit_vb, int_s, and int_m
+ control registers.
+
+Mon Oct 27 22:34:03 1997 Ken Raeburn <raeburn@cygnus.com>
+
+ * mips-opc.c: Fix bug in mask for "not" pseudo-instruction.
+ (WR_HILO, RD_HILO, MOD_HILO): New macros.
+
+Mon Oct 27 22:34:03 1997 Ken Raeburn <raeburn@cygnus.com>
+
+ * mips-opc.c: Fix bug in mask for "not" pseudo-instruction.
+ (WR_HILO, RD_HILO, MOD_HILO): New macros.
+
+Thu Oct 23 14:57:58 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-dis.c (disassemble): Replace // with /* ... */
+
+Wed Oct 22 17:33:21 1997 Richard Henderson <rth@cygnus.com>
+
+ * sparc-opc.c: Add wr & rd for v9a asr's.
+ * sparc-dis.c (print_insn_sparc): Recognize '_' and '/' for v9a asr's.
+ (v9a_asr_reg_names): New variable.
+ Patch from David Miller <davem@vger.rutgers.edu>.
+
+Wed Oct 22 17:18:02 1997 Richard Henderson <rth@cygnus.com>
+
+ * sparc-opc.c (v9notv9a): New insn type.
+ (IMPDEP): Move to the end to not conflict with edge8 et al.
+ Patch from David Miller <davem@vger.rutgers.edu>.
+
+Fri Oct 17 13:18:53 1997 Gavin Koch <gavin@cygnus.com>
+
+ * mips-opc.c (bnezl,beqzl): Mark these as also tx39.
+
+Thu Oct 16 11:55:20 1997 Gavin Koch <gavin@cygnus.com>
+
+ * mips-opc.c: Note that 'jalx' is (probably incorrectly) marked I1.
+
+Tue Oct 14 16:10:31 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-dis.c (disassemble): Use new symbol_at_address_func() field
+ of disassemble_info structure to determine if an overlay address
+ has a matching symbol in low memory.
+
+ * dis-buf.c (generic_symbol_at_address): New (dummy) function for
+ new symbol_at_address_func field in disassemble_info structure.
+
+Fri Oct 10 16:44:52 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-opc.c (extract_d22): Use signed arithmatic.
+
+Tue Oct 7 23:40:43 1997 Gavin Koch <gavin@cygnus.com>
+
+ * mips-opc.c: Three op mult is not an ISA insn.
+
+Tue Oct 7 23:37:21 1997 Gavin Koch <gavin@cygnus.com>
+
+ * mips-opc.c: Fix formatting.
+
+Fri Oct 3 17:26:54 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * i386-dis.c (OP_E): Explicitly sign extend 8 bit values, rather
+ than assuming that char is signed. Explicitly sign extend 16 bit
+ values, rather than assuming that short is 16 bits.
+ (OP_sI, OP_J, OP_DIR): Likewise.
+
+Thu Oct 2 13:36:45 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-dis.c (v850_sreg_names): Use symbolic names for higher
+ system registers.
+
+Wed Oct 1 16:58:54 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-opc.c: Fix typo in comment.
+
+ * v850-dis.c (disassemble): Add test of processor type when
+ determining opcodes.
+
+Wed Oct 1 14:10:20 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Use a diversion to set enable_shared before the
+ arguments are parsed.
+ * configure: Rebuild.
+
+Thu Sep 25 13:04:59 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c (TBL1): Use ! rather than `.
+ * m68k-dis.c (print_insn_arg): Remove ` operand specifier.
+
+Wed Sep 24 11:29:35 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c: Correct bchg, bclr, bset, and btst on ColdFire.
+
+ * m68k-opc.c: Accept tst{b,w,l} with immediate operands on cpu32.
+
+ * m68k-opc.c: Correct movew of an immediate operand to %sr or %ccr
+ for mcf5200.
+
+ * configure.in: Call AC_CHECK_TOOL before AM_PROG_LIBTOOL.
+ * aclocal.m4: Rebuild with new libtool.
+ * configure: Rebuild.
+
+Fri Sep 19 11:45:49 1997 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * v850-opc.c ("cmov"): Order reg param r1, r2 not r2, r2.
+
+Thu Sep 18 11:21:43 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-opc.c (sparclet_cpreg_table): Add %ccsr2, %cccrr, %ccrstr.
+
+Tue Sep 16 15:18:20 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-opc.c (v850_opcodes): Further rearrangements.
+
+Tue Sep 16 16:12:11 1997 Ken Raeburn <raeburn@cygnus.com>
+
+ * d30v-opc.c (rot2h, sra2h, srl2h insns): Revert last change.
+
+Tue Sep 16 09:48:50 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-opc.c (v850_opcodes): Fields reordered to allow assembler
+ parser to work.
+
+Tue Sep 16 10:01:00 1997 Gavin Koch <gavin@cygnus.com>
+
+ * mips-opc.c: Added tx39 insns sdbbp, rfe, and deret.
+
+Mon Sep 15 18:31:52 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-opc.c: Initialise processors field of v850_opcode structure.
+
+Wed Aug 27 21:42:39 1997 Ken Raeburn <raeburn@cygnus.com>
+
+ Merge changes from Martin Hunt:
+
+ * d30v-opc.c: Change mvfacc to accept 6-bit unsigned values.
+
+ * d30v-opc.c (pre_defined_registers): Add control registers from 0-63.
+ (d30v_opcode_tabel): Add dbt, rtd, srah, and srlh instructions. Fix
+ rot2h, sra2h, and srl2h to use new SHORT_A5S format.
+
+ * d30v-dis.c (print_insn): Fix disassembly of SHORT_D2 opcodes.
+
+ * d30v-dis.c (print_insn): First operand of d*i (delayed
+ branch) instructions is relative.
+
+ * d30v-opc.c (d30v_opcode_table): Change form for repeati.
+ (d30v_operand_table): Add IMM6S3 type.
+ (d30v_format_table): Change SHORT_D2. Add LONG_Db.
+
+ * d30v-dis.c: Fix bug with ".s" and ".l" extensions
+ and cmp instructions.
+
+ * d30v-opc.c: Correct entries for repeat*, and sat*.
+ Make IMM5 unsigned. Create IMM6U and IMM12S3U operand
+ types. Correct several formats.
+
+ * d30v-opc.c: (pre_defined_registers): Add dpsw and dpc.
+
+ * d30v-opc.c (pre_defined_registers): Change control registers.
+
+ * d30v-opc.c (d30v_format_table): Correct SHORT_C1 and
+ SHORT_C2. Manual was incorrect.
+
+ * d30v-dis.c (lookup_opcode): Return value now indicates
+ if an opcode has a short and a long form. Used for deciding
+ to append a ".s" or ".l".
+ (print_insn): Append a ".s" to an instruction if it is
+ the short form and ".l" if it is a long form. Do not append
+ anything if the instruction has only one possible size.
+
+ * d30v-opc.c: Change mulx2h to require an even register.
+ New form: SHORT_A2; a SHORT_A form that needs an even
+ register as the first operand.
+
+ * d30v-dis.c (print_insn_d30v): Fix problem where the last
+ instruction was not being disassembled if there were an odd
+ number of instructions.
+
+ * d30v-opc.c (SHORT_M2, LONG_M2): Two new forms.
+
+Fri Sep 12 11:43:54 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-dis.c (disassemble): Improved display of register lists.
+
+Thu Sep 11 17:35:10 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-opc.c (sparc_opcodes): Fix assembler args to
+ fzeros, fones, fsrc1, fsrc1s, fsrc2s, fnot1, fnot1s, fnot2s,
+ fors, fnors, fands, fnands, fxors, fxnors, fornot1s, fornot2s,
+ fandnot1s, fandnot2s.
+
+Tue Sep 9 10:03:49 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-opc.c (sparc_opcodes): Fix op3 field for fcmpq/fcmpeq.
+
+Mon Sep 8 14:06:59 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * cgen-asm.c (cgen_parse_address): New argument resultp.
+ All callers updated.
+ * m32r-asm.c (parse_h_hi16): Right shift numbers by 16.
+
+Tue Sep 2 18:39:08 1997 Jeffrey A Law (law@cygnus.com)
+
+ * mn10200-dis.c (disassemble): PC relative instructions are
+ relative to the next instruction, not the current instruction.
+
+Tue Sep 2 15:41:55 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-dis.c (disassemble): Only signed extend values that are not
+ returned by extract functions.
+ Remove use of V850_OPERAND_ADJUST_SHORT_MEMORY flag.
+
+Tue Sep 2 15:39:40 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-opc.c: Update comments. Remove use of
+ V850_OPERAND_ADJUST_SHORT_MEMORY. Fix several operand patterns.
+
+Tue Aug 26 09:42:28 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-opc.c (MOVHI): Immediate parameter is unsigned.
+
+Mon Aug 25 15:58:07 1997 Christopher Provenzano <proven@cygnus.com>
+
+ * configure: Rebuilt with latest devo autoconf for NT support.
+
+Fri Aug 22 10:35:15 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-dis.c (disassemble): Use curly brace syntax for register
+ lists.
+
+ * v850-opc.c (v850_opcodes[]): Add NOT_R0 flag to decect cases
+ where r0 is being used as a destination register.
+
+Thu Aug 21 11:09:09 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-opc.c (v850_opcodes[]): Move divh opcodes next to each other.
+
+Tue Aug 19 10:59:59 1997 Richard Henderson <rth@cygnus.com>
+
+ * alpha-opc.c (alpha_opcodes): Fix hw_rei_stall mungage.
+
+Mon Aug 18 11:10:03 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-opc.c (v850_opcodes[]): Remove use of flag field.
+ * v850-opc.c (v850_opcodes[]): Add support for reversed short load
+ opcodes..
+
+Mon Aug 18 11:08:25 1997 Nick Clifton <nickc@cygnus.com>
+
+ * configure (cgen_files): Add support for v850e target.
+ * configure.in (cgen_files): Add support for v850e target.
+
+Mon Aug 18 11:08:25 1997 Nick Clifton <nickc@cygnus.com>
+
+ * configure (cgen_files): Add support for v850ea target.
+ * configure.in (cgen_files): Add support for v850ea target.
+
+Fri Aug 15 05:17:48 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * configure.in (bfd_arc_arch): Add.
+ * configure: Rebuild.
+ * Makefile.am (ALL_MACHINES): Add arc-dis.lo, arc-opc.lo.
+ * Makefile.in: Rebuild.
+ * arc-dis.c, arc-opc.c: New files.
+ * disassemble.c (ARCH_all): Define ARCH_arc.
+ (disassembler): Add ARC support.
+
+Wed Aug 13 18:52:11 1997 Nick Clifton <nickc@cygnus.com>
+
+ * v850-dis.c (disassemble): Add support for v850EA instructions.
+
+ * v850-opc.c (insert_i5div, extract_i5div): New Functions.
+ (v850_opcodes): Add v850EA instructions.
+
+ * v850-dis.c (disassemble): Add support for v850E instructions.
+
+ * v850-opc.c (insert_d5_4, extract_d5_4, insert_d16_16,
+ extract_d16_16, insert_i9, extract_i9, insert_u9, extract_u9,
+ insert_spe, extract_spe): New Functions.
+ (v850_opcodes): Add v850E instructions.
+
+ * v850-opc.c: Reorganised and re-layed out to improve readability
+ and portability.
+
+Tue Aug 5 23:09:31 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure: Rebuild with autoconf 2.12.1.
+
+Mon Aug 4 12:02:16 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * aclocal.m4, configure: Rebuild with new automake patches.
+
+Fri Aug 1 13:02:04 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Set enable_shared before AM_PROG_LIBTOOL.
+ * acinclude.m4: Just include acinclude.m4 from BFD.
+ * aclocal.m4, configure: Rebuild.
+
+Thu Jul 31 21:44:42 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am: New file, based on old Makefile.in.
+ * acconfig.h: New file.
+ * acinclude.m4: New file.
+ * stamp-h.in: New file.
+ * configure.in: Call AM_INIT_AUTOMAKE and AM_PROG_LIBTOOL.
+ Removed shared library handling; now handled by libtool. Replace
+ AC_CONFIG_HEADER with AM_CONFIG_HEADER. Call AM_MAINTAINER_MODE,
+ AM_CYGWIN32, and AM_EXEEXT. Replace AC_PROG_INSTALL with
+ AM_PROG_INSTALL. Change all .o files to .lo. Remove stamp-h
+ handling in AC_OUTPUT.
+ * dep-in.sed: Change .o to .lo.
+ * Makefile.in: Now built with automake.
+ * aclocal.m4: Now built with aclocal.
+ * config.in, configure: Rebuild.
+
+Mon Jul 28 21:52:24 1997 Jeffrey A Law (law@cygnus.com)
+
+ * mips-opc.c: Fix typo/thinko in "eret" instruction.
+
+Thu Jul 24 13:03:26 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-opc.c (sparc_opcodes): Fix spelling on fpaddX, fpsubX insns.
+ Make array const.
+ * sparc-dis.c (sorted_opcodes): New static local.
+ (struct opcode_hash): `opcode' is pointer to const element.
+ (build_hash): First arg is now table of sorted pointers.
+ (print_insn_sparc): Sort opcodes by sorting table of pointers.
+ (compare_opcodes): Update.
+
+Tue Jul 15 12:05:23 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * cgen-opc.c: #include <ctype.h>.
+ (hash_keyword_name): New arg `case_sensitive_p'. Callers updated.
+ Handle case insensitive hashing.
+ (hash_keyword_value): Change type of `value' to unsigned int.
+
+Thu Jul 10 12:56:10 1997 Jeffrey A Law (law@cygnus.com)
+
+ * mips-opc.c (mips_builtin_opcodes): If an insn uses single
+ precision FP, mark it as such. Likewise for double precision
+ FP. Mark ISA1 insns. Consolidate duplicate opcodes where
+ possible.
+
+Wed Jun 25 15:25:57 1997 Felix Lee <flee@cirdan.cygnus.com>
+
+ * ppc-opc.c (extract_nsi): make unsigned expression signed before
+ negating it.
+ (UNUSED): remove one level of parens, so MSVC doesn't choke on
+ nesting depth when all the macros are expanded.
+
+Tue Jun 17 17:02:17 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * sparc-opc.c: The fcmp v9a instructions take an integer register
+ as a destination, not a floating point register. From Christian
+ Kuehnke <Christian.Kuehnke@arbi.Informatik.Uni-Oldenburg.DE>.
+
+Mon Jun 16 14:13:18 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-dis.c (print_insn_arg): Print case 7.2 using %pc@()
+ syntax. From Roman Hodek
+ <rnhodek@faui22c.informatik.uni-erlangen.de>.
+
+ * i386-dis.c (twobyte_has_modrm): Fix pand.
+
+Mon Jun 16 14:08:38 1997 Michael Taylor <mbt@mit.edu>
+
+ * i386-dis.c (dis386_twobyte): Fix pand and pandn.
+
+Tue Jun 10 11:26:47 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
+
+ * arm-dis.c: Add prototypes for arm_decode_shift and
+ print_insn_arm.
+
+Mon Jun 2 11:39:04 1997 Gavin Koch <gavin@cygnus.com>
+
+ * mips-opc.c: Add r3900 insns.
+
+Tue May 27 15:55:44 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * sh-dis.c (print_insn_shx): Change relmask to bfd_vma. Don't
+ print delay slot instructions on the same line. When using a PC
+ relative load, add a comment with the value being loaded if it can
+ be obtained.
+
+Tue May 27 11:02:08 1997 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * i386-dis.c (dis386[], dis386_twobyte[]): change pushl/popl
+ to pushS/popS for segment regs and byte constant so that
+ pushw/popw printed when in 16 bit data mode.
+
+ * i386-dis.c (dis386[]): change cwtl, cltd to cWtS, cStd to
+ print cbtw, cwtd in 16 bit data mode.
+ * i386-dis.c (putop): extra case W to support above.
+
+ * i386-dis.c (print_insn_x86): print addr32 prefix when given
+ address size prefix in 16 bit address mode.
+
+Fri May 23 16:47:23 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * sh-dis.c: Reindent. Rename local variable fprintf to
+ fprintf_fn.
+
+Thu May 22 14:06:02 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * m32r-opc.c (m32r_cgen_insn_table, cmpui): Undo patch of May 2.
+
+Tue May 20 11:26:27 1997 Gavin Koch <gavin@cygnus.com>
+
+ * mips-opc.c (mips_builtin_opcodes): Moved INSN_ISA field into new
+ field membership.
+ * mips16-opc.c (mip16_opcodes): same.
+
+Mon May 12 15:10:53 1997 Jim Wilson <wilson@cygnus.com>
+
+ * m68k-opc.c (moveb): Change $d to %d.
+
+Mon May 5 14:28:41 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * i386-dis.c: (dis386_twobyte): Add MMX instructions.
+ (twobyte_has_modrm): Likewise.
+ (grps): Likewise.
+ (OP_MMX, OP_EM, OP_MS): New static functions.
+
+ * i386-dis.c: Revert patch of April 4. The output now matches
+ what gcc generates.
+
+Fri May 2 12:48:37 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * m32r-opc.c (m32r_cgen_insn_table, cmpui): Use $uimm16 instead
+ of $simm16.
+
+Thu May 1 15:34:15 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * m32r-opc.h (CGEN_ARCH): Renamed from CGEN_CPU.
+
+Tue Apr 15 12:40:08 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (install): Depend upon installdirs.
+ (installdirs): New target.
+
+Mon Apr 14 12:13:51 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ From Thomas Graichen <graichen@rzpd.de>:
+ * configure.in: Use ${CONFIG_SHELL} when running $ac_config_sub.
+ * configure: Rebuild.
+
+Sun Apr 13 17:50:41 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * cgen-*.c, m32r-*.c: #include sysdep.h instead of config.h.
+ Delete string{,s}.h support.
+
+Thu Apr 10 14:44:56 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * cgen-asm.c (cgen_parse_operand_fn): New global.
+ (cgen_parse_{{,un}signed_integer,address}): Update call to
+ cgen_parse_operand_fn.
+ (cgen_init_parse_operand): New function.
+ * m32r-asm.c (parse_insn_normal): cgen_init_parse_operand renamed
+ from cgen_asm_init_parse.
+ (m32r_cgen_assemble_insn): New operand `errmsg'.
+ Delete call to as_bad, return error message to caller.
+ (m32r_cgen_asm_hash_keywords): #if 0 out.
+
+Wed Apr 9 12:05:25 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k-dis.c (print_insn_arg) [case 'd']: Print as address register,
+ not data register.
+ [case 'J']: Fix typo in register name.
+
+Mon Apr 7 16:48:22 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Substitute SHLIB_LIBS.
+ * configure: Rebuild.
+ * Makefile.in (SHLIB_LIBS): New variable.
+ ($(SHLIB)): Use $(SHLIB_LIBS).
+
+Mon Apr 7 11:45:44 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * cgen-dis.c (build_dis_hash_table): Fix xmalloc size computation.
+
+ * cgen-opc.c (hash_keyword_name): Improve algorithm.
+
+ * disassemble.c (disassembler): Handle m32r.
+
+Fri Apr 4 12:29:38 1997 Doug Evans <dje@canuck.cygnus.com>
+
+ * m32r-asm.c, m32r-dis.c, m32r-opc.c, m32r-opc.h: New files.
+ * cgen-asm.c, cgen-dis.c, cgen-opc.c: New files.
+ * Makefile.in (CFILES): Add them.
+ (ALL_MACHINES): Add them.
+ (dependencies): Regenerate.
+ * configure.in (cgen_files): New variable.
+ (bfd_m32r_arch): Add entry.
+ * configure: Regenerate.
+
+Fri Apr 4 14:04:16 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Correct file names for bfd_mn10[23]00_arch.
+ * configure: Rebuild.
+
+ * Makefile.in: Rebuild dependencies.
+
+ * d10v-dis.c: Include "ansidecl.h" before "opcode/d10v.h".
+
+ * i386-dis.c (float_reg): Swap fsubrp and fsubp. Swap fdivrp and
+ fdivp.
+
+Thu Apr 3 13:22:45 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Branched binutils 2.8.
+
+Wed Apr 2 12:23:53 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * m10200-dis.c: Rename from mn10200-dis.c.
+ * m10200-opc.c: Rename from mn10200-opc.c.
+ * m10300-dis.c: Rename from mn10300-dis.c
+ * m10300-opc.c: Rename from mn10300-opc.c.
+ * Makefile.in: Update accordingly.
+
+ * mips16-opc.c: Add mul and dmul macros.
+
+Tue Apr 1 16:27:45 1997 Klaus Kaempf <kkaempf@progis.de>
+
+ * makefile.vms: Update CFLAGS, add clean target.
+
+Fri Mar 28 12:10:09 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-opc.c: Add "wait". From Ralf Baechle
+ <ralf@gnu.ai.mit.edu>.
+
+ * configure.in: Add stdlib.h to AC_CHECK_HEADERS list.
+ * configure, config.in: Rebuild.
+ * sysdep.h: Include <stdlib.h> if it exists.
+ * sparc-dis.c: Include <stdio.h> and "sysdep.h". Don't include
+ <string.h>.
+ * Makefile.in: Rebuild dependencies.
+
+Thu Mar 27 14:24:43 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * ppc-opc.c: Add PPC 403 instructions and extended opcodes. From
+ Andrew Bray <andy@madhouse.demon.co.uk>.
+
+ * mips-opc.c: Add cast when setting mips_opcodes.
+
+Tue Mar 25 23:04:00 1997 Stu Grossman (grossman@critters.cygnus.com)
+
+ * v850-dis.c (disassemble): Fix sign extension problem.
+ * v850-opc.c (extract_d*): Fix sign extension problems to make
+ disassembly calculate branch offsets correctly.
+
+Mon Mar 24 13:22:13 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * sh-opc.h: Add bf/s and bt/s as synonyms for bf.s and bt.s.
+
+ * mips-opc.c: Add dctr and dctw.
+
+Sun Mar 23 18:08:10 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d30v-dis.c (print_insn): Change the way signed constants
+ are displayed.
+
+Fri Mar 21 14:37:52 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (BFD_H): New variable.
+ (HFILES): New variable.
+ (CFILES): Add all C files.
+ (.dep, .dep1, dep.sed, dep, dep-in): New targets.
+ Delete old dependencies, and build new ones.
+ * dep-in.sed: New file.
+
+Thu Mar 20 19:03:30 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
+
+ * m68k-opc.c (m68k_opcode_aliases): Added blo and blo{s,b,w,l}.
+
+Tue Mar 18 14:17:03 1997 Jeffrey A Law (law@cygnus.com)
+
+ * mn10200-opc.c: Change "trap" to "syscall".
+ * mn10300-opc.c: Add new "syscall" instruction.
+
+Mon Mar 17 08:48:03 1997 J.T. Conklin <jtc@beauty.cygnus.com>
+
+ * m68k-opc.c (m68k_opcodes): Provide correct entries for mulsl and
+ mulul insns on the coldfire.
+
+Sat Mar 15 17:13:05 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * arm-dis.c (print_insn_arm): Don't print instruction bytes.
+ (print_insn_big_arm): Set bytes_per_chunk and display_endian.
+ (print_insn_little_arm): Likewise.
+
+Fri Mar 14 15:08:59 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ Based on patches from H.J. Lu <hjl@lucon.org>:
+ * i386-dis.c (fetch_data): Add prototype.
+ * m68k-dis.c (fetch_data): Add prototype.
+ (dummy_print_address): Add prototype. Make static.
+ * ppc-opc.c (valid_bo): Add prototype.
+ * sparc-dis.c (build_hash_table): Add prototype.
+ (is_delayed_branch, compute_arch_mask): Add prototypes.
+ (print_insn_sparc): Make several local variables const.
+ (compare_opcodes): Change arguments to const PTR. Add prototype.
+ * sparc-opc.c (arg): Change name field to be const.
+ (lookup_name, lookup_value): Add prototypes. Change table and
+ name parameters to be const.
+ (sparc_encode_asi): Change name parameter to be const.
+ (sparc_encode_membar, sparc_encode_prefetch): Likewise.
+ (sparc_encode_sparclet_cpreg): Likewise.
+ (sparc_decode_asi): Change return type to be const.
+ (sparc_decode_membar, sparc_decode_prefetch): Likewise.
+ (sparc_decode_sparclet_cpreg): Likewise.
+
+Fri Mar 7 10:51:49 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in ($(SHLINK)): Just use ln -s, not ln -sf, since
+ Solaris doesn't like the combined options, and the -f is
+ unnecessary.
+ (stamp-tshlink, install): Likewise.
+
+Thu Mar 6 16:51:11 1997 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-opc.c (IMM16_PCREL, SD8N_PCREL, D16_SHIFT): Mark these
+ as relaxable.
+
+Tue Mar 4 06:10:36 1997 J.T. Conklin <jtc@cygnus.com>
+
+ * m68k-opc.c (m68k_opcodes): Fix last change for the mc68010.
+
+Mon Mar 3 07:45:20 1997 J.T. Conklin <jtc@cygnus.com>
+
+ * m68k-opc.c (m68k_opcodes): Added entries for the tst insns on
+ the mc68000.
+
+Thu Feb 27 14:04:32 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
+
+ * m68k-opc.c (m68k_opcodes): Added swbegl pseudo-instruction.
+
+Thu Feb 27 11:36:41 1997 Michael Meissner <meissner@cygnus.com>
+
+ * tic80-dis.c (print_insn_tic80): Set info->bytes_per_line to 8.
+
+Wed Feb 26 15:34:48 1997 Michael Meissner <meissner@cygnus.com>
+
+ * tic80-opc.c (tic80_predefined_symbols): Define r25 properly.
+
+Wed Feb 26 13:38:30 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k-dis.c (NEXTSINGLE, NEXTDOUBLE, NEXTEXTEND): Use
+ floatformat_to_double to make portable.
+ (print_insn_arg): Use NEXTEXTEND macro when extracting extended
+ precision float.
+
+Mon Feb 24 19:26:12 1997 Dawn Perchik <dawn@cygnus.com>
+
+ * mips-opc.c: Initialize mips_opcodes to mips_builtin_opcodes,
+ and bfd_mips_num_opcodes to bfd_mips_num_builtin_opcodes.
+
+Mon Feb 24 15:19:01 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d10v-dis.c, d10v-opc.c: Change pre_defined_registers to
+ d10v_predefined_registers and reg_name_cnt to d10v_reg_name_cnt.
+
+Mon Feb 24 14:33:26 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (LSI_SCALED): Renamed from this ...
+ (OFF_SL_BR_SCALED): ... to this, and added the flag
+ TIC80_OPERAND_BASEREL to the flags word.
+ (tic80_opcodes): Replace all occurances of LSI_SCALED with
+ OFF_SL_BR_SCALED.
+
+Sat Feb 22 21:25:00 1997 Dawn Perchik <dawn@cygnus.com>
+
+ * mips-opc.c: Add macros for cop0, cop1 cop2 and cop3.
+ Change mips_opcodes from const array to a pointer,
+ and change bfd_mips_num_opcodes from const int to int,
+ so that we can increase the size of the mips opcodes table
+ dynamically.
+
+Sat Feb 22 21:03:47 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (tic80_predefined_symbols): Revert change to
+ store BITNUM values in the table in one's complement form
+ to match behavior when assembler is given a raw numeric
+ value for a BITNUM operand.
+ * tic80-dis.c (print_operand_bitnum): Ditto.
+
+Fri Feb 21 16:31:18 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d30v-opc.c: Removed references to FLAG_X.
+
+Wed Feb 19 14:51:20 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in: Add dependencies on ../bfd/bfd.h as required.
+
+Tue Feb 18 17:43:43 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * Makefile.in: Added d30v object files.
+ * configure: (bfd_d30v_arch) Rebuilt.
+ * configure.in: (bfd_d30v_arch) Added new case.
+ * d30v-dis.c: New file.
+ * d30v-opc.c: New file.
+ * disassemble.c (disassembler) Add entry for d30v.
+
+Tue Feb 18 16:32:08 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (tic80_predefined_symbols): Add symbolic
+ representations for the floating point BITNUM values.
+
+Fri Feb 14 12:14:05 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (tic80_predefined_symbols): Store BITNUM values
+ in the table in one's complement form, as they appear in the
+ actual instruction.
+ (tic80_symbol_to_value): Use macros to access predefined
+ symbol fields.
+ (tic80_value_to_symbol): Ditto.
+ (tic80_next_predefined_symbol): New function.
+ * tic80-dis.c (print_operand_bitnum): Remove code that did
+ one's complement for BITNUM values.
+
+Thu Feb 13 21:56:51 1997 Klaus Kaempf <kkaempf@progis.de>
+
+ * makefile.vms: Remove 8 bit characters. Update to latest
+ gcc release.
+
+Thu Feb 13 20:41:22 1997 Philippe De Muyter <phdm@info.ucl.ac.be>
+
+ * m68k-opc.c (m68k_opcodes): Add swbeg pseudo-instruction.
+
+Thu Feb 13 16:30:02 1997 Jeffrey A Law (law@cygnus.com)
+
+ * mn10200-opc.c (IMM16_PCREL): This is a signed operand.
+ (IMM24_PCREL): Likewise.
+
+Thu Feb 13 13:28:43 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-dis.c (print_mips16_insn_arg): Use memaddr - 2 as the base
+ address for an extended PC relative instruction that is not a
+ branch.
+
+Wed Feb 12 12:27:40 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k-dis.c (print_insn_m68k): Set bytes_per_chunk and
+ bytes_per_line.
+
+Tue Feb 11 16:36:31 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (tic80_operands): Fix typo '+' -> '|'.
+ (tic80_opcodes): Sort entries so that long immediate forms
+ come after short immediate forms, making it easier for
+ assembler to select the right one for a given operand.
+
+Tue Feb 11 15:26:47 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-dis.c (_print_insn_mips): Set bytes_per_chunk and
+ display_endian.
+ (print_insn_mips16): Likewise.
+
+Mon Feb 10 10:12:41 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (tic80_symbol_to_value): Changed to accept
+ a symbol class that restricts translation to just that
+ class (general register, condition code, etc).
+
+Thu Feb 6 17:34:09 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (tic80_operands): Add REG_0_E, REG_22_E,
+ and REG_DEST_E for register operands that have to be
+ an even numbered register. Add REG_FPA for operands that
+ are one of the floating point accumulator registers.
+ Add TIC80_OPERAND_MASK to flags for ENDMASK operand.
+ (tic80_opcodes): Change entries that need even numbered
+ register operands to use the new operand table entries.
+ Add "or" entries that are identical to "or.tt" entries.
+
+Wed Feb 5 11:12:44 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips16-opc.c: Add new cases of exit instruction for
+ disassembler.
+ * mips-dis.c (print_mips16_insn_arg): Display floating point
+ registers in operands of exit instruction. Print `$' before
+ register names in operands of entry and exit instructions.
+
+Thu Jan 30 14:09:03 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (tic80_predefined_symbols): Table of name/value
+ pairs for all predefined symbols recognized by the assembler.
+ Also used by the disassembling routines.
+ (tic80_symbol_to_value): New function.
+ (tic80_value_to_symbol): New function.
+ * tic80-dis.c (print_operand_control_register,
+ print_operand_condition_code, print_operand_bitnum):
+ Remove private tables and use tic80_value_to_symbol function.
+
+Thu Jan 30 11:30:45 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d10v-dis.c (print_operand): Change address printing
+ to correctly handle PC wrapping. Fixes PR11490.
+
+Wed Jan 29 09:39:17 1997 Jeffrey A Law (law@cygnus.com)
+
+ * mn10200-opc.c (mn10200_operands): Make 8 and 16 bit pc-relative
+ branches relaxable.
+
+Tue Jan 28 15:57:34 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-dis.c (print_insn_mips16): Set insn_info information.
+ (print_mips16_insn_arg): Likewise.
+
+ * mips-dis.c (print_insn_mips16): Better handling of an extend
+ opcode followed by an instruction which can not be extended.
+
+Fri Jan 24 12:08:21 1997 J.T. Conklin <jtc@cygnus.com>
+
+ * m68k-opc.c (m68k_opcodes): Changed operand specifier for the
+ coldfire moveb instruction to not allow an address register as
+ destination. Although the documentation does not indicate that
+ this is invalid, experiments uncovered unexpected behavior.
+ Added a comment explaining the situation. Thanks to Andreas
+ Schwab for pointing this out to me.
+
+Wed Jan 22 20:13:51 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (tic80_opcodes): Expand comment to note that the
+ entries are presorted so that entries with the same mnemonic are
+ adjacent to each other in the table. Sort the entries for each
+ instruction so that this is true.
+
+Mon Jan 20 12:48:57 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k-dis.c: Include <libiberty.h>.
+ (print_insn_m68k): Sort the opcode table on the most significant
+ nibble of the opcode.
+
+Sat Jan 18 15:15:05 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-dis.c (tic80_opcodes): Add "wrcr", "vmpy", "vrnd",
+ "vsub", "vst", "xnor", and "xor" instructions.
+ (V_a1): Renamed from V_a, msb of accumulator reg number.
+ (V_a0): Add macro, lsb of accumulator reg number.
+
+Fri Jan 17 18:24:31 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-dis.c (print_insn_tic80): Broke excessively long
+ function up into several smaller ones and arranged for
+ the instruction printing function to be callable recursively
+ to print vector instructions that have both a load and a
+ math instruction packed into a single opcode.
+ * tic80-opc.c (tic80_opcodes): Expand comment for vld opcode
+ to explain why it comes after the other vector opcodes.
+
+Fri Jan 17 16:19:15 1997 J.T. Conklin <jtc@beauty.cygnus.com>
+
+ * m68k-opc.c (m68k_opcodes): add b, w, or l specifier to coldfire
+ move insns to handle immediate operands.
+
+Thu Jan 17 16:19:00 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k-opc.c (m68k_opcodes): Delete duplicate entry for "cmpil".
+ fix operand mask in the "moveml" entries for the coldfire.
+
+Thu Jan 16 20:54:40 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (V_a, V_m, V_S, V_Z, V_p, OP_V, MASK_V):
+ New macros for building vector instruction opcodes.
+ (tic80_opcodes): Remove all uses of FMT_SI, FMT_REG, and
+ FMT_LI, which were unused. The field is now a flags field.
+ Remove some opcodes that are possible, but illegal, such
+ as long immediate instructions with doubles for immediate
+ values. Add "vadd" and "vld" instructions.
+
+Wed Jan 15 18:59:51 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (tic80_operands): Reorder some table entries to make
+ the order more logical. Move the shift alias instructions ("rotl",
+ "shl", "ins", "rotr", "extu", "exts", "srl", and "sra" to be
+ interspersed with the regular sr.x and sl.x instructions. Add
+ and test new instruction opcodes for "sl", "sli", "sr", "sri", "st",
+ "sub", "subu", "swcr", and "trap".
+
+Tue Jan 14 19:42:50 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-opc.c (OFF_SS_PC): Renamed from OFF_SS.
+ (OFF_SL_PC): Renamed from OFF_SL.
+ (OFF_SS_BR): New operand type for base relative operand.
+ (OFF_SL_BR): New operand type for base relative operand.
+ (REG_BASE): New operand type for base register operand.
+ (tic80_opcodes): Add and test "fmpy", "frndm", "frndn", "frndp",
+ "frndz", "fsqrt", "fsub", "illop0", "illopF", "ins", "jsr",
+ "ld", "ld.u", "lmo", "or", "rdcr", "rmo", "rotl", and "rotr"
+ instructions.
+ * tic80-dis.c (print_insn_tic80): Print opcode name with fixed width
+ 10 char field, padded with spaces on rhs, rather than a string
+ followed by a tab. Use renamed TIC80_OPERAND_PCREL flag bit rather
+ than old TIC80_OPERAND_RELATIVE. Add support for new
+ TIC80_OPERAND_BASEREL flag bit.
+
+Mon Jan 13 15:58:56 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-dis.c (print_insn_tic80): Print floating point operands
+ as floats.
+ * tic80-opc.c (SPFI): Add single precision floating point
+ immediate operand type.
+ (ROTATE): Add rotate operand type for shifts.
+ (ENDMASK): Add for shifts.
+ (n): Macro for the 'n' bit.
+ (i): Macro for the 'i' bit.
+ (PD): Macro for the 'PD' field.
+ (P2): Macro for the 'P2' field.
+ (P1): Macro for the 'P1' field.
+ (tic80_opcodes): Add entries for "exts", "extu", "fadd",
+ "fcmp", and "fdiv".
+
+Mon Jan 6 15:06:55 1997 Jeffrey A Law (law@cygnus.com)
+
+ * mn10200-dis.c (disassemble): Mask off unwanted bits after
+ adding in current address for pc-relative operands.
+
+Mon Jan 6 10:56:25 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-dis.c (R_SCALED): Add macro to test for ":s" modifier bit.
+ (print_insn_tic80): If R_SCALED then print ":s" modifier for operand.
+ * tic80-opc.c (REG0, REG22, REG27, SSOFF, LSOFF): Names
+ changed to REG_0, REG_22, REG_DEST, OFF_SS, OFF_SL respectively.
+ (SICR, LICR, REGM_SI, REGM_LI): Names changed to CR_SI, CR_LI,
+ REG_BASE_M_SI, REG_BASE_M_LI respectively.
+ (REG_SCALED, LSI_SCALED): New operand types.
+ (E): New macro for 'E' bit at bit 27.
+ (tic80_opcodes): Add and test dld, dld.u, dst, estop, and etrap
+ opcodes, including the various size flavors (b,h,w,d) for
+ the direct load and store instructions.
+
+Sun Jan 5 12:18:14 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-dis.c (M_SI, M_LI): Add macros to test for ":m" modifier bit
+ in an instruction.
+ * tic80-dis.c (print_insn_tic80): Change comma and paren handling.
+ Use M_SI and M_LI macros to check for ":m" modifier for GPR operands.
+ * tic80-opc.c (tic80_operands): Add REGM_SI and REGM_LI operands.
+ (F, M_REG, M_LI, M_SI, SZ_REG, SZ_LI, SZ_SI, D, S): New bit-twiddlers.
+ (MASK_LI_M, MASK_SI_M, MASK_REG_M): Remove and replace in opcode
+ masks with "MASK_* & ~M_*" to get the M bit reset.
+ (tic80_opcodes): Add bsr, bsr.a, cmnd, cmp, dcachec, and dcachef.
+
+Sat Jan 4 19:05:05 1997 Fred Fish <fnf@cygnus.com>
+
+ * tic80-dis.c (print_insn_tic80): Print TIC80_OPERAND_RELATIVE
+ correctly. Add support for printing TIC80_OPERAND_BITNUM and
+ TIC80_OPERAND_CC, and TIC80_OPERAND_CR operands in symbolic
+ form.
+ * tic80-opc.c (tic80_operands): Add SSOFF, LSOFF, BITNUM,
+ CC, SICR, and LICR table entries.
+ (tic80_opcodes): Add and test "nop", "br", "bbo", "bbz",
+ "bcnd", and "brcr" opcodes.
+
+Fri Jan 3 18:32:11 1997 Fred Fish <fnf@cygnus.com>
+
+ * ppc-opc.c (powerpc_operands): Make comment match the
+ actual fields (no shift field).
+ * sparc-opc.c (sparc_opcodes): Document why this cannot be "const".
+ * tic80-dis.c (print_insn_tic80): Replace abort stub with a
+ partial implementation, work in progress.
+ * tic80-opc.c (tic80_operands): Begin construction operands table.
+ (tic80_opcodes): Continue populating opcodes table and start
+ filling in the operand indices.
+ (tic80_num_opcodes): Add this.
+
+Fri Jan 3 12:13:52 1997 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c: Add #B case for moveq.
+
+Thu Jan 2 12:14:29 1997 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-dis.c (disassemble): Make sure all variables are initialized
+ before they are used.
+
+Tue Dec 31 12:20:38 1996 Jeffrey A Law (law@cygnus.com)
+
+ * v850-opc.c (v850_opcodes): Put curly-braces around operands
+ for "breakpoint" instruction.
+
+Tue Dec 31 15:38:13 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (ALL_CFLAGS): Add -D_GNU_SOURCE.
+ (dep): Use ALL_CFLAGS rather than CFLAGS.
+
+Tue Dec 31 15:09:16 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * v850-opc.c (D8_{6,7}): Set V850_OPERAND_ADJUST_SHORT_MEMORY
+ flag.
+
+Mon Dec 30 17:02:11 1996 Fred Fish <fnf@cygnus.com>
+
+ * Makefile.in (m68k-opc.o, alpha-opc.o): Remove dis-asm.h dependency.
+ (tic80-dis.o, tic80-opc.o): Add rules per comment in Makefile.in.
+
+Mon Dec 30 11:38:01 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips16-opc.c: Add "abs".
+
+Sun Dec 29 10:58:22 1996 Fred Fish <fnf@cygnus.com>
+
+ * Makefile.in (ALL_MACHINES): Add tic80-dis.o and tic80-opc.o.
+ * disassemble.c (ARCH_tic80): Define if ARCH_all is defined.
+ (disassembler): Add bfd_arch_tic80 support to set disassemble
+ to print_insn_tic80.
+ * tic80-dis.c (print_insn_tic80): Add stub.
+
+Fri Dec 27 22:30:57 1996 Fred Fish <fnf@cygnus.com>
+
+ * configure.in (arch in $selarchs): Add bfd_tic80_arch entry.
+ * configure: Regenerate with autoconf.
+ * tic80-dis.c: Add file.
+ * tic80-opc.c: Add file.
+
+Fri Dec 20 14:30:19 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d10v-opc.c (pre_defined_registers): Add cr[0-15], dpc, dpsw, link.
+
+Mon Dec 16 13:00:15 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10200-opc.c (mn10200_operands): Add SIMM16N.
+ (mn10200_opcodes): Use it for some logicals and btst insns.
+ Add "break" and "trap" instructions.
+
+ * mn10300-opc.c (mn10300_opcodes): Add "break" instruction.
+
+ * mn10200-opc.c: Add pseudo-ops for "mov (an),am" and "mov an,(am)".
+
+Sat Dec 14 22:36:20 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-dis.c (print_mips16_insn_arg): The base address of a PC
+ relative load or add now depends upon whether the instruction is
+ in a delay slot.
+
+Wed Dec 11 09:23:46 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10200-dis.c: Finish writing disassembler.
+ * mn10200-opc.c (mn10200_opcodes): Fix mask for "mov imm8,dn".
+ Fix mask for "jmp (an)".
+
+ * mn10300-dis.c (disassemble, print_insn_mn10300): Corrently
+ handle endianness issues for mn10300.
+
+ * mn10200-opc.c (mn10200_opcodes): Fix operands for "movb dm,(an)".
+
+Tue Dec 10 12:08:05 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10200-opc.c (mn10200_opcodes): "mov imm8,d0" is a format 2
+ instruction. Fix opcode field for "movb (imm24),dn".
+
+ * mn10200-opc.c (mn10200_operands): Fix insertion position
+ for DI operand.
+
+Mon Dec 9 16:42:43 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10200-opc.c: Create mn10200 opcode table.
+ * mn10200-dis.c: Flesh out mn10200 disassembler. Not ready,
+ but moving along nicely.
+
+Sun Dec 8 04:28:31 1996 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * Makefile.in (ALL_MACHINES): Add mips16-opc.o.
+
+Fri Dec 6 16:47:40 1996 J.T. Conklin <jtc@rhino.cygnus.com>
+
+ * m68k-opc.c (m68k_opcodes): Revert change to use < and >
+ specifiers for fmovem* instructions.
+
+Fri Dec 6 14:48:09 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-dis.c (disassemble): Remove '$' register prefixing.
+
+Fri Dec 6 17:34:39 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips16-opc.c: Change opcode for entry/exit to avoid conflicting
+ with dsrl.
+
+Fri Dec 6 14:48:09 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-opc.c: Add some comments explaining the various
+ operands and such.
+
+ * mn10300-dis.c (disassemble): Fix minor gcc -Wall warnings.
+
+Thu Dec 5 12:09:48 1996 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * m68k-dis.c (print_insn_arg): Handle new < and > operand
+ specifiers.
+
+ * m68k-opc.c (m68k_opcodes): Simplify table by using < and >
+ operand specifiers in fmovm* instructions.
+
+Wed Dec 4 14:52:18 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ppc-opc.c (insert_li): Give an error if the offset has the two
+ least significant bits set.
+
+Wed Nov 27 13:09:01 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-dis.c (print_insn_mips16): Separate the instruction from
+ the arguments with a tab, not a space.
+
+Tue Nov 26 13:24:17 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-dis.c (disasemble): Finish conversion to '$' as
+ register prefix.
+
+ * mn10300-opc.c (mn10300_opcodes): Fix mask field for
+ mov am,(imm32,sp).
+
+Tue Nov 26 10:53:21 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure: Rebuild with autoconf 2.12.
+
+ Add support for mips16 (16 bit MIPS implementation):
+ * mips16-opc.c: New file.
+ * mips-dis.c: Include "elf-bfd.h" and "elf/mips.h".
+ (mips16_reg_names): New static array.
+ (print_insn_big_mips): Use print_insn_mips16 in 16 bit mode or
+ after seeing a 16 bit symbol.
+ (print_insn_little_mips): Likewise.
+ (print_insn_mips16): New static function.
+ (print_mips16_insn_arg): New static function.
+ * mips-opc.c: Add jalx instruction.
+ * Makefile.in (mips16-opc.o): New target.
+ * configure.in: Use mips16-opc.o for bfd_mips_arch.
+ * configure: Rebuild.
+
+Mon Nov 25 16:15:17 1996 J.T. Conklin <jtc@cygnus.com>
+
+ * m68k-opc.c (m68k_opcodes): Simplify table by using < and >
+ operand specifiers in *save, *restore and movem* instructions.
+
+ * m68k-opc.c (m68k_opcodes): Fix move and movem instructions for
+ the coldfire.
+
+ * m68k-opc.c (m68k_opcodes): The coldfire (mcf5200) can only use
+ register operands for immediate arithmetic, not, neg, negx, and
+ set according to condition instructions.
+
+ * m68k-opc.c (m68k_opcodes): Consistantly Use "s" as the storage
+ specifier of the effective-address operand in immediate forms of
+ arithmetic instructions. The specifier for the immediate operand
+ notes how and where the constant will be stored.
+
+Mon Nov 25 11:17:01 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-opc.c (mn10300_opcodes): Remove redundant "lcc"
+ opcode.
+
+ * mn10300-dis.c (disassemble): Use '$' instead of '%' for
+ register prefix.
+
+ * mn10300-dis.c (disassemble): Prefix registers with '%'.
+
+Wed Nov 20 10:37:13 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-dis.c (disassemble): Handle register lists.
+
+ * mn10300-opc.c: Fix handling of register list operand for
+ "call", "ret", and "rets" instructions.
+
+ * mn10300-dis.c (disassemble): Print PC-relative and memory
+ addresses symbolically if possible.
+ * mn10300-opc.c: Distinguish between absolute memory addresses,
+ pc-relative offsets & random immediates.
+
+ * mn10300-dis.c (print_insn_mn10300): Fix fetch of last byte
+ in 7 byte insns.
+ (disassemble): Handle SPLIT and EXTENDED operands.
+
+Tue Nov 19 13:33:01 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-dis.c: Rough cut at printing some operands.
+
+ * mn10300-dis.c: Start working on disassembler support.
+ * mn10300-opc.c (mn10300_opcodes): Fix masks on several insns.
+
+ * mn10300-opc.c (mn10300_operands): Add "REGS" for a register
+ list.
+ (mn10300_opcodes): Use REGS for register list in "movm" instructions.
+
+Mon Nov 18 15:20:35 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * d10v-opc.c (d10v_opcodes): Add3 sets the carry.
+
+Fri Nov 15 13:43:19 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-opc.c (mn10300_opcodes): Demand parens around
+ register argument is calls and jmp instructions.
+
+Thu Nov 7 00:26:05 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-opc.c (mn10300_opcodes): Use DN01 for putx and
+ getx operand. Fix opcode for mulqu imm,dn.
+
+Wed Nov 6 13:42:32 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-opc.c (mn10300_operands): Hijack "bits" field
+ in MN10300_OPERAND_SPLIT operands for how many bits
+ appear in the basic insn word. Add IMM32_HIGH24,
+ IMM32_HIGH24_LOWSHIFT8, IMM8E_SHIFT8.
+ (mn10300_opcodes): Use new operands as needed.
+
+ * mn10300-opc.c (mn10300_operands): Add IMM32_LOWSHIFT8
+ for bset, bclr, btst instructions.
+ (mn10300_opcodes): Use new IMM32_LOWSHIFT8 as needed.
+
+ * mn10300-opc.c (mn10300_operands): Remove many redundant
+ operands. Update opcode table as appropriate.
+ (IMM32): Add MN10300_OPERAND_SPLIT flag.
+ (mn10300_opcodes): Fix single bit error in mov imm32,dn insn.
+
+Tue Nov 5 13:26:58 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-opc.c (mn10300_operands): Add DN2, DM2, AN2, AM2
+ operands (for indexed load/stores). Fix bitpos for DI
+ operand. Add SN8N_SHIFT8, IMM8_SHIFT8, and D16_SHIFT for the
+ few instructions that insert immediates/displacements in the
+ middle of the instruction. Add IMM8E for 8 bit immediate in
+ the extended part of an instruction.
+ (mn10300_operands): Use new opcodes as appropriate.
+
+Tue Nov 5 10:30:51 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d10v-opc.c (d10v_opcodes): Declare the trap instruction
+ sequential so the assembler never parallelizes it with
+ other instructions.
+
+Mon Nov 4 12:50:40 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-opc.c (mn10300_operands): Add DN01 and AN01 for
+ a data/address register that appears in register field 0
+ and register field 1.
+ (mn10300_opcodes): Use DN01 and AN01 for mov/cmp imm8,DN/AN
+
+Fri Nov 1 10:29:11 1996 Richard Henderson <rth@tamu.edu>
+
+ * alpha-dis.c (print_insn_alpha): Use new NOPAL mask for
+ standard disassembly.
+
+ * alpha-opc.c (alpha_operands): Rearrange flags slot.
+ (alpha_opcodes): Add new BWX, CIX, and MAX instructions.
+ Recategorize PALcode instructions.
+
+Wed Oct 30 16:46:58 1996 Jeffrey A Law (law@cygnus.com)
+
+ * v850-opc.c (v850_opcodes): Add relaxing "jbr".
+
+Tue Oct 29 16:30:28 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-dis.c (_print_insn_mips): Don't print a trailing tab if
+ there are no operand types.
+
+Tue Oct 29 12:22:21 1996 Jeffrey A Law (law@cygnus.com)
+
+ * v850-opc.c (D9_RELAX): Renamed from D9, all references
+ changed.
+ (v850_operands): Make sure D22 immediately follows D9_RELAX.
+
+Fri Oct 25 12:12:53 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * i386-dis.c (print_insn_x86): Set info->bytes_per_line to 5.
+
+Thu Oct 24 17:53:52 1996 Jeffrey A Law (law@cygnus.com)
+
+ * v850-opc.c (insert_d8_6): Fix operand insertion for sld.w
+ and sst.w instructions.
+
+ * v850-opc.c (v850_opcodes): Add "jCC" instructions (aliases for
+ "bCC"instructions).
+
+Thu Oct 24 17:21:20 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-dis.c (_print_insn_mips): Use a tab between the instruction
+ and the arguments.
+
+Tue Oct 22 23:32:56 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * ppc-opc.c (PPCPWR2): Define.
+ (powerpc_opcodes): Use PPCPWR2 for fsqrt, rather than duplicating
+ it.
+
+Fri Oct 11 16:03:49 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-opc.c (mn10300_opcodes): Fix typo in opcode
+ field for movhu instruction.
+
+ * v850-dis.c (disassemble): For V850_OPERAND_SIGNED operands,
+ cast value to "long" not "signed long" to keep hpux10
+ compiler quiet.
+
+Thu Oct 10 10:25:58 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-opc.c (mn10300_opcodes): Fix typo in opcode field
+ for mov (abs16),DN.
+
+ * mn10300-opc.c (FMT*): Remove definitions.
+
+ * mn10300-opc.c (mn10300_opcodes): Fix destination register
+ for shift-by-register opcodes.
+
+ * mn10300-opc.c (mn10300_operands): Break DN, DM, AN, AM
+ into [AD][MN][01] for encoding the position of the register
+ in the opcode.
+
+Wed Oct 9 11:19:26 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-opc.c (mn10300_opcodes): Add "extended" instructions,
+ "putx", "getx", "mulq", "mulqu", "sat16", "sat24", "bsch".
+
+Tue Oct 8 11:55:35 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-opc.c (mn10300_operands): Remove "REGS" operand.
+ Fix various typos. Add "PAREN" operand.
+ (MEM, MEM2): Define.
+ (mn10300_opcodes): Surround all memory addresses with "PAREN"
+ operands. Fix several typos.
+
+ * mn10300-opc.c (mn10300_opcodes): Fix typos in yesterday's
+ changes.
+
+Mon Oct 7 16:48:45 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10300-opc.c (FMT_XX): Renumber starting at one.
+ (mn10300_operands): Rough cut. Enough to parse "mov" instructions
+ at this time.
+ (mn10300_opcodes): Break opcode format out into its own field.
+ Update many operand fields to deal with signed vs unsigned
+ issues. Fix one or two typos in the "mov" instruction
+ opcode, mask and/or operand fields.
+
+Mon Oct 7 11:39:49 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k-opc.c (plusha): Prefer encoding for m68040up, in case
+ m68851 wasn't reset.
+
+Thu Oct 3 17:17:02 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * mn10300-opc.c (mn10300_opcodes): Add opcode & masks for
+ all opcodes. Very rough cut at operands for all opcodes.
+
+ * mn10300-opc.c (mn10300_opcodes): Start fleshing out the
+ opcode table.
+
+Thu Oct 3 10:06:07 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10200-opc.c, mn10300-opc.c: New files.
+ * mn10200-dis.c, mn10300-dis.c: New files.
+ * mn10x00-opc.c, mn10x00-dis.c: Deleted.
+ * disassemble.c: Break mn10x00 support into 10200 and 10300
+ support.
+ * configure.in: Likewise.
+ * configure: Rebuilt.
+
+Thu Oct 3 15:59:12 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
+
+ * Makefile.in (MOSTLYCLEAN): Move config.log to distclean.
+
+Wed Oct 2 23:28:42 1996 Jeffrey A Law (law@cygnus.com)
+
+ * mn10x00-opc.c, mn10x00-dis.c: New files for Matsushita
+ MN10x00 processors.
+ * disassemble (ARCH_mn10x00): Define.
+ (disassembler): Handle bfd_arch_mn10x00.
+ * configure.in: Recognize bfd_mn10x00_arch.
+ * configure: Rebuilt.
+
+Tue Oct 1 10:49:11 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * i386-dis.c (op_rtn): Change to be a pointer. Adjust uses
+ accordingly. Don't declare functions using op_rtn.
+
+Fri Sep 27 18:28:59 1996 Stu Grossman (grossman@critters.cygnus.com)
+
+ * v850-dis.c (disassemble): Add memaddr argument. Re-arrange
+ params to be more standard.
+ * (disassemble): Print absolute addresses and symbolic names for
+ branch and jump targets.
+ * v850-opc.c (v850_operand): Add displacement flag to 9 and 22
+ bit operands.
+ * (v850_opcodes): Add breakpoint insn.
+
+Mon Sep 23 12:32:26 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c: Move the fmovemx data register cases before the
+ other cases, so that they get recognized before the data register
+ does gets treated as a degenerate register list.
+
+Tue Sep 17 12:06:51 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-opc.c: Add a case for "div" and "divu" with two registers
+ and a destination of $0.
+
+Tue Sep 10 16:12:39 1996 Fred Fish <fnf@rtl.cygnus.com>
+
+ * mips-dis.c (print_insn_arg): Add prototype.
+ (_print_insn_mips): Ditto.
+
+Mon Sep 9 14:26:26 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-dis.c (print_insn_arg): Print condition code registers as
+ $fccN.
+
+Tue Sep 3 12:09:46 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-opc.c (sparc_opcodes): Add setuw, setsw, setx.
+
+Tue Sep 3 12:05:25 1996 Jeffrey A Law (law@cygnus.com)
+
+ * v850-dis.c (disassemble): Make static. Provide prototype.
+
+Sun Sep 1 22:30:40 1996 Jeffrey A Law (law@cygnus.com)
+
+ * v850-opc.c (insert_d9, insert_d22): Fix boundary case
+ in range checks.
+
+Sat Aug 31 01:27:26 1996 Jeffrey A Law (law@cygnus.com)
+
+ * v850-dis.c (disassemble): Handle insertion of ',', '[' and
+ ']' characters into the output stream.
+ * v850-opc.c (v850_opcodes: Remove size field from all opcodes.
+ Add "memop" field to all opcodes (for the disassembler).
+ Reorder opcodes so that "nop" comes before "mov" and "jr"
+ comes before "jarl".
+
+ * v850-dis.c (print_insn_v850): Fix typo in last change.
+
+ * v850-dis.c (print_insn_v850): Properly handle disassembling
+ a two byte insn at the end of a memory region when the memory
+ region's size is only two byte aligned.
+
+ * v850-dis.c (v850_cc_names): Fix stupid thinkos.
+
+ * v850-dis.c (v850_reg_names): Define.
+ (v850_sreg_names, v850_cc_names): Likewise.
+ (disassemble): Very rough cut at printing operands (unformatted).
+
+ * v850-opc.c (BOP_MASK): Fix.
+ (v850_opcodes): Fix mask for jarl and jr.
+
+ * v850-dis.c: New file. Skeleton for disassembler support.
+ * Makefile.in Remove v850 references, they're not needed here.
+ * configure.in: Add v850-dis.o when building v850 toolchains.
+ * configure: Rebuilt.
+ * disassemble.c (disassembler): Call v850 disassembler.
+
+ * v850-opc.c (insert_d8_7, extract_d8_7): New functions.
+ (insert_d8_6, extract_d8_6): New functions.
+ (v850_operands): Rename D7S to D7; operand for D7 is unsigned.
+ Rename D8 to D8_7, use {insert,extract}_d8_7 routines.
+ Add D8_6.
+ (IF4A, IF4B): Use "D7" instead of "D7S".
+ (IF4C, IF4D): Use "D8_7" instead of "D8".
+ (IF4E, IF4F): New. Use "D8_6".
+ (v850_opcodes): Use IF4A/IF4B for sld.b/sst.b. Use IF4C/IF4D for
+ sld.h/sst.h. Use IF4E/IF4F for sld.w/sst.w.
+
+ * v850-opc.c (insert_d16_15, extract_d16_15): New functions.
+ (v850_operands): Change D16 to D16_15, use special insert/extract
+ routines. New new D16 that uses the generic insert/extract code.
+ (IF7A, IF7B): Use D16_15.
+ (IF7C, IF7D): New. Use D16.
+ (v850_opcodes): Use IF7C and IF7D for ld.b and st.b.
+
+ * v850-opc.c (insert_d9, insert_d22): Slightly improve error
+ message. Issue an error if the branch offset is odd.
+
+ * v850-opc.c: Add notes about needing special insert/extract
+ for all the load/store insns, except "ld.b" and "st.b".
+
+ * v850-opc.c (insert_d22, extract_d22): New functions.
+ (v850_operands): Use insert_d22 and extract_d22 for
+ D22 operands.
+ (insert_d9): Fix range check.
+
+Fri Aug 30 18:01:02 1996 J.T. Conklin <jtc@hippo.cygnus.com>
+
+ * v850-opc.c (v850_operands): Add V850_OPERAND_SIGNED flag
+ and set bits field to D9 and D22 operands.
+
+Thu Aug 29 11:10:46 1996 Jeffrey A Law (law@cygnus.com)
+
+ * v850-opc.c (v850_operands): Define SR2 operand.
+ (v850_opcodes): "ldsr" uses R1,SR2.
+
+ * v850-opc.c (v850_opcodes): Fix opcode specs for
+ sld.w, sst.b, sst.h, sst.w, and nop.
+
+Wed Aug 28 15:55:43 1996 Jeffrey A Law (law@cygnus.com)
+
+ * v850-opc.c (v850_opcodes): Add null opcode to mark the
+ end of the opcode table.
+
+Mon Aug 26 13:35:53 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d10v-opc.c (pre_defined_registers): Added register pairs,
+ "r0-r1", "r2-r3", etc.
+
+Fri Aug 23 00:27:01 1996 Jeffrey A Law (law@cygnus.com)
+
+ * v850-opc.c (v850_operands): Make I16 be a signed operand.
+ Create I16U for an unsigned 16bit mmediate operand.
+ (v850_opcodes): Use I16U for "ori", "andi" and "xori".
+
+ * v850-opc.c (v850_operands): Define EP operand.
+ (IF4A, IF4B, IF4C, IF4D): Use EP.
+
+ * v850-opc.c (v850_opcodes): Fix opcode numbers for "mov"
+ with immediate operand, "movhi". Tweak "ldsr".
+
+ * v850-opc.c (v850_opcodes): Get ld.[bhw] and st.[bhw]
+ correct. Get sld.[bhw] and sst.[bhw] closer.
+
+ * v850-opc.c (v850_operands): "not" is a two byte insn
+
+ * v850-opc.c (v850_opcodes): Correct bit pattern for setf.
+
+ * v850-opc.c (v850_operands): D16 inserts at offset 16!
+
+ * v850-opc.c (two): Get order of words correct.
+
+ * v850-opc.c (v850_operands): I16 inserts at offset 16!
+
+ * v850-opc.c (v850_operands): Add "SR1" and "SR2" for system
+ register source and destination operands.
+ (v850_opcodes): Use SR1 and SR2 for "ldsr" and "stsr".
+
+ * v850-opc.c (v850_opcodes): Fix thinko in "jmp" opcode. Fix
+ same thinko in "trap" opcode.
+
+ * v850-opc.c (v850_opcodes): Add initializer for size field
+ on all opcodes.
+
+ * v850-opc.c (v850_operands): D6 -> DS7. References changed.
+ Add D8 for 8-bit unsigned field in short load/store insns.
+ (IF4A, IF4D): These both need two registers.
+ (IF4C, IF4D): Define. Use 8-bit unsigned field.
+ (v850_opcodes): For "sld.h", "sld.w", "sst.h", "sst.w", use
+ IF4C & IF4D. For "trap" use I5U, not I5. Add IF1 operand
+ for "ldsr" and "stsr".
+ * v850-opc.c (v850_operands): 3-bit immediate for bit insns
+ is unsigned.
+
+ * v850-opc.c (v850_opcodes): Correct short store half (sst.h) and
+ short store word (sst.w).
+
+Thu Aug 22 16:57:27 1996 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * v850-opc.c (v850_operands): Added insert and extract fields,
+ pointers to functions that handle unusual operand encodings.
+
+Thu Aug 22 01:05:24 1996 Jeffrey A Law (law@cygnus.com)
+
+ * v850-opc.c (v850_opcodes): Enable "trap".
+
+ * v850-opc.c (v850_opcodes): Fix order of displacement
+ and register for "set1", "clr1", "not1", and "tst1".
+
+Wed Aug 21 18:46:26 1996 Jeffrey A Law (law@cygnus.com)
+
+ * v850-opc.c (v850_operands): Add "B3" support.
+ (v850_opcodes): Fix and enable "set1", "clr1", "not1"
+ and "tst1".
+
+ * v850-opc.c (v850_opcodes): "jmp" has only an R1 operand.
+
+ * v850-opc.c: Close unterminated comment.
+
+Wed Aug 21 17:31:26 1996 J.T. Conklin <jtc@hippo.cygnus.com>
+
+ * v850-opc.c (v850_operands): Add flags field.
+ (v850_opcodes): add move opcodes.
+
+Tue Aug 20 14:41:03 1996 J.T. Conklin <jtc@hippo.cygnus.com>
+
+ * Makefile.in (ALL_MACHINES): Add v850-opc.o.
+ * configure: (bfd_v850v_arch) Add new case.
+ * configure.in: (bfd_v850_arch) Add new case.
+ * v850-opc.c: New file.
+
+Mon Aug 19 15:21:38 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-dis.c (print_insn_sparc): Handle little endian sparcs.
+
+Thu Aug 15 13:14:43 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d10v-opc.c: Add additional information to the opcode
+ table to help determinine which instructions can be done
+ in parallel.
+
+Thu Aug 15 13:11:13 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Update editing of include pathnames to be
+ more general.
+
+Thu Aug 15 16:28:41 1996 James G. Smith <jsmith@cygnus.co.uk>
+
+ * arm-opc.h: Added "bx" instruction definition.
+
+Wed Aug 14 17:00:04 1996 Richard Henderson <rth@tamu.edu>
+
+ * alpha-opc.c (EV4EXTHWINDEX): Field width should be 8 not 5.
+
+Mon Aug 12 14:30:37 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d10v-opc.c (d10v_opcodes): Minor fixes to addi and bl.l.
+
+Fri Aug 9 13:21:59 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d10v-opc.c (d10v_opcodes): Correct 'mv' unit entry to EITHER.
+
+Thu Aug 8 12:43:52 1996 Klaus Kaempf <kkaempf@progis.de>
+
+ * makefile.vms: Update for alpha-opc changes.
+
+Wed Aug 7 11:55:10 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * i386-dis.c (print_insn_i386): Actually return the correct value.
+ (ONE, OP_ONE): #ifdef out; not used.
+
+Fri Aug 2 17:47:03 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d10v-opc.c (d10v_opcodes): Added 2 accumulator sub instructions.
+ Changed subi operand type to treat 0 as 16.
+
+Wed Jul 31 16:21:41 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c: Add cpushl for the mcf5200. From Ken Rose
+ <rose@netcom.com>.
+
+Wed Jul 31 14:39:27 1996 James G. Smith <jsmith@cygnus.co.uk>
+
+ * arm-opc.h: (arm_opcodes): Added halfword and sign-extension
+ memory transfer instructions. Add new format string entries %h and %s.
+ * arm-dis.c: (print_insn_arm): Provide decoding of the new
+ formats %h and %s.
+
+Fri Jul 26 11:45:04 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d10v-opc.c (d10v_operands): Added UNUM4S; a 4-bit accumulator shift.
+ (d10v_opcodes): Modified accumulator shift instructions to use UNUM4S.
+
+Fri Jul 26 14:01:43 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * alpha-dis.c (print_insn_alpha_osf): Remove.
+ (print_insn_alpha_vms): Remove.
+ (print_insn_alpha): Make globally visible. Chose the register
+ names based on info->flavour.
+ * disassemble.c: Always return print_insn_alpha for the alpha.
+
+Thu Jul 25 15:24:17 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d10v-dis.c (dis_long): Handle unknown opcodes.
+
+Thu Jul 25 12:08:09 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d10v-opc.c: Changes to support signed and unsigned numbers.
+ All instructions with the same name that have long and short forms
+ now end in ".l" or ".s". Divs added.
+ * d10v-dis.c: Changes to support signed and unsigned numbers.
+
+Tue Jul 23 11:02:53 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * d10v-dis.c: Change all functions to use info->print_address_func.
+
+Mon Jul 22 15:38:53 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k-opc.c (m68k_opcodes): Make opcode masks for the ColdFire
+ move ccr/sr insns more strict so that the disassembler only
+ selects them when the addressing mode is data register.
+
+Mon Jul 22 11:25:24 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+ * d10v-opc.c (pre_defined_registers): Declare.
+ * d10v-dis.c (print_operand): Now uses pre_defined_registers
+ to pick a better name for the registers.
+
+Mon Jul 22 13:47:23 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * sparc-opc.c: Fix opcode values for fpack16, and fpackfix. Fix
+ operands for fexpand and fpmerge. From Christian Kuehnke
+ <Christian.Kuehnke@arbi.informatik.uni-oldenburg.de>.
+
+Mon Jul 22 13:17:06 1996 Richard Henderson <rth@tamu.edu>
+
+ * alpha-dis.c (print_insn_alpha): No longer the user-visible
+ print routine. Take new regnames and cpumask arguments.
+ Kill the environment variable nonsense.
+ (print_insn_alpha_osf): New function. Do OSF/1 style regnames.
+ (print_insn_alpha_vms): New function. Do VMS style regnames.
+ * disassemble.c (disassembler): Test bfd flavour to pick
+ between OSF and VMS routines. Default to OSF.
+
+Thu Jul 18 17:19:34 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Call AC_SUBST (INSTALL_SHLIB).
+ * configure: Rebuild.
+ * Makefile.in (install): Use @INSTALL_SHLIB@.
+
+Wed Jul 17 14:39:05 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
+
+ * configure: (bfd_d10v_arch) Add new case.
+ * configure.in: (bfd_d10v_arch) Add new case.
+ * d10v-dis.c: New file.
+ * d10v-opc.c: New file.
+ * disassemble.c (disassembler) Add entry for d10v.
+
+Wed Jul 17 10:12:05 1996 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * m68k-opc.c (m68k_opcodes): Fix bugs in coldfire insns relating
+ to bcc, trapfl, subxl, and wddata discovered by Andreas Schwab.
+
+Mon Jul 15 16:59:55 1996 Stu Grossman (grossman@critters.cygnus.com)
+
+ * i386-dis.c: Get rid of print_insn_i8086. Use info.mach to
+ distinguish between variants of the instruction set.
+ * sparc-dis.c: Get rid of print_insn_sparclite. Use info.mach to
+ distinguish between variants of the instruction set.
+
+Fri Jul 12 10:12:01 1996 Stu Grossman (grossman@critters.cygnus.com)
+
+ * i386-dis.c (print_insn_i8086): New routine to disassemble using
+ the 8086 instruction set.
+ * i386-dis.c: General cleanups. Make most things static. Add
+ prototypes. Get rid of static variables aflags and dflags. Pass
+ them as args (to almost everything).
+
+Thu Jul 11 11:58:44 1996 Jeffrey A Law (law@cygnus.com)
+
+ * h8300-dis.c (bfd_h8_disassemble): Handle macregs in ldmac insns.
+
+ * h8300-dis.c (bfd_h8_disassemble): Handle "ldm.l" and "stm.l".
+
+ * h8300-dis.c (bfd_h8_disassemble): "abs" is implicitly two
+ if the next arg is marked with SRC_IN_DST. Gross.
+
+ * h8300-dis.c (bfd_h8_disassemble): Print "exr" when
+ we're looking for and find EXR.
+
+ * h8300-dis.c (bfd_h8_disassemble): We don't have a match
+ if we're looking for KBIT and we don't find it.
+
+ * h8300-dis.c (bfd_h8_disassemble): Mask off unwanted bits
+ for L_3 and L_2.
+
+ * h8300-dis.c (bfd_h8_disassemble): Don't set plen for
+ 3bit immediate operands.
+
+Tue Jul 9 10:55:20 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Released binutils 2.7.
+
+ * alpha-opc.c: Add new case of "mov". From Klaus Kaempf
+ <kkaempf@progis.ac-net.de>.
+
+Thu Jul 4 11:42:51 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * alpha-opc.c: Correct second case of "mov" to use OPRL.
+
+Wed Jul 3 16:03:47 1996 Stu Grossman (grossman@critters.cygnus.com)
+
+ * sparc-dis.c (print_insn_sparclite): New routine to print
+ sparclite instructions.
+
+Wed Jul 3 14:21:18 1996 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * m68k-opc.c (m68k_opcodes): Add coldfire support.
+
+Fri Jun 28 15:53:51 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-opc.c (asi_table): Add #ASI_N, #ASI_N_L, #ASI_NUCLEUS,
+ #ASI_NUCLEUS_LITTLE. Rename #ASI_AS_IF_USER_{PRIMARY,SECONDARY}_L
+ to #ASI_AS_IF_USER_{PRIMARY,SECONDARY}_LITTLE.
+
+Tue Jun 25 22:58:31 1996 Jason Molenda (crash@godzilla.cygnus.co.jp)
+
+ * Makefile.in (bindir, libdir, datadir, mandir, infodir, includedir):
+ Use autoconf-set values.
+ (docdir, oldincludedir): Removed.
+ * configure.in (AC_PREREQ): autoconf 2.5 or higher.
+
+Fri Jun 21 13:53:36 1996 Richard Henderson <rth@tamu.edu>
+
+ * alpha-opc.c: New file.
+ * alpha-opc.h: Remove.
+ * alpha-dis.c: Complete rewrite to use new opcode table.
+ * configure.in: For bfd_alpha_arch, use alpha-opc.o.
+ * configure: Rebuild with autoconf 2.10.
+ * Makefile.in (ALL_MACHINES): Add alpha-opc.o.
+ (alpha-dis.o): Depend upon $(INCDIR)/opcode/alpha.h, not
+ alpha-opc.h.
+ (alpha-opc.o): New target.
+
+Wed Jun 19 15:55:12 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * sparc-dis.c (print_insn_sparc): Remove unused local variable i.
+ Set imm_added_to_rs1 even if the source and destination register
+ are not the same.
+
+ * sparc-opc.c: Add some two operand forms of the wr instruction.
+
+Tue Jun 18 15:58:27 1996 Jeffrey A. Law <law@rtl.cygnus.com>
+
+ * h8300-dis.c (bfd_h8_disassemble): Rename "hmode" argument
+ to just "mode".
+
+ * disassemble.c (disassembler): Handle H8/S.
+ * h8300-dis.c (print_insn_h8300s): New function for H8/S.
+
+Tue Jun 18 18:06:50 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * sparc-opc.c: Add beq/teq as aliases for be/te.
+
+ * ppc-opc.c: Fix fcmpo opcode. From Sergei Steshenko
+ <sergei@msil.sps.mot.com>.
+
+Tue Jun 18 15:08:54 1996 Klaus Kaempf <kkaempf@progis.de>
+
+ * makefile.vms: New file.
+
+ * alpha-dis.c (print_insn_alpha): Print lda ra,lit(rz) as mov.
+
+Mon Jun 10 18:50:38 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * h8300-dis.c (bfd_h8_disassemble): Always print ABS8MEM with :8,
+ regardless of plen.
+
+Tue Jun 4 09:15:53 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * i386-dis.c (OP_OFF): Call append_prefix.
+
+Thu May 23 15:18:23 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * ppc-opc.c (instruction encoding macros): Add explicit casts to
+ unsigned long to silence a warning from the Solaris PowerPC
+ compiler.
+
+Thu Apr 25 19:33:32 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-opc.c (sparc_opcodes): Add ultrasparc vis extensions.
+
+Mon Apr 22 17:12:35 1996 Doug Evans <dje@blues.cygnus.com>
+
+ * sparc-dis.c (X_IMM,X_SIMM): New macros.
+ (X_IMM13): Delete.
+ (print_insn_sparc): Merge cases i,I,j together. New cases X,Y.
+ * sparc-opc.c (sparc_opcodes): Use X for 5 bit shift constants,
+ Y for 6 bit shift constants. Rewrite entries for crdcxt, cwrcxt,
+ cpush, cpusha, cpull sparclet insns.
+
+Wed Apr 17 14:20:22 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-dis.c (compute_arch_mask): Replace ANSI style def with K&R.
+
+Thu Apr 11 17:30:02 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * sparc-opc.c: Set F_FBR on floating point branch instructions.
+ Set F_FLOAT on other floating point instructions.
+
+Mon Apr 8 17:02:48 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * ppc-opc.c (PPC860): Macro for 860/821 specific instructions and
+ registers.
+ (powerpc_opcodes): Add 860/821 specific SPRs.
+
+Mon Apr 8 14:00:44 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Permit --enable-shared to specify a list of
+ directories. Set and substitute BFD_PICLIST.
+ * configure: Rebuild.
+ * Makefile.in (BFD_PICLIST): Rename from BFD_LIST. Change all
+ uses. Set to @BFD_PICLIST@.
+
+Fri Apr 5 17:12:27 1996 Jeffrey A Law (law@cygnus.com)
+
+ * h8300-dis.c (bfd_h8_disassemble): Use "bit" for L_3 immediates,
+ not "abs", which may be needed for the absolute in something
+ like btst #0,@10:8. Print L_3 immediates separately from other
+ immediates. Change ABSMOV reference to ABS8MEM.
+
+Wed Apr 3 10:40:45 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-dis.c (opcodes_initialized): Move inside print_insn_sparc.
+ (current_arch_mask): New static global.
+ (compute_arch_mask): New static function.
+ (print_insn_sparc): Delete sparc_v9_p. New static local
+ current_mach. Resort opcode table if current_mach changes.
+ Generalize "insn not supported" test.
+ (compare_opcodes): Prefer supported opcodes to nonsupported ones.
+ Delete test for v9/!v9.
+ * sparc-opc.c (MASK_*): Use SPARC_OPCODE_ARCH_MASK.
+ (v6notlet): Define.
+ (brfc): Split into CBR and FBR for coprocessor/fp branches.
+ (brfcx): Renamed to FBRX.
+ (condfc): Renamed to CONDFC. Pass v6notlet to CBR (standard
+ coprocessor mnemonics are not supported on the sparclet).
+ (condf): Renamed to CONDF.
+ (SLCBCC2): Delete F_ALIAS flag.
+
+Sat Mar 30 21:45:59 1996 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-opc.c (sparc_opcodes): rd must be 0 for
+ mov foo,{%y,%psr,%wim,%tbr}. Support mov foo,%asrX.
+
+Fri Mar 29 13:02:40 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (config.status): Depend upon BFD VERSION file, so
+ that the shared library version number is set correctly.
+
+Tue Mar 26 15:47:14 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Use AC_CHECK_TOOL to find ar and ranlib. From
+ Miles Bader <miles@gnu.ai.mit.edu>.
+ * configure: Rebuild.
+
+Sat Mar 16 13:04:07 1996 Fred Fish <fnf@cygnus.com>
+
+ * z8kgen.c (internal, gas): Call xmalloc rather than unchecked
+ malloc.
+
+Tue Mar 12 12:14:10 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure: Rebuild with autoconf 2.8.
+
+Thu Mar 7 15:11:10 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ * sparc-dis.c (print_insn_sparc): Handle 'O' operand char like 'r'.
+ * sparc-opc.c (sparc_opcodes): Use 'O' operand char for `neg reg'.
+
+Tue Mar 5 15:51:57 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Don't set SHLIB or SHLINK to an empty string,
+ since they appear as targets in Makefile.in.
+ * configure: Rebuild.
+
+Mon Feb 26 13:03:40 1996 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-make.sed: Edit out shared library support bits.
+
+Tue Feb 20 20:48:28 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ * sparc-opc.c (v8,v6notv9): Add MASK_SPARCLET.
+ (sparc_opcode_archs): Add MASK_V8 to sparclet entry.
+ (sparc_opcodes): Add sparclet insns.
+ (sparclet_cpreg_table): New static local.
+ (sparc_{encode,decode}_sparclet_cpreg): New functions.
+ * sparc-dis.c (print_insn_sparc): Handle sparclet cpregs.
+
+Tue Feb 20 11:02:44 1996 Alan Modra <alan@mullet.Levels.UniSA.Edu.Au>
+
+ * i386-dis.c (index16): New static variable.
+ (putop): Print jecxz for 32 bit case, jcxz for 16 bit, not the
+ other way around.
+ (OP_indirE): Return result of OP_E.
+ (OP_E): Check for 16 bit addressing mode, and disassemble
+ correctly. Optimised 32 bit case a little. Don't print
+ "(base,index,scale)" when sib specifies only an offset.
+
+Mon Feb 19 12:32:17 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Set and substitute SHLIB_DEP.
+ * configure: Rebuild.
+ * Makefile.in (SHLIB_DEP): New variable.
+ (LIBIBERTY_LISTS, BFD_LIST): New variables.
+ (stamp-piclist): Depend upon LIBIBERTY_LISTS and BFD_LIST. If
+ COMMON_SHLIB, add them to piclist with appropriate modifications.
+ ($(SHLIB)): Depend upon $(SHLIB_DEP). Don't check COMMON_SHLIB
+ here: just use piclist.
+
+Mon Feb 19 02:03:50 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ * sparc-dis.c (MASK_V9,V9_ONLY_P,V9_P): Define.
+ (print_insn_sparc): Rewrite v9/not-v9 tests.
+ (compare_opcodes): Likewise.
+ * sparc-opc.c (MASK_<ARCH>): Define.
+ (v6,v7,v8,sparclite,v9,v9a): Redefine.
+ (sparclet,v6notv9): Define.
+ (sparc_opcode_archs): Delete member `conflicts'. Add `supported'.
+ (sparc_opcodes): Delete F_NOTV9, use v6notv9 instead.
+
+Thu Feb 15 14:45:05 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Call AC_PROG_CC before configure.host.
+ * configure: Rebuild.
+
+ * Makefile.in (SONAME): Remove leading ../bfd/ from $(SHLIB).
+
+Wed Feb 14 19:01:27 1996 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * i386-dis.c (onebyte_has_modrm): New static array.
+ (twobyte_has_modrm): New static array.
+ (print_insn_i386): Only fetch the mod/reg/rm byte if it is needed.
+
+Tue Feb 13 15:15:01 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in ($(SHLINK)): Check ts against $(SHLIB), not
+ $(SHLINK).
+
+Mon Feb 12 16:26:06 1996 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * ppc-opc.c (PPC): Undef, so default defination on Windows NT
+ doesn't conflict.
+
+Wed Feb 7 13:59:54 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c (m68k_opcodes): The bkpt instruction is supported on
+ m68010up, not just m68020up | cpu32.
+
+ * Makefile.in (SONAME): New variable.
+ ($(SHLINK)): Make a link to the transformed name, as well.
+ (stamp-tshlink): New target.
+ (install): Skip stamp-tshlink during install.
+
+Tue Feb 6 12:28:54 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Call AC_ARG_PROGRAM.
+ * configure: Rebuild.
+ * Makefile.in (program_transform_name): New variable.
+ (install): Transform library name before installing it.
+
+Mon Feb 5 16:14:42 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * i960-dis.c (mem): Add HX dcinva instruction.
+
+ Support for building as a shared library, based on patches from
+ Alan Modra <alan@spri.levels.unisa.edu.au>:
+ * configure.in: Add AC_ARG_ENABLE for shared and commonbfdlib.
+ New substitutions: ALLLIBS, PICFLAG, SHLIB, SHLIB_CC,
+ SHLIB_CFLAGS, COMMON_SHLIB, SHLINK.
+ * configure: Rebuild.
+ * Makefile.in (ALLLIBS): New variable.
+ (PICFLAG, SHLIB, SHLIB_CC, SHLIB_CFLAGS): New variables.
+ (COMMON_SHLIB, SHLINK): New variables.
+ (.c.o): If PICFLAG is set, compile twice, once PIC, once normal.
+ (STAGESTUFF): Remove variable.
+ (all): Depend upon $(ALLLIBS) rather than $(TARGETLIB).
+ (stamp-piclist, piclist): New targets.
+ ($(SHLIB), $(SHLINK)): New targets.
+ ($(OFILES)): Depend upon stamp-picdir.
+ (disassemble.o): Build twice if PICFLAG is set.
+ (MOSTLYCLEAN): Add pic/*.o.
+ (clean): Remove $(SHLIB), $(SHLINK), piclist, and stamp-piclist.
+ (distclean): Remove pic and stamp-picdir.
+ (install): Install shared libraries.
+ (stamp-picdir): New target.
+
+Fri Feb 2 17:15:25 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ * sparc-dis.c (print_insn_sparc): Delete DISASM_RAW_INSN support.
+ Print unknown instruction as "unknown", rather than in hex.
+
+Tue Jan 30 14:06:08 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * dis-buf.c: Include "sysdep.h" before "dis-asm.h".
+
+Thu Jan 25 20:24:07 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ * sparc-opc.c (sparc_opcode_archs): Mark v8/sparclite as conflicting.
+
+Thu Jan 25 11:56:49 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * i386-dis.c (print_insn_i386): Only fetch the mod/reg/rm byte
+ when necessary. From Ulrich Drepper
+ <drepper@myware.rz.uni-karlsruhe.de>.
+
+Thu Jan 25 03:39:10 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ * sparc-dis.c (print_insn_sparc): NUMOPCODES replaced with
+ sparc_num_opcodes. Update architecture enum values.
+ * sparc-opc.c (sparc_opcode_archs): Replaces architecture_pname.
+ (sparc_opcode_lookup_arch): New function.
+ (sparc_num_opcodes): Renamed from bfd_sparc_num_opcodes.
+ (sparc_opcodes): Add v9a shutdown insn.
+
+Mon Jan 22 08:29:59 1996 Doug Evans <dje@charmed.cygnus.com>
+
+ * sparc-dis.c (print_insn_sparc): Renamed from print_insn.
+ If DISASM_RAW_INSN, print insn in hex. Handle v9a as opcode
+ architecture.
+ (print_insn_sparc64): Deleted.
+ * disassemble.c (disassembler, case bfd_arch_sparc): Always use
+ print_insn_sparc.
+
+ * sparc-opc.c (architecture_pname): Add v9a.
+
+Fri Jan 12 14:35:58 1996 David Mosberger-Tang <davidm@AZStarNet.com>
+
+ * alpha-opc.h (alpha_insn_set): VAX floating point opcode was
+ incorrectly defined as 0x16 when it should be 0x15.
+ (FLOAT_FORMAT_MASK): function code is 11 bits, not just 7 bits!
+ (alpha_insn_set): added cvtst and cvttq float ops. Also added
+ excb (exception barrier) which is defined in the Alpha
+ Architecture Handbook version 2.
+ * alpha-dis.c (print_insn_alpha): Fixed special-case decoding for
+ OPERATE_FORMAT_CODE type instructions. The bug caused mulq to be
+ disassembled as or, for example.
+
+Wed Jan 10 12:37:22 1996 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-dis.c (print_insn_arg): Print cases 'i' and 'u' in hex.
+ (_print_insn_mips): Change i from int to unsigned int.
+
+Thu Jan 4 17:21:10 1996 David Edelsohn <edelsohn@mhpcc.edu>
+
+ * ppc-opc.c (powerpc_opcodes): tlbi POWER opcode form different
+ from tlbie PowerPC opcode. Add PPC603 tlbld and tlbli.
+
+Thu Dec 28 13:29:19 1995 John Hassey <hassey@rtp.dg.com>
+
+ * i386-dis.c: Added Pentium Pro instructions.
+
+Tue Dec 19 22:56:35 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * ppc-opc.c (fsqrt{,.}): Duplicate for PowerPC in addition to
+ being for Power2.
+
+Fri Dec 15 14:14:15 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * sh-opc.h (sh_nibble_type): Added REG_B.
+ (sh_arg_type): Added A_REG_B.
+ (sh_table): Added pref and bank reg versions of ldc, ldc.l, stc
+ and stc.l opcodes.
+ * sh-dis.c (print_insn_shx): Added cases for REG_B and A_REG_B.
+
+Fri Dec 15 16:44:31 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * disassemble.c (disassembler): Use new bfd_big_endian macro.
+
+Tue Dec 12 12:22:24 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (distclean): Remove stamp-h. From Ronald
+ F. Guilmette <rfg@monkeys.com>.
+
+Tue Dec 5 13:42:44 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ From David Mosberger-Tang <davidm@azstarnet.com>:
+ * alpha-dis.c (print_insn_alpha): fixed decoding of cpys
+ instruction.
+
+Mon Dec 4 12:29:05 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * sh-opc.h (sh_arg_type): Added A_SSR and A_SPC.
+ (sh_table): Added many SH3 opcodes.
+ * sh-dis.c (print_insn_shx): Added cases for A_SSR and A_SPC.
+
+Fri Dec 1 07:42:18 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * ppc-opc.c (subfc., subfco): Mark this PPCCOM, not PPC.
+ (subco,subco.): Mark this PPC, not PPCCOM.
+
+Mon Nov 27 13:09:52 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure: Rebuild with autoconf 2.7.
+
+Tue Nov 21 18:28:06 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure: Rebuild with autoconf 2.6.
+
+Wed Nov 15 19:02:53 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * configure.in: Sort list of architectures. Accept but do nothing
+ for alliant, convex, pyramid, romp, and tahoe.
+
+Wed Nov 8 20:18:59 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * a29k-dis.c (print_special): Change num to unsigned int.
+
+Wed Nov 8 20:10:35 1995 Eric Freudenthal <freudenthal@nyu.edu>
+
+ * a29k-dis.c (print_insn): Cast insn24 to unsigned long when
+ shifting it.
+
+Tue Nov 7 15:21:06 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Call AC_CHECK_PROG to find and cache AR.
+ * configure: Rebuilt.
+
+Mon Nov 6 17:39:47 1995 Harry Dolan <dolan@ssd.intel.com>
+
+ * configure.in: Add case for bfd_i860_arch.
+ * configure: Rebuild.
+
+Fri Nov 3 12:45:31 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c (m68k_opcodes): Correct fmoveml operands.
+ * m68k-dis.c (NEXTSINGLE): Change i to unsigned int.
+ (NEXTDOUBLE): Likewise.
+ (print_insn_m68k): Don't match fmoveml if there is more than one
+ register in the list.
+ (print_insn_arg): Handle a place of '8' for a type of 'L'.
+
+Thu Nov 2 23:06:33 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c: Use #W rather than #w.
+ * m68k-dis.c (print_insn_arg): Handle new 'W' place.
+
+Wed Nov 1 13:30:24 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c (m68k_opcode_aliases): Add dbfw as an alias for dbf,
+ and likewise for all the dbxx opcodes.
+
+Mon Oct 30 20:50:40 1995 Fred Fish <fnf@cygnus.com>
+
+ * arc-dis.c: Include elf-bfd.h rather than libelf.h.
+
+Mon Oct 23 11:11:34 1995 James G. Smith <jsmith@pasanda.cygnus.co.uk>
+
+ * mips-opc.c: Added shorthand (V1) for INSN_4100 manifest. Added
+ the VR4100 specific instructions to the mips_opcodes structure.
+
+Thu Oct 19 11:05:23 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-config.in, mpw-make.sed: Remove ugly workaround for
+ ugly Metrowerks bug in CW6, is fixed in CW7.
+
+Mon Oct 16 12:59:01 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * ppc-opc.c (whole file): Add flags for common/any support.
+
+Tue Oct 10 11:06:07 1995 Fred Fish <fnf@cygnus.com>
+
+ * Makefile.in (BISON): Remove macro.
+ (FLAGS_TO_PASS): Remove BISON.
+
+Fri Oct 6 16:26:45 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ Mon Sep 25 22:49:32 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k-dis.c (print_insn_m68k): Recognize all two-word
+ instructions that take no args by looking at the match mask.
+ (print_insn_arg): Always print "%" before register names.
+ [case 'c']: Use "nc" for the no-cache case, as recognized by gas.
+ [case '_']: Don't print "@#" before address.
+ [case 'J']: Use "%s" as format string, not register name.
+ [case 'B']: Treat place == 'C' like 'l' and 'L'.
+
+Thu Oct 5 22:16:20 1995 Ken Raeburn <raeburn@cygnus.com>
+
+ * i386-dis.c: Describe cmpxchg8b operand, and spell the opcode
+ name correctly.
+
+Tue Oct 3 08:30:20 1995 steve chamberlain <sac@slash.cygnus.com>
+
+ From David Mosberger-Tang <davidm@azstarnet.com>
+
+ * alpha-opc.h (MEMORY_FUNCTION_FORMAT_MASK): added.
+ (alpha_insn_set): added definitions for VAX floating point
+ instructions (Unix compilers don't generate these, but handcoded
+ assembly might still use them).
+
+ * alpha-dis.c (print_insn_alpha): added support for disassembling
+ the miscellaneous instructions in the Alpha instruction set.
+
+Tue Sep 26 18:47:20 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-config.in: Add m68k-opc.c.o to BFD_MACHINES for m68k,
+ no longer create sysdep.h, sed ppc-opc.c to work around a
+ serious Metrowerks C bug.
+ * mpw-make.in: Remove.
+ * mpw-make.sed: New file, used by mpw-configure to edit
+ Makefile.in into an MPW makefile.
+
+Wed Sep 20 12:55:28 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (maintainer-clean): New synonym for realclean.
+
+Tue Sep 19 15:28:36 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c: Split pmove patterns which use 'P' into patterns
+ which use '0', '1', and '2' instead. Specify the proper size for
+ a pmove immediate operand. Correct the pmovefd patterns to be
+ moves to a register, not from a register.
+ * m68k-dis.c (print_insn_arg): Replace 'P' with '0', '1', '2'.
+
+Thu Sep 14 11:58:22 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-opc.c (sparc_opcodes): Mark all insns that reference
+ %psr, %wim, %tbr as F_NOTV9.
+
+Fri Sep 8 01:07:38 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (Makefile): Just rebuild Makefile when running
+ config.status.
+ (config.h, stamp-h): New targets.
+ * configure.in: Call AC_CONFIG_HEADER and AC_CANONICAL_SYSTEM
+ earlier. Don't bother to call AC_ARG_PROGRAM. Touch stamp-h when
+ rebuilding config.h.
+ * configure: Rebuild.
+
+ * mips-opc.c: Change unaligned loads and stores with "t,A"
+ operands to use "t,A(b)".
+
+Thu Sep 7 19:02:46 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * sh-dis.c (print_insn_shx): Add F_FR0 support.
+
+Thu Sep 7 19:02:46 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * sh-dis.c (print_insn_shx): Change loop over op->arg[n] to iterate
+ until 3 instead of until 2.
+
+Wed Sep 6 21:21:33 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.in (ALL_CFLAGS): Define.
+ (.c.o, disassemble.o): Use $(ALL_CFLAGS).
+ (MOSTLYCLEAN): Add config.log.
+ (distclean): Don't remove config.log.
+ * configure.in: Substitute HDEFINES.
+ * configure: Rebuild.
+
+Wed Sep 6 15:08:09 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * sh-opc.h (sh_arg_type): Add F_FR0.
+ (sh_table, case fmac): Add F_FR0 as first argument.
+
+Wed Sep 6 15:08:09 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * sh-opc.h (sh_opcode_info): Increase arg array size to 4.
+
+Tue Sep 5 18:28:10 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-dis.c: Remove all references to NO_V9.
+
+Tue Sep 5 20:03:26 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * aclocal.m4: Just include ../bfd/aclocal.m4.
+ * configure: Rebuild.
+
+Tue Sep 5 16:09:59 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-dis.c (X_DISP19): Define.
+ (print_insn, case 'G'): Use it.
+ (print_insn, case 'L'): Sign extend displacement.
+
+Mon Sep 4 14:28:46 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Run ../bfd/configure.host before AC_PROG_CC.
+ Subsitute CFLAGS and AR. Call AC_PROG_INSTALL. Don't substitute
+ host_makefile_frag or frags.
+ * aclocal.m4: New file.
+ * configure: Rebuild.
+ * Makefile.in (INSTALL): Set to @INSTALL@.
+ (INSTALL_PROGRAM): Set to @INSTALL_PROGRAM@.
+ (INSTALL_DATA): Set to @INSTALL_DATA@.
+ (AR): Set to @AR@.
+ (AR_FLAGS): Set to rc rather than qc.
+ (CC): Define as @CC@.
+ (CFLAGS): Set to @CFLAGS@.
+ (@host_makefile_frag@): Remove.
+ (config.status): Remove dependency upon @frags@.
+
+ * configure.in: ../bfd/config.bfd now just sets shell variables.
+ Use them rather than looking through target Makefile fragments.
+ * configure: Rebuild.
+
+Thu Aug 31 12:35:32 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * sh-opc.h (ftrc): Change FPUL_N to FPUL_M.
+
+Wed Aug 30 13:52:28 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-opc.c (sparc_opcodes): Delete duplicate wr %y insn.
+ Add clrx, iprefetch, signx, clruw, cas, casl, casx, casxl synthetic
+ sparc64 insns.
+
+ * sparc-opc.c (sparc_opcodes): Fix prefetcha insn.
+ (lookup_{name,value}): New functions.
+ (prefetch_table): New static local.
+ (sparc_{encode,decode}_prefetch): New functions.
+ * sparc-dis.c (print_insn): Handle '*' arg (prefetch function).
+
+Wed Aug 30 11:11:58 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * sh-opc.h: Add blank lines to improve readabililty of sh3e
+ instructions.
+
+Wed Aug 30 11:09:38 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * sh-dis.c: Correct comment on first line of file.
+
+Tue Aug 29 15:37:18 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * disassemble.c (disassembler): Handle bfd_mach_sparc64.
+
+ * sparc-opc.c (asi, membar): New static locals.
+ (sparc_{encode,decode}_{asi,membar}): New functions.
+ (sparc_opcodes, membar insn): Fix.
+ * sparc-dis.c (print_insn): Call sparc_decode_asi.
+ Support decoding of membar masks.
+ (X_MEMBAR): Define.
+
+Sat Aug 26 21:22:48 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c (m68k_opcode_aliases): Add br, brs, brb, brw, brl.
+
+Mon Aug 21 17:33:36 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c (m68k_opcode_aliases): Add bhib as an alias for bhis,
+ and likewise for the other branches. Add bhs as an alias for bcc,
+ and likewise for the size variants. Add dbhs as an alias for
+ dbcc.
+
+Fri Aug 11 13:40:24 1995 Jeff Law (law@snake.cs.utah.edu)
+
+ * sh-opc.h (FP sts instructions): Update to match reality.
+
+Mon Aug 7 16:12:58 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-dis.c: (fpcr_names): Add % before all register names.
+ (reg_names): Likewise.
+ (print_insn_arg): Don't explicitly print % before register names.
+ Add % before register names in static array names. In case 'r',
+ print data registers as `@(Dn)', not `Dn@'. When printing a
+ memory address, don't print @# before it.
+ (print_indexed): Change base_disp and outer_disp from int to
+ bfd_vma. Print using MIT syntax, not mutant invalid Motorola
+ syntax. Sign extend 8 byte displacement correctly.
+ (print_base): Print using MIT syntax. Print zpc when appropriate.
+ Change parameter disp from int to bfd_vma.
+
+ * m68k-opc.c (m68k_opcode_aliases): Add jsrl and jsrs as aliases
+ for jsr.
+
+Mon Aug 7 02:21:40 1995 Jeff Law (law@snake.cs.utah.edu)
+
+ * sh-dis.c (print_insn_shx): Handle new operand types F_REG_N,
+ F_REG_M, FPSCR_M, FPSCR_N, FPUL_M and FPUL_N.
+ * sh-opc.h (sh_arg_type): Add new operand types.
+ (sh_table): Add new opcodes from SH3E Floating Point ISA.
+
+Sat Aug 5 16:50:14 1995 Fred Fish <fnf@cygnus.com>
+
+ * Makefile.in (distclean): Remove generated file config.h.
+
+Sat Aug 5 16:50:14 1995 Fred Fish <fnf@cygnus.com>
+
+ * Makefile.in (distclean): Remove generated file config.h.
+
+Wed Aug 2 18:33:40 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c: New file, holding tables from include/opcode/m68k.h.
+ Clean up tables.
+ * m68k-dis.c: Remove BREAK_UP_BIG_DECL stuff.
+ (opcode): Remove.
+ (print_insn_m68k): Change d to be const. Use m68k_numopcodes
+ rather than numopcodes. Use m68k_opcodes rather than removed
+ opcode function. Don't check F_ALIAS.
+ (print_insn_arg): Change first parameter to be const char *.
+ * Makefile.in (ALL_MACHINES): Add m68k-opc.o.
+ (m68k-opc.o): New target.
+ * configure.in: Build m68k-opc.o for bfd_m68k_arch.
+ * configure: Rebuild.
+
+Wed Aug 2 08:23:38 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-dis.c (HASH_SIZE, HASH_INSN): Define.
+ (opcode_bits, opcode_hash_table): New variables.
+ (opcodes_initialized): Renamed from opcodes_sorted.
+ (build_hash_table): New function.
+ (is_delayed_branch): Use hash table.
+ (print_insn): Renamed from print_insn_sparc, made static.
+ Build and use hash table. If !sparc64, ignore sparc64 insns,
+ and vice-versa if sparc64.
+ (print_insn_sparc, print_insn_sparc64): New functions.
+ (compare_opcodes): Move sparc64 opcodes to end.
+ Print commutative insns with constant second.
+ * sparc-opc.c (all non-v9 insns): Use flag F_NOTV9 instead of F_ALIAS.
+
+Tue Aug 1 00:12:49 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * sh-dis.c (print_insn_shx): Remove unused local dslot. Use
+ print_address_func for A_BDISP12 and A_BDISP8. Correct test which
+ avoids printing a delay slot in a delay slot.
+ * sh-opc.h (sh_table): Fully bracket last entry.
+
+Mon Jul 31 12:04:47 1995 Doug Evans <dje@canuck.cygnus.com>
+
+ * sparc-opc.c (sllx, srax, srlx): Fix disassembly.
+
+Wed Jul 12 00:59:34 1995 Ken Raeburn <raeburn@kr-pc.cygnus.com>
+
+ * configure.in: Get host_makefile_frag from ${srcdir}.
+
+ * configure.in: Autoconfiscated. Check for string[s].h. Create
+ config.h from config.in. Don't set up sysdep.h link.
+ * sysdep.h: New file.
+ * configure, config.in: New files, generated from configure.in.
+ * Makefile.in: Updated to be processed autoconf-style.
+ (distclean): Keep sysdep.h. Remove config.log and config.cache.
+ (Makefile): Depend on config.status.
+ (config.status): New rule.
+ * configure.bat: Update Makefile substitutions.
+
+Tue Jul 11 14:23:37 1995 Jeff Spiegel <jeffs@lsil.com>
+
+ * mips-opc.c (L1): Define.
+ (mips_opcodes): Add R4010 instructions: flushi, flushd, flushid,
+ addciu, madd, maddu, ffc, ffs, msub, msubu, selsi, selsr, waiti,
+ and wb.
+
+Tue Jul 11 11:49:49 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-opc.c (mips_opcodes): For the move pseudo-op, prefer daddu
+ if ISA 3 and addu otherwise, replacing or, since some MIPS chips
+ have multiple add units but only a single logical unit.
+
+ * ppc-opc.c (powerpc_operands): Change CR to use a bitsize of 3,
+ shifted by 18, without any insertion or extraction function.
+ (insert_cr, extract_cr): Remove.
+
+Wed Jun 21 20:05:39 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * m68k-dis.c (print_insn_arg, print_indexed): Print "%" before
+ register names.
+
+Thu Jun 15 17:23:31 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * mpw-config.in: Add sh and i386 configs, remove sparc config.
+ * sh-opc.h: Add copyright.
+
+Mon Jun 5 03:30:43 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
+
+ * Makefile.in (crunch-m68k): Delete extra target accidentally
+ checked in a while ago.
+
+Wed May 24 16:22:13 1995 Jim Wilson <wilson@chestnut.cygnus.com>
+
+ * sh-opc.h (sh_table): Add SH3 support.
+
+Wed May 24 14:16:08 1995 Steve Chamberlain <sac@slash.cygnus.com>
+
+ * sh-opc.h: Added bsrf and braf.
+
+Wed May 10 14:28:16 1995 Richard Earnshaw (rearnsha@armltd.co.uk)
+
+ * arm-opc.h (arm_opcodes): Add 64-bit multiply patterns. Delete
+ bogus [ls]fm{ea,fd} patterns.
+
+ * arm-opc.h (arm_opcodes): Correct typos in stm, ldm, std, and ldc.
+ * arm-dis.c (print_insn_arm): Make GIVEN a parameter, don't try and
+ initialize it from memory. Make function static.
+ (print_insn_{big,little}_arm): New functions.
+ * disassemble.c (disassembler, case bfd_arch_arm): Disassemble for
+ the correct endianness.
+
+Mon Apr 24 14:18:05 1995 Jason Molenda (crash@phydeaux.cygnus.com>
+
+ * sh-opc.h (sh_nibble_type, sh_arg_type): remove trailing , from
+ enum list.
+
+Wed Apr 19 14:07:03 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * m68k-dis.c (opcode): Finish change made by Kung Hsu on April
+ 17th, so that it builds again using GCC as the compiler.
+
+Tue Apr 18 12:14:51 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * mips-dis.c (print_insn_little_mips): Cast return value from
+ bfd_getl32 from bfd_vma to unsigned long, because _print_insn_mips
+ expects an unsigned long, and that might be fewer words of
+ argument storage (e.g., if bfd_vma is long long on a 32-bit
+ machine).
+ (print_insn_big_mips): Likewise with bfd_getb32 value.
+ (_print_insn_mips): Now static.
+
+Mon Apr 17 12:23:28 1995 Kung Hsu <kung@rtl.cygnus.com>
+
+ * m68k-dis.c: Take out #define BREAK_UP_BIG_DECL kludge, because
+ gcc memory hog problem with initializer is fixed.
+
+Mon Apr 10 15:55:01 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ Merge in support for Mac MPW as a host.
+ (Old change descriptions retained for informational value.)
+
+ * mpw-config.in (archname): Compute from the config.
+ (BFD_MACHINES, ARCHDEFS): Put into mk.tmp.
+
+ * mpw-config.in (target_arch): Compute from canonical target.
+ (m68k, mips, powerpc, sparc): Add architectures.
+ * mpw-make.in (disassemble.c.o): Add.
+ (ALL_CFLAGS): Remove special flags (-mc68020 -mc68881 -model far).
+
+ * mpw-config.in (BFD_MACHINES): Set to a default value.
+ * mpw-make.in (BFD_MACHINES): Remove wired-in value.
+
+ * mpw-make.in (CSEARCH): Add extra-include to search path.
+
+ * mpw-config.in (varargs.h): Don't create.
+ (sysdep.h): Create using forward-include.
+ * mpw-make.in (CSEARCH): Add include/mpw to search path.
+
+ * mpw-config.in: New file, MPW version of configure.in.
+ * mpw-make.in: New file, MPW version of Makefile.in.
+
+Fri Mar 31 14:23:38 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * alpha-dis.c (print_insn_alpha): Put empty statement after
+ default label.
+
+Tue Mar 21 10:51:40 1995 Jeff Law (law@snake.cs.utah.edu)
+
+ * hppa-dis.c (sign_extend): Delete, redundant with libhppa.h version.
+ (low_sign_extend): Likewise.
+ (get_field): Delete unused function.
+ (set_field, deposit_14, deposit_21): Likewise.
+
+Fri Mar 17 15:55:53 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * i386-dis.c: Support for more pentium opcodes. From Guy Harris
+ (guy@netapp.com).
+
+Tue Mar 14 00:52:57 1995 Ken Raeburn (raeburn@kr-pc.cygnus.com)
+
+ Sat Feb 11 17:22:41 1995 Klaus Kaempf (kkaempf@didymus.rmi.de)
+
+ * alpha-opc.h (OSF_ASMCODE): define
+ print pal-code names as defined in App C of the
+ Alpha Architecture Reference Manual
+
+ * alpha-dis.c: cleaned up output
+ print stylized code forms as defined in App A.4.3 of the
+ Alpha Architecture Reference Manual
+
+Wed Mar 8 15:21:14 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-opc.c: Add new mips4 instructions. Don't set INSN_RFE for
+ `rfe'.
+ * mips-dis.c (print_insn_arg): Handle new argument types 'h', 'R',
+ 'N', and 'M'.
+
+Wed Mar 8 02:54:05 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * m68k-dis.c (opcode): New function. Returns address of opcode
+ table entry given index, even if the opcode table was split to
+ work around gcc bugs.
+ (print_insn_m68k): Call opcode instead of referencing m68k_opcodes
+ directly.
+ (BREAK_UP_BIG_DECL): Make secondary array static and const.
+ (reg_names): Now const.
+ (print_insn_arg): Arrays cacheFieldName and names now const.
+ (print_indexed): Array scales now const.
+
+Tue Mar 7 16:41:21 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ppc-opc.c: Sort recently added instructions by minor opcode
+ number within major opcode number.
+
+Mon Mar 6 10:04:36 1995 Jeff Law (law@snake.cs.utah.edu)
+
+ * hppa-dis.c: Include libhppa.h.
+
+Fri Feb 24 19:15:36 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-opc.c: Change dli to use M_DLI, and add dla.
+
+Mon Feb 20 23:54:38 1995 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * Makefile.in (ALL_MACHINES): Add w65-dis.o.
+
+Thu Feb 16 17:34:41 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-opc.c: Add r4650 mul instruction.
+
+Wed Feb 15 15:45:20 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-opc.c: Add uld and usd macros for unaligned double load and
+ store.
+
+Tue Feb 14 13:17:37 1995 Michael Meissner <meissner@tiktok.cygnus.com>
+
+ * ppc-opc.c (powerpc_opcodes): Add 403GA opcodes rfci, dccci,
+ mfdcr, mtdcr, icbt, iccci.
+
+Thu Feb 9 12:28:13 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * i960-dis.c (struct tabent, struct sparse_tabent): Change the
+ signed char fields to shorts, more portable.
+
+Wed Feb 8 17:29:29 1995 Stan Shebs <shebs@andros.cygnus.com>
+
+ * i960-dis.c (struct tabent, struct sparse_tabent): Declare the
+ char fields as signed chars, since they may have negative values.
+
+Mon Feb 6 10:52:06 1995 J.T. Conklin <jtc@rtl.cygnus.com>
+
+ * i386-dis.c (dis386_twobyte): Add cpuid, From Charles Hannum
+ (mycroft@netbsd.org).
+
+Mon Jan 30 12:38:00 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ From "Logg, Ed" <elogg@ea.com>:
+ * ppc-opc.c (extract_bdm): Correct parenthezisation.
+ * ppc-dis.c (print_insn_powerpc): Print .long before unrecognized
+ value.
+
+Thu Jan 26 18:32:08 1995 Ian Lance Taylor <ian@cygnus.com>
+
+ * ppc-opc.c: Changes based on patch from David Edelsohn
+ <edelsohn@mhpcc.edu>.
+ (powerpc_operands): Add operands SPRBAT and SPRG. Split TBR out of
+ SPR.
+ (FXM_MASK): Define.
+ (insert_tbr): New static function.
+ (extract_tbr): New static function.
+ (XFXFXM_MASK, XFXM): Define.
+ (XSPRBAT_MASK, XSPRG_MASK): Define.
+ (powerpc_opcodes): Add instructions to access special registers by
+ name. Add mtcr and mftbu.
+
+Tue Jan 17 10:56:43 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * mips-opc.c (P3): Define.
+ (mips_opcodes): Add mad and madu.
+
+Sun Jan 15 16:32:59 1995 Steve Chamberlain <sac@splat>
+
+ * configure.in: Add W65 support.
+ * disassemble.c: Likewise.
+ * w65-opc.h, w65-dis.c: New files.
+
+Wed Dec 28 22:15:33 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * h8300-dis.c (bfd_h8_disassemble): Add support for 2 bit
+ immediates.
+
+Tue Dec 20 11:25:12 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * mips-opc.c: Add dli as a synonym for li.
+
+Thu Dec 8 18:23:31 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * alpha-dis.c (print_insn_alpha): Handle call_pal instruction, and
+ print something for reserved opcode values, even if it won't
+ assemble again.
+
+ * mips-dis.c (_print_insn_mips): When initializing, shift right
+ and mask, to avoid sign extension problems on the Alpha.
+
+ * m68k-dis.c (print_insn_arg, case 'J'): Handle buscr and pcr
+ control registers.
+
+Wed Nov 23 22:34:51 1994 Steve Chamberlain (sac@jonny.cygnus.com)
+
+ * sh-opc.h (mov.l gbr): Get direction right.
+ * sh-dis.c (print_insn_shx): New function.
+ (print_insn_shl, print_insn_sh): Call print_insn_shx to
+ print opcodes with right byte order.
+
+Thu Nov 3 19:32:22 1994 Ken Raeburn <raeburn@cujo.cygnus.com>
+
+ * ns32k-dis.c (struct ns32k_option): Renamed from struct option,
+ to avoid conflicts with getopt.
+
+Mon Oct 31 18:48:10 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * hppa-dis.c (print_insn_hppa): Read the instruction using
+ bfd_getb32, so that it works on a little endian or 64 bit host.
+ Remove unused local variable op.
+
+Tue Oct 25 17:07:57 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * mips-opc.c: Use or instead of addu for pseudo-op move, since
+ addu does not work correctly if -mips3.
+
+Wed Oct 19 13:40:16 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * a29k-dis.c (print_special): Add special register names defined
+ on 29030, 29040 and 29050.
+ (print_insn): Handle new operand type 'I'.
+
+Wed Oct 12 11:59:55 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * Makefile.in (INSTALL): Use top level install.sh script.
+
+Wed Oct 5 19:16:29 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * sparc-dis.c: Rewrite to use bitfields, rather than a union, so
+ that it works on a little endian host.
+
+Tue Oct 4 12:14:21 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
+
+ * configure.in: Use ${config_shell} when running config.bfd.
+
+Wed Sep 21 18:49:12 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * mips-opc.c (mips_opcodes): "dabs" is only available with -mips3.
+
+Thu Sep 15 16:30:22 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * a29k-dis.c (print_insn): Print the opcode.
+
+Wed Sep 14 17:52:14 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * mips-opc.c (mips_opcodes): Set WR_t for sc and scd.
+
+Sun Sep 11 22:32:17 1994 Jeff Law (law@snake.cs.utah.edu)
+
+ * hppa-dis.c (reg_names): Use r26-r23 for arg0-arg3.
+
+Tue Sep 6 11:37:12 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * mips-opc.c: Set INSN_STORE_MEMORY flag for all instructions
+ which store a value into memory.
+
+Sun Sep 04 17:58:10 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+
+ * configure.in, Makefile.in, disassemble.c: Add support for the ARM.
+ * arm-dis.c, arm-opc.h: New files.
+
+Fri Aug 5 14:00:05 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * Makefile.in (ns32k-dis.o): Add dependency.
+ * ns32k-dis.c (print_insn_arg): Declare initialized local as
+ string, not as array of chars.
+
+Thu Jul 28 18:14:16 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * sparc-dis.c (print_insn_sparc): Handle new operand type 'x'.
+
+ * sparc-opc.c: Added sparclite extended FP operations, and
+ versions of v9 impdep* instructions permitting specification of
+ the OPF field.
+
+Tue Jul 26 16:36:03 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * i960-dis.c (reg_names): Now const.
+ (struct sparse_tabent): New type, copied from array type in mem
+ function.
+ (ctrl): Local static array ctrl_tab now const.
+ (cobr): Local static array cobr_tab now const.
+ (mem): Local variables reg1, reg2, reg3 now point to const. Local
+ static variable mem_tab no longer explicitly initialized. Changed
+ mem_init to const array of struct sparse_tabent.
+ (reg): Local static variable reg_tab no longer explicitly
+ initialized. Changed reg_init to const array of struct
+ sparse_tabent.
+ (ea): Local static array scale_tab now const.
+
+ * i960-dis.c (reg): Added i960JX instructions to reg_init table.
+ (REG_MAX): Updated.
+
+Tue Jul 19 21:00:00 1994 DJ Delorie (dj@ctron.com)
+
+ * configure.bat: the disassember needs to be enabled for
+ "objdump -d" to work in djgpp.
+
+Wed Jul 13 18:01:58 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * ns32k-dis.c: Deleted all code in "#ifdef GDB".
+ (invalid_float): Enabled general version, doesn't require running
+ on ns32k host. Changed to take char* argument, and test for
+ explicitly specified sizes, instead of using sizeof() on host CPU
+ types.
+ (INVALID_FLOAT): Cast first argument.
+ (opt_u, opt_U, opt_O, opt_C, opt_S, list_P532, list_M532,
+ list_P032, list_M032): Now const.
+ (optlist, list_search): Made appropriate arguments now point to
+ const.
+ (print_insn_arg): Changed static array of one-character-string
+ pointers into a static const array of characters; fixed sprintf
+ statement accordingly.
+
+Sun Jul 10 00:27:47 1994 Ian Dall (dall@hfrd.dsto.gov.au)
+
+ * opcodes/ns32k-dis.c: Semi-new file. Had apparently been dropped
+ from distribution. A ns32k-dis.c from a previous distribution has
+ been brought up to date and supports the new interface.
+
+ * disassemble.c: define ARCH_ns32k and add case bfd_arch_ns32k.
+
+ * configure.in: add bfd_ns32k_arch target support.
+
+ * Makefile.in: add ns32k-dis.o to ALL_MACHINES.
+ Add ns32k-dis.c to CFILES. Add dependencies for ns32k-dis.o.
+
+Wed Jun 29 22:10:37 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * h8300-dis.c (bfd_h8_disassemble): Get 16bit branch
+ disassembly right.
+
+Tue Jun 28 13:22:06 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ * h8300-dis.c, mips-dis.c: Don't use true and false.
+
+Thu Jun 23 12:53:19 1994 David J. Mackenzie (djm@rtl.cygnus.com)
+
+ * configure.in: Change --with-targets to --enable-targets.
+
+Wed Jun 22 13:38:32 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
+
+ * mips-dis.c (_print_insn_mips): Build a static hash table mapping
+ opcodes to the first instruction with that opcode, to speed
+ disassembly of large files. From ralphc@pyramid.com (Ralph
+ Campbell).
+
+Tue Jun 7 12:49:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * Makefile.in (mostlyclean): Fix typo (was mostyclean).
+
+Wed May 11 22:32:00 1994 DJ Delorie (dj@ctron.com)
+
+ * configure.bat: update to latest makefile.in
+
+Sat May 7 17:13:21 1994 Steve Chamberlain (sac@cygnus.com)
+
+ * a29k-dis.c (print_insn): Print 'x' type operand in hex.
+ * h8300-dis.c (bfd_h8_disassemble): Print 16bit rels correctly.
+ * sh-dis.c (print_insn_sh): Don't recur endlessly if delay
+ slot insn is in a delay slot.
+ * z8k-opc.h: (resflg): Fix patterns.
+ * h8500-opc.h Fix CR insn patterns.
+
+Fri May 6 14:34:46 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ppc-opc.c (powerpc_opcodes): Put PowerPC versions of "cmp" and
+ "cmpl" before POWER versions, so that gas -many uses them.
+
+Thu Apr 28 18:32:36 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
+
+ * disassemble.c: New file.
+ * Makefile.in (OFILES): Add disassemble.o.
+ (disassemble.o): Provide dependencies; compile with $(ARCHDEFS).
+ * configure.in: Define ARCHDEFS in Makefile. Code taken from
+ binutils/configure.in.
+
+ * m68k-dis.c (print_insn_m68k): If F_ALIAS flag is set, skip the
+ opcode being examined.
+
+Thu Apr 21 17:08:40 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ppc-opc.c (powerpc_operands): Added RAL, RAM and RAS.
+ (insert_ral, insert_ram, insert_ras): New functions.
+ (powerpc_opcodes): Use RAL for load with update, RAM for lmw, and
+ RAS for store with update.
+
+Sat Apr 16 23:41:44 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ppc-opc.c (powerpc_opcodes): Correct fcir. From David Edelsohn
+ (edelsohn@npac.syr.edu).
+
+Wed Apr 6 17:11:45 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c (mips_opcodes): Correct operands of "nor" with an
+ immediate argument.
+
+Mon Apr 4 16:30:46 1994 Doug Evans (dje@canuck.cygnus.com)
+
+ * sparc-opc.c (sparc_opcodes): Fix "rd %fprs,%l0".
+
+Mon Apr 4 13:22:00 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ppc-opc.c (powerpc_operands): The signedp field has been
+ removed, so don't initialize it. Set the PPC_OPERAND_SIGNED flag
+ instead. Add new operand SISIGNOPT.
+ (powerpc_opcodes): For lis, liu, addis, and cau use SISIGNOPT.
+ Based on patch from David Edelsohn (edelsohn@npac.syr.edu).
+ * ppc-dis.c (print_insn_powerpc): Check PPC_OPERAND_SIGNED rather
+ than signedp field.
+
+Wed Mar 30 00:31:49 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * i386-dis.c (struct private): Renamed to dis_private. `private'
+ is a reserved word for dynix cc.
+
+Mon Mar 28 13:00:15 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * configure.in: Change error message to refer to bfd/config.bfd
+ rather than bfd/configure.in.
+
+Mon Mar 28 12:28:30 1994 David Edelsohn (edelsohn@npac.syr.edu)
+
+ * ppc-opc.c: Define POWER2 as short alias flag.
+ (powerpc_opcodes): Add POWER/2 opcodes lfq*, stfq*, fcir[z], and
+ fsqrt.
+
+Wed Mar 23 12:23:05 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * i960-dis.c (print_insn_i960): Don't read a second word for
+ opcodes 0, 1, 2 and 3.
+
+Wed Mar 16 15:37:58 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * configure.in: Don't build m68881-ext.o for bfd_m68k_arch.
+
+Mon Mar 14 14:53:50 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * m68881-ext.c: Removed; no longer used.
+ * Makefile.in: Changed accordingly.
+
+ * m68k-dis.c (ext_format_68881): Don't declare.
+ (print_insn_m68k): If an instruction uses place 'i', it uses at
+ least four fixed bytes.
+ (print_insn_arg): Don't bump p by 2 for case 'I', place 'i'. For
+ extended float, convert to double using floatformat_to_double, not
+ ieee_extended_to_double, and fetch the data before converting it.
+
+Tue Mar 8 18:12:25 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c: It's sqrt.s, not sqrt.w. From
+ davidj@ICSI.Berkeley.EDU (David Johnson).
+
+Tue Feb 8 16:55:27 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ppc-opc.c (powerpc_opcodes): The POWER uses bdn[l][a] where the
+ PowerPC uses bdnz[l][a].
+
+Tue Feb 8 00:32:28 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * dis-buf.c, i386-dis.c: Include sysdep.h.
+
+Mon Feb 7 19:22:23 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * configure.in (bfd_powerpc_arch): Use ppc-dis.o and ppc-opc.o.
+
+ * ppc-opc.c (powerpc_opcodes): Mark POWER instructions supported
+ by Motorola PowerPC 601 with PPC_OPCODE_601.
+ * ppc-dis.c (print_insn_big_powerpc, print_insn_little_powerpc):
+ Disassemble Motorola PowerPC 601 instructions as well as normal
+ PowerPC instructions.
+
+Sun Feb 6 07:45:17 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
+
+ * i960-dis.c (reg, mem): Just use a static array instead of
+ calling xmalloc.
+
+Sat Feb 5 00:04:02 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * hppa-dis.c (print_insn_hppa): For '?' and '@' only adjust the
+ condition name index if this is for a negated condition.
+
+ * hppa-dis.c (print_insn_hppa): No space before 'H' operand.
+ Floating point format for 'H' operand is backwards from normal
+ case (0 == double, 1 == single). For '4', '6', '7', '9', and '8'
+ operands (fmpyadd and fmpysub), handle bizarre register
+ translation correctly for single precision format.
+
+ * hppa-dis.c (print_insn_hppa): Do not emit a space after 'F'
+ or 'I' operands if the next format specifier is 'M' (fcmp
+ condition completer).
+
+Feb 4 23:38:03 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ppc-opc.c (powerpc_operands): New operand type MBE to handle a
+ single number giving a bitmask for the MB and ME fields of an M
+ form instruction. Change NB to accept 32, and turn it into 0;
+ also turn 0 into 32 when disassembling. Seperated SH from NB.
+ (insert_mbe, extract_mbe): New functions.
+ (insert_nb, extract_nb): New functions.
+ (SC_MASK): Mask out SA and LK bits.
+ (powerpc_opcodes): Change "cal" to use RT, D, RA rather than RT,
+ RA, SI. Change "liu" and "cau" to use UI rather than SI. Mark
+ "bctr" and "bctrl" as accepted by POWER. Change "rlwimi",
+ "rlimi", "rlwimi.", "rlimi.", "rlwinm", "rlinm", "rlwinm.",
+ "rlinm.", "rlmi", "rlmi.", "rlwnm", "rlnm", "rlwnm.", "rlnm." to
+ use MBE rather than MB. Add "mfmq" and "mtmq" POWER instructions.
+ (powerpc_macros): Define table of macro definitions.
+ (powerpc_num_macros): Define.
+
+ * ppc-dis.c (print_insn_powerpc): Don't skip optional operands
+ if PPC_OPERAND_NEXT is set.
+
+Sat Jan 22 23:10:07 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * i960-dis.c (print_insn_i960): Make buffer bfd_byte instead of
+ char. Retrieve contents using bfd_getl32 instead of shifting.
+
+Fri Jan 21 19:01:39 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * ppc-opc.c: New file. Opcode table for PowerPC, including
+ opcodes for POWER (RS/6000).
+ * ppc-dis.c: New file. PowerPC and Power (RS/6000) disassembler.
+ * Makefile.in (ALL_MACHINES): Add ppc-dis.o and ppc-opc.o.
+ (CFILES): Add ppc-dis.c.
+ (ppc-dis.o, ppc-opc.o): New targets.
+ * configure.in: Build ppc-dis.o and ppc-opc.o for bfd_rs6000_arch.
+
+Mon Jan 17 20:05:49 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
+
+ * hppa-dis.c (print_insn_hppa): Handle 'N' in assembler template.
+ No space before 'u', 'f', or 'N'.
+
+Sun Jan 16 14:20:16 1994 Jim Kingdon (kingdon@deneb.cygnus.com)
+
+ * i386-dis.c (print_insn_i386): Add FIXME comment regarding reading
+ farther than we should.
+
+ * i386-dis.c (dis386): Use Yb and Yv for scasb and scasS.
+
+Thu Jan 6 12:38:05 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * sparc-dis.c m68k-dis.c alpha-dis.c a29k-dis.c: Fix comments.
+
+Wed Jan 5 11:56:21 1994 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * i960-dis.c (print_insn_i960): Only read word2 if the instruction
+ needs it, to prevent reading past the end of a section.
+
+Wed Nov 17 17:20:12 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.h: Use macro for j instruction, to support SVR4 PIC.
+ Removed t,A case for la; always use t,A(b) case.
+
+Mon Nov 8 12:37:36 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ From Ted Lemen <mellon@pepper.ncd.com>
+ * mips-dis.c (print_insn_arg): Handle 'k'.
+ * mips-opc.c: Make cache use k, not t.
+
+Sun Nov 7 23:52:34 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * alpha-opc.h, alpha-dis.c (print_insn_alpha): Add
+ FLOAT_MEMORY_FORMAT_CODE, FLOAT_BRANCH_FORMAT_CODE, correct
+ FLOAT_FORMAT_CODE to put out floating point register names.
+
+Mon Nov 1 18:17:51 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c: Use macros for jal variants, to support SVR4 PIC.
+
+Thu Oct 28 17:42:23 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * a29k-dis.c (print_insn): Use 0x%08x, not 0x%8x.
+
+Wed Oct 27 11:48:01 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c (dsll, dsra, dsrl): Added '>' cases for shift counts
+ larger than 32. Moved dsxx32 variants first for disassembler.
+
+Mon Oct 25 11:33:14 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
+
+ * z8kgen.c, z8k-opc.h: Add full lda information.
+
+Tue Oct 19 12:39:25 1993 Jeffrey A Law (law@cs.utah.edu)
+
+ * hppa-dis.c (print_insn_hppa): Do not emit a space after
+ movb instructions. Any necessary space will be emitted by
+ the code to handle nullification completers.
+
+Wed Oct 13 16:19:07 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c: Moved l.d down so that it disassembles as ldc1.
+
+Fri Oct 8 02:34:21 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * alpha-opc.h: Add ldl_l, fix typo for ldq_u.
+ * alpha-dis.c (print_insn_alpha): Add code for PAL_FORMAT_CODE.
+
+Tue Oct 5 17:47:53 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c: Correct lwu opcode value (book had it wrong).
+
+Thu Sep 30 11:26:18 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
+
+ * z8k-dis.c (FETCH_DATA): get just the right amount of data.
+ (unpack_instr): Cope with ARG_IMM4M1 type instructions.
+
+Wed Sep 29 16:24:49 1993 K. Richard Pixley (rich@sendai.cygnus.com)
+
+ * m88k-dis.c (m88kdis): comment change. Remove space after
+ printing mnemonic.
+ (printop): handle new arg types DEC and XREG for m88110.
+
+Tue Sep 28 19:20:16 1993 Jeffrey A Law (law@snake.cs.utah.edu)
+
+ * hppa-dis.c (print_insn_hppa): Handle 'z' operand
+ type for absolute branch addresses. Delete special
+ "ble" and "be" code in 'W' operand code.
+
+Fri Sep 24 14:08:33 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c: Set hazard information correctly for branch
+ likely instructions.
+
+Fri Sep 17 04:41:17 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * alpha-dis.c (print_insn_alpha), alpha-opc.h: Fix bugs, use
+ info->fprintf_func for printing and info->print_address_func for
+ address output.
+
+Wed Sep 15 12:12:07 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c: Set INSN_TRAP for tXX instructions.
+
+Thu Sep 9 10:11:27 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c: From davidj@ICSI.Berkeley.EDU (David Johnson):
+ Corrected second case of "b" for disassembler.
+
+Tue Sep 7 14:25:15 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-dis.c, m88k-dis.c: Don't include libbfd.h. Changed calls
+ to BFD swapping routines to correspond to BFD name changes.
+
+Thu Sep 2 10:35:25 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c: Change div machine instruction to be z,s,t rather
+ than s,t. Change div macro to be d,v,t rather than d,s,t.
+ Likewise for divu, ddiv, ddivu. Added z,s,t case for drem, dremu,
+ rem and remu which generates only the corresponding div
+ instruction. This is for compatibility with the MIPS assembler,
+ which only generates the simple machine instruction when an
+ explicit destination of $0 is used.
+ * mips-dis.c (print_insn_arg): Handle 'z' (always register zero).
+
+Thu Aug 26 17:41:44 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c: From davidj@ICSI.Berkeley.EDU (David Johnson): Set
+ WR_31 hazard for bal, bgezal, bltzal.
+
+Thu Aug 26 17:20:02 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
+
+ * hppa-dis.c (print_insn_hppa): Use print function
+ from within the disassemble_info, not fprintf_filtered.
+
+Wed Aug 25 13:51:40 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * hppa-dis.c (print_insn_hppa): Handle '|' like '>'. (From Jeff
+ Law, law@cs.utah.edu.)
+
+Mon Aug 23 12:44:05 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c ("absu"): Removed.
+ ("dabs"): Added.
+
+Fri Aug 20 10:52:52 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c: Added r6000 and r4000 instructions and macros.
+ Changed hazard information to distinguish between memory load
+ delays and coprocessor load delays.
+
+Wed Aug 18 15:39:23 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c: li.d uses "T,L", not "S,F". Added li.s.
+
+Tue Aug 17 09:44:42 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * configure.in: Don't pass cpu to config.bfd.
+
+Tue Aug 17 12:23:52 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * m88k-dis.c (m88kdis): Make class unsigned.
+
+Thu Aug 12 15:08:18 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * alpha-dis.c (print_insn_alpha): One branch format case was
+ missing the instruction name.
+
+Wed Aug 11 19:29:39 1993 David J. Mackenzie (djm@thepub.cygnus.com)
+
+ * Makefile.in (ALL_MACHINES): Renamed from DIS_LIBS.
+ Add the arch-specific auxiliary files.
+ (OFILES): Remove the arch-specific auxiliary files
+ and use BFD_MACHINES instead of DIS_LIBS.
+ * configure.in: Set BFD_MACHINES based on --with-targets option.
+
+Thu Aug 12 12:04:53 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c: Added lwc1 E,A(b) to go with lwc1 T,A(b). Similarly
+ for swc1.
+
+Sun Aug 8 15:09:30 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
+
+ * sparc-opc.c: Change CONST to const to deal with gcc
+ -Dconst=__const -traditional.
+
+Fri Aug 6 10:58:55 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-opc.c: From davidj@ICSI.Berkeley.EDU (David Johnson): Took
+ coprocessor instructions out of #if 0, and made them use new
+ argument type "C".
+
+Thu Aug 5 17:11:06 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
+
+ * sparc-dis.c: Include ansidecl.h before opcodes/sparc.h.
+
+Fri Jul 30 18:48:15 1993 John Gilmore (gnu@cygnus.com)
+
+ * sparc-opc.c: Add F_JSR, F_UNBR, or F_CONDBR flags to each branch
+ instruction, for use by the disassembler.
+
+ * sparc-dis.c (SEX): Add sign extension macro. Replace many
+ hand-coded sign extensions that depended on 32-bit host ints.
+ FIXME, we still depend on big-endian host bitfield ordering.
+ (sparc_print_insn): Set the insn_info_valid field, and the
+ other fields that describe the instruction being printed.
+
+Tue Jul 27 17:04:58 1993 Jim Wilson (wilson@sphagnum.cygnus.com)
+
+ * sparc-opc.c (call): Accept all 6 addressing modes valid for
+ `jmp' instead of just one of them.
+
+Wed Jul 21 11:43:32 1993 Jim Kingdon (kingdon@deneb.cygnus.com)
+
+ * hppa-dis.c: Move floating registers from reg_names to fp_reg_names.
+ (fput_fp_reg_r): Renamed from fput_reg_r.
+ (fput_fp_reg): New function.
+ (print_insn_hppa): Use fput_fp_reg{,_r} where appropriate.
+
+ * hppa-dis.c (print_insn_hppa, cases 'a', 'd'): Print space afterwards.
+
+ * hppa-dis.c (print_insn_hppa, case 'd'): Use GET_COND not GET_FIELD.
+
+Mon Jul 19 13:52:21 1993 Jim Kingdon (kingdon@deneb.cygnus.com)
+
+ * hppa-dis.c (print_insn_hppa): Use extract_5r_store for 'r'.
+
+ * hppa-dis.c (print_insn_hppa, case '>'): If next character is 'n',
+ don't output a space.
+
+ * hppa-dis.c (float_format_names): 10 is undefined, and 11 is quad.
+
+Sun Jul 18 16:30:02 1993 Jim Kingdon (kingdon@rtl.cygnus.com)
+
+ * mips-opc.c: New file, containing opcode table from
+ ../include/opcode/mips.h.
+ * Makefile.in: Add it.
+
+Thu Jul 15 12:37:05 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * m88k-dis.c: New file, moved in from gdb and changed to use the
+ new dis-asm.h disassembler interface.
+ * Makefile.in (DIS_LIBS): Added m88k-dis.o.
+ (m88k-dis.o): New target.
+
+Tue Jul 13 10:04:16 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * mips-dis.c (print_insn_arg, _print_insn_mips): Made pointer to
+ argument string const char * to correspond to opcode/mips.h.
+
+Tue Jul 6 15:18:37 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * mips-dis.c: Updated to account for name changes in new version
+ of opcode/mips.h.
+ * Makefile.in: Added header file dependencies.
+
+Sat Jul 3 23:47:56 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * h8300-dis.c (bfd_h8_disassemble): Correct fetching of instruction.
+
+Thu Jul 1 12:23:38 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
+
+ * m68k-dis.c (NEXTWORD, NEXTLONG): Use ((x) ^ 0x8000) - 0x8000 to sign
+ extend, rather than shifts.
+
+Sun Jun 20 20:56:56 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
+
+ * Makefile.in: Undo 15 June change.
+
+Fri Jun 18 14:15:15 1993 Per Bothner (bothner@deneb.cygnus.com)
+
+ * m68k-dis.c (print_insn_arg): Change return value to byte count
+ or error code.
+ * m68k-dis.c: Re-write to detect invalid operands before
+ printing anything, so we can handle this the same way we
+ handle invalid opcodes.
+
+Thu Jun 17 15:01:36 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
+
+ * sh-dis.c, sh-opc.h: Understand some more opcodes.
+
+Wed Jun 16 13:48:05 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * hppa-dis.c: Include <ansidecl.h> and sysdep.h before other
+ header files.
+
+Tue Jun 15 21:45:26 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * sparc-dis.c: Don't declare qsort, since sysdep.h might.
+
+ * configure.in: Do make sysdep.h link.
+ * Makefile.in: Search ../include. Don't search ../bfd.
+
+Tue Jun 15 13:36:10 1993 Stu Grossman (grossman@cygnus.com)
+
+ Changes from Jeff Law, law@cs.utah.edu:
+ * hppa-dis.c: Fix typo. 'a' and 'd' were reversed.
+ Do not print a space before the completers specified by
+ 'a' and 'd'.
+
+Fri Jun 11 18:40:21 1993 Ken Raeburn (raeburn@cygnus.com)
+
+ * mips-dis.c: No longer need to bomb out if HOST_64_BIT is
+ defined, since gdb has been fixed.
+
+ Changes from Jeff Law, law@cs.utah.edu:
+ * hppa-dis.c (print_insn_hppa): Last argument to fput_reg,
+ fput_reg_r, fput_creg, fput_const, and fputs_filtered should
+ be a *disassemble_info, not a *FILE.
+ * hppa-dis.c: Support 'd', '!', and 'a'.
+ * hppa-dis.c: Support 's' to extract a 2 bit space register.
+ * hppa-dis.c: Delete cases which are no longer needed.
+
+Fri Jun 11 07:53:48 1993 Jim Kingdon (kingdon@cygnus.com)
+
+ * m68k-dis.c (print_insn_{m68k,arg}): Add MMU codes.
+
+Tue Jun 8 12:25:01 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
+
+ * h8300-dis.c: New file, removed from bfd/cpu-h8300.c, with
+ H8/300-H opcodes.
+
+Mon Jun 7 12:58:49 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in (CSEARCH): Add -I../bfd for sysdep.h and bfd.h.
+ * configure.in: No longer need to configure to get sysdep.h.
+
+Thu Jun 3 15:56:49 1993 Stu Grossman (grossman@cygnus.com)
+
+ * Patches from Jeffrey Law <law@cs.utah.edu>.
+ * hppa-dis.c: Support 'I', 'J', and 'K' in output
+ templates for 1.1 FP computational instructions.
+
+Tue May 25 13:05:48 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * h8500-dis.c (print_insn_h8500): Address argument is type
+ bfd_vma.
+ * z8k-dis.c (print_insn_z8k, print_insn_z8001, print_insn_z8002):
+ Ditto.
+
+ * h8500-opc.h (addr_class_type): No comma at end of enumerator.
+ * sh-opc.h (sh_nibble_type, sh_arg_type): Ditto.
+
+ * sparc-dis.c (compare_opcodes): Move static declaration to
+ top-level.
+
+Fri May 21 14:17:37 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * sparc-dis.c (print_insn_sparc): Implement 'n' argument for unimp
+ instruction, remove unimp hack from 'l' argument.
+
+Wed May 19 15:35:54 1993 Stu Grossman (grossman@cygnus.com)
+
+ * z8k-dis.c (fetch_data): Use unsigned char to make ancient gcc's
+ happy.
+
+Fri May 14 15:22:46 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * Based on patches from davidj@ICSI.Berkeley.EDU (David Johnson):
+ * mips-dis.c (print_insn_arg): Handle 'C' for general coprocessor
+ instructions.
+
+Fri May 14 00:09:14 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * hppa-dis.c: Include dis-asm.h before sysdep.h. Changed some
+ arrays of string pointers to 2-d arrays of chars, to save
+ space.
+
+Thu May 6 20:51:17 1993 Fred Fish (fnf@cygnus.com)
+
+ * a29k-dis.c, alpha-dis.c, i960-dis.c, sparc-dis.c, z8k-dis.c:
+ Cast second arg to read_memory_func to "bfd_byte *", as necessary.
+
+Tue May 4 20:31:10 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * hppa-dis.c: New file from Utah, adapted to new disassembler
+ calling interface.
+ * Makefile.in: Include it.
+
+Mon Apr 26 18:17:42 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * sh-dis.c, sh-opc.h: New files.
+
+Fri Apr 23 18:51:22 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * alpha-dis.c, alpha-opc.h: New files.
+
+Tue Apr 6 12:54:08 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
+
+ * mips-dis.c: Sign extend 'j' and 'b' arguments, delta is a signed
+ value.
+
+Mon Apr 5 17:37:37 1993 John Gilmore (gnu@cygnus.com)
+
+ * sparc-dis.c: Make "ta" the default trap instruction, "t" the alias.
+
+Fri Apr 2 07:24:27 1993 Ian Lance Taylor (ian@cygnus.com)
+
+ * a29k-dis.c, sparc-dis.c, sparc-opc.c: Use CONST rather than
+ const.
+
+Thu Apr 1 11:20:43 1993 Jim Kingdon (kingdon@cygnus.com)
+
+ * sparc-dis.c: Use fprintf_func a few places where I forgot,
+ and double percent signs a few places.
+
+ * a29k-dis.c, i960-dis.c: New, merged from gdb and binutils.
+
+ * i386-dis.c, m68k-dis.c, mips-dis.c, sparc-dis.c:
+ Use info->print_address_func not print_address.
+
+ * dis-buf.c (generic_print_address): New function.
+
+Wed Mar 31 10:07:04 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
+
+ * Makefile.in: Add sparc-dis.c.
+ sparc-dis.c: New file, merges binutils and gdb versions as follows:
+ From GDB:
+ Add `add' instruction to the set that get checked
+ for a preceding `sethi' in order to print an absolute address.
+ * (print_insn): Disassembly prefers real instructions.
+ (is_delayed_branch): Speed up.
+ * sparc-opcode.h: Add ALIAS bit to aliases. Fix up opcode tables.
+ Still missing some float ops, and needs testing.
+ * sparc-pinsn.c (print_insn): Eliminate 'set' test, subsumed by
+ F_ALIAS. Use printf, not fprintf, when not passing a file
+ pointer...
+ (compare_opcodes): Check that identical instructions have
+ identical opcodes, complain otherwise.
+ From binutils:
+ * New 'm' arg.
+ * Include reg_names.
+ From neither:
+ Use dis-asm.h/read_memory_func interface.
+
+Wed Mar 31 20:49:06 1993 K. Richard Pixley (rich@rtl.cygnus.com)
+
+ * h8500-dis.c, i386-dis.c, m68k-dis.c, z8k-dis.c (fetch_data):
+ deliberately return non-zero to setjmp from longjmp. Otherwise
+ this code fails to compile.
+
+Wed Mar 31 17:04:31 1993 Stu Grossman (grossman@cygnus.com)
+
+ * m68k-dis.c: Fix prototype for fetch_arg().
+
+Wed Mar 31 10:07:04 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
+
+ * dis-buf.c: New file, for new read_memory_func interface.
+ Makefile.in (OFILES): Include it.
+ m68k-dis.c, i386-dis.c, h8500-dis.c, mips-dis.c, z8k-dis.c:
+ Use new read_memory_func interface.
+
+Mon Mar 29 14:02:17 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * h8500-dis.c (print_insn_h8500): Get sign of fp offsets right.
+ * h8500-opc.h: Fix couple of opcodes.
+
+Wed Mar 24 02:03:36 1993 david d `zoo' zuhn (zoo at poseidon.cygnus.com)
+
+ * Makefile.in: add dvi & installcheck targets
+
+Mon Mar 22 18:55:04 1993 John Gilmore (gnu@cygnus.com)
+
+ * Makefile.in: Update for h8500-dis.c.
+
+Fri Mar 19 14:27:17 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * h8500-dis.c, h8500-opc.h: New files
+
+Thu Mar 18 14:12:37 1993 Per Bothner (bothner@rtl.cygnus.com)
+
+ * mips-dis.c, z8k-dis.c: Converted to use interface defined in
+ ../include/dis-asm.h.
+ * m68k-dis.c: New file (merge of ../binutils/m68k-pinsn.c
+ and ../gdb/m68k-pinsn.c).
+ * i386-dis.c: New file (merge of ../binutils/i386-pinsn.c
+ and ../gdb/i386-pinsn.c).
+ * m68881-ext.c: New file. Moved definition of
+ ext_format ext_format_68881 from ../gdb/m68k-tdep.c.
+ * Makefile.in: Adjust for new files.
+ * i386-dis.c: Patches from John Hassey (hassey@dg-rtp.dg.com).
+ * m68k-dis.c: Recognize '9' placement code, so (say) pflush
+ can be dis-assembled.
+
+Wed Feb 17 09:19:47 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * mips-dis.c (print_insn_arg): Now returns void.
+
+Mon Jan 11 16:09:16 1993 Fred Fish (fnf@cygnus.com)
+
+ * mips-dis.c (ansidecl.h): Include for benefit of sysdep.h
+ files that use the macros.
+
+Thu Jan 7 13:15:17 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
+
+ * mips-dis.c: New file, from gdb/mips-pinsn.c.
+ * Makefile.in (DIS_LIBS): Added mips-dis.o.
+ (CFILES): Added mips-dis.c.
+
+Thu Jan 7 07:36:33 1993 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * z8k-dis.c (print_insn_z8001, print_insn_z8002): new routines
+ * z8kgen.c, z8k-opc.h: fix sizes of some shifts.
+
+Tue Dec 22 15:42:44 1992 Per Bothner (bothner@rtl.cygnus.com)
+
+ * Makefile.in: Improve *clean rules.
+ * configure.in: Allow a default host.
+
+Tue Nov 17 19:53:54 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * Makefile.in: also use -I$(srcdir)/../bfd, since some sysdep
+ files include other sysdep files
+
+Thu Nov 12 16:10:37 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * z8k-dis.c z8k-opc.h z8kgen.c: checkpoint
+
+Fri Oct 9 04:56:05 1992 John Gilmore (gnu@cygnus.com)
+
+ * configure.in: For host support, use ../bfd/configure.host
+ so it stays in sync with the ../bfd/hosts database.
+
+Thu Oct 1 23:38:54 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
+
+ * configure.in: use cpu-vendor-os triple instead of nested cases
+
+Wed Sep 30 16:09:20 1992 Michael Werner (mtw@cygnus.com)
+
+ * z8k-dis.c (unparse_instr): fix bug where opcode returned was
+ *always* the wrong one.
+
+Wed Sep 30 07:42:17 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * z8kgen.c: added copyright info
+
+Tue Sep 29 12:20:21 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * z8k-dis.c (unparse_instr): prettier tabs
+ * z8kgen.c -> z8k-opc.h: bug fixes in tables
+
+Fri Sep 25 12:50:32 1992 Stu Grossman (grossman at cygnus.com)
+
+ * configure.in: Add ncr* configuration.
+ * z8k-dis.c (struct instr_data_s): Make instr_asmsrc char to make
+ picayune ANSI compilers happy.
+
+Sep 20 08:50:55 1992 Fred Fish (fnf@cygnus.com)
+
+ * configure.in (i386): Make i386 and i486 synonymous for now.
+ * configure.in (i[34]86-*-sysv4): Add my_host definition.
+
+Fri Sep 18 17:01:23 1992 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * Makefile.in (install): Fix typo.
+
+Fri Sep 18 02:04:24 1992 John Gilmore (gnu@cygnus.com)
+
+ * Makefile.in (make): Remove obsolete crud.
+ (sparc-opc.o): Avoid Sun Make VPATH bug.
+
+Tue Sep 8 17:29:27 1992 K. Richard Pixley (rich@sendai.cygnus.com)
+
+ * Makefile.in: since there are no SUBDIRS, remove rule and
+ references of subdir_do.
+
+Tue Sep 8 17:02:58 1992 Ken Raeburn (raeburn@cambridge.cygnus.com)
+
+ * Makefile.in (install): Get the library name right here too.
+ Don't install bfd.h, since it's unrelated to this library. No
+ subdirs to recurse into, either.
+ (CFILES): The source file has a .c suffix, not .o.
+
+ * sparc-opc.c: New file, moved from BFD.
+ * Makefile.in (OFILES): Build it.
+
+Thu Sep 3 16:59:20 1992 Michael Werner (mtw@cygnus.com)
+
+ * z8k-dis.c: fixed forward refferences of some declarations.
+
+Mon Aug 31 16:09:45 1992 Michael Werner (mtw@cygnus.com)
+
+ * Makefile.in: get the name of the library right
+
+Mon Aug 31 13:47:35 1992 Steve Chamberlain (sac@thepub.cygnus.com)
+
+ * z8k-dis.c: knows how to disassemble z8k stuff
+ * z8k-opc.h: new file full of z8000 opcodes
+
+
+Local Variables:
+version-control: never
+End:
diff --git a/contrib/binutils/opcodes/ChangeLog-9899 b/contrib/binutils/opcodes/ChangeLog-9899
new file mode 100644
index 0000000..8588f0a
--- /dev/null
+++ b/contrib/binutils/opcodes/ChangeLog-9899
@@ -0,0 +1,1669 @@
+1999-12-27 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * i386-dis.c (grps[]): Correct GRP5 FF/3 from "call" to "lcall".
+
+Wed Dec 1 03:34:53 1999 Jeffrey A Law (law@cygnus.com)
+
+ * m10300-opc.c, m10300-dis.c: Add am33 support.
+
+Wed Nov 24 20:29:58 1999 Jeffrey A Law (law@cygnus.com)
+
+ * hppa-dis.c (unit_cond_names): Add PA2.0 unit condition names.
+ (print_insn_hppa): Handle 'B' operand.
+
+1999-11-22 Nick Clifton <nickc@cygnus.com>
+
+ * d10v-opc.c: Fix pattern for "cpfg,f{0|1},c" instruction.
+
+1999-11-18 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * mips-opc.c (I5): New.
+ (abs.ps,add.ps,alnv.ps,c.COND.ps,cvt.s.pl,cvt.s.pu,cvt.ps.s
+ madd.ps,movf.ps,movt.ps,mul.ps,net.ps,nmadd.ps,nmsub.ps,
+ pll.ps,plu.ps,pul.ps,puu.ps,sub.ps,suxc1,luxc1): New.
+
+Mon Nov 15 19:34:58 1999 Donald Lindsay <dlindsay@cygnus.com>
+
+ * arm-dis.c (print_insn_arm): Added general purpose 'X' format.
+ * arm-opc.h (print_insn_arm): Added comment documenting
+ the 'X' format just added to arm-dis.c.
+
+1999-11-15 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * mips-opc.c (la): Create a version that just uses addiu directly.
+ (dla): Expand to daddiu if possible.
+
+1999-11-11 Nick Clifton <nickc@cygnus.com>
+
+ * mips-opc.c: Add ssnop pattern.
+
+1999-11-01 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * mips-dis.c (_print_insn_mips): Use OPCODE_IS_MEMBER.
+
+1999-10-29 Nick Clifton <nickc@cygnus.com>
+
+ * d30v-opc.c (mvtacc): Use format SHORT_AR not SHORT_AA
+ (d30v_format_tab): Define the SHORT_AR format.
+
+1999-10-28 Nick Clifton <nickc@cygnus.com>
+
+ * mcore-dis.c: Remove spurious code introduced in previous delta.
+
+1999-10-27 Scott Bambrough <scottb@netwinder.org>
+
+ * arm-dis.c: Include sysdep.h to prevent compile time warnings.
+
+1999-10-18 Michael Meissner <meissner@cygnus.com>
+
+ * alpha-opc.c (alpha_operands): Fill in missing initializer.
+ (alpha_num_operands): Convert to unsigned.
+ (alpha_num_opcodes): Ditto.
+ (insert_rba): Declare unused arguments ATTRIBUTE_UNUSED.
+ (insert_rca): Ditto.
+ (insert_za): Ditto.
+ (insert_zb): Ditto.
+ (insert_zc): Ditto.
+ (extract_bdisp): Ditto.
+ (extract_jhint): Ditto.
+ (extract_ev6hwjhint): Ditto.
+
+Sun Oct 10 01:48:01 1999 Jerry Quinn <jerry.quinn.adv91@alum.dartmouth.org>
+
+ * hppa-dis.c (print_insn_hppa): Add new codes 'cc', 'cd', 'cC',
+ 'co', '@'.
+
+ * hppa-dis.c (print_insn_hppa): Removed unused args. Fix '?W'.
+
+ * hppa-dis.c (print_insn_hppa): Implement codes "?N", "?Q".
+
+Thu Oct 7 00:12:43 MDT 1999 Diego Novillo <dnovillo@cygnus.com>
+
+ * d10v-opc.c (d10v_operands): Add RESTRICTED_NUM3 flag for
+ rac/rachi instructions.
+ (d10v_opcodes): Added seven new instructions ld, ld2w, sac, sachi,
+ slae, st and st2w.
+
+1999-10-04 Doug Evans <devans@casey.cygnus.com>
+
+ * fr30-asm.c,fr30-desc.h: Rebuild.
+ * m32r-asm.c,m32r-desc.c,m32r-desc.h: Rebuild. Add m32rx support.
+ * m32r-dis.c,m32r-ibld.c,m32r-opc.c,m32r-opc.h,m32r-opinst.c: Ditto.
+
+1999-09-29 Nick Clifton <nickc@cygnus.com>
+
+ * sh-opc.h: Fix bit patterns for several load and store
+ instructions.
+
+Thu Sep 23 08:27:20 1999 Jerry Quinn <jerry.quinn.adv91@alum.dartmouth.org
+
+ * hppa-dis.c (print_insn_hppa): Replace 'B', 'M', 'g' and 'l' with
+ cleaner code using completer prefixes. Add 'Y'.
+
+Sun Sep 19 10:41:27 1999 Jeffrey A Law (law@cygnus.com)
+
+ * hppa-dis.c: (print_insn_hppa): Correct 'cJ', 'cc'.
+
+ * hppa-dis.c (extract_22): New function.
+
+ * hppa-dis.c (print_insn_hppa): Handle 'J', 'K', and 'cc'.
+
+ * hppa-dis.c (print_insn_hppa): Handle 'fe' and 'cJ'.
+
+ * hppa-dis.c (print_insn_hppa): Handle '#', 'd', and 'cq'.
+
+ * hppa-dis.c (print_insn_hppa): Handle 'm', 'h', '='.
+
+ * hppa-dis.c (print_insn_hppa): Handle 'X' operand.
+
+ * hppa-dis.c (print_insn_hppa): Handle 'B' operand.
+
+ * hppa-dis.c (print_insn_hppa): Handle 'M' and 'L' operands.
+
+ * hppa-dis.c (print_insn_hppa): Handle 'l' operand.
+
+ * hppa-dis.c (print_insn_hppa): Handle 'g' operand.
+
+Sat Sep 18 11:36:12 1999 Jeffrey A Law (law@cygnus.com)
+
+ * hppa-dis.c (print_insn_hppa): Output a space after 'X' completer.
+
+ * hppa-dis.c: (print_insn_hppa): Do output a space before a 'v'
+ operand.
+
+ * hppa-dis.c: (print_insn_hppa): Handle 'fX'.
+
+ * hppa-dis.c: (print_insn_hppa): Add missing break after
+ FP register case.
+
+ * hppa-dis.c: Finish constifying various completers, register
+ names, etc etc.
+
+1999-09-14 Michael Meissner <meissner@cygnus.com>
+
+ * configure.in (Canonicalization of target names): Remove adding
+ ${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
+ generates $ac_config_sub with a ${CONFIG_SHELL} already.
+ * configure: Regenerate.
+
+Tue Sep 7 13:50:32 1999 Jeffrey A Law (law@cygnus.com)
+
+ * hppa-dis.c (print_insn_hppa): Escape '%' in output strings.
+
+ * hppa-dis.c (print_insn_hppa): Handle 'Z' argument.
+
+1999-09-07 Nick Clifton <nickc@cygnus.com>
+
+ * sh-opc.h: Add mulu.w and muls.w patterns. These are the correct
+ names for the mulu and muls patterns.
+
+1999-09-04 Steve Chamberlain <sac@pobox.com>
+
+ * pj-opc.c: New file.
+ * pj-dis.c: New file.
+ * disassemble.c (disassembler): Handle bfd_arch_pj.
+ * configure.in: Handle bfd_pj_arch.
+ * Makefile.am: Rebuild dependencies.
+ (CFILES): Add pj-dis.c and pj-opc.c.
+ (ALL_MACHINES): Add pj-dis.lo and pj-opc.lo.
+ * configure, Makefile.in: Rebuild.
+
+1999-09-04 H.J. Lu <hjl@gnu.org>
+
+ * i386-dis.c (print_insn_i386): Set bytes_per_line to 7.
+
+Mon Aug 30 18:56:14 1999 Richard Henderson <rth@cygnus.com>
+
+ * alpha-opc.c (fetch, fetch_m, ecb, wh64): RA must be R31.
+
+1999-08-04 Doug Evans <devans@casey.cygnus.com>
+
+ * fr30-asm.c,fr30-desc.h,fr30-dis.c,fr30-ibld.c,fr30-opc.c: Rebuild.
+ * m32r-asm.c,m32r-desc.h,m32r-dis.c,m32r-ibld.c,m32r-opc.c: Rebuild.
+ * m32r-opinst.c: Rebuild.
+
+Sat Aug 28 00:27:24 1999 Jerry Quinn <jquinn@nortelnetworks.com>
+
+ * hppa-dis.c (print_insn_hppa): Replace 'f' by 'v'. Prefix float
+ register args by 'f'.
+
+ * hppa-dis.c (print_insn_hppa): Add args q, %, !, and |.
+
+ * hppa-dis.c (MASK_10, read_write_names, add_compl_names,
+ extract_10U_store): New.
+ (print_insn_hppa): Add new completers.
+
+ * hppa-dis.c (signed_unsigned_names,mix_half_names,
+ saturation_names): New.
+ (print_insn_hppa): Add completer codes 'a', 'ch', 'cH', 'cS', and 'c*'.
+
+ * hppa-dis.c (print_insn_hppa): Place completers behind prefix 'c'.
+
+ * hppa-dis.c (print_insn_hppa): Add cases for '.', '~'. '$'. and '!'
+
+ * hppa-dis.c (print_insn_hppa): Look at next arg instead of bits
+ to decide to print a space.
+
+1999-08-21 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * i386-dis.c: Add AMD athlon instruction support.
+
+1999-08-10 Ian Lance Taylor <ian@zembu.com>
+
+ From Wally Iimura <iimura@microunity.com>:
+ * dis-buf.c (buffer_read_memory): Rewrite expression to avoid
+ overflow at end of address space.
+ (generic_print_address): Use sprintf_vma.
+
+1999-08-08 Ian Lance Taylor <ian@zembu.com>
+
+ * Makefile.am: Rename .dep* files to DEP*. Change DEP variable to
+ MKDEP. Rebuild dependencies.
+ * Makefile.in: Rebuild.
+
+Fri Aug 6 09:46:35 1999 Jerry Quinn <jquinn@nortelnetworks.com>
+
+ * hppa-dis.c (compare_cond_64_names, cmpib_cond_64_names,
+ add_cond_64_names, wide_add_cond_names, logical_cond_64_names,
+ unit_cond_64_names, shift_cond_64_names, bb_cond_64_names): New.
+ (print_insn_hppa): Add 64 bit condition completers.
+
+Thu Aug 5 16:59:58 1999 Jerry Quinn <jquinn@nortelnetworks.com>
+
+ * hppa-dis.c (print_insn_hppa): Change condition args to use
+ '?' prefix.
+
+Wed Jul 28 04:33:58 1999 Jerry Quinn <jquinn@nortelnetworks.com>
+
+ * hppa-dis.c (print_insn_hppa): Remove unnecessary test in 'E'
+ code.
+
+1999-07-21 Ian Lance Taylor <ian@zembu.com>
+
+ From Mark Elbrecht:
+ * configure.bat: Remove; obsolete.
+
+1999-07-11 Ian Lance Taylor <ian@zembu.com>
+
+ * dis-buf.c: Add ATTRIBUTE_UNUSED as appropriate.
+ (generic_strcat_address): Add cast to avoid warning.
+ * i386-dis.c: Initialize all structure fields to avoid warnings.
+ Add ATTRIBUTE_UNUSED as appropriate.
+
+1999-07-08 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * sparc-dis.c (print_insn_sparc): Differentiate between
+ addition and oring when guessing symbol for comment.
+
+1999-07-05 Nick Clifton <nickc@cygnus.com>
+
+ * arm-dis.c (print_insn_arm): Display hex equivalent of rotated
+ constant.
+
+1999-06-23 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * i386-dis.c: Mention intel mode specials in macro char comment.
+
+1999-06-21 Ian Lance Taylor <ian@zembu.com>
+
+ * alpha-dis.c: Don't include <stdlib.h>.
+ * arm-dis.c: Include "sysdep.h".
+ * tic30-dis.c: Don't include <stdlib.h> or <string.h>. Include
+ "sysdep.h".
+ * Makefile.am: Rebuild dependencies.
+ * Makefile.in: Rebuild.
+
+1999-06-16 Nick Clifton <nickc@cygnus.com>
+
+ * arm-dis.c (print_insn_arm): Add detection of IMB and IMBRange
+ SWIs.
+
+1999-06-14 Nick Clifton <nickc@cygnus.com> & Drew Mosley <dmoseley@cygnus.com>
+
+ * arm-dis.c (arm_regnames): Turn into a pointer to a register
+ name set.
+ (arm_regnames_standard): New variable: Array of ARM register
+ names according to ARM instruction set nomenclature.
+ (arm_regnames_apcs): New variable: Array of ARM register names
+ according to ARM Procedure Call Standard.
+ (arm_regnames_raw): New variable: Array of ARM register names
+ using just 'r' and the register number.
+ (arm_toggle_regnames): New function: Toggle the chosen register set
+ naming scheme.
+ (parse_disassembler_options): New function: Parse any target
+ disassembler command line options.
+ (print_insn_big_arm): Call parse_disassembler_options if any
+ are defined.
+ (print_insn_little_arm): Call parse_disassembler_options if any
+ are defined.
+
+1999-06-13 Ian Lance Taylor <ian@zembu.com>
+
+ * i386-dis.c (FWAIT_OPCODE): Define.
+ (used_prefixes): New static variable.
+ (fetch_data): Don't print an error message if we have already
+ fetched some bytes successfully.
+ (ckprefix): Clear used_prefixes. Use FWAIT_OPCODE, not 0x9b.
+ (prefix_name): New static function.
+ (print_insn_i386): If setjmp fails, indicating a data error, but
+ we have managed to fetch some bytes, print the first one as a
+ prefix or a .byte pseudo-op. If fwait is followed by a non
+ floating point instruction, print the first prefix. Set
+ used_prefixes when prefixes are used. If any prefixes were not
+ used after disassembling the instruction, print the first prefix
+ instead of printing the instruction.
+ (putop): Set used_prefixes when prefixes are used.
+ (append_seg, OP_E, OP_G, OP_REG, OP_I, OP_sI, OP_J): Likewise.
+ (OP_DIR, OP_SIMD_Suffix): Likewise.
+
+1999-06-07 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * sparc-opc.c: Fix up set, setsw, setuw operand kinds.
+ Support signx %reg, clruw %reg.
+
+1999-06-07 Jakub Jelinek <jj@ultra.linux.cz>
+
+ * sparc-opc.c: Add aliases Solaris as supports.
+
+Mon Jun 7 12:04:52 1999 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * Makefile.am (CFILES): Add arc-{dis,opc}.c and v850-{dis,opc}.c.
+ * Makefile.in: Regenerated.
+
+1999-06-03 Philip Blundell <philb@gnu.org>
+
+ * arm-dis.c (print_insn_arm): Make LDRH/LDRB consistent with LDR
+ when target is PC-relative.
+
+1999-05-28 Linus Nordberg <linus.nordberg@canit.se>
+
+ * m68k-opc.c: Rename MACL/MSACL to MAC/MSAC. Add MACM/MSACM. Add
+ MOVE MACSR,CCR.
+
+ * m68k-dis.c (fetch_arg): Add places `n', `o'.
+
+ * m68k-opc.c: Add MSAC, MACL, MOVE to/from ACC, MACSR, MASK.
+ Add mcf5206e to appropriate instructions.
+ Add alias for MAC, MSAC.
+
+ * m68k-dis.c (print_insn_arg): Add formats `E', `G', `H' and place
+ `N'.
+
+ * m68k-opc.c (m68k_opcodes): Add divsw, divsl, divuw, divul, macl,
+ macw, remsl, remul for mcf5307. Change mcf5200 --> mcf.
+
+ * m68k-dis.c: Add format `u' and places `h', `m', `M'.
+
+1999-05-18 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * i386-dis.c (Ed): Define.
+ (dis386_twobyte_att, dis386_twobyte_intel): Use Ed for movd.
+ (Rw): Remove.
+ (OP_rm): Rename to OP_Rd.
+ (ONE): Remove.
+ (OP_ONE): Remove.
+ (putop): Add const to template and p.
+ (print_insn_x86): Delete.
+ (print_insn_i386): Merge old function print_insn_x86. Add const
+ to dp.
+ (struct dis386): Add const to name.
+ (dis386_att, dis386_intel): Add const.
+ (dis386_twobyte_att, dis386_twobyte_intel): Add const.
+ (names32, names16, names8, names_seg, index16): Add const.
+ (grps, prefix_user_table, float_reg): Add const.
+ (float_mem_att, float_mem_intel): Add const.
+ (oappend): Add const to s.
+ (OP_REG): Add const to s.
+ (ptr_reg): Add const to s.
+ (dofloat): Add const to dp.
+ (OP_C): Don't skip modrm, it's now done in OP_Rd.
+ (OP_D): Ditto.
+ (OP_T): Ditto.
+ (OP_Rd): Check for valid mod. Call Op_E to print.
+ (OP_E): Handle d_mode arg. Check for bad sfence,lea,lds etc.
+ (OP_MS): Check for valid mod. Call Op_EM to print.
+ (OP_3DNowSuffix): Set obufp and use oappend rather than
+ strcat. Call BadOp() for errors.
+ (OP_SIMD_Suffix): Likewise.
+ (BadOp): New function.
+
+1999-05-12 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * i386-dis.c (dis386_intel): Remove macro chars, except for
+ jEcxz. Change cWtR and cRtd to cW and cR.
+ (dis386_twobyte_intel): Remove macro chars here too.
+ (putop): Handle R and W macros for intel mode.
+
+ * i386-dis.c (SIMD_Fixup): New function.
+ (dis386_twobyte_att): Use it on movlps and movhps, and change
+ Ev to EX on these insns. Change movmskps Ev, XM to Gv, EX.
+ (dis386_twobyte_intel): Same here.
+
+ * i386-dis.c (Av): Remove.
+ (Ap): remove lptr.
+ (lptr): Remove.
+ (OPSIMD): Define.
+ (OP_SIMD_Suffix): New function.
+ (OP_DIR): Remove dead code.
+ (eAX_reg..eDI_reg): Renumber.
+ (onebyte_has_modrm): Table numbering comments.
+ (INTERNAL_DISASSEMBLER_ERROR): Move to before print_insn_x86.
+ (print_insn_x86): Move all prefix oappends to after uses_f3_prefix
+ checks. Print error on invalid dp->bytemode2. Remove simd_cmp,
+ and handle SIMD cmp insns in OP_SIMD_Suffix.
+ (info->bytes_per_line): Bump from 5 to 6.
+ (OP_None): Remove.
+ (OP_E): Use INTERNAL_DISASSEMBLER_ERROR. Handle sfence.
+ (OP_3DNowSuffix): Ensure mnemonic index unsigned.
+
+ PIII SIMD support from Doug Ledford <dledford@redhat.com>
+ * i386-dis.c (XM, EX, None): Define.
+ (OP_XMM, OP_EX, OP_None): New functions.
+ (USE_GROUPS, USE_PREFIX_USER_TABLE): Define.
+ (GRP14): Rename to GRPAMD.
+ (GRP*): Add USE_GROUPS flag.
+ (PREGRP*): Define.
+ (dis386_twobyte_att, dis386_twobyte_intel): Add SIMD insns.
+ (twobyte_has_modrm): Add SIMD entries.
+ (twobyte_uses_f3_prefix, simd_cmp_op, prefix_user_table): New.
+ (grps): Add SIMD insns.
+ (print_insn_x86): New vars uses_f3_prefix and simd_cmp. Don't
+ oappend repz if uses_f3_prefix. Add code to handle new groups for
+ SIMD insns.
+
+ From Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+ * i386-dis.c (dis386_att, dis386_intel): Change 0xE8 call insn
+ operand from Av to Jv.
+
+1999-05-07 Nick Clifton <nickc@cygnus.com>
+
+ * mcore-dis.c (print_insn_mcore): Use .short to display
+ unidentified instructions, not .word.
+
+1999-04-26 Tom Tromey <tromey@cygnus.com>
+
+ * aclocal.m4, configure: Updated for new version of libtool.
+
+1999-04-14 Doug Evans <devans@casey.cygnus.com>
+
+ * fr30-desc.c,fr30-desc.h,fr30-dis.c,fr30-ibld.c,fr30-opc.c: Rebuild.
+ * m32r-desc.c,m32r-desc.h,m32r-dis.c,m32r-ibld.c,m32r-opc.c: Rebuild.
+
+Mon Apr 12 23:46:17 1999 Jeffrey A Law (law@cygnus.com)
+
+ * hppa-dis.c (print_insn_hppa, case '3'): New case for PA2.0
+ instructions.
+
+1999-04-10 Doug Evans <devans@casey.cygnus.com>
+
+ * fr30-desc.c,fr30-desc.h,fr30-ibld.c: Rebuild.
+ * m32r-desc.c,m32r-desc.h,m32r-opinst.c: Rebuild.
+
+1999-04-06 Ian Lance Taylor <ian@zembu.com>
+
+ * opintl.h (LC_MESSAGES): Never define.
+
+1999-04-04 Ian Lance Taylor <ian@zembu.com>
+
+ * i386-dis.c (intel_syntax, open_char, close_char): Make static.
+ (separator_char, scale_char): Likewise.
+ (print_insn_x86): Likewise.
+ (print_insn_i386): Likewise. Add declaration.
+
+1999-03-26 Doug Evans <devans@casey.cygnus.com>
+
+ * fr30-dis.c: Rebuild.
+ * m32r-dis.c: Rebuild.
+
+1999-03-23 Ian Lance Taylor <ian@zembu.com>
+
+ * m68k-opc.c: Change compare instructions to use "@s" rather than
+ ";s" when used with an immediate operand.
+
+1999-03-22 Doug Evans <devans@casey.cygnus.com>
+
+ * cgen-opc.c (cgen_set_cpu): Delete.
+ (cgen_lookup_insn): max_insn_size renamed to max_insn_bitsize.
+ * fr30-desc.c,fr30-desc.h,fr30-dis.c,fr30-ibld.c,fr30-opc.c,fr30-opc.h:
+ Rebuild.
+ * m32r-desc.c,m32r-desc.h,m32r-dis.c,m32r-ibld.c,m32r-opc.c,m32r-opc.h:
+ Rebuild.
+ * po/opcodes.pot: Rebuild.
+
+1999-03-16 Martin Hunt <hunt@cygnus.com>
+
+ * d30v-opc.c (mvtsys): Remove FLAG_LKR.
+
+1999-03-11 Doug Evans <devans@casey.cygnus.com>
+
+ * cgen-opc.c (cgen_set_cpu): New arg `isa'. All callers updated.
+ (cgen_operand_lookup_by_name,cgen_operand_lookup_by_num): New fns.
+ (cgen_get_insn_operands): Rewrite test for hardcoded/operand index.
+ * fr30-asm.c,fr30-desc.c,fr30-desc.h,fr30-dis.c,fr30-ibld.c: Rebuild.
+ * m32r-asm.c,m32r-desc.c,m32r-desc.h,m32r-dis.c,m32r-ibld.c: Rebuild.
+ * m32r-opinst.c: Rebuild.
+
+1999-02-25 Doug Evans <devans@casey.cygnus.com>
+
+ * cgen-opc.c (cgen_hw_lookup_by_name): Rewrite.
+ (cgen_hw_lookup_by_num): Rewrite.
+ * fr30-desc.c,fr30-desc.h,fr30-dis.c,fr30-ibld.c,fr30-opc.c: Rebuild.
+ * m32r-desc.c,m32r-desc.h,m32r-dis.c,m32r-ibld.c,m32r-opc.c: Rebuild.
+ * m32r-opinst.c: Rebuild.
+
+Sat Feb 13 14:06:19 1999 Richard Henderson <rth@cygnus.com>
+
+ * alpha-opc.c: Add sqrt+flags patterns. Add EV6 PALcode insns.
+ (insert_jhint): Fix insertion mask.
+ * alpha-dis.c (print_insn_alpha): Disassemble EV6 PALcode insns.
+
+1999-02-10 Doug Evans <devans@casey.cygnus.com>
+
+ * Makefile.in: Rebuild.
+
+1999-02-09 Doug Evans <devans@casey.cygnus.com>
+
+ * i960c-asm.c,i960c-dis.c,i960c-opc.c,i960c-opc.h: Delete.
+ * i960-dis.c (print_insn_i960): Rename from print_insn_i960_orig.
+ * Makefile.am: Remove references to them.
+ (HFILES): Add fr30-desc.h,m32r-desc.h.
+ (CFILES): Add fr30-desc.c,fr30-ibld.c,m32r-desc.c,m32r-ibld.c,
+ m32r-opinst.c.
+ (ALL_MACHINES): Update.
+ * configure.in: Redo handling of cgen_files.
+ (bfd_i960_arch): Delete i960c-*.lo files.
+ * configure: Regenerate.
+ * cgen-asm.c (*): CGEN_OPCODE_DESC renamed to CGEN_CPU_DESC.
+ (hash_insn_array): Rewrite.
+ * cgen-dis.c (*): CGEN_OPCODE_DESC renamed to CGEN_CPU_DESC.
+ (hash_insn_array): Rewrite.
+ * cgen-opc.c (*): CGEN_OPCODE_DESC renamed to CGEN_CPU_DESC.
+ (cgen_lookup_insn,cgen_get_insn_operands): Define here.
+ (cgen_lookup_get_insn_operands): Ditto.
+ * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerate.
+ * m32r-asm.c,m32r-dis.c,m32r-opc.c,m32r-opc.h: Regenerate.
+ * po/POTFILES.in: Rebuild.
+ * po/opcodes.pot: Rebuild.
+
+Fri Feb 5 00:04:24 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am: Rebuild dependencies.
+ (HFILES): Add fr30-opc.h.
+ (CFILES): Add fr30-asm.c, fr30-dis.c, fr30-opc.c.
+ * Makefile.in: Rebuild.
+
+ * configure.in: Change AC_PREREQ to 2.13. Remove AM_CYGWIN32.
+ Change AM_EXEEXT to AC_EXEEXT and AM_PROG_INSTALL to
+ AC_PROG_INSTALL.
+ * acconfig.h: Remove.
+ * configure: Rebuild with current autoconf/automake.
+ * aclocal.m4: Likewise.
+ * config.in: Likewise.
+ * Makefile.in: Likewise.
+
+Thu Feb 4 13:48:52 1999 Ian Lance Taylor <ian@cygnus.com>
+
+ * m68k-opc.c: Correct move (not movew) to status word on 5200.
+
+Mon Feb 1 20:54:36 1999 Catherine Moore <clm@cygnus.com>
+
+ * disassemble.c (disassembler): Handle bfd_mach_i386_i386_intel_syntax.
+ * i386-dis.c (x_mode): Define.
+ (dis386): Remove.
+ (dis386_att): New.
+ (dis386_intel): New.
+ (dis386_twobyte): Remove.
+ (dis386_twobyte_att): New.
+ (dis386_twobyte_intel): New.
+ (print_insn_x86): Use new arrays.
+ (float_mem): Remove.
+ (float_mem_intel): New.
+ (float_mem_att): New.
+ (dofloat): Use new float_mem arrays.
+ (print_insn_i386_att): New.
+ (print_insn_i386_intel): New.
+ (print_insn_i386): Handle bfd_mach_i386_i386_intel_syntax.
+ (putop): Handle intel syntax.
+ (OP_indirE): Handle intel syntax.
+ (OP_E): Handle intel syntax.
+ (OP_I): Handle intel syntax.
+ (OP_sI): Handle intel syntax.
+ (OP_OFF): Handle intel syntax.
+
+1999-01-27 Doug Evans <devans@casey.cygnus.com>
+
+ * fr30-opc.h,fr30-opc.c: Rebuild.
+ * i960c-opc.h,i960c-opc.c: Rebuild.
+ * m32r-opc.c: Rebuild.
+
+Tue Jan 19 18:01:54 1999 David Taylor <taylor@texas.cygnus.com>
+
+ * hppa-dis.c: revert HP merge changes until HP gives us
+ an updated file.
+
+1999-01-19 Nick Clifton <nickc@cygnus.com>
+
+ * arm-dis.c (print_insn_arm): Display ARM syntax for PC relative
+ offsets as well as symbloic address.
+
+Tue Jan 19 10:51:01 1999 David Taylor <taylor@texas.cygnus.com>
+
+ * hppa-dis.c: fix comments and some indentation.
+
+1999-01-12 Doug Evans <devans@casey.cygnus.com>
+
+ * fr30-opc.c,i960c-opc.c: Regenerate.
+
+1999-01-11 Doug Evans <devans@casey.cygnus.com>
+
+ * fr30-opc.c: Regenerate.
+
+1999-01-06 Doug Evans <devans@casey.cygnus.com>
+
+ * m32r-dis.c: Regenerate.
+
+1999-01-05 Doug Evans <devans@casey.cygnus.com>
+
+ * fr30-asm.c,fr30-dis.c,fr30-opc.h,fr30-opc.c: Regenerate.
+ * i960c-asm.c,i960c-dis.c,i960c-opc.h,i960c-opc.c: Regenerate.
+ * m32r-asm.c,m32r-dis.c,m32r-opc.h,m32r-opc.c: Regenerate.
+
+1999-01-04 Jason Molenda (jsm@bugshack.cygnus.com)
+
+ * configure.in: Require autoconf 2.12.1 or higher.
+
+1998-12-30 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * mips16-opc.c: Mark branch insns with MIPS16_INSN_BRANCH.
+
+Wed Dec 16 16:17:49 1998 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-opc.c: Regenerated.
+
+1998-12-16 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * mips-dis.c (set_mips_isa_type): Handle bfd_mach_mips4111.
+
+1998-12-15 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-opc.c,fr30-opc.h: Regenerated.
+
+1998-12-14 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-opc.c,fr30-opc.h: Regenerated.
+
+Thu Dec 10 18:39:46 1998 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-opc.c,fr30-opc.h: Regenerated.
+
+Thu Dec 10 12:49:24 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-opc.c: Regenerate.
+
+Tue Dec 8 13:56:18 1998 David Taylor <taylor@texas.cygnus.com>
+
+ * dis-buf.c (generic_strcat_address): reformat to GNU coding
+ conventions. change sprintf call to an sprintf_vma call.
+
+Tue Dec 8 13:12:44 1998 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerated.
+
+Tue Dec 8 10:50:46 1998 David Taylor <taylor@texas.cygnus.com>
+
+ The following changes were made by
+ Elena Zannoni <ezannoni@kwikemart.cygnus.com>,
+ David Taylor <taylor@texas.cygnus.com>, and
+ Edith Epstein <eepstein@sophia.cygnus.com> as part of a project to
+ merge in changes by HP; HP did not create ChangeLog entries.
+
+ * dis-buf.c (generic_strcat_address): new function.
+
+ * hppa-dis.c: Changes to improve hppa disassembly.
+ Changed formatting in : reg_names, fp_reg_names,control_reg,
+ New variables : sign_extension_names, deposit_names, conversion_names
+ float_test_names, compare_cond_names_double, add_cond_names_double,
+ logical_cond_names_double, unit_cond_names_double,
+ branch_push_pop_names, saturation_names, shift_names, mix_names,
+ New Macros : GET_COMPL_O, GET_PUSH_POP,MERGED_REG
+ Move some definitions to libhppa.h: GET_FIELD, GET_BIT
+ (fput_const): renamed as fput_hex_const
+ (print_insn_hppa):
+ - use the macros fputs_filtered and
+ fput_decimal_const whenever possible; calls to sign_extend require
+ 2 params -- add a missing second param of 0.
+ - Some new code ifdefed for LOCAL_ONLY, all related to figuring out
+ architecture version number of current machine. HP folks are
+ trying to handle situation where the target program was compiled
+ for PA 1.x (32-bit), but is running on a PA 2.0 machine and
+ visa versa.
+ - added new cases : 'g', 'B', 'm'
+ - added cases specifically for PA 2.0
+ - changed the following cases : '"', 'n', 'N', 'p', 'Z',
+ - calls to fput_const become calls to fput_hex_const
+
+1998-12-07 James E Wilson <wilson@wilson-pc.cygnus.com>
+
+ * Makefile.am (CFILES): Add i960c-asm, i960c-dis.c, i960c-opc.c.
+ (ALL_MACHINES): Add i960c-asm.lo, i960c-dis.lo, i960-opc.lo.
+ (i960-asm.lo, i960c-dis.lo, i960c-opc.lo): New Makefile rules.
+ * Makefile.in: Rebuilt.
+ * configure.in (bfd_i960_arch): Add i960c-opc.lo, i960-asm.o,
+ i960-dis.c to ta.
+ * i960-dis.c (print_insn_i960): Rename to print_insn_i960_orig.
+ * i960c-asm.c, i960c-dis.c, i960c-opc.c, i960c-opc.h: New files.
+
+Mon Dec 7 14:33:44 1998 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerated.
+
+Sun Dec 6 14:06:48 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-opc.c (mips_builtin_opcodes): Add dmfc2 and dmtc2.
+
+ * ppc-opc.c (powerpc_opcodes): Add PowerPC403 GC[X] instructions.
+ From Saitoh Masanobu <msaitoh@spa.is.uec.ac.jp>.
+
+Fri Dec 4 17:45:51 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * fr30-opc.c: Regenerate.
+
+Fri Dec 4 17:08:08 1998 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerated.
+
+Thu Dec 3 14:26:20 1998 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerated.
+
+Thu Dec 3 00:09:17 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerate.
+
+1998-11-30 Doug Evans <devans@casey.cygnus.com>
+
+ * cgen-dis.c (hash_insn_array): CGEN_INSN_VALUE ->
+ CGEN_INSN_BASE_VALUE.
+ * m32r-opc.c,m32r-opc.h,m32r-asm.c,m32r-dis.c: Regenerate.
+ * fr30-opc.c,fr30-opc.h,fr30-asm.c,fr30-dis.c: Regenerate.
+
+Thu Nov 26 11:26:32 1998 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-asm.c,fr30-dis.c,fr30-opc.c: Regenerated.
+
+Tue Nov 24 11:20:54 1998 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-asm.c,fr30-dis.c: Regenerated.
+
+Mon Nov 23 18:28:48 1998 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-asm.c,fr30-dis.c,fr30-opc.c,fr30-opc.h: Regenerated.
+
+1998-11-20 Doug Evans <devans@tobor.to.cygnus.com>
+
+ * fr30-opc.c: Regenerated.
+
+Thu Nov 19 16:02:46 1998 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-opc.c: Regenerated.
+ * fr30-opc.h: Regenerated.
+ * fr30-dis.c: Regenerated.
+ * fr30-asm.c: Regenerated.
+
+Thu Nov 19 07:54:15 1998 Doug Evans <devans@charmed.cygnus.com>
+
+ * mips-opc.c (sync.p,sync.l): Swap insn values.
+
+1998-11-19 Doug Evans <devans@tobor.to.cygnus.com>
+
+ * fr30-opc.c: Regenerate.
+
+Wed Nov 18 21:36:37 1998 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-opc.c: Regenerated.
+ * fr30-opc.h: Regenerated.
+
+1998-11-18 Doug Evans <devans@casey.cygnus.com>
+
+ * m32r-asm.c,m32r-dis.c,m32r-opc.c: Rebuild.
+ * fr30-asm.c,fr30-dis.c,fr30-opc.c: Rebuild.
+
+Wed Nov 18 11:30:04 1998 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-opc.c: Regenerated.
+
+Mon Nov 16 19:21:48 1998 Dave Brolley <brolley@cygnus.com>
+
+ * fr30-opc.c: Regenerated.
+ * fr30-opc.h: Regenerated.
+ * fr30-dis.c: Regenerated.
+ * fr30-asm.c: Regenerated.
+
+Thu Nov 12 19:24:18 1998 Dave Brolley <brolley@cygnus.com>
+
+ * po/opcodes.pot: Regenerated.
+ * fr30-opc.c: Regenerated.
+ * fr30-opc.h: Regenerated.
+ * fr30-dis.c: Regenerated.
+ * fr30-asm.c: Regenerated.
+
+Tue Nov 10 15:26:27 1998 Nick Clifton <nickc@cygnus.com>
+
+ * disassemble.c (disassembler): Add support for FR30 target.
+
+Tue Nov 10 11:00:04 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-dis.c,m32r-opc.c,m32r-opc.h: Rebuild.
+ * fr30-dis.c,fr30-opc.c,fr30-opc.h: Rebuild.
+
+Mon Nov 9 18:22:55 1998 Dave Brolley <brolley@cygnus.com>
+
+ * po/opcodes.pot: Regenerate.
+ * po/POTFILES.in: Regenerate.
+ * fr30-opc.c: Regenerate.
+ * fr30-opc.h: Regenerate.
+
+Fri Nov 6 17:21:38 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-asm.c: Regenerate.
+
+Wed Nov 4 18:46:47 1998 Dave Brolley <brolley@cygnus.com>
+
+ * configure.in: Added case for bfd_fr30_arch.
+ * Makefile.am (CFILES): Added fr30-asm.c, fr30-dis.c, fr30-opc.c.
+ (ALL_MACHINES): Added fr30-asm.lo, fr30-dis.lo, fr30-opc.lo.
+ (CLEANFILES): Added stamp-fr30.
+ (FR30_DEPS): Added.
+ * fr30-asm.c: New file.
+ * fr30-dis.c: New file.
+ * fr30-opc.c: New file.
+ * fr30-opc.h: New file.
+ * po/POTFILES.in: Regenerated
+ * po/opcodes.pot: Regenerated
+
+Mon Nov 2 15:05:33 1998 Geoffrey Noer <noer@cygnus.com>
+
+ * configure.in: detect cygwin* instead of cygwin32*
+ * configure: regenerate
+
+Tue Oct 27 08:58:37 1998 Gavin Romig-Koch <gavin@cygnus.com>
+
+ * mips-opc.c (IS_M): Added.
+
+Mon Oct 19 13:03:19 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * m32r-opc.c,m32r-opc.h,m32r-asm.c,m32r-dis.c: Regenerate.
+
+Fri Oct 9 14:01:56 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * m32r-opc.h,m32r-opc.c: Regenerate.
+
+Sun Oct 4 21:01:44 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * i386-dis.c (OP_3DNowSuffix): New static function.
+ (OPSUF): Define.
+ (GRP14): Define.
+ (dis386_twobyte): Add GRP14, femms, and 3DNow entries.
+ (twobyte_has_modrm): Set entries corresponding to GRP14, 3DNow.
+ (insn_codep): New static variable.
+ (print_insn_x86): Init insn_codep after prefixes.
+ (grps): Add GRP14 entries for prefetch, prefetchw.
+ (OP_REG): Reformat.
+
+ From Jeff B Epler <jepler@usgs.gov>
+ * i386-dis.c (Suffix3DNow): New table.
+
+Wed Sep 30 10:17:50 1998 Nick Clifton <nickc@cygnus.com>
+
+ * d10v-opc.c: Treat TRAP as if it were a branch type instruction.
+
+Mon Sep 28 14:35:43 1998 Martin M. Hunt <hunt@cygnus.com>
+
+ * d10v-dis.c (print_operand): If num is nonzero, then
+ add OPERAND_ACC1, not OPERAND_ACC0.
+
+Thu Sep 24 09:20:03 1998 Nick Clifton <nickc@cygnus.com>
+
+ * d30v-opc.c: Add FLAG_JSR attribute to DBT, REIT, RTD, and TRAP
+ insns.
+
+Tue Sep 22 17:55:14 1998 Nick Clifton <nickc@cygnus.com>
+
+ * d30v-opc.c: Add use of EITHER_BUT_PREFER_MU execution unit
+ class.
+
+Tue Sep 15 15:14:45 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-opc.h,m32r-opc.c: Add bbpc,bbpsw support.
+
+1998-09-09 Michael Meissner <meissner@cygnus.com>
+
+ * ppc-opc.c (powerpc_opcodes): Add support for PowerPC 750 move
+ to/from SPRs.
+
+Fri Sep 4 19:42:59 1998 Nick Clifton <nickc@cygnus.com>
+
+ * arm-dis.c (print_insn_big_arm): Detect Thumb symbols in elf
+ object files.
+ (print_insn_little_arm): Detect Thumb symbols in elf object
+ files.
+
+Sat Aug 29 22:24:09 1998 Richard Henderson <rth@cygnus.com>
+
+ * alpha-dis.c (print_insn_alpha): Use the machine type to
+ decide which PALcode set to include.
+
+Sun Aug 23 02:16:18 1998 Richard Henderson <rth@cygnus.com>
+
+ * sparc-opc.c (FBRX): Fix typo in ",a,pn %fcc3" case.
+
+Fri Aug 21 16:07:52 1998 Nick Clifton <nickc@cygnus.com>
+
+ * d30v-opc.c (d30v_opcode_table): Add FLAG_MUL32 to MAC, MACS,
+ MSUB and MSUBS instructions.
+
+Thu Aug 13 16:23:04 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * ppc-opc.c (powerpc_operands): Omit parens around additions in
+ operand name macros.
+
+Wed Aug 12 14:00:38 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ From Peter Jeremy <peter.jeremy@auss2.alcatel.com.au>:
+ * m68k-opc.c: Correct mulsl and mulul to use q rather than D, a,
+ +, -, and d for ColdFire.
+
+ From Peter Thiemann <thiemann@informatik.uni-tuebingen.de>:
+ * ppc-opc.c (insert_mbe): Handle wrapping bitmasks.
+ (extract_mbe): Likewise.
+
+Wed Aug 12 11:11:34 1998 Jeffrey A Law (law@cygnus.com)
+
+ * m10300-opc.c: Fix typo in udf20 .. udf25 instruction opcodes.
+
+ * m10300-opc.c: First cut at UDF instructions.
+
+Mon Aug 10 14:08:22 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-opc.c: Regenerate (remove semantic descriptions).
+
+Mon Aug 10 12:51:12 1998 Catherine Moore <clm@cygnus.com>
+
+ * arm-dis.c (print_insn_big_arm): Fix indentation.
+ (print_insn_little_arm): Likewise.
+
+Sun Aug 9 20:17:28 1998 Catherine Moore <clm@cygnus.com>
+
+ * arm-dis.c (print_insn_big_arm): Check for thumb symbol
+ attributes.
+ (print_insn_little_arm): Likewise.
+
+Mon Aug 3 12:43:16 1998 Doug Evans <devans@seba.cygnus.com>
+
+ Move all global state data into opcode table struct, and treat
+ opcode table as something that is "opened/closed".
+ * cgen-asm.c (all fns): New first arg of opcode table descriptor.
+ (cgen_asm_init): Delete.
+ (cgen_set_parse_operand_fn): New function.
+ * cgen-dis.c (all fns): New first arg of opcode table descriptor.
+ (cgen_dis_init): Delete.
+ * cgen-opc.c (all fns): New first arg of opcode table descriptor.
+ (cgen_current_{opcode_table_mach,endian}): Delete.
+ * m32r-asm.c,m32r-dis.c,m32r-opc.c,m32r-opc.h: Regenerate.
+
+Thu Jul 30 21:41:10 1998 Frank Ch. Eigler <fche@cygnus.com>
+
+ * d30v-opc.c (d30v_opcode_table): Add new "LKR" flag to some
+ instructions.
+
+Tue Jul 28 11:00:09 1998 Jeffrey A Law (law@cygnus.com)
+
+ * m10300-opc.c: Add entries for "no_match_operands" field in
+ the opcode table.
+
+Fri Jul 24 11:41:37 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-asm.c,m32r-opc.c: Regenerate (-Wall cleanups).
+
+Tue Jul 21 13:41:07 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * m32r-opc.h,m32r-opc.c,m32r-asm.c,m32r-dis.c: Regenerate.
+
+Mon Jul 13 14:53:59 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * i386-dis.c (ckprefix): Handle fwait specially only when it isn't
+ the first prefix.
+ (dofloat): Correct test for fnstsw. Print `fnstsw %ax' rather
+ than `fnstsw %eax'.
+ (OP_J): Remove unnecessary subtraction when 16-bit displacement
+ will be masked later.
+
+Thu Jul 2 17:11:27 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * m32r-opc.h (CGEN_MIN_INSN_SIZE): New #define.
+
+Wed Jul 1 16:11:16 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * m32r-asm.c,m32r-dis.c,m32r-opc.c,m32r-opc.h: Regenerate.
+
+Fri Jun 26 11:08:55 1998 Jeffrey A Law (law@cygnus.com)
+
+ * m10300-dis.c: Only recognize instructions from the currently
+ selected machine.
+ * m10300-opc.c: Add field indicating the particular variant of
+ the mn10300 each instruction is available on.
+
+Fri Jun 26 12:04:21 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: For bfd_vax_arch, build vax-dis.lo.
+ * Makefile.am: Rebuild dependencies.
+ (CFILES): Add vax-dis.c.
+ (ALL_MACHINES): Add vax-dis.lo.
+ * aclocal.m4: Rebuild with current libtool.
+ * configure, Makefile.in: Rebuild.
+
+Fri Jun 26 12:03:20 1998 Klaus Kaempf <kkaempf@progis.de>
+
+ * vax-dis.c: New file, from work by Pauline Middelink
+ <middelin@polyware.iaf.nl>.
+ * disassemble.c (ARCH_vax): Define if ARCH_all.
+ (disassembler): Add case for ARCH_vax.
+ * makefile.vms: Support compilation on vms/vax.
+
+Tue Jun 23 19:42:18 1998 Mark Alexander <marka@cygnus.com>
+
+ * m10200-dis.c (print_insn_mn10200): Fix various non-portabilities
+ related to sign extension and the size of ints.
+
+Tue Jun 23 10:59:26 1998 Jeffrey A Law (law@cygnus.com)
+
+ * m10300-opc.c: Support one operand "asr", "lsr" and "asl"
+ instructions. Support (sp) addressing mode by expanding it into
+ (0,sp).
+
+Sat Jun 20 14:46:20 1998 Frank Ch. Eigler <fche@cygnus.com>
+
+ * mips-dis.c (_print_insn_mips): Fix argument interchange typo.
+
+Fri Jun 19 09:16:42 1998 Mark Alexander <marka@cygnus.com>
+
+ * m10200-dis.c (print_insn_mn10200): Recognize 'break' pseudo-op.
+
+1998-06-18 Ulrich Drepper <drepper@cygnus.com>
+
+ * i386-dis.c: Add support for fxsave, fxrstor, sysenter and
+ sysexit.
+
+Thu Jun 18 10:22:24 1998 John Metzler <jmetzler@cygnus.com>
+
+ * mips-dis.c (print_insn_little_mips): Previously, instruction
+ printing references the symbol table to determine whether the
+ instruction resides in a block regular instructions or mips16
+ instructions. However, when the disassembler gets used in other
+ environments where the symbol table is not present, we no longer
+ rely in the symbol table, rather, use the low bit of the
+ instructions address to guess. There should be no change for usage
+ of the disassembler in host based programs, gdb, objdump.
+ (print_insn_big_mips): ditto.
+ (print_insn_mips): ditto
+
+Wed Jun 17 21:19:01 1998 Mark Alexander <marka@cygnus.com>
+
+ * m10200-dis.c (print_insn_mn10200): Don't bomb on unknown opcodes.
+
+Wed Jun 17 17:49:23 1998 Jeffrey A Law (law@cygnus.com)
+
+ * m10300-opc.c (mn10300_opcodes): Change opcode for "syscall".
+
+Tue Jun 16 13:10:51 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * i386-dis.c (index16): Add '%' to register names. Use ','
+ instead of '+'.
+
+Sat Jun 13 11:33:55 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * i386-dis.c: Don't print opcode suffix when we can figure out the
+ size (and gas can!) by register operands, or from the default
+ size.
+ (putop): Handle 'A', 'B', 'L', 'P', 'Q', 'R' macros. Rename 'C'
+ macro to 'E'.
+ (dis386, dis386_twobyte, grps): Use new suffix macros.
+ (dis386): Correct imul Ib to imul sIb. Change jnl to jge to be
+ consistent. Add suffix for call, jmp, lcall, ljmp, iret. Reverse
+ order of cmps operands to agree with Intel docs. Correct operand
+ of aad and aam (Ib -> sIb). Change ud2b from 0fb8 to 0fb9 to
+ agree with Intel docs.
+ (print_insn_x86): Print orphan fwait before other prefixes.
+ Return correct byte count for orphan fwait with prefixes. Don't
+ print `bound' operands in reverse order.
+ (ckprefix): Stop accumulating prefixes if we get fwait.
+ (OP_DIR): Print `$' before Ap operands of ljmp, lcall.
+
+Fri Jun 12 13:40:38 1998 Tom Tromey <tromey@cygnus.com>
+
+ * po/Make-in (all-yes): If maintainer mode, depend on .pot file.
+ ($(PACKAGE).pot): Unconditionally depend on POTFILES.
+
+Fri Jun 12 11:04:06 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ Fix problems when bfd_vma is wider than long.
+ * i386-dis.c: Make op_address and start_pc unsigned.
+ (set_op): Make parameter unsigned.
+ (print_insn_x86): Cast to bfd_vma when passing a value to
+ print_address_func.
+ * ns32k-dis.c (CORE_ADDR): Don't define.
+ (print_insn_ns32k): Change type of addr to bfd_vma. Use
+ bfd_scan_vma to read back address.
+ (print_insn_arg): Change type of addr to bfd_vma. Use sprintf_vma
+ to format it.
+ * m68k-dis.c (COERCE32): Cast to bfd_signed_vma to avoid overflow.
+ (NEXTULONG): New definition.
+ (print_insn_m68k): Avoid overflow when computing third argument of
+ print_insn_arg.
+ (print_insn_arg): Use NEXTULONG to fetch 32 bit address values.
+ Use disp instead of val to store offset values.
+ (print_indexed): Use base_disp instead of word to store base
+ displacement, to avoid overflow.
+ * m10300-dis.c (disassemble): Cast value to long when computing
+ pc-relative address, to get correct sign extension.
+
+Wed Jun 10 15:58:37 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-opc.c: Regenerate.
+
+Tue Jun 9 14:27:57 1998 Nick Clifton <nickc@cygnus.com>
+
+ * arm-opc.h (thumb_opcodes): Display 'add rx, rY, #0' insns as
+ 'mov rX, rY'. Patch courtesy of Tony Thompson <Tony.Thompson@arm.com>
+
+Mon Jun 8 18:17:21 1998 Nick Clifton <nickc@cygnus.com>
+
+ * d30v-opc.c: Remove FALG_MUL32 attribyte from MULX2H insn.
+
+Fri Jun 5 23:47:55 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * i386-dis.c: Combine aflag and dflag into sizeflag. Change OP_*
+ functions to void.
+ (OP_DSreg): Rename from OP_DSSI.
+ (OP_ESreg): Rename from OP_ESDI.
+ (Xb, Xv, Yb, Yv): Use index reg code, not b_mode or v_mode.
+ (DSBX): Define.
+ (append_seg): Rename from append_prefix.
+ (ptr_reg): New function.
+ (dis386): Add S suffix to pushf, popf, ret, lret, enter, leave.
+ Add DSBX for xlat.
+ (PREFIX_ADDR): Rename from PREFIX_ADR.
+ (float_reg): Add non-broken opcodes for people who don't want
+ UNIXWARE_COMPAT.
+
+Fri Jun 5 19:15:04 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k-opc.c (tstb, tstw, tstl): Don't allow pcrel on
+ 68000/68008/68010.
+
+Wed Jun 3 18:56:22 1998 H.J. Lu <hjl@gnu.org>
+
+ * i386-dis.c (dis386): Change 0x60 to "pushaS", 0x61 to "popaS".
+
+Tue Jun 2 15:06:46 1998 Geoff Keating <geoffk@ozemail.com.au>
+
+ * ppc-opc.c (powerpc_macros): Support shifts and rotates of size
+ 0; produce error message for shifts of size 32 (or 64 for 64-bit
+ shifts), because the hardware doesn't support them.
+
+Wed May 27 15:29:13 1998 Nick Clifton <nickc@cygnus.com>
+
+ * d30v-opc.c: Add new operand: Ra3. Change SHORT_B3, SHORT_B3b,
+ LONG_2, LONG_2b formats to use this new operand.
+
+Tue May 26 20:47:48 1998 Stan Cox <scox@cygnus.com>
+
+ * sparc-dis.c (compute_arch_mask): Added bfd_mach_sparc_sparclite_le.
+
+Tue May 26 20:45:33 1998 Mark Alexander <marka@cygnus.com>
+
+ * sparc-dis.c (print_insn_sparc): big endian instruction / little
+ endian data support.
+
+Tue May 26 16:14:39 1998 Nick Clifton <nickc@cygnus.com>
+
+ * d30v-opc.c (d30v_format_table): Change definition of SHORT_B3
+ and SHORT_B3b formats to use Rb instead of Ra.
+
+ Add FLAG_MUL16 to MUL2XH opcode.
+
+ Add FLAG_ADDSUBppp to SRC and SATHp opcodes to implement extension
+ to existing 1.1.1 parallelisation prohibition procedure.
+
+Fri May 22 16:00:00 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-asm.c,m32r-dis.c: Regenerate.
+
+Tue May 19 17:36:08 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * mips-dis.c (print_mips16_insn_arg): Handle type ']' correctly
+ with a shift count of 0.
+
+Fri May 15 14:58:31 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * cgen-opc.c (cgen_hw_lookup_by_name): Renamed from cgen_hw_lookup.
+ (cgen_hw_lookup_by_num): New function.
+
+Wed May 13 17:03:59 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-asm.c: Regenerate (handle uppercase HIGH/SHIGH/LOW/SDA).
+
+Wed May 13 14:34:31 1998 Mark Alexander <marka@cygnus.com>
+
+ * sparc-dis.c (print_insn_sparc): Always fetch instructions
+ as big-endian on SPARClite.
+
+Tue May 12 11:46:31 1998 Richard Henderson <rth@cygnus.com>
+
+ * d30v-opc.c (pre_defined_register): Remove alias for r0.
+
+Sun May 10 22:37:22 1998 Jeffrey A Law (law@cygnus.com)
+
+ * po/Make-in (install-info): New target.
+
+Thu May 7 17:15:59 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in (WIN32LIBADD): Add -lintl on cygwin32.
+ * configure: Rebuild.
+
+Thu May 7 12:49:46 1998 Frank Ch. Eigler <fche@cygnus.com>
+
+ * mips-opc.c (teq,tge,tgeu,tlt,tltu,tne): Added three-operand
+ variety of ISA2 instructions to set bottom ten bits of trap code.
+
+Thu May 7 11:54:25 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (config.status): Add explicit target so that
+ config.status depends upon bfd/configure.in.
+ * Makefile.in: Rebuild.
+
+Thu May 7 09:33:02 1998 Frank Ch. Eigler <fche@cygnus.com>
+
+ * mips-opc.c (break, sdbbp): Added two-operand variety of ISA1
+ instructions to set bottom ten bits of break code.
+ * mips-dis.c (print_insn_arg): Implement 'q' operand format used
+ for above optional argument.
+
+Wed May 6 15:30:06 1998 Klaus Kaempf <kkaempf@progis.de>
+
+ * makefile.vms: Run dec c with /nodebug.
+
+Mon May 4 10:19:57 1998 Tom Tromey <tromey@cygnus.com>
+
+ * Makefile.in: Rebuilt.
+ * Makefile.am: Regenerated dependencies with mkdep.
+
+ * opintl.h (_): Define as dgettext.
+
+Tue Apr 28 14:12:12 1998 Nick Clifton <nickc@cygnus.com>
+
+ * cgen-asm.c: Internationalised.
+ * m32r-asm.c: Internationalised.
+ * m32r-dis.c: Internationalised.
+ * m32r-opc.c: Internationalised.
+
+ * aclocal.m4: Regenerated.
+ * configure: Regenerated.
+ * Makefile.am (POTFILES): Remove inclusion of BFD_H.
+ * Makefile.in: Rebuild.
+ * po/POTFILES.in: Rebuilt using rule in Makefile.in.
+ * po/opcodes.pot: Rebuilt after changing POTFILES.in.
+
+Tue Apr 28 13:13:13 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Call AC_ISC_POSIX near start. Move CY_GNU_GETTEXT
+ after AC_PROG_CC.
+ * aclocal.m4, configure: Rebuild with current tools.
+
+Mon Apr 27 14:31:00 1998 Nick Clifton <nickc@cygnus.com>
+
+ * opintl.h: New file - contains internationalisation macros used
+ by source files in this directory.
+ * po/: New subdirectory - contains internationalisation files.
+ * po/Make-in: New file - Makefile constructor.
+ * po/POTFILES.in: New file - list of files in opcodes directory
+ that should be scan for internationalisation macros.
+ * po/opcodes.pot: New file - list of internationisation strings
+ found in files mentioned in po/POTFILES.in.
+ * Makefile.am: Add rule to build po/POTFILES.in. Add SUBDIRS
+ entry. Add intl directory to include paths.
+ * acconfig.h: Add ENABLE_NLS, HAVE_CATGETS, HAVE_GETEXT,
+ HAVE_STRCPY, HAVE_LC_MESSAGES
+ * configure.in: Add rule to build Makefile in po subdirectory.
+ * Makefile.in: Rebuilt.
+ * aclocal.m4: Rebuilt.
+ * config.in: Rebuilt.
+ * configure: Rebuilt.
+ * alpha-opc.c: Internationalised.
+ * arc-dis.c: Internationalised.
+ * arc-opc.c: Internationalised.
+ * arm-dis.c: Internationalised.
+ * cgen-asm.c: Internationalised.
+ * d30v-dis.c: Internationalised.
+ * dis-buf.c: Internationalised.
+ * h8300-dis.c: Internationalised.
+ * h8500-dis.c: Internationalised.
+ * i386-dis.c: Internationalised.
+ * m10200-dis.c: Internationalised.
+ * m10300-dis.c: Internationalised.
+ * m68k-dis.c: Internationalised.
+ * m88k-dis.c: Internationalised.
+ * mips-dis.c: Internationalised.
+ * ns32k-dis.c: Internationalised.
+ * opintl.h: Internationalised.
+ * ppc-opc.c: Internationalised.
+ * sparc-dis.c: Internationalised.
+ * v850-dis.c: Internationalised.
+ * v850-opc.c: Internationalised.
+
+Mon Apr 27 10:33:56 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * cgen-asm.c (cgen_current_opcode_table): Renamed from ..._data.
+ (asm_hash_table_entries): New variable.
+ (cgen_asm_init): Free asm_hash_table_entries.
+ (hash_insn_array,hash_insn_list): New functions.
+ (build_asm_hash_table): Use them. Hash macro insns as well.
+ (cgen_asm_lookup_insn): Update.
+ * cgen_dis.c (cgen_current_opcode_table): Renamed from ..._data.
+ (dis_hash_table_entries): New variable.
+ (cgen_dis_init): Free dis_hash_table_entries.
+ (hash_insn_array,hash_insn_list): New functions.
+ (build_dis_hash_table): Use them. Hash macro insns as well.
+ (cgen_dis_lookup_insn): Update.
+ * cgen-opc.c (cgen_current_opcode_table): Renamed from ..._data.
+ (cgen_set_cpu,cgen_hw_lookup,cgen_insn_count): Update.
+ (cgen_macro_insn_count): New function.
+ * m32r-opc.h,m32r-opc.c,m32r-asm.c,m32r-dis.c: Regenerate.
+
+Fri Apr 24 16:07:57 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
+
+ * i386-dis.c (OP_DSSI): Print segment override.
+
+Mon Apr 13 16:59:39 1998 Nick Clifton <nickc@cygnus.com>
+
+ * arm-dis.c (print_insn_arm): Add "_all" extension to 'C'
+ operator.
+
+Mon Apr 13 16:50:27 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (libopcodes_la_LIBADD): Add @WIN32LIBADD@.
+ (libopcodes_la_LDFLAGS): Add @WIN32LDFLAGS@.
+ * configure.in: Define and substitute WIN32LDFLAGS and
+ WIN32LIBADD.
+ * aclocal.m4: Rebuild with new libtool.
+ * configure, Makefile.in: Rebuild.
+
+Fri Apr 10 18:14:31 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-opc.c: Regenerate.
+
+Sun Apr 5 16:04:39 1998 H.J. Lu <hjl@gnu.org>
+
+ * Makefile.am (stamp-lib): Check that .libs/libopcodes.a exists
+ before trying to copy it.
+ * Makefile.in: Rebuild.
+
+Thu Apr 2 17:25:49 1998 Nick Clifton <nickc@cygnus.com>
+
+ * m32r-opc.c: Use signed immediate values for CMPUI instruction.
+
+Wed Apr 1 16:20:27 1998 Ian Dall <Ian.Dall@dsto.defence.gov.au>
+
+ * ns32k-dis.c (bit_extract_simple): New function to extract bits
+ from an arbitrary valid buffer instead of fetching them on demand
+ using fetch_data().
+ (invalid_float): use bit_extract_simple() instead of bit_extract().
+
+Tue Mar 31 11:09:08 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ From H.J. Lu <hjl@gnu.org>:
+ * i386-dis.c (dis386): Change 0x8c and 0x8e to movS, and change Ew
+ to Ev for both.
+
+Mon Mar 30 17:32:03 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Branched binutils 2.9.
+
+Mon Mar 30 15:18:00 1998 Ken Raeburn <raeburn@cygnus.com>
+
+ * d30v-dis.c (print_insn_d30v): Don't use uninitialized "num" when
+ disassembling last 4 bytes of a section.
+
+Fri Mar 27 18:08:13 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ Fix some gcc -Wall warnings:
+ * arc-dis.c (print_insn): Add casts to avoid warnings.
+ * cgen-opc.c (cgen_keyword_lookup_name): Likewise.
+ * d10v-dis.c (dis_long, dis_2_short): Likewise.
+ * m10200-dis.c (disassemble): Likewise.
+ * m10300-dis.c (disassemble): Likewise.
+ * ns32k-dis.c (print_insn_ns32k): Likewise.
+ * ppc-opc.c (insert_ral, insert_ram): Likewise.
+ * cgen-dis.c (build_dis_hash_table): Remove used local variables.
+ * cgen-opc.c (cgen_keyword_search_next): Likewise.
+ * d10v-dis.c (dis_long, dis_2_short): Likewise.
+ * d30v-dis.c (print_insn_d30v, lookup_opcode): Likewise.
+ * ns32k-dis.c (bit_extract, print_insn_ns32k): Likewise.
+ * tic80-dis.c (print_one_instruction): Likewise.
+ * w65-dis.c (print_operand): Likewise.
+ * z8k-dis.c (fetch_data): Likewise.
+ * a29k-dis.c: Add return type for find_byte_func_type.
+ * arc-opc.c: Include <stdio.h>. Remove declarations of
+ insert_multshift and extract_multshift.
+ * d30v-dis.c (lookup_opcode): Parenthesize assignments in
+ conditionals.
+ (extract_value): Fully parenthesize expression.
+ * h8500-dis.c (print_insn_h8500): Initialize local variables.
+ * h8500-opc.h (h8500_table): Fully bracket initializer.
+ * w65-opc.h (optable): Likewise.
+ * i386-dis.c (print_insn_x86): Declare aflag and flag parameters.
+ * i386-dis.c (OP_E): Initialize local variables.
+ * m10200-dis.c (print_insn_mn10200): Likewise.
+ * mips-dis.c (print_insn_mips16): Likewise.
+ * sh-dis.c (print_insn_shx): Likewise.
+ * v850-dis.c (print_insn_v850): Likewise.
+ * ns32k-dis.c (print_insn_arg): Declare.
+ (get_displacement, invalid_float): Declare.
+ (list_search, sign_extend, flip_bytes): Declare return type.
+ (get_displacement): Likewise.
+ (print_insn_arg): Likewise. Make d int. Fix sprintf format
+ string.
+ (print_insn_ns32k): Make i unsigned.
+ (invalid_float): Make static. Declare type of val.
+ * tic30-dis.c (print_par_insn): Make i size_t. Don't check strlen
+ on each for iteration.
+ * tic30-dis.c (get_indirect_operand): Likewise.
+ * z8k-dis.c (print_insn_z8001): Declare return type.
+ (print_insn_z8002): Likewise.
+ (unparse_instr): Fix sprintf format strings.
+
+Fri Mar 27 00:05:23 1998 Jeffrey A Law (law@cygnus.com)
+
+ * mips-opc.c: Add "sync.l" and "sync.p".
+
+Wed Mar 25 14:32:48 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * m68k-dis.c (print_insn_m68k): Use info->mach to select the
+ default m68k variant to recognize.
+
+ * i960-dis.c (pinsn): Change type of first argument to bfd_vma.
+ (ctrl, cobr, mem, ea): Likewise.
+ (print_addr): Likewise. Remove cast.
+ (ea): Cast argument of print_addr to bfd_vma.
+
+ * cgen-asm.c (cgen_parse_signed_integer): Fix type of local
+ variable value.
+ (cgen_parse_unsigned_integer): Likewise.
+ (cgen_parse_address): Likewise.
+
+Wed Mar 25 14:31:31 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * i960-dis.c (ctrl): Add full braces to structure initialization.
+ (cobr, mem, reg): Likewise.
+ (ea): Correct parenthesization in expression.
+
+ * cgen-asm.c: Include <ctype.h>.
+ (build_asm_hash_table): Remove unused local variable i.
+ (cgen_parse_keyword): Add casts to avoid warnings.
+
+ * arm-dis.c (print_insn_big_arm): Only call coffsymbol for a COFF
+ symbol. Fix indentation.
+ (print_insn_little_arm): Likewise.
+
+Fri Mar 20 18:55:18 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Use AM_DISABLE_SHARED.
+ * aclocal.m4, configure: Rebuild with libtool 1.2.
+
+Thu Mar 19 15:46:53 1998 Nick Clifton <nickc@cygnus.com>
+
+ These patches are courtesy of Jonathan Walton and Tony Thompson
+ (athompso@cambridge.arm.com).
+
+ * arm-dis.c (print_insn_thumb): Ignore bottom two bits of PC
+ relative addresses.
+
+ * arm-opc.h (thumb_opcodes): Annotate PC relative addresses with
+ both the offset and the label closest to the destination.
+
+Sat Mar 14 23:47:14 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * m32r-opc.h: Regenerate.
+
+Wed Mar 4 12:08:14 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-opc.h,m32r-opc.c,m32r-asm.c,m32r-dis.c: Regenerate.
+
+Sat Feb 28 16:02:34 1998 Nick Clifton <nickc@cygnus.com>
+
+ * arm-dis.c (print_insn_big_arm, print_insn_little_arm): Do not
+ assume that info->symbols is non-empty.
+
+Sat Feb 28 12:19:05 1998 Richard Henderson <rth@cygnus.com>
+
+ * alpha-opc.c (cvtqs) There is no such thing.
+ (cvttq): Missing most of the /*d variants.
+
+Thu Feb 26 15:53:09 1998 Michael Meissner <meissner@cygnus.com>
+
+ * d30v-opc.c (d30v_opcode_table): Indicate which instructions are
+ delayed branches or jumps.
+
+Tue Feb 24 10:46:44 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * arm-dis.c (print_insn_{big,little}_arm): info->symbol changed
+ to *info->symbols.
+ * mips-dis.c (print_insn_{big,little}_mips): Likewise.
+ * tic30-dis.c (print_branch): Likewise.
+
+Tue Feb 24 11:06:18 1998 Nick Clifton <nickc@cygnus.com>
+
+ * arm-dis.c (print_insn_big_arm, print_insn_little_arm): Remove
+ saved_symbol code as it is no longer needed.
+
+Mon Feb 23 13:16:17 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * cgen-asm.c: Include symcat.h.
+ * cgen-dis.c,cgen-opc.c: Ditto.
+ * m32r-asm.c,m32r-dis.c,m32r-opc.h,m32r-opc.c: Regenerate.
+
+Mon Feb 23 10:34:58 1998 Jeffrey A Law (law@cygnus.com)
+
+ * mips-dis.c (print_insn_arg): Do not prefix 'P' arguments with '$'.
+
+Thu Feb 19 16:51:13 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-opc.[ch]: Regenerate.
+
+Tue Feb 17 17:14:50 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * cgen-asm.c (cgen_parse_{signed,unsigned}_integer): Delete min,max
+ arguments. Don't perform validation here.
+ * m32r-asm.c,m32r-dis.c,m32r-opc.c: Regenerate.
+
+Fri Feb 13 14:26:06 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-opc.c: Regenerate.
+
+Fri Feb 13 14:53:02 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * Makefile.am (AUTOMAKE_OPTIONS): Define.
+ * configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.
+
+Fri Feb 13 10:21:09 1998 Mark Alexander <marka@cygnus.com>
+
+ * m10300-dis.c (print_insn_mn10300): Recognize break instruction.
+
+Fri Feb 13 13:12:14 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Get the version number from BFD.
+ * configure: Rebuild.
+
+ From H.J. Lu <hjl@gnu.org>:
+ * Makefile.am (libopcodes_la_LDFLAGS): Define.
+ * Makefile.in: Rebuild.
+
+Fri Feb 13 09:50:32 1998 Nick Clifton <nickc@cygnus.com>
+
+ * m32r-opc.c: Regenerate.
+ * m32r-opc.h: Regenerate.
+
+Thu Feb 12 11:01:40 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-opc.c: Regenerate.
+
+Thu Feb 12 03:41:00 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ Fix rac to accept only a0:
+ * d10v-opc.c (d10v_predefined_registers, d10v_operands, d10v_opcodes):
+ Split OPERAND_ACC into OPERAND_ACC0 and OPERAND_ACC1.
+ Introduce OPERAND_GPR.
+ * d10v-dis.c (print_operand): Likewise.
+
+Wed Feb 11 18:58:34 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * cgen-opc.c (cgen_set_cpu): Delete init of hw list `next' chain.
+ (cgen_hw_lookup): Make result const.
+ * m32r-opc.h, m32r-opc.c, m32r-asm.c, m32r-dis.c: Regenerate.
+
+Sat Feb 7 15:30:27 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure, aclocal.m4: Rebuild with new libtool.
+
+Thu Feb 5 17:56:10 1998 Michael Meissner <meissner@cygnus.com>
+
+ * d30v-opc.c (repeat{,i} instructions): Repeat/repeati
+ instructions use a PC relative branch, not absolute.
+
+Wed Feb 4 19:17:37 1998 Ian Lance Taylor <ian@cygnus.com>
+
+ * configure.in: Set libtool_enable_shared rather than
+ libtool_shared. Remove diversion hack.
+ * configure, Makefile.in, aclocal.m4: Rebuild with new libtool.
+
+Tue Feb 3 17:19:40 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * cgen-opc.c (cgen_set_cpu): Initialize hardware table.
+ * m32r-opc.h, m32r-opc.c, m32r-asm.c, m32r-dis.c: Regenerate.
+
+Mon Feb 2 19:22:15 1998 Steve Haworth <steve@pm.cse.rmit.EDU.AU>
+
+ * tic30-dis.c: New file.
+ * disassemble.c (disassembler): Add bfd_arch_tic30 case.
+ * configure.in: Handle bfd_tic30_arch.
+ * Makefile.am: Rebuild dependencies.
+ (CFILES): Add tic30-dis.c
+ (ALL_MACHINES): Add tic30-dis.lo.
+ * configure, Makefile.in: Rebuild.
+
+Thu Jan 29 13:02:56 1998 Doug Evans <devans@canuck.cygnus.com>
+
+ * m32r-opc.h (HAVE_CPU_M32R): Define.
+
+Wed Jan 28 09:55:03 1998 Nick Clifton <nickc@cygnus.com>
+
+ * v850-opc.c (insertion routines): If both alignment and size is
+ wrong then report this.
+
+Tue Jan 27 21:52:59 1998 Jeffrey A Law (law@cygnus.com)
+
+ * mips-dis.c (_print_insn_mips): Set target_processor as appropriate.
+ Only recognize instructions for the current target_processor.
+
+Thu Jan 22 16:20:17 1998 Fred Fish <fnf@cygnus.com>
+
+ * d10v-dis.c (PC_MASK): Correct value.
+ (print_operand): If there's a reloc, don't calculate the
+ address because they could be in different sections.
+
+Fri Jan 16 15:29:11 1998 Jim Blandy <jimb@zwingli.cygnus.com>
+
+ * mips-opc.c (mips_builtin_opcodes): Move 4010's "addciu"
+ instruction after the 4650's "mul" instruction; nobody's using the
+ 4010 these days. If object files someday indicate which processor
+ variant they're intended for, we can do a better job at this.
+
+Mon Jan 12 14:43:54 1998 Doug Evans <devans@seba.cygnus.com>
+
+ * cgen-asm.c (build_asm_hash_table): Traverse compiled in table using
+ table provided entry size. Use CGEN_INSN_MNEMONIC.
+ (cgen_parse_keyword): Rewrite.
+ * cgen-dis.c (build_dis_hash_table): Traverse compiled in table using
+ table provided entry size. Use CGEN_INSN_MASK_BITSIZE.
+ * cgen-opc.c: Clean up pass over `struct foo' usage.
+ (cgen_keyword_lookup_value): Handle "" entry.
+ (cgen_keyword_add): Likewise.
+
+For older changes see ChangeLog-9297
+
+Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
+version-control: never
+End:
diff --git a/contrib/binutils/opcodes/MAINTAINERS b/contrib/binutils/opcodes/MAINTAINERS
new file mode 100644
index 0000000..d59a3bd
--- /dev/null
+++ b/contrib/binutils/opcodes/MAINTAINERS
@@ -0,0 +1 @@
+See ../binutils/MAINTAINERS
diff --git a/contrib/binutils/opcodes/Makefile.am b/contrib/binutils/opcodes/Makefile.am
index 77beb4d..e31d9c1 100644
--- a/contrib/binutils/opcodes/Makefile.am
+++ b/contrib/binutils/opcodes/Makefile.am
@@ -8,11 +8,17 @@ INCDIR = $(srcdir)/../include
BFDDIR = $(srcdir)/../bfd
MKDEP = gcc -MM
+WARN_CFLAGS = @WARN_CFLAGS@
+AM_CFLAGS = $(WARN_CFLAGS)
+
lib_LTLIBRARIES = libopcodes.la
# This is where bfd.h lives.
BFD_H = ../bfd/bfd.h
+# This is where libiberty lives.
+LIBIBERTY = ../libiberty/libiberty.a
+
# Header files.
HFILES = \
arm-opc.h \
@@ -22,6 +28,8 @@ HFILES = \
mcore-opc.h \
sh-opc.h \
sysdep.h \
+ ia64-asmtab.h \
+ ia64-opc.h \
w65-opc.h \
z8k-opc.h
@@ -32,11 +40,14 @@ CFILES = \
alpha-opc.c \
arc-dis.c \
arc-opc.c \
+ arc-ext.c \
arm-dis.c \
avr-dis.c \
cgen-asm.c \
cgen-dis.c \
cgen-opc.c \
+ cris-dis.c \
+ cris-opc.c \
d10v-dis.c \
d10v-opc.c \
d30v-dis.c \
@@ -54,13 +65,26 @@ CFILES = \
i370-dis.c \
i370-opc.c \
i386-dis.c \
+ i860-dis.c \
i960-dis.c \
+ ia64-dis.c \
+ ia64-opc-a.c \
+ ia64-opc-b.c \
+ ia64-opc-f.c \
+ ia64-opc-i.c \
+ ia64-opc-m.c \
+ ia64-opc-d.c \
+ ia64-opc.c \
+ ia64-gen.c \
+ ia64-asmtab.c \
m32r-asm.c \
m32r-desc.c \
m32r-dis.c \
m32r-ibld.c \
m32r-opc.c \
m32r-opinst.c \
+ m68hc11-dis.c \
+ m68hc11-opc.c \
m68k-dis.c \
m68k-opc.c \
m88k-dis.c \
@@ -81,6 +105,8 @@ CFILES = \
sparc-dis.c \
sparc-opc.c \
tic30-dis.c \
+ tic54x-dis.c \
+ tic54x-opc.c \
tic80-dis.c \
tic80-opc.c \
v850-dis.c \
@@ -96,11 +122,14 @@ ALL_MACHINES = \
alpha-opc.lo \
arc-dis.lo \
arc-opc.lo \
+ arc-ext.lo \
arm-dis.lo \
avr-dis.lo \
cgen-asm.lo \
cgen-dis.lo \
cgen-opc.lo \
+ cris-dis.lo \
+ cris-opc.lo \
d10v-dis.lo \
d10v-opc.lo \
d30v-dis.lo \
@@ -116,13 +145,18 @@ ALL_MACHINES = \
i386-dis.lo \
i370-dis.lo \
i370-opc.lo \
+ i860-dis.lo \
i960-dis.lo \
+ ia64-dis.lo \
+ ia64-opc.lo \
m32r-asm.lo \
m32r-desc.lo \
m32r-dis.lo \
m32r-ibld.lo \
m32r-opc.lo \
m32r-opinst.lo \
+ m68hc11-dis.lo \
+ m68hc11-opc.lo \
m68k-dis.lo \
m68k-opc.lo \
m88k-dis.lo \
@@ -143,6 +177,8 @@ ALL_MACHINES = \
sparc-dis.lo \
sparc-opc.lo \
tic30-dis.lo \
+ tic54x-dis.lo \
+ tic54x-opc.lo \
tic80-dis.lo \
tic80-opc.lo \
v850-dis.lo \
@@ -191,22 +227,78 @@ config.status: $(srcdir)/configure $(srcdir)/../bfd/configure.in
$(SHELL) ./config.status --recheck
CLEANFILES = \
- libopcodes.a stamp-lib dep.sed DEP DEP1 DEP2
-
-
-
-# The start marker is written this way to pass through automake unscathed.
-
-
-
+ stamp-m32r stamp-fr30 \
+ libopcodes.a stamp-lib dep.sed DEP DEPA DEP1 DEP2
+
+
+CGENDIR = @cgendir@
+CGEN = `if test -f ../guile/libguile/guile ; then echo ../guile/libguile/guile; else echo guile ; fi`
+CGENFLAGS = -v
+
+CGENDEPS = ../cgen/stamp-cgen \
+ $(CGENDIR)/desc.scm $(CGENDIR)/desc-cpu.scm \
+ $(CGENDIR)/opcodes.scm $(CGENDIR)/opc-asmdis.scm \
+ $(CGENDIR)/opc-ibld.scm $(CGENDIR)/opc-itab.scm \
+ $(CGENDIR)/opc-opinst.scm \
+ cgen-asm.in cgen-dis.in cgen-ibld.in
+
+if CGEN_MAINT
+M32R_DEPS = stamp-m32r
+FR30_DEPS = stamp-fr30
+else
+M32R_DEPS =
+FR30_DEPS =
+endif
+
+run-cgen:
+ $(SHELL) $(srcdir)/cgen.sh opcodes $(srcdir) $(CGEN) \
+ $(CGENDIR) "$(CGENFLAGS)" $(arch) $(prefix) \
+ "$(options)" $(extrafiles)
+ touch stamp-${prefix}
+.PHONY: run-cgen
+
+# For now, require developers to configure with --enable-cgen-maint.
+$(srcdir)/m32r-desc.h $(srcdir)/m32r-desc.c $(srcdir)/m32r-opc.h $(srcdir)/m32r-opc.c $(srcdir)/m32r-ibld.c $(srcdir)/m32r-opinst.c $(srcdir)/m32r-asm.c $(srcdir)/m32r-dis.c: $(M32R_DEPS)
+ @true
+stamp-m32r: $(CGENDEPS) $(CGENDIR)/m32r.cpu $(CGENDIR)/m32r.opc
+ $(MAKE) run-cgen arch=m32r prefix=m32r options=opinst extrafiles=opinst
+
+$(srcdir)/fr30-desc.h $(srcdir)/fr30-desc.c $(srcdir)/fr30-opc.h $(srcdir)/fr30-opc.c $(srcdir)/fr30-ibld.c $(srcdir)/fr30-asm.c $(srcdir)/fr30-dis.c: $(FR30_DEPS)
+ @true
+stamp-fr30: $(CGENDEPS) $(CGENDIR)/fr30.cpu $(CGENDIR)/fr30.opc
+ $(MAKE) run-cgen arch=fr30 prefix=fr30 options= extrafiles=
+
+
+ia64-ic.tbl: $(srcdir)/ia64-ic.tbl
+ $(LN_S) -f $(srcdir)/ia64-ic.tbl
+ia64-raw.tbl: $(srcdir)/ia64-raw.tbl
+ $(LN_S) -f $(srcdir)/ia64-raw.tbl
+ia64-waw.tbl: $(srcdir)/ia64-waw.tbl
+ $(LN_S) -f $(srcdir)/ia64-waw.tbl
+ia64-war.tbl: $(srcdir)/ia64-war.tbl
+ $(LN_S) -f $(srcdir)/ia64-war.tbl
+
+ia64-gen: ia64-gen.o
+ $(LINK) ia64-gen.o $(LIBIBERTY)
+
+ia64-gen.o: ia64-gen.c ia64-opc.c ia64-opc-a.c ia64-opc-b.c ia64-opc-f.c \
+ ia64-opc-i.c ia64-opc-m.c ia64-opc-d.c ia64-opc.h
+
+ia64-asmtab.c: @MAINT@ ia64-gen ia64-ic.tbl ia64-raw.tbl ia64-waw.tbl ia64-war.tbl
+ ./ia64-gen > $(srcdir)/ia64-asmtab.c
# This dependency stuff is copied from BFD.
DEP: dep.sed $(CFILES) $(HFILES) config.h
rm -f DEP1
$(MAKE) MKDEP="$(MKDEP)" DEP1
- sed -f dep.sed < DEP1 > $@
- echo '# IF YOU PUT ANYTHING HERE IT WILL GO AWAY' >> $@
+ 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)
echo '# DO NOT DELETE THIS LINE -- mkdep uses it.' > DEP2
@@ -242,139 +334,189 @@ dep-am: DEP
# DO NOT DELETE THIS LINE -- mkdep uses it.
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-a29k-dis.lo: a29k-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/opcode/a29k.h
-alpha-dis.lo: alpha-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/alpha.h
-alpha-opc.lo: alpha-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/alpha.h \
- $(BFD_H) opintl.h
-arc-dis.lo: arc-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/opcode/arc.h $(BFDDIR)/elf-bfd.h \
+a29k-dis.lo: a29k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/a29k.h
+alpha-dis.lo: alpha-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/alpha.h
+alpha-opc.lo: alpha-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/alpha.h $(BFD_H) opintl.h
+arc-dis.lo: arc-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/arc.h \
+ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h \
+ $(INCDIR)/elf/reloc-macros.h opintl.h arc-dis.h arc-ext.h
+arc-opc.lo: arc-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/arc.h opintl.h
+arc-ext.lo: $(BFD_H) $(INCDIR)/libiberty.h arc-ext.h
+arm-dis.lo: arm-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) arm-opc.h $(INCDIR)/coff/internal.h \
+ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h opintl.h $(BFDDIR)/elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h \
+ $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h
+avr-dis.lo: avr-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) opintl.h $(INCDIR)/opcode/avr.h
+cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h \
opintl.h
-arc-opc.lo: arc-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/arc.h \
+cgen-dis.lo: cgen-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
+cgen-opc.lo: cgen-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
+cris-dis.lo: cris-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/ansidecl.h sysdep.h config.h $(INCDIR)/opcode/cris.h \
+ $(INCDIR)/libiberty.h
+cris-opc.lo: cris-opc.c $(INCDIR)/opcode/cris.h
+d10v-dis.lo: d10v-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d10v.h $(INCDIR)/dis-asm.h $(BFD_H)
+d10v-opc.lo: d10v-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d10v.h
+d30v-dis.lo: d30v-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d30v.h $(INCDIR)/dis-asm.h $(BFD_H) \
opintl.h
-arm-dis.lo: arm-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) arm-opc.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \
- $(INCDIR)/bfdlink.h opintl.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/arm.h \
- $(INCDIR)/elf/reloc-macros.h
-avr-dis.lo: avr-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h opintl.h
-cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/libiberty.h \
- $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h \
- opintl.h
-cgen-dis.lo: cgen-dis.c sysdep.h config.h $(INCDIR)/libiberty.h \
- $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
-cgen-opc.lo: cgen-opc.c sysdep.h config.h $(INCDIR)/libiberty.h \
- $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
-d10v-dis.lo: d10v-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/d10v.h \
- $(INCDIR)/dis-asm.h $(BFD_H)
-d10v-opc.lo: d10v-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/d10v.h
-d30v-dis.lo: d30v-dis.c $(INCDIR)/opcode/d30v.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h opintl.h
-d30v-opc.lo: d30v-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/d30v.h
-dis-buf.lo: dis-buf.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) opintl.h
-disassemble.lo: disassemble.c $(INCDIR)/ansidecl.h \
+d30v-opc.lo: d30v-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d30v.h
+dis-buf.lo: dis-buf.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
+disassemble.lo: disassemble.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/dis-asm.h $(BFD_H)
-fr30-asm.lo: fr30-asm.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
- fr30-opc.h opintl.h
-fr30-desc.lo: fr30-desc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
- fr30-opc.h opintl.h
-fr30-dis.lo: fr30-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+fr30-asm.lo: fr30-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
fr30-opc.h opintl.h
-fr30-ibld.lo: fr30-ibld.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+fr30-desc.lo: fr30-desc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
fr30-opc.h opintl.h
-fr30-opc.lo: fr30-opc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
+fr30-dis.lo: fr30-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h fr30-desc.h \
+ $(INCDIR)/opcode/cgen.h fr30-opc.h opintl.h
+fr30-ibld.lo: fr30-ibld.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h fr30-desc.h \
+ $(INCDIR)/opcode/cgen.h fr30-opc.h opintl.h
+fr30-opc.lo: fr30-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(BFD_H) $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
fr30-opc.h
-h8300-dis.lo: h8300-dis.c $(INCDIR)/opcode/h8300.h \
- $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h opintl.h
-h8500-dis.lo: h8500-dis.c h8500-opc.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h opintl.h
-hppa-dis.lo: hppa-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h
-i370-dis.lo: i370-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/i370.h
-i370-opc.lo: i370-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/i370.h
+h8300-dis.lo: h8300-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/h8300.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ opintl.h
+h8500-dis.lo: h8500-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ h8500-opc.h $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
+hppa-dis.lo: hppa-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h
+i370-dis.lo: i370-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/i370.h
+i370-opc.lo: i370-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/i370.h
i386-dis.lo: i386-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
$(INCDIR)/ansidecl.h sysdep.h config.h opintl.h
-i960-dis.lo: i960-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h
-m32r-asm.lo: m32r-asm.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
- m32r-opc.h opintl.h
-m32r-desc.lo: m32r-desc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
- m32r-opc.h opintl.h
-m32r-dis.lo: m32r-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+i860-dis.lo: i860-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/ansidecl.h $(INCDIR)/opcode/i860.h
+i960-dis.lo: i960-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H)
+ia64-dis.lo: ia64-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/ansidecl.h $(INCDIR)/opcode/ia64.h
+ia64-opc-a.lo: ia64-opc-a.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-b.lo: ia64-opc-b.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-f.lo: ia64-opc-f.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-i.lo: ia64-opc-i.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-m.lo: ia64-opc-m.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-d.lo: ia64-opc-d.c
+ia64-opc.lo: ia64-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+ sysdep.h config.h ia64-asmtab.h $(INCDIR)/opcode/ia64.h \
+ ia64-asmtab.c
+ia64-gen.lo: ia64-gen.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+ sysdep.h config.h ia64-opc.h $(INCDIR)/opcode/ia64.h \
+ ia64-opc-a.c ia64-opc-i.c ia64-opc-m.c ia64-opc-b.c \
+ ia64-opc-f.c ia64-opc-x.c ia64-opc-d.c
+ia64-asmtab.lo: ia64-asmtab.c
+m32r-asm.lo: m32r-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h opintl.h
-m32r-ibld.lo: m32r-ibld.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+m32r-desc.lo: m32r-desc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h opintl.h
-m32r-opc.lo: m32r-opc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
+m32r-dis.lo: m32r-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h \
+ $(INCDIR)/opcode/cgen.h m32r-opc.h opintl.h
+m32r-ibld.lo: m32r-ibld.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h \
+ $(INCDIR)/opcode/cgen.h m32r-opc.h opintl.h
+m32r-opc.lo: m32r-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h
-m32r-opinst.lo: m32r-opinst.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
+m32r-opinst.lo: m32r-opinst.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h
-m68k-dis.lo: m68k-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/floatformat.h opintl.h \
+m68hc11-dis.lo: m68hc11-dis.c $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/m68hc11.h $(INCDIR)/dis-asm.h $(BFD_H)
+m68hc11-opc.lo: m68hc11-opc.c $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/m68hc11.h
+m68k-dis.lo: m68k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/floatformat.h \
+ opintl.h $(INCDIR)/opcode/m68k.h
+m68k-opc.lo: m68k-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/opcode/m68k.h
-m68k-opc.lo: m68k-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/m68k.h
-m88k-dis.lo: m88k-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/opcode/m88k.h opintl.h
-mcore-dis.lo: mcore-dis.c mcore-opc.h $(INCDIR)/ansidecl.h \
- $(INCDIR)/dis-asm.h $(BFD_H)
-mips-dis.lo: mips-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/opcode/mips.h opintl.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
-mips-opc.lo: mips-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mips.h
-mips16-opc.lo: mips16-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mips.h
-m10200-dis.lo: m10200-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10200.h \
- $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
-m10200-opc.lo: m10200-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10200.h
-m10300-dis.lo: m10300-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10300.h \
- $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
-m10300-opc.lo: m10300-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10300.h
+m88k-dis.lo: m88k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/m88k.h \
+ opintl.h
+mcore-dis.lo: mcore-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ mcore-opc.h $(INCDIR)/dis-asm.h $(BFD_H)
+mips-dis.lo: mips-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/mips.h \
+ opintl.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
+mips-opc.lo: mips-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mips.h
+mips16-opc.lo: mips16-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mips.h
+m10200-dis.lo: m10200-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10200.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ opintl.h
+m10200-opc.lo: m10200-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10200.h
+m10300-dis.lo: m10300-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10300.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ opintl.h
+m10300-opc.lo: m10300-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10300.h
ns32k-dis.lo: ns32k-dis.c $(BFD_H) $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/dis-asm.h $(INCDIR)/opcode/ns32k.h \
opintl.h
-pj-dis.lo: pj-dis.c $(INCDIR)/opcode/pj.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h
-pj-opc.lo: pj-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/pj.h
-ppc-dis.lo: ppc-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/ppc.h
-ppc-opc.lo: ppc-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/ppc.h \
- opintl.h
-sh-dis.lo: sh-dis.c sh-opc.h $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h
-sparc-dis.lo: sparc-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/opcode/sparc.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/libiberty.h opintl.h
-sparc-opc.lo: sparc-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/sparc.h
-tic30-dis.lo: tic30-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/opcode/tic30.h
-tic80-dis.lo: tic80-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/tic80.h \
- $(INCDIR)/dis-asm.h $(BFD_H)
-tic80-opc.lo: tic80-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/tic80.h
-v850-dis.lo: v850-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/v850.h \
- $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
-v850-opc.lo: v850-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/v850.h \
+pj-dis.lo: pj-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/pj.h $(INCDIR)/dis-asm.h $(BFD_H)
+pj-opc.lo: pj-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/pj.h
+ppc-dis.lo: ppc-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/ppc.h
+ppc-opc.lo: ppc-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/ppc.h opintl.h
+sh-dis.lo: sh-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ sh-opc.h $(INCDIR)/dis-asm.h $(BFD_H)
+sparc-dis.lo: sparc-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/sparc.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/libiberty.h opintl.h
+sparc-opc.lo: sparc-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/sparc.h
+tic30-dis.lo: tic30-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/tic30.h
+tic54x-dis.lo: tic54x-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/tic54x.h \
+ $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h
+tic54x-opc.lo: tic54x-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/tic54x.h
+tic80-dis.lo: tic80-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/tic80.h $(INCDIR)/dis-asm.h $(BFD_H)
+tic80-opc.lo: tic80-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/tic80.h
+v850-dis.lo: v850-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/v850.h $(INCDIR)/dis-asm.h $(BFD_H) \
opintl.h
-vax-dis.lo: vax-dis.c $(INCDIR)/opcode/vax.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h
-w65-dis.lo: w65-dis.c w65-opc.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h
-z8k-dis.lo: z8k-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) z8k-opc.h
-z8kgen.lo: z8kgen.c sysdep.h config.h
+v850-opc.lo: v850-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/v850.h opintl.h
+vax-dis.lo: vax-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/vax.h $(INCDIR)/dis-asm.h $(BFD_H)
+w65-dis.lo: w65-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ w65-opc.h $(INCDIR)/dis-asm.h $(BFD_H)
+z8k-dis.lo: z8k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) z8k-opc.h
+z8kgen.lo: z8kgen.c sysdep.h config.h $(INCDIR)/ansidecl.h
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
diff --git a/contrib/binutils/opcodes/Makefile.in b/contrib/binutils/opcodes/Makefile.in
index 0cf1c27..e406027 100644
--- a/contrib/binutils/opcodes/Makefile.in
+++ b/contrib/binutils/opcodes/Makefile.in
@@ -70,10 +70,14 @@ CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CC_FOR_BUILD = @CC_FOR_BUILD@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
DATADIRNAME = @DATADIRNAME@
DLLTOOL = @DLLTOOL@
EXEEXT = @EXEEXT@
EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
+GCJ = @GCJ@
+GCJFLAGS = @GCJFLAGS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GT_NO = @GT_NO@
@@ -91,16 +95,19 @@ MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
POFILES = @POFILES@
POSUB = @POSUB@
RANLIB = @RANLIB@
+STRIP = @STRIP@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
WIN32LDFLAGS = @WIN32LDFLAGS@
WIN32LIBADD = @WIN32LIBADD@
archdefs = @archdefs@
+cgendir = @cgendir@
l = @l@
AUTOMAKE_OPTIONS = cygnus
@@ -111,11 +118,17 @@ INCDIR = $(srcdir)/../include
BFDDIR = $(srcdir)/../bfd
MKDEP = gcc -MM
+WARN_CFLAGS = @WARN_CFLAGS@
+AM_CFLAGS = $(WARN_CFLAGS)
+
lib_LTLIBRARIES = libopcodes.la
# This is where bfd.h lives.
BFD_H = ../bfd/bfd.h
+# This is where libiberty lives.
+LIBIBERTY = ../libiberty/libiberty.a
+
# Header files.
HFILES = \
arm-opc.h \
@@ -125,6 +138,8 @@ HFILES = \
mcore-opc.h \
sh-opc.h \
sysdep.h \
+ ia64-asmtab.h \
+ ia64-opc.h \
w65-opc.h \
z8k-opc.h
@@ -136,11 +151,14 @@ CFILES = \
alpha-opc.c \
arc-dis.c \
arc-opc.c \
+ arc-ext.c \
arm-dis.c \
avr-dis.c \
cgen-asm.c \
cgen-dis.c \
cgen-opc.c \
+ cris-dis.c \
+ cris-opc.c \
d10v-dis.c \
d10v-opc.c \
d30v-dis.c \
@@ -158,13 +176,26 @@ CFILES = \
i370-dis.c \
i370-opc.c \
i386-dis.c \
+ i860-dis.c \
i960-dis.c \
+ ia64-dis.c \
+ ia64-opc-a.c \
+ ia64-opc-b.c \
+ ia64-opc-f.c \
+ ia64-opc-i.c \
+ ia64-opc-m.c \
+ ia64-opc-d.c \
+ ia64-opc.c \
+ ia64-gen.c \
+ ia64-asmtab.c \
m32r-asm.c \
m32r-desc.c \
m32r-dis.c \
m32r-ibld.c \
m32r-opc.c \
m32r-opinst.c \
+ m68hc11-dis.c \
+ m68hc11-opc.c \
m68k-dis.c \
m68k-opc.c \
m88k-dis.c \
@@ -185,6 +216,8 @@ CFILES = \
sparc-dis.c \
sparc-opc.c \
tic30-dis.c \
+ tic54x-dis.c \
+ tic54x-opc.c \
tic80-dis.c \
tic80-opc.c \
v850-dis.c \
@@ -201,11 +234,14 @@ ALL_MACHINES = \
alpha-opc.lo \
arc-dis.lo \
arc-opc.lo \
+ arc-ext.lo \
arm-dis.lo \
avr-dis.lo \
cgen-asm.lo \
cgen-dis.lo \
cgen-opc.lo \
+ cris-dis.lo \
+ cris-opc.lo \
d10v-dis.lo \
d10v-opc.lo \
d30v-dis.lo \
@@ -221,13 +257,18 @@ ALL_MACHINES = \
i386-dis.lo \
i370-dis.lo \
i370-opc.lo \
+ i860-dis.lo \
i960-dis.lo \
+ ia64-dis.lo \
+ ia64-opc.lo \
m32r-asm.lo \
m32r-desc.lo \
m32r-dis.lo \
m32r-ibld.lo \
m32r-opc.lo \
m32r-opinst.lo \
+ m68hc11-dis.lo \
+ m68hc11-opc.lo \
m68k-dis.lo \
m68k-opc.lo \
m88k-dis.lo \
@@ -248,6 +289,8 @@ ALL_MACHINES = \
sparc-dis.lo \
sparc-opc.lo \
tic30-dis.lo \
+ tic54x-dis.lo \
+ tic54x-opc.lo \
tic80-dis.lo \
tic80-opc.lo \
v850-dis.lo \
@@ -276,8 +319,25 @@ noinst_LIBRARIES = libopcodes.a
POTFILES = $(HFILES) $(CFILES)
CLEANFILES = \
- libopcodes.a stamp-lib dep.sed DEP DEP1 DEP2
+ stamp-m32r stamp-fr30 \
+ libopcodes.a stamp-lib dep.sed DEP DEPA DEP1 DEP2
+
+
+CGENDIR = @cgendir@
+CGEN = `if test -f ../guile/libguile/guile ; then echo ../guile/libguile/guile; else echo guile ; fi`
+CGENFLAGS = -v
+CGENDEPS = ../cgen/stamp-cgen \
+ $(CGENDIR)/desc.scm $(CGENDIR)/desc-cpu.scm \
+ $(CGENDIR)/opcodes.scm $(CGENDIR)/opc-asmdis.scm \
+ $(CGENDIR)/opc-ibld.scm $(CGENDIR)/opc-itab.scm \
+ $(CGENDIR)/opc-opinst.scm \
+ cgen-asm.in cgen-dis.in cgen-ibld.in
+
+@CGEN_MAINT_TRUE@M32R_DEPS = @CGEN_MAINT_TRUE@stamp-m32r
+@CGEN_MAINT_FALSE@M32R_DEPS =
+@CGEN_MAINT_TRUE@FR30_DEPS = @CGEN_MAINT_TRUE@stamp-fr30
+@CGEN_MAINT_FALSE@FR30_DEPS =
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
CONFIG_HEADER = config.h
@@ -291,7 +351,7 @@ LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
libopcodes_a_LIBADD =
libopcodes_a_SOURCES = libopcodes.a.c
-libopcodes_a_OBJECTS = libopcodes.a.o
+libopcodes_a_OBJECTS = libopcodes.a.$(OBJEXT)
LTLIBRARIES = $(lib_LTLIBRARIES)
libopcodes_la_OBJECTS = dis-buf.lo disassemble.lo
@@ -306,14 +366,14 @@ acinclude.m4 aclocal.m4 config.in configure configure.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = tar
+TAR = gtar
GZIP_ENV = --best
SOURCES = libopcodes.a.c $(libopcodes_la_SOURCES)
-OBJECTS = libopcodes.a.o $(libopcodes_la_OBJECTS)
+OBJECTS = libopcodes.a.$(OBJEXT) $(libopcodes_la_OBJECTS)
all: all-redirect
.SUFFIXES:
-.SUFFIXES: .S .c .lo .o .s
+.SUFFIXES: .S .c .lo .o .obj .s
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile
@@ -366,6 +426,11 @@ maintainer-clean-noinstLIBRARIES:
.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 $<
@@ -374,6 +439,7 @@ maintainer-clean-noinstLIBRARIES:
mostlyclean-compile:
-rm -f *.o core *.core
+ -rm -f *.$(OBJEXT)
clean-compile:
@@ -695,15 +761,54 @@ po/POTFILES.in: @MAINT@ Makefile
config.status: $(srcdir)/configure $(srcdir)/../bfd/configure.in
$(SHELL) ./config.status --recheck
-# The start marker is written this way to pass through automake unscathed.
+run-cgen:
+ $(SHELL) $(srcdir)/cgen.sh opcodes $(srcdir) $(CGEN) \
+ $(CGENDIR) "$(CGENFLAGS)" $(arch) $(prefix) \
+ "$(options)" $(extrafiles)
+ touch stamp-${prefix}
+.PHONY: run-cgen
+
+# For now, require developers to configure with --enable-cgen-maint.
+$(srcdir)/m32r-desc.h $(srcdir)/m32r-desc.c $(srcdir)/m32r-opc.h $(srcdir)/m32r-opc.c $(srcdir)/m32r-ibld.c $(srcdir)/m32r-opinst.c $(srcdir)/m32r-asm.c $(srcdir)/m32r-dis.c: $(M32R_DEPS)
+ @true
+stamp-m32r: $(CGENDEPS) $(CGENDIR)/m32r.cpu $(CGENDIR)/m32r.opc
+ $(MAKE) run-cgen arch=m32r prefix=m32r options=opinst extrafiles=opinst
+
+$(srcdir)/fr30-desc.h $(srcdir)/fr30-desc.c $(srcdir)/fr30-opc.h $(srcdir)/fr30-opc.c $(srcdir)/fr30-ibld.c $(srcdir)/fr30-asm.c $(srcdir)/fr30-dis.c: $(FR30_DEPS)
+ @true
+stamp-fr30: $(CGENDEPS) $(CGENDIR)/fr30.cpu $(CGENDIR)/fr30.opc
+ $(MAKE) run-cgen arch=fr30 prefix=fr30 options= extrafiles=
+
+ia64-ic.tbl: $(srcdir)/ia64-ic.tbl
+ $(LN_S) -f $(srcdir)/ia64-ic.tbl
+ia64-raw.tbl: $(srcdir)/ia64-raw.tbl
+ $(LN_S) -f $(srcdir)/ia64-raw.tbl
+ia64-waw.tbl: $(srcdir)/ia64-waw.tbl
+ $(LN_S) -f $(srcdir)/ia64-waw.tbl
+ia64-war.tbl: $(srcdir)/ia64-war.tbl
+ $(LN_S) -f $(srcdir)/ia64-war.tbl
+
+ia64-gen: ia64-gen.o
+ $(LINK) ia64-gen.o $(LIBIBERTY)
+
+ia64-gen.o: ia64-gen.c ia64-opc.c ia64-opc-a.c ia64-opc-b.c ia64-opc-f.c \
+ ia64-opc-i.c ia64-opc-m.c ia64-opc-d.c ia64-opc.h
+
+ia64-asmtab.c: @MAINT@ ia64-gen ia64-ic.tbl ia64-raw.tbl ia64-waw.tbl ia64-war.tbl
+ ./ia64-gen > $(srcdir)/ia64-asmtab.c
# This dependency stuff is copied from BFD.
DEP: dep.sed $(CFILES) $(HFILES) config.h
rm -f DEP1
$(MAKE) MKDEP="$(MKDEP)" DEP1
- sed -f dep.sed < DEP1 > $@
- echo '# IF YOU PUT ANYTHING HERE IT WILL GO AWAY' >> $@
+ 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)
echo '# DO NOT DELETE THIS LINE -- mkdep uses it.' > DEP2
@@ -739,141 +844,191 @@ dep-am: DEP
# DO NOT DELETE THIS LINE -- mkdep uses it.
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
-a29k-dis.lo: a29k-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/opcode/a29k.h
-alpha-dis.lo: alpha-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/alpha.h
-alpha-opc.lo: alpha-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/alpha.h \
- $(BFD_H) opintl.h
-arc-dis.lo: arc-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/opcode/arc.h $(BFDDIR)/elf-bfd.h \
+a29k-dis.lo: a29k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/a29k.h
+alpha-dis.lo: alpha-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/alpha.h
+alpha-opc.lo: alpha-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/alpha.h $(BFD_H) opintl.h
+arc-dis.lo: arc-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/arc.h \
+ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
+ $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h \
+ $(INCDIR)/elf/reloc-macros.h opintl.h arc-dis.h arc-ext.h
+arc-opc.lo: arc-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/arc.h opintl.h
+arc-ext.lo: $(BFD_H) $(INCDIR)/libiberty.h arc-ext.h
+arm-dis.lo: arm-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) arm-opc.h $(INCDIR)/coff/internal.h \
+ $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h opintl.h $(BFDDIR)/elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
- $(INCDIR)/bfdlink.h $(INCDIR)/elf/arc.h $(INCDIR)/elf/reloc-macros.h \
- opintl.h
-arc-opc.lo: arc-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/arc.h \
+ $(INCDIR)/elf/arm.h $(INCDIR)/elf/reloc-macros.h
+avr-dis.lo: avr-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) opintl.h $(INCDIR)/opcode/avr.h
+cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h \
opintl.h
-arm-dis.lo: arm-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) arm-opc.h $(INCDIR)/coff/internal.h $(BFDDIR)/libcoff.h \
- $(INCDIR)/bfdlink.h opintl.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \
- $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/elf/arm.h \
- $(INCDIR)/elf/reloc-macros.h
-avr-dis.lo: avr-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h opintl.h
-cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/libiberty.h \
- $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h \
+cgen-dis.lo: cgen-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
+cgen-opc.lo: cgen-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
+cris-dis.lo: cris-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/ansidecl.h sysdep.h config.h $(INCDIR)/opcode/cris.h \
+ $(INCDIR)/libiberty.h
+cris-opc.lo: cris-opc.c $(INCDIR)/opcode/cris.h
+d10v-dis.lo: d10v-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d10v.h $(INCDIR)/dis-asm.h $(BFD_H)
+d10v-opc.lo: d10v-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d10v.h
+d30v-dis.lo: d30v-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d30v.h $(INCDIR)/dis-asm.h $(BFD_H) \
opintl.h
-cgen-dis.lo: cgen-dis.c sysdep.h config.h $(INCDIR)/libiberty.h \
- $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
-cgen-opc.lo: cgen-opc.c sysdep.h config.h $(INCDIR)/libiberty.h \
- $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/cgen.h
-d10v-dis.lo: d10v-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/d10v.h \
- $(INCDIR)/dis-asm.h $(BFD_H)
-d10v-opc.lo: d10v-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/d10v.h
-d30v-dis.lo: d30v-dis.c $(INCDIR)/opcode/d30v.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h opintl.h
-d30v-opc.lo: d30v-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/d30v.h
-dis-buf.lo: dis-buf.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) opintl.h
-disassemble.lo: disassemble.c $(INCDIR)/ansidecl.h \
+d30v-opc.lo: d30v-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/d30v.h
+dis-buf.lo: dis-buf.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
+disassemble.lo: disassemble.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/dis-asm.h $(BFD_H)
-fr30-asm.lo: fr30-asm.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
- fr30-opc.h opintl.h
-fr30-desc.lo: fr30-desc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
- fr30-opc.h opintl.h
-fr30-dis.lo: fr30-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+fr30-asm.lo: fr30-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
fr30-opc.h opintl.h
-fr30-ibld.lo: fr30-ibld.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+fr30-desc.lo: fr30-desc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
fr30-opc.h opintl.h
-fr30-opc.lo: fr30-opc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
+fr30-dis.lo: fr30-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h fr30-desc.h \
+ $(INCDIR)/opcode/cgen.h fr30-opc.h opintl.h
+fr30-ibld.lo: fr30-ibld.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h fr30-desc.h \
+ $(INCDIR)/opcode/cgen.h fr30-opc.h opintl.h
+fr30-opc.lo: fr30-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(BFD_H) $(INCDIR)/symcat.h fr30-desc.h $(INCDIR)/opcode/cgen.h \
fr30-opc.h
-h8300-dis.lo: h8300-dis.c $(INCDIR)/opcode/h8300.h \
- $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h opintl.h
-h8500-dis.lo: h8500-dis.c h8500-opc.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h opintl.h
-hppa-dis.lo: hppa-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h
-i370-dis.lo: i370-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/i370.h
-i370-opc.lo: i370-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/i370.h
+h8300-dis.lo: h8300-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/h8300.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ opintl.h
+h8500-dis.lo: h8500-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ h8500-opc.h $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
+hppa-dis.lo: hppa-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(BFDDIR)/libhppa.h $(INCDIR)/opcode/hppa.h
+i370-dis.lo: i370-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/i370.h
+i370-opc.lo: i370-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/i370.h
i386-dis.lo: i386-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
$(INCDIR)/ansidecl.h sysdep.h config.h opintl.h
-i960-dis.lo: i960-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h
-m32r-asm.lo: m32r-asm.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
- m32r-opc.h opintl.h
-m32r-desc.lo: m32r-desc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
- m32r-opc.h opintl.h
-m32r-dis.lo: m32r-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+i860-dis.lo: i860-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/ansidecl.h $(INCDIR)/opcode/i860.h
+i960-dis.lo: i960-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H)
+ia64-dis.lo: ia64-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/ansidecl.h $(INCDIR)/opcode/ia64.h
+ia64-opc-a.lo: ia64-opc-a.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-b.lo: ia64-opc-b.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-f.lo: ia64-opc-f.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-i.lo: ia64-opc-i.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-m.lo: ia64-opc-m.c ia64-opc.h $(INCDIR)/opcode/ia64.h
+ia64-opc-d.lo: ia64-opc-d.c
+ia64-opc.lo: ia64-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+ sysdep.h config.h ia64-asmtab.h $(INCDIR)/opcode/ia64.h \
+ ia64-asmtab.c
+ia64-gen.lo: ia64-gen.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+ sysdep.h config.h ia64-opc.h $(INCDIR)/opcode/ia64.h \
+ ia64-opc-a.c ia64-opc-i.c ia64-opc-m.c ia64-opc-b.c \
+ ia64-opc-f.c ia64-opc-x.c ia64-opc-d.c
+ia64-asmtab.lo: ia64-asmtab.c
+m32r-asm.lo: m32r-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h opintl.h
-m32r-ibld.lo: m32r-ibld.c sysdep.h config.h $(INCDIR)/dis-asm.h \
+m32r-desc.lo: m32r-desc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h opintl.h
-m32r-opc.lo: m32r-opc.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
+m32r-dis.lo: m32r-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h \
+ $(INCDIR)/opcode/cgen.h m32r-opc.h opintl.h
+m32r-ibld.lo: m32r-ibld.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h \
+ $(INCDIR)/opcode/cgen.h m32r-opc.h opintl.h
+m32r-opc.lo: m32r-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h
-m32r-opinst.lo: m32r-opinst.c sysdep.h config.h $(BFD_H) \
- $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
+m32r-opinst.lo: m32r-opinst.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(BFD_H) $(INCDIR)/symcat.h m32r-desc.h $(INCDIR)/opcode/cgen.h \
m32r-opc.h
-m68k-dis.lo: m68k-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/floatformat.h opintl.h \
+m68hc11-dis.lo: m68hc11-dis.c $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/m68hc11.h $(INCDIR)/dis-asm.h $(BFD_H)
+m68hc11-opc.lo: m68hc11-opc.c $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/m68hc11.h
+m68k-dis.lo: m68k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/floatformat.h \
+ opintl.h $(INCDIR)/opcode/m68k.h
+m68k-opc.lo: m68k-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/opcode/m68k.h
-m68k-opc.lo: m68k-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/m68k.h
-m88k-dis.lo: m88k-dis.c $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h $(INCDIR)/opcode/m88k.h opintl.h
-mcore-dis.lo: mcore-dis.c mcore-opc.h $(INCDIR)/ansidecl.h \
- $(INCDIR)/dis-asm.h $(BFD_H)
-mips-dis.lo: mips-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/opcode/mips.h opintl.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
-mips-opc.lo: mips-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mips.h
-mips16-opc.lo: mips16-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mips.h
-m10200-dis.lo: m10200-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10200.h \
- $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
-m10200-opc.lo: m10200-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10200.h
-m10300-dis.lo: m10300-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10300.h \
- $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
-m10300-opc.lo: m10300-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/mn10300.h
+m88k-dis.lo: m88k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/m88k.h \
+ opintl.h
+mcore-dis.lo: mcore-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ mcore-opc.h $(INCDIR)/dis-asm.h $(BFD_H)
+mips-dis.lo: mips-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/mips.h \
+ opintl.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
+mips-opc.lo: mips-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mips.h
+mips16-opc.lo: mips16-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mips.h
+m10200-dis.lo: m10200-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10200.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ opintl.h
+m10200-opc.lo: m10200-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10200.h
+m10300-dis.lo: m10300-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10300.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ opintl.h
+m10300-opc.lo: m10300-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/mn10300.h
ns32k-dis.lo: ns32k-dis.c $(BFD_H) $(INCDIR)/ansidecl.h \
sysdep.h config.h $(INCDIR)/dis-asm.h $(INCDIR)/opcode/ns32k.h \
opintl.h
-pj-dis.lo: pj-dis.c $(INCDIR)/opcode/pj.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h
-pj-opc.lo: pj-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/pj.h
-ppc-dis.lo: ppc-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/ppc.h
-ppc-opc.lo: ppc-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/ppc.h \
- opintl.h
-sh-dis.lo: sh-dis.c sh-opc.h $(INCDIR)/dis-asm.h $(BFD_H) \
- $(INCDIR)/ansidecl.h
-sparc-dis.lo: sparc-dis.c $(INCDIR)/ansidecl.h sysdep.h \
- config.h $(INCDIR)/opcode/sparc.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/libiberty.h opintl.h
-sparc-opc.lo: sparc-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/sparc.h
-tic30-dis.lo: tic30-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/opcode/tic30.h
-tic80-dis.lo: tic80-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/tic80.h \
- $(INCDIR)/dis-asm.h $(BFD_H)
-tic80-opc.lo: tic80-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/tic80.h
-v850-dis.lo: v850-dis.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/v850.h \
- $(INCDIR)/dis-asm.h $(BFD_H) opintl.h
-v850-opc.lo: v850-opc.c $(INCDIR)/ansidecl.h $(INCDIR)/opcode/v850.h \
+pj-dis.lo: pj-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/pj.h $(INCDIR)/dis-asm.h $(BFD_H)
+pj-opc.lo: pj-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/pj.h
+ppc-dis.lo: ppc-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/ppc.h
+ppc-opc.lo: ppc-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/ppc.h opintl.h
+sh-dis.lo: sh-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ sh-opc.h $(INCDIR)/dis-asm.h $(BFD_H)
+sparc-dis.lo: sparc-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/sparc.h $(INCDIR)/dis-asm.h $(BFD_H) \
+ $(INCDIR)/libiberty.h opintl.h
+sparc-opc.lo: sparc-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/sparc.h
+tic30-dis.lo: tic30-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/tic30.h
+tic54x-dis.lo: tic54x-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/opcode/tic54x.h \
+ $(INCDIR)/coff/tic54x.h $(INCDIR)/coff/ti.h
+tic54x-opc.lo: tic54x-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/tic54x.h
+tic80-dis.lo: tic80-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/tic80.h $(INCDIR)/dis-asm.h $(BFD_H)
+tic80-opc.lo: tic80-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/tic80.h
+v850-dis.lo: v850-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/v850.h $(INCDIR)/dis-asm.h $(BFD_H) \
opintl.h
-vax-dis.lo: vax-dis.c $(INCDIR)/opcode/vax.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h
-w65-dis.lo: w65-dis.c w65-opc.h $(INCDIR)/dis-asm.h \
- $(BFD_H) $(INCDIR)/ansidecl.h
-z8k-dis.lo: z8k-dis.c sysdep.h config.h $(INCDIR)/dis-asm.h \
- $(BFD_H) z8k-opc.h
-z8kgen.lo: z8kgen.c sysdep.h config.h
+v850-opc.lo: v850-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/v850.h opintl.h
+vax-dis.lo: vax-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/opcode/vax.h $(INCDIR)/dis-asm.h $(BFD_H)
+w65-dis.lo: w65-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ w65-opc.h $(INCDIR)/dis-asm.h $(BFD_H)
+z8k-dis.lo: z8k-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dis-asm.h $(BFD_H) z8k-opc.h
+z8kgen.lo: z8kgen.c sysdep.h config.h $(INCDIR)/ansidecl.h
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
# Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/contrib/binutils/opcodes/acinclude.m4 b/contrib/binutils/opcodes/acinclude.m4
index 71b09b9..bb689a5 100644
--- a/contrib/binutils/opcodes/acinclude.m4
+++ b/contrib/binutils/opcodes/acinclude.m4
@@ -1 +1,17 @@
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_DEFUN([AM_DISABLE_SHARED],)
+AC_SUBST(LIBTOOL)
+])
+
+dnl sinclude(../gettext.m4) already included in bfd/acinclude.m4
+ifelse(yes,no,[
+AC_DEFUN([CY_WITH_NLS],)
+AC_SUBST(INTLLIBS)
+])
diff --git a/contrib/binutils/opcodes/aclocal.m4 b/contrib/binutils/opcodes/aclocal.m4
index 7ba1f4e..2a4c03d 100644
--- a/contrib/binutils/opcodes/aclocal.m4
+++ b/contrib/binutils/opcodes/aclocal.m4
@@ -12,6 +12,40 @@ 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_DEFUN([AM_DISABLE_SHARED],)
+AC_SUBST(LIBTOOL)
+])
+
+dnl sinclude(../gettext.m4) already included in bfd/acinclude.m4
+ifelse(yes,no,[
+AC_DEFUN([CY_WITH_NLS],)
+AC_SUBST(INTLLIBS)
+])
+
+#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.
@@ -104,415 +138,6 @@ else
fi
AC_SUBST($1)])
-
-# serial 40 AC_PROG_LIBTOOL
-AC_DEFUN(AC_PROG_LIBTOOL,
-[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
-
-# Save cache, so that ltconfig can load it
-AC_CACHE_SAVE
-
-# Actually configure libtool. ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
-${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
-$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $lt_target \
-|| AC_MSG_ERROR([libtool configure failed])
-
-# Reload cache, that may have been modified by ltconfig
-AC_CACHE_LOAD
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-# Redirect the config.log output again, so that the ltconfig log is not
-# clobbered by the next message.
-exec 5>>./config.log
-])
-
-AC_DEFUN(AC_LIBTOOL_SETUP,
-[AC_PREREQ(2.13)dnl
-AC_REQUIRE([AC_ENABLE_SHARED])dnl
-AC_REQUIRE([AC_ENABLE_STATIC])dnl
-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([AC_PROG_RANLIB])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_LD])dnl
-AC_REQUIRE([AC_PROG_NM])dnl
-AC_REQUIRE([AC_PROG_LN_S])dnl
-dnl
-
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
-esac
-
-# 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 "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
-test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
-ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
-[libtool_flags="$libtool_flags --enable-dlopen"])
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[libtool_flags="$libtool_flags --enable-win32-dll"])
-AC_ARG_ENABLE(libtool-lock,
- [ --disable-libtool-lock avoid locking (might break parallel builds)])
-test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
-test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case "$lt_target" in
-*-*-irix6*)
- # Find out which ABI we are using.
- echo '[#]line __oline__ "configure"' > conftest.$ac_ext
- if AC_TRY_EVAL(ac_compile); then
- case "`/usr/bin/file conftest.o`" in
- *32-bit*)
- LD="${LD-ld} -32"
- ;;
- *N32*)
- LD="${LD-ld} -n32"
- ;;
- *64-bit*)
- LD="${LD-ld} -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"
- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
- [AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])])
- 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
- ;;
-
-ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
-[*-*-cygwin* | *-*-mingw*)
- AC_CHECK_TOOL(DLLTOOL, dlltool, false)
- AC_CHECK_TOOL(AS, as, false)
- AC_CHECK_TOOL(OBJDUMP, objdump, false)
- ;;
-])
-esac
-])
-
-# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
-AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
-
-# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
-AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
-
-# AC_ENABLE_SHARED - implement the --enable-shared flag
-# Usage: AC_ENABLE_SHARED[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_SHARED, [dnl
-define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(shared,
-changequote(<<, >>)dnl
-<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
-])
-
-# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
-AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_SHARED(no)])
-
-# AC_ENABLE_STATIC - implement the --enable-static flag
-# Usage: AC_ENABLE_STATIC[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_STATIC, [dnl
-define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(static,
-changequote(<<, >>)dnl
-<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
-])
-
-# AC_DISABLE_STATIC - set the default static flag to --disable-static
-AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_STATIC(no)])
-
-
-# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
-# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
-# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
-# `yes'.
-AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
-define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
-AC_ARG_ENABLE(fast-install,
-changequote(<<, >>)dnl
-<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
-changequote([, ])dnl
-[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],
-enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
-])
-
-# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
-AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-AC_ENABLE_FAST_INSTALL(no)])
-
-# AC_PROG_LD - find the path to the GNU or non-GNU linker
-AC_DEFUN(AC_PROG_LD,
-[AC_ARG_WITH(gnu-ld,
-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-ac_prog=ld
-if test "$ac_cv_prog_gcc" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by GCC])
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
- case "$ac_prog" in
- # Accept absolute paths.
-changequote(,)dnl
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
-changequote([,])dnl
- # 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
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(ac_cv_path_LD,
-[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
- ac_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 "$ac_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
- ac_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$ac_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT($LD)
-else
- AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_PROG_LD_GNU
-])
-
-AC_DEFUN(AC_PROG_LD_GNU,
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- ac_cv_prog_gnu_ld=yes
-else
- ac_cv_prog_gnu_ld=no
-fi])
-])
-
-# AC_PROG_NM - find the path to a BSD-compatible name lister
-AC_DEFUN(AC_PROG_NM,
-[AC_MSG_CHECKING([for BSD-compatible nm])
-AC_CACHE_VAL(ac_cv_path_NM,
-[if test -n "$NM"; then
- # Let the user override the test.
- ac_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=.
- if test -f $ac_dir/nm || test -f $ac_dir/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
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -B"
- break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -p"
- break
- else
- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/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 "$ac_cv_path_NM" && ac_cv_path_NM=nm
-fi])
-NM="$ac_cv_path_NM"
-AC_MSG_RESULT([$NM])
-])
-
-# AC_CHECK_LIBM - check for math library
-AC_DEFUN(AC_CHECK_LIBM,
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-LIBM=
-case "$lt_target" in
-*-*-beos* | *-*-cygwin*)
- # These system don't have libm
- ;;
-*-ncr-sysv4.3*)
- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
- AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
- ;;
-*)
- AC_CHECK_LIB(m, main, LIBM="-lm")
- ;;
-esac
-])
-
-# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl convenience library, adds --enable-ltdl-convenience to
-# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
-# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
-# to be `${top_builddir}/libltdl'. Make sure you start DIR with
-# '${top_builddir}/' (note the single quotes!) if your package is not
-# flat, and, if you're not using automake, define top_builddir as
-# appropriate in the Makefiles.
-AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- case "$enable_ltdl_convenience" in
- no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
- "") enable_ltdl_convenience=yes
- ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
- esac
- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
-])
-
-# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
-# the libltdl installable library, and adds --enable-ltdl-install to
-# the configure arguments. Note that LIBLTDL is not AC_SUBSTed, nor
-# is AC_CONFIG_SUBDIRS called. If DIR is not provided, it is assumed
-# to be `${top_builddir}/libltdl'. Make sure you start DIR with
-# '${top_builddir}/' (note the single quotes!) if your package is not
-# flat, and, if you're not using automake, define top_builddir as
-# appropriate in the Makefiles.
-# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
-AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
- AC_CHECK_LIB(ltdl, main,
- [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
- [if test x"$enable_ltdl_install" = xno; then
- AC_MSG_WARN([libltdl not installed, but installation disabled])
- else
- enable_ltdl_install=yes
- fi
- ])
- if test x"$enable_ltdl_install" = x"yes"; then
- ac_configure_args="$ac_configure_args --enable-ltdl-install"
- LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
- INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
- else
- ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
- LIBLTDL="-lltdl"
- INCLTDL=
- fi
-])
-
-dnl old names
-AC_DEFUN(AM_PROG_LIBTOOL, [indir([AC_PROG_LIBTOOL])])dnl
-AC_DEFUN(AM_ENABLE_SHARED, [indir([AC_ENABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_ENABLE_STATIC, [indir([AC_ENABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
-AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
-AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
-AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
-
-dnl This is just to silence aclocal about the macro not being used
-ifelse([AC_DISABLE_FAST_INSTALL])dnl
-
# Like AC_CONFIG_HEADER, but automatically create stamp file.
AC_DEFUN(AM_CONFIG_HEADER,
@@ -569,348 +194,3 @@ else
$1_FALSE=
fi])
-# This file is derived from `gettext.m4'. The difference is that the
-# included macros assume Cygnus-style source and build trees.
-
-# Macro to add for using GNU gettext.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
-#
-# 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.
-
-# serial 3
-
-AC_DEFUN(CY_WITH_NLS,
- [AC_MSG_CHECKING([whether NLS is requested])
- dnl Default is enabled NLS
- AC_ARG_ENABLE(nls,
- [ --disable-nls do not use Native Language Support],
- USE_NLS=$enableval, USE_NLS=yes)
- AC_MSG_RESULT($USE_NLS)
- AC_SUBST(USE_NLS)
-
- USE_INCLUDED_LIBINTL=no
-
- dnl If we use NLS figure out what method
- if test "$USE_NLS" = "yes"; then
- AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if NLS is requested])
- AC_MSG_CHECKING([whether included gettext is requested])
- AC_ARG_WITH(included-gettext,
- [ --with-included-gettext use the GNU gettext library included here],
- nls_cv_force_use_gnu_gettext=$withval,
- nls_cv_force_use_gnu_gettext=no)
- AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
-
- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
- dnl User does not insist on using GNU NLS library. Figure out what
- dnl to use. If gettext or catgets are available (in this order) we
- dnl use this. Else we have to fall back to GNU NLS library.
- dnl catgets is only used if permitted by option --with-catgets.
- nls_cv_header_intl=
- nls_cv_header_libgt=
- CATOBJEXT=NONE
-
- AC_CHECK_HEADER(libintl.h,
- [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
- [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
- gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
-
- if test "$gt_cv_func_gettext_libc" != "yes"; then
- AC_CHECK_LIB(intl, bindtextdomain,
- [AC_CACHE_CHECK([for gettext in libintl],
- gt_cv_func_gettext_libintl,
- [AC_TRY_LINK([], [return (int) gettext ("")],
- gt_cv_func_gettext_libintl=yes,
- gt_cv_func_gettext_libintl=no)])])
- fi
-
- if test "$gt_cv_func_gettext_libc" = "yes" \
- || test "$gt_cv_func_gettext_libintl" = "yes"; then
- AC_DEFINE(HAVE_GETTEXT, 1,
- [Define as 1 if you have gettext and don't want to use GNU gettext.])
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
- if test "$MSGFMT" != "no"; then
- AC_CHECK_FUNCS(dcgettext)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
- AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
- return _nl_msg_cat_cntr],
- [CATOBJEXT=.gmo
- DATADIRNAME=share],
- [CATOBJEXT=.mo
- DATADIRNAME=lib])
- INSTOBJEXT=.mo
- fi
- fi
- ])
-
- dnl In the standard gettext, we would now check for catgets.
- dnl However, we never want to use catgets for our releases.
-
- if test "$CATOBJEXT" = "NONE"; then
- dnl Neither gettext nor catgets in included in the C library.
- dnl Fall back on GNU gettext library.
- nls_cv_use_gnu_gettext=yes
- fi
- fi
-
- if test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Mark actions used to generate GNU NLS library.
- INTLOBJS="\$(GETTOBJS)"
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
- AC_SUBST(MSGFMT)
- 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
-
- dnl Test whether we really found GNU xgettext.
- if test "$XGETTEXT" != ":"; then
- dnl If it is no GNU xgettext we define it as : so that the
- dnl Makefiles still can work.
- if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
- : ;
- else
- AC_MSG_RESULT(
- [found xgettext programs is not GNU xgettext; ignore it])
- 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
-
- dnl These rules are solely for the distribution goal. While doing this
- dnl we only have to keep exactly one list of the available catalogs
- dnl in configure.in.
- for lang in $ALL_LINGUAS; do
- GMOFILES="$GMOFILES $lang.gmo"
- POFILES="$POFILES $lang.po"
- done
-
- dnl Make all variables we use known to autoconf.
- AC_SUBST(USE_INCLUDED_LIBINTL)
- AC_SUBST(CATALOGS)
- AC_SUBST(CATOBJEXT)
- AC_SUBST(DATADIRNAME)
- AC_SUBST(GMOFILES)
- AC_SUBST(INSTOBJEXT)
- AC_SUBST(INTLDEPS)
- AC_SUBST(INTLLIBS)
- AC_SUBST(INTLOBJS)
- AC_SUBST(POFILES)
- AC_SUBST(POSUB)
- ])
-
-AC_DEFUN(CY_GNU_GETTEXT,
- [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_PROG_RANLIB])dnl
- AC_REQUIRE([AC_ISC_POSIX])dnl
- AC_REQUIRE([AC_HEADER_STDC])dnl
- AC_REQUIRE([AC_C_CONST])dnl
- AC_REQUIRE([AC_C_INLINE])dnl
- AC_REQUIRE([AC_TYPE_OFF_T])dnl
- AC_REQUIRE([AC_TYPE_SIZE_T])dnl
- AC_REQUIRE([AC_FUNC_ALLOCA])dnl
- AC_REQUIRE([AC_FUNC_MMAP])dnl
-
- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
-unistd.h values.h sys/param.h])
- AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
-__argz_count __argz_stringify __argz_next])
-
- if test "${ac_cv_func_stpcpy+set}" != "set"; then
- AC_CHECK_FUNCS(stpcpy)
- fi
- if test "${ac_cv_func_stpcpy}" = "yes"; then
- AC_DEFINE(HAVE_STPCPY, 1, [Define if you have the stpcpy function])
- fi
-
- AM_LC_MESSAGES
- CY_WITH_NLS
-
- if test "x$CATOBJEXT" != "x"; then
- if test "x$ALL_LINGUAS" = "x"; then
- LINGUAS=
- else
- AC_MSG_CHECKING(for catalogs to be installed)
- NEW_LINGUAS=
- for lang in ${LINGUAS=$ALL_LINGUAS}; do
- case "$ALL_LINGUAS" in
- *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
- esac
- done
- LINGUAS=$NEW_LINGUAS
- AC_MSG_RESULT($LINGUAS)
- fi
-
- dnl Construct list of names of catalog files to be constructed.
- if test -n "$LINGUAS"; then
- for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
- fi
- fi
-
- dnl The reference to <locale.h> in the installed <libintl.h> file
- dnl must be resolved because we cannot expect the users of this
- dnl to define HAVE_LOCALE_H.
- if test $ac_cv_header_locale_h = yes; then
- INCLUDE_LOCALE_H="#include <locale.h>"
- else
- INCLUDE_LOCALE_H="\
-/* The system does not provide the header <locale.h>. Take care yourself. */"
- fi
- AC_SUBST(INCLUDE_LOCALE_H)
-
- dnl Determine which catalog format we have (if any is needed)
- dnl For now we know about two different formats:
- dnl Linux libc-5 and the normal X/Open format
- if test -f $srcdir/po2tbl.sed.in; then
- if test "$CATOBJEXT" = ".cat"; then
- AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
-
- dnl Transform the SED scripts while copying because some dumb SEDs
- dnl cannot handle comments.
- sed -e '/^#/d' $srcdir/$msgformat-msg.sed > po2msg.sed
- fi
- dnl po2tbl.sed is always needed.
- sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
- $srcdir/po2tbl.sed.in > po2tbl.sed
- fi
-
- dnl In the intl/Makefile.in we have a special dependency which makes
- dnl only sense for gettext. We comment this out for non-gettext
- dnl packages.
- if test "$PACKAGE" = "gettext"; then
- GT_NO="#NO#"
- GT_YES=
- else
- GT_NO=
- GT_YES="#YES#"
- fi
- AC_SUBST(GT_NO)
- AC_SUBST(GT_YES)
-
- MKINSTALLDIRS="\$(srcdir)/../../mkinstalldirs"
- AC_SUBST(MKINSTALLDIRS)
-
- dnl *** For now the libtool support in intl/Makefile is not for real.
- l=
- AC_SUBST(l)
-
- dnl Generate list of files to be processed by xgettext which will
- dnl be included in po/Makefile. But only do this if the po directory
- dnl exists in srcdir.
- if test -d $srcdir/po; 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
- ])
-
-# Search path for a program which passes the given test.
-# Ulrich Drepper <drepper@cygnus.com>, 1996.
-#
-# 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.
-
-# serial 1
-
-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN(AM_PATH_PROG_WITH_TEST,
-[# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL(ac_cv_path_$1,
-[case "[$]$1" in
- /*)
- ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
- ;;
- *)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
- for ac_dir in ifelse([$5], , $PATH, [$5]); do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if [$3]; then
- ac_cv_path_$1="$ac_dir/$ac_word"
- break
- fi
- fi
- done
- IFS="$ac_save_ifs"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
- ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test -n "[$]$1"; then
- AC_MSG_RESULT([$]$1)
-else
- AC_MSG_RESULT(no)
-fi
-AC_SUBST($1)dnl
-])
-
-# Check whether LC_MESSAGES is available in <locale.h>.
-# Ulrich Drepper <drepper@cygnus.com>, 1995.
-#
-# 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.
-
-# serial 1
-
-AC_DEFUN(AM_LC_MESSAGES,
- [if test $ac_cv_header_locale_h = yes; then
- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
- [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
- am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
- if test $am_cv_val_LC_MESSAGES = yes; then
- AC_DEFINE(HAVE_LC_MESSAGES, 1,
- [Define if your locale.h file contains LC_MESSAGES.])
- fi
- fi])
-
diff --git a/contrib/binutils/opcodes/arm-dis.c b/contrib/binutils/opcodes/arm-dis.c
index a3e7112..686b18a 100644
--- a/contrib/binutils/opcodes/arm-dis.c
+++ b/contrib/binutils/opcodes/arm-dis.c
@@ -60,6 +60,8 @@ static arm_regname regnames[] =
{
{ "raw" , "Select raw register names",
{ "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"}},
+ { "gcc", "Select register names used by GCC",
+ { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "sl", "fp", "ip", "sp", "lr", "pc" }},
{ "std", "Select register names used in ARM's ISA documentation",
{ "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "sp", "lr", "pc" }},
{ "apcs", "Select register names used in the APCS",
@@ -70,7 +72,7 @@ static arm_regname regnames[] =
{ "a1", "a2", "a3", "a4", "v1", "v2", "v3", "WR", "v5", "SB", "SL", "FP", "IP", "SP", "LR", "PC" }}
};
-/* Default to standard register name set. */
+/* Default to GCC register name set. */
static unsigned int regname_selected = 1;
#define NUM_ARM_REGNAMES NUM_ELEM (regnames)
@@ -419,28 +421,39 @@ print_insn_arm (pc, info, given)
}
break;
+ case 'B':
+ /* Print ARM V5 BLX(1) address: pc+25 bits. */
+ {
+ bfd_vma address;
+ bfd_vma offset = 0;
+
+ if (given & 0x00800000)
+ /* Is signed, hi bits should be ones. */
+ offset = (-1) ^ 0x00ffffff;
+
+ /* Offset is (SignExtend(offset field)<<2). */
+ offset += given & 0x00ffffff;
+ offset <<= 2;
+ address = offset + pc + 8;
+
+ if (given & 0x01000000)
+ /* H bit allows addressing to 2-byte boundaries. */
+ address += 2;
+
+ info->print_address_func (address, info);
+ }
+ break;
+
case 'C':
- switch (given & 0x000f0000)
- {
- default:
- func (stream, "_???");
- break;
- case 0x90000:
- func (stream, "_all");
- break;
- case 0x10000:
- func (stream, "_c");
- break;
- case 0x20000:
- func (stream, "_x");
- break;
- case 0x40000:
- func (stream, "_s");
- break;
- case 0x80000:
- func (stream, "_f");
- break;
- }
+ func (stream, "_");
+ if (given & 0x80000)
+ func (stream, "f");
+ if (given & 0x40000)
+ func (stream, "s");
+ if (given & 0x20000)
+ func (stream, "x");
+ if (given & 0x10000)
+ func (stream, "c");
break;
case 'F':
@@ -658,6 +671,9 @@ print_insn_thumb (pc, info, given)
info->bytes_per_chunk = 4;
info->bytes_per_line = 4;
+ if ((given & 0x10000000) == 0)
+ func (stream, "blx\t");
+ else
func (stream, "bl\t");
info->print_address_func (BDISP23 (given) * 2 + pc + 4, info);
@@ -1027,6 +1043,14 @@ print_insn (pc, info, little)
given = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | (b[3]);
}
+ if (info->flags & INSN_HAS_RELOC)
+ /* If the instruction has a reloc associated with it, then
+ the offset field in the instruction will actually be the
+ addend for the reloc. (We are using REL type relocs).
+ In such cases, we can ignore the pc when computing
+ addresses, since the addend is not currently pc-relative. */
+ pc = 0;
+
if (is_thumb)
status = print_insn_thumb (pc, info, given);
else
diff --git a/contrib/binutils/opcodes/arm-opc.h b/contrib/binutils/opcodes/arm-opc.h
index 5ecde4b..42ab954 100644
--- a/contrib/binutils/opcodes/arm-opc.h
+++ b/contrib/binutils/opcodes/arm-opc.h
@@ -51,6 +51,7 @@ struct thumb_opcode
%a print address for ldr/str instruction
%s print address for ldr/str halfword/signextend instruction
%b print branch destination
+ %B print arm BLX(1) destination
%A print address for ldc/stc/ldf/stf instruction
%m print register mask for ldm/stm instruction
%C print the PSR sub type.
@@ -75,7 +76,7 @@ Thumb specific format options:
static struct arm_opcode arm_opcodes[] =
{
- /* ARM instructions */
+ /* ARM instructions. */
{0xe1a00000, 0xffffffff, "nop\t\t\t(mov r0,r0)"},
{0x012FFF10, 0x0ffffff0, "bx%c\t%0-3r"},
{0x00000090, 0x0fe000f0, "mul%c%20's\t%16-19r, %0-3r, %8-11r"},
@@ -83,6 +84,59 @@ static struct arm_opcode arm_opcodes[] =
{0x01000090, 0x0fb00ff0, "swp%c%22'b\t%12-15r, %0-3r, [%16-19r]"},
{0x00800090, 0x0fa000f0, "%22?sumull%c%20's\t%12-15r, %16-19r, %0-3r, %8-11r"},
{0x00a00090, 0x0fa000f0, "%22?sumlal%c%20's\t%12-15r, %16-19r, %0-3r, %8-11r"},
+
+ /* XScale instructions. */
+ {0x0e200010, 0x0fff0ff0, "mia%c\tacc0, %0-3r, %12-15r"},
+ {0x0e280010, 0x0fff0ff0, "miaph%c\tacc0, %0-3r, %12-15r"},
+ {0x0e2c0010, 0x0ffc0ff0, "mia%17'T%17`B%16'T%16`B%c\tacc0, %0-3r, %12-15r"},
+ {0x0c400000, 0x0ff00fff, "mar%c\tacc0, %12-15r, %16-19r"},
+ {0x0c500000, 0x0ff00fff, "mra%c\t%12-15r, %16-19r, acc0"},
+ {0xf450f000, 0xfc70f000, "pld\t%a"},
+
+ /* V5 Instructions. */
+ {0xe1200070, 0xfff000f0, "bkpt\t0x%16-19X%12-15X%8-11X%0-3X"},
+ {0xfa000000, 0xfe000000, "blx\t%B"},
+ {0x012fff30, 0x0ffffff0, "blx%c\t%0-3r"},
+ {0x016f0f10, 0x0fff0ff0, "clz%c\t%12-15r, %0-3r"},
+ {0xfc100000, 0xfe100000, "ldc2%22'l\t%8-11d, cr%12-15d, %A"},
+ {0xfc000000, 0xfe100000, "stc2%22'l\t%8-11d, cr%12-15d, %A"},
+ {0xfe000000, 0xff000010, "cdp2\t%8-11d, %20-23d, cr%12-15d, cr%16-19d, cr%0-3d, {%5-7d}"},
+ {0xfe000010, 0xff100010, "mcr2\t%8-11d, %21-23d, %12-15r, cr%16-19d, cr%0-3d, {%5-7d}"},
+ {0xfe100010, 0xff100010, "mrc2\t%8-11d, %21-23d, %12-15r, cr%16-19d, cr%0-3d, {%5-7d}"},
+
+ /* V5E "El Segundo" Instructions. */
+ {0x000000d0, 0x0e1000f0, "ldr%cd\t%12-15r, %s"},
+ {0x000000f0, 0x0e1000f0, "str%cd\t%12-15r, %s"},
+ {0x01000080, 0x0ff000f0, "smlabb%c\t%16-19r, %0-3r, %8-11r, %12-15r"},
+ {0x010000a0, 0x0ff000f0, "smlatb%c\t%16-19r, %0-3r, %8-11r, %12-15r"},
+ {0x010000c0, 0x0ff000f0, "smlabt%c\t%16-19r, %0-3r, %8-11r, %12-15r"},
+ {0x010000e0, 0x0ff000f0, "smlatt%c\t%16-19r, %0-3r, %8-11r, %12-15r"},
+
+ {0x01200080, 0x0ff000f0, "smlawb%c\t%16-19r, %0-3r, %8-11r, %12-15r"},
+ {0x012000c0, 0x0ff000f0, "smlawt%c\t%16-19r, %0-3r, %8-11r, %12-15r"},
+
+ {0x01400080, 0x0ff000f0, "smlalbb%c\t%12-15r, %16-19r, %0-3r, %8-11r"},
+ {0x014000a0, 0x0ff000f0, "smlaltb%c\t%12-15r, %16-19r, %0-3r, %8-11r"},
+ {0x014000c0, 0x0ff000f0, "smlalbt%c\t%12-15r, %16-19r, %0-3r, %8-11r"},
+ {0x014000e0, 0x0ff000f0, "smlaltt%c\t%12-15r, %16-19r, %0-3r, %8-11r"},
+
+ {0x01600080, 0x0ff0f0f0, "smulbb%c\t%16-19r, %0-3r, %8-11r"},
+ {0x016000a0, 0x0ff0f0f0, "smultb%c\t%16-19r, %0-3r, %8-11r"},
+ {0x016000c0, 0x0ff0f0f0, "smulbt%c\t%16-19r, %0-3r, %8-11r"},
+ {0x016000e0, 0x0ff0f0f0, "smultt%c\t%16-19r, %0-3r, %8-11r"},
+
+ {0x012000a0, 0x0ff0f0f0, "smulwb%c\t%16-19r, %0-3r, %8-11r"},
+ {0x012000e0, 0x0ff0f0f0, "smulwt%c\t%16-19r, %0-3r, %8-11r"},
+
+ {0x01000050, 0x0ff00ff0, "qadd%c\t%12-15r, %0-3r, %16-19r"},
+ {0x01400050, 0x0ff00ff0, "qdadd%c\t%12-15r, %0-3r, %16-19r"},
+ {0x01200050, 0x0ff00ff0, "qsub%c\t%12-15r, %0-3r, %16-19r"},
+ {0x01600050, 0x0ff00ff0, "qdsub%c\t%12-15r, %0-3r, %16-19r"},
+
+ {0x0c400000, 0x0ff00000, "mcrr%c\t%8-11d, %4-7d, %12-15r, %16-19r, cr%0-3d"},
+ {0x0c500000, 0x0ff00000, "mrrc%c\t%8-11d, %4-7d, %12-15r, %16-19r, cr%0-3d"},
+
+ /* ARM Instructions. */
{0x00000090, 0x0e100090, "str%c%6's%h\t%12-15r, %s"},
{0x00100090, 0x0e100090, "ldr%c%6's%h\t%12-15r, %s"},
{0x00000000, 0x0de00000, "and%c%20's\t%12-15r, %16-19r, %o"},
@@ -174,10 +228,21 @@ static struct arm_opcode arm_opcodes[] =
static struct thumb_opcode thumb_opcodes[] =
{
- /* Thumb instructions */
- {0x46C0, 0xFFFF, "nop\t\t\t(mov r8,r8)"}, /* format 5 instructions do not update the PSR */
+ /* Thumb instructions. */
+
+ /* ARM V5 ISA extends Thumb. */
+ {0xbe00, 0xff00, "bkpt\t%0-7x"},
+ {0x4780, 0xff87, "blx\t%3-6r"}, /* note: 4 bit register number. */
+ /* Note: this is BLX(2). BLX(1) is done in arm-dis.c/print_insn_thumb()
+ as an extension of the special processing there for Thumb BL.
+ BL and BLX(1) involve 2 successive 16-bit instructions, which must
+ always appear together in the correct order. So, the empty
+ string is put in this table, and the string interpreter takes <empty>
+ to mean it has a pair of BL-ish instructions. */
+ {0x46C0, 0xFFFF, "nop\t\t\t(mov r8, r8)"},
+ /* Format 5 instructions do not update the PSR. */
{0x1C00, 0xFFC0, "mov\t%0-2r, %3-5r\t\t(add %0-2r, %3-5r, #%6-8d)"},
- /* format 4 */
+ /* Format 4. */
{0x4000, 0xFFC0, "and\t%0-2r, %3-5r"},
{0x4040, 0xFFC0, "eor\t%0-2r, %3-5r"},
{0x4080, 0xFFC0, "lsl\t%0-2r, %3-5r"},
diff --git a/contrib/binutils/opcodes/config.in b/contrib/binutils/opcodes/config.in
index c60a321..5caef55 100644
--- a/contrib/binutils/opcodes/config.in
+++ b/contrib/binutils/opcodes/config.in
@@ -25,9 +25,6 @@
/* Define to `long' if <sys/types.h> doesn't define. */
#undef off_t
-/* Define if you need to in order for stat and other things to work. */
-#undef _POSIX_SOURCE
-
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
diff --git a/contrib/binutils/opcodes/configure b/contrib/binutils/opcodes/configure
index 72c9726..426a70e 100755
--- a/contrib/binutils/opcodes/configure
+++ b/contrib/binutils/opcodes/configure
@@ -22,16 +22,22 @@ ac_help="$ac_help
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
--enable-maintainer-mode enable make rules and dependencies not useful
(and sometimes confusing) to the casual installer"
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-cgen-maint[=dir] build cgen generated files"
# Initialize some variables set by options.
# The variables have the same names as the options, with
@@ -552,6 +558,68 @@ else
ac_n= ac_c='\c' ac_t=
fi
+echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
+echo "configure:563: 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 <<EOF
+#line 568 "configure"
+#include "confdefs.h"
+
+int main() {
+
+#ifndef __CYGWIN__
+#define __CYGWIN__ __CYGWIN32__
+#endif
+return __CYGWIN__;
+; return 0; }
+EOF
+if { (eval echo configure:579: \"$ac_compile\") 1>&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:596: 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 <<EOF
+#line 601 "configure"
+#include "confdefs.h"
+
+int main() {
+return __MINGW32__;
+; return 0; }
+EOF
+if { (eval echo configure:608: \"$ac_compile\") 1>&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=
@@ -601,7 +669,7 @@ 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:605: checking host system type" >&5
+echo "configure:673: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -622,7 +690,7 @@ 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:626: checking target system type" >&5
+echo "configure:694: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -640,7 +708,7 @@ 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:644: checking build system type" >&5
+echo "configure:712: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -662,249 +730,49 @@ test "$host_alias" != "$target_alias" &&
NONENONEs,x,x, &&
program_prefix=${target_alias}-
-# 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:669: 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:699: 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:750: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6
+echo "configure:736: 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
- 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:782: 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 793 "configure"
+ ac_save_LIBS="$LIBS"
+LIBS="-lcposix $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 744 "configure"
#include "confdefs.h"
+/* 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 strerror();
-main(){return(0);}
+int main() {
+strerror()
+; return 0; }
EOF
-if { (eval echo configure:798: \"$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
+if { (eval echo configure:755: \"$ac_link\") 1>&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
- 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:824: 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:829: 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 <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:838: \"$ac_try\") 1>&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:857: 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
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=no"
fi
rm -f conftest*
+LIBS="$ac_save_LIBS"
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
-
-echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:889: checking for POSIXized ISC" >&5
-if test -d /etc/conf/kconfig.d &&
- grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
-then
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
- ISC=yes # If later tests want to check for ISC.
- cat >> confdefs.h <<\EOF
-#define _POSIX_SOURCE 1
-EOF
-
- if test "$GCC" = yes; then
- CC="$CC -posix"
- else
- CC="$CC -Xp"
- fi
+ LIBS="$LIBS -lcposix"
else
echo "$ac_t""no" 1>&6
- ISC=
fi
+
+
# We currently only use the version number for the name of any shared
# library. For user convenience, we always use the same version
@@ -923,7 +791,7 @@ BFD_VERSION=`grep INIT_AUTOMAKE ${srcdir}/../bfd/configure.in | sed -n -e 's/[
# 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:927: checking for a BSD compatible install" >&5
+echo "configure:795: 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
@@ -976,7 +844,7 @@ 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:980: checking whether build environment is sane" >&5
+echo "configure:848: checking whether build environment is sane" >&5
# Just in case
sleep 1
echo timestamp > conftestfile
@@ -1033,7 +901,7 @@ test "$program_suffix" != NONE &&
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:1037: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:905: 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
@@ -1079,7 +947,7 @@ EOF
missing_dir=`cd $ac_aux_dir && pwd`
echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
-echo "configure:1083: checking for working aclocal" >&5
+echo "configure:951: 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.
@@ -1092,7 +960,7 @@ else
fi
echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
-echo "configure:1096: checking for working autoconf" >&5
+echo "configure:964: 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.
@@ -1105,7 +973,7 @@ else
fi
echo $ac_n "checking for working automake""... $ac_c" 1>&6
-echo "configure:1109: checking for working automake" >&5
+echo "configure:977: 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.
@@ -1118,7 +986,7 @@ else
fi
echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
-echo "configure:1122: checking for working autoheader" >&5
+echo "configure:990: 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.
@@ -1131,7 +999,7 @@ else
fi
echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
-echo "configure:1135: checking for working makeinfo" >&5
+echo "configure:1003: 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.
@@ -1154,7 +1022,7 @@ fi
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1158: checking for $ac_word" >&5
+echo "configure:1026: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1186,7 +1054,7 @@ fi
# 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:1190: checking for $ac_word" >&5
+echo "configure:1058: 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
@@ -1218,7 +1086,7 @@ 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:1222: checking for $ac_word" >&5
+echo "configure:1090: 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
@@ -1321,36 +1189,228 @@ else
enable_fast_install=yes
fi
-# Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
+# 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:1328: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+echo "configure:1196: 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 "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+ 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_RANLIB="ranlib"
+ ac_cv_prog_CC="gcc"
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
+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:1226: 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:1277: 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:1309: 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 1320 "configure"
+#include "confdefs.h"
+
+main(){return(0);}
+EOF
+if { (eval echo configure:1325: \"$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:1351: 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:1356: 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 <<EOF
+#ifdef __GNUC__
+ yes;
+#endif
+EOF
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1365: \"$ac_try\") 1>&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:1384: 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"
@@ -1363,8 +1423,14 @@ ac_prog=ld
if test "$ac_cv_prog_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:1367: checking for ld used by GCC" >&5
- ac_prog=`($CC -print-prog-name=ld) 2>&5`
+echo "configure:1427: 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]:[\\/]*)
@@ -1387,10 +1453,10 @@ echo "configure:1367: checking for ld used by GCC" >&5
esac
elif test "$with_gnu_ld" = yes; then
echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1391: checking for GNU ld" >&5
+echo "configure:1457: checking for GNU ld" >&5
else
echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1394: checking for non-GNU ld" >&5
+echo "configure:1460: checking for non-GNU ld" >&5
fi
if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1425,7 +1491,7 @@ else
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:1429: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1495: checking if the linker ($LD) is GNU ld" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1438,10 +1504,23 @@ fi
fi
echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6
+with_gnu_ld=$ac_cv_prog_gnu_ld
+echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6
+echo "configure:1512: 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:1445: checking for BSD-compatible nm" >&5
+echo "configure:1524: checking for BSD-compatible nm" >&5
if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1452,18 +1531,20 @@ 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=.
- if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext ; then
+ 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
- if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -B"
+ # 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
+ ac_cv_path_NM="$tmp_nm -B"
break
- elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
- ac_cv_path_NM="$ac_dir/nm -p"
+ elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+ ac_cv_path_NM="$tmp_nm -p"
break
else
- ac_cv_path_NM=${ac_cv_path_NM="$ac_dir/nm"} # keep the first match, but
+ ac_cv_path_NM=${ac_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
@@ -1477,7 +1558,7 @@ NM="$ac_cv_path_NM"
echo "$ac_t""$NM" 1>&6
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1481: checking whether ln -s works" >&5
+echo "configure:1562: 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
@@ -1497,11 +1578,477 @@ else
echo "$ac_t""no" 1>&6
fi
+echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6
+echo "configure:1583: 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
+aix4*)
+ 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'
+ ;;
+
+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*)
+ # TODO: Does this work for hpux-11 too?
+ lt_cv_deplibs_check_method='file_magic (s0-90-90-9|PA-RISC0-9.0-9) shared library'
+ lt_cv_file_magic_cmd=/usr/bin/file
+ lt_cv_file_magic_test_file=/usr/lib/libc.sl
+ ;;
+
+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* | 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 :
+ else
+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+ lt_cv_file_magic_cmd='/usr/bin/file -L'
+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+ fi
+ ;;
+
+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
+ ;;
+
+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:1726: 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:1732: \"$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:1752: 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:1762: \"$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
+
+# 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:1789: 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 <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+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:1851: 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 <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such. This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem. Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
-case "$target" in
-NONE) lt_target="$host" ;;
-*) lt_target="$target" ;;
+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:1922: 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:1954: 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:1989: 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:2021: 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"
@@ -1521,13 +2068,24 @@ 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 "$lt_target" in
+case "$host" in
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 1530 "configure"' > conftest.$ac_ext
- if { (eval echo configure:1531: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ echo '#line 2088 "configure"' > conftest.$ac_ext
+ if { (eval echo configure:2089: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
case "`/usr/bin/file conftest.o`" in
*32-bit*)
LD="${LD-ld} -32"
@@ -1548,19 +2106,27 @@ case "$lt_target" in
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -belf"
echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:1552: checking whether the C compiler needs -belf" >&5
+echo "configure:2110: 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
- cat > conftest.$ac_ext <<EOF
-#line 1557 "configure"
+
+ 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 2123 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:1564: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
lt_cv_cc_needs_belf=yes
else
@@ -1570,6 +2136,13 @@ else
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
@@ -1633,12 +2206,14 @@ rm -f confcache
# Actually configure libtool. ac_aux_dir is where install-sh is found.
-CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
-LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
-LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
-DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
+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 $ac_aux_dir/ltmain.sh $lt_target \
+$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
@@ -1652,7 +2227,7 @@ fi
# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltconfig $ac_aux_dir/ltmain.sh"
+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'
@@ -1662,6 +2237,12 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
exec 5>>./config.log
+
+
+
+
+
+
# Check whether --enable-targets or --disable-targets was given.
if test "${enable_targets+set}" = set; then
enableval="$enable_targets"
@@ -1682,6 +2263,29 @@ if test "${enable_commonbfdlib+set}" = set; then
esac
fi
+build_warnings="-W -Wall"
+# 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
+
+
@@ -1710,7 +2314,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x,"
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:1714: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:2318: 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"
@@ -1732,72 +2336,10 @@ fi
MAINT=$MAINTAINER_MODE_TRUE
-echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:1737: 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 <<EOF
-#line 1742 "configure"
-#include "confdefs.h"
-
-int main() {
-
-#ifndef __CYGWIN__
-#define __CYGWIN__ __CYGWIN32__
-#endif
-return __CYGWIN__;
-; return 0; }
-EOF
-if { (eval echo configure:1753: \"$ac_compile\") 1>&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:1770: 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 <<EOF
-#line 1775 "configure"
-#include "confdefs.h"
-
-int main() {
-return __MINGW32__;
-; return 0; }
-EOF
-if { (eval echo configure:1782: \"$ac_compile\") 1>&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
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:1801: checking for executable suffix" >&5
+echo "configure:2343: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1807,7 +2349,7 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:1811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:2353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
*.c | *.o | *.obj | *.ilk | *.pdb) ;;
@@ -1833,7 +2375,7 @@ ac_exeext=$EXEEXT
# 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:1837: checking for $ac_word" >&5
+echo "configure:2379: 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
@@ -1863,7 +2405,7 @@ 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:1867: checking for $ac_word" >&5
+echo "configure:2409: 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
@@ -1914,7 +2456,7 @@ fi
# 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:1918: checking for $ac_word" >&5
+echo "configure:2460: 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
@@ -1946,7 +2488,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1950: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2492: 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.
@@ -1957,12 +2499,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 1961 "configure"
+#line 2503 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1966: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2508: \"$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
@@ -1988,12 +2530,12 @@ 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:1992: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2534: 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:1997: checking whether we are using GNU C" >&5
+echo "configure:2539: 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
@@ -2002,7 +2544,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2006: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2548: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -2021,7 +2563,7 @@ 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:2025: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2567: 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
@@ -2055,7 +2597,7 @@ fi
ALL_LINGUAS=
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:2059: checking how to run the C preprocessor" >&5
+echo "configure:2601: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -2070,13 +2612,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 2074 "configure"
+#line 2616 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2080: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2622: \"$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
:
@@ -2087,13 +2629,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 2091 "configure"
+#line 2633 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2097: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2639: \"$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
:
@@ -2104,13 +2646,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 2108 "configure"
+#line 2650 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2114: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2656: \"$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
:
@@ -2134,13 +2676,43 @@ else
fi
echo "$ac_t""$CPP" 1>&6
+# 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:2683: 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:2139: checking for ANSI C header files" >&5
+echo "configure:2711: 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 <<EOF
-#line 2144 "configure"
+#line 2716 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -2148,7 +2720,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2152: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2724: \"$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*
@@ -2165,7 +2737,7 @@ 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
-#line 2169 "configure"
+#line 2741 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -2183,7 +2755,7 @@ 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
-#line 2187 "configure"
+#line 2759 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -2204,7 +2776,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2208 "configure"
+#line 2780 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -2215,7 +2787,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:2219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -2239,12 +2811,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:2243: checking for working const" >&5
+echo "configure:2815: 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 <<EOF
-#line 2248 "configure"
+#line 2820 "configure"
#include "confdefs.h"
int main() {
@@ -2293,7 +2865,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:2297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2869: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -2314,21 +2886,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:2318: checking for inline" >&5
+echo "configure:2890: 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 <<EOF
-#line 2325 "configure"
+#line 2897 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:2332: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2904: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -2354,12 +2926,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:2358: checking for off_t" >&5
+echo "configure:2930: 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 <<EOF
-#line 2363 "configure"
+#line 2935 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -2387,12 +2959,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:2391: checking for size_t" >&5
+echo "configure:2963: 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 <<EOF
-#line 2396 "configure"
+#line 2968 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -2422,19 +2994,19 @@ 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:2426: checking for working alloca.h" >&5
+echo "configure:2998: 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 <<EOF
-#line 2431 "configure"
+#line 3003 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:2438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3010: \"$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
@@ -2455,12 +3027,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:2459: checking for alloca" >&5
+echo "configure:3031: 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 <<EOF
-#line 2464 "configure"
+#line 3036 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -2488,7 +3060,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:2492: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3064: \"$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
@@ -2520,12 +3092,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:2524: checking whether alloca needs Cray hooks" >&5
+echo "configure:3096: 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 <<EOF
-#line 2529 "configure"
+#line 3101 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -2550,12 +3122,12 @@ 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:2554: checking for $ac_func" >&5
+echo "configure:3126: 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 <<EOF
-#line 2559 "configure"
+#line 3131 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2578,7 +3150,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3154: \"$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
@@ -2605,7 +3177,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:2609: checking stack direction for C alloca" >&5
+echo "configure:3181: 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
@@ -2613,7 +3185,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 2617 "configure"
+#line 3189 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -2632,7 +3204,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3208: \"$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
@@ -2657,17 +3229,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:2661: checking for $ac_hdr" >&5
+echo "configure:3233: 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
-#line 2666 "configure"
+#line 3238 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2671: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3243: \"$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*
@@ -2696,12 +3268,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2700: checking for $ac_func" >&5
+echo "configure:3272: 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 <<EOF
-#line 2705 "configure"
+#line 3277 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2724,7 +3296,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3300: \"$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
@@ -2749,7 +3321,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:2753: checking for working mmap" >&5
+echo "configure:3325: 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
@@ -2757,7 +3329,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 2761 "configure"
+#line 3333 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -2897,7 +3469,7 @@ main()
}
EOF
-if { (eval echo configure:2901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3473: \"$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
@@ -2925,17 +3497,17 @@ 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:2929: checking for $ac_hdr" >&5
+echo "configure:3501: 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
-#line 2934 "configure"
+#line 3506 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2939: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3511: \"$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*
@@ -2965,12 +3537,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2969: checking for $ac_func" >&5
+echo "configure:3541: 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 <<EOF
-#line 2974 "configure"
+#line 3546 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2993,7 +3565,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3569: \"$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
@@ -3022,12 +3594,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3026: checking for $ac_func" >&5
+echo "configure:3598: 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 <<EOF
-#line 3031 "configure"
+#line 3603 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3050,7 +3622,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3054: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3626: \"$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
@@ -3084,19 +3656,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:3088: checking for LC_MESSAGES" >&5
+echo "configure:3660: 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 <<EOF
-#line 3093 "configure"
+#line 3665 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:3100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3672: \"$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
@@ -3117,7 +3689,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:3121: checking whether NLS is requested" >&5
+echo "configure:3693: 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"
@@ -3137,7 +3709,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:3141: checking whether included gettext is requested" >&5
+echo "configure:3713: 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"
@@ -3156,17 +3728,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:3160: checking for libintl.h" >&5
+echo "configure:3732: 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
-#line 3165 "configure"
+#line 3737 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3170: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3742: \"$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*
@@ -3183,19 +3755,19 @@ 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:3187: checking for gettext in libc" >&5
+echo "configure:3759: 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 <<EOF
-#line 3192 "configure"
+#line 3764 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:3199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3771: \"$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
@@ -3211,7 +3783,7 @@ 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:3215: checking for bindtextdomain in -lintl" >&5
+echo "configure:3787: 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
@@ -3219,7 +3791,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3223 "configure"
+#line 3795 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3230,7 +3802,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:3234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3246,19 +3818,19 @@ 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:3250: checking for gettext in libintl" >&5
+echo "configure:3822: 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 <<EOF
-#line 3255 "configure"
+#line 3827 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:3262: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libintl=yes
else
@@ -3286,7 +3858,7 @@ 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:3290: checking for $ac_word" >&5
+echo "configure:3862: 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
@@ -3320,12 +3892,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3324: checking for $ac_func" >&5
+echo "configure:3896: 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 <<EOF
-#line 3329 "configure"
+#line 3901 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3348,7 +3920,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3352: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3924: \"$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
@@ -3375,7 +3947,7 @@ 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:3379: checking for $ac_word" >&5
+echo "configure:3951: 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
@@ -3411,7 +3983,7 @@ 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:3415: checking for $ac_word" >&5
+echo "configure:3987: 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
@@ -3443,7 +4015,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 3447 "configure"
+#line 4019 "configure"
#include "confdefs.h"
int main() {
@@ -3451,7 +4023,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:3455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -3483,7 +4055,7 @@ fi
# 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:3487: checking for $ac_word" >&5
+echo "configure:4059: 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
@@ -3517,7 +4089,7 @@ 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:3521: checking for $ac_word" >&5
+echo "configure:4093: 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
@@ -3553,7 +4125,7 @@ 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:3557: checking for $ac_word" >&5
+echo "configure:4129: 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
@@ -3643,7 +4215,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:3647: checking for catalogs to be installed" >&5
+echo "configure:4219: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -3671,17 +4243,17 @@ echo "configure:3647: checking for catalogs to be installed" >&5
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:3675: checking for linux/version.h" >&5
+echo "configure:4247: 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
-#line 3680 "configure"
+#line 4252 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3685: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4257: \"$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*
@@ -3758,7 +4330,7 @@ fi
# 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:3762: checking for a BSD compatible install" >&5
+echo "configure:4334: 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
@@ -3815,17 +4387,17 @@ for ac_hdr in string.h strings.h stdlib.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3819: checking for $ac_hdr" >&5
+echo "configure:4391: 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
-#line 3824 "configure"
+#line 4396 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3829: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4401: \"$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*
@@ -3852,6 +4424,34 @@ fi
done
+cgen_maint=no
+cgendir='$(srcdir)/../cgen'
+
+# Check whether --enable-cgen-maint or --disable-cgen-maint was given.
+if test "${enable_cgen_maint+set}" = set; then
+ enableval="$enable_cgen_maint"
+ case "${enableval}" in
+ yes) cgen_maint=yes ;;
+ no) cgen_maint=no ;;
+ *)
+ # argument is cgen install directory (not implemented yet).
+ # Having a `share' directory might be more appropriate for the .scm,
+ # .cpu, etc. files.
+ cgen_maint=yes
+ cgendir=${cgen_maint}/lib/cgen
+ ;;
+esac
+fi
+
+
+if test x${cgen_maint} = xyes; then
+ CGEN_MAINT_TRUE=
+ CGEN_MAINT_FALSE='#'
+else
+ CGEN_MAINT_TRUE='#'
+ CGEN_MAINT_FALSE=
+fi
+
using_cgen=no
@@ -3916,10 +4516,11 @@ if test x${all_targets} = xfalse ; then
bfd_a29k_arch) ta="$ta a29k-dis.lo" ;;
bfd_alliant_arch) ;;
bfd_alpha_arch) ta="$ta alpha-dis.lo alpha-opc.lo" ;;
- bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo" ;;
+ bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
bfd_arm_arch) ta="$ta arm-dis.lo" ;;
bfd_avr_arch) ta="$ta avr-dis.lo" ;;
bfd_convex_arch) ;;
+ bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo" ;;
bfd_d10v_arch) ta="$ta d10v-dis.lo d10v-opc.lo" ;;
bfd_d30v_arch) ta="$ta d30v-dis.lo d30v-opc.lo" ;;
bfd_fr30_arch) ta="$ta fr30-asm.lo fr30-desc.lo fr30-dis.lo fr30-ibld.lo fr30-opc.lo" using_cgen=yes ;;
@@ -3928,9 +4529,12 @@ if test x${all_targets} = xfalse ; then
bfd_hppa_arch) ta="$ta hppa-dis.lo" ;;
bfd_i370_arch) ta="$ta i370-dis.lo i370-opc.lo" ;;
bfd_i386_arch) ta="$ta i386-dis.lo" ;;
- bfd_i860_arch) ;;
+ bfd_i860_arch) ta="$ta i860-dis.lo" ;;
bfd_i960_arch) ta="$ta i960-dis.lo" ;;
+ bfd_ia64_arch) ta="$ta ia64-dis.lo ia64-opc.lo" ;;
bfd_m32r_arch) ta="$ta m32r-asm.lo m32r-desc.lo m32r-dis.lo m32r-ibld.lo m32r-opc.lo m32r-opinst.lo" using_cgen=yes ;;
+ bfd_m68hc11_arch) ta="$ta m68hc11-dis.lo m68hc11-opc.lo" ;;
+ bfd_m68hc12_arch) ta="$ta m68hc11-dis.lo m68hc11-opc.lo" ;;
bfd_m68k_arch) ta="$ta m68k-dis.lo m68k-opc.lo" ;;
bfd_m88k_arch) ta="$ta m88k-dis.lo" ;;
bfd_mcore_arch) ta="$ta mcore-dis.lo" ;;
@@ -3943,10 +4547,13 @@ if test x${all_targets} = xfalse ; then
bfd_pyramid_arch) ;;
bfd_romp_arch) ;;
bfd_rs6000_arch) ta="$ta ppc-dis.lo ppc-opc.lo" ;;
- bfd_sh_arch) ta="$ta sh-dis.lo" ;;
+ bfd_powerpc_64_arch) ta="$ta ppc-dis.lo ppc-opc.lo" ;;
+ bfd_sh_arch)
+ ta="$ta sh-dis.lo" ;;
bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
bfd_tahoe_arch) ;;
bfd_tic30_arch) ta="$ta tic30-dis.lo" ;;
+ bfd_tic54x_arch) ta="$ta tic54x-dis.lo tic54x-opc.lo" ;;
bfd_tic80_arch) ta="$ta tic80-dis.lo tic80-opc.lo" ;;
bfd_v850_arch) ta="$ta v850-opc.lo v850-dis.lo" ;;
bfd_v850e_arch) ta="$ta v850-opc.lo v850-dis.lo" ;;
@@ -4143,7 +4750,6 @@ 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%@CC@%$CC%g
s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
s%@INSTALL_DATA@%$INSTALL_DATA%g
@@ -4157,12 +4763,16 @@ s%@MAKEINFO@%$MAKEINFO%g
s%@SET_MAKE@%$SET_MAKE%g
s%@AR@%$AR%g
s%@RANLIB@%$RANLIB%g
+s%@CC@%$CC%g
s%@LN_S@%$LN_S%g
+s%@OBJEXT@%$OBJEXT%g
+s%@EXEEXT@%$EXEEXT%g
+s%@STRIP@%$STRIP%g
s%@LIBTOOL@%$LIBTOOL%g
+s%@WARN_CFLAGS@%$WARN_CFLAGS%g
s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g
s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g
s%@MAINT@%$MAINT%g
-s%@EXEEXT@%$EXEEXT%g
s%@CPP@%$CPP%g
s%@ALLOCA@%$ALLOCA%g
s%@USE_NLS@%$USE_NLS%g
@@ -4186,6 +4796,9 @@ s%@GT_YES@%$GT_YES%g
s%@MKINSTALLDIRS@%$MKINSTALLDIRS%g
s%@l@%$l%g
s%@HDEFINES@%$HDEFINES%g
+s%@CGEN_MAINT_TRUE@%$CGEN_MAINT_TRUE%g
+s%@CGEN_MAINT_FALSE@%$CGEN_MAINT_FALSE%g
+s%@cgendir@%$cgendir%g
s%@WIN32LDFLAGS@%$WIN32LDFLAGS%g
s%@WIN32LIBADD@%$WIN32LIBADD%g
s%@archdefs@%$archdefs%g
diff --git a/contrib/binutils/opcodes/configure.in b/contrib/binutils/opcodes/configure.in
index 6ef461f..b0d4288 100644
--- a/contrib/binutils/opcodes/configure.in
+++ b/contrib/binutils/opcodes/configure.in
@@ -43,6 +43,27 @@ AC_ARG_ENABLE(commonbfdlib,
*) AC_MSG_ERROR([bad value ${enableval} for opcodes commonbfdlib option]) ;;
esac])dnl
+build_warnings="-W -Wall"
+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
@@ -67,6 +88,24 @@ AC_PROG_INSTALL
AC_CHECK_HEADERS(string.h strings.h stdlib.h)
+cgen_maint=no
+cgendir='$(srcdir)/../cgen'
+
+AC_ARG_ENABLE(cgen-maint,
+[ --enable-cgen-maint[=dir] build cgen generated files],
+[case "${enableval}" in
+ yes) cgen_maint=yes ;;
+ no) cgen_maint=no ;;
+ *)
+ # argument is cgen install directory (not implemented yet).
+ # Having a `share' directory might be more appropriate for the .scm,
+ # .cpu, etc. files.
+ cgen_maint=yes
+ cgendir=${cgen_maint}/lib/cgen
+ ;;
+esac])dnl
+AM_CONDITIONAL(CGEN_MAINT, test x${cgen_maint} = xyes)
+AC_SUBST(cgendir)
using_cgen=no
@@ -131,10 +170,11 @@ if test x${all_targets} = xfalse ; then
bfd_a29k_arch) ta="$ta a29k-dis.lo" ;;
bfd_alliant_arch) ;;
bfd_alpha_arch) ta="$ta alpha-dis.lo alpha-opc.lo" ;;
- bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo" ;;
+ bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
bfd_arm_arch) ta="$ta arm-dis.lo" ;;
bfd_avr_arch) ta="$ta avr-dis.lo" ;;
bfd_convex_arch) ;;
+ bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo" ;;
bfd_d10v_arch) ta="$ta d10v-dis.lo d10v-opc.lo" ;;
bfd_d30v_arch) ta="$ta d30v-dis.lo d30v-opc.lo" ;;
bfd_fr30_arch) ta="$ta fr30-asm.lo fr30-desc.lo fr30-dis.lo fr30-ibld.lo fr30-opc.lo" using_cgen=yes ;;
@@ -143,9 +183,12 @@ if test x${all_targets} = xfalse ; then
bfd_hppa_arch) ta="$ta hppa-dis.lo" ;;
bfd_i370_arch) ta="$ta i370-dis.lo i370-opc.lo" ;;
bfd_i386_arch) ta="$ta i386-dis.lo" ;;
- bfd_i860_arch) ;;
+ bfd_i860_arch) ta="$ta i860-dis.lo" ;;
bfd_i960_arch) ta="$ta i960-dis.lo" ;;
+ bfd_ia64_arch) ta="$ta ia64-dis.lo ia64-opc.lo" ;;
bfd_m32r_arch) ta="$ta m32r-asm.lo m32r-desc.lo m32r-dis.lo m32r-ibld.lo m32r-opc.lo m32r-opinst.lo" using_cgen=yes ;;
+ bfd_m68hc11_arch) ta="$ta m68hc11-dis.lo m68hc11-opc.lo" ;;
+ bfd_m68hc12_arch) ta="$ta m68hc11-dis.lo m68hc11-opc.lo" ;;
bfd_m68k_arch) ta="$ta m68k-dis.lo m68k-opc.lo" ;;
bfd_m88k_arch) ta="$ta m88k-dis.lo" ;;
bfd_mcore_arch) ta="$ta mcore-dis.lo" ;;
@@ -158,10 +201,13 @@ if test x${all_targets} = xfalse ; then
bfd_pyramid_arch) ;;
bfd_romp_arch) ;;
bfd_rs6000_arch) ta="$ta ppc-dis.lo ppc-opc.lo" ;;
- bfd_sh_arch) ta="$ta sh-dis.lo" ;;
+ bfd_powerpc_64_arch) ta="$ta ppc-dis.lo ppc-opc.lo" ;;
+ bfd_sh_arch)
+ ta="$ta sh-dis.lo" ;;
bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
bfd_tahoe_arch) ;;
bfd_tic30_arch) ta="$ta tic30-dis.lo" ;;
+ bfd_tic54x_arch) ta="$ta tic54x-dis.lo tic54x-opc.lo" ;;
bfd_tic80_arch) ta="$ta tic80-dis.lo tic80-opc.lo" ;;
bfd_v850_arch) ta="$ta v850-opc.lo v850-dis.lo" ;;
bfd_v850e_arch) ta="$ta v850-opc.lo v850-dis.lo" ;;
diff --git a/contrib/binutils/opcodes/disassemble.c b/contrib/binutils/opcodes/disassemble.c
index 373b652..d031840 100644
--- a/contrib/binutils/opcodes/disassemble.c
+++ b/contrib/binutils/opcodes/disassemble.c
@@ -25,6 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ARCH_arc
#define ARCH_arm
#define ARCH_avr
+#define ARCH_cris
#define ARCH_d10v
#define ARCH_d30v
#define ARCH_h8300
@@ -32,10 +33,14 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ARCH_hppa
#define ARCH_i370
#define ARCH_i386
+#define ARCH_i860
#define ARCH_i960
+#define ARCH_ia64
#define ARCH_fr30
#define ARCH_m32r
#define ARCH_m68k
+#define ARCH_m68hc11
+#define ARCH_m68hc12
#define ARCH_m88k
#define ARCH_mcore
#define ARCH_mips
@@ -48,6 +53,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ARCH_sh
#define ARCH_sparc
#define ARCH_tic30
+#define ARCH_tic54x
#define ARCH_tic80
#define ARCH_v850
#define ARCH_vax
@@ -81,8 +87,7 @@ disassembler (abfd)
#ifdef ARCH_arc
case bfd_arch_arc:
{
- disassemble = arc_get_disassembler (bfd_get_mach (abfd),
- bfd_big_endian (abfd));
+ disassemble = arc_get_disassembler (abfd);
break;
}
#endif
@@ -99,6 +104,11 @@ disassembler (abfd)
disassemble = print_insn_avr;
break;
#endif
+#ifdef ARCH_cris
+ case bfd_arch_cris:
+ disassemble = cris_get_disassembler (abfd);
+ break;
+#endif
#ifdef ARCH_d10v
case bfd_arch_d10v:
disassemble = print_insn_d10v;
@@ -115,7 +125,7 @@ disassembler (abfd)
disassemble = print_insn_h8300h;
else if (bfd_get_mach(abfd) == bfd_mach_h8300s)
disassemble = print_insn_h8300s;
- else
+ else
disassemble = print_insn_h8300;
break;
#endif
@@ -136,17 +146,28 @@ disassembler (abfd)
#endif
#ifdef ARCH_i386
case bfd_arch_i386:
- if (bfd_get_mach (abfd) == bfd_mach_i386_i386_intel_syntax)
+ if (bfd_get_mach (abfd) == bfd_mach_i386_i386_intel_syntax
+ || bfd_get_mach (abfd) == bfd_mach_x86_64_intel_syntax)
disassemble = print_insn_i386_intel;
else
disassemble = print_insn_i386_att;
break;
#endif
+#ifdef ARCH_i860
+ case bfd_arch_i860:
+ disassemble = print_insn_i860;
+ break;
+#endif
#ifdef ARCH_i960
case bfd_arch_i960:
disassemble = print_insn_i960;
break;
#endif
+#ifdef ARCH_ia64
+ case bfd_arch_ia64:
+ disassemble = print_insn_ia64;
+ break;
+#endif
#ifdef ARCH_fr30
case bfd_arch_fr30:
disassemble = print_insn_fr30;
@@ -157,6 +178,14 @@ disassembler (abfd)
disassemble = print_insn_m32r;
break;
#endif
+#if defined(ARCH_m68hc11) || defined(ARCH_m68hc12)
+ case bfd_arch_m68hc11:
+ disassemble = print_insn_m68hc11;
+ break;
+ case bfd_arch_m68hc12:
+ disassemble = print_insn_m68hc12;
+ break;
+#endif
#ifdef ARCH_m68k
case bfd_arch_m68k:
disassemble = print_insn_m68k;
@@ -210,7 +239,10 @@ disassembler (abfd)
#endif
#ifdef ARCH_rs6000
case bfd_arch_rs6000:
- disassemble = print_insn_rs6000;
+ if (bfd_get_mach (abfd) == bfd_mach_ppc_620)
+ disassemble = print_insn_big_powerpc;
+ else
+ disassemble = print_insn_rs6000;
break;
#endif
#ifdef ARCH_sh
@@ -231,6 +263,11 @@ disassembler (abfd)
disassemble = print_insn_tic30;
break;
#endif
+#ifdef ARCH_tic54x
+ case bfd_arch_tic54x:
+ disassemble = print_insn_tic54x;
+ break;
+#endif
#ifdef ARCH_tic80
case bfd_arch_tic80:
disassemble = print_insn_tic80;
@@ -250,7 +287,7 @@ disassembler (abfd)
case bfd_arch_z8k:
if (bfd_get_mach(abfd) == bfd_mach_z8001)
disassemble = print_insn_z8001;
- else
+ else
disassemble = print_insn_z8002;
break;
#endif
@@ -267,11 +304,11 @@ disassembler (abfd)
void
disassembler_usage (stream)
- FILE *stream ATTRIBUTE_UNUSED;
+ FILE * stream ATTRIBUTE_UNUSED;
{
#ifdef ARCH_arm
print_arm_disassembler_options (stream);
#endif
-
+
return;
}
diff --git a/contrib/binutils/opcodes/i386-dis.c b/contrib/binutils/opcodes/i386-dis.c
index a75d6e3..61ec71e 100644
--- a/contrib/binutils/opcodes/i386-dis.c
+++ b/contrib/binutils/opcodes/i386-dis.c
@@ -1,5 +1,6 @@
/* Print i386 instructions for GDB, the GNU debugger.
- Copyright (C) 1988, 89, 91, 93, 94, 95, 96, 97, 98, 1999
+ Copyright 1988, 1989, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+ 2001
Free Software Foundation, Inc.
This file is part of GDB.
@@ -22,6 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
* 80386 instruction printer by Pace Willisson (pace@prep.ai.mit.edu)
* July 1988
* modified by John Hassey (hassey@dg-rtp.dg.com)
+ * x86-64 support added by Jan Hubicka (jh@suse.cz)
*/
/*
@@ -62,9 +64,32 @@ struct dis_private
when we can. */
#define FWAIT_OPCODE (0x9b)
+/* Set to 1 for 64bit mode disassembly. */
+static int mode_64bit;
+
/* Flags for the prefixes for the current instruction. See below. */
static int prefixes;
+/* REX prefix the current instruction. See below. */
+static int rex;
+/* Bits of REX we've already used. */
+static int rex_used;
+#define REX_MODE64 8
+#define REX_EXTX 4
+#define REX_EXTY 2
+#define REX_EXTZ 1
+/* Mark parts used in the REX prefix. When we are testing for
+ empty prefix (for 8bit register REX extension), just mask it
+ out. Otherwise test for REX bit is excuse for existence of REX
+ only in case value is nonzero. */
+#define USED_REX(value) \
+ { \
+ if (value) \
+ rex_used |= (rex & value) ? (value) | 0x40 : 0; \
+ else \
+ rex_used |= 0x40; \
+ }
+
/* Flags for prefixes which we somehow handled when printing the
current instruction. */
static int used_prefixes;
@@ -121,6 +146,8 @@ fetch_data (info, addr)
#define XX NULL, 0
#define Eb OP_E, b_mode
+#define Ev OP_E, v_mode
+#define Ed OP_E, d_mode
#define indirEb OP_indirE, b_mode
#define Gb OP_G, b_mode
#define Ev OP_E, v_mode
@@ -133,40 +160,74 @@ fetch_data (info, addr)
#define Gv OP_G, v_mode
#define Gw OP_G, w_mode
#define Rd OP_Rd, d_mode
+#define Rm OP_Rd, m_mode
#define Ib OP_I, b_mode
#define sIb OP_sI, b_mode /* sign extened byte */
#define Iv OP_I, v_mode
+#define Iq OP_I, q_mode
+#define Iv64 OP_I64, v_mode
#define Iw OP_I, w_mode
#define Jb OP_J, b_mode
#define Jv OP_J, v_mode
-#define Cd OP_C, d_mode
-#define Dd OP_D, d_mode
+#define Cm OP_C, m_mode
+#define Dm OP_D, m_mode
#define Td OP_T, d_mode
-#define eAX OP_REG, eAX_reg
-#define eBX OP_REG, eBX_reg
-#define eCX OP_REG, eCX_reg
-#define eDX OP_REG, eDX_reg
-#define eSP OP_REG, eSP_reg
-#define eBP OP_REG, eBP_reg
-#define eSI OP_REG, eSI_reg
-#define eDI OP_REG, eDI_reg
-#define AL OP_REG, al_reg
-#define CL OP_REG, cl_reg
-#define DL OP_REG, dl_reg
-#define BL OP_REG, bl_reg
-#define AH OP_REG, ah_reg
-#define CH OP_REG, ch_reg
-#define DH OP_REG, dh_reg
-#define BH OP_REG, bh_reg
-#define AX OP_REG, ax_reg
-#define DX OP_REG, dx_reg
-#define indirDX OP_REG, indir_dx_reg
+#define RMeAX OP_REG, eAX_reg
+#define RMeBX OP_REG, eBX_reg
+#define RMeCX OP_REG, eCX_reg
+#define RMeDX OP_REG, eDX_reg
+#define RMeSP OP_REG, eSP_reg
+#define RMeBP OP_REG, eBP_reg
+#define RMeSI OP_REG, eSI_reg
+#define RMeDI OP_REG, eDI_reg
+#define RMrAX OP_REG, rAX_reg
+#define RMrBX OP_REG, rBX_reg
+#define RMrCX OP_REG, rCX_reg
+#define RMrDX OP_REG, rDX_reg
+#define RMrSP OP_REG, rSP_reg
+#define RMrBP OP_REG, rBP_reg
+#define RMrSI OP_REG, rSI_reg
+#define RMrDI OP_REG, rDI_reg
+#define RMAL OP_REG, al_reg
+#define RMAL OP_REG, al_reg
+#define RMCL OP_REG, cl_reg
+#define RMDL OP_REG, dl_reg
+#define RMBL OP_REG, bl_reg
+#define RMAH OP_REG, ah_reg
+#define RMCH OP_REG, ch_reg
+#define RMDH OP_REG, dh_reg
+#define RMBH OP_REG, bh_reg
+#define RMAX OP_REG, ax_reg
+#define RMDX OP_REG, dx_reg
+
+#define eAX OP_IMREG, eAX_reg
+#define eBX OP_IMREG, eBX_reg
+#define eCX OP_IMREG, eCX_reg
+#define eDX OP_IMREG, eDX_reg
+#define eSP OP_IMREG, eSP_reg
+#define eBP OP_IMREG, eBP_reg
+#define eSI OP_IMREG, eSI_reg
+#define eDI OP_IMREG, eDI_reg
+#define AL OP_IMREG, al_reg
+#define AL OP_IMREG, al_reg
+#define CL OP_IMREG, cl_reg
+#define DL OP_IMREG, dl_reg
+#define BL OP_IMREG, bl_reg
+#define AH OP_IMREG, ah_reg
+#define CH OP_IMREG, ch_reg
+#define DH OP_IMREG, dh_reg
+#define BH OP_IMREG, bh_reg
+#define AX OP_IMREG, ax_reg
+#define DX OP_IMREG, dx_reg
+#define indirDX OP_IMREG, indir_dx_reg
#define Sw OP_SEG, w_mode
#define Ap OP_DIR, 0
#define Ob OP_OFF, b_mode
+#define Ob64 OP_OFF64, b_mode
#define Ov OP_OFF, v_mode
+#define Ov64 OP_OFF64, v_mode
#define Xb OP_DSreg, eSI_reg
#define Xv OP_DSreg, eSI_reg
#define Yb OP_ESreg, eDI_reg
@@ -201,6 +262,11 @@ typedef void (*op_rtn) PARAMS ((int bytemode, int sizeflag));
static void OP_E PARAMS ((int, int));
static void OP_G PARAMS ((int, int));
static void OP_I PARAMS ((int, int));
+static void OP_I64 PARAMS ((int, int));
+static void OP_OFF PARAMS ((int, int));
+static void OP_REG PARAMS ((int, int));
+static void OP_IMREG PARAMS ((int, int));
+static void OP_OFF64 PARAMS ((int, int));
static void OP_indirE PARAMS ((int, int));
static void OP_sI PARAMS ((int, int));
static void OP_REG PARAMS ((int, int));
@@ -226,21 +292,25 @@ static void OP_SIMD_Suffix PARAMS ((int, int));
static void SIMD_Fixup PARAMS ((int, int));
static void append_seg PARAMS ((void));
-static void set_op PARAMS ((unsigned int op));
+static void set_op PARAMS ((unsigned int op, int));
static void putop PARAMS ((const char *template, int sizeflag));
static void dofloat PARAMS ((int sizeflag));
static int get16 PARAMS ((void));
-static int get32 PARAMS ((void));
+static bfd_vma get64 PARAMS ((void));
+static bfd_signed_vma get32 PARAMS ((void));
+static bfd_signed_vma get32s PARAMS ((void));
static void ckprefix PARAMS ((void));
static const char *prefix_name PARAMS ((int, int));
static void ptr_reg PARAMS ((int, int));
static void BadOp PARAMS ((void));
-#define b_mode 1
-#define v_mode 2
-#define w_mode 3
-#define d_mode 4
-#define x_mode 5
+#define b_mode 1 /* byte operand */
+#define v_mode 2 /* operand size depends on prefixes */
+#define w_mode 3 /* word operand */
+#define d_mode 4 /* double word operand */
+#define q_mode 5 /* quad word operand */
+#define x_mode 6
+#define m_mode 7 /* d_mode in 32bit, q_mode in 64bit mode. */
#define es_reg 100
#define cs_reg 101
@@ -276,6 +346,15 @@ static void BadOp PARAMS ((void));
#define si_reg 130
#define di_reg 131
+#define rAX_reg 132
+#define rCX_reg 133
+#define rDX_reg 134
+#define rBX_reg 135
+#define rSP_reg 136
+#define rBP_reg 137
+#define rSI_reg 138
+#define rDI_reg 139
+
#define indir_dx_reg 150
#define USE_GROUPS 1
@@ -320,6 +399,18 @@ static void BadOp PARAMS ((void));
#define PREGRP12 NULL, NULL, 12, NULL, USE_PREFIX_USER_TABLE, NULL, 0
#define PREGRP13 NULL, NULL, 13, NULL, USE_PREFIX_USER_TABLE, NULL, 0
#define PREGRP14 NULL, NULL, 14, NULL, USE_PREFIX_USER_TABLE, NULL, 0
+#define PREGRP15 NULL, NULL, 15, NULL, USE_PREFIX_USER_TABLE, NULL, 0
+#define PREGRP16 NULL, NULL, 16, NULL, USE_PREFIX_USER_TABLE, NULL, 0
+#define PREGRP17 NULL, NULL, 17, NULL, USE_PREFIX_USER_TABLE, NULL, 0
+#define PREGRP18 NULL, NULL, 18, NULL, USE_PREFIX_USER_TABLE, NULL, 0
+#define PREGRP19 NULL, NULL, 19, NULL, USE_PREFIX_USER_TABLE, NULL, 0
+#define PREGRP20 NULL, NULL, 20, NULL, USE_PREFIX_USER_TABLE, NULL, 0
+#define PREGRP21 NULL, NULL, 21, NULL, USE_PREFIX_USER_TABLE, NULL, 0
+#define PREGRP22 NULL, NULL, 22, NULL, USE_PREFIX_USER_TABLE, NULL, 0
+#define PREGRP23 NULL, NULL, 23, NULL, USE_PREFIX_USER_TABLE, NULL, 0
+#define PREGRP24 NULL, NULL, 24, NULL, USE_PREFIX_USER_TABLE, NULL, 0
+#define PREGRP25 NULL, NULL, 25, NULL, USE_PREFIX_USER_TABLE, NULL, 0
+#define PREGRP26 NULL, NULL, 26, NULL, USE_PREFIX_USER_TABLE, NULL, 0
#define FLOATCODE 50
#define FLOAT NULL, NULL, FLOATCODE, NULL, 0, NULL, 0
@@ -340,12 +431,18 @@ struct dis386 {
'E' => print 'e' if 32-bit form of jcxz
'L' => print 'l' if suffix_always is true
'N' => print 'n' if instruction has no wait "prefix"
- 'P' => print 'w' or 'l' if instruction has an operand size prefix,
+ 'O' => print 'd', or 'o'
+ 'P' => print 'w', 'l' or 'q' if instruction has an operand size prefix,
or suffix_always is true
- 'Q' => print 'w' or 'l' if no register operands or suffix_always is true
- 'R' => print 'w' or 'l' ("wd" or "dq" in intel mode)
- 'S' => print 'w' or 'l' if suffix_always is true
+ print 'q' if rex prefix is present.
+ 'I' => print 'q' in 64bit mode and behave as 'P' otherwise
+ 'Q' => print 'w', 'l' or 'q' if no register operands or suffix_always is true
+ 'R' => print 'w', 'l' or 'q' ("wd" or "dq" in intel mode)
+ 'S' => print 'w', 'l' or 'q' if suffix_always is true
+ 'T' => print 'q' in 64bit mode and behave as 'I' otherwise
+ 'X' => print 's', 'd' depending on data16 prefix (for XMM)
'W' => print 'b' or 'w' ("w" or "de" in intel mode)
+ 'Y' => 'q' if instruction has an REX 64bit overwrite prefix
*/
static const struct dis386 dis386_att[] = {
@@ -356,8 +453,8 @@ static const struct dis386 dis386_att[] = {
{ "addS", Gv, Ev, XX },
{ "addB", AL, Ib, XX },
{ "addS", eAX, Iv, XX },
- { "pushP", es, XX, XX },
- { "popP", es, XX, XX },
+ { "pushI", es, XX, XX },
+ { "popI", es, XX, XX },
/* 08 */
{ "orB", Eb, Gb, XX },
{ "orS", Ev, Gv, XX },
@@ -365,7 +462,7 @@ static const struct dis386 dis386_att[] = {
{ "orS", Gv, Ev, XX },
{ "orB", AL, Ib, XX },
{ "orS", eAX, Iv, XX },
- { "pushP", cs, XX, XX },
+ { "pushI", cs, XX, XX },
{ "(bad)", XX, XX, XX }, /* 0x0f extended opcode escape */
/* 10 */
{ "adcB", Eb, Gb, XX },
@@ -374,8 +471,8 @@ static const struct dis386 dis386_att[] = {
{ "adcS", Gv, Ev, XX },
{ "adcB", AL, Ib, XX },
{ "adcS", eAX, Iv, XX },
- { "pushP", ss, XX, XX },
- { "popP", ss, XX, XX },
+ { "pushI", ss, XX, XX },
+ { "popI", ss, XX, XX },
/* 18 */
{ "sbbB", Eb, Gb, XX },
{ "sbbS", Ev, Gv, XX },
@@ -383,8 +480,8 @@ static const struct dis386 dis386_att[] = {
{ "sbbS", Gv, Ev, XX },
{ "sbbB", AL, Ib, XX },
{ "sbbS", eAX, Iv, XX },
- { "pushP", ds, XX, XX },
- { "popP", ds, XX, XX },
+ { "pushI", ds, XX, XX },
+ { "popI", ds, XX, XX },
/* 20 */
{ "andB", Eb, Gb, XX },
{ "andS", Ev, Gv, XX },
@@ -422,41 +519,41 @@ static const struct dis386 dis386_att[] = {
{ "(bad)", XX, XX, XX }, /* SEG DS prefix */
{ "aas", XX, XX, XX },
/* 40 */
- { "incS", eAX, XX, XX },
- { "incS", eCX, XX, XX },
- { "incS", eDX, XX, XX },
- { "incS", eBX, XX, XX },
- { "incS", eSP, XX, XX },
- { "incS", eBP, XX, XX },
- { "incS", eSI, XX, XX },
- { "incS", eDI, XX, XX },
+ { "incS", RMeAX, XX, XX },
+ { "incS", RMeCX, XX, XX },
+ { "incS", RMeDX, XX, XX },
+ { "incS", RMeBX, XX, XX },
+ { "incS", RMeSP, XX, XX },
+ { "incS", RMeBP, XX, XX },
+ { "incS", RMeSI, XX, XX },
+ { "incS", RMeDI, XX, XX },
/* 48 */
- { "decS", eAX, XX, XX },
- { "decS", eCX, XX, XX },
- { "decS", eDX, XX, XX },
- { "decS", eBX, XX, XX },
- { "decS", eSP, XX, XX },
- { "decS", eBP, XX, XX },
- { "decS", eSI, XX, XX },
- { "decS", eDI, XX, XX },
+ { "decS", RMeAX, XX, XX },
+ { "decS", RMeCX, XX, XX },
+ { "decS", RMeDX, XX, XX },
+ { "decS", RMeBX, XX, XX },
+ { "decS", RMeSP, XX, XX },
+ { "decS", RMeBP, XX, XX },
+ { "decS", RMeSI, XX, XX },
+ { "decS", RMeDI, XX, XX },
/* 50 */
- { "pushS", eAX, XX, XX },
- { "pushS", eCX, XX, XX },
- { "pushS", eDX, XX, XX },
- { "pushS", eBX, XX, XX },
- { "pushS", eSP, XX, XX },
- { "pushS", eBP, XX, XX },
- { "pushS", eSI, XX, XX },
- { "pushS", eDI, XX, XX },
+ { "pushS", RMeAX, XX, XX },
+ { "pushS", RMeCX, XX, XX },
+ { "pushS", RMeDX, XX, XX },
+ { "pushS", RMeBX, XX, XX },
+ { "pushS", RMeSP, XX, XX },
+ { "pushS", RMeBP, XX, XX },
+ { "pushS", RMeSI, XX, XX },
+ { "pushS", RMeDI, XX, XX },
/* 58 */
- { "popS", eAX, XX, XX },
- { "popS", eCX, XX, XX },
- { "popS", eDX, XX, XX },
- { "popS", eBX, XX, XX },
- { "popS", eSP, XX, XX },
- { "popS", eBP, XX, XX },
- { "popS", eSI, XX, XX },
- { "popS", eDI, XX, XX },
+ { "popS", RMeAX, XX, XX },
+ { "popS", RMeCX, XX, XX },
+ { "popS", RMeDX, XX, XX },
+ { "popS", RMeBX, XX, XX },
+ { "popS", RMeSP, XX, XX },
+ { "popS", RMeBP, XX, XX },
+ { "popS", RMeSI, XX, XX },
+ { "popS", RMeDI, XX, XX },
/* 60 */
{ "pushaP", XX, XX, XX },
{ "popaP", XX, XX, XX },
@@ -467,9 +564,9 @@ static const struct dis386 dis386_att[] = {
{ "(bad)", XX, XX, XX }, /* op size prefix */
{ "(bad)", XX, XX, XX }, /* adr size prefix */
/* 68 */
- { "pushP", Iv, XX, XX }, /* 386 book wrong */
+ { "pushI", Iv, XX, XX }, /* 386 book wrong */
{ "imulS", Gv, Ev, Iv },
- { "pushP", sIb, XX, XX }, /* push of byte really pushes 2 or 4 bytes */
+ { "pushI", sIb, XX, XX }, /* push of byte really pushes 2 or 4 bytes */
{ "imulS", Gv, Ev, sIb },
{ "insb", Yb, indirDX, XX },
{ "insR", Yv, indirDX, XX },
@@ -510,23 +607,24 @@ static const struct dis386 dis386_att[] = {
{ "movQ", Ev, Sw, XX },
{ "leaS", Gv, M, XX },
{ "movQ", Sw, Ev, XX },
- { "popQ", Ev, XX, XX },
+ { "popT", Ev, XX, XX },
/* 90 */
{ "nop", XX, XX, XX },
- { "xchgS", eCX, eAX, XX },
- { "xchgS", eDX, eAX, XX },
- { "xchgS", eBX, eAX, XX },
- { "xchgS", eSP, eAX, XX },
- { "xchgS", eBP, eAX, XX },
- { "xchgS", eSI, eAX, XX },
- { "xchgS", eDI, eAX, XX },
+ /* FIXME: NOP with REPz prefix is called PAUSE. */
+ { "xchgS", RMeCX, eAX, XX },
+ { "xchgS", RMeDX, eAX, XX },
+ { "xchgS", RMeBX, eAX, XX },
+ { "xchgS", RMeSP, eAX, XX },
+ { "xchgS", RMeBP, eAX, XX },
+ { "xchgS", RMeSI, eAX, XX },
+ { "xchgS", RMeDI, eAX, XX },
/* 98 */
{ "cWtR", XX, XX, XX },
- { "cRtd", XX, XX, XX },
- { "lcallP", Ap, XX, XX },
+ { "cRtO", XX, XX, XX },
+ { "lcallI", Ap, XX, XX },
{ "(bad)", XX, XX, XX }, /* fwait */
- { "pushfP", XX, XX, XX },
- { "popfP", XX, XX, XX },
+ { "pushfI", XX, XX, XX },
+ { "popfI", XX, XX, XX },
{ "sahf", XX, XX, XX },
{ "lahf", XX, XX, XX },
/* a0 */
@@ -548,35 +646,35 @@ static const struct dis386 dis386_att[] = {
{ "scasB", AL, Yb, XX },
{ "scasS", eAX, Yv, XX },
/* b0 */
- { "movB", AL, Ib, XX },
- { "movB", CL, Ib, XX },
- { "movB", DL, Ib, XX },
- { "movB", BL, Ib, XX },
- { "movB", AH, Ib, XX },
- { "movB", CH, Ib, XX },
- { "movB", DH, Ib, XX },
- { "movB", BH, Ib, XX },
+ { "movB", RMAL, Ib, XX },
+ { "movB", RMCL, Ib, XX },
+ { "movB", RMDL, Ib, XX },
+ { "movB", RMBL, Ib, XX },
+ { "movB", RMAH, Ib, XX },
+ { "movB", RMCH, Ib, XX },
+ { "movB", RMDH, Ib, XX },
+ { "movB", RMBH, Ib, XX },
/* b8 */
- { "movS", eAX, Iv, XX },
- { "movS", eCX, Iv, XX },
- { "movS", eDX, Iv, XX },
- { "movS", eBX, Iv, XX },
- { "movS", eSP, Iv, XX },
- { "movS", eBP, Iv, XX },
- { "movS", eSI, Iv, XX },
- { "movS", eDI, Iv, XX },
+ { "movS", RMeAX, Iv, XX },
+ { "movS", RMeCX, Iv, XX },
+ { "movS", RMeDX, Iv, XX },
+ { "movS", RMeBX, Iv, XX },
+ { "movS", RMeSP, Iv, XX },
+ { "movS", RMeBP, Iv, XX },
+ { "movS", RMeSI, Iv, XX },
+ { "movS", RMeDI, Iv, XX },
/* c0 */
{ GRP2b },
{ GRP2S },
- { "retP", Iw, XX, XX },
- { "retP", XX, XX, XX },
+ { "retI", Iw, XX, XX },
+ { "retI", XX, XX, XX },
{ "lesS", Gv, Mp, XX },
{ "ldsS", Gv, Mp, XX },
{ "movA", Eb, Ib, XX },
{ "movQ", Ev, Iv, XX },
/* c8 */
- { "enterP", Iw, Ib, XX },
- { "leaveP", XX, XX, XX },
+ { "enterI", Iw, Ib, XX },
+ { "leaveI", XX, XX, XX },
{ "lretP", Iw, XX, XX },
{ "lretP", XX, XX, XX },
{ "int3", XX, XX, XX },
@@ -611,9 +709,9 @@ static const struct dis386 dis386_att[] = {
{ "outB", Ib, AL, XX },
{ "outS", Ib, eAX, XX },
/* e8 */
- { "callP", Jv, XX, XX },
- { "jmpP", Jv, XX, XX },
- { "ljmpP", Ap, XX, XX },
+ { "callI", Jv, XX, XX },
+ { "jmpI", Jv, XX, XX },
+ { "ljmpI", Ap, XX, XX },
{ "jmp", Jb, XX, XX },
{ "inB", AL, indirDX, XX },
{ "inS", eAX, indirDX, XX },
@@ -713,41 +811,41 @@ static const struct dis386 dis386_intel[] = {
{ "(bad)", XX, XX, XX }, /* SEG DS prefix */
{ "aas", XX, XX, XX },
/* 40 */
- { "inc", eAX, XX, XX },
- { "inc", eCX, XX, XX },
- { "inc", eDX, XX, XX },
- { "inc", eBX, XX, XX },
- { "inc", eSP, XX, XX },
- { "inc", eBP, XX, XX },
- { "inc", eSI, XX, XX },
- { "inc", eDI, XX, XX },
+ { "inc", RMeAX, XX, XX },
+ { "inc", RMeCX, XX, XX },
+ { "inc", RMeDX, XX, XX },
+ { "inc", RMeBX, XX, XX },
+ { "inc", RMeSP, XX, XX },
+ { "inc", RMeBP, XX, XX },
+ { "inc", RMeSI, XX, XX },
+ { "inc", RMeDI, XX, XX },
/* 48 */
- { "dec", eAX, XX, XX },
- { "dec", eCX, XX, XX },
- { "dec", eDX, XX, XX },
- { "dec", eBX, XX, XX },
- { "dec", eSP, XX, XX },
- { "dec", eBP, XX, XX },
- { "dec", eSI, XX, XX },
- { "dec", eDI, XX, XX },
+ { "dec", RMeAX, XX, XX },
+ { "dec", RMeCX, XX, XX },
+ { "dec", RMeDX, XX, XX },
+ { "dec", RMeBX, XX, XX },
+ { "dec", RMeSP, XX, XX },
+ { "dec", RMeBP, XX, XX },
+ { "dec", RMeSI, XX, XX },
+ { "dec", RMeDI, XX, XX },
/* 50 */
- { "push", eAX, XX, XX },
- { "push", eCX, XX, XX },
- { "push", eDX, XX, XX },
- { "push", eBX, XX, XX },
- { "push", eSP, XX, XX },
- { "push", eBP, XX, XX },
- { "push", eSI, XX, XX },
- { "push", eDI, XX, XX },
+ { "push", RMeAX, XX, XX },
+ { "push", RMeCX, XX, XX },
+ { "push", RMeDX, XX, XX },
+ { "push", RMeBX, XX, XX },
+ { "push", RMeSP, XX, XX },
+ { "push", RMeBP, XX, XX },
+ { "push", RMeSI, XX, XX },
+ { "push", RMeDI, XX, XX },
/* 58 */
- { "pop", eAX, XX, XX },
- { "pop", eCX, XX, XX },
- { "pop", eDX, XX, XX },
- { "pop", eBX, XX, XX },
- { "pop", eSP, XX, XX },
- { "pop", eBP, XX, XX },
- { "pop", eSI, XX, XX },
- { "pop", eDI, XX, XX },
+ { "pop", RMeAX, XX, XX },
+ { "pop", RMeCX, XX, XX },
+ { "pop", RMeDX, XX, XX },
+ { "pop", RMeBX, XX, XX },
+ { "pop", RMeSP, XX, XX },
+ { "pop", RMeBP, XX, XX },
+ { "pop", RMeSI, XX, XX },
+ { "pop", RMeDI, XX, XX },
/* 60 */
{ "pusha", XX, XX, XX },
{ "popa", XX, XX, XX },
@@ -804,13 +902,14 @@ static const struct dis386 dis386_intel[] = {
{ "pop", Ev, XX, XX },
/* 90 */
{ "nop", XX, XX, XX },
- { "xchg", eCX, eAX, XX },
- { "xchg", eDX, eAX, XX },
- { "xchg", eBX, eAX, XX },
- { "xchg", eSP, eAX, XX },
- { "xchg", eBP, eAX, XX },
- { "xchg", eSI, eAX, XX },
- { "xchg", eDI, eAX, XX },
+ /* FIXME: NOP with REPz prefix is called PAUSE. */
+ { "xchg", RMeCX, eAX, XX },
+ { "xchg", RMeDX, eAX, XX },
+ { "xchg", RMeBX, eAX, XX },
+ { "xchg", RMeSP, eAX, XX },
+ { "xchg", RMeBP, eAX, XX },
+ { "xchg", RMeSI, eAX, XX },
+ { "xchg", RMeDI, eAX, XX },
/* 98 */
{ "cW", XX, XX, XX }, /* cwde and cbw */
{ "cR", XX, XX, XX }, /* cdq and cwd */
@@ -839,23 +938,23 @@ static const struct dis386 dis386_intel[] = {
{ "scas", AL, Yb, XX },
{ "scas", eAX, Yv, XX },
/* b0 */
- { "mov", AL, Ib, XX },
- { "mov", CL, Ib, XX },
- { "mov", DL, Ib, XX },
- { "mov", BL, Ib, XX },
- { "mov", AH, Ib, XX },
- { "mov", CH, Ib, XX },
- { "mov", DH, Ib, XX },
- { "mov", BH, Ib, XX },
+ { "mov", RMAL, Ib, XX },
+ { "mov", RMCL, Ib, XX },
+ { "mov", RMDL, Ib, XX },
+ { "mov", RMBL, Ib, XX },
+ { "mov", RMAH, Ib, XX },
+ { "mov", RMCH, Ib, XX },
+ { "mov", RMDH, Ib, XX },
+ { "mov", RMBH, Ib, XX },
/* b8 */
- { "mov", eAX, Iv, XX },
- { "mov", eCX, Iv, XX },
- { "mov", eDX, Iv, XX },
- { "mov", eBX, Iv, XX },
- { "mov", eSP, Iv, XX },
- { "mov", eBP, Iv, XX },
- { "mov", eSI, Iv, XX },
- { "mov", eDI, Iv, XX },
+ { "mov", RMeAX, Iv, XX },
+ { "mov", RMeCX, Iv, XX },
+ { "mov", RMeDX, Iv, XX },
+ { "mov", RMeBX, Iv, XX },
+ { "mov", RMeSP, Iv, XX },
+ { "mov", RMeBP, Iv, XX },
+ { "mov", RMeSI, Iv, XX },
+ { "mov", RMeDI, Iv, XX },
/* c0 */
{ GRP2b },
{ GRP2S },
@@ -930,6 +1029,592 @@ static const struct dis386 dis386_intel[] = {
{ GRP5 },
};
+/* 64bit mode is having some instruction set differences, so separate table is
+ needed. */
+static const struct dis386 disx86_64_att[] = {
+ /* 00 */
+ { "addB", Eb, Gb, XX },
+ { "addS", Ev, Gv, XX },
+ { "addB", Gb, Eb, XX },
+ { "addS", Gv, Ev, XX },
+ { "addB", AL, Ib, XX },
+ { "addS", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 08 */
+ { "orB", Eb, Gb, XX },
+ { "orS", Ev, Gv, XX },
+ { "orB", Gb, Eb, XX },
+ { "orS", Gv, Ev, XX },
+ { "orB", AL, Ib, XX },
+ { "orS", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* 0x0f extended opcode escape */
+ /* 10 */
+ { "adcB", Eb, Gb, XX },
+ { "adcS", Ev, Gv, XX },
+ { "adcB", Gb, Eb, XX },
+ { "adcS", Gv, Ev, XX },
+ { "adcB", AL, Ib, XX },
+ { "adcS", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 18 */
+ { "sbbB", Eb, Gb, XX },
+ { "sbbS", Ev, Gv, XX },
+ { "sbbB", Gb, Eb, XX },
+ { "sbbS", Gv, Ev, XX },
+ { "sbbB", AL, Ib, XX },
+ { "sbbS", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 20 */
+ { "andB", Eb, Gb, XX },
+ { "andS", Ev, Gv, XX },
+ { "andB", Gb, Eb, XX },
+ { "andS", Gv, Ev, XX },
+ { "andB", AL, Ib, XX },
+ { "andS", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* SEG ES prefix */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 28 */
+ { "subB", Eb, Gb, XX },
+ { "subS", Ev, Gv, XX },
+ { "subB", Gb, Eb, XX },
+ { "subS", Gv, Ev, XX },
+ { "subB", AL, Ib, XX },
+ { "subS", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* SEG CS prefix */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 30 */
+ { "xorB", Eb, Gb, XX },
+ { "xorS", Ev, Gv, XX },
+ { "xorB", Gb, Eb, XX },
+ { "xorS", Gv, Ev, XX },
+ { "xorB", AL, Ib, XX },
+ { "xorS", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* SEG SS prefix */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 38 */
+ { "cmpB", Eb, Gb, XX },
+ { "cmpS", Ev, Gv, XX },
+ { "cmpB", Gb, Eb, XX },
+ { "cmpS", Gv, Ev, XX },
+ { "cmpB", AL, Ib, XX },
+ { "cmpS", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* SEG DS prefix */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 40 */
+ { "(bad)", XX, XX, XX }, /* REX prefix area. */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 48 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 50 */
+ { "pushI", RMrAX, XX, XX },
+ { "pushI", RMrCX, XX, XX },
+ { "pushI", RMrDX, XX, XX },
+ { "pushI", RMrBX, XX, XX },
+ { "pushI", RMrSP, XX, XX },
+ { "pushI", RMrBP, XX, XX },
+ { "pushI", RMrSI, XX, XX },
+ { "pushI", RMrDI, XX, XX },
+ /* 58 */
+ { "popI", RMrAX, XX, XX },
+ { "popI", RMrCX, XX, XX },
+ { "popI", RMrDX, XX, XX },
+ { "popI", RMrBX, XX, XX },
+ { "popI", RMrSP, XX, XX },
+ { "popI", RMrBP, XX, XX },
+ { "popI", RMrSI, XX, XX },
+ { "popI", RMrDI, XX, XX },
+ /* 60 */
+ { "(bad)", XX, XX, XX }, /* reserved. */
+ { "(bad)", XX, XX, XX }, /* reserved. */
+ { "(bad)", XX, XX, XX }, /* reserved. */
+ { "movslR", Gv, Ed, XX },
+ { "(bad)", XX, XX, XX }, /* seg fs */
+ { "(bad)", XX, XX, XX }, /* seg gs */
+ { "(bad)", XX, XX, XX }, /* op size prefix */
+ { "(bad)", XX, XX, XX }, /* adr size prefix */
+ /* 68 */
+ { "pushI", Iq, XX, XX }, /* 386 book wrong */
+ { "imulS", Gv, Ev, Iv },
+ { "pushI", sIb, XX, XX }, /* push of byte really pushes 2 or 4 bytes */
+ { "imulS", Gv, Ev, sIb },
+ { "insb", Yb, indirDX, XX },
+ { "insR", Yv, indirDX, XX },
+ { "outsb", indirDX, Xb, XX },
+ { "outsR", indirDX, Xv, XX },
+ /* 70 */
+ { "jo", Jb, XX, XX },
+ { "jno", Jb, XX, XX },
+ { "jb", Jb, XX, XX },
+ { "jae", Jb, XX, XX },
+ { "je", Jb, XX, XX },
+ { "jne", Jb, XX, XX },
+ { "jbe", Jb, XX, XX },
+ { "ja", Jb, XX, XX },
+ /* 78 */
+ { "js", Jb, XX, XX },
+ { "jns", Jb, XX, XX },
+ { "jp", Jb, XX, XX },
+ { "jnp", Jb, XX, XX },
+ { "jl", Jb, XX, XX },
+ { "jge", Jb, XX, XX },
+ { "jle", Jb, XX, XX },
+ { "jg", Jb, XX, XX },
+ /* 80 */
+ { GRP1b },
+ { GRP1S },
+ { "(bad)", XX, XX, XX },
+ { GRP1Ss },
+ { "testB", Eb, Gb, XX },
+ { "testS", Ev, Gv, XX },
+ { "xchgB", Eb, Gb, XX },
+ { "xchgS", Ev, Gv, XX },
+ /* 88 */
+ { "movB", Eb, Gb, XX },
+ { "movS", Ev, Gv, XX },
+ { "movB", Gb, Eb, XX },
+ { "movS", Gv, Ev, XX },
+ { "movQ", Ev, Sw, XX },
+ { "leaS", Gv, M, XX },
+ { "movQ", Sw, Ev, XX },
+ { "popI", Ev, XX, XX },
+ /* 90 */
+ { "nop", XX, XX, XX },
+ /* FIXME: NOP with REPz prefix is called PAUSE. */
+ { "xchgS", RMeCX, eAX, XX },
+ { "xchgS", RMeDX, eAX, XX },
+ { "xchgS", RMeBX, eAX, XX },
+ { "xchgS", RMeSP, eAX, XX },
+ { "xchgS", RMeBP, eAX, XX },
+ { "xchgS", RMeSI, eAX, XX },
+ { "xchgS", RMeDI, eAX, XX },
+ /* 98 */
+ { "cWtR", XX, XX, XX },
+ { "cRtO", XX, XX, XX },
+ { "(bad)", XX, XX, XX }, /* reserved. */
+ { "(bad)", XX, XX, XX }, /* fwait */
+ { "pushfI", XX, XX, XX },
+ { "popfI", XX, XX, XX },
+ { "(bad)", XX, XX, XX }, /* reserved. */
+ { "(bad)", XX, XX, XX }, /* reserved. */
+ /* a0 */
+ { "movB", AL, Ob64, XX },
+ { "movS", eAX, Ov64, XX },
+ { "movB", Ob64, AL, XX },
+ { "movS", Ov64, eAX, XX },
+ { "movsb", Yb, Xb, XX },
+ { "movsR", Yv, Xv, XX },
+ { "cmpsb", Xb, Yb, XX },
+ { "cmpsR", Xv, Yv, XX },
+ /* a8 */
+ { "testB", AL, Ib, XX },
+ { "testS", eAX, Iv, XX },
+ { "stosB", Yb, AL, XX },
+ { "stosS", Yv, eAX, XX },
+ { "lodsB", AL, Xb, XX },
+ { "lodsS", eAX, Xv, XX },
+ { "scasB", AL, Yb, XX },
+ { "scasS", eAX, Yv, XX },
+ /* b0 */
+ { "movB", RMAL, Ib, XX },
+ { "movB", RMCL, Ib, XX },
+ { "movB", RMDL, Ib, XX },
+ { "movB", RMBL, Ib, XX },
+ { "movB", RMAH, Ib, XX },
+ { "movB", RMCH, Ib, XX },
+ { "movB", RMDH, Ib, XX },
+ { "movB", RMBH, Ib, XX },
+ /* b8 */
+ { "movS", RMeAX, Iv64, XX },
+ { "movS", RMeCX, Iv64, XX },
+ { "movS", RMeDX, Iv64, XX },
+ { "movS", RMeBX, Iv64, XX },
+ { "movS", RMeSP, Iv64, XX },
+ { "movS", RMeBP, Iv64, XX },
+ { "movS", RMeSI, Iv64, XX },
+ { "movS", RMeDI, Iv64, XX },
+ /* c0 */
+ { GRP2b },
+ { GRP2S },
+ { "retI", Iw, XX, XX },
+ { "retI", XX, XX, XX },
+ { "(bad)", XX, XX, XX }, /* reserved. */
+ { "ldsS", Gv, Mp, XX },
+ { "movA", Eb, Ib, XX },
+ { "movQ", Ev, Iv, XX },
+ /* c8 */
+ { "enterI", Iw, Ib, XX },
+ { "leaveI", XX, XX, XX },
+ { "lretP", Iw, XX, XX },
+ { "lretP", XX, XX, XX },
+ { "int3", XX, XX, XX },
+ { "int", Ib, XX, XX },
+ { "(bad)", XX, XX, XX }, /* reserved. */
+ { "iretP", XX, XX, XX },
+ /* d0 */
+ { GRP2b_one },
+ { GRP2S_one },
+ { GRP2b_cl },
+ { GRP2S_cl },
+ { "(bad)", XX, XX, XX }, /* reserved. */
+ { "(bad)", XX, XX, XX }, /* reserved. */
+ { "(bad)", XX, XX, XX }, /* reserved. */
+ { "xlat", DSBX, XX, XX },
+ /* d8 */
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ /* e0 */
+ { "loopne", Jb, XX, XX },
+ { "loope", Jb, XX, XX },
+ { "loop", Jb, XX, XX },
+ { "jEcxz", Jb, XX, XX },
+ { "inB", AL, Ib, XX },
+ { "inS", eAX, Ib, XX },
+ { "outB", Ib, AL, XX },
+ { "outS", Ib, eAX, XX },
+ /* e8 */
+ { "callI", Jv, XX, XX },
+ { "jmpI", Jv, XX, XX },
+ { "(bad)", XX, XX, XX }, /* reserved. */
+ { "jmp", Jb, XX, XX },
+ { "inB", AL, indirDX, XX },
+ { "inS", eAX, indirDX, XX },
+ { "outB", indirDX, AL, XX },
+ { "outS", indirDX, eAX, XX },
+ /* f0 */
+ { "(bad)", XX, XX, XX }, /* lock prefix */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX }, /* repne */
+ { "(bad)", XX, XX, XX }, /* repz */
+ { "hlt", XX, XX, XX },
+ { "cmc", XX, XX, XX },
+ { GRP3b },
+ { GRP3S },
+ /* f8 */
+ { "clc", XX, XX, XX },
+ { "stc", XX, XX, XX },
+ { "cli", XX, XX, XX },
+ { "sti", XX, XX, XX },
+ { "cld", XX, XX, XX },
+ { "std", XX, XX, XX },
+ { GRP4 },
+ { GRP5 },
+};
+
+static const struct dis386 dis386_64_intel[] = {
+ /* 00 */
+ { "add", Eb, Gb, XX },
+ { "add", Ev, Gv, XX },
+ { "add", Gb, Eb, XX },
+ { "add", Gv, Ev, XX },
+ { "add", AL, Ib, XX },
+ { "add", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 08 */
+ { "or", Eb, Gb, XX },
+ { "or", Ev, Gv, XX },
+ { "or", Gb, Eb, XX },
+ { "or", Gv, Ev, XX },
+ { "or", AL, Ib, XX },
+ { "or", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* 0x0f extended opcode escape */
+ /* 10 */
+ { "adc", Eb, Gb, XX },
+ { "adc", Ev, Gv, XX },
+ { "adc", Gb, Eb, XX },
+ { "adc", Gv, Ev, XX },
+ { "adc", AL, Ib, XX },
+ { "adc", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 18 */
+ { "sbb", Eb, Gb, XX },
+ { "sbb", Ev, Gv, XX },
+ { "sbb", Gb, Eb, XX },
+ { "sbb", Gv, Ev, XX },
+ { "sbb", AL, Ib, XX },
+ { "sbb", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 20 */
+ { "and", Eb, Gb, XX },
+ { "and", Ev, Gv, XX },
+ { "and", Gb, Eb, XX },
+ { "and", Gv, Ev, XX },
+ { "and", AL, Ib, XX },
+ { "and", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* SEG ES prefix */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 28 */
+ { "sub", Eb, Gb, XX },
+ { "sub", Ev, Gv, XX },
+ { "sub", Gb, Eb, XX },
+ { "sub", Gv, Ev, XX },
+ { "sub", AL, Ib, XX },
+ { "sub", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* SEG CS prefix */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 30 */
+ { "xor", Eb, Gb, XX },
+ { "xor", Ev, Gv, XX },
+ { "xor", Gb, Eb, XX },
+ { "xor", Gv, Ev, XX },
+ { "xor", AL, Ib, XX },
+ { "xor", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* SEG SS prefix */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 38 */
+ { "cmp", Eb, Gb, XX },
+ { "cmp", Ev, Gv, XX },
+ { "cmp", Gb, Eb, XX },
+ { "cmp", Gv, Ev, XX },
+ { "cmp", AL, Ib, XX },
+ { "cmp", eAX, Iv, XX },
+ { "(bad)", XX, XX, XX }, /* SEG DS prefix */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* 40 */
+ { "(bad)", XX, XX, XX }, /* REX prefix area. */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 48 */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX },
+ /* 50 */
+ { "push", RMrAX, XX, XX },
+ { "push", RMrCX, XX, XX },
+ { "push", RMrDX, XX, XX },
+ { "push", RMrBX, XX, XX },
+ { "push", RMrSP, XX, XX },
+ { "push", RMrBP, XX, XX },
+ { "push", RMrSI, XX, XX },
+ { "push", RMrDI, XX, XX },
+ /* 58 */
+ { "pop", RMrAX, XX, XX },
+ { "pop", RMrCX, XX, XX },
+ { "pop", RMrDX, XX, XX },
+ { "pop", RMrBX, XX, XX },
+ { "pop", RMrSP, XX, XX },
+ { "pop", RMrBP, XX, XX },
+ { "pop", RMrSI, XX, XX },
+ { "pop", RMrDI, XX, XX },
+ /* 60 */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "movsx", Gv, Ed, XX },
+ { "(bad)", XX, XX, XX }, /* seg fs */
+ { "(bad)", XX, XX, XX }, /* seg gs */
+ { "(bad)", XX, XX, XX }, /* op size prefix */
+ { "(bad)", XX, XX, XX }, /* adr size prefix */
+ /* 68 */
+ { "push", Iq, XX, XX }, /* 386 book wrong */
+ { "imul", Gv, Ev, Iv },
+ { "push", sIb, XX, XX }, /* push of byte really pushes 2 or 4 bytes */
+ { "imul", Gv, Ev, sIb },
+ { "ins", Yb, indirDX, XX },
+ { "ins", Yv, indirDX, XX },
+ { "outs", indirDX, Xb, XX },
+ { "outs", indirDX, Xv, XX },
+ /* 70 */
+ { "jo", Jb, XX, XX },
+ { "jno", Jb, XX, XX },
+ { "jb", Jb, XX, XX },
+ { "jae", Jb, XX, XX },
+ { "je", Jb, XX, XX },
+ { "jne", Jb, XX, XX },
+ { "jbe", Jb, XX, XX },
+ { "ja", Jb, XX, XX },
+ /* 78 */
+ { "js", Jb, XX, XX },
+ { "jns", Jb, XX, XX },
+ { "jp", Jb, XX, XX },
+ { "jnp", Jb, XX, XX },
+ { "jl", Jb, XX, XX },
+ { "jge", Jb, XX, XX },
+ { "jle", Jb, XX, XX },
+ { "jg", Jb, XX, XX },
+ /* 80 */
+ { GRP1b },
+ { GRP1S },
+ { "(bad)", XX, XX, XX },
+ { GRP1Ss },
+ { "test", Eb, Gb, XX },
+ { "test", Ev, Gv, XX },
+ { "xchg", Eb, Gb, XX },
+ { "xchg", Ev, Gv, XX },
+ /* 88 */
+ { "mov", Eb, Gb, XX },
+ { "mov", Ev, Gv, XX },
+ { "mov", Gb, Eb, XX },
+ { "mov", Gv, Ev, XX },
+ { "mov", Ev, Sw, XX },
+ { "lea", Gv, M, XX },
+ { "mov", Sw, Ev, XX },
+ { "pop", Ev, XX, XX },
+ /* 90 */
+ { "nop", XX, XX, XX },
+ /* FIXME: NOP with REPz prefix is called PAUSE. */
+ { "xchg", RMeCX, eAX, XX },
+ { "xchg", RMeDX, eAX, XX },
+ { "xchg", RMeBX, eAX, XX },
+ { "xchg", RMeSP, eAX, XX },
+ { "xchg", RMeBP, eAX, XX },
+ { "xchg", RMeSI, eAX, XX },
+ { "xchg", RMeDI, eAX, XX },
+ /* 98 */
+ { "cW", XX, XX, XX }, /* cwde and cbw */
+ { "cR", XX, XX, XX }, /* cdq and cwd */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* fwait */
+ { "pushf", XX, XX, XX },
+ { "popf", XX, XX, XX },
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ /* a0 */
+ { "mov", AL, Ob, XX },
+ { "mov", eAX, Ov, XX },
+ { "mov", Ob, AL, XX },
+ { "mov", Ov, eAX, XX },
+ { "movs", Yb, Xb, XX },
+ { "movs", Yv, Xv, XX },
+ { "cmps", Xb, Yb, XX },
+ { "cmps", Xv, Yv, XX },
+ /* a8 */
+ { "test", AL, Ib, XX },
+ { "test", eAX, Iv, XX },
+ { "stos", Yb, AL, XX },
+ { "stos", Yv, eAX, XX },
+ { "lods", AL, Xb, XX },
+ { "lods", eAX, Xv, XX },
+ { "scas", AL, Yb, XX },
+ { "scas", eAX, Yv, XX },
+ /* b0 */
+ { "mov", RMAL, Ib, XX },
+ { "mov", RMCL, Ib, XX },
+ { "mov", RMDL, Ib, XX },
+ { "mov", RMBL, Ib, XX },
+ { "mov", RMAH, Ib, XX },
+ { "mov", RMCH, Ib, XX },
+ { "mov", RMDH, Ib, XX },
+ { "mov", RMBH, Ib, XX },
+ /* b8 */
+ { "mov", RMeAX, Iv, XX },
+ { "mov", RMeCX, Iv, XX },
+ { "mov", RMeDX, Iv, XX },
+ { "mov", RMeBX, Iv, XX },
+ { "mov", RMeSP, Iv, XX },
+ { "mov", RMeBP, Iv, XX },
+ { "mov", RMeSI, Iv, XX },
+ { "mov", RMeDI, Iv, XX },
+ /* c0 */
+ { GRP2b },
+ { GRP2S },
+ { "ret", Iw, XX, XX },
+ { "ret", XX, XX, XX },
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "lds", Gv, Mp, XX },
+ { "mov", Eb, Ib, XX },
+ { "mov", Ev, Iv, XX },
+ /* c8 */
+ { "enter", Iw, Ib, XX },
+ { "leave", XX, XX, XX },
+ { "lret", Iw, XX, XX },
+ { "lret", XX, XX, XX },
+ { "int3", XX, XX, XX },
+ { "int", Ib, XX, XX },
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "iret", XX, XX, XX },
+ /* d0 */
+ { GRP2b_one },
+ { GRP2S_one },
+ { GRP2b_cl },
+ { GRP2S_cl },
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "xlat", DSBX, XX, XX },
+ /* d8 */
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ { FLOAT },
+ /* e0 */
+ { "loopne", Jb, XX, XX },
+ { "loope", Jb, XX, XX },
+ { "loop", Jb, XX, XX },
+ { "jEcxz", Jb, XX, XX },
+ { "in", AL, Ib, XX },
+ { "in", eAX, Ib, XX },
+ { "out", Ib, AL, XX },
+ { "out", Ib, eAX, XX },
+ /* e8 */
+ { "call", Jv, XX, XX },
+ { "jmp", Jv, XX, XX },
+ { "(bad)", XX, XX, XX }, /* Reserved. */
+ { "jmp", Jb, XX, XX },
+ { "in", AL, indirDX, XX },
+ { "in", eAX, indirDX, XX },
+ { "out", indirDX, AL, XX },
+ { "out", indirDX, eAX, XX },
+ /* f0 */
+ { "(bad)", XX, XX, XX }, /* lock prefix */
+ { "(bad)", XX, XX, XX },
+ { "(bad)", XX, XX, XX }, /* repne */
+ { "(bad)", XX, XX, XX }, /* repz */
+ { "hlt", XX, XX, XX },
+ { "cmc", XX, XX, XX },
+ { GRP3b },
+ { GRP3S },
+ /* f8 */
+ { "clc", XX, XX, XX },
+ { "stc", XX, XX, XX },
+ { "cli", XX, XX, XX },
+ { "sti", XX, XX, XX },
+ { "cld", XX, XX, XX },
+ { "std", XX, XX, XX },
+ { GRP4 },
+ { GRP5 },
+};
+
static const struct dis386 dis386_twobyte_att[] = {
/* 00 */
{ GRP6 },
@@ -937,9 +1622,9 @@ static const struct dis386 dis386_twobyte_att[] = {
{ "larS", Gv, Ew, XX },
{ "lslS", Gv, Ew, XX },
{ "(bad)", XX, XX, XX },
- { "(bad)", XX, XX, XX },
+ { "syscall", XX, XX, XX },
{ "clts", XX, XX, XX },
- { "(bad)", XX, XX, XX },
+ { "sysretP", XX, XX, XX },
/* 08 */
{ "invd", XX, XX, XX },
{ "wbinvd", XX, XX, XX },
@@ -952,12 +1637,12 @@ static const struct dis386 dis386_twobyte_att[] = {
/* 10 */
{ PREGRP8 },
{ PREGRP9 },
- { "movlps", XM, EX, SIMD_Fixup, 'h' }, /* really only 2 operands */
- { "movlps", EX, XM, SIMD_Fixup, 'h' },
- { "unpcklps", XM, EX, XX },
- { "unpckhps", XM, EX, XX },
- { "movhps", XM, EX, SIMD_Fixup, 'l' },
- { "movhps", EX, XM, SIMD_Fixup, 'l' },
+ { "movlpX", XM, EX, SIMD_Fixup, 'h' }, /* really only 2 operands */
+ { "movlpX", EX, XM, SIMD_Fixup, 'h' },
+ { "unpcklpX", XM, EX, XX },
+ { "unpckhpX", XM, EX, XX },
+ { "movhpX", XM, EX, SIMD_Fixup, 'l' },
+ { "movhpX", EX, XM, SIMD_Fixup, 'l' },
/* 18 */
{ GRP14 },
{ "(bad)", XX, XX, XX },
@@ -969,23 +1654,23 @@ static const struct dis386 dis386_twobyte_att[] = {
{ "(bad)", XX, XX, XX },
/* 20 */
/* these are all backward in appendix A of the intel book */
- { "movL", Rd, Cd, XX },
- { "movL", Rd, Dd, XX },
- { "movL", Cd, Rd, XX },
- { "movL", Dd, Rd, XX },
+ { "movL", Rm, Cm, XX },
+ { "movL", Rm, Dm, XX },
+ { "movL", Cm, Rm, XX },
+ { "movL", Dm, Rm, XX },
{ "movL", Rd, Td, XX },
{ "(bad)", XX, XX, XX },
{ "movL", Td, Rd, XX },
{ "(bad)", XX, XX, XX },
/* 28 */
- { "movaps", XM, EX, XX },
- { "movaps", EX, XM, XX },
+ { "movapX", XM, EX, XX },
+ { "movapX", EX, XM, XX },
{ PREGRP2 },
- { "movntps", Ev, XM, XX },
+ { "movntpX", Ev, XM, XX },
{ PREGRP4 },
{ PREGRP3 },
- { "ucomiss", XM, EX, XX },
- { "comiss", XM, EX, XX },
+ { "ucomisX", XM,EX, XX },
+ { "comisX", XM,EX, XX },
/* 30 */
{ "wrmsr", XX, XX, XX },
{ "rdtsc", XX, XX, XX },
@@ -1023,19 +1708,19 @@ static const struct dis386 dis386_twobyte_att[] = {
{ "cmovle", Gv, Ev, XX },
{ "cmovg", Gv, Ev, XX },
/* 50 */
- { "movmskps", Gv, EX, XX },
+ { "movmskpX", Gv, EX, XX },
{ PREGRP13 },
{ PREGRP12 },
{ PREGRP11 },
- { "andps", XM, EX, XX },
- { "andnps", XM, EX, XX },
- { "orps", XM, EX, XX },
- { "xorps", XM, EX, XX },
+ { "andpX", XM, EX, XX },
+ { "andnpX", XM, EX, XX },
+ { "orpX", XM, EX, XX },
+ { "xorpX", XM, EX, XX },
/* 58 */
{ PREGRP0 },
{ PREGRP10 },
- { "(bad)", XX, XX, XX },
- { "(bad)", XX, XX, XX },
+ { PREGRP17 },
+ { PREGRP16 },
{ PREGRP14 },
{ PREGRP7 },
{ PREGRP5 },
@@ -1054,12 +1739,12 @@ static const struct dis386 dis386_twobyte_att[] = {
{ "punpckhwd", MX, EM, XX },
{ "punpckhdq", MX, EM, XX },
{ "packssdw", MX, EM, XX },
- { "(bad)", XX, XX, XX },
- { "(bad)", XX, XX, XX },
+ { PREGRP26 },
+ { PREGRP24 },
{ "movd", MX, Ed, XX },
- { "movq", MX, EM, XX },
+ { PREGRP19 },
/* 70 */
- { "pshufw", MX, EM, Ib },
+ { PREGRP22 },
{ GRP10 },
{ GRP11 },
{ GRP12 },
@@ -1074,8 +1759,8 @@ static const struct dis386 dis386_twobyte_att[] = {
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
- { "movd", Ed, MX, XX },
- { "movq", EM, MX, XX },
+ { PREGRP23 },
+ { PREGRP20 },
/* 80 */
{ "jo", Jv, XX, XX },
{ "jno", Jv, XX, XX },
@@ -1113,8 +1798,8 @@ static const struct dis386 dis386_twobyte_att[] = {
{ "setle", Eb, XX, XX },
{ "setg", Eb, XX, XX },
/* a0 */
- { "pushP", fs, XX, XX },
- { "popP", fs, XX, XX },
+ { "pushI", fs, XX, XX },
+ { "popI", fs, XX, XX },
{ "cpuid", XX, XX, XX },
{ "btS", Ev, Gv, XX },
{ "shldS", Ev, Gv, Ib },
@@ -1122,8 +1807,8 @@ static const struct dis386 dis386_twobyte_att[] = {
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
/* a8 */
- { "pushP", gs, XX, XX },
- { "popP", gs, XX, XX },
+ { "pushI", gs, XX, XX },
+ { "popI", gs, XX, XX },
{ "rsm", XX, XX, XX },
{ "btsS", Ev, Gv, XX },
{ "shrdS", Ev, Gv, Ib },
@@ -1152,28 +1837,28 @@ static const struct dis386 dis386_twobyte_att[] = {
{ "xaddB", Eb, Gb, XX },
{ "xaddS", Ev, Gv, XX },
{ PREGRP1 },
- { "(bad)", XX, XX, XX },
+ { "movntiS", Ev, Gv, XX },
{ "pinsrw", MX, Ev, Ib },
{ "pextrw", Ev, MX, Ib },
- { "shufps", XM, EX, Ib },
+ { "shufpX", XM, EX, Ib },
{ GRP9 },
/* c8 */
- { "bswap", eAX, XX, XX }, /* bswap doesn't support 16 bit regs */
- { "bswap", eCX, XX, XX },
- { "bswap", eDX, XX, XX },
- { "bswap", eBX, XX, XX },
- { "bswap", eSP, XX, XX },
- { "bswap", eBP, XX, XX },
- { "bswap", eSI, XX, XX },
- { "bswap", eDI, XX, XX },
+ { "bswap", RMeAX, XX, XX }, /* bswap doesn't support 16 bit regs */
+ { "bswap", RMeCX, XX, XX },
+ { "bswap", RMeDX, XX, XX },
+ { "bswap", RMeBX, XX, XX },
+ { "bswap", RMeSP, XX, XX },
+ { "bswap", RMeBP, XX, XX },
+ { "bswap", RMeSI, XX, XX },
+ { "bswap", RMeDI, XX, XX },
/* d0 */
{ "(bad)", XX, XX, XX },
{ "psrlw", MX, EM, XX },
{ "psrld", MX, EM, XX },
{ "psrlq", MX, EM, XX },
- { "(bad)", XX, XX, XX },
+ { "paddq", MX, EM, XX },
{ "pmullw", MX, EM, XX },
- { "(bad)", XX, XX, XX },
+ { PREGRP21 },
{ "pmovmskb", Ev, MX, XX },
/* d8 */
{ "psubusb", MX, EM, XX },
@@ -1191,8 +1876,8 @@ static const struct dis386 dis386_twobyte_att[] = {
{ "pavgw", MX, EM, XX },
{ "pmulhuw", MX, EM, XX },
{ "pmulhw", MX, EM, XX },
- { "(bad)", XX, XX, XX },
- { "movntq", Ev, MX, XX },
+ { PREGRP15 },
+ { PREGRP25 },
/* e8 */
{ "psubsb", MX, EM, XX },
{ "psubsw", MX, EM, XX },
@@ -1207,15 +1892,15 @@ static const struct dis386 dis386_twobyte_att[] = {
{ "psllw", MX, EM, XX },
{ "pslld", MX, EM, XX },
{ "psllq", MX, EM, XX },
- { "(bad)", XX, XX, XX },
+ { "pmuludq", MX, EM, XX },
{ "pmaddwd", MX, EM, XX },
{ "psadbw", MX, EM, XX },
- { "maskmovq", MX, EM, XX },
+ { PREGRP18 },
/* f8 */
{ "psubb", MX, EM, XX },
{ "psubw", MX, EM, XX },
{ "psubd", MX, EM, XX },
- { "(bad)", XX, XX, XX },
+ { "psubq", MX, EM, XX },
{ "paddb", MX, EM, XX },
{ "paddw", MX, EM, XX },
{ "paddd", MX, EM, XX },
@@ -1229,9 +1914,9 @@ static const struct dis386 dis386_twobyte_intel[] = {
{ "lar", Gv, Ew, XX },
{ "lsl", Gv, Ew, XX },
{ "(bad)", XX, XX, XX },
- { "(bad)", XX, XX, XX },
+ { "syscall", XX, XX, XX },
{ "clts", XX, XX, XX },
- { "(bad)", XX, XX, XX },
+ { "sysretP", XX, XX, XX },
/* 08 */
{ "invd", XX, XX, XX },
{ "wbinvd", XX, XX, XX },
@@ -1242,14 +1927,14 @@ static const struct dis386 dis386_twobyte_intel[] = {
{ "femms" , XX, XX, XX},
{ "", MX, EM, OPSUF }, /* See OP_3DNowSuffix */
/* 10 */
- { PREGRP8 },
- { PREGRP9 },
- { "movlps", XM, EX, SIMD_Fixup, 'h' }, /* really only 2 operands */
- { "movlps", EX, XM, SIMD_Fixup, 'h' },
- { "unpcklps", XM, EX, XX },
- { "unpckhps", XM, EX, XX },
- { "movhps", XM, EX, SIMD_Fixup, 'l' },
- { "movhps", EX, XM, SIMD_Fixup, 'l' },
+ { PREGRP8 },
+ { PREGRP9 },
+ { "movlpX", XM, EX, SIMD_Fixup, 'h' }, /* really only 2 operands */
+ { "movlpX", EX, XM, SIMD_Fixup, 'h' },
+ { "unpcklpX", XM, EX, XX },
+ { "unpckhpX", XM, EX, XX },
+ { "movhpX", XM, EX, SIMD_Fixup, 'l' },
+ { "movhpX", EX, XM, SIMD_Fixup, 'l' },
/* 18 */
{ GRP14 },
{ "(bad)", XX, XX, XX },
@@ -1261,23 +1946,23 @@ static const struct dis386 dis386_twobyte_intel[] = {
{ "(bad)", XX, XX, XX },
/* 20 */
/* these are all backward in appendix A of the intel book */
- { "mov", Rd, Cd, XX },
- { "mov", Rd, Dd, XX },
- { "mov", Cd, Rd, XX },
- { "mov", Dd, Rd, XX },
+ { "mov", Rm, Cm, XX },
+ { "mov", Rm, Dm, XX },
+ { "mov", Cm, Rm, XX },
+ { "mov", Dm, Rm, XX },
{ "mov", Rd, Td, XX },
{ "(bad)", XX, XX, XX },
{ "mov", Td, Rd, XX },
{ "(bad)", XX, XX, XX },
/* 28 */
- { "movaps", XM, EX, XX },
- { "movaps", EX, XM, XX },
+ { "movapX", XM, EX, XX },
+ { "movapX", EX, XM, XX },
{ PREGRP2 },
- { "movntps", Ev, XM, XX },
+ { "movntpX", Ev, XM, XX },
{ PREGRP4 },
{ PREGRP3 },
- { "ucomiss", XM, EX, XX },
- { "comiss", XM, EX, XX },
+ { "ucomisX", XM,EX, XX },
+ { "comisX", XM,EX, XX },
/* 30 */
{ "wrmsr", XX, XX, XX },
{ "rdtsc", XX, XX, XX },
@@ -1315,19 +2000,19 @@ static const struct dis386 dis386_twobyte_intel[] = {
{ "cmovle", Gv, Ev, XX },
{ "cmovg", Gv, Ev, XX },
/* 50 */
- { "movmskps", Gv, EX, XX },
+ { "movmskpX", Gv, EX, XX },
{ PREGRP13 },
{ PREGRP12 },
{ PREGRP11 },
- { "andps", XM, EX, XX },
- { "andnps", XM, EX, XX },
- { "orps", XM, EX, XX },
- { "xorps", XM, EX, XX },
+ { "andpX", XM, EX, XX },
+ { "andnpX", XM, EX, XX },
+ { "orpX", XM, EX, XX },
+ { "xorpX", XM, EX, XX },
/* 58 */
{ PREGRP0 },
{ PREGRP10 },
- { "(bad)", XX, XX, XX },
- { "(bad)", XX, XX, XX },
+ { PREGRP17 },
+ { PREGRP16 },
{ PREGRP14 },
{ PREGRP7 },
{ PREGRP5 },
@@ -1346,12 +2031,12 @@ static const struct dis386 dis386_twobyte_intel[] = {
{ "punpckhwd", MX, EM, XX },
{ "punpckhdq", MX, EM, XX },
{ "packssdw", MX, EM, XX },
- { "(bad)", XX, XX, XX },
- { "(bad)", XX, XX, XX },
+ { PREGRP26 },
+ { PREGRP24 },
{ "movd", MX, Ed, XX },
- { "movq", MX, EM, XX },
+ { PREGRP19 },
/* 70 */
- { "pshufw", MX, EM, Ib },
+ { PREGRP22 },
{ GRP10 },
{ GRP11 },
{ GRP12 },
@@ -1366,8 +2051,8 @@ static const struct dis386 dis386_twobyte_intel[] = {
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
- { "movd", Ed, MX, XX },
- { "movq", EM, MX, XX },
+ { PREGRP23 },
+ { PREGRP20 },
/* 80 */
{ "jo", Jv, XX, XX },
{ "jno", Jv, XX, XX },
@@ -1444,28 +2129,28 @@ static const struct dis386 dis386_twobyte_intel[] = {
{ "xadd", Eb, Gb, XX },
{ "xadd", Ev, Gv, XX },
{ PREGRP1 },
- { "(bad)", XX, XX, XX },
+ { "movnti", Ev, Gv, XX },
{ "pinsrw", MX, Ev, Ib },
{ "pextrw", Ev, MX, Ib },
- { "shufps", XM, EX, Ib },
+ { "shufpX", XM, EX, Ib },
{ GRP9 },
/* c8 */
- { "bswap", eAX, XX, XX }, /* bswap doesn't support 16 bit regs */
- { "bswap", eCX, XX, XX },
- { "bswap", eDX, XX, XX },
- { "bswap", eBX, XX, XX },
- { "bswap", eSP, XX, XX },
- { "bswap", eBP, XX, XX },
- { "bswap", eSI, XX, XX },
- { "bswap", eDI, XX, XX },
+ { "bswap", RMeAX, XX, XX }, /* bswap doesn't support 16 bit regs */
+ { "bswap", RMeCX, XX, XX },
+ { "bswap", RMeDX, XX, XX },
+ { "bswap", RMeBX, XX, XX },
+ { "bswap", RMeSP, XX, XX },
+ { "bswap", RMeBP, XX, XX },
+ { "bswap", RMeSI, XX, XX },
+ { "bswap", RMeDI, XX, XX },
/* d0 */
{ "(bad)", XX, XX, XX },
{ "psrlw", MX, EM, XX },
{ "psrld", MX, EM, XX },
{ "psrlq", MX, EM, XX },
- { "(bad)", XX, XX, XX },
+ { "paddq", MX, EM, XX },
{ "pmullw", MX, EM, XX },
- { "(bad)", XX, XX, XX },
+ { PREGRP21 },
{ "pmovmskb", Ev, MX, XX },
/* d8 */
{ "psubusb", MX, EM, XX },
@@ -1483,8 +2168,8 @@ static const struct dis386 dis386_twobyte_intel[] = {
{ "pavgw", MX, EM, XX },
{ "pmulhuw", MX, EM, XX },
{ "pmulhw", MX, EM, XX },
- { "(bad)", XX, XX, XX },
- { "movntq", Ev, MX, XX },
+ { PREGRP15 },
+ { PREGRP25 },
/* e8 */
{ "psubsb", MX, EM, XX },
{ "psubsw", MX, EM, XX },
@@ -1499,15 +2184,15 @@ static const struct dis386 dis386_twobyte_intel[] = {
{ "psllw", MX, EM, XX },
{ "pslld", MX, EM, XX },
{ "psllq", MX, EM, XX },
- { "(bad)", XX, XX, XX },
+ { "pmuludq", MX, EM, XX },
{ "pmaddwd", MX, EM, XX },
{ "psadbw", MX, EM, XX },
- { "maskmovq", MX, EM, XX },
+ { PREGRP18 },
/* f8 */
{ "psubb", MX, EM, XX },
{ "psubw", MX, EM, XX },
{ "psubd", MX, EM, XX },
- { "(bad)", XX, XX, XX },
+ { "psubq", MX, EM, XX },
{ "paddb", MX, EM, XX },
{ "paddw", MX, EM, XX },
{ "paddd", MX, EM, XX },
@@ -1553,14 +2238,14 @@ static const unsigned char twobyte_has_modrm[256] = {
/* a0 */ 0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1, /* af */
/* b0 */ 1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1, /* bf */
/* c0 */ 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, /* cf */
- /* d0 */ 0,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1, /* df */
+ /* d0 */ 0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1, /* df */
/* e0 */ 1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1, /* ef */
- /* f0 */ 0,1,1,1,0,1,1,1,1,1,1,0,1,1,1,0 /* ff */
+ /* f0 */ 0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0 /* ff */
/* ------------------------------- */
/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
};
-static const unsigned char twobyte_uses_f3_prefix[256] = {
+static const unsigned char twobyte_uses_SSE_prefix[256] = {
/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
/* ------------------------------- */
/* 00 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0f */
@@ -1568,17 +2253,17 @@ static const unsigned char twobyte_uses_f3_prefix[256] = {
/* 20 */ 0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0, /* 2f */
/* 30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 3f */
/* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 4f */
- /* 50 */ 0,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1, /* 5f */
- /* 60 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 6f */
- /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 7f */
+ /* 50 */ 0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1, /* 5f */
+ /* 60 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1, /* 6f */
+ /* 70 */ 1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1, /* 7f */
/* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */
/* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 9f */
/* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* af */
/* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* bf */
/* c0 */ 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0, /* cf */
- /* d0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* df */
- /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ef */
- /* f0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* ff */
+ /* d0 */ 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, /* df */
+ /* e0 */ 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, /* ef */
+ /* f0 */ 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 /* ff */
/* ------------------------------- */
/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
};
@@ -1595,15 +2280,25 @@ static int rm;
static int reg;
static void oappend PARAMS ((const char *s));
-static const char *names32[]={
+static const char *names64[] = {
+ "%rax","%rcx","%rdx","%rbx", "%rsp","%rbp","%rsi","%rdi",
+ "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15"
+};
+static const char *names32[] = {
"%eax","%ecx","%edx","%ebx", "%esp","%ebp","%esi","%edi",
+ "%r8d", "%r9d", "%r10d", "%r11d", "%r12d", "%r13d", "%r14d", "%r15d"
};
static const char *names16[] = {
"%ax","%cx","%dx","%bx","%sp","%bp","%si","%di",
+ "%r8w", "%r9w", "%r10w", "%r11w", "%r12w", "%r13w", "%r14w", "%r15w"
};
static const char *names8[] = {
"%al","%cl","%dl","%bl","%ah","%ch","%dh","%bh",
};
+static const char *names8rex[] = {
+ "%al","%cl","%dl","%bl","%spl", "%bpl", "%sil", "%dil",
+ "%r8b", "%r9b", "%r10b", "%r11b", "%r12b", "%r13b", "%r14b", "%r15b"
+};
static const char *names_seg[] = {
"%es","%cs","%ss","%ds","%fs","%gs","%?","%?",
};
@@ -1748,11 +2443,11 @@ static const struct dis386 grps[][8] = {
{
{ "incQ", Ev, XX, XX },
{ "decQ", Ev, XX, XX },
- { "callP", indirEv, XX, XX },
- { "lcallP", indirEv, XX, XX },
- { "jmpP", indirEv, XX, XX },
- { "ljmpP", indirEv, XX, XX },
- { "pushQ", Ev, XX, XX },
+ { "callI", indirEv, XX, XX },
+ { "lcallI", indirEv, XX, XX },
+ { "jmpI", indirEv, XX, XX },
+ { "ljmpI", indirEv, XX, XX },
+ { "pushT", Ev, XX, XX },
{ "(bad)", XX, XX, XX },
},
/* GRP6 */
@@ -1826,11 +2521,11 @@ static const struct dis386 grps[][8] = {
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
{ "psrlq", MS, Ib, XX },
- { "(bad)", XX, XX, XX },
+ { "psrldq", MS, Ib, XX },
{ "(bad)", XX, XX, XX },
{ "(bad)", XX, XX, XX },
{ "psllq", MS, Ib, XX },
- { "(bad)", XX, XX, XX },
+ { "pslldq", MS, Ib, XX },
},
/* GRP13 */
{
@@ -1839,9 +2534,10 @@ static const struct dis386 grps[][8] = {
{ "ldmxcsr", Ev, XX, XX },
{ "stmxcsr", Ev, XX, XX },
{ "(bad)", XX, XX, XX },
- { "(bad)", XX, XX, XX },
- { "(bad)", XX, XX, XX },
+ { "lfence", None, XX, XX },
+ { "mfence", None, XX, XX },
{ "sfence", None, XX, XX },
+ /* FIXME: the sfence with memory operand is clflush! */
},
/* GRP14 */
{
@@ -1868,82 +2564,196 @@ static const struct dis386 grps[][8] = {
};
-static const struct dis386 prefix_user_table[][2] = {
+static const struct dis386 prefix_user_table[][4] = {
/* PREGRP0 */
{
{ "addps", XM, EX, XX },
{ "addss", XM, EX, XX },
+ { "addpd", XM, EX, XX },
+ { "addsd", XM, EX, XX },
},
/* PREGRP1 */
{
{ "", XM, EX, OPSIMD }, /* See OP_SIMD_SUFFIX */
{ "", XM, EX, OPSIMD },
+ { "", XM, EX, OPSIMD },
+ { "", XM, EX, OPSIMD },
},
/* PREGRP2 */
{
{ "cvtpi2ps", XM, EM, XX },
- { "cvtsi2ss", XM, Ev, XX },
+ { "cvtsi2ssY", XM, Ev, XX },
+ { "cvtpi2pd", XM, EM, XX },
+ { "cvtsi2sdY", XM, Ev, XX },
},
/* PREGRP3 */
{
{ "cvtps2pi", MX, EX, XX },
- { "cvtss2si", Gv, EX, XX },
+ { "cvtss2siY", Gv, EX, XX },
+ { "cvtpd2pi", MX, EX, XX },
+ { "cvtsd2siY", Gv, EX, XX },
},
/* PREGRP4 */
{
{ "cvttps2pi", MX, EX, XX },
- { "cvttss2si", Gv, EX, XX },
+ { "cvttss2siY", Gv, EX, XX },
+ { "cvttpd2pi", MX, EX, XX },
+ { "cvttsd2siY", Gv, EX, XX },
},
/* PREGRP5 */
{
{ "divps", XM, EX, XX },
{ "divss", XM, EX, XX },
+ { "divpd", XM, EX, XX },
+ { "divsd", XM, EX, XX },
},
/* PREGRP6 */
{
{ "maxps", XM, EX, XX },
{ "maxss", XM, EX, XX },
+ { "maxpd", XM, EX, XX },
+ { "maxsd", XM, EX, XX },
},
/* PREGRP7 */
{
{ "minps", XM, EX, XX },
{ "minss", XM, EX, XX },
+ { "minpd", XM, EX, XX },
+ { "minsd", XM, EX, XX },
},
/* PREGRP8 */
{
{ "movups", XM, EX, XX },
{ "movss", XM, EX, XX },
+ { "movupd", XM, EX, XX },
+ { "movsd", XM, EX, XX },
},
/* PREGRP9 */
{
{ "movups", EX, XM, XX },
{ "movss", EX, XM, XX },
+ { "movupd", EX, XM, XX },
+ { "movsd", EX, XM, XX },
},
/* PREGRP10 */
{
{ "mulps", XM, EX, XX },
{ "mulss", XM, EX, XX },
+ { "mulpd", XM, EX, XX },
+ { "mulsd", XM, EX, XX },
},
/* PREGRP11 */
{
{ "rcpps", XM, EX, XX },
{ "rcpss", XM, EX, XX },
+ { "(bad)", XM, EX, XX },
+ { "(bad)", XM, EX, XX },
},
/* PREGRP12 */
{
{ "rsqrtps", XM, EX, XX },
{ "rsqrtss", XM, EX, XX },
+ { "(bad)", XM, EX, XX },
+ { "(bad)", XM, EX, XX },
},
/* PREGRP13 */
{
{ "sqrtps", XM, EX, XX },
{ "sqrtss", XM, EX, XX },
+ { "sqrtpd", XM, EX, XX },
+ { "sqrtsd", XM, EX, XX },
},
/* PREGRP14 */
{
{ "subps", XM, EX, XX },
{ "subss", XM, EX, XX },
- }
+ { "subpd", XM, EX, XX },
+ { "subsd", XM, EX, XX },
+ },
+ /* PREGRP15 */
+ {
+ { "(bad)", XM, EX, XX },
+ { "cvtdq2pd", XM, EX, XX },
+ { "cvttpd2dq", XM, EX, XX },
+ { "cvtpd2dq", XM, EX, XX },
+ },
+ /* PREGRP16 */
+ {
+ { "cvtdq2ps", XM, EX, XX },
+ { "cvttps2dq",XM, EX, XX },
+ { "cvtps2dq",XM, EX, XX },
+ { "(bad)", XM, EX, XX },
+ },
+ /* PREGRP17 */
+ {
+ { "cvtps2pd", XM, EX, XX },
+ { "cvtss2sd", XM, EX, XX },
+ { "cvtpd2ps", XM, EX, XX },
+ { "cvtsd2ss", XM, EX, XX },
+ },
+ /* PREGRP18 */
+ {
+ { "maskmovq", MX, EM, XX },
+ { "(bad)", XM, EX, XX },
+ { "maskmovdqu", XM, EX, XX },
+ { "(bad)", XM, EX, XX },
+ },
+ /* PREGRP19 */
+ {
+ { "movq", MX, EM, XX },
+ { "movdqu", XM, EX, XX },
+ { "movdqa", XM, EX, XX },
+ { "(bad)", XM, EX, XX },
+ },
+ /* PREGRP20 */
+ {
+ { "movq", EM, MX, XX },
+ { "movdqu", EX, XM, XX },
+ { "movdqa", EX, XM, XX },
+ { "(bad)", EX, XM, XX },
+ },
+ /* PREGRP21 */
+ {
+ { "(bad)", EX, XM, XX },
+ { "movq2dq", EX, EM, XX },
+ { "movq", EX, XM, XX },
+ { "movdq2q", EM, MX, XX },
+ },
+ /* PREGRP22 */
+ {
+ { "pshufw", MX, EM, Ib },
+ { "pshufhw", XM, EX, Ib },
+ { "pshufd", XM, EX, Ib },
+ { "pshuflw", XM, EX, Ib },
+ },
+ /* PREGRP23 */
+ {
+ { "movd", Ed, MX, XX },
+ { "movq", Ed, XM, XX },
+ { "movd", Ed, XM, XX },
+ { "(bad)", Ed, XM, XX },
+ },
+ /* PREGRP24 */
+ {
+ { "(bad)", MX, EX, XX },
+ { "(bad)", XM, EX, XX },
+ { "punpckhqdq", XM, EX, XX },
+ { "(bad)", XM, EX, XX },
+ },
+ /* PREGRP25 */
+ {
+ { "movntq", Ev, MX, XX },
+ { "(bad)", Ev, XM, XX },
+ { "movntdq", Ev, XM, XX },
+ { "(bad)", Ev, XM, XX },
+ },
+ /* PREGRP26 */
+ {
+ { "(bad)", MX, EX, XX },
+ { "(bad)", XM, EX, XX },
+ { "punpcklqdq", XM, EX, XX },
+ { "(bad)", XM, EX, XX },
+ },
};
#define INTERNAL_DISASSEMBLER_ERROR _("<internal disassembler error>")
@@ -1951,13 +2761,39 @@ static const struct dis386 prefix_user_table[][2] = {
static void
ckprefix ()
{
+ int newrex;
+ rex = 0;
prefixes = 0;
used_prefixes = 0;
+ rex_used = 0;
while (1)
{
FETCH_DATA (the_info, codep + 1);
+ newrex = 0;
switch (*codep)
{
+ /* REX prefixes family. */
+ case 0x40:
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ case 0x44:
+ case 0x45:
+ case 0x46:
+ case 0x47:
+ case 0x48:
+ case 0x49:
+ case 0x4a:
+ case 0x4b:
+ case 0x4c:
+ case 0x4d:
+ case 0x4e:
+ case 0x4f:
+ if (mode_64bit)
+ newrex = *codep;
+ else
+ return;
+ break;
case 0xf3:
prefixes |= PREFIX_REPZ;
break;
@@ -2006,6 +2842,13 @@ ckprefix ()
default:
return;
}
+ /* Rex is ignored when followed by another prefix. */
+ if (rex)
+ {
+ oappend (prefix_name (rex, 0));
+ oappend (" ");
+ }
+ rex = newrex;
codep++;
}
}
@@ -2020,6 +2863,39 @@ prefix_name (pref, sizeflag)
{
switch (pref)
{
+ /* REX prefixes family. */
+ case 0x40:
+ return "rex";
+ case 0x41:
+ return "rexZ";
+ case 0x42:
+ return "rexY";
+ case 0x43:
+ return "rexYZ";
+ case 0x44:
+ return "rexX";
+ case 0x45:
+ return "rexXZ";
+ case 0x46:
+ return "rexXY";
+ case 0x47:
+ return "rexXYZ";
+ case 0x48:
+ return "rex64";
+ case 0x49:
+ return "rex64Z";
+ case 0x4a:
+ return "rex64Y";
+ case 0x4b:
+ return "rex64YZ";
+ case 0x4c:
+ return "rex64X";
+ case 0x4d:
+ return "rex64XZ";
+ case 0x4e:
+ return "rex64XY";
+ case 0x4f:
+ return "rex64XYZ";
case 0xf3:
return "repz";
case 0xf2:
@@ -2052,7 +2928,8 @@ prefix_name (pref, sizeflag)
static char op1out[100], op2out[100], op3out[100];
static int op_ad, op_index[3];
static unsigned int op_address[3];
-static unsigned int start_pc;
+static unsigned int op_riprel[3];
+static bfd_vma start_pc;
/*
@@ -2112,15 +2989,20 @@ print_insn_i386 (pc, info)
char *first, *second, *third;
int needcomma;
unsigned char need_modrm;
- unsigned char uses_f3_prefix;
+ unsigned char uses_SSE_prefix;
VOLATILE int sizeflag;
VOLATILE int orig_sizeflag;
struct dis_private priv;
bfd_byte *inbuf = priv.the_buffer;
+ mode_64bit = (info->mach == bfd_mach_x86_64_intel_syntax
+ || info->mach == bfd_mach_x86_64);
+
if (info->mach == bfd_mach_i386_i386
- || info->mach == bfd_mach_i386_i386_intel_syntax)
+ || info->mach == bfd_mach_x86_64
+ || info->mach == bfd_mach_i386_i386_intel_syntax
+ || info->mach == bfd_mach_x86_64_intel_syntax)
sizeflag = AFLAG|DFLAG;
else if (info->mach == bfd_mach_i386_i8086)
sizeflag = 0;
@@ -2173,6 +3055,7 @@ print_insn_i386 (pc, info)
return -1;
}
+ obufp = obuf;
ckprefix ();
insn_codep = codep;
@@ -2180,8 +3063,6 @@ print_insn_i386 (pc, info)
FETCH_DATA (info, codep + 1);
two_source_ops = (*codep == 0x62) || (*codep == 0xc8);
- obufp = obuf;
-
if ((prefixes & PREFIX_FWAIT)
&& ((*codep < 0xd8) || (*codep > 0xdf)))
{
@@ -2204,25 +3085,31 @@ print_insn_i386 (pc, info)
else
dp = &dis386_twobyte_att[*++codep];
need_modrm = twobyte_has_modrm[*codep];
- uses_f3_prefix = twobyte_uses_f3_prefix[*codep];
+ uses_SSE_prefix = twobyte_uses_SSE_prefix[*codep];
}
else
{
if (intel_syntax)
- dp = &dis386_intel[*codep];
+ if (mode_64bit)
+ dp = &dis386_64_intel[*codep];
+ else
+ dp = &dis386_intel[*codep];
else
- dp = &dis386_att[*codep];
+ if (mode_64bit)
+ dp = &disx86_64_att[*codep];
+ else
+ dp = &dis386_att[*codep];
need_modrm = onebyte_has_modrm[*codep];
- uses_f3_prefix = 0;
+ uses_SSE_prefix = 0;
}
codep++;
- if (!uses_f3_prefix && (prefixes & PREFIX_REPZ))
+ if (!uses_SSE_prefix && (prefixes & PREFIX_REPZ))
{
oappend ("repz ");
used_prefixes |= PREFIX_REPZ;
}
- if (prefixes & PREFIX_REPNZ)
+ if (!uses_SSE_prefix && (prefixes & PREFIX_REPNZ))
{
oappend ("repnz ");
used_prefixes |= PREFIX_REPNZ;
@@ -2233,7 +3120,7 @@ print_insn_i386 (pc, info)
used_prefixes |= PREFIX_LOCK;
}
- if (prefixes & PREFIX_DATA)
+ if (!uses_SSE_prefix && (prefixes & PREFIX_DATA))
sizeflag ^= DFLAG;
if (prefixes & PREFIX_ADDR)
@@ -2260,6 +3147,7 @@ print_insn_i386 (pc, info)
}
else
{
+ int index;
if (dp->name == NULL)
{
switch(dp->bytemode2)
@@ -2268,8 +3156,24 @@ print_insn_i386 (pc, info)
dp = &grps[dp->bytemode1][reg];
break;
case USE_PREFIX_USER_TABLE:
- dp = &prefix_user_table[dp->bytemode1][prefixes & PREFIX_REPZ ? 1 : 0];
+ index = 0;
used_prefixes |= (prefixes & PREFIX_REPZ);
+ if (prefixes & PREFIX_REPZ)
+ index = 1;
+ else
+ {
+ used_prefixes |= (prefixes & PREFIX_DATA);
+ if (prefixes & PREFIX_DATA)
+ index = 2;
+ else
+ {
+ used_prefixes |= (prefixes & PREFIX_REPNZ);
+ if (prefixes & PREFIX_REPNZ)
+ index = 3;
+
+ }
+ }
+ dp = &prefix_user_table[dp->bytemode1][index];
break;
default:
oappend (INTERNAL_DISASSEMBLER_ERROR);
@@ -2309,6 +3213,14 @@ print_insn_i386 (pc, info)
(*info->fprintf_func) (info->stream, "%s", name);
return 1;
}
+ if (rex & ~rex_used)
+ {
+ const char *name;
+ name = prefix_name (rex | 0x40, orig_sizeflag);
+ if (name == NULL)
+ name = INTERNAL_DISASSEMBLER_ERROR;
+ (*info->fprintf_func) (info->stream, "%s ", name);
+ }
obufp = obuf + strlen (obuf);
for (i = strlen (obuf); i < 6; i++)
@@ -2336,7 +3248,7 @@ print_insn_i386 (pc, info)
needcomma = 0;
if (*first)
{
- if (op_index[0] != -1)
+ if (op_index[0] != -1 && !op_riprel[0])
(*info->print_address_func) ((bfd_vma) op_address[op_index[0]], info);
else
(*info->fprintf_func) (info->stream, "%s", first);
@@ -2346,7 +3258,7 @@ print_insn_i386 (pc, info)
{
if (needcomma)
(*info->fprintf_func) (info->stream, ",");
- if (op_index[1] != -1)
+ if (op_index[1] != -1 && !op_riprel[1])
(*info->print_address_func) ((bfd_vma) op_address[op_index[1]], info);
else
(*info->fprintf_func) (info->stream, "%s", second);
@@ -2356,11 +3268,18 @@ print_insn_i386 (pc, info)
{
if (needcomma)
(*info->fprintf_func) (info->stream, ",");
- if (op_index[2] != -1)
+ if (op_index[2] != -1 && !op_riprel[2])
(*info->print_address_func) ((bfd_vma) op_address[op_index[2]], info);
else
(*info->fprintf_func) (info->stream, "%s", third);
}
+ for (i = 0; i < 3; i++)
+ if (op_index[i] != -1 && op_riprel[i])
+ {
+ (*info->fprintf_func) (info->stream, " # ");
+ (*info->print_address_func) ((bfd_vma) (start_pc + codep - start_codep
+ + op_address[op_index[i]]), info);
+ }
return codep - inbuf;
}
@@ -2786,6 +3705,27 @@ putop (template, sizeflag)
if (sizeflag & AFLAG)
*obufp++ = 'e';
break;
+ case 'I':
+ if (intel_syntax)
+ break;
+ if (mode_64bit)
+ *obufp++ = 'q';
+ else
+ {
+ if ((prefixes & PREFIX_DATA)
+#ifdef SUFFIX_ALWAYS
+ || (sizeflag & SUFFIX_ALWAYS)
+#endif
+ )
+ {
+ if (sizeflag & DFLAG)
+ *obufp++ = 'l';
+ else
+ *obufp++ = 'w';
+ used_prefixes |= (prefixes & PREFIX_DATA);
+ }
+ }
+ break;
case 'L':
if (intel_syntax)
break;
@@ -2800,42 +3740,68 @@ putop (template, sizeflag)
else
used_prefixes |= PREFIX_FWAIT;
break;
+ case 'O':
+ USED_REX (REX_MODE64);
+ if (rex & REX_MODE64)
+ *obufp++ = 'o';
+ else
+ *obufp++ = 'd';
+ break;
case 'P':
if (intel_syntax)
break;
if ((prefixes & PREFIX_DATA)
+ || (rex & REX_MODE64)
#ifdef SUFFIX_ALWAYS
|| (sizeflag & SUFFIX_ALWAYS)
#endif
)
{
- if (sizeflag & DFLAG)
- *obufp++ = 'l';
- else
- *obufp++ = 'w';
- used_prefixes |= (prefixes & PREFIX_DATA);
+ USED_REX (REX_MODE64);
+ if (rex & REX_MODE64)
+ *obufp++ = 'q';
+ else
+ {
+ if (sizeflag & DFLAG)
+ *obufp++ = 'l';
+ else
+ *obufp++ = 'w';
+ used_prefixes |= (prefixes & PREFIX_DATA);
+ }
}
break;
case 'Q':
if (intel_syntax)
break;
+ USED_REX (REX_MODE64);
if (mod != 3
#ifdef SUFFIX_ALWAYS
|| (sizeflag & SUFFIX_ALWAYS)
#endif
)
{
- if (sizeflag & DFLAG)
- *obufp++ = 'l';
+ if (rex & REX_MODE64)
+ *obufp++ = 'q';
else
- *obufp++ = 'w';
- used_prefixes |= (prefixes & PREFIX_DATA);
+ {
+ if (sizeflag & DFLAG)
+ *obufp++ = 'l';
+ else
+ *obufp++ = 'w';
+ used_prefixes |= (prefixes & PREFIX_DATA);
+ }
}
break;
case 'R':
+ USED_REX (REX_MODE64);
if (intel_syntax)
{
- if (sizeflag & DFLAG)
+ if (rex & REX_MODE64)
+ {
+ *obufp++ = 'q';
+ *obufp++ = 't';
+ }
+ else if (sizeflag & DFLAG)
{
*obufp++ = 'd';
*obufp++ = 'q';
@@ -2848,12 +3814,15 @@ putop (template, sizeflag)
}
else
{
- if (sizeflag & DFLAG)
+ if (rex & REX_MODE64)
+ *obufp++ = 'q';
+ else if (sizeflag & DFLAG)
*obufp++ = 'l';
else
*obufp++ = 'w';
}
- used_prefixes |= (prefixes & PREFIX_DATA);
+ if (!(rex & REX_MODE64))
+ used_prefixes |= (prefixes & PREFIX_DATA);
break;
case 'S':
if (intel_syntax)
@@ -2861,22 +3830,70 @@ putop (template, sizeflag)
#ifdef SUFFIX_ALWAYS
if (sizeflag & SUFFIX_ALWAYS)
{
+ if (rex & REX_MODE64)
+ *obufp++ = 'q';
+ else
+ {
+ if (sizeflag & DFLAG)
+ *obufp++ = 'l';
+ else
+ *obufp++ = 'w';
+ used_prefixes |= (prefixes & PREFIX_DATA);
+ }
+ }
+#endif
+ break;
+ case 'T':
+ if (intel_syntax)
+ break;
+ if (mode_64bit)
+ *obufp++ = 'q';
+ else if (mod != 3
+#ifdef SUFFIX_ALWAYS
+ || (sizeflag & SUFFIX_ALWAYS)
+#endif
+ )
+ {
if (sizeflag & DFLAG)
*obufp++ = 'l';
else
*obufp++ = 'w';
used_prefixes |= (prefixes & PREFIX_DATA);
}
-#endif
break;
+ case 'X':
+ if (prefixes & PREFIX_DATA)
+ *obufp++ = 'd';
+ else
+ *obufp++ = 's';
+ used_prefixes |= (prefixes & PREFIX_DATA);
+ break;
+ case 'Y':
+ if (intel_syntax)
+ break;
+ if (rex & REX_MODE64)
+ {
+ USED_REX (REX_MODE64);
+ *obufp++ = 'q';
+ }
+ break;
+ /* implicit operand size 'l' for i386 or 'q' for x86-64 */
case 'W':
/* operand size flag for cwtl, cbtw */
- if (sizeflag & DFLAG)
+ USED_REX (0);
+ if (rex)
+ *obufp++ = 'l';
+ else if (sizeflag & DFLAG)
*obufp++ = 'w';
else
*obufp++ = 'b';
if (intel_syntax)
{
+ if (rex)
+ {
+ *obufp++ = 'q';
+ *obufp++ = 'e';
+ }
if (sizeflag & DFLAG)
{
*obufp++ = 'd';
@@ -2887,7 +3904,8 @@ putop (template, sizeflag)
*obufp++ = 'w';
}
}
- used_prefixes |= (prefixes & PREFIX_DATA);
+ if (!rex)
+ used_prefixes |= (prefixes & PREFIX_DATA);
break;
}
}
@@ -2948,11 +3966,76 @@ OP_indirE (bytemode, sizeflag)
}
static void
+print_operand_value (buf, hex, disp)
+ char *buf;
+ int hex;
+ bfd_vma disp;
+{
+ if (mode_64bit)
+ {
+ if (hex)
+ {
+ char tmp[30];
+ int i;
+ buf[0] = '0';
+ buf[1] = 'x';
+ sprintf_vma (tmp, disp);
+ for (i = 0; tmp[i] == '0' && tmp[i+1]; i++);
+ strcpy (buf + 2, tmp + i);
+ }
+ else
+ {
+ bfd_signed_vma v = disp;
+ char tmp[30];
+ int i;
+ if (v < 0)
+ {
+ *(buf++) = '-';
+ v = -disp;
+ /* Check for possible overflow on 0x8000000000000000 */
+ if (v < 0)
+ {
+ strcpy (buf, "9223372036854775808");
+ return;
+ }
+ }
+ if (!v)
+ {
+ strcpy (buf, "0");
+ return;
+ }
+
+ i = 0;
+ tmp[29] = 0;
+ while (v)
+ {
+ tmp[28-i] = (v % 10) + '0';
+ v /= 10;
+ i++;
+ }
+ strcpy (buf, tmp + 29 - i);
+ }
+ }
+ else
+ {
+ if (hex)
+ sprintf (buf, "0x%x", (unsigned int) disp);
+ else
+ sprintf (buf, "%d", (int) disp);
+ }
+}
+
+static void
OP_E (bytemode, sizeflag)
int bytemode;
int sizeflag;
{
- int disp;
+ bfd_vma disp;
+ int add = 0;
+ int riprel = 0;
+ USED_REX (REX_EXTZ);
+ if (rex & REX_EXTZ)
+ add += 8;
/* skip mod/rm byte */
codep++;
@@ -2962,23 +4045,41 @@ OP_E (bytemode, sizeflag)
switch (bytemode)
{
case b_mode:
- oappend (names8[rm]);
+ USED_REX (0);
+ if (rex)
+ oappend (names8rex[rm + add]);
+ else
+ oappend (names8[rm + add]);
break;
case w_mode:
- oappend (names16[rm]);
+ oappend (names16[rm + add]);
break;
case d_mode:
- oappend (names32[rm]);
+ oappend (names32[rm + add]);
+ break;
+ case q_mode:
+ oappend (names64[rm + add]);
+ break;
+ case m_mode:
+ if (mode_64bit)
+ oappend (names64[rm + add]);
+ else
+ oappend (names32[rm + add]);
break;
case v_mode:
- if (sizeflag & DFLAG)
- oappend (names32[rm]);
+ USED_REX (REX_MODE64);
+ if (rex & REX_MODE64)
+ oappend (names64[rm + add]);
+ else if (sizeflag & DFLAG)
+ oappend (names32[rm + add]);
else
- oappend (names16[rm]);
+ oappend (names16[rm + add]);
used_prefixes |= (prefixes & PREFIX_DATA);
break;
case 0:
- if ( !(codep[-2] == 0xAE && codep[-1] == 0xF8 /* sfence */))
+ if ( !(codep[-2] == 0xAE && codep[-1] == 0xF8 /* sfence */)
+ && !(codep[-2] == 0xAE && codep[-1] == 0xF0 /* mfence */)
+ && !(codep[-2] == 0xAE && codep[-1] == 0xe8 /* lfence */))
BadOp(); /* bad sfence,lea,lds,les,lfs,lgs,lss modrm */
break;
default:
@@ -3010,16 +4111,24 @@ OP_E (bytemode, sizeflag)
scale = (*codep >> 6) & 3;
index = (*codep >> 3) & 7;
base = *codep & 7;
+ USED_REX (REX_EXTY);
+ USED_REX (REX_EXTZ);
+ if (rex & REX_EXTY)
+ index += 8;
+ if (rex & REX_EXTZ)
+ base += 8;
codep++;
}
switch (mod)
{
case 0:
- if (base == 5)
+ if ((base & 7) == 5)
{
havebase = 0;
- disp = get32 ();
+ if (mode_64bit && !havesib)
+ riprel = 1;
+ disp = get32s ();
}
break;
case 1:
@@ -3029,15 +4138,20 @@ OP_E (bytemode, sizeflag)
disp -= 0x100;
break;
case 2:
- disp = get32 ();
+ disp = get32s ();
break;
}
if (!intel_syntax)
- if (mod != 0 || base == 5)
+ if (mod != 0 || (base & 7) == 5)
{
- sprintf (scratchbuf, "0x%x", disp);
+ print_operand_value (scratchbuf, !riprel, disp);
oappend (scratchbuf);
+ if (riprel)
+ {
+ set_op (disp, 1);
+ oappend ("(%rip)");
+ }
}
if (havebase || (havesib && (index != 4 || scale != 0)))
@@ -3047,28 +4161,39 @@ OP_E (bytemode, sizeflag)
switch (bytemode)
{
case b_mode:
- oappend("BYTE PTR ");
+ oappend ("BYTE PTR ");
break;
case w_mode:
- oappend("WORD PTR ");
+ oappend ("WORD PTR ");
break;
case v_mode:
- oappend("DWORD PTR ");
+ oappend ("DWORD PTR ");
break;
case d_mode:
- oappend("QWORD PTR ");
+ oappend ("QWORD PTR ");
break;
+ case m_mode:
+ if (mode_64bit)
+ oappend ("DWORD PTR ");
+ else
+ oappend ("QWORD PTR ");
+ break;
case x_mode:
- oappend("XWORD PTR ");
+ oappend ("XWORD PTR ");
break;
default:
break;
}
}
*obufp++ = open_char;
+ if (intel_syntax && riprel)
+ oappend ("rip + ");
*obufp = '\0';
+ USED_REX (REX_EXTZ);
+ if (!havesib && (rex & REX_EXTZ))
+ base += 8;
if (havebase)
- oappend (names32[base]);
+ oappend (mode_64bit ? names64[base] : names32[base]);
if (havesib)
{
if (index != 4)
@@ -3080,10 +4205,10 @@ OP_E (bytemode, sizeflag)
*obufp++ = separator_char;
*obufp = '\0';
}
- sprintf (scratchbuf, "%s", names32[index]);
+ sprintf (scratchbuf, "%s", mode_64bit ? names64[index] : names32[index]);
}
else
- sprintf (scratchbuf, ",%s", names32[index]);
+ sprintf (scratchbuf, ",%s", mode_64bit ? names64[index] : names32[index]);
oappend (scratchbuf);
}
if (!intel_syntax
@@ -3099,17 +4224,12 @@ OP_E (bytemode, sizeflag)
}
}
if (intel_syntax)
- if (mod != 0 || base == 5)
+ if (mod != 0 || (base & 7) == 5)
{
/* Don't print zero displacements */
- if (disp > 0)
+ if (disp != 0)
{
- sprintf (scratchbuf, "+%d", disp);
- oappend (scratchbuf);
- }
- else if (disp < 0)
- {
- sprintf (scratchbuf, "%d", disp);
+ print_operand_value (scratchbuf, 0, disp);
oappend (scratchbuf);
}
}
@@ -3119,7 +4239,7 @@ OP_E (bytemode, sizeflag)
}
else if (intel_syntax)
{
- if (mod != 0 || base == 5)
+ if (mod != 0 || (base & 7) == 5)
{
if (prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS
| PREFIX_ES | PREFIX_FS | PREFIX_GS))
@@ -3129,7 +4249,7 @@ OP_E (bytemode, sizeflag)
oappend (names_seg[3]);
oappend (":");
}
- sprintf (scratchbuf, "0x%x", disp);
+ print_operand_value (scratchbuf, 1, disp);
oappend (scratchbuf);
}
}
@@ -3139,7 +4259,7 @@ OP_E (bytemode, sizeflag)
switch (mod)
{
case 0:
- if (rm == 6)
+ if ((rm & 7) == 6)
{
disp = get16 ();
if ((disp & 0x8000) != 0)
@@ -3160,17 +4280,17 @@ OP_E (bytemode, sizeflag)
}
if (!intel_syntax)
- if (mod != 0 || rm == 6)
+ if (mod != 0 || (rm & 7) == 6)
{
- sprintf (scratchbuf, "%d", disp);
+ print_operand_value (scratchbuf, 0, disp);
oappend (scratchbuf);
}
- if (mod != 0 || rm != 6)
+ if (mod != 0 || (rm & 7) != 6)
{
*obufp++ = open_char;
*obufp = '\0';
- oappend (index16[rm]);
+ oappend (index16[rm + add]);
*obufp++ = close_char;
*obufp = '\0';
}
@@ -3182,22 +4302,36 @@ OP_G (bytemode, sizeflag)
int bytemode;
int sizeflag;
{
+ int add = 0;
+ USED_REX (REX_EXTX);
+ if (rex & REX_EXTX)
+ add += 8;
switch (bytemode)
{
case b_mode:
- oappend (names8[reg]);
+ USED_REX (0);
+ if (rex)
+ oappend (names8rex[reg + add]);
+ else
+ oappend (names8[reg + add]);
break;
case w_mode:
- oappend (names16[reg]);
+ oappend (names16[reg + add]);
break;
case d_mode:
- oappend (names32[reg]);
+ oappend (names32[reg + add]);
+ break;
+ case q_mode:
+ oappend (names64[reg + add]);
break;
case v_mode:
- if (sizeflag & DFLAG)
- oappend (names32[reg]);
+ USED_REX (REX_MODE64);
+ if (rex & REX_MODE64)
+ oappend (names64[reg + add]);
+ else if (sizeflag & DFLAG)
+ oappend (names32[reg + add]);
else
- oappend (names16[reg]);
+ oappend (names16[reg + add]);
used_prefixes |= (prefixes & PREFIX_DATA);
break;
default:
@@ -3206,16 +4340,56 @@ OP_G (bytemode, sizeflag)
}
}
-static int
+static bfd_vma
+get64 ()
+{
+ unsigned int a = 0;
+ unsigned int b = 0;
+ bfd_vma x = 0;
+
+#ifdef BFD64
+ FETCH_DATA (the_info, codep + 8);
+ a = *codep++ & 0xff;
+ a |= (*codep++ & 0xff) << 8;
+ a |= (*codep++ & 0xff) << 16;
+ a |= (*codep++ & 0xff) << 24;
+ b |= (*codep++ & 0xff);
+ b |= (*codep++ & 0xff) << 8;
+ b |= (*codep++ & 0xff) << 16;
+ b |= (*codep++ & 0xff) << 24;
+ x = a + ((bfd_vma) b << 32);
+#else
+ abort();
+#endif
+ return x;
+}
+
+static bfd_signed_vma
get32 ()
{
- int x = 0;
+ bfd_signed_vma x = 0;
FETCH_DATA (the_info, codep + 4);
- x = *codep++ & 0xff;
- x |= (*codep++ & 0xff) << 8;
- x |= (*codep++ & 0xff) << 16;
- x |= (*codep++ & 0xff) << 24;
+ x = *codep++ & (bfd_signed_vma) 0xff;
+ x |= (*codep++ & (bfd_signed_vma) 0xff) << 8;
+ x |= (*codep++ & (bfd_signed_vma) 0xff) << 16;
+ x |= (*codep++ & (bfd_signed_vma) 0xff) << 24;
+ return x;
+}
+
+static bfd_signed_vma
+get32s ()
+{
+ bfd_signed_vma x = 0;
+
+ FETCH_DATA (the_info, codep + 4);
+ x = *codep++ & (bfd_signed_vma) 0xff;
+ x |= (*codep++ & (bfd_signed_vma) 0xff) << 8;
+ x |= (*codep++ & (bfd_signed_vma) 0xff) << 16;
+ x |= (*codep++ & (bfd_signed_vma) 0xff) << 24;
+
+ x = (x ^ ((bfd_signed_vma) 1 << 31)) - ((bfd_signed_vma) 1 << 31);
+
return x;
}
@@ -3231,11 +4405,13 @@ get16 ()
}
static void
-set_op (op)
+set_op (op, riprel)
unsigned int op;
+ int riprel;
{
op_index[op_ad] = op_ad;
op_address[op_ad] = op;
+ op_riprel[op_ad] = riprel;
}
static void
@@ -3244,6 +4420,60 @@ OP_REG (code, sizeflag)
int sizeflag;
{
const char *s;
+ int add = 0;
+ USED_REX (REX_EXTZ);
+ if (rex & REX_EXTZ)
+ add = 8;
+
+ switch (code)
+ {
+ case indir_dx_reg:
+ s = "(%dx)";
+ break;
+ case ax_reg: case cx_reg: case dx_reg: case bx_reg:
+ case sp_reg: case bp_reg: case si_reg: case di_reg:
+ s = names16[code - ax_reg + add];
+ break;
+ case es_reg: case ss_reg: case cs_reg:
+ case ds_reg: case fs_reg: case gs_reg:
+ s = names_seg[code - es_reg + add];
+ break;
+ case al_reg: case ah_reg: case cl_reg: case ch_reg:
+ case dl_reg: case dh_reg: case bl_reg: case bh_reg:
+ USED_REX (0);
+ if (rex)
+ s = names8rex[code - al_reg + add];
+ else
+ s = names8[code - al_reg];
+ break;
+ case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg:
+ case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg:
+ USED_REX (REX_MODE64);
+ if (rex & REX_MODE64)
+ s = names64[code - eAX_reg + add];
+ else if (sizeflag & DFLAG)
+ s = names32[code - eAX_reg + add];
+ else
+ s = names16[code - eAX_reg + add];
+ used_prefixes |= (prefixes & PREFIX_DATA);
+ break;
+ case rAX_reg: case rCX_reg: case rDX_reg: case rBX_reg:
+ case rSP_reg: case rBP_reg: case rSI_reg: case rDI_reg:
+ s = names64[code - rAX_reg + add];
+ break;
+ default:
+ s = INTERNAL_DISASSEMBLER_ERROR;
+ break;
+ }
+ oappend (s);
+}
+
+static void
+OP_IMREG (code, sizeflag)
+ int code;
+ int sizeflag;
+{
+ const char *s;
switch (code)
{
@@ -3260,11 +4490,18 @@ OP_REG (code, sizeflag)
break;
case al_reg: case ah_reg: case cl_reg: case ch_reg:
case dl_reg: case dh_reg: case bl_reg: case bh_reg:
- s = names8[code - al_reg];
+ USED_REX (0);
+ if (rex)
+ s = names8rex[code - al_reg];
+ else
+ s = names8[code - al_reg];
break;
case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg:
case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg:
- if (sizeflag & DFLAG)
+ USED_REX (REX_MODE64);
+ if (rex & REX_MODE64)
+ s = names64[code - eAX_reg];
+ else if (sizeflag & DFLAG)
s = names32[code - eAX_reg];
else
s = names16[code - eAX_reg];
@@ -3282,22 +4519,37 @@ OP_I (bytemode, sizeflag)
int bytemode;
int sizeflag;
{
- int op;
+ bfd_signed_vma op;
+ bfd_signed_vma mask = -1;
switch (bytemode)
{
case b_mode:
FETCH_DATA (the_info, codep + 1);
- op = *codep++ & 0xff;
+ op = *codep++;
+ mask = 0xff;
+ break;
+ case q_mode:
+ op = get32s ();
break;
case v_mode:
- if (sizeflag & DFLAG)
- op = get32 ();
+ USED_REX (REX_MODE64);
+ if (rex & REX_MODE64)
+ op = get32s ();
+ else if (sizeflag & DFLAG)
+ {
+ op = get32 ();
+ mask = 0xffffffff;
+ }
else
- op = get16 ();
+ {
+ op = get16 ();
+ mask = 0xfffff;
+ }
used_prefixes |= (prefixes & PREFIX_DATA);
break;
case w_mode:
+ mask = 0xfffff;
op = get16 ();
break;
default:
@@ -3305,10 +4557,56 @@ OP_I (bytemode, sizeflag)
return;
}
- if (intel_syntax)
- sprintf (scratchbuf, "0x%x", op);
- else
- sprintf (scratchbuf, "$0x%x", op);
+ op &= mask;
+ scratchbuf[0] = '$';
+ print_operand_value (scratchbuf + !intel_syntax, 1, op);
+ oappend (scratchbuf);
+ scratchbuf[0] = '\0';
+}
+
+static void
+OP_I64 (bytemode, sizeflag)
+ int bytemode;
+ int sizeflag;
+{
+ bfd_signed_vma op;
+ bfd_signed_vma mask = -1;
+
+ switch (bytemode)
+ {
+ case b_mode:
+ FETCH_DATA (the_info, codep + 1);
+ op = *codep++;
+ mask = 0xff;
+ break;
+ case v_mode:
+ USED_REX (REX_MODE64);
+ if (rex & REX_MODE64)
+ op = get64 ();
+ else if (sizeflag & DFLAG)
+ {
+ op = get32 ();
+ mask = 0xffffffff;
+ }
+ else
+ {
+ op = get16 ();
+ mask = 0xfffff;
+ }
+ used_prefixes |= (prefixes & PREFIX_DATA);
+ break;
+ case w_mode:
+ mask = 0xfffff;
+ op = get16 ();
+ break;
+ default:
+ oappend (INTERNAL_DISASSEMBLER_ERROR);
+ return;
+ }
+
+ op &= mask;
+ scratchbuf[0] = '$';
+ print_operand_value (scratchbuf + !intel_syntax, 1, op);
oappend (scratchbuf);
scratchbuf[0] = '\0';
}
@@ -3318,7 +4616,8 @@ OP_sI (bytemode, sizeflag)
int bytemode;
int sizeflag;
{
- int op;
+ bfd_signed_vma op;
+ bfd_signed_vma mask = -1;
switch (bytemode)
{
@@ -3327,12 +4626,20 @@ OP_sI (bytemode, sizeflag)
op = *codep++;
if ((op & 0x80) != 0)
op -= 0x100;
+ mask = 0xffffffff;
break;
case v_mode:
- if (sizeflag & DFLAG)
- op = get32 ();
+ USED_REX (REX_MODE64);
+ if (rex & REX_MODE64)
+ op = get32s ();
+ else if (sizeflag & DFLAG)
+ {
+ op = get32s ();
+ mask = 0xffffffff;
+ }
else
{
+ mask = 0xffffffff;
op = get16();
if ((op & 0x8000) != 0)
op -= 0x10000;
@@ -3341,6 +4648,7 @@ OP_sI (bytemode, sizeflag)
break;
case w_mode:
op = get16 ();
+ mask = 0xffffffff;
if ((op & 0x8000) != 0)
op -= 0x10000;
break;
@@ -3348,10 +4656,9 @@ OP_sI (bytemode, sizeflag)
oappend (INTERNAL_DISASSEMBLER_ERROR);
return;
}
- if (intel_syntax)
- sprintf (scratchbuf, "%d", op);
- else
- sprintf (scratchbuf, "$0x%x", op);
+
+ scratchbuf[0] = '$';
+ print_operand_value (scratchbuf + 1, 1, op);
oappend (scratchbuf);
}
@@ -3360,7 +4667,7 @@ OP_J (bytemode, sizeflag)
int bytemode;
int sizeflag;
{
- int disp;
+ bfd_vma disp;
int mask = -1;
switch (bytemode)
@@ -3373,7 +4680,7 @@ OP_J (bytemode, sizeflag)
break;
case v_mode:
if (sizeflag & DFLAG)
- disp = get32 ();
+ disp = get32s ();
else
{
disp = get16 ();
@@ -3389,8 +4696,8 @@ OP_J (bytemode, sizeflag)
return;
}
disp = (start_pc + codep - start_codep + disp) & mask;
- set_op (disp);
- sprintf (scratchbuf, "0x%x", disp);
+ set_op (disp, 0);
+ print_operand_value (scratchbuf, 1, disp);
oappend (scratchbuf);
}
@@ -3432,11 +4739,11 @@ OP_DIR (dummy, sizeflag)
/* ARGSUSED */
static void
-OP_OFF (ignore, sizeflag)
- int ignore ATTRIBUTE_UNUSED;
+OP_OFF (ignored, sizeflag)
+ int ignored ATTRIBUTE_UNUSED;
int sizeflag;
{
- int off;
+ bfd_vma off;
append_seg ();
@@ -3454,7 +4761,31 @@ OP_OFF (ignore, sizeflag)
oappend (":");
}
}
- sprintf (scratchbuf, "0x%x", off);
+ print_operand_value (scratchbuf, 1, off);
+ oappend (scratchbuf);
+}
+/* ARGSUSED */
+static void
+OP_OFF64 (ignored, sizeflag)
+ int ignored ATTRIBUTE_UNUSED;
+ int sizeflag ATTRIBUTE_UNUSED;
+{
+ bfd_vma off;
+
+ append_seg ();
+
+ off = get64();
+
+ if (intel_syntax)
+ {
+ if (!(prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS
+ | PREFIX_ES | PREFIX_FS | PREFIX_GS)))
+ {
+ oappend (names_seg[3]);
+ oappend (":");
+ }
+ }
+ print_operand_value (scratchbuf, 1, off);
oappend (scratchbuf);
}
@@ -3465,7 +4796,10 @@ ptr_reg (code, sizeflag)
{
const char *s;
oappend ("(");
- if (sizeflag & AFLAG)
+ USED_REX (REX_MODE64);
+ if (rex & REX_MODE64)
+ s = names64[code - eAX_reg];
+ else if (sizeflag & AFLAG)
s = names32[code - eAX_reg];
else
s = names16[code - eAX_reg];
@@ -3505,7 +4839,11 @@ OP_C (dummy, sizeflag)
int dummy ATTRIBUTE_UNUSED;
int sizeflag ATTRIBUTE_UNUSED;
{
- sprintf (scratchbuf, "%%cr%d", reg);
+ int add = 0;
+ USED_REX (REX_EXTX);
+ if (rex & REX_EXTX)
+ add = 8;
+ sprintf (scratchbuf, "%%cr%d", reg+add);
oappend (scratchbuf);
}
@@ -3515,7 +4853,11 @@ OP_D (dummy, sizeflag)
int dummy ATTRIBUTE_UNUSED;
int sizeflag ATTRIBUTE_UNUSED;
{
- sprintf (scratchbuf, "%%db%d", reg);
+ int add = 0;
+ USED_REX (REX_EXTX);
+ if (rex & REX_EXTX)
+ add = 8;
+ sprintf (scratchbuf, "%%db%d", reg+add);
oappend (scratchbuf);
}
@@ -3545,7 +4887,15 @@ OP_MMX (ignore, sizeflag)
int ignore ATTRIBUTE_UNUSED;
int sizeflag ATTRIBUTE_UNUSED;
{
- sprintf (scratchbuf, "%%mm%d", reg);
+ int add = 0;
+ USED_REX (REX_EXTX);
+ if (rex & REX_EXTX)
+ add = 8;
+ used_prefixes |= (prefixes & PREFIX_DATA);
+ if (prefixes & PREFIX_DATA)
+ sprintf (scratchbuf, "%%xmm%d", reg + add);
+ else
+ sprintf (scratchbuf, "%%mm%d", reg + add);
oappend (scratchbuf);
}
@@ -3554,7 +4904,11 @@ OP_XMM (bytemode, sizeflag)
int bytemode ATTRIBUTE_UNUSED;
int sizeflag ATTRIBUTE_UNUSED;
{
- sprintf (scratchbuf, "%%xmm%d", reg);
+ int add = 0;
+ USED_REX (REX_EXTX);
+ if (rex & REX_EXTX)
+ add = 8;
+ sprintf (scratchbuf, "%%xmm%d", reg + add);
oappend (scratchbuf);
}
@@ -3563,14 +4917,22 @@ OP_EM (bytemode, sizeflag)
int bytemode;
int sizeflag;
{
+ int add = 0;
if (mod != 3)
{
OP_E (bytemode, sizeflag);
return;
}
+ USED_REX (REX_EXTZ);
+ if (rex & REX_EXTZ)
+ add = 8;
codep++;
- sprintf (scratchbuf, "%%mm%d", rm);
+ used_prefixes |= (prefixes & PREFIX_DATA);
+ if (prefixes & PREFIX_DATA)
+ sprintf (scratchbuf, "%%xmm%d", rm + add);
+ else
+ sprintf (scratchbuf, "%%mm%d", rm + add);
oappend (scratchbuf);
}
@@ -3579,14 +4941,18 @@ OP_EX (bytemode, sizeflag)
int bytemode;
int sizeflag;
{
+ int add = 0;
if (mod != 3)
{
OP_E (bytemode, sizeflag);
return;
}
+ USED_REX (REX_EXTZ);
+ if (rex & REX_EXTZ)
+ add = 8;
codep++;
- sprintf (scratchbuf, "%%xmm%d", rm);
+ sprintf (scratchbuf, "%%xmm%d", rm + add);
oappend (scratchbuf);
}
@@ -3719,9 +5085,24 @@ OP_SIMD_Suffix (bytemode, sizeflag)
cmp_type = *codep++ & 0xff;
if (cmp_type < 8)
{
- sprintf (scratchbuf, "cmp%s%cs",
- simd_cmp_op[cmp_type],
- prefixes & PREFIX_REPZ ? 's' : 'p');
+ char suffix1 = 'p', suffix2 = 's';
+ used_prefixes |= (prefixes & PREFIX_REPZ);
+ if (prefixes & PREFIX_REPZ)
+ suffix1 = 's';
+ else
+ {
+ used_prefixes |= (prefixes & PREFIX_DATA);
+ if (prefixes & PREFIX_DATA)
+ suffix2 = 'd';
+ else
+ {
+ used_prefixes |= (prefixes & PREFIX_REPNZ);
+ if (prefixes & PREFIX_REPNZ)
+ suffix1 = 's', suffix2 = 'd';
+ }
+ }
+ sprintf (scratchbuf, "cmp%s%c%c",
+ simd_cmp_op[cmp_type], suffix1, suffix2);
used_prefixes |= (prefixes & PREFIX_REPZ);
oappend (scratchbuf);
}
diff --git a/contrib/binutils/opcodes/opintl.h b/contrib/binutils/opcodes/opintl.h
index a590160..492fc1a 100644
--- a/contrib/binutils/opcodes/opintl.h
+++ b/contrib/binutils/opcodes/opintl.h
@@ -12,6 +12,19 @@
#ifdef ENABLE_NLS
# include <libintl.h>
+/* Note the use of dgetext() and PACKAGE here, rather than gettext().
+
+ This is because the code in this directory is used to build a library which
+ will be linked with code in other directories to form programs. We want to
+ maintain a seperate translation file for this directory however, rather
+ than being forced to merge it with that of any program linked to
+ libopcodes. This is a library, so it cannot depend on the catalog
+ currently loaded.
+
+ In order to do this, we have to make sure that when we extract messages we
+ use the OPCODES domain rather than the domain of the program that included
+ the opcodes library, (eg OBJDUMP). Hence we use dgettext (PACKAGE, String)
+ and define PACKAGE to be 'opcodes'. (See the code in configure). */
# define _(String) dgettext (PACKAGE, String)
# ifdef gettext_noop
# define N_(String) gettext_noop (String)
@@ -19,12 +32,11 @@
# define N_(String) (String)
# endif
#else
-/* Stubs that do something close enough. */
-# define textdomain(String) (String)
-# define gettext(String) (String)
-# define dgettext(Domain,Message) (Message)
-# define dcgettext(Domain,Message,Type) (Message)
-# define bindtextdomain(Domain,Directory) (Domain)
+# 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/contrib/binutils/opcodes/po/POTFILES.in b/contrib/binutils/opcodes/po/POTFILES.in
index f88ddb1..b30cbd5 100644
--- a/contrib/binutils/opcodes/po/POTFILES.in
+++ b/contrib/binutils/opcodes/po/POTFILES.in
@@ -2,6 +2,7 @@ a29k-dis.c
alpha-dis.c
alpha-opc.c
arc-dis.c
+arc-ext.c
arc-opc.c
arm-dis.c
arm-opc.h
@@ -9,6 +10,8 @@ avr-dis.c
cgen-asm.c
cgen-dis.c
cgen-opc.c
+cris-dis.c
+cris-opc.c
d10v-dis.c
d10v-opc.c
d30v-dis.c
@@ -29,7 +32,20 @@ hppa-dis.c
i370-dis.c
i370-opc.c
i386-dis.c
+i860-dis.c
i960-dis.c
+ia64-asmtab.c
+ia64-asmtab.h
+ia64-dis.c
+ia64-gen.c
+ia64-opc-a.c
+ia64-opc-b.c
+ia64-opc.c
+ia64-opc-d.c
+ia64-opc-f.c
+ia64-opc.h
+ia64-opc-i.c
+ia64-opc-m.c
m10200-dis.c
m10200-opc.c
m10300-dis.c
@@ -42,6 +58,8 @@ m32r-ibld.c
m32r-opc.c
m32r-opc.h
m32r-opinst.c
+m68hc11-dis.c
+m68hc11-opc.c
m68k-dis.c
m68k-opc.c
m88k-dis.c
@@ -61,6 +79,8 @@ sparc-dis.c
sparc-opc.c
sysdep.h
tic30-dis.c
+tic54x-dis.c
+tic54x-opc.c
tic80-dis.c
tic80-opc.c
v850-dis.c
diff --git a/contrib/binutils/opcodes/po/opcodes.pot b/contrib/binutils/opcodes/po/opcodes.pot
index c5c26b8..3336bbd 100644
--- a/contrib/binutils/opcodes/po/opcodes.pot
+++ b/contrib/binutils/opcodes/po/opcodes.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-04-04 22:10+0930\n"
+"POT-Creation-Date: 2001-01-11 12:44-0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,58 +22,49 @@ msgstr ""
msgid "jump hint unaligned"
msgstr ""
-#: arc-dis.c:231
-msgid "*unknown*"
-msgstr ""
-
-#: arc-opc.c:629
-msgid "unable to fit different valued constants into instruction"
-msgstr ""
-
-#: arc-opc.c:639
-msgid "auxiliary register not allowed here"
-msgstr ""
-
-#: arc-opc.c:652
-#, c-format
-msgid "invalid register number `%d'"
-msgstr ""
-
-#: arc-opc.c:775
-#, c-format
-msgid "value won't fit in range %ld - %ld"
-msgstr ""
-
-#: arc-opc.c:871
-msgid "branch address not on 4 byte boundary"
+#: arc-dis.c:52
+msgid "Illegal limm reference in last instruction!\n"
msgstr ""
-#: arm-dis.c:470
+#: arm-dis.c:489
msgid "<illegal precision>"
msgstr ""
-#: arm-dis.c:882
+#: arm-dis.c:904
#, c-format
msgid "Unrecognised register name set: %s\n"
msgstr ""
-#: arm-dis.c:889
+#: arm-dis.c:911
#, c-format
msgid "Unrecognised disassembler option: %s\n"
msgstr ""
-#: arm-dis.c:1053
+#: arm-dis.c:1083
msgid ""
"\n"
"The following ARM specific disassembler options are supported for use with\n"
"the -M switch:\n"
msgstr ""
+#: avr-dis.c:118 avr-dis.c:128
+msgid "undefined"
+msgstr ""
+
+#: avr-dis.c:180
+msgid "Internal disassembler error"
+msgstr ""
+
+#: avr-dis.c:228
+#, c-format
+msgid "unknown constraint `%c'"
+msgstr ""
+
#: cgen-asm.c:224
msgid "unrecognized keyword/register name"
msgstr ""
-#: cgen-asm.c:332 fr30-ibld.c:223 m32r-ibld.c:227
+#: cgen-asm.c:332 fr30-ibld.c:232 m32r-ibld.c:232
#, c-format
msgid "operand out of range (%ld not between %ld and %ld)"
msgstr ""
@@ -83,7 +74,7 @@ msgstr ""
msgid "operand out of range (%lu not between %lu and %lu)"
msgstr ""
-#: d30v-dis.c:305
+#: d30v-dis.c:306
#, c-format
msgid "<unknown register %d>"
msgstr ""
@@ -105,93 +96,100 @@ msgid "Unrecognized field %d while parsing.\n"
msgstr ""
#. We couldn't parse it.
-#: fr30-asm.c:369 fr30-asm.c:373 fr30-asm.c:447 m32r-asm.c:377 m32r-asm.c:381
-#: m32r-asm.c:455
+#: fr30-asm.c:369 fr30-asm.c:373 fr30-asm.c:449 m32r-asm.c:377 m32r-asm.c:381
+#: m32r-asm.c:457
msgid "unrecognized instruction"
msgstr ""
-#. Syntax char didn't match. Can't be this insn.
-#. FIXME: would like to return something like
-#. "expected char `c'"
#: fr30-asm.c:415 m32r-asm.c:423
-msgid "syntax error"
+#, c-format
+msgid "syntax error (expected char `%c', found `%c')"
msgstr ""
-#: fr30-asm.c:441 m32r-asm.c:449
+#: fr30-asm.c:443 m32r-asm.c:451
msgid "junk at end of line"
msgstr ""
-#: fr30-asm.c:534 m32r-asm.c:552
+#: fr30-asm.c:551 m32r-asm.c:559
#, c-format
msgid "bad instruction `%.50s...'"
msgstr ""
-#: fr30-asm.c:537 m32r-asm.c:555
+#: fr30-asm.c:554 m32r-asm.c:562
#, c-format
msgid "bad instruction `%.50s'"
msgstr ""
+#. Default text to print if an instruction isn't recognized.
+#: fr30-dis.c:39 m32r-dis.c:39
+msgid "*unknown*"
+msgstr ""
+
#: fr30-dis.c:300 m32r-dis.c:239
#, c-format
msgid "Unrecognized field %d while printing insn.\n"
msgstr ""
-#: fr30-ibld.c:210 m32r-ibld.c:211
+#: fr30-ibld.c:216 m32r-ibld.c:216
#, c-format
msgid "operand out of range (%lu not between 0 and %lu)"
msgstr ""
-#: fr30-ibld.c:745 m32r-ibld.c:679
+#: fr30-ibld.c:790 m32r-ibld.c:719
#, c-format
msgid "Unrecognized field %d while building insn.\n"
msgstr ""
-#: fr30-ibld.c:947 m32r-ibld.c:809
+#: fr30-ibld.c:994 m32r-ibld.c:849
#, c-format
msgid "Unrecognized field %d while decoding insn.\n"
msgstr ""
-#: fr30-ibld.c:1091 m32r-ibld.c:914
+#: fr30-ibld.c:1138 m32r-ibld.c:954
#, c-format
msgid "Unrecognized field %d while getting int operand.\n"
msgstr ""
-#: fr30-ibld.c:1220 m32r-ibld.c:1004
+#: fr30-ibld.c:1267 m32r-ibld.c:1044
#, c-format
msgid "Unrecognized field %d while getting vma operand.\n"
msgstr ""
-#: fr30-ibld.c:1349 m32r-ibld.c:1097
+#: fr30-ibld.c:1396 m32r-ibld.c:1137
#, c-format
msgid "Unrecognized field %d while setting int operand.\n"
msgstr ""
-#: fr30-ibld.c:1471 m32r-ibld.c:1183
+#: fr30-ibld.c:1518 m32r-ibld.c:1223
#, c-format
msgid "Unrecognized field %d while setting vma operand.\n"
msgstr ""
-#: h8300-dis.c:404
+#: h8300-dis.c:380
#, c-format
msgid "Hmmmm %x"
msgstr ""
-#: h8300-dis.c:416
+#: h8300-dis.c:391
#, c-format
msgid "Don't understand %x \n"
msgstr ""
-#: h8500-dis.c:139
+#: h8500-dis.c:141
#, c-format
msgid "can't cope with insert %d\n"
msgstr ""
-#. Couldn't understand anything
-#: h8500-dis.c:344
+#. Couldn't understand anything.
+#: h8500-dis.c:348
#, c-format
msgid "%02x\t\t*unknown*"
msgstr ""
+#: i386-dis.c:2740
+msgid "<internal disassembler error>"
+msgstr ""
+
#: m10200-dis.c:199
#, c-format
msgid "unknown\t0x%02x"
@@ -202,27 +200,27 @@ msgstr ""
msgid "unknown\t0x%04lx"
msgstr ""
-#: m10300-dis.c:680
+#: m10300-dis.c:685
#, c-format
msgid "unknown\t0x%04x"
msgstr ""
-#: m68k-dis.c:410
+#: m68k-dis.c:412
#, c-format
msgid "<internal error in opcode table: %s %s>\n"
msgstr ""
-#: m68k-dis.c:988
+#: m68k-dis.c:990
#, c-format
msgid "<function code %d>"
msgstr ""
-#: m88k-dis.c:273
+#: m88k-dis.c:274
#, c-format
msgid "# <dis error: %08x>"
msgstr ""
-#: mips-dis.c:237
+#: mips-dis.c:273
#, c-format
msgid "# internal error, undefined modifier(%c)"
msgstr ""
@@ -237,50 +235,50 @@ msgstr ""
msgid "$<undefined>"
msgstr ""
-#: ppc-opc.c:586 ppc-opc.c:617
+#: ppc-opc.c:619 ppc-opc.c:650
msgid "invalid conditional option"
msgstr ""
-#: ppc-opc.c:619
+#: ppc-opc.c:652
msgid "attempt to set y bit when using + or - modifier"
msgstr ""
-#: ppc-opc.c:674
+#: ppc-opc.c:707
msgid "ignoring least significant bits in branch offset"
msgstr ""
-#: ppc-opc.c:709 ppc-opc.c:746
+#: ppc-opc.c:742 ppc-opc.c:779
msgid "illegal bitmask"
msgstr ""
-#: ppc-opc.c:815
+#: ppc-opc.c:848
msgid "value out of range"
msgstr ""
-#: ppc-opc.c:889
+#: ppc-opc.c:922
msgid "index register in load range"
msgstr ""
-#: ppc-opc.c:904
+#: ppc-opc.c:937
msgid "invalid register operand when updating"
msgstr ""
#. Mark as non-valid instruction
-#: sparc-dis.c:744
+#: sparc-dis.c:748
msgid "unknown"
msgstr ""
-#: sparc-dis.c:816
+#: sparc-dis.c:823
#, c-format
msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
msgstr ""
-#: sparc-dis.c:827
+#: sparc-dis.c:834
#, c-format
msgid "Internal error: bad sparc-opcode.h: \"%s\", %#.8lx, %#.8lx\n"
msgstr ""
-#: sparc-dis.c:876
+#: sparc-dis.c:883
#, c-format
msgid "Internal error: bad sparc-opcode.h: \"%s\" == \"%s\"\n"
msgstr ""
diff --git a/contrib/binutils/opcodes/ppc-dis.c b/contrib/binutils/opcodes/ppc-dis.c
index f256632..47b79ca 100644
--- a/contrib/binutils/opcodes/ppc-dis.c
+++ b/contrib/binutils/opcodes/ppc-dis.c
@@ -33,7 +33,8 @@ static int print_insn_powerpc PARAMS ((bfd_vma, struct disassemble_info *,
int bigendian, int dialect));
/* Print a big endian PowerPC instruction. For convenience, also
- disassemble instructions supported by the Motorola PowerPC 601. */
+ disassemble instructions supported by the Motorola PowerPC 601
+ and the Altivec vector unit. */
int
print_insn_big_powerpc (memaddr, info)
@@ -41,11 +42,13 @@ print_insn_big_powerpc (memaddr, info)
struct disassemble_info *info;
{
return print_insn_powerpc (memaddr, info, 1,
- PPC_OPCODE_PPC | PPC_OPCODE_601);
+ PPC_OPCODE_PPC | PPC_OPCODE_601 |
+ PPC_OPCODE_ALTIVEC);
}
/* Print a little endian PowerPC instruction. For convenience, also
- disassemble instructions supported by the Motorola PowerPC 601. */
+ disassemble instructions supported by the Motorola PowerPC 601
+ and the Altivec vector unit. */
int
print_insn_little_powerpc (memaddr, info)
@@ -53,7 +56,8 @@ print_insn_little_powerpc (memaddr, info)
struct disassemble_info *info;
{
return print_insn_powerpc (memaddr, info, 0,
- PPC_OPCODE_PPC | PPC_OPCODE_601);
+ PPC_OPCODE_PPC | PPC_OPCODE_601 |
+ PPC_OPCODE_ALTIVEC);
}
/* Print a POWER (RS/6000) instruction. */
@@ -181,6 +185,8 @@ print_insn_powerpc (memaddr, info, bigendian, dialect)
(*info->fprintf_func) (info->stream, "r%ld", value);
else if ((operand->flags & PPC_OPERAND_FPR) != 0)
(*info->fprintf_func) (info->stream, "f%ld", value);
+ else if ((operand->flags & PPC_OPERAND_VR) != 0)
+ (*info->fprintf_func) (info->stream, "v%ld", value);
else if ((operand->flags & PPC_OPERAND_RELATIVE) != 0)
(*info->print_address_func) (memaddr + value, info);
else if ((operand->flags & PPC_OPERAND_ABSOLUTE) != 0)
diff --git a/contrib/binutils/opcodes/ppc-opc.c b/contrib/binutils/opcodes/ppc-opc.c
index 02fb7a4..211d386 100644
--- a/contrib/binutils/opcodes/ppc-opc.c
+++ b/contrib/binutils/opcodes/ppc-opc.c
@@ -396,6 +396,39 @@ const struct powerpc_operand powerpc_operands[] =
/* The UI field in a D form instruction. */
#define UI U + 1
{ 16, 0, 0, 0, 0 },
+
+ /* The VA field in a VA, VX or VXR form instruction. */
+#define VA UI + 1
+#define VA_MASK (0x1f << 16)
+ {5, 16, 0, 0, PPC_OPERAND_VR},
+
+ /* The VB field in a VA, VX or VXR form instruction. */
+#define VB VA + 1
+#define VB_MASK (0x1f << 11)
+ {5, 11, 0, 0, PPC_OPERAND_VR},
+
+ /* The VC field in a VA form instruction. */
+#define VC VB + 1
+#define VC_MASK (0x1f << 6)
+ {5, 6, 0, 0, PPC_OPERAND_VR},
+
+ /* The VD or VS field in a VA, VX, VXR or X form instruction. */
+#define VD VC + 1
+#define VS VD
+#define VD_MASK (0x1f << 21)
+ {5, 21, 0, 0, PPC_OPERAND_VR},
+
+ /* The SIMM field in a VX form instruction. */
+#define SIMM VD + 1
+ { 5, 16, 0, 0, PPC_OPERAND_SIGNED},
+
+ /* The UIMM field in a VX form instruction. */
+#define UIMM SIMM + 1
+ { 5, 16, 0, 0, 0 },
+
+ /* The SHB field in a VA form instruction. */
+#define SHB UIMM + 1
+ { 4, 6, 0, 0, 0 },
};
/* The functions used to insert and extract complicated operands. */
@@ -722,7 +755,7 @@ insert_mbe (insn, value, errmsg)
/* me: location of last 1->0 transition */
/* count: # transitions */
- for (mx = 0, mask = 1 << 31; mx < 32; ++mx, mask >>= 1)
+ for (mx = 0, mask = (long) 1 << 31; mx < 32; ++mx, mask >>= 1)
{
if ((uval & mask) && !last)
{
@@ -1105,6 +1138,24 @@ extract_tbr (insn, invalid)
#define SC(op, sa, lk) (OP (op) | ((((unsigned long)(sa)) & 1) << 1) | ((lk) & 1))
#define SC_MASK (OP_MASK | (((unsigned long)0x3ff) << 16) | (((unsigned long)1) << 1) | 1)
+/* An VX form instruction. */
+#define VX(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x7ff))
+
+/* The mask for an VX form instruction. */
+#define VX_MASK VX(0x3f, 0x7ff)
+
+/* An VA form instruction. */
+#define VXA(op, xop) (OP (op) | (((unsigned long)(xop)) & 0x07f))
+
+/* The mask for an VA form instruction. */
+#define VXA_MASK VXA(0x3f, 0x7f)
+
+/* An VXR form instruction. */
+#define VXR(op, xop, rc) (OP (op) | (((rc) & 1) << 10) | (((unsigned long)(xop)) & 0x3ff))
+
+/* The mask for a VXR form instruction. */
+#define VXR_MASK VXR(0x3f, 0x3ff, 1)
+
/* An X form instruction. */
#define X(op, xop) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1))
@@ -1143,6 +1194,10 @@ extract_tbr (insn, invalid)
#define XTO(op, xop, to) (X ((op), (xop)) | ((((unsigned long)(to)) & 0x1f) << 21))
#define XTO_MASK (X_MASK | TO_MASK)
+/* An X form tlb instruction with the SH field specified. */
+#define XTLB(op, xop, sh) (X ((op), (xop)) | ((((unsigned long)(sh)) & 0x1f) << 11))
+#define XTLB_MASK (X_MASK | SH_MASK)
+
/* An XFL form instruction. */
#define XFL(op, xop, rc) (OP (op) | ((((unsigned long)(xop)) & 0x3ff) << 1) | (((unsigned long)(rc)) & 1))
#define XFL_MASK (XFL (0x3f, 0x3ff, 1) | (((unsigned long)1) << 25) | (((unsigned long)1) << 16))
@@ -1270,8 +1325,10 @@ extract_tbr (insn, invalid)
#define PPC64 PPC_OPCODE_PPC | PPC_OPCODE_64 | PPC_OPCODE_ANY
#define PPCONLY PPC_OPCODE_PPC
#define PPC403 PPC
+#define PPC405 PPC403
#define PPC750 PPC
#define PPC860 PPC
+#define PPCVEC PPC_OPCODE_ALTIVEC | PPC_OPCODE_ANY
#define POWER PPC_OPCODE_POWER | PPC_OPCODE_ANY
#define POWER2 PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_ANY
#define PPCPWR2 PPC_OPCODE_PPC | PPC_OPCODE_POWER | PPC_OPCODE_POWER2 | PPC_OPCODE_ANY
@@ -1349,6 +1406,248 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "twi", OP(3), OP_MASK, PPCCOM, { TO, RA, SI } },
{ "ti", OP(3), OP_MASK, PWRCOM, { TO, RA, SI } },
+{ "macchw", XO(4,172,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchw.", XO(4,172,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchwo", XO(4,172,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchwo.", XO(4,172,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchws", XO(4,236,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchws.", XO(4,236,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchwso", XO(4,236,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchwso.", XO(4,236,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchwsu", XO(4,204,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchwsu.", XO(4,204,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchwsuo", XO(4,204,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchwsuo.", XO(4,204,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchwu", XO(4,140,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchwu.", XO(4,140,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchwuo", XO(4,140,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "macchwuo.", XO(4,140,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhw", XO(4,44,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhw.", XO(4,44,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhwo", XO(4,44,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhwo.", XO(4,44,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhws", XO(4,108,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhws.", XO(4,108,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhwso", XO(4,108,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhwso.", XO(4,108,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhwsu", XO(4,76,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhwsu.", XO(4,76,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhwsuo", XO(4,76,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhwsuo.", XO(4,76,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhwu", XO(4,12,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhwu.", XO(4,12,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhwuo", XO(4,12,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "machhwuo.", XO(4,12,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhw", XO(4,428,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhw.", XO(4,428,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhwo", XO(4,428,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhwo.", XO(4,428,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhws", XO(4,492,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhws.", XO(4,492,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhwso", XO(4,492,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhwso.", XO(4,492,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhwsu", XO(4,460,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhwsu.", XO(4,460,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhwsuo", XO(4,460,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhwsuo.", XO(4,460,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhwu", XO(4,396,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhwu.", XO(4,396,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhwuo", XO(4,396,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "maclhwuo.", XO(4,396,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "mulchw", XRC(4,168,0), X_MASK, PPC405, { RT, RA, RB } },
+{ "mulchw.", XRC(4,168,1), X_MASK, PPC405, { RT, RA, RB } },
+{ "mulchwu", XRC(4,136,0), X_MASK, PPC405, { RT, RA, RB } },
+{ "mulchwu.", XRC(4,136,1), X_MASK, PPC405, { RT, RA, RB } },
+{ "mulhhw", XRC(4,40,0), X_MASK, PPC405, { RT, RA, RB } },
+{ "mulhhw.", XRC(4,40,1), X_MASK, PPC405, { RT, RA, RB } },
+{ "mulhhwu", XRC(4,8,0), X_MASK, PPC405, { RT, RA, RB } },
+{ "mulhhwu.", XRC(4,8,1), X_MASK, PPC405, { RT, RA, RB } },
+{ "mullhw", XRC(4,424,0), X_MASK, PPC405, { RT, RA, RB } },
+{ "mullhw.", XRC(4,424,1), X_MASK, PPC405, { RT, RA, RB } },
+{ "mullhwu", XRC(4,392,0), X_MASK, PPC405, { RT, RA, RB } },
+{ "mullhwu.", XRC(4,392,1), X_MASK, PPC405, { RT, RA, RB } },
+{ "nmacchw", XO(4,174,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmacchw.", XO(4,174,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmacchwo", XO(4,174,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmacchwo.", XO(4,174,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmacchws", XO(4,238,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmacchws.", XO(4,238,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmacchwso", XO(4,238,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmacchwso.", XO(4,238,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmachhw", XO(4,46,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmachhw.", XO(4,46,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmachhwo", XO(4,46,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmachhwo.", XO(4,46,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmachhws", XO(4,110,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmachhws.", XO(4,110,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmachhwso", XO(4,110,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmachhwso.", XO(4,110,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmaclhw", XO(4,430,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmaclhw.", XO(4,430,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmaclhwo", XO(4,430,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmaclhwo.", XO(4,430,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmaclhws", XO(4,494,0,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmaclhws.", XO(4,494,0,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmaclhwso", XO(4,494,1,0), XO_MASK, PPC405, { RT, RA, RB } },
+{ "nmaclhwso.", XO(4,494,1,1), XO_MASK, PPC405, { RT, RA, RB } },
+{ "mfvscr", VX(4, 1540), VX_MASK, PPCVEC, { VD } },
+{ "mtvscr", VX(4, 1604), VX_MASK, PPCVEC, { VD } },
+{ "vaddcuw", VX(4, 384), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vaddfp", VX(4, 10), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vaddsbs", VX(4, 768), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vaddshs", VX(4, 832), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vaddsws", VX(4, 896), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vaddubm", VX(4, 0), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vaddubs", VX(4, 512), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vadduhm", VX(4, 64), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vadduhs", VX(4, 576), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vadduwm", VX(4, 128), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vadduws", VX(4, 640), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vand", VX(4, 1028), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vandc", VX(4, 1092), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vavgsb", VX(4, 1282), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vavgsh", VX(4, 1346), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vavgsw", VX(4, 1410), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vavgub", VX(4, 1026), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vavguh", VX(4, 1090), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vavguw", VX(4, 1154), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcfsx", VX(4, 842), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vcfux", VX(4, 778), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vcmpbfp", VXR(4, 966, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpbfp.", VXR(4, 966, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpeqfp", VXR(4, 198, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpeqfp.", VXR(4, 198, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpequb", VXR(4, 6, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpequb.", VXR(4, 6, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpequh", VXR(4, 70, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpequh.", VXR(4, 70, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpequw", VXR(4, 134, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpequw.", VXR(4, 134, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgefp", VXR(4, 454, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgefp.", VXR(4, 454, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtfp", VXR(4, 710, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtfp.", VXR(4, 710, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtsb", VXR(4, 774, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtsb.", VXR(4, 774, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtsh", VXR(4, 838, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtsh.", VXR(4, 838, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtsw", VXR(4, 902, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtsw.", VXR(4, 902, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtub", VXR(4, 518, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtub.", VXR(4, 518, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtuh", VXR(4, 582, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtuh.", VXR(4, 582, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtuw", VXR(4, 646, 0), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vcmpgtuw.", VXR(4, 646, 1), VXR_MASK, PPCVEC, { VD, VA, VB } },
+{ "vctsxs", VX(4, 970), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vctuxs", VX(4, 906), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vexptefp", VX(4, 394), VX_MASK, PPCVEC, { VD, VB } },
+{ "vlogefp", VX(4, 458), VX_MASK, PPCVEC, { VD, VB } },
+{ "vmaddfp", VXA(4, 46), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmaxfp", VX(4, 1034), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmaxsb", VX(4, 258), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmaxsh", VX(4, 322), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmaxsw", VX(4, 386), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmaxub", VX(4, 2), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmaxuh", VX(4, 66), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmaxuw", VX(4, 130), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmhaddshs", VXA(4, 32), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmhraddshs", VXA(4, 33), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vminfp", VX(4, 1098), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vminsb", VX(4, 770), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vminsh", VX(4, 834), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vminsw", VX(4, 898), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vminub", VX(4, 514), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vminuh", VX(4, 578), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vminuw", VX(4, 642), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmladduhm", VXA(4, 34), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmrghb", VX(4, 12), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmrghh", VX(4, 76), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmrghw", VX(4, 140), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmrglb", VX(4, 268), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmrglh", VX(4, 332), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmrglw", VX(4, 396), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmsummbm", VXA(4, 37), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmsumshm", VXA(4, 40), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmsumshs", VXA(4, 41), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmsumubm", VXA(4, 36), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmsumuhm", VXA(4, 38), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmsumuhs", VXA(4, 39), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vmulesb", VX(4, 776), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmulesh", VX(4, 840), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmuleub", VX(4, 520), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmuleuh", VX(4, 584), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmulosb", VX(4, 264), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmulosh", VX(4, 328), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmuloub", VX(4, 8), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vmulouh", VX(4, 72), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vnmsubfp", VXA(4, 47), VXA_MASK, PPCVEC, { VD, VA, VC, VB } },
+{ "vnor", VX(4, 1284), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vor", VX(4, 1156), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vperm", VXA(4, 43), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vpkpx", VX(4, 782), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkshss", VX(4, 398), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkshus", VX(4, 270), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkswss", VX(4, 462), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkswus", VX(4, 334), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkuhum", VX(4, 14), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkuhus", VX(4, 142), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkuwum", VX(4, 78), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vpkuwus", VX(4, 206), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vrefp", VX(4, 266), VX_MASK, PPCVEC, { VD, VB } },
+{ "vrfim", VX(4, 714), VX_MASK, PPCVEC, { VD, VB } },
+{ "vrfin", VX(4, 522), VX_MASK, PPCVEC, { VD, VB } },
+{ "vrfip", VX(4, 650), VX_MASK, PPCVEC, { VD, VB } },
+{ "vrfiz", VX(4, 586), VX_MASK, PPCVEC, { VD, VB } },
+{ "vrlb", VX(4, 4), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vrlh", VX(4, 68), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vrlw", VX(4, 132), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vrsqrtefp", VX(4, 330), VX_MASK, PPCVEC, { VD, VB } },
+{ "vsel", VXA(4, 42), VXA_MASK, PPCVEC, { VD, VA, VB, VC } },
+{ "vsl", VX(4, 452), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vslb", VX(4, 260), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsldoi", VXA(4, 44), VXA_MASK, PPCVEC, { VD, VA, VB, SHB } },
+{ "vslh", VX(4, 324), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vslo", VX(4, 1036), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vslw", VX(4, 388), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vspltb", VX(4, 524), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vsplth", VX(4, 588), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vspltisb", VX(4, 780), VX_MASK, PPCVEC, { VD, SIMM } },
+{ "vspltish", VX(4, 844), VX_MASK, PPCVEC, { VD, SIMM } },
+{ "vspltisw", VX(4, 908), VX_MASK, PPCVEC, { VD, SIMM } },
+{ "vspltw", VX(4, 652), VX_MASK, PPCVEC, { VD, VB, UIMM } },
+{ "vsr", VX(4, 708), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsrab", VX(4, 772), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsrah", VX(4, 836), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsraw", VX(4, 900), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsrb", VX(4, 516), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsrh", VX(4, 580), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsro", VX(4, 1100), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsrw", VX(4, 644), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubcuw", VX(4, 1408), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubfp", VX(4, 74), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubsbs", VX(4, 1792), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubshs", VX(4, 1856), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubsws", VX(4, 1920), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsububm", VX(4, 1024), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsububs", VX(4, 1536), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubuhm", VX(4, 1088), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubuhs", VX(4, 1600), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubuwm", VX(4, 1152), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsubuws", VX(4, 1664), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsumsws", VX(4, 1928), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsum2sws", VX(4, 1672), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsum4sbs", VX(4, 1800), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsum4shs", VX(4, 1608), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vsum4ubs", VX(4, 1544), VX_MASK, PPCVEC, { VD, VA, VB } },
+{ "vupkhpx", VX(4, 846), VX_MASK, PPCVEC, { VD, VB } },
+{ "vupkhsb", VX(4, 526), VX_MASK, PPCVEC, { VD, VB } },
+{ "vupkhsh", VX(4, 590), VX_MASK, PPCVEC, { VD, VB } },
+{ "vupklpx", VX(4, 974), VX_MASK, PPCVEC, { VD, VB } },
+{ "vupklsb", VX(4, 654), VX_MASK, PPCVEC, { VD, VB } },
+{ "vupklsh", VX(4, 718), VX_MASK, PPCVEC, { VD, VB } },
+{ "vxor", VX(4, 1220), VX_MASK, PPCVEC, { VD, VA, VB } },
+
{ "mulli", OP(7), OP_MASK, PPCCOM, { RT, RA, SI } },
{ "muli", OP(7), OP_MASK, PWRCOM, { RT, RA, SI } },
@@ -1388,269 +1687,269 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "cau", OP(15), OP_MASK, PWRCOM, { RT,RA,SISIGNOPT } },
{ "subis", OP(15), OP_MASK, PPCCOM, { RT, RA, NSI } },
-{ "bdnz-", BBO(16,BODNZ,0,0), BBOYBI_MASK, PPC, { BDM } },
-{ "bdnz+", BBO(16,BODNZ,0,0), BBOYBI_MASK, PPC, { BDP } },
+{ "bdnz-", BBO(16,BODNZ,0,0), BBOYBI_MASK, PPCCOM, { BDM } },
+{ "bdnz+", BBO(16,BODNZ,0,0), BBOYBI_MASK, PPCCOM, { BDP } },
{ "bdnz", BBO(16,BODNZ,0,0), BBOYBI_MASK, PPCCOM, { BD } },
{ "bdn", BBO(16,BODNZ,0,0), BBOYBI_MASK, PWRCOM, { BD } },
-{ "bdnzl-", BBO(16,BODNZ,0,1), BBOYBI_MASK, PPC, { BDM } },
-{ "bdnzl+", BBO(16,BODNZ,0,1), BBOYBI_MASK, PPC, { BDP } },
+{ "bdnzl-", BBO(16,BODNZ,0,1), BBOYBI_MASK, PPCCOM, { BDM } },
+{ "bdnzl+", BBO(16,BODNZ,0,1), BBOYBI_MASK, PPCCOM, { BDP } },
{ "bdnzl", BBO(16,BODNZ,0,1), BBOYBI_MASK, PPCCOM, { BD } },
{ "bdnl", BBO(16,BODNZ,0,1), BBOYBI_MASK, PWRCOM, { BD } },
-{ "bdnza-", BBO(16,BODNZ,1,0), BBOYBI_MASK, PPC, { BDMA } },
-{ "bdnza+", BBO(16,BODNZ,1,0), BBOYBI_MASK, PPC, { BDPA } },
+{ "bdnza-", BBO(16,BODNZ,1,0), BBOYBI_MASK, PPCCOM, { BDMA } },
+{ "bdnza+", BBO(16,BODNZ,1,0), BBOYBI_MASK, PPCCOM, { BDPA } },
{ "bdnza", BBO(16,BODNZ,1,0), BBOYBI_MASK, PPCCOM, { BDA } },
{ "bdna", BBO(16,BODNZ,1,0), BBOYBI_MASK, PWRCOM, { BDA } },
-{ "bdnzla-", BBO(16,BODNZ,1,1), BBOYBI_MASK, PPC, { BDMA } },
-{ "bdnzla+", BBO(16,BODNZ,1,1), BBOYBI_MASK, PPC, { BDPA } },
+{ "bdnzla-", BBO(16,BODNZ,1,1), BBOYBI_MASK, PPCCOM, { BDMA } },
+{ "bdnzla+", BBO(16,BODNZ,1,1), BBOYBI_MASK, PPCCOM, { BDPA } },
{ "bdnzla", BBO(16,BODNZ,1,1), BBOYBI_MASK, PPCCOM, { BDA } },
{ "bdnla", BBO(16,BODNZ,1,1), BBOYBI_MASK, PWRCOM, { BDA } },
-{ "bdz-", BBO(16,BODZ,0,0), BBOYBI_MASK, PPC, { BDM } },
-{ "bdz+", BBO(16,BODZ,0,0), BBOYBI_MASK, PPC, { BDP } },
+{ "bdz-", BBO(16,BODZ,0,0), BBOYBI_MASK, PPCCOM, { BDM } },
+{ "bdz+", BBO(16,BODZ,0,0), BBOYBI_MASK, PPCCOM, { BDP } },
{ "bdz", BBO(16,BODZ,0,0), BBOYBI_MASK, COM, { BD } },
-{ "bdzl-", BBO(16,BODZ,0,1), BBOYBI_MASK, PPC, { BDM } },
-{ "bdzl+", BBO(16,BODZ,0,1), BBOYBI_MASK, PPC, { BDP } },
+{ "bdzl-", BBO(16,BODZ,0,1), BBOYBI_MASK, PPCCOM, { BDM } },
+{ "bdzl+", BBO(16,BODZ,0,1), BBOYBI_MASK, PPCCOM, { BDP } },
{ "bdzl", BBO(16,BODZ,0,1), BBOYBI_MASK, COM, { BD } },
-{ "bdza-", BBO(16,BODZ,1,0), BBOYBI_MASK, PPC, { BDMA } },
-{ "bdza+", BBO(16,BODZ,1,0), BBOYBI_MASK, PPC, { BDPA } },
+{ "bdza-", BBO(16,BODZ,1,0), BBOYBI_MASK, PPCCOM, { BDMA } },
+{ "bdza+", BBO(16,BODZ,1,0), BBOYBI_MASK, PPCCOM, { BDPA } },
{ "bdza", BBO(16,BODZ,1,0), BBOYBI_MASK, COM, { BDA } },
-{ "bdzla-", BBO(16,BODZ,1,1), BBOYBI_MASK, PPC, { BDMA } },
-{ "bdzla+", BBO(16,BODZ,1,1), BBOYBI_MASK, PPC, { BDPA } },
+{ "bdzla-", BBO(16,BODZ,1,1), BBOYBI_MASK, PPCCOM, { BDMA } },
+{ "bdzla+", BBO(16,BODZ,1,1), BBOYBI_MASK, PPCCOM, { BDPA } },
{ "bdzla", BBO(16,BODZ,1,1), BBOYBI_MASK, COM, { BDA } },
-{ "blt-", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "blt+", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "blt", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bltl-", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bltl+", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bltl", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "blta-", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "blta+", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "blta", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bltla-", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bltla+", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bltla", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bgt-", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bgt+", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bgt", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bgtl", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bgta-", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bgta+", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bgta", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bgtla", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "beq-", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "beq+", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "beq", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "beql-", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "beql+", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "beql", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "beqa", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "beqla", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bso-", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bso+", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bso", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bsol-", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bsol+", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bsol", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bsoa", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bsola-", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bsola+", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bsola", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bun-", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bun+", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bun", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BD } },
-{ "bunl-", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bunl+", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bunl", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BD } },
-{ "buna-", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "buna+", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "buna", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDA } },
-{ "bunla-", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bunla+", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bunla", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDA } },
-{ "bge-", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bge+", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bge", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bgel-", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bgel+", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bgel", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bgea-", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bgea+", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bgea", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bgela-", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bgela+", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bgela", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bnl-", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bnl+", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bnl", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnll-", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bnll+", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bnll", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnla-", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnla+", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnla", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnlla", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "ble-", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "ble+", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "ble", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "blel-", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "blel+", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "blel", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "blea-", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "blea+", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "blea", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "blela-", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "blela+", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "blela", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bng-", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bng+", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bng", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bngl-", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bngl+", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bngl", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnga-", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnga+", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnga", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bngla-", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bngla+", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bngla", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bne-", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bne+", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bne", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bnel", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnea", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnela", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bns-", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bns+", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bns", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bnsl", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, COM, { CR, BD } },
-{ "bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnsa", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnsla", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, COM, { CR, BDA } },
-{ "bnu-", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bnu+", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bnu", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BD } },
-{ "bnul-", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDM } },
-{ "bnul+", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPC, { CR, BDP } },
-{ "bnul", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BD } },
-{ "bnua-", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnua+", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnua", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDA } },
-{ "bnula-", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDMA } },
-{ "bnula+", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPC, { CR, BDPA } },
-{ "bnula", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDA } },
-{ "bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, PPC, { BI, BDP } },
+{ "blt-", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "blt+", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "blt", BBOCB(16,BOT,CBLT,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bltl-", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bltl+", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bltl", BBOCB(16,BOT,CBLT,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "blta-", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "blta+", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "blta", BBOCB(16,BOT,CBLT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bltla-", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bltla+", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bltla", BBOCB(16,BOT,CBLT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bgt-", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bgt+", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bgt", BBOCB(16,BOT,CBGT,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bgtl-", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bgtl+", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bgtl", BBOCB(16,BOT,CBGT,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bgta-", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bgta+", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bgta", BBOCB(16,BOT,CBGT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bgtla-", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bgtla+", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bgtla", BBOCB(16,BOT,CBGT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "beq-", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "beq+", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "beq", BBOCB(16,BOT,CBEQ,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "beql-", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "beql+", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "beql", BBOCB(16,BOT,CBEQ,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "beqa-", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "beqa+", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "beqa", BBOCB(16,BOT,CBEQ,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "beqla-", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "beqla+", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "beqla", BBOCB(16,BOT,CBEQ,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bso-", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bso+", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bso", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bsol-", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bsol+", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bsol", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bsoa-", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bsoa+", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bsoa", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bsola-", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bsola+", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bsola", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bun-", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bun+", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bun", BBOCB(16,BOT,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BD } },
+{ "bunl-", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bunl+", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bunl", BBOCB(16,BOT,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BD } },
+{ "buna-", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "buna+", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "buna", BBOCB(16,BOT,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDA } },
+{ "bunla-", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bunla+", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bunla", BBOCB(16,BOT,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDA } },
+{ "bge-", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bge+", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bge", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bgel-", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bgel+", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bgel", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bgea-", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bgea+", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bgea", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bgela-", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bgela+", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bgela", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bnl-", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bnl+", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bnl", BBOCB(16,BOF,CBLT,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnll-", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bnll+", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bnll", BBOCB(16,BOF,CBLT,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnla-", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnla+", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnla", BBOCB(16,BOF,CBLT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bnlla-", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnlla+", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnlla", BBOCB(16,BOF,CBLT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "ble-", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "ble+", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "ble", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "blel-", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "blel+", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "blel", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "blea-", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "blea+", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "blea", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "blela-", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "blela+", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "blela", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bng-", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bng+", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bng", BBOCB(16,BOF,CBGT,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bngl-", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bngl+", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bngl", BBOCB(16,BOF,CBGT,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnga-", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnga+", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnga", BBOCB(16,BOF,CBGT,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bngla-", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bngla+", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bngla", BBOCB(16,BOF,CBGT,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bne-", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bne+", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bne", BBOCB(16,BOF,CBEQ,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnel-", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bnel+", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bnel", BBOCB(16,BOF,CBEQ,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnea-", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnea+", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnea", BBOCB(16,BOF,CBEQ,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bnela-", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnela+", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnela", BBOCB(16,BOF,CBEQ,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bns-", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bns+", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bns", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnsl-", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bnsl+", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bnsl", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, COM, { CR, BD } },
+{ "bnsa-", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnsa+", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnsa", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bnsla-", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnsla+", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnsla", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, COM, { CR, BDA } },
+{ "bnu-", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bnu+", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bnu", BBOCB(16,BOF,CBSO,0,0), BBOYCB_MASK, PPCCOM, { CR, BD } },
+{ "bnul-", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDM } },
+{ "bnul+", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BDP } },
+{ "bnul", BBOCB(16,BOF,CBSO,0,1), BBOYCB_MASK, PPCCOM, { CR, BD } },
+{ "bnua-", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnua+", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnua", BBOCB(16,BOF,CBSO,1,0), BBOYCB_MASK, PPCCOM, { CR, BDA } },
+{ "bnula-", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDMA } },
+{ "bnula+", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDPA } },
+{ "bnula", BBOCB(16,BOF,CBSO,1,1), BBOYCB_MASK, PPCCOM, { CR, BDA } },
+{ "bdnzt-", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdnzt+", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdnzt", BBO(16,BODNZT,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdnztl-", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdnztl+", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdnztl", BBO(16,BODNZT,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdnzta-", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdnzta+", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdnzta", BBO(16,BODNZT,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bdnztla-",BBO(16,BODNZT,1,1), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdnztla+",BBO(16,BODNZT,1,1), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdnztla-",BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdnztla+",BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdnztla", BBO(16,BODNZT,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdnzf-", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdnzf+", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdnzf", BBO(16,BODNZF,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdnzfl-", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdnzfl+", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdnzfl", BBO(16,BODNZF,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdnzfa-", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdnzfa+", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdnzfa", BBO(16,BODNZF,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bdnzfla-",BBO(16,BODNZF,1,1), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdnzfla+",BBO(16,BODNZF,1,1), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdnzfla-",BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdnzfla+",BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdnzfla", BBO(16,BODNZF,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bt-", BBO(16,BOT,0,0), BBOY_MASK, PPC, { BI, BDM } },
-{ "bt+", BBO(16,BOT,0,0), BBOY_MASK, PPC, { BI, BDP } },
+{ "bt-", BBO(16,BOT,0,0), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bt+", BBO(16,BOT,0,0), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bt", BBO(16,BOT,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
{ "bbt", BBO(16,BOT,0,0), BBOY_MASK, PWRCOM, { BI, BD } },
-{ "btl-", BBO(16,BOT,0,1), BBOY_MASK, PPC, { BI, BDM } },
-{ "btl+", BBO(16,BOT,0,1), BBOY_MASK, PPC, { BI, BDP } },
+{ "btl-", BBO(16,BOT,0,1), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "btl+", BBO(16,BOT,0,1), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "btl", BBO(16,BOT,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
{ "bbtl", BBO(16,BOT,0,1), BBOY_MASK, PWRCOM, { BI, BD } },
-{ "bta-", BBO(16,BOT,1,0), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bta+", BBO(16,BOT,1,0), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bta-", BBO(16,BOT,1,0), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bta+", BBO(16,BOT,1,0), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bta", BBO(16,BOT,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
{ "bbta", BBO(16,BOT,1,0), BBOY_MASK, PWRCOM, { BI, BDA } },
-{ "btla-", BBO(16,BOT,1,1), BBOY_MASK, PPC, { BI, BDMA } },
-{ "btla+", BBO(16,BOT,1,1), BBOY_MASK, PPC, { BI, BDPA } },
+{ "btla-", BBO(16,BOT,1,1), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "btla+", BBO(16,BOT,1,1), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "btla", BBO(16,BOT,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
{ "bbtla", BBO(16,BOT,1,1), BBOY_MASK, PWRCOM, { BI, BDA } },
-{ "bf-", BBO(16,BOF,0,0), BBOY_MASK, PPC, { BI, BDM } },
-{ "bf+", BBO(16,BOF,0,0), BBOY_MASK, PPC, { BI, BDP } },
+{ "bf-", BBO(16,BOF,0,0), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bf+", BBO(16,BOF,0,0), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bf", BBO(16,BOF,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
{ "bbf", BBO(16,BOF,0,0), BBOY_MASK, PWRCOM, { BI, BD } },
-{ "bfl-", BBO(16,BOF,0,1), BBOY_MASK, PPC, { BI, BDM } },
-{ "bfl+", BBO(16,BOF,0,1), BBOY_MASK, PPC, { BI, BDP } },
+{ "bfl-", BBO(16,BOF,0,1), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bfl+", BBO(16,BOF,0,1), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bfl", BBO(16,BOF,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
{ "bbfl", BBO(16,BOF,0,1), BBOY_MASK, PWRCOM, { BI, BD } },
-{ "bfa-", BBO(16,BOF,1,0), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bfa+", BBO(16,BOF,1,0), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bfa-", BBO(16,BOF,1,0), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bfa+", BBO(16,BOF,1,0), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bfa", BBO(16,BOF,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
{ "bbfa", BBO(16,BOF,1,0), BBOY_MASK, PWRCOM, { BI, BDA } },
-{ "bfla-", BBO(16,BOF,1,1), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bfla+", BBO(16,BOF,1,1), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bfla-", BBO(16,BOF,1,1), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bfla+", BBO(16,BOF,1,1), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bfla", BBO(16,BOF,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
{ "bbfla", BBO(16,BOF,1,1), BBOY_MASK, PWRCOM, { BI, BDA } },
-{ "bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdzt-", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdzt+", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdzt", BBO(16,BODZT,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdztl-", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdztl+", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdztl", BBO(16,BODZT,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdzta-", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdzta+", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdzta", BBO(16,BODZT,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdztla-", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdztla+", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdztla", BBO(16,BODZT,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdzf-", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdzf+", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdzf", BBO(16,BODZF,0,0), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, PPC, { BI, BDM } },
-{ "bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, PPC, { BI, BDP } },
+{ "bdzfl-", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, { BI, BDM } },
+{ "bdzfl+", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, { BI, BDP } },
{ "bdzfl", BBO(16,BODZF,0,1), BBOY_MASK, PPCCOM, { BI, BD } },
-{ "bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdzfa-", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdzfa+", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdzfa", BBO(16,BODZF,1,0), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, PPC, { BI, BDMA } },
-{ "bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, PPC, { BI, BDPA } },
+{ "bdzfla-", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, { BI, BDMA } },
+{ "bdzfla+", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, { BI, BDPA } },
{ "bdzfla", BBO(16,BODZF,1,1), BBOY_MASK, PPCCOM, { BI, BDA } },
-{ "bc-", B(16,0,0), B_MASK, PPC, { BOE, BI, BDM } },
-{ "bc+", B(16,0,0), B_MASK, PPC, { BOE, BI, BDP } },
+{ "bc-", B(16,0,0), B_MASK, PPCCOM, { BOE, BI, BDM } },
+{ "bc+", B(16,0,0), B_MASK, PPCCOM, { BOE, BI, BDP } },
{ "bc", B(16,0,0), B_MASK, COM, { BO, BI, BD } },
-{ "bcl-", B(16,0,1), B_MASK, PPC, { BOE, BI, BDM } },
-{ "bcl+", B(16,0,1), B_MASK, PPC, { BOE, BI, BDP } },
+{ "bcl-", B(16,0,1), B_MASK, PPCCOM, { BOE, BI, BDM } },
+{ "bcl+", B(16,0,1), B_MASK, PPCCOM, { BOE, BI, BDP } },
{ "bcl", B(16,0,1), B_MASK, COM, { BO, BI, BD } },
-{ "bca-", B(16,1,0), B_MASK, PPC, { BOE, BI, BDMA } },
-{ "bca+", B(16,1,0), B_MASK, PPC, { BOE, BI, BDPA } },
+{ "bca-", B(16,1,0), B_MASK, PPCCOM, { BOE, BI, BDMA } },
+{ "bca+", B(16,1,0), B_MASK, PPCCOM, { BOE, BI, BDPA } },
{ "bca", B(16,1,0), B_MASK, COM, { BO, BI, BDA } },
-{ "bcla-", B(16,1,1), B_MASK, PPC, { BOE, BI, BDMA } },
-{ "bcla+", B(16,1,1), B_MASK, PPC, { BOE, BI, BDPA } },
+{ "bcla-", B(16,1,1), B_MASK, PPCCOM, { BOE, BI, BDMA } },
+{ "bcla+", B(16,1,1), B_MASK, PPCCOM, { BOE, BI, BDPA } },
{ "bcla", B(16,1,1), B_MASK, COM, { BO, BI, BDA } },
{ "sc", SC(17,1,0), 0xffffffff, PPC, { 0 } },
@@ -1671,163 +1970,165 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "blrl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
{ "brl", XLO(19,BOU,16,1), XLBOBIBB_MASK, PWRCOM, { 0 } },
{ "bdnzlr", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
-{ "bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPC, { 0 } },
-{ "bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPC, { 0 } },
+{ "bdnzlr-", XLO(19,BODNZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
+{ "bdnzlr+", XLO(19,BODNZP,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
{ "bdnzlrl", XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
-{ "bdnzlrl-",XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPC, { 0 } },
-{ "bdnzlrl+",XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPC, { 0 } },
+{ "bdnzlrl-",XLO(19,BODNZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
+{ "bdnzlrl+",XLO(19,BODNZP,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
{ "bdzlr", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
-{ "bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPC, { 0 } },
-{ "bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, PPC, { 0 } },
+{ "bdzlr-", XLO(19,BODZ,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
+{ "bdzlr+", XLO(19,BODZP,16,0), XLBOBIBB_MASK, PPCCOM, { 0 } },
{ "bdzlrl", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
-{ "bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPC, { 0 } },
-{ "bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, PPC, { 0 } },
+{ "bdzlrl-", XLO(19,BODZ,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
+{ "bdzlrl+", XLO(19,BODZP,16,1), XLBOBIBB_MASK, PPCCOM, { 0 } },
{ "bltlr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bltlr-", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bltlr+", XLOCB(19,BOTP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bltr", XLOCB(19,BOT,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bltlrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bltlrl-", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bltlrl+", XLOCB(19,BOTP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bltrl", XLOCB(19,BOT,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bgtlr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgtlr-", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgtlr+", XLOCB(19,BOTP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgtr", XLOCB(19,BOT,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bgtlrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgtlrl-", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgtlrl+", XLOCB(19,BOTP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgtrl", XLOCB(19,BOT,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "beqlr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "beqlr-", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "beqlr+", XLOCB(19,BOTP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "beqr", XLOCB(19,BOT,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "beqlrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "beqlrl-", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "beqlrl+", XLOCB(19,BOTP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "beqrl", XLOCB(19,BOT,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bsolr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bsolr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bsolr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bsor", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bsolrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bsolrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bsolrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bsorl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bunlr", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bunlr-", XLOCB(19,BOT,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bunlr+", XLOCB(19,BOTP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bunlrl", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bunlrl-", XLOCB(19,BOT,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bunlrl+", XLOCB(19,BOTP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgelr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgelr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgelr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bger", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bgelrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgelrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgelrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgerl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnllr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnllr-", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnllr+", XLOCB(19,BOFP,CBLT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnlr", XLOCB(19,BOF,CBLT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnllrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnllrl-", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnllrl+", XLOCB(19,BOFP,CBLT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnlrl", XLOCB(19,BOF,CBLT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "blelr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "blelr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "blelr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bler", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "blelrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "blelrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "blelrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "blerl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnglr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnglr-", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnglr+", XLOCB(19,BOFP,CBGT,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bngr", XLOCB(19,BOF,CBGT,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnglrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnglrl-", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnglrl+", XLOCB(19,BOFP,CBGT,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bngrl", XLOCB(19,BOF,CBGT,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnelr", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnelr-", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnelr+", XLOCB(19,BOFP,CBEQ,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bner", XLOCB(19,BOF,CBEQ,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnelrl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnelrl-", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnelrl+", XLOCB(19,BOFP,CBEQ,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnerl", XLOCB(19,BOF,CBEQ,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnslr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnslr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnslr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnsr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnslrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnslrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnslrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnsrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PWRCOM, { CR } },
{ "bnulr", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnulr-", XLOCB(19,BOF,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnulr+", XLOCB(19,BOFP,CBSO,16,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnulrl", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnulrl-", XLOCB(19,BOF,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnulrl+", XLOCB(19,BOFP,CBSO,16,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "btlr", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, PPC, { BI } },
-{ "btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, PPC, { BI } },
+{ "btlr-", XLO(19,BOT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "btlr+", XLO(19,BOTP,16,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bbtr", XLO(19,BOT,16,0), XLBOBB_MASK, PWRCOM, { BI } },
{ "btlrl", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, PPC, { BI } },
-{ "btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, PPC, { BI } },
+{ "btlrl-", XLO(19,BOT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "btlrl+", XLO(19,BOTP,16,1), XLBOBB_MASK, PPCCOM, { BI } },
{ "bbtrl", XLO(19,BOT,16,1), XLBOBB_MASK, PWRCOM, { BI } },
{ "bflr", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, PPC, { BI } },
-{ "bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, PPC, { BI } },
+{ "bflr-", XLO(19,BOF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bflr+", XLO(19,BOFP,16,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bbfr", XLO(19,BOF,16,0), XLBOBB_MASK, PWRCOM, { BI } },
{ "bflrl", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, PPC, { BI } },
-{ "bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, PPC, { BI } },
+{ "bflrl-", XLO(19,BOF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bflrl+", XLO(19,BOFP,16,1), XLBOBB_MASK, PPCCOM, { BI } },
{ "bbfrl", XLO(19,BOF,16,1), XLBOBB_MASK, PWRCOM, { BI } },
{ "bdnztlr", XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdnztlr-",XLO(19,BODNZT,16,0), XLBOBB_MASK, PPC, { BI } },
-{ "bdnztlr+",XLO(19,BODNZTP,16,0), XLBOBB_MASK, PPC, { BI } },
+{ "bdnztlr-",XLO(19,BODNZT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdnztlr+",XLO(19,BODNZTP,16,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bdnztlrl",XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdnztlrl-",XLO(19,BODNZT,16,1), XLBOBB_MASK, PPC, { BI } },
-{ "bdnztlrl+",XLO(19,BODNZTP,16,1), XLBOBB_MASK, PPC, { BI } },
+{ "bdnztlrl-",XLO(19,BODNZT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdnztlrl+",XLO(19,BODNZTP,16,1), XLBOBB_MASK, PPCCOM,{ BI } },
{ "bdnzflr", XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdnzflr-",XLO(19,BODNZF,16,0), XLBOBB_MASK, PPC, { BI } },
-{ "bdnzflr+",XLO(19,BODNZFP,16,0), XLBOBB_MASK, PPC, { BI } },
+{ "bdnzflr-",XLO(19,BODNZF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdnzflr+",XLO(19,BODNZFP,16,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bdnzflrl",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPC, { BI } },
-{ "bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, PPC, { BI } },
+{ "bdnzflrl-",XLO(19,BODNZF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdnzflrl+",XLO(19,BODNZFP,16,1), XLBOBB_MASK, PPCCOM,{ BI } },
{ "bdztlr", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, PPC, { BI } },
-{ "bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, PPC, { BI } },
+{ "bdztlr-", XLO(19,BODZT,16,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdztlr+", XLO(19,BODZTP,16,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bdztlrl", XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdztlrl-",XLO(19,BODZT,16,1), XLBOBB_MASK, PPC, { BI } },
-{ "bdztlrl+",XLO(19,BODZTP,16,1), XLBOBB_MASK, PPC, { BI } },
+{ "bdztlrl-",XLO(19,BODZT,16,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdztlrl+",XLO(19,BODZTP,16,1), XLBOBB_MASK, PPCCOM, { BI } },
{ "bdzflr", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, PPC, { BI } },
-{ "bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, PPC, { BI } },
+{ "bdzflr-", XLO(19,BODZF,16,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdzflr+", XLO(19,BODZFP,16,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bdzflrl", XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bdzflrl-",XLO(19,BODZF,16,1), XLBOBB_MASK, PPC, { BI } },
-{ "bdzflrl+",XLO(19,BODZFP,16,1), XLBOBB_MASK, PPC, { BI } },
+{ "bdzflrl-",XLO(19,BODZF,16,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bdzflrl+",XLO(19,BODZFP,16,1), XLBOBB_MASK, PPCCOM, { BI } },
{ "bclr", XLLK(19,16,0), XLYBB_MASK, PPCCOM, { BO, BI } },
{ "bclrl", XLLK(19,16,1), XLYBB_MASK, PPCCOM, { BO, BI } },
-{ "bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPC, { BOE, BI } },
-{ "bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPC, { BOE, BI } },
-{ "bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPC, { BOE, BI } },
-{ "bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPC, { BOE, BI } },
+{ "bclr+", XLYLK(19,16,1,0), XLYBB_MASK, PPCCOM, { BOE, BI } },
+{ "bclrl+", XLYLK(19,16,1,1), XLYBB_MASK, PPCCOM, { BOE, BI } },
+{ "bclr-", XLYLK(19,16,0,0), XLYBB_MASK, PPCCOM, { BOE, BI } },
+{ "bclrl-", XLYLK(19,16,0,1), XLYBB_MASK, PPCCOM, { BOE, BI } },
{ "bcr", XLLK(19,16,0), XLBB_MASK, PWRCOM, { BO, BI } },
{ "bcrl", XLLK(19,16,1), XLBB_MASK, PWRCOM, { BO, BI } },
+{ "rfid", XL(19,18), 0xffffffff, PPC64, { 0 } },
+
{ "crnot", XL(19,33), XL_MASK, PPCCOM, { BT, BA, BBA } },
{ "crnor", XL(19,33), XL_MASK, COM, { BT, BA, BB } },
{ "rfi", XL(19,50), 0xffffffff, COM, { 0 } },
-{ "rfci", XL(19,51), 0xffffffff, PPC, { 0 } },
+{ "rfci", XL(19,51), 0xffffffff, PPC403, { 0 } },
{ "rfsvc", XL(19,82), 0xffffffff, POWER, { 0 } },
@@ -1854,95 +2155,95 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "bctr", XLO(19,BOU,528,0), XLBOBIBB_MASK, COM, { 0 } },
{ "bctrl", XLO(19,BOU,528,1), XLBOBIBB_MASK, COM, { 0 } },
{ "bltctr", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bltctr-", XLOCB(19,BOT,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bltctr+", XLOCB(19,BOTP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bltctrl", XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bltctrl-",XLOCB(19,BOT,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bltctrl+",XLOCB(19,BOTP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgtctr", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgtctr-", XLOCB(19,BOT,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgtctr+", XLOCB(19,BOTP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgtctrl", XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgtctrl-",XLOCB(19,BOT,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgtctrl+",XLOCB(19,BOTP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "beqctr", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "beqctr-", XLOCB(19,BOT,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "beqctr+", XLOCB(19,BOTP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "beqctrl", XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "beqctrl-",XLOCB(19,BOT,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "beqctrl+",XLOCB(19,BOTP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bsoctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bsoctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bsoctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bsoctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bsoctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bsoctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bunctr", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bunctr-", XLOCB(19,BOT,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bunctr+", XLOCB(19,BOTP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bunctrl", XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bunctrl-",XLOCB(19,BOT,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bunctrl+",XLOCB(19,BOTP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgectr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgectr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgectr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bgectrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bgectrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bgectrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnlctr", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnlctr-", XLOCB(19,BOF,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnlctr+", XLOCB(19,BOFP,CBLT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnlctrl", XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnlctrl-",XLOCB(19,BOF,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnlctrl+",XLOCB(19,BOFP,CBLT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "blectr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "blectr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "blectr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "blectrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "blectrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "blectrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bngctr", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bngctr-", XLOCB(19,BOF,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bngctr+", XLOCB(19,BOFP,CBGT,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bngctrl", XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bngctrl-",XLOCB(19,BOF,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bngctrl+",XLOCB(19,BOFP,CBGT,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnectr", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnectr-", XLOCB(19,BOF,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnectr+", XLOCB(19,BOFP,CBEQ,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnectrl", XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnectrl-",XLOCB(19,BOF,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnectrl+",XLOCB(19,BOFP,CBEQ,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnsctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnsctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnsctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnsctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnsctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnsctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnuctr", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnuctr-", XLOCB(19,BOF,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnuctr+", XLOCB(19,BOFP,CBSO,528,0), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "bnuctrl", XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
-{ "bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
-{ "bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPC, { CR } },
+{ "bnuctrl-",XLOCB(19,BOF,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
+{ "bnuctrl+",XLOCB(19,BOFP,CBSO,528,1), XLBOCBBB_MASK, PPCCOM, { CR } },
{ "btctr", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, PPC, { BI } },
-{ "btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, PPC, { BI } },
+{ "btctr-", XLO(19,BOT,528,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "btctr+", XLO(19,BOTP,528,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "btctrl", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, PPC, { BI } },
-{ "btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, PPC, { BI } },
+{ "btctrl-", XLO(19,BOT,528,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "btctrl+", XLO(19,BOTP,528,1), XLBOBB_MASK, PPCCOM, { BI } },
{ "bfctr", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, PPC, { BI } },
-{ "bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, PPC, { BI } },
+{ "bfctr-", XLO(19,BOF,528,0), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bfctr+", XLO(19,BOFP,528,0), XLBOBB_MASK, PPCCOM, { BI } },
{ "bfctrl", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, { BI } },
-{ "bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, PPC, { BI } },
-{ "bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, PPC, { BI } },
+{ "bfctrl-", XLO(19,BOF,528,1), XLBOBB_MASK, PPCCOM, { BI } },
+{ "bfctrl+", XLO(19,BOFP,528,1), XLBOBB_MASK, PPCCOM, { BI } },
{ "bcctr", XLLK(19,528,0), XLYBB_MASK, PPCCOM, { BO, BI } },
-{ "bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPC, { BOE, BI } },
-{ "bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPC, { BOE, BI } },
+{ "bcctr-", XLYLK(19,528,0,0), XLYBB_MASK, PPCCOM, { BOE, BI } },
+{ "bcctr+", XLYLK(19,528,1,0), XLYBB_MASK, PPCCOM, { BOE, BI } },
{ "bcctrl", XLLK(19,528,1), XLYBB_MASK, PPCCOM, { BO, BI } },
-{ "bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPC, { BOE, BI } },
-{ "bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPC, { BOE, BI } },
+{ "bcctrl-", XLYLK(19,528,0,1), XLYBB_MASK, PPCCOM, { BOE, BI } },
+{ "bcctrl+", XLYLK(19,528,1,1), XLYBB_MASK, PPCCOM, { BOE, BI } },
{ "bcc", XLLK(19,528,0), XLBB_MASK, PWRCOM, { BO, BI } },
{ "bccl", XLLK(19,528,1), XLBB_MASK, PWRCOM, { BO, BI } },
@@ -2156,6 +2457,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "mulhw", XO(31,75,0,0), XO_MASK, PPC, { RT, RA, RB } },
{ "mulhw.", XO(31,75,0,1), XO_MASK, PPC, { RT, RA, RB } },
+{ "mtsrd", X(31,82), XRB_MASK|(1<<20), PPC64, { SR, RS } },
+
{ "mfmsr", X(31,83), XRARB_MASK, COM, { RT } },
{ "ldarx", X(31,84), X_MASK, PPC64, { RT, RA, RB } },
@@ -2174,6 +2477,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "mulo", XO(31,107,1,0), XO_MASK, M601, { RT, RA, RB } },
{ "mulo.", XO(31,107,1,1), XO_MASK, M601, { RT, RA, RB } },
+{ "mtsrdin", X(31,114), XRA_MASK, PPC64, { RS, RB } },
+
{ "clf", X(31,118), XRB_MASK, POWER, { RT, RA } },
{ "lbzux", X(31,119), X_MASK, COM, { RT, RAL, RB } },
@@ -2223,6 +2528,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "wrteei", X(31,163), XE_MASK, PPC403, { E } },
+{ "mtmsrd", X(31,178), XRARB_MASK, PPC64, { RS } },
+
{ "stdux", X(31,181), X_MASK, PPC64, { RS, RAS, RB } },
{ "stwux", X(31,183), X_MASK, PPCCOM, { RS, RAS, RB } },
@@ -2324,7 +2631,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "lhzx", X(31,279), X_MASK, COM, { RT, RA, RB } },
-{ "icbt", X(31,262), XRT_MASK, PPC, { RA, RB } },
+{ "icbt", X(31,262), XRT_MASK, PPC403, { RA, RB } },
{ "eqv", XRC(31,284,0), X_MASK, COM, { RA, RS, RB } },
{ "eqv.", XRC(31,284,1), X_MASK, COM, { RA, RS, RB } },
@@ -2373,7 +2680,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "mfdmasa3", XSPR(31,323,219), XSPR_MASK, PPC403, { RT } },
{ "mfdmacc3", XSPR(31,323,220), XSPR_MASK, PPC403, { RT } },
{ "mfdmasr", XSPR(31,323,224), XSPR_MASK, PPC403, { RT } },
-{ "mfdcr", X(31,323), X_MASK, PPC, { RT, SPR } },
+{ "mfdcr", X(31,323), X_MASK, PPC403, { RT, SPR } },
{ "div", XO(31,331,0,0), XO_MASK, M601, { RT, RA, RB } },
{ "div.", XO(31,331,0,1), XO_MASK, M601, { RT, RA, RB } },
@@ -2411,6 +2718,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "mflctrl2", XSPR(31,339,157), XSPR_MASK, PPC860, { RT } },
{ "mfictrl", XSPR(31,339,158), XSPR_MASK, PPC860, { RT } },
{ "mfbar", XSPR(31,339,159), XSPR_MASK, PPC860, { RT } },
+{ "mfsprg4", XSPR(31,339,260), XSPR_MASK, PPC405, { RT } },
+{ "mfsprg5", XSPR(31,339,261), XSPR_MASK, PPC405, { RT } },
+{ "mfsprg6", XSPR(31,339,262), XSPR_MASK, PPC405, { RT } },
+{ "mfsprg7", XSPR(31,339,263), XSPR_MASK, PPC405, { RT } },
{ "mfsprg", XSPR(31,339,272), XSPRG_MASK, PPC, { RT, SPRG } },
{ "mfsprg0", XSPR(31,339,272), XSPR_MASK, PPC, { RT } },
{ "mfsprg1", XSPR(31,339,273), XSPR_MASK, PPC, { RT } },
@@ -2451,9 +2762,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "mfmd_dbcam", XSPR(31,339,824), XSPR_MASK, PPC860, { RT } },
{ "mfmd_dbram0",XSPR(31,339,825), XSPR_MASK, PPC860, { RT } },
{ "mfmd_dbram1",XSPR(31,339,826), XSPR_MASK, PPC860, { RT } },
-{ "mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, { RT } },
-{ "mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, { RT } },
-{ "mficdbdr",XSPR(31,339,979), XSPR_MASK, PPC403, { RT } },
+{ "mfzpr", XSPR(31,339,944), XSPR_MASK, PPC403, { RT } },
+{ "mfpid", XSPR(31,339,945), XSPR_MASK, PPC403, { RT } },
+{ "mfccr0", XSPR(31,339,947), XSPR_MASK, PPC405, { RT } },
+{ "mficdbdr", XSPR(31,339,979), XSPR_MASK, PPC403, { RT } },
{ "mfummcr0", XSPR(31,339,936), XSPR_MASK, PPC750, { RT } },
{ "mfupmc1", XSPR(31,339,937), XSPR_MASK, PPC750, { RT } },
{ "mfupmc2", XSPR(31,339,938), XSPR_MASK, PPC750, { RT } },
@@ -2461,12 +2773,21 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "mfummcr1", XSPR(31,339,940), XSPR_MASK, PPC750, { RT } },
{ "mfupmc3", XSPR(31,339,941), XSPR_MASK, PPC750, { RT } },
{ "mfupmc4", XSPR(31,339,942), XSPR_MASK, PPC750, { RT } },
+{ "mfiac3", XSPR(31,339,948), XSPR_MASK, PPC405, { RT } },
+{ "mfiac4", XSPR(31,339,949), XSPR_MASK, PPC405, { RT } },
+{ "mfdvc1", XSPR(31,339,950), XSPR_MASK, PPC405, { RT } },
+{ "mfdvc2", XSPR(31,339,951), XSPR_MASK, PPC405, { RT } },
{ "mfmmcr0", XSPR(31,339,952), XSPR_MASK, PPC750, { RT } },
{ "mfpmc1", XSPR(31,339,953), XSPR_MASK, PPC750, { RT } },
+{ "mfsgr", XSPR(31,339,953), XSPR_MASK, PPC403, { RT } },
{ "mfpmc2", XSPR(31,339,954), XSPR_MASK, PPC750, { RT } },
+{ "mfdcwr", XSPR(31,339,954), XSPR_MASK, PPC403, { RT } },
{ "mfsia", XSPR(31,339,955), XSPR_MASK, PPC750, { RT } },
+{ "mfsler", XSPR(31,339,955), XSPR_MASK, PPC405, { RT } },
{ "mfmmcr1", XSPR(31,339,956), XSPR_MASK, PPC750, { RT } },
+{ "mfsu0r", XSPR(31,339,956), XSPR_MASK, PPC405, { RT } },
{ "mfpmc3", XSPR(31,339,957), XSPR_MASK, PPC750, { RT } },
+{ "mfdbcr1", XSPR(31,339,957), XSPR_MASK, PPC405, { RT } },
{ "mfpmc4", XSPR(31,339,958), XSPR_MASK, PPC750, { RT } },
{ "mfesr", XSPR(31,339,980), XSPR_MASK, PPC403, { RT } },
{ "mfdear", XSPR(31,339,981), XSPR_MASK, PPC403, { RT } },
@@ -2480,6 +2801,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "mfsrr2", XSPR(31,339,990), XSPR_MASK, PPC403, { RT } },
{ "mfsrr3", XSPR(31,339,991), XSPR_MASK, PPC403, { RT } },
{ "mfdbsr", XSPR(31,339,1008), XSPR_MASK, PPC403, { RT } },
+{ "mfdbcr0", XSPR(31,339,1010), XSPR_MASK, PPC405, { RT } },
{ "mfiac1", XSPR(31,339,1012), XSPR_MASK, PPC403, { RT } },
{ "mfiac2", XSPR(31,339,1013), XSPR_MASK, PPC403, { RT } },
{ "mfdac1", XSPR(31,339,1014), XSPR_MASK, PPC403, { RT } },
@@ -2501,7 +2823,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "lhax", X(31,343), X_MASK, COM, { RT, RA, RB } },
-{ "dccci", X(31,454), XRT_MASK, PPC, { RA, RB } },
+{ "dccci", X(31,454), XRT_MASK, PPC403, { RA, RB } },
{ "abs", XO(31,360,0,0), XORB_MASK, M601, { RT, RA } },
{ "abs.", XO(31,360,0,1), XORB_MASK, M601, { RT, RA } },
@@ -2515,6 +2837,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "tlbia", X(31,370), 0xffffffff, PPC, { 0 } },
+{ "mftbl", XSPR(31,371,268), XSPR_MASK, PPC, { RT } },
{ "mftbu", XSPR(31,371,269), XSPR_MASK, PPC, { RT } },
{ "mftb", X(31,371), X_MASK, PPC, { RT, TBR } },
@@ -2602,7 +2925,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "mtthrm1", XSPR(31,451,1020), XSPR_MASK, PPC750, { RT } },
{ "mtthrm2", XSPR(31,451,1021), XSPR_MASK, PPC750, { RT } },
{ "mtthrm3", XSPR(31,451,1022), XSPR_MASK, PPC750, { RT } },
-{ "mtdcr", X(31,451), X_MASK, PPC, { SPR, RS } },
+{ "mtdcr", X(31,451), X_MASK, PPC403, { SPR, RS } },
{ "divdu", XO(31,457,0,0), XO_MASK, PPC64, { RT, RA, RB } },
{ "divdu.", XO(31,457,0,1), XO_MASK, PPC64, { RT, RA, RB } },
@@ -2649,6 +2972,10 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "mtsprg1", XSPR(31,467,273), XSPR_MASK, PPC, { RT } },
{ "mtsprg2", XSPR(31,467,274), XSPR_MASK, PPC, { RT } },
{ "mtsprg3", XSPR(31,467,275), XSPR_MASK, PPC, { RT } },
+{ "mtsprg4", XSPR(31,467,276), XSPR_MASK, PPC405, { RT } },
+{ "mtsprg5", XSPR(31,467,277), XSPR_MASK, PPC405, { RT } },
+{ "mtsprg6", XSPR(31,467,278), XSPR_MASK, PPC405, { RT } },
+{ "mtsprg7", XSPR(31,467,279), XSPR_MASK, PPC405, { RT } },
{ "mtasr", XSPR(31,467,280), XSPR_MASK, PPC64, { RS } },
{ "mtear", XSPR(31,467,282), XSPR_MASK, PPC, { RS } },
{ "mttbl", XSPR(31,467,284), XSPR_MASK, PPC, { RS } },
@@ -2659,8 +2986,19 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "mtdbatl", XSPR(31,467,537), XSPRBAT_MASK, PPC, { SPRBAT, RS } },
{ "mtzpr", XSPR(31,467,944), XSPR_MASK, PPC403, { RT } },
{ "mtpid", XSPR(31,467,945), XSPR_MASK, PPC403, { RT } },
+{ "mtccr0", XSPR(31,467,947), XSPR_MASK, PPC405, { RT } },
+{ "mtiac3", XSPR(31,467,948), XSPR_MASK, PPC405, { RT } },
+{ "mtiac4", XSPR(31,467,949), XSPR_MASK, PPC405, { RT } },
+{ "mtdvc1", XSPR(31,467,950), XSPR_MASK, PPC405, { RT } },
+{ "mtdvc2", XSPR(31,467,951), XSPR_MASK, PPC405, { RT } },
+{ "mtsgr", XSPR(31,467,953), XSPR_MASK, PPC403, { RT } },
+{ "mtdcwr", XSPR(31,467,954), XSPR_MASK, PPC403, { RT } },
+{ "mtsler", XSPR(31,467,955), XSPR_MASK, PPC405, { RT } },
+{ "mtsu0r", XSPR(31,467,956), XSPR_MASK, PPC405, { RT } },
+{ "mtdbcr1", XSPR(31,467,957), XSPR_MASK, PPC405, { RT } },
{ "mticdbdr",XSPR(31,467,979), XSPR_MASK, PPC403, { RT } },
{ "mtesr", XSPR(31,467,980), XSPR_MASK, PPC403, { RT } },
+{ "mtdear", XSPR(31,467,981), XSPR_MASK, PPC403, { RT } },
{ "mtevpr", XSPR(31,467,982), XSPR_MASK, PPC403, { RT } },
{ "mtcdbcr", XSPR(31,467,983), XSPR_MASK, PPC403, { RT } },
{ "mttsr", XSPR(31,467,984), XSPR_MASK, PPC403, { RT } },
@@ -2671,6 +3009,7 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "mtsrr2", XSPR(31,467,990), XSPR_MASK, PPC403, { RT } },
{ "mtsrr3", XSPR(31,467,991), XSPR_MASK, PPC403, { RT } },
{ "mtdbsr", XSPR(31,467,1008), XSPR_MASK, PPC403, { RT } },
+{ "mtdbcr0", XSPR(31,467,1010), XSPR_MASK, PPC405, { RT } },
{ "mtiac1", XSPR(31,467,1012), XSPR_MASK, PPC403, { RT } },
{ "mtiac2", XSPR(31,467,1013), XSPR_MASK, PPC403, { RT } },
{ "mtdac1", XSPR(31,467,1014), XSPR_MASK, PPC403, { RT } },
@@ -2787,6 +3126,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "sreq", XRC(31,729,0), X_MASK, M601, { RA, RS, RB } },
{ "sreq.", XRC(31,729,1), X_MASK, M601, { RA, RS, RB } },
+{ "dcba", X(31,758), XRT_MASK, PPC405, { RA, RB } },
+
{ "stfdux", X(31,759), X_MASK, COM, { FRS, RAS, RB } },
{ "srliq", XRC(31,760,0), X_MASK, M601, { RA, RS, SH } },
@@ -2827,6 +3168,8 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "extsh.", XRC(31,922,1), XRB_MASK, PPCCOM, { RA, RS } },
{ "exts.", XRC(31,922,1), XRB_MASK, PWRCOM, { RA, RS } },
+{ "tlbrehi", XTLB(31,946,0), XTLB_MASK, PPC403, { RT, RA } },
+{ "tlbrelo", XTLB(31,946,1), XTLB_MASK, PPC403, { RT, RA } },
{ "tlbre", X(31,946), X_MASK, PPC403, { RT, RA, SH } },
{ "sraiq", XRC(31,952,0), X_MASK, M601, { RA, RS, SH } },
@@ -2835,9 +3178,12 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "extsb", XRC(31,954,0), XRB_MASK, PPC, { RA, RS} },
{ "extsb.", XRC(31,954,1), XRB_MASK, PPC, { RA, RS} },
-{ "iccci", X(31,966), XRT_MASK, PPC, { RA, RB } },
+{ "iccci", X(31,966), XRT_MASK, PPC403, { RA, RB } },
{ "tlbld", X(31,978), XRTRA_MASK, PPC, { RB } },
+
+{ "tlbwehi", XTLB(31,978,0), XTLB_MASK, PPC403, { RT, RA } },
+{ "tlbwelo", XTLB(31,978,1), XTLB_MASK, PPC403, { RT, RA } },
{ "tlbwe", X(31,978), X_MASK, PPC403, { RS, RA, SH } },
{ "icbi", X(31,982), XRT_MASK, PPC, { RA, RB } },
@@ -2854,6 +3200,19 @@ const struct powerpc_opcode powerpc_opcodes[] = {
{ "dcbz", X(31,1014), XRT_MASK, PPC, { RA, RB } },
{ "dclz", X(31,1014), XRT_MASK, PPC, { RA, RB } },
+{ "lvebx", X(31, 7), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "lvehx", X(31, 39), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "lvewx", X(31, 71), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "lvsl", X(31, 6), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "lvsr", X(31, 38), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "lvx", X(31, 103), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "lvxl", X(31, 359), X_MASK, PPCVEC, { VD, RA, RB } },
+{ "stvebx", X(31, 135), X_MASK, PPCVEC, { VS, RA, RB } },
+{ "stvehx", X(31, 167), X_MASK, PPCVEC, { VS, RA, RB } },
+{ "stvewx", X(31, 199), X_MASK, PPCVEC, { VS, RA, RB } },
+{ "stvx", X(31, 231), X_MASK, PPCVEC, { VS, RA, RB } },
+{ "stvxl", X(31, 487), X_MASK, PPCVEC, { VS, RA, RB } },
+
{ "lwz", OP(32), OP_MASK, PPCCOM, { RT, D, RA } },
{ "l", OP(32), OP_MASK, PWRCOM, { RT, D, RA } },
diff --git a/contrib/binutils/opcodes/sparc-dis.c b/contrib/binutils/opcodes/sparc-dis.c
index a595d0f..cebff52 100644
--- a/contrib/binutils/opcodes/sparc-dis.c
+++ b/contrib/binutils/opcodes/sparc-dis.c
@@ -1,5 +1,5 @@
/* Print SPARC instructions.
- Copyright (C) 1989, 91-97, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1989, 91-97, 1998, 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
@@ -25,7 +25,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Bitmask of v9 architectures. */
#define MASK_V9 ((1 << SPARC_OPCODE_ARCH_V9) \
- | (1 << SPARC_OPCODE_ARCH_V9A))
+ | (1 << SPARC_OPCODE_ARCH_V9A) \
+ | (1 << SPARC_OPCODE_ARCH_V9B))
/* 1 if INSN is for v9 only. */
#define V9_ONLY_P(insn) (! ((insn)->architecture & ~MASK_V9))
/* 1 if INSN is for v9. */
@@ -95,7 +96,7 @@ static char *v9_priv_reg_names[] =
static char *v9a_asr_reg_names[] =
{
"pcr", "pic", "dcr", "gsr", "set_softint", "clear_softint",
- "softint", "tick_cmpr"
+ "softint", "tick_cmpr", "sys_tick", "sys_tick_cmpr"
};
/* Macros used to extract instruction fields. Not all fields have
@@ -463,6 +464,10 @@ print_insn_sparc (memaddr, info)
}
break;
+ case '3':
+ (info->fprintf_func) (stream, "%d", X_IMM (insn, 3));
+ break;
+
case 'K':
{
int mask = X_MEMBAR (insn);
@@ -551,7 +556,7 @@ print_insn_sparc (memaddr, info)
break;
case '/':
- if (X_RS1 (insn) < 16 || X_RS1 (insn) > 23)
+ if (X_RS1 (insn) < 16 || X_RS1 (insn) > 25)
(*info->fprintf_func) (stream, "%%reserved");
else
(*info->fprintf_func) (stream, "%%%s",
@@ -559,7 +564,7 @@ print_insn_sparc (memaddr, info)
break;
case '_':
- if (X_RD (insn) < 16 || X_RD (insn) > 23)
+ if (X_RD (insn) < 16 || X_RD (insn) > 25)
(*info->fprintf_func) (stream, "%%reserved");
else
(*info->fprintf_func) (stream, "%%%s",
@@ -770,6 +775,9 @@ compute_arch_mask (mach)
case bfd_mach_sparc_v8plusa :
case bfd_mach_sparc_v9a :
return SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9A);
+ case bfd_mach_sparc_v8plusb :
+ case bfd_mach_sparc_v9b :
+ return SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9B);
}
abort ();
}
diff --git a/contrib/binutils/opcodes/sparc-opc.c b/contrib/binutils/opcodes/sparc-opc.c
index a7132bb..2e20d2e 100644
--- a/contrib/binutils/opcodes/sparc-opc.c
+++ b/contrib/binutils/opcodes/sparc-opc.c
@@ -1,5 +1,5 @@
/* Table of opcodes for the sparc.
- Copyright (C) 1989, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+ Copyright (C) 1989, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
This file is part of the BFD library.
@@ -35,27 +35,30 @@ Boston, MA 02111-1307, USA. */
#define MASK_SPARCLITE SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_SPARCLITE)
#define MASK_V9 SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9)
#define MASK_V9A SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9A)
+#define MASK_V9B SPARC_OPCODE_ARCH_MASK (SPARC_OPCODE_ARCH_V9B)
/* Bit masks of architectures supporting the insn. */
#define v6 (MASK_V6 | MASK_V7 | MASK_V8 | MASK_SPARCLET \
- | MASK_SPARCLITE | MASK_V9 | MASK_V9A)
+ | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B)
/* v6 insns not supported on the sparclet */
#define v6notlet (MASK_V6 | MASK_V7 | MASK_V8 \
- | MASK_SPARCLITE | MASK_V9 | MASK_V9A)
+ | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B)
#define v7 (MASK_V7 | MASK_V8 | MASK_SPARCLET \
- | MASK_SPARCLITE | MASK_V9 | MASK_V9A)
+ | MASK_SPARCLITE | MASK_V9 | MASK_V9A | MASK_V9B)
/* Although not all insns are implemented in hardware, sparclite is defined
to be a superset of v8. Unimplemented insns trap and are then theoretically
implemented in software.
It's not clear that the same is true for sparclet, although the docs
suggest it is. Rather than complicating things, the sparclet assembler
recognizes all v8 insns. */
-#define v8 (MASK_V8 | MASK_SPARCLET | MASK_SPARCLITE | MASK_V9 | MASK_V9A)
+#define v8 (MASK_V8 | MASK_SPARCLET | MASK_SPARCLITE \
+ | MASK_V9 | MASK_V9A | MASK_V9B)
#define sparclet (MASK_SPARCLET)
#define sparclite (MASK_SPARCLITE)
-#define v9 (MASK_V9 | MASK_V9A)
-#define v9a (MASK_V9A)
+#define v9 (MASK_V9 | MASK_V9A | MASK_V9B)
+#define v9a (MASK_V9A | MASK_V9B)
+#define v9b (MASK_V9B)
/* v6 insns not supported by v9 */
#define v6notv9 (MASK_V6 | MASK_V7 | MASK_V8 \
| MASK_SPARCLET | MASK_SPARCLITE)
@@ -76,6 +79,8 @@ const struct sparc_opcode_arch sparc_opcode_archs[] = {
{ "v9", MASK_V6 | MASK_V7 | MASK_V8 | MASK_V9 },
/* v9 with ultrasparc additions */
{ "v9a", MASK_V6 | MASK_V7 | MASK_V8 | MASK_V9 | MASK_V9A },
+ /* v9 with cheetah additions */
+ { "v9b", MASK_V6 | MASK_V7 | MASK_V8 | MASK_V9 | MASK_V9A | MASK_V9B },
{ NULL, 0 }
};
@@ -755,8 +760,8 @@ const struct sparc_opcode sparc_opcodes[] = {
{ "scan", F3(2, 0x2c, 0), F3(~2, ~0x2c, ~0)|ASI(~0), "1,2,d", 0, sparclet|sparclite },
{ "scan", F3(2, 0x2c, 1), F3(~2, ~0x2c, ~1), "1,i,d", 0, sparclet|sparclite },
-{ "popc", F3(2, 0x2e, 0), F3(~2, ~0x2e, ~0)|RS2_G0|ASI(~0),"2,d", 0, v9 },
-{ "popc", F3(2, 0x2e, 1), F3(~2, ~0x2e, ~1)|RS2_G0, "i,d", 0, v9 },
+{ "popc", F3(2, 0x2e, 0), F3(~2, ~0x2e, ~0)|RS1_G0|ASI(~0),"2,d", 0, v9 },
+{ "popc", F3(2, 0x2e, 1), F3(~2, ~0x2e, ~1)|RS1_G0, "i,d", 0, v9 },
{ "clr", F3(2, 0x02, 0), F3(~2, ~0x02, ~0)|RD_G0|RS1_G0|ASI_RS2(~0), "d", F_ALIAS, v6 }, /* or %g0,%g0,d */
{ "clr", F3(2, 0x02, 1), F3(~2, ~0x02, ~1)|RS1_G0|SIMM13(~0), "d", F_ALIAS, v6 }, /* or %g0,0,d */
@@ -843,6 +848,10 @@ const struct sparc_opcode sparc_opcodes[] = {
{ "wr", F3(2, 0x30, 1)|RD(22), F3(~2, ~0x30, ~1)|RD(~22), "1,i,_", 0, v9a }, /* wr r,i,%softint */
{ "wr", F3(2, 0x30, 0)|RD(23), F3(~2, ~0x30, ~0)|RD(~23)|ASI(~0), "1,2,_", 0, v9a }, /* wr r,r,%tick_cmpr */
{ "wr", F3(2, 0x30, 1)|RD(23), F3(~2, ~0x30, ~1)|RD(~23), "1,i,_", 0, v9a }, /* wr r,i,%tick_cmpr */
+{ "wr", F3(2, 0x30, 0)|RD(24), F3(~2, ~0x30, ~0)|RD(~24)|ASI(~0), "1,2,_", 0, v9b }, /* wr r,r,%sys_tick */
+{ "wr", F3(2, 0x30, 1)|RD(24), F3(~2, ~0x30, ~1)|RD(~24), "1,i,_", 0, v9b }, /* wr r,i,%sys_tick */
+{ "wr", F3(2, 0x30, 0)|RD(25), F3(~2, ~0x30, ~0)|RD(~25)|ASI(~0), "1,2,_", 0, v9b }, /* wr r,r,%sys_tick_cmpr */
+{ "wr", F3(2, 0x30, 1)|RD(25), F3(~2, ~0x30, ~1)|RD(~25), "1,i,_", 0, v9b }, /* wr r,i,%sys_tick_cmpr */
{ "rd", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|SIMM13(~0), "M,d", 0, v8 }, /* rd %asrX,r */
{ "rd", F3(2, 0x28, 0), F3(~2, ~0x28, ~0)|RS1_G0|SIMM13(~0), "y,d", 0, v6 }, /* rd %y,r */
@@ -862,6 +871,8 @@ const struct sparc_opcode sparc_opcodes[] = {
{ "rd", F3(2, 0x28, 0)|RS1(19), F3(~2, ~0x28, ~0)|RS1(~19)|SIMM13(~0), "/,d", 0, v9a }, /* rd %gsr,r */
{ "rd", F3(2, 0x28, 0)|RS1(22), F3(~2, ~0x28, ~0)|RS1(~22)|SIMM13(~0), "/,d", 0, v9a }, /* rd %softint,r */
{ "rd", F3(2, 0x28, 0)|RS1(23), F3(~2, ~0x28, ~0)|RS1(~23)|SIMM13(~0), "/,d", 0, v9a }, /* rd %tick_cmpr,r */
+{ "rd", F3(2, 0x28, 0)|RS1(24), F3(~2, ~0x28, ~0)|RS1(~24)|SIMM13(~0), "/,d", 0, v9b }, /* rd %sys_tick,r */
+{ "rd", F3(2, 0x28, 0)|RS1(25), F3(~2, ~0x28, ~0)|RS1(~25)|SIMM13(~0), "/,d", 0, v9b }, /* rd %sys_tick_cmpr,r */
{ "rdpr", F3(2, 0x2a, 0), F3(~2, ~0x2a, ~0)|SIMM13(~0), "?,d", 0, v9 }, /* rdpr %priv,r */
{ "wrpr", F3(2, 0x32, 0), F3(~2, ~0x32, ~0), "1,2,!", 0, v9 }, /* wrpr r1,r2,%priv */
@@ -1814,6 +1825,19 @@ SLCBCC("cbnefr", 15),
{ "array16", F3F(2, 0x36, 0x012), F3F(~2, ~0x36, ~0x012), "1,2,d", 0, v9a },
{ "array32", F3F(2, 0x36, 0x014), F3F(~2, ~0x36, ~0x014), "1,2,d", 0, v9a },
+/* Cheetah instructions */
+{ "edge8n", F3F(2, 0x36, 0x001), F3F(~2, ~0x36, ~0x001), "1,2,d", 0, v9b },
+{ "edge8ln", F3F(2, 0x36, 0x003), F3F(~2, ~0x36, ~0x003), "1,2,d", 0, v9b },
+{ "edge16n", F3F(2, 0x36, 0x005), F3F(~2, ~0x36, ~0x005), "1,2,d", 0, v9b },
+{ "edge16ln", F3F(2, 0x36, 0x007), F3F(~2, ~0x36, ~0x007), "1,2,d", 0, v9b },
+{ "edge32n", F3F(2, 0x36, 0x009), F3F(~2, ~0x36, ~0x009), "1,2,d", 0, v9b },
+{ "edge32ln", F3F(2, 0x36, 0x00b), F3F(~2, ~0x36, ~0x00b), "1,2,d", 0, v9b },
+
+{ "bmask", F3F(2, 0x36, 0x019), F3F(~2, ~0x36, ~0x019), "1,2,d", 0, v9b },
+{ "bshuffle", F3F(2, 0x36, 0x04c), F3F(~2, ~0x36, ~0x04c), "v,B,H", 0, v9b },
+
+{ "siam", F3F(2, 0x36, 0x081), F3F(~2, ~0x36, ~0x081)|RD_G0|RS1_G0|RS2(~7), "3", 0, v9b },
+
/* More v9 specific insns, these need to come last so they do not clash
with v9a instructions such as "edge8" which looks like impdep1. */
@@ -1976,6 +2000,7 @@ static arg prefetch_table[] =
{ 2, "#n_writes" },
{ 3, "#one_write" },
{ 4, "#page" },
+ { 16, "#invalidate" },
{ 0, 0 }
};
diff --git a/contrib/binutils/opcodes/sysdep.h b/contrib/binutils/opcodes/sysdep.h
index bb23e5f..238eb5d 100644
--- a/contrib/binutils/opcodes/sysdep.h
+++ b/contrib/binutils/opcodes/sysdep.h
@@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "config.h"
-#include <ansidecl.h>
+#include "ansidecl.h"
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
diff --git a/contrib/binutils/opcodes/tic30-dis.c b/contrib/binutils/opcodes/tic30-dis.c
index 5ccf893..77be735 100644
--- a/contrib/binutils/opcodes/tic30-dis.c
+++ b/contrib/binutils/opcodes/tic30-dis.c
@@ -1,5 +1,5 @@
/* Disassembly routines for TMS320C30 architecture
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au)
This program is free software; you can redistribute it and/or modify
@@ -27,10 +27,10 @@
#define PARALLEL_INSN 2
/* Gets the type of instruction based on the top 2 or 3 bits of the
- instruction word. */
+ instruction word. */
#define GET_TYPE(insn) (insn & 0x80000000 ? insn & 0xC0000000 : insn & 0xE0000000)
-/* Instruction types. */
+/* Instruction types. */
#define TWO_OPERAND_1 0x00000000
#define TWO_OPERAND_2 0x40000000
#define THREE_OPERAND 0x20000000
@@ -38,14 +38,14 @@
#define MUL_ADDS 0x80000000
#define BRANCHES 0x60000000
-/* Specific instruction id bits. */
+/* Specific instruction id bits. */
#define NORMAL_IDEN 0x1F800000
#define PAR_STORE_IDEN 0x3E000000
#define MUL_ADD_IDEN 0x2C000000
#define BR_IMM_IDEN 0x1F000000
#define BR_COND_IDEN 0x1C3F0000
-/* Addressing modes. */
+/* Addressing modes. */
#define AM_REGISTER 0x00000000
#define AM_DIRECT 0x00200000
#define AM_INDIRECT 0x00400000
@@ -56,15 +56,15 @@
#define REG_AR0 0x08
#define LDP_INSN 0x08700000
-/* TMS320C30 program counter for current instruction. */
+/* TMS320C30 program counter for current instruction. */
static unsigned int _pc;
struct instruction
- {
- int type;
- template *tm;
- partemplate *ptm;
- };
+{
+ int type;
+ template *tm;
+ partemplate *ptm;
+};
int get_tic30_instruction PARAMS ((unsigned long, struct instruction *));
int print_two_operand
@@ -85,15 +85,14 @@ print_insn_tic30 (pc, info)
disassemble_info *info;
{
unsigned long insn_word;
- struct instruction insn =
- {0, NULL, NULL};
+ struct instruction insn = { 0, NULL, NULL };
bfd_vma bufaddr = pc - info->buffer_vma;
- /* Obtain the current instruction word from the buffer. */
+ /* Obtain the current instruction word from the buffer. */
insn_word = (*(info->buffer + bufaddr) << 24) | (*(info->buffer + bufaddr + 1) << 16) |
(*(info->buffer + bufaddr + 2) << 8) | *(info->buffer + bufaddr + 3);
_pc = pc / 4;
/* Get the instruction refered to by the current instruction word
- and print it out based on its type. */
+ and print it out based on its type. */
if (!get_tic30_instruction (insn_word, &insn))
return -1;
switch (GET_TYPE (insn_word))
@@ -249,7 +248,7 @@ print_two_operand (info, insn_word, insn)
if (insn->tm->opcode_modifier == AddressMode)
{
int src_op, dest_op;
- /* Determine whether instruction is a store or a normal instruction. */
+ /* Determine whether instruction is a store or a normal instruction. */
if ((insn->tm->operand_types[1] & (Direct | Indirect)) == (Direct | Indirect))
{
src_op = 1;
@@ -260,14 +259,14 @@ print_two_operand (info, insn_word, insn)
src_op = 0;
dest_op = 1;
}
- /* Get the destination register. */
+ /* Get the destination register. */
if (insn->tm->operands == 2)
get_register_operand ((insn_word & 0x001F0000) >> 16, operand[dest_op]);
- /* Get the source operand based on addressing mode. */
+ /* Get the source operand based on addressing mode. */
switch (insn_word & AddressMode)
{
case AM_REGISTER:
- /* Check for the NOP instruction before getting the operand. */
+ /* Check for the NOP instruction before getting the operand. */
if ((insn->tm->operand_types[0] & NotReq) == 0)
get_register_operand ((insn_word & 0x0000001F), operand[src_op]);
break;
@@ -278,7 +277,7 @@ print_two_operand (info, insn_word, insn)
get_indirect_operand ((insn_word & 0x0000FFFF), 2, operand[src_op]);
break;
case AM_IMM:
- /* Get the value of the immediate operand based on variable type. */
+ /* Get the value of the immediate operand based on variable type. */
switch (insn->tm->imm_arg_type)
{
case Imm_Float:
@@ -294,7 +293,7 @@ print_two_operand (info, insn_word, insn)
default:
return 0;
}
- /* Handle special case for LDP instruction. */
+ /* Handle special case for LDP instruction. */
if ((insn_word & 0xFFFFFF00) == LDP_INSN)
{
strcpy (name, "ldp");
@@ -303,7 +302,7 @@ print_two_operand (info, insn_word, insn)
}
}
}
- /* Handle case for stack and rotate instructions. */
+ /* Handle case for stack and rotate instructions. */
else if (insn->tm->operands == 1)
{
if (insn->tm->opcode_modifier == StackOp)
@@ -311,7 +310,7 @@ print_two_operand (info, insn_word, insn)
get_register_operand ((insn_word & 0x001F0000) >> 16, operand[0]);
}
}
- /* Output instruction to stream. */
+ /* Output instruction to stream. */
info->fprintf_func (info->stream, " %s %s%c%s", name,
operand[0][0] ? operand[0] : "",
operand[1][0] ? ',' : ' ',
@@ -385,7 +384,7 @@ print_par_insn (info, insn_word, insn)
if (insn->ptm == NULL)
return 0;
/* Parse out the names of each of the parallel instructions from the
- q_insn1_insn2 format. */
+ q_insn1_insn2 format. */
name1 = (char *) strdup (insn->ptm->name + 2);
name2 = "";
len = strlen (name1);
@@ -398,7 +397,7 @@ print_par_insn (info, insn_word, insn)
break;
}
}
- /* Get the operands of the instruction based on the operand order. */
+ /* Get the operands of the instruction based on the operand order. */
switch (insn->ptm->oporder)
{
case OO_4op1:
@@ -500,14 +499,14 @@ print_branch (info, insn_word, insn)
if (insn->tm == NULL)
return 0;
- /* Get the operands for 24-bit immediate jumps. */
+ /* Get the operands for 24-bit immediate jumps. */
if (insn->tm->operand_types[0] & Imm24)
{
address = insn_word & 0x00FFFFFF;
sprintf (operand[0], "0x%lX", address);
print_label = 1;
}
- /* Get the operand for the trap instruction. */
+ /* Get the operand for the trap instruction. */
else if (insn->tm->operand_types[0] & IVector)
{
address = insn_word & 0x0000001F;
@@ -516,7 +515,7 @@ print_branch (info, insn_word, insn)
else
{
address = insn_word & 0x0000FFFF;
- /* Get the operands for the DB instructions. */
+ /* Get the operands for the DB instructions. */
if (insn->tm->operands == 2)
{
get_register_operand (((insn_word & 0x01C00000) >> 22) + REG_AR0, operand[0]);
@@ -528,7 +527,7 @@ print_branch (info, insn_word, insn)
else
get_register_operand (insn_word & 0x0000001F, operand[1]);
}
- /* Get the operands for the standard branches. */
+ /* Get the operands for the standard branches. */
else if (insn->tm->operands == 1)
{
if (insn_word & PCRel)
@@ -545,7 +544,7 @@ print_branch (info, insn_word, insn)
operand[0][0] ? operand[0] : "",
operand[1][0] ? ',' : ' ',
operand[1][0] ? operand[1] : "");
- /* Print destination of branch in relation to current symbol. */
+ /* Print destination of branch in relation to current symbol. */
if (print_label && info->symbols)
{
asymbol *sym = *info->symbols;
@@ -553,7 +552,7 @@ print_branch (info, insn_word, insn)
if ((insn->tm->opcode_modifier == PCRel) && (insn_word & PCRel))
{
address = (_pc + 1 + (short) address) - ((sym->section->vma + sym->value) / 4);
- /* Check for delayed instruction, if so adjust destination. */
+ /* Check for delayed instruction, if so adjust destination. */
if (insn_word & 0x00200000)
address += 2;
}
@@ -583,8 +582,8 @@ get_indirect_operand (fragment, size, buffer)
if (buffer == NULL)
return 0;
- /* Determine which bits identify the sections of the indirect operand based on the
- size in bytes. */
+ /* Determine which bits identify the sections of the indirect
+ operand based on the size in bytes. */
switch (size)
{
case 1:
@@ -614,14 +613,15 @@ get_indirect_operand (fragment, size, buffer)
{
size_t i, len;
int bufcnt;
-
+
len = strlen (current_ind->syntax);
for (i = 0, bufcnt = 0; i < len; i++, bufcnt++)
{
buffer[bufcnt] = current_ind->syntax[i];
if (buffer[bufcnt - 1] == 'a' && buffer[bufcnt] == 'r')
buffer[++bufcnt] = arnum + '0';
- if (buffer[bufcnt] == '(' && current_ind->displacement == DISP_REQUIRED)
+ if (buffer[bufcnt] == '('
+ && current_ind->displacement == DISP_REQUIRED)
{
sprintf (&buffer[bufcnt + 1], "%u", disp);
bufcnt += strlen (&buffer[bufcnt + 1]);
diff --git a/contrib/binutils/opcodes/z8k-dis.c b/contrib/binutils/opcodes/z8k-dis.c
index 590f9d3..9621b3e 100644
--- a/contrib/binutils/opcodes/z8k-dis.c
+++ b/contrib/binutils/opcodes/z8k-dis.c
@@ -1,5 +1,6 @@
/* Disassemble z8000 code.
- Copyright 1992, 1993, 1995, 1998 Free Software Foundation, Inc.
+ Copyright 1992, 1993, 1995, 1998, 2000
+ Free Software Foundation, Inc.
This file is part of GNU Binutils.
@@ -22,10 +23,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define DEFINE_TABLE
#include "z8k-opc.h"
-
#include <setjmp.h>
-
typedef struct
{
@@ -67,7 +66,7 @@ fetch_data (info, nibble)
{
unsigned char mybuf[20];
int status;
- instr_data_s *priv = (instr_data_s *)info->private_data;
+ instr_data_s *priv = (instr_data_s *) info->private_data;
if ((nibble % 4) != 0)
abort ();
@@ -84,15 +83,15 @@ fetch_data (info, nibble)
{
int i;
- unsigned char *p = mybuf ;
-
+ unsigned char *p = mybuf;
+
for (i = 0; i < nibble;)
{
priv->words[i] = (p[0] << 8) | p[1];
-
+
priv->bytes[i] = *p;
priv->nibbles[i++] = *p >> 4;
- priv->nibbles[i++] = *p &0xf;
+ priv->nibbles[i++] = *p & 0xf;
++p;
priv->bytes[i] = *p;
@@ -126,7 +125,7 @@ static char *codes[16] =
"nc/uge"
};
-int z8k_lookup_instr PARAMS ((unsigned char*, disassemble_info *));
+int z8k_lookup_instr PARAMS ((unsigned char *, disassemble_info *));
static void output_instr
PARAMS ((instr_data_s *, unsigned long, disassemble_info *));
static void unpack_instr PARAMS ((instr_data_s *, int, disassemble_info *));
@@ -196,7 +195,9 @@ z8k_lookup_instr (nibbles, info)
while (!nibl_matched && z8k_table[tabl_index].name)
{
nibl_matched = 1;
- for (nibl_index = 0; nibl_index < z8k_table[tabl_index].length * 2 && nibl_matched; nibl_index++)
+ for (nibl_index = 0;
+ nibl_index < z8k_table[tabl_index].length * 2 && nibl_matched;
+ nibl_index++)
{
if ((nibl_index % 4) == 0)
/* Fetch one word at a time. */
@@ -439,7 +440,7 @@ unpack_instr (instr_data, is_segmented, info)
instr_data->interrupts = instr_nibl & 0x3;
break;
case CLASS_BIT:
- /* do nothing */
+ /* Do nothing. */
break;
case CLASS_IR:
instr_data->arg_reg[datum_value] = instr_nibl;
diff --git a/contrib/binutils/symlink-tree b/contrib/binutils/symlink-tree
index 096582d..8f11c08 100755
--- a/contrib/binutils/symlink-tree
+++ b/contrib/binutils/symlink-tree
@@ -10,6 +10,11 @@ prog=$0
srcdir=$1
ignore="$2"
+if test $# -lt 1; then
+ echo "symlink-tree error: Usage: symlink-tree srcdir \"ignore1 ignore2 ...\""
+ exit 1
+fi
+
ignore_additional=". .. CVS"
# If we were invoked with a relative path name, adjust ${prog} to work
OpenPOWER on IntegriCloud